diff --git a/Telegram/DeployLinux.sh b/Telegram/DeployLinux.sh index f94b95f18..b7c91ea4d 100755 --- a/Telegram/DeployLinux.sh +++ b/Telegram/DeployLinux.sh @@ -1,5 +1,5 @@ -AppVersionStr=0.6.8 -AppVersion=6008 +AppVersionStr=0.6.9 +AppVersion=6009 if [ ! -f "./../Linux/Release/deploy/$AppVersionStr/tlinuxupd$AppVersion" ]; then echo "tlinuxupd$AppVersion not found!"; diff --git a/Telegram/DeployLinux32.sh b/Telegram/DeployLinux32.sh index 5455db6b5..52ac0becc 100755 --- a/Telegram/DeployLinux32.sh +++ b/Telegram/DeployLinux32.sh @@ -1,5 +1,5 @@ -AppVersionStr=0.6.8 -AppVersion=6008 +AppVersionStr=0.6.9 +AppVersion=6009 if [ ! -f "./../Linux/Release/deploy/$AppVersionStr/tlinux32upd$AppVersion" ]; then echo "tlinux32upd$AppVersion not found!" diff --git a/Telegram/DeployMacWin.sh b/Telegram/DeployMacWin.sh index f18fecdb5..3650c36d0 100755 --- a/Telegram/DeployMacWin.sh +++ b/Telegram/DeployMacWin.sh @@ -1,5 +1,5 @@ -AppVersionStr=0.6.8 -AppVersion=6008 +AppVersionStr=0.6.9 +AppVersion=6009 if [ ! -f "./../Mac/Release/deploy/$AppVersionStr/tmacupd$AppVersion" ]; then echo "tmacupd$AppVersion not found!" diff --git a/Telegram/DeployWin.sh b/Telegram/DeployWin.sh index ae5bdb810..a3f186836 100644 --- a/Telegram/DeployWin.sh +++ b/Telegram/DeployWin.sh @@ -1,5 +1,5 @@ -AppVersionStr=0.6.8 -AppVersion=6008 +AppVersionStr=0.6.9 +AppVersion=6009 if [ ! -f "./../Win32/Deploy/deploy/$AppVersionStr/tupdate$AppVersion" ]; then echo "tupdate$AppVersion not found!" diff --git a/Telegram/PrepareLinux.sh b/Telegram/PrepareLinux.sh index 453efb7c5..cda49b097 100755 --- a/Telegram/PrepareLinux.sh +++ b/Telegram/PrepareLinux.sh @@ -1,5 +1,5 @@ -AppVersionStr=0.6.8 -AppVersion=6008 +AppVersionStr=0.6.9 +AppVersion=6009 if [ -d "./../Linux/Release/deploy/$AppVersionStr" ]; then echo "Deploy folder for version $AppVersionStr already exists!" diff --git a/Telegram/PrepareLinux32.sh b/Telegram/PrepareLinux32.sh index a405b3f4f..bce013a24 100755 --- a/Telegram/PrepareLinux32.sh +++ b/Telegram/PrepareLinux32.sh @@ -1,5 +1,5 @@ -AppVersionStr=0.6.8 -AppVersion=6008 +AppVersionStr=0.6.9 +AppVersion=6009 if [ -d "./../Linux/Release/deploy/$AppVersionStr" ]; then echo "Deploy folder for version $AppVersionStr already exists!" diff --git a/Telegram/PrepareMac.sh b/Telegram/PrepareMac.sh index 79192d3bb..154e0704f 100755 --- a/Telegram/PrepareMac.sh +++ b/Telegram/PrepareMac.sh @@ -1,5 +1,5 @@ -AppVersionStr=0.6.8 -AppVersion=6008 +AppVersionStr=0.6.9 +AppVersion=6009 echo "" echo "Preparing version $AppVersionStr.." diff --git a/Telegram/PrepareWin.bat b/Telegram/PrepareWin.bat index f50b3155b..186cad0a1 100644 --- a/Telegram/PrepareWin.bat +++ b/Telegram/PrepareWin.bat @@ -1,6 +1,6 @@ @echo OFF -set "AppVersionStr=0.6.8" +set "AppVersionStr=0.6.9" echo. echo Preparing version %AppVersionStr%.. echo. diff --git a/Telegram/Resources/lang.txt b/Telegram/Resources/lang.txt index 8bb1a994e..ab9c89331 100644 --- a/Telegram/Resources/lang.txt +++ b/Telegram/Resources/lang.txt @@ -61,7 +61,10 @@ lng_connecting: "Connecting.."; lng_reconnecting: "Reconnect in %1 s.."; lng_reconnecting_try_now: "Try now"; -lng_status_offline: "offline"; +lng_status_offline: "last seen a long time ago"; +lng_status_recently: "last seen recently"; +lng_status_last_week: "last seen within a week"; +lng_status_last_month: "last seen within a month"; lng_status_invisible: "invisible"; lng_status_lastseen: "last seen {when}"; lng_status_lastseen_now: "just now"; diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt index 0f1b556a2..b79c55f99 100644 --- a/Telegram/Resources/style.txt +++ b/Telegram/Resources/style.txt @@ -1572,6 +1572,9 @@ medviewPhotoSpritePos: point(14px, 14px); overviewPhotoSkip: 10px; overviewPhotoMinSize: 100px; +overviewPhotoCheck: sprite(245px, 308px, 32px, 32px); +overviewPhotoChecked: sprite(278px, 308px, 32px, 32px); +overviewPhotoSelectOverlay: #0a7bb03f; // Mac specific diff --git a/Telegram/Setup.iss b/Telegram/Setup.iss index f12407d8b..00a196c32 100644 --- a/Telegram/Setup.iss +++ b/Telegram/Setup.iss @@ -3,9 +3,9 @@ #define MyAppShortName "Telegram" #define MyAppName "Telegram Desktop" -#define MyAppVersion "0.6.8" -#define MyAppVersionZero "0.6.8" -#define MyAppFullVersion "0.6.8.0" +#define MyAppVersion "0.6.9" +#define MyAppVersionZero "0.6.9" +#define MyAppFullVersion "0.6.9.0" #define MyAppPublisher "Telegram Messenger LLP" #define MyAppURL "https://tdesktop.com" #define MyAppExeName "Telegram.exe" diff --git a/Telegram/SourceFiles/app.cpp b/Telegram/SourceFiles/app.cpp index 725ea731d..1fe000a8c 100644 --- a/Telegram/SourceFiles/app.cpp +++ b/Telegram/SourceFiles/app.cpp @@ -183,8 +183,15 @@ namespace App { } QString onlineText(int32 online, int32 now, bool precise) { - if (!online) return lang(lng_status_offline); - if (online < 0) return lang(lng_status_invisible); + if (online <= 0) { + switch (online) { + case 0: return lang(lng_status_offline); + case -2: return lang(lng_status_recently); + case -3: return lang(lng_status_last_week); + case -4: return lang(lng_status_last_month); + } + return lang(lng_status_invisible); + } if (online > now) { return lang(lng_status_online); } @@ -329,6 +336,10 @@ namespace App { data->loaded = true; if (status) switch (status->type()) { + case mtpc_userStatusEmpty: data->onlineTill = 0; break; + case mtpc_userStatusRecently: data->onlineTill = -2; break; + case mtpc_userStatusLastWeek: data->onlineTill = -3; break; + case mtpc_userStatusLastMonth: data->onlineTill = -4; break; case mtpc_userStatusOffline: data->onlineTill = status->c_userStatusOffline().vwas_online.v; break; case mtpc_userStatusOnline: data->onlineTill = status->c_userStatusOnline().vexpires.v; break; } @@ -408,7 +419,7 @@ namespace App { if (!data) continue; data->loaded = true; - data->updateName(title.trimmed(), QString()); + data->updateName(title.trimmed(), QString(), QString()); if (App::main()) App::main()->peerUpdated(data); } diff --git a/Telegram/SourceFiles/application.cpp b/Telegram/SourceFiles/application.cpp index a3f9948b8..2b2306fdb 100644 --- a/Telegram/SourceFiles/application.cpp +++ b/Telegram/SourceFiles/application.cpp @@ -633,7 +633,6 @@ void Application::startApp() { readSupportTemplates(); - MTP::setLayer(mtpLayerMax); MTP::start(); MTP::setStateChangedHandler(mtpStateChanged); diff --git a/Telegram/SourceFiles/art/sprite.png b/Telegram/SourceFiles/art/sprite.png index 9183265f1..f7c063b2f 100644 Binary files a/Telegram/SourceFiles/art/sprite.png and b/Telegram/SourceFiles/art/sprite.png differ diff --git a/Telegram/SourceFiles/art/sprite_200x.png b/Telegram/SourceFiles/art/sprite_200x.png index 6265c62f6..7136046cb 100644 Binary files a/Telegram/SourceFiles/art/sprite_200x.png and b/Telegram/SourceFiles/art/sprite_200x.png differ diff --git a/Telegram/SourceFiles/boxes/addcontactbox.cpp b/Telegram/SourceFiles/boxes/addcontactbox.cpp index 5f7228714..e77889376 100644 --- a/Telegram/SourceFiles/boxes/addcontactbox.cpp +++ b/Telegram/SourceFiles/boxes/addcontactbox.cpp @@ -281,7 +281,7 @@ bool AddContactBox::onSaveFail(const RPCError &error) { QString err(error.type()); QString firstName = _firstInput.text().trimmed(), lastName = _lastInput.text().trimmed(); if (err == "CHAT_TITLE_NOT_MODIFIED") { - _peer->updateName(firstName, QString()); + _peer->updateName(firstName, QString(), QString()); emit closed(); return true; } else if (err == "NO_CHAT_TITLE") { diff --git a/Telegram/SourceFiles/boxes/addparticipantbox.cpp b/Telegram/SourceFiles/boxes/addparticipantbox.cpp index cd3d73706..c1e02dffe 100644 --- a/Telegram/SourceFiles/boxes/addparticipantbox.cpp +++ b/Telegram/SourceFiles/boxes/addparticipantbox.cpp @@ -231,6 +231,7 @@ void AddParticipantInner::mousePressEvent(QMouseEvent *e) { } void AddParticipantInner::chooseParticipant() { + _time = unixtime(); int32 rh = st::profileListPhotoSize + st::profileListPadding.height() * 2, from; if (_filter.isEmpty()) { if (!_sel || contactData(_sel)->inchat) return; @@ -293,6 +294,7 @@ void AddParticipantInner::updateSel() { } void AddParticipantInner::updateFilter(QString filter) { + _time = unixtime(); QStringList f; if (!filter.isEmpty()) { QStringList filterList = filter.split(cWordSplit(), QString::SkipEmptyParts); @@ -405,6 +407,7 @@ AddParticipantInner::~AddParticipantInner() { } void AddParticipantInner::selectSkip(int32 dir) { + _time = unixtime(); _mouseSel = false; int32 rh = st::profileListPhotoSize + st::profileListPadding.height() * 2, origDir = dir; if (_filter.isEmpty()) { diff --git a/Telegram/SourceFiles/config.h b/Telegram/SourceFiles/config.h index 6826b2e48..03cb6ba2a 100644 --- a/Telegram/SourceFiles/config.h +++ b/Telegram/SourceFiles/config.h @@ -17,8 +17,8 @@ Copyright (c) 2014 John Preston, https://tdesktop.com */ #pragma once -static const int32 AppVersion = 6008; -static const wchar_t *AppVersionStr = L"0.6.8"; +static const int32 AppVersion = 6009; +static const wchar_t *AppVersionStr = L"0.6.9"; static const wchar_t *AppNameOld = L"Telegram Win (Unofficial)"; static const wchar_t *AppName = L"Telegram Desktop"; diff --git a/Telegram/SourceFiles/gui/text.cpp b/Telegram/SourceFiles/gui/text.cpp index 78e0a9437..11d160692 100644 --- a/Telegram/SourceFiles/gui/text.cpp +++ b/Telegram/SourceFiles/gui/text.cpp @@ -3975,7 +3975,7 @@ QString textAccentFold(const QString &text) { continue; } if (ch->isHighSurrogate() && ch + 1 < e && (ch + 1)->isLowSurrogate()) { - QChar noAccent = QChar::surrogateToUcs4(*ch, *(ch + 1)); + QChar noAccent = chNoAccent(QChar::surrogateToUcs4(*ch, *(ch + 1))); if (noAccent.unicode() > 0) { copying = true; result[i] = noAccent; diff --git a/Telegram/SourceFiles/history.cpp b/Telegram/SourceFiles/history.cpp index bcb433e63..48a3bdf89 100644 --- a/Telegram/SourceFiles/history.cpp +++ b/Telegram/SourceFiles/history.cpp @@ -296,12 +296,13 @@ const ChatData *PeerData::asChat() const { return chat ? static_cast(this) : App::chat(id | 0x100000000L); } -void PeerData::updateName(const QString &newName, const QString &newNameOrPhone) { - if (name == newName && nameOrPhone == newNameOrPhone) return; +void PeerData::updateName(const QString &newName, const QString &newNameOrPhone, const QString &newUsername) { + if (name == newName && nameOrPhone == newNameOrPhone && (chat || asUser()->username == newUsername)) return; ++nameVersion; name = newName; nameOrPhone = newNameOrPhone; + if (!chat) asUser()->username = newUsername; Names oldNames = names; NameFirstChars oldChars = chars; fillNames(); @@ -352,24 +353,23 @@ void PeerData::fillNames() { void UserData::setName(const QString &first, const QString &last, const QString &phoneName, const QString &usern) { - bool updName = !first.isEmpty() || !last.isEmpty(); - - if (username != usern) { - username = usern; - if (App::main()) { - App::main()->peerUsernameChanged(this); - } - } + bool updName = !first.isEmpty() || !last.isEmpty(), updUsername = (username != usern); + if (updName && first.trimmed().isEmpty()) { firstName = last; lastName = QString(); - updateName(firstName, phoneName); + updateName(firstName, phoneName, usern); } else { if (updName) { firstName = first; lastName = last; } - updateName(firstName + ' ' + lastName, phoneName); + updateName(firstName + ' ' + lastName, phoneName, usern); + } + if (updUsername) { + if (App::main()) { + App::main()->peerUsernameChanged(this); + } } } @@ -1168,7 +1168,7 @@ HistoryItem *History::createItem(HistoryBlock *block, const MTPmessage &msg, boo case mtpc_messageActionChatEditTitle: { const MTPDmessageActionChatEditTitle &d(action.c_messageActionChatEditTitle()); ChatData *chat = peer->asChat(); - if (chat) chat->updateName(qs(d.vtitle), QString()); + if (chat) chat->updateName(qs(d.vtitle), QString(), QString()); } break; } } @@ -3074,7 +3074,7 @@ void ImageLinkManager::init() { App::setProxySettings(*manager); connect(manager, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)), this, SLOT(onFailed(QNetworkReply*))); - connect(manager, SIGNAL(sslErrors(QNetworkReply*, const QList&errors)), this, SLOT(onFailed(QNetworkReply*))); + connect(manager, SIGNAL(sslErrors(QNetworkReply*, const QList&)), this, SLOT(onFailed(QNetworkReply*))); connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onFinished(QNetworkReply*))); if (black) delete black; diff --git a/Telegram/SourceFiles/history.h b/Telegram/SourceFiles/history.h index e7ca3450f..086d8d75a 100644 --- a/Telegram/SourceFiles/history.h +++ b/Telegram/SourceFiles/history.h @@ -82,7 +82,7 @@ struct PeerData { ChatData *asChat(); const ChatData *asChat() const; - void updateName(const QString &newName, const QString &newNameOrPhone); + void updateName(const QString &newName, const QString &newNameOrPhone, const QString &newUsername); void fillNames(); diff --git a/Telegram/SourceFiles/historywidget.cpp b/Telegram/SourceFiles/historywidget.cpp index 96d56ff66..f6bda8f1d 100644 --- a/Telegram/SourceFiles/historywidget.cpp +++ b/Telegram/SourceFiles/historywidget.cpp @@ -1548,7 +1548,7 @@ HistoryWidget::HistoryWidget(QWidget *parent) : QWidget(parent) connect(&_attachDocument, SIGNAL(clicked()), this, SLOT(onDocumentSelect())); connect(&_attachPhoto, SIGNAL(clicked()), this, SLOT(onPhotoSelect())); connect(&_field, SIGNAL(submitted(bool)), this, SLOT(onSend(bool))); - connect(&_field, SIGNAL(cancelled()), this, SIGNAL(cancelled())); + connect(&_field, SIGNAL(cancelled()), this, SLOT(onCancel())); connect(&_field, SIGNAL(tabbed()), this, SLOT(onFieldTabbed())); connect(&_field, SIGNAL(resized()), this, SLOT(onFieldResize())); connect(&_field, SIGNAL(focused()), this, SLOT(onFieldFocused())); @@ -3161,6 +3161,11 @@ void HistoryWidget::setFieldText(const QString &text) { noTypingUpdate = false; } +void HistoryWidget::onCancel() { + showPeer(0); + emit cancelled(); +} + void HistoryWidget::peerUpdated(PeerData *data) { if (data && data == histPeer) { updateListSize(); diff --git a/Telegram/SourceFiles/historywidget.h b/Telegram/SourceFiles/historywidget.h index 4085fea56..1833c6244 100644 --- a/Telegram/SourceFiles/historywidget.h +++ b/Telegram/SourceFiles/historywidget.h @@ -343,6 +343,8 @@ signals: public slots: + void onCancel(); + void peerUpdated(PeerData *data); void cancelTyping(); diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index bc77f5a40..4a54c42f2 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -2252,6 +2252,9 @@ void MainWidget::feedUpdate(const MTPUpdate &update) { if (user) { switch (d.vstatus.type()) { case mtpc_userStatusEmpty: user->onlineTill = 0; break; + case mtpc_userStatusRecently: user->onlineTill = -2; break; + case mtpc_userStatusLastWeek: user->onlineTill = -3; break; + case mtpc_userStatusLastMonth: user->onlineTill = -4; break; case mtpc_userStatusOffline: user->onlineTill = d.vstatus.c_userStatusOffline().vwas_online.v; break; case mtpc_userStatusOnline: user->onlineTill = d.vstatus.c_userStatusOnline().vexpires.v; break; } @@ -2263,8 +2266,12 @@ void MainWidget::feedUpdate(const MTPUpdate &update) { case mtpc_updateUserName: { const MTPDupdateUserName &d(update.c_updateUserName()); UserData *user = App::userLoaded(d.vuser_id.v); - if (user && user->contact <= 0) { - user->setName(textOneLine(qs(d.vfirst_name)), textOneLine(qs(d.vlast_name)), user->nameOrPhone, textOneLine(qs(d.vusername))); + if (user) { + if (user->contact <= 0) { + user->setName(textOneLine(qs(d.vfirst_name)), textOneLine(qs(d.vlast_name)), user->nameOrPhone, textOneLine(qs(d.vusername))); + } else { + user->setName(textOneLine(user->firstName), textOneLine(user->lastName), user->nameOrPhone, textOneLine(qs(d.vusername))); + } if (App::main()) App::main()->peerUpdated(user); } } break; diff --git a/Telegram/SourceFiles/mtproto/generate.py b/Telegram/SourceFiles/mtproto/generate.py index c8b5470c9..f0015264c 100644 --- a/Telegram/SourceFiles/mtproto/generate.py +++ b/Telegram/SourceFiles/mtproto/generate.py @@ -177,11 +177,11 @@ with open('scheme.tl') as f: funcsText += '\tMTP' + name + '(' + ', '.join(prmsStr) + ') : ' + ', '.join(prmsInit) + ' {\n\t}\n'; funcsText += '\n'; - funcsText += '\tuint32 size() const {\n'; # count size + funcsText += '\tuint32 innerLength() const {\n'; # count size size = []; for k in prmsList: v = prms[k]; - size.append('v' + k + '.size()'); + size.append('v' + k + '.innerLength()'); if (not len(size)): size.append('0'); funcsText += '\t\treturn ' + ' + '.join(size) + ';\n'; @@ -402,7 +402,7 @@ for restype in typesList: writeText += '\t\t'; readText += '\tv.v' + paramName + '.read(from, end);\n'; writeText += '\tv.v' + paramName + '.write(to);\n'; - sizeList.append('v.v' + paramName + '.size()'); + sizeList.append('v.v' + paramName + '.innerLength()'); forwards += 'class MTPD' + name + ';\n'; # data class forward declaration @@ -505,8 +505,8 @@ for restype in typesList: if (withData): typesText += getters; - typesText += '\n\tuint32 size() const;\n'; # size method - inlineMethods += '\ninline uint32 MTP' + restype + '::size() const {\n'; + typesText += '\n\tuint32 innerLength() const;\n'; # size method + inlineMethods += '\ninline uint32 MTP' + restype + '::innerLength() const {\n'; if (withType and sizeCases): inlineMethods += '\tswitch (_type) {\n'; inlineMethods += sizeCases; diff --git a/Telegram/SourceFiles/mtproto/mtp.cpp b/Telegram/SourceFiles/mtproto/mtp.cpp index a85274a5f..06ee2b54d 100644 --- a/Telegram/SourceFiles/mtproto/mtp.cpp +++ b/Telegram/SourceFiles/mtproto/mtp.cpp @@ -350,10 +350,6 @@ namespace _mtp_internal { requestsByDC.remove(requestId); } - uint32 getLayer() { - return layer; - } - mtpRequestId storeRequest(mtpRequest &request, const RPCResponseHandler &parser) { mtpRequestId res = reqid(); request->requestId = res; @@ -379,20 +375,25 @@ namespace _mtp_internal { return req; } - void wrapInvokeAfter(mtpRequest &to, const mtpRequest &from, const mtpRequestMap &haveSent) { + void wrapInvokeAfter(mtpRequest &to, const mtpRequest &from, const mtpRequestMap &haveSent, int32 skipBeforeRequest) { mtpMsgId afterId(*(mtpMsgId*)(from->after->data() + 4)); mtpRequestMap::const_iterator i = afterId ? haveSent.constFind(afterId) : haveSent.cend(); - int32 size = to->size(), len = (*from)[7] >> 2, headlen = 4, fulllen = headlen + len; + int32 size = to->size(), lenInInts = (from.innerLength() >> 2), headlen = 4, fulllen = headlen + lenInInts; if (i == haveSent.constEnd()) { // no invoke after or such msg was not sent or was completed recently - to->resize(size + fulllen); - memcpy(to->data() + size, from->constData() + 4, fulllen * sizeof(mtpPrime)); + to->resize(size + fulllen + skipBeforeRequest); + if (skipBeforeRequest) { + memcpy(to->data() + size, from->constData() + 4, headlen * sizeof(mtpPrime)); + memcpy(to->data() + size + headlen + skipBeforeRequest, from->constData() + 4 + headlen, lenInInts * sizeof(mtpPrime)); + } else { + memcpy(to->data() + size, from->constData() + 4, fulllen * sizeof(mtpPrime)); + } } else { - to->resize(size + fulllen + 3); + to->resize(size + fulllen + skipBeforeRequest + 3); memcpy(to->data() + size, from->constData() + 4, headlen * sizeof(mtpPrime)); (*to)[size + 3] += 3 * sizeof(mtpPrime); - *((mtpTypeId*)&((*to)[size + headlen])) = mtpc_invokeAfterMsg; - memcpy(to->data() + size + headlen + 1, &afterId, 2 * sizeof(mtpPrime)); - memcpy(to->data() + size + headlen + 3, from->constData() + 4 + headlen, len * sizeof(mtpPrime)); + *((mtpTypeId*)&((*to)[size + headlen + skipBeforeRequest])) = mtpc_invokeAfterMsg; + memcpy(to->data() + size + headlen + skipBeforeRequest + 1, &afterId, 2 * sizeof(mtpPrime)); + memcpy(to->data() + size + headlen + skipBeforeRequest + 3, from->constData() + 4 + headlen, lenInInts * sizeof(mtpPrime)); if (size + 3 != 7) (*to)[7] += 3 * sizeof(mtpPrime); } } @@ -624,15 +625,6 @@ namespace MTP { } } - void setLayer(uint32 l) { - if (l > mtpLayerMax) { - l = mtpLayerMax; - } else if (!l) { - l = 1; - } - layer = l - 1; - } - void setdc(int32 dc, bool fromZeroOnly) { if (!started) return; diff --git a/Telegram/SourceFiles/mtproto/mtp.h b/Telegram/SourceFiles/mtproto/mtp.h index 0ac3edef9..ae0f39b2f 100644 --- a/Telegram/SourceFiles/mtproto/mtp.h +++ b/Telegram/SourceFiles/mtproto/mtp.h @@ -26,13 +26,11 @@ namespace _mtp_internal { void registerRequest(mtpRequestId requestId, int32 dc); void unregisterRequest(mtpRequestId requestId); - uint32 getLayer(); - static const uint32 dcShift = 10000; mtpRequestId storeRequest(mtpRequest &request, const RPCResponseHandler &parser); mtpRequest getRequest(mtpRequestId req); - void wrapInvokeAfter(mtpRequest &to, const mtpRequest &from, const mtpRequestMap &haveSent); + void wrapInvokeAfter(mtpRequest &to, const mtpRequest &from, const mtpRequestMap &haveSent, int32 skipBeforeRequest = 0); void clearCallbacks(mtpRequestId requestId, int32 errorCode = RPCError::NoError); // 0 - do not toggle onError callback void clearCallbacksDelayed(const RPCCallbackClears &requestIds); void performDelayedClear(); @@ -86,8 +84,6 @@ namespace MTP { void restart(); void restart(int32 dcMask); - void setLayer(uint32 layer); - void setdc(int32 dc, bool fromZeroOnly = false); int32 maindc(); int32 dcstate(int32 dc = 0); @@ -98,7 +94,7 @@ namespace MTP { MTProtoSessionPtr session = _mtp_internal::getSession(dc); if (!session) return 0; - return session->send(request, callbacks, msCanWait, _mtp_internal::getLayer(), !dc, after); + return session->send(request, callbacks, msCanWait, true, !dc, after); } template inline mtpRequestId send(const TRequest &request, RPCDoneHandlerPtr onDone, RPCFailHandlerPtr onFail = RPCFailHandlerPtr(), int32 dc = 0, uint64 msCanWait = 0, mtpRequestId after = 0) { diff --git a/Telegram/SourceFiles/mtproto/mtpConnection.cpp b/Telegram/SourceFiles/mtproto/mtpConnection.cpp index 5a33f60c8..6652f9754 100644 --- a/Telegram/SourceFiles/mtproto/mtpConnection.cpp +++ b/Telegram/SourceFiles/mtproto/mtpConnection.cpp @@ -473,7 +473,7 @@ namespace { mtpBuffer _preparePQFake(const MTPint128 &nonce) { MTPReq_pq req_pq(nonce); mtpBuffer buffer; - uint32 requestSize = req_pq.size() >> 2; + uint32 requestSize = req_pq.innerLength() >> 2; buffer.resize(0); buffer.reserve(8 + requestSize); @@ -604,7 +604,7 @@ void MTPabstractTcpConnection::socketRead() { } MTPautoConnection::MTPautoConnection(QThread *thread) : status(WaitingBoth), -tcpNonce(MTP::nonce()), httpNonce(MTP::nonce()) { +tcpNonce(MTP::nonce()), httpNonce(MTP::nonce()), _tcpTimeout(1) { moveToThread(thread); manager.moveToThread(thread); @@ -613,6 +613,9 @@ tcpNonce(MTP::nonce()), httpNonce(MTP::nonce()) { httpStartTimer.moveToThread(thread); httpStartTimer.setSingleShot(true); connect(&httpStartTimer, SIGNAL(timeout()), this, SLOT(onHttpStart())); + tcpTimeoutTimer.moveToThread(thread); + tcpTimeoutTimer.setSingleShot(true); + connect(&tcpTimeoutTimer, SIGNAL(timeout()), this, SLOT(onTcpTimeoutTimer())); sock.moveToThread(thread); sock.setProxy(QNetworkProxy(QNetworkProxy::NoProxy)); @@ -627,7 +630,7 @@ void MTPautoConnection::onHttpStart() { if (status == HttpReady) { DEBUG_LOG(("Connection Info: Http-transport chosen by timer")); status = UsingHttp; - sock.disconnect(); + sock.disconnectFromHost(); emit connected(); } } @@ -638,13 +641,37 @@ void MTPautoConnection::onSocketConnected() { DEBUG_LOG(("Connection Info: sending fake req_pq through tcp transport")); + if (_tcpTimeout < 0) _tcpTimeout = -_tcpTimeout; + tcpTimeoutTimer.start(_tcpTimeout * 1000); + tcpSend(buffer); } else if (status == WaitingHttp || status == UsingHttp) { - sock.disconnect(); + sock.disconnectFromHost(); + } +} + +void MTPautoConnection::onTcpTimeoutTimer() { + if (status == HttpReady || status == WaitingBoth || status == WaitingTcp) { + if (_tcpTimeout < 64) _tcpTimeout *= 2; + _tcpTimeout = -_tcpTimeout; + + QAbstractSocket::SocketState state = sock.state(); + if (state == QAbstractSocket::ConnectedState || state == QAbstractSocket::ConnectingState || state == QAbstractSocket::HostLookupState) { + sock.disconnectFromHost(); + } else if (state != QAbstractSocket::ClosingState) { + sock.connectToHost(QHostAddress(_addr), _port); + } } } void MTPautoConnection::onSocketDisconnected() { + if (_tcpTimeout < 0) { + _tcpTimeout = -_tcpTimeout; + if (status == HttpReady || status == WaitingBoth || status == WaitingTcp) { + sock.connectToHost(QHostAddress(_addr), _port); + return; + } + } if (status == WaitingBoth) { status = WaitingHttp; } else if (status == WaitingTcp || status == UsingTcp) { @@ -725,14 +752,17 @@ void MTPautoConnection::connectToServer(const QString &addr, int32 port) { address = QUrl(qsl("http://%1:%2/api").arg(addr).arg(80));//not port - always 80 port for http transport connect(&manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestFinished(QNetworkReply*))); + _addr = addr; + _port = port; + + connect(&sock, SIGNAL(readyRead()), this, SLOT(socketRead())); + sock.connectToHost(QHostAddress(_addr), _port); + mtpBuffer buffer(_preparePQFake(httpNonce)); DEBUG_LOG(("Connection Info: sending fake req_pq through http transport")); httpSend(buffer); - - sock.connectToHost(QHostAddress(addr), port); - connect(&sock, SIGNAL(readyRead()), this, SLOT(socketRead())); } bool MTPautoConnection::isConnected() { @@ -766,7 +796,7 @@ void MTPautoConnection::requestFinished(QNetworkReply *reply) { } else { DEBUG_LOG(("Connection Info: Http-transport chosen by pq-response, awaited")); status = UsingHttp; - sock.disconnect(); + sock.disconnectFromHost(); emit connected(); } } @@ -786,7 +816,7 @@ void MTPautoConnection::requestFinished(QNetworkReply *reply) { return; } - bool mayBeBadKey = _handleHttpError(reply); + bool mayBeBadKey = _handleHttpError(reply) && _sentEncrypted; if (status == WaitingBoth) { status = WaitingTcp; } else if (status == WaitingHttp || status == UsingHttp) { @@ -802,14 +832,15 @@ void MTPautoConnection::socketPacket(mtpPrime *packet, uint32 size) { if (data.size() == 1) { if (status == WaitingBoth) { status = WaitingHttp; - sock.disconnect(); + sock.disconnectFromHost(); } else if (status == HttpReady) { DEBUG_LOG(("Connection Info: Http-transport chosen by bad tcp response, ready")); status = UsingHttp; - sock.disconnect(); + sock.disconnectFromHost(); emit connected(); } else if (status == WaitingTcp || status == UsingTcp) { - emit error(data[0] == -404); + bool mayBeBadKey = (data[0] == -404) && _sentEncrypted; + emit error(mayBeBadKey); } else { LOG(("Strange Tcp Error; status %1").arg(status)); } @@ -817,6 +848,7 @@ void MTPautoConnection::socketPacket(mtpPrime *packet, uint32 size) { receivedQueue.push_back(data); emit receivedData(); } else if (status == WaitingBoth || status == WaitingTcp || status == HttpReady) { + tcpTimeoutTimer.stop(); try { MTPResPQ res_pq = _readPQFakeReply(data); const MTPDresPQ &res_pq_data(res_pq.c_resPQ()); @@ -828,11 +860,11 @@ void MTPautoConnection::socketPacket(mtpPrime *packet, uint32 size) { } catch (Exception &e) { if (status == WaitingBoth) { status = WaitingHttp; - sock.disconnect(); + sock.disconnectFromHost(); } else if (status == HttpReady) { DEBUG_LOG(("Connection Info: Http-transport chosen by bad tcp response, awaited")); status = UsingHttp; - sock.disconnect(); + sock.disconnectFromHost(); emit connected(); } else { emit error(); @@ -907,14 +939,15 @@ void MTPtcpConnection::disconnectFromServer() { } void MTPtcpConnection::connectToServer(const QString &addr, int32 port) { - sock.connectToHost(QHostAddress(addr), port); connect(&sock, SIGNAL(readyRead()), this, SLOT(socketRead())); + sock.connectToHost(QHostAddress(addr), port); } void MTPtcpConnection::socketPacket(mtpPrime *packet, uint32 size) { mtpBuffer data = _handleTcpResponse(packet, size); if (data.size() == 1) { - emit error(data[0] == -404); + bool mayBeBadKey = (data[0] == -404) && _sentEncrypted; + emit error(mayBeBadKey); } receivedQueue.push_back(data); @@ -1002,7 +1035,7 @@ void MTPhttpConnection::requestFinished(QNetworkReply *reply) { return; } - bool mayBeBadKey = _handleHttpError(reply); + bool mayBeBadKey = _handleHttpError(reply) && _sentEncrypted; emit error(mayBeBadKey); } @@ -1362,6 +1395,7 @@ void MTProtoConnectionPrivate::tryToSend() { return; } + bool needsLayer = !sessionData->layerWasInited(); bool prependOnly = false; mtpRequest pingRequest; if (toSendPingId) { @@ -1370,7 +1404,7 @@ void MTProtoConnectionPrivate::tryToSend() { prependOnly = (getState() != MTProtoConnection::Connected); DEBUG_LOG(("MTP Info: sending ping, ping_id: %1, prepend_only: %2").arg(ping.vping_id.v).arg(prependOnly ? "[TRUE]" : "[FALSE]")); - uint32 pingSize = ping.size() >> 2; // copy from MTProtoSession::send + uint32 pingSize = ping.innerLength() >> 2; // copy from MTProtoSession::send pingRequest = mtpRequestData::prepare(pingSize); ping.write(*pingRequest); @@ -1391,7 +1425,7 @@ void MTProtoConnectionPrivate::tryToSend() { if (!prependOnly && !ackRequestData.isEmpty()) { MTPMsgsAck ack(MTP_msgs_ack(MTP_vector(ackRequestData))); - ackRequest = mtpRequestData::prepare(ack.size() >> 2); + ackRequest = mtpRequestData::prepare(ack.innerLength() >> 2); ack.write(*ackRequest); ackRequest->msDate = getms(true); // > 0 - can send without container @@ -1402,7 +1436,7 @@ void MTProtoConnectionPrivate::tryToSend() { if (!prependOnly && !resendRequestData.isEmpty()) { MTPMsgResendReq resend(MTP_msg_resend_req(MTP_vector(resendRequestData))); - resendRequest = mtpRequestData::prepare(resend.size() >> 2); + resendRequest = mtpRequestData::prepare(resend.innerLength() >> 2); resend.write(*resendRequest); resendRequest->msDate = getms(true); // > 0 - can send without container @@ -1426,7 +1460,7 @@ void MTProtoConnectionPrivate::tryToSend() { if (!stateReq.isEmpty()) { MTPMsgsStateReq req(MTP_msgs_state_req(MTP_vector(stateReq))); - stateRequest = mtpRequestData::prepare(req.size() >> 2); + stateRequest = mtpRequestData::prepare(req.innerLength() >> 2); req.write(*stateRequest); stateRequest->msDate = getms(true); // > 0 - can send without container @@ -1434,6 +1468,14 @@ void MTProtoConnectionPrivate::tryToSend() { } } + MTPInitConnection initWrapperImpl, *initWrapper = &initWrapperImpl; + int32 initSize = 0, initSizeInInts = 0; + if (needsLayer) { + initWrapperImpl = MTPInitConnection(MTP_int(ApiId), MTP_string(cApiDeviceModel()), MTP_string(cApiSystemVersion()), MTP_string(cApiAppVersion()), MTP_string(ApiLang), mtpRequest()); + initSizeInInts = (initWrapper->innerLength() >> 2) + 2; + initSize = initSizeInInts * sizeof(mtpPrime); + } + bool needAnyResponse = false; mtpRequest toSendRequest; { @@ -1473,14 +1515,27 @@ void MTProtoConnectionPrivate::tryToSend() { QWriteLocker locker2(sessionData->haveSentMutex()); mtpRequestMap &haveSent(sessionData->haveSentMap()); haveSent.insert(msgId, toSendRequest); + + if (needsLayer && !toSendRequest->needsLayer) needsLayer = false; if (toSendRequest->after) { - int32 toSendSize = toSendRequest->at(7) >> 2; + int32 toSendSize = toSendRequest.innerLength() >> 2; mtpRequest wrappedRequest(mtpRequestData::prepare(toSendSize, toSendSize + 3)); // cons + msg_id wrappedRequest->resize(4); memcpy(wrappedRequest->data(), toSendRequest->constData(), 4 * sizeof(mtpPrime)); _mtp_internal::wrapInvokeAfter(wrappedRequest, toSendRequest, haveSent); toSendRequest = wrappedRequest; } + if (needsLayer) { + int32 noWrapSize = (toSendRequest.innerLength() >> 2), toSendSize = noWrapSize + initSizeInInts; + mtpRequest wrappedRequest(mtpRequestData::prepare(toSendSize)); + memcpy(wrappedRequest->data(), toSendRequest->constData(), 7 * sizeof(mtpPrime)); // all except length + wrappedRequest->push_back(mtpc_invokeWithLayer); + wrappedRequest->push_back(mtpCurrentLayer); + initWrapper->write(*wrappedRequest); + wrappedRequest->resize(wrappedRequest->size() + noWrapSize); + memcpy(wrappedRequest->data() + wrappedRequest->size() - noWrapSize, toSendRequest->constData() + 8, noWrapSize * sizeof(mtpPrime)); + toSendRequest = wrappedRequest; + } needAnyResponse = true; } else { @@ -1489,6 +1544,7 @@ void MTProtoConnectionPrivate::tryToSend() { } } } else { // send in container + bool willNeedInit = false; uint32 containerSize = 1 + 1, idsWrapSize = (toSendCount << 1); // cons + vector size, idsWrapSize - size of "request-like" wrap for msgId vector if (pingRequest) containerSize += mtpRequestData::messageSize(pingRequest); if (ackRequest) containerSize += mtpRequestData::messageSize(ackRequest); @@ -1496,6 +1552,17 @@ void MTProtoConnectionPrivate::tryToSend() { if (stateRequest) containerSize += mtpRequestData::messageSize(stateRequest); for (mtpPreRequestMap::iterator i = toSend.begin(), e = toSend.end(); i != e; ++i) { containerSize += mtpRequestData::messageSize(i.value()); + if (needsLayer && i.value()->needsLayer) { + containerSize += initSizeInInts; + willNeedInit = true; + } + } + mtpBuffer initSerialized; + if (willNeedInit) { + initSerialized.reserve(initSizeInInts); + initSerialized.push_back(mtpc_invokeWithLayer); + initSerialized.push_back(mtpCurrentLayer); + initWrapper->write(initSerialized); } toSendRequest = mtpRequestData::prepare(containerSize, containerSize + 3 * toSend.size()); // prepare container + each in invoke after toSendRequest->push_back(mtpc_msg_container); @@ -1530,8 +1597,20 @@ void MTProtoConnectionPrivate::tryToSend() { if (req->requestId) { if (mtpRequestData::needAck(req)) { req->msDate = mtpRequestData::isStateRequest(req) ? 0 : getms(true); + int32 reqNeedsLayer = (needsLayer && req->needsLayer) ? toSendRequest->size() : 0; if (req->after) { - _mtp_internal::wrapInvokeAfter(toSendRequest, req, haveSent); + _mtp_internal::wrapInvokeAfter(toSendRequest, req, haveSent, reqNeedsLayer ? initSizeInInts : 0); + if (reqNeedsLayer) { + memcpy(toSendRequest->data() + reqNeedsLayer + 4, initSerialized.constData(), initSize); + *(toSendRequest->data() + reqNeedsLayer + 3) += initSize; + } + added = true; + } else if (reqNeedsLayer) { + toSendRequest->resize(reqNeedsLayer + initSizeInInts + mtpRequestData::messageSize(req)); + memcpy(toSendRequest->data() + reqNeedsLayer, req->constData() + 4, 4 * sizeof(mtpPrime)); + memcpy(toSendRequest->data() + reqNeedsLayer + 4, initSerialized.constData(), initSize); + memcpy(toSendRequest->data() + reqNeedsLayer + 4 + initSizeInInts, req->constData() + 8, req.innerLength()); + *(toSendRequest->data() + reqNeedsLayer + 3) += initSize; added = true; } haveSent.insert(msgId, req); @@ -2329,6 +2408,10 @@ int32 MTProtoConnectionPrivate::handleOneReceived(const mtpPrime *from, const mt response.resize(end - from); memcpy(response.data(), from, (end - from) * sizeof(mtpPrime)); } + if (!sessionData->layerWasInited()) { + sessionData->setLayerWasInited(true); + sessionData->owner()->notifyLayerInited(true); + } mtpRequestId requestId = wasSent(reqMsgId.v); if (requestId && requestId != mtpRequestId(0xFFFFFFFF)) { @@ -2787,7 +2870,7 @@ void MTProtoConnectionPrivate::pqAnswered() { string &dhEncString(req_DH_params.vencrypted_data._string().v); - uint32 p_q_inner_size = p_q_inner.size(), encSize = (p_q_inner_size >> 2) + 6; + uint32 p_q_inner_size = p_q_inner.innerLength(), encSize = (p_q_inner_size >> 2) + 6; if (encSize >= 65) { mtpBuffer tmp; tmp.reserve(encSize); @@ -2854,7 +2937,7 @@ void MTProtoConnectionPrivate::dhParamsAnswered() { return restart(); } - uint32 nlen = authKeyData->new_nonce.size(), slen = authKeyData->server_nonce.size(); + uint32 nlen = authKeyData->new_nonce.innerLength(), slen = authKeyData->server_nonce.innerLength(); uchar tmp_aes[1024], sha1ns[20], sha1sn[20], sha1nn[20]; memcpy(tmp_aes, &authKeyData->new_nonce, nlen); memcpy(tmp_aes + nlen, &authKeyData->server_nonce, slen); @@ -2979,7 +3062,7 @@ void MTProtoConnectionPrivate::dhClientParamsSend() { string &sdhEncString(req_client_DH_params.vencrypted_data._string().v); - uint32 client_dh_inner_size = client_dh_inner.size(), encSize = (client_dh_inner_size >> 2) + 5, encFullSize = encSize; + uint32 client_dh_inner_size = client_dh_inner.innerLength(), encSize = (client_dh_inner_size >> 2) + 5, encFullSize = encSize; if (encSize & 0x03) { encFullSize += 4 - (encSize & 0x03); } @@ -3047,7 +3130,7 @@ void MTProtoConnectionPrivate::dhClientParamsAnswered() { DEBUG_LOG(("AuthKey Info: auth key gen succeed, id: %1, server salt: %2, auth key: %3").arg(authKey->keyId()).arg(serverSalt).arg(mb(authKeyData->auth_key, 256).str())); - sessionData->owner()->keyCreated(authKey); // slot will call authKeyCreated() + sessionData->owner()->notifyKeyCreated(authKey); // slot will call authKeyCreated() sessionData->clear(); unlockKey(); } return; @@ -3146,7 +3229,7 @@ void MTProtoConnectionPrivate::sendPing() { } void MTProtoConnectionPrivate::onError(bool mayBeBadKey) { - MTP_LOG(dc, ("Restarting after error..")); + MTP_LOG(dc, ("Restarting after error, maybe bad key: %1..").arg(logBool(mayBeBadKey))); return restart(mayBeBadKey); } @@ -3157,7 +3240,7 @@ template void MTProtoConnectionPrivate::sendRequestNotSecure(const TRequest &request) { try { mtpBuffer buffer; - uint32 requestSize = request.size() >> 2; + uint32 requestSize = request.innerLength() >> 2; buffer.resize(0); buffer.reserve(8 + requestSize); @@ -3264,6 +3347,7 @@ bool MTProtoConnectionPrivate::sendRequest(mtpRequest &request, bool needAnyResp DEBUG_LOG(("MTP Info: sending request, size: %1, num: %2, time: %3").arg(fullSize + 6).arg((*request)[4]).arg((*request)[5])); + conn->setSentEncrypted(); conn->sendData(result); if (needAnyResponse) { diff --git a/Telegram/SourceFiles/mtproto/mtpConnection.h b/Telegram/SourceFiles/mtproto/mtpConnection.h index b540dbc7b..313e46e2e 100644 --- a/Telegram/SourceFiles/mtproto/mtpConnection.h +++ b/Telegram/SourceFiles/mtproto/mtpConnection.h @@ -106,6 +106,13 @@ class MTPabstractConnection : public QObject { public: + MTPabstractConnection() : _sentEncrypted(false) { + } + + void setSentEncrypted() { + _sentEncrypted = true; + } + virtual void sendData(mtpBuffer &buffer) = 0; // has size + 3, buffer[0] = len, buffer[1] = packetnum, buffer[last] = crc32 virtual void disconnectFromServer() = 0; virtual void connectToServer(const QString &addr, int32 port) = 0; @@ -135,6 +142,7 @@ signals: protected: BuffersQueue receivedQueue; // list of received packets, not processed yet + bool _sentEncrypted; }; @@ -189,6 +197,8 @@ public slots: void onSocketDisconnected(); void onHttpStart(); + void onTcpTimeoutTimer(); + protected: void socketPacket(mtpPrime *packet, uint32 packetSize); @@ -215,6 +225,10 @@ private: typedef QSet Requests; Requests requests; + QString _addr; + int32 _port, _tcpTimeout; + QTimer tcpTimeoutTimer; + }; class MTPtcpConnection : public MTPabstractTcpConnection { diff --git a/Telegram/SourceFiles/mtproto/mtpCoreTypes.cpp b/Telegram/SourceFiles/mtproto/mtpCoreTypes.cpp index 91fef4707..503420ac0 100644 --- a/Telegram/SourceFiles/mtproto/mtpCoreTypes.cpp +++ b/Telegram/SourceFiles/mtproto/mtpCoreTypes.cpp @@ -172,12 +172,20 @@ void mtpTextSerializeCore(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; default: { - for (uint32 i = 1; i < mtpLayerMax; ++i) { + for (uint32 i = 1; i < mtpLayerMaxSingle; ++i) { if (cons == mtpLayers[i]) { to.add("[LAYER").add(mtpWrapNumber(i + 1)).add("] "); mtpTextSerializeType(to, from, end, 0, level); return; } } + if (cons == mtpc_invokeWithLayer) { + if (from >= end) { + throw Exception("from >= end in invokeWithLayer"); + } + int32 layer = *(from++); + to.add("[LAYER").add(mtpWrapNumber(layer)).add("] "); mtpTextSerializeType(to, from, end, 0, level); + return; + } throw Exception(QString("unknown cons 0x%1").arg(cons, 0, 16)); } break; } diff --git a/Telegram/SourceFiles/mtproto/mtpCoreTypes.h b/Telegram/SourceFiles/mtproto/mtpCoreTypes.h index 116a8be4f..0a43c1d39 100644 --- a/Telegram/SourceFiles/mtproto/mtpCoreTypes.h +++ b/Telegram/SourceFiles/mtproto/mtpCoreTypes.h @@ -62,7 +62,7 @@ public: explicit mtpRequest(mtpRequestData *ptr) : QSharedPointer(ptr) { } - uint32 size() const; + uint32 innerLength() const; void write(mtpBuffer &to) const; typedef void ResponseType; // don't know real response type =( @@ -74,10 +74,12 @@ public: // in toSend: = 0 - must send in container, > 0 - can send without container // in haveSent: = 0 - container with msgIds, > 0 - when was sent uint64 msDate; + mtpRequestId requestId; mtpRequest after; + bool needsLayer; - mtpRequestData(bool/* sure*/) : msDate(0), requestId(0) { + mtpRequestData(bool/* sure*/) : msDate(0), requestId(0), needsLayer(false) { } static mtpRequest prepare(uint32 requestSize, uint32 maxSize = 0) { @@ -92,7 +94,7 @@ public: static void padding(mtpRequest &request) { if (request->size() < 9) return; - uint32 requestSize = ((*request)[7] >> 2), padding = _padding(requestSize), fullSize = 8 + requestSize + padding; // 2: salt, 2: session_id, 2: msg_id, 1: seq_no, 1: message_length + uint32 requestSize = (request.innerLength() >> 2), padding = _padding(requestSize), fullSize = 8 + requestSize + padding; // 2: salt, 2: session_id, 2: msg_id, 1: seq_no, 1: message_length if (uint32(request->size()) != fullSize) { request->resize(fullSize); if (padding) { @@ -103,7 +105,7 @@ public: static uint32 messageSize(const mtpRequest &request) { if (request->size() < 9) return 0; - return 4 + ((*request)[7] >> 2); // 2: msg_id, 1: seq_no, q: message_length + return 4 + (request.innerLength() >> 2); // 2: msg_id, 1: seq_no, q: message_length } static bool isSentContainer(const mtpRequest &request); // "request-like" wrap for msgIds vector @@ -119,7 +121,7 @@ private: }; -inline uint32 mtpRequest::size() const { // for template MTP requests and MTPBoxed instanciation +inline uint32 mtpRequest::innerLength() const { // for template MTP requests and MTPBoxed instanciation mtpRequestData *value = data(); if (!value || value->size() < 9) return 0; return value->at(7); @@ -128,7 +130,7 @@ inline uint32 mtpRequest::size() const { // for template MTP requests and MTPBox inline void mtpRequest::write(mtpBuffer &to) const { mtpRequestData *value = data(); if (!value || value->size() < 9) return; - uint32 was = to.size(), s = size() / sizeof(mtpPrime); + uint32 was = to.size(), s = innerLength() / sizeof(mtpPrime); to.resize(was + s); memcpy(to.data() + was, value->constData() + 8, s * sizeof(mtpPrime)); } @@ -335,6 +337,8 @@ enum { mtpc_invokeWithLayer17 = 0x50858a19, mtpc_invokeWithLayer18 = 0x1c900537, + mtpc_invokeWithLayer = 0xda9b0d0d, // after 18 layer + // manually parsed mtpc_rpc_result = 0xf35c6d01, mtpc_msg_container = 0x73f1f8dc, @@ -362,7 +366,8 @@ static const mtpTypeId mtpLayers[] = { mtpc_invokeWithLayer16, mtpc_invokeWithLayer17, mtpc_invokeWithLayer18, -}, mtpLayerMax = sizeof(mtpLayers) / sizeof(mtpLayers[0]); +}, mtpLayerMaxSingle = sizeof(mtpLayers) / sizeof(mtpLayers[0]); +static const mtpPrime mtpCurrentLayer = 19; template class MTPBoxed : public bareT { @@ -386,8 +391,8 @@ public: return *this; } - uint32 size() const { - return sizeof(mtpTypeId) + bareT::size(); + uint32 innerLength() const { + return sizeof(mtpTypeId) + bareT::innerLength(); } void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) { if (from + 1 > end) throw mtpErrorInsufficient(); @@ -414,7 +419,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return sizeof(int32); } mtpTypeId type() const { @@ -457,7 +462,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return sizeof(uint64); } mtpTypeId type() const { @@ -503,7 +508,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return sizeof(uint64) + sizeof(uint64); } mtpTypeId type() const { @@ -552,8 +557,8 @@ public: read(from, end, cons); } - uint32 size() const { - return l.size() + h.size(); + uint32 innerLength() const { + return l.innerLength() + h.innerLength(); } mtpTypeId type() const { return mtpc_int256; @@ -596,7 +601,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return sizeof(float64); } mtpTypeId type() const { @@ -666,7 +671,7 @@ public: return *(const MTPDstring*)data; } - uint32 size() const { + uint32 innerLength() const { uint32 l = c_string().v.length(); if (l < 254) { l += 1; @@ -770,7 +775,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return 0; } mtpTypeId type() const { @@ -858,10 +863,10 @@ public: return *(const MTPDvector*)data; } - uint32 size() const { + uint32 innerLength() const { uint32 result(sizeof(uint32)); for (typename VType::const_iterator i = c_vector().v.cbegin(), e = c_vector().v.cend(); i != e; ++i) { - result += i->size(); + result += i->innerLength(); } return result; } @@ -961,8 +966,8 @@ public: return *(const MTPDerror*)data; } - uint32 size() const { - return c_error().vcode.size() + c_error().vtext.size(); + uint32 innerLength() const { + return c_error().vcode.innerLength() + c_error().vtext.innerLength(); } mtpTypeId type() const { return mtpc_error; @@ -999,7 +1004,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return 0; } mtpTypeId type() const { diff --git a/Telegram/SourceFiles/mtproto/mtpDC.cpp b/Telegram/SourceFiles/mtproto/mtpDC.cpp index e7e2c2f75..ad6152287 100644 --- a/Telegram/SourceFiles/mtproto/mtpDC.cpp +++ b/Telegram/SourceFiles/mtproto/mtpDC.cpp @@ -350,7 +350,7 @@ void mtpSetDC(int32 dc) { } } -MTProtoDC::MTProtoDC(int32 id, const mtpAuthKeyPtr &key) : _id(id), _key(key), _connectionInited(false), _connectionInitSent(false) { +MTProtoDC::MTProtoDC(int32 id, const mtpAuthKeyPtr &key) : _id(id), _key(key), _connectionInited(false) { connect(this, SIGNAL(authKeyCreated()), this, SLOT(authKeyWrite()), Qt::QueuedConnection); QMutexLocker lock(&_keysMapForWriteMutex); @@ -371,6 +371,7 @@ void MTProtoDC::authKeyWrite() { void MTProtoDC::setKey(const mtpAuthKeyPtr &key) { DEBUG_LOG(("AuthKey Info: MTProtoDC::setKey(%1), emitting authKeyCreated, dc %2").arg(key ? key->keyId() : 0).arg(_id)); _key = key; + _connectionInited = false; emit authKeyCreated(); QMutexLocker lock(&_keysMapForWriteMutex); diff --git a/Telegram/SourceFiles/mtproto/mtpDC.h b/Telegram/SourceFiles/mtproto/mtpDC.h index c2421fae0..9fd31d78f 100644 --- a/Telegram/SourceFiles/mtproto/mtpDC.h +++ b/Telegram/SourceFiles/mtproto/mtpDC.h @@ -29,13 +29,6 @@ public: void setKey(const mtpAuthKeyPtr &key); void destroyKey(); - bool needConnectionInit() { - QMutexLocker lock(&initLock); - if (_connectionInited || _connectionInitSent) return false; - _connectionInitSent = true; - return true; - } - bool connectionInited() const { QMutexLocker lock(&initLock); bool res = _connectionInited; @@ -49,6 +42,7 @@ public: signals: void authKeyCreated(); + void layerWasInited(bool was); private slots: @@ -61,7 +55,6 @@ private: int32 _id; mtpAuthKeyPtr _key; bool _connectionInited; - bool _connectionInitSent; }; typedef QSharedPointer MTProtoDCPtr; diff --git a/Telegram/SourceFiles/mtproto/mtpFileLoader.cpp b/Telegram/SourceFiles/mtproto/mtpFileLoader.cpp index 75dca6ed9..62d12d961 100644 --- a/Telegram/SourceFiles/mtproto/mtpFileLoader.cpp +++ b/Telegram/SourceFiles/mtproto/mtpFileLoader.cpp @@ -174,8 +174,7 @@ bool mtpFileLoader::loadPart() { App::app()->killDownloadSessionsStop(dc); } - MTPupload_GetFile request(MTPupload_getFile(loc, MTP_int(offset), MTP_int(limit))); - mtpRequestId reqId = MTP::send(request, rpcDone(&mtpFileLoader::partLoaded, offset), rpcFail(&mtpFileLoader::partFailed), MTP::dld[dcIndex] + dc, 50); + mtpRequestId reqId = MTP::send(MTPupload_GetFile(MTPupload_getFile(loc, MTP_int(offset), MTP_int(limit))), rpcDone(&mtpFileLoader::partLoaded, offset), rpcFail(&mtpFileLoader::partFailed), MTP::dld[dcIndex] + dc, 50); ++queue->queries; dr.v[dcIndex] += limit; diff --git a/Telegram/SourceFiles/mtproto/mtpScheme.cpp b/Telegram/SourceFiles/mtproto/mtpScheme.cpp index d2f2e386e..d104573cd 100644 --- a/Telegram/SourceFiles/mtproto/mtpScheme.cpp +++ b/Telegram/SourceFiles/mtproto/mtpScheme.cpp @@ -51,25 +51,6 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP int32 lev = level + types.size() - 1; switch (type) { - case mtpc_userProfilePhotoEmpty: - to.add("{ userProfilePhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_userProfilePhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ userProfilePhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" photo_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" photo_small: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" photo_big: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - case mtpc_rpc_error: if (stage) { to.add(",\n").addSpaces(lev); @@ -84,1094 +65,6 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_dh_gen_ok: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ dh_gen_ok"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" new_nonce_hash1: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_dh_gen_retry: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ dh_gen_retry"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" new_nonce_hash2: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_dh_gen_fail: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ dh_gen_fail"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" new_nonce_hash3: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPeerEmpty: - to.add("{ inputPeerEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPeerSelf: - to.add("{ inputPeerSelf }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPeerContact: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPeerContact"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPeerForeign: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPeerForeign"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPeerChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPeerChat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_photoEmpty: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ photoEmpty"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_photo: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ photo"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" caption: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" geo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" sizes: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_p_q_inner_data: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ p_q_inner_data"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" pq: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" p: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" new_nonce: "); ++stages.back(); types.push_back(mtpc_int256); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_client_DH_inner_data: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ client_DH_inner_data"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" retry_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" g_b: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_link: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_link"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" my_link: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" foreign_link: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPhotoCropAuto: - to.add("{ inputPhotoCropAuto }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPhotoCrop: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPhotoCrop"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" crop_left: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" crop_top: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" crop_width: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputFile: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputFile"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" md5_checksum: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputFileBig: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputFileBig"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionEmpty: - to.add("{ messageActionEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messageActionChatCreate: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageActionChatCreate"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionChatEditTitle: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageActionChatEditTitle"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionChatEditPhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageActionChatEditPhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionChatDeletePhoto: - to.add("{ messageActionChatDeletePhoto }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messageActionChatAddUser: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageActionChatAddUser"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionChatDeleteUser: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageActionChatDeleteUser"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionGeoChatCreate: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageActionGeoChatCreate"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" address: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionGeoChatCheckin: - to.add("{ messageActionGeoChatCheckin }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputMessagesFilterEmpty: - to.add("{ inputMessagesFilterEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputMessagesFilterPhotos: - to.add("{ inputMessagesFilterPhotos }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputMessagesFilterVideo: - to.add("{ inputMessagesFilterVideo }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputMessagesFilterPhotoVideo: - to.add("{ inputMessagesFilterPhotoVideo }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputMessagesFilterDocument: - to.add("{ inputMessagesFilterDocument }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputMessagesFilterAudio: - to.add("{ inputMessagesFilterAudio }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_help_support: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ help_support"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contactFound: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contactFound"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_future_salts: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ future_salts"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" req_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" now: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" salts: "); ++stages.back(); types.push_back(mtpc_vector); vtypes.push_back(mtpc_future_salt); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPhotoEmpty: - to.add("{ inputPhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_chatParticipant: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chatParticipant"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" inviter_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_auth_exportedAuthorization: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ auth_exportedAuthorization"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contactStatus: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contactStatus"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" expires: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_new_session_created: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ new_session_created"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" first_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" unique_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" server_salt: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geochats_located: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geochats_located"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" results: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_updatesTooLong: - to.add("{ updatesTooLong }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_updateShortMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ updateShortMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" from_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_updateShortChatMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ updateShortChatMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" from_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_updateShort: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ updateShort"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" update: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_updatesCombined: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ updatesCombined"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" updates: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" seq_start: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_updates: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ updates"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" updates: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_future_salt: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ future_salt"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" valid_since: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" valid_until: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" salt: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_server_DH_inner_data: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ server_DH_inner_data"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" g: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" dh_prime: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" g_a: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" server_time: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_resPQ: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ resPQ"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" pq: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" server_public_key_fingerprints: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_upload_file: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ upload_file"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" type: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" mtime: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputMediaEmpty: - to.add("{ inputMediaEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputMediaUploadedPhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputMediaUploadedPhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputMediaPhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputMediaPhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputMediaGeoPoint: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputMediaGeoPoint"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" geo_point: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputMediaContact: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputMediaContact"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputMediaUploadedVideo: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputMediaUploadedVideo"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputMediaUploadedThumbVideo: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputMediaUploadedThumbVideo"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" thumb: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputMediaVideo: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputMediaVideo"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputMediaUploadedAudio: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputMediaUploadedAudio"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputMediaAudio: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputMediaAudio"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputMediaUploadedDocument: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputMediaUploadedDocument"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" file_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputMediaUploadedThumbDocument: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputMediaUploadedThumbDocument"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" thumb: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" file_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputMediaDocument: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputMediaDocument"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_documentEmpty: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ documentEmpty"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_document: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ document"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" file_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 7: to.add(" thumb: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 8: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputEncryptedFileEmpty: - to.add("{ inputEncryptedFileEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputEncryptedFileUploaded: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputEncryptedFileUploaded"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" md5_checksum: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputEncryptedFile: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputEncryptedFile"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputEncryptedFileBigUploaded: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputEncryptedFileBigUploaded"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_found: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_found"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" results: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputFileLocation: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputFileLocation"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" volume_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" local_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" secret: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputVideoFileLocation: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputVideoFileLocation"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputEncryptedFileLocation: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputEncryptedFileLocation"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputAudioFileLocation: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputAudioFileLocation"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputDocumentFileLocation: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputDocumentFileLocation"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_chatFull: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chatFull"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" participants: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" chat_photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" notify_settings: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_chatParticipantsForbidden: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chatParticipantsForbidden"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_chatParticipants: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chatParticipants"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" admin_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" participants: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_msgs_ack: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ msgs_ack"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_userFull: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ userFull"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" link: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" profile_photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" notify_settings: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" blocked: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" real_first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" real_last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_videoEmpty: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ videoEmpty"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_video: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ video"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" caption: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 7: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 8: to.add(" thumb: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 9: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 10: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 11: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - case mtpc_messageEmpty: if (stage) { to.add(",\n").addSpaces(lev); @@ -1243,236 +136,6 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_notifyPeer: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ notifyPeer"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_notifyUsers: - to.add("{ notifyUsers }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_notifyChats: - to.add("{ notifyChats }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_notifyAll: - to.add("{ notifyAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messages_messageEmpty: - to.add("{ messages_messageEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messages_message: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_message"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPhoneContact: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPhoneContact"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" client_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" phone: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_rpc_answer_unknown: - to.add("{ rpc_answer_unknown }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_rpc_answer_dropped_running: - to.add("{ rpc_answer_dropped_running }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_rpc_answer_dropped: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ rpc_answer_dropped"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" seq_no: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputVideoEmpty: - to.add("{ inputVideoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputVideo: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputVideo"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geoChatMessageEmpty: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geoChatMessageEmpty"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geoChatMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geoChatMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" from_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" media: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geoChatMessageService: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geoChatMessageService"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" from_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" action: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geoPointEmpty: - to.add("{ geoPointEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_geoPoint: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geoPoint"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" long: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" lat: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_dialogs: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_dialogs"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" dialogs: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_dialogsSlice: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_dialogsSlice"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" dialogs: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_dhConfigNotModified: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_dhConfigNotModified"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" random: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_dhConfig: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_dhConfig"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" g: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" p: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" random: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - case mtpc_peerUser: if (stage) { to.add(",\n").addSpaces(lev); @@ -1499,526 +162,162 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_server_DH_params_fail: + case mtpc_geoPointEmpty: + to.add("{ geoPointEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_geoPoint: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ server_DH_params_fail"); + to.add("{ geoPoint"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" new_nonce_hash: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" long: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" lat: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_server_DH_params_ok: + case mtpc_msg_detailed_info: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ server_DH_params_ok"); + to.add("{ msg_detailed_info"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" encrypted_answer: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" answer_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" status: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_inputAppEvent: + case mtpc_msg_new_detailed_info: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ inputAppEvent"); + to.add("{ msg_new_detailed_info"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" time: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" peer: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" data: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" answer_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" status: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_photos_photo: + case mtpc_chatParticipantsForbidden: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ photos_photo"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_peerNotifyEventsEmpty: - to.add("{ peerNotifyEventsEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_peerNotifyEventsAll: - to.add("{ peerNotifyEventsAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_nearestDc: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ nearestDc"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" country: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" this_dc: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" nearest_dc: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_wallPaper: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ wallPaper"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" sizes: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" color: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_wallPaperSolid: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ wallPaperSolid"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" bg_color: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" color: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geochats_messages: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geochats_messages"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geochats_messagesSlice: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geochats_messagesSlice"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_blocked: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_blocked"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" blocked: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_blockedSlice: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_blockedSlice"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" blocked: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_statedMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_statedMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_statedMessageLink: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_statedMessageLink"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" links: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageMediaEmpty: - to.add("{ messageMediaEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messageMediaPhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageMediaPhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageMediaVideo: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageMediaVideo"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" video: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageMediaGeo: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageMediaGeo"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" geo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageMediaContact: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageMediaContact"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageMediaUnsupported: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageMediaUnsupported"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageMediaDocument: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageMediaDocument"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" document: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageMediaAudio: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageMediaAudio"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" audio: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputGeoChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputGeoChat"); + to.add("{ chatParticipantsForbidden"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_help_appUpdate: + case mtpc_chatParticipants: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ help_appUpdate"); + to.add("{ chatParticipants"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" critical: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" url: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" text: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" admin_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" participants: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_help_noAppUpdate: - to.add("{ help_noAppUpdate }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_updates_differenceEmpty: + case mtpc_contactSuggested: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ updates_differenceEmpty"); + to.add("{ contactSuggested"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" mutual_contacts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_updates_difference: + case mtpc_bad_msg_notification: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ updates_difference"); + to.add("{ bad_msg_notification"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" new_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" new_encrypted_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" other_updates: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" state: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" bad_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" bad_msg_seqno: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" error_code: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_updates_differenceSlice: + case mtpc_bad_server_salt: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ updates_differenceSlice"); + to.add("{ bad_server_salt"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" new_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" new_encrypted_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" other_updates: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" intermediate_state: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" bad_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" bad_msg_seqno: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" error_code: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" new_server_salt: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_msgs_state_info: + case mtpc_videoEmpty: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ msgs_state_info"); + to.add("{ videoEmpty"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" req_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" info: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_msgs_state_req: + case mtpc_video: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ msgs_state_req"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_msg_resend_req: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ msg_resend_req"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputDocumentEmpty: - to.add("{ inputDocumentEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputDocument: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputDocument"); + to.add("{ video"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_userStatusEmpty: - to.add("{ userStatusEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_userStatusOnline: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ userStatusOnline"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" expires: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_userStatusOffline: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ userStatusOffline"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" was_online: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_photos_photos: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ photos_photos"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" photos: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_photos_photosSlice: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ photos_photosSlice"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" photos: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_importedContacts: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_importedContacts"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" imported: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" retry_contacts: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" caption: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 7: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 8: to.add(" thumb: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 9: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 10: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 11: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -2063,356 +362,34 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP to.add("{ sendMessageChooseContactAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - case mtpc_fileLocationUnavailable: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ fileLocationUnavailable"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" volume_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" local_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" secret: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } + case mtpc_rpc_answer_unknown: + to.add("{ rpc_answer_unknown }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - case mtpc_fileLocation: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ fileLocation"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" volume_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" local_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" secret: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } + case mtpc_rpc_answer_dropped_running: + to.add("{ rpc_answer_dropped_running }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - case mtpc_photoSizeEmpty: + case mtpc_rpc_answer_dropped: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ photoSizeEmpty"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_photoSize: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ photoSize"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" location: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_photoCachedSize: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ photoCachedSize"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" location: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_msg_detailed_info: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ msg_detailed_info"); + to.add("{ rpc_answer_dropped"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" answer_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" seq_no: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; case 2: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" status: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_msg_new_detailed_info: + case mtpc_inputGeoChat: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ msg_new_detailed_info"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" answer_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" status: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputChatPhotoEmpty: - to.add("{ inputChatPhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputChatUploadedPhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputChatUploadedPhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputChatPhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputChatPhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sentMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sentMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sentMessageLink: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sentMessageLink"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" links: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_chatFull: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_chatFull"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" full_chat: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geochats_statedMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geochats_statedMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_chatPhotoEmpty: - to.add("{ chatPhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_chatPhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chatPhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" photo_small: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" photo_big: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_encryptedMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ encryptedMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_encryptedMessageService: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ encryptedMessageService"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_destroy_session_ok: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ destroy_session_ok"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" session_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_destroy_session_none: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ destroy_session_none"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" session_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_http_wait: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ http_wait"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" max_delay: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" wait_after: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" max_wait: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sentEncryptedMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sentEncryptedMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sentEncryptedFile: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sentEncryptedFile"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_myLinkEmpty: - to.add("{ contacts_myLinkEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_contacts_myLinkRequested: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_myLinkRequested"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" contact: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_myLinkContact: - to.add("{ contacts_myLinkContact }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputEncryptedChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputEncryptedChat"); + to.add("{ inputGeoChat"); to.add("\n").addSpaces(lev); } switch (stage) { @@ -2422,440 +399,49 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_messages_chats: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_chats"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } + case mtpc_messages_messageEmpty: + to.add("{ messages_messageEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - case mtpc_encryptedChatEmpty: + case mtpc_messages_message: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ encryptedChatEmpty"); + to.add("{ messages_message"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_encryptedChatWaiting: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ encryptedChatWaiting"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" admin_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" participant_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_encryptedChatRequested: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ encryptedChatRequested"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" admin_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" participant_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" g_a: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_encryptedChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ encryptedChat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" admin_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" participant_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" g_a_or_b: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_encryptedChatDiscarded: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ encryptedChatDiscarded"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_messages: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_messages"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_messages_messagesSlice: + case mtpc_account_privacyRules: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messages_messagesSlice"); + to.add("{ account_privacyRules"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_auth_checkedPhone: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ auth_checkedPhone"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_registered: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" phone_invited: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contactSuggested: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contactSuggested"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" mutual_contacts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_foreignLinkUnknown: - to.add("{ contacts_foreignLinkUnknown }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_contacts_foreignLinkRequested: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_foreignLinkRequested"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" has_phone: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_foreignLinkMutual: - to.add("{ contacts_foreignLinkMutual }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputAudioEmpty: - to.add("{ inputAudioEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputAudio: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputAudio"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_contacts: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_contacts"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" contacts: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" rules: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_contacts_contactsNotModified: - to.add("{ contacts_contactsNotModified }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_chatEmpty: + case mtpc_photos_photo: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ chatEmpty"); + to.add("{ photos_photo"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_chat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" participants_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" left: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_chatForbidden: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chatForbidden"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geoChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geoChat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" address: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" venue: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" geo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 7: to.add(" participants_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 8: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 9: to.add(" checked_in: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 10: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_pong: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ pong"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" ping_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPeerNotifyEventsEmpty: - to.add("{ inputPeerNotifyEventsEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPeerNotifyEventsAll: - to.add("{ inputPeerNotifyEventsAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPeerNotifySettings: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPeerNotifySettings"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" mute_until: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" sound: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" show_previews: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" events_mask: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_affectedHistory: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_affectedHistory"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputNotifyPeer: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputNotifyPeer"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputNotifyUsers: - to.add("{ inputNotifyUsers }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputNotifyChats: - to.add("{ inputNotifyChats }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputNotifyAll: - to.add("{ inputNotifyAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputNotifyGeoChatPeer: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputNotifyGeoChatPeer"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_bad_msg_notification: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ bad_msg_notification"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" bad_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" bad_msg_seqno: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" error_code: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_bad_server_salt: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ bad_server_salt"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" bad_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" bad_msg_seqno: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" error_code: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" new_server_salt: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_config: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ config"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" test_mode: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" this_dc: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" dc_options: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" chat_size_max: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" broadcast_size_max: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputGeoPointEmpty: - to.add("{ inputGeoPointEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputGeoPoint: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputGeoPoint"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" lat: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" long: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -2895,32 +481,79 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_dialog: + case mtpc_msg_resend_req: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ dialog"); + to.add("{ msg_resend_req"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" top_message: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" unread_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" notify_settings: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_importedContact: + case mtpc_inputFile: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ importedContact"); + to.add("{ inputFile"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" client_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" md5_checksum: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputFileBig: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputFileBig"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_help_inviteText: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ help_inviteText"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_peerNotifySettingsEmpty: + to.add("{ peerNotifySettingsEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_peerNotifySettings: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ peerNotifySettings"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" mute_until: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" sound: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" show_previews: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" events_mask: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -2941,6 +574,138 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; + case mtpc_contacts_found: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_found"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" results: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_pong: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ pong"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" ping_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_documentEmpty: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ documentEmpty"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_document: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ document"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" file_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 7: to.add(" thumb: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 8: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_resPQ: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ resPQ"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" pq: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" server_public_key_fingerprints: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_msgs_state_req: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ msgs_state_req"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_future_salt: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ future_salt"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" valid_since: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" valid_until: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" salt: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_destroy_session_ok: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ destroy_session_ok"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" session_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_destroy_session_none: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ destroy_session_none"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" session_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + case mtpc_updateNewMessage: if (stage) { to.add(",\n").addSpaces(lev); @@ -3314,15 +1079,450 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_peerNotifySettingsEmpty: - to.add("{ peerNotifySettingsEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_peerNotifySettings: + case mtpc_updatePrivacy: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ peerNotifySettings"); + to.add("{ updatePrivacy"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" key: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" rules: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_myLinkEmpty: + to.add("{ contacts_myLinkEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_contacts_myLinkRequested: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_myLinkRequested"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" contact: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_myLinkContact: + to.add("{ contacts_myLinkContact }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_server_DH_inner_data: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ server_DH_inner_data"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" g: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" dh_prime: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" g_a: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" server_time: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPeerEmpty: + to.add("{ inputPeerEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPeerSelf: + to.add("{ inputPeerSelf }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPeerContact: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputPeerContact"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPeerForeign: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputPeerForeign"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPeerChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputPeerChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sentEncryptedMessage: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sentEncryptedMessage"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sentEncryptedFile: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sentEncryptedFile"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_blocked: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_blocked"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" blocked: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_blockedSlice: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_blockedSlice"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" blocked: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photoSizeEmpty: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photoSizeEmpty"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photoSize: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photoSize"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" location: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photoCachedSize: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photoCachedSize"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" location: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_upload_file: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ upload_file"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" type: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" mtime: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photos_photos: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photos_photos"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" photos: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photos_photosSlice: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photos_photosSlice"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" photos: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_updates_state: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ updates_state"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" qts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" unread_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_chatFull: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_chatFull"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" full_chat: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_encryptedMessage: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ encryptedMessage"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_encryptedMessageService: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ encryptedMessageService"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_authorization: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_authorization"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" expires: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contact: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contact"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" mutual: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geochats_statedMessage: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_statedMessage"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_importedContacts: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_importedContacts"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" imported: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" retry_contacts: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_affectedHistory: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_affectedHistory"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPhoneContact: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputPhoneContact"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" client_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" phone: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_contacts: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_contacts"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" contacts: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_contactsNotModified: + to.add("{ contacts_contactsNotModified }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_p_q_inner_data: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ p_q_inner_data"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" pq: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" p: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" new_nonce: "); ++stages.back(); types.push_back(mtpc_int256); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPeerNotifySettings: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputPeerNotifySettings"); to.add("\n").addSpaces(lev); } switch (stage) { @@ -3334,6 +1534,1546 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; + case mtpc_storage_fileUnknown: + to.add("{ storage_fileUnknown }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_fileJpeg: + to.add("{ storage_fileJpeg }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_fileGif: + to.add("{ storage_fileGif }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_filePng: + to.add("{ storage_filePng }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_filePdf: + to.add("{ storage_filePdf }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_fileMp3: + to.add("{ storage_fileMp3 }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_fileMov: + to.add("{ storage_fileMov }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_filePartial: + to.add("{ storage_filePartial }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_fileMp4: + to.add("{ storage_fileMp4 }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_fileWebp: + to.add("{ storage_fileWebp }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_geochats_messages: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_messages"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geochats_messagesSlice: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_messagesSlice"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputMessagesFilterEmpty: + to.add("{ inputMessagesFilterEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputMessagesFilterPhotos: + to.add("{ inputMessagesFilterPhotos }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputMessagesFilterVideo: + to.add("{ inputMessagesFilterVideo }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputMessagesFilterPhotoVideo: + to.add("{ inputMessagesFilterPhotoVideo }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputMessagesFilterDocument: + to.add("{ inputMessagesFilterDocument }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputMessagesFilterAudio: + to.add("{ inputMessagesFilterAudio }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_server_DH_params_fail: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ server_DH_params_fail"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" new_nonce_hash: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_server_DH_params_ok: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ server_DH_params_ok"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" encrypted_answer: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_chat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_chat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_help_support: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ help_support"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contactStatus: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contactStatus"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" status: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_msgs_state_info: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ msgs_state_info"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" req_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" info: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_privacyKeyStatusTimestamp: + to.add("{ privacyKeyStatusTimestamp }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messages_statedMessage: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_statedMessage"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_statedMessageLink: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_statedMessageLink"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" links: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPrivacyValueAllowContacts: + to.add("{ inputPrivacyValueAllowContacts }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPrivacyValueAllowAll: + to.add("{ inputPrivacyValueAllowAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPrivacyValueAllowUsers: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputPrivacyValueAllowUsers"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPrivacyValueDisallowContacts: + to.add("{ inputPrivacyValueDisallowContacts }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPrivacyValueDisallowAll: + to.add("{ inputPrivacyValueDisallowAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPrivacyValueDisallowUsers: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputPrivacyValueDisallowUsers"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contactBlocked: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contactBlocked"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_exportedAuthorization: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_exportedAuthorization"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_dialog: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ dialog"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" top_message: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" unread_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" notify_settings: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contactFound: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contactFound"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sentMessage: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sentMessage"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sentMessageLink: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sentMessageLink"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" links: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputAudioEmpty: + to.add("{ inputAudioEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputAudio: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputAudio"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_notifyPeer: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ notifyPeer"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_notifyUsers: + to.add("{ notifyUsers }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_notifyChats: + to.add("{ notifyChats }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_notifyAll: + to.add("{ notifyAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_encryptedFileEmpty: + to.add("{ encryptedFileEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_encryptedFile: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ encryptedFile"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_accountDaysTTL: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ accountDaysTTL"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" days: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_audioEmpty: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ audioEmpty"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_audio: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ audio"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 7: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_client_DH_inner_data: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ client_DH_inner_data"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" retry_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" g_b: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_userStatusEmpty: + to.add("{ userStatusEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_userStatusOnline: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ userStatusOnline"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" expires: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_userStatusOffline: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ userStatusOffline"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" was_online: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_userStatusRecently: + to.add("{ userStatusRecently }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_userStatusLastWeek: + to.add("{ userStatusLastWeek }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_userStatusLastMonth: + to.add("{ userStatusLastMonth }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_wallPaper: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ wallPaper"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" sizes: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" color: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_wallPaperSolid: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ wallPaperSolid"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" bg_color: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" color: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photoEmpty: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photoEmpty"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photo: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photo"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" caption: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" geo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" sizes: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_link: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_link"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" my_link: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" foreign_link: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPeerNotifyEventsEmpty: + to.add("{ inputPeerNotifyEventsEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPeerNotifyEventsAll: + to.add("{ inputPeerNotifyEventsAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messages_statedMessages: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_statedMessages"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_statedMessagesLinks: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_statedMessagesLinks"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" links: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputAppEvent: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputAppEvent"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" time: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" peer: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" data: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_encryptedChatEmpty: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ encryptedChatEmpty"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_encryptedChatWaiting: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ encryptedChatWaiting"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" admin_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" participant_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_encryptedChatRequested: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ encryptedChatRequested"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" admin_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" participant_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" g_a: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_encryptedChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ encryptedChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" admin_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" participant_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" g_a_or_b: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_encryptedChatDiscarded: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ encryptedChatDiscarded"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_privacyValueAllowContacts: + to.add("{ privacyValueAllowContacts }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_privacyValueAllowAll: + to.add("{ privacyValueAllowAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_privacyValueAllowUsers: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ privacyValueAllowUsers"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" users: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_privacyValueDisallowContacts: + to.add("{ privacyValueDisallowContacts }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_privacyValueDisallowAll: + to.add("{ privacyValueDisallowAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_privacyValueDisallowUsers: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ privacyValueDisallowUsers"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" users: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputFileLocation: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputFileLocation"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" volume_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" local_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" secret: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputVideoFileLocation: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputVideoFileLocation"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputEncryptedFileLocation: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputEncryptedFileLocation"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputAudioFileLocation: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputAudioFileLocation"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputDocumentFileLocation: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputDocumentFileLocation"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geochats_located: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_located"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" results: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_msgs_all_info: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ msgs_all_info"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; + case 1: to.add(" info: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_foreignLinkUnknown: + to.add("{ contacts_foreignLinkUnknown }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_contacts_foreignLinkRequested: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_foreignLinkRequested"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" has_phone: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_foreignLinkMutual: + to.add("{ contacts_foreignLinkMutual }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_chatPhotoEmpty: + to.add("{ chatPhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_chatPhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ chatPhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" photo_small: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" photo_big: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputDocumentEmpty: + to.add("{ inputDocumentEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputDocument: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputDocument"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputEncryptedChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputEncryptedChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_msgs_ack: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ msgs_ack"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_dh_gen_ok: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ dh_gen_ok"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" new_nonce_hash1: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_dh_gen_retry: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ dh_gen_retry"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" new_nonce_hash2: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_dh_gen_fail: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ dh_gen_fail"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" new_nonce_hash3: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geoChatMessageEmpty: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geoChatMessageEmpty"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geoChatMessage: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geoChatMessage"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" from_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" media: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geoChatMessageService: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geoChatMessageService"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" from_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" action: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_chatParticipant: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ chatParticipant"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" inviter_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_fileLocationUnavailable: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ fileLocationUnavailable"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" volume_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" local_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" secret: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_fileLocation: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ fileLocation"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" volume_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" local_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" secret: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputEncryptedFileEmpty: + to.add("{ inputEncryptedFileEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputEncryptedFileUploaded: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputEncryptedFileUploaded"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" md5_checksum: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputEncryptedFile: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputEncryptedFile"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputEncryptedFileBigUploaded: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputEncryptedFileBigUploaded"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_updates_differenceEmpty: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ updates_differenceEmpty"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_updates_difference: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ updates_difference"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" new_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" new_encrypted_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" other_updates: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" state: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_updates_differenceSlice: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ updates_differenceSlice"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" new_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" new_encrypted_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" other_updates: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" intermediate_state: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageActionEmpty: + to.add("{ messageActionEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messageActionChatCreate: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionChatCreate"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageActionChatEditTitle: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionChatEditTitle"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageActionChatEditPhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionChatEditPhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageActionChatDeletePhoto: + to.add("{ messageActionChatDeletePhoto }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messageActionChatAddUser: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionChatAddUser"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageActionChatDeleteUser: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionChatDeleteUser"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageActionGeoChatCreate: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionGeoChatCreate"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" address: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageActionGeoChatCheckin: + to.add("{ messageActionGeoChatCheckin }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_new_session_created: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ new_session_created"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" first_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" unique_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" server_salt: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_chatFull: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ chatFull"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" participants: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" chat_photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" notify_settings: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaEmpty: + to.add("{ messageMediaEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messageMediaPhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaPhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaVideo: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaVideo"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" video: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaGeo: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaGeo"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" geo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaContact: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaContact"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaUnsupported: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaUnsupported"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaDocument: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaDocument"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" document: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaAudio: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaAudio"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" audio: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_peerNotifyEventsEmpty: + to.add("{ peerNotifyEventsEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_peerNotifyEventsAll: + to.add("{ peerNotifyEventsAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messages_dialogs: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_dialogs"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" dialogs: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_dialogsSlice: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_dialogsSlice"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" dialogs: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_http_wait: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ http_wait"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" max_delay: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" wait_after: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" max_wait: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_nearestDc: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ nearestDc"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" country: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" this_dc: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" nearest_dc: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_dhConfigNotModified: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_dhConfigNotModified"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" random: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_dhConfig: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_dhConfig"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" g: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" p: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" random: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_future_salts: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ future_salts"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" req_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" now: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" salts: "); ++stages.back(); types.push_back(mtpc_vector); vtypes.push_back(mtpc_future_salt); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + case mtpc_userEmpty: if (stage) { to.add(",\n").addSpaces(lev); @@ -3442,6 +3182,24 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; + case mtpc_inputPhotoEmpty: + to.add("{ inputPhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputPhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + case mtpc_contacts_suggested: if (stage) { to.add(",\n").addSpaces(lev); @@ -3456,30 +3214,201 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_auth_authorization: + case mtpc_inputVideoEmpty: + to.add("{ inputVideoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputVideo: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ auth_authorization"); + to.add("{ inputVideo"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" expires: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_messages_chat: + case mtpc_messages_messages: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messages_chat"); + to.add("{ messages_messages"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" chat: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_messagesSlice: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_messagesSlice"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPrivacyKeyStatusTimestamp: + to.add("{ inputPrivacyKeyStatusTimestamp }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_help_appUpdate: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ help_appUpdate"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" critical: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" url: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" text: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_help_noAppUpdate: + to.add("{ help_noAppUpdate }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputNotifyPeer: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputNotifyPeer"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputNotifyUsers: + to.add("{ inputNotifyUsers }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputNotifyChats: + to.add("{ inputNotifyChats }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputNotifyAll: + to.add("{ inputNotifyAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputNotifyGeoChatPeer: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputNotifyGeoChatPeer"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_chatEmpty: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ chatEmpty"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_chat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ chat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" participants_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" left: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_chatForbidden: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ chatForbidden"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geoChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geoChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" address: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" venue: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" geo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 7: to.add(" participants_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 8: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 9: to.add(" checked_in: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 10: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_config: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ config"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" test_mode: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" this_dc: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" dc_options: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" chat_size_max: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" broadcast_size_max: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -3516,137 +3445,363 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_audioEmpty: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ audioEmpty"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } + case mtpc_updatesTooLong: + to.add("{ updatesTooLong }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - case mtpc_audio: + case mtpc_updateShortMessage: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ audio"); + to.add("{ updateShortMessage"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 7: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_statedMessages: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_statedMessages"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" from_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; case 3: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_statedMessagesLinks: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_statedMessagesLinks"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" links: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; case 5: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_contactBlocked: + case mtpc_updateShortChatMessage: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ contactBlocked"); + to.add("{ updateShortChatMessage"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" from_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_updateShort: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ updateShort"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" update: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_storage_fileUnknown: - to.add("{ storage_fileUnknown }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_fileJpeg: - to.add("{ storage_fileJpeg }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_fileGif: - to.add("{ storage_fileGif }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_filePng: - to.add("{ storage_filePng }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_filePdf: - to.add("{ storage_filePdf }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_fileMp3: - to.add("{ storage_fileMp3 }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_fileMov: - to.add("{ storage_fileMov }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_filePartial: - to.add("{ storage_filePartial }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_fileMp4: - to.add("{ storage_fileMp4 }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_fileWebp: - to.add("{ storage_fileWebp }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_help_inviteText: + case mtpc_updatesCombined: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ help_inviteText"); + to.add("{ updatesCombined"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" updates: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" seq_start: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_updates: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ updates"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" updates: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputChatPhotoEmpty: + to.add("{ inputChatPhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputChatUploadedPhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputChatUploadedPhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputChatPhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputChatPhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputMediaEmpty: + to.add("{ inputMediaEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputMediaUploadedPhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputMediaUploadedPhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputMediaPhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputMediaPhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputMediaGeoPoint: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputMediaGeoPoint"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" geo_point: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputMediaContact: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputMediaContact"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputMediaUploadedVideo: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputMediaUploadedVideo"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputMediaUploadedThumbVideo: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputMediaUploadedThumbVideo"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" thumb: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputMediaVideo: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputMediaVideo"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputMediaUploadedAudio: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputMediaUploadedAudio"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputMediaAudio: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputMediaAudio"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputMediaUploadedDocument: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputMediaUploadedDocument"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" file_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputMediaUploadedThumbDocument: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputMediaUploadedThumbDocument"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" thumb: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" file_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputMediaDocument: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputMediaDocument"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_importedContact: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ importedContact"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" client_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_userProfilePhotoEmpty: + to.add("{ userProfilePhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_userProfilePhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ userProfilePhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" photo_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" photo_small: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" photo_big: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_checkedPhone: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_checkedPhone"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_registered: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" phone_invited: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_chats: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_chats"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -3665,237 +3820,58 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_contact: + case mtpc_inputPhotoCropAuto: + to.add("{ inputPhotoCropAuto }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPhotoCrop: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ contact"); + to.add("{ inputPhotoCrop"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" mutual: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" crop_left: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" crop_top: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" crop_width: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_updates_state: + case mtpc_userFull: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ updates_state"); + to.add("{ userFull"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" qts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" unread_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" link: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" profile_photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" notify_settings: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" blocked: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" real_first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" real_last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_encryptedFileEmpty: - to.add("{ encryptedFileEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + case mtpc_inputGeoPointEmpty: + to.add("{ inputGeoPointEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - case mtpc_encryptedFile: + case mtpc_inputGeoPoint: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ encryptedFile"); + to.add("{ inputGeoPoint"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_msgs_all_info: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ msgs_all_info"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; - case 1: to.add(" info: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_photos_updateProfilePhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ photos_updateProfilePhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_getMessages: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_getMessages"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_getHistory: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_getHistory"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_search: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_search"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" filter: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" min_date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" max_date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 7: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_set_client_DH_params: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ set_client_DH_params"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" encrypted_data: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_getStatuses: - to.add("{ contacts_getStatuses }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_auth_checkPhone: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ auth_checkPhone"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_help_getAppUpdate: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ help_getAppUpdate"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" device_model: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" system_version: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" app_version: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" lang_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_updates_getDifference: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ updates_getDifference"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" qts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_help_getInviteText: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ help_getInviteText"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" lang_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_users_getFullUser: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ users_getFullUser"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_updates_getState: - to.add("{ updates_getState }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_contacts_getContacts: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_getContacts"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" lat: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" long: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -3988,6 +3964,169 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; + case mtpc_contacts_deleteContact: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_deleteContact"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_getStatuses: + to.add("{ contacts_getStatuses }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_rpc_drop_answer: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ rpc_drop_answer"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" req_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_getAccountTTL: + to.add("{ account_getAccountTTL }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messages_requestEncryption: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_requestEncryption"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" g_a: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_acceptEncryption: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_acceptEncryption"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" g_b: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_getPrivacy: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_getPrivacy"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" key: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_setPrivacy: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_setPrivacy"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" key: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" rules: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photos_uploadProfilePhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photos_uploadProfilePhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" caption: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" geo_point: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geochats_getLocated: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_getLocated"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" geo_point: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" radius: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_help_getInviteText: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ help_getInviteText"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" lang_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_getNotifySettings: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_getNotifySettings"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_set_client_DH_params: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ set_client_DH_params"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" encrypted_data: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + case mtpc_ping: if (stage) { to.add(",\n").addSpaces(lev); @@ -4015,50 +4154,292 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_help_getSupport: - to.add("{ help_getSupport }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messages_readHistory: + case mtpc_req_pq: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messages_readHistory"); + to.add("{ req_pq"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_getWallPapers: + to.add("{ account_getWallPapers }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_destroy_session: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ destroy_session"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" session_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_updates_getState: + to.add("{ updates_getState }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_contacts_importContacts: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_importContacts"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" contacts: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" replace: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sendEncrypted: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sendEncrypted"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" data: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sendEncryptedFile: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sendEncryptedFile"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" data: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sendEncryptedService: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sendEncryptedService"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" data: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_getDialogs: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_getDialogs"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" read_contents: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_messages_deleteHistory: + case mtpc_help_getNearestDc: + to.add("{ help_getNearestDc }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_auth_exportAuthorization: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messages_deleteHistory"); + to.add("{ auth_exportAuthorization"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_getDhConfig: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_getDhConfig"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" random_length: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_getBlocked: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_getBlocked"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_get_future_salts: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ get_future_salts"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" num: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_updateProfile: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_updateProfile"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_importCard: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_importCard"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" export_card: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_updateUsername: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_updateUsername"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" username: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_upload_getFile: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ upload_getFile"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" location: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photos_getUserPhotos: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photos_getUserPhotos"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_getSuggested: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_getSuggested"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_receivedQueue: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_receivedQueue"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" max_qts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_getFullChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_getFullChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geochats_getFullChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_getFullChat"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_search: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_search"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -4119,6 +4500,69 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; + case mtpc_auth_signUp: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_signUp"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" phone_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_signIn: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_signIn"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" phone_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_importAuthorization: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_importAuthorization"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_sendCode: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_sendCode"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" sms_type: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" api_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" api_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" lang_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + case mtpc_users_getUsers: if (stage) { to.add(",\n").addSpaces(lev); @@ -4132,28 +4576,44 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_get_future_salts: + case mtpc_help_getAppUpdate: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ get_future_salts"); + to.add("{ help_getAppUpdate"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" num: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" device_model: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" system_version: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" app_version: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" lang_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_photos_getUserPhotos: + case mtpc_messages_getMessages: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ photos_getUserPhotos"); + to.add("{ messages_getMessages"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_getHistory: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_getHistory"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; case 2: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; case 3: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; @@ -4161,6 +4621,260 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; + case mtpc_messages_search: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_search"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" filter: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" min_date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" max_date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 7: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_getContacts: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_getContacts"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geochats_getRecents: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_getRecents"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geochats_search: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_search"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" filter: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" min_date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" max_date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 7: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geochats_getHistory: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_getHistory"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_req_DH_params: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ req_DH_params"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" p: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" public_key_fingerprint: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" encrypted_data: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_help_getConfig: + to.add("{ help_getConfig }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_help_getSupport: + to.add("{ help_getSupport }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messages_readHistory: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_readHistory"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" read_contents: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_deleteHistory: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_deleteHistory"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sendMedia: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sendMedia"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" media: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_editChatTitle: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_editChatTitle"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_editChatPhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_editChatPhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_addChatUser: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_addChatUser"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" fwd_limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_deleteChatUser: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_deleteChatUser"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_createChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_createChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_forwardMessage: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_forwardMessage"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_search: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_search"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + case mtpc_register_saveDeveloperInfo: if (stage) { to.add(",\n").addSpaces(lev); @@ -4473,357 +5187,100 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_req_pq: + case mtpc_account_deleteAccount: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ req_pq"); + to.add("{ account_deleteAccount"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" reason: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_auth_exportAuthorization: + case mtpc_account_setAccountTTL: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ auth_exportAuthorization"); + to.add("{ account_setAccountTTL"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" ttl: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_contacts_importContacts: + case mtpc_updates_getDifference: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ contacts_importContacts"); + to.add("{ updates_getDifference"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" contacts: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" replace: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" qts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_rpc_drop_answer: + case mtpc_photos_updateProfilePhoto: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ rpc_drop_answer"); + to.add("{ photos_updateProfilePhoto"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" req_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_help_getConfig: - to.add("{ help_getConfig }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messages_getDialogs: + case mtpc_auth_checkPhone: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messages_getDialogs"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_account_getNotifySettings: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ account_getNotifySettings"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geochats_getLocated: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geochats_getLocated"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" geo_point: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" radius: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_getDhConfig: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_getDhConfig"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" random_length: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_account_updateProfile: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ account_updateProfile"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_importCard: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_importCard"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" export_card: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_account_updateUsername: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ account_updateUsername"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" username: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_getFullChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_getFullChat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geochats_getFullChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geochats_getFullChat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_req_DH_params: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ req_DH_params"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" p: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" public_key_fingerprint: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" encrypted_data: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_getSuggested: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_getSuggested"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_auth_signUp: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ auth_signUp"); + to.add("{ auth_checkPhone"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" phone_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_auth_signIn: + case mtpc_messages_getChats: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ auth_signIn"); + to.add("{ messages_getChats"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" phone_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_auth_importAuthorization: + case mtpc_users_getFullUser: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ auth_importAuthorization"); + to.add("{ users_getFullUser"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_upload_getFile: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ upload_getFile"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" location: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_photos_uploadProfilePhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ photos_uploadProfilePhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" caption: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" geo_point: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_auth_sendCode: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ auth_sendCode"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" sms_type: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" api_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" api_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" lang_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_forwardMessages: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_forwardMessages"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sendBroadcast: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sendBroadcast"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" contacts: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" media: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_receivedQueue: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_receivedQueue"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" max_qts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_help_getNearestDc: - to.add("{ help_getNearestDc }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - case mtpc_messages_sendMessage: if (stage) { to.add(",\n").addSpaces(lev); @@ -4839,146 +5296,6 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_geochats_getRecents: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geochats_getRecents"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geochats_search: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geochats_search"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" filter: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" min_date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" max_date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 7: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geochats_getHistory: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geochats_getHistory"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_destroy_session: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ destroy_session"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" session_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_account_getWallPapers: - to.add("{ account_getWallPapers }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messages_sendEncrypted: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sendEncrypted"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" data: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sendEncryptedFile: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sendEncryptedFile"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" data: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sendEncryptedService: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sendEncryptedService"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" data: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_getBlocked: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_getBlocked"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_deleteContact: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_deleteContact"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - case mtpc_invokeAfterMsg: if (stage) { to.add(",\n").addSpaces(lev); @@ -5025,146 +5342,31 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_messages_getChats: + case mtpc_messages_forwardMessages: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messages_getChats"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sendMedia: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sendMedia"); + to.add("{ messages_forwardMessages"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" media: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_messages_editChatTitle: + case mtpc_messages_sendBroadcast: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messages_editChatTitle"); + to.add("{ messages_sendBroadcast"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_editChatPhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_editChatPhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_addChatUser: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_addChatUser"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" fwd_limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_deleteChatUser: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_deleteChatUser"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_createChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_createChat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_forwardMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_forwardMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_requestEncryption: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_requestEncryption"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" g_a: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_acceptEncryption: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_acceptEncryption"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" g_b: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" contacts: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" media: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; diff --git a/Telegram/SourceFiles/mtproto/mtpScheme.h b/Telegram/SourceFiles/mtproto/mtpScheme.h index 888be883a..414934e4a 100644 --- a/Telegram/SourceFiles/mtproto/mtpScheme.h +++ b/Telegram/SourceFiles/mtproto/mtpScheme.h @@ -178,7 +178,7 @@ enum { mtpc_importedContact = 0xd0028438, mtpc_contactBlocked = 0x561bc879, mtpc_contactSuggested = 0x3de191a1, - mtpc_contactStatus = 0xaa77b873, + mtpc_contactStatus = 0xd3680c61, mtpc_chatLocated = 0x3631cf4c, mtpc_contacts_foreignLinkUnknown = 0x133421f8, mtpc_contacts_foreignLinkRequested = 0xa7801f47, @@ -329,6 +329,26 @@ enum { mtpc_contactFound = 0xea879f95, mtpc_contacts_found = 0x566000e, mtpc_updateServiceNotification = 0x382dd3e4, + mtpc_userStatusRecently = 0xe26f42f1, + mtpc_userStatusLastWeek = 0x7bf09fc, + mtpc_userStatusLastMonth = 0x77ebc742, + mtpc_updatePrivacy = 0xee3b272a, + mtpc_inputPrivacyKeyStatusTimestamp = 0x4f96cb18, + mtpc_privacyKeyStatusTimestamp = 0xbc2eab30, + mtpc_inputPrivacyValueAllowContacts = 0xd09e07b, + mtpc_inputPrivacyValueAllowAll = 0x184b35ce, + mtpc_inputPrivacyValueAllowUsers = 0x131cc67f, + mtpc_inputPrivacyValueDisallowContacts = 0xba52007, + mtpc_inputPrivacyValueDisallowAll = 0xd66b66c9, + mtpc_inputPrivacyValueDisallowUsers = 0x90110467, + mtpc_privacyValueAllowContacts = 0xfffe1bac, + mtpc_privacyValueAllowAll = 0x65427b82, + mtpc_privacyValueAllowUsers = 0x4d5bbe0c, + mtpc_privacyValueDisallowContacts = 0xf888fa1a, + mtpc_privacyValueDisallowAll = 0x8b73e763, + mtpc_privacyValueDisallowUsers = 0xc7f49b7, + mtpc_account_privacyRules = 0x554abb6f, + mtpc_accountDaysTTL = 0xb8d0afdf, mtpc_invokeAfterMsg = 0xcb9f372d, mtpc_invokeAfterMsgs = 0x3dc4b4f0, mtpc_auth_checkPhone = 0x6fe51dfb, @@ -426,7 +446,12 @@ enum { mtpc_messages_readMessageContents = 0x354b5bc2, mtpc_account_checkUsername = 0x2714d86c, mtpc_account_updateUsername = 0x3e0bdd7c, - mtpc_contacts_search = 0x11f812d8 + mtpc_contacts_search = 0x11f812d8, + mtpc_account_getPrivacy = 0xdadbc950, + mtpc_account_setPrivacy = 0xc9f81ce8, + mtpc_account_deleteAccount = 0x418d4e0b, + mtpc_account_getAccountTTL = 0x8fc711d, + mtpc_account_setAccountTTL = 0x2442485e }; // Type forward declarations @@ -779,6 +804,7 @@ class MTPDupdateDcOptions; class MTPDupdateUserBlocked; class MTPDupdateNotifySettings; class MTPDupdateServiceNotification; +class MTPDupdatePrivacy; class MTPupdates_state; class MTPDupdates_state; @@ -896,6 +922,24 @@ class MTPDcontactFound; class MTPcontacts_found; class MTPDcontacts_found; +class MTPinputPrivacyKey; + +class MTPprivacyKey; + +class MTPinputPrivacyRule; +class MTPDinputPrivacyValueAllowUsers; +class MTPDinputPrivacyValueDisallowUsers; + +class MTPprivacyRule; +class MTPDprivacyValueAllowUsers; +class MTPDprivacyValueDisallowUsers; + +class MTPaccount_privacyRules; +class MTPDaccount_privacyRules; + +class MTPaccountDaysTTL; +class MTPDaccountDaysTTL; + // Boxed types definitions typedef MTPBoxed MTPResPQ; @@ -1018,6 +1062,12 @@ typedef MTPBoxed MTPNotifyPeer; typedef MTPBoxed MTPSendMessageAction; typedef MTPBoxed MTPContactFound; typedef MTPBoxed MTPcontacts_Found; +typedef MTPBoxed MTPInputPrivacyKey; +typedef MTPBoxed MTPPrivacyKey; +typedef MTPBoxed MTPInputPrivacyRule; +typedef MTPBoxed MTPPrivacyRule; +typedef MTPBoxed MTPaccount_PrivacyRules; +typedef MTPBoxed MTPAccountDaysTTL; // Type classes definitions @@ -1038,7 +1088,7 @@ public: return *(const MTPDresPQ*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_resPQ); void write(mtpBuffer &to) const; @@ -1069,7 +1119,7 @@ public: return *(const MTPDp_q_inner_data*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_p_q_inner_data); void write(mtpBuffer &to) const; @@ -1115,7 +1165,7 @@ public: return *(const MTPDserver_DH_params_ok*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -1151,7 +1201,7 @@ public: return *(const MTPDserver_DH_inner_data*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_server_DH_inner_data); void write(mtpBuffer &to) const; @@ -1182,7 +1232,7 @@ public: return *(const MTPDclient_DH_inner_data*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_client_DH_inner_data); void write(mtpBuffer &to) const; @@ -1240,7 +1290,7 @@ public: return *(const MTPDdh_gen_fail*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -1278,7 +1328,7 @@ public: return *(const MTPDmsgs_ack*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_msgs_ack); void write(mtpBuffer &to) const; @@ -1324,7 +1374,7 @@ public: return *(const MTPDbad_server_salt*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -1360,7 +1410,7 @@ public: return *(const MTPDmsgs_state_req*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_msgs_state_req); void write(mtpBuffer &to) const; @@ -1391,7 +1441,7 @@ public: return *(const MTPDmsgs_state_info*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_msgs_state_info); void write(mtpBuffer &to) const; @@ -1422,7 +1472,7 @@ public: return *(const MTPDmsgs_all_info*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_msgs_all_info); void write(mtpBuffer &to) const; @@ -1468,7 +1518,7 @@ public: return *(const MTPDmsg_new_detailed_info*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -1504,7 +1554,7 @@ public: return *(const MTPDmsg_resend_req*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_msg_resend_req); void write(mtpBuffer &to) const; @@ -1535,7 +1585,7 @@ public: return *(const MTPDrpc_error*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_rpc_error); void write(mtpBuffer &to) const; @@ -1569,7 +1619,7 @@ public: return *(const MTPDrpc_answer_dropped*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -1605,7 +1655,7 @@ public: return *(const MTPDfuture_salt*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_future_salt); void write(mtpBuffer &to) const; @@ -1636,7 +1686,7 @@ public: return *(const MTPDfuture_salts*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_future_salts); void write(mtpBuffer &to) const; @@ -1667,7 +1717,7 @@ public: return *(const MTPDpong*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_pong); void write(mtpBuffer &to) const; @@ -1713,7 +1763,7 @@ public: return *(const MTPDdestroy_session_none*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -1749,7 +1799,7 @@ public: return *(const MTPDnew_session_created*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_new_session_created); void write(mtpBuffer &to) const; @@ -1780,7 +1830,7 @@ public: return *(const MTPDhttp_wait*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_http_wait); void write(mtpBuffer &to) const; @@ -1838,7 +1888,7 @@ public: return *(const MTPDinputPeerChat*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -1893,7 +1943,7 @@ public: return *(const MTPDinputUserForeign*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -1931,7 +1981,7 @@ public: return *(const MTPDinputPhoneContact*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_inputPhoneContact); void write(mtpBuffer &to) const; @@ -1977,7 +2027,7 @@ public: return *(const MTPDinputFileBig*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2148,7 +2198,7 @@ public: return *(const MTPDinputMediaDocument*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2220,7 +2270,7 @@ public: return *(const MTPDinputChatPhoto*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2260,7 +2310,7 @@ public: return *(const MTPDinputGeoPoint*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2298,7 +2348,7 @@ public: return *(const MTPDinputPhoto*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2336,7 +2386,7 @@ public: return *(const MTPDinputVideo*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2422,7 +2472,7 @@ public: return *(const MTPDinputDocumentFileLocation*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2467,7 +2517,7 @@ public: return *(const MTPDinputPhotoCrop*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2502,7 +2552,7 @@ public: return *(const MTPDinputAppEvent*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_inputAppEvent); void write(mtpBuffer &to) const; @@ -2548,7 +2598,7 @@ public: return *(const MTPDpeerChat*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2575,7 +2625,7 @@ public: read(from, end, cons); } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2632,7 +2682,7 @@ public: return *(const MTPDfileLocation*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2731,7 +2781,7 @@ public: return *(const MTPDuserDeleted*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2778,7 +2828,7 @@ public: return *(const MTPDuserProfilePhoto*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2828,7 +2878,7 @@ public: return *(const MTPDuserStatusOffline*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2843,6 +2893,9 @@ private: friend MTPuserStatus MTP_userStatusEmpty(); friend MTPuserStatus MTP_userStatusOnline(MTPint _expires); friend MTPuserStatus MTP_userStatusOffline(MTPint _was_online); + friend MTPuserStatus MTP_userStatusRecently(); + friend MTPuserStatus MTP_userStatusLastWeek(); + friend MTPuserStatus MTP_userStatusLastMonth(); mtpTypeId _type; }; @@ -2904,7 +2957,7 @@ public: return *(const MTPDgeoChat*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -2944,7 +2997,7 @@ public: return *(const MTPDchatFull*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_chatFull); void write(mtpBuffer &to) const; @@ -2975,7 +3028,7 @@ public: return *(const MTPDchatParticipant*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_chatParticipant); void write(mtpBuffer &to) const; @@ -3021,7 +3074,7 @@ public: return *(const MTPDchatParticipants*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3060,7 +3113,7 @@ public: return *(const MTPDchatPhoto*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3134,7 +3187,7 @@ public: return *(const MTPDmessageService*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3249,7 +3302,7 @@ public: return *(const MTPDmessageMediaAudio*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3359,7 +3412,7 @@ public: return *(const MTPDmessageActionGeoChatCreate*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3406,7 +3459,7 @@ public: return *(const MTPDdialog*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_dialog); void write(mtpBuffer &to) const; @@ -3452,7 +3505,7 @@ public: return *(const MTPDphoto*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3515,7 +3568,7 @@ public: return *(const MTPDphotoCachedSize*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3568,7 +3621,7 @@ public: return *(const MTPDvideo*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3607,7 +3660,7 @@ public: return *(const MTPDgeoPoint*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3642,7 +3695,7 @@ public: return *(const MTPDauth_checkedPhone*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_auth_checkedPhone); void write(mtpBuffer &to) const; @@ -3688,7 +3741,7 @@ public: return *(const MTPDauth_sentAppCode*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3724,7 +3777,7 @@ public: return *(const MTPDauth_authorization*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_auth_authorization); void write(mtpBuffer &to) const; @@ -3755,7 +3808,7 @@ public: return *(const MTPDauth_exportedAuthorization*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_auth_exportedAuthorization); void write(mtpBuffer &to) const; @@ -3801,7 +3854,7 @@ public: return *(const MTPDinputNotifyGeoChatPeer*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3831,7 +3884,7 @@ public: read(from, end, cons); } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3865,7 +3918,7 @@ public: return *(const MTPDinputPeerNotifySettings*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_inputPeerNotifySettings); void write(mtpBuffer &to) const; @@ -3887,7 +3940,7 @@ public: read(from, end, cons); } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3924,7 +3977,7 @@ public: return *(const MTPDpeerNotifySettings*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -3974,7 +4027,7 @@ public: return *(const MTPDwallPaperSolid*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -4010,7 +4063,7 @@ public: return *(const MTPDuserFull*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_userFull); void write(mtpBuffer &to) const; @@ -4041,7 +4094,7 @@ public: return *(const MTPDcontact*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contact); void write(mtpBuffer &to) const; @@ -4072,7 +4125,7 @@ public: return *(const MTPDimportedContact*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_importedContact); void write(mtpBuffer &to) const; @@ -4103,7 +4156,7 @@ public: return *(const MTPDcontactBlocked*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contactBlocked); void write(mtpBuffer &to) const; @@ -4134,7 +4187,7 @@ public: return *(const MTPDcontactSuggested*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contactSuggested); void write(mtpBuffer &to) const; @@ -4165,7 +4218,7 @@ public: return *(const MTPDcontactStatus*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contactStatus); void write(mtpBuffer &to) const; @@ -4175,7 +4228,7 @@ public: private: explicit MTPcontactStatus(MTPDcontactStatus *_data); - friend MTPcontactStatus MTP_contactStatus(MTPint _user_id, MTPint _expires); + friend MTPcontactStatus MTP_contactStatus(MTPint _user_id, const MTPUserStatus &_status); }; typedef MTPBoxed MTPContactStatus; @@ -4196,7 +4249,7 @@ public: return *(const MTPDchatLocated*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_chatLocated); void write(mtpBuffer &to) const; @@ -4230,7 +4283,7 @@ public: return *(const MTPDcontacts_foreignLinkRequested*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -4269,7 +4322,7 @@ public: return *(const MTPDcontacts_myLinkRequested*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -4305,7 +4358,7 @@ public: return *(const MTPDcontacts_link*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_link); void write(mtpBuffer &to) const; @@ -4339,7 +4392,7 @@ public: return *(const MTPDcontacts_contacts*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -4374,7 +4427,7 @@ public: return *(const MTPDcontacts_importedContacts*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_importedContacts); void write(mtpBuffer &to) const; @@ -4420,7 +4473,7 @@ public: return *(const MTPDcontacts_blockedSlice*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -4456,7 +4509,7 @@ public: return *(const MTPDcontacts_suggested*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_suggested); void write(mtpBuffer &to) const; @@ -4502,7 +4555,7 @@ public: return *(const MTPDmessages_dialogsSlice*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -4553,7 +4606,7 @@ public: return *(const MTPDmessages_messagesSlice*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -4592,7 +4645,7 @@ public: return *(const MTPDmessages_message*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -4642,7 +4695,7 @@ public: return *(const MTPDmessages_statedMessagesLinks*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -4693,7 +4746,7 @@ public: return *(const MTPDmessages_statedMessageLink*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -4744,7 +4797,7 @@ public: return *(const MTPDmessages_sentMessageLink*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -4780,7 +4833,7 @@ public: return *(const MTPDmessages_chat*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_chat); void write(mtpBuffer &to) const; @@ -4811,7 +4864,7 @@ public: return *(const MTPDmessages_chats*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_chats); void write(mtpBuffer &to) const; @@ -4842,7 +4895,7 @@ public: return *(const MTPDmessages_chatFull*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_chatFull); void write(mtpBuffer &to) const; @@ -4873,7 +4926,7 @@ public: return *(const MTPDmessages_affectedHistory*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_affectedHistory); void write(mtpBuffer &to) const; @@ -4895,7 +4948,7 @@ public: read(from, end, cons); } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -5236,7 +5289,19 @@ public: return *(const MTPDupdateServiceNotification*)data; } - uint32 size() const; + MTPDupdatePrivacy &_updatePrivacy() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_updatePrivacy) throw mtpErrorWrongTypeId(_type, mtpc_updatePrivacy); + split(); + return *(MTPDupdatePrivacy*)data; + } + const MTPDupdatePrivacy &c_updatePrivacy() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_updatePrivacy) throw mtpErrorWrongTypeId(_type, mtpc_updatePrivacy); + return *(const MTPDupdatePrivacy*)data; + } + + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -5271,6 +5336,7 @@ private: explicit MTPupdate(MTPDupdateUserBlocked *_data); explicit MTPupdate(MTPDupdateNotifySettings *_data); explicit MTPupdate(MTPDupdateServiceNotification *_data); + explicit MTPupdate(MTPDupdatePrivacy *_data); friend MTPupdate MTP_updateNewMessage(const MTPMessage &_message, MTPint _pts); friend MTPupdate MTP_updateMessageID(MTPint _id, const MTPlong &_random_id); @@ -5298,6 +5364,7 @@ private: friend MTPupdate MTP_updateUserBlocked(MTPint _user_id, MTPBool _blocked); friend MTPupdate MTP_updateNotifySettings(const MTPNotifyPeer &_peer, const MTPPeerNotifySettings &_notify_settings); friend MTPupdate MTP_updateServiceNotification(const MTPstring &_type, const MTPstring &_message, const MTPMessageMedia &_media, MTPBool _popup); + friend MTPupdate MTP_updatePrivacy(const MTPPrivacyKey &_key, const MTPVector &_rules); mtpTypeId _type; }; @@ -5320,7 +5387,7 @@ public: return *(const MTPDupdates_state*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_updates_state); void write(mtpBuffer &to) const; @@ -5378,7 +5445,7 @@ public: return *(const MTPDupdates_differenceSlice*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -5467,7 +5534,7 @@ public: return *(const MTPDupdates*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -5525,7 +5592,7 @@ public: return *(const MTPDphotos_photosSlice*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -5561,7 +5628,7 @@ public: return *(const MTPDphotos_photo*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_photos_photo); void write(mtpBuffer &to) const; @@ -5592,7 +5659,7 @@ public: return *(const MTPDupload_file*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_upload_file); void write(mtpBuffer &to) const; @@ -5623,7 +5690,7 @@ public: return *(const MTPDdcOption*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_dcOption); void write(mtpBuffer &to) const; @@ -5654,7 +5721,7 @@ public: return *(const MTPDconfig*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_config); void write(mtpBuffer &to) const; @@ -5685,7 +5752,7 @@ public: return *(const MTPDnearestDc*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_nearestDc); void write(mtpBuffer &to) const; @@ -5719,7 +5786,7 @@ public: return *(const MTPDhelp_appUpdate*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -5754,7 +5821,7 @@ public: return *(const MTPDhelp_inviteText*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_help_inviteText); void write(mtpBuffer &to) const; @@ -5785,7 +5852,7 @@ public: return *(const MTPDinputGeoChat*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_inputGeoChat); void write(mtpBuffer &to) const; @@ -5843,7 +5910,7 @@ public: return *(const MTPDgeoChatMessageService*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -5881,7 +5948,7 @@ public: return *(const MTPDgeochats_statedMessage*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_statedMessage); void write(mtpBuffer &to) const; @@ -5912,7 +5979,7 @@ public: return *(const MTPDgeochats_located*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_located); void write(mtpBuffer &to) const; @@ -5958,7 +6025,7 @@ public: return *(const MTPDgeochats_messagesSlice*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -6045,7 +6112,7 @@ public: return *(const MTPDencryptedChatDiscarded*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -6087,7 +6154,7 @@ public: return *(const MTPDinputEncryptedChat*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_inputEncryptedChat); void write(mtpBuffer &to) const; @@ -6121,7 +6188,7 @@ public: return *(const MTPDencryptedFile*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -6183,7 +6250,7 @@ public: return *(const MTPDinputEncryptedFileBigUploaded*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -6237,7 +6304,7 @@ public: return *(const MTPDencryptedMessageService*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -6288,7 +6355,7 @@ public: return *(const MTPDmessages_dhConfig*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -6339,7 +6406,7 @@ public: return *(const MTPDmessages_sentEncryptedFile*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -6378,7 +6445,7 @@ public: return *(const MTPDinputAudio*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -6416,7 +6483,7 @@ public: return *(const MTPDinputDocument*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -6466,7 +6533,7 @@ public: return *(const MTPDaudio*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -6517,7 +6584,7 @@ public: return *(const MTPDdocument*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -6553,7 +6620,7 @@ public: return *(const MTPDhelp_support*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_help_support); void write(mtpBuffer &to) const; @@ -6587,7 +6654,7 @@ public: return *(const MTPDnotifyPeer*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -6615,7 +6682,7 @@ public: read(from, end, cons); } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); void write(mtpBuffer &to) const; @@ -6657,7 +6724,7 @@ public: return *(const MTPDcontactFound*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contactFound); void write(mtpBuffer &to) const; @@ -6688,7 +6755,7 @@ public: return *(const MTPDcontacts_found*)data; } - uint32 size() const; + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_found); void write(mtpBuffer &to) const; @@ -6702,6 +6769,220 @@ private: }; typedef MTPBoxed MTPcontacts_Found; +class MTPinputPrivacyKey { +public: + MTPinputPrivacyKey() { + } + MTPinputPrivacyKey(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_inputPrivacyKeyStatusTimestamp) { + read(from, end, cons); + } + + uint32 innerLength() const; + mtpTypeId type() const; + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_inputPrivacyKeyStatusTimestamp); + void write(mtpBuffer &to) const; + + typedef void ResponseType; + +private: + + friend MTPinputPrivacyKey MTP_inputPrivacyKeyStatusTimestamp(); +}; +typedef MTPBoxed MTPInputPrivacyKey; + +class MTPprivacyKey { +public: + MTPprivacyKey() { + } + MTPprivacyKey(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_privacyKeyStatusTimestamp) { + read(from, end, cons); + } + + uint32 innerLength() const; + mtpTypeId type() const; + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_privacyKeyStatusTimestamp); + void write(mtpBuffer &to) const; + + typedef void ResponseType; + +private: + + friend MTPprivacyKey MTP_privacyKeyStatusTimestamp(); +}; +typedef MTPBoxed MTPPrivacyKey; + +class MTPinputPrivacyRule : private mtpDataOwner { +public: + MTPinputPrivacyRule() : mtpDataOwner(0), _type(0) { + } + MTPinputPrivacyRule(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) : mtpDataOwner(0), _type(0) { + read(from, end, cons); + } + + MTPDinputPrivacyValueAllowUsers &_inputPrivacyValueAllowUsers() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_inputPrivacyValueAllowUsers) throw mtpErrorWrongTypeId(_type, mtpc_inputPrivacyValueAllowUsers); + split(); + return *(MTPDinputPrivacyValueAllowUsers*)data; + } + const MTPDinputPrivacyValueAllowUsers &c_inputPrivacyValueAllowUsers() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_inputPrivacyValueAllowUsers) throw mtpErrorWrongTypeId(_type, mtpc_inputPrivacyValueAllowUsers); + return *(const MTPDinputPrivacyValueAllowUsers*)data; + } + + MTPDinputPrivacyValueDisallowUsers &_inputPrivacyValueDisallowUsers() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_inputPrivacyValueDisallowUsers) throw mtpErrorWrongTypeId(_type, mtpc_inputPrivacyValueDisallowUsers); + split(); + return *(MTPDinputPrivacyValueDisallowUsers*)data; + } + const MTPDinputPrivacyValueDisallowUsers &c_inputPrivacyValueDisallowUsers() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_inputPrivacyValueDisallowUsers) throw mtpErrorWrongTypeId(_type, mtpc_inputPrivacyValueDisallowUsers); + return *(const MTPDinputPrivacyValueDisallowUsers*)data; + } + + uint32 innerLength() const; + mtpTypeId type() const; + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); + void write(mtpBuffer &to) const; + + typedef void ResponseType; + +private: + explicit MTPinputPrivacyRule(mtpTypeId type); + explicit MTPinputPrivacyRule(MTPDinputPrivacyValueAllowUsers *_data); + explicit MTPinputPrivacyRule(MTPDinputPrivacyValueDisallowUsers *_data); + + friend MTPinputPrivacyRule MTP_inputPrivacyValueAllowContacts(); + friend MTPinputPrivacyRule MTP_inputPrivacyValueAllowAll(); + friend MTPinputPrivacyRule MTP_inputPrivacyValueAllowUsers(const MTPVector &_users); + friend MTPinputPrivacyRule MTP_inputPrivacyValueDisallowContacts(); + friend MTPinputPrivacyRule MTP_inputPrivacyValueDisallowAll(); + friend MTPinputPrivacyRule MTP_inputPrivacyValueDisallowUsers(const MTPVector &_users); + + mtpTypeId _type; +}; +typedef MTPBoxed MTPInputPrivacyRule; + +class MTPprivacyRule : private mtpDataOwner { +public: + MTPprivacyRule() : mtpDataOwner(0), _type(0) { + } + MTPprivacyRule(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) : mtpDataOwner(0), _type(0) { + read(from, end, cons); + } + + MTPDprivacyValueAllowUsers &_privacyValueAllowUsers() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_privacyValueAllowUsers) throw mtpErrorWrongTypeId(_type, mtpc_privacyValueAllowUsers); + split(); + return *(MTPDprivacyValueAllowUsers*)data; + } + const MTPDprivacyValueAllowUsers &c_privacyValueAllowUsers() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_privacyValueAllowUsers) throw mtpErrorWrongTypeId(_type, mtpc_privacyValueAllowUsers); + return *(const MTPDprivacyValueAllowUsers*)data; + } + + MTPDprivacyValueDisallowUsers &_privacyValueDisallowUsers() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_privacyValueDisallowUsers) throw mtpErrorWrongTypeId(_type, mtpc_privacyValueDisallowUsers); + split(); + return *(MTPDprivacyValueDisallowUsers*)data; + } + const MTPDprivacyValueDisallowUsers &c_privacyValueDisallowUsers() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_privacyValueDisallowUsers) throw mtpErrorWrongTypeId(_type, mtpc_privacyValueDisallowUsers); + return *(const MTPDprivacyValueDisallowUsers*)data; + } + + uint32 innerLength() const; + mtpTypeId type() const; + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); + void write(mtpBuffer &to) const; + + typedef void ResponseType; + +private: + explicit MTPprivacyRule(mtpTypeId type); + explicit MTPprivacyRule(MTPDprivacyValueAllowUsers *_data); + explicit MTPprivacyRule(MTPDprivacyValueDisallowUsers *_data); + + friend MTPprivacyRule MTP_privacyValueAllowContacts(); + friend MTPprivacyRule MTP_privacyValueAllowAll(); + friend MTPprivacyRule MTP_privacyValueAllowUsers(const MTPVector &_users); + friend MTPprivacyRule MTP_privacyValueDisallowContacts(); + friend MTPprivacyRule MTP_privacyValueDisallowAll(); + friend MTPprivacyRule MTP_privacyValueDisallowUsers(const MTPVector &_users); + + mtpTypeId _type; +}; +typedef MTPBoxed MTPPrivacyRule; + +class MTPaccount_privacyRules : private mtpDataOwner { +public: + MTPaccount_privacyRules(); + MTPaccount_privacyRules(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_privacyRules) : mtpDataOwner(0) { + read(from, end, cons); + } + + MTPDaccount_privacyRules &_account_privacyRules() { + if (!data) throw mtpErrorUninitialized(); + split(); + return *(MTPDaccount_privacyRules*)data; + } + const MTPDaccount_privacyRules &c_account_privacyRules() const { + if (!data) throw mtpErrorUninitialized(); + return *(const MTPDaccount_privacyRules*)data; + } + + uint32 innerLength() const; + mtpTypeId type() const; + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_privacyRules); + void write(mtpBuffer &to) const; + + typedef void ResponseType; + +private: + explicit MTPaccount_privacyRules(MTPDaccount_privacyRules *_data); + + friend MTPaccount_privacyRules MTP_account_privacyRules(const MTPVector &_rules, const MTPVector &_users); +}; +typedef MTPBoxed MTPaccount_PrivacyRules; + +class MTPaccountDaysTTL : private mtpDataOwner { +public: + MTPaccountDaysTTL(); + MTPaccountDaysTTL(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_accountDaysTTL) : mtpDataOwner(0) { + read(from, end, cons); + } + + MTPDaccountDaysTTL &_accountDaysTTL() { + if (!data) throw mtpErrorUninitialized(); + split(); + return *(MTPDaccountDaysTTL*)data; + } + const MTPDaccountDaysTTL &c_accountDaysTTL() const { + if (!data) throw mtpErrorUninitialized(); + return *(const MTPDaccountDaysTTL*)data; + } + + uint32 innerLength() const; + mtpTypeId type() const; + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_accountDaysTTL); + void write(mtpBuffer &to) const; + + typedef void ResponseType; + +private: + explicit MTPaccountDaysTTL(MTPDaccountDaysTTL *_data); + + friend MTPaccountDaysTTL MTP_accountDaysTTL(MTPint _days); +}; +typedef MTPBoxed MTPAccountDaysTTL; + // Type constructors with data class MTPDresPQ : public mtpDataImpl { @@ -8180,11 +8461,11 @@ class MTPDcontactStatus : public mtpDataImpl { public: MTPDcontactStatus() { } - MTPDcontactStatus(MTPint _user_id, MTPint _expires) : vuser_id(_user_id), vexpires(_expires) { + MTPDcontactStatus(MTPint _user_id, const MTPUserStatus &_status) : vuser_id(_user_id), vstatus(_status) { } MTPint vuser_id; - MTPint vexpires; + MTPUserStatus vstatus; }; class MTPDchatLocated : public mtpDataImpl { @@ -8777,6 +9058,17 @@ public: MTPBool vpopup; }; +class MTPDupdatePrivacy : public mtpDataImpl { +public: + MTPDupdatePrivacy() { + } + MTPDupdatePrivacy(const MTPPrivacyKey &_key, const MTPVector &_rules) : vkey(_key), vrules(_rules) { + } + + MTPPrivacyKey vkey; + MTPVector vrules; +}; + class MTPDupdates_state : public mtpDataImpl { public: MTPDupdates_state() { @@ -9430,6 +9722,67 @@ public: MTPVector vusers; }; +class MTPDinputPrivacyValueAllowUsers : public mtpDataImpl { +public: + MTPDinputPrivacyValueAllowUsers() { + } + MTPDinputPrivacyValueAllowUsers(const MTPVector &_users) : vusers(_users) { + } + + MTPVector vusers; +}; + +class MTPDinputPrivacyValueDisallowUsers : public mtpDataImpl { +public: + MTPDinputPrivacyValueDisallowUsers() { + } + MTPDinputPrivacyValueDisallowUsers(const MTPVector &_users) : vusers(_users) { + } + + MTPVector vusers; +}; + +class MTPDprivacyValueAllowUsers : public mtpDataImpl { +public: + MTPDprivacyValueAllowUsers() { + } + MTPDprivacyValueAllowUsers(const MTPVector &_users) : vusers(_users) { + } + + MTPVector vusers; +}; + +class MTPDprivacyValueDisallowUsers : public mtpDataImpl { +public: + MTPDprivacyValueDisallowUsers() { + } + MTPDprivacyValueDisallowUsers(const MTPVector &_users) : vusers(_users) { + } + + MTPVector vusers; +}; + +class MTPDaccount_privacyRules : public mtpDataImpl { +public: + MTPDaccount_privacyRules() { + } + MTPDaccount_privacyRules(const MTPVector &_rules, const MTPVector &_users) : vrules(_rules), vusers(_users) { + } + + MTPVector vrules; + MTPVector vusers; +}; + +class MTPDaccountDaysTTL : public mtpDataImpl { +public: + MTPDaccountDaysTTL() { + } + MTPDaccountDaysTTL(MTPint _days) : vdays(_days) { + } + + MTPint vdays; +}; + // RPC methods class MTPreq_pq { // RPC method 'req_pq' @@ -9444,8 +9797,8 @@ public: MTPreq_pq(const MTPint128 &_nonce) : vnonce(_nonce) { } - uint32 size() const { - return vnonce.size(); + uint32 innerLength() const { + return vnonce.innerLength(); } mtpTypeId type() const { return mtpc_req_pq; @@ -9488,8 +9841,8 @@ public: MTPreq_DH_params(const MTPint128 &_nonce, const MTPint128 &_server_nonce, const MTPstring &_p, const MTPstring &_q, const MTPlong &_public_key_fingerprint, const MTPstring &_encrypted_data) : vnonce(_nonce), vserver_nonce(_server_nonce), vp(_p), vq(_q), vpublic_key_fingerprint(_public_key_fingerprint), vencrypted_data(_encrypted_data) { } - uint32 size() const { - return vnonce.size() + vserver_nonce.size() + vp.size() + vq.size() + vpublic_key_fingerprint.size() + vencrypted_data.size(); + uint32 innerLength() const { + return vnonce.innerLength() + vserver_nonce.innerLength() + vp.innerLength() + vq.innerLength() + vpublic_key_fingerprint.innerLength() + vencrypted_data.innerLength(); } mtpTypeId type() const { return mtpc_req_DH_params; @@ -9539,8 +9892,8 @@ public: MTPset_client_DH_params(const MTPint128 &_nonce, const MTPint128 &_server_nonce, const MTPstring &_encrypted_data) : vnonce(_nonce), vserver_nonce(_server_nonce), vencrypted_data(_encrypted_data) { } - uint32 size() const { - return vnonce.size() + vserver_nonce.size() + vencrypted_data.size(); + uint32 innerLength() const { + return vnonce.innerLength() + vserver_nonce.innerLength() + vencrypted_data.innerLength(); } mtpTypeId type() const { return mtpc_set_client_DH_params; @@ -9582,8 +9935,8 @@ public: MTPrpc_drop_answer(const MTPlong &_req_msg_id) : vreq_msg_id(_req_msg_id) { } - uint32 size() const { - return vreq_msg_id.size(); + uint32 innerLength() const { + return vreq_msg_id.innerLength(); } mtpTypeId type() const { return mtpc_rpc_drop_answer; @@ -9621,8 +9974,8 @@ public: MTPget_future_salts(MTPint _num) : vnum(_num) { } - uint32 size() const { - return vnum.size(); + uint32 innerLength() const { + return vnum.innerLength(); } mtpTypeId type() const { return mtpc_get_future_salts; @@ -9660,8 +10013,8 @@ public: MTPping(const MTPlong &_ping_id) : vping_id(_ping_id) { } - uint32 size() const { - return vping_id.size(); + uint32 innerLength() const { + return vping_id.innerLength(); } mtpTypeId type() const { return mtpc_ping; @@ -9700,8 +10053,8 @@ public: MTPping_delay_disconnect(const MTPlong &_ping_id, MTPint _disconnect_delay) : vping_id(_ping_id), vdisconnect_delay(_disconnect_delay) { } - uint32 size() const { - return vping_id.size() + vdisconnect_delay.size(); + uint32 innerLength() const { + return vping_id.innerLength() + vdisconnect_delay.innerLength(); } mtpTypeId type() const { return mtpc_ping_delay_disconnect; @@ -9741,8 +10094,8 @@ public: MTPdestroy_session(const MTPlong &_session_id) : vsession_id(_session_id) { } - uint32 size() const { - return vsession_id.size(); + uint32 innerLength() const { + return vsession_id.innerLength(); } mtpTypeId type() const { return mtpc_destroy_session; @@ -9784,8 +10137,8 @@ public: MTPregister_saveDeveloperInfo(const MTPstring &_name, const MTPstring &_email, const MTPstring &_phone_number, MTPint _age, const MTPstring &_city) : vname(_name), vemail(_email), vphone_number(_phone_number), vage(_age), vcity(_city) { } - uint32 size() const { - return vname.size() + vemail.size() + vphone_number.size() + vage.size() + vcity.size(); + uint32 innerLength() const { + return vname.innerLength() + vemail.innerLength() + vphone_number.innerLength() + vage.innerLength() + vcity.innerLength(); } mtpTypeId type() const { return mtpc_register_saveDeveloperInfo; @@ -9833,8 +10186,8 @@ public: MTPinvokeAfterMsg(const MTPlong &_msg_id, const TQueryType &_query) : vmsg_id(_msg_id), vquery(_query) { } - uint32 size() const { - return vmsg_id.size() + vquery.size(); + uint32 innerLength() const { + return vmsg_id.innerLength() + vquery.innerLength(); } mtpTypeId type() const { return mtpc_invokeAfterMsg; @@ -9875,8 +10228,8 @@ public: MTPinvokeAfterMsgs(const MTPVector &_msg_ids, const TQueryType &_query) : vmsg_ids(_msg_ids), vquery(_query) { } - uint32 size() const { - return vmsg_ids.size() + vquery.size(); + uint32 innerLength() const { + return vmsg_ids.innerLength() + vquery.innerLength(); } mtpTypeId type() const { return mtpc_invokeAfterMsgs; @@ -9915,8 +10268,8 @@ public: MTPauth_checkPhone(const MTPstring &_phone_number) : vphone_number(_phone_number) { } - uint32 size() const { - return vphone_number.size(); + uint32 innerLength() const { + return vphone_number.innerLength(); } mtpTypeId type() const { return mtpc_auth_checkPhone; @@ -9958,8 +10311,8 @@ public: MTPauth_sendCode(const MTPstring &_phone_number, MTPint _sms_type, MTPint _api_id, const MTPstring &_api_hash, const MTPstring &_lang_code) : vphone_number(_phone_number), vsms_type(_sms_type), vapi_id(_api_id), vapi_hash(_api_hash), vlang_code(_lang_code) { } - uint32 size() const { - return vphone_number.size() + vsms_type.size() + vapi_id.size() + vapi_hash.size() + vlang_code.size(); + uint32 innerLength() const { + return vphone_number.innerLength() + vsms_type.innerLength() + vapi_id.innerLength() + vapi_hash.innerLength() + vlang_code.innerLength(); } mtpTypeId type() const { return mtpc_auth_sendCode; @@ -10006,8 +10359,8 @@ public: MTPauth_sendCall(const MTPstring &_phone_number, const MTPstring &_phone_code_hash) : vphone_number(_phone_number), vphone_code_hash(_phone_code_hash) { } - uint32 size() const { - return vphone_number.size() + vphone_code_hash.size(); + uint32 innerLength() const { + return vphone_number.innerLength() + vphone_code_hash.innerLength(); } mtpTypeId type() const { return mtpc_auth_sendCall; @@ -10051,8 +10404,8 @@ public: MTPauth_signUp(const MTPstring &_phone_number, const MTPstring &_phone_code_hash, const MTPstring &_phone_code, const MTPstring &_first_name, const MTPstring &_last_name) : vphone_number(_phone_number), vphone_code_hash(_phone_code_hash), vphone_code(_phone_code), vfirst_name(_first_name), vlast_name(_last_name) { } - uint32 size() const { - return vphone_number.size() + vphone_code_hash.size() + vphone_code.size() + vfirst_name.size() + vlast_name.size(); + uint32 innerLength() const { + return vphone_number.innerLength() + vphone_code_hash.innerLength() + vphone_code.innerLength() + vfirst_name.innerLength() + vlast_name.innerLength(); } mtpTypeId type() const { return mtpc_auth_signUp; @@ -10100,8 +10453,8 @@ public: MTPauth_signIn(const MTPstring &_phone_number, const MTPstring &_phone_code_hash, const MTPstring &_phone_code) : vphone_number(_phone_number), vphone_code_hash(_phone_code_hash), vphone_code(_phone_code) { } - uint32 size() const { - return vphone_number.size() + vphone_code_hash.size() + vphone_code.size(); + uint32 innerLength() const { + return vphone_number.innerLength() + vphone_code_hash.innerLength() + vphone_code.innerLength(); } mtpTypeId type() const { return mtpc_auth_signIn; @@ -10139,7 +10492,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return 0; } mtpTypeId type() const { @@ -10170,7 +10523,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return 0; } mtpTypeId type() const { @@ -10206,8 +10559,8 @@ public: MTPauth_sendInvites(const MTPVector &_phone_numbers, const MTPstring &_message) : vphone_numbers(_phone_numbers), vmessage(_message) { } - uint32 size() const { - return vphone_numbers.size() + vmessage.size(); + uint32 innerLength() const { + return vphone_numbers.innerLength() + vmessage.innerLength(); } mtpTypeId type() const { return mtpc_auth_sendInvites; @@ -10247,8 +10600,8 @@ public: MTPauth_exportAuthorization(MTPint _dc_id) : vdc_id(_dc_id) { } - uint32 size() const { - return vdc_id.size(); + uint32 innerLength() const { + return vdc_id.innerLength(); } mtpTypeId type() const { return mtpc_auth_exportAuthorization; @@ -10287,8 +10640,8 @@ public: MTPauth_importAuthorization(MTPint _id, const MTPbytes &_bytes) : vid(_id), vbytes(_bytes) { } - uint32 size() const { - return vid.size() + vbytes.size(); + uint32 innerLength() const { + return vid.innerLength() + vbytes.innerLength(); } mtpTypeId type() const { return mtpc_auth_importAuthorization; @@ -10331,8 +10684,8 @@ public: MTPauth_bindTempAuthKey(const MTPlong &_perm_auth_key_id, const MTPlong &_nonce, MTPint _expires_at, const MTPbytes &_encrypted_message) : vperm_auth_key_id(_perm_auth_key_id), vnonce(_nonce), vexpires_at(_expires_at), vencrypted_message(_encrypted_message) { } - uint32 size() const { - return vperm_auth_key_id.size() + vnonce.size() + vexpires_at.size() + vencrypted_message.size(); + uint32 innerLength() const { + return vperm_auth_key_id.innerLength() + vnonce.innerLength() + vexpires_at.innerLength() + vencrypted_message.innerLength(); } mtpTypeId type() const { return mtpc_auth_bindTempAuthKey; @@ -10382,8 +10735,8 @@ public: MTPaccount_registerDevice(MTPint _token_type, const MTPstring &_token, const MTPstring &_device_model, const MTPstring &_system_version, const MTPstring &_app_version, MTPBool _app_sandbox, const MTPstring &_lang_code) : vtoken_type(_token_type), vtoken(_token), vdevice_model(_device_model), vsystem_version(_system_version), vapp_version(_app_version), vapp_sandbox(_app_sandbox), vlang_code(_lang_code) { } - uint32 size() const { - return vtoken_type.size() + vtoken.size() + vdevice_model.size() + vsystem_version.size() + vapp_version.size() + vapp_sandbox.size() + vlang_code.size(); + uint32 innerLength() const { + return vtoken_type.innerLength() + vtoken.innerLength() + vdevice_model.innerLength() + vsystem_version.innerLength() + vapp_version.innerLength() + vapp_sandbox.innerLength() + vlang_code.innerLength(); } mtpTypeId type() const { return mtpc_account_registerDevice; @@ -10434,8 +10787,8 @@ public: MTPaccount_unregisterDevice(MTPint _token_type, const MTPstring &_token) : vtoken_type(_token_type), vtoken(_token) { } - uint32 size() const { - return vtoken_type.size() + vtoken.size(); + uint32 innerLength() const { + return vtoken_type.innerLength() + vtoken.innerLength(); } mtpTypeId type() const { return mtpc_account_unregisterDevice; @@ -10476,8 +10829,8 @@ public: MTPaccount_updateNotifySettings(const MTPInputNotifyPeer &_peer, const MTPInputPeerNotifySettings &_settings) : vpeer(_peer), vsettings(_settings) { } - uint32 size() const { - return vpeer.size() + vsettings.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vsettings.innerLength(); } mtpTypeId type() const { return mtpc_account_updateNotifySettings; @@ -10517,8 +10870,8 @@ public: MTPaccount_getNotifySettings(const MTPInputNotifyPeer &_peer) : vpeer(_peer) { } - uint32 size() const { - return vpeer.size(); + uint32 innerLength() const { + return vpeer.innerLength(); } mtpTypeId type() const { return mtpc_account_getNotifySettings; @@ -10552,7 +10905,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return 0; } mtpTypeId type() const { @@ -10588,8 +10941,8 @@ public: MTPaccount_updateProfile(const MTPstring &_first_name, const MTPstring &_last_name) : vfirst_name(_first_name), vlast_name(_last_name) { } - uint32 size() const { - return vfirst_name.size() + vlast_name.size(); + uint32 innerLength() const { + return vfirst_name.innerLength() + vlast_name.innerLength(); } mtpTypeId type() const { return mtpc_account_updateProfile; @@ -10629,8 +10982,8 @@ public: MTPaccount_updateStatus(MTPBool _offline) : voffline(_offline) { } - uint32 size() const { - return voffline.size(); + uint32 innerLength() const { + return voffline.innerLength(); } mtpTypeId type() const { return mtpc_account_updateStatus; @@ -10664,7 +11017,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return 0; } mtpTypeId type() const { @@ -10699,8 +11052,8 @@ public: MTPusers_getUsers(const MTPVector &_id) : vid(_id) { } - uint32 size() const { - return vid.size(); + uint32 innerLength() const { + return vid.innerLength(); } mtpTypeId type() const { return mtpc_users_getUsers; @@ -10738,8 +11091,8 @@ public: MTPusers_getFullUser(const MTPInputUser &_id) : vid(_id) { } - uint32 size() const { - return vid.size(); + uint32 innerLength() const { + return vid.innerLength(); } mtpTypeId type() const { return mtpc_users_getFullUser; @@ -10773,7 +11126,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return 0; } mtpTypeId type() const { @@ -10808,8 +11161,8 @@ public: MTPcontacts_getContacts(const MTPstring &_hash) : vhash(_hash) { } - uint32 size() const { - return vhash.size(); + uint32 innerLength() const { + return vhash.innerLength(); } mtpTypeId type() const { return mtpc_contacts_getContacts; @@ -10848,8 +11201,8 @@ public: MTPcontacts_importContacts(const MTPVector &_contacts, MTPBool _replace) : vcontacts(_contacts), vreplace(_replace) { } - uint32 size() const { - return vcontacts.size() + vreplace.size(); + uint32 innerLength() const { + return vcontacts.innerLength() + vreplace.innerLength(); } mtpTypeId type() const { return mtpc_contacts_importContacts; @@ -10889,8 +11242,8 @@ public: MTPcontacts_getSuggested(MTPint _limit) : vlimit(_limit) { } - uint32 size() const { - return vlimit.size(); + uint32 innerLength() const { + return vlimit.innerLength(); } mtpTypeId type() const { return mtpc_contacts_getSuggested; @@ -10928,8 +11281,8 @@ public: MTPcontacts_deleteContact(const MTPInputUser &_id) : vid(_id) { } - uint32 size() const { - return vid.size(); + uint32 innerLength() const { + return vid.innerLength(); } mtpTypeId type() const { return mtpc_contacts_deleteContact; @@ -10967,8 +11320,8 @@ public: MTPcontacts_deleteContacts(const MTPVector &_id) : vid(_id) { } - uint32 size() const { - return vid.size(); + uint32 innerLength() const { + return vid.innerLength(); } mtpTypeId type() const { return mtpc_contacts_deleteContacts; @@ -11006,8 +11359,8 @@ public: MTPcontacts_block(const MTPInputUser &_id) : vid(_id) { } - uint32 size() const { - return vid.size(); + uint32 innerLength() const { + return vid.innerLength(); } mtpTypeId type() const { return mtpc_contacts_block; @@ -11045,8 +11398,8 @@ public: MTPcontacts_unblock(const MTPInputUser &_id) : vid(_id) { } - uint32 size() const { - return vid.size(); + uint32 innerLength() const { + return vid.innerLength(); } mtpTypeId type() const { return mtpc_contacts_unblock; @@ -11085,8 +11438,8 @@ public: MTPcontacts_getBlocked(MTPint _offset, MTPint _limit) : voffset(_offset), vlimit(_limit) { } - uint32 size() const { - return voffset.size() + vlimit.size(); + uint32 innerLength() const { + return voffset.innerLength() + vlimit.innerLength(); } mtpTypeId type() const { return mtpc_contacts_getBlocked; @@ -11122,7 +11475,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return 0; } mtpTypeId type() const { @@ -11157,8 +11510,8 @@ public: MTPcontacts_importCard(const MTPVector &_export_card) : vexport_card(_export_card) { } - uint32 size() const { - return vexport_card.size(); + uint32 innerLength() const { + return vexport_card.innerLength(); } mtpTypeId type() const { return mtpc_contacts_importCard; @@ -11196,8 +11549,8 @@ public: MTPmessages_getMessages(const MTPVector &_id) : vid(_id) { } - uint32 size() const { - return vid.size(); + uint32 innerLength() const { + return vid.innerLength(); } mtpTypeId type() const { return mtpc_messages_getMessages; @@ -11237,8 +11590,8 @@ public: MTPmessages_getDialogs(MTPint _offset, MTPint _max_id, MTPint _limit) : voffset(_offset), vmax_id(_max_id), vlimit(_limit) { } - uint32 size() const { - return voffset.size() + vmax_id.size() + vlimit.size(); + uint32 innerLength() const { + return voffset.innerLength() + vmax_id.innerLength() + vlimit.innerLength(); } mtpTypeId type() const { return mtpc_messages_getDialogs; @@ -11283,8 +11636,8 @@ public: MTPmessages_getHistory(const MTPInputPeer &_peer, MTPint _offset, MTPint _max_id, MTPint _limit) : vpeer(_peer), voffset(_offset), vmax_id(_max_id), vlimit(_limit) { } - uint32 size() const { - return vpeer.size() + voffset.size() + vmax_id.size() + vlimit.size(); + uint32 innerLength() const { + return vpeer.innerLength() + voffset.innerLength() + vmax_id.innerLength() + vlimit.innerLength(); } mtpTypeId type() const { return mtpc_messages_getHistory; @@ -11335,8 +11688,8 @@ public: MTPmessages_search(const MTPInputPeer &_peer, const MTPstring &_q, const MTPMessagesFilter &_filter, MTPint _min_date, MTPint _max_date, MTPint _offset, MTPint _max_id, MTPint _limit) : vpeer(_peer), vq(_q), vfilter(_filter), vmin_date(_min_date), vmax_date(_max_date), voffset(_offset), vmax_id(_max_id), vlimit(_limit) { } - uint32 size() const { - return vpeer.size() + vq.size() + vfilter.size() + vmin_date.size() + vmax_date.size() + voffset.size() + vmax_id.size() + vlimit.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vq.innerLength() + vfilter.innerLength() + vmin_date.innerLength() + vmax_date.innerLength() + voffset.innerLength() + vmax_id.innerLength() + vlimit.innerLength(); } mtpTypeId type() const { return mtpc_messages_search; @@ -11391,8 +11744,8 @@ public: MTPmessages_readHistory(const MTPInputPeer &_peer, MTPint _max_id, MTPint _offset, MTPBool _read_contents) : vpeer(_peer), vmax_id(_max_id), voffset(_offset), vread_contents(_read_contents) { } - uint32 size() const { - return vpeer.size() + vmax_id.size() + voffset.size() + vread_contents.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vmax_id.innerLength() + voffset.innerLength() + vread_contents.innerLength(); } mtpTypeId type() const { return mtpc_messages_readHistory; @@ -11437,8 +11790,8 @@ public: MTPmessages_deleteHistory(const MTPInputPeer &_peer, MTPint _offset) : vpeer(_peer), voffset(_offset) { } - uint32 size() const { - return vpeer.size() + voffset.size(); + uint32 innerLength() const { + return vpeer.innerLength() + voffset.innerLength(); } mtpTypeId type() const { return mtpc_messages_deleteHistory; @@ -11478,8 +11831,8 @@ public: MTPmessages_deleteMessages(const MTPVector &_id) : vid(_id) { } - uint32 size() const { - return vid.size(); + uint32 innerLength() const { + return vid.innerLength(); } mtpTypeId type() const { return mtpc_messages_deleteMessages; @@ -11517,8 +11870,8 @@ public: MTPmessages_restoreMessages(const MTPVector &_id) : vid(_id) { } - uint32 size() const { - return vid.size(); + uint32 innerLength() const { + return vid.innerLength(); } mtpTypeId type() const { return mtpc_messages_restoreMessages; @@ -11556,8 +11909,8 @@ public: MTPmessages_receivedMessages(MTPint _max_id) : vmax_id(_max_id) { } - uint32 size() const { - return vmax_id.size(); + uint32 innerLength() const { + return vmax_id.innerLength(); } mtpTypeId type() const { return mtpc_messages_receivedMessages; @@ -11596,8 +11949,8 @@ public: MTPmessages_setTyping(const MTPInputPeer &_peer, const MTPSendMessageAction &_action) : vpeer(_peer), vaction(_action) { } - uint32 size() const { - return vpeer.size() + vaction.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vaction.innerLength(); } mtpTypeId type() const { return mtpc_messages_setTyping; @@ -11639,8 +11992,8 @@ public: MTPmessages_sendMessage(const MTPInputPeer &_peer, const MTPstring &_message, const MTPlong &_random_id) : vpeer(_peer), vmessage(_message), vrandom_id(_random_id) { } - uint32 size() const { - return vpeer.size() + vmessage.size() + vrandom_id.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vmessage.innerLength() + vrandom_id.innerLength(); } mtpTypeId type() const { return mtpc_messages_sendMessage; @@ -11684,8 +12037,8 @@ public: MTPmessages_sendMedia(const MTPInputPeer &_peer, const MTPInputMedia &_media, const MTPlong &_random_id) : vpeer(_peer), vmedia(_media), vrandom_id(_random_id) { } - uint32 size() const { - return vpeer.size() + vmedia.size() + vrandom_id.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vmedia.innerLength() + vrandom_id.innerLength(); } mtpTypeId type() const { return mtpc_messages_sendMedia; @@ -11728,8 +12081,8 @@ public: MTPmessages_forwardMessages(const MTPInputPeer &_peer, const MTPVector &_id) : vpeer(_peer), vid(_id) { } - uint32 size() const { - return vpeer.size() + vid.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vid.innerLength(); } mtpTypeId type() const { return mtpc_messages_forwardMessages; @@ -11769,8 +12122,8 @@ public: MTPmessages_getChats(const MTPVector &_id) : vid(_id) { } - uint32 size() const { - return vid.size(); + uint32 innerLength() const { + return vid.innerLength(); } mtpTypeId type() const { return mtpc_messages_getChats; @@ -11808,8 +12161,8 @@ public: MTPmessages_getFullChat(MTPint _chat_id) : vchat_id(_chat_id) { } - uint32 size() const { - return vchat_id.size(); + uint32 innerLength() const { + return vchat_id.innerLength(); } mtpTypeId type() const { return mtpc_messages_getFullChat; @@ -11848,8 +12201,8 @@ public: MTPmessages_editChatTitle(MTPint _chat_id, const MTPstring &_title) : vchat_id(_chat_id), vtitle(_title) { } - uint32 size() const { - return vchat_id.size() + vtitle.size(); + uint32 innerLength() const { + return vchat_id.innerLength() + vtitle.innerLength(); } mtpTypeId type() const { return mtpc_messages_editChatTitle; @@ -11890,8 +12243,8 @@ public: MTPmessages_editChatPhoto(MTPint _chat_id, const MTPInputChatPhoto &_photo) : vchat_id(_chat_id), vphoto(_photo) { } - uint32 size() const { - return vchat_id.size() + vphoto.size(); + uint32 innerLength() const { + return vchat_id.innerLength() + vphoto.innerLength(); } mtpTypeId type() const { return mtpc_messages_editChatPhoto; @@ -11933,8 +12286,8 @@ public: MTPmessages_addChatUser(MTPint _chat_id, const MTPInputUser &_user_id, MTPint _fwd_limit) : vchat_id(_chat_id), vuser_id(_user_id), vfwd_limit(_fwd_limit) { } - uint32 size() const { - return vchat_id.size() + vuser_id.size() + vfwd_limit.size(); + uint32 innerLength() const { + return vchat_id.innerLength() + vuser_id.innerLength() + vfwd_limit.innerLength(); } mtpTypeId type() const { return mtpc_messages_addChatUser; @@ -11977,8 +12330,8 @@ public: MTPmessages_deleteChatUser(MTPint _chat_id, const MTPInputUser &_user_id) : vchat_id(_chat_id), vuser_id(_user_id) { } - uint32 size() const { - return vchat_id.size() + vuser_id.size(); + uint32 innerLength() const { + return vchat_id.innerLength() + vuser_id.innerLength(); } mtpTypeId type() const { return mtpc_messages_deleteChatUser; @@ -12019,8 +12372,8 @@ public: MTPmessages_createChat(const MTPVector &_users, const MTPstring &_title) : vusers(_users), vtitle(_title) { } - uint32 size() const { - return vusers.size() + vtitle.size(); + uint32 innerLength() const { + return vusers.innerLength() + vtitle.innerLength(); } mtpTypeId type() const { return mtpc_messages_createChat; @@ -12056,7 +12409,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return 0; } mtpTypeId type() const { @@ -12093,8 +12446,8 @@ public: MTPupdates_getDifference(MTPint _pts, MTPint _date, MTPint _qts) : vpts(_pts), vdate(_date), vqts(_qts) { } - uint32 size() const { - return vpts.size() + vdate.size() + vqts.size(); + uint32 innerLength() const { + return vpts.innerLength() + vdate.innerLength() + vqts.innerLength(); } mtpTypeId type() const { return mtpc_updates_getDifference; @@ -12137,8 +12490,8 @@ public: MTPphotos_updateProfilePhoto(const MTPInputPhoto &_id, const MTPInputPhotoCrop &_crop) : vid(_id), vcrop(_crop) { } - uint32 size() const { - return vid.size() + vcrop.size(); + uint32 innerLength() const { + return vid.innerLength() + vcrop.innerLength(); } mtpTypeId type() const { return mtpc_photos_updateProfilePhoto; @@ -12181,8 +12534,8 @@ public: MTPphotos_uploadProfilePhoto(const MTPInputFile &_file, const MTPstring &_caption, const MTPInputGeoPoint &_geo_point, const MTPInputPhotoCrop &_crop) : vfile(_file), vcaption(_caption), vgeo_point(_geo_point), vcrop(_crop) { } - uint32 size() const { - return vfile.size() + vcaption.size() + vgeo_point.size() + vcrop.size(); + uint32 innerLength() const { + return vfile.innerLength() + vcaption.innerLength() + vgeo_point.innerLength() + vcrop.innerLength(); } mtpTypeId type() const { return mtpc_photos_uploadProfilePhoto; @@ -12228,8 +12581,8 @@ public: MTPupload_saveFilePart(const MTPlong &_file_id, MTPint _file_part, const MTPbytes &_bytes) : vfile_id(_file_id), vfile_part(_file_part), vbytes(_bytes) { } - uint32 size() const { - return vfile_id.size() + vfile_part.size() + vbytes.size(); + uint32 innerLength() const { + return vfile_id.innerLength() + vfile_part.innerLength() + vbytes.innerLength(); } mtpTypeId type() const { return mtpc_upload_saveFilePart; @@ -12273,8 +12626,8 @@ public: MTPupload_getFile(const MTPInputFileLocation &_location, MTPint _offset, MTPint _limit) : vlocation(_location), voffset(_offset), vlimit(_limit) { } - uint32 size() const { - return vlocation.size() + voffset.size() + vlimit.size(); + uint32 innerLength() const { + return vlocation.innerLength() + voffset.innerLength() + vlimit.innerLength(); } mtpTypeId type() const { return mtpc_upload_getFile; @@ -12312,7 +12665,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return 0; } mtpTypeId type() const { @@ -12343,7 +12696,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return 0; } mtpTypeId type() const { @@ -12381,8 +12734,8 @@ public: MTPhelp_getAppUpdate(const MTPstring &_device_model, const MTPstring &_system_version, const MTPstring &_app_version, const MTPstring &_lang_code) : vdevice_model(_device_model), vsystem_version(_system_version), vapp_version(_app_version), vlang_code(_lang_code) { } - uint32 size() const { - return vdevice_model.size() + vsystem_version.size() + vapp_version.size() + vlang_code.size(); + uint32 innerLength() const { + return vdevice_model.innerLength() + vsystem_version.innerLength() + vapp_version.innerLength() + vlang_code.innerLength(); } mtpTypeId type() const { return mtpc_help_getAppUpdate; @@ -12426,8 +12779,8 @@ public: MTPhelp_saveAppLog(const MTPVector &_events) : vevents(_events) { } - uint32 size() const { - return vevents.size(); + uint32 innerLength() const { + return vevents.innerLength(); } mtpTypeId type() const { return mtpc_help_saveAppLog; @@ -12465,8 +12818,8 @@ public: MTPhelp_getInviteText(const MTPstring &_lang_code) : vlang_code(_lang_code) { } - uint32 size() const { - return vlang_code.size(); + uint32 innerLength() const { + return vlang_code.innerLength(); } mtpTypeId type() const { return mtpc_help_getInviteText; @@ -12507,8 +12860,8 @@ public: MTPphotos_getUserPhotos(const MTPInputUser &_user_id, MTPint _offset, MTPint _max_id, MTPint _limit) : vuser_id(_user_id), voffset(_offset), vmax_id(_max_id), vlimit(_limit) { } - uint32 size() const { - return vuser_id.size() + voffset.size() + vmax_id.size() + vlimit.size(); + uint32 innerLength() const { + return vuser_id.innerLength() + voffset.innerLength() + vmax_id.innerLength() + vlimit.innerLength(); } mtpTypeId type() const { return mtpc_photos_getUserPhotos; @@ -12554,8 +12907,8 @@ public: MTPmessages_forwardMessage(const MTPInputPeer &_peer, MTPint _id, const MTPlong &_random_id) : vpeer(_peer), vid(_id), vrandom_id(_random_id) { } - uint32 size() const { - return vpeer.size() + vid.size() + vrandom_id.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vid.innerLength() + vrandom_id.innerLength(); } mtpTypeId type() const { return mtpc_messages_forwardMessage; @@ -12599,8 +12952,8 @@ public: MTPmessages_sendBroadcast(const MTPVector &_contacts, const MTPstring &_message, const MTPInputMedia &_media) : vcontacts(_contacts), vmessage(_message), vmedia(_media) { } - uint32 size() const { - return vcontacts.size() + vmessage.size() + vmedia.size(); + uint32 innerLength() const { + return vcontacts.innerLength() + vmessage.innerLength() + vmedia.innerLength(); } mtpTypeId type() const { return mtpc_messages_sendBroadcast; @@ -12644,8 +12997,8 @@ public: MTPgeochats_getLocated(const MTPInputGeoPoint &_geo_point, MTPint _radius, MTPint _limit) : vgeo_point(_geo_point), vradius(_radius), vlimit(_limit) { } - uint32 size() const { - return vgeo_point.size() + vradius.size() + vlimit.size(); + uint32 innerLength() const { + return vgeo_point.innerLength() + vradius.innerLength() + vlimit.innerLength(); } mtpTypeId type() const { return mtpc_geochats_getLocated; @@ -12688,8 +13041,8 @@ public: MTPgeochats_getRecents(MTPint _offset, MTPint _limit) : voffset(_offset), vlimit(_limit) { } - uint32 size() const { - return voffset.size() + vlimit.size(); + uint32 innerLength() const { + return voffset.innerLength() + vlimit.innerLength(); } mtpTypeId type() const { return mtpc_geochats_getRecents; @@ -12729,8 +13082,8 @@ public: MTPgeochats_checkin(const MTPInputGeoChat &_peer) : vpeer(_peer) { } - uint32 size() const { - return vpeer.size(); + uint32 innerLength() const { + return vpeer.innerLength(); } mtpTypeId type() const { return mtpc_geochats_checkin; @@ -12768,8 +13121,8 @@ public: MTPgeochats_getFullChat(const MTPInputGeoChat &_peer) : vpeer(_peer) { } - uint32 size() const { - return vpeer.size(); + uint32 innerLength() const { + return vpeer.innerLength(); } mtpTypeId type() const { return mtpc_geochats_getFullChat; @@ -12809,8 +13162,8 @@ public: MTPgeochats_editChatTitle(const MTPInputGeoChat &_peer, const MTPstring &_title, const MTPstring &_address) : vpeer(_peer), vtitle(_title), vaddress(_address) { } - uint32 size() const { - return vpeer.size() + vtitle.size() + vaddress.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vtitle.innerLength() + vaddress.innerLength(); } mtpTypeId type() const { return mtpc_geochats_editChatTitle; @@ -12853,8 +13206,8 @@ public: MTPgeochats_editChatPhoto(const MTPInputGeoChat &_peer, const MTPInputChatPhoto &_photo) : vpeer(_peer), vphoto(_photo) { } - uint32 size() const { - return vpeer.size() + vphoto.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vphoto.innerLength(); } mtpTypeId type() const { return mtpc_geochats_editChatPhoto; @@ -12901,8 +13254,8 @@ public: MTPgeochats_search(const MTPInputGeoChat &_peer, const MTPstring &_q, const MTPMessagesFilter &_filter, MTPint _min_date, MTPint _max_date, MTPint _offset, MTPint _max_id, MTPint _limit) : vpeer(_peer), vq(_q), vfilter(_filter), vmin_date(_min_date), vmax_date(_max_date), voffset(_offset), vmax_id(_max_id), vlimit(_limit) { } - uint32 size() const { - return vpeer.size() + vq.size() + vfilter.size() + vmin_date.size() + vmax_date.size() + voffset.size() + vmax_id.size() + vlimit.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vq.innerLength() + vfilter.innerLength() + vmin_date.innerLength() + vmax_date.innerLength() + voffset.innerLength() + vmax_id.innerLength() + vlimit.innerLength(); } mtpTypeId type() const { return mtpc_geochats_search; @@ -12957,8 +13310,8 @@ public: MTPgeochats_getHistory(const MTPInputGeoChat &_peer, MTPint _offset, MTPint _max_id, MTPint _limit) : vpeer(_peer), voffset(_offset), vmax_id(_max_id), vlimit(_limit) { } - uint32 size() const { - return vpeer.size() + voffset.size() + vmax_id.size() + vlimit.size(); + uint32 innerLength() const { + return vpeer.innerLength() + voffset.innerLength() + vmax_id.innerLength() + vlimit.innerLength(); } mtpTypeId type() const { return mtpc_geochats_getHistory; @@ -13003,8 +13356,8 @@ public: MTPgeochats_setTyping(const MTPInputGeoChat &_peer, MTPBool _typing) : vpeer(_peer), vtyping(_typing) { } - uint32 size() const { - return vpeer.size() + vtyping.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vtyping.innerLength(); } mtpTypeId type() const { return mtpc_geochats_setTyping; @@ -13046,8 +13399,8 @@ public: MTPgeochats_sendMessage(const MTPInputGeoChat &_peer, const MTPstring &_message, const MTPlong &_random_id) : vpeer(_peer), vmessage(_message), vrandom_id(_random_id) { } - uint32 size() const { - return vpeer.size() + vmessage.size() + vrandom_id.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vmessage.innerLength() + vrandom_id.innerLength(); } mtpTypeId type() const { return mtpc_geochats_sendMessage; @@ -13091,8 +13444,8 @@ public: MTPgeochats_sendMedia(const MTPInputGeoChat &_peer, const MTPInputMedia &_media, const MTPlong &_random_id) : vpeer(_peer), vmedia(_media), vrandom_id(_random_id) { } - uint32 size() const { - return vpeer.size() + vmedia.size() + vrandom_id.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vmedia.innerLength() + vrandom_id.innerLength(); } mtpTypeId type() const { return mtpc_geochats_sendMedia; @@ -13137,8 +13490,8 @@ public: MTPgeochats_createGeoChat(const MTPstring &_title, const MTPInputGeoPoint &_geo_point, const MTPstring &_address, const MTPstring &_venue) : vtitle(_title), vgeo_point(_geo_point), vaddress(_address), vvenue(_venue) { } - uint32 size() const { - return vtitle.size() + vgeo_point.size() + vaddress.size() + vvenue.size(); + uint32 innerLength() const { + return vtitle.innerLength() + vgeo_point.innerLength() + vaddress.innerLength() + vvenue.innerLength(); } mtpTypeId type() const { return mtpc_geochats_createGeoChat; @@ -13183,8 +13536,8 @@ public: MTPmessages_getDhConfig(MTPint _version, MTPint _random_length) : vversion(_version), vrandom_length(_random_length) { } - uint32 size() const { - return vversion.size() + vrandom_length.size(); + uint32 innerLength() const { + return vversion.innerLength() + vrandom_length.innerLength(); } mtpTypeId type() const { return mtpc_messages_getDhConfig; @@ -13226,8 +13579,8 @@ public: MTPmessages_requestEncryption(const MTPInputUser &_user_id, MTPint _random_id, const MTPbytes &_g_a) : vuser_id(_user_id), vrandom_id(_random_id), vg_a(_g_a) { } - uint32 size() const { - return vuser_id.size() + vrandom_id.size() + vg_a.size(); + uint32 innerLength() const { + return vuser_id.innerLength() + vrandom_id.innerLength() + vg_a.innerLength(); } mtpTypeId type() const { return mtpc_messages_requestEncryption; @@ -13271,8 +13624,8 @@ public: MTPmessages_acceptEncryption(const MTPInputEncryptedChat &_peer, const MTPbytes &_g_b, const MTPlong &_key_fingerprint) : vpeer(_peer), vg_b(_g_b), vkey_fingerprint(_key_fingerprint) { } - uint32 size() const { - return vpeer.size() + vg_b.size() + vkey_fingerprint.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vg_b.innerLength() + vkey_fingerprint.innerLength(); } mtpTypeId type() const { return mtpc_messages_acceptEncryption; @@ -13314,8 +13667,8 @@ public: MTPmessages_discardEncryption(MTPint _chat_id) : vchat_id(_chat_id) { } - uint32 size() const { - return vchat_id.size(); + uint32 innerLength() const { + return vchat_id.innerLength(); } mtpTypeId type() const { return mtpc_messages_discardEncryption; @@ -13354,8 +13707,8 @@ public: MTPmessages_setEncryptedTyping(const MTPInputEncryptedChat &_peer, MTPBool _typing) : vpeer(_peer), vtyping(_typing) { } - uint32 size() const { - return vpeer.size() + vtyping.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vtyping.innerLength(); } mtpTypeId type() const { return mtpc_messages_setEncryptedTyping; @@ -13396,8 +13749,8 @@ public: MTPmessages_readEncryptedHistory(const MTPInputEncryptedChat &_peer, MTPint _max_date) : vpeer(_peer), vmax_date(_max_date) { } - uint32 size() const { - return vpeer.size() + vmax_date.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vmax_date.innerLength(); } mtpTypeId type() const { return mtpc_messages_readEncryptedHistory; @@ -13439,8 +13792,8 @@ public: MTPmessages_sendEncrypted(const MTPInputEncryptedChat &_peer, const MTPlong &_random_id, const MTPbytes &_data) : vpeer(_peer), vrandom_id(_random_id), vdata(_data) { } - uint32 size() const { - return vpeer.size() + vrandom_id.size() + vdata.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vrandom_id.innerLength() + vdata.innerLength(); } mtpTypeId type() const { return mtpc_messages_sendEncrypted; @@ -13485,8 +13838,8 @@ public: MTPmessages_sendEncryptedFile(const MTPInputEncryptedChat &_peer, const MTPlong &_random_id, const MTPbytes &_data, const MTPInputEncryptedFile &_file) : vpeer(_peer), vrandom_id(_random_id), vdata(_data), vfile(_file) { } - uint32 size() const { - return vpeer.size() + vrandom_id.size() + vdata.size() + vfile.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vrandom_id.innerLength() + vdata.innerLength() + vfile.innerLength(); } mtpTypeId type() const { return mtpc_messages_sendEncryptedFile; @@ -13532,8 +13885,8 @@ public: MTPmessages_sendEncryptedService(const MTPInputEncryptedChat &_peer, const MTPlong &_random_id, const MTPbytes &_data) : vpeer(_peer), vrandom_id(_random_id), vdata(_data) { } - uint32 size() const { - return vpeer.size() + vrandom_id.size() + vdata.size(); + uint32 innerLength() const { + return vpeer.innerLength() + vrandom_id.innerLength() + vdata.innerLength(); } mtpTypeId type() const { return mtpc_messages_sendEncryptedService; @@ -13575,8 +13928,8 @@ public: MTPmessages_receivedQueue(MTPint _max_qts) : vmax_qts(_max_qts) { } - uint32 size() const { - return vmax_qts.size(); + uint32 innerLength() const { + return vmax_qts.innerLength(); } mtpTypeId type() const { return mtpc_messages_receivedQueue; @@ -13617,8 +13970,8 @@ public: MTPupload_saveBigFilePart(const MTPlong &_file_id, MTPint _file_part, MTPint _file_total_parts, const MTPbytes &_bytes) : vfile_id(_file_id), vfile_part(_file_part), vfile_total_parts(_file_total_parts), vbytes(_bytes) { } - uint32 size() const { - return vfile_id.size() + vfile_part.size() + vfile_total_parts.size() + vbytes.size(); + uint32 innerLength() const { + return vfile_id.innerLength() + vfile_part.innerLength() + vfile_total_parts.innerLength() + vbytes.innerLength(); } mtpTypeId type() const { return mtpc_upload_saveBigFilePart; @@ -13668,8 +14021,8 @@ public: MTPinitConnection(MTPint _api_id, const MTPstring &_device_model, const MTPstring &_system_version, const MTPstring &_app_version, const MTPstring &_lang_code, const TQueryType &_query) : vapi_id(_api_id), vdevice_model(_device_model), vsystem_version(_system_version), vapp_version(_app_version), vlang_code(_lang_code), vquery(_query) { } - uint32 size() const { - return vapi_id.size() + vdevice_model.size() + vsystem_version.size() + vapp_version.size() + vlang_code.size() + vquery.size(); + uint32 innerLength() const { + return vapi_id.innerLength() + vdevice_model.innerLength() + vsystem_version.innerLength() + vapp_version.innerLength() + vlang_code.innerLength() + vquery.innerLength(); } mtpTypeId type() const { return mtpc_initConnection; @@ -13712,7 +14065,7 @@ public: read(from, end, cons); } - uint32 size() const { + uint32 innerLength() const { return 0; } mtpTypeId type() const { @@ -13748,8 +14101,8 @@ public: MTPauth_sendSms(const MTPstring &_phone_number, const MTPstring &_phone_code_hash) : vphone_number(_phone_number), vphone_code_hash(_phone_code_hash) { } - uint32 size() const { - return vphone_number.size() + vphone_code_hash.size(); + uint32 innerLength() const { + return vphone_number.innerLength() + vphone_code_hash.innerLength(); } mtpTypeId type() const { return mtpc_auth_sendSms; @@ -13789,8 +14142,8 @@ public: MTPmessages_readMessageContents(const MTPVector &_id) : vid(_id) { } - uint32 size() const { - return vid.size(); + uint32 innerLength() const { + return vid.innerLength(); } mtpTypeId type() const { return mtpc_messages_readMessageContents; @@ -13828,8 +14181,8 @@ public: MTPaccount_checkUsername(const MTPstring &_username) : vusername(_username) { } - uint32 size() const { - return vusername.size(); + uint32 innerLength() const { + return vusername.innerLength(); } mtpTypeId type() const { return mtpc_account_checkUsername; @@ -13867,8 +14220,8 @@ public: MTPaccount_updateUsername(const MTPstring &_username) : vusername(_username) { } - uint32 size() const { - return vusername.size(); + uint32 innerLength() const { + return vusername.innerLength(); } mtpTypeId type() const { return mtpc_account_updateUsername; @@ -13907,8 +14260,8 @@ public: MTPcontacts_search(const MTPstring &_q, MTPint _limit) : vq(_q), vlimit(_limit) { } - uint32 size() const { - return vq.size() + vlimit.size(); + uint32 innerLength() const { + return vq.innerLength() + vlimit.innerLength(); } mtpTypeId type() const { return mtpc_contacts_search; @@ -13936,14 +14289,204 @@ public: } }; +class MTPaccount_getPrivacy { // RPC method 'account.getPrivacy' +public: + MTPInputPrivacyKey vkey; + + MTPaccount_getPrivacy() { + } + MTPaccount_getPrivacy(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_getPrivacy) { + read(from, end, cons); + } + MTPaccount_getPrivacy(const MTPInputPrivacyKey &_key) : vkey(_key) { + } + + uint32 innerLength() const { + return vkey.innerLength(); + } + mtpTypeId type() const { + return mtpc_account_getPrivacy; + } + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_getPrivacy) { + vkey.read(from, end); + } + void write(mtpBuffer &to) const { + vkey.write(to); + } + + typedef MTPaccount_PrivacyRules ResponseType; +}; +class MTPaccount_GetPrivacy : public MTPBoxed { +public: + MTPaccount_GetPrivacy() { + } + MTPaccount_GetPrivacy(const MTPaccount_getPrivacy &v) : MTPBoxed(v) { + } + MTPaccount_GetPrivacy(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) : MTPBoxed(from, end, cons) { + } + MTPaccount_GetPrivacy(const MTPInputPrivacyKey &_key) : MTPBoxed(MTPaccount_getPrivacy(_key)) { + } +}; + +class MTPaccount_setPrivacy { // RPC method 'account.setPrivacy' +public: + MTPInputPrivacyKey vkey; + MTPVector vrules; + + MTPaccount_setPrivacy() { + } + MTPaccount_setPrivacy(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_setPrivacy) { + read(from, end, cons); + } + MTPaccount_setPrivacy(const MTPInputPrivacyKey &_key, const MTPVector &_rules) : vkey(_key), vrules(_rules) { + } + + uint32 innerLength() const { + return vkey.innerLength() + vrules.innerLength(); + } + mtpTypeId type() const { + return mtpc_account_setPrivacy; + } + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_setPrivacy) { + vkey.read(from, end); + vrules.read(from, end); + } + void write(mtpBuffer &to) const { + vkey.write(to); + vrules.write(to); + } + + typedef MTPaccount_PrivacyRules ResponseType; +}; +class MTPaccount_SetPrivacy : public MTPBoxed { +public: + MTPaccount_SetPrivacy() { + } + MTPaccount_SetPrivacy(const MTPaccount_setPrivacy &v) : MTPBoxed(v) { + } + MTPaccount_SetPrivacy(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) : MTPBoxed(from, end, cons) { + } + MTPaccount_SetPrivacy(const MTPInputPrivacyKey &_key, const MTPVector &_rules) : MTPBoxed(MTPaccount_setPrivacy(_key, _rules)) { + } +}; + +class MTPaccount_deleteAccount { // RPC method 'account.deleteAccount' +public: + MTPstring vreason; + + MTPaccount_deleteAccount() { + } + MTPaccount_deleteAccount(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_deleteAccount) { + read(from, end, cons); + } + MTPaccount_deleteAccount(const MTPstring &_reason) : vreason(_reason) { + } + + uint32 innerLength() const { + return vreason.innerLength(); + } + mtpTypeId type() const { + return mtpc_account_deleteAccount; + } + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_deleteAccount) { + vreason.read(from, end); + } + void write(mtpBuffer &to) const { + vreason.write(to); + } + + typedef MTPBool ResponseType; +}; +class MTPaccount_DeleteAccount : public MTPBoxed { +public: + MTPaccount_DeleteAccount() { + } + MTPaccount_DeleteAccount(const MTPaccount_deleteAccount &v) : MTPBoxed(v) { + } + MTPaccount_DeleteAccount(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) : MTPBoxed(from, end, cons) { + } + MTPaccount_DeleteAccount(const MTPstring &_reason) : MTPBoxed(MTPaccount_deleteAccount(_reason)) { + } +}; + +class MTPaccount_getAccountTTL { // RPC method 'account.getAccountTTL' +public: + MTPaccount_getAccountTTL() { + } + MTPaccount_getAccountTTL(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_getAccountTTL) { + read(from, end, cons); + } + + uint32 innerLength() const { + return 0; + } + mtpTypeId type() const { + return mtpc_account_getAccountTTL; + } + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_getAccountTTL) { + } + void write(mtpBuffer &to) const { + } + + typedef MTPAccountDaysTTL ResponseType; +}; +class MTPaccount_GetAccountTTL : public MTPBoxed { +public: + MTPaccount_GetAccountTTL() { + } + MTPaccount_GetAccountTTL(const MTPaccount_getAccountTTL &v) : MTPBoxed(v) { + } + MTPaccount_GetAccountTTL(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) : MTPBoxed(from, end, cons) { + } +}; + +class MTPaccount_setAccountTTL { // RPC method 'account.setAccountTTL' +public: + MTPAccountDaysTTL vttl; + + MTPaccount_setAccountTTL() { + } + MTPaccount_setAccountTTL(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_setAccountTTL) { + read(from, end, cons); + } + MTPaccount_setAccountTTL(const MTPAccountDaysTTL &_ttl) : vttl(_ttl) { + } + + uint32 innerLength() const { + return vttl.innerLength(); + } + mtpTypeId type() const { + return mtpc_account_setAccountTTL; + } + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_setAccountTTL) { + vttl.read(from, end); + } + void write(mtpBuffer &to) const { + vttl.write(to); + } + + typedef MTPBool ResponseType; +}; +class MTPaccount_SetAccountTTL : public MTPBoxed { +public: + MTPaccount_SetAccountTTL() { + } + MTPaccount_SetAccountTTL(const MTPaccount_setAccountTTL &v) : MTPBoxed(v) { + } + MTPaccount_SetAccountTTL(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) : MTPBoxed(from, end, cons) { + } + MTPaccount_SetAccountTTL(const MTPAccountDaysTTL &_ttl) : MTPBoxed(MTPaccount_setAccountTTL(_ttl)) { + } +}; + // Inline methods definition inline MTPresPQ::MTPresPQ() : mtpDataOwner(new MTPDresPQ()) { } -inline uint32 MTPresPQ::size() const { +inline uint32 MTPresPQ::innerLength() const { const MTPDresPQ &v(c_resPQ()); - return v.vnonce.size() + v.vserver_nonce.size() + v.vpq.size() + v.vserver_public_key_fingerprints.size(); + return v.vnonce.innerLength() + v.vserver_nonce.innerLength() + v.vpq.innerLength() + v.vserver_public_key_fingerprints.innerLength(); } inline mtpTypeId MTPresPQ::type() const { return mtpc_resPQ; @@ -13974,9 +14517,9 @@ inline MTPresPQ MTP_resPQ(const MTPint128 &_nonce, const MTPint128 &_server_nonc inline MTPp_Q_inner_data::MTPp_Q_inner_data() : mtpDataOwner(new MTPDp_q_inner_data()) { } -inline uint32 MTPp_Q_inner_data::size() const { +inline uint32 MTPp_Q_inner_data::innerLength() const { const MTPDp_q_inner_data &v(c_p_q_inner_data()); - return v.vpq.size() + v.vp.size() + v.vq.size() + v.vnonce.size() + v.vserver_nonce.size() + v.vnew_nonce.size(); + return v.vpq.innerLength() + v.vp.innerLength() + v.vq.innerLength() + v.vnonce.innerLength() + v.vserver_nonce.innerLength() + v.vnew_nonce.innerLength(); } inline mtpTypeId MTPp_Q_inner_data::type() const { return mtpc_p_q_inner_data; @@ -14008,15 +14551,15 @@ inline MTPp_Q_inner_data MTP_p_q_inner_data(const MTPstring &_pq, const MTPstrin return MTPp_Q_inner_data(new MTPDp_q_inner_data(_pq, _p, _q, _nonce, _server_nonce, _new_nonce)); } -inline uint32 MTPserver_DH_Params::size() const { +inline uint32 MTPserver_DH_Params::innerLength() const { switch (_type) { case mtpc_server_DH_params_fail: { const MTPDserver_DH_params_fail &v(c_server_DH_params_fail()); - return v.vnonce.size() + v.vserver_nonce.size() + v.vnew_nonce_hash.size(); + return v.vnonce.innerLength() + v.vserver_nonce.innerLength() + v.vnew_nonce_hash.innerLength(); } case mtpc_server_DH_params_ok: { const MTPDserver_DH_params_ok &v(c_server_DH_params_ok()); - return v.vnonce.size() + v.vserver_nonce.size() + v.vencrypted_answer.size(); + return v.vnonce.innerLength() + v.vserver_nonce.innerLength() + v.vencrypted_answer.innerLength(); } } return 0; @@ -14082,9 +14625,9 @@ inline MTPserver_DH_Params MTP_server_DH_params_ok(const MTPint128 &_nonce, cons inline MTPserver_DH_inner_data::MTPserver_DH_inner_data() : mtpDataOwner(new MTPDserver_DH_inner_data()) { } -inline uint32 MTPserver_DH_inner_data::size() const { +inline uint32 MTPserver_DH_inner_data::innerLength() const { const MTPDserver_DH_inner_data &v(c_server_DH_inner_data()); - return v.vnonce.size() + v.vserver_nonce.size() + v.vg.size() + v.vdh_prime.size() + v.vg_a.size() + v.vserver_time.size(); + return v.vnonce.innerLength() + v.vserver_nonce.innerLength() + v.vg.innerLength() + v.vdh_prime.innerLength() + v.vg_a.innerLength() + v.vserver_time.innerLength(); } inline mtpTypeId MTPserver_DH_inner_data::type() const { return mtpc_server_DH_inner_data; @@ -14119,9 +14662,9 @@ inline MTPserver_DH_inner_data MTP_server_DH_inner_data(const MTPint128 &_nonce, inline MTPclient_DH_Inner_Data::MTPclient_DH_Inner_Data() : mtpDataOwner(new MTPDclient_DH_inner_data()) { } -inline uint32 MTPclient_DH_Inner_Data::size() const { +inline uint32 MTPclient_DH_Inner_Data::innerLength() const { const MTPDclient_DH_inner_data &v(c_client_DH_inner_data()); - return v.vnonce.size() + v.vserver_nonce.size() + v.vretry_id.size() + v.vg_b.size(); + return v.vnonce.innerLength() + v.vserver_nonce.innerLength() + v.vretry_id.innerLength() + v.vg_b.innerLength(); } inline mtpTypeId MTPclient_DH_Inner_Data::type() const { return mtpc_client_DH_inner_data; @@ -14149,19 +14692,19 @@ inline MTPclient_DH_Inner_Data MTP_client_DH_inner_data(const MTPint128 &_nonce, return MTPclient_DH_Inner_Data(new MTPDclient_DH_inner_data(_nonce, _server_nonce, _retry_id, _g_b)); } -inline uint32 MTPset_client_DH_params_answer::size() const { +inline uint32 MTPset_client_DH_params_answer::innerLength() const { switch (_type) { case mtpc_dh_gen_ok: { const MTPDdh_gen_ok &v(c_dh_gen_ok()); - return v.vnonce.size() + v.vserver_nonce.size() + v.vnew_nonce_hash1.size(); + return v.vnonce.innerLength() + v.vserver_nonce.innerLength() + v.vnew_nonce_hash1.innerLength(); } case mtpc_dh_gen_retry: { const MTPDdh_gen_retry &v(c_dh_gen_retry()); - return v.vnonce.size() + v.vserver_nonce.size() + v.vnew_nonce_hash2.size(); + return v.vnonce.innerLength() + v.vserver_nonce.innerLength() + v.vnew_nonce_hash2.innerLength(); } case mtpc_dh_gen_fail: { const MTPDdh_gen_fail &v(c_dh_gen_fail()); - return v.vnonce.size() + v.vserver_nonce.size() + v.vnew_nonce_hash3.size(); + return v.vnonce.innerLength() + v.vserver_nonce.innerLength() + v.vnew_nonce_hash3.innerLength(); } } return 0; @@ -14246,9 +14789,9 @@ inline MTPset_client_DH_params_answer MTP_dh_gen_fail(const MTPint128 &_nonce, c inline MTPmsgsAck::MTPmsgsAck() : mtpDataOwner(new MTPDmsgs_ack()) { } -inline uint32 MTPmsgsAck::size() const { +inline uint32 MTPmsgsAck::innerLength() const { const MTPDmsgs_ack &v(c_msgs_ack()); - return v.vmsg_ids.size(); + return v.vmsg_ids.innerLength(); } inline mtpTypeId MTPmsgsAck::type() const { return mtpc_msgs_ack; @@ -14270,15 +14813,15 @@ inline MTPmsgsAck MTP_msgs_ack(const MTPVector &_msg_ids) { return MTPmsgsAck(new MTPDmsgs_ack(_msg_ids)); } -inline uint32 MTPbadMsgNotification::size() const { +inline uint32 MTPbadMsgNotification::innerLength() const { switch (_type) { case mtpc_bad_msg_notification: { const MTPDbad_msg_notification &v(c_bad_msg_notification()); - return v.vbad_msg_id.size() + v.vbad_msg_seqno.size() + v.verror_code.size(); + return v.vbad_msg_id.innerLength() + v.vbad_msg_seqno.innerLength() + v.verror_code.innerLength(); } case mtpc_bad_server_salt: { const MTPDbad_server_salt &v(c_bad_server_salt()); - return v.vbad_msg_id.size() + v.vbad_msg_seqno.size() + v.verror_code.size() + v.vnew_server_salt.size(); + return v.vbad_msg_id.innerLength() + v.vbad_msg_seqno.innerLength() + v.verror_code.innerLength() + v.vnew_server_salt.innerLength(); } } return 0; @@ -14346,9 +14889,9 @@ inline MTPbadMsgNotification MTP_bad_server_salt(const MTPlong &_bad_msg_id, MTP inline MTPmsgsStateReq::MTPmsgsStateReq() : mtpDataOwner(new MTPDmsgs_state_req()) { } -inline uint32 MTPmsgsStateReq::size() const { +inline uint32 MTPmsgsStateReq::innerLength() const { const MTPDmsgs_state_req &v(c_msgs_state_req()); - return v.vmsg_ids.size(); + return v.vmsg_ids.innerLength(); } inline mtpTypeId MTPmsgsStateReq::type() const { return mtpc_msgs_state_req; @@ -14373,9 +14916,9 @@ inline MTPmsgsStateReq MTP_msgs_state_req(const MTPVector &_msg_ids) { inline MTPmsgsStateInfo::MTPmsgsStateInfo() : mtpDataOwner(new MTPDmsgs_state_info()) { } -inline uint32 MTPmsgsStateInfo::size() const { +inline uint32 MTPmsgsStateInfo::innerLength() const { const MTPDmsgs_state_info &v(c_msgs_state_info()); - return v.vreq_msg_id.size() + v.vinfo.size(); + return v.vreq_msg_id.innerLength() + v.vinfo.innerLength(); } inline mtpTypeId MTPmsgsStateInfo::type() const { return mtpc_msgs_state_info; @@ -14402,9 +14945,9 @@ inline MTPmsgsStateInfo MTP_msgs_state_info(const MTPlong &_req_msg_id, const MT inline MTPmsgsAllInfo::MTPmsgsAllInfo() : mtpDataOwner(new MTPDmsgs_all_info()) { } -inline uint32 MTPmsgsAllInfo::size() const { +inline uint32 MTPmsgsAllInfo::innerLength() const { const MTPDmsgs_all_info &v(c_msgs_all_info()); - return v.vmsg_ids.size() + v.vinfo.size(); + return v.vmsg_ids.innerLength() + v.vinfo.innerLength(); } inline mtpTypeId MTPmsgsAllInfo::type() const { return mtpc_msgs_all_info; @@ -14428,15 +14971,15 @@ inline MTPmsgsAllInfo MTP_msgs_all_info(const MTPVector &_msg_ids, cons return MTPmsgsAllInfo(new MTPDmsgs_all_info(_msg_ids, _info)); } -inline uint32 MTPmsgDetailedInfo::size() const { +inline uint32 MTPmsgDetailedInfo::innerLength() const { switch (_type) { case mtpc_msg_detailed_info: { const MTPDmsg_detailed_info &v(c_msg_detailed_info()); - return v.vmsg_id.size() + v.vanswer_msg_id.size() + v.vbytes.size() + v.vstatus.size(); + return v.vmsg_id.innerLength() + v.vanswer_msg_id.innerLength() + v.vbytes.innerLength() + v.vstatus.innerLength(); } case mtpc_msg_new_detailed_info: { const MTPDmsg_new_detailed_info &v(c_msg_new_detailed_info()); - return v.vanswer_msg_id.size() + v.vbytes.size() + v.vstatus.size(); + return v.vanswer_msg_id.innerLength() + v.vbytes.innerLength() + v.vstatus.innerLength(); } } return 0; @@ -14504,9 +15047,9 @@ inline MTPmsgDetailedInfo MTP_msg_new_detailed_info(const MTPlong &_answer_msg_i inline MTPmsgResendReq::MTPmsgResendReq() : mtpDataOwner(new MTPDmsg_resend_req()) { } -inline uint32 MTPmsgResendReq::size() const { +inline uint32 MTPmsgResendReq::innerLength() const { const MTPDmsg_resend_req &v(c_msg_resend_req()); - return v.vmsg_ids.size(); + return v.vmsg_ids.innerLength(); } inline mtpTypeId MTPmsgResendReq::type() const { return mtpc_msg_resend_req; @@ -14531,9 +15074,9 @@ inline MTPmsgResendReq MTP_msg_resend_req(const MTPVector &_msg_ids) { inline MTPrpcError::MTPrpcError() : mtpDataOwner(new MTPDrpc_error()) { } -inline uint32 MTPrpcError::size() const { +inline uint32 MTPrpcError::innerLength() const { const MTPDrpc_error &v(c_rpc_error()); - return v.verror_code.size() + v.verror_message.size(); + return v.verror_code.innerLength() + v.verror_message.innerLength(); } inline mtpTypeId MTPrpcError::type() const { return mtpc_rpc_error; @@ -14557,11 +15100,11 @@ inline MTPrpcError MTP_rpc_error(MTPint _error_code, const MTPstring &_error_mes return MTPrpcError(new MTPDrpc_error(_error_code, _error_message)); } -inline uint32 MTPrpcDropAnswer::size() const { +inline uint32 MTPrpcDropAnswer::innerLength() const { switch (_type) { case mtpc_rpc_answer_dropped: { const MTPDrpc_answer_dropped &v(c_rpc_answer_dropped()); - return v.vmsg_id.size() + v.vseq_no.size() + v.vbytes.size(); + return v.vmsg_id.innerLength() + v.vseq_no.innerLength() + v.vbytes.innerLength(); } } return 0; @@ -14618,9 +15161,9 @@ inline MTPrpcDropAnswer MTP_rpc_answer_dropped(const MTPlong &_msg_id, MTPint _s inline MTPfutureSalt::MTPfutureSalt() : mtpDataOwner(new MTPDfuture_salt()) { } -inline uint32 MTPfutureSalt::size() const { +inline uint32 MTPfutureSalt::innerLength() const { const MTPDfuture_salt &v(c_future_salt()); - return v.vvalid_since.size() + v.vvalid_until.size() + v.vsalt.size(); + return v.vvalid_since.innerLength() + v.vvalid_until.innerLength() + v.vsalt.innerLength(); } inline mtpTypeId MTPfutureSalt::type() const { return mtpc_future_salt; @@ -14649,9 +15192,9 @@ inline MTPfutureSalt MTP_future_salt(MTPint _valid_since, MTPint _valid_until, c inline MTPfutureSalts::MTPfutureSalts() : mtpDataOwner(new MTPDfuture_salts()) { } -inline uint32 MTPfutureSalts::size() const { +inline uint32 MTPfutureSalts::innerLength() const { const MTPDfuture_salts &v(c_future_salts()); - return v.vreq_msg_id.size() + v.vnow.size() + v.vsalts.size(); + return v.vreq_msg_id.innerLength() + v.vnow.innerLength() + v.vsalts.innerLength(); } inline mtpTypeId MTPfutureSalts::type() const { return mtpc_future_salts; @@ -14680,9 +15223,9 @@ inline MTPfutureSalts MTP_future_salts(const MTPlong &_req_msg_id, MTPint _now, inline MTPpong::MTPpong() : mtpDataOwner(new MTPDpong()) { } -inline uint32 MTPpong::size() const { +inline uint32 MTPpong::innerLength() const { const MTPDpong &v(c_pong()); - return v.vmsg_id.size() + v.vping_id.size(); + return v.vmsg_id.innerLength() + v.vping_id.innerLength(); } inline mtpTypeId MTPpong::type() const { return mtpc_pong; @@ -14706,15 +15249,15 @@ inline MTPpong MTP_pong(const MTPlong &_msg_id, const MTPlong &_ping_id) { return MTPpong(new MTPDpong(_msg_id, _ping_id)); } -inline uint32 MTPdestroySessionRes::size() const { +inline uint32 MTPdestroySessionRes::innerLength() const { switch (_type) { case mtpc_destroy_session_ok: { const MTPDdestroy_session_ok &v(c_destroy_session_ok()); - return v.vsession_id.size(); + return v.vsession_id.innerLength(); } case mtpc_destroy_session_none: { const MTPDdestroy_session_none &v(c_destroy_session_none()); - return v.vsession_id.size(); + return v.vsession_id.innerLength(); } } return 0; @@ -14772,9 +15315,9 @@ inline MTPdestroySessionRes MTP_destroy_session_none(const MTPlong &_session_id) inline MTPnewSession::MTPnewSession() : mtpDataOwner(new MTPDnew_session_created()) { } -inline uint32 MTPnewSession::size() const { +inline uint32 MTPnewSession::innerLength() const { const MTPDnew_session_created &v(c_new_session_created()); - return v.vfirst_msg_id.size() + v.vunique_id.size() + v.vserver_salt.size(); + return v.vfirst_msg_id.innerLength() + v.vunique_id.innerLength() + v.vserver_salt.innerLength(); } inline mtpTypeId MTPnewSession::type() const { return mtpc_new_session_created; @@ -14803,9 +15346,9 @@ inline MTPnewSession MTP_new_session_created(const MTPlong &_first_msg_id, const inline MTPhttpWait::MTPhttpWait() : mtpDataOwner(new MTPDhttp_wait()) { } -inline uint32 MTPhttpWait::size() const { +inline uint32 MTPhttpWait::innerLength() const { const MTPDhttp_wait &v(c_http_wait()); - return v.vmax_delay.size() + v.vwait_after.size() + v.vmax_wait.size(); + return v.vmax_delay.innerLength() + v.vwait_after.innerLength() + v.vmax_wait.innerLength(); } inline mtpTypeId MTPhttpWait::type() const { return mtpc_http_wait; @@ -14831,19 +15374,19 @@ inline MTPhttpWait MTP_http_wait(MTPint _max_delay, MTPint _wait_after, MTPint _ return MTPhttpWait(new MTPDhttp_wait(_max_delay, _wait_after, _max_wait)); } -inline uint32 MTPinputPeer::size() const { +inline uint32 MTPinputPeer::innerLength() const { switch (_type) { case mtpc_inputPeerContact: { const MTPDinputPeerContact &v(c_inputPeerContact()); - return v.vuser_id.size(); + return v.vuser_id.innerLength(); } case mtpc_inputPeerForeign: { const MTPDinputPeerForeign &v(c_inputPeerForeign()); - return v.vuser_id.size() + v.vaccess_hash.size(); + return v.vuser_id.innerLength() + v.vaccess_hash.innerLength(); } case mtpc_inputPeerChat: { const MTPDinputPeerChat &v(c_inputPeerChat()); - return v.vchat_id.size(); + return v.vchat_id.innerLength(); } } return 0; @@ -14925,15 +15468,15 @@ inline MTPinputPeer MTP_inputPeerChat(MTPint _chat_id) { return MTPinputPeer(new MTPDinputPeerChat(_chat_id)); } -inline uint32 MTPinputUser::size() const { +inline uint32 MTPinputUser::innerLength() const { switch (_type) { case mtpc_inputUserContact: { const MTPDinputUserContact &v(c_inputUserContact()); - return v.vuser_id.size(); + return v.vuser_id.innerLength(); } case mtpc_inputUserForeign: { const MTPDinputUserForeign &v(c_inputUserForeign()); - return v.vuser_id.size() + v.vaccess_hash.size(); + return v.vuser_id.innerLength() + v.vaccess_hash.innerLength(); } } return 0; @@ -15003,9 +15546,9 @@ inline MTPinputUser MTP_inputUserForeign(MTPint _user_id, const MTPlong &_access inline MTPinputContact::MTPinputContact() : mtpDataOwner(new MTPDinputPhoneContact()) { } -inline uint32 MTPinputContact::size() const { +inline uint32 MTPinputContact::innerLength() const { const MTPDinputPhoneContact &v(c_inputPhoneContact()); - return v.vclient_id.size() + v.vphone.size() + v.vfirst_name.size() + v.vlast_name.size(); + return v.vclient_id.innerLength() + v.vphone.innerLength() + v.vfirst_name.innerLength() + v.vlast_name.innerLength(); } inline mtpTypeId MTPinputContact::type() const { return mtpc_inputPhoneContact; @@ -15033,15 +15576,15 @@ inline MTPinputContact MTP_inputPhoneContact(const MTPlong &_client_id, const MT return MTPinputContact(new MTPDinputPhoneContact(_client_id, _phone, _first_name, _last_name)); } -inline uint32 MTPinputFile::size() const { +inline uint32 MTPinputFile::innerLength() const { switch (_type) { case mtpc_inputFile: { const MTPDinputFile &v(c_inputFile()); - return v.vid.size() + v.vparts.size() + v.vname.size() + v.vmd5_checksum.size(); + return v.vid.innerLength() + v.vparts.innerLength() + v.vname.innerLength() + v.vmd5_checksum.innerLength(); } case mtpc_inputFileBig: { const MTPDinputFileBig &v(c_inputFileBig()); - return v.vid.size() + v.vparts.size() + v.vname.size(); + return v.vid.innerLength() + v.vparts.innerLength() + v.vname.innerLength(); } } return 0; @@ -15106,55 +15649,55 @@ inline MTPinputFile MTP_inputFileBig(const MTPlong &_id, MTPint _parts, const MT return MTPinputFile(new MTPDinputFileBig(_id, _parts, _name)); } -inline uint32 MTPinputMedia::size() const { +inline uint32 MTPinputMedia::innerLength() const { switch (_type) { case mtpc_inputMediaUploadedPhoto: { const MTPDinputMediaUploadedPhoto &v(c_inputMediaUploadedPhoto()); - return v.vfile.size(); + return v.vfile.innerLength(); } case mtpc_inputMediaPhoto: { const MTPDinputMediaPhoto &v(c_inputMediaPhoto()); - return v.vid.size(); + return v.vid.innerLength(); } case mtpc_inputMediaGeoPoint: { const MTPDinputMediaGeoPoint &v(c_inputMediaGeoPoint()); - return v.vgeo_point.size(); + return v.vgeo_point.innerLength(); } case mtpc_inputMediaContact: { const MTPDinputMediaContact &v(c_inputMediaContact()); - return v.vphone_number.size() + v.vfirst_name.size() + v.vlast_name.size(); + return v.vphone_number.innerLength() + v.vfirst_name.innerLength() + v.vlast_name.innerLength(); } case mtpc_inputMediaUploadedVideo: { const MTPDinputMediaUploadedVideo &v(c_inputMediaUploadedVideo()); - return v.vfile.size() + v.vduration.size() + v.vw.size() + v.vh.size() + v.vmime_type.size(); + return v.vfile.innerLength() + v.vduration.innerLength() + v.vw.innerLength() + v.vh.innerLength() + v.vmime_type.innerLength(); } case mtpc_inputMediaUploadedThumbVideo: { const MTPDinputMediaUploadedThumbVideo &v(c_inputMediaUploadedThumbVideo()); - return v.vfile.size() + v.vthumb.size() + v.vduration.size() + v.vw.size() + v.vh.size() + v.vmime_type.size(); + return v.vfile.innerLength() + v.vthumb.innerLength() + v.vduration.innerLength() + v.vw.innerLength() + v.vh.innerLength() + v.vmime_type.innerLength(); } case mtpc_inputMediaVideo: { const MTPDinputMediaVideo &v(c_inputMediaVideo()); - return v.vid.size(); + return v.vid.innerLength(); } case mtpc_inputMediaUploadedAudio: { const MTPDinputMediaUploadedAudio &v(c_inputMediaUploadedAudio()); - return v.vfile.size() + v.vduration.size() + v.vmime_type.size(); + return v.vfile.innerLength() + v.vduration.innerLength() + v.vmime_type.innerLength(); } case mtpc_inputMediaAudio: { const MTPDinputMediaAudio &v(c_inputMediaAudio()); - return v.vid.size(); + return v.vid.innerLength(); } case mtpc_inputMediaUploadedDocument: { const MTPDinputMediaUploadedDocument &v(c_inputMediaUploadedDocument()); - return v.vfile.size() + v.vfile_name.size() + v.vmime_type.size(); + return v.vfile.innerLength() + v.vfile_name.innerLength() + v.vmime_type.innerLength(); } case mtpc_inputMediaUploadedThumbDocument: { const MTPDinputMediaUploadedThumbDocument &v(c_inputMediaUploadedThumbDocument()); - return v.vfile.size() + v.vthumb.size() + v.vfile_name.size() + v.vmime_type.size(); + return v.vfile.innerLength() + v.vthumb.innerLength() + v.vfile_name.innerLength() + v.vmime_type.innerLength(); } case mtpc_inputMediaDocument: { const MTPDinputMediaDocument &v(c_inputMediaDocument()); - return v.vid.size(); + return v.vid.innerLength(); } } return 0; @@ -15400,15 +15943,15 @@ inline MTPinputMedia MTP_inputMediaDocument(const MTPInputDocument &_id) { return MTPinputMedia(new MTPDinputMediaDocument(_id)); } -inline uint32 MTPinputChatPhoto::size() const { +inline uint32 MTPinputChatPhoto::innerLength() const { switch (_type) { case mtpc_inputChatUploadedPhoto: { const MTPDinputChatUploadedPhoto &v(c_inputChatUploadedPhoto()); - return v.vfile.size() + v.vcrop.size(); + return v.vfile.innerLength() + v.vcrop.innerLength(); } case mtpc_inputChatPhoto: { const MTPDinputChatPhoto &v(c_inputChatPhoto()); - return v.vid.size() + v.vcrop.size(); + return v.vid.innerLength() + v.vcrop.innerLength(); } } return 0; @@ -15472,11 +16015,11 @@ inline MTPinputChatPhoto MTP_inputChatPhoto(const MTPInputPhoto &_id, const MTPI return MTPinputChatPhoto(new MTPDinputChatPhoto(_id, _crop)); } -inline uint32 MTPinputGeoPoint::size() const { +inline uint32 MTPinputGeoPoint::innerLength() const { switch (_type) { case mtpc_inputGeoPoint: { const MTPDinputGeoPoint &v(c_inputGeoPoint()); - return v.vlat.size() + v.vlong.size(); + return v.vlat.innerLength() + v.vlong.innerLength(); } } return 0; @@ -15523,11 +16066,11 @@ inline MTPinputGeoPoint MTP_inputGeoPoint(const MTPdouble &_lat, const MTPdouble return MTPinputGeoPoint(new MTPDinputGeoPoint(_lat, _long)); } -inline uint32 MTPinputPhoto::size() const { +inline uint32 MTPinputPhoto::innerLength() const { switch (_type) { case mtpc_inputPhoto: { const MTPDinputPhoto &v(c_inputPhoto()); - return v.vid.size() + v.vaccess_hash.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength(); } } return 0; @@ -15574,11 +16117,11 @@ inline MTPinputPhoto MTP_inputPhoto(const MTPlong &_id, const MTPlong &_access_h return MTPinputPhoto(new MTPDinputPhoto(_id, _access_hash)); } -inline uint32 MTPinputVideo::size() const { +inline uint32 MTPinputVideo::innerLength() const { switch (_type) { case mtpc_inputVideo: { const MTPDinputVideo &v(c_inputVideo()); - return v.vid.size() + v.vaccess_hash.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength(); } } return 0; @@ -15625,27 +16168,27 @@ inline MTPinputVideo MTP_inputVideo(const MTPlong &_id, const MTPlong &_access_h return MTPinputVideo(new MTPDinputVideo(_id, _access_hash)); } -inline uint32 MTPinputFileLocation::size() const { +inline uint32 MTPinputFileLocation::innerLength() const { switch (_type) { case mtpc_inputFileLocation: { const MTPDinputFileLocation &v(c_inputFileLocation()); - return v.vvolume_id.size() + v.vlocal_id.size() + v.vsecret.size(); + return v.vvolume_id.innerLength() + v.vlocal_id.innerLength() + v.vsecret.innerLength(); } case mtpc_inputVideoFileLocation: { const MTPDinputVideoFileLocation &v(c_inputVideoFileLocation()); - return v.vid.size() + v.vaccess_hash.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength(); } case mtpc_inputEncryptedFileLocation: { const MTPDinputEncryptedFileLocation &v(c_inputEncryptedFileLocation()); - return v.vid.size() + v.vaccess_hash.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength(); } case mtpc_inputAudioFileLocation: { const MTPDinputAudioFileLocation &v(c_inputAudioFileLocation()); - return v.vid.size() + v.vaccess_hash.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength(); } case mtpc_inputDocumentFileLocation: { const MTPDinputDocumentFileLocation &v(c_inputDocumentFileLocation()); - return v.vid.size() + v.vaccess_hash.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength(); } } return 0; @@ -15757,11 +16300,11 @@ inline MTPinputFileLocation MTP_inputDocumentFileLocation(const MTPlong &_id, co return MTPinputFileLocation(new MTPDinputDocumentFileLocation(_id, _access_hash)); } -inline uint32 MTPinputPhotoCrop::size() const { +inline uint32 MTPinputPhotoCrop::innerLength() const { switch (_type) { case mtpc_inputPhotoCrop: { const MTPDinputPhotoCrop &v(c_inputPhotoCrop()); - return v.vcrop_left.size() + v.vcrop_top.size() + v.vcrop_width.size(); + return v.vcrop_left.innerLength() + v.vcrop_top.innerLength() + v.vcrop_width.innerLength(); } } return 0; @@ -15813,9 +16356,9 @@ inline MTPinputPhotoCrop MTP_inputPhotoCrop(const MTPdouble &_crop_left, const M inline MTPinputAppEvent::MTPinputAppEvent() : mtpDataOwner(new MTPDinputAppEvent()) { } -inline uint32 MTPinputAppEvent::size() const { +inline uint32 MTPinputAppEvent::innerLength() const { const MTPDinputAppEvent &v(c_inputAppEvent()); - return v.vtime.size() + v.vtype.size() + v.vpeer.size() + v.vdata.size(); + return v.vtime.innerLength() + v.vtype.innerLength() + v.vpeer.innerLength() + v.vdata.innerLength(); } inline mtpTypeId MTPinputAppEvent::type() const { return mtpc_inputAppEvent; @@ -15843,15 +16386,15 @@ inline MTPinputAppEvent MTP_inputAppEvent(const MTPdouble &_time, const MTPstrin return MTPinputAppEvent(new MTPDinputAppEvent(_time, _type, _peer, _data)); } -inline uint32 MTPpeer::size() const { +inline uint32 MTPpeer::innerLength() const { switch (_type) { case mtpc_peerUser: { const MTPDpeerUser &v(c_peerUser()); - return v.vuser_id.size(); + return v.vuser_id.innerLength(); } case mtpc_peerChat: { const MTPDpeerChat &v(c_peerChat()); - return v.vchat_id.size(); + return v.vchat_id.innerLength(); } } return 0; @@ -15906,7 +16449,7 @@ inline MTPpeer MTP_peerChat(MTPint _chat_id) { return MTPpeer(new MTPDpeerChat(_chat_id)); } -inline uint32 MTPstorage_fileType::size() const { +inline uint32 MTPstorage_fileType::innerLength() const { return 0; } inline mtpTypeId MTPstorage_fileType::type() const { @@ -15978,15 +16521,15 @@ inline MTPstorage_fileType MTP_storage_fileWebp() { return MTPstorage_fileType(mtpc_storage_fileWebp); } -inline uint32 MTPfileLocation::size() const { +inline uint32 MTPfileLocation::innerLength() const { switch (_type) { case mtpc_fileLocationUnavailable: { const MTPDfileLocationUnavailable &v(c_fileLocationUnavailable()); - return v.vvolume_id.size() + v.vlocal_id.size() + v.vsecret.size(); + return v.vvolume_id.innerLength() + v.vlocal_id.innerLength() + v.vsecret.innerLength(); } case mtpc_fileLocation: { const MTPDfileLocation &v(c_fileLocation()); - return v.vdc_id.size() + v.vvolume_id.size() + v.vlocal_id.size() + v.vsecret.size(); + return v.vdc_id.innerLength() + v.vvolume_id.innerLength() + v.vlocal_id.innerLength() + v.vsecret.innerLength(); } } return 0; @@ -16051,31 +16594,31 @@ inline MTPfileLocation MTP_fileLocation(MTPint _dc_id, const MTPlong &_volume_id return MTPfileLocation(new MTPDfileLocation(_dc_id, _volume_id, _local_id, _secret)); } -inline uint32 MTPuser::size() const { +inline uint32 MTPuser::innerLength() const { switch (_type) { case mtpc_userEmpty: { const MTPDuserEmpty &v(c_userEmpty()); - return v.vid.size(); + return v.vid.innerLength(); } case mtpc_userSelf: { const MTPDuserSelf &v(c_userSelf()); - return v.vid.size() + v.vfirst_name.size() + v.vlast_name.size() + v.vusername.size() + v.vphone.size() + v.vphoto.size() + v.vstatus.size() + v.vinactive.size(); + return v.vid.innerLength() + v.vfirst_name.innerLength() + v.vlast_name.innerLength() + v.vusername.innerLength() + v.vphone.innerLength() + v.vphoto.innerLength() + v.vstatus.innerLength() + v.vinactive.innerLength(); } case mtpc_userContact: { const MTPDuserContact &v(c_userContact()); - return v.vid.size() + v.vfirst_name.size() + v.vlast_name.size() + v.vusername.size() + v.vaccess_hash.size() + v.vphone.size() + v.vphoto.size() + v.vstatus.size(); + return v.vid.innerLength() + v.vfirst_name.innerLength() + v.vlast_name.innerLength() + v.vusername.innerLength() + v.vaccess_hash.innerLength() + v.vphone.innerLength() + v.vphoto.innerLength() + v.vstatus.innerLength(); } case mtpc_userRequest: { const MTPDuserRequest &v(c_userRequest()); - return v.vid.size() + v.vfirst_name.size() + v.vlast_name.size() + v.vusername.size() + v.vaccess_hash.size() + v.vphone.size() + v.vphoto.size() + v.vstatus.size(); + return v.vid.innerLength() + v.vfirst_name.innerLength() + v.vlast_name.innerLength() + v.vusername.innerLength() + v.vaccess_hash.innerLength() + v.vphone.innerLength() + v.vphoto.innerLength() + v.vstatus.innerLength(); } case mtpc_userForeign: { const MTPDuserForeign &v(c_userForeign()); - return v.vid.size() + v.vfirst_name.size() + v.vlast_name.size() + v.vusername.size() + v.vaccess_hash.size() + v.vphoto.size() + v.vstatus.size(); + return v.vid.innerLength() + v.vfirst_name.innerLength() + v.vlast_name.innerLength() + v.vusername.innerLength() + v.vaccess_hash.innerLength() + v.vphoto.innerLength() + v.vstatus.innerLength(); } case mtpc_userDeleted: { const MTPDuserDeleted &v(c_userDeleted()); - return v.vid.size() + v.vfirst_name.size() + v.vlast_name.size() + v.vusername.size(); + return v.vid.innerLength() + v.vfirst_name.innerLength() + v.vlast_name.innerLength() + v.vusername.innerLength(); } } return 0; @@ -16250,11 +16793,11 @@ inline MTPuser MTP_userDeleted(MTPint _id, const MTPstring &_first_name, const M return MTPuser(new MTPDuserDeleted(_id, _first_name, _last_name, _username)); } -inline uint32 MTPuserProfilePhoto::size() const { +inline uint32 MTPuserProfilePhoto::innerLength() const { switch (_type) { case mtpc_userProfilePhoto: { const MTPDuserProfilePhoto &v(c_userProfilePhoto()); - return v.vphoto_id.size() + v.vphoto_small.size() + v.vphoto_big.size(); + return v.vphoto_id.innerLength() + v.vphoto_small.innerLength() + v.vphoto_big.innerLength(); } } return 0; @@ -16303,15 +16846,15 @@ inline MTPuserProfilePhoto MTP_userProfilePhoto(const MTPlong &_photo_id, const return MTPuserProfilePhoto(new MTPDuserProfilePhoto(_photo_id, _photo_small, _photo_big)); } -inline uint32 MTPuserStatus::size() const { +inline uint32 MTPuserStatus::innerLength() const { switch (_type) { case mtpc_userStatusOnline: { const MTPDuserStatusOnline &v(c_userStatusOnline()); - return v.vexpires.size(); + return v.vexpires.innerLength(); } case mtpc_userStatusOffline: { const MTPDuserStatusOffline &v(c_userStatusOffline()); - return v.vwas_online.size(); + return v.vwas_online.innerLength(); } } return 0; @@ -16334,6 +16877,9 @@ inline void MTPuserStatus::read(const mtpPrime *&from, const mtpPrime *end, mtpT MTPDuserStatusOffline &v(_userStatusOffline()); v.vwas_online.read(from, end); } break; + case mtpc_userStatusRecently: _type = cons; break; + case mtpc_userStatusLastWeek: _type = cons; break; + case mtpc_userStatusLastMonth: _type = cons; break; default: throw mtpErrorUnexpected(cons, "MTPuserStatus"); } } @@ -16354,6 +16900,9 @@ inline MTPuserStatus::MTPuserStatus(mtpTypeId type) : mtpDataOwner(0), _type(typ case mtpc_userStatusEmpty: break; case mtpc_userStatusOnline: setData(new MTPDuserStatusOnline()); break; case mtpc_userStatusOffline: setData(new MTPDuserStatusOffline()); break; + case mtpc_userStatusRecently: break; + case mtpc_userStatusLastWeek: break; + case mtpc_userStatusLastMonth: break; default: throw mtpErrorBadTypeId(type, "MTPuserStatus"); } } @@ -16370,24 +16919,33 @@ inline MTPuserStatus MTP_userStatusOnline(MTPint _expires) { inline MTPuserStatus MTP_userStatusOffline(MTPint _was_online) { return MTPuserStatus(new MTPDuserStatusOffline(_was_online)); } +inline MTPuserStatus MTP_userStatusRecently() { + return MTPuserStatus(mtpc_userStatusRecently); +} +inline MTPuserStatus MTP_userStatusLastWeek() { + return MTPuserStatus(mtpc_userStatusLastWeek); +} +inline MTPuserStatus MTP_userStatusLastMonth() { + return MTPuserStatus(mtpc_userStatusLastMonth); +} -inline uint32 MTPchat::size() const { +inline uint32 MTPchat::innerLength() const { switch (_type) { case mtpc_chatEmpty: { const MTPDchatEmpty &v(c_chatEmpty()); - return v.vid.size(); + return v.vid.innerLength(); } case mtpc_chat: { const MTPDchat &v(c_chat()); - return v.vid.size() + v.vtitle.size() + v.vphoto.size() + v.vparticipants_count.size() + v.vdate.size() + v.vleft.size() + v.vversion.size(); + return v.vid.innerLength() + v.vtitle.innerLength() + v.vphoto.innerLength() + v.vparticipants_count.innerLength() + v.vdate.innerLength() + v.vleft.innerLength() + v.vversion.innerLength(); } case mtpc_chatForbidden: { const MTPDchatForbidden &v(c_chatForbidden()); - return v.vid.size() + v.vtitle.size() + v.vdate.size(); + return v.vid.innerLength() + v.vtitle.innerLength() + v.vdate.innerLength(); } case mtpc_geoChat: { const MTPDgeoChat &v(c_geoChat()); - return v.vid.size() + v.vaccess_hash.size() + v.vtitle.size() + v.vaddress.size() + v.vvenue.size() + v.vgeo.size() + v.vphoto.size() + v.vparticipants_count.size() + v.vdate.size() + v.vchecked_in.size() + v.vversion.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength() + v.vtitle.innerLength() + v.vaddress.innerLength() + v.vvenue.innerLength() + v.vgeo.innerLength() + v.vphoto.innerLength() + v.vparticipants_count.innerLength() + v.vdate.innerLength() + v.vchecked_in.innerLength() + v.vversion.innerLength(); } } return 0; @@ -16511,9 +17069,9 @@ inline MTPchat MTP_geoChat(MTPint _id, const MTPlong &_access_hash, const MTPstr inline MTPchatFull::MTPchatFull() : mtpDataOwner(new MTPDchatFull()) { } -inline uint32 MTPchatFull::size() const { +inline uint32 MTPchatFull::innerLength() const { const MTPDchatFull &v(c_chatFull()); - return v.vid.size() + v.vparticipants.size() + v.vchat_photo.size() + v.vnotify_settings.size(); + return v.vid.innerLength() + v.vparticipants.innerLength() + v.vchat_photo.innerLength() + v.vnotify_settings.innerLength(); } inline mtpTypeId MTPchatFull::type() const { return mtpc_chatFull; @@ -16544,9 +17102,9 @@ inline MTPchatFull MTP_chatFull(MTPint _id, const MTPChatParticipants &_particip inline MTPchatParticipant::MTPchatParticipant() : mtpDataOwner(new MTPDchatParticipant()) { } -inline uint32 MTPchatParticipant::size() const { +inline uint32 MTPchatParticipant::innerLength() const { const MTPDchatParticipant &v(c_chatParticipant()); - return v.vuser_id.size() + v.vinviter_id.size() + v.vdate.size(); + return v.vuser_id.innerLength() + v.vinviter_id.innerLength() + v.vdate.innerLength(); } inline mtpTypeId MTPchatParticipant::type() const { return mtpc_chatParticipant; @@ -16572,15 +17130,15 @@ inline MTPchatParticipant MTP_chatParticipant(MTPint _user_id, MTPint _inviter_i return MTPchatParticipant(new MTPDchatParticipant(_user_id, _inviter_id, _date)); } -inline uint32 MTPchatParticipants::size() const { +inline uint32 MTPchatParticipants::innerLength() const { switch (_type) { case mtpc_chatParticipantsForbidden: { const MTPDchatParticipantsForbidden &v(c_chatParticipantsForbidden()); - return v.vchat_id.size(); + return v.vchat_id.innerLength(); } case mtpc_chatParticipants: { const MTPDchatParticipants &v(c_chatParticipants()); - return v.vchat_id.size() + v.vadmin_id.size() + v.vparticipants.size() + v.vversion.size(); + return v.vchat_id.innerLength() + v.vadmin_id.innerLength() + v.vparticipants.innerLength() + v.vversion.innerLength(); } } return 0; @@ -16641,11 +17199,11 @@ inline MTPchatParticipants MTP_chatParticipants(MTPint _chat_id, MTPint _admin_i return MTPchatParticipants(new MTPDchatParticipants(_chat_id, _admin_id, _participants, _version)); } -inline uint32 MTPchatPhoto::size() const { +inline uint32 MTPchatPhoto::innerLength() const { switch (_type) { case mtpc_chatPhoto: { const MTPDchatPhoto &v(c_chatPhoto()); - return v.vphoto_small.size() + v.vphoto_big.size(); + return v.vphoto_small.innerLength() + v.vphoto_big.innerLength(); } } return 0; @@ -16692,23 +17250,23 @@ inline MTPchatPhoto MTP_chatPhoto(const MTPFileLocation &_photo_small, const MTP return MTPchatPhoto(new MTPDchatPhoto(_photo_small, _photo_big)); } -inline uint32 MTPmessage::size() const { +inline uint32 MTPmessage::innerLength() const { switch (_type) { case mtpc_messageEmpty: { const MTPDmessageEmpty &v(c_messageEmpty()); - return v.vid.size(); + return v.vid.innerLength(); } case mtpc_message: { const MTPDmessage &v(c_message()); - return v.vflags.size() + v.vid.size() + v.vfrom_id.size() + v.vto_id.size() + v.vdate.size() + v.vmessage.size() + v.vmedia.size(); + return v.vflags.innerLength() + v.vid.innerLength() + v.vfrom_id.innerLength() + v.vto_id.innerLength() + v.vdate.innerLength() + v.vmessage.innerLength() + v.vmedia.innerLength(); } case mtpc_messageForwarded: { const MTPDmessageForwarded &v(c_messageForwarded()); - return v.vflags.size() + v.vid.size() + v.vfwd_from_id.size() + v.vfwd_date.size() + v.vfrom_id.size() + v.vto_id.size() + v.vdate.size() + v.vmessage.size() + v.vmedia.size(); + return v.vflags.innerLength() + v.vid.innerLength() + v.vfwd_from_id.innerLength() + v.vfwd_date.innerLength() + v.vfrom_id.innerLength() + v.vto_id.innerLength() + v.vdate.innerLength() + v.vmessage.innerLength() + v.vmedia.innerLength(); } case mtpc_messageService: { const MTPDmessageService &v(c_messageService()); - return v.vflags.size() + v.vid.size() + v.vfrom_id.size() + v.vto_id.size() + v.vdate.size() + v.vaction.size(); + return v.vflags.innerLength() + v.vid.innerLength() + v.vfrom_id.innerLength() + v.vto_id.innerLength() + v.vdate.innerLength() + v.vaction.innerLength(); } } return 0; @@ -16831,35 +17389,35 @@ inline MTPmessage MTP_messageService(MTPint _flags, MTPint _id, MTPint _from_id, return MTPmessage(new MTPDmessageService(_flags, _id, _from_id, _to_id, _date, _action)); } -inline uint32 MTPmessageMedia::size() const { +inline uint32 MTPmessageMedia::innerLength() const { switch (_type) { case mtpc_messageMediaPhoto: { const MTPDmessageMediaPhoto &v(c_messageMediaPhoto()); - return v.vphoto.size(); + return v.vphoto.innerLength(); } case mtpc_messageMediaVideo: { const MTPDmessageMediaVideo &v(c_messageMediaVideo()); - return v.vvideo.size(); + return v.vvideo.innerLength(); } case mtpc_messageMediaGeo: { const MTPDmessageMediaGeo &v(c_messageMediaGeo()); - return v.vgeo.size(); + return v.vgeo.innerLength(); } case mtpc_messageMediaContact: { const MTPDmessageMediaContact &v(c_messageMediaContact()); - return v.vphone_number.size() + v.vfirst_name.size() + v.vlast_name.size() + v.vuser_id.size(); + return v.vphone_number.innerLength() + v.vfirst_name.innerLength() + v.vlast_name.innerLength() + v.vuser_id.innerLength(); } case mtpc_messageMediaUnsupported: { const MTPDmessageMediaUnsupported &v(c_messageMediaUnsupported()); - return v.vbytes.size(); + return v.vbytes.innerLength(); } case mtpc_messageMediaDocument: { const MTPDmessageMediaDocument &v(c_messageMediaDocument()); - return v.vdocument.size(); + return v.vdocument.innerLength(); } case mtpc_messageMediaAudio: { const MTPDmessageMediaAudio &v(c_messageMediaAudio()); - return v.vaudio.size(); + return v.vaudio.innerLength(); } } return 0; @@ -17000,31 +17558,31 @@ inline MTPmessageMedia MTP_messageMediaAudio(const MTPAudio &_audio) { return MTPmessageMedia(new MTPDmessageMediaAudio(_audio)); } -inline uint32 MTPmessageAction::size() const { +inline uint32 MTPmessageAction::innerLength() const { switch (_type) { case mtpc_messageActionChatCreate: { const MTPDmessageActionChatCreate &v(c_messageActionChatCreate()); - return v.vtitle.size() + v.vusers.size(); + return v.vtitle.innerLength() + v.vusers.innerLength(); } case mtpc_messageActionChatEditTitle: { const MTPDmessageActionChatEditTitle &v(c_messageActionChatEditTitle()); - return v.vtitle.size(); + return v.vtitle.innerLength(); } case mtpc_messageActionChatEditPhoto: { const MTPDmessageActionChatEditPhoto &v(c_messageActionChatEditPhoto()); - return v.vphoto.size(); + return v.vphoto.innerLength(); } case mtpc_messageActionChatAddUser: { const MTPDmessageActionChatAddUser &v(c_messageActionChatAddUser()); - return v.vuser_id.size(); + return v.vuser_id.innerLength(); } case mtpc_messageActionChatDeleteUser: { const MTPDmessageActionChatDeleteUser &v(c_messageActionChatDeleteUser()); - return v.vuser_id.size(); + return v.vuser_id.innerLength(); } case mtpc_messageActionGeoChatCreate: { const MTPDmessageActionGeoChatCreate &v(c_messageActionGeoChatCreate()); - return v.vtitle.size() + v.vaddress.size(); + return v.vtitle.innerLength() + v.vaddress.innerLength(); } } return 0; @@ -17161,9 +17719,9 @@ inline MTPmessageAction MTP_messageActionGeoChatCheckin() { inline MTPdialog::MTPdialog() : mtpDataOwner(new MTPDdialog()) { } -inline uint32 MTPdialog::size() const { +inline uint32 MTPdialog::innerLength() const { const MTPDdialog &v(c_dialog()); - return v.vpeer.size() + v.vtop_message.size() + v.vunread_count.size() + v.vnotify_settings.size(); + return v.vpeer.innerLength() + v.vtop_message.innerLength() + v.vunread_count.innerLength() + v.vnotify_settings.innerLength(); } inline mtpTypeId MTPdialog::type() const { return mtpc_dialog; @@ -17191,15 +17749,15 @@ inline MTPdialog MTP_dialog(const MTPPeer &_peer, MTPint _top_message, MTPint _u return MTPdialog(new MTPDdialog(_peer, _top_message, _unread_count, _notify_settings)); } -inline uint32 MTPphoto::size() const { +inline uint32 MTPphoto::innerLength() const { switch (_type) { case mtpc_photoEmpty: { const MTPDphotoEmpty &v(c_photoEmpty()); - return v.vid.size(); + return v.vid.innerLength(); } case mtpc_photo: { const MTPDphoto &v(c_photo()); - return v.vid.size() + v.vaccess_hash.size() + v.vuser_id.size() + v.vdate.size() + v.vcaption.size() + v.vgeo.size() + v.vsizes.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength() + v.vuser_id.innerLength() + v.vdate.innerLength() + v.vcaption.innerLength() + v.vgeo.innerLength() + v.vsizes.innerLength(); } } return 0; @@ -17266,19 +17824,19 @@ inline MTPphoto MTP_photo(const MTPlong &_id, const MTPlong &_access_hash, MTPin return MTPphoto(new MTPDphoto(_id, _access_hash, _user_id, _date, _caption, _geo, _sizes)); } -inline uint32 MTPphotoSize::size() const { +inline uint32 MTPphotoSize::innerLength() const { switch (_type) { case mtpc_photoSizeEmpty: { const MTPDphotoSizeEmpty &v(c_photoSizeEmpty()); - return v.vtype.size(); + return v.vtype.innerLength(); } case mtpc_photoSize: { const MTPDphotoSize &v(c_photoSize()); - return v.vtype.size() + v.vlocation.size() + v.vw.size() + v.vh.size() + v.vsize.size(); + return v.vtype.innerLength() + v.vlocation.innerLength() + v.vw.innerLength() + v.vh.innerLength() + v.vsize.innerLength(); } case mtpc_photoCachedSize: { const MTPDphotoCachedSize &v(c_photoCachedSize()); - return v.vtype.size() + v.vlocation.size() + v.vw.size() + v.vh.size() + v.vbytes.size(); + return v.vtype.innerLength() + v.vlocation.innerLength() + v.vw.innerLength() + v.vh.innerLength() + v.vbytes.innerLength(); } } return 0; @@ -17364,15 +17922,15 @@ inline MTPphotoSize MTP_photoCachedSize(const MTPstring &_type, const MTPFileLoc return MTPphotoSize(new MTPDphotoCachedSize(_type, _location, _w, _h, _bytes)); } -inline uint32 MTPvideo::size() const { +inline uint32 MTPvideo::innerLength() const { switch (_type) { case mtpc_videoEmpty: { const MTPDvideoEmpty &v(c_videoEmpty()); - return v.vid.size(); + return v.vid.innerLength(); } case mtpc_video: { const MTPDvideo &v(c_video()); - return v.vid.size() + v.vaccess_hash.size() + v.vuser_id.size() + v.vdate.size() + v.vcaption.size() + v.vduration.size() + v.vmime_type.size() + v.vsize.size() + v.vthumb.size() + v.vdc_id.size() + v.vw.size() + v.vh.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength() + v.vuser_id.innerLength() + v.vdate.innerLength() + v.vcaption.innerLength() + v.vduration.innerLength() + v.vmime_type.innerLength() + v.vsize.innerLength() + v.vthumb.innerLength() + v.vdc_id.innerLength() + v.vw.innerLength() + v.vh.innerLength(); } } return 0; @@ -17449,11 +18007,11 @@ inline MTPvideo MTP_video(const MTPlong &_id, const MTPlong &_access_hash, MTPin return MTPvideo(new MTPDvideo(_id, _access_hash, _user_id, _date, _caption, _duration, _mime_type, _size, _thumb, _dc_id, _w, _h)); } -inline uint32 MTPgeoPoint::size() const { +inline uint32 MTPgeoPoint::innerLength() const { switch (_type) { case mtpc_geoPoint: { const MTPDgeoPoint &v(c_geoPoint()); - return v.vlong.size() + v.vlat.size(); + return v.vlong.innerLength() + v.vlat.innerLength(); } } return 0; @@ -17503,9 +18061,9 @@ inline MTPgeoPoint MTP_geoPoint(const MTPdouble &_long, const MTPdouble &_lat) { inline MTPauth_checkedPhone::MTPauth_checkedPhone() : mtpDataOwner(new MTPDauth_checkedPhone()) { } -inline uint32 MTPauth_checkedPhone::size() const { +inline uint32 MTPauth_checkedPhone::innerLength() const { const MTPDauth_checkedPhone &v(c_auth_checkedPhone()); - return v.vphone_registered.size() + v.vphone_invited.size(); + return v.vphone_registered.innerLength() + v.vphone_invited.innerLength(); } inline mtpTypeId MTPauth_checkedPhone::type() const { return mtpc_auth_checkedPhone; @@ -17529,15 +18087,15 @@ inline MTPauth_checkedPhone MTP_auth_checkedPhone(MTPBool _phone_registered, MTP return MTPauth_checkedPhone(new MTPDauth_checkedPhone(_phone_registered, _phone_invited)); } -inline uint32 MTPauth_sentCode::size() const { +inline uint32 MTPauth_sentCode::innerLength() const { switch (_type) { case mtpc_auth_sentCode: { const MTPDauth_sentCode &v(c_auth_sentCode()); - return v.vphone_registered.size() + v.vphone_code_hash.size() + v.vsend_call_timeout.size() + v.vis_password.size(); + return v.vphone_registered.innerLength() + v.vphone_code_hash.innerLength() + v.vsend_call_timeout.innerLength() + v.vis_password.innerLength(); } case mtpc_auth_sentAppCode: { const MTPDauth_sentAppCode &v(c_auth_sentAppCode()); - return v.vphone_registered.size() + v.vphone_code_hash.size() + v.vsend_call_timeout.size() + v.vis_password.size(); + return v.vphone_registered.innerLength() + v.vphone_code_hash.innerLength() + v.vsend_call_timeout.innerLength() + v.vis_password.innerLength(); } } return 0; @@ -17607,9 +18165,9 @@ inline MTPauth_sentCode MTP_auth_sentAppCode(MTPBool _phone_registered, const MT inline MTPauth_authorization::MTPauth_authorization() : mtpDataOwner(new MTPDauth_authorization()) { } -inline uint32 MTPauth_authorization::size() const { +inline uint32 MTPauth_authorization::innerLength() const { const MTPDauth_authorization &v(c_auth_authorization()); - return v.vexpires.size() + v.vuser.size(); + return v.vexpires.innerLength() + v.vuser.innerLength(); } inline mtpTypeId MTPauth_authorization::type() const { return mtpc_auth_authorization; @@ -17636,9 +18194,9 @@ inline MTPauth_authorization MTP_auth_authorization(MTPint _expires, const MTPUs inline MTPauth_exportedAuthorization::MTPauth_exportedAuthorization() : mtpDataOwner(new MTPDauth_exportedAuthorization()) { } -inline uint32 MTPauth_exportedAuthorization::size() const { +inline uint32 MTPauth_exportedAuthorization::innerLength() const { const MTPDauth_exportedAuthorization &v(c_auth_exportedAuthorization()); - return v.vid.size() + v.vbytes.size(); + return v.vid.innerLength() + v.vbytes.innerLength(); } inline mtpTypeId MTPauth_exportedAuthorization::type() const { return mtpc_auth_exportedAuthorization; @@ -17662,15 +18220,15 @@ inline MTPauth_exportedAuthorization MTP_auth_exportedAuthorization(MTPint _id, return MTPauth_exportedAuthorization(new MTPDauth_exportedAuthorization(_id, _bytes)); } -inline uint32 MTPinputNotifyPeer::size() const { +inline uint32 MTPinputNotifyPeer::innerLength() const { switch (_type) { case mtpc_inputNotifyPeer: { const MTPDinputNotifyPeer &v(c_inputNotifyPeer()); - return v.vpeer.size(); + return v.vpeer.innerLength(); } case mtpc_inputNotifyGeoChatPeer: { const MTPDinputNotifyGeoChatPeer &v(c_inputNotifyGeoChatPeer()); - return v.vpeer.size(); + return v.vpeer.innerLength(); } } return 0; @@ -17740,7 +18298,7 @@ inline MTPinputNotifyPeer MTP_inputNotifyGeoChatPeer(const MTPInputGeoChat &_pee return MTPinputNotifyPeer(new MTPDinputNotifyGeoChatPeer(_peer)); } -inline uint32 MTPinputPeerNotifyEvents::size() const { +inline uint32 MTPinputPeerNotifyEvents::innerLength() const { return 0; } inline mtpTypeId MTPinputPeerNotifyEvents::type() const { @@ -17775,9 +18333,9 @@ inline MTPinputPeerNotifyEvents MTP_inputPeerNotifyEventsAll() { inline MTPinputPeerNotifySettings::MTPinputPeerNotifySettings() : mtpDataOwner(new MTPDinputPeerNotifySettings()) { } -inline uint32 MTPinputPeerNotifySettings::size() const { +inline uint32 MTPinputPeerNotifySettings::innerLength() const { const MTPDinputPeerNotifySettings &v(c_inputPeerNotifySettings()); - return v.vmute_until.size() + v.vsound.size() + v.vshow_previews.size() + v.vevents_mask.size(); + return v.vmute_until.innerLength() + v.vsound.innerLength() + v.vshow_previews.innerLength() + v.vevents_mask.innerLength(); } inline mtpTypeId MTPinputPeerNotifySettings::type() const { return mtpc_inputPeerNotifySettings; @@ -17805,7 +18363,7 @@ inline MTPinputPeerNotifySettings MTP_inputPeerNotifySettings(MTPint _mute_until return MTPinputPeerNotifySettings(new MTPDinputPeerNotifySettings(_mute_until, _sound, _show_previews, _events_mask)); } -inline uint32 MTPpeerNotifyEvents::size() const { +inline uint32 MTPpeerNotifyEvents::innerLength() const { return 0; } inline mtpTypeId MTPpeerNotifyEvents::type() const { @@ -17837,11 +18395,11 @@ inline MTPpeerNotifyEvents MTP_peerNotifyEventsAll() { return MTPpeerNotifyEvents(mtpc_peerNotifyEventsAll); } -inline uint32 MTPpeerNotifySettings::size() const { +inline uint32 MTPpeerNotifySettings::innerLength() const { switch (_type) { case mtpc_peerNotifySettings: { const MTPDpeerNotifySettings &v(c_peerNotifySettings()); - return v.vmute_until.size() + v.vsound.size() + v.vshow_previews.size() + v.vevents_mask.size(); + return v.vmute_until.innerLength() + v.vsound.innerLength() + v.vshow_previews.innerLength() + v.vevents_mask.innerLength(); } } return 0; @@ -17892,15 +18450,15 @@ inline MTPpeerNotifySettings MTP_peerNotifySettings(MTPint _mute_until, const MT return MTPpeerNotifySettings(new MTPDpeerNotifySettings(_mute_until, _sound, _show_previews, _events_mask)); } -inline uint32 MTPwallPaper::size() const { +inline uint32 MTPwallPaper::innerLength() const { switch (_type) { case mtpc_wallPaper: { const MTPDwallPaper &v(c_wallPaper()); - return v.vid.size() + v.vtitle.size() + v.vsizes.size() + v.vcolor.size(); + return v.vid.innerLength() + v.vtitle.innerLength() + v.vsizes.innerLength() + v.vcolor.innerLength(); } case mtpc_wallPaperSolid: { const MTPDwallPaperSolid &v(c_wallPaperSolid()); - return v.vid.size() + v.vtitle.size() + v.vbg_color.size() + v.vcolor.size(); + return v.vid.innerLength() + v.vtitle.innerLength() + v.vbg_color.innerLength() + v.vcolor.innerLength(); } } return 0; @@ -17970,9 +18528,9 @@ inline MTPwallPaper MTP_wallPaperSolid(MTPint _id, const MTPstring &_title, MTPi inline MTPuserFull::MTPuserFull() : mtpDataOwner(new MTPDuserFull()) { } -inline uint32 MTPuserFull::size() const { +inline uint32 MTPuserFull::innerLength() const { const MTPDuserFull &v(c_userFull()); - return v.vuser.size() + v.vlink.size() + v.vprofile_photo.size() + v.vnotify_settings.size() + v.vblocked.size() + v.vreal_first_name.size() + v.vreal_last_name.size(); + return v.vuser.innerLength() + v.vlink.innerLength() + v.vprofile_photo.innerLength() + v.vnotify_settings.innerLength() + v.vblocked.innerLength() + v.vreal_first_name.innerLength() + v.vreal_last_name.innerLength(); } inline mtpTypeId MTPuserFull::type() const { return mtpc_userFull; @@ -18009,9 +18567,9 @@ inline MTPuserFull MTP_userFull(const MTPUser &_user, const MTPcontacts_Link &_l inline MTPcontact::MTPcontact() : mtpDataOwner(new MTPDcontact()) { } -inline uint32 MTPcontact::size() const { +inline uint32 MTPcontact::innerLength() const { const MTPDcontact &v(c_contact()); - return v.vuser_id.size() + v.vmutual.size(); + return v.vuser_id.innerLength() + v.vmutual.innerLength(); } inline mtpTypeId MTPcontact::type() const { return mtpc_contact; @@ -18038,9 +18596,9 @@ inline MTPcontact MTP_contact(MTPint _user_id, MTPBool _mutual) { inline MTPimportedContact::MTPimportedContact() : mtpDataOwner(new MTPDimportedContact()) { } -inline uint32 MTPimportedContact::size() const { +inline uint32 MTPimportedContact::innerLength() const { const MTPDimportedContact &v(c_importedContact()); - return v.vuser_id.size() + v.vclient_id.size(); + return v.vuser_id.innerLength() + v.vclient_id.innerLength(); } inline mtpTypeId MTPimportedContact::type() const { return mtpc_importedContact; @@ -18067,9 +18625,9 @@ inline MTPimportedContact MTP_importedContact(MTPint _user_id, const MTPlong &_c inline MTPcontactBlocked::MTPcontactBlocked() : mtpDataOwner(new MTPDcontactBlocked()) { } -inline uint32 MTPcontactBlocked::size() const { +inline uint32 MTPcontactBlocked::innerLength() const { const MTPDcontactBlocked &v(c_contactBlocked()); - return v.vuser_id.size() + v.vdate.size(); + return v.vuser_id.innerLength() + v.vdate.innerLength(); } inline mtpTypeId MTPcontactBlocked::type() const { return mtpc_contactBlocked; @@ -18096,9 +18654,9 @@ inline MTPcontactBlocked MTP_contactBlocked(MTPint _user_id, MTPint _date) { inline MTPcontactSuggested::MTPcontactSuggested() : mtpDataOwner(new MTPDcontactSuggested()) { } -inline uint32 MTPcontactSuggested::size() const { +inline uint32 MTPcontactSuggested::innerLength() const { const MTPDcontactSuggested &v(c_contactSuggested()); - return v.vuser_id.size() + v.vmutual_contacts.size(); + return v.vuser_id.innerLength() + v.vmutual_contacts.innerLength(); } inline mtpTypeId MTPcontactSuggested::type() const { return mtpc_contactSuggested; @@ -18125,9 +18683,9 @@ inline MTPcontactSuggested MTP_contactSuggested(MTPint _user_id, MTPint _mutual_ inline MTPcontactStatus::MTPcontactStatus() : mtpDataOwner(new MTPDcontactStatus()) { } -inline uint32 MTPcontactStatus::size() const { +inline uint32 MTPcontactStatus::innerLength() const { const MTPDcontactStatus &v(c_contactStatus()); - return v.vuser_id.size() + v.vexpires.size(); + return v.vuser_id.innerLength() + v.vstatus.innerLength(); } inline mtpTypeId MTPcontactStatus::type() const { return mtpc_contactStatus; @@ -18138,25 +18696,25 @@ inline void MTPcontactStatus::read(const mtpPrime *&from, const mtpPrime *end, m if (!data) setData(new MTPDcontactStatus()); MTPDcontactStatus &v(_contactStatus()); v.vuser_id.read(from, end); - v.vexpires.read(from, end); + v.vstatus.read(from, end); } inline void MTPcontactStatus::write(mtpBuffer &to) const { const MTPDcontactStatus &v(c_contactStatus()); v.vuser_id.write(to); - v.vexpires.write(to); + v.vstatus.write(to); } inline MTPcontactStatus::MTPcontactStatus(MTPDcontactStatus *_data) : mtpDataOwner(_data) { } -inline MTPcontactStatus MTP_contactStatus(MTPint _user_id, MTPint _expires) { - return MTPcontactStatus(new MTPDcontactStatus(_user_id, _expires)); +inline MTPcontactStatus MTP_contactStatus(MTPint _user_id, const MTPUserStatus &_status) { + return MTPcontactStatus(new MTPDcontactStatus(_user_id, _status)); } inline MTPchatLocated::MTPchatLocated() : mtpDataOwner(new MTPDchatLocated()) { } -inline uint32 MTPchatLocated::size() const { +inline uint32 MTPchatLocated::innerLength() const { const MTPDchatLocated &v(c_chatLocated()); - return v.vchat_id.size() + v.vdistance.size(); + return v.vchat_id.innerLength() + v.vdistance.innerLength(); } inline mtpTypeId MTPchatLocated::type() const { return mtpc_chatLocated; @@ -18180,11 +18738,11 @@ inline MTPchatLocated MTP_chatLocated(MTPint _chat_id, MTPint _distance) { return MTPchatLocated(new MTPDchatLocated(_chat_id, _distance)); } -inline uint32 MTPcontacts_foreignLink::size() const { +inline uint32 MTPcontacts_foreignLink::innerLength() const { switch (_type) { case mtpc_contacts_foreignLinkRequested: { const MTPDcontacts_foreignLinkRequested &v(c_contacts_foreignLinkRequested()); - return v.vhas_phone.size(); + return v.vhas_phone.innerLength(); } } return 0; @@ -18234,11 +18792,11 @@ inline MTPcontacts_foreignLink MTP_contacts_foreignLinkMutual() { return MTPcontacts_foreignLink(mtpc_contacts_foreignLinkMutual); } -inline uint32 MTPcontacts_myLink::size() const { +inline uint32 MTPcontacts_myLink::innerLength() const { switch (_type) { case mtpc_contacts_myLinkRequested: { const MTPDcontacts_myLinkRequested &v(c_contacts_myLinkRequested()); - return v.vcontact.size(); + return v.vcontact.innerLength(); } } return 0; @@ -18291,9 +18849,9 @@ inline MTPcontacts_myLink MTP_contacts_myLinkContact() { inline MTPcontacts_link::MTPcontacts_link() : mtpDataOwner(new MTPDcontacts_link()) { } -inline uint32 MTPcontacts_link::size() const { +inline uint32 MTPcontacts_link::innerLength() const { const MTPDcontacts_link &v(c_contacts_link()); - return v.vmy_link.size() + v.vforeign_link.size() + v.vuser.size(); + return v.vmy_link.innerLength() + v.vforeign_link.innerLength() + v.vuser.innerLength(); } inline mtpTypeId MTPcontacts_link::type() const { return mtpc_contacts_link; @@ -18319,11 +18877,11 @@ inline MTPcontacts_link MTP_contacts_link(const MTPcontacts_MyLink &_my_link, co return MTPcontacts_link(new MTPDcontacts_link(_my_link, _foreign_link, _user)); } -inline uint32 MTPcontacts_contacts::size() const { +inline uint32 MTPcontacts_contacts::innerLength() const { switch (_type) { case mtpc_contacts_contacts: { const MTPDcontacts_contacts &v(c_contacts_contacts()); - return v.vcontacts.size() + v.vusers.size(); + return v.vcontacts.innerLength() + v.vusers.innerLength(); } } return 0; @@ -18373,9 +18931,9 @@ inline MTPcontacts_contacts MTP_contacts_contactsNotModified() { inline MTPcontacts_importedContacts::MTPcontacts_importedContacts() : mtpDataOwner(new MTPDcontacts_importedContacts()) { } -inline uint32 MTPcontacts_importedContacts::size() const { +inline uint32 MTPcontacts_importedContacts::innerLength() const { const MTPDcontacts_importedContacts &v(c_contacts_importedContacts()); - return v.vimported.size() + v.vretry_contacts.size() + v.vusers.size(); + return v.vimported.innerLength() + v.vretry_contacts.innerLength() + v.vusers.innerLength(); } inline mtpTypeId MTPcontacts_importedContacts::type() const { return mtpc_contacts_importedContacts; @@ -18401,15 +18959,15 @@ inline MTPcontacts_importedContacts MTP_contacts_importedContacts(const MTPVecto return MTPcontacts_importedContacts(new MTPDcontacts_importedContacts(_imported, _retry_contacts, _users)); } -inline uint32 MTPcontacts_blocked::size() const { +inline uint32 MTPcontacts_blocked::innerLength() const { switch (_type) { case mtpc_contacts_blocked: { const MTPDcontacts_blocked &v(c_contacts_blocked()); - return v.vblocked.size() + v.vusers.size(); + return v.vblocked.innerLength() + v.vusers.innerLength(); } case mtpc_contacts_blockedSlice: { const MTPDcontacts_blockedSlice &v(c_contacts_blockedSlice()); - return v.vcount.size() + v.vblocked.size() + v.vusers.size(); + return v.vcount.innerLength() + v.vblocked.innerLength() + v.vusers.innerLength(); } } return 0; @@ -18473,9 +19031,9 @@ inline MTPcontacts_blocked MTP_contacts_blockedSlice(MTPint _count, const MTPVec inline MTPcontacts_suggested::MTPcontacts_suggested() : mtpDataOwner(new MTPDcontacts_suggested()) { } -inline uint32 MTPcontacts_suggested::size() const { +inline uint32 MTPcontacts_suggested::innerLength() const { const MTPDcontacts_suggested &v(c_contacts_suggested()); - return v.vresults.size() + v.vusers.size(); + return v.vresults.innerLength() + v.vusers.innerLength(); } inline mtpTypeId MTPcontacts_suggested::type() const { return mtpc_contacts_suggested; @@ -18499,15 +19057,15 @@ inline MTPcontacts_suggested MTP_contacts_suggested(const MTPVector &_chats, co inline MTPmessages_chatFull::MTPmessages_chatFull() : mtpDataOwner(new MTPDmessages_chatFull()) { } -inline uint32 MTPmessages_chatFull::size() const { +inline uint32 MTPmessages_chatFull::innerLength() const { const MTPDmessages_chatFull &v(c_messages_chatFull()); - return v.vfull_chat.size() + v.vchats.size() + v.vusers.size(); + return v.vfull_chat.innerLength() + v.vchats.innerLength() + v.vusers.innerLength(); } inline mtpTypeId MTPmessages_chatFull::type() const { return mtpc_messages_chatFull; @@ -19033,9 +19591,9 @@ inline MTPmessages_chatFull MTP_messages_chatFull(const MTPChatFull &_full_chat, inline MTPmessages_affectedHistory::MTPmessages_affectedHistory() : mtpDataOwner(new MTPDmessages_affectedHistory()) { } -inline uint32 MTPmessages_affectedHistory::size() const { +inline uint32 MTPmessages_affectedHistory::innerLength() const { const MTPDmessages_affectedHistory &v(c_messages_affectedHistory()); - return v.vpts.size() + v.vseq.size() + v.voffset.size(); + return v.vpts.innerLength() + v.vseq.innerLength() + v.voffset.innerLength(); } inline mtpTypeId MTPmessages_affectedHistory::type() const { return mtpc_messages_affectedHistory; @@ -19061,7 +19619,7 @@ inline MTPmessages_affectedHistory MTP_messages_affectedHistory(MTPint _pts, MTP return MTPmessages_affectedHistory(new MTPDmessages_affectedHistory(_pts, _seq, _offset)); } -inline uint32 MTPmessagesFilter::size() const { +inline uint32 MTPmessagesFilter::innerLength() const { return 0; } inline mtpTypeId MTPmessagesFilter::type() const { @@ -19113,111 +19671,115 @@ inline MTPmessagesFilter MTP_inputMessagesFilterAudio() { return MTPmessagesFilter(mtpc_inputMessagesFilterAudio); } -inline uint32 MTPupdate::size() const { +inline uint32 MTPupdate::innerLength() const { switch (_type) { case mtpc_updateNewMessage: { const MTPDupdateNewMessage &v(c_updateNewMessage()); - return v.vmessage.size() + v.vpts.size(); + return v.vmessage.innerLength() + v.vpts.innerLength(); } case mtpc_updateMessageID: { const MTPDupdateMessageID &v(c_updateMessageID()); - return v.vid.size() + v.vrandom_id.size(); + return v.vid.innerLength() + v.vrandom_id.innerLength(); } case mtpc_updateReadMessages: { const MTPDupdateReadMessages &v(c_updateReadMessages()); - return v.vmessages.size() + v.vpts.size(); + return v.vmessages.innerLength() + v.vpts.innerLength(); } case mtpc_updateDeleteMessages: { const MTPDupdateDeleteMessages &v(c_updateDeleteMessages()); - return v.vmessages.size() + v.vpts.size(); + return v.vmessages.innerLength() + v.vpts.innerLength(); } case mtpc_updateRestoreMessages: { const MTPDupdateRestoreMessages &v(c_updateRestoreMessages()); - return v.vmessages.size() + v.vpts.size(); + return v.vmessages.innerLength() + v.vpts.innerLength(); } case mtpc_updateUserTyping: { const MTPDupdateUserTyping &v(c_updateUserTyping()); - return v.vuser_id.size() + v.vaction.size(); + return v.vuser_id.innerLength() + v.vaction.innerLength(); } case mtpc_updateChatUserTyping: { const MTPDupdateChatUserTyping &v(c_updateChatUserTyping()); - return v.vchat_id.size() + v.vuser_id.size() + v.vaction.size(); + return v.vchat_id.innerLength() + v.vuser_id.innerLength() + v.vaction.innerLength(); } case mtpc_updateChatParticipants: { const MTPDupdateChatParticipants &v(c_updateChatParticipants()); - return v.vparticipants.size(); + return v.vparticipants.innerLength(); } case mtpc_updateUserStatus: { const MTPDupdateUserStatus &v(c_updateUserStatus()); - return v.vuser_id.size() + v.vstatus.size(); + return v.vuser_id.innerLength() + v.vstatus.innerLength(); } case mtpc_updateUserName: { const MTPDupdateUserName &v(c_updateUserName()); - return v.vuser_id.size() + v.vfirst_name.size() + v.vlast_name.size() + v.vusername.size(); + return v.vuser_id.innerLength() + v.vfirst_name.innerLength() + v.vlast_name.innerLength() + v.vusername.innerLength(); } case mtpc_updateUserPhoto: { const MTPDupdateUserPhoto &v(c_updateUserPhoto()); - return v.vuser_id.size() + v.vdate.size() + v.vphoto.size() + v.vprevious.size(); + return v.vuser_id.innerLength() + v.vdate.innerLength() + v.vphoto.innerLength() + v.vprevious.innerLength(); } case mtpc_updateContactRegistered: { const MTPDupdateContactRegistered &v(c_updateContactRegistered()); - return v.vuser_id.size() + v.vdate.size(); + return v.vuser_id.innerLength() + v.vdate.innerLength(); } case mtpc_updateContactLink: { const MTPDupdateContactLink &v(c_updateContactLink()); - return v.vuser_id.size() + v.vmy_link.size() + v.vforeign_link.size(); + return v.vuser_id.innerLength() + v.vmy_link.innerLength() + v.vforeign_link.innerLength(); } case mtpc_updateActivation: { const MTPDupdateActivation &v(c_updateActivation()); - return v.vuser_id.size(); + return v.vuser_id.innerLength(); } case mtpc_updateNewAuthorization: { const MTPDupdateNewAuthorization &v(c_updateNewAuthorization()); - return v.vauth_key_id.size() + v.vdate.size() + v.vdevice.size() + v.vlocation.size(); + return v.vauth_key_id.innerLength() + v.vdate.innerLength() + v.vdevice.innerLength() + v.vlocation.innerLength(); } case mtpc_updateNewGeoChatMessage: { const MTPDupdateNewGeoChatMessage &v(c_updateNewGeoChatMessage()); - return v.vmessage.size(); + return v.vmessage.innerLength(); } case mtpc_updateNewEncryptedMessage: { const MTPDupdateNewEncryptedMessage &v(c_updateNewEncryptedMessage()); - return v.vmessage.size() + v.vqts.size(); + return v.vmessage.innerLength() + v.vqts.innerLength(); } case mtpc_updateEncryptedChatTyping: { const MTPDupdateEncryptedChatTyping &v(c_updateEncryptedChatTyping()); - return v.vchat_id.size(); + return v.vchat_id.innerLength(); } case mtpc_updateEncryption: { const MTPDupdateEncryption &v(c_updateEncryption()); - return v.vchat.size() + v.vdate.size(); + return v.vchat.innerLength() + v.vdate.innerLength(); } case mtpc_updateEncryptedMessagesRead: { const MTPDupdateEncryptedMessagesRead &v(c_updateEncryptedMessagesRead()); - return v.vchat_id.size() + v.vmax_date.size() + v.vdate.size(); + return v.vchat_id.innerLength() + v.vmax_date.innerLength() + v.vdate.innerLength(); } case mtpc_updateChatParticipantAdd: { const MTPDupdateChatParticipantAdd &v(c_updateChatParticipantAdd()); - return v.vchat_id.size() + v.vuser_id.size() + v.vinviter_id.size() + v.vversion.size(); + return v.vchat_id.innerLength() + v.vuser_id.innerLength() + v.vinviter_id.innerLength() + v.vversion.innerLength(); } case mtpc_updateChatParticipantDelete: { const MTPDupdateChatParticipantDelete &v(c_updateChatParticipantDelete()); - return v.vchat_id.size() + v.vuser_id.size() + v.vversion.size(); + return v.vchat_id.innerLength() + v.vuser_id.innerLength() + v.vversion.innerLength(); } case mtpc_updateDcOptions: { const MTPDupdateDcOptions &v(c_updateDcOptions()); - return v.vdc_options.size(); + return v.vdc_options.innerLength(); } case mtpc_updateUserBlocked: { const MTPDupdateUserBlocked &v(c_updateUserBlocked()); - return v.vuser_id.size() + v.vblocked.size(); + return v.vuser_id.innerLength() + v.vblocked.innerLength(); } case mtpc_updateNotifySettings: { const MTPDupdateNotifySettings &v(c_updateNotifySettings()); - return v.vpeer.size() + v.vnotify_settings.size(); + return v.vpeer.innerLength() + v.vnotify_settings.innerLength(); } case mtpc_updateServiceNotification: { const MTPDupdateServiceNotification &v(c_updateServiceNotification()); - return v.vtype.size() + v.vmessage.size() + v.vmedia.size() + v.vpopup.size(); + return v.vtype.innerLength() + v.vmessage.innerLength() + v.vmedia.innerLength() + v.vpopup.innerLength(); + } + case mtpc_updatePrivacy: { + const MTPDupdatePrivacy &v(c_updatePrivacy()); + return v.vkey.innerLength() + v.vrules.innerLength(); } } return 0; @@ -19394,6 +19956,12 @@ inline void MTPupdate::read(const mtpPrime *&from, const mtpPrime *end, mtpTypeI v.vmedia.read(from, end); v.vpopup.read(from, end); } break; + case mtpc_updatePrivacy: _type = cons; { + if (!data) setData(new MTPDupdatePrivacy()); + MTPDupdatePrivacy &v(_updatePrivacy()); + v.vkey.read(from, end); + v.vrules.read(from, end); + } break; default: throw mtpErrorUnexpected(cons, "MTPupdate"); } } @@ -19538,6 +20106,11 @@ inline void MTPupdate::write(mtpBuffer &to) const { v.vmedia.write(to); v.vpopup.write(to); } break; + case mtpc_updatePrivacy: { + const MTPDupdatePrivacy &v(c_updatePrivacy()); + v.vkey.write(to); + v.vrules.write(to); + } break; } } inline MTPupdate::MTPupdate(mtpTypeId type) : mtpDataOwner(0), _type(type) { @@ -19568,6 +20141,7 @@ inline MTPupdate::MTPupdate(mtpTypeId type) : mtpDataOwner(0), _type(type) { case mtpc_updateUserBlocked: setData(new MTPDupdateUserBlocked()); break; case mtpc_updateNotifySettings: setData(new MTPDupdateNotifySettings()); break; case mtpc_updateServiceNotification: setData(new MTPDupdateServiceNotification()); break; + case mtpc_updatePrivacy: setData(new MTPDupdatePrivacy()); break; default: throw mtpErrorBadTypeId(type, "MTPupdate"); } } @@ -19623,6 +20197,8 @@ inline MTPupdate::MTPupdate(MTPDupdateNotifySettings *_data) : mtpDataOwner(_dat } inline MTPupdate::MTPupdate(MTPDupdateServiceNotification *_data) : mtpDataOwner(_data), _type(mtpc_updateServiceNotification) { } +inline MTPupdate::MTPupdate(MTPDupdatePrivacy *_data) : mtpDataOwner(_data), _type(mtpc_updatePrivacy) { +} inline MTPupdate MTP_updateNewMessage(const MTPMessage &_message, MTPint _pts) { return MTPupdate(new MTPDupdateNewMessage(_message, _pts)); } @@ -19701,13 +20277,16 @@ inline MTPupdate MTP_updateNotifySettings(const MTPNotifyPeer &_peer, const MTPP inline MTPupdate MTP_updateServiceNotification(const MTPstring &_type, const MTPstring &_message, const MTPMessageMedia &_media, MTPBool _popup) { return MTPupdate(new MTPDupdateServiceNotification(_type, _message, _media, _popup)); } +inline MTPupdate MTP_updatePrivacy(const MTPPrivacyKey &_key, const MTPVector &_rules) { + return MTPupdate(new MTPDupdatePrivacy(_key, _rules)); +} inline MTPupdates_state::MTPupdates_state() : mtpDataOwner(new MTPDupdates_state()) { } -inline uint32 MTPupdates_state::size() const { +inline uint32 MTPupdates_state::innerLength() const { const MTPDupdates_state &v(c_updates_state()); - return v.vpts.size() + v.vqts.size() + v.vdate.size() + v.vseq.size() + v.vunread_count.size(); + return v.vpts.innerLength() + v.vqts.innerLength() + v.vdate.innerLength() + v.vseq.innerLength() + v.vunread_count.innerLength(); } inline mtpTypeId MTPupdates_state::type() const { return mtpc_updates_state; @@ -19737,19 +20316,19 @@ inline MTPupdates_state MTP_updates_state(MTPint _pts, MTPint _qts, MTPint _date return MTPupdates_state(new MTPDupdates_state(_pts, _qts, _date, _seq, _unread_count)); } -inline uint32 MTPupdates_difference::size() const { +inline uint32 MTPupdates_difference::innerLength() const { switch (_type) { case mtpc_updates_differenceEmpty: { const MTPDupdates_differenceEmpty &v(c_updates_differenceEmpty()); - return v.vdate.size() + v.vseq.size(); + return v.vdate.innerLength() + v.vseq.innerLength(); } case mtpc_updates_difference: { const MTPDupdates_difference &v(c_updates_difference()); - return v.vnew_messages.size() + v.vnew_encrypted_messages.size() + v.vother_updates.size() + v.vchats.size() + v.vusers.size() + v.vstate.size(); + return v.vnew_messages.innerLength() + v.vnew_encrypted_messages.innerLength() + v.vother_updates.innerLength() + v.vchats.innerLength() + v.vusers.innerLength() + v.vstate.innerLength(); } case mtpc_updates_differenceSlice: { const MTPDupdates_differenceSlice &v(c_updates_differenceSlice()); - return v.vnew_messages.size() + v.vnew_encrypted_messages.size() + v.vother_updates.size() + v.vchats.size() + v.vusers.size() + v.vintermediate_state.size(); + return v.vnew_messages.innerLength() + v.vnew_encrypted_messages.innerLength() + v.vother_updates.innerLength() + v.vchats.innerLength() + v.vusers.innerLength() + v.vintermediate_state.innerLength(); } } return 0; @@ -19841,27 +20420,27 @@ inline MTPupdates_difference MTP_updates_differenceSlice(const MTPVector &_updates, const MTPVec return MTPupdates(new MTPDupdates(_updates, _users, _chats, _date, _seq)); } -inline uint32 MTPphotos_photos::size() const { +inline uint32 MTPphotos_photos::innerLength() const { switch (_type) { case mtpc_photos_photos: { const MTPDphotos_photos &v(c_photos_photos()); - return v.vphotos.size() + v.vusers.size(); + return v.vphotos.innerLength() + v.vusers.innerLength(); } case mtpc_photos_photosSlice: { const MTPDphotos_photosSlice &v(c_photos_photosSlice()); - return v.vcount.size() + v.vphotos.size() + v.vusers.size(); + return v.vcount.innerLength() + v.vphotos.innerLength() + v.vusers.innerLength(); } } return 0; @@ -20080,9 +20659,9 @@ inline MTPphotos_photos MTP_photos_photosSlice(MTPint _count, const MTPVector return MTPgeochats_located(new MTPDgeochats_located(_results, _messages, _chats, _users)); } -inline uint32 MTPgeochats_messages::size() const { +inline uint32 MTPgeochats_messages::innerLength() const { switch (_type) { case mtpc_geochats_messages: { const MTPDgeochats_messages &v(c_geochats_messages()); - return v.vmessages.size() + v.vchats.size() + v.vusers.size(); + return v.vmessages.innerLength() + v.vchats.innerLength() + v.vusers.innerLength(); } case mtpc_geochats_messagesSlice: { const MTPDgeochats_messagesSlice &v(c_geochats_messagesSlice()); - return v.vcount.size() + v.vmessages.size() + v.vchats.size() + v.vusers.size(); + return v.vcount.innerLength() + v.vmessages.innerLength() + v.vchats.innerLength() + v.vusers.innerLength(); } } return 0; @@ -20590,27 +21169,27 @@ inline MTPgeochats_messages MTP_geochats_messagesSlice(MTPint _count, const MTPV return MTPgeochats_messages(new MTPDgeochats_messagesSlice(_count, _messages, _chats, _users)); } -inline uint32 MTPencryptedChat::size() const { +inline uint32 MTPencryptedChat::innerLength() const { switch (_type) { case mtpc_encryptedChatEmpty: { const MTPDencryptedChatEmpty &v(c_encryptedChatEmpty()); - return v.vid.size(); + return v.vid.innerLength(); } case mtpc_encryptedChatWaiting: { const MTPDencryptedChatWaiting &v(c_encryptedChatWaiting()); - return v.vid.size() + v.vaccess_hash.size() + v.vdate.size() + v.vadmin_id.size() + v.vparticipant_id.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength() + v.vdate.innerLength() + v.vadmin_id.innerLength() + v.vparticipant_id.innerLength(); } case mtpc_encryptedChatRequested: { const MTPDencryptedChatRequested &v(c_encryptedChatRequested()); - return v.vid.size() + v.vaccess_hash.size() + v.vdate.size() + v.vadmin_id.size() + v.vparticipant_id.size() + v.vg_a.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength() + v.vdate.innerLength() + v.vadmin_id.innerLength() + v.vparticipant_id.innerLength() + v.vg_a.innerLength(); } case mtpc_encryptedChat: { const MTPDencryptedChat &v(c_encryptedChat()); - return v.vid.size() + v.vaccess_hash.size() + v.vdate.size() + v.vadmin_id.size() + v.vparticipant_id.size() + v.vg_a_or_b.size() + v.vkey_fingerprint.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength() + v.vdate.innerLength() + v.vadmin_id.innerLength() + v.vparticipant_id.innerLength() + v.vg_a_or_b.innerLength() + v.vkey_fingerprint.innerLength(); } case mtpc_encryptedChatDiscarded: { const MTPDencryptedChatDiscarded &v(c_encryptedChatDiscarded()); - return v.vid.size(); + return v.vid.innerLength(); } } return 0; @@ -20743,9 +21322,9 @@ inline MTPencryptedChat MTP_encryptedChatDiscarded(MTPint _id) { inline MTPinputEncryptedChat::MTPinputEncryptedChat() : mtpDataOwner(new MTPDinputEncryptedChat()) { } -inline uint32 MTPinputEncryptedChat::size() const { +inline uint32 MTPinputEncryptedChat::innerLength() const { const MTPDinputEncryptedChat &v(c_inputEncryptedChat()); - return v.vchat_id.size() + v.vaccess_hash.size(); + return v.vchat_id.innerLength() + v.vaccess_hash.innerLength(); } inline mtpTypeId MTPinputEncryptedChat::type() const { return mtpc_inputEncryptedChat; @@ -20769,11 +21348,11 @@ inline MTPinputEncryptedChat MTP_inputEncryptedChat(MTPint _chat_id, const MTPlo return MTPinputEncryptedChat(new MTPDinputEncryptedChat(_chat_id, _access_hash)); } -inline uint32 MTPencryptedFile::size() const { +inline uint32 MTPencryptedFile::innerLength() const { switch (_type) { case mtpc_encryptedFile: { const MTPDencryptedFile &v(c_encryptedFile()); - return v.vid.size() + v.vaccess_hash.size() + v.vsize.size() + v.vdc_id.size() + v.vkey_fingerprint.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength() + v.vsize.innerLength() + v.vdc_id.innerLength() + v.vkey_fingerprint.innerLength(); } } return 0; @@ -20826,19 +21405,19 @@ inline MTPencryptedFile MTP_encryptedFile(const MTPlong &_id, const MTPlong &_ac return MTPencryptedFile(new MTPDencryptedFile(_id, _access_hash, _size, _dc_id, _key_fingerprint)); } -inline uint32 MTPinputEncryptedFile::size() const { +inline uint32 MTPinputEncryptedFile::innerLength() const { switch (_type) { case mtpc_inputEncryptedFileUploaded: { const MTPDinputEncryptedFileUploaded &v(c_inputEncryptedFileUploaded()); - return v.vid.size() + v.vparts.size() + v.vmd5_checksum.size() + v.vkey_fingerprint.size(); + return v.vid.innerLength() + v.vparts.innerLength() + v.vmd5_checksum.innerLength() + v.vkey_fingerprint.innerLength(); } case mtpc_inputEncryptedFile: { const MTPDinputEncryptedFile &v(c_inputEncryptedFile()); - return v.vid.size() + v.vaccess_hash.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength(); } case mtpc_inputEncryptedFileBigUploaded: { const MTPDinputEncryptedFileBigUploaded &v(c_inputEncryptedFileBigUploaded()); - return v.vid.size() + v.vparts.size() + v.vkey_fingerprint.size(); + return v.vid.innerLength() + v.vparts.innerLength() + v.vkey_fingerprint.innerLength(); } } return 0; @@ -20925,15 +21504,15 @@ inline MTPinputEncryptedFile MTP_inputEncryptedFileBigUploaded(const MTPlong &_i return MTPinputEncryptedFile(new MTPDinputEncryptedFileBigUploaded(_id, _parts, _key_fingerprint)); } -inline uint32 MTPencryptedMessage::size() const { +inline uint32 MTPencryptedMessage::innerLength() const { switch (_type) { case mtpc_encryptedMessage: { const MTPDencryptedMessage &v(c_encryptedMessage()); - return v.vrandom_id.size() + v.vchat_id.size() + v.vdate.size() + v.vbytes.size() + v.vfile.size(); + return v.vrandom_id.innerLength() + v.vchat_id.innerLength() + v.vdate.innerLength() + v.vbytes.innerLength() + v.vfile.innerLength(); } case mtpc_encryptedMessageService: { const MTPDencryptedMessageService &v(c_encryptedMessageService()); - return v.vrandom_id.size() + v.vchat_id.size() + v.vdate.size() + v.vbytes.size(); + return v.vrandom_id.innerLength() + v.vchat_id.innerLength() + v.vdate.innerLength() + v.vbytes.innerLength(); } } return 0; @@ -21002,15 +21581,15 @@ inline MTPencryptedMessage MTP_encryptedMessageService(const MTPlong &_random_id return MTPencryptedMessage(new MTPDencryptedMessageService(_random_id, _chat_id, _date, _bytes)); } -inline uint32 MTPmessages_dhConfig::size() const { +inline uint32 MTPmessages_dhConfig::innerLength() const { switch (_type) { case mtpc_messages_dhConfigNotModified: { const MTPDmessages_dhConfigNotModified &v(c_messages_dhConfigNotModified()); - return v.vrandom.size(); + return v.vrandom.innerLength(); } case mtpc_messages_dhConfig: { const MTPDmessages_dhConfig &v(c_messages_dhConfig()); - return v.vg.size() + v.vp.size() + v.vversion.size() + v.vrandom.size(); + return v.vg.innerLength() + v.vp.innerLength() + v.vversion.innerLength() + v.vrandom.innerLength(); } } return 0; @@ -21071,15 +21650,15 @@ inline MTPmessages_dhConfig MTP_messages_dhConfig(MTPint _g, const MTPbytes &_p, return MTPmessages_dhConfig(new MTPDmessages_dhConfig(_g, _p, _version, _random)); } -inline uint32 MTPmessages_sentEncryptedMessage::size() const { +inline uint32 MTPmessages_sentEncryptedMessage::innerLength() const { switch (_type) { case mtpc_messages_sentEncryptedMessage: { const MTPDmessages_sentEncryptedMessage &v(c_messages_sentEncryptedMessage()); - return v.vdate.size(); + return v.vdate.innerLength(); } case mtpc_messages_sentEncryptedFile: { const MTPDmessages_sentEncryptedFile &v(c_messages_sentEncryptedFile()); - return v.vdate.size() + v.vfile.size(); + return v.vdate.innerLength() + v.vfile.innerLength(); } } return 0; @@ -21136,11 +21715,11 @@ inline MTPmessages_sentEncryptedMessage MTP_messages_sentEncryptedFile(MTPint _d return MTPmessages_sentEncryptedMessage(new MTPDmessages_sentEncryptedFile(_date, _file)); } -inline uint32 MTPinputAudio::size() const { +inline uint32 MTPinputAudio::innerLength() const { switch (_type) { case mtpc_inputAudio: { const MTPDinputAudio &v(c_inputAudio()); - return v.vid.size() + v.vaccess_hash.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength(); } } return 0; @@ -21187,11 +21766,11 @@ inline MTPinputAudio MTP_inputAudio(const MTPlong &_id, const MTPlong &_access_h return MTPinputAudio(new MTPDinputAudio(_id, _access_hash)); } -inline uint32 MTPinputDocument::size() const { +inline uint32 MTPinputDocument::innerLength() const { switch (_type) { case mtpc_inputDocument: { const MTPDinputDocument &v(c_inputDocument()); - return v.vid.size() + v.vaccess_hash.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength(); } } return 0; @@ -21238,15 +21817,15 @@ inline MTPinputDocument MTP_inputDocument(const MTPlong &_id, const MTPlong &_ac return MTPinputDocument(new MTPDinputDocument(_id, _access_hash)); } -inline uint32 MTPaudio::size() const { +inline uint32 MTPaudio::innerLength() const { switch (_type) { case mtpc_audioEmpty: { const MTPDaudioEmpty &v(c_audioEmpty()); - return v.vid.size(); + return v.vid.innerLength(); } case mtpc_audio: { const MTPDaudio &v(c_audio()); - return v.vid.size() + v.vaccess_hash.size() + v.vuser_id.size() + v.vdate.size() + v.vduration.size() + v.vmime_type.size() + v.vsize.size() + v.vdc_id.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength() + v.vuser_id.innerLength() + v.vdate.innerLength() + v.vduration.innerLength() + v.vmime_type.innerLength() + v.vsize.innerLength() + v.vdc_id.innerLength(); } } return 0; @@ -21315,15 +21894,15 @@ inline MTPaudio MTP_audio(const MTPlong &_id, const MTPlong &_access_hash, MTPin return MTPaudio(new MTPDaudio(_id, _access_hash, _user_id, _date, _duration, _mime_type, _size, _dc_id)); } -inline uint32 MTPdocument::size() const { +inline uint32 MTPdocument::innerLength() const { switch (_type) { case mtpc_documentEmpty: { const MTPDdocumentEmpty &v(c_documentEmpty()); - return v.vid.size(); + return v.vid.innerLength(); } case mtpc_document: { const MTPDdocument &v(c_document()); - return v.vid.size() + v.vaccess_hash.size() + v.vuser_id.size() + v.vdate.size() + v.vfile_name.size() + v.vmime_type.size() + v.vsize.size() + v.vthumb.size() + v.vdc_id.size(); + return v.vid.innerLength() + v.vaccess_hash.innerLength() + v.vuser_id.innerLength() + v.vdate.innerLength() + v.vfile_name.innerLength() + v.vmime_type.innerLength() + v.vsize.innerLength() + v.vthumb.innerLength() + v.vdc_id.innerLength(); } } return 0; @@ -21397,9 +21976,9 @@ inline MTPdocument MTP_document(const MTPlong &_id, const MTPlong &_access_hash, inline MTPhelp_support::MTPhelp_support() : mtpDataOwner(new MTPDhelp_support()) { } -inline uint32 MTPhelp_support::size() const { +inline uint32 MTPhelp_support::innerLength() const { const MTPDhelp_support &v(c_help_support()); - return v.vphone_number.size() + v.vuser.size(); + return v.vphone_number.innerLength() + v.vuser.innerLength(); } inline mtpTypeId MTPhelp_support::type() const { return mtpc_help_support; @@ -21423,11 +22002,11 @@ inline MTPhelp_support MTP_help_support(const MTPstring &_phone_number, const MT return MTPhelp_support(new MTPDhelp_support(_phone_number, _user)); } -inline uint32 MTPnotifyPeer::size() const { +inline uint32 MTPnotifyPeer::innerLength() const { switch (_type) { case mtpc_notifyPeer: { const MTPDnotifyPeer &v(c_notifyPeer()); - return v.vpeer.size(); + return v.vpeer.innerLength(); } } return 0; @@ -21482,7 +22061,7 @@ inline MTPnotifyPeer MTP_notifyAll() { return MTPnotifyPeer(mtpc_notifyAll); } -inline uint32 MTPsendMessageAction::size() const { +inline uint32 MTPsendMessageAction::innerLength() const { return 0; } inline mtpTypeId MTPsendMessageAction::type() const { @@ -21557,9 +22136,9 @@ inline MTPsendMessageAction MTP_sendMessageChooseContactAction() { inline MTPcontactFound::MTPcontactFound() : mtpDataOwner(new MTPDcontactFound()) { } -inline uint32 MTPcontactFound::size() const { +inline uint32 MTPcontactFound::innerLength() const { const MTPDcontactFound &v(c_contactFound()); - return v.vuser_id.size(); + return v.vuser_id.innerLength(); } inline mtpTypeId MTPcontactFound::type() const { return mtpc_contactFound; @@ -21584,9 +22163,9 @@ inline MTPcontactFound MTP_contactFound(MTPint _user_id) { inline MTPcontacts_found::MTPcontacts_found() : mtpDataOwner(new MTPDcontacts_found()) { } -inline uint32 MTPcontacts_found::size() const { +inline uint32 MTPcontacts_found::innerLength() const { const MTPDcontacts_found &v(c_contacts_found()); - return v.vresults.size() + v.vusers.size(); + return v.vresults.innerLength() + v.vusers.innerLength(); } inline mtpTypeId MTPcontacts_found::type() const { return mtpc_contacts_found; @@ -21610,6 +22189,256 @@ inline MTPcontacts_found MTP_contacts_found(const MTPVector &_r return MTPcontacts_found(new MTPDcontacts_found(_results, _users)); } +inline uint32 MTPinputPrivacyKey::innerLength() const { + return 0; +} +inline mtpTypeId MTPinputPrivacyKey::type() const { + return mtpc_inputPrivacyKeyStatusTimestamp; +} +inline void MTPinputPrivacyKey::read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) { +} +inline void MTPinputPrivacyKey::write(mtpBuffer &to) const { +} +inline MTPinputPrivacyKey MTP_inputPrivacyKeyStatusTimestamp() { + return MTPinputPrivacyKey(); +} + +inline uint32 MTPprivacyKey::innerLength() const { + return 0; +} +inline mtpTypeId MTPprivacyKey::type() const { + return mtpc_privacyKeyStatusTimestamp; +} +inline void MTPprivacyKey::read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) { +} +inline void MTPprivacyKey::write(mtpBuffer &to) const { +} +inline MTPprivacyKey MTP_privacyKeyStatusTimestamp() { + return MTPprivacyKey(); +} + +inline uint32 MTPinputPrivacyRule::innerLength() const { + switch (_type) { + case mtpc_inputPrivacyValueAllowUsers: { + const MTPDinputPrivacyValueAllowUsers &v(c_inputPrivacyValueAllowUsers()); + return v.vusers.innerLength(); + } + case mtpc_inputPrivacyValueDisallowUsers: { + const MTPDinputPrivacyValueDisallowUsers &v(c_inputPrivacyValueDisallowUsers()); + return v.vusers.innerLength(); + } + } + return 0; +} +inline mtpTypeId MTPinputPrivacyRule::type() const { + if (!_type) throw mtpErrorUninitialized(); + return _type; +} +inline void MTPinputPrivacyRule::read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) { + if (cons != _type) setData(0); + switch (cons) { + case mtpc_inputPrivacyValueAllowContacts: _type = cons; break; + case mtpc_inputPrivacyValueAllowAll: _type = cons; break; + case mtpc_inputPrivacyValueAllowUsers: _type = cons; { + if (!data) setData(new MTPDinputPrivacyValueAllowUsers()); + MTPDinputPrivacyValueAllowUsers &v(_inputPrivacyValueAllowUsers()); + v.vusers.read(from, end); + } break; + case mtpc_inputPrivacyValueDisallowContacts: _type = cons; break; + case mtpc_inputPrivacyValueDisallowAll: _type = cons; break; + case mtpc_inputPrivacyValueDisallowUsers: _type = cons; { + if (!data) setData(new MTPDinputPrivacyValueDisallowUsers()); + MTPDinputPrivacyValueDisallowUsers &v(_inputPrivacyValueDisallowUsers()); + v.vusers.read(from, end); + } break; + default: throw mtpErrorUnexpected(cons, "MTPinputPrivacyRule"); + } +} +inline void MTPinputPrivacyRule::write(mtpBuffer &to) const { + switch (_type) { + case mtpc_inputPrivacyValueAllowUsers: { + const MTPDinputPrivacyValueAllowUsers &v(c_inputPrivacyValueAllowUsers()); + v.vusers.write(to); + } break; + case mtpc_inputPrivacyValueDisallowUsers: { + const MTPDinputPrivacyValueDisallowUsers &v(c_inputPrivacyValueDisallowUsers()); + v.vusers.write(to); + } break; + } +} +inline MTPinputPrivacyRule::MTPinputPrivacyRule(mtpTypeId type) : mtpDataOwner(0), _type(type) { + switch (type) { + case mtpc_inputPrivacyValueAllowContacts: break; + case mtpc_inputPrivacyValueAllowAll: break; + case mtpc_inputPrivacyValueAllowUsers: setData(new MTPDinputPrivacyValueAllowUsers()); break; + case mtpc_inputPrivacyValueDisallowContacts: break; + case mtpc_inputPrivacyValueDisallowAll: break; + case mtpc_inputPrivacyValueDisallowUsers: setData(new MTPDinputPrivacyValueDisallowUsers()); break; + default: throw mtpErrorBadTypeId(type, "MTPinputPrivacyRule"); + } +} +inline MTPinputPrivacyRule::MTPinputPrivacyRule(MTPDinputPrivacyValueAllowUsers *_data) : mtpDataOwner(_data), _type(mtpc_inputPrivacyValueAllowUsers) { +} +inline MTPinputPrivacyRule::MTPinputPrivacyRule(MTPDinputPrivacyValueDisallowUsers *_data) : mtpDataOwner(_data), _type(mtpc_inputPrivacyValueDisallowUsers) { +} +inline MTPinputPrivacyRule MTP_inputPrivacyValueAllowContacts() { + return MTPinputPrivacyRule(mtpc_inputPrivacyValueAllowContacts); +} +inline MTPinputPrivacyRule MTP_inputPrivacyValueAllowAll() { + return MTPinputPrivacyRule(mtpc_inputPrivacyValueAllowAll); +} +inline MTPinputPrivacyRule MTP_inputPrivacyValueAllowUsers(const MTPVector &_users) { + return MTPinputPrivacyRule(new MTPDinputPrivacyValueAllowUsers(_users)); +} +inline MTPinputPrivacyRule MTP_inputPrivacyValueDisallowContacts() { + return MTPinputPrivacyRule(mtpc_inputPrivacyValueDisallowContacts); +} +inline MTPinputPrivacyRule MTP_inputPrivacyValueDisallowAll() { + return MTPinputPrivacyRule(mtpc_inputPrivacyValueDisallowAll); +} +inline MTPinputPrivacyRule MTP_inputPrivacyValueDisallowUsers(const MTPVector &_users) { + return MTPinputPrivacyRule(new MTPDinputPrivacyValueDisallowUsers(_users)); +} + +inline uint32 MTPprivacyRule::innerLength() const { + switch (_type) { + case mtpc_privacyValueAllowUsers: { + const MTPDprivacyValueAllowUsers &v(c_privacyValueAllowUsers()); + return v.vusers.innerLength(); + } + case mtpc_privacyValueDisallowUsers: { + const MTPDprivacyValueDisallowUsers &v(c_privacyValueDisallowUsers()); + return v.vusers.innerLength(); + } + } + return 0; +} +inline mtpTypeId MTPprivacyRule::type() const { + if (!_type) throw mtpErrorUninitialized(); + return _type; +} +inline void MTPprivacyRule::read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) { + if (cons != _type) setData(0); + switch (cons) { + case mtpc_privacyValueAllowContacts: _type = cons; break; + case mtpc_privacyValueAllowAll: _type = cons; break; + case mtpc_privacyValueAllowUsers: _type = cons; { + if (!data) setData(new MTPDprivacyValueAllowUsers()); + MTPDprivacyValueAllowUsers &v(_privacyValueAllowUsers()); + v.vusers.read(from, end); + } break; + case mtpc_privacyValueDisallowContacts: _type = cons; break; + case mtpc_privacyValueDisallowAll: _type = cons; break; + case mtpc_privacyValueDisallowUsers: _type = cons; { + if (!data) setData(new MTPDprivacyValueDisallowUsers()); + MTPDprivacyValueDisallowUsers &v(_privacyValueDisallowUsers()); + v.vusers.read(from, end); + } break; + default: throw mtpErrorUnexpected(cons, "MTPprivacyRule"); + } +} +inline void MTPprivacyRule::write(mtpBuffer &to) const { + switch (_type) { + case mtpc_privacyValueAllowUsers: { + const MTPDprivacyValueAllowUsers &v(c_privacyValueAllowUsers()); + v.vusers.write(to); + } break; + case mtpc_privacyValueDisallowUsers: { + const MTPDprivacyValueDisallowUsers &v(c_privacyValueDisallowUsers()); + v.vusers.write(to); + } break; + } +} +inline MTPprivacyRule::MTPprivacyRule(mtpTypeId type) : mtpDataOwner(0), _type(type) { + switch (type) { + case mtpc_privacyValueAllowContacts: break; + case mtpc_privacyValueAllowAll: break; + case mtpc_privacyValueAllowUsers: setData(new MTPDprivacyValueAllowUsers()); break; + case mtpc_privacyValueDisallowContacts: break; + case mtpc_privacyValueDisallowAll: break; + case mtpc_privacyValueDisallowUsers: setData(new MTPDprivacyValueDisallowUsers()); break; + default: throw mtpErrorBadTypeId(type, "MTPprivacyRule"); + } +} +inline MTPprivacyRule::MTPprivacyRule(MTPDprivacyValueAllowUsers *_data) : mtpDataOwner(_data), _type(mtpc_privacyValueAllowUsers) { +} +inline MTPprivacyRule::MTPprivacyRule(MTPDprivacyValueDisallowUsers *_data) : mtpDataOwner(_data), _type(mtpc_privacyValueDisallowUsers) { +} +inline MTPprivacyRule MTP_privacyValueAllowContacts() { + return MTPprivacyRule(mtpc_privacyValueAllowContacts); +} +inline MTPprivacyRule MTP_privacyValueAllowAll() { + return MTPprivacyRule(mtpc_privacyValueAllowAll); +} +inline MTPprivacyRule MTP_privacyValueAllowUsers(const MTPVector &_users) { + return MTPprivacyRule(new MTPDprivacyValueAllowUsers(_users)); +} +inline MTPprivacyRule MTP_privacyValueDisallowContacts() { + return MTPprivacyRule(mtpc_privacyValueDisallowContacts); +} +inline MTPprivacyRule MTP_privacyValueDisallowAll() { + return MTPprivacyRule(mtpc_privacyValueDisallowAll); +} +inline MTPprivacyRule MTP_privacyValueDisallowUsers(const MTPVector &_users) { + return MTPprivacyRule(new MTPDprivacyValueDisallowUsers(_users)); +} + +inline MTPaccount_privacyRules::MTPaccount_privacyRules() : mtpDataOwner(new MTPDaccount_privacyRules()) { +} + +inline uint32 MTPaccount_privacyRules::innerLength() const { + const MTPDaccount_privacyRules &v(c_account_privacyRules()); + return v.vrules.innerLength() + v.vusers.innerLength(); +} +inline mtpTypeId MTPaccount_privacyRules::type() const { + return mtpc_account_privacyRules; +} +inline void MTPaccount_privacyRules::read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) { + if (cons != mtpc_account_privacyRules) throw mtpErrorUnexpected(cons, "MTPaccount_privacyRules"); + + if (!data) setData(new MTPDaccount_privacyRules()); + MTPDaccount_privacyRules &v(_account_privacyRules()); + v.vrules.read(from, end); + v.vusers.read(from, end); +} +inline void MTPaccount_privacyRules::write(mtpBuffer &to) const { + const MTPDaccount_privacyRules &v(c_account_privacyRules()); + v.vrules.write(to); + v.vusers.write(to); +} +inline MTPaccount_privacyRules::MTPaccount_privacyRules(MTPDaccount_privacyRules *_data) : mtpDataOwner(_data) { +} +inline MTPaccount_privacyRules MTP_account_privacyRules(const MTPVector &_rules, const MTPVector &_users) { + return MTPaccount_privacyRules(new MTPDaccount_privacyRules(_rules, _users)); +} + +inline MTPaccountDaysTTL::MTPaccountDaysTTL() : mtpDataOwner(new MTPDaccountDaysTTL()) { +} + +inline uint32 MTPaccountDaysTTL::innerLength() const { + const MTPDaccountDaysTTL &v(c_accountDaysTTL()); + return v.vdays.innerLength(); +} +inline mtpTypeId MTPaccountDaysTTL::type() const { + return mtpc_accountDaysTTL; +} +inline void MTPaccountDaysTTL::read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) { + if (cons != mtpc_accountDaysTTL) throw mtpErrorUnexpected(cons, "MTPaccountDaysTTL"); + + if (!data) setData(new MTPDaccountDaysTTL()); + MTPDaccountDaysTTL &v(_accountDaysTTL()); + v.vdays.read(from, end); +} +inline void MTPaccountDaysTTL::write(mtpBuffer &to) const { + const MTPDaccountDaysTTL &v(c_accountDaysTTL()); + v.vdays.write(to); +} +inline MTPaccountDaysTTL::MTPaccountDaysTTL(MTPDaccountDaysTTL *_data) : mtpDataOwner(_data) { +} +inline MTPaccountDaysTTL MTP_accountDaysTTL(MTPint _days) { + return MTPaccountDaysTTL(new MTPDaccountDaysTTL(_days)); +} + // Human-readable text serialization #if (defined _DEBUG || defined _WITH_DEBUG) diff --git a/Telegram/SourceFiles/mtproto/mtpSession.cpp b/Telegram/SourceFiles/mtproto/mtpSession.cpp index da80db0e9..d4fac36f9 100644 --- a/Telegram/SourceFiles/mtproto/mtpSession.cpp +++ b/Telegram/SourceFiles/mtproto/mtpSession.cpp @@ -113,8 +113,11 @@ void MTProtoSession::start(int32 dcenter, uint32 connects) { ReadLockerAttempt lock(keyMutex()); data.setKey(lock ? dc->getKey() : mtpAuthKeyPtr(0)); - + if (lock && dc->connectionInited()) { + data.setLayerWasInited(true); + } connect(dc.data(), SIGNAL(authKeyCreated()), this, SLOT(authKeyCreatedForDC())); + connect(dc.data(), SIGNAL(layerWasInited(bool)), this, SLOT(layerWasInitedForDC(bool))); } } } @@ -376,21 +379,9 @@ void MTProtoSession::sendPrepared(const mtpRequest &request, uint64 msCanWait, b sendAnything(msCanWait); } -void MTProtoSession::sendPreparedWithInit(const mtpRequest &request, uint64 msCanWait) { // returns true, if emit of needToSend() is needed - if (request->size() > 8 && request->at(8) == mtpc_initConnection) { - sendPrepared(request, msCanWait, false); - return; - } - { - MTPInitConnection requestWrap(MTPinitConnection(MTP_int(ApiId), MTP_string(cApiDeviceModel()), MTP_string(cApiSystemVersion()), MTP_string(cApiAppVersion()), MTP_string(ApiLang), request)); - uint32 requestSize = requestWrap.size() >> 2; - mtpRequest reqSerialized(mtpRequestData::prepare(requestSize)); - requestWrap.write(*reqSerialized); - request->resize(reqSerialized->size()); - memcpy(request->data(), reqSerialized->constData(), reqSerialized->size()); - } - request->msDate = getms(true); // > 0 - can send without container - sendPrepared(request, msCanWait); +void MTProtoSession::sendPreparedWithInit(const mtpRequest &request, uint64 msCanWait) { + request->needsLayer = true; + sendPrepared(request, msCanWait, false); } QReadWriteLock *MTProtoSession::keyMutex() const { @@ -403,11 +394,22 @@ void MTProtoSession::authKeyCreatedForDC() { emit authKeyCreated(); } -void MTProtoSession::keyCreated(const mtpAuthKeyPtr &key) { +void MTProtoSession::notifyKeyCreated(const mtpAuthKeyPtr &key) { DEBUG_LOG(("AuthKey Info: MTProtoSession::keyCreated(), setting, dc %1").arg(dcId)); dc->setKey(key); } +void MTProtoSession::layerWasInitedForDC(bool wasInited) { + DEBUG_LOG(("MTP Info: MTProtoSession::layerWasInitedForDC slot, dc %1").arg(dcId)); + data.setLayerWasInited(wasInited); +} + +void MTProtoSession::notifyLayerInited(bool wasInited) { + DEBUG_LOG(("MTP Info: emitting MTProtoDC::layerWasInited(%1), dc %2").arg(logBool(wasInited)).arg(dcId)); + dc->setConnectionInited(wasInited); + emit dc->layerWasInited(wasInited); +} + void MTProtoSession::destroyKey() { if (!dc) return; diff --git a/Telegram/SourceFiles/mtproto/mtpSession.h b/Telegram/SourceFiles/mtproto/mtpSession.h index 47e856c92..7d970cd43 100644 --- a/Telegram/SourceFiles/mtproto/mtpSession.h +++ b/Telegram/SourceFiles/mtproto/mtpSession.h @@ -28,8 +28,8 @@ public: MTPSessionData(MTProtoSession *creator) : _session(0), _salt(0) - , _messagesSent(0), fakeRequestId(-2000000000) - , _owner(creator), keyChecked(false) { + , _messagesSent(0), _fakeRequestId(-2000000000) + , _owner(creator), _keyChecked(false), _layerInited(false) { } void setSession(uint64 session) { @@ -45,6 +45,14 @@ public: QReadLocker locker(&lock); return _session; } + bool layerWasInited() const { + QReadLocker locker(&lock); + return _layerInited; + } + void setLayerWasInited(bool was) { + QWriteLocker locker(&lock); + _layerInited = was; + } void setSalt(uint64 salt) { QWriteLocker locker(&lock); @@ -56,26 +64,31 @@ public: } const mtpAuthKeyPtr &getKey() const { - return authKey; + return _authKey; } void setKey(const mtpAuthKeyPtr &key) { - if (authKey != key) { + if (_authKey != key) { uint64 session; memsetrnd(session); - authKey = key; + _authKey = key; DEBUG_LOG(("MTP Info: new auth key set in SessionData, id %1, setting random server_session %2").arg(key ? key->keyId() : 0).arg(session)); - setSession(session); + QWriteLocker locker(&lock); + if (_session != session) { + _session = session; + _messagesSent = 0; + } + _layerInited = false; } } bool isCheckedKey() const { QReadLocker locker(&lock); - return keyChecked; + return _keyChecked; } void setCheckedKey(bool checked) { QWriteLocker locker(&lock); - keyChecked = checked; + _keyChecked = checked; } QReadWriteLock *keyMutex() const; @@ -147,11 +160,11 @@ public: mtpRequestId nextFakeRequestId() { // must be locked by haveReceivedMutex() if (haveReceived.isEmpty() || haveReceived.cbegin().key() > 0) { - fakeRequestId = -2000000000; + _fakeRequestId = -2000000000; } else { - ++fakeRequestId; + ++_fakeRequestId; } - return fakeRequestId; + return _fakeRequestId; } MTProtoSession *owner() { @@ -174,12 +187,12 @@ private: uint64 _session, _salt; uint32 _messagesSent; - mtpRequestId fakeRequestId; + mtpRequestId _fakeRequestId; MTProtoSession *_owner; - mtpAuthKeyPtr authKey; - bool keyChecked; + mtpAuthKeyPtr _authKey; + bool _keyChecked, _layerInited; mtpPreRequestMap toSend; // map of request_id -> request, that is waiting to be sent mtpRequestMap haveSent; // map of msg_id -> request, that was sent, msDate = 0 for msgs_state_req (no resend / state req), msDate = 0, seqNo = 0 for containers @@ -216,11 +229,12 @@ public: ~MTProtoSession(); QReadWriteLock *keyMutex() const; - void keyCreated(const mtpAuthKeyPtr &key); + void notifyKeyCreated(const mtpAuthKeyPtr &key); void destroyKey(); + void notifyLayerInited(bool wasInited); template - mtpRequestId send(const TRequest &request, RPCResponseHandler callbacks = RPCResponseHandler(), uint64 msCanWait = 0, uint32 layer = 0, bool toMainDC = false, mtpRequestId after = 0); // send mtp request + mtpRequestId send(const TRequest &request, RPCResponseHandler callbacks = RPCResponseHandler(), uint64 msCanWait = 0, bool needsLayer = false, bool toMainDC = false, mtpRequestId after = 0); // send mtp request void sendAnything(uint64 msCanWait); void cancel(mtpRequestId requestId, mtpMsgId msgId); @@ -247,6 +261,7 @@ signals: public slots: void authKeyCreatedForDC(); + void layerWasInitedForDC(bool wasInited); void tryToReceive(); void checkRequestsByTimer(); @@ -255,9 +270,6 @@ public slots: private: - template - mtpRequestId sendFirst(const MTPInitConnection &request, RPCResponseHandler callbacks = RPCResponseHandler(), uint64 msCanWait = 0, uint32 layer = 0, bool toMainDC = false, mtpRequestId after = 0); // send first mtp request - typedef QList MTProtoConnections; MTProtoConnections connections; diff --git a/Telegram/SourceFiles/mtproto/mtpSessionImpl.h b/Telegram/SourceFiles/mtproto/mtpSessionImpl.h index d2899b970..606780290 100644 --- a/Telegram/SourceFiles/mtproto/mtpSessionImpl.h +++ b/Telegram/SourceFiles/mtproto/mtpSessionImpl.h @@ -18,22 +18,17 @@ Copyright (c) 2014 John Preston, https://tdesktop.com #pragma once template -mtpRequestId MTProtoSession::send(const TRequest &request, RPCResponseHandler callbacks, uint64 msCanWait, uint32 layer, bool toMainDC, mtpRequestId after) { +mtpRequestId MTProtoSession::send(const TRequest &request, RPCResponseHandler callbacks, uint64 msCanWait, bool needsLayer, bool toMainDC, mtpRequestId after) { mtpRequestId requestId = 0; - if (layer && dc->needConnectionInit()) { - MTPInitConnection requestWrap(MTPinitConnection(MTP_int(ApiId), MTP_string(cApiDeviceModel()), MTP_string(cApiSystemVersion()), MTP_string(cApiAppVersion()), MTP_string(ApiLang), request)); - return sendFirst(requestWrap, callbacks, msCanWait, layer, toMainDC, after); - } try { - uint32 requestSize = request.size() >> 2; - if (dc->connectionInited()) layer = 0; - mtpRequest reqSerialized(mtpRequestData::prepare(requestSize + (layer ? 1 : 0))); - if (layer) reqSerialized->push_back(mtpLayers[layer]); + uint32 requestSize = request.innerLength() >> 2; + mtpRequest reqSerialized(mtpRequestData::prepare(requestSize)); request.write(*reqSerialized); DEBUG_LOG(("MTP Info: adding request to toSendMap, msCanWait %1").arg(msCanWait)); reqSerialized->msDate = getms(true); // > 0 - can send without container + reqSerialized->needsLayer = needsLayer; if (after) reqSerialized->after = _mtp_internal::getRequest(after); requestId = _mtp_internal::storeRequest(reqSerialized, callbacks); @@ -45,44 +40,3 @@ mtpRequestId MTProtoSession::send(const TRequest &request, RPCResponseHandler ca if (requestId) _mtp_internal::registerRequest(requestId, toMainDC ? -getDC() : getDC()); return requestId; } - -class RPCWrappedDcDoneHandler : public RPCAbstractDoneHandler { -public: - RPCWrappedDcDoneHandler(const MTProtoDCPtr &dc, const RPCDoneHandlerPtr &ondone) : _dc(dc), _ondone(ondone) { - } - - void operator()(mtpRequestId requestId, const mtpPrime *from, const mtpPrime *end) const { - _dc->setConnectionInited(); - if (_ondone) (*_ondone)(requestId, from, end); - } - -private: - MTProtoDCPtr _dc; - RPCDoneHandlerPtr _ondone; -}; - -template -mtpRequestId MTProtoSession::sendFirst(const MTPInitConnection &request, RPCResponseHandler callbacks, uint64 msCanWait, uint32 layer, bool toMainDC, mtpRequestId after) { - mtpRequestId requestId = 0; - try { - uint32 requestSize = request.size() >> 2; - mtpRequest reqSerialized(mtpRequestData::prepare(requestSize + (layer ? 1 : 0))); - if (layer) reqSerialized->push_back(mtpLayers[layer]); - request.write(*reqSerialized); - - DEBUG_LOG(("MTP Info: adding wrapped to init connection request to toSendMap, msCanWait %1").arg(msCanWait)); - callbacks.onDone = RPCDoneHandlerPtr(new RPCWrappedDcDoneHandler(dc, callbacks.onDone)); - reqSerialized->msDate = getms(true); // > 0 - can send without container - if (after) reqSerialized->after = _mtp_internal::getRequest(after); - requestId = _mtp_internal::storeRequest(reqSerialized, callbacks); - - sendPrepared(reqSerialized, msCanWait); - } catch (Exception &e) { - requestId = 0; - _mtp_internal::rpcErrorOccured(requestId, callbacks, rpcClientError("NO_REQUEST_ID", QString("sendFirst() failed to queue request, exception: %1").arg(e.what()))); - } - if (requestId) { - _mtp_internal::registerRequest(requestId, toMainDC ? -getDC() : getDC()); - } - return requestId; -} diff --git a/Telegram/SourceFiles/mtproto/scheme.tl b/Telegram/SourceFiles/mtproto/scheme.tl index f4f9a7db5..ab207794b 100644 --- a/Telegram/SourceFiles/mtproto/scheme.tl +++ b/Telegram/SourceFiles/mtproto/scheme.tl @@ -13,7 +13,6 @@ /////////////////// Layer cons /////////////////////////////// - //invokeAfterMsg#cb9f372d msg_id:long query:!X = X; //invokeAfterMsgs#3dc4b4f0 msg_ids:Vector query:!X = X; //invokeWithLayer1#53835315 query:!X = X; @@ -34,6 +33,7 @@ //invokeWithLayer16#cf5f0987 query:!X = X; //invokeWithLayer17#50858a19 query:!X = X; //invokeWithLayer18#1c900537 query:!X = X; +//invokeWithLayer#da9b0d0d layer:int query:!X = X; // after 18 layer /////////////////////////////// /// Authorization key creation @@ -287,7 +287,7 @@ contactBlocked#561bc879 user_id:int date:int = ContactBlocked; contactSuggested#3de191a1 user_id:int mutual_contacts:int = ContactSuggested; -contactStatus#aa77b873 user_id:int expires:int = ContactStatus; +contactStatus#d3680c61 user_id:int status:UserStatus = ContactStatus; chatLocated#3631cf4c chat_id:int distance:int = ChatLocated; @@ -510,6 +510,34 @@ contacts.found#566000e results:Vector users:Vector = contact updateServiceNotification#382dd3e4 type:string message:string media:MessageMedia popup:Bool = Update; +userStatusRecently#e26f42f1 = UserStatus; +userStatusLastWeek#7bf09fc = UserStatus; +userStatusLastMonth#77ebc742 = UserStatus; + +updatePrivacy#ee3b272a key:PrivacyKey rules:Vector = Update; + +inputPrivacyKeyStatusTimestamp#4f96cb18 = InputPrivacyKey; + +privacyKeyStatusTimestamp#bc2eab30 = PrivacyKey; + +inputPrivacyValueAllowContacts#d09e07b = InputPrivacyRule; +inputPrivacyValueAllowAll#184b35ce = InputPrivacyRule; +inputPrivacyValueAllowUsers#131cc67f users:Vector = InputPrivacyRule; +inputPrivacyValueDisallowContacts#ba52007 = InputPrivacyRule; +inputPrivacyValueDisallowAll#d66b66c9 = InputPrivacyRule; +inputPrivacyValueDisallowUsers#90110467 users:Vector = InputPrivacyRule; + +privacyValueAllowContacts#fffe1bac = PrivacyRule; +privacyValueAllowAll#65427b82 = PrivacyRule; +privacyValueAllowUsers#4d5bbe0c users:Vector = PrivacyRule; +privacyValueDisallowContacts#f888fa1a = PrivacyRule; +privacyValueDisallowAll#8b73e763 = PrivacyRule; +privacyValueDisallowUsers#c7f49b7 users:Vector = PrivacyRule; + +account.privacyRules#554abb6f rules:Vector users:Vector = account.PrivacyRules; + +accountDaysTTL#b8d0afdf days:int = AccountDaysTTL; + ---functions--- invokeAfterMsg#cb9f372d msg_id:long query:!X = X; @@ -631,3 +659,9 @@ account.checkUsername#2714d86c username:string = Bool; account.updateUsername#3e0bdd7c username:string = User; contacts.search#11f812d8 q:string limit:int = contacts.Found; + +account.getPrivacy#dadbc950 key:InputPrivacyKey = account.PrivacyRules; +account.setPrivacy#c9f81ce8 key:InputPrivacyKey rules:Vector = account.PrivacyRules; +account.deleteAccount#418d4e0b reason:string = Bool; +account.getAccountTTL#8fc711d = AccountDaysTTL; +account.setAccountTTL#2442485e ttl:AccountDaysTTL = Bool; diff --git a/Telegram/SourceFiles/overviewwidget.cpp b/Telegram/SourceFiles/overviewwidget.cpp index 76d1ab470..2d50ec3a6 100644 --- a/Telegram/SourceFiles/overviewwidget.cpp +++ b/Telegram/SourceFiles/overviewwidget.cpp @@ -40,6 +40,7 @@ OverviewInner::OverviewInner(OverviewWidget *overview, ScrollArea *scroll, const , _hist(App::history(peer->id)) , _photosInRow(1) , _photosToAdd(0) + , _selMode(false) , _width(0) , _height(0) , _minHeight(0) @@ -425,7 +426,7 @@ void OverviewInner::dragActionFinish(const QPoint &screenPos, Qt::MouseButton bu dragActionUpdate(screenPos); if (textlnkOver()) { - if (textlnkDown() == textlnkOver() && _dragAction != Dragging) { + if (textlnkDown() == textlnkOver() && _dragAction != Dragging && !_selMode) { needClick = textlnkDown(); } } @@ -662,7 +663,10 @@ void OverviewInner::paintEvent(QPaintEvent *e) { } } if (sel == FullItemSel) { - p.fillRect(QRect(pos.x(), pos.y(), _vsize, _vsize), st::msgInSelectOverlay->b); + p.fillRect(QRect(pos.x(), pos.y(), _vsize, _vsize), st::overviewPhotoSelectOverlay->b); + p.drawPixmap(QPoint(pos.x() + _vsize - st::overviewPhotoChecked.pxWidth(), pos.y() + _vsize - st::overviewPhotoChecked.pxHeight()), App::sprite(), st::overviewPhotoChecked); + } else if (_selMode/* || (selfrom < count && selfrom <= selto && 0 <= selto)*/) { + p.drawPixmap(QPoint(pos.x() + _vsize - st::overviewPhotoChecked.pxWidth(), pos.y() + _vsize - st::overviewPhotoChecked.pxHeight()), App::sprite(), st::overviewPhotoCheck); } } break; } @@ -1136,6 +1140,10 @@ void OverviewInner::switchType(MediaOverviewType type) { if (App::wnd()) App::wnd()->update(); } +void OverviewInner::setSelectMode(bool enabled) { + _selMode = enabled; +} + void OverviewInner::openContextUrl() { HistoryItem *was = App::hoveredLinkItem(); App::hoveredLinkItem(App::contextItem()); @@ -1620,6 +1628,8 @@ MediaOverviewType OverviewWidget::type() const { } void OverviewWidget::switchType(MediaOverviewType type) { + _selCount = 0; + _inner.setSelectMode(false); _inner.switchType(type); switch (type) { case OverviewPhotos: _header = lang(lng_profile_photos_header); break; @@ -1628,7 +1638,6 @@ void OverviewWidget::switchType(MediaOverviewType type) { case OverviewAudios: _header = lang(lng_profile_audios_header); break; } noSelectingScroll(); - _selCount = 0; App::main()->topBar()->showSelected(0); updateTopBarSelection(); _scroll.scrollToY(_scroll.scrollTopMax()); @@ -1639,6 +1648,7 @@ void OverviewWidget::updateTopBarSelection() { int32 selectedForForward, selectedForDelete; _inner.getSelectionState(selectedForForward, selectedForDelete); _selCount = selectedForDelete ? selectedForDelete : selectedForForward; + _inner.setSelectMode(_selCount > 0); if (App::main()) { App::main()->topBar()->showSelected(_selCount > 0 ? _selCount : 0); App::main()->topBar()->update(); diff --git a/Telegram/SourceFiles/overviewwidget.h b/Telegram/SourceFiles/overviewwidget.h index 377de7bf5..17af20fe0 100644 --- a/Telegram/SourceFiles/overviewwidget.h +++ b/Telegram/SourceFiles/overviewwidget.h @@ -55,6 +55,8 @@ public: MediaOverviewType type() const; void switchType(MediaOverviewType type); + void setSelectMode(bool enabled); + void mediaOverviewUpdated(); void changingMsgId(HistoryItem *row, MsgId newId); void msgUpdated(const HistoryItem *msg); @@ -124,6 +126,7 @@ private: } CachedSize; typedef QMap CachedSizes; CachedSizes _cached; + bool _selMode; // other typedef struct _CachedItem { diff --git a/Telegram/Telegram.plist b/Telegram/Telegram.plist index 120a6473c..4abefb662 100644 --- a/Telegram/Telegram.plist +++ b/Telegram/Telegram.plist @@ -11,7 +11,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.6.8 + 0.6.9 CFBundleSignature ???? NOTE diff --git a/Telegram/Telegram.rc b/Telegram/Telegram.rc index 949f7da6e..c4eaa8e99 100644 Binary files a/Telegram/Telegram.rc and b/Telegram/Telegram.rc differ diff --git a/Telegram/Telegram.xcodeproj/project.pbxproj b/Telegram/Telegram.xcodeproj/project.pbxproj index a47efbf71..b6ad5c9de 100644 --- a/Telegram/Telegram.xcodeproj/project.pbxproj +++ b/Telegram/Telegram.xcodeproj/project.pbxproj @@ -1521,7 +1521,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 0.6.8; + CURRENT_PROJECT_VERSION = 0.6.9; DEBUG_INFORMATION_FORMAT = dwarf; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -1539,7 +1539,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 0.6.8; + CURRENT_PROJECT_VERSION = 0.6.9; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = fast; GCC_PREFIX_HEADER = ./SourceFiles/stdafx.h; @@ -1565,10 +1565,10 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = ""; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 0.6.8; + CURRENT_PROJECT_VERSION = 0.6.9; DEBUG_INFORMATION_FORMAT = dwarf; DYLIB_COMPATIBILITY_VERSION = 0.6; - DYLIB_CURRENT_VERSION = 0.6.8; + DYLIB_CURRENT_VERSION = 0.6.9; ENABLE_STRICT_OBJC_MSGSEND = YES; FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -1708,10 +1708,10 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = ""; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 0.6.8; + CURRENT_PROJECT_VERSION = 0.6.9; DEBUG_INFORMATION_FORMAT = dwarf; DYLIB_COMPATIBILITY_VERSION = 0.6; - DYLIB_CURRENT_VERSION = 0.6.8; + DYLIB_CURRENT_VERSION = 0.6.9; ENABLE_STRICT_OBJC_MSGSEND = YES; FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; diff --git a/Telegram/_qt_5_3_1_patch/qtbase/src/3rdparty/pcre/pcre16_valid_utf16.c b/Telegram/_qt_5_3_1_patch/qtbase/src/3rdparty/pcre/pcre16_valid_utf16.c new file mode 100644 index 000000000..6b36e4fab --- /dev/null +++ b/Telegram/_qt_5_3_1_patch/qtbase/src/3rdparty/pcre/pcre16_valid_utf16.c @@ -0,0 +1,137 @@ +/************************************************* +* Perl-Compatible Regular Expressions * +*************************************************/ + +/* PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + + Written by Philip Hazel + Copyright (c) 1997-2013 University of Cambridge + +----------------------------------------------------------------------------- +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------------- +*/ + + +/* This module contains an internal function for validating UTF-16 character +strings. */ + + +#ifdef PCRE_HAVE_CONFIG_H +#include "config.h" +#endif + +/* Generate code with 16 bit character support. */ +#define COMPILE_PCRE16 + +#include "pcre_internal.h" + + +/************************************************* +* Validate a UTF-16 string * +*************************************************/ + +/* This function is called (optionally) at the start of compile or match, to +check that a supposed UTF-16 string is actually valid. The early check means +that subsequent code can assume it is dealing with a valid string. The check +can be turned off for maximum performance, but the consequences of supplying an +invalid string are then undefined. + +From release 8.21 more information about the details of the error are passed +back in the returned value: + +PCRE_UTF16_ERR0 No error +PCRE_UTF16_ERR1 Missing low surrogate at the end of the string +PCRE_UTF16_ERR2 Invalid low surrogate +PCRE_UTF16_ERR3 Isolated low surrogate +PCRE_UTF16_ERR4 Unused (was non-character) + +Arguments: + string points to the string + length length of string, or -1 if the string is zero-terminated + errp pointer to an error position offset variable + +Returns: = 0 if the string is a valid UTF-16 string + > 0 otherwise, setting the offset of the bad character +*/ + +int +PRIV(valid_utf)(PCRE_PUCHAR string, int length, int *erroroffset) +{ +#ifdef SUPPORT_UTF +register PCRE_PUCHAR p; +register pcre_uint32 c; + +if (length < 0) + { + for (p = string; *p != 0; p++); + length = p - string; + } + +for (p = string; length-- > 0; p++) + { + c = *p; + + if ((c & 0xf800) != 0xd800) + { + /* Normal UTF-16 code point. Neither high nor low surrogate. */ + } + else if ((c & 0xfc00) == 0xd800) + { + /* High surrogate. Must be a followed by a low surrogate. */ + if (length == 0) + { + *erroroffset = p - string; + return PCRE_UTF16_ERR1; + } + p++; + length--; + if ((*p & 0xfc00) != 0xdc00) + { + *erroroffset = p - string; + return PCRE_UTF16_ERR2; + } + } + else + { + /* Isolated low surrogate. Always an error. */ + *erroroffset = p - string; + return PCRE_UTF16_ERR3; + } + } + +#else /* SUPPORT_UTF */ +(void)(string); /* Keep picky compilers happy */ +(void)(length); +(void)(erroroffset); +#endif /* SUPPORT_UTF */ + +return PCRE_UTF16_ERR0; /* This indicates success */ +} + +/* End of pcre16_valid_utf16.c */