From 0cf7c09ed5584cddc941a414c6389decc3e1fd39 Mon Sep 17 00:00:00 2001 From: tzagim <2285958+tzagim@users.noreply.github.com> Date: Tue, 21 May 2024 20:08:12 +0300 Subject: [PATCH 1/4] 1/2 --- vendor/go.mau.fi/whatsmeow/appstate.go | 35 + .../go.mau.fi/whatsmeow/armadillomessage.go | 99 + .../binary/armadillo/armadilloutil/decode.go | 32 + .../whatsmeow/binary/armadillo/extra.go | 29 + .../whatsmeow/binary/armadillo/generate.sh | 9 + .../whatsmeow/binary/armadillo/parse-proto.js | 351 + .../binary/armadillo/waAdv/WAAdv.pb.go | 552 + .../binary/armadillo/waAdv/WAAdv.pb.raw | Bin 0 -> 1025 bytes .../binary/armadillo/waAdv/WAAdv.proto | 43 + .../WAArmadilloApplication.pb.go | 2927 +++ .../WAArmadilloApplication.pb.raw | Bin 0 -> 7699 bytes .../WAArmadilloApplication.proto | 245 + .../armadillo/waArmadilloApplication/extra.go | 3 + .../WAArmadilloBackupMessage.pb.go | 317 + .../WAArmadilloBackupMessage.pb.raw | 15 + .../WAArmadilloBackupMessage.proto | 22 + .../waArmadilloICDC/WAArmadilloICDC.pb.go | 231 + .../waArmadilloICDC/WAArmadilloICDC.pb.raw | 10 + .../waArmadilloICDC/WAArmadilloICDC.proto | 15 + .../waArmadilloXMA/WAArmadilloXMA.pb.go | 785 + .../waArmadilloXMA/WAArmadilloXMA.pb.raw | Bin 0 -> 3235 bytes .../waArmadilloXMA/WAArmadilloXMA.proto | 118 + .../binary/armadillo/waCert/WACert.pb.go | 469 + .../binary/armadillo/waCert/WACert.pb.raw | 23 + .../binary/armadillo/waCert/WACert.proto | 34 + .../binary/armadillo/waCommon/WACommon.pb.go | 498 + .../binary/armadillo/waCommon/WACommon.pb.raw | Bin 0 -> 708 bytes .../binary/armadillo/waCommon/WACommon.proto | 41 + .../WAConsumerApplication.pb.go | 3069 +++ .../WAConsumerApplication.pb.raw | Bin 0 -> 7142 bytes .../WAConsumerApplication.proto | 234 + .../armadillo/waConsumerApplication/extra.go | 82 + .../binary/armadillo/waE2E/WAE2E.pb.go | 16792 ++++++++++++++++ .../binary/armadillo/waE2E/WAE2E.pb.raw | Bin 0 -> 47243 bytes vendor/go.mau.fi/whatsmeow/call.go | 18 + vendor/go.mau.fi/whatsmeow/client.go | 180 +- vendor/go.mau.fi/whatsmeow/client_test.go | 76 + .../go.mau.fi/whatsmeow/connectionevents.go | 34 +- vendor/go.mau.fi/whatsmeow/download.go | 90 +- vendor/go.mau.fi/whatsmeow/errors.go | 22 +- vendor/go.mau.fi/whatsmeow/go.mod | 21 + vendor/go.mau.fi/whatsmeow/go.sum | 44 + vendor/go.mau.fi/whatsmeow/group.go | 144 +- vendor/go.mau.fi/whatsmeow/handshake.go | 69 +- vendor/go.mau.fi/whatsmeow/internals.go | 18 + vendor/go.mau.fi/whatsmeow/keepalive.go | 2 - vendor/go.mau.fi/whatsmeow/mdtest/README.md | 11 + vendor/go.mau.fi/whatsmeow/mdtest/go.mod | 29 + vendor/go.mau.fi/whatsmeow/mdtest/go.sum | 54 + vendor/go.mau.fi/whatsmeow/mdtest/main.go | 1165 ++ vendor/go.mau.fi/whatsmeow/mediaretry.go | 4 +- vendor/go.mau.fi/whatsmeow/message.go | 139 +- vendor/go.mau.fi/whatsmeow/msgsecret.go | 6 +- vendor/go.mau.fi/whatsmeow/newsletter.go | 373 + vendor/go.mau.fi/whatsmeow/notification.go | 144 +- vendor/go.mau.fi/whatsmeow/pair-code.go | 51 +- vendor/go.mau.fi/whatsmeow/prekeys.go | 1 - vendor/go.mau.fi/whatsmeow/presence.go | 5 +- vendor/go.mau.fi/whatsmeow/privacysettings.go | 88 +- vendor/go.mau.fi/whatsmeow/receipt.go | 41 +- vendor/go.mau.fi/whatsmeow/request.go | 7 +- vendor/go.mau.fi/whatsmeow/retry.go | 160 +- vendor/go.mau.fi/whatsmeow/send.go | 161 +- vendor/go.mau.fi/whatsmeow/sendfb.go | 606 + .../go.mau.fi/whatsmeow/socket/constants.go | 2 +- .../go.mau.fi/whatsmeow/socket/framesocket.go | 25 +- .../go.mau.fi/whatsmeow/socket/noisesocket.go | 4 +- .../whatsmeow/store/clientpayload.go | 2 +- .../whatsmeow/store/sqlstore/container.go | 26 +- .../whatsmeow/store/sqlstore/upgrade.go | 23 +- vendor/go.mau.fi/whatsmeow/store/store.go | 4 + .../whatsmeow/types/events/appstate.go | 30 + .../go.mau.fi/whatsmeow/types/events/call.go | 14 + .../whatsmeow/types/events/events.go | 163 +- vendor/go.mau.fi/whatsmeow/types/group.go | 9 + vendor/go.mau.fi/whatsmeow/types/jid.go | 153 +- vendor/go.mau.fi/whatsmeow/types/message.go | 15 +- .../go.mau.fi/whatsmeow/types/newsletter.go | 197 + vendor/go.mau.fi/whatsmeow/types/presence.go | 50 + vendor/go.mau.fi/whatsmeow/types/user.go | 75 +- vendor/go.mau.fi/whatsmeow/upload.go | 97 +- vendor/go.mau.fi/whatsmeow/user.go | 248 +- .../whatsmeow/util/cbcutil/cbc_test.go | 25 + .../go.mau.fi/whatsmeow/util/keys/keypair.go | 5 +- .../go.mau.fi/whatsmeow/util/log/zerolog.go | 38 + 85 files changed, 31569 insertions(+), 479 deletions(-) create mode 100644 vendor/go.mau.fi/whatsmeow/armadillomessage.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/armadilloutil/decode.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/extra.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/generate.sh create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/parse-proto.js create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waAdv/WAAdv.pb.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waAdv/WAAdv.pb.raw create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waAdv/WAAdv.proto create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/WAArmadilloApplication.pb.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/WAArmadilloApplication.pb.raw create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/WAArmadilloApplication.proto create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/extra.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessage/WAArmadilloBackupMessage.pb.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessage/WAArmadilloBackupMessage.pb.raw create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessage/WAArmadilloBackupMessage.proto create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDC/WAArmadilloICDC.pb.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDC/WAArmadilloICDC.pb.raw create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDC/WAArmadilloICDC.proto create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloXMA/WAArmadilloXMA.pb.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloXMA/WAArmadilloXMA.pb.raw create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloXMA/WAArmadilloXMA.proto create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waCert/WACert.pb.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waCert/WACert.pb.raw create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waCert/WACert.proto create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waCommon/WACommon.pb.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waCommon/WACommon.pb.raw create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waCommon/WACommon.proto create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waConsumerApplication/WAConsumerApplication.pb.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waConsumerApplication/WAConsumerApplication.pb.raw create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waConsumerApplication/WAConsumerApplication.proto create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waConsumerApplication/extra.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waE2E/WAE2E.pb.go create mode 100644 vendor/go.mau.fi/whatsmeow/binary/armadillo/waE2E/WAE2E.pb.raw create mode 100644 vendor/go.mau.fi/whatsmeow/client_test.go create mode 100644 vendor/go.mau.fi/whatsmeow/go.mod create mode 100644 vendor/go.mau.fi/whatsmeow/go.sum create mode 100644 vendor/go.mau.fi/whatsmeow/mdtest/README.md create mode 100644 vendor/go.mau.fi/whatsmeow/mdtest/go.mod create mode 100644 vendor/go.mau.fi/whatsmeow/mdtest/go.sum create mode 100644 vendor/go.mau.fi/whatsmeow/mdtest/main.go create mode 100644 vendor/go.mau.fi/whatsmeow/newsletter.go create mode 100644 vendor/go.mau.fi/whatsmeow/sendfb.go create mode 100644 vendor/go.mau.fi/whatsmeow/types/newsletter.go create mode 100644 vendor/go.mau.fi/whatsmeow/util/cbcutil/cbc_test.go create mode 100644 vendor/go.mau.fi/whatsmeow/util/log/zerolog.go diff --git a/vendor/go.mau.fi/whatsmeow/appstate.go b/vendor/go.mau.fi/whatsmeow/appstate.go index 3c128db6..a1c9146c 100644 --- a/vendor/go.mau.fi/whatsmeow/appstate.go +++ b/vendor/go.mau.fi/whatsmeow/appstate.go @@ -223,6 +223,41 @@ func (cli *Client) dispatchAppState(mutation appstate.Mutation, fullSync bool, e Action: mutation.Action.GetUserStatusMuteAction(), FromFullSync: fullSync, } + case appstate.IndexLabelEdit: + act := mutation.Action.GetLabelEditAction() + eventToDispatch = &events.LabelEdit{ + Timestamp: ts, + LabelID: mutation.Index[1], + Action: act, + FromFullSync: fullSync, + } + case appstate.IndexLabelAssociationChat: + if len(mutation.Index) < 3 { + return + } + jid, _ = types.ParseJID(mutation.Index[2]) + act := mutation.Action.GetLabelAssociationAction() + eventToDispatch = &events.LabelAssociationChat{ + JID: jid, + Timestamp: ts, + LabelID: mutation.Index[1], + Action: act, + FromFullSync: fullSync, + } + case appstate.IndexLabelAssociationMessage: + if len(mutation.Index) < 6 { + return + } + jid, _ = types.ParseJID(mutation.Index[2]) + act := mutation.Action.GetLabelAssociationAction() + eventToDispatch = &events.LabelAssociationMessage{ + JID: jid, + Timestamp: ts, + LabelID: mutation.Index[1], + MessageID: mutation.Index[3], + Action: act, + FromFullSync: fullSync, + } } if storeUpdateError != nil { cli.Log.Errorf("Failed to update device store after app state mutation: %v", storeUpdateError) diff --git a/vendor/go.mau.fi/whatsmeow/armadillomessage.go b/vendor/go.mau.fi/whatsmeow/armadillomessage.go new file mode 100644 index 00000000..a026d767 --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/armadillomessage.go @@ -0,0 +1,99 @@ +// Copyright (c) 2024 Tulir Asokan +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +package whatsmeow + +import ( + "fmt" + + "google.golang.org/protobuf/proto" + + "go.mau.fi/whatsmeow/binary/armadillo" + "go.mau.fi/whatsmeow/binary/armadillo/waCommon" + "go.mau.fi/whatsmeow/binary/armadillo/waMsgApplication" + "go.mau.fi/whatsmeow/binary/armadillo/waMsgTransport" + "go.mau.fi/whatsmeow/types" + "go.mau.fi/whatsmeow/types/events" +) + +func (cli *Client) handleDecryptedArmadillo(info *types.MessageInfo, decrypted []byte, retryCount int) bool { + dec, err := decodeArmadillo(decrypted) + if err != nil { + cli.Log.Warnf("Failed to decode armadillo message from %s: %v", info.SourceString(), err) + return false + } + dec.Info = *info + dec.RetryCount = retryCount + if dec.Transport.GetProtocol().GetAncillary().GetSkdm() != nil { + if !info.IsGroup { + cli.Log.Warnf("Got sender key distribution message in non-group chat from %s", info.Sender) + } else { + skdm := dec.Transport.GetProtocol().GetAncillary().GetSkdm() + cli.handleSenderKeyDistributionMessage(info.Chat, info.Sender, skdm.AxolotlSenderKeyDistributionMessage) + } + } + if dec.Message != nil { + cli.dispatchEvent(&dec) + } + return true +} + +func decodeArmadillo(data []byte) (dec events.FBMessage, err error) { + var transport waMsgTransport.MessageTransport + err = proto.Unmarshal(data, &transport) + if err != nil { + return dec, fmt.Errorf("failed to unmarshal transport: %w", err) + } + dec.Transport = &transport + if transport.GetPayload() == nil { + return + } + application, err := transport.GetPayload().Decode() + if err != nil { + return dec, fmt.Errorf("failed to unmarshal application: %w", err) + } + dec.Application = application + if application.GetPayload() == nil { + return + } + + switch typedContent := application.GetPayload().GetContent().(type) { + case *waMsgApplication.MessageApplication_Payload_CoreContent: + err = fmt.Errorf("unsupported core content payload") + case *waMsgApplication.MessageApplication_Payload_Signal: + err = fmt.Errorf("unsupported signal payload") + case *waMsgApplication.MessageApplication_Payload_ApplicationData: + err = fmt.Errorf("unsupported application data payload") + case *waMsgApplication.MessageApplication_Payload_SubProtocol: + var protoMsg proto.Message + var subData *waCommon.SubProtocol + switch subProtocol := typedContent.SubProtocol.GetSubProtocol().(type) { + case *waMsgApplication.MessageApplication_SubProtocolPayload_ConsumerMessage: + dec.Message, err = subProtocol.Decode() + case *waMsgApplication.MessageApplication_SubProtocolPayload_BusinessMessage: + dec.Message = (*armadillo.Unsupported_BusinessApplication)(subProtocol.BusinessMessage) + case *waMsgApplication.MessageApplication_SubProtocolPayload_PaymentMessage: + dec.Message = (*armadillo.Unsupported_PaymentApplication)(subProtocol.PaymentMessage) + case *waMsgApplication.MessageApplication_SubProtocolPayload_MultiDevice: + dec.Message, err = subProtocol.Decode() + case *waMsgApplication.MessageApplication_SubProtocolPayload_Voip: + dec.Message = (*armadillo.Unsupported_Voip)(subProtocol.Voip) + case *waMsgApplication.MessageApplication_SubProtocolPayload_Armadillo: + dec.Message, err = subProtocol.Decode() + default: + return dec, fmt.Errorf("unsupported subprotocol type: %T", subProtocol) + } + if protoMsg != nil { + err = proto.Unmarshal(subData.GetPayload(), protoMsg) + if err != nil { + return dec, fmt.Errorf("failed to unmarshal application subprotocol payload (%T v%d): %w", protoMsg, subData.GetVersion(), err) + } + } + default: + err = fmt.Errorf("unsupported application payload content type: %T", typedContent) + } + return +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/armadilloutil/decode.go b/vendor/go.mau.fi/whatsmeow/binary/armadillo/armadilloutil/decode.go new file mode 100644 index 00000000..dacd50f8 --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/armadilloutil/decode.go @@ -0,0 +1,32 @@ +package armadilloutil + +import ( + "errors" + "fmt" + + "google.golang.org/protobuf/proto" + + "go.mau.fi/whatsmeow/binary/armadillo/waCommon" +) + +var ErrUnsupportedVersion = errors.New("unsupported subprotocol version") + +func Unmarshal[T proto.Message](into T, msg *waCommon.SubProtocol, expectedVersion int32) (T, error) { + if msg.GetVersion() != expectedVersion { + return into, fmt.Errorf("%w %d in %T (expected %d)", ErrUnsupportedVersion, msg.GetVersion(), into, expectedVersion) + } + + err := proto.Unmarshal(msg.GetPayload(), into) + return into, err +} + +func Marshal[T proto.Message](msg T, version int32) (*waCommon.SubProtocol, error) { + payload, err := proto.Marshal(msg) + if err != nil { + return nil, err + } + return &waCommon.SubProtocol{ + Payload: payload, + Version: version, + }, nil +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/extra.go b/vendor/go.mau.fi/whatsmeow/binary/armadillo/extra.go new file mode 100644 index 00000000..d4b157ad --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/extra.go @@ -0,0 +1,29 @@ +package armadillo + +import ( + "go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication" + "go.mau.fi/whatsmeow/binary/armadillo/waCommon" + "go.mau.fi/whatsmeow/binary/armadillo/waConsumerApplication" + "go.mau.fi/whatsmeow/binary/armadillo/waMultiDevice" +) + +type MessageApplicationSub interface { + IsMessageApplicationSub() +} + +type Unsupported_BusinessApplication waCommon.SubProtocol +type Unsupported_PaymentApplication waCommon.SubProtocol +type Unsupported_Voip waCommon.SubProtocol + +var ( + _ MessageApplicationSub = (*waConsumerApplication.ConsumerApplication)(nil) // 2 + _ MessageApplicationSub = (*Unsupported_BusinessApplication)(nil) // 3 + _ MessageApplicationSub = (*Unsupported_PaymentApplication)(nil) // 4 + _ MessageApplicationSub = (*waMultiDevice.MultiDevice)(nil) // 5 + _ MessageApplicationSub = (*Unsupported_Voip)(nil) // 6 + _ MessageApplicationSub = (*waArmadilloApplication.Armadillo)(nil) // 7 +) + +func (*Unsupported_BusinessApplication) IsMessageApplicationSub() {} +func (*Unsupported_PaymentApplication) IsMessageApplicationSub() {} +func (*Unsupported_Voip) IsMessageApplicationSub() {} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/generate.sh b/vendor/go.mau.fi/whatsmeow/binary/armadillo/generate.sh new file mode 100644 index 00000000..d0a4556d --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/generate.sh @@ -0,0 +1,9 @@ +#!/bin/bash +cd $(dirname $0) +set -euo pipefail +if [[ ! -f "e2ee.js" ]]; then + echo "Please download the encryption javascript file and save it to e2ee.js first" + exit 1 +fi +node parse-proto.js +protoc --go_out=. --go_opt=paths=source_relative --go_opt=embed_raw=true */*.proto diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/parse-proto.js b/vendor/go.mau.fi/whatsmeow/binary/armadillo/parse-proto.js new file mode 100644 index 00000000..518a64bc --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/parse-proto.js @@ -0,0 +1,351 @@ +/////////////////// +// JS EVALUATION // +/////////////////// + +const protos = [] +const modules = { + "$InternalEnum": { + exports: { + exports: function (data) { + data.__enum__ = true + return data + } + } + }, +} + +function requireModule(name) { + if (!modules[name]) { + throw new Error(`Unknown requirement ${name}`) + } + return modules[name].exports +} + +function requireDefault(name) { + return requireModule(name).exports +} + +function ignoreModule(name) { + if (name === "WAProtoConst") { + return false + } else if (!name.endsWith(".pb")) { + // Ignore any non-protobuf modules, except WAProtoConst above + return true + } else if (name.startsWith("MAWArmadillo") && (name.endsWith("TableSchema.pb") || name.endsWith("TablesSchema.pb"))) { + // Ignore internal table schemas + return true + } else if (name === "WASignalLocalStorageProtocol.pb" || name === "WASignalWhisperTextProtocol.pb") { + // Ignore standard signal protocol stuff + return true + } else { + return false + } +} + +function defineModule(name, dependencies, callback, unknownIntOrNull) { + if (ignoreModule(name)) { + return + } + const exports = {} + if (dependencies.length > 0) { + callback(null, requireDefault, null, requireModule, null, null, exports) + } else { + callback(null, requireDefault, null, requireModule, exports, exports) + } + modules[name] = {exports, dependencies} +} + +global.self = global +global.__d = defineModule + +require("./e2ee.js") + +function dereference(obj, module, currentPath, next, ...remainder) { + if (!next) { + return obj + } + if (!obj.messages[next]) { + obj.messages[next] = {messages: {}, enums: {}, __module__: module, __path__: currentPath, __name__: next} + } + return dereference(obj.messages[next], module, currentPath.concat([next]), ...remainder) +} + +function dereferenceSnake(obj, currentPath, path) { + let next = path[0] + path = path.slice(1) + while (!obj.messages[next]) { + if (path.length === 0) { + return [obj, currentPath, next] + } + next += path[0] + path = path.slice(1) + } + return dereferenceSnake(obj.messages[next], currentPath.concat([next]), path) +} + +function renameModule(name) { + return name.replace(".pb", "") +} + +function renameDependencies(dependencies) { + return dependencies + .filter(name => name.endsWith(".pb")) + .map(renameModule) + .map(name => name === "WAProtocol" ? "WACommon" : name) +} + +function renameType(protoName, fieldName, field) { + return fieldName +} + +for (const [name, module] of Object.entries(modules)) { + if (!name.endsWith(".pb")) { + continue + } else if (!module.exports) { + console.warn(name, "has no exports") + continue + } + // Slightly hacky way to get rid of WAProtocol.pb and just use the MessageKey in WACommon + if (name === "WAProtocol.pb") { + if (Object.entries(module.exports).length > 1) { + console.warn("WAProtocol.pb has more than one export") + } + module.exports["MessageKeySpec"].__name__ = "MessageKey" + module.exports["MessageKeySpec"].__module__ = "WACommon" + module.exports["MessageKeySpec"].__path__ = [] + continue + } + const proto = { + __protobuf__: true, + messages: {}, + enums: {}, + __name__: renameModule(name), + dependencies: renameDependencies(module.dependencies), + } + const upperSnakeEnums = [] + for (const [name, field] of Object.entries(module.exports)) { + const namePath = name.replace(/Spec$/, "").split("$") + field.__name__ = renameType(proto.__name__, namePath[namePath.length - 1], field) + namePath[namePath.length - 1] = field.__name__ + field.__path__ = namePath.slice(0, -1) + field.__module__ = proto.__name__ + if (field.internalSpec) { + dereference(proto, proto.__name__, [], ...namePath).message = field.internalSpec + } else if (namePath.length === 1 && name.toUpperCase() === name) { + upperSnakeEnums.push(field) + } else { + dereference(proto, proto.__name__, [], ...namePath.slice(0, -1)).enums[field.__name__] = field + } + } + // Some enums have uppercase names, instead of capital case with $ separators. + // For those, we need to find the right nesting location. + for (const field of upperSnakeEnums) { + field.__enum__ = true + const [obj, path, name] = dereferenceSnake(proto, [], field.__name__.split("_").map(part => part[0] + part.slice(1).toLowerCase())) + field.__path__ = path + field.__name__ = name + field.__module__ = proto.__name__ + obj.enums[name] = field + } + protos.push(proto) +} + +//////////////////////////////// +// PROTOBUF SCHEMA GENERATION // +//////////////////////////////// + +function indent(lines, indent = "\t") { + return lines.map(line => line ? `${indent}${line}` : "") +} + +function flattenWithBlankLines(...items) { + return items + .flatMap(item => item.length > 0 ? [item, [""]] : []) + .slice(0, -1) + .flatMap(item => item) +} + +function protoifyChildren(container) { + return flattenWithBlankLines( + ...Object.values(container.enums).map(protoifyEnum), + ...Object.values(container.messages).map(protoifyMessage), + ) +} + +function protoifyEnum(enumDef) { + const values = [] + const names = Object.fromEntries(Object.entries(enumDef).map(([name, value]) => [value, name])) + if (!names["0"]) { + if (names["-1"]) { + enumDef[names["-1"]] = 0 + } else { + // TODO add snake case + values.push(`${enumDef.__name__.toUpperCase()}_UNKNOWN = 0;`) + } + } + for (const [name, value] of Object.entries(enumDef)) { + if (name.startsWith("__") && name.endsWith("__")) { + continue + } + values.push(`${name} = ${value};`) + } + return [`enum ${enumDef.__name__} ` + "{", ...indent(values), "}"] +} + +const {TYPES, TYPE_MASK, FLAGS} = requireModule("WAProtoConst") + +function fieldTypeName(typeID, typeRef, parentModule, parentPath) { + switch (typeID) { + case TYPES.INT32: + return "int32" + case TYPES.INT64: + return "int64" + case TYPES.UINT32: + return "uint32" + case TYPES.UINT64: + return "uint64" + case TYPES.SINT32: + return "sint32" + case TYPES.SINT64: + return "sint64" + case TYPES.BOOL: + return "bool" + case TYPES.ENUM: + case TYPES.MESSAGE: + let pathStartIndex = 0 + for (let i = 0; i < parentPath.length && i < typeRef.__path__.length; i++) { + if (typeRef.__path__[i] === parentPath[i]) { + pathStartIndex++ + } else { + break + } + } + const namePath = [] + if (typeRef.__module__ !== parentModule) { + namePath.push(typeRef.__module__) + pathStartIndex = 0 + } + namePath.push(...typeRef.__path__.slice(pathStartIndex)) + namePath.push(typeRef.__name__) + return namePath.join(".") + case TYPES.FIXED64: + return "fixed64" + case TYPES.SFIXED64: + return "sfixed64" + case TYPES.DOUBLE: + return "double" + case TYPES.STRING: + return "string" + case TYPES.BYTES: + return "bytes" + case TYPES.FIXED32: + return "fixed32" + case TYPES.SFIXED32: + return "sfixed32" + case TYPES.FLOAT: + return "float" + } +} + +const staticRenames = { + id: "ID", + jid: "JID", + encIv: "encIV", + iv: "IV", + ptt: "PTT", + hmac: "HMAC", + url: "URL", + fbid: "FBID", + jpegThumbnail: "JPEGThumbnail", + dsm: "DSM", +} + +function fixFieldName(name) { + if (name === "id") { + return "ID" + } else if (name === "encIv") { + return "encIV" + } + return staticRenames[name] ?? name + .replace(/Id([A-Zs]|$)/, "ID$1") + .replace("Jid", "JID") + .replace(/Ms([A-Z]|$)/, "MS$1") + .replace(/Ts([A-Z]|$)/, "TS$1") + .replace(/Mac([A-Z]|$)/, "MAC$1") + .replace("Url", "URL") + .replace("Cdn", "CDN") + .replace("Json", "JSON") + .replace("Jpeg", "JPEG") + .replace("Sha256", "SHA256") +} + +function protoifyField(name, [index, flags, typeRef], parentModule, parentPath) { + const preflags = [] + const postflags = [""] + if ((flags & FLAGS.REPEATED) !== 0) { + preflags.push("repeated") + } + // if ((flags & FLAGS.REQUIRED) === 0) { + // preflags.push("optional") + // } else { + // preflags.push("required") + // } + preflags.push(fieldTypeName(flags & TYPE_MASK, typeRef, parentModule, parentPath)) + if ((flags & FLAGS.PACKED) !== 0) { + postflags.push(`[packed=true]`) + } + return `${preflags.join(" ")} ${fixFieldName(name)} = ${index}${postflags.join(" ")};` +} + +function protoifyFields(fields, parentModule, parentPath) { + return Object.entries(fields).map(([name, definition]) => protoifyField(name, definition, parentModule, parentPath)) +} + +function protoifyMessage(message) { + const sections = [protoifyChildren(message)] + const spec = message.message + const fullMessagePath = message.__path__.concat([message.__name__]) + for (const [name, fieldNames] of Object.entries(spec.__oneofs__ ?? {})) { + const fields = Object.fromEntries(fieldNames.map(fieldName => { + const def = spec[fieldName] + delete spec[fieldName] + return [fieldName, def] + })) + sections.push([`oneof ${name} ` + "{", ...indent(protoifyFields(fields, message.__module__, fullMessagePath)), "}"]) + } + if (spec.__reserved__) { + console.warn("Found reserved keys:", message.__name__, spec.__reserved__) + } + delete spec.__oneofs__ + delete spec.__reserved__ + sections.push(protoifyFields(spec, message.__module__, fullMessagePath)) + return [`message ${message.__name__} ` + "{", ...indent(flattenWithBlankLines(...sections)), "}"] +} + +function goPackageName(name) { + return name.replace(/^WA/, "wa") +} + +function protoifyModule(module) { + const output = [] + output.push(`syntax = "proto3";`) + output.push(`package ${module.__name__};`) + output.push(`option go_package = "go.mau.fi/whatsmeow/binary/armadillo/${goPackageName(module.__name__)}";`) + output.push("") + if (module.dependencies.length > 0) { + for (const dependency of module.dependencies) { + output.push(`import "${goPackageName(dependency)}/${dependency}.proto";`) + } + output.push("") + } + const children = protoifyChildren(module) + children.push("") + return output.concat(children) +} + +const fs = require("fs") + +for (const proto of protos) { + fs.mkdirSync(goPackageName(proto.__name__), {recursive: true}) + fs.writeFileSync(`${goPackageName(proto.__name__)}/${proto.__name__}.proto`, protoifyModule(proto).join("\n")) +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waAdv/WAAdv.pb.go b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waAdv/WAAdv.pb.go new file mode 100644 index 00000000..ab011d43 --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waAdv/WAAdv.pb.go @@ -0,0 +1,552 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v3.21.12 +// source: waAdv/WAAdv.proto + +package waAdv + +import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "embed" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ADVEncryptionType int32 + +const ( + ADVEncryptionType_E2EE ADVEncryptionType = 0 + ADVEncryptionType_HOSTED ADVEncryptionType = 1 +) + +// Enum value maps for ADVEncryptionType. +var ( + ADVEncryptionType_name = map[int32]string{ + 0: "E2EE", + 1: "HOSTED", + } + ADVEncryptionType_value = map[string]int32{ + "E2EE": 0, + "HOSTED": 1, + } +) + +func (x ADVEncryptionType) Enum() *ADVEncryptionType { + p := new(ADVEncryptionType) + *p = x + return p +} + +func (x ADVEncryptionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ADVEncryptionType) Descriptor() protoreflect.EnumDescriptor { + return file_waAdv_WAAdv_proto_enumTypes[0].Descriptor() +} + +func (ADVEncryptionType) Type() protoreflect.EnumType { + return &file_waAdv_WAAdv_proto_enumTypes[0] +} + +func (x ADVEncryptionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ADVEncryptionType.Descriptor instead. +func (ADVEncryptionType) EnumDescriptor() ([]byte, []int) { + return file_waAdv_WAAdv_proto_rawDescGZIP(), []int{0} +} + +type ADVKeyIndexList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RawID uint32 `protobuf:"varint,1,opt,name=rawID,proto3" json:"rawID,omitempty"` + Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + CurrentIndex uint32 `protobuf:"varint,3,opt,name=currentIndex,proto3" json:"currentIndex,omitempty"` + ValidIndexes []uint32 `protobuf:"varint,4,rep,packed,name=validIndexes,proto3" json:"validIndexes,omitempty"` + AccountType ADVEncryptionType `protobuf:"varint,5,opt,name=accountType,proto3,enum=WAAdv.ADVEncryptionType" json:"accountType,omitempty"` +} + +func (x *ADVKeyIndexList) Reset() { + *x = ADVKeyIndexList{} + if protoimpl.UnsafeEnabled { + mi := &file_waAdv_WAAdv_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ADVKeyIndexList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ADVKeyIndexList) ProtoMessage() {} + +func (x *ADVKeyIndexList) ProtoReflect() protoreflect.Message { + mi := &file_waAdv_WAAdv_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ADVKeyIndexList.ProtoReflect.Descriptor instead. +func (*ADVKeyIndexList) Descriptor() ([]byte, []int) { + return file_waAdv_WAAdv_proto_rawDescGZIP(), []int{0} +} + +func (x *ADVKeyIndexList) GetRawID() uint32 { + if x != nil { + return x.RawID + } + return 0 +} + +func (x *ADVKeyIndexList) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *ADVKeyIndexList) GetCurrentIndex() uint32 { + if x != nil { + return x.CurrentIndex + } + return 0 +} + +func (x *ADVKeyIndexList) GetValidIndexes() []uint32 { + if x != nil { + return x.ValidIndexes + } + return nil +} + +func (x *ADVKeyIndexList) GetAccountType() ADVEncryptionType { + if x != nil { + return x.AccountType + } + return ADVEncryptionType_E2EE +} + +type ADVSignedKeyIndexList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Details []byte `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` + AccountSignature []byte `protobuf:"bytes,2,opt,name=accountSignature,proto3" json:"accountSignature,omitempty"` + AccountSignatureKey []byte `protobuf:"bytes,3,opt,name=accountSignatureKey,proto3" json:"accountSignatureKey,omitempty"` +} + +func (x *ADVSignedKeyIndexList) Reset() { + *x = ADVSignedKeyIndexList{} + if protoimpl.UnsafeEnabled { + mi := &file_waAdv_WAAdv_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ADVSignedKeyIndexList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ADVSignedKeyIndexList) ProtoMessage() {} + +func (x *ADVSignedKeyIndexList) ProtoReflect() protoreflect.Message { + mi := &file_waAdv_WAAdv_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ADVSignedKeyIndexList.ProtoReflect.Descriptor instead. +func (*ADVSignedKeyIndexList) Descriptor() ([]byte, []int) { + return file_waAdv_WAAdv_proto_rawDescGZIP(), []int{1} +} + +func (x *ADVSignedKeyIndexList) GetDetails() []byte { + if x != nil { + return x.Details + } + return nil +} + +func (x *ADVSignedKeyIndexList) GetAccountSignature() []byte { + if x != nil { + return x.AccountSignature + } + return nil +} + +func (x *ADVSignedKeyIndexList) GetAccountSignatureKey() []byte { + if x != nil { + return x.AccountSignatureKey + } + return nil +} + +type ADVDeviceIdentity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RawID uint32 `protobuf:"varint,1,opt,name=rawID,proto3" json:"rawID,omitempty"` + Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + KeyIndex uint32 `protobuf:"varint,3,opt,name=keyIndex,proto3" json:"keyIndex,omitempty"` + AccountType ADVEncryptionType `protobuf:"varint,4,opt,name=accountType,proto3,enum=WAAdv.ADVEncryptionType" json:"accountType,omitempty"` + DeviceType ADVEncryptionType `protobuf:"varint,5,opt,name=deviceType,proto3,enum=WAAdv.ADVEncryptionType" json:"deviceType,omitempty"` +} + +func (x *ADVDeviceIdentity) Reset() { + *x = ADVDeviceIdentity{} + if protoimpl.UnsafeEnabled { + mi := &file_waAdv_WAAdv_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ADVDeviceIdentity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ADVDeviceIdentity) ProtoMessage() {} + +func (x *ADVDeviceIdentity) ProtoReflect() protoreflect.Message { + mi := &file_waAdv_WAAdv_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ADVDeviceIdentity.ProtoReflect.Descriptor instead. +func (*ADVDeviceIdentity) Descriptor() ([]byte, []int) { + return file_waAdv_WAAdv_proto_rawDescGZIP(), []int{2} +} + +func (x *ADVDeviceIdentity) GetRawID() uint32 { + if x != nil { + return x.RawID + } + return 0 +} + +func (x *ADVDeviceIdentity) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *ADVDeviceIdentity) GetKeyIndex() uint32 { + if x != nil { + return x.KeyIndex + } + return 0 +} + +func (x *ADVDeviceIdentity) GetAccountType() ADVEncryptionType { + if x != nil { + return x.AccountType + } + return ADVEncryptionType_E2EE +} + +func (x *ADVDeviceIdentity) GetDeviceType() ADVEncryptionType { + if x != nil { + return x.DeviceType + } + return ADVEncryptionType_E2EE +} + +type ADVSignedDeviceIdentity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Details []byte `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` + AccountSignatureKey []byte `protobuf:"bytes,2,opt,name=accountSignatureKey,proto3" json:"accountSignatureKey,omitempty"` + AccountSignature []byte `protobuf:"bytes,3,opt,name=accountSignature,proto3" json:"accountSignature,omitempty"` + DeviceSignature []byte `protobuf:"bytes,4,opt,name=deviceSignature,proto3" json:"deviceSignature,omitempty"` +} + +func (x *ADVSignedDeviceIdentity) Reset() { + *x = ADVSignedDeviceIdentity{} + if protoimpl.UnsafeEnabled { + mi := &file_waAdv_WAAdv_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ADVSignedDeviceIdentity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ADVSignedDeviceIdentity) ProtoMessage() {} + +func (x *ADVSignedDeviceIdentity) ProtoReflect() protoreflect.Message { + mi := &file_waAdv_WAAdv_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ADVSignedDeviceIdentity.ProtoReflect.Descriptor instead. +func (*ADVSignedDeviceIdentity) Descriptor() ([]byte, []int) { + return file_waAdv_WAAdv_proto_rawDescGZIP(), []int{3} +} + +func (x *ADVSignedDeviceIdentity) GetDetails() []byte { + if x != nil { + return x.Details + } + return nil +} + +func (x *ADVSignedDeviceIdentity) GetAccountSignatureKey() []byte { + if x != nil { + return x.AccountSignatureKey + } + return nil +} + +func (x *ADVSignedDeviceIdentity) GetAccountSignature() []byte { + if x != nil { + return x.AccountSignature + } + return nil +} + +func (x *ADVSignedDeviceIdentity) GetDeviceSignature() []byte { + if x != nil { + return x.DeviceSignature + } + return nil +} + +type ADVSignedDeviceIdentityHMAC struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Details []byte `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` + HMAC []byte `protobuf:"bytes,2,opt,name=HMAC,proto3" json:"HMAC,omitempty"` + AccountType ADVEncryptionType `protobuf:"varint,3,opt,name=accountType,proto3,enum=WAAdv.ADVEncryptionType" json:"accountType,omitempty"` +} + +func (x *ADVSignedDeviceIdentityHMAC) Reset() { + *x = ADVSignedDeviceIdentityHMAC{} + if protoimpl.UnsafeEnabled { + mi := &file_waAdv_WAAdv_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ADVSignedDeviceIdentityHMAC) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ADVSignedDeviceIdentityHMAC) ProtoMessage() {} + +func (x *ADVSignedDeviceIdentityHMAC) ProtoReflect() protoreflect.Message { + mi := &file_waAdv_WAAdv_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ADVSignedDeviceIdentityHMAC.ProtoReflect.Descriptor instead. +func (*ADVSignedDeviceIdentityHMAC) Descriptor() ([]byte, []int) { + return file_waAdv_WAAdv_proto_rawDescGZIP(), []int{4} +} + +func (x *ADVSignedDeviceIdentityHMAC) GetDetails() []byte { + if x != nil { + return x.Details + } + return nil +} + +func (x *ADVSignedDeviceIdentityHMAC) GetHMAC() []byte { + if x != nil { + return x.HMAC + } + return nil +} + +func (x *ADVSignedDeviceIdentityHMAC) GetAccountType() ADVEncryptionType { + if x != nil { + return x.AccountType + } + return ADVEncryptionType_E2EE +} + +var File_waAdv_WAAdv_proto protoreflect.FileDescriptor + +//go:embed WAAdv.pb.raw +var file_waAdv_WAAdv_proto_rawDesc []byte + +var ( + file_waAdv_WAAdv_proto_rawDescOnce sync.Once + file_waAdv_WAAdv_proto_rawDescData = file_waAdv_WAAdv_proto_rawDesc +) + +func file_waAdv_WAAdv_proto_rawDescGZIP() []byte { + file_waAdv_WAAdv_proto_rawDescOnce.Do(func() { + file_waAdv_WAAdv_proto_rawDescData = protoimpl.X.CompressGZIP(file_waAdv_WAAdv_proto_rawDescData) + }) + return file_waAdv_WAAdv_proto_rawDescData +} + +var file_waAdv_WAAdv_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_waAdv_WAAdv_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_waAdv_WAAdv_proto_goTypes = []interface{}{ + (ADVEncryptionType)(0), // 0: WAAdv.ADVEncryptionType + (*ADVKeyIndexList)(nil), // 1: WAAdv.ADVKeyIndexList + (*ADVSignedKeyIndexList)(nil), // 2: WAAdv.ADVSignedKeyIndexList + (*ADVDeviceIdentity)(nil), // 3: WAAdv.ADVDeviceIdentity + (*ADVSignedDeviceIdentity)(nil), // 4: WAAdv.ADVSignedDeviceIdentity + (*ADVSignedDeviceIdentityHMAC)(nil), // 5: WAAdv.ADVSignedDeviceIdentityHMAC +} +var file_waAdv_WAAdv_proto_depIdxs = []int32{ + 0, // 0: WAAdv.ADVKeyIndexList.accountType:type_name -> WAAdv.ADVEncryptionType + 0, // 1: WAAdv.ADVDeviceIdentity.accountType:type_name -> WAAdv.ADVEncryptionType + 0, // 2: WAAdv.ADVDeviceIdentity.deviceType:type_name -> WAAdv.ADVEncryptionType + 0, // 3: WAAdv.ADVSignedDeviceIdentityHMAC.accountType:type_name -> WAAdv.ADVEncryptionType + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_waAdv_WAAdv_proto_init() } +func file_waAdv_WAAdv_proto_init() { + if File_waAdv_WAAdv_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_waAdv_WAAdv_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ADVKeyIndexList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waAdv_WAAdv_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ADVSignedKeyIndexList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waAdv_WAAdv_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ADVDeviceIdentity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waAdv_WAAdv_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ADVSignedDeviceIdentity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waAdv_WAAdv_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ADVSignedDeviceIdentityHMAC); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_waAdv_WAAdv_proto_rawDesc, + NumEnums: 1, + NumMessages: 5, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_waAdv_WAAdv_proto_goTypes, + DependencyIndexes: file_waAdv_WAAdv_proto_depIdxs, + EnumInfos: file_waAdv_WAAdv_proto_enumTypes, + MessageInfos: file_waAdv_WAAdv_proto_msgTypes, + }.Build() + File_waAdv_WAAdv_proto = out.File + file_waAdv_WAAdv_proto_rawDesc = nil + file_waAdv_WAAdv_proto_goTypes = nil + file_waAdv_WAAdv_proto_depIdxs = nil +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waAdv/WAAdv.pb.raw b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waAdv/WAAdv.pb.raw new file mode 100644 index 0000000000000000000000000000000000000000..b1b49dd8bf3c73eecb64d9e55870a105e01cf28b GIT binary patch literal 1025 zcmbVLK~94}6m^tp{ZfmgMxrhZ3sW0YOx+lFttGKhV}eE#cT*Va!~zXWi=4ov2l5Oa zz}pDZS}j7NZV3O+o0<3Ce*-HaY1l*kwh@18ec$6AE{H;VLr`wCZq8`bc5V7}&H|3t zpx~3R-BQsGs+7!8fwy6iGlvG8IDK_CUXjeN2G&5f2EI>SF3wTs#MY@E-UWF`ddwCG z8mQ9FT&2{URggK=$H%ZlEXy0X{5tAWwGbb*Tvux&_Ayz*wfv~hndc_!=6A66f?z#{ zT(Pc8?I~3%EZCG2)(eC#+59YV6_oLP$u`0VJ{1CG^G6>az-k&B-y-D7X4aDSj$kEb z)S^RX(Y75s#CY^Ck2j(CIG)qk-$|YJO!|Xo_z1uj?0#kUH>~!GU}NHTN@2d=IUXjN z%JwjGLP^51CRBm)NX^$U6E|ct-PWEFY~`>&y=a`^d<7V!1TjvD_)kwDq4(R=R`*0i zrgM#pAQ^STP-ZZ|{ORS@wb4>gbN{Z|^=b|o)b5!cJ`f%_)C=_vbBQ16#CM3zdOc4U LFTOJ`9{b@39sW7V literal 0 HcmV?d00001 diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waAdv/WAAdv.proto b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waAdv/WAAdv.proto new file mode 100644 index 00000000..5f42ae08 --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waAdv/WAAdv.proto @@ -0,0 +1,43 @@ +syntax = "proto3"; +package WAAdv; +option go_package = "go.mau.fi/whatsmeow/binary/armadillo/waAdv"; + +enum ADVEncryptionType { + E2EE = 0; + HOSTED = 1; +} + +message ADVKeyIndexList { + uint32 rawID = 1; + uint64 timestamp = 2; + uint32 currentIndex = 3; + repeated uint32 validIndexes = 4 [packed=true]; + ADVEncryptionType accountType = 5; +} + +message ADVSignedKeyIndexList { + bytes details = 1; + bytes accountSignature = 2; + bytes accountSignatureKey = 3; +} + +message ADVDeviceIdentity { + uint32 rawID = 1; + uint64 timestamp = 2; + uint32 keyIndex = 3; + ADVEncryptionType accountType = 4; + ADVEncryptionType deviceType = 5; +} + +message ADVSignedDeviceIdentity { + bytes details = 1; + bytes accountSignatureKey = 2; + bytes accountSignature = 3; + bytes deviceSignature = 4; +} + +message ADVSignedDeviceIdentityHMAC { + bytes details = 1; + bytes HMAC = 2; + ADVEncryptionType accountType = 3; +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/WAArmadilloApplication.pb.go b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/WAArmadilloApplication.pb.go new file mode 100644 index 00000000..24befe4c --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/WAArmadilloApplication.pb.go @@ -0,0 +1,2927 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v3.21.12 +// source: waArmadilloApplication/WAArmadilloApplication.proto + +package waArmadilloApplication + +import ( + reflect "reflect" + sync "sync" + + waArmadilloXMA "go.mau.fi/whatsmeow/binary/armadillo/waArmadilloXMA" + waCommon "go.mau.fi/whatsmeow/binary/armadillo/waCommon" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "embed" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus int32 + +const ( + Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EPOCHSTATUS_UNKNOWN Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus = 0 + Armadillo_Signal_EncryptedBackupsSecrets_Epoch_ES_OPEN Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus = 1 + Armadillo_Signal_EncryptedBackupsSecrets_Epoch_ES_CLOSE Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus = 2 +) + +// Enum value maps for Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus. +var ( + Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus_name = map[int32]string{ + 0: "EPOCHSTATUS_UNKNOWN", + 1: "ES_OPEN", + 2: "ES_CLOSE", + } + Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus_value = map[string]int32{ + "EPOCHSTATUS_UNKNOWN": 0, + "ES_OPEN": 1, + "ES_CLOSE": 2, + } +) + +func (x Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus) Enum() *Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus { + p := new(Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus) + *p = x + return p +} + +func (x Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes[0].Descriptor() +} + +func (Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus) Type() protoreflect.EnumType { + return &file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes[0] +} + +func (x Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus.Descriptor instead. +func (Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 3, 0, 0, 0} +} + +type Armadillo_Content_PaymentsTransactionMessage_PaymentStatus int32 + +const ( + Armadillo_Content_PaymentsTransactionMessage_PAYMENT_UNKNOWN Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 0 + Armadillo_Content_PaymentsTransactionMessage_REQUEST_INITED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 4 + Armadillo_Content_PaymentsTransactionMessage_REQUEST_DECLINED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 5 + Armadillo_Content_PaymentsTransactionMessage_REQUEST_TRANSFER_INITED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 6 + Armadillo_Content_PaymentsTransactionMessage_REQUEST_TRANSFER_COMPLETED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 7 + Armadillo_Content_PaymentsTransactionMessage_REQUEST_TRANSFER_FAILED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 8 + Armadillo_Content_PaymentsTransactionMessage_REQUEST_CANCELED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 9 + Armadillo_Content_PaymentsTransactionMessage_REQUEST_EXPIRED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 10 + Armadillo_Content_PaymentsTransactionMessage_TRANSFER_INITED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 11 + Armadillo_Content_PaymentsTransactionMessage_TRANSFER_PENDING Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 12 + Armadillo_Content_PaymentsTransactionMessage_TRANSFER_PENDING_RECIPIENT_VERIFICATION Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 13 + Armadillo_Content_PaymentsTransactionMessage_TRANSFER_CANCELED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 14 + Armadillo_Content_PaymentsTransactionMessage_TRANSFER_COMPLETED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 15 + Armadillo_Content_PaymentsTransactionMessage_TRANSFER_NO_RECEIVER_CREDENTIAL_NO_RTS_PENDING_CANCELED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 16 + Armadillo_Content_PaymentsTransactionMessage_TRANSFER_NO_RECEIVER_CREDENTIAL_NO_RTS_PENDING_OTHER Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 17 + Armadillo_Content_PaymentsTransactionMessage_TRANSFER_REFUNDED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 18 + Armadillo_Content_PaymentsTransactionMessage_TRANSFER_PARTIAL_REFUND Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 19 + Armadillo_Content_PaymentsTransactionMessage_TRANSFER_CHARGED_BACK Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 20 + Armadillo_Content_PaymentsTransactionMessage_TRANSFER_EXPIRED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 21 + Armadillo_Content_PaymentsTransactionMessage_TRANSFER_DECLINED Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 22 + Armadillo_Content_PaymentsTransactionMessage_TRANSFER_UNAVAILABLE Armadillo_Content_PaymentsTransactionMessage_PaymentStatus = 23 +) + +// Enum value maps for Armadillo_Content_PaymentsTransactionMessage_PaymentStatus. +var ( + Armadillo_Content_PaymentsTransactionMessage_PaymentStatus_name = map[int32]string{ + 0: "PAYMENT_UNKNOWN", + 4: "REQUEST_INITED", + 5: "REQUEST_DECLINED", + 6: "REQUEST_TRANSFER_INITED", + 7: "REQUEST_TRANSFER_COMPLETED", + 8: "REQUEST_TRANSFER_FAILED", + 9: "REQUEST_CANCELED", + 10: "REQUEST_EXPIRED", + 11: "TRANSFER_INITED", + 12: "TRANSFER_PENDING", + 13: "TRANSFER_PENDING_RECIPIENT_VERIFICATION", + 14: "TRANSFER_CANCELED", + 15: "TRANSFER_COMPLETED", + 16: "TRANSFER_NO_RECEIVER_CREDENTIAL_NO_RTS_PENDING_CANCELED", + 17: "TRANSFER_NO_RECEIVER_CREDENTIAL_NO_RTS_PENDING_OTHER", + 18: "TRANSFER_REFUNDED", + 19: "TRANSFER_PARTIAL_REFUND", + 20: "TRANSFER_CHARGED_BACK", + 21: "TRANSFER_EXPIRED", + 22: "TRANSFER_DECLINED", + 23: "TRANSFER_UNAVAILABLE", + } + Armadillo_Content_PaymentsTransactionMessage_PaymentStatus_value = map[string]int32{ + "PAYMENT_UNKNOWN": 0, + "REQUEST_INITED": 4, + "REQUEST_DECLINED": 5, + "REQUEST_TRANSFER_INITED": 6, + "REQUEST_TRANSFER_COMPLETED": 7, + "REQUEST_TRANSFER_FAILED": 8, + "REQUEST_CANCELED": 9, + "REQUEST_EXPIRED": 10, + "TRANSFER_INITED": 11, + "TRANSFER_PENDING": 12, + "TRANSFER_PENDING_RECIPIENT_VERIFICATION": 13, + "TRANSFER_CANCELED": 14, + "TRANSFER_COMPLETED": 15, + "TRANSFER_NO_RECEIVER_CREDENTIAL_NO_RTS_PENDING_CANCELED": 16, + "TRANSFER_NO_RECEIVER_CREDENTIAL_NO_RTS_PENDING_OTHER": 17, + "TRANSFER_REFUNDED": 18, + "TRANSFER_PARTIAL_REFUND": 19, + "TRANSFER_CHARGED_BACK": 20, + "TRANSFER_EXPIRED": 21, + "TRANSFER_DECLINED": 22, + "TRANSFER_UNAVAILABLE": 23, + } +) + +func (x Armadillo_Content_PaymentsTransactionMessage_PaymentStatus) Enum() *Armadillo_Content_PaymentsTransactionMessage_PaymentStatus { + p := new(Armadillo_Content_PaymentsTransactionMessage_PaymentStatus) + *p = x + return p +} + +func (x Armadillo_Content_PaymentsTransactionMessage_PaymentStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Armadillo_Content_PaymentsTransactionMessage_PaymentStatus) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes[1].Descriptor() +} + +func (Armadillo_Content_PaymentsTransactionMessage_PaymentStatus) Type() protoreflect.EnumType { + return &file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes[1] +} + +func (x Armadillo_Content_PaymentsTransactionMessage_PaymentStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Armadillo_Content_PaymentsTransactionMessage_PaymentStatus.Descriptor instead. +func (Armadillo_Content_PaymentsTransactionMessage_PaymentStatus) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 0, 0} +} + +type Armadillo_Content_ScreenshotAction_ScreenshotType int32 + +const ( + Armadillo_Content_ScreenshotAction_SCREENSHOTTYPE_UNKNOWN Armadillo_Content_ScreenshotAction_ScreenshotType = 0 + Armadillo_Content_ScreenshotAction_SCREENSHOT_IMAGE Armadillo_Content_ScreenshotAction_ScreenshotType = 1 + Armadillo_Content_ScreenshotAction_SCREEN_RECORDING Armadillo_Content_ScreenshotAction_ScreenshotType = 2 +) + +// Enum value maps for Armadillo_Content_ScreenshotAction_ScreenshotType. +var ( + Armadillo_Content_ScreenshotAction_ScreenshotType_name = map[int32]string{ + 0: "SCREENSHOTTYPE_UNKNOWN", + 1: "SCREENSHOT_IMAGE", + 2: "SCREEN_RECORDING", + } + Armadillo_Content_ScreenshotAction_ScreenshotType_value = map[string]int32{ + "SCREENSHOTTYPE_UNKNOWN": 0, + "SCREENSHOT_IMAGE": 1, + "SCREEN_RECORDING": 2, + } +) + +func (x Armadillo_Content_ScreenshotAction_ScreenshotType) Enum() *Armadillo_Content_ScreenshotAction_ScreenshotType { + p := new(Armadillo_Content_ScreenshotAction_ScreenshotType) + *p = x + return p +} + +func (x Armadillo_Content_ScreenshotAction_ScreenshotType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Armadillo_Content_ScreenshotAction_ScreenshotType) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes[2].Descriptor() +} + +func (Armadillo_Content_ScreenshotAction_ScreenshotType) Type() protoreflect.EnumType { + return &file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes[2] +} + +func (x Armadillo_Content_ScreenshotAction_ScreenshotType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Armadillo_Content_ScreenshotAction_ScreenshotType.Descriptor instead. +func (Armadillo_Content_ScreenshotAction_ScreenshotType) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 4, 0} +} + +type Armadillo_Content_RavenActionNotifMessage_ActionType int32 + +const ( + Armadillo_Content_RavenActionNotifMessage_PLAYED Armadillo_Content_RavenActionNotifMessage_ActionType = 0 + Armadillo_Content_RavenActionNotifMessage_SCREENSHOT Armadillo_Content_RavenActionNotifMessage_ActionType = 1 + Armadillo_Content_RavenActionNotifMessage_FORCE_DISABLE Armadillo_Content_RavenActionNotifMessage_ActionType = 2 +) + +// Enum value maps for Armadillo_Content_RavenActionNotifMessage_ActionType. +var ( + Armadillo_Content_RavenActionNotifMessage_ActionType_name = map[int32]string{ + 0: "PLAYED", + 1: "SCREENSHOT", + 2: "FORCE_DISABLE", + } + Armadillo_Content_RavenActionNotifMessage_ActionType_value = map[string]int32{ + "PLAYED": 0, + "SCREENSHOT": 1, + "FORCE_DISABLE": 2, + } +) + +func (x Armadillo_Content_RavenActionNotifMessage_ActionType) Enum() *Armadillo_Content_RavenActionNotifMessage_ActionType { + p := new(Armadillo_Content_RavenActionNotifMessage_ActionType) + *p = x + return p +} + +func (x Armadillo_Content_RavenActionNotifMessage_ActionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Armadillo_Content_RavenActionNotifMessage_ActionType) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes[3].Descriptor() +} + +func (Armadillo_Content_RavenActionNotifMessage_ActionType) Type() protoreflect.EnumType { + return &file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes[3] +} + +func (x Armadillo_Content_RavenActionNotifMessage_ActionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Armadillo_Content_RavenActionNotifMessage_ActionType.Descriptor instead. +func (Armadillo_Content_RavenActionNotifMessage_ActionType) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 6, 0} +} + +type Armadillo_Content_RavenMessage_EphemeralType int32 + +const ( + Armadillo_Content_RavenMessage_VIEW_ONCE Armadillo_Content_RavenMessage_EphemeralType = 0 + Armadillo_Content_RavenMessage_ALLOW_REPLAY Armadillo_Content_RavenMessage_EphemeralType = 1 + Armadillo_Content_RavenMessage_KEEP_IN_CHAT Armadillo_Content_RavenMessage_EphemeralType = 2 +) + +// Enum value maps for Armadillo_Content_RavenMessage_EphemeralType. +var ( + Armadillo_Content_RavenMessage_EphemeralType_name = map[int32]string{ + 0: "VIEW_ONCE", + 1: "ALLOW_REPLAY", + 2: "KEEP_IN_CHAT", + } + Armadillo_Content_RavenMessage_EphemeralType_value = map[string]int32{ + "VIEW_ONCE": 0, + "ALLOW_REPLAY": 1, + "KEEP_IN_CHAT": 2, + } +) + +func (x Armadillo_Content_RavenMessage_EphemeralType) Enum() *Armadillo_Content_RavenMessage_EphemeralType { + p := new(Armadillo_Content_RavenMessage_EphemeralType) + *p = x + return p +} + +func (x Armadillo_Content_RavenMessage_EphemeralType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Armadillo_Content_RavenMessage_EphemeralType) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes[4].Descriptor() +} + +func (Armadillo_Content_RavenMessage_EphemeralType) Type() protoreflect.EnumType { + return &file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes[4] +} + +func (x Armadillo_Content_RavenMessage_EphemeralType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Armadillo_Content_RavenMessage_EphemeralType.Descriptor instead. +func (Armadillo_Content_RavenMessage_EphemeralType) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 7, 0} +} + +type Armadillo_Content_CommonSticker_StickerType int32 + +const ( + Armadillo_Content_CommonSticker_STICKERTYPE_UNKNOWN Armadillo_Content_CommonSticker_StickerType = 0 + Armadillo_Content_CommonSticker_SMALL_LIKE Armadillo_Content_CommonSticker_StickerType = 1 + Armadillo_Content_CommonSticker_MEDIUM_LIKE Armadillo_Content_CommonSticker_StickerType = 2 + Armadillo_Content_CommonSticker_LARGE_LIKE Armadillo_Content_CommonSticker_StickerType = 3 +) + +// Enum value maps for Armadillo_Content_CommonSticker_StickerType. +var ( + Armadillo_Content_CommonSticker_StickerType_name = map[int32]string{ + 0: "STICKERTYPE_UNKNOWN", + 1: "SMALL_LIKE", + 2: "MEDIUM_LIKE", + 3: "LARGE_LIKE", + } + Armadillo_Content_CommonSticker_StickerType_value = map[string]int32{ + "STICKERTYPE_UNKNOWN": 0, + "SMALL_LIKE": 1, + "MEDIUM_LIKE": 2, + "LARGE_LIKE": 3, + } +) + +func (x Armadillo_Content_CommonSticker_StickerType) Enum() *Armadillo_Content_CommonSticker_StickerType { + p := new(Armadillo_Content_CommonSticker_StickerType) + *p = x + return p +} + +func (x Armadillo_Content_CommonSticker_StickerType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Armadillo_Content_CommonSticker_StickerType) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes[5].Descriptor() +} + +func (Armadillo_Content_CommonSticker_StickerType) Type() protoreflect.EnumType { + return &file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes[5] +} + +func (x Armadillo_Content_CommonSticker_StickerType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Armadillo_Content_CommonSticker_StickerType.Descriptor instead. +func (Armadillo_Content_CommonSticker_StickerType) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 8, 0} +} + +type Armadillo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload *Armadillo_Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + Metadata *Armadillo_Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (x *Armadillo) Reset() { + *x = Armadillo{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo) ProtoMessage() {} + +func (x *Armadillo) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo.ProtoReflect.Descriptor instead. +func (*Armadillo) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0} +} + +func (x *Armadillo) GetPayload() *Armadillo_Payload { + if x != nil { + return x.Payload + } + return nil +} + +func (x *Armadillo) GetMetadata() *Armadillo_Metadata { + if x != nil { + return x.Metadata + } + return nil +} + +type Armadillo_Metadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Armadillo_Metadata) Reset() { + *x = Armadillo_Metadata{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Metadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Metadata) ProtoMessage() {} + +func (x *Armadillo_Metadata) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Metadata.ProtoReflect.Descriptor instead. +func (*Armadillo_Metadata) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 0} +} + +type Armadillo_Payload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Payload: + // + // *Armadillo_Payload_Content + // *Armadillo_Payload_ApplicationData + // *Armadillo_Payload_Signal + // *Armadillo_Payload_SubProtocol + Payload isArmadillo_Payload_Payload `protobuf_oneof:"payload"` +} + +func (x *Armadillo_Payload) Reset() { + *x = Armadillo_Payload{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Payload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Payload) ProtoMessage() {} + +func (x *Armadillo_Payload) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Payload.ProtoReflect.Descriptor instead. +func (*Armadillo_Payload) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 1} +} + +func (m *Armadillo_Payload) GetPayload() isArmadillo_Payload_Payload { + if m != nil { + return m.Payload + } + return nil +} + +func (x *Armadillo_Payload) GetContent() *Armadillo_Content { + if x, ok := x.GetPayload().(*Armadillo_Payload_Content); ok { + return x.Content + } + return nil +} + +func (x *Armadillo_Payload) GetApplicationData() *Armadillo_ApplicationData { + if x, ok := x.GetPayload().(*Armadillo_Payload_ApplicationData); ok { + return x.ApplicationData + } + return nil +} + +func (x *Armadillo_Payload) GetSignal() *Armadillo_Signal { + if x, ok := x.GetPayload().(*Armadillo_Payload_Signal); ok { + return x.Signal + } + return nil +} + +func (x *Armadillo_Payload) GetSubProtocol() *Armadillo_SubProtocolPayload { + if x, ok := x.GetPayload().(*Armadillo_Payload_SubProtocol); ok { + return x.SubProtocol + } + return nil +} + +type isArmadillo_Payload_Payload interface { + isArmadillo_Payload_Payload() +} + +type Armadillo_Payload_Content struct { + Content *Armadillo_Content `protobuf:"bytes,1,opt,name=content,proto3,oneof"` +} + +type Armadillo_Payload_ApplicationData struct { + ApplicationData *Armadillo_ApplicationData `protobuf:"bytes,2,opt,name=applicationData,proto3,oneof"` +} + +type Armadillo_Payload_Signal struct { + Signal *Armadillo_Signal `protobuf:"bytes,3,opt,name=signal,proto3,oneof"` +} + +type Armadillo_Payload_SubProtocol struct { + SubProtocol *Armadillo_SubProtocolPayload `protobuf:"bytes,4,opt,name=subProtocol,proto3,oneof"` +} + +func (*Armadillo_Payload_Content) isArmadillo_Payload_Payload() {} + +func (*Armadillo_Payload_ApplicationData) isArmadillo_Payload_Payload() {} + +func (*Armadillo_Payload_Signal) isArmadillo_Payload_Payload() {} + +func (*Armadillo_Payload_SubProtocol) isArmadillo_Payload_Payload() {} + +type Armadillo_SubProtocolPayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FutureProof waCommon.FutureProofBehavior `protobuf:"varint,1,opt,name=futureProof,proto3,enum=WACommon.FutureProofBehavior" json:"futureProof,omitempty"` +} + +func (x *Armadillo_SubProtocolPayload) Reset() { + *x = Armadillo_SubProtocolPayload{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_SubProtocolPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_SubProtocolPayload) ProtoMessage() {} + +func (x *Armadillo_SubProtocolPayload) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_SubProtocolPayload.ProtoReflect.Descriptor instead. +func (*Armadillo_SubProtocolPayload) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 2} +} + +func (x *Armadillo_SubProtocolPayload) GetFutureProof() waCommon.FutureProofBehavior { + if x != nil { + return x.FutureProof + } + return waCommon.FutureProofBehavior(0) +} + +type Armadillo_Signal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Signal: + // + // *Armadillo_Signal_EncryptedBackupsSecrets_ + Signal isArmadillo_Signal_Signal `protobuf_oneof:"signal"` +} + +func (x *Armadillo_Signal) Reset() { + *x = Armadillo_Signal{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Signal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Signal) ProtoMessage() {} + +func (x *Armadillo_Signal) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Signal.ProtoReflect.Descriptor instead. +func (*Armadillo_Signal) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 3} +} + +func (m *Armadillo_Signal) GetSignal() isArmadillo_Signal_Signal { + if m != nil { + return m.Signal + } + return nil +} + +func (x *Armadillo_Signal) GetEncryptedBackupsSecrets() *Armadillo_Signal_EncryptedBackupsSecrets { + if x, ok := x.GetSignal().(*Armadillo_Signal_EncryptedBackupsSecrets_); ok { + return x.EncryptedBackupsSecrets + } + return nil +} + +type isArmadillo_Signal_Signal interface { + isArmadillo_Signal_Signal() +} + +type Armadillo_Signal_EncryptedBackupsSecrets_ struct { + EncryptedBackupsSecrets *Armadillo_Signal_EncryptedBackupsSecrets `protobuf:"bytes,1,opt,name=encryptedBackupsSecrets,proto3,oneof"` +} + +func (*Armadillo_Signal_EncryptedBackupsSecrets_) isArmadillo_Signal_Signal() {} + +type Armadillo_ApplicationData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to ApplicationData: + // + // *Armadillo_ApplicationData_MetadataSync + // *Armadillo_ApplicationData_AiBotResponse + ApplicationData isArmadillo_ApplicationData_ApplicationData `protobuf_oneof:"applicationData"` +} + +func (x *Armadillo_ApplicationData) Reset() { + *x = Armadillo_ApplicationData{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_ApplicationData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_ApplicationData) ProtoMessage() {} + +func (x *Armadillo_ApplicationData) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_ApplicationData.ProtoReflect.Descriptor instead. +func (*Armadillo_ApplicationData) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 4} +} + +func (m *Armadillo_ApplicationData) GetApplicationData() isArmadillo_ApplicationData_ApplicationData { + if m != nil { + return m.ApplicationData + } + return nil +} + +func (x *Armadillo_ApplicationData) GetMetadataSync() *Armadillo_ApplicationData_MetadataSyncNotification { + if x, ok := x.GetApplicationData().(*Armadillo_ApplicationData_MetadataSync); ok { + return x.MetadataSync + } + return nil +} + +func (x *Armadillo_ApplicationData) GetAiBotResponse() *Armadillo_ApplicationData_AIBotResponseMessage { + if x, ok := x.GetApplicationData().(*Armadillo_ApplicationData_AiBotResponse); ok { + return x.AiBotResponse + } + return nil +} + +type isArmadillo_ApplicationData_ApplicationData interface { + isArmadillo_ApplicationData_ApplicationData() +} + +type Armadillo_ApplicationData_MetadataSync struct { + MetadataSync *Armadillo_ApplicationData_MetadataSyncNotification `protobuf:"bytes,1,opt,name=metadataSync,proto3,oneof"` +} + +type Armadillo_ApplicationData_AiBotResponse struct { + AiBotResponse *Armadillo_ApplicationData_AIBotResponseMessage `protobuf:"bytes,2,opt,name=aiBotResponse,proto3,oneof"` +} + +func (*Armadillo_ApplicationData_MetadataSync) isArmadillo_ApplicationData_ApplicationData() {} + +func (*Armadillo_ApplicationData_AiBotResponse) isArmadillo_ApplicationData_ApplicationData() {} + +type Armadillo_Content struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Content: + // + // *Armadillo_Content_CommonSticker_ + // *Armadillo_Content_ScreenshotAction_ + // *Armadillo_Content_ExtendedContentMessage + // *Armadillo_Content_RavenMessage_ + // *Armadillo_Content_RavenActionNotifMessage_ + // *Armadillo_Content_ExtendedMessageContentWithSear + // *Armadillo_Content_ImageGalleryMessage_ + // *Armadillo_Content_PaymentsTransactionMessage_ + // *Armadillo_Content_BumpExistingMessage_ + // *Armadillo_Content_NoteReplyMessage_ + Content isArmadillo_Content_Content `protobuf_oneof:"content"` +} + +func (x *Armadillo_Content) Reset() { + *x = Armadillo_Content{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Content) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Content) ProtoMessage() {} + +func (x *Armadillo_Content) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Content.ProtoReflect.Descriptor instead. +func (*Armadillo_Content) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5} +} + +func (m *Armadillo_Content) GetContent() isArmadillo_Content_Content { + if m != nil { + return m.Content + } + return nil +} + +func (x *Armadillo_Content) GetCommonSticker() *Armadillo_Content_CommonSticker { + if x, ok := x.GetContent().(*Armadillo_Content_CommonSticker_); ok { + return x.CommonSticker + } + return nil +} + +func (x *Armadillo_Content) GetScreenshotAction() *Armadillo_Content_ScreenshotAction { + if x, ok := x.GetContent().(*Armadillo_Content_ScreenshotAction_); ok { + return x.ScreenshotAction + } + return nil +} + +func (x *Armadillo_Content) GetExtendedContentMessage() *waArmadilloXMA.ExtendedContentMessage { + if x, ok := x.GetContent().(*Armadillo_Content_ExtendedContentMessage); ok { + return x.ExtendedContentMessage + } + return nil +} + +func (x *Armadillo_Content) GetRavenMessage() *Armadillo_Content_RavenMessage { + if x, ok := x.GetContent().(*Armadillo_Content_RavenMessage_); ok { + return x.RavenMessage + } + return nil +} + +func (x *Armadillo_Content) GetRavenActionNotifMessage() *Armadillo_Content_RavenActionNotifMessage { + if x, ok := x.GetContent().(*Armadillo_Content_RavenActionNotifMessage_); ok { + return x.RavenActionNotifMessage + } + return nil +} + +func (x *Armadillo_Content) GetExtendedMessageContentWithSear() *Armadillo_Content_ExtendedContentMessageWithSear { + if x, ok := x.GetContent().(*Armadillo_Content_ExtendedMessageContentWithSear); ok { + return x.ExtendedMessageContentWithSear + } + return nil +} + +func (x *Armadillo_Content) GetImageGalleryMessage() *Armadillo_Content_ImageGalleryMessage { + if x, ok := x.GetContent().(*Armadillo_Content_ImageGalleryMessage_); ok { + return x.ImageGalleryMessage + } + return nil +} + +func (x *Armadillo_Content) GetPaymentsTransactionMessage() *Armadillo_Content_PaymentsTransactionMessage { + if x, ok := x.GetContent().(*Armadillo_Content_PaymentsTransactionMessage_); ok { + return x.PaymentsTransactionMessage + } + return nil +} + +func (x *Armadillo_Content) GetBumpExistingMessage() *Armadillo_Content_BumpExistingMessage { + if x, ok := x.GetContent().(*Armadillo_Content_BumpExistingMessage_); ok { + return x.BumpExistingMessage + } + return nil +} + +func (x *Armadillo_Content) GetNoteReplyMessage() *Armadillo_Content_NoteReplyMessage { + if x, ok := x.GetContent().(*Armadillo_Content_NoteReplyMessage_); ok { + return x.NoteReplyMessage + } + return nil +} + +type isArmadillo_Content_Content interface { + isArmadillo_Content_Content() +} + +type Armadillo_Content_CommonSticker_ struct { + CommonSticker *Armadillo_Content_CommonSticker `protobuf:"bytes,1,opt,name=commonSticker,proto3,oneof"` +} + +type Armadillo_Content_ScreenshotAction_ struct { + ScreenshotAction *Armadillo_Content_ScreenshotAction `protobuf:"bytes,3,opt,name=screenshotAction,proto3,oneof"` +} + +type Armadillo_Content_ExtendedContentMessage struct { + ExtendedContentMessage *waArmadilloXMA.ExtendedContentMessage `protobuf:"bytes,4,opt,name=extendedContentMessage,proto3,oneof"` +} + +type Armadillo_Content_RavenMessage_ struct { + RavenMessage *Armadillo_Content_RavenMessage `protobuf:"bytes,5,opt,name=ravenMessage,proto3,oneof"` +} + +type Armadillo_Content_RavenActionNotifMessage_ struct { + RavenActionNotifMessage *Armadillo_Content_RavenActionNotifMessage `protobuf:"bytes,6,opt,name=ravenActionNotifMessage,proto3,oneof"` +} + +type Armadillo_Content_ExtendedMessageContentWithSear struct { + ExtendedMessageContentWithSear *Armadillo_Content_ExtendedContentMessageWithSear `protobuf:"bytes,7,opt,name=extendedMessageContentWithSear,proto3,oneof"` +} + +type Armadillo_Content_ImageGalleryMessage_ struct { + ImageGalleryMessage *Armadillo_Content_ImageGalleryMessage `protobuf:"bytes,8,opt,name=imageGalleryMessage,proto3,oneof"` +} + +type Armadillo_Content_PaymentsTransactionMessage_ struct { + PaymentsTransactionMessage *Armadillo_Content_PaymentsTransactionMessage `protobuf:"bytes,10,opt,name=paymentsTransactionMessage,proto3,oneof"` +} + +type Armadillo_Content_BumpExistingMessage_ struct { + BumpExistingMessage *Armadillo_Content_BumpExistingMessage `protobuf:"bytes,11,opt,name=bumpExistingMessage,proto3,oneof"` +} + +type Armadillo_Content_NoteReplyMessage_ struct { + NoteReplyMessage *Armadillo_Content_NoteReplyMessage `protobuf:"bytes,13,opt,name=noteReplyMessage,proto3,oneof"` +} + +func (*Armadillo_Content_CommonSticker_) isArmadillo_Content_Content() {} + +func (*Armadillo_Content_ScreenshotAction_) isArmadillo_Content_Content() {} + +func (*Armadillo_Content_ExtendedContentMessage) isArmadillo_Content_Content() {} + +func (*Armadillo_Content_RavenMessage_) isArmadillo_Content_Content() {} + +func (*Armadillo_Content_RavenActionNotifMessage_) isArmadillo_Content_Content() {} + +func (*Armadillo_Content_ExtendedMessageContentWithSear) isArmadillo_Content_Content() {} + +func (*Armadillo_Content_ImageGalleryMessage_) isArmadillo_Content_Content() {} + +func (*Armadillo_Content_PaymentsTransactionMessage_) isArmadillo_Content_Content() {} + +func (*Armadillo_Content_BumpExistingMessage_) isArmadillo_Content_Content() {} + +func (*Armadillo_Content_NoteReplyMessage_) isArmadillo_Content_Content() {} + +type Armadillo_Signal_EncryptedBackupsSecrets struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BackupID uint64 `protobuf:"varint,1,opt,name=backupID,proto3" json:"backupID,omitempty"` + ServerDataID uint64 `protobuf:"varint,2,opt,name=serverDataID,proto3" json:"serverDataID,omitempty"` + Epoch []*Armadillo_Signal_EncryptedBackupsSecrets_Epoch `protobuf:"bytes,3,rep,name=epoch,proto3" json:"epoch,omitempty"` + TempOcmfClientState []byte `protobuf:"bytes,4,opt,name=tempOcmfClientState,proto3" json:"tempOcmfClientState,omitempty"` + MailboxRootKey []byte `protobuf:"bytes,5,opt,name=mailboxRootKey,proto3" json:"mailboxRootKey,omitempty"` + ObliviousValidationToken []byte `protobuf:"bytes,6,opt,name=obliviousValidationToken,proto3" json:"obliviousValidationToken,omitempty"` +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets) Reset() { + *x = Armadillo_Signal_EncryptedBackupsSecrets{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Signal_EncryptedBackupsSecrets) ProtoMessage() {} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Signal_EncryptedBackupsSecrets.ProtoReflect.Descriptor instead. +func (*Armadillo_Signal_EncryptedBackupsSecrets) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 3, 0} +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets) GetBackupID() uint64 { + if x != nil { + return x.BackupID + } + return 0 +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets) GetServerDataID() uint64 { + if x != nil { + return x.ServerDataID + } + return 0 +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets) GetEpoch() []*Armadillo_Signal_EncryptedBackupsSecrets_Epoch { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets) GetTempOcmfClientState() []byte { + if x != nil { + return x.TempOcmfClientState + } + return nil +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets) GetMailboxRootKey() []byte { + if x != nil { + return x.MailboxRootKey + } + return nil +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets) GetObliviousValidationToken() []byte { + if x != nil { + return x.ObliviousValidationToken + } + return nil +} + +type Armadillo_Signal_EncryptedBackupsSecrets_Epoch struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + AnonID []byte `protobuf:"bytes,2,opt,name=anonID,proto3" json:"anonID,omitempty"` + RootKey []byte `protobuf:"bytes,3,opt,name=rootKey,proto3" json:"rootKey,omitempty"` + Status Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus `protobuf:"varint,4,opt,name=status,proto3,enum=WAArmadilloApplication.Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus" json:"status,omitempty"` +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets_Epoch) Reset() { + *x = Armadillo_Signal_EncryptedBackupsSecrets_Epoch{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets_Epoch) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Signal_EncryptedBackupsSecrets_Epoch) ProtoMessage() {} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets_Epoch) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Signal_EncryptedBackupsSecrets_Epoch.ProtoReflect.Descriptor instead. +func (*Armadillo_Signal_EncryptedBackupsSecrets_Epoch) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 3, 0, 0} +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets_Epoch) GetID() uint64 { + if x != nil { + return x.ID + } + return 0 +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets_Epoch) GetAnonID() []byte { + if x != nil { + return x.AnonID + } + return nil +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets_Epoch) GetRootKey() []byte { + if x != nil { + return x.RootKey + } + return nil +} + +func (x *Armadillo_Signal_EncryptedBackupsSecrets_Epoch) GetStatus() Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus { + if x != nil { + return x.Status + } + return Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EPOCHSTATUS_UNKNOWN +} + +type Armadillo_ApplicationData_AIBotResponseMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SummonToken string `protobuf:"bytes,1,opt,name=summonToken,proto3" json:"summonToken,omitempty"` + MessageText string `protobuf:"bytes,2,opt,name=messageText,proto3" json:"messageText,omitempty"` + SerializedExtras string `protobuf:"bytes,3,opt,name=serializedExtras,proto3" json:"serializedExtras,omitempty"` +} + +func (x *Armadillo_ApplicationData_AIBotResponseMessage) Reset() { + *x = Armadillo_ApplicationData_AIBotResponseMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_ApplicationData_AIBotResponseMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_ApplicationData_AIBotResponseMessage) ProtoMessage() {} + +func (x *Armadillo_ApplicationData_AIBotResponseMessage) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_ApplicationData_AIBotResponseMessage.ProtoReflect.Descriptor instead. +func (*Armadillo_ApplicationData_AIBotResponseMessage) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 4, 0} +} + +func (x *Armadillo_ApplicationData_AIBotResponseMessage) GetSummonToken() string { + if x != nil { + return x.SummonToken + } + return "" +} + +func (x *Armadillo_ApplicationData_AIBotResponseMessage) GetMessageText() string { + if x != nil { + return x.MessageText + } + return "" +} + +func (x *Armadillo_ApplicationData_AIBotResponseMessage) GetSerializedExtras() string { + if x != nil { + return x.SerializedExtras + } + return "" +} + +type Armadillo_ApplicationData_MetadataSyncAction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to ActionType: + // + // *Armadillo_ApplicationData_MetadataSyncAction_ChatAction + // *Armadillo_ApplicationData_MetadataSyncAction_MessageAction + ActionType isArmadillo_ApplicationData_MetadataSyncAction_ActionType `protobuf_oneof:"actionType"` + ActionTimestamp int64 `protobuf:"varint,1,opt,name=actionTimestamp,proto3" json:"actionTimestamp,omitempty"` +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction) Reset() { + *x = Armadillo_ApplicationData_MetadataSyncAction{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_ApplicationData_MetadataSyncAction) ProtoMessage() {} + +func (x *Armadillo_ApplicationData_MetadataSyncAction) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_ApplicationData_MetadataSyncAction.ProtoReflect.Descriptor instead. +func (*Armadillo_ApplicationData_MetadataSyncAction) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 4, 1} +} + +func (m *Armadillo_ApplicationData_MetadataSyncAction) GetActionType() isArmadillo_ApplicationData_MetadataSyncAction_ActionType { + if m != nil { + return m.ActionType + } + return nil +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction) GetChatAction() *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction { + if x, ok := x.GetActionType().(*Armadillo_ApplicationData_MetadataSyncAction_ChatAction); ok { + return x.ChatAction + } + return nil +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction) GetMessageAction() *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction { + if x, ok := x.GetActionType().(*Armadillo_ApplicationData_MetadataSyncAction_MessageAction); ok { + return x.MessageAction + } + return nil +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction) GetActionTimestamp() int64 { + if x != nil { + return x.ActionTimestamp + } + return 0 +} + +type isArmadillo_ApplicationData_MetadataSyncAction_ActionType interface { + isArmadillo_ApplicationData_MetadataSyncAction_ActionType() +} + +type Armadillo_ApplicationData_MetadataSyncAction_ChatAction struct { + ChatAction *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction `protobuf:"bytes,101,opt,name=chatAction,proto3,oneof"` +} + +type Armadillo_ApplicationData_MetadataSyncAction_MessageAction struct { + MessageAction *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction `protobuf:"bytes,102,opt,name=messageAction,proto3,oneof"` +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_ChatAction) isArmadillo_ApplicationData_MetadataSyncAction_ActionType() { +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_MessageAction) isArmadillo_ApplicationData_MetadataSyncAction_ActionType() { +} + +type Armadillo_ApplicationData_MetadataSyncNotification struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Actions []*Armadillo_ApplicationData_MetadataSyncAction `protobuf:"bytes,2,rep,name=actions,proto3" json:"actions,omitempty"` +} + +func (x *Armadillo_ApplicationData_MetadataSyncNotification) Reset() { + *x = Armadillo_ApplicationData_MetadataSyncNotification{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_ApplicationData_MetadataSyncNotification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_ApplicationData_MetadataSyncNotification) ProtoMessage() {} + +func (x *Armadillo_ApplicationData_MetadataSyncNotification) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_ApplicationData_MetadataSyncNotification.ProtoReflect.Descriptor instead. +func (*Armadillo_ApplicationData_MetadataSyncNotification) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 4, 2} +} + +func (x *Armadillo_ApplicationData_MetadataSyncNotification) GetActions() []*Armadillo_ApplicationData_MetadataSyncAction { + if x != nil { + return x.Actions + } + return nil +} + +type Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Action: + // + // *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_MessageDelete + Action isArmadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_Action `protobuf_oneof:"action"` + Key *waCommon.MessageKey `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction) Reset() { + *x = Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction) ProtoMessage() {} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction.ProtoReflect.Descriptor instead. +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 4, 1, 0} +} + +func (m *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction) GetAction() isArmadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_Action { + if m != nil { + return m.Action + } + return nil +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction) GetMessageDelete() *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_ActionMessageDelete { + if x, ok := x.GetAction().(*Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_MessageDelete); ok { + return x.MessageDelete + } + return nil +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction) GetKey() *waCommon.MessageKey { + if x != nil { + return x.Key + } + return nil +} + +type isArmadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_Action interface { + isArmadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_Action() +} + +type Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_MessageDelete struct { + MessageDelete *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_ActionMessageDelete `protobuf:"bytes,101,opt,name=messageDelete,proto3,oneof"` +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_MessageDelete) isArmadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_Action() { +} + +type Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Action: + // + // *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatArchive + // *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatDelete + // *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatRead + Action isArmadillo_ApplicationData_MetadataSyncAction_SyncChatAction_Action `protobuf_oneof:"action"` + ChatID string `protobuf:"bytes,1,opt,name=chatID,proto3" json:"chatID,omitempty"` +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction) Reset() { + *x = Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction) ProtoMessage() {} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction.ProtoReflect.Descriptor instead. +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 4, 1, 1} +} + +func (m *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction) GetAction() isArmadillo_ApplicationData_MetadataSyncAction_SyncChatAction_Action { + if m != nil { + return m.Action + } + return nil +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction) GetChatArchive() *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive { + if x, ok := x.GetAction().(*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatArchive); ok { + return x.ChatArchive + } + return nil +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction) GetChatDelete() *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatDelete { + if x, ok := x.GetAction().(*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatDelete); ok { + return x.ChatDelete + } + return nil +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction) GetChatRead() *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead { + if x, ok := x.GetAction().(*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatRead); ok { + return x.ChatRead + } + return nil +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction) GetChatID() string { + if x != nil { + return x.ChatID + } + return "" +} + +type isArmadillo_ApplicationData_MetadataSyncAction_SyncChatAction_Action interface { + isArmadillo_ApplicationData_MetadataSyncAction_SyncChatAction_Action() +} + +type Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatArchive struct { + ChatArchive *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive `protobuf:"bytes,101,opt,name=chatArchive,proto3,oneof"` +} + +type Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatDelete struct { + ChatDelete *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatDelete `protobuf:"bytes,102,opt,name=chatDelete,proto3,oneof"` +} + +type Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatRead struct { + ChatRead *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead `protobuf:"bytes,103,opt,name=chatRead,proto3,oneof"` +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatArchive) isArmadillo_ApplicationData_MetadataSyncAction_SyncChatAction_Action() { +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatDelete) isArmadillo_ApplicationData_MetadataSyncAction_SyncChatAction_Action() { +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatRead) isArmadillo_ApplicationData_MetadataSyncAction_SyncChatAction_Action() { +} + +type Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key *waCommon.MessageKey `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage) Reset() { + *x = Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage) ProtoMessage() {} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage.ProtoReflect.Descriptor instead. +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 4, 1, 2} +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage) GetKey() *waCommon.MessageKey { + if x != nil { + return x.Key + } + return nil +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage) GetTimestamp() int64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +type Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LastMessageTimestamp int64 `protobuf:"varint,1,opt,name=lastMessageTimestamp,proto3" json:"lastMessageTimestamp,omitempty"` + LastSystemMessageTimestamp int64 `protobuf:"varint,2,opt,name=lastSystemMessageTimestamp,proto3" json:"lastSystemMessageTimestamp,omitempty"` + Messages []*Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage `protobuf:"bytes,3,rep,name=messages,proto3" json:"messages,omitempty"` +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange) Reset() { + *x = Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange) ProtoMessage() {} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange.ProtoReflect.Descriptor instead. +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 4, 1, 3} +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange) GetLastMessageTimestamp() int64 { + if x != nil { + return x.LastMessageTimestamp + } + return 0 +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange) GetLastSystemMessageTimestamp() int64 { + if x != nil { + return x.LastSystemMessageTimestamp + } + return 0 +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange) GetMessages() []*Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage { + if x != nil { + return x.Messages + } + return nil +} + +type Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_ActionMessageDelete struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_ActionMessageDelete) Reset() { + *x = Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_ActionMessageDelete{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_ActionMessageDelete) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_ActionMessageDelete) ProtoMessage() { +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_ActionMessageDelete) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_ActionMessageDelete.ProtoReflect.Descriptor instead. +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_ActionMessageDelete) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 4, 1, 0, 0} +} + +type Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MessageRange *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange `protobuf:"bytes,1,opt,name=messageRange,proto3" json:"messageRange,omitempty"` + Read bool `protobuf:"varint,2,opt,name=read,proto3" json:"read,omitempty"` +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead) Reset() { + *x = Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead) ProtoMessage() {} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead.ProtoReflect.Descriptor instead. +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 4, 1, 1, 0} +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead) GetMessageRange() *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange { + if x != nil { + return x.MessageRange + } + return nil +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead) GetRead() bool { + if x != nil { + return x.Read + } + return false +} + +type Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatDelete struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MessageRange *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange `protobuf:"bytes,1,opt,name=messageRange,proto3" json:"messageRange,omitempty"` +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatDelete) Reset() { + *x = Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatDelete{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatDelete) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatDelete) ProtoMessage() {} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatDelete) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatDelete.ProtoReflect.Descriptor instead. +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatDelete) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 4, 1, 1, 1} +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatDelete) GetMessageRange() *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange { + if x != nil { + return x.MessageRange + } + return nil +} + +type Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MessageRange *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange `protobuf:"bytes,1,opt,name=messageRange,proto3" json:"messageRange,omitempty"` + Archived bool `protobuf:"varint,2,opt,name=archived,proto3" json:"archived,omitempty"` +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive) Reset() { + *x = Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive) ProtoMessage() { +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive.ProtoReflect.Descriptor instead. +func (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 4, 1, 1, 2} +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive) GetMessageRange() *Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange { + if x != nil { + return x.MessageRange + } + return nil +} + +func (x *Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive) GetArchived() bool { + if x != nil { + return x.Archived + } + return false +} + +type Armadillo_Content_PaymentsTransactionMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TransactionID uint64 `protobuf:"varint,1,opt,name=transactionID,proto3" json:"transactionID,omitempty"` + Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` + Currency string `protobuf:"bytes,3,opt,name=currency,proto3" json:"currency,omitempty"` + PaymentStatus Armadillo_Content_PaymentsTransactionMessage_PaymentStatus `protobuf:"varint,4,opt,name=paymentStatus,proto3,enum=WAArmadilloApplication.Armadillo_Content_PaymentsTransactionMessage_PaymentStatus" json:"paymentStatus,omitempty"` + ExtendedContentMessage *waArmadilloXMA.ExtendedContentMessage `protobuf:"bytes,5,opt,name=extendedContentMessage,proto3" json:"extendedContentMessage,omitempty"` +} + +func (x *Armadillo_Content_PaymentsTransactionMessage) Reset() { + *x = Armadillo_Content_PaymentsTransactionMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Content_PaymentsTransactionMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Content_PaymentsTransactionMessage) ProtoMessage() {} + +func (x *Armadillo_Content_PaymentsTransactionMessage) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Content_PaymentsTransactionMessage.ProtoReflect.Descriptor instead. +func (*Armadillo_Content_PaymentsTransactionMessage) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 0} +} + +func (x *Armadillo_Content_PaymentsTransactionMessage) GetTransactionID() uint64 { + if x != nil { + return x.TransactionID + } + return 0 +} + +func (x *Armadillo_Content_PaymentsTransactionMessage) GetAmount() string { + if x != nil { + return x.Amount + } + return "" +} + +func (x *Armadillo_Content_PaymentsTransactionMessage) GetCurrency() string { + if x != nil { + return x.Currency + } + return "" +} + +func (x *Armadillo_Content_PaymentsTransactionMessage) GetPaymentStatus() Armadillo_Content_PaymentsTransactionMessage_PaymentStatus { + if x != nil { + return x.PaymentStatus + } + return Armadillo_Content_PaymentsTransactionMessage_PAYMENT_UNKNOWN +} + +func (x *Armadillo_Content_PaymentsTransactionMessage) GetExtendedContentMessage() *waArmadilloXMA.ExtendedContentMessage { + if x != nil { + return x.ExtendedContentMessage + } + return nil +} + +type Armadillo_Content_NoteReplyMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NoteID string `protobuf:"bytes,1,opt,name=noteID,proto3" json:"noteID,omitempty"` + NoteText *waCommon.MessageText `protobuf:"bytes,2,opt,name=noteText,proto3" json:"noteText,omitempty"` + NoteTimestampMS int64 `protobuf:"varint,3,opt,name=noteTimestampMS,proto3" json:"noteTimestampMS,omitempty"` + NoteReplyText *waCommon.MessageText `protobuf:"bytes,4,opt,name=noteReplyText,proto3" json:"noteReplyText,omitempty"` +} + +func (x *Armadillo_Content_NoteReplyMessage) Reset() { + *x = Armadillo_Content_NoteReplyMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Content_NoteReplyMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Content_NoteReplyMessage) ProtoMessage() {} + +func (x *Armadillo_Content_NoteReplyMessage) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Content_NoteReplyMessage.ProtoReflect.Descriptor instead. +func (*Armadillo_Content_NoteReplyMessage) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 1} +} + +func (x *Armadillo_Content_NoteReplyMessage) GetNoteID() string { + if x != nil { + return x.NoteID + } + return "" +} + +func (x *Armadillo_Content_NoteReplyMessage) GetNoteText() *waCommon.MessageText { + if x != nil { + return x.NoteText + } + return nil +} + +func (x *Armadillo_Content_NoteReplyMessage) GetNoteTimestampMS() int64 { + if x != nil { + return x.NoteTimestampMS + } + return 0 +} + +func (x *Armadillo_Content_NoteReplyMessage) GetNoteReplyText() *waCommon.MessageText { + if x != nil { + return x.NoteReplyText + } + return nil +} + +type Armadillo_Content_BumpExistingMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key *waCommon.MessageKey `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` +} + +func (x *Armadillo_Content_BumpExistingMessage) Reset() { + *x = Armadillo_Content_BumpExistingMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Content_BumpExistingMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Content_BumpExistingMessage) ProtoMessage() {} + +func (x *Armadillo_Content_BumpExistingMessage) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Content_BumpExistingMessage.ProtoReflect.Descriptor instead. +func (*Armadillo_Content_BumpExistingMessage) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 2} +} + +func (x *Armadillo_Content_BumpExistingMessage) GetKey() *waCommon.MessageKey { + if x != nil { + return x.Key + } + return nil +} + +type Armadillo_Content_ImageGalleryMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Images []*waCommon.SubProtocol `protobuf:"bytes,1,rep,name=images,proto3" json:"images,omitempty"` +} + +func (x *Armadillo_Content_ImageGalleryMessage) Reset() { + *x = Armadillo_Content_ImageGalleryMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Content_ImageGalleryMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Content_ImageGalleryMessage) ProtoMessage() {} + +func (x *Armadillo_Content_ImageGalleryMessage) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Content_ImageGalleryMessage.ProtoReflect.Descriptor instead. +func (*Armadillo_Content_ImageGalleryMessage) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 3} +} + +func (x *Armadillo_Content_ImageGalleryMessage) GetImages() []*waCommon.SubProtocol { + if x != nil { + return x.Images + } + return nil +} + +type Armadillo_Content_ScreenshotAction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ScreenshotType Armadillo_Content_ScreenshotAction_ScreenshotType `protobuf:"varint,1,opt,name=screenshotType,proto3,enum=WAArmadilloApplication.Armadillo_Content_ScreenshotAction_ScreenshotType" json:"screenshotType,omitempty"` +} + +func (x *Armadillo_Content_ScreenshotAction) Reset() { + *x = Armadillo_Content_ScreenshotAction{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Content_ScreenshotAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Content_ScreenshotAction) ProtoMessage() {} + +func (x *Armadillo_Content_ScreenshotAction) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Content_ScreenshotAction.ProtoReflect.Descriptor instead. +func (*Armadillo_Content_ScreenshotAction) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 4} +} + +func (x *Armadillo_Content_ScreenshotAction) GetScreenshotType() Armadillo_Content_ScreenshotAction_ScreenshotType { + if x != nil { + return x.ScreenshotType + } + return Armadillo_Content_ScreenshotAction_SCREENSHOTTYPE_UNKNOWN +} + +type Armadillo_Content_ExtendedContentMessageWithSear struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SearID string `protobuf:"bytes,1,opt,name=searID,proto3" json:"searID,omitempty"` + Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + NativeURL string `protobuf:"bytes,3,opt,name=nativeURL,proto3" json:"nativeURL,omitempty"` + SearAssociatedMessage *waCommon.SubProtocol `protobuf:"bytes,4,opt,name=searAssociatedMessage,proto3" json:"searAssociatedMessage,omitempty"` + SearSentWithMessageID string `protobuf:"bytes,5,opt,name=searSentWithMessageID,proto3" json:"searSentWithMessageID,omitempty"` +} + +func (x *Armadillo_Content_ExtendedContentMessageWithSear) Reset() { + *x = Armadillo_Content_ExtendedContentMessageWithSear{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Content_ExtendedContentMessageWithSear) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Content_ExtendedContentMessageWithSear) ProtoMessage() {} + +func (x *Armadillo_Content_ExtendedContentMessageWithSear) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Content_ExtendedContentMessageWithSear.ProtoReflect.Descriptor instead. +func (*Armadillo_Content_ExtendedContentMessageWithSear) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 5} +} + +func (x *Armadillo_Content_ExtendedContentMessageWithSear) GetSearID() string { + if x != nil { + return x.SearID + } + return "" +} + +func (x *Armadillo_Content_ExtendedContentMessageWithSear) GetPayload() []byte { + if x != nil { + return x.Payload + } + return nil +} + +func (x *Armadillo_Content_ExtendedContentMessageWithSear) GetNativeURL() string { + if x != nil { + return x.NativeURL + } + return "" +} + +func (x *Armadillo_Content_ExtendedContentMessageWithSear) GetSearAssociatedMessage() *waCommon.SubProtocol { + if x != nil { + return x.SearAssociatedMessage + } + return nil +} + +func (x *Armadillo_Content_ExtendedContentMessageWithSear) GetSearSentWithMessageID() string { + if x != nil { + return x.SearSentWithMessageID + } + return "" +} + +type Armadillo_Content_RavenActionNotifMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key *waCommon.MessageKey `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + ActionTimestamp int64 `protobuf:"varint,2,opt,name=actionTimestamp,proto3" json:"actionTimestamp,omitempty"` + ActionType Armadillo_Content_RavenActionNotifMessage_ActionType `protobuf:"varint,3,opt,name=actionType,proto3,enum=WAArmadilloApplication.Armadillo_Content_RavenActionNotifMessage_ActionType" json:"actionType,omitempty"` +} + +func (x *Armadillo_Content_RavenActionNotifMessage) Reset() { + *x = Armadillo_Content_RavenActionNotifMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Content_RavenActionNotifMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Content_RavenActionNotifMessage) ProtoMessage() {} + +func (x *Armadillo_Content_RavenActionNotifMessage) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Content_RavenActionNotifMessage.ProtoReflect.Descriptor instead. +func (*Armadillo_Content_RavenActionNotifMessage) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 6} +} + +func (x *Armadillo_Content_RavenActionNotifMessage) GetKey() *waCommon.MessageKey { + if x != nil { + return x.Key + } + return nil +} + +func (x *Armadillo_Content_RavenActionNotifMessage) GetActionTimestamp() int64 { + if x != nil { + return x.ActionTimestamp + } + return 0 +} + +func (x *Armadillo_Content_RavenActionNotifMessage) GetActionType() Armadillo_Content_RavenActionNotifMessage_ActionType { + if x != nil { + return x.ActionType + } + return Armadillo_Content_RavenActionNotifMessage_PLAYED +} + +type Armadillo_Content_RavenMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to MediaContent: + // + // *Armadillo_Content_RavenMessage_ImageMessage + // *Armadillo_Content_RavenMessage_VideoMessage + MediaContent isArmadillo_Content_RavenMessage_MediaContent `protobuf_oneof:"mediaContent"` + EphemeralType Armadillo_Content_RavenMessage_EphemeralType `protobuf:"varint,1,opt,name=ephemeralType,proto3,enum=WAArmadilloApplication.Armadillo_Content_RavenMessage_EphemeralType" json:"ephemeralType,omitempty"` +} + +func (x *Armadillo_Content_RavenMessage) Reset() { + *x = Armadillo_Content_RavenMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Content_RavenMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Content_RavenMessage) ProtoMessage() {} + +func (x *Armadillo_Content_RavenMessage) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Content_RavenMessage.ProtoReflect.Descriptor instead. +func (*Armadillo_Content_RavenMessage) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 7} +} + +func (m *Armadillo_Content_RavenMessage) GetMediaContent() isArmadillo_Content_RavenMessage_MediaContent { + if m != nil { + return m.MediaContent + } + return nil +} + +func (x *Armadillo_Content_RavenMessage) GetImageMessage() *waCommon.SubProtocol { + if x, ok := x.GetMediaContent().(*Armadillo_Content_RavenMessage_ImageMessage); ok { + return x.ImageMessage + } + return nil +} + +func (x *Armadillo_Content_RavenMessage) GetVideoMessage() *waCommon.SubProtocol { + if x, ok := x.GetMediaContent().(*Armadillo_Content_RavenMessage_VideoMessage); ok { + return x.VideoMessage + } + return nil +} + +func (x *Armadillo_Content_RavenMessage) GetEphemeralType() Armadillo_Content_RavenMessage_EphemeralType { + if x != nil { + return x.EphemeralType + } + return Armadillo_Content_RavenMessage_VIEW_ONCE +} + +type isArmadillo_Content_RavenMessage_MediaContent interface { + isArmadillo_Content_RavenMessage_MediaContent() +} + +type Armadillo_Content_RavenMessage_ImageMessage struct { + ImageMessage *waCommon.SubProtocol `protobuf:"bytes,2,opt,name=imageMessage,proto3,oneof"` +} + +type Armadillo_Content_RavenMessage_VideoMessage struct { + VideoMessage *waCommon.SubProtocol `protobuf:"bytes,3,opt,name=videoMessage,proto3,oneof"` +} + +func (*Armadillo_Content_RavenMessage_ImageMessage) isArmadillo_Content_RavenMessage_MediaContent() {} + +func (*Armadillo_Content_RavenMessage_VideoMessage) isArmadillo_Content_RavenMessage_MediaContent() {} + +type Armadillo_Content_CommonSticker struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StickerType Armadillo_Content_CommonSticker_StickerType `protobuf:"varint,1,opt,name=stickerType,proto3,enum=WAArmadilloApplication.Armadillo_Content_CommonSticker_StickerType" json:"stickerType,omitempty"` +} + +func (x *Armadillo_Content_CommonSticker) Reset() { + *x = Armadillo_Content_CommonSticker{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Armadillo_Content_CommonSticker) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Armadillo_Content_CommonSticker) ProtoMessage() {} + +func (x *Armadillo_Content_CommonSticker) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Armadillo_Content_CommonSticker.ProtoReflect.Descriptor instead. +func (*Armadillo_Content_CommonSticker) Descriptor() ([]byte, []int) { + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP(), []int{0, 5, 8} +} + +func (x *Armadillo_Content_CommonSticker) GetStickerType() Armadillo_Content_CommonSticker_StickerType { + if x != nil { + return x.StickerType + } + return Armadillo_Content_CommonSticker_STICKERTYPE_UNKNOWN +} + +var File_waArmadilloApplication_WAArmadilloApplication_proto protoreflect.FileDescriptor + +//go:embed WAArmadilloApplication.pb.raw +var file_waArmadilloApplication_WAArmadilloApplication_proto_rawDesc []byte + +var ( + file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescOnce sync.Once + file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescData = file_waArmadilloApplication_WAArmadilloApplication_proto_rawDesc +) + +func file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescGZIP() []byte { + file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescOnce.Do(func() { + file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescData = protoimpl.X.CompressGZIP(file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescData) + }) + return file_waArmadilloApplication_WAArmadilloApplication_proto_rawDescData +} + +var file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_waArmadilloApplication_WAArmadilloApplication_proto_goTypes = []interface{}{ + (Armadillo_Signal_EncryptedBackupsSecrets_Epoch_EpochStatus)(0), // 0: WAArmadilloApplication.Armadillo.Signal.EncryptedBackupsSecrets.Epoch.EpochStatus + (Armadillo_Content_PaymentsTransactionMessage_PaymentStatus)(0), // 1: WAArmadilloApplication.Armadillo.Content.PaymentsTransactionMessage.PaymentStatus + (Armadillo_Content_ScreenshotAction_ScreenshotType)(0), // 2: WAArmadilloApplication.Armadillo.Content.ScreenshotAction.ScreenshotType + (Armadillo_Content_RavenActionNotifMessage_ActionType)(0), // 3: WAArmadilloApplication.Armadillo.Content.RavenActionNotifMessage.ActionType + (Armadillo_Content_RavenMessage_EphemeralType)(0), // 4: WAArmadilloApplication.Armadillo.Content.RavenMessage.EphemeralType + (Armadillo_Content_CommonSticker_StickerType)(0), // 5: WAArmadilloApplication.Armadillo.Content.CommonSticker.StickerType + (*Armadillo)(nil), // 6: WAArmadilloApplication.Armadillo + (*Armadillo_Metadata)(nil), // 7: WAArmadilloApplication.Armadillo.Metadata + (*Armadillo_Payload)(nil), // 8: WAArmadilloApplication.Armadillo.Payload + (*Armadillo_SubProtocolPayload)(nil), // 9: WAArmadilloApplication.Armadillo.SubProtocolPayload + (*Armadillo_Signal)(nil), // 10: WAArmadilloApplication.Armadillo.Signal + (*Armadillo_ApplicationData)(nil), // 11: WAArmadilloApplication.Armadillo.ApplicationData + (*Armadillo_Content)(nil), // 12: WAArmadilloApplication.Armadillo.Content + (*Armadillo_Signal_EncryptedBackupsSecrets)(nil), // 13: WAArmadilloApplication.Armadillo.Signal.EncryptedBackupsSecrets + (*Armadillo_Signal_EncryptedBackupsSecrets_Epoch)(nil), // 14: WAArmadilloApplication.Armadillo.Signal.EncryptedBackupsSecrets.Epoch + (*Armadillo_ApplicationData_AIBotResponseMessage)(nil), // 15: WAArmadilloApplication.Armadillo.ApplicationData.AIBotResponseMessage + (*Armadillo_ApplicationData_MetadataSyncAction)(nil), // 16: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction + (*Armadillo_ApplicationData_MetadataSyncNotification)(nil), // 17: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncNotification + (*Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction)(nil), // 18: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncMessageAction + (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction)(nil), // 19: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction + (*Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage)(nil), // 20: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncActionMessage + (*Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange)(nil), // 21: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncActionMessageRange + (*Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_ActionMessageDelete)(nil), // 22: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncMessageAction.ActionMessageDelete + (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead)(nil), // 23: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.ActionChatRead + (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatDelete)(nil), // 24: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.ActionChatDelete + (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive)(nil), // 25: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.ActionChatArchive + (*Armadillo_Content_PaymentsTransactionMessage)(nil), // 26: WAArmadilloApplication.Armadillo.Content.PaymentsTransactionMessage + (*Armadillo_Content_NoteReplyMessage)(nil), // 27: WAArmadilloApplication.Armadillo.Content.NoteReplyMessage + (*Armadillo_Content_BumpExistingMessage)(nil), // 28: WAArmadilloApplication.Armadillo.Content.BumpExistingMessage + (*Armadillo_Content_ImageGalleryMessage)(nil), // 29: WAArmadilloApplication.Armadillo.Content.ImageGalleryMessage + (*Armadillo_Content_ScreenshotAction)(nil), // 30: WAArmadilloApplication.Armadillo.Content.ScreenshotAction + (*Armadillo_Content_ExtendedContentMessageWithSear)(nil), // 31: WAArmadilloApplication.Armadillo.Content.ExtendedContentMessageWithSear + (*Armadillo_Content_RavenActionNotifMessage)(nil), // 32: WAArmadilloApplication.Armadillo.Content.RavenActionNotifMessage + (*Armadillo_Content_RavenMessage)(nil), // 33: WAArmadilloApplication.Armadillo.Content.RavenMessage + (*Armadillo_Content_CommonSticker)(nil), // 34: WAArmadilloApplication.Armadillo.Content.CommonSticker + (waCommon.FutureProofBehavior)(0), // 35: WACommon.FutureProofBehavior + (*waArmadilloXMA.ExtendedContentMessage)(nil), // 36: WAArmadilloXMA.ExtendedContentMessage + (*waCommon.MessageKey)(nil), // 37: WACommon.MessageKey + (*waCommon.MessageText)(nil), // 38: WACommon.MessageText + (*waCommon.SubProtocol)(nil), // 39: WACommon.SubProtocol +} +var file_waArmadilloApplication_WAArmadilloApplication_proto_depIdxs = []int32{ + 8, // 0: WAArmadilloApplication.Armadillo.payload:type_name -> WAArmadilloApplication.Armadillo.Payload + 7, // 1: WAArmadilloApplication.Armadillo.metadata:type_name -> WAArmadilloApplication.Armadillo.Metadata + 12, // 2: WAArmadilloApplication.Armadillo.Payload.content:type_name -> WAArmadilloApplication.Armadillo.Content + 11, // 3: WAArmadilloApplication.Armadillo.Payload.applicationData:type_name -> WAArmadilloApplication.Armadillo.ApplicationData + 10, // 4: WAArmadilloApplication.Armadillo.Payload.signal:type_name -> WAArmadilloApplication.Armadillo.Signal + 9, // 5: WAArmadilloApplication.Armadillo.Payload.subProtocol:type_name -> WAArmadilloApplication.Armadillo.SubProtocolPayload + 35, // 6: WAArmadilloApplication.Armadillo.SubProtocolPayload.futureProof:type_name -> WACommon.FutureProofBehavior + 13, // 7: WAArmadilloApplication.Armadillo.Signal.encryptedBackupsSecrets:type_name -> WAArmadilloApplication.Armadillo.Signal.EncryptedBackupsSecrets + 17, // 8: WAArmadilloApplication.Armadillo.ApplicationData.metadataSync:type_name -> WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncNotification + 15, // 9: WAArmadilloApplication.Armadillo.ApplicationData.aiBotResponse:type_name -> WAArmadilloApplication.Armadillo.ApplicationData.AIBotResponseMessage + 34, // 10: WAArmadilloApplication.Armadillo.Content.commonSticker:type_name -> WAArmadilloApplication.Armadillo.Content.CommonSticker + 30, // 11: WAArmadilloApplication.Armadillo.Content.screenshotAction:type_name -> WAArmadilloApplication.Armadillo.Content.ScreenshotAction + 36, // 12: WAArmadilloApplication.Armadillo.Content.extendedContentMessage:type_name -> WAArmadilloXMA.ExtendedContentMessage + 33, // 13: WAArmadilloApplication.Armadillo.Content.ravenMessage:type_name -> WAArmadilloApplication.Armadillo.Content.RavenMessage + 32, // 14: WAArmadilloApplication.Armadillo.Content.ravenActionNotifMessage:type_name -> WAArmadilloApplication.Armadillo.Content.RavenActionNotifMessage + 31, // 15: WAArmadilloApplication.Armadillo.Content.extendedMessageContentWithSear:type_name -> WAArmadilloApplication.Armadillo.Content.ExtendedContentMessageWithSear + 29, // 16: WAArmadilloApplication.Armadillo.Content.imageGalleryMessage:type_name -> WAArmadilloApplication.Armadillo.Content.ImageGalleryMessage + 26, // 17: WAArmadilloApplication.Armadillo.Content.paymentsTransactionMessage:type_name -> WAArmadilloApplication.Armadillo.Content.PaymentsTransactionMessage + 28, // 18: WAArmadilloApplication.Armadillo.Content.bumpExistingMessage:type_name -> WAArmadilloApplication.Armadillo.Content.BumpExistingMessage + 27, // 19: WAArmadilloApplication.Armadillo.Content.noteReplyMessage:type_name -> WAArmadilloApplication.Armadillo.Content.NoteReplyMessage + 14, // 20: WAArmadilloApplication.Armadillo.Signal.EncryptedBackupsSecrets.epoch:type_name -> WAArmadilloApplication.Armadillo.Signal.EncryptedBackupsSecrets.Epoch + 0, // 21: WAArmadilloApplication.Armadillo.Signal.EncryptedBackupsSecrets.Epoch.status:type_name -> WAArmadilloApplication.Armadillo.Signal.EncryptedBackupsSecrets.Epoch.EpochStatus + 19, // 22: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.chatAction:type_name -> WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction + 18, // 23: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.messageAction:type_name -> WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncMessageAction + 16, // 24: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncNotification.actions:type_name -> WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction + 22, // 25: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncMessageAction.messageDelete:type_name -> WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncMessageAction.ActionMessageDelete + 37, // 26: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncMessageAction.key:type_name -> WACommon.MessageKey + 25, // 27: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.chatArchive:type_name -> WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.ActionChatArchive + 24, // 28: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.chatDelete:type_name -> WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.ActionChatDelete + 23, // 29: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.chatRead:type_name -> WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.ActionChatRead + 37, // 30: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncActionMessage.key:type_name -> WACommon.MessageKey + 20, // 31: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncActionMessageRange.messages:type_name -> WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncActionMessage + 21, // 32: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.ActionChatRead.messageRange:type_name -> WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncActionMessageRange + 21, // 33: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.ActionChatDelete.messageRange:type_name -> WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncActionMessageRange + 21, // 34: WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncChatAction.ActionChatArchive.messageRange:type_name -> WAArmadilloApplication.Armadillo.ApplicationData.MetadataSyncAction.SyncActionMessageRange + 1, // 35: WAArmadilloApplication.Armadillo.Content.PaymentsTransactionMessage.paymentStatus:type_name -> WAArmadilloApplication.Armadillo.Content.PaymentsTransactionMessage.PaymentStatus + 36, // 36: WAArmadilloApplication.Armadillo.Content.PaymentsTransactionMessage.extendedContentMessage:type_name -> WAArmadilloXMA.ExtendedContentMessage + 38, // 37: WAArmadilloApplication.Armadillo.Content.NoteReplyMessage.noteText:type_name -> WACommon.MessageText + 38, // 38: WAArmadilloApplication.Armadillo.Content.NoteReplyMessage.noteReplyText:type_name -> WACommon.MessageText + 37, // 39: WAArmadilloApplication.Armadillo.Content.BumpExistingMessage.key:type_name -> WACommon.MessageKey + 39, // 40: WAArmadilloApplication.Armadillo.Content.ImageGalleryMessage.images:type_name -> WACommon.SubProtocol + 2, // 41: WAArmadilloApplication.Armadillo.Content.ScreenshotAction.screenshotType:type_name -> WAArmadilloApplication.Armadillo.Content.ScreenshotAction.ScreenshotType + 39, // 42: WAArmadilloApplication.Armadillo.Content.ExtendedContentMessageWithSear.searAssociatedMessage:type_name -> WACommon.SubProtocol + 37, // 43: WAArmadilloApplication.Armadillo.Content.RavenActionNotifMessage.key:type_name -> WACommon.MessageKey + 3, // 44: WAArmadilloApplication.Armadillo.Content.RavenActionNotifMessage.actionType:type_name -> WAArmadilloApplication.Armadillo.Content.RavenActionNotifMessage.ActionType + 39, // 45: WAArmadilloApplication.Armadillo.Content.RavenMessage.imageMessage:type_name -> WACommon.SubProtocol + 39, // 46: WAArmadilloApplication.Armadillo.Content.RavenMessage.videoMessage:type_name -> WACommon.SubProtocol + 4, // 47: WAArmadilloApplication.Armadillo.Content.RavenMessage.ephemeralType:type_name -> WAArmadilloApplication.Armadillo.Content.RavenMessage.EphemeralType + 5, // 48: WAArmadilloApplication.Armadillo.Content.CommonSticker.stickerType:type_name -> WAArmadilloApplication.Armadillo.Content.CommonSticker.StickerType + 49, // [49:49] is the sub-list for method output_type + 49, // [49:49] is the sub-list for method input_type + 49, // [49:49] is the sub-list for extension type_name + 49, // [49:49] is the sub-list for extension extendee + 0, // [0:49] is the sub-list for field type_name +} + +func init() { file_waArmadilloApplication_WAArmadilloApplication_proto_init() } +func file_waArmadilloApplication_WAArmadilloApplication_proto_init() { + if File_waArmadilloApplication_WAArmadilloApplication_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Metadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Payload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_SubProtocolPayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Signal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_ApplicationData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Content); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Signal_EncryptedBackupsSecrets); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Signal_EncryptedBackupsSecrets_Epoch); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_ApplicationData_AIBotResponseMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_ApplicationData_MetadataSyncAction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_ApplicationData_MetadataSyncNotification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_ApplicationData_MetadataSyncAction_SyncActionMessageRange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_ActionMessageDelete); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatRead); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatDelete); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ActionChatArchive); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Content_PaymentsTransactionMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Content_NoteReplyMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Content_BumpExistingMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Content_ImageGalleryMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Content_ScreenshotAction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Content_ExtendedContentMessageWithSear); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Content_RavenActionNotifMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Content_RavenMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Armadillo_Content_CommonSticker); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[2].OneofWrappers = []interface{}{ + (*Armadillo_Payload_Content)(nil), + (*Armadillo_Payload_ApplicationData)(nil), + (*Armadillo_Payload_Signal)(nil), + (*Armadillo_Payload_SubProtocol)(nil), + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[4].OneofWrappers = []interface{}{ + (*Armadillo_Signal_EncryptedBackupsSecrets_)(nil), + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[5].OneofWrappers = []interface{}{ + (*Armadillo_ApplicationData_MetadataSync)(nil), + (*Armadillo_ApplicationData_AiBotResponse)(nil), + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[6].OneofWrappers = []interface{}{ + (*Armadillo_Content_CommonSticker_)(nil), + (*Armadillo_Content_ScreenshotAction_)(nil), + (*Armadillo_Content_ExtendedContentMessage)(nil), + (*Armadillo_Content_RavenMessage_)(nil), + (*Armadillo_Content_RavenActionNotifMessage_)(nil), + (*Armadillo_Content_ExtendedMessageContentWithSear)(nil), + (*Armadillo_Content_ImageGalleryMessage_)(nil), + (*Armadillo_Content_PaymentsTransactionMessage_)(nil), + (*Armadillo_Content_BumpExistingMessage_)(nil), + (*Armadillo_Content_NoteReplyMessage_)(nil), + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[10].OneofWrappers = []interface{}{ + (*Armadillo_ApplicationData_MetadataSyncAction_ChatAction)(nil), + (*Armadillo_ApplicationData_MetadataSyncAction_MessageAction)(nil), + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[12].OneofWrappers = []interface{}{ + (*Armadillo_ApplicationData_MetadataSyncAction_SyncMessageAction_MessageDelete)(nil), + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[13].OneofWrappers = []interface{}{ + (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatArchive)(nil), + (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatDelete)(nil), + (*Armadillo_ApplicationData_MetadataSyncAction_SyncChatAction_ChatRead)(nil), + } + file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes[27].OneofWrappers = []interface{}{ + (*Armadillo_Content_RavenMessage_ImageMessage)(nil), + (*Armadillo_Content_RavenMessage_VideoMessage)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_waArmadilloApplication_WAArmadilloApplication_proto_rawDesc, + NumEnums: 6, + NumMessages: 29, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_waArmadilloApplication_WAArmadilloApplication_proto_goTypes, + DependencyIndexes: file_waArmadilloApplication_WAArmadilloApplication_proto_depIdxs, + EnumInfos: file_waArmadilloApplication_WAArmadilloApplication_proto_enumTypes, + MessageInfos: file_waArmadilloApplication_WAArmadilloApplication_proto_msgTypes, + }.Build() + File_waArmadilloApplication_WAArmadilloApplication_proto = out.File + file_waArmadilloApplication_WAArmadilloApplication_proto_rawDesc = nil + file_waArmadilloApplication_WAArmadilloApplication_proto_goTypes = nil + file_waArmadilloApplication_WAArmadilloApplication_proto_depIdxs = nil +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/WAArmadilloApplication.pb.raw b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/WAArmadilloApplication.pb.raw new file mode 100644 index 0000000000000000000000000000000000000000..5af063fa9fd6602b307e5a875871ae3fea3188ed GIT binary patch literal 7699 zcmc&(&2J-F5g#X+I4OU`dHJMaSF3=QVG$nIJ7Up{258%zNfXC5ubs&ZU#4SslHRf1 z#@)_LR($LUi7QC_18DD@LE^+=ZydNFaX_3nBQ6}Ndat|P?T?8^o6(+U?w?Aqr&v$MM>d~oM_R731XFrSk>fs{Kut<&+hoX+l&0J=8^(1^)* z8iGclimTy4E62c$iT&)`kUATB!-0j;oipL+Y~c+Q?MKi4Xt8Krn3uLQ;870cAGcvy z8pM7EJ65kXxaxaWyJ)ta4g0QPwFZ{w`Um)(IZP71$!pVb(7ah9luwpmX9gQnVC7UO zq?d&%OFaB$dysam!KF2z6UKE4%fdqFH~f!n!?M|PdcLpH-2Y;`ki;Mo>d;+C z^Wc+xfR_Yq8oI)$Y=Pg51Em|uTSFHwllZ%*LQ1GD$!rHUw0f;{U^LXmvC%xP9#(57 z)!Z$Xf~00NYjv%fORzMo;76%aGql`7aV5CZ%D)(_jU@rrhjftljH_PDkL~YXZ_*f0 zKFE56QguB0%zqy+%3~5(4>G1*bUbdkeW&MIe!86_497*PdIaXka$WP>LUD0;Aw zUHMxUSky~ui{h6J0a_QPC%<+r)FM?dKArz1R-TTc6hfnCB7)d2Ambb2OFk2lAK#c{ z|3D-<9ZO6cyMr&8a6rSx1<&mEMeHr&qZB7A|4G0)nGyqJze$7!l&y}1DMq^PgV$p~ zUfSX7ASFhOk_1d;i_b8B$ueXUHSr%FpAB;xrwz&$Y)rwUt169G{*;7l{P@_f6Oa;t zGH6}cmw~y~jhQ=&6yH`skiyW?sBDIJO2m@yc^NwG*Q-kC^N3{jQ36)TDcr*9?_5Oi z>FZU4B%wP(sq}!52L7Y6%Kb0p;{;^oA(JDCjs236tw>Yc?44VFoc!R%6pqD|5J9`$2ersY1m&Xz*rvn~!xl%)3b5HRUC+-o<7sv38v7O~#A95!ShP)W zO6f1z!3NYei2$Q_kIKoLdqCnQhH{E&08>5@SA9$Q5O$-FYP9rVKZc~->0-o_a^;)2 zYCHffu1|Dh%J1KRq~Eu(CS+Qoe>FV2^~@Uh_x=6rmGBYr^7-)D>A8vFu?ws|uqCm2 z?u8Q+5VCQ*KferP3<1SVpt7I9Hda7ZuWhw`-TYwj`@6TJ@~DHyT4>5{#GZkJT}gUi zURu2XmwJFy;TuuhNc|USw2sg@!p|PLCjzE_&C4wXnM6E-rpuVD@Ng$LtO9mAy zZwCJJ<@#!$*xrRfWjtFl|Lpyne7?&CCFf(68JuB zhT}xh7k8Z@&a3DZz_P{^Uo?Ga4F?09ja>PiPWa7UK*m2^*{{yuAYXr=G_s?!mdHFV z2s8bRydq`^sluH3X;yaH`}Y!LVhXSgSgWf~kF;td(uOn0a_xJ^n$c+LRlT8=b4zR! zasjQZl`47_skhnZVJDzAxLP&#H6E}mvo}GRSS;0!>J^P3lT(@ZRlS0XD^YnRwOZ1M zx=QK>klK^F&XEX292cG<{*Z|CgtA_JluNU(!k5RXO|F&nx=tQ=tZ{u`FR2Z^R?TJD z7OaPxLmjdhQfx#H%~@j);Qf$Ztr4uIBVx0JS|YlxR+>a^7)@WFW(b;N--LUw$Xsh2 zXgs$b(~@iZ$JH`Ag^_bZz`DwXc)6V0V4s7naItit@<&>^SyW4hxy_j00vB(^goMYx zjnk#g5a+n6KE}gSixn-mqx=QS@$p+umyvSEsK=0B>|I!)|HA1+s<4H5JKl8CA`iDw z-z`{z67$Fq*BJZmF)|)YhDah|2?=tPJ3~TzuksK!rsT$Xi(sV;8&jSY_BB`*PZrH! zsh*4I5*Y_`f0Oc0^yPSYgQ-6|Dw-NtLW;61ThQl!@y0RpBLV^PF#&r|u$d35EZTut zblbr2)~d!qtpTd2$* zEHf1Khb$sqBK^$X0|052h!cS2dPRMTiRl(ju3;1x7!m7`*{|`E)-3CWNFEEyCkv2{ z*1>p()8fJeXGA8>x;9u##5NQ2rQNoifLXQ{)9)NHM>pe?JY)4QtgbaMJ7kJ~%U+?l ziyDH%@dy@=L+=$K6I*8)SbeN(C(RnZf9Sa!q}58Lc7j)jyotU;%Auy!@yTss8gJm3 zJWI2gwvE3yieKrJzv6r`)_ySy=f$#-i`Y||KM-PQdB3R>=O4x0JAqVWjYj@PLoXd_ zd@M~+I2@r_&5C|V31SUWM_O4wK9Yn5ikAw#Q1W|`em-kSaH35%zHQTD{Z9tI$ah&?!NbbbW7{G literal 0 HcmV?d00001 diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/WAArmadilloApplication.proto b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/WAArmadilloApplication.proto new file mode 100644 index 00000000..a9ca1d27 --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/WAArmadilloApplication.proto @@ -0,0 +1,245 @@ +syntax = "proto3"; +package WAArmadilloApplication; +option go_package = "go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication"; + +import "waArmadilloXMA/WAArmadilloXMA.proto"; +import "waCommon/WACommon.proto"; + +message Armadillo { + message Metadata { + } + + message Payload { + oneof payload { + Content content = 1; + ApplicationData applicationData = 2; + Signal signal = 3; + SubProtocolPayload subProtocol = 4; + } + } + + message SubProtocolPayload { + WACommon.FutureProofBehavior futureProof = 1; + } + + message Signal { + message EncryptedBackupsSecrets { + message Epoch { + enum EpochStatus { + EPOCHSTATUS_UNKNOWN = 0; + ES_OPEN = 1; + ES_CLOSE = 2; + } + + uint64 ID = 1; + bytes anonID = 2; + bytes rootKey = 3; + EpochStatus status = 4; + } + + uint64 backupID = 1; + uint64 serverDataID = 2; + repeated Epoch epoch = 3; + bytes tempOcmfClientState = 4; + bytes mailboxRootKey = 5; + bytes obliviousValidationToken = 6; + } + + oneof signal { + EncryptedBackupsSecrets encryptedBackupsSecrets = 1; + } + } + + message ApplicationData { + message AIBotResponseMessage { + string summonToken = 1; + string messageText = 2; + string serializedExtras = 3; + } + + message MetadataSyncAction { + message SyncMessageAction { + message ActionMessageDelete { + } + + oneof action { + ActionMessageDelete messageDelete = 101; + } + + WACommon.MessageKey key = 1; + } + + message SyncChatAction { + message ActionChatRead { + SyncActionMessageRange messageRange = 1; + bool read = 2; + } + + message ActionChatDelete { + SyncActionMessageRange messageRange = 1; + } + + message ActionChatArchive { + SyncActionMessageRange messageRange = 1; + bool archived = 2; + } + + oneof action { + ActionChatArchive chatArchive = 101; + ActionChatDelete chatDelete = 102; + ActionChatRead chatRead = 103; + } + + string chatID = 1; + } + + message SyncActionMessage { + WACommon.MessageKey key = 1; + int64 timestamp = 2; + } + + message SyncActionMessageRange { + int64 lastMessageTimestamp = 1; + int64 lastSystemMessageTimestamp = 2; + repeated SyncActionMessage messages = 3; + } + + oneof actionType { + SyncChatAction chatAction = 101; + SyncMessageAction messageAction = 102; + } + + int64 actionTimestamp = 1; + } + + message MetadataSyncNotification { + repeated MetadataSyncAction actions = 2; + } + + oneof applicationData { + MetadataSyncNotification metadataSync = 1; + AIBotResponseMessage aiBotResponse = 2; + } + } + + message Content { + message PaymentsTransactionMessage { + enum PaymentStatus { + PAYMENT_UNKNOWN = 0; + REQUEST_INITED = 4; + REQUEST_DECLINED = 5; + REQUEST_TRANSFER_INITED = 6; + REQUEST_TRANSFER_COMPLETED = 7; + REQUEST_TRANSFER_FAILED = 8; + REQUEST_CANCELED = 9; + REQUEST_EXPIRED = 10; + TRANSFER_INITED = 11; + TRANSFER_PENDING = 12; + TRANSFER_PENDING_RECIPIENT_VERIFICATION = 13; + TRANSFER_CANCELED = 14; + TRANSFER_COMPLETED = 15; + TRANSFER_NO_RECEIVER_CREDENTIAL_NO_RTS_PENDING_CANCELED = 16; + TRANSFER_NO_RECEIVER_CREDENTIAL_NO_RTS_PENDING_OTHER = 17; + TRANSFER_REFUNDED = 18; + TRANSFER_PARTIAL_REFUND = 19; + TRANSFER_CHARGED_BACK = 20; + TRANSFER_EXPIRED = 21; + TRANSFER_DECLINED = 22; + TRANSFER_UNAVAILABLE = 23; + } + + uint64 transactionID = 1; + string amount = 2; + string currency = 3; + PaymentStatus paymentStatus = 4; + WAArmadilloXMA.ExtendedContentMessage extendedContentMessage = 5; + } + + message NoteReplyMessage { + string noteID = 1; + WACommon.MessageText noteText = 2; + int64 noteTimestampMS = 3; + WACommon.MessageText noteReplyText = 4; + } + + message BumpExistingMessage { + WACommon.MessageKey key = 1; + } + + message ImageGalleryMessage { + repeated WACommon.SubProtocol images = 1; + } + + message ScreenshotAction { + enum ScreenshotType { + SCREENSHOTTYPE_UNKNOWN = 0; + SCREENSHOT_IMAGE = 1; + SCREEN_RECORDING = 2; + } + + ScreenshotType screenshotType = 1; + } + + message ExtendedContentMessageWithSear { + string searID = 1; + bytes payload = 2; + string nativeURL = 3; + WACommon.SubProtocol searAssociatedMessage = 4; + string searSentWithMessageID = 5; + } + + message RavenActionNotifMessage { + enum ActionType { + PLAYED = 0; + SCREENSHOT = 1; + FORCE_DISABLE = 2; + } + + WACommon.MessageKey key = 1; + int64 actionTimestamp = 2; + ActionType actionType = 3; + } + + message RavenMessage { + enum EphemeralType { + VIEW_ONCE = 0; + ALLOW_REPLAY = 1; + KEEP_IN_CHAT = 2; + } + + oneof mediaContent { + WACommon.SubProtocol imageMessage = 2; + WACommon.SubProtocol videoMessage = 3; + } + + EphemeralType ephemeralType = 1; + } + + message CommonSticker { + enum StickerType { + STICKERTYPE_UNKNOWN = 0; + SMALL_LIKE = 1; + MEDIUM_LIKE = 2; + LARGE_LIKE = 3; + } + + StickerType stickerType = 1; + } + + oneof content { + CommonSticker commonSticker = 1; + ScreenshotAction screenshotAction = 3; + WAArmadilloXMA.ExtendedContentMessage extendedContentMessage = 4; + RavenMessage ravenMessage = 5; + RavenActionNotifMessage ravenActionNotifMessage = 6; + ExtendedContentMessageWithSear extendedMessageContentWithSear = 7; + ImageGalleryMessage imageGalleryMessage = 8; + PaymentsTransactionMessage paymentsTransactionMessage = 10; + BumpExistingMessage bumpExistingMessage = 11; + NoteReplyMessage noteReplyMessage = 13; + } + } + + Payload payload = 1; + Metadata metadata = 2; +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/extra.go b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/extra.go new file mode 100644 index 00000000..152b9372 --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloApplication/extra.go @@ -0,0 +1,3 @@ +package waArmadilloApplication + +func (*Armadillo) IsMessageApplicationSub() {} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessage/WAArmadilloBackupMessage.pb.go b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessage/WAArmadilloBackupMessage.pb.go new file mode 100644 index 00000000..da53e64a --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessage/WAArmadilloBackupMessage.pb.go @@ -0,0 +1,317 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v3.21.12 +// source: waArmadilloBackupMessage/WAArmadilloBackupMessage.proto + +package waArmadilloBackupMessage + +import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "embed" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type BackupMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Metadata *BackupMessage_Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` +} + +func (x *BackupMessage) Reset() { + *x = BackupMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BackupMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BackupMessage) ProtoMessage() {} + +func (x *BackupMessage) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BackupMessage.ProtoReflect.Descriptor instead. +func (*BackupMessage) Descriptor() ([]byte, []int) { + return file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescGZIP(), []int{0} +} + +func (x *BackupMessage) GetMetadata() *BackupMessage_Metadata { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *BackupMessage) GetPayload() []byte { + if x != nil { + return x.Payload + } + return nil +} + +type BackupMessage_Metadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SenderID string `protobuf:"bytes,1,opt,name=senderID,proto3" json:"senderID,omitempty"` + MessageID string `protobuf:"bytes,2,opt,name=messageID,proto3" json:"messageID,omitempty"` + TimestampMS int64 `protobuf:"varint,3,opt,name=timestampMS,proto3" json:"timestampMS,omitempty"` + FrankingMetadata *BackupMessage_Metadata_FrankingMetadata `protobuf:"bytes,4,opt,name=frankingMetadata,proto3" json:"frankingMetadata,omitempty"` + PayloadVersion int32 `protobuf:"varint,5,opt,name=payloadVersion,proto3" json:"payloadVersion,omitempty"` + FutureProofBehavior int32 `protobuf:"varint,6,opt,name=futureProofBehavior,proto3" json:"futureProofBehavior,omitempty"` +} + +func (x *BackupMessage_Metadata) Reset() { + *x = BackupMessage_Metadata{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BackupMessage_Metadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BackupMessage_Metadata) ProtoMessage() {} + +func (x *BackupMessage_Metadata) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BackupMessage_Metadata.ProtoReflect.Descriptor instead. +func (*BackupMessage_Metadata) Descriptor() ([]byte, []int) { + return file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *BackupMessage_Metadata) GetSenderID() string { + if x != nil { + return x.SenderID + } + return "" +} + +func (x *BackupMessage_Metadata) GetMessageID() string { + if x != nil { + return x.MessageID + } + return "" +} + +func (x *BackupMessage_Metadata) GetTimestampMS() int64 { + if x != nil { + return x.TimestampMS + } + return 0 +} + +func (x *BackupMessage_Metadata) GetFrankingMetadata() *BackupMessage_Metadata_FrankingMetadata { + if x != nil { + return x.FrankingMetadata + } + return nil +} + +func (x *BackupMessage_Metadata) GetPayloadVersion() int32 { + if x != nil { + return x.PayloadVersion + } + return 0 +} + +func (x *BackupMessage_Metadata) GetFutureProofBehavior() int32 { + if x != nil { + return x.FutureProofBehavior + } + return 0 +} + +type BackupMessage_Metadata_FrankingMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FrankingTag []byte `protobuf:"bytes,3,opt,name=frankingTag,proto3" json:"frankingTag,omitempty"` + ReportingTag []byte `protobuf:"bytes,4,opt,name=reportingTag,proto3" json:"reportingTag,omitempty"` +} + +func (x *BackupMessage_Metadata_FrankingMetadata) Reset() { + *x = BackupMessage_Metadata_FrankingMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BackupMessage_Metadata_FrankingMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BackupMessage_Metadata_FrankingMetadata) ProtoMessage() {} + +func (x *BackupMessage_Metadata_FrankingMetadata) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BackupMessage_Metadata_FrankingMetadata.ProtoReflect.Descriptor instead. +func (*BackupMessage_Metadata_FrankingMetadata) Descriptor() ([]byte, []int) { + return file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescGZIP(), []int{0, 0, 0} +} + +func (x *BackupMessage_Metadata_FrankingMetadata) GetFrankingTag() []byte { + if x != nil { + return x.FrankingTag + } + return nil +} + +func (x *BackupMessage_Metadata_FrankingMetadata) GetReportingTag() []byte { + if x != nil { + return x.ReportingTag + } + return nil +} + +var File_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto protoreflect.FileDescriptor + +//go:embed WAArmadilloBackupMessage.pb.raw +var file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDesc []byte + +var ( + file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescOnce sync.Once + file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescData = file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDesc +) + +func file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescGZIP() []byte { + file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescOnce.Do(func() { + file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescData = protoimpl.X.CompressGZIP(file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescData) + }) + return file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDescData +} + +var file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_goTypes = []interface{}{ + (*BackupMessage)(nil), // 0: WAArmadilloBackupMessage.BackupMessage + (*BackupMessage_Metadata)(nil), // 1: WAArmadilloBackupMessage.BackupMessage.Metadata + (*BackupMessage_Metadata_FrankingMetadata)(nil), // 2: WAArmadilloBackupMessage.BackupMessage.Metadata.FrankingMetadata +} +var file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_depIdxs = []int32{ + 1, // 0: WAArmadilloBackupMessage.BackupMessage.metadata:type_name -> WAArmadilloBackupMessage.BackupMessage.Metadata + 2, // 1: WAArmadilloBackupMessage.BackupMessage.Metadata.frankingMetadata:type_name -> WAArmadilloBackupMessage.BackupMessage.Metadata.FrankingMetadata + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_init() } +func file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_init() { + if File_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BackupMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BackupMessage_Metadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BackupMessage_Metadata_FrankingMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_goTypes, + DependencyIndexes: file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_depIdxs, + MessageInfos: file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_msgTypes, + }.Build() + File_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto = out.File + file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_rawDesc = nil + file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_goTypes = nil + file_waArmadilloBackupMessage_WAArmadilloBackupMessage_proto_depIdxs = nil +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessage/WAArmadilloBackupMessage.pb.raw b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessage/WAArmadilloBackupMessage.pb.raw new file mode 100644 index 00000000..e458e0be --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessage/WAArmadilloBackupMessage.pb.raw @@ -0,0 +1,15 @@ + +7waArmadilloBackupMessage/WAArmadilloBackupMessage.protoWAArmadilloBackupMessage"ƒ + BackupMessageL +metadata ( 20.WAArmadilloBackupMessage.BackupMessage.MetadataRmetadata +payload ( Rpayload‰ +Metadata +senderID ( RsenderID + messageID ( R messageID + timestampMS (R timestampMSm +frankingMetadata ( 2A.WAArmadilloBackupMessage.BackupMessage.Metadata.FrankingMetadataRfrankingMetadata& +payloadVersion (RpayloadVersion0 +futureProofBehavior (RfutureProofBehaviorX +FrankingMetadata + frankingTag ( R frankingTag" + reportingTag ( R reportingTagB?Z=go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessagebproto3 \ No newline at end of file diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessage/WAArmadilloBackupMessage.proto b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessage/WAArmadilloBackupMessage.proto new file mode 100644 index 00000000..7da4b00e --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessage/WAArmadilloBackupMessage.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; +package WAArmadilloBackupMessage; +option go_package = "go.mau.fi/whatsmeow/binary/armadillo/waArmadilloBackupMessage"; + +message BackupMessage { + message Metadata { + message FrankingMetadata { + bytes frankingTag = 3; + bytes reportingTag = 4; + } + + string senderID = 1; + string messageID = 2; + int64 timestampMS = 3; + FrankingMetadata frankingMetadata = 4; + int32 payloadVersion = 5; + int32 futureProofBehavior = 6; + } + + Metadata metadata = 1; + bytes payload = 2; +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDC/WAArmadilloICDC.pb.go b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDC/WAArmadilloICDC.pb.go new file mode 100644 index 00000000..6511100b --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDC/WAArmadilloICDC.pb.go @@ -0,0 +1,231 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v3.21.12 +// source: waArmadilloICDC/WAArmadilloICDC.proto + +package waArmadilloICDC + +import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "embed" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ICDCIdentityList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Seq int32 `protobuf:"varint,1,opt,name=seq,proto3" json:"seq,omitempty"` + Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Devices [][]byte `protobuf:"bytes,3,rep,name=devices,proto3" json:"devices,omitempty"` + SigningDeviceIndex int32 `protobuf:"varint,4,opt,name=signingDeviceIndex,proto3" json:"signingDeviceIndex,omitempty"` +} + +func (x *ICDCIdentityList) Reset() { + *x = ICDCIdentityList{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloICDC_WAArmadilloICDC_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ICDCIdentityList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ICDCIdentityList) ProtoMessage() {} + +func (x *ICDCIdentityList) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloICDC_WAArmadilloICDC_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ICDCIdentityList.ProtoReflect.Descriptor instead. +func (*ICDCIdentityList) Descriptor() ([]byte, []int) { + return file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescGZIP(), []int{0} +} + +func (x *ICDCIdentityList) GetSeq() int32 { + if x != nil { + return x.Seq + } + return 0 +} + +func (x *ICDCIdentityList) GetTimestamp() int64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *ICDCIdentityList) GetDevices() [][]byte { + if x != nil { + return x.Devices + } + return nil +} + +func (x *ICDCIdentityList) GetSigningDeviceIndex() int32 { + if x != nil { + return x.SigningDeviceIndex + } + return 0 +} + +type SignedICDCIdentityList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Details []byte `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` + Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (x *SignedICDCIdentityList) Reset() { + *x = SignedICDCIdentityList{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloICDC_WAArmadilloICDC_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignedICDCIdentityList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignedICDCIdentityList) ProtoMessage() {} + +func (x *SignedICDCIdentityList) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloICDC_WAArmadilloICDC_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignedICDCIdentityList.ProtoReflect.Descriptor instead. +func (*SignedICDCIdentityList) Descriptor() ([]byte, []int) { + return file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescGZIP(), []int{1} +} + +func (x *SignedICDCIdentityList) GetDetails() []byte { + if x != nil { + return x.Details + } + return nil +} + +func (x *SignedICDCIdentityList) GetSignature() []byte { + if x != nil { + return x.Signature + } + return nil +} + +var File_waArmadilloICDC_WAArmadilloICDC_proto protoreflect.FileDescriptor + +//go:embed WAArmadilloICDC.pb.raw +var file_waArmadilloICDC_WAArmadilloICDC_proto_rawDesc []byte + +var ( + file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescOnce sync.Once + file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescData = file_waArmadilloICDC_WAArmadilloICDC_proto_rawDesc +) + +func file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescGZIP() []byte { + file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescOnce.Do(func() { + file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescData = protoimpl.X.CompressGZIP(file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescData) + }) + return file_waArmadilloICDC_WAArmadilloICDC_proto_rawDescData +} + +var file_waArmadilloICDC_WAArmadilloICDC_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_waArmadilloICDC_WAArmadilloICDC_proto_goTypes = []interface{}{ + (*ICDCIdentityList)(nil), // 0: WAArmadilloICDC.ICDCIdentityList + (*SignedICDCIdentityList)(nil), // 1: WAArmadilloICDC.SignedICDCIdentityList +} +var file_waArmadilloICDC_WAArmadilloICDC_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_waArmadilloICDC_WAArmadilloICDC_proto_init() } +func file_waArmadilloICDC_WAArmadilloICDC_proto_init() { + if File_waArmadilloICDC_WAArmadilloICDC_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_waArmadilloICDC_WAArmadilloICDC_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ICDCIdentityList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloICDC_WAArmadilloICDC_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignedICDCIdentityList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_waArmadilloICDC_WAArmadilloICDC_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_waArmadilloICDC_WAArmadilloICDC_proto_goTypes, + DependencyIndexes: file_waArmadilloICDC_WAArmadilloICDC_proto_depIdxs, + MessageInfos: file_waArmadilloICDC_WAArmadilloICDC_proto_msgTypes, + }.Build() + File_waArmadilloICDC_WAArmadilloICDC_proto = out.File + file_waArmadilloICDC_WAArmadilloICDC_proto_rawDesc = nil + file_waArmadilloICDC_WAArmadilloICDC_proto_goTypes = nil + file_waArmadilloICDC_WAArmadilloICDC_proto_depIdxs = nil +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDC/WAArmadilloICDC.pb.raw b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDC/WAArmadilloICDC.pb.raw new file mode 100644 index 00000000..e608f573 --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDC/WAArmadilloICDC.pb.raw @@ -0,0 +1,10 @@ + +%waArmadilloICDC/WAArmadilloICDC.protoWAArmadilloICDC"Œ +ICDCIdentityList +seq (Rseq + timestamp (R timestamp +devices ( Rdevices. +signingDeviceIndex (RsigningDeviceIndex"P +SignedICDCIdentityList +details ( Rdetails + signature ( R signatureB6Z4go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDCbproto3 \ No newline at end of file diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDC/WAArmadilloICDC.proto b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDC/WAArmadilloICDC.proto new file mode 100644 index 00000000..6fdc70b3 --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDC/WAArmadilloICDC.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; +package WAArmadilloICDC; +option go_package = "go.mau.fi/whatsmeow/binary/armadillo/waArmadilloICDC"; + +message ICDCIdentityList { + int32 seq = 1; + int64 timestamp = 2; + repeated bytes devices = 3; + int32 signingDeviceIndex = 4; +} + +message SignedICDCIdentityList { + bytes details = 1; + bytes signature = 2; +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloXMA/WAArmadilloXMA.pb.go b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloXMA/WAArmadilloXMA.pb.go new file mode 100644 index 00000000..dc8dfdf1 --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloXMA/WAArmadilloXMA.pb.go @@ -0,0 +1,785 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v3.21.12 +// source: waArmadilloXMA/WAArmadilloXMA.proto + +package waArmadilloXMA + +import ( + reflect "reflect" + sync "sync" + + waCommon "go.mau.fi/whatsmeow/binary/armadillo/waCommon" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "embed" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ExtendedContentMessage_OverlayIconGlyph int32 + +const ( + ExtendedContentMessage_INFO ExtendedContentMessage_OverlayIconGlyph = 0 + ExtendedContentMessage_EYE_OFF ExtendedContentMessage_OverlayIconGlyph = 1 + ExtendedContentMessage_NEWS_OFF ExtendedContentMessage_OverlayIconGlyph = 2 + ExtendedContentMessage_WARNING ExtendedContentMessage_OverlayIconGlyph = 3 + ExtendedContentMessage_PRIVATE ExtendedContentMessage_OverlayIconGlyph = 4 + ExtendedContentMessage_NONE ExtendedContentMessage_OverlayIconGlyph = 5 + ExtendedContentMessage_MEDIA_LABEL ExtendedContentMessage_OverlayIconGlyph = 6 + ExtendedContentMessage_POST_COVER ExtendedContentMessage_OverlayIconGlyph = 7 + ExtendedContentMessage_POST_LABEL ExtendedContentMessage_OverlayIconGlyph = 8 + ExtendedContentMessage_WARNING_SCREENS ExtendedContentMessage_OverlayIconGlyph = 9 +) + +// Enum value maps for ExtendedContentMessage_OverlayIconGlyph. +var ( + ExtendedContentMessage_OverlayIconGlyph_name = map[int32]string{ + 0: "INFO", + 1: "EYE_OFF", + 2: "NEWS_OFF", + 3: "WARNING", + 4: "PRIVATE", + 5: "NONE", + 6: "MEDIA_LABEL", + 7: "POST_COVER", + 8: "POST_LABEL", + 9: "WARNING_SCREENS", + } + ExtendedContentMessage_OverlayIconGlyph_value = map[string]int32{ + "INFO": 0, + "EYE_OFF": 1, + "NEWS_OFF": 2, + "WARNING": 3, + "PRIVATE": 4, + "NONE": 5, + "MEDIA_LABEL": 6, + "POST_COVER": 7, + "POST_LABEL": 8, + "WARNING_SCREENS": 9, + } +) + +func (x ExtendedContentMessage_OverlayIconGlyph) Enum() *ExtendedContentMessage_OverlayIconGlyph { + p := new(ExtendedContentMessage_OverlayIconGlyph) + *p = x + return p +} + +func (x ExtendedContentMessage_OverlayIconGlyph) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExtendedContentMessage_OverlayIconGlyph) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloXMA_WAArmadilloXMA_proto_enumTypes[0].Descriptor() +} + +func (ExtendedContentMessage_OverlayIconGlyph) Type() protoreflect.EnumType { + return &file_waArmadilloXMA_WAArmadilloXMA_proto_enumTypes[0] +} + +func (x ExtendedContentMessage_OverlayIconGlyph) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExtendedContentMessage_OverlayIconGlyph.Descriptor instead. +func (ExtendedContentMessage_OverlayIconGlyph) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescGZIP(), []int{0, 0} +} + +type ExtendedContentMessage_CtaButtonType int32 + +const ( + ExtendedContentMessage_CTABUTTONTYPE_UNKNOWN ExtendedContentMessage_CtaButtonType = 0 + ExtendedContentMessage_OPEN_NATIVE ExtendedContentMessage_CtaButtonType = 11 +) + +// Enum value maps for ExtendedContentMessage_CtaButtonType. +var ( + ExtendedContentMessage_CtaButtonType_name = map[int32]string{ + 0: "CTABUTTONTYPE_UNKNOWN", + 11: "OPEN_NATIVE", + } + ExtendedContentMessage_CtaButtonType_value = map[string]int32{ + "CTABUTTONTYPE_UNKNOWN": 0, + "OPEN_NATIVE": 11, + } +) + +func (x ExtendedContentMessage_CtaButtonType) Enum() *ExtendedContentMessage_CtaButtonType { + p := new(ExtendedContentMessage_CtaButtonType) + *p = x + return p +} + +func (x ExtendedContentMessage_CtaButtonType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExtendedContentMessage_CtaButtonType) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloXMA_WAArmadilloXMA_proto_enumTypes[1].Descriptor() +} + +func (ExtendedContentMessage_CtaButtonType) Type() protoreflect.EnumType { + return &file_waArmadilloXMA_WAArmadilloXMA_proto_enumTypes[1] +} + +func (x ExtendedContentMessage_CtaButtonType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExtendedContentMessage_CtaButtonType.Descriptor instead. +func (ExtendedContentMessage_CtaButtonType) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescGZIP(), []int{0, 1} +} + +type ExtendedContentMessage_XmaLayoutType int32 + +const ( + ExtendedContentMessage_SINGLE ExtendedContentMessage_XmaLayoutType = 0 + ExtendedContentMessage_PORTRAIT ExtendedContentMessage_XmaLayoutType = 3 + ExtendedContentMessage_STANDARD_DXMA ExtendedContentMessage_XmaLayoutType = 12 + ExtendedContentMessage_LIST_DXMA ExtendedContentMessage_XmaLayoutType = 15 +) + +// Enum value maps for ExtendedContentMessage_XmaLayoutType. +var ( + ExtendedContentMessage_XmaLayoutType_name = map[int32]string{ + 0: "SINGLE", + 3: "PORTRAIT", + 12: "STANDARD_DXMA", + 15: "LIST_DXMA", + } + ExtendedContentMessage_XmaLayoutType_value = map[string]int32{ + "SINGLE": 0, + "PORTRAIT": 3, + "STANDARD_DXMA": 12, + "LIST_DXMA": 15, + } +) + +func (x ExtendedContentMessage_XmaLayoutType) Enum() *ExtendedContentMessage_XmaLayoutType { + p := new(ExtendedContentMessage_XmaLayoutType) + *p = x + return p +} + +func (x ExtendedContentMessage_XmaLayoutType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExtendedContentMessage_XmaLayoutType) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloXMA_WAArmadilloXMA_proto_enumTypes[2].Descriptor() +} + +func (ExtendedContentMessage_XmaLayoutType) Type() protoreflect.EnumType { + return &file_waArmadilloXMA_WAArmadilloXMA_proto_enumTypes[2] +} + +func (x ExtendedContentMessage_XmaLayoutType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExtendedContentMessage_XmaLayoutType.Descriptor instead. +func (ExtendedContentMessage_XmaLayoutType) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescGZIP(), []int{0, 2} +} + +type ExtendedContentMessage_ExtendedContentType int32 + +const ( + ExtendedContentMessage_EXTENDEDCONTENTTYPE_UNKNOWN ExtendedContentMessage_ExtendedContentType = 0 + ExtendedContentMessage_IG_STORY_PHOTO_MENTION ExtendedContentMessage_ExtendedContentType = 4 + ExtendedContentMessage_IG_SINGLE_IMAGE_POST_SHARE ExtendedContentMessage_ExtendedContentType = 9 + ExtendedContentMessage_IG_MULTIPOST_SHARE ExtendedContentMessage_ExtendedContentType = 10 + ExtendedContentMessage_IG_SINGLE_VIDEO_POST_SHARE ExtendedContentMessage_ExtendedContentType = 11 + ExtendedContentMessage_IG_STORY_PHOTO_SHARE ExtendedContentMessage_ExtendedContentType = 12 + ExtendedContentMessage_IG_STORY_VIDEO_SHARE ExtendedContentMessage_ExtendedContentType = 13 + ExtendedContentMessage_IG_CLIPS_SHARE ExtendedContentMessage_ExtendedContentType = 14 + ExtendedContentMessage_IG_IGTV_SHARE ExtendedContentMessage_ExtendedContentType = 15 + ExtendedContentMessage_IG_SHOP_SHARE ExtendedContentMessage_ExtendedContentType = 16 + ExtendedContentMessage_IG_PROFILE_SHARE ExtendedContentMessage_ExtendedContentType = 19 + ExtendedContentMessage_IG_STORY_PHOTO_HIGHLIGHT_SHARE ExtendedContentMessage_ExtendedContentType = 20 + ExtendedContentMessage_IG_STORY_VIDEO_HIGHLIGHT_SHARE ExtendedContentMessage_ExtendedContentType = 21 + ExtendedContentMessage_IG_STORY_REPLY ExtendedContentMessage_ExtendedContentType = 22 + ExtendedContentMessage_IG_STORY_REACTION ExtendedContentMessage_ExtendedContentType = 23 + ExtendedContentMessage_IG_STORY_VIDEO_MENTION ExtendedContentMessage_ExtendedContentType = 24 + ExtendedContentMessage_IG_STORY_HIGHLIGHT_REPLY ExtendedContentMessage_ExtendedContentType = 25 + ExtendedContentMessage_IG_STORY_HIGHLIGHT_REACTION ExtendedContentMessage_ExtendedContentType = 26 + ExtendedContentMessage_IG_EXTERNAL_LINK ExtendedContentMessage_ExtendedContentType = 27 + ExtendedContentMessage_IG_RECEIVER_FETCH ExtendedContentMessage_ExtendedContentType = 28 + ExtendedContentMessage_FB_FEED_SHARE ExtendedContentMessage_ExtendedContentType = 1000 + ExtendedContentMessage_FB_STORY_REPLY ExtendedContentMessage_ExtendedContentType = 1001 + ExtendedContentMessage_FB_STORY_SHARE ExtendedContentMessage_ExtendedContentType = 1002 + ExtendedContentMessage_FB_STORY_MENTION ExtendedContentMessage_ExtendedContentType = 1003 + ExtendedContentMessage_FB_FEED_VIDEO_SHARE ExtendedContentMessage_ExtendedContentType = 1004 + ExtendedContentMessage_FB_GAMING_CUSTOM_UPDATE ExtendedContentMessage_ExtendedContentType = 1005 + ExtendedContentMessage_FB_PRODUCER_STORY_REPLY ExtendedContentMessage_ExtendedContentType = 1006 + ExtendedContentMessage_FB_EVENT ExtendedContentMessage_ExtendedContentType = 1007 + ExtendedContentMessage_FB_FEED_POST_PRIVATE_REPLY ExtendedContentMessage_ExtendedContentType = 1008 + ExtendedContentMessage_FB_SHORT ExtendedContentMessage_ExtendedContentType = 1009 + ExtendedContentMessage_FB_COMMENT_MENTION_SHARE ExtendedContentMessage_ExtendedContentType = 1010 + ExtendedContentMessage_MSG_EXTERNAL_LINK_SHARE ExtendedContentMessage_ExtendedContentType = 2000 + ExtendedContentMessage_MSG_P2P_PAYMENT ExtendedContentMessage_ExtendedContentType = 2001 + ExtendedContentMessage_MSG_LOCATION_SHARING ExtendedContentMessage_ExtendedContentType = 2002 + ExtendedContentMessage_MSG_LOCATION_SHARING_V2 ExtendedContentMessage_ExtendedContentType = 2003 + ExtendedContentMessage_MSG_HIGHLIGHTS_TAB_FRIEND_UPDATES_REPLY ExtendedContentMessage_ExtendedContentType = 2004 + ExtendedContentMessage_MSG_HIGHLIGHTS_TAB_LOCAL_EVENT_REPLY ExtendedContentMessage_ExtendedContentType = 2005 + ExtendedContentMessage_MSG_RECEIVER_FETCH ExtendedContentMessage_ExtendedContentType = 2006 + ExtendedContentMessage_MSG_IG_MEDIA_SHARE ExtendedContentMessage_ExtendedContentType = 2007 + ExtendedContentMessage_MSG_GEN_AI_SEARCH_PLUGIN_RESPONSE ExtendedContentMessage_ExtendedContentType = 2008 + ExtendedContentMessage_MSG_REELS_LIST ExtendedContentMessage_ExtendedContentType = 2009 + ExtendedContentMessage_MSG_CONTACT ExtendedContentMessage_ExtendedContentType = 2010 + ExtendedContentMessage_RTC_AUDIO_CALL ExtendedContentMessage_ExtendedContentType = 3000 + ExtendedContentMessage_RTC_VIDEO_CALL ExtendedContentMessage_ExtendedContentType = 3001 + ExtendedContentMessage_RTC_MISSED_AUDIO_CALL ExtendedContentMessage_ExtendedContentType = 3002 + ExtendedContentMessage_RTC_MISSED_VIDEO_CALL ExtendedContentMessage_ExtendedContentType = 3003 + ExtendedContentMessage_RTC_GROUP_AUDIO_CALL ExtendedContentMessage_ExtendedContentType = 3004 + ExtendedContentMessage_RTC_GROUP_VIDEO_CALL ExtendedContentMessage_ExtendedContentType = 3005 + ExtendedContentMessage_RTC_MISSED_GROUP_AUDIO_CALL ExtendedContentMessage_ExtendedContentType = 3006 + ExtendedContentMessage_RTC_MISSED_GROUP_VIDEO_CALL ExtendedContentMessage_ExtendedContentType = 3007 + ExtendedContentMessage_DATACLASS_SENDER_COPY ExtendedContentMessage_ExtendedContentType = 4000 +) + +// Enum value maps for ExtendedContentMessage_ExtendedContentType. +var ( + ExtendedContentMessage_ExtendedContentType_name = map[int32]string{ + 0: "EXTENDEDCONTENTTYPE_UNKNOWN", + 4: "IG_STORY_PHOTO_MENTION", + 9: "IG_SINGLE_IMAGE_POST_SHARE", + 10: "IG_MULTIPOST_SHARE", + 11: "IG_SINGLE_VIDEO_POST_SHARE", + 12: "IG_STORY_PHOTO_SHARE", + 13: "IG_STORY_VIDEO_SHARE", + 14: "IG_CLIPS_SHARE", + 15: "IG_IGTV_SHARE", + 16: "IG_SHOP_SHARE", + 19: "IG_PROFILE_SHARE", + 20: "IG_STORY_PHOTO_HIGHLIGHT_SHARE", + 21: "IG_STORY_VIDEO_HIGHLIGHT_SHARE", + 22: "IG_STORY_REPLY", + 23: "IG_STORY_REACTION", + 24: "IG_STORY_VIDEO_MENTION", + 25: "IG_STORY_HIGHLIGHT_REPLY", + 26: "IG_STORY_HIGHLIGHT_REACTION", + 27: "IG_EXTERNAL_LINK", + 28: "IG_RECEIVER_FETCH", + 1000: "FB_FEED_SHARE", + 1001: "FB_STORY_REPLY", + 1002: "FB_STORY_SHARE", + 1003: "FB_STORY_MENTION", + 1004: "FB_FEED_VIDEO_SHARE", + 1005: "FB_GAMING_CUSTOM_UPDATE", + 1006: "FB_PRODUCER_STORY_REPLY", + 1007: "FB_EVENT", + 1008: "FB_FEED_POST_PRIVATE_REPLY", + 1009: "FB_SHORT", + 1010: "FB_COMMENT_MENTION_SHARE", + 2000: "MSG_EXTERNAL_LINK_SHARE", + 2001: "MSG_P2P_PAYMENT", + 2002: "MSG_LOCATION_SHARING", + 2003: "MSG_LOCATION_SHARING_V2", + 2004: "MSG_HIGHLIGHTS_TAB_FRIEND_UPDATES_REPLY", + 2005: "MSG_HIGHLIGHTS_TAB_LOCAL_EVENT_REPLY", + 2006: "MSG_RECEIVER_FETCH", + 2007: "MSG_IG_MEDIA_SHARE", + 2008: "MSG_GEN_AI_SEARCH_PLUGIN_RESPONSE", + 2009: "MSG_REELS_LIST", + 2010: "MSG_CONTACT", + 3000: "RTC_AUDIO_CALL", + 3001: "RTC_VIDEO_CALL", + 3002: "RTC_MISSED_AUDIO_CALL", + 3003: "RTC_MISSED_VIDEO_CALL", + 3004: "RTC_GROUP_AUDIO_CALL", + 3005: "RTC_GROUP_VIDEO_CALL", + 3006: "RTC_MISSED_GROUP_AUDIO_CALL", + 3007: "RTC_MISSED_GROUP_VIDEO_CALL", + 4000: "DATACLASS_SENDER_COPY", + } + ExtendedContentMessage_ExtendedContentType_value = map[string]int32{ + "EXTENDEDCONTENTTYPE_UNKNOWN": 0, + "IG_STORY_PHOTO_MENTION": 4, + "IG_SINGLE_IMAGE_POST_SHARE": 9, + "IG_MULTIPOST_SHARE": 10, + "IG_SINGLE_VIDEO_POST_SHARE": 11, + "IG_STORY_PHOTO_SHARE": 12, + "IG_STORY_VIDEO_SHARE": 13, + "IG_CLIPS_SHARE": 14, + "IG_IGTV_SHARE": 15, + "IG_SHOP_SHARE": 16, + "IG_PROFILE_SHARE": 19, + "IG_STORY_PHOTO_HIGHLIGHT_SHARE": 20, + "IG_STORY_VIDEO_HIGHLIGHT_SHARE": 21, + "IG_STORY_REPLY": 22, + "IG_STORY_REACTION": 23, + "IG_STORY_VIDEO_MENTION": 24, + "IG_STORY_HIGHLIGHT_REPLY": 25, + "IG_STORY_HIGHLIGHT_REACTION": 26, + "IG_EXTERNAL_LINK": 27, + "IG_RECEIVER_FETCH": 28, + "FB_FEED_SHARE": 1000, + "FB_STORY_REPLY": 1001, + "FB_STORY_SHARE": 1002, + "FB_STORY_MENTION": 1003, + "FB_FEED_VIDEO_SHARE": 1004, + "FB_GAMING_CUSTOM_UPDATE": 1005, + "FB_PRODUCER_STORY_REPLY": 1006, + "FB_EVENT": 1007, + "FB_FEED_POST_PRIVATE_REPLY": 1008, + "FB_SHORT": 1009, + "FB_COMMENT_MENTION_SHARE": 1010, + "MSG_EXTERNAL_LINK_SHARE": 2000, + "MSG_P2P_PAYMENT": 2001, + "MSG_LOCATION_SHARING": 2002, + "MSG_LOCATION_SHARING_V2": 2003, + "MSG_HIGHLIGHTS_TAB_FRIEND_UPDATES_REPLY": 2004, + "MSG_HIGHLIGHTS_TAB_LOCAL_EVENT_REPLY": 2005, + "MSG_RECEIVER_FETCH": 2006, + "MSG_IG_MEDIA_SHARE": 2007, + "MSG_GEN_AI_SEARCH_PLUGIN_RESPONSE": 2008, + "MSG_REELS_LIST": 2009, + "MSG_CONTACT": 2010, + "RTC_AUDIO_CALL": 3000, + "RTC_VIDEO_CALL": 3001, + "RTC_MISSED_AUDIO_CALL": 3002, + "RTC_MISSED_VIDEO_CALL": 3003, + "RTC_GROUP_AUDIO_CALL": 3004, + "RTC_GROUP_VIDEO_CALL": 3005, + "RTC_MISSED_GROUP_AUDIO_CALL": 3006, + "RTC_MISSED_GROUP_VIDEO_CALL": 3007, + "DATACLASS_SENDER_COPY": 4000, + } +) + +func (x ExtendedContentMessage_ExtendedContentType) Enum() *ExtendedContentMessage_ExtendedContentType { + p := new(ExtendedContentMessage_ExtendedContentType) + *p = x + return p +} + +func (x ExtendedContentMessage_ExtendedContentType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExtendedContentMessage_ExtendedContentType) Descriptor() protoreflect.EnumDescriptor { + return file_waArmadilloXMA_WAArmadilloXMA_proto_enumTypes[3].Descriptor() +} + +func (ExtendedContentMessage_ExtendedContentType) Type() protoreflect.EnumType { + return &file_waArmadilloXMA_WAArmadilloXMA_proto_enumTypes[3] +} + +func (x ExtendedContentMessage_ExtendedContentType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExtendedContentMessage_ExtendedContentType.Descriptor instead. +func (ExtendedContentMessage_ExtendedContentType) EnumDescriptor() ([]byte, []int) { + return file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescGZIP(), []int{0, 3} +} + +type ExtendedContentMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AssociatedMessage *waCommon.SubProtocol `protobuf:"bytes,1,opt,name=associatedMessage,proto3" json:"associatedMessage,omitempty"` + TargetType ExtendedContentMessage_ExtendedContentType `protobuf:"varint,2,opt,name=targetType,proto3,enum=WAArmadilloXMA.ExtendedContentMessage_ExtendedContentType" json:"targetType,omitempty"` + TargetUsername string `protobuf:"bytes,3,opt,name=targetUsername,proto3" json:"targetUsername,omitempty"` + TargetID string `protobuf:"bytes,4,opt,name=targetID,proto3" json:"targetID,omitempty"` + TargetExpiringAtSec int64 `protobuf:"varint,5,opt,name=targetExpiringAtSec,proto3" json:"targetExpiringAtSec,omitempty"` + XmaLayoutType ExtendedContentMessage_XmaLayoutType `protobuf:"varint,6,opt,name=xmaLayoutType,proto3,enum=WAArmadilloXMA.ExtendedContentMessage_XmaLayoutType" json:"xmaLayoutType,omitempty"` + Ctas []*ExtendedContentMessage_CTA `protobuf:"bytes,7,rep,name=ctas,proto3" json:"ctas,omitempty"` + Previews []*waCommon.SubProtocol `protobuf:"bytes,8,rep,name=previews,proto3" json:"previews,omitempty"` + TitleText string `protobuf:"bytes,9,opt,name=titleText,proto3" json:"titleText,omitempty"` + SubtitleText string `protobuf:"bytes,10,opt,name=subtitleText,proto3" json:"subtitleText,omitempty"` + MaxTitleNumOfLines uint32 `protobuf:"varint,11,opt,name=maxTitleNumOfLines,proto3" json:"maxTitleNumOfLines,omitempty"` + MaxSubtitleNumOfLines uint32 `protobuf:"varint,12,opt,name=maxSubtitleNumOfLines,proto3" json:"maxSubtitleNumOfLines,omitempty"` + Favicon *waCommon.SubProtocol `protobuf:"bytes,13,opt,name=favicon,proto3" json:"favicon,omitempty"` + HeaderImage *waCommon.SubProtocol `protobuf:"bytes,14,opt,name=headerImage,proto3" json:"headerImage,omitempty"` + HeaderTitle string `protobuf:"bytes,15,opt,name=headerTitle,proto3" json:"headerTitle,omitempty"` + OverlayIconGlyph ExtendedContentMessage_OverlayIconGlyph `protobuf:"varint,16,opt,name=overlayIconGlyph,proto3,enum=WAArmadilloXMA.ExtendedContentMessage_OverlayIconGlyph" json:"overlayIconGlyph,omitempty"` + OverlayTitle string `protobuf:"bytes,17,opt,name=overlayTitle,proto3" json:"overlayTitle,omitempty"` + OverlayDescription string `protobuf:"bytes,18,opt,name=overlayDescription,proto3" json:"overlayDescription,omitempty"` + SentWithMessageID string `protobuf:"bytes,19,opt,name=sentWithMessageID,proto3" json:"sentWithMessageID,omitempty"` + MessageText string `protobuf:"bytes,20,opt,name=messageText,proto3" json:"messageText,omitempty"` + HeaderSubtitle string `protobuf:"bytes,21,opt,name=headerSubtitle,proto3" json:"headerSubtitle,omitempty"` + XmaDataclass string `protobuf:"bytes,22,opt,name=xmaDataclass,proto3" json:"xmaDataclass,omitempty"` + ContentRef string `protobuf:"bytes,23,opt,name=contentRef,proto3" json:"contentRef,omitempty"` +} + +func (x *ExtendedContentMessage) Reset() { + *x = ExtendedContentMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloXMA_WAArmadilloXMA_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExtendedContentMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtendedContentMessage) ProtoMessage() {} + +func (x *ExtendedContentMessage) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloXMA_WAArmadilloXMA_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtendedContentMessage.ProtoReflect.Descriptor instead. +func (*ExtendedContentMessage) Descriptor() ([]byte, []int) { + return file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescGZIP(), []int{0} +} + +func (x *ExtendedContentMessage) GetAssociatedMessage() *waCommon.SubProtocol { + if x != nil { + return x.AssociatedMessage + } + return nil +} + +func (x *ExtendedContentMessage) GetTargetType() ExtendedContentMessage_ExtendedContentType { + if x != nil { + return x.TargetType + } + return ExtendedContentMessage_EXTENDEDCONTENTTYPE_UNKNOWN +} + +func (x *ExtendedContentMessage) GetTargetUsername() string { + if x != nil { + return x.TargetUsername + } + return "" +} + +func (x *ExtendedContentMessage) GetTargetID() string { + if x != nil { + return x.TargetID + } + return "" +} + +func (x *ExtendedContentMessage) GetTargetExpiringAtSec() int64 { + if x != nil { + return x.TargetExpiringAtSec + } + return 0 +} + +func (x *ExtendedContentMessage) GetXmaLayoutType() ExtendedContentMessage_XmaLayoutType { + if x != nil { + return x.XmaLayoutType + } + return ExtendedContentMessage_SINGLE +} + +func (x *ExtendedContentMessage) GetCtas() []*ExtendedContentMessage_CTA { + if x != nil { + return x.Ctas + } + return nil +} + +func (x *ExtendedContentMessage) GetPreviews() []*waCommon.SubProtocol { + if x != nil { + return x.Previews + } + return nil +} + +func (x *ExtendedContentMessage) GetTitleText() string { + if x != nil { + return x.TitleText + } + return "" +} + +func (x *ExtendedContentMessage) GetSubtitleText() string { + if x != nil { + return x.SubtitleText + } + return "" +} + +func (x *ExtendedContentMessage) GetMaxTitleNumOfLines() uint32 { + if x != nil { + return x.MaxTitleNumOfLines + } + return 0 +} + +func (x *ExtendedContentMessage) GetMaxSubtitleNumOfLines() uint32 { + if x != nil { + return x.MaxSubtitleNumOfLines + } + return 0 +} + +func (x *ExtendedContentMessage) GetFavicon() *waCommon.SubProtocol { + if x != nil { + return x.Favicon + } + return nil +} + +func (x *ExtendedContentMessage) GetHeaderImage() *waCommon.SubProtocol { + if x != nil { + return x.HeaderImage + } + return nil +} + +func (x *ExtendedContentMessage) GetHeaderTitle() string { + if x != nil { + return x.HeaderTitle + } + return "" +} + +func (x *ExtendedContentMessage) GetOverlayIconGlyph() ExtendedContentMessage_OverlayIconGlyph { + if x != nil { + return x.OverlayIconGlyph + } + return ExtendedContentMessage_INFO +} + +func (x *ExtendedContentMessage) GetOverlayTitle() string { + if x != nil { + return x.OverlayTitle + } + return "" +} + +func (x *ExtendedContentMessage) GetOverlayDescription() string { + if x != nil { + return x.OverlayDescription + } + return "" +} + +func (x *ExtendedContentMessage) GetSentWithMessageID() string { + if x != nil { + return x.SentWithMessageID + } + return "" +} + +func (x *ExtendedContentMessage) GetMessageText() string { + if x != nil { + return x.MessageText + } + return "" +} + +func (x *ExtendedContentMessage) GetHeaderSubtitle() string { + if x != nil { + return x.HeaderSubtitle + } + return "" +} + +func (x *ExtendedContentMessage) GetXmaDataclass() string { + if x != nil { + return x.XmaDataclass + } + return "" +} + +func (x *ExtendedContentMessage) GetContentRef() string { + if x != nil { + return x.ContentRef + } + return "" +} + +type ExtendedContentMessage_CTA struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ButtonType ExtendedContentMessage_CtaButtonType `protobuf:"varint,1,opt,name=buttonType,proto3,enum=WAArmadilloXMA.ExtendedContentMessage_CtaButtonType" json:"buttonType,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + ActionURL string `protobuf:"bytes,3,opt,name=actionURL,proto3" json:"actionURL,omitempty"` + NativeURL string `protobuf:"bytes,4,opt,name=nativeURL,proto3" json:"nativeURL,omitempty"` + CtaType string `protobuf:"bytes,5,opt,name=ctaType,proto3" json:"ctaType,omitempty"` +} + +func (x *ExtendedContentMessage_CTA) Reset() { + *x = ExtendedContentMessage_CTA{} + if protoimpl.UnsafeEnabled { + mi := &file_waArmadilloXMA_WAArmadilloXMA_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExtendedContentMessage_CTA) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtendedContentMessage_CTA) ProtoMessage() {} + +func (x *ExtendedContentMessage_CTA) ProtoReflect() protoreflect.Message { + mi := &file_waArmadilloXMA_WAArmadilloXMA_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtendedContentMessage_CTA.ProtoReflect.Descriptor instead. +func (*ExtendedContentMessage_CTA) Descriptor() ([]byte, []int) { + return file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *ExtendedContentMessage_CTA) GetButtonType() ExtendedContentMessage_CtaButtonType { + if x != nil { + return x.ButtonType + } + return ExtendedContentMessage_CTABUTTONTYPE_UNKNOWN +} + +func (x *ExtendedContentMessage_CTA) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *ExtendedContentMessage_CTA) GetActionURL() string { + if x != nil { + return x.ActionURL + } + return "" +} + +func (x *ExtendedContentMessage_CTA) GetNativeURL() string { + if x != nil { + return x.NativeURL + } + return "" +} + +func (x *ExtendedContentMessage_CTA) GetCtaType() string { + if x != nil { + return x.CtaType + } + return "" +} + +var File_waArmadilloXMA_WAArmadilloXMA_proto protoreflect.FileDescriptor + +//go:embed WAArmadilloXMA.pb.raw +var file_waArmadilloXMA_WAArmadilloXMA_proto_rawDesc []byte + +var ( + file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescOnce sync.Once + file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescData = file_waArmadilloXMA_WAArmadilloXMA_proto_rawDesc +) + +func file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescGZIP() []byte { + file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescOnce.Do(func() { + file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescData = protoimpl.X.CompressGZIP(file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescData) + }) + return file_waArmadilloXMA_WAArmadilloXMA_proto_rawDescData +} + +var file_waArmadilloXMA_WAArmadilloXMA_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_waArmadilloXMA_WAArmadilloXMA_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_waArmadilloXMA_WAArmadilloXMA_proto_goTypes = []interface{}{ + (ExtendedContentMessage_OverlayIconGlyph)(0), // 0: WAArmadilloXMA.ExtendedContentMessage.OverlayIconGlyph + (ExtendedContentMessage_CtaButtonType)(0), // 1: WAArmadilloXMA.ExtendedContentMessage.CtaButtonType + (ExtendedContentMessage_XmaLayoutType)(0), // 2: WAArmadilloXMA.ExtendedContentMessage.XmaLayoutType + (ExtendedContentMessage_ExtendedContentType)(0), // 3: WAArmadilloXMA.ExtendedContentMessage.ExtendedContentType + (*ExtendedContentMessage)(nil), // 4: WAArmadilloXMA.ExtendedContentMessage + (*ExtendedContentMessage_CTA)(nil), // 5: WAArmadilloXMA.ExtendedContentMessage.CTA + (*waCommon.SubProtocol)(nil), // 6: WACommon.SubProtocol +} +var file_waArmadilloXMA_WAArmadilloXMA_proto_depIdxs = []int32{ + 6, // 0: WAArmadilloXMA.ExtendedContentMessage.associatedMessage:type_name -> WACommon.SubProtocol + 3, // 1: WAArmadilloXMA.ExtendedContentMessage.targetType:type_name -> WAArmadilloXMA.ExtendedContentMessage.ExtendedContentType + 2, // 2: WAArmadilloXMA.ExtendedContentMessage.xmaLayoutType:type_name -> WAArmadilloXMA.ExtendedContentMessage.XmaLayoutType + 5, // 3: WAArmadilloXMA.ExtendedContentMessage.ctas:type_name -> WAArmadilloXMA.ExtendedContentMessage.CTA + 6, // 4: WAArmadilloXMA.ExtendedContentMessage.previews:type_name -> WACommon.SubProtocol + 6, // 5: WAArmadilloXMA.ExtendedContentMessage.favicon:type_name -> WACommon.SubProtocol + 6, // 6: WAArmadilloXMA.ExtendedContentMessage.headerImage:type_name -> WACommon.SubProtocol + 0, // 7: WAArmadilloXMA.ExtendedContentMessage.overlayIconGlyph:type_name -> WAArmadilloXMA.ExtendedContentMessage.OverlayIconGlyph + 1, // 8: WAArmadilloXMA.ExtendedContentMessage.CTA.buttonType:type_name -> WAArmadilloXMA.ExtendedContentMessage.CtaButtonType + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name +} + +func init() { file_waArmadilloXMA_WAArmadilloXMA_proto_init() } +func file_waArmadilloXMA_WAArmadilloXMA_proto_init() { + if File_waArmadilloXMA_WAArmadilloXMA_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_waArmadilloXMA_WAArmadilloXMA_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExtendedContentMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waArmadilloXMA_WAArmadilloXMA_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExtendedContentMessage_CTA); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_waArmadilloXMA_WAArmadilloXMA_proto_rawDesc, + NumEnums: 4, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_waArmadilloXMA_WAArmadilloXMA_proto_goTypes, + DependencyIndexes: file_waArmadilloXMA_WAArmadilloXMA_proto_depIdxs, + EnumInfos: file_waArmadilloXMA_WAArmadilloXMA_proto_enumTypes, + MessageInfos: file_waArmadilloXMA_WAArmadilloXMA_proto_msgTypes, + }.Build() + File_waArmadilloXMA_WAArmadilloXMA_proto = out.File + file_waArmadilloXMA_WAArmadilloXMA_proto_rawDesc = nil + file_waArmadilloXMA_WAArmadilloXMA_proto_goTypes = nil + file_waArmadilloXMA_WAArmadilloXMA_proto_depIdxs = nil +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloXMA/WAArmadilloXMA.pb.raw b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waArmadilloXMA/WAArmadilloXMA.pb.raw new file mode 100644 index 0000000000000000000000000000000000000000..54a8394315eb21612e3a19586b0f956b356e2c3e GIT binary patch literal 3235 zcma)9+iu%N5Upd!l2(?uURxHUq)F-)y`ivMCq;l3C_qyynFvJ^OG=LOLeMg86Ocqh zqHo{PA87xg_dfQu_uCir-lkvB*(D`YvQqfLfcMNfvoo_ZLkK;8>M8xMw-Ye)Ss3Q2Jst&~qaHSBi79?;`|V&dw%GFqW$k>A_%_tdZl|3nRcFz^n1qM}7_ zFbLa$7x{Y$D9_xTc{#sPS{u2sk9RG8WjpM!%Y5<}p~&kW_>psd%Zi zLPy>}*`vOH68NVBIV*fT<)ub6atr06AnN#ze-_C(QJo8btfGa%@$Lly3Bnjg))47> zXAXB_9CyuqJ?QxZISLBuEn|&jn_t>P23=13N`t5v(zc+(rnB$rljw_vNx+ zq>#!NGiVk%oj3^X9!F8w6B~u^qvFO@hfj^X&5@R+{E%gIU9_WEQ8^YL_;7e_UehMi zljU*&aBI(tf)k%x~-Y9@Y$Uf?M5wc9% zaaFTL8P1H(u{}$ckd!!eZIw}K*f_WPHY$u2i`+mZsQzZtaZJP6v8dZL9vbGh0Rh8} zrbP|cP#mpAaenn7DvYf;g3!DTLF*LQkdb9Fhbfu^Ni3p*?I=c7VO6&ZpEJBb3Mi** z5U)5&t4|PGn(`$echF7x$e~7+R#gaz8qP#m6||z&UE49)j%#h1j_Edlq?rbk>o%%z zn~2HP8cLnIqDJ6-2<^XzGrZ!qK>{rB$h!*5%>RmnZIwJuZw{Vqt745Q2)J zQFYC--54wKvH+&lomK)#31n}XRsvyYS_~|UnKezP3AzNsc6%a*Ev>$#!=ICImd7}8 zG?ScC5?5S5MlF2@uaFX29QkHcQAIh+@P)l7b?k0fY8j?P9!V}Pi5=eHuQ=73xUM8Q z@|R|YqPx0gJj6GXI2ctabR2VQ)KRzaEeN?#+k_LXCYk<{f%Yx}mQLf>aWJm=Zy9ik zN6caTzh~g(mWEE#5BEm~QY(X{t~8*JT(t>zG~A|D3_xD4ZH4+l`XM; zDM3voZnZWn*HU)42mF-;6TZw*-Be+YO+(Q6rukapiB2=QtquH*1YebxxOMcnwhN2G ztuYOTGpUE2B=W69UO_KRVe?z{xEu-fJBgGL;nay|{(fYD&WTrD{DeP9@IiWxE9$U~ z6wS4%!qhF-(wlY705`T}8aBm0O1vpz&s4Xer)&rRBoPdo6U2O*K>OjJ1&ukXt2C>c z=|X@y{-DgY9E^KGfFJS+C~>f%*)}v^O7PL7Ev5Uo%!|%-b!IlLwCs}!Q%dz|8NSRn zQ@33be>R WACert.CertChain.NoiseCertificate + 3, // 1: WACert.CertChain.intermediate:type_name -> WACert.CertChain.NoiseCertificate + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_waCert_WACert_proto_init() } +func file_waCert_WACert_proto_init() { + if File_waCert_WACert_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_waCert_WACert_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NoiseCertificate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waCert_WACert_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CertChain); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waCert_WACert_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NoiseCertificate_Details); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waCert_WACert_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CertChain_NoiseCertificate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waCert_WACert_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CertChain_NoiseCertificate_Details); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_waCert_WACert_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_waCert_WACert_proto_goTypes, + DependencyIndexes: file_waCert_WACert_proto_depIdxs, + MessageInfos: file_waCert_WACert_proto_msgTypes, + }.Build() + File_waCert_WACert_proto = out.File + file_waCert_WACert_proto_rawDesc = nil + file_waCert_WACert_proto_goTypes = nil + file_waCert_WACert_proto_depIdxs = nil +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waCert/WACert.pb.raw b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waCert/WACert.pb.raw new file mode 100644 index 00000000..dbce5c5f --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waCert/WACert.pb.raw @@ -0,0 +1,23 @@ + +waCert/WACert.protoWACert"Ë +NoiseCertificate +details ( Rdetails + signature ( R signature +Details +serial ( Rserial +issuer ( Rissuer +expires (Rexpires +subject ( Rsubject +key ( Rkey"ì + CertChain6 +leaf ( 2".WACert.CertChain.NoiseCertificateRleafF + intermediate ( 2".WACert.CertChain.NoiseCertificateR intermediateÞ +NoiseCertificate +details ( Rdetails + signature ( R signature‘ +Details +serial ( Rserial" + issuerSerial ( R issuerSerial +key ( Rkey + notBefore (R notBefore +notAfter (RnotAfterB-Z+go.mau.fi/whatsmeow/binary/armadillo/waCertbproto3 \ No newline at end of file diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waCert/WACert.proto b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waCert/WACert.proto new file mode 100644 index 00000000..1edb06c9 --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waCert/WACert.proto @@ -0,0 +1,34 @@ +syntax = "proto3"; +package WACert; +option go_package = "go.mau.fi/whatsmeow/binary/armadillo/waCert"; + +message NoiseCertificate { + message Details { + uint32 serial = 1; + string issuer = 2; + uint64 expires = 3; + string subject = 4; + bytes key = 5; + } + + bytes details = 1; + bytes signature = 2; +} + +message CertChain { + message NoiseCertificate { + message Details { + uint32 serial = 1; + uint32 issuerSerial = 2; + bytes key = 3; + uint64 notBefore = 4; + uint64 notAfter = 5; + } + + bytes details = 1; + bytes signature = 2; + } + + NoiseCertificate leaf = 1; + NoiseCertificate intermediate = 2; +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waCommon/WACommon.pb.go b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waCommon/WACommon.pb.go new file mode 100644 index 00000000..1224d43a --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waCommon/WACommon.pb.go @@ -0,0 +1,498 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v3.21.12 +// source: waCommon/WACommon.proto + +package waCommon + +import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "embed" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type FutureProofBehavior int32 + +const ( + FutureProofBehavior_PLACEHOLDER FutureProofBehavior = 0 + FutureProofBehavior_NO_PLACEHOLDER FutureProofBehavior = 1 + FutureProofBehavior_IGNORE FutureProofBehavior = 2 +) + +// Enum value maps for FutureProofBehavior. +var ( + FutureProofBehavior_name = map[int32]string{ + 0: "PLACEHOLDER", + 1: "NO_PLACEHOLDER", + 2: "IGNORE", + } + FutureProofBehavior_value = map[string]int32{ + "PLACEHOLDER": 0, + "NO_PLACEHOLDER": 1, + "IGNORE": 2, + } +) + +func (x FutureProofBehavior) Enum() *FutureProofBehavior { + p := new(FutureProofBehavior) + *p = x + return p +} + +func (x FutureProofBehavior) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FutureProofBehavior) Descriptor() protoreflect.EnumDescriptor { + return file_waCommon_WACommon_proto_enumTypes[0].Descriptor() +} + +func (FutureProofBehavior) Type() protoreflect.EnumType { + return &file_waCommon_WACommon_proto_enumTypes[0] +} + +func (x FutureProofBehavior) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FutureProofBehavior.Descriptor instead. +func (FutureProofBehavior) EnumDescriptor() ([]byte, []int) { + return file_waCommon_WACommon_proto_rawDescGZIP(), []int{0} +} + +type Command_CommandType int32 + +const ( + Command_COMMANDTYPE_UNKNOWN Command_CommandType = 0 + Command_EVERYONE Command_CommandType = 1 + Command_SILENT Command_CommandType = 2 + Command_AI Command_CommandType = 3 +) + +// Enum value maps for Command_CommandType. +var ( + Command_CommandType_name = map[int32]string{ + 0: "COMMANDTYPE_UNKNOWN", + 1: "EVERYONE", + 2: "SILENT", + 3: "AI", + } + Command_CommandType_value = map[string]int32{ + "COMMANDTYPE_UNKNOWN": 0, + "EVERYONE": 1, + "SILENT": 2, + "AI": 3, + } +) + +func (x Command_CommandType) Enum() *Command_CommandType { + p := new(Command_CommandType) + *p = x + return p +} + +func (x Command_CommandType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Command_CommandType) Descriptor() protoreflect.EnumDescriptor { + return file_waCommon_WACommon_proto_enumTypes[1].Descriptor() +} + +func (Command_CommandType) Type() protoreflect.EnumType { + return &file_waCommon_WACommon_proto_enumTypes[1] +} + +func (x Command_CommandType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Command_CommandType.Descriptor instead. +func (Command_CommandType) EnumDescriptor() ([]byte, []int) { + return file_waCommon_WACommon_proto_rawDescGZIP(), []int{1, 0} +} + +type MessageKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RemoteJID string `protobuf:"bytes,1,opt,name=remoteJID,proto3" json:"remoteJID,omitempty"` + FromMe bool `protobuf:"varint,2,opt,name=fromMe,proto3" json:"fromMe,omitempty"` + ID string `protobuf:"bytes,3,opt,name=ID,proto3" json:"ID,omitempty"` + Participant string `protobuf:"bytes,4,opt,name=participant,proto3" json:"participant,omitempty"` +} + +func (x *MessageKey) Reset() { + *x = MessageKey{} + if protoimpl.UnsafeEnabled { + mi := &file_waCommon_WACommon_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageKey) ProtoMessage() {} + +func (x *MessageKey) ProtoReflect() protoreflect.Message { + mi := &file_waCommon_WACommon_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MessageKey.ProtoReflect.Descriptor instead. +func (*MessageKey) Descriptor() ([]byte, []int) { + return file_waCommon_WACommon_proto_rawDescGZIP(), []int{0} +} + +func (x *MessageKey) GetRemoteJID() string { + if x != nil { + return x.RemoteJID + } + return "" +} + +func (x *MessageKey) GetFromMe() bool { + if x != nil { + return x.FromMe + } + return false +} + +func (x *MessageKey) GetID() string { + if x != nil { + return x.ID + } + return "" +} + +func (x *MessageKey) GetParticipant() string { + if x != nil { + return x.Participant + } + return "" +} + +type Command struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CommandType Command_CommandType `protobuf:"varint,1,opt,name=commandType,proto3,enum=WACommon.Command_CommandType" json:"commandType,omitempty"` + Offset uint32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + Length uint32 `protobuf:"varint,3,opt,name=length,proto3" json:"length,omitempty"` + ValidationToken string `protobuf:"bytes,4,opt,name=validationToken,proto3" json:"validationToken,omitempty"` +} + +func (x *Command) Reset() { + *x = Command{} + if protoimpl.UnsafeEnabled { + mi := &file_waCommon_WACommon_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Command) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Command) ProtoMessage() {} + +func (x *Command) ProtoReflect() protoreflect.Message { + mi := &file_waCommon_WACommon_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Command.ProtoReflect.Descriptor instead. +func (*Command) Descriptor() ([]byte, []int) { + return file_waCommon_WACommon_proto_rawDescGZIP(), []int{1} +} + +func (x *Command) GetCommandType() Command_CommandType { + if x != nil { + return x.CommandType + } + return Command_COMMANDTYPE_UNKNOWN +} + +func (x *Command) GetOffset() uint32 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *Command) GetLength() uint32 { + if x != nil { + return x.Length + } + return 0 +} + +func (x *Command) GetValidationToken() string { + if x != nil { + return x.ValidationToken + } + return "" +} + +type MessageText struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` + MentionedJID []string `protobuf:"bytes,2,rep,name=mentionedJID,proto3" json:"mentionedJID,omitempty"` + Commands []*Command `protobuf:"bytes,3,rep,name=commands,proto3" json:"commands,omitempty"` +} + +func (x *MessageText) Reset() { + *x = MessageText{} + if protoimpl.UnsafeEnabled { + mi := &file_waCommon_WACommon_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageText) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageText) ProtoMessage() {} + +func (x *MessageText) ProtoReflect() protoreflect.Message { + mi := &file_waCommon_WACommon_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MessageText.ProtoReflect.Descriptor instead. +func (*MessageText) Descriptor() ([]byte, []int) { + return file_waCommon_WACommon_proto_rawDescGZIP(), []int{2} +} + +func (x *MessageText) GetText() string { + if x != nil { + return x.Text + } + return "" +} + +func (x *MessageText) GetMentionedJID() []string { + if x != nil { + return x.MentionedJID + } + return nil +} + +func (x *MessageText) GetCommands() []*Command { + if x != nil { + return x.Commands + } + return nil +} + +type SubProtocol struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + Version int32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` +} + +func (x *SubProtocol) Reset() { + *x = SubProtocol{} + if protoimpl.UnsafeEnabled { + mi := &file_waCommon_WACommon_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubProtocol) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubProtocol) ProtoMessage() {} + +func (x *SubProtocol) ProtoReflect() protoreflect.Message { + mi := &file_waCommon_WACommon_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubProtocol.ProtoReflect.Descriptor instead. +func (*SubProtocol) Descriptor() ([]byte, []int) { + return file_waCommon_WACommon_proto_rawDescGZIP(), []int{3} +} + +func (x *SubProtocol) GetPayload() []byte { + if x != nil { + return x.Payload + } + return nil +} + +func (x *SubProtocol) GetVersion() int32 { + if x != nil { + return x.Version + } + return 0 +} + +var File_waCommon_WACommon_proto protoreflect.FileDescriptor + +//go:embed WACommon.pb.raw +var file_waCommon_WACommon_proto_rawDesc []byte + +var ( + file_waCommon_WACommon_proto_rawDescOnce sync.Once + file_waCommon_WACommon_proto_rawDescData = file_waCommon_WACommon_proto_rawDesc +) + +func file_waCommon_WACommon_proto_rawDescGZIP() []byte { + file_waCommon_WACommon_proto_rawDescOnce.Do(func() { + file_waCommon_WACommon_proto_rawDescData = protoimpl.X.CompressGZIP(file_waCommon_WACommon_proto_rawDescData) + }) + return file_waCommon_WACommon_proto_rawDescData +} + +var file_waCommon_WACommon_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_waCommon_WACommon_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_waCommon_WACommon_proto_goTypes = []interface{}{ + (FutureProofBehavior)(0), // 0: WACommon.FutureProofBehavior + (Command_CommandType)(0), // 1: WACommon.Command.CommandType + (*MessageKey)(nil), // 2: WACommon.MessageKey + (*Command)(nil), // 3: WACommon.Command + (*MessageText)(nil), // 4: WACommon.MessageText + (*SubProtocol)(nil), // 5: WACommon.SubProtocol +} +var file_waCommon_WACommon_proto_depIdxs = []int32{ + 1, // 0: WACommon.Command.commandType:type_name -> WACommon.Command.CommandType + 3, // 1: WACommon.MessageText.commands:type_name -> WACommon.Command + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_waCommon_WACommon_proto_init() } +func file_waCommon_WACommon_proto_init() { + if File_waCommon_WACommon_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_waCommon_WACommon_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waCommon_WACommon_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Command); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waCommon_WACommon_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageText); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waCommon_WACommon_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubProtocol); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_waCommon_WACommon_proto_rawDesc, + NumEnums: 2, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_waCommon_WACommon_proto_goTypes, + DependencyIndexes: file_waCommon_WACommon_proto_depIdxs, + EnumInfos: file_waCommon_WACommon_proto_enumTypes, + MessageInfos: file_waCommon_WACommon_proto_msgTypes, + }.Build() + File_waCommon_WACommon_proto = out.File + file_waCommon_WACommon_proto_rawDesc = nil + file_waCommon_WACommon_proto_goTypes = nil + file_waCommon_WACommon_proto_depIdxs = nil +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waCommon/WACommon.pb.raw b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waCommon/WACommon.pb.raw new file mode 100644 index 0000000000000000000000000000000000000000..ae70e896257d8e7508997ce8b40b7fe0a00a29bf GIT binary patch literal 708 zcmZWn(QcbC6kSM{rk5;buGHpXlOmp?Nd>9RB6WNFGW`_b7CR?eAVs9j@I08D97kR`pRJM;lgI8B+LcjHm7 z(Qgb+@GF7Np%rnKPH9h*t2V9>>VhWaO(mBT>VuvWF5*R;lT7rE)Z&mbe>dQ`3`DXJ zeF1&3AA?;^m23Cvqg5xgDqVe+B7FEn8H+_xL4}I-4p*q;6Phi>N=1|W9-#r8Zb%Y` zM8qr$*iV{O5&xylThJ@_(iL66+0dU(9d8so&D`g2-o58Pdd3^nfwueI#ZSKH8Vv-{ zdKgb!FEBLJ0?ip4OivI3;TMVNfc~(a&&prEU WAConsumerApplication.ConsumerApplication.Payload + 6, // 1: WAConsumerApplication.ConsumerApplication.metadata:type_name -> WAConsumerApplication.ConsumerApplication.Metadata + 9, // 2: WAConsumerApplication.ConsumerApplication.Payload.content:type_name -> WAConsumerApplication.ConsumerApplication.Content + 8, // 3: WAConsumerApplication.ConsumerApplication.Payload.applicationData:type_name -> WAConsumerApplication.ConsumerApplication.ApplicationData + 7, // 4: WAConsumerApplication.ConsumerApplication.Payload.signal:type_name -> WAConsumerApplication.ConsumerApplication.Signal + 5, // 5: WAConsumerApplication.ConsumerApplication.Payload.subProtocol:type_name -> WAConsumerApplication.ConsumerApplication.SubProtocolPayload + 36, // 6: WAConsumerApplication.ConsumerApplication.SubProtocolPayload.futureProof:type_name -> WACommon.FutureProofBehavior + 0, // 7: WAConsumerApplication.ConsumerApplication.Metadata.specialTextSize:type_name -> WAConsumerApplication.ConsumerApplication.Metadata.SpecialTextSize + 18, // 8: WAConsumerApplication.ConsumerApplication.ApplicationData.revoke:type_name -> WAConsumerApplication.ConsumerApplication.RevokeMessage + 37, // 9: WAConsumerApplication.ConsumerApplication.Content.messageText:type_name -> WACommon.MessageText + 31, // 10: WAConsumerApplication.ConsumerApplication.Content.imageMessage:type_name -> WAConsumerApplication.ConsumerApplication.ImageMessage + 23, // 11: WAConsumerApplication.ConsumerApplication.Content.contactMessage:type_name -> WAConsumerApplication.ConsumerApplication.ContactMessage + 26, // 12: WAConsumerApplication.ConsumerApplication.Content.locationMessage:type_name -> WAConsumerApplication.ConsumerApplication.LocationMessage + 25, // 13: WAConsumerApplication.ConsumerApplication.Content.extendedTextMessage:type_name -> WAConsumerApplication.ConsumerApplication.ExtendedTextMessage + 24, // 14: WAConsumerApplication.ConsumerApplication.Content.statusTextMessage:type_name -> WAConsumerApplication.ConsumerApplication.StatusTextMesage + 28, // 15: WAConsumerApplication.ConsumerApplication.Content.documentMessage:type_name -> WAConsumerApplication.ConsumerApplication.DocumentMessage + 30, // 16: WAConsumerApplication.ConsumerApplication.Content.audioMessage:type_name -> WAConsumerApplication.ConsumerApplication.AudioMessage + 29, // 17: WAConsumerApplication.ConsumerApplication.Content.videoMessage:type_name -> WAConsumerApplication.ConsumerApplication.VideoMessage + 22, // 18: WAConsumerApplication.ConsumerApplication.Content.contactsArrayMessage:type_name -> WAConsumerApplication.ConsumerApplication.ContactsArrayMessage + 21, // 19: WAConsumerApplication.ConsumerApplication.Content.liveLocationMessage:type_name -> WAConsumerApplication.ConsumerApplication.LiveLocationMessage + 27, // 20: WAConsumerApplication.ConsumerApplication.Content.stickerMessage:type_name -> WAConsumerApplication.ConsumerApplication.StickerMessage + 20, // 21: WAConsumerApplication.ConsumerApplication.Content.groupInviteMessage:type_name -> WAConsumerApplication.ConsumerApplication.GroupInviteMessage + 19, // 22: WAConsumerApplication.ConsumerApplication.Content.viewOnceMessage:type_name -> WAConsumerApplication.ConsumerApplication.ViewOnceMessage + 17, // 23: WAConsumerApplication.ConsumerApplication.Content.reactionMessage:type_name -> WAConsumerApplication.ConsumerApplication.ReactionMessage + 15, // 24: WAConsumerApplication.ConsumerApplication.Content.pollCreationMessage:type_name -> WAConsumerApplication.ConsumerApplication.PollCreationMessage + 14, // 25: WAConsumerApplication.ConsumerApplication.Content.pollUpdateMessage:type_name -> WAConsumerApplication.ConsumerApplication.PollUpdateMessage + 10, // 26: WAConsumerApplication.ConsumerApplication.Content.editMessage:type_name -> WAConsumerApplication.ConsumerApplication.EditMessage + 38, // 27: WAConsumerApplication.ConsumerApplication.EditMessage.key:type_name -> WACommon.MessageKey + 37, // 28: WAConsumerApplication.ConsumerApplication.EditMessage.message:type_name -> WACommon.MessageText + 16, // 29: WAConsumerApplication.ConsumerApplication.PollAddOptionMessage.pollOption:type_name -> WAConsumerApplication.ConsumerApplication.Option + 38, // 30: WAConsumerApplication.ConsumerApplication.PollUpdateMessage.pollCreationMessageKey:type_name -> WACommon.MessageKey + 13, // 31: WAConsumerApplication.ConsumerApplication.PollUpdateMessage.vote:type_name -> WAConsumerApplication.ConsumerApplication.PollEncValue + 13, // 32: WAConsumerApplication.ConsumerApplication.PollUpdateMessage.addOption:type_name -> WAConsumerApplication.ConsumerApplication.PollEncValue + 16, // 33: WAConsumerApplication.ConsumerApplication.PollCreationMessage.options:type_name -> WAConsumerApplication.ConsumerApplication.Option + 38, // 34: WAConsumerApplication.ConsumerApplication.ReactionMessage.key:type_name -> WACommon.MessageKey + 38, // 35: WAConsumerApplication.ConsumerApplication.RevokeMessage.key:type_name -> WACommon.MessageKey + 31, // 36: WAConsumerApplication.ConsumerApplication.ViewOnceMessage.imageMessage:type_name -> WAConsumerApplication.ConsumerApplication.ImageMessage + 29, // 37: WAConsumerApplication.ConsumerApplication.ViewOnceMessage.videoMessage:type_name -> WAConsumerApplication.ConsumerApplication.VideoMessage + 37, // 38: WAConsumerApplication.ConsumerApplication.GroupInviteMessage.caption:type_name -> WACommon.MessageText + 34, // 39: WAConsumerApplication.ConsumerApplication.LiveLocationMessage.location:type_name -> WAConsumerApplication.ConsumerApplication.Location + 37, // 40: WAConsumerApplication.ConsumerApplication.LiveLocationMessage.caption:type_name -> WACommon.MessageText + 23, // 41: WAConsumerApplication.ConsumerApplication.ContactsArrayMessage.contacts:type_name -> WAConsumerApplication.ConsumerApplication.ContactMessage + 39, // 42: WAConsumerApplication.ConsumerApplication.ContactMessage.contact:type_name -> WACommon.SubProtocol + 25, // 43: WAConsumerApplication.ConsumerApplication.StatusTextMesage.text:type_name -> WAConsumerApplication.ConsumerApplication.ExtendedTextMessage + 1, // 44: WAConsumerApplication.ConsumerApplication.StatusTextMesage.font:type_name -> WAConsumerApplication.ConsumerApplication.StatusTextMesage.FontType + 37, // 45: WAConsumerApplication.ConsumerApplication.ExtendedTextMessage.text:type_name -> WACommon.MessageText + 39, // 46: WAConsumerApplication.ConsumerApplication.ExtendedTextMessage.thumbnail:type_name -> WACommon.SubProtocol + 2, // 47: WAConsumerApplication.ConsumerApplication.ExtendedTextMessage.previewType:type_name -> WAConsumerApplication.ConsumerApplication.ExtendedTextMessage.PreviewType + 34, // 48: WAConsumerApplication.ConsumerApplication.LocationMessage.location:type_name -> WAConsumerApplication.ConsumerApplication.Location + 39, // 49: WAConsumerApplication.ConsumerApplication.StickerMessage.sticker:type_name -> WACommon.SubProtocol + 39, // 50: WAConsumerApplication.ConsumerApplication.DocumentMessage.document:type_name -> WACommon.SubProtocol + 39, // 51: WAConsumerApplication.ConsumerApplication.VideoMessage.video:type_name -> WACommon.SubProtocol + 37, // 52: WAConsumerApplication.ConsumerApplication.VideoMessage.caption:type_name -> WACommon.MessageText + 39, // 53: WAConsumerApplication.ConsumerApplication.AudioMessage.audio:type_name -> WACommon.SubProtocol + 39, // 54: WAConsumerApplication.ConsumerApplication.ImageMessage.image:type_name -> WACommon.SubProtocol + 37, // 55: WAConsumerApplication.ConsumerApplication.ImageMessage.caption:type_name -> WACommon.MessageText + 34, // 56: WAConsumerApplication.ConsumerApplication.InteractiveAnnotation.location:type_name -> WAConsumerApplication.ConsumerApplication.Location + 33, // 57: WAConsumerApplication.ConsumerApplication.InteractiveAnnotation.polygonVertices:type_name -> WAConsumerApplication.ConsumerApplication.Point + 39, // 58: WAConsumerApplication.ConsumerApplication.MediaPayload.protocol:type_name -> WACommon.SubProtocol + 59, // [59:59] is the sub-list for method output_type + 59, // [59:59] is the sub-list for method input_type + 59, // [59:59] is the sub-list for extension type_name + 59, // [59:59] is the sub-list for extension extendee + 0, // [0:59] is the sub-list for field type_name +} + +func init() { file_waConsumerApplication_WAConsumerApplication_proto_init() } +func file_waConsumerApplication_WAConsumerApplication_proto_init() { + if File_waConsumerApplication_WAConsumerApplication_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_Payload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_SubProtocolPayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_Metadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_Signal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_ApplicationData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_Content); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_EditMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_PollAddOptionMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_PollVoteMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_PollEncValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_PollUpdateMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_PollCreationMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_Option); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_ReactionMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_RevokeMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_ViewOnceMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_GroupInviteMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_LiveLocationMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_ContactsArrayMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_ContactMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_StatusTextMesage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_ExtendedTextMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_LocationMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_StickerMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_DocumentMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_VideoMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_AudioMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_ImageMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_InteractiveAnnotation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_Point); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_Location); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumerApplication_MediaPayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[1].OneofWrappers = []interface{}{ + (*ConsumerApplication_Payload_Content)(nil), + (*ConsumerApplication_Payload_ApplicationData)(nil), + (*ConsumerApplication_Payload_Signal)(nil), + (*ConsumerApplication_Payload_SubProtocol)(nil), + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[5].OneofWrappers = []interface{}{ + (*ConsumerApplication_ApplicationData_Revoke)(nil), + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[6].OneofWrappers = []interface{}{ + (*ConsumerApplication_Content_MessageText)(nil), + (*ConsumerApplication_Content_ImageMessage)(nil), + (*ConsumerApplication_Content_ContactMessage)(nil), + (*ConsumerApplication_Content_LocationMessage)(nil), + (*ConsumerApplication_Content_ExtendedTextMessage)(nil), + (*ConsumerApplication_Content_StatusTextMessage)(nil), + (*ConsumerApplication_Content_DocumentMessage)(nil), + (*ConsumerApplication_Content_AudioMessage)(nil), + (*ConsumerApplication_Content_VideoMessage)(nil), + (*ConsumerApplication_Content_ContactsArrayMessage)(nil), + (*ConsumerApplication_Content_LiveLocationMessage)(nil), + (*ConsumerApplication_Content_StickerMessage)(nil), + (*ConsumerApplication_Content_GroupInviteMessage)(nil), + (*ConsumerApplication_Content_ViewOnceMessage)(nil), + (*ConsumerApplication_Content_ReactionMessage)(nil), + (*ConsumerApplication_Content_PollCreationMessage)(nil), + (*ConsumerApplication_Content_PollUpdateMessage)(nil), + (*ConsumerApplication_Content_EditMessage)(nil), + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[16].OneofWrappers = []interface{}{ + (*ConsumerApplication_ViewOnceMessage_ImageMessage)(nil), + (*ConsumerApplication_ViewOnceMessage_VideoMessage)(nil), + } + file_waConsumerApplication_WAConsumerApplication_proto_msgTypes[29].OneofWrappers = []interface{}{ + (*ConsumerApplication_InteractiveAnnotation_Location)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_waConsumerApplication_WAConsumerApplication_proto_rawDesc, + NumEnums: 3, + NumMessages: 33, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_waConsumerApplication_WAConsumerApplication_proto_goTypes, + DependencyIndexes: file_waConsumerApplication_WAConsumerApplication_proto_depIdxs, + EnumInfos: file_waConsumerApplication_WAConsumerApplication_proto_enumTypes, + MessageInfos: file_waConsumerApplication_WAConsumerApplication_proto_msgTypes, + }.Build() + File_waConsumerApplication_WAConsumerApplication_proto = out.File + file_waConsumerApplication_WAConsumerApplication_proto_rawDesc = nil + file_waConsumerApplication_WAConsumerApplication_proto_goTypes = nil + file_waConsumerApplication_WAConsumerApplication_proto_depIdxs = nil +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waConsumerApplication/WAConsumerApplication.pb.raw b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waConsumerApplication/WAConsumerApplication.pb.raw new file mode 100644 index 0000000000000000000000000000000000000000..54bdd5a835e025c7e15480ce768035a3302d9721 GIT binary patch literal 7142 zcmb_hUvt~W5fAl`i zeser_Y|9L7&)s{`TtM9&`(Eg=dka4r?-SB!6fLF)#lQ2n$FQ{kjdh_oHm8nf4jP3I z3lA#$`@0K~cNZ+)Jy9!p48e|}G!mgXFhjGkB;g+AfIEto@&v^A?-CRvDXa%Y%X35F zhVQUd+&-=R@;x4duuG_!Gi|qKd;ToPp0)cT1jNsRvgfcC*hANJ8p~284|BlxC0Hye{*$8UESXj2{oQgML-~OYB5D#;lDn{Gwr=fTj zd*=jd86Nfnc)x$rKI}BRr|qv#`<<8VS7*KFz2g_X`g^PltNo*9w_7hTfVHD`t8;c# zUm|k1$)C3C%SH*-)HNA@f?CEN7>6}q+<4dOP?h~(foX;t zS+?=74Jby>>{FoJN*>SdrV&s~7L@t0g&Gv@KnzHgv8+|; zl)ue!qV_xr%3B1^u3<9>&2SRv64#`}U+0k6*D;iN&Et|H2cCs_$xRMdl%nz|vXw?4 zMP@+B=*-E$_F@f|q>wyD*VLAygcKaX-`E3@z?XBwpKHqrUWa27*p6&EX!^c6jZXnm z%ojOsC9>=k42oL_PuAzyHzH%Fjf#|-$NIYSC@6FhIJs{S+Sax3<3m=ZxIFILPXVB$ z3?%b_4SjDi?zlI0m;|DADJV~>dpZY#!WKZ2ncvvr^|5Ou(l(^DJZ65LMnF+nP?F;d zj9ggU#pN>+{TNrnyEq?_hoa6Hy7 zm3;+3dRIi;*)rDfc`8h`kZT|)sz##Dz2qX<11!>nBdkzF;sYtFiuF~R%zlCSi87*p zs-1^=fn`4b!DvC1M73S(+;k>_{Rlv~R#ccuJy*F#VcW2Z-#h10tyQjGjBl4EB{HhHCZe0nBFl)1-thomnm zPRm>;EjDmE&LRV6E%;y-omFQ{eWK-1wX-SJQwzR(WgPpDn@EbRZA>Z6(;j<}8C#4Mnm0KLud(6#z4!Bro_` zrxlq~@=nHP%bMfR8^m6rQP|I*uD-Y5jBQ`$)+kiZ(b*57EagbMCG#lr8G-!-)}NiU zpPpV#Mi;JWI}I{}Do+zBjaa61MtSj-{kNr&h|BnH3APqgb2OKU8=@%q<(bRG6(&zW zNE4=IO?=aucCeNSg&#;aTIX|g(keFiVt|Ze3Mz#MOI)L1oc?GahQ1KNA#U>ewH=5j zzBf8Dhpxa2FdwN>F45nsT&3kD8I;c4+=q&$fy<(@=3!g@`=$2xf(MBKT7QcPhR0R3jK z|Ek~SohQ+NNIn+W7SwvjymQ#>z2fbsXE-3jNzo>(AMkH_EhN6+ol~3`v3sz2&^~DP zd+oD!!nwlgP(ALyXm(q#zHB$ozp1Yp-!8+}0-dpsQ#YVpVq^p~8<-`ukr`T7YD5v` zx{5|(J5aSu*K={~?40p#l=D(FX~QD0d|O2$70)Vz8HrL=Bg1B*v*J zg|=JWN>s);>cW1Cu0Xol#{RP$*SSDtyC*Y5uEX!_Kt=n;O0d#9?zPp$o_AX9 z<9fmPGt}ZB7-{(bA5t4o#G25@wjsKt_?7%P-7}LPM{W2WejITbzlU0848tBmDIUYz z4wA4@?!2@eA;TCY@G?){4F{@vhGsv9RXHTN9b56}L0c6Dnvv)x9j8O%2&($Thos2? z(jC$y5Bk~i$?2)oa*5L;ZCDIeOC2sIpx)H0V9mBb*hO@oyxwd-)5EexIlerWu WAE2E.Message.SenderKeyDistributionMessage + 132, // 1: WAE2E.Message.imageMessage:type_name -> WAE2E.Message.ImageMessage + 131, // 2: WAE2E.Message.contactMessage:type_name -> WAE2E.Message.ContactMessage + 130, // 3: WAE2E.Message.locationMessage:type_name -> WAE2E.Message.LocationMessage + 85, // 4: WAE2E.Message.extendedTextMessage:type_name -> WAE2E.Message.ExtendedTextMessage + 129, // 5: WAE2E.Message.documentMessage:type_name -> WAE2E.Message.DocumentMessage + 128, // 6: WAE2E.Message.audioMessage:type_name -> WAE2E.Message.AudioMessage + 84, // 7: WAE2E.Message.videoMessage:type_name -> WAE2E.Message.VideoMessage + 127, // 8: WAE2E.Message.call:type_name -> WAE2E.Message.Call + 126, // 9: WAE2E.Message.chat:type_name -> WAE2E.Message.Chat + 82, // 10: WAE2E.Message.protocolMessage:type_name -> WAE2E.Message.ProtocolMessage + 115, // 11: WAE2E.Message.contactsArrayMessage:type_name -> WAE2E.Message.ContactsArrayMessage + 79, // 12: WAE2E.Message.highlyStructuredMessage:type_name -> WAE2E.Message.HighlyStructuredMessage + 133, // 13: WAE2E.Message.fastRatchetKeySenderKeyDistributionMessage:type_name -> WAE2E.Message.SenderKeyDistributionMessage + 114, // 14: WAE2E.Message.sendPaymentMessage:type_name -> WAE2E.Message.SendPaymentMessage + 110, // 15: WAE2E.Message.liveLocationMessage:type_name -> WAE2E.Message.LiveLocationMessage + 113, // 16: WAE2E.Message.requestPaymentMessage:type_name -> WAE2E.Message.RequestPaymentMessage + 112, // 17: WAE2E.Message.declinePaymentRequestMessage:type_name -> WAE2E.Message.DeclinePaymentRequestMessage + 111, // 18: WAE2E.Message.cancelPaymentRequestMessage:type_name -> WAE2E.Message.CancelPaymentRequestMessage + 108, // 19: WAE2E.Message.templateMessage:type_name -> WAE2E.Message.TemplateMessage + 109, // 20: WAE2E.Message.stickerMessage:type_name -> WAE2E.Message.StickerMessage + 72, // 21: WAE2E.Message.groupInviteMessage:type_name -> WAE2E.Message.GroupInviteMessage + 107, // 22: WAE2E.Message.templateButtonReplyMessage:type_name -> WAE2E.Message.TemplateButtonReplyMessage + 106, // 23: WAE2E.Message.productMessage:type_name -> WAE2E.Message.ProductMessage + 103, // 24: WAE2E.Message.deviceSentMessage:type_name -> WAE2E.Message.DeviceSentMessage + 52, // 25: WAE2E.Message.messageContextInfo:type_name -> WAE2E.MessageContextInfo + 76, // 26: WAE2E.Message.listMessage:type_name -> WAE2E.Message.ListMessage + 102, // 27: WAE2E.Message.viewOnceMessage:type_name -> WAE2E.Message.FutureProofMessage + 77, // 28: WAE2E.Message.orderMessage:type_name -> WAE2E.Message.OrderMessage + 75, // 29: WAE2E.Message.listResponseMessage:type_name -> WAE2E.Message.ListResponseMessage + 102, // 30: WAE2E.Message.ephemeralMessage:type_name -> WAE2E.Message.FutureProofMessage + 86, // 31: WAE2E.Message.invoiceMessage:type_name -> WAE2E.Message.InvoiceMessage + 71, // 32: WAE2E.Message.buttonsMessage:type_name -> WAE2E.Message.ButtonsMessage + 70, // 33: WAE2E.Message.buttonsResponseMessage:type_name -> WAE2E.Message.ButtonsResponseMessage + 78, // 34: WAE2E.Message.paymentInviteMessage:type_name -> WAE2E.Message.PaymentInviteMessage + 74, // 35: WAE2E.Message.interactiveMessage:type_name -> WAE2E.Message.InteractiveMessage + 101, // 36: WAE2E.Message.reactionMessage:type_name -> WAE2E.Message.ReactionMessage + 100, // 37: WAE2E.Message.stickerSyncRmrMessage:type_name -> WAE2E.Message.StickerSyncRMRMessage + 73, // 38: WAE2E.Message.interactiveResponseMessage:type_name -> WAE2E.Message.InteractiveResponseMessage + 99, // 39: WAE2E.Message.pollCreationMessage:type_name -> WAE2E.Message.PollCreationMessage + 98, // 40: WAE2E.Message.pollUpdateMessage:type_name -> WAE2E.Message.PollUpdateMessage + 94, // 41: WAE2E.Message.keepInChatMessage:type_name -> WAE2E.Message.KeepInChatMessage + 102, // 42: WAE2E.Message.documentWithCaptionMessage:type_name -> WAE2E.Message.FutureProofMessage + 104, // 43: WAE2E.Message.requestPhoneNumberMessage:type_name -> WAE2E.Message.RequestPhoneNumberMessage + 102, // 44: WAE2E.Message.viewOnceMessageV2:type_name -> WAE2E.Message.FutureProofMessage + 93, // 45: WAE2E.Message.encReactionMessage:type_name -> WAE2E.Message.EncReactionMessage + 102, // 46: WAE2E.Message.editedMessage:type_name -> WAE2E.Message.FutureProofMessage + 102, // 47: WAE2E.Message.viewOnceMessageV2Extension:type_name -> WAE2E.Message.FutureProofMessage + 99, // 48: WAE2E.Message.pollCreationMessageV2:type_name -> WAE2E.Message.PollCreationMessage + 67, // 49: WAE2E.Message.scheduledCallCreationMessage:type_name -> WAE2E.Message.ScheduledCallCreationMessage + 102, // 50: WAE2E.Message.groupMentionedMessage:type_name -> WAE2E.Message.FutureProofMessage + 69, // 51: WAE2E.Message.pinInChatMessage:type_name -> WAE2E.Message.PinInChatMessage + 99, // 52: WAE2E.Message.pollCreationMessageV3:type_name -> WAE2E.Message.PollCreationMessage + 66, // 53: WAE2E.Message.scheduledCallEditMessage:type_name -> WAE2E.Message.ScheduledCallEditMessage + 84, // 54: WAE2E.Message.ptvMessage:type_name -> WAE2E.Message.VideoMessage + 102, // 55: WAE2E.Message.botInvokeMessage:type_name -> WAE2E.Message.FutureProofMessage + 65, // 56: WAE2E.Message.callLogMesssage:type_name -> WAE2E.Message.CallLogMessage + 88, // 57: WAE2E.Message.messageHistoryBundle:type_name -> WAE2E.Message.MessageHistoryBundle + 92, // 58: WAE2E.Message.encCommentMessage:type_name -> WAE2E.Message.EncCommentMessage + 64, // 59: WAE2E.Message.bcallMessage:type_name -> WAE2E.Message.BCallMessage + 102, // 60: WAE2E.Message.lottieStickerMessage:type_name -> WAE2E.Message.FutureProofMessage + 90, // 61: WAE2E.Message.eventMessage:type_name -> WAE2E.Message.EventMessage + 89, // 62: WAE2E.Message.encEventResponseMessage:type_name -> WAE2E.Message.EncEventResponseMessage + 91, // 63: WAE2E.Message.commentMessage:type_name -> WAE2E.Message.CommentMessage + 105, // 64: WAE2E.Message.newsletterAdminInviteMessage:type_name -> WAE2E.Message.NewsletterAdminInviteMessage + 87, // 65: WAE2E.Message.extendedTextMessageWithParentKey:type_name -> WAE2E.Message.ExtendedTextMessageWithParentKey + 63, // 66: WAE2E.Message.placeholderMessage:type_name -> WAE2E.Message.PlaceholderMessage + 43, // 67: WAE2E.ContextInfo.quotedMessage:type_name -> WAE2E.Message + 175, // 68: WAE2E.ContextInfo.quotedAd:type_name -> WAE2E.ContextInfo.AdReplyInfo + 186, // 69: WAE2E.ContextInfo.placeholderKey:type_name -> WACommon.MessageKey + 174, // 70: WAE2E.ContextInfo.externalAdReply:type_name -> WAE2E.ContextInfo.ExternalAdReplyInfo + 48, // 71: WAE2E.ContextInfo.disappearingMode:type_name -> WAE2E.DisappearingMode + 59, // 72: WAE2E.ContextInfo.actionLink:type_name -> WAE2E.ActionLink + 60, // 73: WAE2E.ContextInfo.groupMentions:type_name -> WAE2E.GroupMention + 177, // 74: WAE2E.ContextInfo.utm:type_name -> WAE2E.ContextInfo.UTMInfo + 173, // 75: WAE2E.ContextInfo.forwardedNewsletterMessageInfo:type_name -> WAE2E.ContextInfo.ForwardedNewsletterMessageInfo + 178, // 76: WAE2E.ContextInfo.businessMessageForwardInfo:type_name -> WAE2E.ContextInfo.BusinessMessageForwardInfo + 176, // 77: WAE2E.ContextInfo.dataSharingContext:type_name -> WAE2E.ContextInfo.DataSharingContext + 38, // 78: WAE2E.BotPluginMetadata.provider:type_name -> WAE2E.BotPluginMetadata.SearchProvider + 37, // 79: WAE2E.BotPluginMetadata.pluginType:type_name -> WAE2E.BotPluginMetadata.PluginType + 181, // 80: WAE2E.HydratedTemplateButton.quickReplyButton:type_name -> WAE2E.HydratedTemplateButton.HydratedQuickReplyButton + 179, // 81: WAE2E.HydratedTemplateButton.urlButton:type_name -> WAE2E.HydratedTemplateButton.HydratedURLButton + 180, // 82: WAE2E.HydratedTemplateButton.callButton:type_name -> WAE2E.HydratedTemplateButton.HydratedCallButton + 182, // 83: WAE2E.PaymentBackground.mediaData:type_name -> WAE2E.PaymentBackground.MediaData + 40, // 84: WAE2E.PaymentBackground.type:type_name -> WAE2E.PaymentBackground.Type + 42, // 85: WAE2E.DisappearingMode.initiator:type_name -> WAE2E.DisappearingMode.Initiator + 41, // 86: WAE2E.DisappearingMode.trigger:type_name -> WAE2E.DisappearingMode.Trigger + 49, // 87: WAE2E.BotMetadata.avatarMetadata:type_name -> WAE2E.BotAvatarMetadata + 45, // 88: WAE2E.BotMetadata.pluginMetadata:type_name -> WAE2E.BotPluginMetadata + 50, // 89: WAE2E.BotMetadata.suggestedPromptMetadata:type_name -> WAE2E.BotSuggestedPromptMetadata + 53, // 90: WAE2E.MessageContextInfo.deviceListMetadata:type_name -> WAE2E.DeviceListMetadata + 51, // 91: WAE2E.MessageContextInfo.botMetadata:type_name -> WAE2E.BotMetadata + 187, // 92: WAE2E.DeviceListMetadata.senderAccountType:type_name -> WAAdv.ADVEncryptionType + 187, // 93: WAE2E.DeviceListMetadata.receiverAccountType:type_name -> WAAdv.ADVEncryptionType + 56, // 94: WAE2E.InteractiveAnnotation.location:type_name -> WAE2E.Location + 173, // 95: WAE2E.InteractiveAnnotation.newsletter:type_name -> WAE2E.ContextInfo.ForwardedNewsletterMessageInfo + 55, // 96: WAE2E.InteractiveAnnotation.polygonVertices:type_name -> WAE2E.Point + 185, // 97: WAE2E.TemplateButton.quickReplyButton:type_name -> WAE2E.TemplateButton.QuickReplyButton + 184, // 98: WAE2E.TemplateButton.urlButton:type_name -> WAE2E.TemplateButton.URLButton + 183, // 99: WAE2E.TemplateButton.callButton:type_name -> WAE2E.TemplateButton.CallButton + 2, // 100: WAE2E.Message.PlaceholderMessage.type:type_name -> WAE2E.Message.PlaceholderMessage.PlaceholderType + 3, // 101: WAE2E.Message.BCallMessage.mediaType:type_name -> WAE2E.Message.BCallMessage.MediaType + 4, // 102: WAE2E.Message.CallLogMessage.callOutcome:type_name -> WAE2E.Message.CallLogMessage.CallOutcome + 5, // 103: WAE2E.Message.CallLogMessage.callType:type_name -> WAE2E.Message.CallLogMessage.CallType + 134, // 104: WAE2E.Message.CallLogMessage.participants:type_name -> WAE2E.Message.CallLogMessage.CallParticipant + 186, // 105: WAE2E.Message.ScheduledCallEditMessage.key:type_name -> WACommon.MessageKey + 6, // 106: WAE2E.Message.ScheduledCallEditMessage.editType:type_name -> WAE2E.Message.ScheduledCallEditMessage.EditType + 7, // 107: WAE2E.Message.ScheduledCallCreationMessage.callType:type_name -> WAE2E.Message.ScheduledCallCreationMessage.CallType + 8, // 108: WAE2E.Message.EventResponseMessage.response:type_name -> WAE2E.Message.EventResponseMessage.EventResponseType + 186, // 109: WAE2E.Message.PinInChatMessage.key:type_name -> WACommon.MessageKey + 9, // 110: WAE2E.Message.PinInChatMessage.type:type_name -> WAE2E.Message.PinInChatMessage.Type + 44, // 111: WAE2E.Message.ButtonsResponseMessage.contextInfo:type_name -> WAE2E.ContextInfo + 10, // 112: WAE2E.Message.ButtonsResponseMessage.type:type_name -> WAE2E.Message.ButtonsResponseMessage.Type + 129, // 113: WAE2E.Message.ButtonsMessage.documentMessage:type_name -> WAE2E.Message.DocumentMessage + 132, // 114: WAE2E.Message.ButtonsMessage.imageMessage:type_name -> WAE2E.Message.ImageMessage + 84, // 115: WAE2E.Message.ButtonsMessage.videoMessage:type_name -> WAE2E.Message.VideoMessage + 130, // 116: WAE2E.Message.ButtonsMessage.locationMessage:type_name -> WAE2E.Message.LocationMessage + 44, // 117: WAE2E.Message.ButtonsMessage.contextInfo:type_name -> WAE2E.ContextInfo + 135, // 118: WAE2E.Message.ButtonsMessage.buttons:type_name -> WAE2E.Message.ButtonsMessage.Button + 11, // 119: WAE2E.Message.ButtonsMessage.headerType:type_name -> WAE2E.Message.ButtonsMessage.HeaderType + 44, // 120: WAE2E.Message.GroupInviteMessage.contextInfo:type_name -> WAE2E.ContextInfo + 13, // 121: WAE2E.Message.GroupInviteMessage.groupType:type_name -> WAE2E.Message.GroupInviteMessage.GroupType + 139, // 122: WAE2E.Message.InteractiveResponseMessage.nativeFlowResponseMessage:type_name -> WAE2E.Message.InteractiveResponseMessage.NativeFlowResponseMessage + 138, // 123: WAE2E.Message.InteractiveResponseMessage.body:type_name -> WAE2E.Message.InteractiveResponseMessage.Body + 44, // 124: WAE2E.Message.InteractiveResponseMessage.contextInfo:type_name -> WAE2E.ContextInfo + 140, // 125: WAE2E.Message.InteractiveMessage.shopStorefrontMessage:type_name -> WAE2E.Message.InteractiveMessage.ShopMessage + 143, // 126: WAE2E.Message.InteractiveMessage.collectionMessage:type_name -> WAE2E.Message.InteractiveMessage.CollectionMessage + 142, // 127: WAE2E.Message.InteractiveMessage.nativeFlowMessage:type_name -> WAE2E.Message.InteractiveMessage.NativeFlowMessage + 141, // 128: WAE2E.Message.InteractiveMessage.carouselMessage:type_name -> WAE2E.Message.InteractiveMessage.CarouselMessage + 146, // 129: WAE2E.Message.InteractiveMessage.header:type_name -> WAE2E.Message.InteractiveMessage.Header + 145, // 130: WAE2E.Message.InteractiveMessage.body:type_name -> WAE2E.Message.InteractiveMessage.Body + 144, // 131: WAE2E.Message.InteractiveMessage.footer:type_name -> WAE2E.Message.InteractiveMessage.Footer + 44, // 132: WAE2E.Message.InteractiveMessage.contextInfo:type_name -> WAE2E.ContextInfo + 16, // 133: WAE2E.Message.ListResponseMessage.listType:type_name -> WAE2E.Message.ListResponseMessage.ListType + 148, // 134: WAE2E.Message.ListResponseMessage.singleSelectReply:type_name -> WAE2E.Message.ListResponseMessage.SingleSelectReply + 44, // 135: WAE2E.Message.ListResponseMessage.contextInfo:type_name -> WAE2E.ContextInfo + 17, // 136: WAE2E.Message.ListMessage.listType:type_name -> WAE2E.Message.ListMessage.ListType + 153, // 137: WAE2E.Message.ListMessage.sections:type_name -> WAE2E.Message.ListMessage.Section + 149, // 138: WAE2E.Message.ListMessage.productListInfo:type_name -> WAE2E.Message.ListMessage.ProductListInfo + 44, // 139: WAE2E.Message.ListMessage.contextInfo:type_name -> WAE2E.ContextInfo + 19, // 140: WAE2E.Message.OrderMessage.status:type_name -> WAE2E.Message.OrderMessage.OrderStatus + 18, // 141: WAE2E.Message.OrderMessage.surface:type_name -> WAE2E.Message.OrderMessage.OrderSurface + 44, // 142: WAE2E.Message.OrderMessage.contextInfo:type_name -> WAE2E.ContextInfo + 186, // 143: WAE2E.Message.OrderMessage.orderRequestMessageID:type_name -> WACommon.MessageKey + 20, // 144: WAE2E.Message.PaymentInviteMessage.serviceType:type_name -> WAE2E.Message.PaymentInviteMessage.ServiceType + 155, // 145: WAE2E.Message.HighlyStructuredMessage.localizableParams:type_name -> WAE2E.Message.HighlyStructuredMessage.HSMLocalizableParameter + 108, // 146: WAE2E.Message.HighlyStructuredMessage.hydratedHsm:type_name -> WAE2E.Message.TemplateMessage + 23, // 147: WAE2E.Message.HistorySyncNotification.syncType:type_name -> WAE2E.Message.HistorySyncNotification.HistorySyncType + 24, // 148: WAE2E.Message.RequestWelcomeMessageMetadata.localChatState:type_name -> WAE2E.Message.RequestWelcomeMessageMetadata.LocalChatState + 186, // 149: WAE2E.Message.ProtocolMessage.key:type_name -> WACommon.MessageKey + 25, // 150: WAE2E.Message.ProtocolMessage.type:type_name -> WAE2E.Message.ProtocolMessage.Type + 80, // 151: WAE2E.Message.ProtocolMessage.historySyncNotification:type_name -> WAE2E.Message.HistorySyncNotification + 121, // 152: WAE2E.Message.ProtocolMessage.appStateSyncKeyShare:type_name -> WAE2E.Message.AppStateSyncKeyShare + 120, // 153: WAE2E.Message.ProtocolMessage.appStateSyncKeyRequest:type_name -> WAE2E.Message.AppStateSyncKeyRequest + 116, // 154: WAE2E.Message.ProtocolMessage.initialSecurityNotificationSettingSync:type_name -> WAE2E.Message.InitialSecurityNotificationSettingSync + 119, // 155: WAE2E.Message.ProtocolMessage.appStateFatalExceptionNotification:type_name -> WAE2E.Message.AppStateFatalExceptionNotification + 48, // 156: WAE2E.Message.ProtocolMessage.disappearingMode:type_name -> WAE2E.DisappearingMode + 43, // 157: WAE2E.Message.ProtocolMessage.editedMessage:type_name -> WAE2E.Message + 118, // 158: WAE2E.Message.ProtocolMessage.peerDataOperationRequestMessage:type_name -> WAE2E.Message.PeerDataOperationRequestMessage + 117, // 159: WAE2E.Message.ProtocolMessage.peerDataOperationRequestResponseMessage:type_name -> WAE2E.Message.PeerDataOperationRequestResponseMessage + 83, // 160: WAE2E.Message.ProtocolMessage.botFeedbackMessage:type_name -> WAE2E.Message.BotFeedbackMessage + 81, // 161: WAE2E.Message.ProtocolMessage.requestWelcomeMessageMetadata:type_name -> WAE2E.Message.RequestWelcomeMessageMetadata + 62, // 162: WAE2E.Message.ProtocolMessage.mediaNotifyMessage:type_name -> WAE2E.MediaNotifyMessage + 186, // 163: WAE2E.Message.BotFeedbackMessage.messageKey:type_name -> WACommon.MessageKey + 28, // 164: WAE2E.Message.BotFeedbackMessage.kind:type_name -> WAE2E.Message.BotFeedbackMessage.BotFeedbackKind + 54, // 165: WAE2E.Message.VideoMessage.interactiveAnnotations:type_name -> WAE2E.InteractiveAnnotation + 44, // 166: WAE2E.Message.VideoMessage.contextInfo:type_name -> WAE2E.ContextInfo + 29, // 167: WAE2E.Message.VideoMessage.gifAttribution:type_name -> WAE2E.Message.VideoMessage.Attribution + 54, // 168: WAE2E.Message.VideoMessage.annotations:type_name -> WAE2E.InteractiveAnnotation + 32, // 169: WAE2E.Message.ExtendedTextMessage.font:type_name -> WAE2E.Message.ExtendedTextMessage.FontType + 31, // 170: WAE2E.Message.ExtendedTextMessage.previewType:type_name -> WAE2E.Message.ExtendedTextMessage.PreviewType + 44, // 171: WAE2E.Message.ExtendedTextMessage.contextInfo:type_name -> WAE2E.ContextInfo + 30, // 172: WAE2E.Message.ExtendedTextMessage.inviteLinkGroupType:type_name -> WAE2E.Message.ExtendedTextMessage.InviteLinkGroupType + 30, // 173: WAE2E.Message.ExtendedTextMessage.inviteLinkGroupTypeV2:type_name -> WAE2E.Message.ExtendedTextMessage.InviteLinkGroupType + 33, // 174: WAE2E.Message.InvoiceMessage.attachmentType:type_name -> WAE2E.Message.InvoiceMessage.AttachmentType + 186, // 175: WAE2E.Message.ExtendedTextMessageWithParentKey.key:type_name -> WACommon.MessageKey + 85, // 176: WAE2E.Message.ExtendedTextMessageWithParentKey.linkMessage:type_name -> WAE2E.Message.ExtendedTextMessage + 44, // 177: WAE2E.Message.MessageHistoryBundle.contextInfo:type_name -> WAE2E.ContextInfo + 186, // 178: WAE2E.Message.EncEventResponseMessage.eventCreationMessageKey:type_name -> WACommon.MessageKey + 44, // 179: WAE2E.Message.EventMessage.contextInfo:type_name -> WAE2E.ContextInfo + 130, // 180: WAE2E.Message.EventMessage.location:type_name -> WAE2E.Message.LocationMessage + 43, // 181: WAE2E.Message.CommentMessage.message:type_name -> WAE2E.Message + 186, // 182: WAE2E.Message.CommentMessage.targetMessageKey:type_name -> WACommon.MessageKey + 186, // 183: WAE2E.Message.EncCommentMessage.targetMessageKey:type_name -> WACommon.MessageKey + 186, // 184: WAE2E.Message.EncReactionMessage.targetMessageKey:type_name -> WACommon.MessageKey + 186, // 185: WAE2E.Message.KeepInChatMessage.key:type_name -> WACommon.MessageKey + 0, // 186: WAE2E.Message.KeepInChatMessage.keepType:type_name -> WAE2E.KeepType + 186, // 187: WAE2E.Message.PollUpdateMessage.pollCreationMessageKey:type_name -> WACommon.MessageKey + 96, // 188: WAE2E.Message.PollUpdateMessage.vote:type_name -> WAE2E.Message.PollEncValue + 97, // 189: WAE2E.Message.PollUpdateMessage.metadata:type_name -> WAE2E.Message.PollUpdateMessageMetadata + 160, // 190: WAE2E.Message.PollCreationMessage.options:type_name -> WAE2E.Message.PollCreationMessage.Option + 44, // 191: WAE2E.Message.PollCreationMessage.contextInfo:type_name -> WAE2E.ContextInfo + 186, // 192: WAE2E.Message.ReactionMessage.key:type_name -> WACommon.MessageKey + 43, // 193: WAE2E.Message.FutureProofMessage.message:type_name -> WAE2E.Message + 43, // 194: WAE2E.Message.DeviceSentMessage.message:type_name -> WAE2E.Message + 44, // 195: WAE2E.Message.RequestPhoneNumberMessage.contextInfo:type_name -> WAE2E.ContextInfo + 161, // 196: WAE2E.Message.ProductMessage.product:type_name -> WAE2E.Message.ProductMessage.ProductSnapshot + 162, // 197: WAE2E.Message.ProductMessage.catalog:type_name -> WAE2E.Message.ProductMessage.CatalogSnapshot + 44, // 198: WAE2E.Message.ProductMessage.contextInfo:type_name -> WAE2E.ContextInfo + 44, // 199: WAE2E.Message.TemplateButtonReplyMessage.contextInfo:type_name -> WAE2E.ContextInfo + 164, // 200: WAE2E.Message.TemplateMessage.fourRowTemplate:type_name -> WAE2E.Message.TemplateMessage.FourRowTemplate + 163, // 201: WAE2E.Message.TemplateMessage.hydratedFourRowTemplate:type_name -> WAE2E.Message.TemplateMessage.HydratedFourRowTemplate + 74, // 202: WAE2E.Message.TemplateMessage.interactiveMessageTemplate:type_name -> WAE2E.Message.InteractiveMessage + 44, // 203: WAE2E.Message.TemplateMessage.contextInfo:type_name -> WAE2E.ContextInfo + 163, // 204: WAE2E.Message.TemplateMessage.hydratedTemplate:type_name -> WAE2E.Message.TemplateMessage.HydratedFourRowTemplate + 44, // 205: WAE2E.Message.StickerMessage.contextInfo:type_name -> WAE2E.ContextInfo + 44, // 206: WAE2E.Message.LiveLocationMessage.contextInfo:type_name -> WAE2E.ContextInfo + 186, // 207: WAE2E.Message.CancelPaymentRequestMessage.key:type_name -> WACommon.MessageKey + 186, // 208: WAE2E.Message.DeclinePaymentRequestMessage.key:type_name -> WACommon.MessageKey + 43, // 209: WAE2E.Message.RequestPaymentMessage.noteMessage:type_name -> WAE2E.Message + 58, // 210: WAE2E.Message.RequestPaymentMessage.amount:type_name -> WAE2E.Money + 47, // 211: WAE2E.Message.RequestPaymentMessage.background:type_name -> WAE2E.PaymentBackground + 43, // 212: WAE2E.Message.SendPaymentMessage.noteMessage:type_name -> WAE2E.Message + 186, // 213: WAE2E.Message.SendPaymentMessage.requestMessageKey:type_name -> WACommon.MessageKey + 47, // 214: WAE2E.Message.SendPaymentMessage.background:type_name -> WAE2E.PaymentBackground + 131, // 215: WAE2E.Message.ContactsArrayMessage.contacts:type_name -> WAE2E.Message.ContactMessage + 44, // 216: WAE2E.Message.ContactsArrayMessage.contextInfo:type_name -> WAE2E.ContextInfo + 1, // 217: WAE2E.Message.PeerDataOperationRequestResponseMessage.peerDataOperationRequestType:type_name -> WAE2E.Message.PeerDataOperationRequestType + 165, // 218: WAE2E.Message.PeerDataOperationRequestResponseMessage.peerDataOperationResult:type_name -> WAE2E.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult + 1, // 219: WAE2E.Message.PeerDataOperationRequestMessage.peerDataOperationRequestType:type_name -> WAE2E.Message.PeerDataOperationRequestType + 172, // 220: WAE2E.Message.PeerDataOperationRequestMessage.requestStickerReupload:type_name -> WAE2E.Message.PeerDataOperationRequestMessage.RequestStickerReupload + 171, // 221: WAE2E.Message.PeerDataOperationRequestMessage.requestURLPreview:type_name -> WAE2E.Message.PeerDataOperationRequestMessage.RequestUrlPreview + 170, // 222: WAE2E.Message.PeerDataOperationRequestMessage.historySyncOnDemandRequest:type_name -> WAE2E.Message.PeerDataOperationRequestMessage.HistorySyncOnDemandRequest + 169, // 223: WAE2E.Message.PeerDataOperationRequestMessage.placeholderMessageResendRequest:type_name -> WAE2E.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest + 124, // 224: WAE2E.Message.AppStateSyncKeyRequest.keyIDs:type_name -> WAE2E.Message.AppStateSyncKeyId + 125, // 225: WAE2E.Message.AppStateSyncKeyShare.keys:type_name -> WAE2E.Message.AppStateSyncKey + 123, // 226: WAE2E.Message.AppStateSyncKeyData.fingerprint:type_name -> WAE2E.Message.AppStateSyncKeyFingerprint + 124, // 227: WAE2E.Message.AppStateSyncKey.keyID:type_name -> WAE2E.Message.AppStateSyncKeyId + 122, // 228: WAE2E.Message.AppStateSyncKey.keyData:type_name -> WAE2E.Message.AppStateSyncKeyData + 44, // 229: WAE2E.Message.AudioMessage.contextInfo:type_name -> WAE2E.ContextInfo + 44, // 230: WAE2E.Message.DocumentMessage.contextInfo:type_name -> WAE2E.ContextInfo + 44, // 231: WAE2E.Message.LocationMessage.contextInfo:type_name -> WAE2E.ContextInfo + 44, // 232: WAE2E.Message.ContactMessage.contextInfo:type_name -> WAE2E.ContextInfo + 54, // 233: WAE2E.Message.ImageMessage.interactiveAnnotations:type_name -> WAE2E.InteractiveAnnotation + 44, // 234: WAE2E.Message.ImageMessage.contextInfo:type_name -> WAE2E.ContextInfo + 54, // 235: WAE2E.Message.ImageMessage.annotations:type_name -> WAE2E.InteractiveAnnotation + 4, // 236: WAE2E.Message.CallLogMessage.CallParticipant.callOutcome:type_name -> WAE2E.Message.CallLogMessage.CallOutcome + 137, // 237: WAE2E.Message.ButtonsMessage.Button.buttonText:type_name -> WAE2E.Message.ButtonsMessage.Button.ButtonText + 12, // 238: WAE2E.Message.ButtonsMessage.Button.type:type_name -> WAE2E.Message.ButtonsMessage.Button.Type + 136, // 239: WAE2E.Message.ButtonsMessage.Button.nativeFlowInfo:type_name -> WAE2E.Message.ButtonsMessage.Button.NativeFlowInfo + 14, // 240: WAE2E.Message.InteractiveResponseMessage.Body.format:type_name -> WAE2E.Message.InteractiveResponseMessage.Body.Format + 15, // 241: WAE2E.Message.InteractiveMessage.ShopMessage.surface:type_name -> WAE2E.Message.InteractiveMessage.ShopMessage.Surface + 74, // 242: WAE2E.Message.InteractiveMessage.CarouselMessage.cards:type_name -> WAE2E.Message.InteractiveMessage + 147, // 243: WAE2E.Message.InteractiveMessage.NativeFlowMessage.buttons:type_name -> WAE2E.Message.InteractiveMessage.NativeFlowMessage.NativeFlowButton + 129, // 244: WAE2E.Message.InteractiveMessage.Header.documentMessage:type_name -> WAE2E.Message.DocumentMessage + 132, // 245: WAE2E.Message.InteractiveMessage.Header.imageMessage:type_name -> WAE2E.Message.ImageMessage + 84, // 246: WAE2E.Message.InteractiveMessage.Header.videoMessage:type_name -> WAE2E.Message.VideoMessage + 130, // 247: WAE2E.Message.InteractiveMessage.Header.locationMessage:type_name -> WAE2E.Message.LocationMessage + 151, // 248: WAE2E.Message.ListMessage.ProductListInfo.productSections:type_name -> WAE2E.Message.ListMessage.ProductSection + 150, // 249: WAE2E.Message.ListMessage.ProductListInfo.headerImage:type_name -> WAE2E.Message.ListMessage.ProductListHeaderImage + 152, // 250: WAE2E.Message.ListMessage.ProductSection.products:type_name -> WAE2E.Message.ListMessage.Product + 154, // 251: WAE2E.Message.ListMessage.Section.rows:type_name -> WAE2E.Message.ListMessage.Row + 157, // 252: WAE2E.Message.HighlyStructuredMessage.HSMLocalizableParameter.currency:type_name -> WAE2E.Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMCurrency + 156, // 253: WAE2E.Message.HighlyStructuredMessage.HSMLocalizableParameter.dateTime:type_name -> WAE2E.Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime + 158, // 254: WAE2E.Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.component:type_name -> WAE2E.Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent + 159, // 255: WAE2E.Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.unixEpoch:type_name -> WAE2E.Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeUnixEpoch + 22, // 256: WAE2E.Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.dayOfWeek:type_name -> WAE2E.Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.DayOfWeekType + 21, // 257: WAE2E.Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.calendar:type_name -> WAE2E.Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.CalendarType + 132, // 258: WAE2E.Message.ProductMessage.ProductSnapshot.productImage:type_name -> WAE2E.Message.ImageMessage + 132, // 259: WAE2E.Message.ProductMessage.CatalogSnapshot.catalogImage:type_name -> WAE2E.Message.ImageMessage + 129, // 260: WAE2E.Message.TemplateMessage.HydratedFourRowTemplate.documentMessage:type_name -> WAE2E.Message.DocumentMessage + 132, // 261: WAE2E.Message.TemplateMessage.HydratedFourRowTemplate.imageMessage:type_name -> WAE2E.Message.ImageMessage + 84, // 262: WAE2E.Message.TemplateMessage.HydratedFourRowTemplate.videoMessage:type_name -> WAE2E.Message.VideoMessage + 130, // 263: WAE2E.Message.TemplateMessage.HydratedFourRowTemplate.locationMessage:type_name -> WAE2E.Message.LocationMessage + 46, // 264: WAE2E.Message.TemplateMessage.HydratedFourRowTemplate.hydratedButtons:type_name -> WAE2E.HydratedTemplateButton + 129, // 265: WAE2E.Message.TemplateMessage.FourRowTemplate.documentMessage:type_name -> WAE2E.Message.DocumentMessage + 79, // 266: WAE2E.Message.TemplateMessage.FourRowTemplate.highlyStructuredMessage:type_name -> WAE2E.Message.HighlyStructuredMessage + 132, // 267: WAE2E.Message.TemplateMessage.FourRowTemplate.imageMessage:type_name -> WAE2E.Message.ImageMessage + 84, // 268: WAE2E.Message.TemplateMessage.FourRowTemplate.videoMessage:type_name -> WAE2E.Message.VideoMessage + 130, // 269: WAE2E.Message.TemplateMessage.FourRowTemplate.locationMessage:type_name -> WAE2E.Message.LocationMessage + 79, // 270: WAE2E.Message.TemplateMessage.FourRowTemplate.content:type_name -> WAE2E.Message.HighlyStructuredMessage + 79, // 271: WAE2E.Message.TemplateMessage.FourRowTemplate.footer:type_name -> WAE2E.Message.HighlyStructuredMessage + 57, // 272: WAE2E.Message.TemplateMessage.FourRowTemplate.buttons:type_name -> WAE2E.TemplateButton + 188, // 273: WAE2E.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.mediaUploadResult:type_name -> WAMmsRetry.MediaRetryNotification.ResultType + 109, // 274: WAE2E.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.stickerMessage:type_name -> WAE2E.Message.StickerMessage + 167, // 275: WAE2E.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.linkPreviewResponse:type_name -> WAE2E.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse + 166, // 276: WAE2E.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.placeholderMessageResendResponse:type_name -> WAE2E.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.PlaceholderMessageResendResponse + 168, // 277: WAE2E.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.hqThumbnail:type_name -> WAE2E.Message.PeerDataOperationRequestResponseMessage.PeerDataOperationResult.LinkPreviewResponse.LinkPreviewHighQualityThumbnail + 186, // 278: WAE2E.Message.PeerDataOperationRequestMessage.PlaceholderMessageResendRequest.messageKey:type_name -> WACommon.MessageKey + 34, // 279: WAE2E.ContextInfo.ForwardedNewsletterMessageInfo.contentType:type_name -> WAE2E.ContextInfo.ForwardedNewsletterMessageInfo.ContentType + 35, // 280: WAE2E.ContextInfo.ExternalAdReplyInfo.mediaType:type_name -> WAE2E.ContextInfo.ExternalAdReplyInfo.MediaType + 36, // 281: WAE2E.ContextInfo.AdReplyInfo.mediaType:type_name -> WAE2E.ContextInfo.AdReplyInfo.MediaType + 39, // 282: WAE2E.HydratedTemplateButton.HydratedURLButton.webviewPresentation:type_name -> WAE2E.HydratedTemplateButton.HydratedURLButton.WebviewPresentationType + 79, // 283: WAE2E.TemplateButton.CallButton.displayText:type_name -> WAE2E.Message.HighlyStructuredMessage + 79, // 284: WAE2E.TemplateButton.CallButton.phoneNumber:type_name -> WAE2E.Message.HighlyStructuredMessage + 79, // 285: WAE2E.TemplateButton.URLButton.displayText:type_name -> WAE2E.Message.HighlyStructuredMessage + 79, // 286: WAE2E.TemplateButton.URLButton.URL:type_name -> WAE2E.Message.HighlyStructuredMessage + 79, // 287: WAE2E.TemplateButton.QuickReplyButton.displayText:type_name -> WAE2E.Message.HighlyStructuredMessage + 288, // [288:288] is the sub-list for method output_type + 288, // [288:288] is the sub-list for method input_type + 288, // [288:288] is the sub-list for extension type_name + 288, // [288:288] is the sub-list for extension extendee + 0, // [0:288] is the sub-list for field type_name +} + +func init() { file_waE2E_WAE2E_proto_init() } +func file_waE2E_WAE2E_proto_init() { + if File_waE2E_WAE2E_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_waE2E_WAE2E_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContextInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BotPluginMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HydratedTemplateButton); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PaymentBackground); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisappearingMode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BotAvatarMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BotSuggestedPromptMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BotMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageContextInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceListMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InteractiveAnnotation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Point); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Location); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TemplateButton); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Money); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GroupMention); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageSecretMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MediaNotifyMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PlaceholderMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_BCallMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_CallLogMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ScheduledCallEditMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ScheduledCallCreationMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_EventResponseMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PinInChatMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ButtonsResponseMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ButtonsMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_GroupInviteMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InteractiveResponseMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InteractiveMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ListResponseMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ListMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_OrderMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PaymentInviteMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_HighlyStructuredMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_HistorySyncNotification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_RequestWelcomeMessageMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ProtocolMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_BotFeedbackMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_VideoMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ExtendedTextMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InvoiceMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ExtendedTextMessageWithParentKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_MessageHistoryBundle); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_EncEventResponseMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_EventMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_CommentMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_EncCommentMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_EncReactionMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_KeepInChatMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PollVoteMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PollEncValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PollUpdateMessageMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PollUpdateMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PollCreationMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_StickerSyncRMRMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ReactionMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_FutureProofMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_DeviceSentMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_RequestPhoneNumberMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_NewsletterAdminInviteMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ProductMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_TemplateButtonReplyMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_TemplateMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_StickerMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_LiveLocationMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_CancelPaymentRequestMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_DeclinePaymentRequestMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_RequestPaymentMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_SendPaymentMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ContactsArrayMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InitialSecurityNotificationSettingSync); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PeerDataOperationRequestResponseMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PeerDataOperationRequestMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_AppStateFatalExceptionNotification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_AppStateSyncKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_AppStateSyncKeyShare); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_AppStateSyncKeyData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_AppStateSyncKeyFingerprint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_AppStateSyncKeyId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_AppStateSyncKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_Chat); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_Call); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_AudioMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_DocumentMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_LocationMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ContactMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ImageMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_SenderKeyDistributionMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_CallLogMessage_CallParticipant); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ButtonsMessage_Button); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ButtonsMessage_Button_NativeFlowInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ButtonsMessage_Button_ButtonText); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InteractiveResponseMessage_Body); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InteractiveResponseMessage_NativeFlowResponseMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InteractiveMessage_ShopMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InteractiveMessage_CarouselMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InteractiveMessage_NativeFlowMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InteractiveMessage_CollectionMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InteractiveMessage_Footer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InteractiveMessage_Body); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InteractiveMessage_Header); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_InteractiveMessage_NativeFlowMessage_NativeFlowButton); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ListResponseMessage_SingleSelectReply); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ListMessage_ProductListInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ListMessage_ProductListHeaderImage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ListMessage_ProductSection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ListMessage_Product); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ListMessage_Section); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ListMessage_Row); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_HighlyStructuredMessage_HSMLocalizableParameter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PollCreationMessage_Option); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ProductMessage_ProductSnapshot); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_ProductMessage_CatalogSnapshot); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_TemplateMessage_HydratedFourRowTemplate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_TemplateMessage_FourRowTemplate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PeerDataOperationRequestResponseMessage_PeerDataOperationResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PeerDataOperationRequestResponseMessage_PeerDataOperationResult_PlaceholderMessageResendResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PeerDataOperationRequestResponseMessage_PeerDataOperationResult_LinkPreviewResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PeerDataOperationRequestResponseMessage_PeerDataOperationResult_LinkPreviewResponse_LinkPreviewHighQualityThumbnail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PeerDataOperationRequestMessage_PlaceholderMessageResendRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PeerDataOperationRequestMessage_HistorySyncOnDemandRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PeerDataOperationRequestMessage_RequestUrlPreview); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message_PeerDataOperationRequestMessage_RequestStickerReupload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContextInfo_ForwardedNewsletterMessageInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContextInfo_ExternalAdReplyInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContextInfo_AdReplyInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContextInfo_DataSharingContext); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContextInfo_UTMInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContextInfo_BusinessMessageForwardInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HydratedTemplateButton_HydratedURLButton); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HydratedTemplateButton_HydratedCallButton); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HydratedTemplateButton_HydratedQuickReplyButton); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PaymentBackground_MediaData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TemplateButton_CallButton); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TemplateButton_URLButton); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_waE2E_WAE2E_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TemplateButton_QuickReplyButton); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_waE2E_WAE2E_proto_msgTypes[3].OneofWrappers = []interface{}{ + (*HydratedTemplateButton_QuickReplyButton)(nil), + (*HydratedTemplateButton_UrlButton)(nil), + (*HydratedTemplateButton_CallButton)(nil), + } + file_waE2E_WAE2E_proto_msgTypes[11].OneofWrappers = []interface{}{ + (*InteractiveAnnotation_Location)(nil), + (*InteractiveAnnotation_Newsletter)(nil), + } + file_waE2E_WAE2E_proto_msgTypes[14].OneofWrappers = []interface{}{ + (*TemplateButton_QuickReplyButton_)(nil), + (*TemplateButton_UrlButton)(nil), + (*TemplateButton_CallButton_)(nil), + } + file_waE2E_WAE2E_proto_msgTypes[27].OneofWrappers = []interface{}{ + (*Message_ButtonsResponseMessage_SelectedDisplayText)(nil), + } + file_waE2E_WAE2E_proto_msgTypes[28].OneofWrappers = []interface{}{ + (*Message_ButtonsMessage_Text)(nil), + (*Message_ButtonsMessage_DocumentMessage)(nil), + (*Message_ButtonsMessage_ImageMessage)(nil), + (*Message_ButtonsMessage_VideoMessage)(nil), + (*Message_ButtonsMessage_LocationMessage)(nil), + } + file_waE2E_WAE2E_proto_msgTypes[30].OneofWrappers = []interface{}{ + (*Message_InteractiveResponseMessage_NativeFlowResponseMessage_)(nil), + } + file_waE2E_WAE2E_proto_msgTypes[31].OneofWrappers = []interface{}{ + (*Message_InteractiveMessage_ShopStorefrontMessage)(nil), + (*Message_InteractiveMessage_CollectionMessage_)(nil), + (*Message_InteractiveMessage_NativeFlowMessage_)(nil), + (*Message_InteractiveMessage_CarouselMessage_)(nil), + } + file_waE2E_WAE2E_proto_msgTypes[65].OneofWrappers = []interface{}{ + (*Message_TemplateMessage_FourRowTemplate_)(nil), + (*Message_TemplateMessage_HydratedFourRowTemplate_)(nil), + (*Message_TemplateMessage_InteractiveMessageTemplate)(nil), + } + file_waE2E_WAE2E_proto_msgTypes[103].OneofWrappers = []interface{}{ + (*Message_InteractiveMessage_Header_DocumentMessage)(nil), + (*Message_InteractiveMessage_Header_ImageMessage)(nil), + (*Message_InteractiveMessage_Header_JPEGThumbnail)(nil), + (*Message_InteractiveMessage_Header_VideoMessage)(nil), + (*Message_InteractiveMessage_Header_LocationMessage)(nil), + } + file_waE2E_WAE2E_proto_msgTypes[112].OneofWrappers = []interface{}{ + (*Message_HighlyStructuredMessage_HSMLocalizableParameter_Currency)(nil), + (*Message_HighlyStructuredMessage_HSMLocalizableParameter_DateTime)(nil), + } + file_waE2E_WAE2E_proto_msgTypes[113].OneofWrappers = []interface{}{ + (*Message_HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_Component)(nil), + (*Message_HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_UnixEpoch)(nil), + } + file_waE2E_WAE2E_proto_msgTypes[120].OneofWrappers = []interface{}{ + (*Message_TemplateMessage_HydratedFourRowTemplate_DocumentMessage)(nil), + (*Message_TemplateMessage_HydratedFourRowTemplate_HydratedTitleText)(nil), + (*Message_TemplateMessage_HydratedFourRowTemplate_ImageMessage)(nil), + (*Message_TemplateMessage_HydratedFourRowTemplate_VideoMessage)(nil), + (*Message_TemplateMessage_HydratedFourRowTemplate_LocationMessage)(nil), + } + file_waE2E_WAE2E_proto_msgTypes[121].OneofWrappers = []interface{}{ + (*Message_TemplateMessage_FourRowTemplate_DocumentMessage)(nil), + (*Message_TemplateMessage_FourRowTemplate_HighlyStructuredMessage)(nil), + (*Message_TemplateMessage_FourRowTemplate_ImageMessage)(nil), + (*Message_TemplateMessage_FourRowTemplate_VideoMessage)(nil), + (*Message_TemplateMessage_FourRowTemplate_LocationMessage)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_waE2E_WAE2E_proto_rawDesc, + NumEnums: 43, + NumMessages: 143, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_waE2E_WAE2E_proto_goTypes, + DependencyIndexes: file_waE2E_WAE2E_proto_depIdxs, + EnumInfos: file_waE2E_WAE2E_proto_enumTypes, + MessageInfos: file_waE2E_WAE2E_proto_msgTypes, + }.Build() + File_waE2E_WAE2E_proto = out.File + file_waE2E_WAE2E_proto_rawDesc = nil + file_waE2E_WAE2E_proto_goTypes = nil + file_waE2E_WAE2E_proto_depIdxs = nil +} diff --git a/vendor/go.mau.fi/whatsmeow/binary/armadillo/waE2E/WAE2E.pb.raw b/vendor/go.mau.fi/whatsmeow/binary/armadillo/waE2E/WAE2E.pb.raw new file mode 100644 index 0000000000000000000000000000000000000000..da0e79625a5aca23c0b1e479f67e3f536cbc0113 GIT binary patch literal 47243 zcmdsgTWn-UdfxIjLl!T?IWwA}jg#4kbUa%*Zr^mUh4YOMrEb)#{Dw>E}!A2D*u z%_qpgUy~C*_q4Hn($}p)?;Ppwr_H?mw6WGbIq7zgWqz29((nDVadmaO)$cbRwxW`n zJL-0xw0ix+Sxa*FHRBVGCnv9Cc<_KDTT- zZBv))7gW&~0*rn{&9zU^JJ-O3H1J%|K-DXvGZmtWTEM6VjiZ4BF)1KE8Gu;J6w*PZ zXj5G~?jFg+I5<-R=Y;^yR<@K5t3`Y2M(h0nXQa7@9}e0TfmRBjRq`cuQFZpO**!Wt zX>}5aR}1^Mo-L)rYMk-LS+m`B9h(*~;f$BPB05un0G_m)tpvbKA%J^c5uK?Jy{aaU z8pp>=N-Ew6reqCSS_(+PM~%VKY;i$kp&PkX(=66i|(tN zc02XUy?M}bavv=csjD+}@J3_j)j-wc$1NMc{bs2Cb9R zPs_ z#JoZ}s1)s}>&@1a_E8JRDuMK(Kzb?Y=z3UA=c`6l6`dFof_Escv})%;cj;vT_-q!S zS3nn3ihfAV9)qfI!~3+rh_f)3x6%^YFCN`h*PgUnPixrU4#H;yLb$XWXT-0VrtSk< zP=_^ni*hTxG9~I>=mAZmD+XNf(>Jjq|etEId~@FkT@YR3aGAf!O?g2j=xcFlNKMLOQ4v z{dslEf(d8sa{}%&!A`K?g2H+T5Z>LV=DNwA|IZ8X@b0!4GE-C+0w7vxW9RokWa3tF zQ}6`=8}7YouAnZcOw`$H5nf7LFAKa7b?R&>9aiK0Wl?ASymO>ak{$hqzzgp$i$SIA zwzgx@#UP0MynzSnu=J)h5F$Ts0)h(q0$@B&r`_Y@HOz`XDQ`&|;c?o{m()eoi3JDW~&Q3GZ>Mh5KaD5j;z1m9z0rWoce?R zk^l~OSOIps07&#eJ?rS3N8L_q=j`M##d=?s7G4X^ouhGb<@In-QB7SBu=Bl@r5_k| z1o^r=buDb@?EYW+N+HBbuAnZc9Nkg#ttKdgg!KMuA+&-S&er3)Y0KAfjRvlfj-KSCS5$ZYw-8AHqqu6IEOv6v5(YyOTYQKO!(+47T)cP)z444x8||m)`mQCj9N_NG)aNr-D7` zkVjd7zZ!J6?oX#zTn_~leNCy;!4n5|RltViOol1(nEpDl$#I;_Pj{lw6on;@3Dz4O(xPV>06v?0*KE8Px0 zQ&blMAR-5Hp|H#&lJ5xA@L~XN$(Gaksw5{5Ib=8gn*u7F|5c9H7SWjs(Z0HQ+#L+s ztt^YP^sWFJVHFCivtO+z-VpB=_N(F*(U}UATVSH3KyaNeZ3(PUZh`44Dy@fsA#r(> zU59M}oZBmzLX_b7i$|>1X+7;9w+5ip%FPoVc%KX05uhPf+qs~Mz7Syag1mFB|DvYRWY3o6Hdc}zw5 zqFA2E!TD)R#Kj9MZv{iiS6KFv_E1qv_0sF=T96UlRyVfG^}7dK)t$SQ^@H`wz3N(} zzW9mwzl^Cl|ENUItC>E~0Pc?Jx|Lg}3DKIGIl;BwU~3|wURcR-65hdE-gbp`T8~Yf zKzJsS?6fe(c_gPw2GYPzCR$blSxw})lzq9y>Xhuzy_t&en z#WDW8S6#2v7RTfNH>nn~SdYNleL>AKwrTA?alg$HsnpH}*z9g>A;F!6w#-jkLHo5S z|8Ji4gu1S`j`}jl37tucR@F2cl$qo}7goaKUC^4Wa#9albMCa!gP^8;+UN}WOH(gR zKxgoUVB-|P!Lf0*bOuCxs;;rTS0Gwc6YnOQfj>Xe$twN*F*VC3?Mz1VYG$prvr}2y ztE^*fmAbNBt=I8;jK4R^)h+xUkLJ|0uDokXO+>d;R9;)F?4r&=WvgDfzgf|h#Yt|H z+RmL?b?46FRCGgKtE2YL8Vaqxcd)**zIY{iPTfut?T$KFD{pO8^y1ah*VHt-#%U)g zUAeQrRo3WLq!#LHo0au_bViD!cMD40tKnQ7tZkO}u>XE-Of3zgE}~b|#A9GBYKCT4 zZeqoF@pU^mF>;9mqiGh1w$wDv(7-!zZwAXdtchh3GiJj$2&I?Rv`fvNAk6Gq856U$ zI2QlGn0h_~G@x3e6?L=ksHVO43FNtrlhf_G3}!+X=0&^ScBg7p(5djJZBC}c*PkJ1;iE0)0#vN~BD@x3v1v*-@R(VFgAd6SH5VdYCfe~YRuXA(_^ z9hm4PH9PQTi?cAH{iM=Y)%6^J>^cFxncY0bbFx$0J20Q)@qZmtiy`Sf@-F*|y?M;a zgo2C^?6M3@E}Q7{>N=GVt)9OTxFQoepHccDHOaa_DRb_u?Y*~K!GXG_W_PPQ2OBkg zfWwDHx~}H;cl@OB_#cm}Tg8GZY{?t_)^Y0y3@4PSr^k(RY6Rtqn%Vq>F3OBvSBtKW zftnz>Tzd3HTo0Z|mIIt!iR_N>WwCy-=<9Y`4So-m0mVb{Cb#q%J6)N}4s*9&t?zD? z-#gf=d~Mz8Z@7_>#U|d5YZ3Y zGs7dcuo6;W#h^TV^rLE_1H$V`YvZ{4RMaPCC%qkD?_xkZnW{Pf6|bv>Yzfc-lbr_W zMLAnqesgDlDr=nd->uhn3<}a-O1!L;X`N%|PHTD?%K-9|N-ITJK**o^Zf&Pt0kQ=4 z+$rx>?^O;qwrckm$4ft^RJyLYE2Of$yZ0WdO#?Dfh)`4OwYB~2%Ff>61c~VCcKHqo zsDz%LBE_{;TSGIooy9Aw)9Q-ZY4J}_s3@=Eekb^l3Gdq;nzHD;wqgtvy2-@0K-J zY%KouNfi%Q2Sh(Rrk+iYMJQb`cz-Q8A;ZBfr-vW_1ynk`9k4u;hux+ldY4CUZxyw) z)D73em{wedR^z`prX~r5=XH?Wh4v=gR#zT$dnd4dG2~B3=v^=ogt@#Sm9+&@dKFBH zq-0kM*EWt?Wv7ngQ$KhMYt~lJ4xPvkgIKtWX>&%oII-uHcAu-yU!+}%|7bx)-XI;_ z(1N<_QTMbCVPNY)4_BYfkVBSdGxHFZ>!@xkVP_OWgUI$e%!Ek0q2sOzp3>Qs5NQ`Q zu@+WELwR^?B;Eh65gzrC8cCNa9Zen{l&;r~8nAT$Rq2{A_#zbL6pbTWku*sFD|*La zT)Ay#bN6}yRC5Pti>afp+5>0~d?;@ysP7#-v~K7f*;^yEz9IAx4+iO^4|#Nd8{z?P zAA!prPskAb0s(Thf7W{d0o~=t*RG1cFPH14vUX6wGcBALCj4IJFa@clFRQDzE(HsY zovH8Zjq(~fnk#C2V-=Sy{#WndipBr?<;97(M+r-2mqb6Hrm)z}J{Fb&oKUKmUl?u5 z7xa}&JEeoZ#=kVKuIDy!^cR$)8*Rhu!%?!Ex*QbmGB8w4N{oUxv@;2DQkEXdXB3RZ zAhB>PS}mrXFijR>OVAL9Lbc`^&!xve4>?2vnbMWR_IFeA#eUfx$cdiO+<_x*nD}{K z3~~|*ZlO3HenZ9o8nn1M%0+COVMad!wyl`w@-2dama=TyD6R*OWXA$ym|jtseNWJjb}`)7wnsAQHm`Hq%V^r!)I8wkJ41K2=6qBcv2 z$!T4XvwBrciKKk>W|2ip{C6kR4O(9X^b>e>E7Zz#?2ekI1(Q&d>{ycV7MgrHhj33aSqFN)Uk>)5S^XmW!8&``k# z06hfhE1lGV84yjfY2L_k!YUhrD3nwAV5~u;t07k1K8TM;EE4~ZG3d0iosH^A|Lxe^ z^%=?x3i|J6!_9z$0HCvms}-y#>pGj$#1#N!lEKhYQTtHH%^sfNpn$5VJ?*r5yi&}D z$fd`BPTleb>VYJmYu78;=4nEn&n2D+`P}${TCmXVh=*)%>@C|?A9FyOm1^u@vHRoHnl2;R>*kmo;Cns!>NGr@LrU}f2Rn^H__YBvM zA&}ApAeAdn#thE-7Nvy7E`Ar5<)bdewXFsg-O<5?e_f z40=!WHlzW76Vnt94%qzIoDg2_5alEZvYs%S=|D2doT&jnqSs&<-yJlL%O{+Yx88j7 zO%Z!e!16ttOjU&>t)2B?G;nk-vZq;rmCp#TvFj)|g5W1l3(lcpjvxma_l%4?>!pCr zFfZ*CD+G(Hl)hxQmg7d2)Xkb+uV~AP9Hcrhh>sw@D{s~AERL0GYE~B0>;Rewm|A<~ zz5RN&Qg!DW`&CVeA!L9~&uXQHl{FX@KqEU5{|D&OicEc>OPlStdbE=l3WlW3LQY6r zR1@xQNj2@m;HtMM8az+bPJ*kk>OpepD_|c}DB0^D!p)7<-Le&h?$qv8F{rC*Vt==a z@%-_;y1iNK8pNGSxo`iJe5aw+(gYGSpsz?Ficr$fl713-3nL@O8J@sqwqJ66Lg9Sa zIC{MG&`LAagCr%Be`KkoH2(-*Dc4Es9=E^SI6Q_c4B0N6LSpc*2h81&p)GILw@E?! zAX;GGbsjKRp~*a0009xVkI-dvsKexZ$)hE6zJroSkaEmEI&VVe+iGt1PvorUbyCjl z!xCw@Zqq99Zz`-?@gSl{P($0}Z!h3z023 z=)6jrtp|;>W2@rR?lb<~t7;bgbG4$MR5P${ffEIJ7w+2Gm4okp_zpa$!u^IdgJ}jm zP1|G#&N}V)E2rI~M|S={rVi}8X4rwG&G=6y)y<-A(xq>v**LE~xZi3$mbqD2Ir*69 zW_jH;C~R8VKIIwbtwv9#XkN>2UVktU89b8RG_TDE5rTAkTe8S(&1)}(kRElNPdbgU*Cnr`3HB<1+P7j<}lp^o+TS<{XkE zjl(_CNU0;AOVhxAn&P!5Cct!E+361258B3GTdtorqz9Yjl`nl+Iy(oY zcaq}rw_2Tt*r;r2(&U>IN?1fHLW4~buX8&2CI>@EFlx2nxtYPiWD;e+w|ih2b{lAc zY66gu%_Jq#;EK^}Av8#RF06bxw}lJGw(O1BY(@u%Z5};3>pT{6Ne%|iSein@vfFDv zY*yC=aDSqB_`tpKM87!T)T0P+PhNV^O=r|+^7$QmA z89g+=^b6qHgISH9QP-tMB3+pF*C@-BqsUUJtW;X-9Cs zbxb2qOFV411`Qms26RLVLOapnh(xh7#Qj>Zfi8ryEVNSsLI)rridx8)poZP(<3C|c zx^@n%dOrUBYa;dV-RL1~rdgo9yo=cc7Jy2@*b?&$=0!_j&V8t!%~ABGx{ldC#xt(TnX0hIm@^KTr^$Wq!v!QVcH6~V+ z2o1QW{s?B{a*$_pQnzwJQC$dtPL=^+yEWwS&*n^{1JJgx9s(r#>tpH_dy;YX&wA~_ zxj$e#)f|$glJkmdK?9dm)+06&{q&eBx$$n`z#LcJKWd4%*6)^$H4&;j-Png$)FS|g z0s11WWzY*yN7!fExZZ5cire;-!u&6jt#cK?+RxJ>Hg%3NVIdZ>=UitCk*Q0rWf;5C z@*r!z8NIJwbhxs13LjPxxSAja7S}A9s0^X$!>+}!Lu%>Ez(&6~rd}P^bf98bGLnq& zRvgxaptc^h8M;lt&uOF8YLc0C<2Ml`LIvk)uAnZc%zGGCL6G{01oej8K3+=HQ=jaa z=`P0bOE*zvcIETgbzZ&@pX-Z38kc=2h2#h%!3v&{hEkXPumD~5!?e=>ny`jma@XCf z-K7>8ms@3bv$9>$xH0RMy*-+;Pta=JOMY)>?Lb$oHP~eIN%ia|#Ev!n-a(yNJGH&) zM%7wwO@ZKCD(~(d@ScULrI!x9MD(ls~#RUYkd3m=|(LxLy)OIm_ z0?&5yz?NQI#C`Yqiwe4FO=?`{+&eJ$D_d)|?Mjjvkx^NNRrW@uvd+0la&9nZ8=Whg zF};`M+>HNlMn(A}05qjej3ENaWy7u)-}qiRIuSi?cbYTdRY7gr#FD*2E6V&bcjmkd(bs*{SI28l;|oGBLDq zH?9jB->KX&W|ku~o|H`*=T=#->)>9s zz7Jo3_YQy_DrHES?=1e*So9V3_6T(~)VcS{J9`IvHDe|JQ{$zdolw_;eMeb92AbP3 zz`UPQpUh+>^O&yZ&?4zFenx$&7>d7o6F4?66cCjP1ud>eEP(GlLkoT z4OWKWrMP@6fgsnCl|VpP+Hb**AI4S`9?Zk;%Y0^J6Jo{U$tFT>QnLULNIS#V$BA{4jJ!sg zv~Q@9{*Y=mXw)IpXf+_ld{{^LJ6O+2aI!g_ONW8r0#*n{J1)ZF5-G=pl~6b8Z^~t_ zxDKjwqqv9^LQziZbNlK+; z3~V;13vxu8%58DPZsb07tu7Z;~jffe?liE94n>s=J#M zq2ebjo@*Kk@ZXT=JNs<2h%5 zO)u?oi=xy(z^JKHD=<<%<=(?X5fNO~)9#z5emv&%H|R8_1jT$;5q>F?3O)Sf0|?~h z#OIB*3g!Vude9&!n)D(E|X30Dk!K z7X!`UbA|!*@HzBQHwtDl>)8Qz-TC3rc%Z(&3i2HuS=LkMfC&>N;9Ku(X7QzoSRig( z@atTwY}U45zhS(uj3d@m=~tkfb4Wt;O7GS8D%-%fXsIs0tve{C$Q!E%^)+4HrE6E3 zzY4J6@Imu#*YpnP=~Z2+e5(T9-MF=1rL+NRHp&j}l#}FXAnAq5H)|{4%OS28C^J&D z2JXJ1cXbskuq3PaUm@rMX3Pt5M-&hG#F1+6g#W>PKw z&2b29jQqu_985%{?~6V0?;NwE(mN-o05x35g$hu^jd)}`m617GT-cJrn=9~Z=N1^j z$_+vuSTDHYpRu` z(QGWFO${!}n2&!I=HalyB2y=*CvO8qH6pWZ?{!k18}!@Vc88b0V4oSCd|RfVHz0lz z`~qtOFa;(d{)>p1la2NCT58N`<|EXSI9pGk!9~D%*m9QhTupQIiiMWB(lKmsu4Bst zJt%^EkuWp|_d{-vzlI=9=uHq6v2d7w8r^|1{dz9Y<;W=Ub84E=H04g^qAaXjvmye* zlxs675Nf)(akHAP_-jy1!}0PSu61{KKm$8ZjG8C~jX6H(^dK2t^mD9?xxLpoJ`?j4 zoKAOoIhR9DuQ}NE^ggGa&BYOQs{Hup;O~~pg=NI8Q#AYmvCfb>(Hm;=3CS9>$3s^p ze}q~JM(Z?wF}4PR4Dvpdxh}f_Q50pZ6oB9J0au7XfZuZ&@jo0_HwZNtGlf!^bBA!} zwEaqu6$dqA;~A{MRNby9ja6rJK^Y1fST=h=yPDCL)h)9RXqRd?h%sVk-{)sQI>XwFbBJ^m$_$b=YXR1*)UqOog5A%%z|8EqYMF)psTb7m>8 zut~)Mdxq|xud65@q7^bLhxM&mYS^U^|G2uIi+oNdm^MzZm*V}EI#>p&elzBf4QqxM z{Hd&z8L;_)sob+xx4WB*uN!VGgTgPn?BoB8*jN_@GNhO#jg6QNEt|+0NK1J(;z4R& zXv6X4WT>8W+E5aSbQ)XHFw&kS50B7<&ZWoy^Gf0z-zQ8vFNrpn;&#HB&fk)Yc|0J7l;C4j8zM zzlry(7rT-94e?DM&D$gXRcMrgF*6M4shKn5LS{Brcs=+|wIH0m3PdjMd)=x((u7oI zX?MDKtBycVf@Jq?LhYnv(kO~P?ZHdKbEV-d!KorhCRXj?LIQs5!4A+eA!&-!=@=VG z(dppYa--r4Lk9Je-Iz!4Z*TaLLHX{3b`M^OEQ=P5mrf>)qQpMTg?ED<(?OrNKdxfu#$deI{pT(?!;Wsk`0c%w zrpV}r1w1PbcNVaE?9$~oDKSveD#EU`P8)HF57nZZj-*4pM`m-T(=OZ1^^kec zIe6U81N$-!wzH8mc`5N9Ov32Acvg!-9vGw=dV`J-scu;48dsnyq2Sd%oQ%Q5Rjo~!@@n0^`glMf{Dm;HXyzzndsX0 zrD2{^bQtnC`S$ElIM49@GS(?1WQ;uuXD_iwL0>(a5JS*;DLkVbi?z2QV$a&!6pEvH zMhnH!;1h)I+koGygGt(NUgy$z`qQ$`2!zz%oX%&kpY49R(}rOIq_p!WCQ@3LLW=Vg zehW@nDTdl}pv=9r@OmAMNe~Lk?1(xx_g-C8;}f8u{6vZy(7z|(WqM+t0wtvTCUuYB zZM(0m&5566YH!J-24ZU>was_@Zza@B?lC`7`^^^Ij#~XK@Zp0qSkiNkjzMXkO(yr| zlDeITrYLvq7;NipQJ2oLjU#XxjU!kBKzxM|S|WwO3Wn)ilRm80K_+gWnurDC+DoA) zlZC$qS@`3p?S5;c*FD*8JnXjE~fFE2bVOZ4;)nv9B-)SFM9KEWH{d&SI;=v zO6J{3FebCq_F58A*oE1ZP;lcHAuHpvrqzD;iz{#afaQ6LvbYd|LnDw*n!*EPC2-s? zP73BFaq|a(0)z(7#}B}wUNMmEwKV6v2jE40u5BLlqbfB4lI=6QvSdrz$Ofy4i4fud zCBNg}f|>z{A$XNDoJK=9TsV!Z>bf1FoqHz$92Q?bUpyFwVFE@Q#y>^y2hx*xXf5+b ztB58{d|OWf>*CuoDf&Tp9ow4VzkEW`@fjAd{e+XfE&ky!a{O)eO4WEsUg8=>)jrHa zbFNpF4yD*l*`m|>q9XBc~O^sV8$D#M(3L~%p(oVO+$23?do7Xsw90o`BcyAAMU z++mP$yKg#!-!AA)pJ4`!8eqqr1fwKh9@de-g{Y_;q3U7H#lL`n4h6tjDf&^X?%qG8 z?iWq5e`ca6tW2Ko-lnyNJn9XDw8WtqzCWxWQ)SfVJ{-Q6V{d7P&dfP$^5y3$Z=?=#S=dQ? za7LB;QM@Y_fb^)A+YztdBndggRztjJ4O;<0%wvTOH>6COKzw_e+JIWwte+J96GT*f z^qrK{B~d@S@-t%}@fsIQqrW%F^nT+EVP*#BNmmfZCGA)Ix5m|r9+096qy#+ngbSNB zS$DI&Nj089ab~uez}W`TC(TO%Bc{!y5l1?E8oOM{H}{vzOH_Su4dtRi1YM9NBqVtZ zWBbX)n*s@$q;U1*%UY3=6`R5vAuM2$;{QFZUMxU{@~pPq>3{kc$xoXnQCJLZ4*bP1=27!IlS_3DxNXo?0{wv&m49rCf1`Q%S{O8 z85HNqsdU&6d=qPR%e7{sHrQ^1NxAa4bzWU}@jk;>B!gj*>2*F^f>0<}y;Z)U3wnoL{eV@fs_n@kUtQ3rbT z5v9Ob{EsqjcV(C7`7_do-T#7U7ZP@Ypu{CiXCTA(Za zfa{+yKZatq%ujY#7@frMT|p{2t1F=8OJW;hloM&fh5G=b|Ys=O!3d~5(ar6t!JI8sFd~W{q ziP-peV2~Bq#j|~1R=#N$J@t5e4AScP)RG{JQ zgK2Wy4V~&Ik;-@?$Bz0J1d5iA54U^c-uWC z+nh-w>B=&u+5XZk(&vbsohFePJ!v}>;Aquqlhl0ab|c&^*oI_Y&vPiOf54aw%U zoe(1Qb@m96VOJo%oJWtAK=G9zbcrJN<;mpu#vcNTL5BNj+X@%S$@yCoF zh5IA=nA4+ke+GpN;r;|ab$d@inL@l!Kf?QdVl@Ji3_ORQOl;Eb<2genLgC3U2?%fF zB_Wp6w3*LxbBP!vbyW1$Y`F~K=;<*`LLPK=QXb6uf+s^H%S>c4Oad5`Fo^1c62#m^^&tjXVz7f5JuI6M9g1qM`%;D% z0b*WXTCOl|=S#BIA0Te$TQK{OSB$6?TKbe!ziy@MCm+Wa+a2IlB_u3jPM% z-`kc=$70dBdcmIl7DD_z?H?nQZ>wjqB#SM5P5`;cu0EgyLljojmjI4VRP5Y?YV0$nAZ9++h?@R?}N3nUI*EN zP%1*m$maxun@A9=0BMuqG`0YS8MWdt=YM8|r^f$m2fBOmVPen2d0bd|vtWt}ZieM; zS5K!Ph~E;CkQWHcPfG-6%r_DU!~5Y|)Ch^qD;Y^=jX%h@nC|B?K(jpq{0!oGivb3D zdr6PUFiz{@Ott|p#HZyZ;*TV;-^e?nja&xDax{3_09G*O!JsPLH^n!20(ptTHiRg| z&(i1AOtK!?SUx7SiNroLVSUEqKZL=BM*#6eHJUhM0~oaSJRwGqiqK5yN((8QKF4Jd z3h|>)TNQ7T(WHBxsN%W|)QKuS*kIpLQ686(`sI{wpMdu{I_~z*Kyvc1Oe0`lkRDgn zReLdU6X9yA%O10|ewsky6uAx`J7V8UiZ>B5bLbtxPPuC*d6&eU1P|Rk zKEpc?&MhBg4c~Hjf(V2?>0TODFjscDj*#U?k9KWwdGtXl0*E>luyV?XEz*Gfc`&92 zEULX~LY%l`v9`X$Lub%*Dl#_7bmu{zDH4ZQ^q^}C8=j^hM~+dZ>nR>VzyW_uL@3zX zI3F!Ou+}naL?fOGQrQd2H;%xFk(%op{kf5J7Ub|&Gm~`BKFUmd13$z}V(Dv2rSk(% zhiG?e{|+LpW}l2f03rmw+NvW$A!2vcD`ma5iI-wl;kuC-4{*XQlZ)5pbQl2- zR~eF4VBD$I@Q5g2eD4Yv-9q=KsHqmea|X{4!F9&vN%l;Ks*(HA?s15(197IIB zoH^?qTkzaVv&l|7sGt~e$g@FfE6cv~jBKOp6a%Eitk^0aCqz8rfWm{Ct z+;z}D%SZgX2-@KwCY|wAv10FL&ZiUiGRX<2Bof_?s$nJx^C-ggK=gC5@TjP^*^|Z>c2* zIoy~dzz@{ttBY#kkv%qM$CUm(5N^(LKKJ^&RXJKAE4M&arHGwooSL}$iBnT5J2xB9 z$<9Fo40W3V!R*N@MDt3_b`{R?sf`npNl8#vB}ItP`~aeu*FK(@cG*N?S0SBElVEag zE`3q@lWs~wm*u9zT=y(#X+r*t-a_bhQs5+~780k+d}Y~|QZ$Asu%TxJ0H?tz3wYjq zjXQ`cmzNka$@VDJgWBb>0%oqkC7y0vk4tp3hJ^K$1f`eky9wC&X&qknPS?N z=k=GsF`ldB)C`I$$l>*8%eR`VcxFP_t7)B0EIr1PWu_%!fpjkLJi^*$8A4n8e#BUG z0~R-HYqfn!a&4kSid@~_x_f}KJ9jGPm5DuFy>kZ_pGjM1JoU9&<(m-89;%sSRtV3P zsP3@v9z@1SG%rEyRn`wy`Qia?OI*sCL=&8R+=t-Wm?-^o1ibK&3M08K$0>(jzA zkEzoW;2TQJwXcKn@Z7i^%!ex~^FF)c4&(4S)x#i=b4B1A_f(8U8EH!C-%O~;ia0!0 zim$mC^EUIuw++@s95}n;UUM5`bf)c_cabNZOP=ede7(v0} zVUSK0yQJB9rz7{M~S1=fBs!`+|4nG@sKIG_Tf zXA_%#bAe?Ojr5D9vUk`drC*t3AnL^go*crA&0{VPJiCp;Rz5o7gVelatt^a3uiSjH zTwcEi?P>2^>;U8v&R2o({RUn+Y{5XJ=R@L7UJ%d1Vn{`mxP*Y!KBc@9N*0+G&Mj2e zVLC6SBrTmB(jk+&AP0-bCKK3hif9vH%tDK@OMeIMqh55A^lgIZ3trqyo|4%lP@%Ky z0eg~$x~wae3MVZJ`rra;fb_t?sPfur_xSu_mpc)T#@2*+cE$OAiY^9(U$&6MxWfah z$IbfV_9@T`YyjY>gTrQT>st_Y6y!2|fVq8257m^wCI$Wedg~NZEB@--#P9?0l33#0 zD`7B-pM*zB$KIDI8Pj9$^UGXl_&P5Q@S44iAIihuit%2q|C1ZItrLL%7_3G^SKqCE84^nG*Ik zRTf&Ti>FD8LtkXrU_kQtGoeU703@$!{5QZ2B=hnS_V6p_r5AIo-SS>GMl$qpJy;Ca z{UhvG$c*AV9-a*b-A?H}HHC+j@th`2${4IvsHh2;lu6`L5RqLI41i+-5ox}7FZ&+t zatQf6h4)Zz=^dqvVvyo5C&S=5w~yf9e49?}F;0==z`dl>j+*nef8;wwQ<&;}lJA@z zl>J4Iq`cLQmL4SWuFW-XSB4htxP|!UtBn4dcAuOT$oUXgnc(KM`4GK)8qd`-eJBSG zls>wppMl4_2+ze6*S(oX$sr_yw4UVCzLeOQ*$7g3!)NVzP2<@_c7mm>V1S*-2nJq% zM@_rPw>e(vZl$t&uu;?VR!kYakl)R{l-&x4fIc1 k-KTFHwmXg9`5O(O{$~65xckP_MrEaPcm*=oLHF(d56v-}+W-In literal 0 HcmV?d00001 diff --git a/vendor/go.mau.fi/whatsmeow/call.go b/vendor/go.mau.fi/whatsmeow/call.go index f4de9bd8..7a6ffcb2 100644 --- a/vendor/go.mau.fi/whatsmeow/call.go +++ b/vendor/go.mau.fi/whatsmeow/call.go @@ -59,6 +59,24 @@ func (cli *Client) handleCallEvent(node *waBinary.Node) { }, Data: &child, }) + case "preaccept": + cli.dispatchEvent(&events.CallPreAccept{ + BasicCallMeta: basicMeta, + CallRemoteMeta: types.CallRemoteMeta{ + RemotePlatform: ag.String("platform"), + RemoteVersion: ag.String("version"), + }, + Data: &child, + }) + case "transport": + cli.dispatchEvent(&events.CallTransport{ + BasicCallMeta: basicMeta, + CallRemoteMeta: types.CallRemoteMeta{ + RemotePlatform: ag.String("platform"), + RemoteVersion: ag.String("version"), + }, + Data: &child, + }) case "terminate": cli.dispatchEvent(&events.CallTerminate{ BasicCallMeta: basicMeta, diff --git a/vendor/go.mau.fi/whatsmeow/client.go b/vendor/go.mau.fi/whatsmeow/client.go index ebaf90cc..101a2501 100644 --- a/vendor/go.mau.fi/whatsmeow/client.go +++ b/vendor/go.mau.fi/whatsmeow/client.go @@ -19,6 +19,10 @@ import ( "sync/atomic" "time" + "github.com/gorilla/websocket" + "go.mau.fi/util/random" + "golang.org/x/net/proxy" + "go.mau.fi/whatsmeow/appstate" waBinary "go.mau.fi/whatsmeow/binary" waProto "go.mau.fi/whatsmeow/binary/proto" @@ -28,7 +32,6 @@ import ( "go.mau.fi/whatsmeow/types/events" "go.mau.fi/whatsmeow/util/keys" waLog "go.mau.fi/whatsmeow/util/log" - "go.mau.fi/whatsmeow/util/randbytes" ) // EventHandler is a function that can handle events from WhatsApp. @@ -42,6 +45,11 @@ type wrappedEventHandler struct { id uint32 } +type deviceCache struct { + devices []types.JID + dhash string +} + // Client contains everything necessary to connect to and interact with the WhatsApp web API. type Client struct { Store *store.Device @@ -53,13 +61,16 @@ type Client struct { socketLock sync.RWMutex socketWait chan struct{} - isLoggedIn uint32 - expectedDisconnectVal uint32 + isLoggedIn atomic.Bool + expectedDisconnect atomic.Bool EnableAutoReconnect bool LastSuccessfulConnect time.Time AutoReconnectErrors int + // AutoReconnectHook is called when auto-reconnection fails. If the function returns false, + // the client will not attempt to reconnect. The number of retries can be read from AutoReconnectErrors. + AutoReconnectHook func(error) bool - sendActiveReceipts uint32 + sendActiveReceipts atomic.Uint32 // EmitAppStateEventsOnFullSync can be set to true if you want to get app state events emitted // even when re-syncing the whole state. @@ -73,7 +84,7 @@ type Client struct { appStateSyncLock sync.Mutex historySyncNotifications chan *waProto.HistorySyncNotification - historySyncHandlerStarted uint32 + historySyncHandlerStarted atomic.Bool uploadPreKeysLock sync.Mutex lastPreKeyUpload time.Time @@ -92,6 +103,9 @@ type Client struct { messageRetries map[string]int messageRetriesLock sync.Mutex + incomingRetryRequestCounter map[incomingRetryKey]int + incomingRetryRequestCounterLock sync.Mutex + appStateKeyRequests map[string]time.Time appStateKeyRequestsLock sync.RWMutex @@ -101,10 +115,10 @@ type Client struct { groupParticipantsCache map[types.JID][]types.JID groupParticipantsCacheLock sync.Mutex - userDevicesCache map[types.JID][]types.JID + userDevicesCache map[types.JID]deviceCache userDevicesCacheLock sync.Mutex - recentMessagesMap map[recentMessageKey]*waProto.Message + recentMessagesMap map[recentMessageKey]RecentMessage recentMessagesList [recentMessagesSize]recentMessageKey recentMessagesPtr int recentMessagesLock sync.RWMutex @@ -122,6 +136,10 @@ type Client struct { // the client will disconnect. PrePairCallback func(jid types.JID, platform, businessName string) bool + // GetClientPayload is called to get the client payload for connecting to the server. + // This should NOT be used for WhatsApp (to change the OS name, update fields in store.BaseClientPayload directly). + GetClientPayload func() *waProto.ClientPayload + // Should untrusted identity errors be handled automatically? If true, the stored identity and existing signal // sessions will be removed on untrusted identity errors, and an events.IdentityChange will be dispatched. // If false, decrypting a message from untrusted devices will fail. @@ -137,10 +155,25 @@ type Client struct { phoneLinkingCache *phoneLinkingCache uniqueID string - idCounter uint32 + idCounter atomic.Uint64 - proxy socket.Proxy - http *http.Client + proxy Proxy + socksProxy proxy.Dialer + proxyOnlyLogin bool + http *http.Client + + // This field changes the client to act like a Messenger client instead of a WhatsApp one. + // + // Note that you cannot use a Messenger account just by setting this field, you must use a + // separate library for all the non-e2ee-related stuff like logging in. + // The library is currently embedded in mautrix-meta (https://github.com/mautrix/meta), but may be separated later. + MessengerConfig *MessengerConfig + RefreshCAT func() error +} + +type MessengerConfig struct { + UserAgent string + BaseURL string } // Size of buffer for the channel that all incoming XML nodes go through. @@ -167,7 +200,7 @@ func NewClient(deviceStore *store.Device, log waLog.Logger) *Client { if log == nil { log = waLog.Noop } - uniqueIDPrefix := randbytes.Make(2) + uniqueIDPrefix := random.Bytes(2) cli := &Client{ http: &http.Client{ Transport: (http.DefaultTransport.(*http.Transport)).Clone(), @@ -185,12 +218,14 @@ func NewClient(deviceStore *store.Device, log waLog.Logger) *Client { appStateProc: appstate.NewProcessor(deviceStore, log.Sub("AppState")), socketWait: make(chan struct{}), + incomingRetryRequestCounter: make(map[incomingRetryKey]int), + historySyncNotifications: make(chan *waProto.HistorySyncNotification, 32), groupParticipantsCache: make(map[types.JID][]types.JID), - userDevicesCache: make(map[types.JID][]types.JID), + userDevicesCache: make(map[types.JID]deviceCache), - recentMessagesMap: make(map[recentMessageKey]*waProto.Message, recentMessagesSize), + recentMessagesMap: make(map[recentMessageKey]RecentMessage, recentMessagesSize), sessionRecreateHistory: make(map[types.JID]time.Time), GetMessageForRetry: func(requester, to types.JID, id types.MessageID) *waProto.Message { return nil }, appStateKeyRequests: make(map[string]time.Time), @@ -218,19 +253,35 @@ func NewClient(deviceStore *store.Device, log waLog.Logger) *Client { return cli } -// SetProxyAddress is a helper method that parses a URL string and calls SetProxy. +// SetProxyAddress is a helper method that parses a URL string and calls SetProxy or SetSOCKSProxy based on the URL scheme. // // Returns an error if url.Parse fails to parse the given address. -func (cli *Client) SetProxyAddress(addr string) error { +func (cli *Client) SetProxyAddress(addr string, opts ...SetProxyOptions) error { + if addr == "" { + cli.SetProxy(nil, opts...) + return nil + } parsed, err := url.Parse(addr) if err != nil { return err } - cli.SetProxy(http.ProxyURL(parsed)) + if parsed.Scheme == "http" || parsed.Scheme == "https" { + cli.SetProxy(http.ProxyURL(parsed), opts...) + } else if parsed.Scheme == "socks5" { + px, err := proxy.FromURL(parsed, proxy.Direct) + if err != nil { + return err + } + cli.SetSOCKSProxy(px, opts...) + } else { + return fmt.Errorf("unsupported proxy scheme %q", parsed.Scheme) + } return nil } -// SetProxy sets the proxy to use for WhatsApp web websocket connections and media uploads/downloads. +type Proxy = func(*http.Request) (*url.URL, error) + +// SetProxy sets a HTTP proxy to use for WhatsApp web websocket connections and media uploads/downloads. // // Must be called before Connect() to take effect in the websocket connection. // If you want to change the proxy after connecting, you must call Disconnect() and then Connect() again manually. @@ -250,9 +301,59 @@ func (cli *Client) SetProxyAddress(addr string) error { // return mediaProxyURL, nil // } // }) -func (cli *Client) SetProxy(proxy socket.Proxy) { - cli.proxy = proxy - cli.http.Transport.(*http.Transport).Proxy = proxy +func (cli *Client) SetProxy(proxy Proxy, opts ...SetProxyOptions) { + var opt SetProxyOptions + if len(opts) > 0 { + opt = opts[0] + } + if !opt.NoWebsocket { + cli.proxy = proxy + cli.socksProxy = nil + } + if !opt.NoMedia { + transport := cli.http.Transport.(*http.Transport) + transport.Proxy = proxy + transport.Dial = nil + transport.DialContext = nil + } +} + +type SetProxyOptions struct { + // If NoWebsocket is true, the proxy won't be used for the websocket + NoWebsocket bool + // If NoMedia is true, the proxy won't be used for media uploads/downloads + NoMedia bool +} + +// SetSOCKSProxy sets a SOCKS5 proxy to use for WhatsApp web websocket connections and media uploads/downloads. +// +// Same details as SetProxy apply, but using a different proxy for the websocket and media is not currently supported. +func (cli *Client) SetSOCKSProxy(px proxy.Dialer, opts ...SetProxyOptions) { + var opt SetProxyOptions + if len(opts) > 0 { + opt = opts[0] + } + if !opt.NoWebsocket { + cli.socksProxy = px + cli.proxy = nil + } + if !opt.NoMedia { + transport := cli.http.Transport.(*http.Transport) + transport.Proxy = nil + transport.Dial = cli.socksProxy.Dial + contextDialer, ok := cli.socksProxy.(proxy.ContextDialer) + if ok { + transport.DialContext = contextDialer.DialContext + } else { + transport.DialContext = nil + } + } +} + +// ToggleProxyOnlyForLogin changes whether the proxy set with SetProxy or related methods +// is only used for the pre-login websocket and not authenticated websockets. +func (cli *Client) ToggleProxyOnlyForLogin(only bool) { + cli.proxyOnlyLogin = only } func (cli *Client) getSocketWaitChan() <-chan struct{} { @@ -308,7 +409,27 @@ func (cli *Client) Connect() error { } cli.resetExpectedDisconnect() - fs := socket.NewFrameSocket(cli.Log.Sub("Socket"), socket.WAConnHeader, cli.proxy) + wsDialer := websocket.Dialer{} + if !cli.proxyOnlyLogin || cli.Store.ID == nil { + if cli.proxy != nil { + wsDialer.Proxy = cli.proxy + } else if cli.socksProxy != nil { + wsDialer.NetDial = cli.socksProxy.Dial + contextDialer, ok := cli.socksProxy.(proxy.ContextDialer) + if ok { + wsDialer.NetDialContext = contextDialer.DialContext + } + } + } + fs := socket.NewFrameSocket(cli.Log.Sub("Socket"), wsDialer) + if cli.MessengerConfig != nil { + fs.URL = "wss://web-chat-e2ee.facebook.com/ws/chat" + fs.HTTPHeaders.Set("Origin", cli.MessengerConfig.BaseURL) + fs.HTTPHeaders.Set("User-Agent", cli.MessengerConfig.UserAgent) + fs.HTTPHeaders.Set("Sec-Fetch-Dest", "empty") + fs.HTTPHeaders.Set("Sec-Fetch-Mode", "websocket") + fs.HTTPHeaders.Set("Sec-Fetch-Site", "cross-site") + } if err := fs.Connect(); err != nil { fs.Close(0) return err @@ -323,7 +444,7 @@ func (cli *Client) Connect() error { // IsLoggedIn returns true after the client is successfully connected and authenticated on WhatsApp. func (cli *Client) IsLoggedIn() bool { - return atomic.LoadUint32(&cli.isLoggedIn) == 1 + return cli.isLoggedIn.Load() } func (cli *Client) onDisconnect(ns *socket.NoiseSocket, remote bool) { @@ -348,15 +469,15 @@ func (cli *Client) onDisconnect(ns *socket.NoiseSocket, remote bool) { } func (cli *Client) expectDisconnect() { - atomic.StoreUint32(&cli.expectedDisconnectVal, 1) + cli.expectedDisconnect.Store(true) } func (cli *Client) resetExpectedDisconnect() { - atomic.StoreUint32(&cli.expectedDisconnectVal, 0) + cli.expectedDisconnect.Store(false) } func (cli *Client) isExpectedDisconnect() bool { - return atomic.LoadUint32(&cli.expectedDisconnectVal) == 1 + return cli.expectedDisconnect.Load() } func (cli *Client) autoReconnect() { @@ -374,6 +495,10 @@ func (cli *Client) autoReconnect() { return } else if err != nil { cli.Log.Errorf("Error reconnecting after autoreconnect sleep: %v", err) + if cli.AutoReconnectHook != nil && !cli.AutoReconnectHook(err) { + cli.Log.Debugf("AutoReconnectHook returned false, not reconnecting") + return + } } else { return } @@ -419,6 +544,9 @@ func (cli *Client) unlockedDisconnect() { // Note that this will not emit any events. The LoggedOut event is only used for external logouts // (triggered by the user from the main device or by WhatsApp servers). func (cli *Client) Logout() error { + if cli.MessengerConfig != nil { + return errors.New("can't logout with Messenger credentials") + } ownID := cli.getOwnID() if ownID.IsEmpty() { return ErrNotLoggedIn @@ -667,7 +795,7 @@ func (cli *Client) ParseWebMessage(chatJID types.JID, webMsg *waProto.WebMessage if info.Sender.IsEmpty() { return nil, ErrNotLoggedIn } - } else if chatJID.Server == types.DefaultUserServer { + } else if chatJID.Server == types.DefaultUserServer || chatJID.Server == types.NewsletterServer { info.Sender = chatJID } else if webMsg.GetParticipant() != "" { info.Sender, err = types.ParseJID(webMsg.GetParticipant()) diff --git a/vendor/go.mau.fi/whatsmeow/client_test.go b/vendor/go.mau.fi/whatsmeow/client_test.go new file mode 100644 index 00000000..c7b1b0a8 --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/client_test.go @@ -0,0 +1,76 @@ +// Copyright (c) 2021 Tulir Asokan +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +package whatsmeow_test + +import ( + "context" + "fmt" + "os" + "os/signal" + "syscall" + + "go.mau.fi/whatsmeow" + "go.mau.fi/whatsmeow/store/sqlstore" + "go.mau.fi/whatsmeow/types/events" + waLog "go.mau.fi/whatsmeow/util/log" +) + +func eventHandler(evt interface{}) { + switch v := evt.(type) { + case *events.Message: + fmt.Println("Received a message!", v.Message.GetConversation()) + } +} + +func Example() { + dbLog := waLog.Stdout("Database", "DEBUG", true) + // Make sure you add appropriate DB connector imports, e.g. github.com/mattn/go-sqlite3 for SQLite + container, err := sqlstore.New("sqlite3", "file:examplestore.db?_foreign_keys=on", dbLog) + if err != nil { + panic(err) + } + // If you want multiple sessions, remember their JIDs and use .GetDevice(jid) or .GetAllDevices() instead. + deviceStore, err := container.GetFirstDevice() + if err != nil { + panic(err) + } + clientLog := waLog.Stdout("Client", "DEBUG", true) + client := whatsmeow.NewClient(deviceStore, clientLog) + client.AddEventHandler(eventHandler) + + if client.Store.ID == nil { + // No ID stored, new login + qrChan, _ := client.GetQRChannel(context.Background()) + err = client.Connect() + if err != nil { + panic(err) + } + for evt := range qrChan { + if evt.Event == "code" { + // Render the QR code here + // e.g. qrterminal.GenerateHalfBlock(evt.Code, qrterminal.L, os.Stdout) + // or just manually `echo 2@... | qrencode -t ansiutf8` in a terminal + fmt.Println("QR code:", evt.Code) + } else { + fmt.Println("Login event:", evt.Event) + } + } + } else { + // Already logged in, just connect + err = client.Connect() + if err != nil { + panic(err) + } + } + + // Listen to Ctrl+C (you can also do something else that prevents the program from exiting) + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt, syscall.SIGTERM) + <-c + + client.Disconnect() +} diff --git a/vendor/go.mau.fi/whatsmeow/connectionevents.go b/vendor/go.mau.fi/whatsmeow/connectionevents.go index c20fe42a..881c6d70 100644 --- a/vendor/go.mau.fi/whatsmeow/connectionevents.go +++ b/vendor/go.mau.fi/whatsmeow/connectionevents.go @@ -7,7 +7,6 @@ package whatsmeow import ( - "sync/atomic" "time" waBinary "go.mau.fi/whatsmeow/binary" @@ -17,7 +16,7 @@ import ( ) func (cli *Client) handleStreamError(node *waBinary.Node) { - atomic.StoreUint32(&cli.isLoggedIn, 0) + cli.isLoggedIn.Store(false) cli.clearResponseWaiters(node) code, _ := node.Attrs["code"].(string) conflict, _ := node.GetOptionalChildByTag("conflict") @@ -48,6 +47,16 @@ func (cli *Client) handleStreamError(node *waBinary.Node) { // This seems to happen when the server wants to restart or something. // The disconnection will be emitted as an events.Disconnected and then the auto-reconnect will do its thing. cli.Log.Warnf("Got 503 stream error, assuming automatic reconnect will handle it") + case cli.RefreshCAT != nil && (code == events.ConnectFailureCATInvalid.NumberString() || code == events.ConnectFailureCATExpired.NumberString()): + cli.Log.Infof("Got %s stream error, refreshing CAT before reconnecting...", code) + cli.socketLock.RLock() + defer cli.socketLock.RUnlock() + err := cli.RefreshCAT() + if err != nil { + cli.Log.Errorf("Failed to refresh CAT: %v", err) + cli.expectDisconnect() + go cli.dispatchEvent(&events.CATRefreshError{Error: err}) + } default: cli.Log.Errorf("Unknown stream error: %s", node.XMLString()) go cli.dispatchEvent(&events.StreamError{Code: code, Raw: node}) @@ -89,9 +98,20 @@ func (cli *Client) handleConnectFailure(node *waBinary.Node) { willAutoReconnect = false case reason == events.ConnectFailureServiceUnavailable: // Auto-reconnect for 503s + case reason == events.ConnectFailureCATInvalid || reason == events.ConnectFailureCATExpired: + // Auto-reconnect when rotating CAT, lock socket to ensure refresh goes through before reconnect + cli.socketLock.RLock() + defer cli.socketLock.RUnlock() case reason == 500 && message == "biz vname fetch error": // These happen for business accounts randomly, also auto-reconnect } + if reason == 403 { + cli.Log.Debugf( + "Message for 403 connect failure: %s / %s", + ag.OptionalString("logout_message_header"), + ag.OptionalString("logout_message_subtext"), + ) + } if reason.IsLoggedOut() { cli.Log.Infof("Got %s connect failure, sending LoggedOut event and deleting session", reason) go cli.dispatchEvent(&events.LoggedOut{OnConnect: true, Reason: reason}) @@ -108,6 +128,14 @@ func (cli *Client) handleConnectFailure(node *waBinary.Node) { } else if reason == events.ConnectFailureClientOutdated { cli.Log.Errorf("Client outdated (405) connect failure (client version: %s)", store.GetWAVersion().String()) go cli.dispatchEvent(&events.ClientOutdated{}) + } else if reason == events.ConnectFailureCATInvalid || reason == events.ConnectFailureCATExpired { + cli.Log.Infof("Got %d/%s connect failure, refreshing CAT before reconnecting...", int(reason), message) + err := cli.RefreshCAT() + if err != nil { + cli.Log.Errorf("Failed to refresh CAT: %v", err) + cli.expectDisconnect() + go cli.dispatchEvent(&events.CATRefreshError{Error: err}) + } } else if willAutoReconnect { cli.Log.Warnf("Got %d/%s connect failure, assuming automatic reconnect will handle it", int(reason), message) } else { @@ -120,7 +148,7 @@ func (cli *Client) handleConnectSuccess(node *waBinary.Node) { cli.Log.Infof("Successfully authenticated") cli.LastSuccessfulConnect = time.Now() cli.AutoReconnectErrors = 0 - atomic.StoreUint32(&cli.isLoggedIn, 1) + cli.isLoggedIn.Store(true) go func() { if dbCount, err := cli.Store.PreKeys.UploadedPreKeyCount(); err != nil { cli.Log.Errorf("Failed to get number of prekeys in database: %v", err) diff --git a/vendor/go.mau.fi/whatsmeow/download.go b/vendor/go.mau.fi/whatsmeow/download.go index 3e510be6..b4cdb3d4 100644 --- a/vendor/go.mau.fi/whatsmeow/download.go +++ b/vendor/go.mau.fi/whatsmeow/download.go @@ -10,6 +10,7 @@ import ( "crypto/hmac" "crypto/sha256" "encoding/base64" + "errors" "fmt" "io" "net" @@ -17,9 +18,11 @@ import ( "strings" "time" + "go.mau.fi/util/retryafter" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" + "go.mau.fi/whatsmeow/binary/armadillo/waMediaTransport" waProto "go.mau.fi/whatsmeow/binary/proto" "go.mau.fi/whatsmeow/socket" "go.mau.fi/whatsmeow/util/cbcutil" @@ -208,6 +211,10 @@ func (cli *Client) Download(msg DownloadableMessage) ([]byte, error) { } } +func (cli *Client) DownloadFB(transport *waMediaTransport.WAMediaTransport_Integral, mediaType MediaType) ([]byte, error) { + return cli.DownloadMediaWithPath(transport.GetDirectPath(), transport.GetFileEncSHA256(), transport.GetFileSHA256(), transport.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType]) +} + // DownloadMediaWithPath downloads an attachment by manually specifying the path and encryption details. func (cli *Client) DownloadMediaWithPath(directPath string, encFileHash, fileHash, mediaKey []byte, fileLength int, mediaType MediaType, mmsType string) (data []byte, err error) { var mediaConn *MediaConn @@ -219,15 +226,16 @@ func (cli *Client) DownloadMediaWithPath(directPath string, encFileHash, fileHas mmsType = mediaTypeToMMSType[mediaType] } for i, host := range mediaConn.Hosts { + // TODO omit hash for unencrypted media? mediaURL := fmt.Sprintf("https://%s%s&hash=%s&mms-type=%s&__wa-mms=", host.Hostname, directPath, base64.URLEncoding.EncodeToString(encFileHash), mmsType) data, err = cli.downloadAndDecrypt(mediaURL, mediaKey, mediaType, fileLength, encFileHash, fileHash) - // TODO there are probably some errors that shouldn't retry - if err != nil { - if i >= len(mediaConn.Hosts)-1 { - return nil, fmt.Errorf("failed to download media from last host: %w", err) - } - cli.Log.Warnf("Failed to download media: %s, trying with next host...", err) + if err == nil { + return + } else if i >= len(mediaConn.Hosts)-1 { + return nil, fmt.Errorf("failed to download media from last host: %w", err) } + // TODO there are probably some errors that shouldn't retry + cli.Log.Warnf("Failed to download media: %s, trying with next host...", err) } return } @@ -235,8 +243,11 @@ func (cli *Client) DownloadMediaWithPath(directPath string, encFileHash, fileHas func (cli *Client) downloadAndDecrypt(url string, mediaKey []byte, appInfo MediaType, fileLength int, fileEncSha256, fileSha256 []byte) (data []byte, err error) { iv, cipherKey, macKey, _ := getMediaKeys(mediaKey, appInfo) var ciphertext, mac []byte - if ciphertext, mac, err = cli.downloadEncryptedMediaWithRetries(url, fileEncSha256); err != nil { + if ciphertext, mac, err = cli.downloadPossiblyEncryptedMediaWithRetries(url, fileEncSha256); err != nil { + } else if mediaKey == nil && fileEncSha256 == nil && mac == nil { + // Unencrypted media, just return the downloaded data + data = ciphertext } else if err = validateMedia(iv, ciphertext, macKey, mac); err != nil { } else if data, err = cbcutil.Decrypt(cipherKey, iv, ciphertext); err != nil { @@ -254,52 +265,59 @@ func getMediaKeys(mediaKey []byte, appInfo MediaType) (iv, cipherKey, macKey, re return mediaKeyExpanded[:16], mediaKeyExpanded[16:48], mediaKeyExpanded[48:80], mediaKeyExpanded[80:] } -func (cli *Client) downloadEncryptedMediaWithRetries(url string, checksum []byte) (file, mac []byte, err error) { +func shouldRetryMediaDownload(err error) bool { + var netErr net.Error + var httpErr DownloadHTTPError + return errors.As(err, &netErr) || + strings.HasPrefix(err.Error(), "stream error:") || // hacky check for http2 errors + (errors.As(err, &httpErr) && retryafter.Should(httpErr.StatusCode, true)) +} + +func (cli *Client) downloadPossiblyEncryptedMediaWithRetries(url string, checksum []byte) (file, mac []byte, err error) { for retryNum := 0; retryNum < 5; retryNum++ { - file, mac, err = cli.downloadEncryptedMedia(url, checksum) - if err == nil { + if checksum == nil { + file, err = cli.downloadMedia(url) + } else { + file, mac, err = cli.downloadEncryptedMedia(url, checksum) + } + if err == nil || !shouldRetryMediaDownload(err) { return } - netErr, ok := err.(net.Error) - if !ok { - // Not a network error, don't retry - return + retryDuration := time.Duration(retryNum+1) * time.Second + var httpErr DownloadHTTPError + if errors.As(err, &httpErr) { + retryDuration = retryafter.Parse(httpErr.Response.Header.Get("Retry-After"), retryDuration) } - cli.Log.Warnf("Failed to download media due to network error: %w, retrying...", netErr) - time.Sleep(time.Duration(retryNum+1) * time.Second) + cli.Log.Warnf("Failed to download media due to network error: %w, retrying in %s...", err, retryDuration) + time.Sleep(retryDuration) } return } -func (cli *Client) downloadEncryptedMedia(url string, checksum []byte) (file, mac []byte, err error) { - var req *http.Request - req, err = http.NewRequest(http.MethodGet, url, nil) +func (cli *Client) downloadMedia(url string) ([]byte, error) { + req, err := http.NewRequest(http.MethodGet, url, nil) if err != nil { - err = fmt.Errorf("failed to prepare request: %w", err) - return + return nil, fmt.Errorf("failed to prepare request: %w", err) } req.Header.Set("Origin", socket.Origin) req.Header.Set("Referer", socket.Origin+"/") - var resp *http.Response - resp, err = cli.http.Do(req) + if cli.MessengerConfig != nil { + req.Header.Set("User-Agent", cli.MessengerConfig.UserAgent) + } + // TODO user agent for whatsapp downloads? + resp, err := cli.http.Do(req) if err != nil { - return + return nil, err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { - if resp.StatusCode == http.StatusForbidden { - err = ErrMediaDownloadFailedWith403 - } else if resp.StatusCode == http.StatusNotFound { - err = ErrMediaDownloadFailedWith404 - } else if resp.StatusCode == http.StatusGone { - err = ErrMediaDownloadFailedWith410 - } else { - err = fmt.Errorf("download failed with status code %d", resp.StatusCode) - } - return + return nil, DownloadHTTPError{Response: resp} } - var data []byte - data, err = io.ReadAll(resp.Body) + return io.ReadAll(resp.Body) +} + +func (cli *Client) downloadEncryptedMedia(url string, checksum []byte) (file, mac []byte, err error) { + data, err := cli.downloadMedia(url) if err != nil { return } else if len(data) <= 10 { diff --git a/vendor/go.mau.fi/whatsmeow/errors.go b/vendor/go.mau.fi/whatsmeow/errors.go index a5182eef..27c2f318 100644 --- a/vendor/go.mau.fi/whatsmeow/errors.go +++ b/vendor/go.mau.fi/whatsmeow/errors.go @@ -9,6 +9,7 @@ package whatsmeow import ( "errors" "fmt" + "net/http" waBinary "go.mau.fi/whatsmeow/binary" ) @@ -103,15 +104,28 @@ var ( var ( ErrBroadcastListUnsupported = errors.New("sending to non-status broadcast lists is not yet supported") ErrUnknownServer = errors.New("can't send message to unknown server") - ErrRecipientADJID = errors.New("message recipient must be normal (non-AD) JID") + ErrRecipientADJID = errors.New("message recipient must be a user JID with no device part") ErrServerReturnedError = errors.New("server returned error") ) +type DownloadHTTPError struct { + *http.Response +} + +func (dhe DownloadHTTPError) Error() string { + return fmt.Sprintf("download failed with status code %d", dhe.StatusCode) +} + +func (dhe DownloadHTTPError) Is(other error) bool { + var otherDHE DownloadHTTPError + return errors.As(other, &otherDHE) && dhe.StatusCode == otherDHE.StatusCode +} + // Some errors that Client.Download can return var ( - ErrMediaDownloadFailedWith403 = errors.New("download failed with status code 403") - ErrMediaDownloadFailedWith404 = errors.New("download failed with status code 404") - ErrMediaDownloadFailedWith410 = errors.New("download failed with status code 410") + ErrMediaDownloadFailedWith403 = DownloadHTTPError{Response: &http.Response{StatusCode: 403}} + ErrMediaDownloadFailedWith404 = DownloadHTTPError{Response: &http.Response{StatusCode: 404}} + ErrMediaDownloadFailedWith410 = DownloadHTTPError{Response: &http.Response{StatusCode: 410}} ErrNoURLPresent = errors.New("no url present") ErrFileLengthMismatch = errors.New("file length does not match") ErrTooShortFile = errors.New("file too short") diff --git a/vendor/go.mau.fi/whatsmeow/go.mod b/vendor/go.mau.fi/whatsmeow/go.mod new file mode 100644 index 00000000..a6b946dc --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/go.mod @@ -0,0 +1,21 @@ +module go.mau.fi/whatsmeow + +go 1.21 + +require ( + github.com/google/uuid v1.6.0 + github.com/gorilla/websocket v1.5.0 + github.com/rs/zerolog v1.32.0 + go.mau.fi/libsignal v0.1.0 + go.mau.fi/util v0.4.1 + golang.org/x/crypto v0.23.0 + golang.org/x/net v0.25.0 + google.golang.org/protobuf v1.33.0 +) + +require ( + filippo.io/edwards25519 v1.0.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + golang.org/x/sys v0.20.0 // indirect +) diff --git a/vendor/go.mau.fi/whatsmeow/go.sum b/vendor/go.mau.fi/whatsmeow/go.sum new file mode 100644 index 00000000..8b0fa6aa --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/go.sum @@ -0,0 +1,44 @@ +filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= +filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= +github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +go.mau.fi/libsignal v0.1.0 h1:vAKI/nJ5tMhdzke4cTK1fb0idJzz1JuEIpmjprueC+c= +go.mau.fi/libsignal v0.1.0/go.mod h1:R8ovrTezxtUNzCQE5PH30StOQWWeBskBsWE55vMfY9I= +go.mau.fi/util v0.4.1 h1:3EC9KxIXo5+h869zDGf5OOZklRd/FjeVnimTwtm3owg= +go.mau.fi/util v0.4.1/go.mod h1:GjkTEBsehYZbSh2LlE6cWEn+6ZIZTGrTMM/5DMNlmFY= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/vendor/go.mau.fi/whatsmeow/group.go b/vendor/go.mau.fi/whatsmeow/group.go index c8f80560..199493c8 100644 --- a/vendor/go.mau.fi/whatsmeow/group.go +++ b/vendor/go.mau.fi/whatsmeow/group.go @@ -148,30 +148,93 @@ const ( ) // UpdateGroupParticipants can be used to add, remove, promote and demote members in a WhatsApp group. -func (cli *Client) UpdateGroupParticipants(jid types.JID, participantChanges map[types.JID]ParticipantChange) (*waBinary.Node, error) { +func (cli *Client) UpdateGroupParticipants(jid types.JID, participantChanges []types.JID, action ParticipantChange) ([]types.GroupParticipant, error) { content := make([]waBinary.Node, len(participantChanges)) - i := 0 - for participantJID, change := range participantChanges { + for i, participantJID := range participantChanges { content[i] = waBinary.Node{ - Tag: string(change), - Content: []waBinary.Node{{ - Tag: "participant", - Attrs: waBinary.Attrs{"jid": participantJID}, - }}, + Tag: "participant", + Attrs: waBinary.Attrs{"jid": participantJID}, } - i++ } - resp, err := cli.sendIQ(infoQuery{ - Namespace: "w:g2", - Type: iqSet, - To: jid, - Content: content, + resp, err := cli.sendGroupIQ(context.TODO(), iqSet, jid, waBinary.Node{ + Tag: string(action), + Content: content, }) if err != nil { return nil, err } - // TODO proper return value? - return resp, nil + requestAction, ok := resp.GetOptionalChildByTag(string(action)) + if !ok { + return nil, &ElementMissingError{Tag: string(action), In: "response to group participants update"} + } + requestParticipants := requestAction.GetChildrenByTag("participant") + participants := make([]types.GroupParticipant, len(requestParticipants)) + for i, child := range requestParticipants { + participants[i] = parseParticipant(child.AttrGetter(), &child) + } + return participants, nil +} + +// GetGroupRequestParticipants gets the list of participants that have requested to join the group. +func (cli *Client) GetGroupRequestParticipants(jid types.JID) ([]types.JID, error) { + resp, err := cli.sendGroupIQ(context.TODO(), iqGet, jid, waBinary.Node{ + Tag: "membership_approval_requests", + }) + if err != nil { + return nil, err + } + request, ok := resp.GetOptionalChildByTag("membership_approval_requests") + if !ok { + return nil, &ElementMissingError{Tag: "membership_approval_requests", In: "response to group request participants query"} + } + requestParticipants := request.GetChildrenByTag("membership_approval_request") + participants := make([]types.JID, len(requestParticipants)) + for i, req := range requestParticipants { + participants[i] = req.AttrGetter().JID("jid") + } + return participants, nil +} + +type ParticipantRequestChange string + +const ( + ParticipantChangeApprove ParticipantRequestChange = "approve" + ParticipantChangeReject ParticipantRequestChange = "reject" +) + +// UpdateGroupRequestParticipants can be used to approve or reject requests to join the group. +func (cli *Client) UpdateGroupRequestParticipants(jid types.JID, participantChanges []types.JID, action ParticipantRequestChange) ([]types.GroupParticipant, error) { + content := make([]waBinary.Node, len(participantChanges)) + for i, participantJID := range participantChanges { + content[i] = waBinary.Node{ + Tag: "participant", + Attrs: waBinary.Attrs{"jid": participantJID}, + } + } + resp, err := cli.sendGroupIQ(context.TODO(), iqSet, jid, waBinary.Node{ + Tag: "membership_requests_action", + Content: []waBinary.Node{{ + Tag: string(action), + Content: content, + }}, + }) + if err != nil { + return nil, err + } + request, ok := resp.GetOptionalChildByTag("membership_requests_action") + if !ok { + return nil, &ElementMissingError{Tag: "membership_requests_action", In: "response to group request participants update"} + } + requestAction, ok := request.GetOptionalChildByTag(string(action)) + if !ok { + return nil, &ElementMissingError{Tag: string(action), In: "response to group request participants update"} + } + requestParticipants := requestAction.GetChildrenByTag("participant") + participants := make([]types.GroupParticipant, len(requestParticipants)) + for i, child := range requestParticipants { + participants[i] = parseParticipant(child.AttrGetter(), &child) + } + return participants, nil } // SetGroupPhoto updates the group picture/icon of the given group on WhatsApp. @@ -501,6 +564,33 @@ func (cli *Client) getGroupMembers(ctx context.Context, jid types.JID) ([]types. return cli.groupParticipantsCache[jid], nil } +func parseParticipant(childAG *waBinary.AttrUtility, child *waBinary.Node) types.GroupParticipant { + pcpType := childAG.OptionalString("type") + participant := types.GroupParticipant{ + IsAdmin: pcpType == "admin" || pcpType == "superadmin", + IsSuperAdmin: pcpType == "superadmin", + JID: childAG.JID("jid"), + LID: childAG.OptionalJIDOrEmpty("lid"), + DisplayName: childAG.OptionalString("display_name"), + } + if participant.JID.Server == types.HiddenUserServer && participant.LID.IsEmpty() { + participant.LID = participant.JID + //participant.JID = types.EmptyJID + } + if errorCode := childAG.OptionalInt("error"); errorCode != 0 { + participant.Error = errorCode + addRequest, ok := child.GetOptionalChildByTag("add_request") + if ok { + addAG := addRequest.AttrGetter() + participant.AddRequest = &types.GroupParticipantAddRequest{ + Code: addAG.String("code"), + Expiration: addAG.UnixTime("expiration"), + } + } + } + return participant +} + func (cli *Client) parseGroupNode(groupNode *waBinary.Node) (*types.GroupInfo, error) { var group types.GroupInfo ag := groupNode.AttrGetter() @@ -521,24 +611,7 @@ func (cli *Client) parseGroupNode(groupNode *waBinary.Node) (*types.GroupInfo, e childAG := child.AttrGetter() switch child.Tag { case "participant": - pcpType := childAG.OptionalString("type") - participant := types.GroupParticipant{ - IsAdmin: pcpType == "admin" || pcpType == "superadmin", - IsSuperAdmin: pcpType == "superadmin", - JID: childAG.JID("jid"), - } - if errorCode := childAG.OptionalInt("error"); errorCode != 0 { - participant.Error = errorCode - addRequest, ok := child.GetOptionalChildByTag("add_request") - if ok { - addAG := addRequest.AttrGetter() - participant.AddRequest = &types.GroupParticipantAddRequest{ - Code: addAG.String("code"), - Expiration: addAG.UnixTime("expiration"), - } - } - } - group.Participants = append(group.Participants, participant) + group.Participants = append(group.Participants, parseParticipant(childAG, &child)) case "description": body, bodyOK := child.GetOptionalChildByTag("body") if bodyOK { @@ -565,6 +638,9 @@ func (cli *Client) parseGroupNode(groupNode *waBinary.Node) (*types.GroupInfo, e case "parent": group.IsParent = true group.DefaultMembershipApprovalMode = childAG.OptionalString("default_membership_approval_mode") + case "incognito": + group.IsIncognito = true + // TODO: membership_approval_mode default: cli.Log.Debugf("Unknown element in group node %s: %s", group.JID.String(), child.XMLString()) } diff --git a/vendor/go.mau.fi/whatsmeow/handshake.go b/vendor/go.mau.fi/whatsmeow/handshake.go index dbfe9d99..d6c26a50 100644 --- a/vendor/go.mau.fi/whatsmeow/handshake.go +++ b/vendor/go.mau.fi/whatsmeow/handshake.go @@ -11,6 +11,7 @@ import ( "fmt" "time" + "go.mau.fi/libsignal/ecc" "google.golang.org/protobuf/proto" waProto "go.mau.fi/whatsmeow/binary/proto" @@ -19,6 +20,9 @@ import ( ) const NoiseHandshakeResponseTimeout = 20 * time.Second +const WACertIssuerSerial = 0 + +var WACertPubKey = [...]byte{0x14, 0x23, 0x75, 0x57, 0x4d, 0xa, 0x58, 0x71, 0x66, 0xaa, 0xe7, 0x1e, 0xbe, 0x51, 0x64, 0x37, 0xc4, 0xa2, 0x8b, 0x73, 0xe3, 0x69, 0x5c, 0x6c, 0xe1, 0xf7, 0xf9, 0x54, 0x5d, 0xa8, 0xee, 0x6b} // doHandshake implements the Noise_XX_25519_AESGCM_SHA256 handshake for the WhatsApp web API. func (cli *Client) doHandshake(fs *socket.FrameSocket, ephemeralKP keys.KeyPair) error { @@ -76,23 +80,8 @@ func (cli *Client) doHandshake(fs *socket.FrameSocket, ephemeralKP keys.KeyPair) certDecrypted, err := nh.Decrypt(certificateCiphertext) if err != nil { return fmt.Errorf("failed to decrypt noise certificate ciphertext: %w", err) - } - var cert waProto.NoiseCertificate - err = proto.Unmarshal(certDecrypted, &cert) - if err != nil { - return fmt.Errorf("failed to unmarshal noise certificate: %w", err) - } - certDetailsRaw := cert.GetDetails() - certSignature := cert.GetSignature() - if certDetailsRaw == nil || certSignature == nil { - return fmt.Errorf("missing parts of noise certificate") - } - var certDetails waProto.NoiseCertificate_Details - err = proto.Unmarshal(certDetailsRaw, &certDetails) - if err != nil { - return fmt.Errorf("failed to unmarshal noise certificate details: %w", err) - } else if !bytes.Equal(certDetails.GetKey(), staticDecrypted) { - return fmt.Errorf("cert key doesn't match decrypted static") + } else if err = verifyServerCert(certDecrypted, staticDecrypted); err != nil { + return fmt.Errorf("failed to verify server cert: %w", err) } encryptedPubkey := nh.Encrypt(cli.Store.NoiseKey.Pub[:]) @@ -101,7 +90,14 @@ func (cli *Client) doHandshake(fs *socket.FrameSocket, ephemeralKP keys.KeyPair) return fmt.Errorf("failed to mix noise private key in: %w", err) } - clientFinishPayloadBytes, err := proto.Marshal(cli.Store.GetClientPayload()) + var clientPayload *waProto.ClientPayload + if cli.GetClientPayload != nil { + clientPayload = cli.GetClientPayload() + } else { + clientPayload = cli.Store.GetClientPayload() + } + + clientFinishPayloadBytes, err := proto.Marshal(clientPayload) if err != nil { return fmt.Errorf("failed to marshal client finish payload: %w", err) } @@ -129,3 +125,40 @@ func (cli *Client) doHandshake(fs *socket.FrameSocket, ephemeralKP keys.KeyPair) return nil } + +func verifyServerCert(certDecrypted, staticDecrypted []byte) error { + var certChain waProto.CertChain + err := proto.Unmarshal(certDecrypted, &certChain) + if err != nil { + return fmt.Errorf("failed to unmarshal noise certificate: %w", err) + } + var intermediateCertDetails, leafCertDetails waProto.CertChain_NoiseCertificate_Details + intermediateCertDetailsRaw := certChain.GetIntermediate().GetDetails() + intermediateCertSignature := certChain.GetIntermediate().GetSignature() + leafCertDetailsRaw := certChain.GetLeaf().GetDetails() + leafCertSignature := certChain.GetLeaf().GetSignature() + if intermediateCertDetailsRaw == nil || intermediateCertSignature == nil || leafCertDetailsRaw == nil || leafCertSignature == nil { + return fmt.Errorf("missing parts of noise certificate") + } else if len(intermediateCertSignature) != 64 { + return fmt.Errorf("unexpected length of intermediate cert signature %d (expected 64)", len(intermediateCertSignature)) + } else if len(leafCertSignature) != 64 { + return fmt.Errorf("unexpected length of leaf cert signature %d (expected 64)", len(leafCertSignature)) + } else if !ecc.VerifySignature(ecc.NewDjbECPublicKey(WACertPubKey), intermediateCertDetailsRaw, [64]byte(intermediateCertSignature)) { + return fmt.Errorf("failed to verify intermediate cert signature") + } else if err = proto.Unmarshal(intermediateCertDetailsRaw, &intermediateCertDetails); err != nil { + return fmt.Errorf("failed to unmarshal noise certificate details: %w", err) + } else if intermediateCertDetails.GetIssuerSerial() != WACertIssuerSerial { + return fmt.Errorf("unexpected intermediate issuer serial %d (expected %d)", intermediateCertDetails.GetIssuerSerial(), WACertIssuerSerial) + } else if len(intermediateCertDetails.GetKey()) != 32 { + return fmt.Errorf("unexpected length of intermediate cert key %d (expected 32)", len(intermediateCertDetails.GetKey())) + } else if !ecc.VerifySignature(ecc.NewDjbECPublicKey([32]byte(intermediateCertDetails.GetKey())), leafCertDetailsRaw, [64]byte(leafCertSignature)) { + return fmt.Errorf("failed to verify intermediate cert signature") + } else if err = proto.Unmarshal(leafCertDetailsRaw, &leafCertDetails); err != nil { + return fmt.Errorf("failed to unmarshal noise certificate details: %w", err) + } else if leafCertDetails.GetIssuerSerial() != intermediateCertDetails.GetSerial() { + return fmt.Errorf("unexpected leaf issuer serial %d (expected %d)", leafCertDetails.GetIssuerSerial(), intermediateCertDetails.GetSerial()) + } else if !bytes.Equal(leafCertDetails.GetKey(), staticDecrypted) { + return fmt.Errorf("cert key doesn't match decrypted static") + } + return nil +} diff --git a/vendor/go.mau.fi/whatsmeow/internals.go b/vendor/go.mau.fi/whatsmeow/internals.go index 8227b0ce..126eb938 100644 --- a/vendor/go.mau.fi/whatsmeow/internals.go +++ b/vendor/go.mau.fi/whatsmeow/internals.go @@ -9,6 +9,8 @@ package whatsmeow import ( "context" + "go.mau.fi/libsignal/keys/prekey" + waBinary "go.mau.fi/whatsmeow/binary" "go.mau.fi/whatsmeow/types" ) @@ -66,3 +68,19 @@ func (int *DangerousInternalClient) RequestAppStateKeys(ctx context.Context, key func (int *DangerousInternalClient) SendRetryReceipt(node *waBinary.Node, info *types.MessageInfo, forceIncludeIdentity bool) { int.c.sendRetryReceipt(node, info, forceIncludeIdentity) } + +func (int *DangerousInternalClient) EncryptMessageForDevice(plaintext []byte, to types.JID, bundle *prekey.Bundle, extraAttrs waBinary.Attrs) (*waBinary.Node, bool, error) { + return int.c.encryptMessageForDevice(plaintext, to, bundle, extraAttrs) +} + +func (int *DangerousInternalClient) GetOwnID() types.JID { + return int.c.getOwnID() +} + +func (int *DangerousInternalClient) DecryptDM(child *waBinary.Node, from types.JID, isPreKey bool) ([]byte, error) { + return int.c.decryptDM(child, from, isPreKey) +} + +func (int *DangerousInternalClient) MakeDeviceIdentityNode() waBinary.Node { + return int.c.makeDeviceIdentityNode() +} diff --git a/vendor/go.mau.fi/whatsmeow/keepalive.go b/vendor/go.mau.fi/whatsmeow/keepalive.go index 48510a12..94ab639e 100644 --- a/vendor/go.mau.fi/whatsmeow/keepalive.go +++ b/vendor/go.mau.fi/whatsmeow/keepalive.go @@ -11,7 +11,6 @@ import ( "math/rand" "time" - waBinary "go.mau.fi/whatsmeow/binary" "go.mau.fi/whatsmeow/types" "go.mau.fi/whatsmeow/types/events" ) @@ -67,7 +66,6 @@ func (cli *Client) sendKeepAlive(ctx context.Context) (isSuccess, shouldContinue Namespace: "w:p", Type: "get", To: types.ServerJID, - Content: []waBinary.Node{{Tag: "ping"}}, }) if err != nil { cli.Log.Warnf("Failed to send keepalive: %v", err) diff --git a/vendor/go.mau.fi/whatsmeow/mdtest/README.md b/vendor/go.mau.fi/whatsmeow/mdtest/README.md new file mode 100644 index 00000000..fcce7106 --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/mdtest/README.md @@ -0,0 +1,11 @@ +# mdtest + +This is a simple tool for testing whatsmeow. + +1. Clone the repository. +2. Run `go build` inside this directory. +3. Run `./mdtest` to start the program. Optionally, use `rlwrap ./mdtest` to get a nicer prompt. + Add `-debug` if you want to see the raw data being sent/received. +4. On the first run, scan the QR code. On future runs, the program will remember you (unless `mdtest.db` is deleted). + +New messages will be automatically logged. To send a message, use `send ` diff --git a/vendor/go.mau.fi/whatsmeow/mdtest/go.mod b/vendor/go.mau.fi/whatsmeow/mdtest/go.mod new file mode 100644 index 00000000..78812a0d --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/mdtest/go.mod @@ -0,0 +1,29 @@ +module go.mau.fi/whatsmeow/mdtest + +go 1.21 + +toolchain go1.22.0 + +require ( + github.com/mattn/go-sqlite3 v1.14.22 + github.com/mdp/qrterminal/v3 v3.0.0 + go.mau.fi/whatsmeow v0.0.0-20230805111647-405414b9b5c0 + google.golang.org/protobuf v1.33.0 +) + +require ( + filippo.io/edwards25519 v1.0.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/websocket v1.5.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/rs/zerolog v1.32.0 // indirect + go.mau.fi/libsignal v0.1.0 // indirect + go.mau.fi/util v0.4.1 // indirect + golang.org/x/crypto v0.23.0 // indirect + golang.org/x/net v0.25.0 // indirect + golang.org/x/sys v0.20.0 // indirect + rsc.io/qr v0.2.0 // indirect +) + +replace go.mau.fi/whatsmeow => ../ diff --git a/vendor/go.mau.fi/whatsmeow/mdtest/go.sum b/vendor/go.mau.fi/whatsmeow/mdtest/go.sum new file mode 100644 index 00000000..5ba3212b --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/mdtest/go.sum @@ -0,0 +1,54 @@ +filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= +filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/mdp/qrterminal v1.0.1/go.mod h1:Z33WhxQe9B6CdW37HaVqcRKzP+kByF3q/qLxOGe12xQ= +github.com/mdp/qrterminal/v3 v3.0.0 h1:ywQqLRBXWTktytQNDKFjhAvoGkLVN3J2tAFZ0kMd9xQ= +github.com/mdp/qrterminal/v3 v3.0.0/go.mod h1:NJpfAs7OAm77Dy8EkWrtE4aq+cE6McoLXlBqXQEwvE0= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= +github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +go.mau.fi/libsignal v0.1.0 h1:vAKI/nJ5tMhdzke4cTK1fb0idJzz1JuEIpmjprueC+c= +go.mau.fi/libsignal v0.1.0/go.mod h1:R8ovrTezxtUNzCQE5PH30StOQWWeBskBsWE55vMfY9I= +go.mau.fi/util v0.4.1 h1:3EC9KxIXo5+h869zDGf5OOZklRd/FjeVnimTwtm3owg= +go.mau.fi/util v0.4.1/go.mod h1:GjkTEBsehYZbSh2LlE6cWEn+6ZIZTGrTMM/5DMNlmFY= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY= +rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs= diff --git a/vendor/go.mau.fi/whatsmeow/mdtest/main.go b/vendor/go.mau.fi/whatsmeow/mdtest/main.go new file mode 100644 index 00000000..35237e7b --- /dev/null +++ b/vendor/go.mau.fi/whatsmeow/mdtest/main.go @@ -0,0 +1,1165 @@ +// Copyright (c) 2021 Tulir Asokan +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +package main + +import ( + "bufio" + "context" + "encoding/hex" + "encoding/json" + "errors" + "flag" + "fmt" + "mime" + "net/http" + "os" + "os/signal" + "strconv" + "strings" + "sync/atomic" + "syscall" + "time" + + _ "github.com/mattn/go-sqlite3" + "github.com/mdp/qrterminal/v3" + "google.golang.org/protobuf/proto" + + "go.mau.fi/whatsmeow" + "go.mau.fi/whatsmeow/appstate" + waBinary "go.mau.fi/whatsmeow/binary" + waProto "go.mau.fi/whatsmeow/binary/proto" + "go.mau.fi/whatsmeow/store" + "go.mau.fi/whatsmeow/store/sqlstore" + "go.mau.fi/whatsmeow/types" + "go.mau.fi/whatsmeow/types/events" + waLog "go.mau.fi/whatsmeow/util/log" +) + +var cli *whatsmeow.Client +var log waLog.Logger + +var logLevel = "INFO" +var debugLogs = flag.Bool("debug", false, "Enable debug logs?") +var dbDialect = flag.String("db-dialect", "sqlite3", "Database dialect (sqlite3 or postgres)") +var dbAddress = flag.String("db-address", "file:mdtest.db?_foreign_keys=on", "Database address") +var requestFullSync = flag.Bool("request-full-sync", false, "Request full (1 year) history sync when logging in?") +var pairRejectChan = make(chan bool, 1) + +func main() { + waBinary.IndentXML = true + flag.Parse() + + if *debugLogs { + logLevel = "DEBUG" + } + if *requestFullSync { + store.DeviceProps.RequireFullSync = proto.Bool(true) + store.DeviceProps.HistorySyncConfig = &waProto.DeviceProps_HistorySyncConfig{ + FullSyncDaysLimit: proto.Uint32(3650), + FullSyncSizeMbLimit: proto.Uint32(102400), + StorageQuotaMb: proto.Uint32(102400), + } + } + log = waLog.Stdout("Main", logLevel, true) + + dbLog := waLog.Stdout("Database", logLevel, true) + storeContainer, err := sqlstore.New(*dbDialect, *dbAddress, dbLog) + if err != nil { + log.Errorf("Failed to connect to database: %v", err) + return + } + device, err := storeContainer.GetFirstDevice() + if err != nil { + log.Errorf("Failed to get device: %v", err) + return + } + + cli = whatsmeow.NewClient(device, waLog.Stdout("Client", logLevel, true)) + var isWaitingForPair atomic.Bool + cli.PrePairCallback = func(jid types.JID, platform, businessName string) bool { + isWaitingForPair.Store(true) + defer isWaitingForPair.Store(false) + log.Infof("Pairing %s (platform: %q, business name: %q). Type r within 3 seconds to reject pair", jid, platform, businessName) + select { + case reject := <-pairRejectChan: + if reject { + log.Infof("Rejecting pair") + return false + } + case <-time.After(3 * time.Second): + } + log.Infof("Accepting pair") + return true + } + + ch, err := cli.GetQRChannel(context.Background()) + if err != nil { + // This error means that we're already logged in, so ignore it. + if !errors.Is(err, whatsmeow.ErrQRStoreContainsID) { + log.Errorf("Failed to get QR channel: %v", err) + } + } else { + go func() { + for evt := range ch { + if evt.Event == "code" { + qrterminal.GenerateHalfBlock(evt.Code, qrterminal.L, os.Stdout) + } else { + log.Infof("QR channel result: %s", evt.Event) + } + } + }() + } + + cli.AddEventHandler(handler) + err = cli.Connect() + if err != nil { + log.Errorf("Failed to connect: %v", err) + return + } + + c := make(chan os.Signal, 1) + input := make(chan string) + signal.Notify(c, os.Interrupt, syscall.SIGTERM) + go func() { + defer close(input) + scan := bufio.NewScanner(os.Stdin) + for scan.Scan() { + line := strings.TrimSpace(scan.Text()) + if len(line) > 0 { + input <- line + } + } + }() + for { + select { + case <-c: + log.Infof("Interrupt received, exiting") + cli.Disconnect() + return + case cmd := <-input: + if len(cmd) == 0 { + log.Infof("Stdin closed, exiting") + cli.Disconnect() + return + } + if isWaitingForPair.Load() { + if cmd == "r" { + pairRejectChan <- true + } else if cmd == "a" { + pairRejectChan <- false + } + continue + } + args := strings.Fields(cmd) + cmd = args[0] + args = args[1:] + go handleCmd(strings.ToLower(cmd), args) + } + } +} + +func parseJID(arg string) (types.JID, bool) { + if arg[0] == '+' { + arg = arg[1:] + } + if !strings.ContainsRune(arg, '@') { + return types.NewJID(arg, types.DefaultUserServer), true + } else { + recipient, err := types.ParseJID(arg) + if err != nil { + log.Errorf("Invalid JID %s: %v", arg, err) + return recipient, false + } else if recipient.User == "" { + log.Errorf("Invalid JID %s: no server specified", arg) + return recipient, false + } + return recipient, true + } +} + +func handleCmd(cmd string, args []string) { + switch cmd { + case "pair-phone": + if len(args) < 1 { + log.Errorf("Usage: pair-phone ") + return + } + linkingCode, err := cli.PairPhone(args[0], true, whatsmeow.PairClientChrome, "Chrome (Linux)") + if err != nil { + panic(err) + } + fmt.Println("Linking code:", linkingCode) + case "reconnect": + cli.Disconnect() + err := cli.Connect() + if err != nil { + log.Errorf("Failed to connect: %v", err) + } + case "logout": + err := cli.Logout() + if err != nil { + log.Errorf("Error logging out: %v", err) + } else { + log.Infof("Successfully logged out") + } + case "appstate": + if len(args) < 1 { + log.Errorf("Usage: appstate ") + return + } + names := []appstate.WAPatchName{appstate.WAPatchName(args[0])} + if args[0] == "all" { + names = []appstate.WAPatchName{appstate.WAPatchRegular, appstate.WAPatchRegularHigh, appstate.WAPatchRegularLow, appstate.WAPatchCriticalUnblockLow, appstate.WAPatchCriticalBlock} + } + resync := len(args) > 1 && args[1] == "resync" + for _, name := range names { + err := cli.FetchAppState(name, resync, false) + if err != nil { + log.Errorf("Failed to sync app state: %v", err) + } + } + case "request-appstate-key": + if len(args) < 1 { + log.Errorf("Usage: request-appstate-key ") + return + } + var keyIDs = make([][]byte, len(args)) + for i, id := range args { + decoded, err := hex.DecodeString(id) + if err != nil { + log.Errorf("Failed to decode %s as hex: %v", id, err) + return + } + keyIDs[i] = decoded + } + cli.DangerousInternals().RequestAppStateKeys(context.Background(), keyIDs) + case "unavailable-request": + if len(args) < 3 { + log.Errorf("Usage: unavailable-request ") + return + } + chat, ok := parseJID(args[0]) + if !ok { + return + } + sender, ok := parseJID(args[1]) + if !ok { + return + } + resp, err := cli.SendMessage( + context.Background(), + cli.Store.ID.ToNonAD(), + cli.BuildUnavailableMessageRequest(chat, sender, args[2]), + whatsmeow.SendRequestExtra{Peer: true}, + ) + fmt.Println(resp) + fmt.Println(err) + case "checkuser": + if len(args) < 1 { + log.Errorf("Usage: checkuser ") + return + } + resp, err := cli.IsOnWhatsApp(args) + if err != nil { + log.Errorf("Failed to check if users are on WhatsApp:", err) + } else { + for _, item := range resp { + if item.VerifiedName != nil { + log.Infof("%s: on whatsapp: %t, JID: %s, business name: %s", item.Query, item.IsIn, item.JID, item.VerifiedName.Details.GetVerifiedName()) + } else { + log.Infof("%s: on whatsapp: %t, JID: %s", item.Query, item.IsIn, item.JID) + } + } + } + case "checkupdate": + resp, err := cli.CheckUpdate() + if err != nil { + log.Errorf("Failed to check for updates: %v", err) + } else { + log.Debugf("Version data: %#v", resp) + if resp.ParsedVersion == store.GetWAVersion() { + log.Infof("Client is up to date") + } else if store.GetWAVersion().LessThan(resp.ParsedVersion) { + log.Warnf("Client is outdated") + } else { + log.Infof("Client is newer than latest") + } + } + case "subscribepresence": + if len(args) < 1 { + log.Errorf("Usage: subscribepresence ") + return + } + jid, ok := parseJID(args[0]) + if !ok { + return + } + err := cli.SubscribePresence(jid) + if err != nil { + fmt.Println(err) + } + case "presence": + if len(args) == 0 { + log.Errorf("Usage: presence ") + return + } + fmt.Println(cli.SendPresence(types.Presence(args[0]))) + case "chatpresence": + if len(args) == 2 { + args = append(args, "") + } else if len(args) < 2 { + log.Errorf("Usage: chatpresence [audio]") + return + } + jid, _ := types.ParseJID(args[0]) + fmt.Println(cli.SendChatPresence(jid, types.ChatPresence(args[1]), types.ChatPresenceMedia(args[2]))) + case "privacysettings": + resp, err := cli.TryFetchPrivacySettings(false) + if err != nil { + fmt.Println(err) + } else { + fmt.Printf("%+v\n", resp) + } + case "setprivacysetting": + if len(args) < 2 { + log.Errorf("Usage: setprivacysetting ") + return + } + setting := types.PrivacySettingType(args[0]) + value := types.PrivacySetting(args[1]) + resp, err := cli.SetPrivacySetting(setting, value) + if err != nil { + fmt.Println(err) + } else { + fmt.Printf("%+v\n", resp) + } + case "getuser": + if len(args) < 1 { + log.Errorf("Usage: getuser ") + return + } + var jids []types.JID + for _, arg := range args { + jid, ok := parseJID(arg) + if !ok { + return + } + jids = append(jids, jid) + } + resp, err := cli.GetUserInfo(jids) + if err != nil { + log.Errorf("Failed to get user info: %v", err) + } else { + for jid, info := range resp { + log.Infof("%s: %+v", jid, info) + } + } + case "mediaconn": + conn, err := cli.DangerousInternals().RefreshMediaConn(false) + if err != nil { + log.Errorf("Failed to get media connection: %v", err) + } else { + log.Infof("Media connection: %+v", conn) + } + case "raw": + var node waBinary.Node + if err := json.Unmarshal([]byte(strings.Join(args, " ")), &node); err != nil { + log.Errorf("Failed to parse args as JSON into XML node: %v", err) + } else if err = cli.DangerousInternals().SendNode(node); err != nil { + log.Errorf("Error sending node: %v", err) + } else { + log.Infof("Node sent") + } + case "listnewsletters": + newsletters, err := cli.GetSubscribedNewsletters() + if err != nil { + log.Errorf("Failed to get subscribed newsletters: %v", err) + return + } + for _, newsletter := range newsletters { + log.Infof("* %s: %s", newsletter.ID, newsletter.ThreadMeta.Name.Text) + } + case "getnewsletter": + jid, ok := parseJID(args[0]) + if !ok { + return + } + meta, err := cli.GetNewsletterInfo(jid) + if err != nil { + log.Errorf("Failed to get info: %v", err) + } else { + log.Infof("Got info: %+v", meta) + } + case "getnewsletterinvite": + meta, err := cli.GetNewsletterInfoWithInvite(args[0]) + if err != nil { + log.Errorf("Failed to get info: %v", err) + } else { + log.Infof("Got info: %+v", meta) + } + case "livesubscribenewsletter": + if len(args) < 1 { + log.Errorf("Usage: livesubscribenewsletter ") + return + } + jid, ok := parseJID(args[0]) + if !ok { + return + } + dur, err := cli.NewsletterSubscribeLiveUpdates(context.TODO(), jid) + if err != nil { + log.Errorf("Failed to subscribe to live updates: %v", err) + } else { + log.Infof("Subscribed to live updates for %s for %s", jid, dur) + } + case "getnewslettermessages": + if len(args) < 1 { + log.Errorf("Usage: getnewslettermessages [count] [before id]") + return + } + jid, ok := parseJID(args[0]) + if !ok { + return + } + count := 100 + var err error + if len(args) > 1 { + count, err = strconv.Atoi(args[1]) + if err != nil { + log.Errorf("Invalid count: %v", err) + return + } + } + var before types.MessageServerID + if len(args) > 2 { + before, err = strconv.Atoi(args[2]) + if err != nil { + log.Errorf("Invalid message ID: %v", err) + return + } + } + messages, err := cli.GetNewsletterMessages(jid, &whatsmeow.GetNewsletterMessagesParams{Count: count, Before: before}) + if err != nil { + log.Errorf("Failed to get messages: %v", err) + } else { + for _, msg := range messages { + log.Infof("%d: %+v (viewed %d times)", msg.MessageServerID, msg.Message, msg.ViewsCount) + } + } + case "createnewsletter": + if len(args) < 1 { + log.Errorf("Usage: createnewsletter ") + return + } + resp, err := cli.CreateNewsletter(whatsmeow.CreateNewsletterParams{ + Name: strings.Join(args, " "), + }) + if err != nil { + log.Errorf("Failed to create newsletter: %v", err) + } else { + log.Infof("Created newsletter %+v", resp) + } + case "getavatar": + if len(args) < 1 { + log.Errorf("Usage: getavatar [existing ID] [--preview] [--community]") + return + } + jid, ok := parseJID(args[0]) + if !ok { + return + } + existingID := "" + if len(args) > 2 { + existingID = args[2] + } + var preview, isCommunity bool + for _, arg := range args { + if arg == "--preview" { + preview = true + } else if arg == "--community" { + isCommunity = true + } + } + pic, err := cli.GetProfilePictureInfo(jid, &whatsmeow.GetProfilePictureParams{ + Preview: preview, + IsCommunity: isCommunity, + ExistingID: existingID, + }) + if err != nil { + log.Errorf("Failed to get avatar: %v", err) + } else if pic != nil { + log.Infof("Got avatar ID %s: %s", pic.ID, pic.URL) + } else { + log.Infof("No avatar found") + } + case "getgroup": + if len(args) < 1 { + log.Errorf("Usage: getgroup ") + return + } + group, ok := parseJID(args[0]) + if !ok { + return + } else if group.Server != types.GroupServer { + log.Errorf("Input must be a group JID (@%s)", types.GroupServer) + return + } + resp, err := cli.GetGroupInfo(group) + if err != nil { + log.Errorf("Failed to get group info: %v", err) + } else { + log.Infof("Group info: %+v", resp) + } + case "subgroups": + if len(args) < 1 { + log.Errorf("Usage: subgroups ") + return + } + group, ok := parseJID(args[0]) + if !ok { + return + } else if group.Server != types.GroupServer { + log.Errorf("Input must be a group JID (@%s)", types.GroupServer) + return + } + resp, err := cli.GetSubGroups(group) + if err != nil { + log.Errorf("Failed to get subgroups: %v", err) + } else { + for _, sub := range resp { + log.Infof("Subgroup: %+v", sub) + } + } + case "communityparticipants": + if len(args) < 1 { + log.Errorf("Usage: communityparticipants ") + return + } + group, ok := parseJID(args[0]) + if !ok { + return + } else if group.Server != types.GroupServer { + log.Errorf("Input must be a group JID (@%s)", types.GroupServer) + return + } + resp, err := cli.GetLinkedGroupsParticipants(group) + if err != nil { + log.Errorf("Failed to get community participants: %v", err) + } else { + log.Infof("Community participants: %+v", resp) + } + case "listgroups": + groups, err := cli.GetJoinedGroups() + if err != nil { + log.Errorf("Failed to get group list: %v", err) + } else { + for _, group := range groups { + log.Infof("%+v", group) + } + } + case "getinvitelink": + if len(args) < 1 { + log.Errorf("Usage: getinvitelink [--reset]") + return + } + group, ok := parseJID(args[0]) + if !ok { + return + } else if group.Server != types.GroupServer { + log.Errorf("Input must be a group JID (@%s)", types.GroupServer) + return + } + resp, err := cli.GetGroupInviteLink(group, len(args) > 1 && args[1] == "--reset") + if err != nil { + log.Errorf("Failed to get group invite link: %v", err) + } else { + log.Infof("Group invite link: %s", resp) + } + case "queryinvitelink": + if len(args) < 1 { + log.Errorf("Usage: queryinvitelink ") + return + } + resp, err := cli.GetGroupInfoFromLink(args[0]) + if err != nil { + log.Errorf("Failed to resolve group invite link: %v", err) + } else { + log.Infof("Group info: %+v", resp) + } + case "querybusinesslink": + if len(args) < 1 { + log.Errorf("Usage: querybusinesslink ") + return + } + resp, err := cli.ResolveBusinessMessageLink(args[0]) + if err != nil { + log.Errorf("Failed to resolve business message link: %v", err) + } else { + log.Infof("Business info: %+v", resp) + } + case "joininvitelink": + if len(args) < 1 { + log.Errorf("Usage: acceptinvitelink ") + return + } + groupID, err := cli.JoinGroupWithLink(args[0]) + if err != nil { + log.Errorf("Failed to join group via invite link: %v", err) + } else { + log.Infof("Joined %s", groupID) + } + case "updateparticipant": + if len(args) < 3 { + log.Errorf("Usage: updateparticipant ") + return + } + jid, ok := parseJID(args[0]) + if !ok { + return + } + action := whatsmeow.ParticipantChange(args[1]) + switch action { + case whatsmeow.ParticipantChangeAdd, whatsmeow.ParticipantChangeRemove, whatsmeow.ParticipantChangePromote, whatsmeow.ParticipantChangeDemote: + default: + log.Errorf("Valid actions: add, remove, promote, demote") + return + } + users := make([]types.JID, len(args)-2) + for i, arg := range args[2:] { + users[i], ok = parseJID(arg) + if !ok { + return + } + } + resp, err := cli.UpdateGroupParticipants(jid, users, action) + if err != nil { + log.Errorf("Failed to add participant: %v", err) + return + } + for _, item := range resp { + if action == whatsmeow.ParticipantChangeAdd && item.Error == 403 && item.AddRequest != nil { + log.Infof("Participant is private: %d %s %s %v", item.Error, item.JID, item.AddRequest.Code, item.AddRequest.Expiration) + cli.SendMessage(context.TODO(), item.JID, &waProto.Message{ + GroupInviteMessage: &waProto.GroupInviteMessage{ + InviteCode: proto.String(item.AddRequest.Code), + InviteExpiration: proto.Int64(item.AddRequest.Expiration.Unix()), + GroupJid: proto.String(jid.String()), + GroupName: proto.String("Test group"), + Caption: proto.String("This is a test group"), + }, + }) + } else if item.Error == 409 { + log.Infof("Participant already in group: %d %s %+v", item.Error, item.JID) + } else if item.Error == 0 { + log.Infof("Added participant: %d %s %+v", item.Error, item.JID) + } else { + log.Infof("Unknown status: %d %s %+v", item.Error, item.JID) + } + } + case "getrequestparticipant": + if len(args) < 1 { + log.Errorf("Usage: getrequestparticipant ") + return + } + group, ok := parseJID(args[0]) + if !ok { + log.Errorf("Invalid JID") + return + } + resp, err := cli.GetGroupRequestParticipants(group) + if err != nil { + log.Errorf("Failed to get request participants: %v", err) + } else { + log.Infof("Request participants: %+v", resp) + } + case "getstatusprivacy": + resp, err := cli.GetStatusPrivacy() + fmt.Println(err) + fmt.Println(resp) + case "setdisappeartimer": + if len(args) < 2 { + log.Errorf("Usage: setdisappeartimer ") + return + } + days, err := strconv.Atoi(args[1]) + if err != nil { + log.Errorf("Invalid duration: %v", err) + return + } + recipient, ok := parseJID(args[0]) + if !ok { + return + } + err = cli.SetDisappearingTimer(recipient, time.Duration(days)*24*time.Hour) + if err != nil { + log.Errorf("Failed to set disappearing timer: %v", err) + } + case "setdefaultdisappeartimer": + if len(args) < 1 { + log.Errorf("Usage: setdefaultdisappeartimer ") + return + } + days, err := strconv.Atoi(args[0]) + if err != nil { + log.Errorf("Invalid duration: %v", err) + return + } + err = cli.SetDefaultDisappearingTimer(time.Duration(days) * 24 * time.Hour) + if err != nil { + log.Errorf("Failed to set default disappearing timer: %v", err) + } + case "send": + if len(args) < 2 { + log.Errorf("Usage: send ") + return + } + recipient, ok := parseJID(args[0]) + if !ok { + return + } + msg := &waProto.Message{Conversation: proto.String(strings.Join(args[1:], " "))} + resp, err := cli.SendMessage(context.Background(), recipient, msg) + if err != nil { + log.Errorf("Error sending message: %v", err) + } else { + log.Infof("Message sent (server timestamp: %s)", resp.Timestamp) + } + case "sendpoll": + if len(args) < 7 { + log.Errorf("Usage: sendpoll --