tweb/public/mtproto.worker.1991be6aa417...

1 line
1.1 MiB
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/big-integer/BigInteger.js","webpack:///./node_modules/pako/dist/pako_inflate.min.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/helpers/bytes/bufferConcats.ts","webpack:///./src/lib/polyfill.ts","webpack:///./src/config/modes.ts","webpack:///./src/config/debug.ts","webpack:///./src/helpers/context.ts","webpack:///./src/lib/localStorage.ts","webpack:///./src/lib/sessionStorage.ts","webpack:///./src/lib/mtproto/schema.ts","webpack:///./src/helpers/bytes/bytesToHex.ts","webpack:///./src/helpers/object/isObject.ts","webpack:///./src/helpers/gzipUncompress.ts","webpack:///./src/helpers/number/intToUint.ts","webpack:///./src/helpers/long/longFromInts.ts","webpack:///./src/lib/mtproto/tl_utils.ts","webpack:///./src/helpers/bigInt/bigIntConversion.ts","webpack:///./src/helpers/bytes/bytesModPow.ts","webpack:///./src/helpers/array/randomize.ts","webpack:///./src/helpers/bytes/addPadding.ts","webpack:///./src/helpers/bytes/bytesXor.ts","webpack:///./src/helpers/bytes/convertToUint8Array.ts","webpack:///./src/lib/crypto/srp.ts","webpack:///./node_modules/@cryptography/aes/dist/es/aes.js","webpack:///./src/helpers/bytes/bytesFromWordss.ts","webpack:///./src/helpers/bytes/bytesToWordss.ts","webpack:///./src/lib/crypto/utils/aesIGE.ts","webpack:///./src/lib/crypto/subtle.ts","webpack:///./src/lib/crypto/utils/pbkdf2.ts","webpack:///./src/helpers/bytes/bytesFromHex.ts","webpack:///./src/lib/crypto/utils/rsa.ts","webpack:///./src/lib/crypto/utils/sha1.ts","webpack:///./src/lib/crypto/utils/sha256.ts","webpack:///./src/helpers/random.ts","webpack:///./src/helpers/bigInt/bigIntRandom.ts","webpack:///./src/lib/crypto/utils/factorize/BrentPollard.ts","webpack:///./src/lib/crypto/generateDh.ts","webpack:///./src/lib/crypto/computeDhKey.ts","webpack:///./src/lib/calls/helpers/getEmojisFingerprint.ts","webpack:///./src/lib/crypto/cryptoworker.ts","webpack:///./src/lib/crypto/crypto_methods.ts","webpack:///./src/lib/mtproto/timeManager.ts","webpack:///./src/environment/ctx.ts","webpack:///./src/environment/userAgent.ts","webpack:///./src/lib/logger.ts","webpack:///./src/config/app.ts","webpack:///./src/helpers/noop.ts","webpack:///./src/helpers/schedulers/pause.ts","webpack:///./src/helpers/cancellablePromise.ts","webpack:///./src/helpers/array/findAndSplice.ts","webpack:///./src/helpers/eventListenerBase.ts","webpack:///./src/helpers/array/indexOfAndSplice.ts","webpack:///./src/lib/mtproto/transports/websocket.ts","webpack:///./src/lib/mtproto/transports/obfuscation.ts","webpack:///./src/lib/mtproto/transports/intermediate.ts","webpack:///./src/lib/mtproto/connectionStatus.ts","webpack:///./src/lib/mtproto/transports/tcpObfuscated.ts","webpack:///./src/lib/mtproto/transports/socketProxied.ts","webpack:///./src/lib/mtproto/dcConfigurator.ts","webpack:///./src/lib/mtproto/transports/controller.ts","webpack:///./src/lib/mtproto/transports/http.ts","webpack:///./src/helpers/bytes/bytesCmp.ts","webpack:///./src/lib/mtproto/networker.ts","webpack:///./src/helpers/array/forEachReverse.ts","webpack:///./src/helpers/long/sortLongsArray.ts","webpack:///./src/helpers/long/longToBytes.ts","webpack:///./src/lib/mtproto/networkerFactory.ts","webpack:///./src/lib/mtproto/rsaKeysManager.ts","webpack:///./src/lib/mtproto/authorizer.ts","webpack:///./src/helpers/blob/blobConstruct.ts","webpack:///./src/helpers/blob/blobSafeMimeType.ts","webpack:///./src/lib/idb.ts","webpack:///./src/helpers/object/safeAssign.ts","webpack:///./src/lib/mtproto/apiManager.ts","webpack:///./src/lib/fileManager.ts","webpack:///./src/lib/cacheStorage.ts","webpack:///./src/helpers/blob/readBlobAsArrayBuffer.ts","webpack:///./src/helpers/blob/readBlobAs.ts","webpack:///./src/lib/mtproto/apiFileManager.ts","webpack:///./src/helpers/fixFirefoxSvg.ts","webpack:///./src/helpers/fileName.ts","webpack:///./src/lib/mtproto/mtproto.worker.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","BASE","MAX_INT","MAX_INT_ARR","smallToArray","supportsNativeBigInt","BigInt","Integer","v","radix","alphabet","caseSensitive","parseBase","parseValue","BigInteger","sign","this","isSmall","SmallInteger","NativeBigInt","isPrecise","Math","floor","arrayToSmall","arr","trim","length","compareAbs","createArray","x","Array","truncate","ceil","add","a","b","sum","l_a","l_b","carry","base","push","addAny","addSmall","subtract","difference","a_l","b_l","borrow","subtractSmall","multiplyLong","product","a_i","j","multiplySmall","shiftLeft","concat","multiplySmallAndArray","square","divModSmall","lambda","q","remainder","divisor","quotient","divModAny","self","Error","negate","abs","comparison","quotientDigit","shift","result","divisorMostSignificantDigit","divMod1","guess","xlen","highx","highy","check","part","unshift","reverse","divMod2","qSign","mod","mSign","isBasicPrime","isUnit","equals","isEven","isDivisibleBy","lesser","millerRabinTest","nPrev","prev","divide","next","bigInt","modPow","plus","subtractAny","minus","small","multiply","l1","l2","multiplyKaratsuba","y","max","slice","ac","bd","abcd","times","_multiplyBySmall","divmod","over","pow","toString","_0","_1","_2","isNegative","exp","isZero","modInv","isPositive","isOdd","compare","Infinity","compareTo","eq","notEquals","neq","greater","gt","lt","greaterOrEquals","geq","lesserOrEquals","leq","isPrime","strict","bits","bitLength","logN","log","toJSNumber","isProbablePrime","iterations","rng","randBetween","lastT","lastR","zero","newT","one","newR","powersOfTwo","powers2Length","highestPower2","shift_isSmall","bitwise","fn","xSign","ySign","xRem","not","yRem","xDigit","yDigit","xDivMod","yDivMod","String","shiftRight","remQuo","and","or","xor","roughLOB","min","gcd","integerLogarithm","tmp","e","text","toLowerCase","absBase","alphabetValues","digits","start","parseBaseFromArray","val","toBase","apply","map","valueOf","neg","Number","out","left","digit","toBaseString","stringify","join","parseStringValue","split","decimalPlace","indexOf","test","parseNumberValue","toArray","str","toJSON","parseInt","minusOne","lcm","isInstance","usedRNG","random","low","range","restricted","top","fromArray","Uint32Array","f","h","u","w","k","_","g","E","R","A","state","next_in","input","avail_in","next_out","output","avail_out","dmax","wsize","whave","wnext","window","hold","lencode","distcode","lenbits","distbits","msg","sane","Uint16Array","Uint8Array","Z","S","O","U","T","D","I","B","N","C","z","F","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","Z_TREES","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_MEM_ERROR","Z_BUF_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","last","wrap","havedict","flags","total","head","wbits","offset","extra","ncode","nlen","ndist","have","lens","work","lendyn","distdyn","back","was","total_in","total_out","adler","Int32Array","set","subarray","L","M","H","K","P","Y","G","X","W","done","time","xflags","os","extra_len","fromCharCode","comment","hcrc","data_type","2","1","0","J","Q","V","$","ee","te","ie","ne","options","arguments","TypeError","chunkSize","windowBits","to","raw","err","ended","chunks","strm","header","dictionary","charCodeAt","ae","onEnd","onData","re","se","oe","le","de","fe","Inflate","inflate","inflateRaw","ungzip","constants","default","webpackPolyfill","deprecate","paths","children","bufferConcats","args","reduce","acc","byteLength","lastLength","forEach","ArrayBuffer","Promise","finally","onFinally","callback","resolve","then","reason","reject","Modes","location","search","debug","http","ssl","multipleConnections","asServiceWorker","transport","DEBUG","MOUNT_CLASS_TO","IS_SERVICE_WORKER","ServiceWorkerGlobalScope","IS_WEB_WORKER","WorkerGlobalScope","IS_WORKER","notifyServiceWorker","all","clients","matchAll","includeUncontrolled","type","listeners","listener","postMessage","notifyWorker","noop","notifySomeone","notifyAll","prefix","cache","useStorage","useCache","localStorage","getItem","JSON","parse","undefined","obj","onlyLocal","stringified","setItem","saveLocal","removeItem","keys","delete","enabled","clear","taskId","tasks","STORAGES","storage","id","payload","proxy","sessionStorage","appStorage","bytesToHex","bytes","isObject","gzipUncompress","intToUint","longFromInts","high","boolFalse","API","constructors","find","predicate","boolTrue","vector","gzipPacked","MTProto","maxLength","mtproto","startMaxLength","createBuffer","buffer","intView","byteView","resultBuffer","resultInt32","getArray","typed","resultArray","needBytes","previousBuffer","previousArray","field","console","checkLength","writeInt","iHigh","iLow","sLong","isArray","storeLongP","storeIntBytes","Float64Array","sUTF8","unescape","encodeURIComponent","len","error","methodName","params","methodData","methods","method","storeInt","pFlags","flagsOffsets","param","condType","fieldBit","storeObject","paramName","storeLong","storeString","storeBytes","storeDouble","storeBool","substr","itemType","schema","isBare","constructorData","charAt","override","readInt","doubleView","longDec","num","isSafeInteger","fetchObject","decodeURIComponent","escape","fetchInt","fetchLong","fetchIntBytes","fetchString","fetchBytes","fetchDouble","fetchBool","fetchVector","fallback","checkType","constructorCmp","uncompressed","index","constructorsIndex","schemaFallback","int1","int2","overrideKey","isCond","formatJSONValue","jsonValue","objectValues","objectValue","TLDeserialization","TLSerialization","bigIntFromBytes","bigIntToBytes","bytesModPow","bytesBigInt","expBigInt","modBigInt","randomize","crypto","getRandomValues","addPadding","blockSize","zeroes","blockSizeAsTotalLength","prepend","needPadding","padding","bytesXor","bytes1","bytes2","convertToUint8Array","TextEncoder","encode","computeSRP","password","isNew","algo","new_algo","current_algo","pw_hash","client_salt","server_salt","invokeCrypto","hash","makePasswordHash","salt1","salt2","padArray","flipper","srp_B","pForHash","gForHash","b_for_hash","k_v","is_good_mod_exp_first","modexp","prime","diff","a_for_hash","secure_random","generate_and_check_random","g_b","ux","a_ux","h1","buff","M1","srp_id","Si","T1","T2","T3","T4","T5","T6","T7","T8","getWords","buf","pos","right","x2","x4","tEnc","tDec","xInv","computeTables","AES","_key","encKey","decKey","rcon","encrypt","_message","a2","b2","c2","message","rounds","decrypt","AES_IGE","iv","cipher","cipherText","prevX","prevY","yXOR","counter","incrementCounter","bytesFromWordss","bytesToWordss","words","aesSync","keyBytes","ivBytes","aesEncryptSync","aesDecryptSync","subtle","pbkdf2","salt","importKey","deriveBits","bytesFromHex","hexString","rsaEncrypt","publicKey","exponent","modulus","sha1","digest","sha256","arrays","8","16","32","nextRandomUint","array","randomLong","bigIntRandom","BrentPollardFactor","two","ys","bigIntUint64MinusPqPlusOne","performY","condition","factorizeBrentPollardPQ","pqBytes","factors","primes","factor","pop","primeFactors","sort","splice","generateDh","dhConfig","aBigInt","pBigInt","generateA","gBytes","g_a","g_a_hash","computeDhKey","key_fingerprint","readBigIntFromBytesBE","_bits","emojis","getEmojisFingerprint","emojisLength","partOffset","codePoints","performTaskWorker","super","webWorker","awaiting","pending","utils","task","timeManager","lastMessageId","timeOffset","timeTicks","Date","now","messageId","serverTime","localTime","newTimeOffset","changed","server_time_offset","USER_AGENT","navigator","userAgent","IS_SAFARI","vendor","platform","maxTouchPoints","MSStream","match","IS_FIREFOX","LogTypes","LOG_LEVELS","None","Warn","Log","Debug","_logTimer","dT","toFixed","getCallerFunctionNameFromLine","IS_WEBKIT","line","splitted","lastIndexOf","STYLES_SUPPORTED","LINE_INDEX","getCallerFunctionName","lines","stack","LOGGER_STYLES","black","red","green","yellow","blue","magenta","cyan","white","logger","ignoreDebugReset","style","originalPrefix","originalStyle","logType","setPrefix","newPrefix","setLevel","level","bindPrefix","App","version","versionFull","build","langPackVersion","langPack","langPackCode","domains","baseDcId","isMainDomain","hostname","suffix","pause","ms","setTimeout","deferredPromise","deferredHelper","isFulfilled","isRejected","notify","lastNotify","addNotifyListener","deferred","catch","cancel","assign","findAndSplice","verify","findIndex","reuseResults","_constructor","listenerResults","once","addEventListener","collectResults","removeEventListener","_dispatchEvent","indexOfAndSplice","item","idx","spliced","dcId","url","logSuffix","handleOpen","dispatchEvent","handleError","close","handleClose","removeListeners","handleMessage","event","data","send","body","ws","logTypes","connect","WebSocket","binaryType","Counter","initialValue","encrypted","increment","codec","initPayload","val2","reversedPayload","encIv","decIv","encNew","decNew","obfuscateTag","update","ConnectionStatus","tag","Connection","retryTimeout","intermediate","obfuscation","connected","autoReconnect","onOpen","setTransportOpened","init","connection","networker","setConnectionStatus","Connected","cleanupSent","resend","encoded","encodeBody","releasePending","onMessage","decode","readPacket","parseResponse","response","processMessage","sessionId","onClose","needTimeout","retryAt","lastCloseTime","isNaN","Closed","reconnectTimeout","reconnect","clearTimeout","Connecting","bodySent","setTransportClosed","setAutoReconnect","enable","toEncode","encodePacket","promise","socketId","socketsProxied","Map","TEST_SUFFIX","sslSubdomains","dcOptions","host","port","chosenServers","transportSocket","connectionType","path","chosenServer","transportHTTP","dcOption","transportType","reuse","client","download","upload","servers","transports","dcConfigurator","opened","waitForWebSocket","https","chooseServer","websocket","httpPromise","_send","websocketPromise","socket","isHttpAvailable","isWebSocketAvailable","destroy","pinging","pingTransports","setTransportValue","fetch","status","arrayBuffer","TextDecoder","setConnected","destroyed","releasing","bytesCmp","disconnectDelayMin","disconnectDelayMax","pingInterval","pingMaxTime","connectionTimeout","file","RESEND_OPTIONS","noSchedule","notContentRelated","invokeAfterMsgConstructor","authKey","authKeyId","serverSalt","lastServerMessages","sentMessages","pendingMessages","pendingAcks","pendingResendReq","nextReq","checkConnectionPeriod","offline","isOnline","lastResponseTime","activeRequests","sendPingDelayDisconnect","pingDelayDisconnectDeferred","delays","lastPingTime","disconnectDelay","round","timeoutTime","startTime","pingId","lastPingDelayDisconnectId","wrapMtpCall","ping_id","disconnect_delay","rejectTimeout","elapsedTime","checkLongPoll","isClean","longPollPending","isStopped","isFileNetworker","sleepAfter","sendLongPoll","checkConnection","clearCheckConnectionTimeout","warn","serializer","storeMethod","pingMessage","msg_id","generateId","seq_no","generateSeqNo","getBytes","sendEncryptedRequest","toggleOffline","checkConnectionTimeout","authKeyUint8","isFileUpload","fileUpload","isFileDownload","fileDownload","updateSession","seqNo","prevSessionId","sentMessageId","sentMessage","container","forEachReverse","inner","innerSentMessageId","innerSentMessage","updateSentMessage","pushMessage","connectionInited","invokeWithLayer","layer","initConnection","language","afterMessageId","resultType","isAPI","oldTransport","nextReqTimeout","longPollInterval","clearInterval","clearPingDelayDisconnect","setInterval","forceReconnect","sendingLongPoll","max_delay","wait_after","max_wait","noResponse","longPoll","delay","checkConnectionRetryAt","scheduleRequest","noResponseMsgs","sqrt","pushResend","shouldResolve","msgId","timeout","TimedOut","setDrainTimeout","onDrainTimeout","onDrain","willChange","onConnectionStatusChange","innerMsgId","acked","dataWithPadding","isOut","msgKeyLargePlain","msgKeyLarge","msgKey","sha2aText","sha2bText","promises","results","aesKey","aesIv","sha2a","sha2b","akStopped","ackMsgIds","wrapMtpMessage","msg_ids","pendingResendReqLength","msgIds","outMessage","messages","messagesByteLen","hasApiCall","hasHttpWait","lengthOverflow","long","messageByteLength","filter","generateContainerMessage","messageWithBody","handleSentEncryptedRequestHTTP","innerMessages","storeRawBytes","getMsgKey","keyIv","getAesKeyIv","encryptedData","dataBuffer","getBuffer","paddingLength","getOffset","getEncryptedMessage","encryptedResult","request","requestData","getEncryptedOutput","baseError","code","originalError","responseBuffer","deserializer","fetchRawBytes","getDecryptedMessage","calcMsgKey","totalLength","messageBodyLength","messageBody","mt_message","seqno","setOffset","mt_rpc_result","req_msg_id","newServerSalt","cb","performScheduledRequest","notEmpty","rawError","matches","error_message","error_code","description","applyServerTime","innerMessage","applyServerSalt","new_server_salt","bad_msg_id","ackMessage","changedTimeOffset","badMessage","processMessageAck","first_msg_id","updatesProcessor","answer_msg_id","reqResend","lastResendReq","lastResend","pendingResend","reqMsgId","badMsgId","processError","networkerFactory","networkers","stoppedNetworkers","langCode","forceReconnectTimeout","testPublicKeysHex","publisKeysHex","publicKeysParsed","prepared","preparePromise","keyParsed","RSAPublicKey","fingerprintBytes","fingerprints","prepare","fingerprintHex","fill","foundKey","fingerprint","cached","requestArray","requestLength","headerArray","errorCode","auth_key_id","msg_len","auth","nonce","sendPlainRequest","rsaKeysManager","serverNonce","server_nonce","pq","server_public_key_fingerprints","select","pAndQ","sendReqDhParams","newNonce","p_q_inner_data_dc","new_nonce","dc","pQInnerDataSerialization","dataPadReversed","keyAesEncrypted","tempKey","dataWithHash","aesEncrypted","keyAesEncryptedBigInt","publicKeyModulusBigInt","getKeyAesEncrypted","req_DH_params","public_key_fingerprint","encrypted_data","requestBytes","new_nonce_hash","decryptServerDhDataAnswer","encrypted_answer","sendSetClientDhParams","encryptedAnswer","tmpAesKey","tmpAesIv","answerWithHash","answerWithPadding","dhPrime","dh_prime","gA","server_time","retry","verifyDhParams","dhPrimeHex","gABigInt","dhPrimeBigInt","twoPow","gB","retry_id","authKeyHash","authKeyAux","newNonceHash1","new_nonce_hash1","new_nonce_hash2","new_nonce_hash3","getTransportTypePromise","getTransportType","_try","sendReqPQ","blobConstruct","blobParts","mimeType","blob","safeMimeType","blobSafeMimeType","Blob","bb","BlobBuilder","blobPart","append","getBlob","db","storeName","storageIsAvailable","fromObject","safeAssign","openDatabase","preserve","onclose","createNew","openDbPromise","indexedDB","open","finished","onerror","onsuccess","calledNew","onabort","transaction","target","onversionchange","onupgradeneeded","oldVersion","newVersion","stores","store","objectStoreNames","contains","createObjectStore","indexes","createIndex","indexName","keyPath","objectParameters","entryName","getObjectStore","objectStore","put","fileName","save","perf","performance","oncomplete","requests","getAll","apiManager","cachedNetworkers","cachedExportPromise","gettingNetworkers","afterMessageTempIds","changeTransportType","connections","dcs","oldTransportType","oldObject","newObject","oldGetKey","newGetKey","replace","iterateNetworkers","info","changeNetworkerTransport","setBaseDcId","userAuth","dcID","getBaseDcId","user_auth","wasDcId","getNetworker","setOnDrainIfNeeded","storageKeys","storageResult","logoutPromises","invokeApi","ignoreErrors","closeDatabases","handled","maxNetworkers","found","getKey","generateNetworkerGetKey","ak","ss","authKeyHex","serverSaltHex","authorizer","_error","newTransportType","removeTransport","changeTransport","canRelease","removeNetworker","prepareTempMessageId","interval","cachedNetworker","performRequest","after","wrapApiCall","exportResolve","exportReject","dc_id","noErrorBox","exportedAuth","newDcId","unsetConnectionInited","includes","stopTime","waitTime","floodMaxTimeout","attachPromise","logOut","blobSupported","size","saveFileCallback","write","finalize","saveToStorage","getParts","replaceParts","parts","dbName","caches","timeoutOperation","Response","headers","rejected","res","fileSize","fakeWriter","getFakeFileWriter","saveFile","deleteAll","readBlobAsArrayBuffer","reader","FileReader","readBlobAs","apiFileManager","cacheStorage","cachedDownloadPromises","uploadPromises","downloadPulls","downloadActives","webpConvertPromises","refreshReferencePromises","tempId","queueId","uncompressTGS","uncompressTGV","svgIndex","__","width","height","fixFirefoxSvg","convertWebp","convertPromise","hex","activeDelta","downloadPull","downloadCheck","downloadLimit","from","canceled","limit","checkCancel","downloadRequest","getDelta","invoke","refreshReference","reference","file_reference","checkedReference","inputFileLocation","fileManager","isAvailable","process","isWebpSupported","ext","thumb_size","Boolean","photo_id","big","stickerset","short_name","emoticon","thumb_version","volume_id","local_id","getFileNameByLocation","cachedPromise","fileStorage","getFileStorage","deleteFile","downloadFile","cacheFileWriter","resolved","errorHandler","getFile","limitPart","getLimitPart","getFileWriter","fileWriter","writeFileDeferred","writeFilePromise","processDownloaded","requestWebFilePart","requestFilePart","delayed","superpuper","isFinal","processedResult","realSize","progress","isBigFile","doneParts","partSize","totalParts","fileId","_part","resultInputFile","md5_checksum","details","it","file_id","file_part","file_total_parts","generator","Set","webpSupported","setUpdatesProcessor","taskListeners","webpSupport","socketProxy","socketTask","socketProxied","localStorageProxy","finishTask","online","toggleStorage","originalPayload"],"mappings":"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","file":"mtproto.worker.1991be6aa417d5efa583.bundle.worker.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","var bigInt = (function (undefined) {\r\n \"use strict\";\r\n\r\n var BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_INT = 9007199254740992,\r\n MAX_INT_ARR = smallToArray(MAX_INT),\r\n DEFAULT_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n\r\n var supportsNativeBigInt = typeof BigInt === \"function\";\r\n\r\n function Integer(v, radix, alphabet, caseSensitive) {\r\n if (typeof v === \"undefined\") return Integer[0];\r\n if (typeof radix !== \"undefined\") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive);\r\n return parseValue(v);\r\n }\r\n\r\n function BigInteger(value, sign) {\r\n this.value = value;\r\n this.sign = sign;\r\n this.isSmall = false;\r\n }\r\n BigInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function SmallInteger(value) {\r\n this.value = value;\r\n this.sign = value < 0;\r\n this.isSmall = true;\r\n }\r\n SmallInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function NativeBigInt(value) {\r\n this.value = value;\r\n }\r\n NativeBigInt.prototype = Object.create(Integer.prototype);\r\n\r\n function isPrecise(n) {\r\n return -MAX_INT < n && n < MAX_INT;\r\n }\r\n\r\n function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes\r\n if (n < 1e7)\r\n return [n];\r\n if (n < 1e14)\r\n return [n % 1e7, Math.floor(n / 1e7)];\r\n return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];\r\n }\r\n\r\n function arrayToSmall(arr) { // If BASE changes this function may need to change\r\n trim(arr);\r\n var length = arr.length;\r\n if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {\r\n switch (length) {\r\n case 0: return 0;\r\n case 1: return arr[0];\r\n case 2: return arr[0] + arr[1] * BASE;\r\n default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function trim(v) {\r\n var i = v.length;\r\n while (v[--i] === 0);\r\n v.length = i + 1;\r\n }\r\n\r\n function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger\r\n var x = new Array(length);\r\n var i = -1;\r\n while (++i < length) {\r\n x[i] = 0;\r\n }\r\n return x;\r\n }\r\n\r\n function truncate(n) {\r\n if (n > 0) return Math.floor(n);\r\n return Math.ceil(n);\r\n }\r\n\r\n function add(a, b) { // assumes a and b are arrays with a.length >= b.length\r\n var l_a = a.length,\r\n l_b = b.length,\r\n r = new Array(l_a),\r\n carry = 0,\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l_b; i++) {\r\n sum = a[i] + b[i] + carry;\r\n carry = sum >= base ? 1 : 0;\r\n r[i] = sum - carry * base;\r\n }\r\n while (i < l_a) {\r\n sum = a[i] + carry;\r\n carry = sum === base ? 1 : 0;\r\n r[i++] = sum - carry * base;\r\n }\r\n if (carry > 0) r.push(carry);\r\n return r;\r\n }\r\n\r\n function addAny(a, b) {\r\n if (a.length >= b.length) return add(a, b);\r\n return add(b, a);\r\n }\r\n\r\n function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l; i++) {\r\n sum = a[i] - base + carry;\r\n carry = Math.floor(sum / base);\r\n r[i] = sum - carry * base;\r\n carry += 1;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall) {\r\n return new BigInteger(addSmall(a, Math.abs(b)), this.sign);\r\n }\r\n return new BigInteger(addAny(a, b), this.sign);\r\n };\r\n BigInteger.prototype.plus = BigInteger.prototype.add;\r\n\r\n SmallInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n if (isPrecise(a + b)) return new SmallInteger(a + b);\r\n b = smallToArray(Math.abs(b));\r\n }\r\n return new BigInteger(addSmall(b, Math.abs(a)), a < 0);\r\n };\r\n SmallInteger.prototype.plus = SmallInteger.prototype.add;\r\n\r\n NativeBigInt.prototype.add = function (v) {\r\n return new NativeBigInt(this.value + parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.plus = NativeBigInt.prototype.add;\r\n\r\n function subtract(a, b) { // assumes a and b are arrays with a >= b\r\n var a_l = a.length,\r\n b_l = b.length,\r\n r = new Array(a_l),\r\n borrow = 0,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < b_l; i++) {\r\n difference = a[i] - borrow - b[i];\r\n if (difference < 0) {\r\n difference += base;\r\n borrow = 1;\r\n } else borrow = 0;\r\n r[i] = difference;\r\n }\r\n for (i = b_l; i < a_l; i++) {\r\n difference = a[i] - borrow;\r\n if (difference < 0) difference += base;\r\n else {\r\n r[i++] = difference;\r\n break;\r\n }\r\n r[i] = difference;\r\n }\r\n for (; i < a_l; i++) {\r\n r[i] = a[i];\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function subtractAny(a, b, sign) {\r\n var value;\r\n if (compareAbs(a, b) >= 0) {\r\n value = subtract(a, b);\r\n } else {\r\n value = subtract(b, a);\r\n sign = !sign;\r\n }\r\n value = arrayToSmall(value);\r\n if (typeof value === \"number\") {\r\n if (sign) value = -value;\r\n return new SmallInteger(value);\r\n }\r\n return new BigInteger(value, sign);\r\n }\r\n\r\n function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n carry = -b,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < l; i++) {\r\n difference = a[i] + carry;\r\n carry = Math.floor(difference / base);\r\n difference %= base;\r\n r[i] = difference < 0 ? difference + base : difference;\r\n }\r\n r = arrayToSmall(r);\r\n if (typeof r === \"number\") {\r\n if (sign) r = -r;\r\n return new SmallInteger(r);\r\n } return new BigInteger(r, sign);\r\n }\r\n\r\n BigInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall)\r\n return subtractSmall(a, Math.abs(b), this.sign);\r\n return subtractAny(a, b, this.sign);\r\n };\r\n BigInteger.prototype.minus = BigInteger.prototype.subtract;\r\n\r\n SmallInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n return new SmallInteger(a - b);\r\n }\r\n return subtractSmall(b, Math.abs(a), a >= 0);\r\n };\r\n SmallInteger.prototype.minus = SmallInteger.prototype.subtract;\r\n\r\n NativeBigInt.prototype.subtract = function (v) {\r\n return new NativeBigInt(this.value - parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;\r\n\r\n BigInteger.prototype.negate = function () {\r\n return new BigInteger(this.value, !this.sign);\r\n };\r\n SmallInteger.prototype.negate = function () {\r\n var sign = this.sign;\r\n var small = new SmallInteger(-this.value);\r\n small.sign = !sign;\r\n return small;\r\n };\r\n NativeBigInt.prototype.negate = function () {\r\n return new NativeBigInt(-this.value);\r\n }\r\n\r\n BigInteger.prototype.abs = function () {\r\n return new BigInteger(this.value, false);\r\n };\r\n SmallInteger.prototype.abs = function () {\r\n return new SmallInteger(Math.abs(this.value));\r\n };\r\n NativeBigInt.prototype.abs = function () {\r\n return new NativeBigInt(this.value >= 0 ? this.value : -this.value);\r\n }\r\n\r\n\r\n function multiplyLong(a, b) {\r\n var a_l = a.length,\r\n b_l = b.length,\r\n l = a_l + b_l,\r\n r = createArray(l),\r\n base = BASE,\r\n product, carry, i, a_i, b_j;\r\n for (i = 0; i < a_l; ++i) {\r\n a_i = a[i];\r\n for (var j = 0; j < b_l; ++j) {\r\n b_j = b[j];\r\n product = a_i * b_j + r[i + j];\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n r[i + j + 1] += carry;\r\n }\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n carry = 0,\r\n product, i;\r\n for (i = 0; i < l; i++) {\r\n product = a[i] * b + carry;\r\n carry = Math.floor(product / base);\r\n r[i] = product - carry * base;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n function shiftLeft(x, n) {\r\n var r = [];\r\n while (n-- > 0) r.push(0);\r\n return r.concat(x);\r\n }\r\n\r\n function multiplyKaratsuba(x, y) {\r\n var n = Math.max(x.length, y.length);\r\n\r\n if (n <= 30) return multiplyLong(x, y);\r\n n = Math.ceil(n / 2);\r\n\r\n var b = x.slice(n),\r\n a = x.slice(0, n),\r\n d = y.slice(n),\r\n c = y.slice(0, n);\r\n\r\n var ac = multiplyKaratsuba(a, c),\r\n bd = multiplyKaratsuba(b, d),\r\n abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));\r\n\r\n var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));\r\n trim(product);\r\n return product;\r\n }\r\n\r\n // The following function is derived from a surface fit of a graph plotting the performance difference\r\n // between long multiplication and karatsuba multiplication versus the lengths of the two arrays.\r\n function useKaratsuba(l1, l2) {\r\n return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;\r\n }\r\n\r\n BigInteger.prototype.multiply = function (v) {\r\n var n = parseValue(v),\r\n a = this.value, b = n.value,\r\n sign = this.sign !== n.sign,\r\n abs;\r\n if (n.isSmall) {\r\n if (b === 0) return Integer[0];\r\n if (b === 1) return this;\r\n if (b === -1) return this.negate();\r\n abs = Math.abs(b);\r\n if (abs < BASE) {\r\n return new BigInteger(multiplySmall(a, abs), sign);\r\n }\r\n b = smallToArray(abs);\r\n }\r\n if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes\r\n return new BigInteger(multiplyKaratsuba(a, b), sign);\r\n return new BigInteger(multiplyLong(a, b), sign);\r\n };\r\n\r\n BigInteger.prototype.times = BigInteger.prototype.multiply;\r\n\r\n function multiplySmallAndArray(a, b, sign) { // a >= 0\r\n if (a < BASE) {\r\n return new BigInteger(multiplySmall(b, a), sign);\r\n }\r\n return new BigInteger(multiplyLong(b, smallToArray(a)), sign);\r\n }\r\n SmallInteger.prototype._multiplyBySmall = function (a) {\r\n if (isPrecise(a.value * this.value)) {\r\n return new SmallInteger(a.value * this.value);\r\n }\r\n return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);\r\n };\r\n BigInteger.prototype._multiplyBySmall = function (a) {\r\n if (a.value === 0) return Integer[0];\r\n if (a.value === 1) return this;\r\n if (a.value === -1) return this.negate();\r\n return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);\r\n };\r\n SmallInteger.prototype.multiply = function (v) {\r\n return parseValue(v)._multiplyBySmall(this);\r\n };\r\n SmallInteger.prototype.times = SmallInteger.prototype.multiply;\r\n\r\n NativeBigInt.prototype.multiply = function (v) {\r\n return new NativeBigInt(this.value * parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;\r\n\r\n function square(a) {\r\n //console.assert(2 * BASE * BASE < MAX_INT);\r\n var l = a.length,\r\n r = createArray(l + l),\r\n base = BASE,\r\n product, carry, i, a_i, a_j;\r\n for (i = 0; i < l; i++) {\r\n a_i = a[i];\r\n carry = 0 - a_i * a_i;\r\n for (var j = i; j < l; j++) {\r\n a_j = a[j];\r\n product = 2 * (a_i * a_j) + r[i + j] + carry;\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n }\r\n r[i + l] = carry;\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.square = function () {\r\n return new BigInteger(square(this.value), false);\r\n };\r\n\r\n SmallInteger.prototype.square = function () {\r\n var value = this.value * this.value;\r\n if (isPrecise(value)) return new SmallInteger(value);\r\n return new BigInteger(square(smallToArray(Math.abs(this.value))), false);\r\n };\r\n\r\n NativeBigInt.prototype.square = function (v) {\r\n return new NativeBigInt(this.value * this.value);\r\n }\r\n\r\n function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n base = BASE,\r\n result = createArray(b.length),\r\n divisorMostSignificantDigit = b[b_l - 1],\r\n // normalization\r\n lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),\r\n remainder = multiplySmall(a, lambda),\r\n divisor = multiplySmall(b, lambda),\r\n quotientDigit, shift, carry, borrow, i, l, q;\r\n if (remainder.length <= a_l) remainder.push(0);\r\n divisor.push(0);\r\n divisorMostSignificantDigit = divisor[b_l - 1];\r\n for (shift = a_l - b_l; shift >= 0; shift--) {\r\n quotientDigit = base - 1;\r\n if (remainder[shift + b_l] !== divisorMostSignificantDigit) {\r\n quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);\r\n }\r\n // quotientDigit <= base - 1\r\n carry = 0;\r\n borrow = 0;\r\n l = divisor.length;\r\n for (i = 0; i < l; i++) {\r\n carry += quotientDigit * divisor[i];\r\n q = Math.floor(carry / base);\r\n borrow += remainder[shift + i] - (carry - q * base);\r\n carry = q;\r\n if (borrow < 0) {\r\n remainder[shift + i] = borrow + base;\r\n borrow = -1;\r\n } else {\r\n remainder[shift + i] = borrow;\r\n borrow = 0;\r\n }\r\n }\r\n while (borrow !== 0) {\r\n quotientDigit -= 1;\r\n carry = 0;\r\n for (i = 0; i < l; i++) {\r\n carry += remainder[shift + i] - base + divisor[i];\r\n if (carry < 0) {\r\n remainder[shift + i] = carry + base;\r\n carry = 0;\r\n } else {\r\n remainder[shift + i] = carry;\r\n carry = 1;\r\n }\r\n }\r\n borrow += carry;\r\n }\r\n result[shift] = quotientDigit;\r\n }\r\n // denormalization\r\n remainder = divModSmall(remainder, lambda)[0];\r\n return [arrayToSmall(result), arrayToSmall(remainder)];\r\n }\r\n\r\n function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/\r\n // Performs faster than divMod1 on larger input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n result = [],\r\n part = [],\r\n base = BASE,\r\n guess, xlen, highx, highy, check;\r\n while (a_l) {\r\n part.unshift(a[--a_l]);\r\n trim(part);\r\n if (compareAbs(part, b) < 0) {\r\n result.push(0);\r\n continue;\r\n }\r\n xlen = part.length;\r\n highx = part[xlen - 1] * base + part[xlen - 2];\r\n highy = b[b_l - 1] * base + b[b_l - 2];\r\n if (xlen > b_l) {\r\n highx = (highx + 1) * base;\r\n }\r\n guess = Math.ceil(highx / highy);\r\n do {\r\n check = multiplySmall(b, guess);\r\n if (compareAbs(check, part) <= 0) break;\r\n guess--;\r\n } while (guess);\r\n result.push(guess);\r\n part = subtract(part, check);\r\n }\r\n result.reverse();\r\n return [arrayToSmall(result), arrayToSmall(part)];\r\n }\r\n\r\n function divModSmall(value, lambda) {\r\n var length = value.length,\r\n quotient = createArray(length),\r\n base = BASE,\r\n i, q, remainder, divisor;\r\n remainder = 0;\r\n for (i = length - 1; i >= 0; --i) {\r\n divisor = remainder * base + value[i];\r\n q = truncate(divisor / lambda);\r\n remainder = divisor - q * lambda;\r\n quotient[i] = q | 0;\r\n }\r\n return [quotient, remainder | 0];\r\n }\r\n\r\n function divModAny(self, v) {\r\n var value, n = parseValue(v);\r\n if (supportsNativeBigInt) {\r\n return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)];\r\n }\r\n var a = self.value, b = n.value;\r\n var quotient;\r\n if (b === 0) throw new Error(\"Cannot divide by zero\");\r\n if (self.isSmall) {\r\n if (n.isSmall) {\r\n return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];\r\n }\r\n return [Integer[0], self];\r\n }\r\n if (n.isSmall) {\r\n if (b === 1) return [self, Integer[0]];\r\n if (b == -1) return [self.negate(), Integer[0]];\r\n var abs = Math.abs(b);\r\n if (abs < BASE) {\r\n value = divModSmall(a, abs);\r\n quotient = arrayToSmall(value[0]);\r\n var remainder = value[1];\r\n if (self.sign) remainder = -remainder;\r\n if (typeof quotient === \"number\") {\r\n if (self.sign !== n.sign) quotient = -quotient;\r\n return [new SmallInteger(quotient), new SmallInteger(remainder)];\r\n }\r\n return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];\r\n }\r\n b = smallToArray(abs);\r\n }\r\n var comparison = compareAbs(a, b);\r\n if (comparison === -1) return [Integer[0], self];\r\n if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];\r\n\r\n // divMod1 is faster on smaller input sizes\r\n if (a.length + b.length <= 200)\r\n value = divMod1(a, b);\r\n else value = divMod2(a, b);\r\n\r\n quotient = value[0];\r\n var qSign = self.sign !== n.sign,\r\n mod = value[1],\r\n mSign = self.sign;\r\n if (typeof quotient === \"number\") {\r\n if (qSign) quotient = -quotient;\r\n quotient = new SmallInteger(quotient);\r\n } else quotient = new BigInteger(quotient, qSign);\r\n if (typeof mod === \"number\") {\r\n if (mSign) mod = -mod;\r\n mod = new SmallInteger(mod);\r\n } else mod = new BigInteger(mod, mSign);\r\n return [quotient, mod];\r\n }\r\n\r\n BigInteger.prototype.divmod = function (v) {\r\n var result = divModAny(this, v);\r\n return {\r\n quotient: result[0],\r\n remainder: result[1]\r\n };\r\n };\r\n NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod;\r\n\r\n\r\n BigInteger.prototype.divide = function (v) {\r\n return divModAny(this, v)[0];\r\n };\r\n NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) {\r\n return new NativeBigInt(this.value / parseValue(v).value);\r\n };\r\n SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;\r\n\r\n BigInteger.prototype.mod = function (v) {\r\n return divModAny(this, v)[1];\r\n };\r\n NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) {\r\n return new NativeBigInt(this.value % parseValue(v).value);\r\n };\r\n SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;\r\n\r\n BigInteger.prototype.pow = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value,\r\n value, x, y;\r\n if (b === 0) return Integer[1];\r\n if (a === 0) return Integer[0];\r\n if (a === 1) return Integer[1];\r\n if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.sign) {\r\n return Integer[0];\r\n }\r\n if (!n.isSmall) throw new Error(\"The exponent \" + n.toString() + \" is too large.\");\r\n if (this.isSmall) {\r\n if (isPrecise(value = Math.pow(a, b)))\r\n return new SmallInteger(truncate(value));\r\n }\r\n x = this;\r\n y = Integer[1];\r\n while (true) {\r\n if (b & 1 === 1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === 0) break;\r\n b /= 2;\r\n x = x.square();\r\n }\r\n return y;\r\n };\r\n SmallInteger.prototype.pow = BigInteger.prototype.pow;\r\n\r\n NativeBigInt.prototype.pow = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value, b = n.value;\r\n var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2);\r\n if (b === _0) return Integer[1];\r\n if (a === _0) return Integer[0];\r\n if (a === _1) return Integer[1];\r\n if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.isNegative()) return new NativeBigInt(_0);\r\n var x = this;\r\n var y = Integer[1];\r\n while (true) {\r\n if ((b & _1) === _1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === _0) break;\r\n b /= _2;\r\n x = x.square();\r\n }\r\n return y;\r\n }\r\n\r\n BigInteger.prototype.modPow = function (exp, mod) {\r\n exp = parseValue(exp);\r\n mod = parseValue(mod);\r\n if (mod.isZero()) throw new Error(\"Cannot take modPow with modulus 0\");\r\n var r = Integer[1],\r\n base = this.mod(mod);\r\n if (exp.isNegative()) {\r\n exp = exp.multiply(Integer[-1]);\r\n base = base.modInv(mod);\r\n }\r\n while (exp.isPositive()) {\r\n if (base.isZero()) return Integer[0];\r\n if (exp.isOdd()) r = r.multiply(base).mod(mod);\r\n exp = exp.divide(2);\r\n base = base.square().mod(mod);\r\n }\r\n return r;\r\n };\r\n NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow;\r\n\r\n function compareAbs(a, b) {\r\n if (a.length !== b.length) {\r\n return a.length > b.length ? 1 : -1;\r\n }\r\n for (var i = a.length - 1; i >= 0; i--) {\r\n if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n BigInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) return 1;\r\n return compareAbs(a, b);\r\n };\r\n SmallInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = Math.abs(this.value),\r\n b = n.value;\r\n if (n.isSmall) {\r\n b = Math.abs(b);\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n return -1;\r\n };\r\n NativeBigInt.prototype.compareAbs = function (v) {\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n a = a >= 0 ? a : -a;\r\n b = b >= 0 ? b : -b;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n\r\n BigInteger.prototype.compare = function (v) {\r\n // See discussion about comparison with Infinity:\r\n // https://github.com/peterolson/BigInteger.js/issues/61\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (this.sign !== n.sign) {\r\n return n.sign ? 1 : -1;\r\n }\r\n if (n.isSmall) {\r\n return this.sign ? -1 : 1;\r\n }\r\n return compareAbs(a, b) * (this.sign ? -1 : 1);\r\n };\r\n BigInteger.prototype.compareTo = BigInteger.prototype.compare;\r\n\r\n SmallInteger.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) {\r\n return a == b ? 0 : a > b ? 1 : -1;\r\n }\r\n if (a < 0 !== n.sign) {\r\n return a < 0 ? -1 : 1;\r\n }\r\n return a < 0 ? 1 : -1;\r\n };\r\n SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;\r\n\r\n NativeBigInt.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;\r\n\r\n BigInteger.prototype.equals = function (v) {\r\n return this.compare(v) === 0;\r\n };\r\n NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;\r\n\r\n BigInteger.prototype.notEquals = function (v) {\r\n return this.compare(v) !== 0;\r\n };\r\n NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;\r\n\r\n BigInteger.prototype.greater = function (v) {\r\n return this.compare(v) > 0;\r\n };\r\n NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;\r\n\r\n BigInteger.prototype.lesser = function (v) {\r\n return this.compare(v) < 0;\r\n };\r\n NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;\r\n\r\n BigInteger.prototype.greaterOrEquals = function (v) {\r\n return this.compare(v) >= 0;\r\n };\r\n NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;\r\n\r\n BigInteger.prototype.lesserOrEquals = function (v) {\r\n return this.compare(v) <= 0;\r\n };\r\n NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;\r\n\r\n BigInteger.prototype.isEven = function () {\r\n return (this.value[0] & 1) === 0;\r\n };\r\n SmallInteger.prototype.isEven = function () {\r\n return (this.value & 1) === 0;\r\n };\r\n NativeBigInt.prototype.isEven = function () {\r\n return (this.value & BigInt(1)) === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isOdd = function () {\r\n return (this.value[0] & 1) === 1;\r\n };\r\n SmallInteger.prototype.isOdd = function () {\r\n return (this.value & 1) === 1;\r\n };\r\n NativeBigInt.prototype.isOdd = function () {\r\n return (this.value & BigInt(1)) === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isPositive = function () {\r\n return !this.sign;\r\n };\r\n SmallInteger.prototype.isPositive = function () {\r\n return this.value > 0;\r\n };\r\n NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive;\r\n\r\n BigInteger.prototype.isNegative = function () {\r\n return this.sign;\r\n };\r\n SmallInteger.prototype.isNegative = function () {\r\n return this.value < 0;\r\n };\r\n NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative;\r\n\r\n BigInteger.prototype.isUnit = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isUnit = function () {\r\n return Math.abs(this.value) === 1;\r\n };\r\n NativeBigInt.prototype.isUnit = function () {\r\n return this.abs().value === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isZero = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isZero = function () {\r\n return this.value === 0;\r\n };\r\n NativeBigInt.prototype.isZero = function () {\r\n return this.value === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isDivisibleBy = function (v) {\r\n var n = parseValue(v);\r\n if (n.isZero()) return false;\r\n if (n.isUnit()) return true;\r\n if (n.compareAbs(2) === 0) return this.isEven();\r\n return this.mod(n).isZero();\r\n };\r\n NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;\r\n\r\n function isBasicPrime(v) {\r\n var n = v.abs();\r\n if (n.isUnit()) return false;\r\n if (n.equals(2) || n.equals(3) || n.equals(5)) return true;\r\n if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;\r\n if (n.lesser(49)) return true;\r\n // we don't know if it's prime: let the other functions figure it out\r\n }\r\n\r\n function millerRabinTest(n, a) {\r\n var nPrev = n.prev(),\r\n b = nPrev,\r\n r = 0,\r\n d, t, i, x;\r\n while (b.isEven()) b = b.divide(2), r++;\r\n next: for (i = 0; i < a.length; i++) {\r\n if (n.lesser(a[i])) continue;\r\n x = bigInt(a[i]).modPow(b, n);\r\n if (x.isUnit() || x.equals(nPrev)) continue;\r\n for (d = r - 1; d != 0; d--) {\r\n x = x.square().mod(n);\r\n if (x.isUnit()) return false;\r\n if (x.equals(nPrev)) continue next;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Set \"strict\" to true to force GRH-supported lower bound of 2*log(N)^2\r\n BigInteger.prototype.isPrime = function (strict) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var bits = n.bitLength();\r\n if (bits <= 64)\r\n return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);\r\n var logN = Math.log(2) * bits.toJSNumber();\r\n var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt(i + 2));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;\r\n\r\n BigInteger.prototype.isProbablePrime = function (iterations, rng) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var t = iterations === undefined ? 5 : iterations;\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt.randBetween(2, n.minus(2), rng));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;\r\n\r\n BigInteger.prototype.modInv = function (n) {\r\n var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;\r\n while (!newR.isZero()) {\r\n q = r.divide(newR);\r\n lastT = t;\r\n lastR = r;\r\n t = newT;\r\n r = newR;\r\n newT = lastT.subtract(q.multiply(newT));\r\n newR = lastR.subtract(q.multiply(newR));\r\n }\r\n if (!r.isUnit()) throw new Error(this.toString() + \" and \" + n.toString() + \" are not co-prime\");\r\n if (t.compare(0) === -1) {\r\n t = t.add(n);\r\n }\r\n if (this.isNegative()) {\r\n return t.negate();\r\n }\r\n return t;\r\n };\r\n\r\n NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv;\r\n\r\n BigInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return subtractSmall(value, 1, this.sign);\r\n }\r\n return new BigInteger(addSmall(value, 1), this.sign);\r\n };\r\n SmallInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (value + 1 < MAX_INT) return new SmallInteger(value + 1);\r\n return new BigInteger(MAX_INT_ARR, false);\r\n };\r\n NativeBigInt.prototype.next = function () {\r\n return new NativeBigInt(this.value + BigInt(1));\r\n }\r\n\r\n BigInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return new BigInteger(addSmall(value, 1), true);\r\n }\r\n return subtractSmall(value, 1, this.sign);\r\n };\r\n SmallInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);\r\n return new BigInteger(MAX_INT_ARR, true);\r\n };\r\n NativeBigInt.prototype.prev = function () {\r\n return new NativeBigInt(this.value - BigInt(1));\r\n }\r\n\r\n var powersOfTwo = [1];\r\n while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);\r\n var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];\r\n\r\n function shift_isSmall(n) {\r\n return Math.abs(n) <= BASE;\r\n }\r\n\r\n BigInteger.prototype.shiftLeft = function (v) {\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftRight(-n);\r\n var result = this;\r\n if (result.isZero()) return result;\r\n while (n >= powers2Length) {\r\n result = result.multiply(highestPower2);\r\n n -= powers2Length - 1;\r\n }\r\n return result.multiply(powersOfTwo[n]);\r\n };\r\n NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;\r\n\r\n BigInteger.prototype.shiftRight = function (v) {\r\n var remQuo;\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftLeft(-n);\r\n var result = this;\r\n while (n >= powers2Length) {\r\n if (result.isZero() || (result.isNegative() && result.isUnit())) return result;\r\n remQuo = divModAny(result, highestPower2);\r\n result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n n -= powers2Length - 1;\r\n }\r\n remQuo = divModAny(result, powersOfTwo[n]);\r\n return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n };\r\n NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;\r\n\r\n function bitwise(x, y, fn) {\r\n y = parseValue(y);\r\n var xSign = x.isNegative(), ySign = y.isNegative();\r\n var xRem = xSign ? x.not() : x,\r\n yRem = ySign ? y.not() : y;\r\n var xDigit = 0, yDigit = 0;\r\n var xDivMod = null, yDivMod = null;\r\n var result = [];\r\n while (!xRem.isZero() || !yRem.isZero()) {\r\n xDivMod = divModAny(xRem, highestPower2);\r\n xDigit = xDivMod[1].toJSNumber();\r\n if (xSign) {\r\n xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers\r\n }\r\n\r\n yDivMod = divModAny(yRem, highestPower2);\r\n yDigit = yDivMod[1].toJSNumber();\r\n if (ySign) {\r\n yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers\r\n }\r\n\r\n xRem = xDivMod[0];\r\n yRem = yDivMod[0];\r\n result.push(fn(xDigit, yDigit));\r\n }\r\n var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);\r\n for (var i = result.length - 1; i >= 0; i -= 1) {\r\n sum = sum.multiply(highestPower2).add(bigInt(result[i]));\r\n }\r\n return sum;\r\n }\r\n\r\n BigInteger.prototype.not = function () {\r\n return this.negate().prev();\r\n };\r\n NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not;\r\n\r\n BigInteger.prototype.and = function (n) {\r\n return bitwise(this, n, function (a, b) { return a & b; });\r\n };\r\n NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and;\r\n\r\n BigInteger.prototype.or = function (n) {\r\n return bitwise(this, n, function (a, b) { return a | b; });\r\n };\r\n NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or;\r\n\r\n BigInteger.prototype.xor = function (n) {\r\n return bitwise(this, n, function (a, b) { return a ^ b; });\r\n };\r\n NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor;\r\n\r\n var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;\r\n function roughLOB(n) { // get lowestOneBit (rough)\r\n // SmallInteger: return Min(lowestOneBit(n), 1 << 30)\r\n // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]\r\n var v = n.value,\r\n x = typeof v === \"number\" ? v | LOBMASK_I :\r\n typeof v === \"bigint\" ? v | BigInt(LOBMASK_I) :\r\n v[0] + v[1] * BASE | LOBMASK_BI;\r\n return x & -x;\r\n }\r\n\r\n function integerLogarithm(value, base) {\r\n if (base.compareTo(value) <= 0) {\r\n var tmp = integerLogarithm(value, base.square(base));\r\n var p = tmp.p;\r\n var e = tmp.e;\r\n var t = p.multiply(base);\r\n return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };\r\n }\r\n return { p: bigInt(1), e: 0 };\r\n }\r\n\r\n BigInteger.prototype.bitLength = function () {\r\n var n = this;\r\n if (n.compareTo(bigInt(0)) < 0) {\r\n n = n.negate().subtract(bigInt(1));\r\n }\r\n if (n.compareTo(bigInt(0)) === 0) {\r\n return bigInt(0);\r\n }\r\n return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));\r\n }\r\n NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;\r\n\r\n function max(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.greater(b) ? a : b;\r\n }\r\n function min(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.lesser(b) ? a : b;\r\n }\r\n function gcd(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n if (a.equals(b)) return a;\r\n if (a.isZero()) return b;\r\n if (b.isZero()) return a;\r\n var c = Integer[1], d, t;\r\n while (a.isEven() && b.isEven()) {\r\n d = min(roughLOB(a), roughLOB(b));\r\n a = a.divide(d);\r\n b = b.divide(d);\r\n c = c.multiply(d);\r\n }\r\n while (a.isEven()) {\r\n a = a.divide(roughLOB(a));\r\n }\r\n do {\r\n while (b.isEven()) {\r\n b = b.divide(roughLOB(b));\r\n }\r\n if (a.greater(b)) {\r\n t = b; b = a; a = t;\r\n }\r\n b = b.subtract(a);\r\n } while (!b.isZero());\r\n return c.isUnit() ? a : a.multiply(c);\r\n }\r\n function lcm(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n return a.divide(gcd(a, b)).multiply(b);\r\n }\r\n function randBetween(a, b, rng) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n var usedRNG = rng || Math.random;\r\n var low = min(a, b), high = max(a, b);\r\n var range = high.subtract(low).add(1);\r\n if (range.isSmall) return low.add(Math.floor(usedRNG() * range));\r\n var digits = toBase(range, BASE).value;\r\n var result = [], restricted = true;\r\n for (var i = 0; i < digits.length; i++) {\r\n var top = restricted ? digits[i] + (i + 1 < digits.length ? digits[i + 1] / BASE : 0) : BASE;\r\n var digit = truncate(usedRNG() * top);\r\n result.push(digit);\r\n if (digit < digits[i]) restricted = false;\r\n }\r\n return low.add(Integer.fromArray(result, BASE, false));\r\n }\r\n\r\n var parseBase = function (text, base, alphabet, caseSensitive) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n text = String(text);\r\n if (!caseSensitive) {\r\n text = text.toLowerCase();\r\n alphabet = alphabet.toLowerCase();\r\n }\r\n var length = text.length;\r\n var i;\r\n var absBase = Math.abs(base);\r\n var alphabetValues = {};\r\n for (i = 0; i < alphabet.length; i++) {\r\n alphabetValues[alphabet[i]] = i;\r\n }\r\n for (i = 0; i < length; i++) {\r\n var c = text[i];\r\n if (c === \"-\") continue;\r\n if (c in alphabetValues) {\r\n if (alphabetValues[c] >= absBase) {\r\n if (c === \"1\" && absBase === 1) continue;\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n }\r\n }\r\n }\r\n base = parseValue(base);\r\n var digits = [];\r\n var isNegative = text[0] === \"-\";\r\n for (i = isNegative ? 1 : 0; i < text.length; i++) {\r\n var c = text[i];\r\n if (c in alphabetValues) digits.push(parseValue(alphabetValues[c]));\r\n else if (c === \"<\") {\r\n var start = i;\r\n do { i++; } while (text[i] !== \">\" && i < text.length);\r\n digits.push(parseValue(text.slice(start + 1, i)));\r\n }\r\n else throw new Error(c + \" is not a valid character\");\r\n }\r\n return parseBaseFromArray(digits, base, isNegative);\r\n };\r\n\r\n function parseBaseFromArray(digits, base, isNegative) {\r\n var val = Integer[0], pow = Integer[1], i;\r\n for (i = digits.length - 1; i >= 0; i--) {\r\n val = val.add(digits[i].times(pow));\r\n pow = pow.times(base);\r\n }\r\n return isNegative ? val.negate() : val;\r\n }\r\n\r\n function stringify(digit, alphabet) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n if (digit < alphabet.length) {\r\n return alphabet[digit];\r\n }\r\n return \"<\" + digit + \">\";\r\n }\r\n\r\n function toBase(n, base) {\r\n base = bigInt(base);\r\n if (base.isZero()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n throw new Error(\"Cannot convert nonzero numbers to base 0.\");\r\n }\r\n if (base.equals(-1)) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n if (n.isNegative())\r\n return {\r\n value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber()))\r\n .map(Array.prototype.valueOf, [1, 0])\r\n ),\r\n isNegative: false\r\n };\r\n\r\n var arr = Array.apply(null, Array(n.toJSNumber() - 1))\r\n .map(Array.prototype.valueOf, [0, 1]);\r\n arr.unshift([1]);\r\n return {\r\n value: [].concat.apply([], arr),\r\n isNegative: false\r\n };\r\n }\r\n\r\n var neg = false;\r\n if (n.isNegative() && base.isPositive()) {\r\n neg = true;\r\n n = n.abs();\r\n }\r\n if (base.isUnit()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n\r\n return {\r\n value: Array.apply(null, Array(n.toJSNumber()))\r\n .map(Number.prototype.valueOf, 1),\r\n isNegative: neg\r\n };\r\n }\r\n var out = [];\r\n var left = n, divmod;\r\n while (left.isNegative() || left.compareAbs(base) >= 0) {\r\n divmod = left.divmod(base);\r\n left = divmod.quotient;\r\n var digit = divmod.remainder;\r\n if (digit.isNegative()) {\r\n digit = base.minus(digit).abs();\r\n left = left.next();\r\n }\r\n out.push(digit.toJSNumber());\r\n }\r\n out.push(left.toJSNumber());\r\n return { value: out.reverse(), isNegative: neg };\r\n }\r\n\r\n function toBaseString(n, base, alphabet) {\r\n var arr = toBase(n, base);\r\n return (arr.isNegative ? \"-\" : \"\") + arr.value.map(function (x) {\r\n return stringify(x, alphabet);\r\n }).join('');\r\n }\r\n\r\n BigInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n SmallInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n NativeBigInt.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n BigInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix !== 10) return toBaseString(this, radix, alphabet);\r\n var v = this.value, l = v.length, str = String(v[--l]), zeros = \"0000000\", digit;\r\n while (--l >= 0) {\r\n digit = String(v[l]);\r\n str += zeros.slice(digit.length) + digit;\r\n }\r\n var sign = this.sign ? \"-\" : \"\";\r\n return sign + str;\r\n };\r\n\r\n SmallInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix != 10) return toBaseString(this, radix, alphabet);\r\n return String(this.value);\r\n };\r\n\r\n NativeBigInt.prototype.toString = SmallInteger.prototype.toString;\r\n\r\n NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }\r\n\r\n BigInteger.prototype.valueOf = function () {\r\n return parseInt(this.toString(), 10);\r\n };\r\n BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;\r\n\r\n SmallInteger.prototype.valueOf = function () {\r\n return this.value;\r\n };\r\n SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;\r\n NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () {\r\n return parseInt(this.toString(), 10);\r\n }\r\n\r\n function parseStringValue(v) {\r\n if (isPrecise(+v)) {\r\n var x = +v;\r\n if (x === truncate(x))\r\n return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x);\r\n throw new Error(\"Invalid integer: \" + v);\r\n }\r\n var sign = v[0] === \"-\";\r\n if (sign) v = v.slice(1);\r\n var split = v.split(/e/i);\r\n if (split.length > 2) throw new Error(\"Invalid integer: \" + split.join(\"e\"));\r\n if (split.length === 2) {\r\n var exp = split[1];\r\n if (exp[0] === \"+\") exp = exp.slice(1);\r\n exp = +exp;\r\n if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error(\"Invalid integer: \" + exp + \" is not a valid exponent.\");\r\n var text = split[0];\r\n var decimalPlace = text.indexOf(\".\");\r\n if (decimalPlace >= 0) {\r\n exp -= text.length - decimalPlace - 1;\r\n text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);\r\n }\r\n if (exp < 0) throw new Error(\"Cannot include negative exponent part for integers\");\r\n text += (new Array(exp + 1)).join(\"0\");\r\n v = text;\r\n }\r\n var isValid = /^([0-9][0-9]*)$/.test(v);\r\n if (!isValid) throw new Error(\"Invalid integer: \" + v);\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(sign ? \"-\" + v : v));\r\n }\r\n var r = [], max = v.length, l = LOG_BASE, min = max - l;\r\n while (max > 0) {\r\n r.push(+v.slice(min, max));\r\n min -= l;\r\n if (min < 0) min = 0;\r\n max -= l;\r\n }\r\n trim(r);\r\n return new BigInteger(r, sign);\r\n }\r\n\r\n function parseNumberValue(v) {\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(v));\r\n }\r\n if (isPrecise(v)) {\r\n if (v !== truncate(v)) throw new Error(v + \" is not an integer.\");\r\n return new SmallInteger(v);\r\n }\r\n return parseStringValue(v.toString());\r\n }\r\n\r\n function parseValue(v) {\r\n if (typeof v === \"number\") {\r\n return parseNumberValue(v);\r\n }\r\n if (typeof v === \"string\") {\r\n return parseStringValue(v);\r\n }\r\n if (typeof v === \"bigint\") {\r\n return new NativeBigInt(v);\r\n }\r\n return v;\r\n }\r\n // Pre-define numbers in range [-999,999]\r\n for (var i = 0; i < 1000; i++) {\r\n Integer[i] = parseValue(i);\r\n if (i > 0) Integer[-i] = parseValue(-i);\r\n }\r\n // Backwards compatibility\r\n Integer.one = Integer[1];\r\n Integer.zero = Integer[0];\r\n Integer.minusOne = Integer[-1];\r\n Integer.max = max;\r\n Integer.min = min;\r\n Integer.gcd = gcd;\r\n Integer.lcm = lcm;\r\n Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; };\r\n Integer.randBetween = randBetween;\r\n\r\n Integer.fromArray = function (digits, base, isNegative) {\r\n return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);\r\n };\r\n\r\n return Integer;\r\n})();\r\n\r\n// Node.js check\r\nif (typeof module !== \"undefined\" && module.hasOwnProperty(\"exports\")) {\r\n module.exports = bigInt;\r\n}\r\n\r\n//amd check\r\nif (typeof define === \"function\" && define.amd) {\r\n define( function () {\r\n return bigInt;\r\n });\r\n}\r\n","/*! pako 2.0.3 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).pako={})}(this,(function(e){\"use strict\";var t=(e,t,i,n)=>{let a=65535&e|0,r=e>>>16&65535|0,s=0;for(;0!==i;){s=i>2e3?2e3:i,i-=s;do{a=a+t[n++]|0,r=r+a|0}while(--s);a%=65521,r%=65521}return a|r<<16|0};const i=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var n=(e,t,n,a)=>{const r=i,s=a+n;e^=-1;for(let i=a;i<s;i++)e=e>>>8^r[255&(e^t[i])];return-1^e};var a=function(e,t){let i,n,a,r,s,o,l,d,f,h,c,u,w,b,k,m,_,g,v,p,y,x,E,R;const A=e.state;i=e.next_in,E=e.input,n=i+(e.avail_in-5),a=e.next_out,R=e.output,r=a-(t-e.avail_out),s=a+(e.avail_out-257),o=A.dmax,l=A.wsize,d=A.whave,f=A.wnext,h=A.window,c=A.hold,u=A.bits,w=A.lencode,b=A.distcode,k=(1<<A.lenbits)-1,m=(1<<A.distbits)-1;e:do{u<15&&(c+=E[i++]<<u,u+=8,c+=E[i++]<<u,u+=8),_=w[c&k];t:for(;;){if(g=_>>>24,c>>>=g,u-=g,g=_>>>16&255,0===g)R[a++]=65535&_;else{if(!(16&g)){if(0==(64&g)){_=w[(65535&_)+(c&(1<<g)-1)];continue t}if(32&g){A.mode=12;break e}e.msg=\"invalid literal/length code\",A.mode=30;break e}v=65535&_,g&=15,g&&(u<g&&(c+=E[i++]<<u,u+=8),v+=c&(1<<g)-1,c>>>=g,u-=g),u<15&&(c+=E[i++]<<u,u+=8,c+=E[i++]<<u,u+=8),_=b[c&m];i:for(;;){if(g=_>>>24,c>>>=g,u-=g,g=_>>>16&255,!(16&g)){if(0==(64&g)){_=b[(65535&_)+(c&(1<<g)-1)];continue i}e.msg=\"invalid distance code\",A.mode=30;break e}if(p=65535&_,g&=15,u<g&&(c+=E[i++]<<u,u+=8,u<g&&(c+=E[i++]<<u,u+=8)),p+=c&(1<<g)-1,p>o){e.msg=\"invalid distance too far back\",A.mode=30;break e}if(c>>>=g,u-=g,g=a-r,p>g){if(g=p-g,g>d&&A.sane){e.msg=\"invalid distance too far back\",A.mode=30;break e}if(y=0,x=h,0===f){if(y+=l-g,g<v){v-=g;do{R[a++]=h[y++]}while(--g);y=a-p,x=R}}else if(f<g){if(y+=l+f-g,g-=f,g<v){v-=g;do{R[a++]=h[y++]}while(--g);if(y=0,f<v){g=f,v-=g;do{R[a++]=h[y++]}while(--g);y=a-p,x=R}}}else if(y+=f-g,g<v){v-=g;do{R[a++]=h[y++]}while(--g);y=a-p,x=R}for(;v>2;)R[a++]=x[y++],R[a++]=x[y++],R[a++]=x[y++],v-=3;v&&(R[a++]=x[y++],v>1&&(R[a++]=x[y++]))}else{y=a-p;do{R[a++]=R[y++],R[a++]=R[y++],R[a++]=R[y++],v-=3}while(v>2);v&&(R[a++]=R[y++],v>1&&(R[a++]=R[y++]))}break}}break}}while(i<n&&a<s);v=u>>3,i-=v,u-=v<<3,c&=(1<<u)-1,e.next_in=i,e.next_out=a,e.avail_in=i<n?n-i+5:5-(i-n),e.avail_out=a<s?s-a+257:257-(a-s),A.hold=c,A.bits=u};const r=15,s=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),o=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),l=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),d=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var f=(e,t,i,n,a,f,h,c)=>{const u=c.bits;let w,b,k,m,_,g,v=0,p=0,y=0,x=0,E=0,R=0,A=0,Z=0,S=0,O=0,U=null,T=0;const D=new Uint16Array(16),I=new Uint16Array(16);let B,N,C,z=null,F=0;for(v=0;v<=r;v++)D[v]=0;for(p=0;p<n;p++)D[t[i+p]]++;for(E=u,x=r;x>=1&&0===D[x];x--);if(E>x&&(E=x),0===x)return a[f++]=20971520,a[f++]=20971520,c.bits=1,0;for(y=1;y<x&&0===D[y];y++);for(E<y&&(E=y),Z=1,v=1;v<=r;v++)if(Z<<=1,Z-=D[v],Z<0)return-1;if(Z>0&&(0===e||1!==x))return-1;for(I[1]=0,v=1;v<r;v++)I[v+1]=I[v]+D[v];for(p=0;p<n;p++)0!==t[i+p]&&(h[I[t[i+p]]++]=p);if(0===e?(U=z=h,g=19):1===e?(U=s,T-=257,z=o,F-=257,g=256):(U=l,z=d,g=-1),O=0,p=0,v=y,_=f,R=E,A=0,k=-1,S=1<<E,m=S-1,1===e&&S>852||2===e&&S>592)return 1;for(;;){B=v-A,h[p]<g?(N=0,C=h[p]):h[p]>g?(N=z[F+h[p]],C=U[T+h[p]]):(N=96,C=0),w=1<<v-A,b=1<<R,y=b;do{b-=w,a[_+(O>>A)+b]=B<<24|N<<16|C|0}while(0!==b);for(w=1<<v-1;O&w;)w>>=1;if(0!==w?(O&=w-1,O+=w):O=0,p++,0==--D[v]){if(v===x)break;v=t[i+h[p]]}if(v>E&&(O&m)!==k){for(0===A&&(A=E),_+=y,R=v-A,Z=1<<R;R+A<x&&(Z-=D[R+A],!(Z<=0));)R++,Z<<=1;if(S+=1<<R,1===e&&S>852||2===e&&S>592)return 1;k=O&m,a[k]=E<<24|R<<16|_-f|0}}return 0!==O&&(a[_+O]=v-A<<24|64<<16|0),c.bits=E,0},h={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{Z_FINISH:c,Z_BLOCK:u,Z_TREES:w,Z_OK:b,Z_STREAM_END:k,Z_NEED_DICT:m,Z_STREAM_ERROR:_,Z_DATA_ERROR:g,Z_MEM_ERROR:v,Z_BUF_ERROR:p,Z_DEFLATED:y}=h,x=12,E=30,R=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function A(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Z=e=>{if(!e||!e.state)return _;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,b},S=e=>{if(!e||!e.state)return _;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Z(e)},O=(e,t)=>{let i;if(!e||!e.state)return _;const n=e.state;return t<0?(i=0,t=-t):(i=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?_:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=i,n.wbits=t,S(e))},U=(e,t)=>{if(!e)return _;const i=new A;e.state=i,i.window=null;const n=O(e,t);return n!==b&&(e.state=null),n};let T,D,I=!0;const B=e=>{if(I){T=new Int32Array(512),D=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(f(1,e.lens,0,288,T,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;f(2,e.lens,0,32,D,0,e.work,{bits:5}),I=!1}e.lencode=T,e.lenbits=9,e.distcode=D,e.distbits=5},N=(e,t,i,n)=>{let a;const r=e.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Uint8Array(r.wsize)),n>=r.wsize?(r.window.set(t.subarray(i-r.wsize,i),0),r.wnext=0,r.whave=r.wsize):(a=r.wsize-r.wnext,a>n&&(a=n),r.window.set(t.subarray(i-n,i-n+a),r.wnext),(n-=a)?(r.window.set(t.subarray(i-n,i),0),r.wnext=n,r.whave=r.wsize):(r.wnext+=a,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=a))),0};var C={inflateReset:S,inflateReset2:O,inflateResetKeep:Z,inflateInit:e=>U(e,15),inflateInit2:U,inflate:(e,i)=>{let r,s,o,l,d,h,A,Z,S,O,U,T,D,I,C,z,F,L,M,H,j,K,P=0;const Y=new Uint8Array(4);let G,X;const W=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return _;r=e.state,r.mode===x&&(r.mode=13),d=e.next_out,o=e.output,A=e.avail_out,l=e.next_in,s=e.input,h=e.avail_in,Z=r.hold,S=r.bits,O=h,U=A,K=b;e:for(;;)switch(r.mode){case 1:if(0===r.wrap){r.mode=13;break}for(;S<16;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}if(2&r.wrap&&35615===Z){r.check=0,Y[0]=255&Z,Y[1]=Z>>>8&255,r.check=n(r.check,Y,2,0),Z=0,S=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&Z)<<8)+(Z>>8))%31){e.msg=\"incorrect header check\",r.mode=E;break}if((15&Z)!==y){e.msg=\"unknown compression method\",r.mode=E;break}if(Z>>>=4,S-=4,j=8+(15&Z),0===r.wbits)r.wbits=j;else if(j>r.wbits){e.msg=\"invalid window size\",r.mode=E;break}r.dmax=1<<r.wbits,e.adler=r.check=1,r.mode=512&Z?10:x,Z=0,S=0;break;case 2:for(;S<16;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}if(r.flags=Z,(255&r.flags)!==y){e.msg=\"unknown compression method\",r.mode=E;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=E;break}r.head&&(r.head.text=Z>>8&1),512&r.flags&&(Y[0]=255&Z,Y[1]=Z>>>8&255,r.check=n(r.check,Y,2,0)),Z=0,S=0,r.mode=3;case 3:for(;S<32;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}r.head&&(r.head.time=Z),512&r.flags&&(Y[0]=255&Z,Y[1]=Z>>>8&255,Y[2]=Z>>>16&255,Y[3]=Z>>>24&255,r.check=n(r.check,Y,4,0)),Z=0,S=0,r.mode=4;case 4:for(;S<16;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}r.head&&(r.head.xflags=255&Z,r.head.os=Z>>8),512&r.flags&&(Y[0]=255&Z,Y[1]=Z>>>8&255,r.check=n(r.check,Y,2,0)),Z=0,S=0,r.mode=5;case 5:if(1024&r.flags){for(;S<16;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}r.length=Z,r.head&&(r.head.extra_len=Z),512&r.flags&&(Y[0]=255&Z,Y[1]=Z>>>8&255,r.check=n(r.check,Y,2,0)),Z=0,S=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(T=r.length,T>h&&(T=h),T&&(r.head&&(j=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(s.subarray(l,l+T),j)),512&r.flags&&(r.check=n(r.check,s,T,l)),h-=T,l+=T,r.length-=T),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===h)break e;T=0;do{j=s[l+T++],r.head&&j&&r.length<65536&&(r.head.name+=String.fromCharCode(j))}while(j&&T<h);if(512&r.flags&&(r.check=n(r.check,s,T,l)),h-=T,l+=T,j)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===h)break e;T=0;do{j=s[l+T++],r.head&&j&&r.length<65536&&(r.head.comment+=String.fromCharCode(j))}while(j&&T<h);if(512&r.flags&&(r.check=n(r.check,s,T,l)),h-=T,l+=T,j)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;S<16;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}if(Z!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=E;break}Z=0,S=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=x;break;case 10:for(;S<32;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}e.adler=r.check=R(Z),Z=0,S=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=d,e.avail_out=A,e.next_in=l,e.avail_in=h,r.hold=Z,r.bits=S,m;e.adler=r.check=1,r.mode=x;case x:if(i===u||i===w)break e;case 13:if(r.last){Z>>>=7&S,S-=7&S,r.mode=27;break}for(;S<3;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}switch(r.last=1&Z,Z>>>=1,S-=1,3&Z){case 0:r.mode=14;break;case 1:if(B(r),r.mode=20,i===w){Z>>>=2,S-=2;break e}break;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=E}Z>>>=2,S-=2;break;case 14:for(Z>>>=7&S,S-=7&S;S<32;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}if((65535&Z)!=(Z>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=E;break}if(r.length=65535&Z,Z=0,S=0,r.mode=15,i===w)break e;case 15:r.mode=16;case 16:if(T=r.length,T){if(T>h&&(T=h),T>A&&(T=A),0===T)break e;o.set(s.subarray(l,l+T),d),h-=T,l+=T,A-=T,d+=T,r.length-=T;break}r.mode=x;break;case 17:for(;S<14;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}if(r.nlen=257+(31&Z),Z>>>=5,S-=5,r.ndist=1+(31&Z),Z>>>=5,S-=5,r.ncode=4+(15&Z),Z>>>=4,S-=4,r.nlen>286||r.ndist>30){e.msg=\"too many length or distance symbols\",r.mode=E;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;S<3;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}r.lens[W[r.have++]]=7&Z,Z>>>=3,S-=3}for(;r.have<19;)r.lens[W[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,G={bits:r.lenbits},K=f(0,r.lens,0,19,r.lencode,0,r.work,G),r.lenbits=G.bits,K){e.msg=\"invalid code lengths set\",r.mode=E;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;P=r.lencode[Z&(1<<r.lenbits)-1],C=P>>>24,z=P>>>16&255,F=65535&P,!(C<=S);){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}if(F<16)Z>>>=C,S-=C,r.lens[r.have++]=F;else{if(16===F){for(X=C+2;S<X;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}if(Z>>>=C,S-=C,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=E;break}j=r.lens[r.have-1],T=3+(3&Z),Z>>>=2,S-=2}else if(17===F){for(X=C+3;S<X;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}Z>>>=C,S-=C,j=0,T=3+(7&Z),Z>>>=3,S-=3}else{for(X=C+7;S<X;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}Z>>>=C,S-=C,j=0,T=11+(127&Z),Z>>>=7,S-=7}if(r.have+T>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=E;break}for(;T--;)r.lens[r.have++]=j}}if(r.mode===E)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=E;break}if(r.lenbits=9,G={bits:r.lenbits},K=f(1,r.lens,0,r.nlen,r.lencode,0,r.work,G),r.lenbits=G.bits,K){e.msg=\"invalid literal/lengths set\",r.mode=E;break}if(r.distbits=6,r.distcode=r.distdyn,G={bits:r.distbits},K=f(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,G),r.distbits=G.bits,K){e.msg=\"invalid distances set\",r.mode=E;break}if(r.mode=20,i===w)break e;case 20:r.mode=21;case 21:if(h>=6&&A>=258){e.next_out=d,e.avail_out=A,e.next_in=l,e.avail_in=h,r.hold=Z,r.bits=S,a(e,U),d=e.next_out,o=e.output,A=e.avail_out,l=e.next_in,s=e.input,h=e.avail_in,Z=r.hold,S=r.bits,r.mode===x&&(r.back=-1);break}for(r.back=0;P=r.lencode[Z&(1<<r.lenbits)-1],C=P>>>24,z=P>>>16&255,F=65535&P,!(C<=S);){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}if(z&&0==(240&z)){for(L=C,M=z,H=F;P=r.lencode[H+((Z&(1<<L+M)-1)>>L)],C=P>>>24,z=P>>>16&255,F=65535&P,!(L+C<=S);){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}Z>>>=L,S-=L,r.back+=L}if(Z>>>=C,S-=C,r.back+=C,r.length=F,0===z){r.mode=26;break}if(32&z){r.back=-1,r.mode=x;break}if(64&z){e.msg=\"invalid literal/length code\",r.mode=E;break}r.extra=15&z,r.mode=22;case 22:if(r.extra){for(X=r.extra;S<X;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}r.length+=Z&(1<<r.extra)-1,Z>>>=r.extra,S-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;P=r.distcode[Z&(1<<r.distbits)-1],C=P>>>24,z=P>>>16&255,F=65535&P,!(C<=S);){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}if(0==(240&z)){for(L=C,M=z,H=F;P=r.distcode[H+((Z&(1<<L+M)-1)>>L)],C=P>>>24,z=P>>>16&255,F=65535&P,!(L+C<=S);){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}Z>>>=L,S-=L,r.back+=L}if(Z>>>=C,S-=C,r.back+=C,64&z){e.msg=\"invalid distance code\",r.mode=E;break}r.offset=F,r.extra=15&z,r.mode=24;case 24:if(r.extra){for(X=r.extra;S<X;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}r.offset+=Z&(1<<r.extra)-1,Z>>>=r.extra,S-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=E;break}r.mode=25;case 25:if(0===A)break e;if(T=U-A,r.offset>T){if(T=r.offset-T,T>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=E;break}T>r.wnext?(T-=r.wnext,D=r.wsize-T):D=r.wnext-T,T>r.length&&(T=r.length),I=r.window}else I=o,D=d-r.offset,T=r.length;T>A&&(T=A),A-=T,r.length-=T;do{o[d++]=I[D++]}while(--T);0===r.length&&(r.mode=21);break;case 26:if(0===A)break e;o[d++]=r.length,A--,r.mode=21;break;case 27:if(r.wrap){for(;S<32;){if(0===h)break e;h--,Z|=s[l++]<<S,S+=8}if(U-=A,e.total_out+=U,r.total+=U,U&&(e.adler=r.check=r.flags?n(r.check,o,U,d-U):t(r.check,o,U,d-U)),U=A,(r.flags?Z:R(Z))!==r.check){e.msg=\"incorrect data check\",r.mode=E;break}Z=0,S=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;S<32;){if(0===h)break e;h--,Z+=s[l++]<<S,S+=8}if(Z!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=E;break}Z=0,S=0}r.mode=29;case 29:K=k;break e;case E:K=g;break e;case 31:return v;case 32:default:return _}return e.next_out=d,e.avail_out=A,e.next_in=l,e.avail_in=h,r.hold=Z,r.bits=S,(r.wsize||U!==e.avail_out&&r.mode<E&&(r.mode<27||i!==c))&&N(e,e.output,e.next_out,U-e.avail_out),O-=e.avail_in,U-=e.avail_out,e.total_in+=O,e.total_out+=U,r.total+=U,r.wrap&&U&&(e.adler=r.check=r.flags?n(r.check,o,U,e.next_out-U):t(r.check,o,U,e.next_out-U)),e.data_type=r.bits+(r.last?64:0)+(r.mode===x?128:0)+(20===r.mode||15===r.mode?256:0),(0===O&&0===U||i===c)&&K===b&&(K=p),K},inflateEnd:e=>{if(!e||!e.state)return _;let t=e.state;return t.window&&(t.window=null),e.state=null,b},inflateGetHeader:(e,t)=>{if(!e||!e.state)return _;const i=e.state;return 0==(2&i.wrap)?_:(i.head=t,t.done=!1,b)},inflateSetDictionary:(e,i)=>{const n=i.length;let a,r,s;return e&&e.state?(a=e.state,0!==a.wrap&&11!==a.mode?_:11===a.mode&&(r=1,r=t(r,i,n,0),r!==a.check)?g:(s=N(e,i,n,n),s?(a.mode=31,v):(a.havedict=1,b))):_},inflateInfo:\"pako inflate (from Nodeca project)\"};const z=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var F=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if(\"object\"!=typeof i)throw new TypeError(i+\"must be non-object\");for(const t in i)z(i,t)&&(e[t]=i[t])}}return e},L=e=>{let t=0;for(let i=0,n=e.length;i<n;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,n=0,a=e.length;t<a;t++){let a=e[t];i.set(a,n),n+=a.length}return i};let M=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){M=!1}const H=new Uint8Array(256);for(let e=0;e<256;e++)H[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;H[254]=H[254]=1;var j=e=>{let t,i,n,a,r,s=e.length,o=0;for(a=0;a<s;a++)i=e.charCodeAt(a),55296==(64512&i)&&a+1<s&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),a++)),o+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(o),r=0,a=0;r<o;a++)i=e.charCodeAt(a),55296==(64512&i)&&a+1<s&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),a++)),i<128?t[r++]=i:i<2048?(t[r++]=192|i>>>6,t[r++]=128|63&i):i<65536?(t[r++]=224|i>>>12,t[r++]=128|i>>>6&63,t[r++]=128|63&i):(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63,t[r++]=128|i>>>6&63,t[r++]=128|63&i);return t},K=(e,t)=>{let i,n;const a=t||e.length,r=new Array(2*a);for(n=0,i=0;i<a;){let t=e[i++];if(t<128){r[n++]=t;continue}let s=H[t];if(s>4)r[n++]=65533,i+=s-1;else{for(t&=2===s?31:3===s?15:7;s>1&&i<a;)t=t<<6|63&e[i++],s--;s>1?r[n++]=65533:t<65536?r[n++]=t:(t-=65536,r[n++]=55296|t>>10&1023,r[n++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&M)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let i=\"\";for(let n=0;n<t;n++)i+=String.fromCharCode(e[n]);return i})(r,n)},P=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let i=t-1;for(;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+H[e[i]]>t?i:t},Y={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"};var G=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0};var X=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1};const W=Object.prototype.toString,{Z_NO_FLUSH:q,Z_FINISH:J,Z_OK:Q,Z_STREAM_END:V,Z_NEED_DICT:$,Z_STREAM_ERROR:ee,Z_DATA_ERROR:te,Z_MEM_ERROR:ie}=h;function ne(e){this.options=F({chunkSize:65536,windowBits:15,to:\"\"},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new G,this.strm.avail_out=0;let i=C.inflateInit2(this.strm,t.windowBits);if(i!==Q)throw new Error(Y[i]);if(this.header=new X,C.inflateGetHeader(this.strm,this.header),t.dictionary&&(\"string\"==typeof t.dictionary?t.dictionary=j(t.dictionary):\"[object ArrayBuffer]\"===W.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=C.inflateSetDictionary(this.strm,t.dictionary),i!==Q)))throw new Error(Y[i])}function ae(e,t){const i=new ne(t);if(i.push(e),i.err)throw i.msg||Y[i.err];return i.result}ne.prototype.push=function(e,t){const i=this.strm,n=this.options.chunkSize,a=this.options.dictionary;let r,s,o;if(this.ended)return!1;for(s=t===~~t?t:!0===t?J:q,\"[object ArrayBuffer]\"===W.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(0===i.avail_out&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),r=C.inflate(i,s),r===$&&a&&(r=C.inflateSetDictionary(i,a),r===Q?r=C.inflate(i,s):r===te&&(r=$));i.avail_in>0&&r===V&&i.state.wrap>0&&0!==e[i.next_in];)C.inflateReset(i),r=C.inflate(i,s);switch(r){case ee:case te:case $:case ie:return this.onEnd(r),this.ended=!0,!1}if(o=i.avail_out,i.next_out&&(0===i.avail_out||r===V))if(\"string\"===this.options.to){let e=P(i.output,i.next_out),t=i.next_out-e,a=K(i.output,e);i.next_out=t,i.avail_out=n-t,t&&i.output.set(i.output.subarray(e,e+t),0),this.onData(a)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(r!==Q||0!==o){if(r===V)return r=C.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(0===i.avail_in)break}}return!0},ne.prototype.onData=function(e){this.chunks.push(e)},ne.prototype.onEnd=function(e){e===Q&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=L(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var re=ne,se=ae,oe=function(e,t){return(t=t||{}).raw=!0,ae(e,t)},le=ae,de=h,fe={Inflate:re,inflate:se,inflateRaw:oe,ungzip:le,constants:de};e.Inflate=re,e.constants=de,e.default=fe,e.inflate=se,e.inflateRaw=oe,e.ungzip=le,Object.defineProperty(e,\"__esModule\",{value:!0})}));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","export default function bufferConcats(...args: (ArrayBuffer | Uint8Array | number[])[]) {\n const length = args.reduce((acc, v) => acc + ((v as ArrayBuffer).byteLength || (v as Uint8Array).length), 0);\n\n const tmp = new Uint8Array(length);\n \n let lastLength = 0;\n args.forEach(b => {\n tmp.set(b instanceof ArrayBuffer ? new Uint8Array(b) : b, lastLength);\n lastLength += (b as ArrayBuffer).byteLength || (b as Uint8Array).length;\n });\n\n return tmp/* .buffer */;\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport bufferConcats from \"../helpers/bytes/bufferConcats\";\n\nUint8Array.prototype.concat = function(...args: Array<Uint8Array | ArrayBuffer | number[]>) {\n return bufferConcats(this, ...args);\n};\n\n/* Uint8Array.prototype.toString = function() {\n return String.fromCharCode.apply(null, [...this]);\n}; */\n\nUint8Array.prototype.toJSON = function() {\n return [...this];\n //return {type: 'bytes', value: [...this]};\n};\n\nPromise.prototype.finally = Promise.prototype.finally || function<T>(this: Promise<T>, fn: () => any) {\n const onFinally = (callback: typeof fn) => Promise.resolve(fn()).then(callback);\n return this.then(\n result => onFinally(() => result),\n reason => onFinally(() => Promise.reject(reason))\n );\n};\n\ndeclare global {\n interface Uint8Array {\n concat: (...args: Array<Uint8Array | ArrayBuffer | number[]>) => Uint8Array,\n //toString: () => string,\n toJSON: () => number[],\n //toJSON: () => {type: 'bytes', value: number[]},\n }\n \n interface Promise<T> {\n finally: (onfinally?: () => void) => Promise<T>;\n }\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n * \r\n * Originally from:\r\n * https://github.com/zhukov/webogram\r\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\r\n * https://github.com/zhukov/webogram/blob/master/LICENSE\r\n */\r\n\r\nimport type { TransportType } from \"../lib/mtproto/dcConfigurator\";\r\n\r\nconst Modes = {\r\n test: location.search.indexOf('test=1') > 0/* || true */,\r\n debug: location.search.indexOf('debug=1') > 0,\r\n http: false,\r\n ssl: true, // location.search.indexOf('ssl=1') > 0 || location.protocol === 'https:' && location.search.indexOf('ssl=0') === -1,\r\n multipleConnections: true,\r\n asServiceWorker: false,\r\n transport: 'websocket' as TransportType\r\n};\r\n\r\n \r\nModes.http = location.search.indexOf('http=1') > 0;\r\n \r\n\r\n \r\n \r\n \r\n\r\nif(Modes.http) {\r\n Modes.transport = 'https';\r\n}\r\n\r\n \r\n \r\n \r\n\r\nexport default Modes;\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport Modes from \"./modes\";\r\n\r\nexport const DEBUG = process.env.NODE_ENV !== 'production' || Modes.debug;\r\nconst ctx: any = typeof(window) !== 'undefined' ? window : self;\r\nexport const MOUNT_CLASS_TO: any = DEBUG || true/* && false */ ? ctx : {};\r\nexport default DEBUG;\r\n\r\n//let m = DEBUG;\r\n/* if(!DEBUG) {\r\n ctx.sandpitTurtle = () => {\r\n //if(!m) {\r\n for(let i in MOUNT_CLASS_TO) {\r\n ctx[i] = MOUNT_CLASS_TO[i];\r\n }\r\n //m = true;\r\n //}\r\n \r\n //DEBUG = !DEBUG;\r\n };\r\n} */\r\n\r\n/* export const superDebug = (object: any, key: string) => {\r\n var d = object[key];\r\n var beforeStr = '', afterStr = '';\r\n for(var r of d) {\r\n beforeStr += r.before.hex + '\\n';\r\n afterStr += r.after.hex + '\\n';\r\n }\r\n\r\n beforeStr = beforeStr.trim();\r\n afterStr = afterStr.trim();\r\n //var beforeStr = d.map(r => r.before.hex).join('\\n');\r\n //var afterStr = d.map(r => r.after.hex).join('\\n');\r\n\r\n var dada = (name: string, str: string) => {\r\n var a = document.createElement('a');\r\n a.target = '_blank';\r\n a.download = name + '.txt';\r\n a.href = URL.createObjectURL(new Blob([str], {\r\n type: 'text/plain'\r\n }));\r\n document.body.append(a);\r\n a.click();\r\n };\r\n\r\n dada(key + '_' + 'before', beforeStr);\r\n dada(key + '_' + 'after', afterStr);\r\n}\r\n\r\nMOUNT_CLASS_TO.superDebug = superDebug; */\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\n// в SW может быть сразу две переменных TRUE\r\nexport const IS_SERVICE_WORKER = typeof ServiceWorkerGlobalScope !== 'undefined' && self instanceof ServiceWorkerGlobalScope;\r\nexport const IS_WEB_WORKER = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope && !IS_SERVICE_WORKER;\r\nexport const IS_WORKER = IS_WEB_WORKER || IS_SERVICE_WORKER;\r\n\r\nexport const getWindowClients = () => {\r\n return (self as any as ServiceWorkerGlobalScope)\r\n .clients\r\n .matchAll({ includeUncontrolled: false, type: 'window' });\r\n};\r\n\r\nconst notifyServiceWorker = (all: boolean, ...args: any[]) => {\r\n (self as any as ServiceWorkerGlobalScope)\r\n .clients\r\n .matchAll({ includeUncontrolled: false, type: 'window' })\r\n .then((listeners) => {\r\n if(!listeners.length) {\r\n //console.trace('no listeners?', self, listeners);\r\n return;\r\n }\r\n\r\n listeners.slice(all ? 0 : -1).forEach(listener => {\r\n // @ts-ignore\r\n listener.postMessage(...args);\r\n });\r\n });\r\n};\r\n\r\nconst notifyWorker = (...args: any[]) => {\r\n // @ts-ignore\r\n (self as any as DedicatedWorkerGlobalScope).postMessage(...args);\r\n};\r\n\r\nconst noop = () => {};\r\n\r\nexport const notifySomeone = IS_SERVICE_WORKER ? notifyServiceWorker.bind(null, false) : (IS_WEB_WORKER ? notifyWorker : noop);\r\nexport const notifyAll = IS_SERVICE_WORKER ? notifyServiceWorker.bind(null, true) : (IS_WEB_WORKER ? notifyWorker : noop);\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n * \r\n * Originally from:\r\n * https://github.com/zhukov/webogram\r\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\r\n * https://github.com/zhukov/webogram/blob/master/LICENSE\r\n */\r\n\r\nimport Modes from '../config/modes';\r\nimport { notifySomeone, IS_WORKER } from '../helpers/context';\r\nimport { WorkerTaskTemplate } from '../types';\r\n//import { stringify } from '../helpers/json';\r\n\r\nclass LocalStorage<Storage extends Record<string, any>> {\r\n private prefix = '';\r\n private cache: Partial<Storage> = {};\r\n private useStorage = true;\r\n\r\n constructor(/* private preserveKeys: (keyof Storage)[] */) {\r\n if(Modes.test) {\r\n this.prefix = 't_';\r\n }\r\n }\r\n\r\n public get<T extends keyof Storage>(key: T, useCache = true): Storage[T] {\r\n if(this.cache.hasOwnProperty(key) && useCache) {\r\n return this.cache[key];\r\n } else if(this.useStorage) {\r\n let value: Storage[T];\r\n try {\r\n value = localStorage.getItem(this.prefix + key as string) as any;\r\n } catch(err) {\r\n this.useStorage = false;\r\n }\r\n\r\n if(value !== null) {\r\n try {\r\n value = JSON.parse(value);\r\n } catch(err) {\r\n //console.error(err);\r\n }\r\n } else {\r\n value = undefined;\r\n }\r\n\r\n return value;\r\n }/* else {\r\n throw 'something went wrong';\r\n } */\r\n }\r\n\r\n public set(obj: Partial<Storage>, onlyLocal = false) {\r\n for(const key in obj) {\r\n if(obj.hasOwnProperty(key)) {\r\n const value = obj[key];\r\n this.cache[key] = value;\r\n\r\n if(this.useStorage && !onlyLocal) {\r\n try {\r\n const stringified = JSON.stringify(value);\r\n localStorage.setItem(this.prefix + key, stringified);\r\n } catch(err) {\r\n this.useStorage = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public delete(key: keyof Storage, saveLocal = false) {\r\n // ! it is needed here\r\n key = '' + key;\r\n\r\n if(!saveLocal) {\r\n delete this.cache[key];\r\n }\r\n \r\n //if(this.useStorage) {\r\n try {\r\n localStorage.removeItem(this.prefix + key);\r\n } catch(err) {\r\n \r\n }\r\n //}\r\n }\r\n\r\n /* public clear(preserveKeys: (keyof Storage)[] = this.preserveKeys) {\r\n // if(this.useStorage) {\r\n try {\r\n let obj: Partial<Storage> = {};\r\n if(preserveKeys) {\r\n preserveKeys.forEach(key => {\r\n const value = this.get(key);\r\n if(value !== undefined) {\r\n obj[key] = value;\r\n }\r\n });\r\n }\r\n \r\n localStorage.clear();\r\n\r\n if(preserveKeys) {\r\n this.set(obj);\r\n }\r\n } catch(err) {\r\n\r\n }\r\n // }\r\n } */\r\n\r\n public clear() {\r\n const keys: string[] = ['dc', 'server_time_offset', 'xt_instance', 'user_auth', 'state_id'];\r\n for(let i = 1; i <= 5; ++i) {\r\n keys.push(`dc${i}_server_salt`);\r\n keys.push(`dc${i}_auth_key`);\r\n }\r\n\r\n for(let key of keys) {\r\n this.delete(key, true);\r\n }\r\n }\r\n\r\n public toggleStorage(enabled: boolean) {\r\n this.useStorage = enabled;\r\n\r\n if(!enabled) {\r\n this.clear();\r\n } else {\r\n return this.set(this.cache);\r\n }\r\n }\r\n}\r\n\r\nexport interface LocalStorageProxyTask extends WorkerTaskTemplate {\r\n type: 'localStorageProxy',\r\n payload: {\r\n type: 'set' | 'get' | 'delete' | 'clear' | 'toggleStorage',\r\n args: any[]\r\n }\r\n};\r\n\r\nexport interface LocalStorageProxyTaskResponse extends WorkerTaskTemplate {\r\n type: 'localStorageProxy',\r\n payload: any\r\n};\r\n\r\nexport default class LocalStorageController<Storage extends Record<string, any>> {\r\n private static STORAGES: LocalStorageController<any>[] = [];\r\n private taskId = 0;\r\n private tasks: {[taskID: number]: (result: any) => void} = {};\r\n //private log = (...args: any[]) => console.log('[SW LS]', ...args);\r\n //private log = (...args: any[]) => {};\r\n\r\n private storage: LocalStorage<Storage>;\r\n\r\n constructor(/* private preserveKeys: (keyof Storage)[] = [] */) {\r\n LocalStorageController.STORAGES.push(this);\r\n\r\n if(!IS_WORKER) {\r\n this.storage = new LocalStorage(/* preserveKeys */);\r\n }\r\n }\r\n\r\n public finishTask(taskId: number, result: any) {\r\n //this.log('finishTask:', taskID, result, Object.keys(this.tasks));\r\n\r\n if(!this.tasks.hasOwnProperty(taskId)) {\r\n //this.log('no such task:', taskID, result);\r\n return;\r\n }\r\n\r\n this.tasks[taskId](result);\r\n delete this.tasks[taskId];\r\n }\r\n\r\n private proxy<T>(type: LocalStorageProxyTask['payload']['type'], ...args: LocalStorageProxyTask['payload']['args']) {\r\n return new Promise<T>((resolve, reject) => {\r\n if(IS_WORKER) {\r\n const taskId = this.taskId++;\r\n\r\n this.tasks[taskId] = resolve;\r\n const task: LocalStorageProxyTask = {\r\n type: 'localStorageProxy', \r\n id: taskId,\r\n payload: {\r\n type,\r\n args\r\n }\r\n };\r\n\r\n notifySomeone(task);\r\n } else {\r\n args = Array.prototype.slice.call(args);\r\n\r\n // @ts-ignore\r\n const result: any = this.storage[type].apply(this.storage, args as any);\r\n resolve(result);\r\n }\r\n });\r\n }\r\n\r\n public get<T extends keyof Storage>(key: T, useCache?: boolean) {\r\n return this.proxy<Storage[T]>('get', key, useCache);\r\n }\r\n\r\n public set(obj: Partial<Storage>, onlyLocal?: boolean) {\r\n return this.proxy<void>('set', obj, onlyLocal);\r\n }\r\n\r\n public delete(key: keyof Storage, saveLocal?: boolean) {\r\n return this.proxy<void>('delete', key, saveLocal);\r\n }\r\n\r\n public clear(/* preserveKeys?: (keyof Storage)[] */) {\r\n return this.proxy<void>('clear'/* , preserveKeys */);\r\n }\r\n\r\n public toggleStorage(enabled: boolean) {\r\n return this.proxy<void>('toggleStorage', enabled);\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport type { AppInstance } from './mtproto/singleInstance';\r\nimport type { UserAuth } from './mtproto/mtproto_config';\r\nimport type { DcId } from '../types';\r\nimport { MOUNT_CLASS_TO } from '../config/debug';\r\nimport LocalStorageController from './localStorage';\r\n\r\nconst sessionStorage = new LocalStorageController<{\r\n dc: DcId,\r\n user_auth: UserAuth,\r\n state_id: number,\r\n dc1_auth_key: string,\r\n dc2_auth_key: string,\r\n dc3_auth_key: string,\r\n dc4_auth_key: string,\r\n dc5_auth_key: string,\r\n dc1_server_salt: string,\r\n dc2_server_salt: string,\r\n dc3_server_salt: string,\r\n dc4_server_salt: string,\r\n dc5_server_salt: string,\r\n server_time_offset: number,\r\n xt_instance: AppInstance,\r\n kz_version: 'K' | 'Z',\r\n tgme_sync: {\r\n canRedirect: boolean,\r\n ts: number\r\n }\r\n}>(/* ['kz_version'] */);\r\nMOUNT_CLASS_TO.appStorage = sessionStorage;\r\nexport default sessionStorage;\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nexport type MTProtoConstructor = {\r\n id: number,\r\n predicate: string,\r\n params: Array<{\r\n name: string,\r\n type: string\r\n }>,\r\n type: string\r\n};\r\n\r\nexport type MTProtoMethod = {\r\n id: number,\r\n method: string,\r\n params: Array<{\r\n name: string,\r\n type: string\r\n }>,\r\n type: string\r\n};\r\n\r\nexport default {\"MTProto\":{\"constructors\":[{\"id\":481674261,\"predicate\":\"vector\",\"params\":[],\"type\":\"Vector t\"},{\"id\":85337187,\"predicate\":\"resPQ\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"pq\",\"type\":\"bytes\"},{\"name\":\"server_public_key_fingerprints\",\"type\":\"Vector<long>\"}],\"type\":\"ResPQ\"},{\"id\":-1443537003,\"predicate\":\"p_q_inner_data_dc\",\"params\":[{\"name\":\"pq\",\"type\":\"bytes\"},{\"name\":\"p\",\"type\":\"bytes\"},{\"name\":\"q\",\"type\":\"bytes\"},{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"new_nonce\",\"type\":\"int256\"},{\"name\":\"dc\",\"type\":\"int\"}],\"type\":\"P_Q_inner_data\"},{\"id\":1459478408,\"predicate\":\"p_q_inner_data_temp_dc\",\"params\":[{\"name\":\"pq\",\"type\":\"bytes\"},{\"name\":\"p\",\"type\":\"bytes\"},{\"name\":\"q\",\"type\":\"bytes\"},{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"new_nonce\",\"type\":\"int256\"},{\"name\":\"dc\",\"type\":\"int\"},{\"name\":\"expires_in\",\"type\":\"int\"}],\"type\":\"P_Q_inner_data\"},{\"id\":-790100132,\"predicate\":\"server_DH_params_ok\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"encrypted_answer\",\"type\":\"bytes\"}],\"type\":\"Server_DH_Params\"},{\"id\":-1249309254,\"predicate\":\"server_DH_inner_data\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"g\",\"type\":\"int\"},{\"name\":\"dh_prime\",\"type\":\"bytes\"},{\"name\":\"g_a\",\"type\":\"bytes\"},{\"name\":\"server_time\",\"type\":\"int\"}],\"type\":\"Server_DH_inner_data\"},{\"id\":1715713620,\"predicate\":\"client_DH_inner_data\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"retry_id\",\"type\":\"long\"},{\"name\":\"g_b\",\"type\":\"bytes\"}],\"type\":\"Client_DH_Inner_Data\"},{\"id\":1003222836,\"predicate\":\"dh_gen_ok\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"new_nonce_hash1\",\"type\":\"int128\"}],\"type\":\"Set_client_DH_params_answer\"},{\"id\":1188831161,\"predicate\":\"dh_gen_retry\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"new_nonce_hash2\",\"type\":\"int128\"}],\"type\":\"Set_client_DH_params_answer\"},{\"id\":-1499615742,\"predicate\":\"dh_gen_fail\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"new_nonce_hash3\",\"type\":\"int128\"}],\"type\":\"Set_client_DH_params_answer\"},{\"id\":1973679973,\"predicate\":\"bind_auth_key_inner\",\"params\":[{\"name\":\"nonce\",\"type\":\"long\"},{\"name\":\"temp_auth_key_id\",\"type\":\"long\"},{\"name\":\"perm_auth_key_id\",\"type\":\"long\"},{\"name\":\"temp_session_id\",\"type\":\"long\"},{\"name\":\"expires_at\",\"type\":\"int\"}],\"type\":\"BindAuthKeyInner\"},{\"id\":-212046591,\"predicate\":\"rpc_result\",\"params\":[{\"name\":\"req_msg_id\",\"type\":\"long\"},{\"name\":\"result\",\"type\":\"Object\"}],\"type\":\"RpcResult\"},{\"id\":558156313,\"predicate\":\"rpc_error\",\"params\":[{\"name\":\"error_code\",\"type\":\"int\"},{\"name\":\"error_message\",\"type\":\"string\"}],\"type\":\"RpcError\"},{\"id\":1579864942,\"predicate\":\"rpc_answer_unknown\",\"params\":[],\"type\":\"RpcDropAnswer\"},{\"id\":-847714938,\"predicate\":\"rpc_answer_dropped_running\",\"params\":[],\"type\":\"RpcDropAnswer\"},{\"id\":-1539647305,\"predicate\":\"rpc_answer_dropped\",\"params\":[{\"name\":\"msg_id\",\"type\":\"long\"},{\"name\":\"seq_no\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"int\"}],\"type\":\"RpcDropAnswer\"},{\"id\":155834844,\"predicate\":\"future_salt\",\"params\":[{\"name\":\"valid_since\",\"type\":\"int\"},{\"name\":\"valid_until\",\"type\":\"int\"},{\"name\":\"salt\",\"type\":\"long\"}],\"type\":\"FutureSalt\"},{\"id\":-1370486635,\"predicate\":\"future_salts\",\"params\":[{\"name\":\"req_msg_id\",\"type\":\"long\"},{\"name\":\"now\",\"type\":\"int\"},{\"name\":\"salts\",\"type\":\"vector<future_salt>\"}],\"type\":\"FutureSalts\"},{\"id\":880243653,\"predicate\":\"pong\",\"params\":[{\"name\":\"msg_id\",\"type\":\"long\"},{\"name\":\"ping_id\",\"type\":\"long\"}],\"type\":\"Pong\"},{\"id\":-501201412,\"predicate\":\"destroy_session_ok\",\"params\":[{\"name\":\"session_id\",\"type\":\"long\"}],\"type\":\"DestroySessionRes\"},{\"id\":1658015945,\"predicate\":\"destroy_session_none\",\"params\":[{\"name\":\"session_id\",\"type\":\"long\"}],\"type\":\"DestroySessionRes\"},{\"id\":-1631450872,\"predicate\":\"new_session_created\",\"params\":[{\"name\":\"first_msg_id\",\"type\":\"long\"},{\"name\":\"unique_id\",\"type\":\"long\"},{\"name\":\"server_salt\",\"type\":\"long\"}],\"type\":\"NewSession\"},{\"id\":1945237724,\"predicate\":\"msg_container\",\"params\":[{\"name\":\"messages\",\"type\":\"vector<%Message>\"}],\"type\":\"MessageContainer\"},{\"id\":1538843921,\"predicate\":\"message\",\"params\":[{\"name\":\"msg_id\",\"type\":\"long\"},{\"name\":\"seqno\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"int\"},{\"name\":\"body\",\"type\":\"Object\"}],\"type\":\"Message\"},{\"id\":-530561358,\"predicate\":\"msg_copy\",\"params\":[{\"name\":\"orig_message\",\"type\":\"Message\"}],\"type\":\"MessageCopy\"},{\"id\":812830625,\"predicate\":\"gzip_packed\",\"params\":[{\"name\":\"packed_data\",\"type\":\"bytes\"}],\"type\":\"Object\"},{\"id\":1658238041,\"predicate\":\"msgs_ack\",\"params\":[{\"name\":\"msg_ids\",\"type\":\"Vector<long>\"}],\"type\":\"MsgsAck\"},{\"id\":-1477445615,\"predicate\":\"bad_msg_notification\",\"params\":[{\"name\":\"bad_msg_id\",\"type\":\"long\"},{\"name\":\"bad_msg_seqno\",\"type\":\"int\"},{\"name\":\"error_code\",\"type\":\"int\"}],\"type\":\"BadMsgNotification\"},{\"id\":-307542917,\"predicate\":\"bad_server_salt\",\"params\":[{\"name\":\"bad_msg_id\",\"type\":\"long\"},{\"name\":\"bad_msg_seqno\",\"type\":\"int\"},{\"name\":\"error_code\",\"type\":\"int\"},{\"name\":\"new_server_salt\",\"type\":\"long\"}],\"type\":\"BadMsgNotification\"},{\"id\":2105940488,\"predicate\":\"msg_resend_req\",\"params\":[{\"name\":\"msg_ids\",\"type\":\"Vector<long>\"}],\"type\":\"MsgResendReq\"},{\"id\":-630588590,\"predicate\":\"msgs_state_req\",\"params\":[{\"name\":\"msg_ids\",\"type\":\"Vector<long>\"}],\"type\":\"MsgsStateReq\"},{\"id\":81704317,\"predicate\":\"msgs_state_info\",\"params\":[{\"name\":\"req_msg_id\",\"type\":\"long\"},{\"name\":\"info\",\"type\":\"bytes\"}],\"type\":\"MsgsStateInfo\"},{\"id\":-1933520591,\"predicate\":\"msgs_all_info\",\"params\":[{\"name\":\"msg_ids\",\"type\":\"Vector<long>\"},{\"name\":\"info\",\"type\":\"bytes\"}],\"type\":\"MsgsAllInfo\"},{\"id\":661470918,\"predicate\":\"msg_detailed_info\",\"params\":[{\"name\":\"msg_id\",\"type\":\"long\"},{\"name\":\"answer_msg_id\",\"type\":\"long\"},{\"name\":\"bytes\",\"type\":\"int\"},{\"name\":\"status\",\"type\":\"int\"}],\"type\":\"MsgDetailedInfo\"},{\"id\":-2137147681,\"predicate\":\"msg_new_detailed_info\",\"params\":[{\"name\":\"answer_msg_id\",\"type\":\"long\"},{\"name\":\"bytes\",\"type\":\"int\"},{\"name\":\"status\",\"type\":\"int\"}],\"type\":\"MsgDetailedInfo\"},{\"id\":-161422892,\"predicate\":\"destroy_auth_key_ok\",\"params\":[],\"type\":\"DestroyAuthKeyRes\"},{\"id\":178201177,\"predicate\":\"destroy_auth_key_none\",\"params\":[],\"type\":\"DestroyAuthKeyRes\"},{\"id\":-368010477,\"predicate\":\"destroy_auth_key_fail\",\"params\":[],\"type\":\"DestroyAuthKeyRes\"}],\"methods\":[{\"id\":-1099002127,\"method\":\"req_pq_multi\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"}],\"type\":\"ResPQ\"},{\"id\":-686627650,\"method\":\"req_DH_params\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"p\",\"type\":\"bytes\"},{\"name\":\"q\",\"type\":\"bytes\"},{\"name\":\"public_key_fingerprint\",\"type\":\"long\"},{\"name\":\"encrypted_data\",\"type\":\"bytes\"}],\"type\":\"Server_DH_Params\"},{\"id\":-184262881,\"method\":\"set_client_DH_params\",\"params\":[{\"name\":\"nonce\",\"type\":\"int128\"},{\"name\":\"server_nonce\",\"type\":\"int128\"},{\"name\":\"encrypted_data\",\"type\":\"bytes\"}],\"type\":\"Set_client_DH_params_answer\"},{\"id\":1491380032,\"method\":\"rpc_drop_answer\",\"params\":[{\"name\":\"req_msg_id\",\"type\":\"long\"}],\"type\":\"RpcDropAnswer\"},{\"id\":-1188971260,\"method\":\"get_future_salts\",\"params\":[{\"name\":\"num\",\"type\":\"int\"}],\"type\":\"FutureSalts\"},{\"id\":2059302892,\"method\":\"ping\",\"params\":[{\"name\":\"ping_id\",\"type\":\"long\"}],\"type\":\"Pong\"},{\"id\":-213746804,\"method\":\"ping_delay_disconnect\",\"params\":[{\"name\":\"ping_id\",\"type\":\"long\"},{\"name\":\"disconnect_delay\",\"type\":\"int\"}],\"type\":\"Pong\"},{\"id\":-414113498,\"method\":\"destroy_session\",\"params\":[{\"name\":\"session_id\",\"type\":\"long\"}],\"type\":\"DestroySessionRes\"},{\"id\":-1835453025,\"method\":\"http_wait\",\"params\":[{\"name\":\"max_delay\",\"type\":\"int\"},{\"name\":\"wait_after\",\"type\":\"int\"},{\"name\":\"max_wait\",\"type\":\"int\"}],\"type\":\"HttpWait\"},{\"id\":-784117408,\"method\":\"destroy_auth_key\",\"params\":[],\"type\":\"DestroyAuthKeyRes\"}]},\"API\":{\"constructors\":[{\"id\":-1132882121,\"predicate\":\"boolFalse\",\"params\":[],\"type\":\"Bool\"},{\"id\":-1720552011,\"predicate\":\"boolTrue\",\"params\":[],\"type\":\"Bool\"},{\"id\":1072550713,\"predicate\":\"true\",\"params\":[],\"type\":\"True\"},{\"id\":481674261,\"predicate\":\"vector\",\"params\":[],\"type\":\"Vector t\"},{\"id\":-994444869,\"predicate\":\"error\",\"params\":[{\"name\":\"code\",\"type\":\"int\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"Error\"},{\"id\":1450380236,\"predicate\":\"null\",\"params\":[],\"type\":\"Null\"},{\"id\":2134579434,\"predicate\":\"inputPeerEmpty\",\"params\":[],\"type\":\"InputPeer\"},{\"id\":2107670217,\"predicate\":\"inputPeerSelf\",\"params\":[],\"type\":\"InputPeer\"},{\"id\":900291769,\"predicate\":\"inputPeerChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"}],\"type\":\"InputPeer\"},{\"id\":-1182234929,\"predicate\":\"inputUserEmpty\",\"params\":[],\"type\":\"InputUser\"},{\"id\":-138301121,\"predicate\":\"inputUserSelf\",\"params\":[],\"type\":\"InputUser\"},{\"id\":-208488460,\"predicate\":\"inputPhoneContact\",\"params\":[{\"name\":\"client_id\",\"type\":\"long\"},{\"name\":\"phone\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"}],\"type\":\"InputContact\"},{\"id\":-181407105,\"predicate\":\"inputFile\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"parts\",\"type\":\"int\"},{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"md5_checksum\",\"type\":\"string\"}],\"type\":\"InputFile\"},{\"id\":-1771768449,\"predicate\":\"inputMediaEmpty\",\"params\":[],\"type\":\"InputMedia\"},{\"id\":505969924,\"predicate\":\"inputMediaUploadedPhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"file\",\"type\":\"InputFile\"},{\"name\":\"stickers\",\"type\":\"flags.0?Vector<InputDocument>\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.1?int\"}],\"type\":\"InputMedia\"},{\"id\":-1279654347,\"predicate\":\"inputMediaPhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"InputPhoto\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.0?int\"}],\"type\":\"InputMedia\"},{\"id\":-104578748,\"predicate\":\"inputMediaGeoPoint\",\"params\":[{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"}],\"type\":\"InputMedia\"},{\"id\":-122978821,\"predicate\":\"inputMediaContact\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"vcard\",\"type\":\"string\"}],\"type\":\"InputMedia\"},{\"id\":480546647,\"predicate\":\"inputChatPhotoEmpty\",\"params\":[],\"type\":\"InputChatPhoto\"},{\"id\":-968723890,\"predicate\":\"inputChatUploadedPhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"file\",\"type\":\"flags.0?InputFile\"},{\"name\":\"video\",\"type\":\"flags.1?InputFile\"},{\"name\":\"video_start_ts\",\"type\":\"flags.2?double\"}],\"type\":\"InputChatPhoto\"},{\"id\":-1991004873,\"predicate\":\"inputChatPhoto\",\"params\":[{\"name\":\"id\",\"type\":\"InputPhoto\"}],\"type\":\"InputChatPhoto\"},{\"id\":-457104426,\"predicate\":\"inputGeoPointEmpty\",\"params\":[],\"type\":\"InputGeoPoint\"},{\"id\":1210199983,\"predicate\":\"inputGeoPoint\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"lat\",\"type\":\"double\"},{\"name\":\"long\",\"type\":\"double\"},{\"name\":\"accuracy_radius\",\"type\":\"flags.0?int\"}],\"type\":\"InputGeoPoint\"},{\"id\":483901197,\"predicate\":\"inputPhotoEmpty\",\"params\":[],\"type\":\"InputPhoto\"},{\"id\":1001634122,\"predicate\":\"inputPhoto\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"}],\"type\":\"InputPhoto\"},{\"id\":-539317279,\"predicate\":\"inputFileLocation\",\"params\":[{\"name\":\"volume_id\",\"type\":\"long\"},{\"name\":\"local_id\",\"type\":\"int\"},{\"name\":\"secret\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"}],\"type\":\"InputFileLocation\"},{\"id\":1498486562,\"predicate\":\"peerUser\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"}],\"type\":\"Peer\"},{\"id\":918946202,\"predicate\":\"peerChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"}],\"type\":\"Peer\"},{\"id\":-1432995067,\"predicate\":\"storage.fileUnknown\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":1086091090,\"predicate\":\"storage.filePartial\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":8322574,\"predicate\":\"storage.fileJpeg\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":-891180321,\"predicate\":\"storage.fileGif\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":172975040,\"predicate\":\"storage.filePng\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":-1373745011,\"predicate\":\"storage.filePdf\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":1384777335,\"predicate\":\"storage.fileMp3\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":1258941372,\"predicate\":\"storage.fileMov\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":-1278304028,\"predicate\":\"storage.fileMp4\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":276907596,\"predicate\":\"storage.fileWebp\",\"params\":[],\"type\":\"storage.FileType\"},{\"id\":-742634630,\"predicate\":\"userEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"User\"},{\"id\":1326562017,\"predicate\":\"userProfilePhotoEmpty\",\"params\":[],\"type\":\"UserProfilePhoto\"},{\"id\":-2100168954,\"predicate\":\"userProfilePhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"has_video\",\"type\":\"flags.0?true\"},{\"name\":\"photo_id\",\"type\":\"long\"},{\"name\":\"stripped_thumb\",\"type\":\"flags.1?bytes\"},{\"name\":\"dc_id\",\"type\":\"int\"}],\"type\":\"UserProfilePhoto\"},{\"id\":164646985,\"predicate\":\"userStatusEmpty\",\"params\":[],\"type\":\"UserStatus\"},{\"id\":-306628279,\"predicate\":\"userStatusOnline\",\"params\":[{\"name\":\"expires\",\"type\":\"int\"}],\"type\":\"UserStatus\"},{\"id\":9203775,\"predicate\":\"userStatusOffline\",\"params\":[{\"name\":\"was_online\",\"type\":\"int\"}],\"type\":\"UserStatus\"},{\"id\":693512293,\"predicate\":\"chatEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"Chat\"},{\"id\":1103884886,\"predicate\":\"chat\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"creator\",\"type\":\"flags.0?true\"},{\"name\":\"left\",\"type\":\"flags.2?true\"},{\"name\":\"deactivated\",\"type\":\"flags.5?true\"},{\"name\":\"call_active\",\"type\":\"flags.23?true\"},{\"name\":\"call_not_empty\",\"type\":\"flags.24?true\"},{\"name\":\"noforwards\",\"type\":\"flags.25?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"ChatPhoto\"},{\"name\":\"participants_count\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"migrated_to\",\"type\":\"flags.6?InputChannel\"},{\"name\":\"admin_rights\",\"type\":\"flags.14?ChatAdminRights\"},{\"name\":\"default_banned_rights\",\"type\":\"flags.18?ChatBannedRights\"}],\"type\":\"Chat\"},{\"id\":1704108455,\"predicate\":\"chatForbidden\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"Chat\"},{\"id\":-779165146,\"predicate\":\"chatFull\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"can_set_username\",\"type\":\"flags.7?true\"},{\"name\":\"has_scheduled\",\"type\":\"flags.8?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"about\",\"type\":\"string\"},{\"name\":\"participants\",\"type\":\"ChatParticipants\"},{\"name\":\"chat_photo\",\"type\":\"flags.2?Photo\"},{\"name\":\"notify_settings\",\"type\":\"PeerNotifySettings\"},{\"name\":\"exported_invite\",\"type\":\"flags.13?ExportedChatInvite\"},{\"name\":\"bot_info\",\"type\":\"flags.3?Vector<BotInfo>\"},{\"name\":\"pinned_msg_id\",\"type\":\"flags.6?int\"},{\"name\":\"folder_id\",\"type\":\"flags.11?int\"},{\"name\":\"call\",\"type\":\"flags.12?InputGroupCall\"},{\"name\":\"ttl_period\",\"type\":\"flags.14?int\"},{\"name\":\"groupcall_default_join_as\",\"type\":\"flags.15?Peer\"},{\"name\":\"theme_emoticon\",\"type\":\"flags.16?string\"},{\"name\":\"requests_pending\",\"type\":\"flags.17?int\"},{\"name\":\"recent_requesters\",\"type\":\"flags.17?Vector<long>\"},{\"name\":\"available_reactions\",\"type\":\"flags.18?Vector<string>\"}],\"type\":\"ChatFull\"},{\"id\":-1070776313,\"predicate\":\"chatParticipant\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"inviter_id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"ChatParticipant\"},{\"id\":-2023500831,\"predicate\":\"chatParticipantsForbidden\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"self_participant\",\"type\":\"flags.0?ChatParticipant\"}],\"type\":\"ChatParticipants\"},{\"id\":1018991608,\"predicate\":\"chatParticipants\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"participants\",\"type\":\"Vector<ChatParticipant>\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"ChatParticipants\"},{\"id\":935395612,\"predicate\":\"chatPhotoEmpty\",\"params\":[],\"type\":\"ChatPhoto\"},{\"id\":476978193,\"predicate\":\"chatPhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"has_video\",\"type\":\"flags.0?true\"},{\"name\":\"photo_id\",\"type\":\"long\"},{\"name\":\"stripped_thumb\",\"type\":\"flags.1?bytes\"},{\"name\":\"dc_id\",\"type\":\"int\"}],\"type\":\"ChatPhoto\"},{\"id\":-1868117372,\"predicate\":\"messageEmpty\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"peer_id\",\"type\":\"flags.0?Peer\"}],\"type\":\"Message\"},{\"id\":940666592,\"predicate\":\"message\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"out\",\"type\":\"flags.1?true\"},{\"name\":\"mentioned\",\"type\":\"flags.4?true\"},{\"name\":\"media_unread\",\"type\":\"flags.5?true\"},{\"name\":\"silent\",\"type\":\"flags.13?true\"},{\"name\":\"post\",\"type\":\"flags.14?true\"},{\"name\":\"from_scheduled\",\"type\":\"flags.18?true\"},{\"name\":\"legacy\",\"type\":\"flags.19?true\"},{\"name\":\"edit_hide\",\"type\":\"flags.21?true\"},{\"name\":\"pinned\",\"type\":\"flags.24?true\"},{\"name\":\"noforwards\",\"type\":\"flags.26?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"from_id\",\"type\":\"flags.8?Peer\"},{\"name\":\"peer_id\",\"type\":\"Peer\"},{\"name\":\"fwd_from\",\"type\":\"flags.2?MessageFwdHeader\"},{\"name\":\"via_bot_id\",\"type\":\"flags.11?long\"},{\"name\":\"reply_to\",\"type\":\"flags.3?MessageReplyHeader\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"media\",\"type\":\"flags.9?MessageMedia\"},{\"name\":\"reply_markup\",\"type\":\"flags.6?ReplyMarkup\"},{\"name\":\"entities\",\"type\":\"flags.7?Vector<MessageEntity>\"},{\"name\":\"views\",\"type\":\"flags.10?int\"},{\"name\":\"forwards\",\"type\":\"flags.10?int\"},{\"name\":\"replies\",\"type\":\"flags.23?MessageReplies\"},{\"name\":\"edit_date\",\"type\":\"flags.15?int\"},{\"name\":\"post_author\",\"type\":\"flags.16?string\"},{\"name\":\"grouped_id\",\"type\":\"flags.17?long\"},{\"name\":\"reactions\",\"type\":\"flags.20?MessageReactions\"},{\"name\":\"restriction_reason\",\"type\":\"flags.22?Vector<RestrictionReason>\"},{\"name\":\"ttl_period\",\"type\":\"flags.25?int\"}],\"type\":\"Message\"},{\"id\":721967202,\"predicate\":\"messageService\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"out\",\"type\":\"flags.1?true\"},{\"name\":\"mentioned\",\"type\":\"flags.4?true\"},{\"name\":\"media_unread\",\"type\":\"flags.5?true\"},{\"name\":\"silent\",\"type\":\"flags.13?true\"},{\"name\":\"post\",\"type\":\"flags.14?true\"},{\"name\":\"legacy\",\"type\":\"flags.19?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"from_id\",\"type\":\"flags.8?Peer\"},{\"name\":\"peer_id\",\"type\":\"Peer\"},{\"name\":\"reply_to\",\"type\":\"flags.3?MessageReplyHeader\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"action\",\"type\":\"MessageAction\"},{\"name\":\"ttl_period\",\"type\":\"flags.25?int\"}],\"type\":\"Message\"},{\"id\":1038967584,\"predicate\":\"messageMediaEmpty\",\"params\":[],\"type\":\"MessageMedia\"},{\"id\":1766936791,\"predicate\":\"messageMediaPhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"photo\",\"type\":\"flags.0?Photo\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.2?int\"}],\"type\":\"MessageMedia\"},{\"id\":1457575028,\"predicate\":\"messageMediaGeo\",\"params\":[{\"name\":\"geo\",\"type\":\"GeoPoint\"}],\"type\":\"MessageMedia\"},{\"id\":1882335561,\"predicate\":\"messageMediaContact\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"vcard\",\"type\":\"string\"},{\"name\":\"user_id\",\"type\":\"long\"}],\"type\":\"MessageMedia\"},{\"id\":-1618676578,\"predicate\":\"messageMediaUnsupported\",\"params\":[],\"type\":\"MessageMedia\"},{\"id\":-1230047312,\"predicate\":\"messageActionEmpty\",\"params\":[],\"type\":\"MessageAction\"},{\"id\":-1119368275,\"predicate\":\"messageActionChatCreate\",\"params\":[{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"users\",\"type\":\"Vector<long>\"}],\"type\":\"MessageAction\"},{\"id\":-1247687078,\"predicate\":\"messageActionChatEditTitle\",\"params\":[{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"MessageAction\"},{\"id\":2144015272,\"predicate\":\"messageActionChatEditPhoto\",\"params\":[{\"name\":\"photo\",\"type\":\"Photo\"}],\"type\":\"MessageAction\"},{\"id\":-1780220945,\"predicate\":\"messageActionChatDeletePhoto\",\"params\":[],\"type\":\"MessageAction\"},{\"id\":365886720,\"predicate\":\"messageActionChatAddUser\",\"params\":[{\"name\":\"users\",\"type\":\"Vector<long>\"}],\"type\":\"MessageAction\"},{\"id\":-1539362612,\"predicate\":\"messageActionChatDeleteUser\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"}],\"type\":\"MessageAction\"},{\"id\":-1460809483,\"predicate\":\"dialog\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pinned\",\"type\":\"flags.2?true\"},{\"name\":\"unread_mark\",\"type\":\"flags.3?true\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"top_message\",\"type\":\"int\"},{\"name\":\"read_inbox_max_id\",\"type\":\"int\"},{\"name\":\"read_outbox_max_id\",\"type\":\"int\"},{\"name\":\"unread_count\",\"type\":\"int\"},{\"name\":\"unread_mentions_count\",\"type\":\"int\"},{\"name\":\"unread_reactions_count\",\"type\":\"int\"},{\"name\":\"notify_settings\",\"type\":\"PeerNotifySettings\"},{\"name\":\"pts\",\"type\":\"flags.0?int\"},{\"name\":\"draft\",\"type\":\"flags.1?DraftMessage\"},{\"name\":\"folder_id\",\"type\":\"flags.4?int\"}],\"type\":\"Dialog\"},{\"id\":590459437,\"predicate\":\"photoEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"Photo\"},{\"id\":-82216347,\"predicate\":\"photo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"has_stickers\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"sizes\",\"type\":\"Vector<PhotoSize>\"},{\"name\":\"video_sizes\",\"type\":\"flags.1?Vector<VideoSize>\"},{\"name\":\"dc_id\",\"type\":\"int\"}],\"type\":\"Photo\"},{\"id\":236446268,\"predicate\":\"photoSizeEmpty\",\"params\":[{\"name\":\"type\",\"type\":\"string\"}],\"type\":\"PhotoSize\"},{\"id\":1976012384,\"predicate\":\"photoSize\",\"params\":[{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"},{\"name\":\"size\",\"type\":\"int\"}],\"type\":\"PhotoSize\"},{\"id\":35527382,\"predicate\":\"photoCachedSize\",\"params\":[{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"PhotoSize\"},{\"id\":286776671,\"predicate\":\"geoPointEmpty\",\"params\":[],\"type\":\"GeoPoint\"},{\"id\":-1297942941,\"predicate\":\"geoPoint\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"long\",\"type\":\"double\"},{\"name\":\"lat\",\"type\":\"double\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"accuracy_radius\",\"type\":\"flags.0?int\"}],\"type\":\"GeoPoint\"},{\"id\":1577067778,\"predicate\":\"auth.sentCode\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"type\",\"type\":\"auth.SentCodeType\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"},{\"name\":\"next_type\",\"type\":\"flags.1?auth.CodeType\"},{\"name\":\"timeout\",\"type\":\"flags.2?int\"}],\"type\":\"auth.SentCode\"},{\"id\":872119224,\"predicate\":\"auth.authorization\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"setup_password_required\",\"type\":\"flags.1?true\"},{\"name\":\"otherwise_relogin_days\",\"type\":\"flags.1?int\"},{\"name\":\"tmp_sessions\",\"type\":\"flags.0?int\"},{\"name\":\"user\",\"type\":\"User\"}],\"type\":\"auth.Authorization\"},{\"id\":-1271602504,\"predicate\":\"auth.exportedAuthorization\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"auth.ExportedAuthorization\"},{\"id\":-1195615476,\"predicate\":\"inputNotifyPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"InputNotifyPeer\"},{\"id\":423314455,\"predicate\":\"inputNotifyUsers\",\"params\":[],\"type\":\"InputNotifyPeer\"},{\"id\":1251338318,\"predicate\":\"inputNotifyChats\",\"params\":[],\"type\":\"InputNotifyPeer\"},{\"id\":-551616469,\"predicate\":\"inputPeerNotifySettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"show_previews\",\"type\":\"flags.0?Bool\"},{\"name\":\"silent\",\"type\":\"flags.1?Bool\"},{\"name\":\"mute_until\",\"type\":\"flags.2?int\"},{\"name\":\"sound\",\"type\":\"flags.3?NotificationSound\"}],\"type\":\"InputPeerNotifySettings\"},{\"id\":-1472527322,\"predicate\":\"peerNotifySettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"show_previews\",\"type\":\"flags.0?Bool\"},{\"name\":\"silent\",\"type\":\"flags.1?Bool\"},{\"name\":\"mute_until\",\"type\":\"flags.2?int\"},{\"name\":\"ios_sound\",\"type\":\"flags.3?NotificationSound\"},{\"name\":\"android_sound\",\"type\":\"flags.4?NotificationSound\"},{\"name\":\"other_sound\",\"type\":\"flags.5?NotificationSound\"}],\"type\":\"PeerNotifySettings\"},{\"id\":-1525149427,\"predicate\":\"peerSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"report_spam\",\"type\":\"flags.0?true\"},{\"name\":\"add_contact\",\"type\":\"flags.1?true\"},{\"name\":\"block_contact\",\"type\":\"flags.2?true\"},{\"name\":\"share_contact\",\"type\":\"flags.3?true\"},{\"name\":\"need_contacts_exception\",\"type\":\"flags.4?true\"},{\"name\":\"report_geo\",\"type\":\"flags.5?true\"},{\"name\":\"autoarchived\",\"type\":\"flags.7?true\"},{\"name\":\"invite_members\",\"type\":\"flags.8?true\"},{\"name\":\"request_chat_broadcast\",\"type\":\"flags.10?true\"},{\"name\":\"geo_distance\",\"type\":\"flags.6?int\"},{\"name\":\"request_chat_title\",\"type\":\"flags.9?string\"},{\"name\":\"request_chat_date\",\"type\":\"flags.9?int\"}],\"type\":\"PeerSettings\"},{\"id\":-1539849235,\"predicate\":\"wallPaper\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"creator\",\"type\":\"flags.0?true\"},{\"name\":\"default\",\"type\":\"flags.1?true\"},{\"name\":\"pattern\",\"type\":\"flags.3?true\"},{\"name\":\"dark\",\"type\":\"flags.4?true\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"slug\",\"type\":\"string\"},{\"name\":\"document\",\"type\":\"Document\"},{\"name\":\"settings\",\"type\":\"flags.2?WallPaperSettings\"}],\"type\":\"WallPaper\"},{\"id\":1490799288,\"predicate\":\"inputReportReasonSpam\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":505595789,\"predicate\":\"inputReportReasonViolence\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":777640226,\"predicate\":\"inputReportReasonPornography\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":-1376497949,\"predicate\":\"inputReportReasonChildAbuse\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":-1041980751,\"predicate\":\"inputReportReasonOther\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":-1938625919,\"predicate\":\"userFull\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"blocked\",\"type\":\"flags.0?true\"},{\"name\":\"phone_calls_available\",\"type\":\"flags.4?true\"},{\"name\":\"phone_calls_private\",\"type\":\"flags.5?true\"},{\"name\":\"can_pin_message\",\"type\":\"flags.7?true\"},{\"name\":\"has_scheduled\",\"type\":\"flags.12?true\"},{\"name\":\"video_calls_available\",\"type\":\"flags.13?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"about\",\"type\":\"flags.1?string\"},{\"name\":\"settings\",\"type\":\"PeerSettings\"},{\"name\":\"profile_photo\",\"type\":\"flags.2?Photo\"},{\"name\":\"notify_settings\",\"type\":\"PeerNotifySettings\"},{\"name\":\"bot_info\",\"type\":\"flags.3?BotInfo\"},{\"name\":\"pinned_msg_id\",\"type\":\"flags.6?int\"},{\"name\":\"common_chats_count\",\"type\":\"int\"},{\"name\":\"folder_id\",\"type\":\"flags.11?int\"},{\"name\":\"ttl_period\",\"type\":\"flags.14?int\"},{\"name\":\"theme_emoticon\",\"type\":\"flags.15?string\"},{\"name\":\"private_forward_name\",\"type\":\"flags.16?string\"},{\"name\":\"bot_group_admin_rights\",\"type\":\"flags.17?ChatAdminRights\"},{\"name\":\"bot_broadcast_admin_rights\",\"type\":\"flags.18?ChatAdminRights\"}],\"type\":\"UserFull\"},{\"id\":341499403,\"predicate\":\"contact\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"mutual\",\"type\":\"Bool\"}],\"type\":\"Contact\"},{\"id\":-1052885936,\"predicate\":\"importedContact\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"client_id\",\"type\":\"long\"}],\"type\":\"ImportedContact\"},{\"id\":383348795,\"predicate\":\"contactStatus\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"status\",\"type\":\"UserStatus\"}],\"type\":\"ContactStatus\"},{\"id\":-1219778094,\"predicate\":\"contacts.contactsNotModified\",\"params\":[],\"type\":\"contacts.Contacts\"},{\"id\":-353862078,\"predicate\":\"contacts.contacts\",\"params\":[{\"name\":\"contacts\",\"type\":\"Vector<Contact>\"},{\"name\":\"saved_count\",\"type\":\"int\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.Contacts\"},{\"id\":2010127419,\"predicate\":\"contacts.importedContacts\",\"params\":[{\"name\":\"imported\",\"type\":\"Vector<ImportedContact>\"},{\"name\":\"popular_invites\",\"type\":\"Vector<PopularContact>\"},{\"name\":\"retry_contacts\",\"type\":\"Vector<long>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.ImportedContacts\"},{\"id\":182326673,\"predicate\":\"contacts.blocked\",\"params\":[{\"name\":\"blocked\",\"type\":\"Vector<PeerBlocked>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.Blocked\"},{\"id\":-513392236,\"predicate\":\"contacts.blockedSlice\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"blocked\",\"type\":\"Vector<PeerBlocked>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.Blocked\"},{\"id\":364538944,\"predicate\":\"messages.dialogs\",\"params\":[{\"name\":\"dialogs\",\"type\":\"Vector<Dialog>\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.Dialogs\"},{\"id\":1910543603,\"predicate\":\"messages.dialogsSlice\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"dialogs\",\"type\":\"Vector<Dialog>\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.Dialogs\"},{\"id\":-1938715001,\"predicate\":\"messages.messages\",\"params\":[{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.Messages\"},{\"id\":978610270,\"predicate\":\"messages.messagesSlice\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"inexact\",\"type\":\"flags.1?true\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"next_rate\",\"type\":\"flags.0?int\"},{\"name\":\"offset_id_offset\",\"type\":\"flags.2?int\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.Messages\"},{\"id\":1694474197,\"predicate\":\"messages.chats\",\"params\":[{\"name\":\"chats\",\"type\":\"Vector<Chat>\"}],\"type\":\"messages.Chats\"},{\"id\":-438840932,\"predicate\":\"messages.chatFull\",\"params\":[{\"name\":\"full_chat\",\"type\":\"ChatFull\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.ChatFull\"},{\"id\":-1269012015,\"predicate\":\"messages.affectedHistory\",\"params\":[{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"},{\"name\":\"offset\",\"type\":\"int\"}],\"type\":\"messages.AffectedHistory\"},{\"id\":1474492012,\"predicate\":\"inputMessagesFilterEmpty\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":-1777752804,\"predicate\":\"inputMessagesFilterPhotos\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":-1614803355,\"predicate\":\"inputMessagesFilterVideo\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":1458172132,\"predicate\":\"inputMessagesFilterPhotoVideo\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":-1629621880,\"predicate\":\"inputMessagesFilterDocument\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":2129714567,\"predicate\":\"inputMessagesFilterUrl\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":-3644025,\"predicate\":\"inputMessagesFilterGif\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":522914557,\"predicate\":\"updateNewMessage\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":1318109142,\"predicate\":\"updateMessageID\",\"params\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"random_id\",\"type\":\"long\"}],\"type\":\"Update\"},{\"id\":-1576161051,\"predicate\":\"updateDeleteMessages\",\"params\":[{\"name\":\"messages\",\"type\":\"Vector<int>\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-1071741569,\"predicate\":\"updateUserTyping\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"action\",\"type\":\"SendMessageAction\"}],\"type\":\"Update\"},{\"id\":-2092401936,\"predicate\":\"updateChatUserTyping\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"from_id\",\"type\":\"Peer\"},{\"name\":\"action\",\"type\":\"SendMessageAction\"}],\"type\":\"Update\"},{\"id\":125178264,\"predicate\":\"updateChatParticipants\",\"params\":[{\"name\":\"participants\",\"type\":\"ChatParticipants\"}],\"type\":\"Update\"},{\"id\":-440534818,\"predicate\":\"updateUserStatus\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"status\",\"type\":\"UserStatus\"}],\"type\":\"Update\"},{\"id\":-1007549728,\"predicate\":\"updateUserName\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"username\",\"type\":\"string\"}],\"type\":\"Update\"},{\"id\":-232290676,\"predicate\":\"updateUserPhoto\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"photo\",\"type\":\"UserProfilePhoto\"},{\"name\":\"previous\",\"type\":\"Bool\"}],\"type\":\"Update\"},{\"id\":-1519637954,\"predicate\":\"updates.state\",\"params\":[{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"qts\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"seq\",\"type\":\"int\"},{\"name\":\"unread_count\",\"type\":\"int\"}],\"type\":\"updates.State\"},{\"id\":1567990072,\"predicate\":\"updates.differenceEmpty\",\"params\":[{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"seq\",\"type\":\"int\"}],\"type\":\"updates.Difference\"},{\"id\":16030880,\"predicate\":\"updates.difference\",\"params\":[{\"name\":\"new_messages\",\"type\":\"Vector<Message>\"},{\"name\":\"new_encrypted_messages\",\"type\":\"Vector<EncryptedMessage>\"},{\"name\":\"other_updates\",\"type\":\"Vector<Update>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"state\",\"type\":\"updates.State\"}],\"type\":\"updates.Difference\"},{\"id\":-1459938943,\"predicate\":\"updates.differenceSlice\",\"params\":[{\"name\":\"new_messages\",\"type\":\"Vector<Message>\"},{\"name\":\"new_encrypted_messages\",\"type\":\"Vector<EncryptedMessage>\"},{\"name\":\"other_updates\",\"type\":\"Vector<Update>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"intermediate_state\",\"type\":\"updates.State\"}],\"type\":\"updates.Difference\"},{\"id\":-484987010,\"predicate\":\"updatesTooLong\",\"params\":[],\"type\":\"Updates\"},{\"id\":826001400,\"predicate\":\"updateShortMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"out\",\"type\":\"flags.1?true\"},{\"name\":\"mentioned\",\"type\":\"flags.4?true\"},{\"name\":\"media_unread\",\"type\":\"flags.5?true\"},{\"name\":\"silent\",\"type\":\"flags.13?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"fwd_from\",\"type\":\"flags.2?MessageFwdHeader\"},{\"name\":\"via_bot_id\",\"type\":\"flags.11?long\"},{\"name\":\"reply_to\",\"type\":\"flags.3?MessageReplyHeader\"},{\"name\":\"entities\",\"type\":\"flags.7?Vector<MessageEntity>\"},{\"name\":\"ttl_period\",\"type\":\"flags.25?int\"}],\"type\":\"Updates\"},{\"id\":1299050149,\"predicate\":\"updateShortChatMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"out\",\"type\":\"flags.1?true\"},{\"name\":\"mentioned\",\"type\":\"flags.4?true\"},{\"name\":\"media_unread\",\"type\":\"flags.5?true\"},{\"name\":\"silent\",\"type\":\"flags.13?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"from_id\",\"type\":\"long\"},{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"fwd_from\",\"type\":\"flags.2?MessageFwdHeader\"},{\"name\":\"via_bot_id\",\"type\":\"flags.11?long\"},{\"name\":\"reply_to\",\"type\":\"flags.3?MessageReplyHeader\"},{\"name\":\"entities\",\"type\":\"flags.7?Vector<MessageEntity>\"},{\"name\":\"ttl_period\",\"type\":\"flags.25?int\"}],\"type\":\"Updates\"},{\"id\":2027216577,\"predicate\":\"updateShort\",\"params\":[{\"name\":\"update\",\"type\":\"Update\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":1918567619,\"predicate\":\"updatesCombined\",\"params\":[{\"name\":\"updates\",\"type\":\"Vector<Update>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"seq_start\",\"type\":\"int\"},{\"name\":\"seq\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":1957577280,\"predicate\":\"updates\",\"params\":[{\"name\":\"updates\",\"type\":\"Vector<Update>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"seq\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":-1916114267,\"predicate\":\"photos.photos\",\"params\":[{\"name\":\"photos\",\"type\":\"Vector<Photo>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"photos.Photos\"},{\"id\":352657236,\"predicate\":\"photos.photosSlice\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"photos\",\"type\":\"Vector<Photo>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"photos.Photos\"},{\"id\":539045032,\"predicate\":\"photos.photo\",\"params\":[{\"name\":\"photo\",\"type\":\"Photo\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"photos.Photo\"},{\"id\":157948117,\"predicate\":\"upload.file\",\"params\":[{\"name\":\"type\",\"type\":\"storage.FileType\"},{\"name\":\"mtime\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"upload.File\"},{\"id\":414687501,\"predicate\":\"dcOption\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"ipv6\",\"type\":\"flags.0?true\"},{\"name\":\"media_only\",\"type\":\"flags.1?true\"},{\"name\":\"tcpo_only\",\"type\":\"flags.2?true\"},{\"name\":\"cdn\",\"type\":\"flags.3?true\"},{\"name\":\"static\",\"type\":\"flags.4?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"ip_address\",\"type\":\"string\"},{\"name\":\"port\",\"type\":\"int\"},{\"name\":\"secret\",\"type\":\"flags.10?bytes\"}],\"type\":\"DcOption\"},{\"id\":856375399,\"predicate\":\"config\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"phonecalls_enabled\",\"type\":\"flags.1?true\"},{\"name\":\"default_p2p_contacts\",\"type\":\"flags.3?true\"},{\"name\":\"preload_featured_stickers\",\"type\":\"flags.4?true\"},{\"name\":\"ignore_phone_entities\",\"type\":\"flags.5?true\"},{\"name\":\"revoke_pm_inbox\",\"type\":\"flags.6?true\"},{\"name\":\"blocked_mode\",\"type\":\"flags.8?true\"},{\"name\":\"pfs_enabled\",\"type\":\"flags.13?true\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"expires\",\"type\":\"int\"},{\"name\":\"test_mode\",\"type\":\"Bool\"},{\"name\":\"this_dc\",\"type\":\"int\"},{\"name\":\"dc_options\",\"type\":\"Vector<DcOption>\"},{\"name\":\"dc_txt_domain_name\",\"type\":\"string\"},{\"name\":\"chat_size_max\",\"type\":\"int\"},{\"name\":\"megagroup_size_max\",\"type\":\"int\"},{\"name\":\"forwarded_count_max\",\"type\":\"int\"},{\"name\":\"online_update_period_ms\",\"type\":\"int\"},{\"name\":\"offline_blur_timeout_ms\",\"type\":\"int\"},{\"name\":\"offline_idle_timeout_ms\",\"type\":\"int\"},{\"name\":\"online_cloud_timeout_ms\",\"type\":\"int\"},{\"name\":\"notify_cloud_delay_ms\",\"type\":\"int\"},{\"name\":\"notify_default_delay_ms\",\"type\":\"int\"},{\"name\":\"push_chat_period_ms\",\"type\":\"int\"},{\"name\":\"push_chat_limit\",\"type\":\"int\"},{\"name\":\"saved_gifs_limit\",\"type\":\"int\"},{\"name\":\"edit_time_limit\",\"type\":\"int\"},{\"name\":\"revoke_time_limit\",\"type\":\"int\"},{\"name\":\"revoke_pm_time_limit\",\"type\":\"int\"},{\"name\":\"rating_e_decay\",\"type\":\"int\"},{\"name\":\"stickers_recent_limit\",\"type\":\"int\"},{\"name\":\"stickers_faved_limit\",\"type\":\"int\"},{\"name\":\"channels_read_media_period\",\"type\":\"int\"},{\"name\":\"tmp_sessions\",\"type\":\"flags.0?int\"},{\"name\":\"pinned_dialogs_count_max\",\"type\":\"int\"},{\"name\":\"pinned_infolder_count_max\",\"type\":\"int\"},{\"name\":\"call_receive_timeout_ms\",\"type\":\"int\"},{\"name\":\"call_ring_timeout_ms\",\"type\":\"int\"},{\"name\":\"call_connect_timeout_ms\",\"type\":\"int\"},{\"name\":\"call_packet_timeout_ms\",\"type\":\"int\"},{\"name\":\"me_url_prefix\",\"type\":\"string\"},{\"name\":\"autoupdate_url_prefix\",\"type\":\"flags.7?string\"},{\"name\":\"gif_search_username\",\"type\":\"flags.9?string\"},{\"name\":\"venue_search_username\",\"type\":\"flags.10?string\"},{\"name\":\"img_search_username\",\"type\":\"flags.11?string\"},{\"name\":\"static_maps_provider\",\"type\":\"flags.12?string\"},{\"name\":\"caption_length_max\",\"type\":\"int\"},{\"name\":\"message_length_max\",\"type\":\"int\"},{\"name\":\"webfile_dc_id\",\"type\":\"int\"},{\"name\":\"suggested_lang_code\",\"type\":\"flags.2?string\"},{\"name\":\"lang_pack_version\",\"type\":\"flags.2?int\"},{\"name\":\"base_lang_pack_version\",\"type\":\"flags.2?int\"}],\"type\":\"Config\"},{\"id\":-1910892683,\"predicate\":\"nearestDc\",\"params\":[{\"name\":\"country\",\"type\":\"string\"},{\"name\":\"this_dc\",\"type\":\"int\"},{\"name\":\"nearest_dc\",\"type\":\"int\"}],\"type\":\"NearestDc\"},{\"id\":-860107216,\"predicate\":\"help.appUpdate\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"can_not_skip\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"version\",\"type\":\"string\"},{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"Vector<MessageEntity>\"},{\"name\":\"document\",\"type\":\"flags.1?Document\"},{\"name\":\"url\",\"type\":\"flags.2?string\"},{\"name\":\"sticker\",\"type\":\"flags.3?Document\"}],\"type\":\"help.AppUpdate\"},{\"id\":-1000708810,\"predicate\":\"help.noAppUpdate\",\"params\":[],\"type\":\"help.AppUpdate\"},{\"id\":415997816,\"predicate\":\"help.inviteText\",\"params\":[{\"name\":\"message\",\"type\":\"string\"}],\"type\":\"help.InviteText\"},{\"id\":314359194,\"predicate\":\"updateNewEncryptedMessage\",\"params\":[{\"name\":\"message\",\"type\":\"EncryptedMessage\"},{\"name\":\"qts\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":386986326,\"predicate\":\"updateEncryptedChatTyping\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-1264392051,\"predicate\":\"updateEncryption\",\"params\":[{\"name\":\"chat\",\"type\":\"EncryptedChat\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":956179895,\"predicate\":\"updateEncryptedMessagesRead\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"max_date\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-1417756512,\"predicate\":\"encryptedChatEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"EncryptedChat\"},{\"id\":1722964307,\"predicate\":\"encryptedChatWaiting\",\"params\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"long\"},{\"name\":\"participant_id\",\"type\":\"long\"}],\"type\":\"EncryptedChat\"},{\"id\":1223809356,\"predicate\":\"encryptedChatRequested\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"folder_id\",\"type\":\"flags.0?int\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"long\"},{\"name\":\"participant_id\",\"type\":\"long\"},{\"name\":\"g_a\",\"type\":\"bytes\"}],\"type\":\"EncryptedChat\"},{\"id\":1643173063,\"predicate\":\"encryptedChat\",\"params\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"long\"},{\"name\":\"participant_id\",\"type\":\"long\"},{\"name\":\"g_a_or_b\",\"type\":\"bytes\"},{\"name\":\"key_fingerprint\",\"type\":\"long\"}],\"type\":\"EncryptedChat\"},{\"id\":505183301,\"predicate\":\"encryptedChatDiscarded\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"history_deleted\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"EncryptedChat\"},{\"id\":-247351839,\"predicate\":\"inputEncryptedChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputEncryptedChat\"},{\"id\":-1038136962,\"predicate\":\"encryptedFileEmpty\",\"params\":[],\"type\":\"EncryptedFile\"},{\"id\":1248893260,\"predicate\":\"encryptedFile\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"key_fingerprint\",\"type\":\"int\"}],\"type\":\"EncryptedFile\"},{\"id\":406307684,\"predicate\":\"inputEncryptedFileEmpty\",\"params\":[],\"type\":\"InputEncryptedFile\"},{\"id\":1690108678,\"predicate\":\"inputEncryptedFileUploaded\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"parts\",\"type\":\"int\"},{\"name\":\"md5_checksum\",\"type\":\"string\"},{\"name\":\"key_fingerprint\",\"type\":\"int\"}],\"type\":\"InputEncryptedFile\"},{\"id\":1511503333,\"predicate\":\"inputEncryptedFile\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputEncryptedFile\"},{\"id\":-182231723,\"predicate\":\"inputEncryptedFileLocation\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputFileLocation\"},{\"id\":-317144808,\"predicate\":\"encryptedMessage\",\"params\":[{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"},{\"name\":\"file\",\"type\":\"EncryptedFile\"}],\"type\":\"EncryptedMessage\"},{\"id\":594758406,\"predicate\":\"encryptedMessageService\",\"params\":[{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"chat_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"EncryptedMessage\"},{\"id\":-1058912715,\"predicate\":\"messages.dhConfigNotModified\",\"params\":[{\"name\":\"random\",\"type\":\"bytes\"}],\"type\":\"messages.DhConfig\"},{\"id\":740433629,\"predicate\":\"messages.dhConfig\",\"params\":[{\"name\":\"g\",\"type\":\"int\"},{\"name\":\"p\",\"type\":\"bytes\"},{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"random\",\"type\":\"bytes\"}],\"type\":\"messages.DhConfig\"},{\"id\":1443858741,\"predicate\":\"messages.sentEncryptedMessage\",\"params\":[{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"messages.SentEncryptedMessage\"},{\"id\":-1802240206,\"predicate\":\"messages.sentEncryptedFile\",\"params\":[{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"file\",\"type\":\"EncryptedFile\"}],\"type\":\"messages.SentEncryptedMessage\"},{\"id\":-95482955,\"predicate\":\"inputFileBig\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"parts\",\"type\":\"int\"},{\"name\":\"name\",\"type\":\"string\"}],\"type\":\"InputFile\"},{\"id\":767652808,\"predicate\":\"inputEncryptedFileBigUploaded\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"parts\",\"type\":\"int\"},{\"name\":\"key_fingerprint\",\"type\":\"int\"}],\"type\":\"InputEncryptedFile\"},{\"id\":1037718609,\"predicate\":\"updateChatParticipantAdd\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"inviter_id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-483443337,\"predicate\":\"updateChatParticipantDelete\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-1906403213,\"predicate\":\"updateDcOptions\",\"params\":[{\"name\":\"dc_options\",\"type\":\"Vector<DcOption>\"}],\"type\":\"Update\"},{\"id\":1530447553,\"predicate\":\"inputMediaUploadedDocument\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"nosound_video\",\"type\":\"flags.3?true\"},{\"name\":\"force_file\",\"type\":\"flags.4?true\"},{\"name\":\"file\",\"type\":\"InputFile\"},{\"name\":\"thumb\",\"type\":\"flags.2?InputFile\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"attributes\",\"type\":\"Vector<DocumentAttribute>\"},{\"name\":\"stickers\",\"type\":\"flags.0?Vector<InputDocument>\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.1?int\"}],\"type\":\"InputMedia\"},{\"id\":860303448,\"predicate\":\"inputMediaDocument\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"InputDocument\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.0?int\"},{\"name\":\"query\",\"type\":\"flags.1?string\"}],\"type\":\"InputMedia\"},{\"id\":-1666158377,\"predicate\":\"messageMediaDocument\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"document\",\"type\":\"flags.0?Document\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.2?int\"}],\"type\":\"MessageMedia\"},{\"id\":1928391342,\"predicate\":\"inputDocumentEmpty\",\"params\":[],\"type\":\"InputDocument\"},{\"id\":448771445,\"predicate\":\"inputDocument\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"}],\"type\":\"InputDocument\"},{\"id\":-1160743548,\"predicate\":\"inputDocumentFileLocation\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"},{\"name\":\"thumb_size\",\"type\":\"string\"}],\"type\":\"InputFileLocation\"},{\"id\":922273905,\"predicate\":\"documentEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"Document\"},{\"id\":512177195,\"predicate\":\"document\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"thumbs\",\"type\":\"flags.0?Vector<PhotoSize>\"},{\"name\":\"video_thumbs\",\"type\":\"flags.1?Vector<VideoSize>\"},{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"attributes\",\"type\":\"Vector<DocumentAttribute>\"}],\"type\":\"Document\"},{\"id\":398898678,\"predicate\":\"help.support\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"user\",\"type\":\"User\"}],\"type\":\"help.Support\"},{\"id\":-1613493288,\"predicate\":\"notifyPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"}],\"type\":\"NotifyPeer\"},{\"id\":-1261946036,\"predicate\":\"notifyUsers\",\"params\":[],\"type\":\"NotifyPeer\"},{\"id\":-1073230141,\"predicate\":\"notifyChats\",\"params\":[],\"type\":\"NotifyPeer\"},{\"id\":-1094555409,\"predicate\":\"updateNotifySettings\",\"params\":[{\"name\":\"peer\",\"type\":\"NotifyPeer\"},{\"name\":\"notify_settings\",\"type\":\"PeerNotifySettings\"}],\"type\":\"Update\"},{\"id\":381645902,\"predicate\":\"sendMessageTypingAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":-44119819,\"predicate\":\"sendMessageCancelAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":-1584933265,\"predicate\":\"sendMessageRecordVideoAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":-378127636,\"predicate\":\"sendMessageUploadVideoAction\",\"params\":[{\"name\":\"progress\",\"type\":\"int\"}],\"type\":\"SendMessageAction\"},{\"id\":-718310409,\"predicate\":\"sendMessageRecordAudioAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":-212740181,\"predicate\":\"sendMessageUploadAudioAction\",\"params\":[{\"name\":\"progress\",\"type\":\"int\"}],\"type\":\"SendMessageAction\"},{\"id\":-774682074,\"predicate\":\"sendMessageUploadPhotoAction\",\"params\":[{\"name\":\"progress\",\"type\":\"int\"}],\"type\":\"SendMessageAction\"},{\"id\":-1441998364,\"predicate\":\"sendMessageUploadDocumentAction\",\"params\":[{\"name\":\"progress\",\"type\":\"int\"}],\"type\":\"SendMessageAction\"},{\"id\":393186209,\"predicate\":\"sendMessageGeoLocationAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":1653390447,\"predicate\":\"sendMessageChooseContactAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":-1290580579,\"predicate\":\"contacts.found\",\"params\":[{\"name\":\"my_results\",\"type\":\"Vector<Peer>\"},{\"name\":\"results\",\"type\":\"Vector<Peer>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.Found\"},{\"id\":-337352679,\"predicate\":\"updateServiceNotification\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"popup\",\"type\":\"flags.0?true\"},{\"name\":\"inbox_date\",\"type\":\"flags.1?int\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"media\",\"type\":\"MessageMedia\"},{\"name\":\"entities\",\"type\":\"Vector<MessageEntity>\"}],\"type\":\"Update\"},{\"id\":-496024847,\"predicate\":\"userStatusRecently\",\"params\":[],\"type\":\"UserStatus\"},{\"id\":129960444,\"predicate\":\"userStatusLastWeek\",\"params\":[],\"type\":\"UserStatus\"},{\"id\":2011940674,\"predicate\":\"userStatusLastMonth\",\"params\":[],\"type\":\"UserStatus\"},{\"id\":-298113238,\"predicate\":\"updatePrivacy\",\"params\":[{\"name\":\"key\",\"type\":\"PrivacyKey\"},{\"name\":\"rules\",\"type\":\"Vector<PrivacyRule>\"}],\"type\":\"Update\"},{\"id\":1335282456,\"predicate\":\"inputPrivacyKeyStatusTimestamp\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":-1137792208,\"predicate\":\"privacyKeyStatusTimestamp\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":218751099,\"predicate\":\"inputPrivacyValueAllowContacts\",\"params\":[],\"type\":\"InputPrivacyRule\"},{\"id\":407582158,\"predicate\":\"inputPrivacyValueAllowAll\",\"params\":[],\"type\":\"InputPrivacyRule\"},{\"id\":320652927,\"predicate\":\"inputPrivacyValueAllowUsers\",\"params\":[{\"name\":\"users\",\"type\":\"Vector<InputUser>\"}],\"type\":\"InputPrivacyRule\"},{\"id\":195371015,\"predicate\":\"inputPrivacyValueDisallowContacts\",\"params\":[],\"type\":\"InputPrivacyRule\"},{\"id\":-697604407,\"predicate\":\"inputPrivacyValueDisallowAll\",\"params\":[],\"type\":\"InputPrivacyRule\"},{\"id\":-1877932953,\"predicate\":\"inputPrivacyValueDisallowUsers\",\"params\":[{\"name\":\"users\",\"type\":\"Vector<InputUser>\"}],\"type\":\"InputPrivacyRule\"},{\"id\":-123988,\"predicate\":\"privacyValueAllowContacts\",\"params\":[],\"type\":\"PrivacyRule\"},{\"id\":1698855810,\"predicate\":\"privacyValueAllowAll\",\"params\":[],\"type\":\"PrivacyRule\"},{\"id\":-1198497870,\"predicate\":\"privacyValueAllowUsers\",\"params\":[{\"name\":\"users\",\"type\":\"Vector<long>\"}],\"type\":\"PrivacyRule\"},{\"id\":-125240806,\"predicate\":\"privacyValueDisallowContacts\",\"params\":[],\"type\":\"PrivacyRule\"},{\"id\":-1955338397,\"predicate\":\"privacyValueDisallowAll\",\"params\":[],\"type\":\"PrivacyRule\"},{\"id\":-463335103,\"predicate\":\"privacyValueDisallowUsers\",\"params\":[{\"name\":\"users\",\"type\":\"Vector<long>\"}],\"type\":\"PrivacyRule\"},{\"id\":1352683077,\"predicate\":\"account.privacyRules\",\"params\":[{\"name\":\"rules\",\"type\":\"Vector<PrivacyRule>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"account.PrivacyRules\"},{\"id\":-1194283041,\"predicate\":\"accountDaysTTL\",\"params\":[{\"name\":\"days\",\"type\":\"int\"}],\"type\":\"AccountDaysTTL\"},{\"id\":88680979,\"predicate\":\"updateUserPhone\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"phone\",\"type\":\"string\"}],\"type\":\"Update\"},{\"id\":1815593308,\"predicate\":\"documentAttributeImageSize\",\"params\":[{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"}],\"type\":\"DocumentAttribute\"},{\"id\":297109817,\"predicate\":\"documentAttributeAnimated\",\"params\":[],\"type\":\"DocumentAttribute\"},{\"id\":1662637586,\"predicate\":\"documentAttributeSticker\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"mask\",\"type\":\"flags.1?true\"},{\"name\":\"alt\",\"type\":\"string\"},{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"},{\"name\":\"mask_coords\",\"type\":\"flags.0?MaskCoords\"}],\"type\":\"DocumentAttribute\"},{\"id\":250621158,\"predicate\":\"documentAttributeVideo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"round_message\",\"type\":\"flags.0?true\"},{\"name\":\"supports_streaming\",\"type\":\"flags.1?true\"},{\"name\":\"duration\",\"type\":\"int\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"}],\"type\":\"DocumentAttribute\"},{\"id\":-1739392570,\"predicate\":\"documentAttributeAudio\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"voice\",\"type\":\"flags.10?true\"},{\"name\":\"duration\",\"type\":\"int\"},{\"name\":\"title\",\"type\":\"flags.0?string\"},{\"name\":\"performer\",\"type\":\"flags.1?string\"},{\"name\":\"waveform\",\"type\":\"flags.2?bytes\"}],\"type\":\"DocumentAttribute\"},{\"id\":358154344,\"predicate\":\"documentAttributeFilename\",\"params\":[{\"name\":\"file_name\",\"type\":\"string\"}],\"type\":\"DocumentAttribute\"},{\"id\":-244016606,\"predicate\":\"messages.stickersNotModified\",\"params\":[],\"type\":\"messages.Stickers\"},{\"id\":816245886,\"predicate\":\"messages.stickers\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"stickers\",\"type\":\"Vector<Document>\"}],\"type\":\"messages.Stickers\"},{\"id\":313694676,\"predicate\":\"stickerPack\",\"params\":[{\"name\":\"emoticon\",\"type\":\"string\"},{\"name\":\"documents\",\"type\":\"Vector<long>\"}],\"type\":\"StickerPack\"},{\"id\":-395967805,\"predicate\":\"messages.allStickersNotModified\",\"params\":[],\"type\":\"messages.AllStickers\"},{\"id\":-843329861,\"predicate\":\"messages.allStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"sets\",\"type\":\"Vector<StickerSet>\"}],\"type\":\"messages.AllStickers\"},{\"id\":-1667805217,\"predicate\":\"updateReadHistoryInbox\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"folder_id\",\"type\":\"flags.0?int\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"still_unread_count\",\"type\":\"int\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":791617983,\"predicate\":\"updateReadHistoryOutbox\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-2066640507,\"predicate\":\"messages.affectedMessages\",\"params\":[{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"messages.AffectedMessages\"},{\"id\":2139689491,\"predicate\":\"updateWebPage\",\"params\":[{\"name\":\"webpage\",\"type\":\"WebPage\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-350980120,\"predicate\":\"webPageEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"WebPage\"},{\"id\":-981018084,\"predicate\":\"webPagePending\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"WebPage\"},{\"id\":-392411726,\"predicate\":\"webPage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"display_url\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"type\",\"type\":\"flags.0?string\"},{\"name\":\"site_name\",\"type\":\"flags.1?string\"},{\"name\":\"title\",\"type\":\"flags.2?string\"},{\"name\":\"description\",\"type\":\"flags.3?string\"},{\"name\":\"photo\",\"type\":\"flags.4?Photo\"},{\"name\":\"embed_url\",\"type\":\"flags.5?string\"},{\"name\":\"embed_type\",\"type\":\"flags.5?string\"},{\"name\":\"embed_width\",\"type\":\"flags.6?int\"},{\"name\":\"embed_height\",\"type\":\"flags.6?int\"},{\"name\":\"duration\",\"type\":\"flags.7?int\"},{\"name\":\"author\",\"type\":\"flags.8?string\"},{\"name\":\"document\",\"type\":\"flags.9?Document\"},{\"name\":\"cached_page\",\"type\":\"flags.10?Page\"},{\"name\":\"attributes\",\"type\":\"flags.12?Vector<WebPageAttribute>\"}],\"type\":\"WebPage\"},{\"id\":-1557277184,\"predicate\":\"messageMediaWebPage\",\"params\":[{\"name\":\"webpage\",\"type\":\"WebPage\"}],\"type\":\"MessageMedia\"},{\"id\":-1392388579,\"predicate\":\"authorization\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"current\",\"type\":\"flags.0?true\"},{\"name\":\"official_app\",\"type\":\"flags.1?true\"},{\"name\":\"password_pending\",\"type\":\"flags.2?true\"},{\"name\":\"encrypted_requests_disabled\",\"type\":\"flags.3?true\"},{\"name\":\"call_requests_disabled\",\"type\":\"flags.4?true\"},{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"device_model\",\"type\":\"string\"},{\"name\":\"platform\",\"type\":\"string\"},{\"name\":\"system_version\",\"type\":\"string\"},{\"name\":\"api_id\",\"type\":\"int\"},{\"name\":\"app_name\",\"type\":\"string\"},{\"name\":\"app_version\",\"type\":\"string\"},{\"name\":\"date_created\",\"type\":\"int\"},{\"name\":\"date_active\",\"type\":\"int\"},{\"name\":\"ip\",\"type\":\"string\"},{\"name\":\"country\",\"type\":\"string\"},{\"name\":\"region\",\"type\":\"string\"}],\"type\":\"Authorization\"},{\"id\":1275039392,\"predicate\":\"account.authorizations\",\"params\":[{\"name\":\"authorization_ttl_days\",\"type\":\"int\"},{\"name\":\"authorizations\",\"type\":\"Vector<Authorization>\"}],\"type\":\"account.Authorizations\"},{\"id\":408623183,\"predicate\":\"account.password\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"has_recovery\",\"type\":\"flags.0?true\"},{\"name\":\"has_secure_values\",\"type\":\"flags.1?true\"},{\"name\":\"has_password\",\"type\":\"flags.2?true\"},{\"name\":\"current_algo\",\"type\":\"flags.2?PasswordKdfAlgo\"},{\"name\":\"srp_B\",\"type\":\"flags.2?bytes\"},{\"name\":\"srp_id\",\"type\":\"flags.2?long\"},{\"name\":\"hint\",\"type\":\"flags.3?string\"},{\"name\":\"email_unconfirmed_pattern\",\"type\":\"flags.4?string\"},{\"name\":\"new_algo\",\"type\":\"PasswordKdfAlgo\"},{\"name\":\"new_secure_algo\",\"type\":\"SecurePasswordKdfAlgo\"},{\"name\":\"secure_random\",\"type\":\"bytes\"},{\"name\":\"pending_reset_date\",\"type\":\"flags.5?int\"}],\"type\":\"account.Password\"},{\"id\":-1705233435,\"predicate\":\"account.passwordSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"email\",\"type\":\"flags.0?string\"},{\"name\":\"secure_settings\",\"type\":\"flags.1?SecureSecretSettings\"}],\"type\":\"account.PasswordSettings\"},{\"id\":-1036572727,\"predicate\":\"account.passwordInputSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"new_algo\",\"type\":\"flags.0?PasswordKdfAlgo\"},{\"name\":\"new_password_hash\",\"type\":\"flags.0?bytes\"},{\"name\":\"hint\",\"type\":\"flags.0?string\"},{\"name\":\"email\",\"type\":\"flags.1?string\"},{\"name\":\"new_secure_settings\",\"type\":\"flags.2?SecureSecretSettings\"}],\"type\":\"account.PasswordInputSettings\"},{\"id\":326715557,\"predicate\":\"auth.passwordRecovery\",\"params\":[{\"name\":\"email_pattern\",\"type\":\"string\"}],\"type\":\"auth.PasswordRecovery\"},{\"id\":-1052959727,\"predicate\":\"inputMediaVenue\",\"params\":[{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"address\",\"type\":\"string\"},{\"name\":\"provider\",\"type\":\"string\"},{\"name\":\"venue_id\",\"type\":\"string\"},{\"name\":\"venue_type\",\"type\":\"string\"}],\"type\":\"InputMedia\"},{\"id\":784356159,\"predicate\":\"messageMediaVenue\",\"params\":[{\"name\":\"geo\",\"type\":\"GeoPoint\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"address\",\"type\":\"string\"},{\"name\":\"provider\",\"type\":\"string\"},{\"name\":\"venue_id\",\"type\":\"string\"},{\"name\":\"venue_type\",\"type\":\"string\"}],\"type\":\"MessageMedia\"},{\"id\":-1551583367,\"predicate\":\"receivedNotifyMessage\",\"params\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"flags\",\"type\":\"int\"}],\"type\":\"ReceivedNotifyMessage\"},{\"id\":179611673,\"predicate\":\"chatInviteExported\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"revoked\",\"type\":\"flags.0?true\"},{\"name\":\"permanent\",\"type\":\"flags.5?true\"},{\"name\":\"request_needed\",\"type\":\"flags.6?true\"},{\"name\":\"link\",\"type\":\"string\"},{\"name\":\"admin_id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"start_date\",\"type\":\"flags.4?int\"},{\"name\":\"expire_date\",\"type\":\"flags.1?int\"},{\"name\":\"usage_limit\",\"type\":\"flags.2?int\"},{\"name\":\"usage\",\"type\":\"flags.3?int\"},{\"name\":\"requested\",\"type\":\"flags.7?int\"},{\"name\":\"title\",\"type\":\"flags.8?string\"}],\"type\":\"ExportedChatInvite\"},{\"id\":1516793212,\"predicate\":\"chatInviteAlready\",\"params\":[{\"name\":\"chat\",\"type\":\"Chat\"}],\"type\":\"ChatInvite\"},{\"id\":806110401,\"predicate\":\"chatInvite\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"channel\",\"type\":\"flags.0?true\"},{\"name\":\"broadcast\",\"type\":\"flags.1?true\"},{\"name\":\"public\",\"type\":\"flags.2?true\"},{\"name\":\"megagroup\",\"type\":\"flags.3?true\"},{\"name\":\"request_needed\",\"type\":\"flags.6?true\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"about\",\"type\":\"flags.5?string\"},{\"name\":\"photo\",\"type\":\"Photo\"},{\"name\":\"participants_count\",\"type\":\"int\"},{\"name\":\"participants\",\"type\":\"flags.4?Vector<User>\"}],\"type\":\"ChatInvite\"},{\"id\":51520707,\"predicate\":\"messageActionChatJoinedByLink\",\"params\":[{\"name\":\"inviter_id\",\"type\":\"long\"}],\"type\":\"MessageAction\"},{\"id\":1757493555,\"predicate\":\"updateReadMessagesContents\",\"params\":[{\"name\":\"messages\",\"type\":\"Vector<int>\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-4838507,\"predicate\":\"inputStickerSetEmpty\",\"params\":[],\"type\":\"InputStickerSet\"},{\"id\":-1645763991,\"predicate\":\"inputStickerSetID\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputStickerSet\"},{\"id\":-2044933984,\"predicate\":\"inputStickerSetShortName\",\"params\":[{\"name\":\"short_name\",\"type\":\"string\"}],\"type\":\"InputStickerSet\"},{\"id\":-673242758,\"predicate\":\"stickerSet\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"archived\",\"type\":\"flags.1?true\"},{\"name\":\"official\",\"type\":\"flags.2?true\"},{\"name\":\"masks\",\"type\":\"flags.3?true\"},{\"name\":\"animated\",\"type\":\"flags.5?true\"},{\"name\":\"videos\",\"type\":\"flags.6?true\"},{\"name\":\"installed_date\",\"type\":\"flags.0?int\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"short_name\",\"type\":\"string\"},{\"name\":\"thumbs\",\"type\":\"flags.4?Vector<PhotoSize>\"},{\"name\":\"thumb_dc_id\",\"type\":\"flags.4?int\"},{\"name\":\"thumb_version\",\"type\":\"flags.4?int\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"StickerSet\"},{\"id\":-1240849242,\"predicate\":\"messages.stickerSet\",\"params\":[{\"name\":\"set\",\"type\":\"StickerSet\"},{\"name\":\"packs\",\"type\":\"Vector<StickerPack>\"},{\"name\":\"documents\",\"type\":\"Vector<Document>\"}],\"type\":\"messages.StickerSet\"},{\"id\":1073147056,\"predicate\":\"user\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"self\",\"type\":\"flags.10?true\"},{\"name\":\"contact\",\"type\":\"flags.11?true\"},{\"name\":\"mutual_contact\",\"type\":\"flags.12?true\"},{\"name\":\"deleted\",\"type\":\"flags.13?true\"},{\"name\":\"bot\",\"type\":\"flags.14?true\"},{\"name\":\"bot_chat_history\",\"type\":\"flags.15?true\"},{\"name\":\"bot_nochats\",\"type\":\"flags.16?true\"},{\"name\":\"verified\",\"type\":\"flags.17?true\"},{\"name\":\"restricted\",\"type\":\"flags.18?true\"},{\"name\":\"min\",\"type\":\"flags.20?true\"},{\"name\":\"bot_inline_geo\",\"type\":\"flags.21?true\"},{\"name\":\"support\",\"type\":\"flags.23?true\"},{\"name\":\"scam\",\"type\":\"flags.24?true\"},{\"name\":\"apply_min_photo\",\"type\":\"flags.25?true\"},{\"name\":\"fake\",\"type\":\"flags.26?true\"},{\"name\":\"bot_attach_menu\",\"type\":\"flags.27?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"flags.0?long\"},{\"name\":\"first_name\",\"type\":\"flags.1?string\"},{\"name\":\"last_name\",\"type\":\"flags.2?string\"},{\"name\":\"username\",\"type\":\"flags.3?string\"},{\"name\":\"phone\",\"type\":\"flags.4?string\"},{\"name\":\"photo\",\"type\":\"flags.5?UserProfilePhoto\"},{\"name\":\"status\",\"type\":\"flags.6?UserStatus\"},{\"name\":\"bot_info_version\",\"type\":\"flags.14?int\"},{\"name\":\"restriction_reason\",\"type\":\"flags.18?Vector<RestrictionReason>\"},{\"name\":\"bot_inline_placeholder\",\"type\":\"flags.19?string\"},{\"name\":\"lang_code\",\"type\":\"flags.22?string\"}],\"type\":\"User\"},{\"id\":-1032140601,\"predicate\":\"botCommand\",\"params\":[{\"name\":\"command\",\"type\":\"string\"},{\"name\":\"description\",\"type\":\"string\"}],\"type\":\"BotCommand\"},{\"id\":-468280483,\"predicate\":\"botInfo\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"description\",\"type\":\"string\"},{\"name\":\"commands\",\"type\":\"Vector<BotCommand>\"},{\"name\":\"menu_button\",\"type\":\"BotMenuButton\"}],\"type\":\"BotInfo\"},{\"id\":-1560655744,\"predicate\":\"keyboardButton\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":2002815875,\"predicate\":\"keyboardButtonRow\",\"params\":[{\"name\":\"buttons\",\"type\":\"Vector<KeyboardButton>\"}],\"type\":\"KeyboardButtonRow\"},{\"id\":-1606526075,\"predicate\":\"replyKeyboardHide\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"selective\",\"type\":\"flags.2?true\"}],\"type\":\"ReplyMarkup\"},{\"id\":-2035021048,\"predicate\":\"replyKeyboardForceReply\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"single_use\",\"type\":\"flags.1?true\"},{\"name\":\"selective\",\"type\":\"flags.2?true\"},{\"name\":\"placeholder\",\"type\":\"flags.3?string\"}],\"type\":\"ReplyMarkup\"},{\"id\":-2049074735,\"predicate\":\"replyKeyboardMarkup\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"resize\",\"type\":\"flags.0?true\"},{\"name\":\"single_use\",\"type\":\"flags.1?true\"},{\"name\":\"selective\",\"type\":\"flags.2?true\"},{\"name\":\"rows\",\"type\":\"Vector<KeyboardButtonRow>\"},{\"name\":\"placeholder\",\"type\":\"flags.3?string\"}],\"type\":\"ReplyMarkup\"},{\"id\":-571955892,\"predicate\":\"inputPeerUser\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputPeer\"},{\"id\":-233744186,\"predicate\":\"inputUser\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputUser\"},{\"id\":-1148011883,\"predicate\":\"messageEntityUnknown\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":-100378723,\"predicate\":\"messageEntityMention\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":1868782349,\"predicate\":\"messageEntityHashtag\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":1827637959,\"predicate\":\"messageEntityBotCommand\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":1859134776,\"predicate\":\"messageEntityUrl\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":1692693954,\"predicate\":\"messageEntityEmail\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":-1117713463,\"predicate\":\"messageEntityBold\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":-2106619040,\"predicate\":\"messageEntityItalic\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":681706865,\"predicate\":\"messageEntityCode\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":1938967520,\"predicate\":\"messageEntityPre\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"},{\"name\":\"language\",\"type\":\"string\"}],\"type\":\"MessageEntity\"},{\"id\":1990644519,\"predicate\":\"messageEntityTextUrl\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"},{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"MessageEntity\"},{\"id\":-1877614335,\"predicate\":\"updateShortSentMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"out\",\"type\":\"flags.1?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"media\",\"type\":\"flags.9?MessageMedia\"},{\"name\":\"entities\",\"type\":\"flags.7?Vector<MessageEntity>\"},{\"name\":\"ttl_period\",\"type\":\"flags.25?int\"}],\"type\":\"Updates\"},{\"id\":-292807034,\"predicate\":\"inputChannelEmpty\",\"params\":[],\"type\":\"InputChannel\"},{\"id\":-212145112,\"predicate\":\"inputChannel\",\"params\":[{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputChannel\"},{\"id\":-1566230754,\"predicate\":\"peerChannel\",\"params\":[{\"name\":\"channel_id\",\"type\":\"long\"}],\"type\":\"Peer\"},{\"id\":666680316,\"predicate\":\"inputPeerChannel\",\"params\":[{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputPeer\"},{\"id\":-2107528095,\"predicate\":\"channel\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"creator\",\"type\":\"flags.0?true\"},{\"name\":\"left\",\"type\":\"flags.2?true\"},{\"name\":\"broadcast\",\"type\":\"flags.5?true\"},{\"name\":\"verified\",\"type\":\"flags.7?true\"},{\"name\":\"megagroup\",\"type\":\"flags.8?true\"},{\"name\":\"restricted\",\"type\":\"flags.9?true\"},{\"name\":\"signatures\",\"type\":\"flags.11?true\"},{\"name\":\"min\",\"type\":\"flags.12?true\"},{\"name\":\"scam\",\"type\":\"flags.19?true\"},{\"name\":\"has_link\",\"type\":\"flags.20?true\"},{\"name\":\"has_geo\",\"type\":\"flags.21?true\"},{\"name\":\"slowmode_enabled\",\"type\":\"flags.22?true\"},{\"name\":\"call_active\",\"type\":\"flags.23?true\"},{\"name\":\"call_not_empty\",\"type\":\"flags.24?true\"},{\"name\":\"fake\",\"type\":\"flags.25?true\"},{\"name\":\"gigagroup\",\"type\":\"flags.26?true\"},{\"name\":\"noforwards\",\"type\":\"flags.27?true\"},{\"name\":\"join_to_send\",\"type\":\"flags.28?true\"},{\"name\":\"join_request\",\"type\":\"flags.29?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"flags.13?long\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"username\",\"type\":\"flags.6?string\"},{\"name\":\"photo\",\"type\":\"ChatPhoto\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"restriction_reason\",\"type\":\"flags.9?Vector<RestrictionReason>\"},{\"name\":\"admin_rights\",\"type\":\"flags.14?ChatAdminRights\"},{\"name\":\"banned_rights\",\"type\":\"flags.15?ChatBannedRights\"},{\"name\":\"default_banned_rights\",\"type\":\"flags.18?ChatBannedRights\"},{\"name\":\"participants_count\",\"type\":\"flags.17?int\"}],\"type\":\"Chat\"},{\"id\":399807445,\"predicate\":\"channelForbidden\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"broadcast\",\"type\":\"flags.5?true\"},{\"name\":\"megagroup\",\"type\":\"flags.8?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"until_date\",\"type\":\"flags.16?int\"}],\"type\":\"Chat\"},{\"id\":2131196633,\"predicate\":\"contacts.resolvedPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.ResolvedPeer\"},{\"id\":-362240487,\"predicate\":\"channelFull\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"can_view_participants\",\"type\":\"flags.3?true\"},{\"name\":\"can_set_username\",\"type\":\"flags.6?true\"},{\"name\":\"can_set_stickers\",\"type\":\"flags.7?true\"},{\"name\":\"hidden_prehistory\",\"type\":\"flags.10?true\"},{\"name\":\"can_set_location\",\"type\":\"flags.16?true\"},{\"name\":\"has_scheduled\",\"type\":\"flags.19?true\"},{\"name\":\"can_view_stats\",\"type\":\"flags.20?true\"},{\"name\":\"blocked\",\"type\":\"flags.22?true\"},{\"name\":\"flags2\",\"type\":\"#\"},{\"name\":\"can_delete_channel\",\"type\":\"flags2.0?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"about\",\"type\":\"string\"},{\"name\":\"participants_count\",\"type\":\"flags.0?int\"},{\"name\":\"admins_count\",\"type\":\"flags.1?int\"},{\"name\":\"kicked_count\",\"type\":\"flags.2?int\"},{\"name\":\"banned_count\",\"type\":\"flags.2?int\"},{\"name\":\"online_count\",\"type\":\"flags.13?int\"},{\"name\":\"read_inbox_max_id\",\"type\":\"int\"},{\"name\":\"read_outbox_max_id\",\"type\":\"int\"},{\"name\":\"unread_count\",\"type\":\"int\"},{\"name\":\"chat_photo\",\"type\":\"Photo\"},{\"name\":\"notify_settings\",\"type\":\"PeerNotifySettings\"},{\"name\":\"exported_invite\",\"type\":\"flags.23?ExportedChatInvite\"},{\"name\":\"bot_info\",\"type\":\"Vector<BotInfo>\"},{\"name\":\"migrated_from_chat_id\",\"type\":\"flags.4?long\"},{\"name\":\"migrated_from_max_id\",\"type\":\"flags.4?int\"},{\"name\":\"pinned_msg_id\",\"type\":\"flags.5?int\"},{\"name\":\"stickerset\",\"type\":\"flags.8?StickerSet\"},{\"name\":\"available_min_id\",\"type\":\"flags.9?int\"},{\"name\":\"folder_id\",\"type\":\"flags.11?int\"},{\"name\":\"linked_chat_id\",\"type\":\"flags.14?long\"},{\"name\":\"location\",\"type\":\"flags.15?ChannelLocation\"},{\"name\":\"slowmode_seconds\",\"type\":\"flags.17?int\"},{\"name\":\"slowmode_next_send_date\",\"type\":\"flags.18?int\"},{\"name\":\"stats_dc\",\"type\":\"flags.12?int\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"call\",\"type\":\"flags.21?InputGroupCall\"},{\"name\":\"ttl_period\",\"type\":\"flags.24?int\"},{\"name\":\"pending_suggestions\",\"type\":\"flags.25?Vector<string>\"},{\"name\":\"groupcall_default_join_as\",\"type\":\"flags.26?Peer\"},{\"name\":\"theme_emoticon\",\"type\":\"flags.27?string\"},{\"name\":\"requests_pending\",\"type\":\"flags.28?int\"},{\"name\":\"recent_requesters\",\"type\":\"flags.28?Vector<long>\"},{\"name\":\"default_send_as\",\"type\":\"flags.29?Peer\"},{\"name\":\"available_reactions\",\"type\":\"flags.30?Vector<string>\"}],\"type\":\"ChatFull\"},{\"id\":182649427,\"predicate\":\"messageRange\",\"params\":[{\"name\":\"min_id\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"int\"}],\"type\":\"MessageRange\"},{\"id\":1682413576,\"predicate\":\"messages.channelMessages\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"inexact\",\"type\":\"flags.1?true\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"offset_id_offset\",\"type\":\"flags.2?int\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.Messages\"},{\"id\":-1781355374,\"predicate\":\"messageActionChannelCreate\",\"params\":[{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"MessageAction\"},{\"id\":277713951,\"predicate\":\"updateChannelTooLong\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"pts\",\"type\":\"flags.0?int\"}],\"type\":\"Update\"},{\"id\":1666927625,\"predicate\":\"updateChannel\",\"params\":[{\"name\":\"channel_id\",\"type\":\"long\"}],\"type\":\"Update\"},{\"id\":1656358105,\"predicate\":\"updateNewChannelMessage\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-1842450928,\"predicate\":\"updateReadChannelInbox\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"folder_id\",\"type\":\"flags.0?int\"},{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"still_unread_count\",\"type\":\"int\"},{\"name\":\"pts\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-1020437742,\"predicate\":\"updateDeleteChannelMessages\",\"params\":[{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"messages\",\"type\":\"Vector<int>\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-232346616,\"predicate\":\"updateChannelMessageViews\",\"params\":[{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"views\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":1041346555,\"predicate\":\"updates.channelDifferenceEmpty\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"final\",\"type\":\"flags.0?true\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"timeout\",\"type\":\"flags.1?int\"}],\"type\":\"updates.ChannelDifference\"},{\"id\":-1531132162,\"predicate\":\"updates.channelDifferenceTooLong\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"final\",\"type\":\"flags.0?true\"},{\"name\":\"timeout\",\"type\":\"flags.1?int\"},{\"name\":\"dialog\",\"type\":\"Dialog\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"updates.ChannelDifference\"},{\"id\":543450958,\"predicate\":\"updates.channelDifference\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"final\",\"type\":\"flags.0?true\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"timeout\",\"type\":\"flags.1?int\"},{\"name\":\"new_messages\",\"type\":\"Vector<Message>\"},{\"name\":\"other_updates\",\"type\":\"Vector<Update>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"updates.ChannelDifference\"},{\"id\":-1798033689,\"predicate\":\"channelMessagesFilterEmpty\",\"params\":[],\"type\":\"ChannelMessagesFilter\"},{\"id\":-847783593,\"predicate\":\"channelMessagesFilter\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"exclude_new_messages\",\"type\":\"flags.1?true\"},{\"name\":\"ranges\",\"type\":\"Vector<MessageRange>\"}],\"type\":\"ChannelMessagesFilter\"},{\"id\":-1072953408,\"predicate\":\"channelParticipant\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"ChannelParticipant\"},{\"id\":900251559,\"predicate\":\"channelParticipantSelf\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"via_request\",\"type\":\"flags.0?true\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"inviter_id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"ChannelParticipant\"},{\"id\":803602899,\"predicate\":\"channelParticipantCreator\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"admin_rights\",\"type\":\"ChatAdminRights\"},{\"name\":\"rank\",\"type\":\"flags.0?string\"}],\"type\":\"ChannelParticipant\"},{\"id\":-566281095,\"predicate\":\"channelParticipantsRecent\",\"params\":[],\"type\":\"ChannelParticipantsFilter\"},{\"id\":-1268741783,\"predicate\":\"channelParticipantsAdmins\",\"params\":[],\"type\":\"ChannelParticipantsFilter\"},{\"id\":-1548400251,\"predicate\":\"channelParticipantsKicked\",\"params\":[{\"name\":\"q\",\"type\":\"string\"}],\"type\":\"ChannelParticipantsFilter\"},{\"id\":-1699676497,\"predicate\":\"channels.channelParticipants\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"participants\",\"type\":\"Vector<ChannelParticipant>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"channels.ChannelParticipants\"},{\"id\":-541588713,\"predicate\":\"channels.channelParticipant\",\"params\":[{\"name\":\"participant\",\"type\":\"ChannelParticipant\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"channels.ChannelParticipant\"},{\"id\":-462696732,\"predicate\":\"chatParticipantCreator\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"}],\"type\":\"ChatParticipant\"},{\"id\":-1600962725,\"predicate\":\"chatParticipantAdmin\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"inviter_id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"ChatParticipant\"},{\"id\":-674602590,\"predicate\":\"updateChatParticipantAdmin\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"is_admin\",\"type\":\"Bool\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-519864430,\"predicate\":\"messageActionChatMigrateTo\",\"params\":[{\"name\":\"channel_id\",\"type\":\"long\"}],\"type\":\"MessageAction\"},{\"id\":-365344535,\"predicate\":\"messageActionChannelMigrateFrom\",\"params\":[{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"chat_id\",\"type\":\"long\"}],\"type\":\"MessageAction\"},{\"id\":-1328445861,\"predicate\":\"channelParticipantsBots\",\"params\":[],\"type\":\"ChannelParticipantsFilter\"},{\"id\":2013922064,\"predicate\":\"help.termsOfService\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"popup\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"DataJSON\"},{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"Vector<MessageEntity>\"},{\"name\":\"min_age_confirm\",\"type\":\"flags.1?int\"}],\"type\":\"help.TermsOfService\"},{\"id\":1753886890,\"predicate\":\"updateNewStickerSet\",\"params\":[{\"name\":\"stickerset\",\"type\":\"messages.StickerSet\"}],\"type\":\"Update\"},{\"id\":196268545,\"predicate\":\"updateStickerSetsOrder\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"masks\",\"type\":\"flags.0?true\"},{\"name\":\"order\",\"type\":\"Vector<long>\"}],\"type\":\"Update\"},{\"id\":1135492588,\"predicate\":\"updateStickerSets\",\"params\":[],\"type\":\"Update\"},{\"id\":-402498398,\"predicate\":\"messages.savedGifsNotModified\",\"params\":[],\"type\":\"messages.SavedGifs\"},{\"id\":-2069878259,\"predicate\":\"messages.savedGifs\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"gifs\",\"type\":\"Vector<Document>\"}],\"type\":\"messages.SavedGifs\"},{\"id\":-1821035490,\"predicate\":\"updateSavedGifs\",\"params\":[],\"type\":\"Update\"},{\"id\":864077702,\"predicate\":\"inputBotInlineMessageMediaAuto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.1?Vector<MessageEntity>\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"InputBotInlineMessage\"},{\"id\":1036876423,\"predicate\":\"inputBotInlineMessageText\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.0?true\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.1?Vector<MessageEntity>\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"InputBotInlineMessage\"},{\"id\":-2000710887,\"predicate\":\"inputBotInlineResult\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"flags.1?string\"},{\"name\":\"description\",\"type\":\"flags.2?string\"},{\"name\":\"url\",\"type\":\"flags.3?string\"},{\"name\":\"thumb\",\"type\":\"flags.4?InputWebDocument\"},{\"name\":\"content\",\"type\":\"flags.5?InputWebDocument\"},{\"name\":\"send_message\",\"type\":\"InputBotInlineMessage\"}],\"type\":\"InputBotInlineResult\"},{\"id\":1984755728,\"predicate\":\"botInlineMessageMediaAuto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.1?Vector<MessageEntity>\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"BotInlineMessage\"},{\"id\":-1937807902,\"predicate\":\"botInlineMessageText\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.0?true\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.1?Vector<MessageEntity>\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"BotInlineMessage\"},{\"id\":295067450,\"predicate\":\"botInlineResult\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"flags.1?string\"},{\"name\":\"description\",\"type\":\"flags.2?string\"},{\"name\":\"url\",\"type\":\"flags.3?string\"},{\"name\":\"thumb\",\"type\":\"flags.4?WebDocument\"},{\"name\":\"content\",\"type\":\"flags.5?WebDocument\"},{\"name\":\"send_message\",\"type\":\"BotInlineMessage\"}],\"type\":\"BotInlineResult\"},{\"id\":-1803769784,\"predicate\":\"messages.botResults\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"gallery\",\"type\":\"flags.0?true\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"next_offset\",\"type\":\"flags.1?string\"},{\"name\":\"switch_pm\",\"type\":\"flags.2?InlineBotSwitchPM\"},{\"name\":\"results\",\"type\":\"Vector<BotInlineResult>\"},{\"name\":\"cache_time\",\"type\":\"int\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.BotResults\"},{\"id\":1232025500,\"predicate\":\"updateBotInlineQuery\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"query\",\"type\":\"string\"},{\"name\":\"geo\",\"type\":\"flags.0?GeoPoint\"},{\"name\":\"peer_type\",\"type\":\"flags.1?InlineQueryPeerType\"},{\"name\":\"offset\",\"type\":\"string\"}],\"type\":\"Update\"},{\"id\":317794823,\"predicate\":\"updateBotInlineSend\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"query\",\"type\":\"string\"},{\"name\":\"geo\",\"type\":\"flags.0?GeoPoint\"},{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"msg_id\",\"type\":\"flags.1?InputBotInlineMessageID\"}],\"type\":\"Update\"},{\"id\":1358283666,\"predicate\":\"inputMessagesFilterVoice\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":928101534,\"predicate\":\"inputMessagesFilterMusic\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":-1107622874,\"predicate\":\"inputPrivacyKeyChatInvite\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":1343122938,\"predicate\":\"privacyKeyChatInvite\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":1571494644,\"predicate\":\"exportedMessageLink\",\"params\":[{\"name\":\"link\",\"type\":\"string\"},{\"name\":\"html\",\"type\":\"string\"}],\"type\":\"ExportedMessageLink\"},{\"id\":1601666510,\"predicate\":\"messageFwdHeader\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"imported\",\"type\":\"flags.7?true\"},{\"name\":\"from_id\",\"type\":\"flags.0?Peer\"},{\"name\":\"from_name\",\"type\":\"flags.5?string\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"channel_post\",\"type\":\"flags.2?int\"},{\"name\":\"post_author\",\"type\":\"flags.3?string\"},{\"name\":\"saved_from_peer\",\"type\":\"flags.4?Peer\"},{\"name\":\"saved_from_msg_id\",\"type\":\"flags.4?int\"},{\"name\":\"psa_type\",\"type\":\"flags.6?string\"}],\"type\":\"MessageFwdHeader\"},{\"id\":457133559,\"predicate\":\"updateEditChannelMessage\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-1799538451,\"predicate\":\"messageActionPinMessage\",\"params\":[],\"type\":\"MessageAction\"},{\"id\":1923290508,\"predicate\":\"auth.codeTypeSms\",\"params\":[],\"type\":\"auth.CodeType\"},{\"id\":1948046307,\"predicate\":\"auth.codeTypeCall\",\"params\":[],\"type\":\"auth.CodeType\"},{\"id\":577556219,\"predicate\":\"auth.codeTypeFlashCall\",\"params\":[],\"type\":\"auth.CodeType\"},{\"id\":1035688326,\"predicate\":\"auth.sentCodeTypeApp\",\"params\":[{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"auth.SentCodeType\"},{\"id\":-1073693790,\"predicate\":\"auth.sentCodeTypeSms\",\"params\":[{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"auth.SentCodeType\"},{\"id\":1398007207,\"predicate\":\"auth.sentCodeTypeCall\",\"params\":[{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"auth.SentCodeType\"},{\"id\":-1425815847,\"predicate\":\"auth.sentCodeTypeFlashCall\",\"params\":[{\"name\":\"pattern\",\"type\":\"string\"}],\"type\":\"auth.SentCodeType\"},{\"id\":629866245,\"predicate\":\"keyboardButtonUrl\",\"params\":[{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":901503851,\"predicate\":\"keyboardButtonCallback\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"requires_password\",\"type\":\"flags.0?true\"},{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"type\":\"KeyboardButton\"},{\"id\":-1318425559,\"predicate\":\"keyboardButtonRequestPhone\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":-59151553,\"predicate\":\"keyboardButtonRequestGeoLocation\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":90744648,\"predicate\":\"keyboardButtonSwitchInline\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"same_peer\",\"type\":\"flags.0?true\"},{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"query\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":1218642516,\"predicate\":\"replyInlineMarkup\",\"params\":[{\"name\":\"rows\",\"type\":\"Vector<KeyboardButtonRow>\"}],\"type\":\"ReplyMarkup\"},{\"id\":911761060,\"predicate\":\"messages.botCallbackAnswer\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"alert\",\"type\":\"flags.1?true\"},{\"name\":\"has_url\",\"type\":\"flags.3?true\"},{\"name\":\"native_ui\",\"type\":\"flags.4?true\"},{\"name\":\"message\",\"type\":\"flags.0?string\"},{\"name\":\"url\",\"type\":\"flags.2?string\"},{\"name\":\"cache_time\",\"type\":\"int\"}],\"type\":\"messages.BotCallbackAnswer\"},{\"id\":-1177566067,\"predicate\":\"updateBotCallbackQuery\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"chat_instance\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"flags.0?bytes\"},{\"name\":\"game_short_name\",\"type\":\"flags.1?string\"}],\"type\":\"Update\"},{\"id\":649453030,\"predicate\":\"messages.messageEditData\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"caption\",\"type\":\"flags.0?true\"}],\"type\":\"messages.MessageEditData\"},{\"id\":-469536605,\"predicate\":\"updateEditMessage\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-1768777083,\"predicate\":\"inputBotInlineMessageMediaGeo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"heading\",\"type\":\"flags.0?int\"},{\"name\":\"period\",\"type\":\"flags.1?int\"},{\"name\":\"proximity_notification_radius\",\"type\":\"flags.3?int\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"InputBotInlineMessage\"},{\"id\":1098628881,\"predicate\":\"inputBotInlineMessageMediaVenue\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"address\",\"type\":\"string\"},{\"name\":\"provider\",\"type\":\"string\"},{\"name\":\"venue_id\",\"type\":\"string\"},{\"name\":\"venue_type\",\"type\":\"string\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"InputBotInlineMessage\"},{\"id\":-1494368259,\"predicate\":\"inputBotInlineMessageMediaContact\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"vcard\",\"type\":\"string\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"InputBotInlineMessage\"},{\"id\":85477117,\"predicate\":\"botInlineMessageMediaGeo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"geo\",\"type\":\"GeoPoint\"},{\"name\":\"heading\",\"type\":\"flags.0?int\"},{\"name\":\"period\",\"type\":\"flags.1?int\"},{\"name\":\"proximity_notification_radius\",\"type\":\"flags.3?int\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"BotInlineMessage\"},{\"id\":-1970903652,\"predicate\":\"botInlineMessageMediaVenue\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"geo\",\"type\":\"GeoPoint\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"address\",\"type\":\"string\"},{\"name\":\"provider\",\"type\":\"string\"},{\"name\":\"venue_id\",\"type\":\"string\"},{\"name\":\"venue_type\",\"type\":\"string\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"BotInlineMessage\"},{\"id\":416402882,\"predicate\":\"botInlineMessageMediaContact\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"vcard\",\"type\":\"string\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"BotInlineMessage\"},{\"id\":-1462213465,\"predicate\":\"inputBotInlineResultPhoto\",\"params\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"InputPhoto\"},{\"name\":\"send_message\",\"type\":\"InputBotInlineMessage\"}],\"type\":\"InputBotInlineResult\"},{\"id\":-459324,\"predicate\":\"inputBotInlineResultDocument\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"flags.1?string\"},{\"name\":\"description\",\"type\":\"flags.2?string\"},{\"name\":\"document\",\"type\":\"InputDocument\"},{\"name\":\"send_message\",\"type\":\"InputBotInlineMessage\"}],\"type\":\"InputBotInlineResult\"},{\"id\":400266251,\"predicate\":\"botInlineMediaResult\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"flags.0?Photo\"},{\"name\":\"document\",\"type\":\"flags.1?Document\"},{\"name\":\"title\",\"type\":\"flags.2?string\"},{\"name\":\"description\",\"type\":\"flags.3?string\"},{\"name\":\"send_message\",\"type\":\"BotInlineMessage\"}],\"type\":\"BotInlineResult\"},{\"id\":-1995686519,\"predicate\":\"inputBotInlineMessageID\",\"params\":[{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputBotInlineMessageID\"},{\"id\":1763610706,\"predicate\":\"updateInlineBotCallbackQuery\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"msg_id\",\"type\":\"InputBotInlineMessageID\"},{\"name\":\"chat_instance\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"flags.0?bytes\"},{\"name\":\"game_short_name\",\"type\":\"flags.1?string\"}],\"type\":\"Update\"},{\"id\":1008755359,\"predicate\":\"inlineBotSwitchPM\",\"params\":[{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"start_param\",\"type\":\"string\"}],\"type\":\"InlineBotSwitchPM\"},{\"id\":863093588,\"predicate\":\"messages.peerDialogs\",\"params\":[{\"name\":\"dialogs\",\"type\":\"Vector<Dialog>\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"state\",\"type\":\"updates.State\"}],\"type\":\"messages.PeerDialogs\"},{\"id\":-305282981,\"predicate\":\"topPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"rating\",\"type\":\"double\"}],\"type\":\"TopPeer\"},{\"id\":-1419371685,\"predicate\":\"topPeerCategoryBotsPM\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":344356834,\"predicate\":\"topPeerCategoryBotsInline\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":104314861,\"predicate\":\"topPeerCategoryCorrespondents\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":-1122524854,\"predicate\":\"topPeerCategoryGroups\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":371037736,\"predicate\":\"topPeerCategoryChannels\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":-75283823,\"predicate\":\"topPeerCategoryPeers\",\"params\":[{\"name\":\"category\",\"type\":\"TopPeerCategory\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"peers\",\"type\":\"Vector<TopPeer>\"}],\"type\":\"TopPeerCategoryPeers\"},{\"id\":-567906571,\"predicate\":\"contacts.topPeersNotModified\",\"params\":[],\"type\":\"contacts.TopPeers\"},{\"id\":1891070632,\"predicate\":\"contacts.topPeers\",\"params\":[{\"name\":\"categories\",\"type\":\"Vector<TopPeerCategoryPeers>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"contacts.TopPeers\"},{\"id\":-595914432,\"predicate\":\"messageEntityMentionName\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"long\"}],\"type\":\"MessageEntity\"},{\"id\":546203849,\"predicate\":\"inputMessageEntityMentionName\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"MessageEntity\"},{\"id\":975236280,\"predicate\":\"inputMessagesFilterChatPhotos\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":-1218471511,\"predicate\":\"updateReadChannelOutbox\",\"params\":[{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"max_id\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-299124375,\"predicate\":\"updateDraftMessage\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"draft\",\"type\":\"DraftMessage\"}],\"type\":\"Update\"},{\"id\":453805082,\"predicate\":\"draftMessageEmpty\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"date\",\"type\":\"flags.0?int\"}],\"type\":\"DraftMessage\"},{\"id\":-40996577,\"predicate\":\"draftMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.1?true\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"DraftMessage\"},{\"id\":-1615153660,\"predicate\":\"messageActionHistoryClear\",\"params\":[],\"type\":\"MessageAction\"},{\"id\":-958657434,\"predicate\":\"messages.featuredStickersNotModified\",\"params\":[{\"name\":\"count\",\"type\":\"int\"}],\"type\":\"messages.FeaturedStickers\"},{\"id\":-2067782896,\"predicate\":\"messages.featuredStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"sets\",\"type\":\"Vector<StickerSetCovered>\"},{\"name\":\"unread\",\"type\":\"Vector<long>\"}],\"type\":\"messages.FeaturedStickers\"},{\"id\":1461528386,\"predicate\":\"updateReadFeaturedStickers\",\"params\":[],\"type\":\"Update\"},{\"id\":186120336,\"predicate\":\"messages.recentStickersNotModified\",\"params\":[],\"type\":\"messages.RecentStickers\"},{\"id\":-1999405994,\"predicate\":\"messages.recentStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"packs\",\"type\":\"Vector<StickerPack>\"},{\"name\":\"stickers\",\"type\":\"Vector<Document>\"},{\"name\":\"dates\",\"type\":\"Vector<int>\"}],\"type\":\"messages.RecentStickers\"},{\"id\":-1706939360,\"predicate\":\"updateRecentStickers\",\"params\":[],\"type\":\"Update\"},{\"id\":1338747336,\"predicate\":\"messages.archivedStickers\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"sets\",\"type\":\"Vector<StickerSetCovered>\"}],\"type\":\"messages.ArchivedStickers\"},{\"id\":946083368,\"predicate\":\"messages.stickerSetInstallResultSuccess\",\"params\":[],\"type\":\"messages.StickerSetInstallResult\"},{\"id\":904138920,\"predicate\":\"messages.stickerSetInstallResultArchive\",\"params\":[{\"name\":\"sets\",\"type\":\"Vector<StickerSetCovered>\"}],\"type\":\"messages.StickerSetInstallResult\"},{\"id\":1678812626,\"predicate\":\"stickerSetCovered\",\"params\":[{\"name\":\"set\",\"type\":\"StickerSet\"},{\"name\":\"cover\",\"type\":\"Document\"}],\"type\":\"StickerSetCovered\"},{\"id\":-1574314746,\"predicate\":\"updateConfig\",\"params\":[],\"type\":\"Update\"},{\"id\":861169551,\"predicate\":\"updatePtsChanged\",\"params\":[],\"type\":\"Update\"},{\"id\":-440664550,\"predicate\":\"inputMediaPhotoExternal\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.0?int\"}],\"type\":\"InputMedia\"},{\"id\":-78455655,\"predicate\":\"inputMediaDocumentExternal\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"ttl_seconds\",\"type\":\"flags.0?int\"}],\"type\":\"InputMedia\"},{\"id\":872932635,\"predicate\":\"stickerSetMultiCovered\",\"params\":[{\"name\":\"set\",\"type\":\"StickerSet\"},{\"name\":\"covers\",\"type\":\"Vector<Document>\"}],\"type\":\"StickerSetCovered\"},{\"id\":-1361650766,\"predicate\":\"maskCoords\",\"params\":[{\"name\":\"n\",\"type\":\"int\"},{\"name\":\"x\",\"type\":\"double\"},{\"name\":\"y\",\"type\":\"double\"},{\"name\":\"zoom\",\"type\":\"double\"}],\"type\":\"MaskCoords\"},{\"id\":-1744710921,\"predicate\":\"documentAttributeHasStickers\",\"params\":[],\"type\":\"DocumentAttribute\"},{\"id\":1251549527,\"predicate\":\"inputStickeredMediaPhoto\",\"params\":[{\"name\":\"id\",\"type\":\"InputPhoto\"}],\"type\":\"InputStickeredMedia\"},{\"id\":70813275,\"predicate\":\"inputStickeredMediaDocument\",\"params\":[{\"name\":\"id\",\"type\":\"InputDocument\"}],\"type\":\"InputStickeredMedia\"},{\"id\":-1107729093,\"predicate\":\"game\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"short_name\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"description\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"Photo\"},{\"name\":\"document\",\"type\":\"flags.0?Document\"}],\"type\":\"Game\"},{\"id\":1336154098,\"predicate\":\"inputBotInlineResultGame\",\"params\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"short_name\",\"type\":\"string\"},{\"name\":\"send_message\",\"type\":\"InputBotInlineMessage\"}],\"type\":\"InputBotInlineResult\"},{\"id\":1262639204,\"predicate\":\"inputBotInlineMessageGame\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"InputBotInlineMessage\"},{\"id\":-38694904,\"predicate\":\"messageMediaGame\",\"params\":[{\"name\":\"game\",\"type\":\"Game\"}],\"type\":\"MessageMedia\"},{\"id\":-750828557,\"predicate\":\"inputMediaGame\",\"params\":[{\"name\":\"id\",\"type\":\"InputGame\"}],\"type\":\"InputMedia\"},{\"id\":53231223,\"predicate\":\"inputGameID\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputGame\"},{\"id\":-1020139510,\"predicate\":\"inputGameShortName\",\"params\":[{\"name\":\"bot_id\",\"type\":\"InputUser\"},{\"name\":\"short_name\",\"type\":\"string\"}],\"type\":\"InputGame\"},{\"id\":1358175439,\"predicate\":\"keyboardButtonGame\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":-1834538890,\"predicate\":\"messageActionGameScore\",\"params\":[{\"name\":\"game_id\",\"type\":\"long\"},{\"name\":\"score\",\"type\":\"int\"}],\"type\":\"MessageAction\"},{\"id\":1940093419,\"predicate\":\"highScore\",\"params\":[{\"name\":\"pos\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"score\",\"type\":\"int\"}],\"type\":\"HighScore\"},{\"id\":-1707344487,\"predicate\":\"messages.highScores\",\"params\":[{\"name\":\"scores\",\"type\":\"Vector<HighScore>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.HighScores\"},{\"id\":1258196845,\"predicate\":\"updates.differenceTooLong\",\"params\":[{\"name\":\"pts\",\"type\":\"int\"}],\"type\":\"updates.Difference\"},{\"id\":791390623,\"predicate\":\"updateChannelWebPage\",\"params\":[{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"webpage\",\"type\":\"WebPage\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-1663561404,\"predicate\":\"messages.chatsSlice\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"}],\"type\":\"messages.Chats\"},{\"id\":-599948721,\"predicate\":\"textEmpty\",\"params\":[],\"type\":\"RichText\"},{\"id\":1950782688,\"predicate\":\"textPlain\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"RichText\"},{\"id\":1730456516,\"predicate\":\"textBold\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":-653089380,\"predicate\":\"textItalic\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":-1054465340,\"predicate\":\"textUnderline\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":-1678197867,\"predicate\":\"textStrike\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":1816074681,\"predicate\":\"textFixed\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":1009288385,\"predicate\":\"textUrl\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"webpage_id\",\"type\":\"long\"}],\"type\":\"RichText\"},{\"id\":-564523562,\"predicate\":\"textEmail\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"email\",\"type\":\"string\"}],\"type\":\"RichText\"},{\"id\":2120376535,\"predicate\":\"textConcat\",\"params\":[{\"name\":\"texts\",\"type\":\"Vector<RichText>\"}],\"type\":\"RichText\"},{\"id\":324435594,\"predicate\":\"pageBlockUnsupported\",\"params\":[],\"type\":\"PageBlock\"},{\"id\":1890305021,\"predicate\":\"pageBlockTitle\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":-1879401953,\"predicate\":\"pageBlockSubtitle\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":-1162877472,\"predicate\":\"pageBlockAuthorDate\",\"params\":[{\"name\":\"author\",\"type\":\"RichText\"},{\"name\":\"published_date\",\"type\":\"int\"}],\"type\":\"PageBlock\"},{\"id\":-1076861716,\"predicate\":\"pageBlockHeader\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":-248793375,\"predicate\":\"pageBlockSubheader\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":1182402406,\"predicate\":\"pageBlockParagraph\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":-1066346178,\"predicate\":\"pageBlockPreformatted\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"language\",\"type\":\"string\"}],\"type\":\"PageBlock\"},{\"id\":1216809369,\"predicate\":\"pageBlockFooter\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":-618614392,\"predicate\":\"pageBlockDivider\",\"params\":[],\"type\":\"PageBlock\"},{\"id\":-837994576,\"predicate\":\"pageBlockAnchor\",\"params\":[{\"name\":\"name\",\"type\":\"string\"}],\"type\":\"PageBlock\"},{\"id\":-454524911,\"predicate\":\"pageBlockList\",\"params\":[{\"name\":\"items\",\"type\":\"Vector<PageListItem>\"}],\"type\":\"PageBlock\"},{\"id\":641563686,\"predicate\":\"pageBlockBlockquote\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"caption\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":1329878739,\"predicate\":\"pageBlockPullquote\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"caption\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":391759200,\"predicate\":\"pageBlockPhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"photo_id\",\"type\":\"long\"},{\"name\":\"caption\",\"type\":\"PageCaption\"},{\"name\":\"url\",\"type\":\"flags.0?string\"},{\"name\":\"webpage_id\",\"type\":\"flags.0?long\"}],\"type\":\"PageBlock\"},{\"id\":2089805750,\"predicate\":\"pageBlockVideo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"autoplay\",\"type\":\"flags.0?true\"},{\"name\":\"loop\",\"type\":\"flags.1?true\"},{\"name\":\"video_id\",\"type\":\"long\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":972174080,\"predicate\":\"pageBlockCover\",\"params\":[{\"name\":\"cover\",\"type\":\"PageBlock\"}],\"type\":\"PageBlock\"},{\"id\":-1468953147,\"predicate\":\"pageBlockEmbed\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"full_width\",\"type\":\"flags.0?true\"},{\"name\":\"allow_scrolling\",\"type\":\"flags.3?true\"},{\"name\":\"url\",\"type\":\"flags.1?string\"},{\"name\":\"html\",\"type\":\"flags.2?string\"},{\"name\":\"poster_photo_id\",\"type\":\"flags.4?long\"},{\"name\":\"w\",\"type\":\"flags.5?int\"},{\"name\":\"h\",\"type\":\"flags.5?int\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":-229005301,\"predicate\":\"pageBlockEmbedPost\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"webpage_id\",\"type\":\"long\"},{\"name\":\"author_photo_id\",\"type\":\"long\"},{\"name\":\"author\",\"type\":\"string\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"blocks\",\"type\":\"Vector<PageBlock>\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":1705048653,\"predicate\":\"pageBlockCollage\",\"params\":[{\"name\":\"items\",\"type\":\"Vector<PageBlock>\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":52401552,\"predicate\":\"pageBlockSlideshow\",\"params\":[{\"name\":\"items\",\"type\":\"Vector<PageBlock>\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":1930545681,\"predicate\":\"webPageNotModified\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"cached_page_views\",\"type\":\"flags.0?int\"}],\"type\":\"WebPage\"},{\"id\":-88417185,\"predicate\":\"inputPrivacyKeyPhoneCall\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":1030105979,\"predicate\":\"privacyKeyPhoneCall\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":-580219064,\"predicate\":\"sendMessageGamePlayAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":-2048646399,\"predicate\":\"phoneCallDiscardReasonMissed\",\"params\":[],\"type\":\"PhoneCallDiscardReason\"},{\"id\":-527056480,\"predicate\":\"phoneCallDiscardReasonDisconnect\",\"params\":[],\"type\":\"PhoneCallDiscardReason\"},{\"id\":1471006352,\"predicate\":\"phoneCallDiscardReasonHangup\",\"params\":[],\"type\":\"PhoneCallDiscardReason\"},{\"id\":-84416311,\"predicate\":\"phoneCallDiscardReasonBusy\",\"params\":[],\"type\":\"PhoneCallDiscardReason\"},{\"id\":1852826908,\"predicate\":\"updateDialogPinned\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pinned\",\"type\":\"flags.0?true\"},{\"name\":\"folder_id\",\"type\":\"flags.1?int\"},{\"name\":\"peer\",\"type\":\"DialogPeer\"}],\"type\":\"Update\"},{\"id\":-99664734,\"predicate\":\"updatePinnedDialogs\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"folder_id\",\"type\":\"flags.1?int\"},{\"name\":\"order\",\"type\":\"flags.0?Vector<DialogPeer>\"}],\"type\":\"Update\"},{\"id\":2104790276,\"predicate\":\"dataJSON\",\"params\":[{\"name\":\"data\",\"type\":\"string\"}],\"type\":\"DataJSON\"},{\"id\":-2095595325,\"predicate\":\"updateBotWebhookJSON\",\"params\":[{\"name\":\"data\",\"type\":\"DataJSON\"}],\"type\":\"Update\"},{\"id\":-1684914010,\"predicate\":\"updateBotWebhookJSONQuery\",\"params\":[{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"DataJSON\"},{\"name\":\"timeout\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-886477832,\"predicate\":\"labeledPrice\",\"params\":[{\"name\":\"label\",\"type\":\"string\"},{\"name\":\"amount\",\"type\":\"long\"}],\"type\":\"LabeledPrice\"},{\"id\":215516896,\"predicate\":\"invoice\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"test\",\"type\":\"flags.0?true\"},{\"name\":\"name_requested\",\"type\":\"flags.1?true\"},{\"name\":\"phone_requested\",\"type\":\"flags.2?true\"},{\"name\":\"email_requested\",\"type\":\"flags.3?true\"},{\"name\":\"shipping_address_requested\",\"type\":\"flags.4?true\"},{\"name\":\"flexible\",\"type\":\"flags.5?true\"},{\"name\":\"phone_to_provider\",\"type\":\"flags.6?true\"},{\"name\":\"email_to_provider\",\"type\":\"flags.7?true\"},{\"name\":\"currency\",\"type\":\"string\"},{\"name\":\"prices\",\"type\":\"Vector<LabeledPrice>\"},{\"name\":\"max_tip_amount\",\"type\":\"flags.8?long\"},{\"name\":\"suggested_tip_amounts\",\"type\":\"flags.8?Vector<long>\"}],\"type\":\"Invoice\"},{\"id\":-646342540,\"predicate\":\"inputMediaInvoice\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"description\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"flags.0?InputWebDocument\"},{\"name\":\"invoice\",\"type\":\"Invoice\"},{\"name\":\"payload\",\"type\":\"bytes\"},{\"name\":\"provider\",\"type\":\"string\"},{\"name\":\"provider_data\",\"type\":\"DataJSON\"},{\"name\":\"start_param\",\"type\":\"flags.1?string\"}],\"type\":\"InputMedia\"},{\"id\":-368917890,\"predicate\":\"paymentCharge\",\"params\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"provider_charge_id\",\"type\":\"string\"}],\"type\":\"PaymentCharge\"},{\"id\":-1892568281,\"predicate\":\"messageActionPaymentSentMe\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"currency\",\"type\":\"string\"},{\"name\":\"total_amount\",\"type\":\"long\"},{\"name\":\"payload\",\"type\":\"bytes\"},{\"name\":\"info\",\"type\":\"flags.0?PaymentRequestedInfo\"},{\"name\":\"shipping_option_id\",\"type\":\"flags.1?string\"},{\"name\":\"charge\",\"type\":\"PaymentCharge\"}],\"type\":\"MessageAction\"},{\"id\":-2074799289,\"predicate\":\"messageMediaInvoice\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"shipping_address_requested\",\"type\":\"flags.1?true\"},{\"name\":\"test\",\"type\":\"flags.3?true\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"description\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"flags.0?WebDocument\"},{\"name\":\"receipt_msg_id\",\"type\":\"flags.2?int\"},{\"name\":\"currency\",\"type\":\"string\"},{\"name\":\"total_amount\",\"type\":\"long\"},{\"name\":\"start_param\",\"type\":\"string\"}],\"type\":\"MessageMedia\"},{\"id\":512535275,\"predicate\":\"postAddress\",\"params\":[{\"name\":\"street_line1\",\"type\":\"string\"},{\"name\":\"street_line2\",\"type\":\"string\"},{\"name\":\"city\",\"type\":\"string\"},{\"name\":\"state\",\"type\":\"string\"},{\"name\":\"country_iso2\",\"type\":\"string\"},{\"name\":\"post_code\",\"type\":\"string\"}],\"type\":\"PostAddress\"},{\"id\":-1868808300,\"predicate\":\"paymentRequestedInfo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"name\",\"type\":\"flags.0?string\"},{\"name\":\"phone\",\"type\":\"flags.1?string\"},{\"name\":\"email\",\"type\":\"flags.2?string\"},{\"name\":\"shipping_address\",\"type\":\"flags.3?PostAddress\"}],\"type\":\"PaymentRequestedInfo\"},{\"id\":-1344716869,\"predicate\":\"keyboardButtonBuy\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":1080663248,\"predicate\":\"messageActionPaymentSent\",\"params\":[{\"name\":\"currency\",\"type\":\"string\"},{\"name\":\"total_amount\",\"type\":\"long\"}],\"type\":\"MessageAction\"},{\"id\":-842892769,\"predicate\":\"paymentSavedCredentialsCard\",\"params\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"PaymentSavedCredentials\"},{\"id\":475467473,\"predicate\":\"webDocument\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"attributes\",\"type\":\"Vector<DocumentAttribute>\"}],\"type\":\"WebDocument\"},{\"id\":-1678949555,\"predicate\":\"inputWebDocument\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"attributes\",\"type\":\"Vector<DocumentAttribute>\"}],\"type\":\"InputWebDocument\"},{\"id\":-1036396922,\"predicate\":\"inputWebFileLocation\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputWebFileLocation\"},{\"id\":568808380,\"predicate\":\"upload.webFile\",\"params\":[{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"file_type\",\"type\":\"storage.FileType\"},{\"name\":\"mtime\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"upload.WebFile\"},{\"id\":378828315,\"predicate\":\"payments.paymentForm\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"can_save_credentials\",\"type\":\"flags.2?true\"},{\"name\":\"password_missing\",\"type\":\"flags.3?true\"},{\"name\":\"form_id\",\"type\":\"long\"},{\"name\":\"bot_id\",\"type\":\"long\"},{\"name\":\"invoice\",\"type\":\"Invoice\"},{\"name\":\"provider_id\",\"type\":\"long\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"native_provider\",\"type\":\"flags.4?string\"},{\"name\":\"native_params\",\"type\":\"flags.4?DataJSON\"},{\"name\":\"saved_info\",\"type\":\"flags.0?PaymentRequestedInfo\"},{\"name\":\"saved_credentials\",\"type\":\"flags.1?PaymentSavedCredentials\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"payments.PaymentForm\"},{\"id\":-784000893,\"predicate\":\"payments.validatedRequestedInfo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"flags.0?string\"},{\"name\":\"shipping_options\",\"type\":\"flags.1?Vector<ShippingOption>\"}],\"type\":\"payments.ValidatedRequestedInfo\"},{\"id\":1314881805,\"predicate\":\"payments.paymentResult\",\"params\":[{\"name\":\"updates\",\"type\":\"Updates\"}],\"type\":\"payments.PaymentResult\"},{\"id\":1891958275,\"predicate\":\"payments.paymentReceipt\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"bot_id\",\"type\":\"long\"},{\"name\":\"provider_id\",\"type\":\"long\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"description\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"flags.2?WebDocument\"},{\"name\":\"invoice\",\"type\":\"Invoice\"},{\"name\":\"info\",\"type\":\"flags.0?PaymentRequestedInfo\"},{\"name\":\"shipping\",\"type\":\"flags.1?ShippingOption\"},{\"name\":\"tip_amount\",\"type\":\"flags.3?long\"},{\"name\":\"currency\",\"type\":\"string\"},{\"name\":\"total_amount\",\"type\":\"long\"},{\"name\":\"credentials_title\",\"type\":\"string\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"payments.PaymentReceipt\"},{\"id\":-74456004,\"predicate\":\"payments.savedInfo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"has_saved_credentials\",\"type\":\"flags.1?true\"},{\"name\":\"saved_info\",\"type\":\"flags.0?PaymentRequestedInfo\"}],\"type\":\"payments.SavedInfo\"},{\"id\":-1056001329,\"predicate\":\"inputPaymentCredentialsSaved\",\"params\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"tmp_password\",\"type\":\"bytes\"}],\"type\":\"InputPaymentCredentials\"},{\"id\":873977640,\"predicate\":\"inputPaymentCredentials\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"save\",\"type\":\"flags.0?true\"},{\"name\":\"data\",\"type\":\"DataJSON\"}],\"type\":\"InputPaymentCredentials\"},{\"id\":-614138572,\"predicate\":\"account.tmpPassword\",\"params\":[{\"name\":\"tmp_password\",\"type\":\"bytes\"},{\"name\":\"valid_until\",\"type\":\"int\"}],\"type\":\"account.TmpPassword\"},{\"id\":-1239335713,\"predicate\":\"shippingOption\",\"params\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"prices\",\"type\":\"Vector<LabeledPrice>\"}],\"type\":\"ShippingOption\"},{\"id\":-1246823043,\"predicate\":\"updateBotShippingQuery\",\"params\":[{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"payload\",\"type\":\"bytes\"},{\"name\":\"shipping_address\",\"type\":\"PostAddress\"}],\"type\":\"Update\"},{\"id\":-1934976362,\"predicate\":\"updateBotPrecheckoutQuery\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"payload\",\"type\":\"bytes\"},{\"name\":\"info\",\"type\":\"flags.0?PaymentRequestedInfo\"},{\"name\":\"shipping_option_id\",\"type\":\"flags.1?string\"},{\"name\":\"currency\",\"type\":\"string\"},{\"name\":\"total_amount\",\"type\":\"long\"}],\"type\":\"Update\"},{\"id\":-6249322,\"predicate\":\"inputStickerSetItem\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"document\",\"type\":\"InputDocument\"},{\"name\":\"emoji\",\"type\":\"string\"},{\"name\":\"mask_coords\",\"type\":\"flags.0?MaskCoords\"}],\"type\":\"InputStickerSetItem\"},{\"id\":-1425052898,\"predicate\":\"updatePhoneCall\",\"params\":[{\"name\":\"phone_call\",\"type\":\"PhoneCall\"}],\"type\":\"Update\"},{\"id\":506920429,\"predicate\":\"inputPhoneCall\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputPhoneCall\"},{\"id\":1399245077,\"predicate\":\"phoneCallEmpty\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"PhoneCall\"},{\"id\":-987599081,\"predicate\":\"phoneCallWaiting\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"video\",\"type\":\"flags.6?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"long\"},{\"name\":\"participant_id\",\"type\":\"long\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"},{\"name\":\"receive_date\",\"type\":\"flags.0?int\"}],\"type\":\"PhoneCall\"},{\"id\":347139340,\"predicate\":\"phoneCallRequested\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"video\",\"type\":\"flags.6?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"long\"},{\"name\":\"participant_id\",\"type\":\"long\"},{\"name\":\"g_a_hash\",\"type\":\"bytes\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"}],\"type\":\"PhoneCall\"},{\"id\":912311057,\"predicate\":\"phoneCallAccepted\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"video\",\"type\":\"flags.6?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"long\"},{\"name\":\"participant_id\",\"type\":\"long\"},{\"name\":\"g_b\",\"type\":\"bytes\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"}],\"type\":\"PhoneCall\"},{\"id\":-1770029977,\"predicate\":\"phoneCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"p2p_allowed\",\"type\":\"flags.5?true\"},{\"name\":\"video\",\"type\":\"flags.6?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_id\",\"type\":\"long\"},{\"name\":\"participant_id\",\"type\":\"long\"},{\"name\":\"g_a_or_b\",\"type\":\"bytes\"},{\"name\":\"key_fingerprint\",\"type\":\"long\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"},{\"name\":\"connections\",\"type\":\"Vector<PhoneConnection>\"},{\"name\":\"start_date\",\"type\":\"int\"}],\"type\":\"PhoneCall\"},{\"id\":1355435489,\"predicate\":\"phoneCallDiscarded\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"need_rating\",\"type\":\"flags.2?true\"},{\"name\":\"need_debug\",\"type\":\"flags.3?true\"},{\"name\":\"video\",\"type\":\"flags.6?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"reason\",\"type\":\"flags.0?PhoneCallDiscardReason\"},{\"name\":\"duration\",\"type\":\"flags.1?int\"}],\"type\":\"PhoneCall\"},{\"id\":-1655957568,\"predicate\":\"phoneConnection\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"ip\",\"type\":\"string\"},{\"name\":\"ipv6\",\"type\":\"string\"},{\"name\":\"port\",\"type\":\"int\"},{\"name\":\"peer_tag\",\"type\":\"bytes\"}],\"type\":\"PhoneConnection\"},{\"id\":-58224696,\"predicate\":\"phoneCallProtocol\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"udp_p2p\",\"type\":\"flags.0?true\"},{\"name\":\"udp_reflector\",\"type\":\"flags.1?true\"},{\"name\":\"min_layer\",\"type\":\"int\"},{\"name\":\"max_layer\",\"type\":\"int\"},{\"name\":\"library_versions\",\"type\":\"Vector<string>\"}],\"type\":\"PhoneCallProtocol\"},{\"id\":-326966976,\"predicate\":\"phone.phoneCall\",\"params\":[{\"name\":\"phone_call\",\"type\":\"PhoneCall\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"phone.PhoneCall\"},{\"id\":-2134272152,\"predicate\":\"inputMessagesFilterPhoneCalls\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"missed\",\"type\":\"flags.0?true\"}],\"type\":\"MessagesFilter\"},{\"id\":-2132731265,\"predicate\":\"messageActionPhoneCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"video\",\"type\":\"flags.2?true\"},{\"name\":\"call_id\",\"type\":\"long\"},{\"name\":\"reason\",\"type\":\"flags.0?PhoneCallDiscardReason\"},{\"name\":\"duration\",\"type\":\"flags.1?int\"}],\"type\":\"MessageAction\"},{\"id\":2054952868,\"predicate\":\"inputMessagesFilterRoundVoice\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":-1253451181,\"predicate\":\"inputMessagesFilterRoundVideo\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":-1997373508,\"predicate\":\"sendMessageRecordRoundAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":608050278,\"predicate\":\"sendMessageUploadRoundAction\",\"params\":[{\"name\":\"progress\",\"type\":\"int\"}],\"type\":\"SendMessageAction\"},{\"id\":-242427324,\"predicate\":\"upload.fileCdnRedirect\",\"params\":[{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"file_token\",\"type\":\"bytes\"},{\"name\":\"encryption_key\",\"type\":\"bytes\"},{\"name\":\"encryption_iv\",\"type\":\"bytes\"},{\"name\":\"file_hashes\",\"type\":\"Vector<FileHash>\"}],\"type\":\"upload.File\"},{\"id\":-290921362,\"predicate\":\"upload.cdnFileReuploadNeeded\",\"params\":[{\"name\":\"request_token\",\"type\":\"bytes\"}],\"type\":\"upload.CdnFile\"},{\"id\":-1449145777,\"predicate\":\"upload.cdnFile\",\"params\":[{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"upload.CdnFile\"},{\"id\":-914167110,\"predicate\":\"cdnPublicKey\",\"params\":[{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"public_key\",\"type\":\"string\"}],\"type\":\"CdnPublicKey\"},{\"id\":1462101002,\"predicate\":\"cdnConfig\",\"params\":[{\"name\":\"public_keys\",\"type\":\"Vector<CdnPublicKey>\"}],\"type\":\"CdnConfig\"},{\"id\":-283684427,\"predicate\":\"pageBlockChannel\",\"params\":[{\"name\":\"channel\",\"type\":\"Chat\"}],\"type\":\"PageBlock\"},{\"id\":-892239370,\"predicate\":\"langPackString\",\"params\":[{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"type\":\"LangPackString\"},{\"id\":1816636575,\"predicate\":\"langPackStringPluralized\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"zero_value\",\"type\":\"flags.0?string\"},{\"name\":\"one_value\",\"type\":\"flags.1?string\"},{\"name\":\"two_value\",\"type\":\"flags.2?string\"},{\"name\":\"few_value\",\"type\":\"flags.3?string\"},{\"name\":\"many_value\",\"type\":\"flags.4?string\"},{\"name\":\"other_value\",\"type\":\"string\"}],\"type\":\"LangPackString\"},{\"id\":695856818,\"predicate\":\"langPackStringDeleted\",\"params\":[{\"name\":\"key\",\"type\":\"string\"}],\"type\":\"LangPackString\"},{\"id\":-209337866,\"predicate\":\"langPackDifference\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"from_version\",\"type\":\"int\"},{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"strings\",\"type\":\"Vector<LangPackString>\"}],\"type\":\"LangPackDifference\"},{\"id\":-288727837,\"predicate\":\"langPackLanguage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"official\",\"type\":\"flags.0?true\"},{\"name\":\"rtl\",\"type\":\"flags.2?true\"},{\"name\":\"beta\",\"type\":\"flags.3?true\"},{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"native_name\",\"type\":\"string\"},{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"base_lang_code\",\"type\":\"flags.1?string\"},{\"name\":\"plural_code\",\"type\":\"string\"},{\"name\":\"strings_count\",\"type\":\"int\"},{\"name\":\"translated_count\",\"type\":\"int\"},{\"name\":\"translations_url\",\"type\":\"string\"}],\"type\":\"LangPackLanguage\"},{\"id\":1180041828,\"predicate\":\"updateLangPackTooLong\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"Update\"},{\"id\":1442983757,\"predicate\":\"updateLangPack\",\"params\":[{\"name\":\"difference\",\"type\":\"LangPackDifference\"}],\"type\":\"Update\"},{\"id\":885242707,\"predicate\":\"channelParticipantAdmin\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"can_edit\",\"type\":\"flags.0?true\"},{\"name\":\"self\",\"type\":\"flags.1?true\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"inviter_id\",\"type\":\"flags.1?long\"},{\"name\":\"promoted_by\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"admin_rights\",\"type\":\"ChatAdminRights\"},{\"name\":\"rank\",\"type\":\"flags.2?string\"}],\"type\":\"ChannelParticipant\"},{\"id\":1844969806,\"predicate\":\"channelParticipantBanned\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"left\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"kicked_by\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"banned_rights\",\"type\":\"ChatBannedRights\"}],\"type\":\"ChannelParticipant\"},{\"id\":338142689,\"predicate\":\"channelParticipantsBanned\",\"params\":[{\"name\":\"q\",\"type\":\"string\"}],\"type\":\"ChannelParticipantsFilter\"},{\"id\":106343499,\"predicate\":\"channelParticipantsSearch\",\"params\":[{\"name\":\"q\",\"type\":\"string\"}],\"type\":\"ChannelParticipantsFilter\"},{\"id\":-421545947,\"predicate\":\"channelAdminLogEventActionChangeTitle\",\"params\":[{\"name\":\"prev_value\",\"type\":\"string\"},{\"name\":\"new_value\",\"type\":\"string\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":1427671598,\"predicate\":\"channelAdminLogEventActionChangeAbout\",\"params\":[{\"name\":\"prev_value\",\"type\":\"string\"},{\"name\":\"new_value\",\"type\":\"string\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":1783299128,\"predicate\":\"channelAdminLogEventActionChangeUsername\",\"params\":[{\"name\":\"prev_value\",\"type\":\"string\"},{\"name\":\"new_value\",\"type\":\"string\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":1129042607,\"predicate\":\"channelAdminLogEventActionChangePhoto\",\"params\":[{\"name\":\"prev_photo\",\"type\":\"Photo\"},{\"name\":\"new_photo\",\"type\":\"Photo\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":460916654,\"predicate\":\"channelAdminLogEventActionToggleInvites\",\"params\":[{\"name\":\"new_value\",\"type\":\"Bool\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":648939889,\"predicate\":\"channelAdminLogEventActionToggleSignatures\",\"params\":[{\"name\":\"new_value\",\"type\":\"Bool\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-370660328,\"predicate\":\"channelAdminLogEventActionUpdatePinned\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":1889215493,\"predicate\":\"channelAdminLogEventActionEditMessage\",\"params\":[{\"name\":\"prev_message\",\"type\":\"Message\"},{\"name\":\"new_message\",\"type\":\"Message\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":1121994683,\"predicate\":\"channelAdminLogEventActionDeleteMessage\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":405815507,\"predicate\":\"channelAdminLogEventActionParticipantJoin\",\"params\":[],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-124291086,\"predicate\":\"channelAdminLogEventActionParticipantLeave\",\"params\":[],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-484690728,\"predicate\":\"channelAdminLogEventActionParticipantInvite\",\"params\":[{\"name\":\"participant\",\"type\":\"ChannelParticipant\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-422036098,\"predicate\":\"channelAdminLogEventActionParticipantToggleBan\",\"params\":[{\"name\":\"prev_participant\",\"type\":\"ChannelParticipant\"},{\"name\":\"new_participant\",\"type\":\"ChannelParticipant\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-714643696,\"predicate\":\"channelAdminLogEventActionParticipantToggleAdmin\",\"params\":[{\"name\":\"prev_participant\",\"type\":\"ChannelParticipant\"},{\"name\":\"new_participant\",\"type\":\"ChannelParticipant\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":531458253,\"predicate\":\"channelAdminLogEvent\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"action\",\"type\":\"ChannelAdminLogEventAction\"}],\"type\":\"ChannelAdminLogEvent\"},{\"id\":-309659827,\"predicate\":\"channels.adminLogResults\",\"params\":[{\"name\":\"events\",\"type\":\"Vector<ChannelAdminLogEvent>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"channels.AdminLogResults\"},{\"id\":-368018716,\"predicate\":\"channelAdminLogEventsFilter\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"join\",\"type\":\"flags.0?true\"},{\"name\":\"leave\",\"type\":\"flags.1?true\"},{\"name\":\"invite\",\"type\":\"flags.2?true\"},{\"name\":\"ban\",\"type\":\"flags.3?true\"},{\"name\":\"unban\",\"type\":\"flags.4?true\"},{\"name\":\"kick\",\"type\":\"flags.5?true\"},{\"name\":\"unkick\",\"type\":\"flags.6?true\"},{\"name\":\"promote\",\"type\":\"flags.7?true\"},{\"name\":\"demote\",\"type\":\"flags.8?true\"},{\"name\":\"info\",\"type\":\"flags.9?true\"},{\"name\":\"settings\",\"type\":\"flags.10?true\"},{\"name\":\"pinned\",\"type\":\"flags.11?true\"},{\"name\":\"edit\",\"type\":\"flags.12?true\"},{\"name\":\"delete\",\"type\":\"flags.13?true\"},{\"name\":\"group_call\",\"type\":\"flags.14?true\"},{\"name\":\"invites\",\"type\":\"flags.15?true\"},{\"name\":\"send\",\"type\":\"flags.16?true\"}],\"type\":\"ChannelAdminLogEventsFilter\"},{\"id\":511092620,\"predicate\":\"topPeerCategoryPhoneCalls\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":-2143067670,\"predicate\":\"pageBlockAudio\",\"params\":[{\"name\":\"audio_id\",\"type\":\"long\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":1558266229,\"predicate\":\"popularContact\",\"params\":[{\"name\":\"client_id\",\"type\":\"long\"},{\"name\":\"importers\",\"type\":\"int\"}],\"type\":\"PopularContact\"},{\"id\":1200788123,\"predicate\":\"messageActionScreenshotTaken\",\"params\":[],\"type\":\"MessageAction\"},{\"id\":-1634752813,\"predicate\":\"messages.favedStickersNotModified\",\"params\":[],\"type\":\"messages.FavedStickers\"},{\"id\":750063767,\"predicate\":\"messages.favedStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"packs\",\"type\":\"Vector<StickerPack>\"},{\"name\":\"stickers\",\"type\":\"Vector<Document>\"}],\"type\":\"messages.FavedStickers\"},{\"id\":-451831443,\"predicate\":\"updateFavedStickers\",\"params\":[],\"type\":\"Update\"},{\"id\":1153291573,\"predicate\":\"updateChannelReadMessagesContents\",\"params\":[{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"messages\",\"type\":\"Vector<int>\"}],\"type\":\"Update\"},{\"id\":-1040652646,\"predicate\":\"inputMessagesFilterMyMentions\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":1887741886,\"predicate\":\"updateContactsReset\",\"params\":[],\"type\":\"Update\"},{\"id\":-1312568665,\"predicate\":\"channelAdminLogEventActionChangeStickerSet\",\"params\":[{\"name\":\"prev_stickerset\",\"type\":\"InputStickerSet\"},{\"name\":\"new_stickerset\",\"type\":\"InputStickerSet\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-85549226,\"predicate\":\"messageActionCustomAction\",\"params\":[{\"name\":\"message\",\"type\":\"string\"}],\"type\":\"MessageAction\"},{\"id\":178373535,\"predicate\":\"inputPaymentCredentialsApplePay\",\"params\":[{\"name\":\"payment_data\",\"type\":\"DataJSON\"}],\"type\":\"InputPaymentCredentials\"},{\"id\":-419271411,\"predicate\":\"inputMessagesFilterGeo\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":-530392189,\"predicate\":\"inputMessagesFilterContacts\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":-1304443240,\"predicate\":\"updateChannelAvailableMessages\",\"params\":[{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"available_min_id\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":1599903217,\"predicate\":\"channelAdminLogEventActionTogglePreHistoryHidden\",\"params\":[{\"name\":\"new_value\",\"type\":\"Bool\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-1759532989,\"predicate\":\"inputMediaGeoLive\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"stopped\",\"type\":\"flags.0?true\"},{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"heading\",\"type\":\"flags.2?int\"},{\"name\":\"period\",\"type\":\"flags.1?int\"},{\"name\":\"proximity_notification_radius\",\"type\":\"flags.3?int\"}],\"type\":\"InputMedia\"},{\"id\":-1186937242,\"predicate\":\"messageMediaGeoLive\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"geo\",\"type\":\"GeoPoint\"},{\"name\":\"heading\",\"type\":\"flags.0?int\"},{\"name\":\"period\",\"type\":\"int\"},{\"name\":\"proximity_notification_radius\",\"type\":\"flags.1?int\"}],\"type\":\"MessageMedia\"},{\"id\":1189204285,\"predicate\":\"recentMeUrlUnknown\",\"params\":[{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"RecentMeUrl\"},{\"id\":-1188296222,\"predicate\":\"recentMeUrlUser\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"user_id\",\"type\":\"long\"}],\"type\":\"RecentMeUrl\"},{\"id\":-1294306862,\"predicate\":\"recentMeUrlChat\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"chat_id\",\"type\":\"long\"}],\"type\":\"RecentMeUrl\"},{\"id\":-347535331,\"predicate\":\"recentMeUrlChatInvite\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"chat_invite\",\"type\":\"ChatInvite\"}],\"type\":\"RecentMeUrl\"},{\"id\":-1140172836,\"predicate\":\"recentMeUrlStickerSet\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"set\",\"type\":\"StickerSetCovered\"}],\"type\":\"RecentMeUrl\"},{\"id\":235081943,\"predicate\":\"help.recentMeUrls\",\"params\":[{\"name\":\"urls\",\"type\":\"Vector<RecentMeUrl>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"help.RecentMeUrls\"},{\"id\":-266911767,\"predicate\":\"channels.channelParticipantsNotModified\",\"params\":[],\"type\":\"channels.ChannelParticipants\"},{\"id\":1951620897,\"predicate\":\"messages.messagesNotModified\",\"params\":[{\"name\":\"count\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":482797855,\"predicate\":\"inputSingleMedia\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"media\",\"type\":\"InputMedia\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.0?Vector<MessageEntity>\"}],\"type\":\"InputSingleMedia\"},{\"id\":-1493633966,\"predicate\":\"webAuthorization\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"bot_id\",\"type\":\"long\"},{\"name\":\"domain\",\"type\":\"string\"},{\"name\":\"browser\",\"type\":\"string\"},{\"name\":\"platform\",\"type\":\"string\"},{\"name\":\"date_created\",\"type\":\"int\"},{\"name\":\"date_active\",\"type\":\"int\"},{\"name\":\"ip\",\"type\":\"string\"},{\"name\":\"region\",\"type\":\"string\"}],\"type\":\"WebAuthorization\"},{\"id\":-313079300,\"predicate\":\"account.webAuthorizations\",\"params\":[{\"name\":\"authorizations\",\"type\":\"Vector<WebAuthorization>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"account.WebAuthorizations\"},{\"id\":-1502174430,\"predicate\":\"inputMessageID\",\"params\":[{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"InputMessage\"},{\"id\":-1160215659,\"predicate\":\"inputMessageReplyTo\",\"params\":[{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"InputMessage\"},{\"id\":-2037963464,\"predicate\":\"inputMessagePinned\",\"params\":[],\"type\":\"InputMessage\"},{\"id\":-1687559349,\"predicate\":\"messageEntityPhone\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":1280209983,\"predicate\":\"messageEntityCashtag\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":-1410748418,\"predicate\":\"messageActionBotAllowed\",\"params\":[{\"name\":\"domain\",\"type\":\"string\"}],\"type\":\"MessageAction\"},{\"id\":-55902537,\"predicate\":\"inputDialogPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"InputDialogPeer\"},{\"id\":-445792507,\"predicate\":\"dialogPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"}],\"type\":\"DialogPeer\"},{\"id\":223655517,\"predicate\":\"messages.foundStickerSetsNotModified\",\"params\":[],\"type\":\"messages.FoundStickerSets\"},{\"id\":-1963942446,\"predicate\":\"messages.foundStickerSets\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"sets\",\"type\":\"Vector<StickerSetCovered>\"}],\"type\":\"messages.FoundStickerSets\"},{\"id\":1648543603,\"predicate\":\"fileHash\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"bytes\"}],\"type\":\"FileHash\"},{\"id\":-104284986,\"predicate\":\"webDocumentNoProxy\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"attributes\",\"type\":\"Vector<DocumentAttribute>\"}],\"type\":\"WebDocument\"},{\"id\":1968737087,\"predicate\":\"inputClientProxy\",\"params\":[{\"name\":\"address\",\"type\":\"string\"},{\"name\":\"port\",\"type\":\"int\"}],\"type\":\"InputClientProxy\"},{\"id\":-483352705,\"predicate\":\"help.termsOfServiceUpdateEmpty\",\"params\":[{\"name\":\"expires\",\"type\":\"int\"}],\"type\":\"help.TermsOfServiceUpdate\"},{\"id\":686618977,\"predicate\":\"help.termsOfServiceUpdate\",\"params\":[{\"name\":\"expires\",\"type\":\"int\"},{\"name\":\"terms_of_service\",\"type\":\"help.TermsOfService\"}],\"type\":\"help.TermsOfServiceUpdate\"},{\"id\":859091184,\"predicate\":\"inputSecureFileUploaded\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"parts\",\"type\":\"int\"},{\"name\":\"md5_checksum\",\"type\":\"string\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"secret\",\"type\":\"bytes\"}],\"type\":\"InputSecureFile\"},{\"id\":1399317950,\"predicate\":\"inputSecureFile\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputSecureFile\"},{\"id\":-876089816,\"predicate\":\"inputSecureFileLocation\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputFileLocation\"},{\"id\":1679398724,\"predicate\":\"secureFileEmpty\",\"params\":[],\"type\":\"SecureFile\"},{\"id\":-534283678,\"predicate\":\"secureFile\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"secret\",\"type\":\"bytes\"}],\"type\":\"SecureFile\"},{\"id\":-1964327229,\"predicate\":\"secureData\",\"params\":[{\"name\":\"data\",\"type\":\"bytes\"},{\"name\":\"data_hash\",\"type\":\"bytes\"},{\"name\":\"secret\",\"type\":\"bytes\"}],\"type\":\"SecureData\"},{\"id\":2103482845,\"predicate\":\"securePlainPhone\",\"params\":[{\"name\":\"phone\",\"type\":\"string\"}],\"type\":\"SecurePlainData\"},{\"id\":569137759,\"predicate\":\"securePlainEmail\",\"params\":[{\"name\":\"email\",\"type\":\"string\"}],\"type\":\"SecurePlainData\"},{\"id\":-1658158621,\"predicate\":\"secureValueTypePersonalDetails\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":1034709504,\"predicate\":\"secureValueTypePassport\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":115615172,\"predicate\":\"secureValueTypeDriverLicense\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":-1596951477,\"predicate\":\"secureValueTypeIdentityCard\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":-1717268701,\"predicate\":\"secureValueTypeInternalPassport\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":-874308058,\"predicate\":\"secureValueTypeAddress\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":-63531698,\"predicate\":\"secureValueTypeUtilityBill\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":-1995211763,\"predicate\":\"secureValueTypeBankStatement\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":-1954007928,\"predicate\":\"secureValueTypeRentalAgreement\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":-1713143702,\"predicate\":\"secureValueTypePassportRegistration\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":-368907213,\"predicate\":\"secureValueTypeTemporaryRegistration\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":-1289704741,\"predicate\":\"secureValueTypePhone\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":-1908627474,\"predicate\":\"secureValueTypeEmail\",\"params\":[],\"type\":\"SecureValueType\"},{\"id\":411017418,\"predicate\":\"secureValue\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"data\",\"type\":\"flags.0?SecureData\"},{\"name\":\"front_side\",\"type\":\"flags.1?SecureFile\"},{\"name\":\"reverse_side\",\"type\":\"flags.2?SecureFile\"},{\"name\":\"selfie\",\"type\":\"flags.3?SecureFile\"},{\"name\":\"translation\",\"type\":\"flags.6?Vector<SecureFile>\"},{\"name\":\"files\",\"type\":\"flags.4?Vector<SecureFile>\"},{\"name\":\"plain_data\",\"type\":\"flags.5?SecurePlainData\"},{\"name\":\"hash\",\"type\":\"bytes\"}],\"type\":\"SecureValue\"},{\"id\":-618540889,\"predicate\":\"inputSecureValue\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"data\",\"type\":\"flags.0?SecureData\"},{\"name\":\"front_side\",\"type\":\"flags.1?InputSecureFile\"},{\"name\":\"reverse_side\",\"type\":\"flags.2?InputSecureFile\"},{\"name\":\"selfie\",\"type\":\"flags.3?InputSecureFile\"},{\"name\":\"translation\",\"type\":\"flags.6?Vector<InputSecureFile>\"},{\"name\":\"files\",\"type\":\"flags.4?Vector<InputSecureFile>\"},{\"name\":\"plain_data\",\"type\":\"flags.5?SecurePlainData\"}],\"type\":\"InputSecureValue\"},{\"id\":-316748368,\"predicate\":\"secureValueHash\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"hash\",\"type\":\"bytes\"}],\"type\":\"SecureValueHash\"},{\"id\":-391902247,\"predicate\":\"secureValueErrorData\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"data_hash\",\"type\":\"bytes\"},{\"name\":\"field\",\"type\":\"string\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":12467706,\"predicate\":\"secureValueErrorFrontSide\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":-2037765467,\"predicate\":\"secureValueErrorReverseSide\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":-449327402,\"predicate\":\"secureValueErrorSelfie\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":2054162547,\"predicate\":\"secureValueErrorFile\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":1717706985,\"predicate\":\"secureValueErrorFiles\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"Vector<bytes>\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":871426631,\"predicate\":\"secureCredentialsEncrypted\",\"params\":[{\"name\":\"data\",\"type\":\"bytes\"},{\"name\":\"hash\",\"type\":\"bytes\"},{\"name\":\"secret\",\"type\":\"bytes\"}],\"type\":\"SecureCredentialsEncrypted\"},{\"id\":-1389486888,\"predicate\":\"account.authorizationForm\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"required_types\",\"type\":\"Vector<SecureRequiredType>\"},{\"name\":\"values\",\"type\":\"Vector<SecureValue>\"},{\"name\":\"errors\",\"type\":\"Vector<SecureValueError>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"privacy_policy_url\",\"type\":\"flags.0?string\"}],\"type\":\"account.AuthorizationForm\"},{\"id\":-2128640689,\"predicate\":\"account.sentEmailCode\",\"params\":[{\"name\":\"email_pattern\",\"type\":\"string\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"account.SentEmailCode\"},{\"id\":455635795,\"predicate\":\"messageActionSecureValuesSentMe\",\"params\":[{\"name\":\"values\",\"type\":\"Vector<SecureValue>\"},{\"name\":\"credentials\",\"type\":\"SecureCredentialsEncrypted\"}],\"type\":\"MessageAction\"},{\"id\":-648257196,\"predicate\":\"messageActionSecureValuesSent\",\"params\":[{\"name\":\"types\",\"type\":\"Vector<SecureValueType>\"}],\"type\":\"MessageAction\"},{\"id\":1722786150,\"predicate\":\"help.deepLinkInfoEmpty\",\"params\":[],\"type\":\"help.DeepLinkInfo\"},{\"id\":1783556146,\"predicate\":\"help.deepLinkInfo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"update_app\",\"type\":\"flags.0?true\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.1?Vector<MessageEntity>\"}],\"type\":\"help.DeepLinkInfo\"},{\"id\":289586518,\"predicate\":\"savedPhoneContact\",\"params\":[{\"name\":\"phone\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"SavedContact\"},{\"id\":1304052993,\"predicate\":\"account.takeout\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"account.Takeout\"},{\"id\":700340377,\"predicate\":\"inputTakeoutFileLocation\",\"params\":[],\"type\":\"InputFileLocation\"},{\"id\":-513517117,\"predicate\":\"updateDialogUnreadMark\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"unread\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"DialogPeer\"}],\"type\":\"Update\"},{\"id\":-253500010,\"predicate\":\"messages.dialogsNotModified\",\"params\":[{\"name\":\"count\",\"type\":\"int\"}],\"type\":\"messages.Dialogs\"},{\"id\":-1625153079,\"predicate\":\"inputWebFileGeoPointLocation\",\"params\":[{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"},{\"name\":\"zoom\",\"type\":\"int\"},{\"name\":\"scale\",\"type\":\"int\"}],\"type\":\"InputWebFileLocation\"},{\"id\":-1255369827,\"predicate\":\"contacts.topPeersDisabled\",\"params\":[],\"type\":\"contacts.TopPeers\"},{\"id\":-1685456582,\"predicate\":\"inputReportReasonCopyright\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":-732254058,\"predicate\":\"passwordKdfAlgoUnknown\",\"params\":[],\"type\":\"PasswordKdfAlgo\"},{\"id\":4883767,\"predicate\":\"securePasswordKdfAlgoUnknown\",\"params\":[],\"type\":\"SecurePasswordKdfAlgo\"},{\"id\":-1141711456,\"predicate\":\"securePasswordKdfAlgoPBKDF2HMACSHA512iter100000\",\"params\":[{\"name\":\"salt\",\"type\":\"bytes\"}],\"type\":\"SecurePasswordKdfAlgo\"},{\"id\":-2042159726,\"predicate\":\"securePasswordKdfAlgoSHA512\",\"params\":[{\"name\":\"salt\",\"type\":\"bytes\"}],\"type\":\"SecurePasswordKdfAlgo\"},{\"id\":354925740,\"predicate\":\"secureSecretSettings\",\"params\":[{\"name\":\"secure_algo\",\"type\":\"SecurePasswordKdfAlgo\"},{\"name\":\"secure_secret\",\"type\":\"bytes\"},{\"name\":\"secure_secret_id\",\"type\":\"long\"}],\"type\":\"SecureSecretSettings\"},{\"id\":982592842,\"predicate\":\"passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow\",\"params\":[{\"name\":\"salt1\",\"type\":\"bytes\"},{\"name\":\"salt2\",\"type\":\"bytes\"},{\"name\":\"g\",\"type\":\"int\"},{\"name\":\"p\",\"type\":\"bytes\"}],\"type\":\"PasswordKdfAlgo\"},{\"id\":-1736378792,\"predicate\":\"inputCheckPasswordEmpty\",\"params\":[],\"type\":\"InputCheckPasswordSRP\"},{\"id\":-763367294,\"predicate\":\"inputCheckPasswordSRP\",\"params\":[{\"name\":\"srp_id\",\"type\":\"long\"},{\"name\":\"A\",\"type\":\"bytes\"},{\"name\":\"M1\",\"type\":\"bytes\"}],\"type\":\"InputCheckPasswordSRP\"},{\"id\":-2036501105,\"predicate\":\"secureValueError\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"hash\",\"type\":\"bytes\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":-1592506512,\"predicate\":\"secureValueErrorTranslationFile\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"bytes\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":878931416,\"predicate\":\"secureValueErrorTranslationFiles\",\"params\":[{\"name\":\"type\",\"type\":\"SecureValueType\"},{\"name\":\"file_hash\",\"type\":\"Vector<bytes>\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"SecureValueError\"},{\"id\":-2103600678,\"predicate\":\"secureRequiredType\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"native_names\",\"type\":\"flags.0?true\"},{\"name\":\"selfie_required\",\"type\":\"flags.1?true\"},{\"name\":\"translation_required\",\"type\":\"flags.2?true\"},{\"name\":\"type\",\"type\":\"SecureValueType\"}],\"type\":\"SecureRequiredType\"},{\"id\":41187252,\"predicate\":\"secureRequiredTypeOneOf\",\"params\":[{\"name\":\"types\",\"type\":\"Vector<SecureRequiredType>\"}],\"type\":\"SecureRequiredType\"},{\"id\":-1078332329,\"predicate\":\"help.passportConfigNotModified\",\"params\":[],\"type\":\"help.PassportConfig\"},{\"id\":-1600596305,\"predicate\":\"help.passportConfig\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"countries_langs\",\"type\":\"DataJSON\"}],\"type\":\"help.PassportConfig\"},{\"id\":488313413,\"predicate\":\"inputAppEvent\",\"params\":[{\"name\":\"time\",\"type\":\"double\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"peer\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"JSONValue\"}],\"type\":\"InputAppEvent\"},{\"id\":-1059185703,\"predicate\":\"jsonObjectValue\",\"params\":[{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"JSONValue\"}],\"type\":\"JSONObjectValue\"},{\"id\":1064139624,\"predicate\":\"jsonNull\",\"params\":[],\"type\":\"JSONValue\"},{\"id\":-952869270,\"predicate\":\"jsonBool\",\"params\":[{\"name\":\"value\",\"type\":\"Bool\"}],\"type\":\"JSONValue\"},{\"id\":736157604,\"predicate\":\"jsonNumber\",\"params\":[{\"name\":\"value\",\"type\":\"double\"}],\"type\":\"JSONValue\"},{\"id\":-1222740358,\"predicate\":\"jsonString\",\"params\":[{\"name\":\"value\",\"type\":\"string\"}],\"type\":\"JSONValue\"},{\"id\":-146520221,\"predicate\":\"jsonArray\",\"params\":[{\"name\":\"value\",\"type\":\"Vector<JSONValue>\"}],\"type\":\"JSONValue\"},{\"id\":-1715350371,\"predicate\":\"jsonObject\",\"params\":[{\"name\":\"value\",\"type\":\"Vector<JSONObjectValue>\"}],\"type\":\"JSONValue\"},{\"id\":-1311015810,\"predicate\":\"inputNotifyBroadcasts\",\"params\":[],\"type\":\"InputNotifyPeer\"},{\"id\":-703403793,\"predicate\":\"notifyBroadcasts\",\"params\":[],\"type\":\"NotifyPeer\"},{\"id\":-311786236,\"predicate\":\"textSubscript\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":-939827711,\"predicate\":\"textSuperscript\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":55281185,\"predicate\":\"textMarked\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"RichText\"},{\"id\":483104362,\"predicate\":\"textPhone\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"phone\",\"type\":\"string\"}],\"type\":\"RichText\"},{\"id\":136105807,\"predicate\":\"textImage\",\"params\":[{\"name\":\"document_id\",\"type\":\"long\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"}],\"type\":\"RichText\"},{\"id\":504660880,\"predicate\":\"pageBlockKicker\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":878078826,\"predicate\":\"pageTableCell\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"header\",\"type\":\"flags.0?true\"},{\"name\":\"align_center\",\"type\":\"flags.3?true\"},{\"name\":\"align_right\",\"type\":\"flags.4?true\"},{\"name\":\"valign_middle\",\"type\":\"flags.5?true\"},{\"name\":\"valign_bottom\",\"type\":\"flags.6?true\"},{\"name\":\"text\",\"type\":\"flags.7?RichText\"},{\"name\":\"colspan\",\"type\":\"flags.1?int\"},{\"name\":\"rowspan\",\"type\":\"flags.2?int\"}],\"type\":\"PageTableCell\"},{\"id\":-524237339,\"predicate\":\"pageTableRow\",\"params\":[{\"name\":\"cells\",\"type\":\"Vector<PageTableCell>\"}],\"type\":\"PageTableRow\"},{\"id\":-1085412734,\"predicate\":\"pageBlockTable\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"bordered\",\"type\":\"flags.0?true\"},{\"name\":\"striped\",\"type\":\"flags.1?true\"},{\"name\":\"title\",\"type\":\"RichText\"},{\"name\":\"rows\",\"type\":\"Vector<PageTableRow>\"}],\"type\":\"PageBlock\"},{\"id\":1869903447,\"predicate\":\"pageCaption\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"credit\",\"type\":\"RichText\"}],\"type\":\"PageCaption\"},{\"id\":-1188055347,\"predicate\":\"pageListItemText\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageListItem\"},{\"id\":635466748,\"predicate\":\"pageListItemBlocks\",\"params\":[{\"name\":\"blocks\",\"type\":\"Vector<PageBlock>\"}],\"type\":\"PageListItem\"},{\"id\":1577484359,\"predicate\":\"pageListOrderedItemText\",\"params\":[{\"name\":\"num\",\"type\":\"string\"},{\"name\":\"text\",\"type\":\"RichText\"}],\"type\":\"PageListOrderedItem\"},{\"id\":-1730311882,\"predicate\":\"pageListOrderedItemBlocks\",\"params\":[{\"name\":\"num\",\"type\":\"string\"},{\"name\":\"blocks\",\"type\":\"Vector<PageBlock>\"}],\"type\":\"PageListOrderedItem\"},{\"id\":-1702174239,\"predicate\":\"pageBlockOrderedList\",\"params\":[{\"name\":\"items\",\"type\":\"Vector<PageListOrderedItem>\"}],\"type\":\"PageBlock\"},{\"id\":1987480557,\"predicate\":\"pageBlockDetails\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"open\",\"type\":\"flags.0?true\"},{\"name\":\"blocks\",\"type\":\"Vector<PageBlock>\"},{\"name\":\"title\",\"type\":\"RichText\"}],\"type\":\"PageBlock\"},{\"id\":-1282352120,\"predicate\":\"pageRelatedArticle\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"webpage_id\",\"type\":\"long\"},{\"name\":\"title\",\"type\":\"flags.0?string\"},{\"name\":\"description\",\"type\":\"flags.1?string\"},{\"name\":\"photo_id\",\"type\":\"flags.2?long\"},{\"name\":\"author\",\"type\":\"flags.3?string\"},{\"name\":\"published_date\",\"type\":\"flags.4?int\"}],\"type\":\"PageRelatedArticle\"},{\"id\":370236054,\"predicate\":\"pageBlockRelatedArticles\",\"params\":[{\"name\":\"title\",\"type\":\"RichText\"},{\"name\":\"articles\",\"type\":\"Vector<PageRelatedArticle>\"}],\"type\":\"PageBlock\"},{\"id\":-1538310410,\"predicate\":\"pageBlockMap\",\"params\":[{\"name\":\"geo\",\"type\":\"GeoPoint\"},{\"name\":\"zoom\",\"type\":\"int\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"},{\"name\":\"caption\",\"type\":\"PageCaption\"}],\"type\":\"PageBlock\"},{\"id\":-1738178803,\"predicate\":\"page\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"part\",\"type\":\"flags.0?true\"},{\"name\":\"rtl\",\"type\":\"flags.1?true\"},{\"name\":\"v2\",\"type\":\"flags.2?true\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"blocks\",\"type\":\"Vector<PageBlock>\"},{\"name\":\"photos\",\"type\":\"Vector<Photo>\"},{\"name\":\"documents\",\"type\":\"Vector<Document>\"},{\"name\":\"views\",\"type\":\"flags.3?int\"}],\"type\":\"Page\"},{\"id\":-610373422,\"predicate\":\"inputPrivacyKeyPhoneP2P\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":961092808,\"predicate\":\"privacyKeyPhoneP2P\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":894777186,\"predicate\":\"textAnchor\",\"params\":[{\"name\":\"text\",\"type\":\"RichText\"},{\"name\":\"name\",\"type\":\"string\"}],\"type\":\"RichText\"},{\"id\":-1945767479,\"predicate\":\"help.supportName\",\"params\":[{\"name\":\"name\",\"type\":\"string\"}],\"type\":\"help.SupportName\"},{\"id\":-206688531,\"predicate\":\"help.userInfoEmpty\",\"params\":[],\"type\":\"help.UserInfo\"},{\"id\":32192344,\"predicate\":\"help.userInfo\",\"params\":[{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"Vector<MessageEntity>\"},{\"name\":\"author\",\"type\":\"string\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"help.UserInfo\"},{\"id\":-202219658,\"predicate\":\"messageActionContactSignUp\",\"params\":[],\"type\":\"MessageAction\"},{\"id\":-1398708869,\"predicate\":\"updateMessagePoll\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"poll_id\",\"type\":\"long\"},{\"name\":\"poll\",\"type\":\"flags.0?Poll\"},{\"name\":\"results\",\"type\":\"PollResults\"}],\"type\":\"Update\"},{\"id\":1823064809,\"predicate\":\"pollAnswer\",\"params\":[{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"option\",\"type\":\"bytes\"}],\"type\":\"PollAnswer\"},{\"id\":-2032041631,\"predicate\":\"poll\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"closed\",\"type\":\"flags.0?true\"},{\"name\":\"public_voters\",\"type\":\"flags.1?true\"},{\"name\":\"multiple_choice\",\"type\":\"flags.2?true\"},{\"name\":\"quiz\",\"type\":\"flags.3?true\"},{\"name\":\"question\",\"type\":\"string\"},{\"name\":\"answers\",\"type\":\"Vector<PollAnswer>\"},{\"name\":\"close_period\",\"type\":\"flags.4?int\"},{\"name\":\"close_date\",\"type\":\"flags.5?int\"}],\"type\":\"Poll\"},{\"id\":997055186,\"predicate\":\"pollAnswerVoters\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"chosen\",\"type\":\"flags.0?true\"},{\"name\":\"correct\",\"type\":\"flags.1?true\"},{\"name\":\"option\",\"type\":\"bytes\"},{\"name\":\"voters\",\"type\":\"int\"}],\"type\":\"PollAnswerVoters\"},{\"id\":-591909213,\"predicate\":\"pollResults\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"min\",\"type\":\"flags.0?true\"},{\"name\":\"results\",\"type\":\"flags.1?Vector<PollAnswerVoters>\"},{\"name\":\"total_voters\",\"type\":\"flags.2?int\"},{\"name\":\"recent_voters\",\"type\":\"flags.3?Vector<long>\"},{\"name\":\"solution\",\"type\":\"flags.4?string\"},{\"name\":\"solution_entities\",\"type\":\"flags.4?Vector<MessageEntity>\"}],\"type\":\"PollResults\"},{\"id\":261416433,\"predicate\":\"inputMediaPoll\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"poll\",\"type\":\"Poll\"},{\"name\":\"correct_answers\",\"type\":\"flags.0?Vector<bytes>\"},{\"name\":\"solution\",\"type\":\"flags.1?string\"},{\"name\":\"solution_entities\",\"type\":\"flags.1?Vector<MessageEntity>\"}],\"type\":\"InputMedia\"},{\"id\":1272375192,\"predicate\":\"messageMediaPoll\",\"params\":[{\"name\":\"poll\",\"type\":\"Poll\"},{\"name\":\"results\",\"type\":\"PollResults\"}],\"type\":\"MessageMedia\"},{\"id\":-264117680,\"predicate\":\"chatOnlines\",\"params\":[{\"name\":\"onlines\",\"type\":\"int\"}],\"type\":\"ChatOnlines\"},{\"id\":1202287072,\"predicate\":\"statsURL\",\"params\":[{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"StatsURL\"},{\"id\":-525288402,\"predicate\":\"photoStrippedSize\",\"params\":[{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"PhotoSize\"},{\"id\":1605510357,\"predicate\":\"chatAdminRights\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"change_info\",\"type\":\"flags.0?true\"},{\"name\":\"post_messages\",\"type\":\"flags.1?true\"},{\"name\":\"edit_messages\",\"type\":\"flags.2?true\"},{\"name\":\"delete_messages\",\"type\":\"flags.3?true\"},{\"name\":\"ban_users\",\"type\":\"flags.4?true\"},{\"name\":\"invite_users\",\"type\":\"flags.5?true\"},{\"name\":\"pin_messages\",\"type\":\"flags.7?true\"},{\"name\":\"add_admins\",\"type\":\"flags.9?true\"},{\"name\":\"anonymous\",\"type\":\"flags.10?true\"},{\"name\":\"manage_call\",\"type\":\"flags.11?true\"},{\"name\":\"other\",\"type\":\"flags.12?true\"}],\"type\":\"ChatAdminRights\"},{\"id\":-1626209256,\"predicate\":\"chatBannedRights\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"view_messages\",\"type\":\"flags.0?true\"},{\"name\":\"send_messages\",\"type\":\"flags.1?true\"},{\"name\":\"send_media\",\"type\":\"flags.2?true\"},{\"name\":\"send_stickers\",\"type\":\"flags.3?true\"},{\"name\":\"send_gifs\",\"type\":\"flags.4?true\"},{\"name\":\"send_games\",\"type\":\"flags.5?true\"},{\"name\":\"send_inline\",\"type\":\"flags.6?true\"},{\"name\":\"embed_links\",\"type\":\"flags.7?true\"},{\"name\":\"send_polls\",\"type\":\"flags.8?true\"},{\"name\":\"change_info\",\"type\":\"flags.10?true\"},{\"name\":\"invite_users\",\"type\":\"flags.15?true\"},{\"name\":\"pin_messages\",\"type\":\"flags.17?true\"},{\"name\":\"until_date\",\"type\":\"int\"}],\"type\":\"ChatBannedRights\"},{\"id\":1421875280,\"predicate\":\"updateChatDefaultBannedRights\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"default_banned_rights\",\"type\":\"ChatBannedRights\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-433014407,\"predicate\":\"inputWallPaper\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputWallPaper\"},{\"id\":1913199744,\"predicate\":\"inputWallPaperSlug\",\"params\":[{\"name\":\"slug\",\"type\":\"string\"}],\"type\":\"InputWallPaper\"},{\"id\":-1150621555,\"predicate\":\"channelParticipantsContacts\",\"params\":[{\"name\":\"q\",\"type\":\"string\"}],\"type\":\"ChannelParticipantsFilter\"},{\"id\":771095562,\"predicate\":\"channelAdminLogEventActionDefaultBannedRights\",\"params\":[{\"name\":\"prev_banned_rights\",\"type\":\"ChatBannedRights\"},{\"name\":\"new_banned_rights\",\"type\":\"ChatBannedRights\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-1895328189,\"predicate\":\"channelAdminLogEventActionStopPoll\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":471437699,\"predicate\":\"account.wallPapersNotModified\",\"params\":[],\"type\":\"account.WallPapers\"},{\"id\":-842824308,\"predicate\":\"account.wallPapers\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"wallpapers\",\"type\":\"Vector<WallPaper>\"}],\"type\":\"account.WallPapers\"},{\"id\":-1973130814,\"predicate\":\"codeSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"allow_flashcall\",\"type\":\"flags.0?true\"},{\"name\":\"current_number\",\"type\":\"flags.1?true\"},{\"name\":\"allow_app_hash\",\"type\":\"flags.4?true\"},{\"name\":\"allow_missed_call\",\"type\":\"flags.5?true\"},{\"name\":\"logout_tokens\",\"type\":\"flags.6?Vector<bytes>\"}],\"type\":\"CodeSettings\"},{\"id\":499236004,\"predicate\":\"wallPaperSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"blur\",\"type\":\"flags.1?true\"},{\"name\":\"motion\",\"type\":\"flags.2?true\"},{\"name\":\"background_color\",\"type\":\"flags.0?int\"},{\"name\":\"second_background_color\",\"type\":\"flags.4?int\"},{\"name\":\"third_background_color\",\"type\":\"flags.5?int\"},{\"name\":\"fourth_background_color\",\"type\":\"flags.6?int\"},{\"name\":\"intensity\",\"type\":\"flags.3?int\"},{\"name\":\"rotation\",\"type\":\"flags.4?int\"}],\"type\":\"WallPaperSettings\"},{\"id\":-532532493,\"predicate\":\"autoDownloadSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"disabled\",\"type\":\"flags.0?true\"},{\"name\":\"video_preload_large\",\"type\":\"flags.1?true\"},{\"name\":\"audio_preload_next\",\"type\":\"flags.2?true\"},{\"name\":\"phonecalls_less_data\",\"type\":\"flags.3?true\"},{\"name\":\"photo_size_max\",\"type\":\"int\"},{\"name\":\"video_size_max\",\"type\":\"int\"},{\"name\":\"file_size_max\",\"type\":\"int\"},{\"name\":\"video_upload_maxbitrate\",\"type\":\"int\"}],\"type\":\"AutoDownloadSettings\"},{\"id\":1674235686,\"predicate\":\"account.autoDownloadSettings\",\"params\":[{\"name\":\"low\",\"type\":\"AutoDownloadSettings\"},{\"name\":\"medium\",\"type\":\"AutoDownloadSettings\"},{\"name\":\"high\",\"type\":\"AutoDownloadSettings\"}],\"type\":\"account.AutoDownloadSettings\"},{\"id\":-709641735,\"predicate\":\"emojiKeyword\",\"params\":[{\"name\":\"keyword\",\"type\":\"string\"},{\"name\":\"emoticons\",\"type\":\"Vector<string>\"}],\"type\":\"EmojiKeyword\"},{\"id\":594408994,\"predicate\":\"emojiKeywordDeleted\",\"params\":[{\"name\":\"keyword\",\"type\":\"string\"},{\"name\":\"emoticons\",\"type\":\"Vector<string>\"}],\"type\":\"EmojiKeyword\"},{\"id\":1556570557,\"predicate\":\"emojiKeywordsDifference\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"from_version\",\"type\":\"int\"},{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"keywords\",\"type\":\"Vector<EmojiKeyword>\"}],\"type\":\"EmojiKeywordsDifference\"},{\"id\":-1519029347,\"predicate\":\"emojiURL\",\"params\":[{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"EmojiURL\"},{\"id\":-1275374751,\"predicate\":\"emojiLanguage\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"EmojiLanguage\"},{\"id\":-1529000952,\"predicate\":\"inputPrivacyKeyForwards\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":1777096355,\"predicate\":\"privacyKeyForwards\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":1461304012,\"predicate\":\"inputPrivacyKeyProfilePhoto\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":-1777000467,\"predicate\":\"privacyKeyProfilePhoto\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":1075322878,\"predicate\":\"inputPhotoFileLocation\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"},{\"name\":\"thumb_size\",\"type\":\"string\"}],\"type\":\"InputFileLocation\"},{\"id\":-667654413,\"predicate\":\"inputPhotoLegacyFileLocation\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"file_reference\",\"type\":\"bytes\"},{\"name\":\"volume_id\",\"type\":\"long\"},{\"name\":\"local_id\",\"type\":\"int\"},{\"name\":\"secret\",\"type\":\"long\"}],\"type\":\"InputFileLocation\"},{\"id\":925204121,\"predicate\":\"inputPeerPhotoFileLocation\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"big\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"photo_id\",\"type\":\"long\"}],\"type\":\"InputFileLocation\"},{\"id\":-1652231205,\"predicate\":\"inputStickerSetThumb\",\"params\":[{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"},{\"name\":\"thumb_version\",\"type\":\"int\"}],\"type\":\"InputFileLocation\"},{\"id\":-11252123,\"predicate\":\"folder\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"autofill_new_broadcasts\",\"type\":\"flags.0?true\"},{\"name\":\"autofill_public_groups\",\"type\":\"flags.1?true\"},{\"name\":\"autofill_new_correspondents\",\"type\":\"flags.2?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"flags.3?ChatPhoto\"}],\"type\":\"Folder\"},{\"id\":1908216652,\"predicate\":\"dialogFolder\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pinned\",\"type\":\"flags.2?true\"},{\"name\":\"folder\",\"type\":\"Folder\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"top_message\",\"type\":\"int\"},{\"name\":\"unread_muted_peers_count\",\"type\":\"int\"},{\"name\":\"unread_unmuted_peers_count\",\"type\":\"int\"},{\"name\":\"unread_muted_messages_count\",\"type\":\"int\"},{\"name\":\"unread_unmuted_messages_count\",\"type\":\"int\"}],\"type\":\"Dialog\"},{\"id\":1684014375,\"predicate\":\"inputDialogPeerFolder\",\"params\":[{\"name\":\"folder_id\",\"type\":\"int\"}],\"type\":\"InputDialogPeer\"},{\"id\":1363483106,\"predicate\":\"dialogPeerFolder\",\"params\":[{\"name\":\"folder_id\",\"type\":\"int\"}],\"type\":\"DialogPeer\"},{\"id\":-70073706,\"predicate\":\"inputFolderPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"folder_id\",\"type\":\"int\"}],\"type\":\"InputFolderPeer\"},{\"id\":-373643672,\"predicate\":\"folderPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"folder_id\",\"type\":\"int\"}],\"type\":\"FolderPeer\"},{\"id\":422972864,\"predicate\":\"updateFolderPeers\",\"params\":[{\"name\":\"folder_peers\",\"type\":\"Vector<FolderPeer>\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":497305826,\"predicate\":\"inputUserFromMessage\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"long\"}],\"type\":\"InputUser\"},{\"id\":1536380829,\"predicate\":\"inputChannelFromMessage\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"channel_id\",\"type\":\"long\"}],\"type\":\"InputChannel\"},{\"id\":-1468331492,\"predicate\":\"inputPeerUserFromMessage\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"long\"}],\"type\":\"InputPeer\"},{\"id\":-1121318848,\"predicate\":\"inputPeerChannelFromMessage\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"channel_id\",\"type\":\"long\"}],\"type\":\"InputPeer\"},{\"id\":55761658,\"predicate\":\"inputPrivacyKeyPhoneNumber\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":-778378131,\"predicate\":\"privacyKeyPhoneNumber\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":-1472172887,\"predicate\":\"topPeerCategoryForwardUsers\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":-68239120,\"predicate\":\"topPeerCategoryForwardChats\",\"params\":[],\"type\":\"TopPeerCategory\"},{\"id\":84703944,\"predicate\":\"channelAdminLogEventActionChangeLinkedChat\",\"params\":[{\"name\":\"prev_value\",\"type\":\"long\"},{\"name\":\"new_value\",\"type\":\"long\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-398136321,\"predicate\":\"messages.searchCounter\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"inexact\",\"type\":\"flags.1?true\"},{\"name\":\"filter\",\"type\":\"MessagesFilter\"},{\"name\":\"count\",\"type\":\"int\"}],\"type\":\"messages.SearchCounter\"},{\"id\":280464681,\"predicate\":\"keyboardButtonUrlAuth\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"fwd_text\",\"type\":\"flags.0?string\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"button_id\",\"type\":\"int\"}],\"type\":\"KeyboardButton\"},{\"id\":-802258988,\"predicate\":\"inputKeyboardButtonUrlAuth\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"request_write_access\",\"type\":\"flags.0?true\"},{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"fwd_text\",\"type\":\"flags.1?string\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"bot\",\"type\":\"InputUser\"}],\"type\":\"KeyboardButton\"},{\"id\":-1831650802,\"predicate\":\"urlAuthResultRequest\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"request_write_access\",\"type\":\"flags.0?true\"},{\"name\":\"bot\",\"type\":\"User\"},{\"name\":\"domain\",\"type\":\"string\"}],\"type\":\"UrlAuthResult\"},{\"id\":-1886646706,\"predicate\":\"urlAuthResultAccepted\",\"params\":[{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"UrlAuthResult\"},{\"id\":-1445536993,\"predicate\":\"urlAuthResultDefault\",\"params\":[],\"type\":\"UrlAuthResult\"},{\"id\":-2079962673,\"predicate\":\"inputPrivacyValueAllowChatParticipants\",\"params\":[{\"name\":\"chats\",\"type\":\"Vector<long>\"}],\"type\":\"InputPrivacyRule\"},{\"id\":-380694650,\"predicate\":\"inputPrivacyValueDisallowChatParticipants\",\"params\":[{\"name\":\"chats\",\"type\":\"Vector<long>\"}],\"type\":\"InputPrivacyRule\"},{\"id\":1796427406,\"predicate\":\"privacyValueAllowChatParticipants\",\"params\":[{\"name\":\"chats\",\"type\":\"Vector<long>\"}],\"type\":\"PrivacyRule\"},{\"id\":1103656293,\"predicate\":\"privacyValueDisallowChatParticipants\",\"params\":[{\"name\":\"chats\",\"type\":\"Vector<long>\"}],\"type\":\"PrivacyRule\"},{\"id\":-1672577397,\"predicate\":\"messageEntityUnderline\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":-1090087980,\"predicate\":\"messageEntityStrike\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":34469328,\"predicate\":\"messageEntityBlockquote\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":1786671974,\"predicate\":\"updatePeerSettings\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"settings\",\"type\":\"PeerSettings\"}],\"type\":\"Update\"},{\"id\":-1078612597,\"predicate\":\"channelLocationEmpty\",\"params\":[],\"type\":\"ChannelLocation\"},{\"id\":547062491,\"predicate\":\"channelLocation\",\"params\":[{\"name\":\"geo_point\",\"type\":\"GeoPoint\"},{\"name\":\"address\",\"type\":\"string\"}],\"type\":\"ChannelLocation\"},{\"id\":-901375139,\"predicate\":\"peerLocated\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"expires\",\"type\":\"int\"},{\"name\":\"distance\",\"type\":\"int\"}],\"type\":\"PeerLocated\"},{\"id\":-1263546448,\"predicate\":\"updatePeerLocated\",\"params\":[{\"name\":\"peers\",\"type\":\"Vector<PeerLocated>\"}],\"type\":\"Update\"},{\"id\":241923758,\"predicate\":\"channelAdminLogEventActionChangeLocation\",\"params\":[{\"name\":\"prev_value\",\"type\":\"ChannelLocation\"},{\"name\":\"new_value\",\"type\":\"ChannelLocation\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-606798099,\"predicate\":\"inputReportReasonGeoIrrelevant\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":1401984889,\"predicate\":\"channelAdminLogEventActionToggleSlowMode\",\"params\":[{\"name\":\"prev_value\",\"type\":\"int\"},{\"name\":\"new_value\",\"type\":\"int\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":1148485274,\"predicate\":\"auth.authorizationSignUpRequired\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"terms_of_service\",\"type\":\"flags.0?help.TermsOfService\"}],\"type\":\"auth.Authorization\"},{\"id\":-666824391,\"predicate\":\"payments.paymentVerificationNeeded\",\"params\":[{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"payments.PaymentResult\"},{\"id\":42402760,\"predicate\":\"inputStickerSetAnimatedEmoji\",\"params\":[],\"type\":\"InputStickerSet\"},{\"id\":967122427,\"predicate\":\"updateNewScheduledMessage\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"}],\"type\":\"Update\"},{\"id\":-1870238482,\"predicate\":\"updateDeleteScheduledMessages\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"messages\",\"type\":\"Vector<int>\"}],\"type\":\"Update\"},{\"id\":-797791052,\"predicate\":\"restrictionReason\",\"params\":[{\"name\":\"platform\",\"type\":\"string\"},{\"name\":\"reason\",\"type\":\"string\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"RestrictionReason\"},{\"id\":1012306921,\"predicate\":\"inputTheme\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputTheme\"},{\"id\":-175567375,\"predicate\":\"inputThemeSlug\",\"params\":[{\"name\":\"slug\",\"type\":\"string\"}],\"type\":\"InputTheme\"},{\"id\":-1609668650,\"predicate\":\"theme\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"creator\",\"type\":\"flags.0?true\"},{\"name\":\"default\",\"type\":\"flags.1?true\"},{\"name\":\"for_chat\",\"type\":\"flags.5?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"slug\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"document\",\"type\":\"flags.2?Document\"},{\"name\":\"settings\",\"type\":\"flags.3?Vector<ThemeSettings>\"},{\"name\":\"emoticon\",\"type\":\"flags.6?string\"},{\"name\":\"installs_count\",\"type\":\"flags.4?int\"}],\"type\":\"Theme\"},{\"id\":-199313886,\"predicate\":\"account.themesNotModified\",\"params\":[],\"type\":\"account.Themes\"},{\"id\":-1707242387,\"predicate\":\"account.themes\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"themes\",\"type\":\"Vector<Theme>\"}],\"type\":\"account.Themes\"},{\"id\":-2112423005,\"predicate\":\"updateTheme\",\"params\":[{\"name\":\"theme\",\"type\":\"Theme\"}],\"type\":\"Update\"},{\"id\":-786326563,\"predicate\":\"inputPrivacyKeyAddedByPhone\",\"params\":[],\"type\":\"InputPrivacyKey\"},{\"id\":1124062251,\"predicate\":\"privacyKeyAddedByPhone\",\"params\":[],\"type\":\"PrivacyKey\"},{\"id\":-2027964103,\"predicate\":\"updateGeoLiveViewed\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":1448076945,\"predicate\":\"updateLoginToken\",\"params\":[],\"type\":\"Update\"},{\"id\":1654593920,\"predicate\":\"auth.loginToken\",\"params\":[{\"name\":\"expires\",\"type\":\"int\"},{\"name\":\"token\",\"type\":\"bytes\"}],\"type\":\"auth.LoginToken\"},{\"id\":110008598,\"predicate\":\"auth.loginTokenMigrateTo\",\"params\":[{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"token\",\"type\":\"bytes\"}],\"type\":\"auth.LoginToken\"},{\"id\":957176926,\"predicate\":\"auth.loginTokenSuccess\",\"params\":[{\"name\":\"authorization\",\"type\":\"auth.Authorization\"}],\"type\":\"auth.LoginToken\"},{\"id\":1474462241,\"predicate\":\"account.contentSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"sensitive_enabled\",\"type\":\"flags.0?true\"},{\"name\":\"sensitive_can_change\",\"type\":\"flags.1?true\"}],\"type\":\"account.ContentSettings\"},{\"id\":-1456996667,\"predicate\":\"messages.inactiveChats\",\"params\":[{\"name\":\"dates\",\"type\":\"Vector<int>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.InactiveChats\"},{\"id\":-1012849566,\"predicate\":\"baseThemeClassic\",\"params\":[],\"type\":\"BaseTheme\"},{\"id\":-69724536,\"predicate\":\"baseThemeDay\",\"params\":[],\"type\":\"BaseTheme\"},{\"id\":-1212997976,\"predicate\":\"baseThemeNight\",\"params\":[],\"type\":\"BaseTheme\"},{\"id\":1834973166,\"predicate\":\"baseThemeTinted\",\"params\":[],\"type\":\"BaseTheme\"},{\"id\":1527845466,\"predicate\":\"baseThemeArctic\",\"params\":[],\"type\":\"BaseTheme\"},{\"id\":-1770371538,\"predicate\":\"inputWallPaperNoFile\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"InputWallPaper\"},{\"id\":-528465642,\"predicate\":\"wallPaperNoFile\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"default\",\"type\":\"flags.1?true\"},{\"name\":\"dark\",\"type\":\"flags.4?true\"},{\"name\":\"settings\",\"type\":\"flags.2?WallPaperSettings\"}],\"type\":\"WallPaper\"},{\"id\":-1881255857,\"predicate\":\"inputThemeSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"message_colors_animated\",\"type\":\"flags.2?true\"},{\"name\":\"base_theme\",\"type\":\"BaseTheme\"},{\"name\":\"accent_color\",\"type\":\"int\"},{\"name\":\"outbox_accent_color\",\"type\":\"flags.3?int\"},{\"name\":\"message_colors\",\"type\":\"flags.0?Vector<int>\"},{\"name\":\"wallpaper\",\"type\":\"flags.1?InputWallPaper\"},{\"name\":\"wallpaper_settings\",\"type\":\"flags.1?WallPaperSettings\"}],\"type\":\"InputThemeSettings\"},{\"id\":-94849324,\"predicate\":\"themeSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"message_colors_animated\",\"type\":\"flags.2?true\"},{\"name\":\"base_theme\",\"type\":\"BaseTheme\"},{\"name\":\"accent_color\",\"type\":\"int\"},{\"name\":\"outbox_accent_color\",\"type\":\"flags.3?int\"},{\"name\":\"message_colors\",\"type\":\"flags.0?Vector<int>\"},{\"name\":\"wallpaper\",\"type\":\"flags.1?WallPaper\"}],\"type\":\"ThemeSettings\"},{\"id\":1421174295,\"predicate\":\"webPageAttributeTheme\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"documents\",\"type\":\"flags.0?Vector<Document>\"},{\"name\":\"settings\",\"type\":\"flags.1?ThemeSettings\"}],\"type\":\"WebPageAttribute\"},{\"id\":274961865,\"predicate\":\"updateMessagePollVote\",\"params\":[{\"name\":\"poll_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"options\",\"type\":\"Vector<bytes>\"},{\"name\":\"qts\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":886196148,\"predicate\":\"messageUserVote\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"option\",\"type\":\"bytes\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"MessageUserVote\"},{\"id\":1017491692,\"predicate\":\"messageUserVoteInputOption\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"MessageUserVote\"},{\"id\":-1973033641,\"predicate\":\"messageUserVoteMultiple\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"options\",\"type\":\"Vector<bytes>\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"MessageUserVote\"},{\"id\":136574537,\"predicate\":\"messages.votesList\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"votes\",\"type\":\"Vector<MessageUserVote>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"next_offset\",\"type\":\"flags.0?string\"}],\"type\":\"messages.VotesList\"},{\"id\":-1144565411,\"predicate\":\"keyboardButtonRequestPoll\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"quiz\",\"type\":\"flags.0?Bool\"},{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":1981704948,\"predicate\":\"messageEntityBankCard\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":-177732982,\"predicate\":\"bankCardOpenUrl\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"name\",\"type\":\"string\"}],\"type\":\"BankCardOpenUrl\"},{\"id\":1042605427,\"predicate\":\"payments.bankCardData\",\"params\":[{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"open_urls\",\"type\":\"Vector<BankCardOpenUrl>\"}],\"type\":\"payments.BankCardData\"},{\"id\":-118740917,\"predicate\":\"peerSelfLocated\",\"params\":[{\"name\":\"expires\",\"type\":\"int\"}],\"type\":\"PeerLocated\"},{\"id\":1949890536,\"predicate\":\"dialogFilter\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"contacts\",\"type\":\"flags.0?true\"},{\"name\":\"non_contacts\",\"type\":\"flags.1?true\"},{\"name\":\"groups\",\"type\":\"flags.2?true\"},{\"name\":\"broadcasts\",\"type\":\"flags.3?true\"},{\"name\":\"bots\",\"type\":\"flags.4?true\"},{\"name\":\"exclude_muted\",\"type\":\"flags.11?true\"},{\"name\":\"exclude_read\",\"type\":\"flags.12?true\"},{\"name\":\"exclude_archived\",\"type\":\"flags.13?true\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"emoticon\",\"type\":\"flags.25?string\"},{\"name\":\"pinned_peers\",\"type\":\"Vector<InputPeer>\"},{\"name\":\"include_peers\",\"type\":\"Vector<InputPeer>\"},{\"name\":\"exclude_peers\",\"type\":\"Vector<InputPeer>\"}],\"type\":\"DialogFilter\"},{\"id\":2004110666,\"predicate\":\"dialogFilterSuggested\",\"params\":[{\"name\":\"filter\",\"type\":\"DialogFilter\"},{\"name\":\"description\",\"type\":\"string\"}],\"type\":\"DialogFilterSuggested\"},{\"id\":654302845,\"predicate\":\"updateDialogFilter\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"filter\",\"type\":\"flags.0?DialogFilter\"}],\"type\":\"Update\"},{\"id\":-1512627963,\"predicate\":\"updateDialogFilterOrder\",\"params\":[{\"name\":\"order\",\"type\":\"Vector<int>\"}],\"type\":\"Update\"},{\"id\":889491791,\"predicate\":\"updateDialogFilters\",\"params\":[],\"type\":\"Update\"},{\"id\":-1237848657,\"predicate\":\"statsDateRangeDays\",\"params\":[{\"name\":\"min_date\",\"type\":\"int\"},{\"name\":\"max_date\",\"type\":\"int\"}],\"type\":\"StatsDateRangeDays\"},{\"id\":-884757282,\"predicate\":\"statsAbsValueAndPrev\",\"params\":[{\"name\":\"current\",\"type\":\"double\"},{\"name\":\"previous\",\"type\":\"double\"}],\"type\":\"StatsAbsValueAndPrev\"},{\"id\":-875679776,\"predicate\":\"statsPercentValue\",\"params\":[{\"name\":\"part\",\"type\":\"double\"},{\"name\":\"total\",\"type\":\"double\"}],\"type\":\"StatsPercentValue\"},{\"id\":1244130093,\"predicate\":\"statsGraphAsync\",\"params\":[{\"name\":\"token\",\"type\":\"string\"}],\"type\":\"StatsGraph\"},{\"id\":-1092839390,\"predicate\":\"statsGraphError\",\"params\":[{\"name\":\"error\",\"type\":\"string\"}],\"type\":\"StatsGraph\"},{\"id\":-1901828938,\"predicate\":\"statsGraph\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"json\",\"type\":\"DataJSON\"},{\"name\":\"zoom_token\",\"type\":\"flags.0?string\"}],\"type\":\"StatsGraph\"},{\"id\":-1387279939,\"predicate\":\"messageInteractionCounters\",\"params\":[{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"views\",\"type\":\"int\"},{\"name\":\"forwards\",\"type\":\"int\"}],\"type\":\"MessageInteractionCounters\"},{\"id\":-1107852396,\"predicate\":\"stats.broadcastStats\",\"params\":[{\"name\":\"period\",\"type\":\"StatsDateRangeDays\"},{\"name\":\"followers\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"views_per_post\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"shares_per_post\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"enabled_notifications\",\"type\":\"StatsPercentValue\"},{\"name\":\"growth_graph\",\"type\":\"StatsGraph\"},{\"name\":\"followers_graph\",\"type\":\"StatsGraph\"},{\"name\":\"mute_graph\",\"type\":\"StatsGraph\"},{\"name\":\"top_hours_graph\",\"type\":\"StatsGraph\"},{\"name\":\"interactions_graph\",\"type\":\"StatsGraph\"},{\"name\":\"iv_interactions_graph\",\"type\":\"StatsGraph\"},{\"name\":\"views_by_source_graph\",\"type\":\"StatsGraph\"},{\"name\":\"new_followers_by_source_graph\",\"type\":\"StatsGraph\"},{\"name\":\"languages_graph\",\"type\":\"StatsGraph\"},{\"name\":\"recent_message_interactions\",\"type\":\"Vector<MessageInteractionCounters>\"}],\"type\":\"stats.BroadcastStats\"},{\"id\":-428884101,\"predicate\":\"inputMediaDice\",\"params\":[{\"name\":\"emoticon\",\"type\":\"string\"}],\"type\":\"InputMedia\"},{\"id\":1065280907,\"predicate\":\"messageMediaDice\",\"params\":[{\"name\":\"value\",\"type\":\"int\"},{\"name\":\"emoticon\",\"type\":\"string\"}],\"type\":\"MessageMedia\"},{\"id\":-427863538,\"predicate\":\"inputStickerSetDice\",\"params\":[{\"name\":\"emoticon\",\"type\":\"string\"}],\"type\":\"InputStickerSet\"},{\"id\":-1728664459,\"predicate\":\"help.promoDataEmpty\",\"params\":[{\"name\":\"expires\",\"type\":\"int\"}],\"type\":\"help.PromoData\"},{\"id\":-1942390465,\"predicate\":\"help.promoData\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"proxy\",\"type\":\"flags.0?true\"},{\"name\":\"expires\",\"type\":\"int\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"psa_type\",\"type\":\"flags.1?string\"},{\"name\":\"psa_message\",\"type\":\"flags.2?string\"}],\"type\":\"help.PromoData\"},{\"id\":-567037804,\"predicate\":\"videoSize\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"video_start_ts\",\"type\":\"flags.0?double\"}],\"type\":\"VideoSize\"},{\"id\":643940105,\"predicate\":\"updatePhoneCallSignalingData\",\"params\":[{\"name\":\"phone_call_id\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"type\":\"Update\"},{\"id\":1634294960,\"predicate\":\"chatInvitePeek\",\"params\":[{\"name\":\"chat\",\"type\":\"Chat\"},{\"name\":\"expires\",\"type\":\"int\"}],\"type\":\"ChatInvite\"},{\"id\":-1660637285,\"predicate\":\"statsGroupTopPoster\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"messages\",\"type\":\"int\"},{\"name\":\"avg_chars\",\"type\":\"int\"}],\"type\":\"StatsGroupTopPoster\"},{\"id\":-682079097,\"predicate\":\"statsGroupTopAdmin\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"deleted\",\"type\":\"int\"},{\"name\":\"kicked\",\"type\":\"int\"},{\"name\":\"banned\",\"type\":\"int\"}],\"type\":\"StatsGroupTopAdmin\"},{\"id\":1398765469,\"predicate\":\"statsGroupTopInviter\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"invitations\",\"type\":\"int\"}],\"type\":\"StatsGroupTopInviter\"},{\"id\":-276825834,\"predicate\":\"stats.megagroupStats\",\"params\":[{\"name\":\"period\",\"type\":\"StatsDateRangeDays\"},{\"name\":\"members\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"messages\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"viewers\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"posters\",\"type\":\"StatsAbsValueAndPrev\"},{\"name\":\"growth_graph\",\"type\":\"StatsGraph\"},{\"name\":\"members_graph\",\"type\":\"StatsGraph\"},{\"name\":\"new_members_by_source_graph\",\"type\":\"StatsGraph\"},{\"name\":\"languages_graph\",\"type\":\"StatsGraph\"},{\"name\":\"messages_graph\",\"type\":\"StatsGraph\"},{\"name\":\"actions_graph\",\"type\":\"StatsGraph\"},{\"name\":\"top_hours_graph\",\"type\":\"StatsGraph\"},{\"name\":\"weekdays_graph\",\"type\":\"StatsGraph\"},{\"name\":\"top_posters\",\"type\":\"Vector<StatsGroupTopPoster>\"},{\"name\":\"top_admins\",\"type\":\"Vector<StatsGroupTopAdmin>\"},{\"name\":\"top_inviters\",\"type\":\"Vector<StatsGroupTopInviter>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"stats.MegagroupStats\"},{\"id\":-1096616924,\"predicate\":\"globalPrivacySettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"archive_and_mute_new_noncontact_peers\",\"type\":\"flags.0?Bool\"}],\"type\":\"GlobalPrivacySettings\"},{\"id\":1667228533,\"predicate\":\"phoneConnectionWebrtc\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"turn\",\"type\":\"flags.0?true\"},{\"name\":\"stun\",\"type\":\"flags.1?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"ip\",\"type\":\"string\"},{\"name\":\"ipv6\",\"type\":\"string\"},{\"name\":\"port\",\"type\":\"int\"},{\"name\":\"username\",\"type\":\"string\"},{\"name\":\"password\",\"type\":\"string\"}],\"type\":\"PhoneConnection\"},{\"id\":1107543535,\"predicate\":\"help.countryCode\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"country_code\",\"type\":\"string\"},{\"name\":\"prefixes\",\"type\":\"flags.0?Vector<string>\"},{\"name\":\"patterns\",\"type\":\"flags.1?Vector<string>\"}],\"type\":\"help.CountryCode\"},{\"id\":-1014526429,\"predicate\":\"help.country\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"hidden\",\"type\":\"flags.0?true\"},{\"name\":\"iso2\",\"type\":\"string\"},{\"name\":\"default_name\",\"type\":\"string\"},{\"name\":\"name\",\"type\":\"flags.1?string\"},{\"name\":\"country_codes\",\"type\":\"Vector<help.CountryCode>\"}],\"type\":\"help.Country\"},{\"id\":-1815339214,\"predicate\":\"help.countriesListNotModified\",\"params\":[],\"type\":\"help.CountriesList\"},{\"id\":-2016381538,\"predicate\":\"help.countriesList\",\"params\":[{\"name\":\"countries\",\"type\":\"Vector<help.Country>\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"help.CountriesList\"},{\"id\":1163625789,\"predicate\":\"messageViews\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"views\",\"type\":\"flags.0?int\"},{\"name\":\"forwards\",\"type\":\"flags.1?int\"},{\"name\":\"replies\",\"type\":\"flags.2?MessageReplies\"}],\"type\":\"MessageViews\"},{\"id\":-761649164,\"predicate\":\"updateChannelMessageForwards\",\"params\":[{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"forwards\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-96535659,\"predicate\":\"photoSizeProgressive\",\"params\":[{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"w\",\"type\":\"int\"},{\"name\":\"h\",\"type\":\"int\"},{\"name\":\"sizes\",\"type\":\"Vector<int>\"}],\"type\":\"PhotoSize\"},{\"id\":-1228606141,\"predicate\":\"messages.messageViews\",\"params\":[{\"name\":\"views\",\"type\":\"Vector<MessageViews>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.MessageViews\"},{\"id\":-693004986,\"predicate\":\"updateReadChannelDiscussionInbox\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"top_msg_id\",\"type\":\"int\"},{\"name\":\"read_max_id\",\"type\":\"int\"},{\"name\":\"broadcast_id\",\"type\":\"flags.0?long\"},{\"name\":\"broadcast_post\",\"type\":\"flags.0?int\"}],\"type\":\"Update\"},{\"id\":1767677564,\"predicate\":\"updateReadChannelDiscussionOutbox\",\"params\":[{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"top_msg_id\",\"type\":\"int\"},{\"name\":\"read_max_id\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-1506535550,\"predicate\":\"messages.discussionMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"max_id\",\"type\":\"flags.0?int\"},{\"name\":\"read_inbox_max_id\",\"type\":\"flags.1?int\"},{\"name\":\"read_outbox_max_id\",\"type\":\"flags.2?int\"},{\"name\":\"unread_count\",\"type\":\"int\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.DiscussionMessage\"},{\"id\":-1495959709,\"predicate\":\"messageReplyHeader\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"reply_to_scheduled\",\"type\":\"flags.2?true\"},{\"name\":\"reply_to_msg_id\",\"type\":\"int\"},{\"name\":\"reply_to_peer_id\",\"type\":\"flags.0?Peer\"},{\"name\":\"reply_to_top_id\",\"type\":\"flags.1?int\"}],\"type\":\"MessageReplyHeader\"},{\"id\":-2083123262,\"predicate\":\"messageReplies\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"comments\",\"type\":\"flags.0?true\"},{\"name\":\"replies\",\"type\":\"int\"},{\"name\":\"replies_pts\",\"type\":\"int\"},{\"name\":\"recent_repliers\",\"type\":\"flags.1?Vector<Peer>\"},{\"name\":\"channel_id\",\"type\":\"flags.0?long\"},{\"name\":\"max_id\",\"type\":\"flags.2?int\"},{\"name\":\"read_max_id\",\"type\":\"flags.3?int\"}],\"type\":\"MessageReplies\"},{\"id\":610945826,\"predicate\":\"updatePeerBlocked\",\"params\":[{\"name\":\"peer_id\",\"type\":\"Peer\"},{\"name\":\"blocked\",\"type\":\"Bool\"}],\"type\":\"Update\"},{\"id\":-386039788,\"predicate\":\"peerBlocked\",\"params\":[{\"name\":\"peer_id\",\"type\":\"Peer\"},{\"name\":\"date\",\"type\":\"int\"}],\"type\":\"PeerBlocked\"},{\"id\":-1937192669,\"predicate\":\"updateChannelUserTyping\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"top_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"from_id\",\"type\":\"Peer\"},{\"name\":\"action\",\"type\":\"SendMessageAction\"}],\"type\":\"Update\"},{\"id\":-1392895362,\"predicate\":\"inputMessageCallbackQuery\",\"params\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"query_id\",\"type\":\"long\"}],\"type\":\"InputMessage\"},{\"id\":453242886,\"predicate\":\"channelParticipantLeft\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"}],\"type\":\"ChannelParticipant\"},{\"id\":-531931925,\"predicate\":\"channelParticipantsMentions\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"q\",\"type\":\"flags.0?string\"},{\"name\":\"top_msg_id\",\"type\":\"flags.1?int\"}],\"type\":\"ChannelParticipantsFilter\"},{\"id\":-309990731,\"predicate\":\"updatePinnedMessages\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pinned\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"messages\",\"type\":\"Vector<int>\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":1538885128,\"predicate\":\"updatePinnedChannelMessages\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pinned\",\"type\":\"flags.0?true\"},{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"messages\",\"type\":\"Vector<int>\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":464520273,\"predicate\":\"inputMessagesFilterPinned\",\"params\":[],\"type\":\"MessagesFilter\"},{\"id\":-1986399595,\"predicate\":\"stats.messageStats\",\"params\":[{\"name\":\"views_graph\",\"type\":\"StatsGraph\"}],\"type\":\"stats.MessageStats\"},{\"id\":-1730095465,\"predicate\":\"messageActionGeoProximityReached\",\"params\":[{\"name\":\"from_id\",\"type\":\"Peer\"},{\"name\":\"to_id\",\"type\":\"Peer\"},{\"name\":\"distance\",\"type\":\"int\"}],\"type\":\"MessageAction\"},{\"id\":-668906175,\"predicate\":\"photoPathSize\",\"params\":[{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"PhotoSize\"},{\"id\":-651419003,\"predicate\":\"speakingInGroupCallAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":2004925620,\"predicate\":\"groupCallDiscarded\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"duration\",\"type\":\"int\"}],\"type\":\"GroupCall\"},{\"id\":-711498484,\"predicate\":\"groupCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"join_muted\",\"type\":\"flags.1?true\"},{\"name\":\"can_change_join_muted\",\"type\":\"flags.2?true\"},{\"name\":\"join_date_asc\",\"type\":\"flags.6?true\"},{\"name\":\"schedule_start_subscribed\",\"type\":\"flags.8?true\"},{\"name\":\"can_start_video\",\"type\":\"flags.9?true\"},{\"name\":\"record_video_active\",\"type\":\"flags.11?true\"},{\"name\":\"rtmp_stream\",\"type\":\"flags.12?true\"},{\"name\":\"listeners_hidden\",\"type\":\"flags.13?true\"},{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"},{\"name\":\"participants_count\",\"type\":\"int\"},{\"name\":\"title\",\"type\":\"flags.3?string\"},{\"name\":\"stream_dc_id\",\"type\":\"flags.4?int\"},{\"name\":\"record_start_date\",\"type\":\"flags.5?int\"},{\"name\":\"schedule_date\",\"type\":\"flags.7?int\"},{\"name\":\"unmuted_video_count\",\"type\":\"flags.10?int\"},{\"name\":\"unmuted_video_limit\",\"type\":\"int\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"GroupCall\"},{\"id\":-659913713,\"predicate\":\"inputGroupCall\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputGroupCall\"},{\"id\":2047704898,\"predicate\":\"messageActionGroupCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"duration\",\"type\":\"flags.0?int\"}],\"type\":\"MessageAction\"},{\"id\":1345295095,\"predicate\":\"messageActionInviteToGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"users\",\"type\":\"Vector<long>\"}],\"type\":\"MessageAction\"},{\"id\":-341428482,\"predicate\":\"groupCallParticipant\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"muted\",\"type\":\"flags.0?true\"},{\"name\":\"left\",\"type\":\"flags.1?true\"},{\"name\":\"can_self_unmute\",\"type\":\"flags.2?true\"},{\"name\":\"just_joined\",\"type\":\"flags.4?true\"},{\"name\":\"versioned\",\"type\":\"flags.5?true\"},{\"name\":\"min\",\"type\":\"flags.8?true\"},{\"name\":\"muted_by_you\",\"type\":\"flags.9?true\"},{\"name\":\"volume_by_admin\",\"type\":\"flags.10?true\"},{\"name\":\"self\",\"type\":\"flags.12?true\"},{\"name\":\"video_joined\",\"type\":\"flags.15?true\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"active_date\",\"type\":\"flags.3?int\"},{\"name\":\"source\",\"type\":\"int\"},{\"name\":\"volume\",\"type\":\"flags.7?int\"},{\"name\":\"about\",\"type\":\"flags.11?string\"},{\"name\":\"raise_hand_rating\",\"type\":\"flags.13?long\"},{\"name\":\"video\",\"type\":\"flags.6?GroupCallParticipantVideo\"},{\"name\":\"presentation\",\"type\":\"flags.14?GroupCallParticipantVideo\"}],\"type\":\"GroupCallParticipant\"},{\"id\":-124097970,\"predicate\":\"updateChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"}],\"type\":\"Update\"},{\"id\":-219423922,\"predicate\":\"updateGroupCallParticipants\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"participants\",\"type\":\"Vector<GroupCallParticipant>\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":347227392,\"predicate\":\"updateGroupCall\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"call\",\"type\":\"GroupCall\"}],\"type\":\"Update\"},{\"id\":-1636664659,\"predicate\":\"phone.groupCall\",\"params\":[{\"name\":\"call\",\"type\":\"GroupCall\"},{\"name\":\"participants\",\"type\":\"Vector<GroupCallParticipant>\"},{\"name\":\"participants_next_offset\",\"type\":\"string\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"phone.GroupCall\"},{\"id\":-193506890,\"predicate\":\"phone.groupParticipants\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"participants\",\"type\":\"Vector<GroupCallParticipant>\"},{\"name\":\"next_offset\",\"type\":\"string\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"version\",\"type\":\"int\"}],\"type\":\"phone.GroupParticipants\"},{\"id\":813821341,\"predicate\":\"inlineQueryPeerTypeSameBotPM\",\"params\":[],\"type\":\"InlineQueryPeerType\"},{\"id\":-2093215828,\"predicate\":\"inlineQueryPeerTypePM\",\"params\":[],\"type\":\"InlineQueryPeerType\"},{\"id\":-681130742,\"predicate\":\"inlineQueryPeerTypeChat\",\"params\":[],\"type\":\"InlineQueryPeerType\"},{\"id\":1589952067,\"predicate\":\"inlineQueryPeerTypeMegagroup\",\"params\":[],\"type\":\"InlineQueryPeerType\"},{\"id\":1664413338,\"predicate\":\"inlineQueryPeerTypeBroadcast\",\"params\":[],\"type\":\"InlineQueryPeerType\"},{\"id\":589338437,\"predicate\":\"channelAdminLogEventActionStartGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-610299584,\"predicate\":\"channelAdminLogEventActionDiscardGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-115071790,\"predicate\":\"channelAdminLogEventActionParticipantMute\",\"params\":[{\"name\":\"participant\",\"type\":\"GroupCallParticipant\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-431740480,\"predicate\":\"channelAdminLogEventActionParticipantUnmute\",\"params\":[{\"name\":\"participant\",\"type\":\"GroupCallParticipant\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":1456906823,\"predicate\":\"channelAdminLogEventActionToggleGroupCallSetting\",\"params\":[{\"name\":\"join_muted\",\"type\":\"Bool\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-1966921727,\"predicate\":\"inputPaymentCredentialsGooglePay\",\"params\":[{\"name\":\"payment_token\",\"type\":\"DataJSON\"}],\"type\":\"InputPaymentCredentials\"},{\"id\":375566091,\"predicate\":\"messages.historyImport\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"messages.HistoryImport\"},{\"id\":-606432698,\"predicate\":\"sendMessageHistoryImportAction\",\"params\":[{\"name\":\"progress\",\"type\":\"int\"}],\"type\":\"SendMessageAction\"},{\"id\":1578088377,\"predicate\":\"messages.historyImportParsed\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pm\",\"type\":\"flags.0?true\"},{\"name\":\"group\",\"type\":\"flags.1?true\"},{\"name\":\"title\",\"type\":\"flags.2?string\"}],\"type\":\"messages.HistoryImportParsed\"},{\"id\":-170010905,\"predicate\":\"inputReportReasonFake\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":-275956116,\"predicate\":\"messages.affectedFoundMessages\",\"params\":[{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_count\",\"type\":\"int\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"messages\",\"type\":\"Vector<int>\"}],\"type\":\"messages.AffectedFoundMessages\"},{\"id\":-1441072131,\"predicate\":\"messageActionSetMessagesTTL\",\"params\":[{\"name\":\"period\",\"type\":\"int\"}],\"type\":\"MessageAction\"},{\"id\":-1147422299,\"predicate\":\"updatePeerHistoryTTL\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"ttl_period\",\"type\":\"flags.0?int\"}],\"type\":\"Update\"},{\"id\":-796432838,\"predicate\":\"updateChatParticipant\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"actor_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"prev_participant\",\"type\":\"flags.0?ChatParticipant\"},{\"name\":\"new_participant\",\"type\":\"flags.1?ChatParticipant\"},{\"name\":\"invite\",\"type\":\"flags.2?ExportedChatInvite\"},{\"name\":\"qts\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-1738720581,\"predicate\":\"updateChannelParticipant\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"channel_id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"actor_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"prev_participant\",\"type\":\"flags.0?ChannelParticipant\"},{\"name\":\"new_participant\",\"type\":\"flags.1?ChannelParticipant\"},{\"name\":\"invite\",\"type\":\"flags.2?ExportedChatInvite\"},{\"name\":\"qts\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-997782967,\"predicate\":\"updateBotStopped\",\"params\":[{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"stopped\",\"type\":\"Bool\"},{\"name\":\"qts\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-1940201511,\"predicate\":\"chatInviteImporter\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"requested\",\"type\":\"flags.0?true\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"about\",\"type\":\"flags.2?string\"},{\"name\":\"approved_by\",\"type\":\"flags.1?long\"}],\"type\":\"ChatInviteImporter\"},{\"id\":-1111085620,\"predicate\":\"messages.exportedChatInvites\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"invites\",\"type\":\"Vector<ExportedChatInvite>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.ExportedChatInvites\"},{\"id\":410107472,\"predicate\":\"messages.exportedChatInvite\",\"params\":[{\"name\":\"invite\",\"type\":\"ExportedChatInvite\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.ExportedChatInvite\"},{\"id\":572915951,\"predicate\":\"messages.exportedChatInviteReplaced\",\"params\":[{\"name\":\"invite\",\"type\":\"ExportedChatInvite\"},{\"name\":\"new_invite\",\"type\":\"ExportedChatInvite\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.ExportedChatInvite\"},{\"id\":-2118733814,\"predicate\":\"messages.chatInviteImporters\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"importers\",\"type\":\"Vector<ChatInviteImporter>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.ChatInviteImporters\"},{\"id\":-219353309,\"predicate\":\"chatAdminWithInvites\",\"params\":[{\"name\":\"admin_id\",\"type\":\"long\"},{\"name\":\"invites_count\",\"type\":\"int\"},{\"name\":\"revoked_invites_count\",\"type\":\"int\"}],\"type\":\"ChatAdminWithInvites\"},{\"id\":-1231326505,\"predicate\":\"messages.chatAdminsWithInvites\",\"params\":[{\"name\":\"admins\",\"type\":\"Vector<ChatAdminWithInvites>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.ChatAdminsWithInvites\"},{\"id\":1557846647,\"predicate\":\"channelAdminLogEventActionParticipantJoinByInvite\",\"params\":[{\"name\":\"invite\",\"type\":\"ExportedChatInvite\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":1515256996,\"predicate\":\"channelAdminLogEventActionExportedInviteDelete\",\"params\":[{\"name\":\"invite\",\"type\":\"ExportedChatInvite\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":1091179342,\"predicate\":\"channelAdminLogEventActionExportedInviteRevoke\",\"params\":[{\"name\":\"invite\",\"type\":\"ExportedChatInvite\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-384910503,\"predicate\":\"channelAdminLogEventActionExportedInviteEdit\",\"params\":[{\"name\":\"prev_invite\",\"type\":\"ExportedChatInvite\"},{\"name\":\"new_invite\",\"type\":\"ExportedChatInvite\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":1048537159,\"predicate\":\"channelAdminLogEventActionParticipantVolume\",\"params\":[{\"name\":\"participant\",\"type\":\"GroupCallParticipant\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":1855199800,\"predicate\":\"channelAdminLogEventActionChangeHistoryTTL\",\"params\":[{\"name\":\"prev_value\",\"type\":\"int\"},{\"name\":\"new_value\",\"type\":\"int\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-1571952873,\"predicate\":\"messages.checkedHistoryImportPeer\",\"params\":[{\"name\":\"confirm_text\",\"type\":\"string\"}],\"type\":\"messages.CheckedHistoryImportPeer\"},{\"id\":93890858,\"predicate\":\"inputGroupCallStream\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"time_ms\",\"type\":\"long\"},{\"name\":\"scale\",\"type\":\"int\"},{\"name\":\"video_channel\",\"type\":\"flags.0?int\"},{\"name\":\"video_quality\",\"type\":\"flags.0?int\"}],\"type\":\"InputFileLocation\"},{\"id\":-1343921601,\"predicate\":\"phone.joinAsPeers\",\"params\":[{\"name\":\"peers\",\"type\":\"Vector<Peer>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"phone.JoinAsPeers\"},{\"id\":541839704,\"predicate\":\"phone.exportedGroupCallInvite\",\"params\":[{\"name\":\"link\",\"type\":\"string\"}],\"type\":\"phone.ExportedGroupCallInvite\"},{\"id\":-672693723,\"predicate\":\"inputBotInlineMessageMediaInvoice\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"description\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"flags.0?InputWebDocument\"},{\"name\":\"invoice\",\"type\":\"Invoice\"},{\"name\":\"payload\",\"type\":\"bytes\"},{\"name\":\"provider\",\"type\":\"string\"},{\"name\":\"provider_data\",\"type\":\"DataJSON\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"InputBotInlineMessage\"},{\"id\":894081801,\"predicate\":\"botInlineMessageMediaInvoice\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"shipping_address_requested\",\"type\":\"flags.1?true\"},{\"name\":\"test\",\"type\":\"flags.3?true\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"description\",\"type\":\"string\"},{\"name\":\"photo\",\"type\":\"flags.0?WebDocument\"},{\"name\":\"currency\",\"type\":\"string\"},{\"name\":\"total_amount\",\"type\":\"long\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"}],\"type\":\"BotInlineMessage\"},{\"id\":-1281329567,\"predicate\":\"messageActionGroupCallScheduled\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"schedule_date\",\"type\":\"int\"}],\"type\":\"MessageAction\"},{\"id\":-592373577,\"predicate\":\"groupCallParticipantVideoSourceGroup\",\"params\":[{\"name\":\"semantics\",\"type\":\"string\"},{\"name\":\"sources\",\"type\":\"Vector<int>\"}],\"type\":\"GroupCallParticipantVideoSourceGroup\"},{\"id\":1735736008,\"predicate\":\"groupCallParticipantVideo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"paused\",\"type\":\"flags.0?true\"},{\"name\":\"endpoint\",\"type\":\"string\"},{\"name\":\"source_groups\",\"type\":\"Vector<GroupCallParticipantVideoSourceGroup>\"},{\"name\":\"audio_source\",\"type\":\"flags.1?int\"}],\"type\":\"GroupCallParticipantVideo\"},{\"id\":192428418,\"predicate\":\"updateGroupCallConnection\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"presentation\",\"type\":\"flags.0?true\"},{\"name\":\"params\",\"type\":\"DataJSON\"}],\"type\":\"Update\"},{\"id\":-2046910401,\"predicate\":\"stickers.suggestedShortName\",\"params\":[{\"name\":\"short_name\",\"type\":\"string\"}],\"type\":\"stickers.SuggestedShortName\"},{\"id\":795652779,\"predicate\":\"botCommandScopeDefault\",\"params\":[],\"type\":\"BotCommandScope\"},{\"id\":1011811544,\"predicate\":\"botCommandScopeUsers\",\"params\":[],\"type\":\"BotCommandScope\"},{\"id\":1877059713,\"predicate\":\"botCommandScopeChats\",\"params\":[],\"type\":\"BotCommandScope\"},{\"id\":-1180016534,\"predicate\":\"botCommandScopeChatAdmins\",\"params\":[],\"type\":\"BotCommandScope\"},{\"id\":-610432643,\"predicate\":\"botCommandScopePeer\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"BotCommandScope\"},{\"id\":1071145937,\"predicate\":\"botCommandScopePeerAdmins\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"BotCommandScope\"},{\"id\":169026035,\"predicate\":\"botCommandScopePeerUser\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"BotCommandScope\"},{\"id\":-478701471,\"predicate\":\"account.resetPasswordFailedWait\",\"params\":[{\"name\":\"retry_date\",\"type\":\"int\"}],\"type\":\"account.ResetPasswordResult\"},{\"id\":-370148227,\"predicate\":\"account.resetPasswordRequestedWait\",\"params\":[{\"name\":\"until_date\",\"type\":\"int\"}],\"type\":\"account.ResetPasswordResult\"},{\"id\":-383330754,\"predicate\":\"account.resetPasswordOk\",\"params\":[],\"type\":\"account.ResetPasswordResult\"},{\"id\":1299263278,\"predicate\":\"updateBotCommands\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"bot_id\",\"type\":\"long\"},{\"name\":\"commands\",\"type\":\"Vector<BotCommand>\"}],\"type\":\"Update\"},{\"id\":-1434950843,\"predicate\":\"messageActionSetChatTheme\",\"params\":[{\"name\":\"emoticon\",\"type\":\"string\"}],\"type\":\"MessageAction\"},{\"id\":-1336228175,\"predicate\":\"sendMessageChooseStickerAction\",\"params\":[],\"type\":\"SendMessageAction\"},{\"id\":981691896,\"predicate\":\"sponsoredMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"random_id\",\"type\":\"bytes\"},{\"name\":\"from_id\",\"type\":\"flags.3?Peer\"},{\"name\":\"chat_invite\",\"type\":\"flags.4?ChatInvite\"},{\"name\":\"chat_invite_hash\",\"type\":\"flags.4?string\"},{\"name\":\"channel_post\",\"type\":\"flags.2?int\"},{\"name\":\"start_param\",\"type\":\"flags.0?string\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.1?Vector<MessageEntity>\"}],\"type\":\"SponsoredMessage\"},{\"id\":1705297877,\"predicate\":\"messages.sponsoredMessages\",\"params\":[{\"name\":\"messages\",\"type\":\"Vector<SponsoredMessage>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.SponsoredMessages\"},{\"id\":215889721,\"predicate\":\"inputStickerSetAnimatedEmojiAnimations\",\"params\":[],\"type\":\"InputStickerSet\"},{\"id\":630664139,\"predicate\":\"sendMessageEmojiInteraction\",\"params\":[{\"name\":\"emoticon\",\"type\":\"string\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"interaction\",\"type\":\"DataJSON\"}],\"type\":\"SendMessageAction\"},{\"id\":-1234857938,\"predicate\":\"sendMessageEmojiInteractionSeen\",\"params\":[{\"name\":\"emoticon\",\"type\":\"string\"}],\"type\":\"SendMessageAction\"},{\"id\":-1227287081,\"predicate\":\"inputBotInlineMessageID64\",\"params\":[{\"name\":\"dc_id\",\"type\":\"int\"},{\"name\":\"owner_id\",\"type\":\"long\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"access_hash\",\"type\":\"long\"}],\"type\":\"InputBotInlineMessageID\"},{\"id\":-911191137,\"predicate\":\"searchResultsCalendarPeriod\",\"params\":[{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"min_msg_id\",\"type\":\"int\"},{\"name\":\"max_msg_id\",\"type\":\"int\"},{\"name\":\"count\",\"type\":\"int\"}],\"type\":\"SearchResultsCalendarPeriod\"},{\"id\":343859772,\"predicate\":\"messages.searchResultsCalendar\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"inexact\",\"type\":\"flags.0?true\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"min_date\",\"type\":\"int\"},{\"name\":\"min_msg_id\",\"type\":\"int\"},{\"name\":\"offset_id_offset\",\"type\":\"flags.1?int\"},{\"name\":\"periods\",\"type\":\"Vector<SearchResultsCalendarPeriod>\"},{\"name\":\"messages\",\"type\":\"Vector<Message>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.SearchResultsCalendar\"},{\"id\":2137295719,\"predicate\":\"searchResultPosition\",\"params\":[{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"offset\",\"type\":\"int\"}],\"type\":\"SearchResultsPosition\"},{\"id\":1404185519,\"predicate\":\"messages.searchResultsPositions\",\"params\":[{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"positions\",\"type\":\"Vector<SearchResultsPosition>\"}],\"type\":\"messages.SearchResultsPositions\"},{\"id\":-339958837,\"predicate\":\"messageActionChatJoinedByRequest\",\"params\":[],\"type\":\"MessageAction\"},{\"id\":1885586395,\"predicate\":\"updatePendingJoinRequests\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"requests_pending\",\"type\":\"int\"},{\"name\":\"recent_requesters\",\"type\":\"Vector<long>\"}],\"type\":\"Update\"},{\"id\":299870598,\"predicate\":\"updateBotChatInviteRequester\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"long\"},{\"name\":\"about\",\"type\":\"string\"},{\"name\":\"invite\",\"type\":\"ExportedChatInvite\"},{\"name\":\"qts\",\"type\":\"int\"}],\"type\":\"Update\"},{\"id\":-1347021750,\"predicate\":\"channelAdminLogEventActionParticipantJoinByRequest\",\"params\":[{\"name\":\"invite\",\"type\":\"ExportedChatInvite\"},{\"name\":\"approved_by\",\"type\":\"long\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-376962181,\"predicate\":\"inputKeyboardButtonUserProfile\",\"params\":[{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"KeyboardButton\"},{\"id\":814112961,\"predicate\":\"keyboardButtonUserProfile\",\"params\":[{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"user_id\",\"type\":\"long\"}],\"type\":\"KeyboardButton\"},{\"id\":-2091463255,\"predicate\":\"channels.sendAsPeers\",\"params\":[{\"name\":\"peers\",\"type\":\"Vector<Peer>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"channels.SendAsPeers\"},{\"id\":-886388890,\"predicate\":\"channelAdminLogEventActionToggleNoForwards\",\"params\":[{\"name\":\"new_value\",\"type\":\"Bool\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-738646805,\"predicate\":\"messages.stickerSetNotModified\",\"params\":[],\"type\":\"messages.StickerSet\"},{\"id\":997004590,\"predicate\":\"users.userFull\",\"params\":[{\"name\":\"full_user\",\"type\":\"UserFull\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"users.UserFull\"},{\"id\":1753266509,\"predicate\":\"messages.peerSettings\",\"params\":[{\"name\":\"settings\",\"type\":\"PeerSettings\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"messages.PeerSettings\"},{\"id\":663693416,\"predicate\":\"channelAdminLogEventActionSendMessage\",\"params\":[{\"name\":\"message\",\"type\":\"Message\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":-702884114,\"predicate\":\"auth.codeTypeMissedCall\",\"params\":[],\"type\":\"auth.CodeType\"},{\"id\":-2113903484,\"predicate\":\"auth.sentCodeTypeMissedCall\",\"params\":[{\"name\":\"prefix\",\"type\":\"string\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"auth.SentCodeType\"},{\"id\":-1012759713,\"predicate\":\"auth.loggedOut\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"future_auth_token\",\"type\":\"flags.0?bytes\"}],\"type\":\"auth.LoggedOut\"},{\"id\":357013699,\"predicate\":\"updateMessageReactions\",\"params\":[{\"name\":\"peer\",\"type\":\"Peer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"reactions\",\"type\":\"MessageReactions\"}],\"type\":\"Update\"},{\"id\":1873957073,\"predicate\":\"reactionCount\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"chosen\",\"type\":\"flags.0?true\"},{\"name\":\"reaction\",\"type\":\"string\"},{\"name\":\"count\",\"type\":\"int\"}],\"type\":\"ReactionCount\"},{\"id\":1328256121,\"predicate\":\"messageReactions\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"min\",\"type\":\"flags.0?true\"},{\"name\":\"can_see_list\",\"type\":\"flags.2?true\"},{\"name\":\"results\",\"type\":\"Vector<ReactionCount>\"},{\"name\":\"recent_reactions\",\"type\":\"flags.1?Vector<MessagePeerReaction>\"}],\"type\":\"MessageReactions\"},{\"id\":834488621,\"predicate\":\"messages.messageReactionsList\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"count\",\"type\":\"int\"},{\"name\":\"reactions\",\"type\":\"Vector<MessagePeerReaction>\"},{\"name\":\"chats\",\"type\":\"Vector<Chat>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"},{\"name\":\"next_offset\",\"type\":\"flags.0?string\"}],\"type\":\"messages.MessageReactionsList\"},{\"id\":-1065882623,\"predicate\":\"availableReaction\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"inactive\",\"type\":\"flags.0?true\"},{\"name\":\"reaction\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"static_icon\",\"type\":\"Document\"},{\"name\":\"appear_animation\",\"type\":\"Document\"},{\"name\":\"select_animation\",\"type\":\"Document\"},{\"name\":\"activate_animation\",\"type\":\"Document\"},{\"name\":\"effect_animation\",\"type\":\"Document\"},{\"name\":\"around_animation\",\"type\":\"flags.1?Document\"},{\"name\":\"center_icon\",\"type\":\"flags.1?Document\"}],\"type\":\"AvailableReaction\"},{\"id\":-1626924713,\"predicate\":\"messages.availableReactionsNotModified\",\"params\":[],\"type\":\"messages.AvailableReactions\"},{\"id\":1989032621,\"predicate\":\"messages.availableReactions\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"},{\"name\":\"reactions\",\"type\":\"Vector<AvailableReaction>\"}],\"type\":\"messages.AvailableReactions\"},{\"id\":852137487,\"predicate\":\"messageEntitySpoiler\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"length\",\"type\":\"int\"}],\"type\":\"MessageEntity\"},{\"id\":-1661470870,\"predicate\":\"channelAdminLogEventActionChangeAvailableReactions\",\"params\":[{\"name\":\"prev_value\",\"type\":\"Vector<string>\"},{\"name\":\"new_value\",\"type\":\"Vector<string>\"}],\"type\":\"ChannelAdminLogEventAction\"},{\"id\":1741309751,\"predicate\":\"messages.translateNoResult\",\"params\":[],\"type\":\"messages.TranslatedText\"},{\"id\":-1575684144,\"predicate\":\"messages.translateResultText\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"messages.TranslatedText\"},{\"id\":1370914559,\"predicate\":\"messagePeerReaction\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"big\",\"type\":\"flags.0?true\"},{\"name\":\"unread\",\"type\":\"flags.1?true\"},{\"name\":\"peer_id\",\"type\":\"Peer\"},{\"name\":\"reaction\",\"type\":\"string\"}],\"type\":\"MessagePeerReaction\"},{\"id\":-2132064081,\"predicate\":\"groupCallStreamChannel\",\"params\":[{\"name\":\"channel\",\"type\":\"int\"},{\"name\":\"scale\",\"type\":\"int\"},{\"name\":\"last_timestamp_ms\",\"type\":\"long\"}],\"type\":\"GroupCallStreamChannel\"},{\"id\":-790330702,\"predicate\":\"phone.groupCallStreamChannels\",\"params\":[{\"name\":\"channels\",\"type\":\"Vector<GroupCallStreamChannel>\"}],\"type\":\"phone.GroupCallStreamChannels\"},{\"id\":177124030,\"predicate\":\"inputReportReasonIllegalDrugs\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":-1631091139,\"predicate\":\"inputReportReasonPersonalDetails\",\"params\":[],\"type\":\"ReportReason\"},{\"id\":767505458,\"predicate\":\"phone.groupCallStreamRtmpUrl\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"key\",\"type\":\"string\"}],\"type\":\"phone.GroupCallStreamRtmpUrl\"},{\"id\":1165423600,\"predicate\":\"attachMenuBotIconColor\",\"params\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"color\",\"type\":\"int\"}],\"type\":\"AttachMenuBotIconColor\"},{\"id\":-1297663893,\"predicate\":\"attachMenuBotIcon\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"icon\",\"type\":\"Document\"},{\"name\":\"colors\",\"type\":\"flags.0?Vector<AttachMenuBotIconColor>\"}],\"type\":\"AttachMenuBotIcon\"},{\"id\":-381896846,\"predicate\":\"attachMenuBot\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"inactive\",\"type\":\"flags.0?true\"},{\"name\":\"bot_id\",\"type\":\"long\"},{\"name\":\"short_name\",\"type\":\"string\"},{\"name\":\"icons\",\"type\":\"Vector<AttachMenuBotIcon>\"}],\"type\":\"AttachMenuBot\"},{\"id\":-237467044,\"predicate\":\"attachMenuBotsNotModified\",\"params\":[],\"type\":\"AttachMenuBots\"},{\"id\":1011024320,\"predicate\":\"attachMenuBots\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"bots\",\"type\":\"Vector<AttachMenuBot>\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"AttachMenuBots\"},{\"id\":-1816172929,\"predicate\":\"attachMenuBotsBot\",\"params\":[{\"name\":\"bot\",\"type\":\"AttachMenuBot\"},{\"name\":\"users\",\"type\":\"Vector<User>\"}],\"type\":\"AttachMenuBotsBot\"},{\"id\":397910539,\"predicate\":\"updateAttachMenuBots\",\"params\":[],\"type\":\"Update\"},{\"id\":202659196,\"predicate\":\"webViewResultUrl\",\"params\":[{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"WebViewResult\"},{\"id\":-2010155333,\"predicate\":\"simpleWebViewResultUrl\",\"params\":[{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"SimpleWebViewResult\"},{\"id\":211046684,\"predicate\":\"webViewMessageSent\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"msg_id\",\"type\":\"flags.0?InputBotInlineMessageID\"}],\"type\":\"WebViewMessageSent\"},{\"id\":361936797,\"predicate\":\"updateWebViewResultSent\",\"params\":[{\"name\":\"query_id\",\"type\":\"long\"}],\"type\":\"Update\"},{\"id\":326529584,\"predicate\":\"keyboardButtonWebView\",\"params\":[{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":-1598009252,\"predicate\":\"keyboardButtonSimpleWebView\",\"params\":[{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"KeyboardButton\"},{\"id\":1205698681,\"predicate\":\"messageActionWebViewDataSentMe\",\"params\":[{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"data\",\"type\":\"string\"}],\"type\":\"MessageAction\"},{\"id\":-1262252875,\"predicate\":\"messageActionWebViewDataSent\",\"params\":[{\"name\":\"text\",\"type\":\"string\"}],\"type\":\"MessageAction\"},{\"id\":347625491,\"predicate\":\"updateBotMenuButton\",\"params\":[{\"name\":\"bot_id\",\"type\":\"long\"},{\"name\":\"button\",\"type\":\"BotMenuButton\"}],\"type\":\"Update\"},{\"id\":1966318984,\"predicate\":\"botMenuButtonDefault\",\"params\":[],\"type\":\"BotMenuButton\"},{\"id\":1113113093,\"predicate\":\"botMenuButtonCommands\",\"params\":[],\"type\":\"BotMenuButton\"},{\"id\":-944407322,\"predicate\":\"botMenuButton\",\"params\":[{\"name\":\"text\",\"type\":\"string\"},{\"name\":\"url\",\"type\":\"string\"}],\"type\":\"BotMenuButton\"},{\"id\":-67704655,\"predicate\":\"account.savedRingtonesNotModified\",\"params\":[],\"type\":\"account.SavedRingtones\"},{\"id\":-1041683259,\"predicate\":\"account.savedRingtones\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"ringtones\",\"type\":\"Vector<Document>\"}],\"type\":\"account.SavedRingtones\"},{\"id\":1960361625,\"predicate\":\"updateSavedRingtones\",\"params\":[],\"type\":\"Update\"},{\"id\":-1746354498,\"predicate\":\"notificationSoundDefault\",\"params\":[],\"type\":\"NotificationSound\"},{\"id\":1863070943,\"predicate\":\"notificationSoundNone\",\"params\":[],\"type\":\"NotificationSound\"},{\"id\":-2096391452,\"predicate\":\"notificationSoundLocal\",\"params\":[{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"data\",\"type\":\"string\"}],\"type\":\"NotificationSound\"},{\"id\":-9666487,\"predicate\":\"notificationSoundRingtone\",\"params\":[{\"name\":\"id\",\"type\":\"long\"}],\"type\":\"NotificationSound\"},{\"id\":-1222230163,\"predicate\":\"account.savedRingtone\",\"params\":[],\"type\":\"account.SavedRingtone\"},{\"id\":523271863,\"predicate\":\"account.savedRingtoneConverted\",\"params\":[{\"name\":\"document\",\"type\":\"Document\"}],\"type\":\"account.SavedRingtone\"}],\"methods\":[{\"id\":-878758099,\"method\":\"invokeAfterMsg\",\"params\":[{\"name\":\"msg_id\",\"type\":\"long\"},{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":1036301552,\"method\":\"invokeAfterMsgs\",\"params\":[{\"name\":\"msg_ids\",\"type\":\"Vector<long>\"},{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":-1502141361,\"method\":\"auth.sendCode\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"api_id\",\"type\":\"int\"},{\"name\":\"api_hash\",\"type\":\"string\"},{\"name\":\"settings\",\"type\":\"CodeSettings\"}],\"type\":\"auth.SentCode\"},{\"id\":-2131827673,\"method\":\"auth.signUp\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"}],\"type\":\"auth.Authorization\"},{\"id\":-1126886015,\"method\":\"auth.signIn\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"},{\"name\":\"phone_code\",\"type\":\"string\"}],\"type\":\"auth.Authorization\"},{\"id\":1047706137,\"method\":\"auth.logOut\",\"params\":[],\"type\":\"auth.LoggedOut\"},{\"id\":-1616179942,\"method\":\"auth.resetAuthorizations\",\"params\":[],\"type\":\"Bool\"},{\"id\":-440401971,\"method\":\"auth.exportAuthorization\",\"params\":[{\"name\":\"dc_id\",\"type\":\"int\"}],\"type\":\"auth.ExportedAuthorization\"},{\"id\":-1518699091,\"method\":\"auth.importAuthorization\",\"params\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"auth.Authorization\"},{\"id\":-841733627,\"method\":\"auth.bindTempAuthKey\",\"params\":[{\"name\":\"perm_auth_key_id\",\"type\":\"long\"},{\"name\":\"nonce\",\"type\":\"long\"},{\"name\":\"expires_at\",\"type\":\"int\"},{\"name\":\"encrypted_message\",\"type\":\"bytes\"}],\"type\":\"Bool\"},{\"id\":-326762118,\"method\":\"account.registerDevice\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_muted\",\"type\":\"flags.0?true\"},{\"name\":\"token_type\",\"type\":\"int\"},{\"name\":\"token\",\"type\":\"string\"},{\"name\":\"app_sandbox\",\"type\":\"Bool\"},{\"name\":\"secret\",\"type\":\"bytes\"},{\"name\":\"other_uids\",\"type\":\"Vector<long>\"}],\"type\":\"Bool\"},{\"id\":1779249670,\"method\":\"account.unregisterDevice\",\"params\":[{\"name\":\"token_type\",\"type\":\"int\"},{\"name\":\"token\",\"type\":\"string\"},{\"name\":\"other_uids\",\"type\":\"Vector<long>\"}],\"type\":\"Bool\"},{\"id\":-2067899501,\"method\":\"account.updateNotifySettings\",\"params\":[{\"name\":\"peer\",\"type\":\"InputNotifyPeer\"},{\"name\":\"settings\",\"type\":\"InputPeerNotifySettings\"}],\"type\":\"Bool\"},{\"id\":313765169,\"method\":\"account.getNotifySettings\",\"params\":[{\"name\":\"peer\",\"type\":\"InputNotifyPeer\"}],\"type\":\"PeerNotifySettings\"},{\"id\":-612493497,\"method\":\"account.resetNotifySettings\",\"params\":[],\"type\":\"Bool\"},{\"id\":2018596725,\"method\":\"account.updateProfile\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"first_name\",\"type\":\"flags.0?string\"},{\"name\":\"last_name\",\"type\":\"flags.1?string\"},{\"name\":\"about\",\"type\":\"flags.2?string\"}],\"type\":\"User\"},{\"id\":1713919532,\"method\":\"account.updateStatus\",\"params\":[{\"name\":\"offline\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":127302966,\"method\":\"account.getWallPapers\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"account.WallPapers\"},{\"id\":-977650298,\"method\":\"account.reportPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"reason\",\"type\":\"ReportReason\"},{\"name\":\"message\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":227648840,\"method\":\"users.getUsers\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<InputUser>\"}],\"type\":\"Vector<User>\"},{\"id\":-1240508136,\"method\":\"users.getFullUser\",\"params\":[{\"name\":\"id\",\"type\":\"InputUser\"}],\"type\":\"users.UserFull\"},{\"id\":2061264541,\"method\":\"contacts.getContactIDs\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"Vector<int>\"},{\"id\":-995929106,\"method\":\"contacts.getStatuses\",\"params\":[],\"type\":\"Vector<ContactStatus>\"},{\"id\":1574346258,\"method\":\"contacts.getContacts\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"contacts.Contacts\"},{\"id\":746589157,\"method\":\"contacts.importContacts\",\"params\":[{\"name\":\"contacts\",\"type\":\"Vector<InputContact>\"}],\"type\":\"contacts.ImportedContacts\"},{\"id\":157945344,\"method\":\"contacts.deleteContacts\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<InputUser>\"}],\"type\":\"Updates\"},{\"id\":269745566,\"method\":\"contacts.deleteByPhones\",\"params\":[{\"name\":\"phones\",\"type\":\"Vector<string>\"}],\"type\":\"Bool\"},{\"id\":1758204945,\"method\":\"contacts.block\",\"params\":[{\"name\":\"id\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":-1096393392,\"method\":\"contacts.unblock\",\"params\":[{\"name\":\"id\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":-176409329,\"method\":\"contacts.getBlocked\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"contacts.Blocked\"},{\"id\":1673946374,\"method\":\"messages.getMessages\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<InputMessage>\"}],\"type\":\"messages.Messages\"},{\"id\":-1594569905,\"method\":\"messages.getDialogs\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"exclude_pinned\",\"type\":\"flags.0?true\"},{\"name\":\"folder_id\",\"type\":\"flags.1?int\"},{\"name\":\"offset_date\",\"type\":\"int\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"offset_peer\",\"type\":\"InputPeer\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.Dialogs\"},{\"id\":1143203525,\"method\":\"messages.getHistory\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"offset_date\",\"type\":\"int\"},{\"name\":\"add_offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"min_id\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.Messages\"},{\"id\":-1593989278,\"method\":\"messages.search\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"q\",\"type\":\"string\"},{\"name\":\"from_id\",\"type\":\"flags.0?InputPeer\"},{\"name\":\"top_msg_id\",\"type\":\"flags.1?int\"},{\"name\":\"filter\",\"type\":\"MessagesFilter\"},{\"name\":\"min_date\",\"type\":\"int\"},{\"name\":\"max_date\",\"type\":\"int\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"add_offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"min_id\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.Messages\"},{\"id\":238054714,\"method\":\"messages.readHistory\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"max_id\",\"type\":\"int\"}],\"type\":\"messages.AffectedMessages\"},{\"id\":-1332768214,\"method\":\"messages.deleteHistory\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"just_clear\",\"type\":\"flags.0?true\"},{\"name\":\"revoke\",\"type\":\"flags.1?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"min_date\",\"type\":\"flags.2?int\"},{\"name\":\"max_date\",\"type\":\"flags.3?int\"}],\"type\":\"messages.AffectedHistory\"},{\"id\":-443640366,\"method\":\"messages.deleteMessages\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"revoke\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"messages.AffectedMessages\"},{\"id\":94983360,\"method\":\"messages.receivedMessages\",\"params\":[{\"name\":\"max_id\",\"type\":\"int\"}],\"type\":\"Vector<ReceivedNotifyMessage>\"},{\"id\":1486110434,\"method\":\"messages.setTyping\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"top_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"action\",\"type\":\"SendMessageAction\"}],\"type\":\"Bool\"},{\"id\":228423076,\"method\":\"messages.sendMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.1?true\"},{\"name\":\"silent\",\"type\":\"flags.5?true\"},{\"name\":\"background\",\"type\":\"flags.6?true\"},{\"name\":\"clear_draft\",\"type\":\"flags.7?true\"},{\"name\":\"noforwards\",\"type\":\"flags.14?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"},{\"name\":\"schedule_date\",\"type\":\"flags.10?int\"},{\"name\":\"send_as\",\"type\":\"flags.13?InputPeer\"}],\"type\":\"Updates\"},{\"id\":-497026848,\"method\":\"messages.sendMedia\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.5?true\"},{\"name\":\"background\",\"type\":\"flags.6?true\"},{\"name\":\"clear_draft\",\"type\":\"flags.7?true\"},{\"name\":\"noforwards\",\"type\":\"flags.14?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"media\",\"type\":\"InputMedia\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"},{\"name\":\"schedule_date\",\"type\":\"flags.10?int\"},{\"name\":\"send_as\",\"type\":\"flags.13?InputPeer\"}],\"type\":\"Updates\"},{\"id\":-869258997,\"method\":\"messages.forwardMessages\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.5?true\"},{\"name\":\"background\",\"type\":\"flags.6?true\"},{\"name\":\"with_my_score\",\"type\":\"flags.8?true\"},{\"name\":\"drop_author\",\"type\":\"flags.11?true\"},{\"name\":\"drop_media_captions\",\"type\":\"flags.12?true\"},{\"name\":\"noforwards\",\"type\":\"flags.14?true\"},{\"name\":\"from_peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"},{\"name\":\"random_id\",\"type\":\"Vector<long>\"},{\"name\":\"to_peer\",\"type\":\"InputPeer\"},{\"name\":\"schedule_date\",\"type\":\"flags.10?int\"},{\"name\":\"send_as\",\"type\":\"flags.13?InputPeer\"}],\"type\":\"Updates\"},{\"id\":-820669733,\"method\":\"messages.reportSpam\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":-270948702,\"method\":\"messages.getPeerSettings\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"messages.PeerSettings\"},{\"id\":-1991005362,\"method\":\"messages.report\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"},{\"name\":\"reason\",\"type\":\"ReportReason\"},{\"name\":\"message\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":1240027791,\"method\":\"messages.getChats\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<long>\"}],\"type\":\"messages.Chats\"},{\"id\":-1364194508,\"method\":\"messages.getFullChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"}],\"type\":\"messages.ChatFull\"},{\"id\":1937260541,\"method\":\"messages.editChatTitle\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":903730804,\"method\":\"messages.editChatPhoto\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"photo\",\"type\":\"InputChatPhoto\"}],\"type\":\"Updates\"},{\"id\":-230206493,\"method\":\"messages.addChatUser\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"fwd_limit\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":-1575461717,\"method\":\"messages.deleteChatUser\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"revoke_history\",\"type\":\"flags.0?true\"},{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"Updates\"},{\"id\":164303470,\"method\":\"messages.createChat\",\"params\":[{\"name\":\"users\",\"type\":\"Vector<InputUser>\"},{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":-304838614,\"method\":\"updates.getState\",\"params\":[],\"type\":\"updates.State\"},{\"id\":630429265,\"method\":\"updates.getDifference\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"pts_total_limit\",\"type\":\"flags.0?int\"},{\"name\":\"date\",\"type\":\"int\"},{\"name\":\"qts\",\"type\":\"int\"}],\"type\":\"updates.Difference\"},{\"id\":1926525996,\"method\":\"photos.updateProfilePhoto\",\"params\":[{\"name\":\"id\",\"type\":\"InputPhoto\"}],\"type\":\"photos.Photo\"},{\"id\":-1980559511,\"method\":\"photos.uploadProfilePhoto\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"file\",\"type\":\"flags.0?InputFile\"},{\"name\":\"video\",\"type\":\"flags.1?InputFile\"},{\"name\":\"video_start_ts\",\"type\":\"flags.2?double\"}],\"type\":\"photos.Photo\"},{\"id\":-2016444625,\"method\":\"photos.deletePhotos\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<InputPhoto>\"}],\"type\":\"Vector<long>\"},{\"id\":-1291540959,\"method\":\"upload.saveFilePart\",\"params\":[{\"name\":\"file_id\",\"type\":\"long\"},{\"name\":\"file_part\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"Bool\"},{\"id\":-1319462148,\"method\":\"upload.getFile\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"precise\",\"type\":\"flags.0?true\"},{\"name\":\"cdn_supported\",\"type\":\"flags.1?true\"},{\"name\":\"location\",\"type\":\"InputFileLocation\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"upload.File\"},{\"id\":-990308245,\"method\":\"help.getConfig\",\"params\":[],\"type\":\"Config\"},{\"id\":531836966,\"method\":\"help.getNearestDc\",\"params\":[],\"type\":\"NearestDc\"},{\"id\":1378703997,\"method\":\"help.getAppUpdate\",\"params\":[{\"name\":\"source\",\"type\":\"string\"}],\"type\":\"help.AppUpdate\"},{\"id\":1295590211,\"method\":\"help.getInviteText\",\"params\":[],\"type\":\"help.InviteText\"},{\"id\":-1848823128,\"method\":\"photos.getUserPhotos\",\"params\":[{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"long\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"photos.Photos\"},{\"id\":651135312,\"method\":\"messages.getDhConfig\",\"params\":[{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"random_length\",\"type\":\"int\"}],\"type\":\"messages.DhConfig\"},{\"id\":-162681021,\"method\":\"messages.requestEncryption\",\"params\":[{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"random_id\",\"type\":\"int\"},{\"name\":\"g_a\",\"type\":\"bytes\"}],\"type\":\"EncryptedChat\"},{\"id\":1035731989,\"method\":\"messages.acceptEncryption\",\"params\":[{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"g_b\",\"type\":\"bytes\"},{\"name\":\"key_fingerprint\",\"type\":\"long\"}],\"type\":\"EncryptedChat\"},{\"id\":-208425312,\"method\":\"messages.discardEncryption\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"delete_history\",\"type\":\"flags.0?true\"},{\"name\":\"chat_id\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":2031374829,\"method\":\"messages.setEncryptedTyping\",\"params\":[{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"typing\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":2135648522,\"method\":\"messages.readEncryptedHistory\",\"params\":[{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"max_date\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":1157265941,\"method\":\"messages.sendEncrypted\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"type\":\"messages.SentEncryptedMessage\"},{\"id\":1431914525,\"method\":\"messages.sendEncryptedFile\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"bytes\"},{\"name\":\"file\",\"type\":\"InputEncryptedFile\"}],\"type\":\"messages.SentEncryptedMessage\"},{\"id\":852769188,\"method\":\"messages.sendEncryptedService\",\"params\":[{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"type\":\"messages.SentEncryptedMessage\"},{\"id\":1436924774,\"method\":\"messages.receivedQueue\",\"params\":[{\"name\":\"max_qts\",\"type\":\"int\"}],\"type\":\"Vector<long>\"},{\"id\":1259113487,\"method\":\"messages.reportEncryptedSpam\",\"params\":[{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"}],\"type\":\"Bool\"},{\"id\":-562337987,\"method\":\"upload.saveBigFilePart\",\"params\":[{\"name\":\"file_id\",\"type\":\"long\"},{\"name\":\"file_part\",\"type\":\"int\"},{\"name\":\"file_total_parts\",\"type\":\"int\"},{\"name\":\"bytes\",\"type\":\"bytes\"}],\"type\":\"Bool\"},{\"id\":-1043505495,\"method\":\"initConnection\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"api_id\",\"type\":\"int\"},{\"name\":\"device_model\",\"type\":\"string\"},{\"name\":\"system_version\",\"type\":\"string\"},{\"name\":\"app_version\",\"type\":\"string\"},{\"name\":\"system_lang_code\",\"type\":\"string\"},{\"name\":\"lang_pack\",\"type\":\"string\"},{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"proxy\",\"type\":\"flags.0?InputClientProxy\"},{\"name\":\"params\",\"type\":\"flags.1?JSONValue\"},{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":-1663104819,\"method\":\"help.getSupport\",\"params\":[],\"type\":\"help.Support\"},{\"id\":916930423,\"method\":\"messages.readMessageContents\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"messages.AffectedMessages\"},{\"id\":655677548,\"method\":\"account.checkUsername\",\"params\":[{\"name\":\"username\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":1040964988,\"method\":\"account.updateUsername\",\"params\":[{\"name\":\"username\",\"type\":\"string\"}],\"type\":\"User\"},{\"id\":301470424,\"method\":\"contacts.search\",\"params\":[{\"name\":\"q\",\"type\":\"string\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"contacts.Found\"},{\"id\":-623130288,\"method\":\"account.getPrivacy\",\"params\":[{\"name\":\"key\",\"type\":\"InputPrivacyKey\"}],\"type\":\"account.PrivacyRules\"},{\"id\":-906486552,\"method\":\"account.setPrivacy\",\"params\":[{\"name\":\"key\",\"type\":\"InputPrivacyKey\"},{\"name\":\"rules\",\"type\":\"Vector<InputPrivacyRule>\"}],\"type\":\"account.PrivacyRules\"},{\"id\":1099779595,\"method\":\"account.deleteAccount\",\"params\":[{\"name\":\"reason\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":150761757,\"method\":\"account.getAccountTTL\",\"params\":[],\"type\":\"AccountDaysTTL\"},{\"id\":608323678,\"method\":\"account.setAccountTTL\",\"params\":[{\"name\":\"ttl\",\"type\":\"AccountDaysTTL\"}],\"type\":\"Bool\"},{\"id\":-627372787,\"method\":\"invokeWithLayer\",\"params\":[{\"name\":\"layer\",\"type\":\"int\"},{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":-113456221,\"method\":\"contacts.resolveUsername\",\"params\":[{\"name\":\"username\",\"type\":\"string\"}],\"type\":\"contacts.ResolvedPeer\"},{\"id\":-2108208411,\"method\":\"account.sendChangePhoneCode\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"settings\",\"type\":\"CodeSettings\"}],\"type\":\"auth.SentCode\"},{\"id\":1891839707,\"method\":\"account.changePhone\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"},{\"name\":\"phone_code\",\"type\":\"string\"}],\"type\":\"User\"},{\"id\":-710552671,\"method\":\"messages.getStickers\",\"params\":[{\"name\":\"emoticon\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.Stickers\"},{\"id\":-1197432408,\"method\":\"messages.getAllStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.AllStickers\"},{\"id\":954152242,\"method\":\"account.updateDeviceLocked\",\"params\":[{\"name\":\"period\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":1738800940,\"method\":\"auth.importBotAuthorization\",\"params\":[{\"name\":\"flags\",\"type\":\"int\"},{\"name\":\"api_id\",\"type\":\"int\"},{\"name\":\"api_hash\",\"type\":\"string\"},{\"name\":\"bot_auth_token\",\"type\":\"string\"}],\"type\":\"auth.Authorization\"},{\"id\":-1956073268,\"method\":\"messages.getWebPagePreview\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"}],\"type\":\"MessageMedia\"},{\"id\":-484392616,\"method\":\"account.getAuthorizations\",\"params\":[],\"type\":\"account.Authorizations\"},{\"id\":-545786948,\"method\":\"account.resetAuthorization\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"Bool\"},{\"id\":1418342645,\"method\":\"account.getPassword\",\"params\":[],\"type\":\"account.Password\"},{\"id\":-1663767815,\"method\":\"account.getPasswordSettings\",\"params\":[{\"name\":\"password\",\"type\":\"InputCheckPasswordSRP\"}],\"type\":\"account.PasswordSettings\"},{\"id\":-1516564433,\"method\":\"account.updatePasswordSettings\",\"params\":[{\"name\":\"password\",\"type\":\"InputCheckPasswordSRP\"},{\"name\":\"new_settings\",\"type\":\"account.PasswordInputSettings\"}],\"type\":\"Bool\"},{\"id\":-779399914,\"method\":\"auth.checkPassword\",\"params\":[{\"name\":\"password\",\"type\":\"InputCheckPasswordSRP\"}],\"type\":\"auth.Authorization\"},{\"id\":-661144474,\"method\":\"auth.requestPasswordRecovery\",\"params\":[],\"type\":\"auth.PasswordRecovery\"},{\"id\":923364464,\"method\":\"auth.recoverPassword\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"code\",\"type\":\"string\"},{\"name\":\"new_settings\",\"type\":\"flags.0?account.PasswordInputSettings\"}],\"type\":\"auth.Authorization\"},{\"id\":-1080796745,\"method\":\"invokeWithoutUpdates\",\"params\":[{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":-1607670315,\"method\":\"messages.exportChatInvite\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"legacy_revoke_permanent\",\"type\":\"flags.2?true\"},{\"name\":\"request_needed\",\"type\":\"flags.3?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"expire_date\",\"type\":\"flags.0?int\"},{\"name\":\"usage_limit\",\"type\":\"flags.1?int\"},{\"name\":\"title\",\"type\":\"flags.4?string\"}],\"type\":\"ExportedChatInvite\"},{\"id\":1051570619,\"method\":\"messages.checkChatInvite\",\"params\":[{\"name\":\"hash\",\"type\":\"string\"}],\"type\":\"ChatInvite\"},{\"id\":1817183516,\"method\":\"messages.importChatInvite\",\"params\":[{\"name\":\"hash\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":-928977804,\"method\":\"messages.getStickerSet\",\"params\":[{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.StickerSet\"},{\"id\":-946871200,\"method\":\"messages.installStickerSet\",\"params\":[{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"},{\"name\":\"archived\",\"type\":\"Bool\"}],\"type\":\"messages.StickerSetInstallResult\"},{\"id\":-110209570,\"method\":\"messages.uninstallStickerSet\",\"params\":[{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"}],\"type\":\"Bool\"},{\"id\":-421563528,\"method\":\"messages.startBot\",\"params\":[{\"name\":\"bot\",\"type\":\"InputUser\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"start_param\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":-1877938321,\"method\":\"help.getAppChangelog\",\"params\":[{\"name\":\"prev_app_version\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":1468322785,\"method\":\"messages.getMessagesViews\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"},{\"name\":\"increment\",\"type\":\"Bool\"}],\"type\":\"messages.MessageViews\"},{\"id\":-871347913,\"method\":\"channels.readHistory\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"max_id\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":-2067661490,\"method\":\"channels.deleteMessages\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"messages.AffectedMessages\"},{\"id\":-196443371,\"method\":\"channels.reportSpam\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"participant\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"Bool\"},{\"id\":-1383294429,\"method\":\"channels.getMessages\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"id\",\"type\":\"Vector<InputMessage>\"}],\"type\":\"messages.Messages\"},{\"id\":2010044880,\"method\":\"channels.getParticipants\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"filter\",\"type\":\"ChannelParticipantsFilter\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"channels.ChannelParticipants\"},{\"id\":-1599378234,\"method\":\"channels.getParticipant\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"participant\",\"type\":\"InputPeer\"}],\"type\":\"channels.ChannelParticipant\"},{\"id\":176122811,\"method\":\"channels.getChannels\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<InputChannel>\"}],\"type\":\"messages.Chats\"},{\"id\":141781513,\"method\":\"channels.getFullChannel\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"messages.ChatFull\"},{\"id\":1029681423,\"method\":\"channels.createChannel\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"broadcast\",\"type\":\"flags.0?true\"},{\"name\":\"megagroup\",\"type\":\"flags.1?true\"},{\"name\":\"for_import\",\"type\":\"flags.3?true\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"about\",\"type\":\"string\"},{\"name\":\"geo_point\",\"type\":\"flags.2?InputGeoPoint\"},{\"name\":\"address\",\"type\":\"flags.2?string\"}],\"type\":\"Updates\"},{\"id\":-751007486,\"method\":\"channels.editAdmin\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"admin_rights\",\"type\":\"ChatAdminRights\"},{\"name\":\"rank\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":1450044624,\"method\":\"channels.editTitle\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":-248621111,\"method\":\"channels.editPhoto\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"photo\",\"type\":\"InputChatPhoto\"}],\"type\":\"Updates\"},{\"id\":283557164,\"method\":\"channels.checkUsername\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"username\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":890549214,\"method\":\"channels.updateUsername\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"username\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":615851205,\"method\":\"channels.joinChannel\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"Updates\"},{\"id\":-130635115,\"method\":\"channels.leaveChannel\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"Updates\"},{\"id\":429865580,\"method\":\"channels.inviteToChannel\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"users\",\"type\":\"Vector<InputUser>\"}],\"type\":\"Updates\"},{\"id\":-1072619549,\"method\":\"channels.deleteChannel\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"Updates\"},{\"id\":51854712,\"method\":\"updates.getChannelDifference\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"force\",\"type\":\"flags.0?true\"},{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"filter\",\"type\":\"ChannelMessagesFilter\"},{\"name\":\"pts\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"updates.ChannelDifference\"},{\"id\":-1470377534,\"method\":\"messages.editChatAdmin\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"is_admin\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":-1568189671,\"method\":\"messages.migrateChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"}],\"type\":\"Updates\"},{\"id\":1271290010,\"method\":\"messages.searchGlobal\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"folder_id\",\"type\":\"flags.0?int\"},{\"name\":\"q\",\"type\":\"string\"},{\"name\":\"filter\",\"type\":\"MessagesFilter\"},{\"name\":\"min_date\",\"type\":\"int\"},{\"name\":\"max_date\",\"type\":\"int\"},{\"name\":\"offset_rate\",\"type\":\"int\"},{\"name\":\"offset_peer\",\"type\":\"InputPeer\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":2016638777,\"method\":\"messages.reorderStickerSets\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"masks\",\"type\":\"flags.0?true\"},{\"name\":\"order\",\"type\":\"Vector<long>\"}],\"type\":\"Bool\"},{\"id\":864953444,\"method\":\"messages.getDocumentByHash\",\"params\":[{\"name\":\"sha256\",\"type\":\"bytes\"},{\"name\":\"size\",\"type\":\"int\"},{\"name\":\"mime_type\",\"type\":\"string\"}],\"type\":\"Document\"},{\"id\":1559270965,\"method\":\"messages.getSavedGifs\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.SavedGifs\"},{\"id\":846868683,\"method\":\"messages.saveGif\",\"params\":[{\"name\":\"id\",\"type\":\"InputDocument\"},{\"name\":\"unsave\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":1364105629,\"method\":\"messages.getInlineBotResults\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"bot\",\"type\":\"InputUser\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"geo_point\",\"type\":\"flags.0?InputGeoPoint\"},{\"name\":\"query\",\"type\":\"string\"},{\"name\":\"offset\",\"type\":\"string\"}],\"type\":\"messages.BotResults\"},{\"id\":-346119674,\"method\":\"messages.setInlineBotResults\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"gallery\",\"type\":\"flags.0?true\"},{\"name\":\"private\",\"type\":\"flags.1?true\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"results\",\"type\":\"Vector<InputBotInlineResult>\"},{\"name\":\"cache_time\",\"type\":\"int\"},{\"name\":\"next_offset\",\"type\":\"flags.2?string\"},{\"name\":\"switch_pm\",\"type\":\"flags.3?InlineBotSwitchPM\"}],\"type\":\"Bool\"},{\"id\":2057376407,\"method\":\"messages.sendInlineBotResult\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.5?true\"},{\"name\":\"background\",\"type\":\"flags.6?true\"},{\"name\":\"clear_draft\",\"type\":\"flags.7?true\"},{\"name\":\"hide_via\",\"type\":\"flags.11?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"schedule_date\",\"type\":\"flags.10?int\"},{\"name\":\"send_as\",\"type\":\"flags.13?InputPeer\"}],\"type\":\"Updates\"},{\"id\":-432034325,\"method\":\"channels.exportMessageLink\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"grouped\",\"type\":\"flags.0?true\"},{\"name\":\"thread\",\"type\":\"flags.1?true\"},{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"ExportedMessageLink\"},{\"id\":527021574,\"method\":\"channels.toggleSignatures\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"enabled\",\"type\":\"Bool\"}],\"type\":\"Updates\"},{\"id\":1056025023,\"method\":\"auth.resendCode\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"}],\"type\":\"auth.SentCode\"},{\"id\":520357240,\"method\":\"auth.cancelCode\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":-39416522,\"method\":\"messages.getMessageEditData\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"messages.MessageEditData\"},{\"id\":1224152952,\"method\":\"messages.editMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.1?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"message\",\"type\":\"flags.11?string\"},{\"name\":\"media\",\"type\":\"flags.14?InputMedia\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"},{\"name\":\"schedule_date\",\"type\":\"flags.15?int\"}],\"type\":\"Updates\"},{\"id\":-2091549254,\"method\":\"messages.editInlineBotMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.1?true\"},{\"name\":\"id\",\"type\":\"InputBotInlineMessageID\"},{\"name\":\"message\",\"type\":\"flags.11?string\"},{\"name\":\"media\",\"type\":\"flags.14?InputMedia\"},{\"name\":\"reply_markup\",\"type\":\"flags.2?ReplyMarkup\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"}],\"type\":\"Bool\"},{\"id\":-1824339449,\"method\":\"messages.getBotCallbackAnswer\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"game\",\"type\":\"flags.1?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"data\",\"type\":\"flags.0?bytes\"},{\"name\":\"password\",\"type\":\"flags.2?InputCheckPasswordSRP\"}],\"type\":\"messages.BotCallbackAnswer\"},{\"id\":-712043766,\"method\":\"messages.setBotCallbackAnswer\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"alert\",\"type\":\"flags.1?true\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"message\",\"type\":\"flags.0?string\"},{\"name\":\"url\",\"type\":\"flags.2?string\"},{\"name\":\"cache_time\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":-1758168906,\"method\":\"contacts.getTopPeers\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"correspondents\",\"type\":\"flags.0?true\"},{\"name\":\"bots_pm\",\"type\":\"flags.1?true\"},{\"name\":\"bots_inline\",\"type\":\"flags.2?true\"},{\"name\":\"phone_calls\",\"type\":\"flags.3?true\"},{\"name\":\"forward_users\",\"type\":\"flags.4?true\"},{\"name\":\"forward_chats\",\"type\":\"flags.5?true\"},{\"name\":\"groups\",\"type\":\"flags.10?true\"},{\"name\":\"channels\",\"type\":\"flags.15?true\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"contacts.TopPeers\"},{\"id\":451113900,\"method\":\"contacts.resetTopPeerRating\",\"params\":[{\"name\":\"category\",\"type\":\"TopPeerCategory\"},{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":-462373635,\"method\":\"messages.getPeerDialogs\",\"params\":[{\"name\":\"peers\",\"type\":\"Vector<InputDialogPeer>\"}],\"type\":\"messages.PeerDialogs\"},{\"id\":-1137057461,\"method\":\"messages.saveDraft\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"no_webpage\",\"type\":\"flags.1?true\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"flags.3?Vector<MessageEntity>\"}],\"type\":\"Bool\"},{\"id\":1782549861,\"method\":\"messages.getAllDrafts\",\"params\":[],\"type\":\"Updates\"},{\"id\":1685588756,\"method\":\"messages.getFeaturedStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.FeaturedStickers\"},{\"id\":1527873830,\"method\":\"messages.readFeaturedStickers\",\"params\":[{\"name\":\"id\",\"type\":\"Vector<long>\"}],\"type\":\"Bool\"},{\"id\":-1649852357,\"method\":\"messages.getRecentStickers\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"attached\",\"type\":\"flags.0?true\"},{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.RecentStickers\"},{\"id\":958863608,\"method\":\"messages.saveRecentSticker\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"attached\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"InputDocument\"},{\"name\":\"unsave\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":-1986437075,\"method\":\"messages.clearRecentStickers\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"attached\",\"type\":\"flags.0?true\"}],\"type\":\"Bool\"},{\"id\":1475442322,\"method\":\"messages.getArchivedStickers\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"masks\",\"type\":\"flags.0?true\"},{\"name\":\"offset_id\",\"type\":\"long\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.ArchivedStickers\"},{\"id\":457157256,\"method\":\"account.sendConfirmPhoneCode\",\"params\":[{\"name\":\"hash\",\"type\":\"string\"},{\"name\":\"settings\",\"type\":\"CodeSettings\"}],\"type\":\"auth.SentCode\"},{\"id\":1596029123,\"method\":\"account.confirmPhone\",\"params\":[{\"name\":\"phone_code_hash\",\"type\":\"string\"},{\"name\":\"phone_code\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":-122669393,\"method\":\"channels.getAdminedPublicChannels\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"by_location\",\"type\":\"flags.0?true\"},{\"name\":\"check_limit\",\"type\":\"flags.1?true\"}],\"type\":\"messages.Chats\"},{\"id\":1678738104,\"method\":\"messages.getMaskStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.AllStickers\"},{\"id\":-866424884,\"method\":\"messages.getAttachedStickers\",\"params\":[{\"name\":\"media\",\"type\":\"InputStickeredMedia\"}],\"type\":\"Vector<StickerSetCovered>\"},{\"id\":-1907842680,\"method\":\"auth.dropTempAuthKeys\",\"params\":[{\"name\":\"except_auth_keys\",\"type\":\"Vector<long>\"}],\"type\":\"Bool\"},{\"id\":-1896289088,\"method\":\"messages.setGameScore\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"edit_message\",\"type\":\"flags.0?true\"},{\"name\":\"force\",\"type\":\"flags.1?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"score\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":363700068,\"method\":\"messages.setInlineGameScore\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"edit_message\",\"type\":\"flags.0?true\"},{\"name\":\"force\",\"type\":\"flags.1?true\"},{\"name\":\"id\",\"type\":\"InputBotInlineMessageID\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"score\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":-400399203,\"method\":\"messages.getGameHighScores\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"messages.HighScores\"},{\"id\":258170395,\"method\":\"messages.getInlineGameHighScores\",\"params\":[{\"name\":\"id\",\"type\":\"InputBotInlineMessageID\"},{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"messages.HighScores\"},{\"id\":-468934396,\"method\":\"messages.getCommonChats\",\"params\":[{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"max_id\",\"type\":\"long\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.Chats\"},{\"id\":-2023787330,\"method\":\"messages.getAllChats\",\"params\":[{\"name\":\"except_ids\",\"type\":\"Vector<long>\"}],\"type\":\"messages.Chats\"},{\"id\":-333262899,\"method\":\"help.setBotUpdatesStatus\",\"params\":[{\"name\":\"pending_updates_count\",\"type\":\"int\"},{\"name\":\"message\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":852135825,\"method\":\"messages.getWebPage\",\"params\":[{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"WebPage\"},{\"id\":-1489903017,\"method\":\"messages.toggleDialogPin\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"pinned\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputDialogPeer\"}],\"type\":\"Bool\"},{\"id\":991616823,\"method\":\"messages.reorderPinnedDialogs\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"force\",\"type\":\"flags.0?true\"},{\"name\":\"folder_id\",\"type\":\"int\"},{\"name\":\"order\",\"type\":\"Vector<InputDialogPeer>\"}],\"type\":\"Bool\"},{\"id\":-692498958,\"method\":\"messages.getPinnedDialogs\",\"params\":[{\"name\":\"folder_id\",\"type\":\"int\"}],\"type\":\"messages.PeerDialogs\"},{\"id\":-1440257555,\"method\":\"bots.sendCustomRequest\",\"params\":[{\"name\":\"custom_method\",\"type\":\"string\"},{\"name\":\"params\",\"type\":\"DataJSON\"}],\"type\":\"DataJSON\"},{\"id\":-434028723,\"method\":\"bots.answerWebhookJSONQuery\",\"params\":[{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"data\",\"type\":\"DataJSON\"}],\"type\":\"Bool\"},{\"id\":619086221,\"method\":\"upload.getWebFile\",\"params\":[{\"name\":\"location\",\"type\":\"InputWebFileLocation\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"upload.WebFile\"},{\"id\":-1976353651,\"method\":\"payments.getPaymentForm\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"theme_params\",\"type\":\"flags.0?DataJSON\"}],\"type\":\"payments.PaymentForm\"},{\"id\":611897804,\"method\":\"payments.getPaymentReceipt\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"payments.PaymentReceipt\"},{\"id\":-619695760,\"method\":\"payments.validateRequestedInfo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"save\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"info\",\"type\":\"PaymentRequestedInfo\"}],\"type\":\"payments.ValidatedRequestedInfo\"},{\"id\":818134173,\"method\":\"payments.sendPaymentForm\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"form_id\",\"type\":\"long\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"requested_info_id\",\"type\":\"flags.0?string\"},{\"name\":\"shipping_option_id\",\"type\":\"flags.1?string\"},{\"name\":\"credentials\",\"type\":\"InputPaymentCredentials\"},{\"name\":\"tip_amount\",\"type\":\"flags.2?long\"}],\"type\":\"payments.PaymentResult\"},{\"id\":1151208273,\"method\":\"account.getTmpPassword\",\"params\":[{\"name\":\"password\",\"type\":\"InputCheckPasswordSRP\"},{\"name\":\"period\",\"type\":\"int\"}],\"type\":\"account.TmpPassword\"},{\"id\":578650699,\"method\":\"payments.getSavedInfo\",\"params\":[],\"type\":\"payments.SavedInfo\"},{\"id\":-667062079,\"method\":\"payments.clearSavedInfo\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"credentials\",\"type\":\"flags.0?true\"},{\"name\":\"info\",\"type\":\"flags.1?true\"}],\"type\":\"Bool\"},{\"id\":-436833542,\"method\":\"messages.setBotShippingResults\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"error\",\"type\":\"flags.0?string\"},{\"name\":\"shipping_options\",\"type\":\"flags.1?Vector<ShippingOption>\"}],\"type\":\"Bool\"},{\"id\":163765653,\"method\":\"messages.setBotPrecheckoutResults\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"success\",\"type\":\"flags.1?true\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"error\",\"type\":\"flags.0?string\"}],\"type\":\"Bool\"},{\"id\":-1876841625,\"method\":\"stickers.createStickerSet\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"masks\",\"type\":\"flags.0?true\"},{\"name\":\"animated\",\"type\":\"flags.1?true\"},{\"name\":\"videos\",\"type\":\"flags.4?true\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"short_name\",\"type\":\"string\"},{\"name\":\"thumb\",\"type\":\"flags.2?InputDocument\"},{\"name\":\"stickers\",\"type\":\"Vector<InputStickerSetItem>\"},{\"name\":\"software\",\"type\":\"flags.3?string\"}],\"type\":\"messages.StickerSet\"},{\"id\":-143257775,\"method\":\"stickers.removeStickerFromSet\",\"params\":[{\"name\":\"sticker\",\"type\":\"InputDocument\"}],\"type\":\"messages.StickerSet\"},{\"id\":-4795190,\"method\":\"stickers.changeStickerPosition\",\"params\":[{\"name\":\"sticker\",\"type\":\"InputDocument\"},{\"name\":\"position\",\"type\":\"int\"}],\"type\":\"messages.StickerSet\"},{\"id\":-2041315650,\"method\":\"stickers.addStickerToSet\",\"params\":[{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"},{\"name\":\"sticker\",\"type\":\"InputStickerSetItem\"}],\"type\":\"messages.StickerSet\"},{\"id\":1369162417,\"method\":\"messages.uploadMedia\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"media\",\"type\":\"InputMedia\"}],\"type\":\"MessageMedia\"},{\"id\":1430593449,\"method\":\"phone.getCallConfig\",\"params\":[],\"type\":\"DataJSON\"},{\"id\":1124046573,\"method\":\"phone.requestCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"video\",\"type\":\"flags.0?true\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"random_id\",\"type\":\"int\"},{\"name\":\"g_a_hash\",\"type\":\"bytes\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"}],\"type\":\"phone.PhoneCall\"},{\"id\":1003664544,\"method\":\"phone.acceptCall\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPhoneCall\"},{\"name\":\"g_b\",\"type\":\"bytes\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"}],\"type\":\"phone.PhoneCall\"},{\"id\":788404002,\"method\":\"phone.confirmCall\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPhoneCall\"},{\"name\":\"g_a\",\"type\":\"bytes\"},{\"name\":\"key_fingerprint\",\"type\":\"long\"},{\"name\":\"protocol\",\"type\":\"PhoneCallProtocol\"}],\"type\":\"phone.PhoneCall\"},{\"id\":399855457,\"method\":\"phone.receivedCall\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPhoneCall\"}],\"type\":\"Bool\"},{\"id\":-1295269440,\"method\":\"phone.discardCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"video\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputPhoneCall\"},{\"name\":\"duration\",\"type\":\"int\"},{\"name\":\"reason\",\"type\":\"PhoneCallDiscardReason\"},{\"name\":\"connection_id\",\"type\":\"long\"}],\"type\":\"Updates\"},{\"id\":1508562471,\"method\":\"phone.setCallRating\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"user_initiative\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputPhoneCall\"},{\"name\":\"rating\",\"type\":\"int\"},{\"name\":\"comment\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":662363518,\"method\":\"phone.saveCallDebug\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPhoneCall\"},{\"name\":\"debug\",\"type\":\"DataJSON\"}],\"type\":\"Bool\"},{\"id\":536919235,\"method\":\"upload.getCdnFile\",\"params\":[{\"name\":\"file_token\",\"type\":\"bytes\"},{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"upload.CdnFile\"},{\"id\":-1691921240,\"method\":\"upload.reuploadCdnFile\",\"params\":[{\"name\":\"file_token\",\"type\":\"bytes\"},{\"name\":\"request_token\",\"type\":\"bytes\"}],\"type\":\"Vector<FileHash>\"},{\"id\":1375900482,\"method\":\"help.getCdnConfig\",\"params\":[],\"type\":\"CdnConfig\"},{\"id\":-219008246,\"method\":\"langpack.getLangPack\",\"params\":[{\"name\":\"lang_pack\",\"type\":\"string\"},{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"LangPackDifference\"},{\"id\":-269862909,\"method\":\"langpack.getStrings\",\"params\":[{\"name\":\"lang_pack\",\"type\":\"string\"},{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"keys\",\"type\":\"Vector<string>\"}],\"type\":\"Vector<LangPackString>\"},{\"id\":-845657435,\"method\":\"langpack.getDifference\",\"params\":[{\"name\":\"lang_pack\",\"type\":\"string\"},{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"from_version\",\"type\":\"int\"}],\"type\":\"LangPackDifference\"},{\"id\":1120311183,\"method\":\"langpack.getLanguages\",\"params\":[{\"name\":\"lang_pack\",\"type\":\"string\"}],\"type\":\"Vector<LangPackLanguage>\"},{\"id\":-1763259007,\"method\":\"channels.editBanned\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"participant\",\"type\":\"InputPeer\"},{\"name\":\"banned_rights\",\"type\":\"ChatBannedRights\"}],\"type\":\"Updates\"},{\"id\":870184064,\"method\":\"channels.getAdminLog\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"q\",\"type\":\"string\"},{\"name\":\"events_filter\",\"type\":\"flags.0?ChannelAdminLogEventsFilter\"},{\"name\":\"admins\",\"type\":\"flags.1?Vector<InputUser>\"},{\"name\":\"max_id\",\"type\":\"long\"},{\"name\":\"min_id\",\"type\":\"long\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"channels.AdminLogResults\"},{\"id\":1302676017,\"method\":\"upload.getCdnFileHashes\",\"params\":[{\"name\":\"file_token\",\"type\":\"bytes\"},{\"name\":\"offset\",\"type\":\"int\"}],\"type\":\"Vector<FileHash>\"},{\"id\":-914493408,\"method\":\"messages.sendScreenshotNotification\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"reply_to_msg_id\",\"type\":\"int\"},{\"name\":\"random_id\",\"type\":\"long\"}],\"type\":\"Updates\"},{\"id\":-359881479,\"method\":\"channels.setStickers\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"}],\"type\":\"Bool\"},{\"id\":82946729,\"method\":\"messages.getFavedStickers\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.FavedStickers\"},{\"id\":-1174420133,\"method\":\"messages.faveSticker\",\"params\":[{\"name\":\"id\",\"type\":\"InputDocument\"},{\"name\":\"unfave\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":-357180360,\"method\":\"channels.readMessageContents\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"Bool\"},{\"id\":-2020263951,\"method\":\"contacts.resetSaved\",\"params\":[],\"type\":\"Bool\"},{\"id\":1180140658,\"method\":\"messages.getUnreadMentions\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"add_offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"min_id\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":-1683319225,\"method\":\"channels.deleteHistory\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"for_everyone\",\"type\":\"flags.0?true\"},{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"max_id\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":1036054804,\"method\":\"help.getRecentMeUrls\",\"params\":[{\"name\":\"referer\",\"type\":\"string\"}],\"type\":\"help.RecentMeUrls\"},{\"id\":-356796084,\"method\":\"channels.togglePreHistoryHidden\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"enabled\",\"type\":\"Bool\"}],\"type\":\"Updates\"},{\"id\":251759059,\"method\":\"messages.readMentions\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"messages.AffectedHistory\"},{\"id\":1881817312,\"method\":\"messages.getRecentLocations\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.Messages\"},{\"id\":-134016113,\"method\":\"messages.sendMultiMedia\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.5?true\"},{\"name\":\"background\",\"type\":\"flags.6?true\"},{\"name\":\"clear_draft\",\"type\":\"flags.7?true\"},{\"name\":\"noforwards\",\"type\":\"flags.14?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"multi_media\",\"type\":\"Vector<InputSingleMedia>\"},{\"name\":\"schedule_date\",\"type\":\"flags.10?int\"},{\"name\":\"send_as\",\"type\":\"flags.13?InputPeer\"}],\"type\":\"Updates\"},{\"id\":1347929239,\"method\":\"messages.uploadEncryptedFile\",\"params\":[{\"name\":\"peer\",\"type\":\"InputEncryptedChat\"},{\"name\":\"file\",\"type\":\"InputEncryptedFile\"}],\"type\":\"EncryptedFile\"},{\"id\":405695855,\"method\":\"account.getWebAuthorizations\",\"params\":[],\"type\":\"account.WebAuthorizations\"},{\"id\":755087855,\"method\":\"account.resetWebAuthorization\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"Bool\"},{\"id\":1747789204,\"method\":\"account.resetWebAuthorizations\",\"params\":[],\"type\":\"Bool\"},{\"id\":896555914,\"method\":\"messages.searchStickerSets\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"exclude_featured\",\"type\":\"flags.0?true\"},{\"name\":\"q\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.FoundStickerSets\"},{\"id\":-956147407,\"method\":\"upload.getFileHashes\",\"params\":[{\"name\":\"location\",\"type\":\"InputFileLocation\"},{\"name\":\"offset\",\"type\":\"int\"}],\"type\":\"Vector<FileHash>\"},{\"id\":749019089,\"method\":\"help.getTermsOfServiceUpdate\",\"params\":[],\"type\":\"help.TermsOfServiceUpdate\"},{\"id\":-294455398,\"method\":\"help.acceptTermsOfService\",\"params\":[{\"name\":\"id\",\"type\":\"DataJSON\"}],\"type\":\"Bool\"},{\"id\":-1299661699,\"method\":\"account.getAllSecureValues\",\"params\":[],\"type\":\"Vector<SecureValue>\"},{\"id\":1936088002,\"method\":\"account.getSecureValue\",\"params\":[{\"name\":\"types\",\"type\":\"Vector<SecureValueType>\"}],\"type\":\"Vector<SecureValue>\"},{\"id\":-1986010339,\"method\":\"account.saveSecureValue\",\"params\":[{\"name\":\"value\",\"type\":\"InputSecureValue\"},{\"name\":\"secure_secret_id\",\"type\":\"long\"}],\"type\":\"SecureValue\"},{\"id\":-1199522741,\"method\":\"account.deleteSecureValue\",\"params\":[{\"name\":\"types\",\"type\":\"Vector<SecureValueType>\"}],\"type\":\"Bool\"},{\"id\":-1865902923,\"method\":\"users.setSecureValueErrors\",\"params\":[{\"name\":\"id\",\"type\":\"InputUser\"},{\"name\":\"errors\",\"type\":\"Vector<SecureValueError>\"}],\"type\":\"Bool\"},{\"id\":-1456907910,\"method\":\"account.getAuthorizationForm\",\"params\":[{\"name\":\"bot_id\",\"type\":\"long\"},{\"name\":\"scope\",\"type\":\"string\"},{\"name\":\"public_key\",\"type\":\"string\"}],\"type\":\"account.AuthorizationForm\"},{\"id\":-202552205,\"method\":\"account.acceptAuthorization\",\"params\":[{\"name\":\"bot_id\",\"type\":\"long\"},{\"name\":\"scope\",\"type\":\"string\"},{\"name\":\"public_key\",\"type\":\"string\"},{\"name\":\"value_hashes\",\"type\":\"Vector<SecureValueHash>\"},{\"name\":\"credentials\",\"type\":\"SecureCredentialsEncrypted\"}],\"type\":\"Bool\"},{\"id\":-1516022023,\"method\":\"account.sendVerifyPhoneCode\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"settings\",\"type\":\"CodeSettings\"}],\"type\":\"auth.SentCode\"},{\"id\":1305716726,\"method\":\"account.verifyPhone\",\"params\":[{\"name\":\"phone_number\",\"type\":\"string\"},{\"name\":\"phone_code_hash\",\"type\":\"string\"},{\"name\":\"phone_code\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":1880182943,\"method\":\"account.sendVerifyEmailCode\",\"params\":[{\"name\":\"email\",\"type\":\"string\"}],\"type\":\"account.SentEmailCode\"},{\"id\":-323339813,\"method\":\"account.verifyEmail\",\"params\":[{\"name\":\"email\",\"type\":\"string\"},{\"name\":\"code\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":1072547679,\"method\":\"help.getDeepLinkInfo\",\"params\":[{\"name\":\"path\",\"type\":\"string\"}],\"type\":\"help.DeepLinkInfo\"},{\"id\":-2098076769,\"method\":\"contacts.getSaved\",\"params\":[],\"type\":\"Vector<SavedContact>\"},{\"id\":-2092831552,\"method\":\"channels.getLeftChannels\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"}],\"type\":\"messages.Chats\"},{\"id\":-262453244,\"method\":\"account.initTakeoutSession\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"contacts\",\"type\":\"flags.0?true\"},{\"name\":\"message_users\",\"type\":\"flags.1?true\"},{\"name\":\"message_chats\",\"type\":\"flags.2?true\"},{\"name\":\"message_megagroups\",\"type\":\"flags.3?true\"},{\"name\":\"message_channels\",\"type\":\"flags.4?true\"},{\"name\":\"files\",\"type\":\"flags.5?true\"},{\"name\":\"file_max_size\",\"type\":\"flags.5?int\"}],\"type\":\"account.Takeout\"},{\"id\":489050862,\"method\":\"account.finishTakeoutSession\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"success\",\"type\":\"flags.0?true\"}],\"type\":\"Bool\"},{\"id\":486505992,\"method\":\"messages.getSplitRanges\",\"params\":[],\"type\":\"Vector<MessageRange>\"},{\"id\":911373810,\"method\":\"invokeWithMessagesRange\",\"params\":[{\"name\":\"range\",\"type\":\"MessageRange\"},{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":-1398145746,\"method\":\"invokeWithTakeout\",\"params\":[{\"name\":\"takeout_id\",\"type\":\"long\"},{\"name\":\"query\",\"type\":\"!X\"}],\"type\":\"X\"},{\"id\":-1031349873,\"method\":\"messages.markDialogUnread\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"unread\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputDialogPeer\"}],\"type\":\"Bool\"},{\"id\":585256482,\"method\":\"messages.getDialogUnreadMarks\",\"params\":[],\"type\":\"Vector<DialogPeer>\"},{\"id\":-2062238246,\"method\":\"contacts.toggleTopPeers\",\"params\":[{\"name\":\"enabled\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":2119757468,\"method\":\"messages.clearAllDrafts\",\"params\":[],\"type\":\"Bool\"},{\"id\":-1735311088,\"method\":\"help.getAppConfig\",\"params\":[],\"type\":\"JSONValue\"},{\"id\":1862465352,\"method\":\"help.saveAppLog\",\"params\":[{\"name\":\"events\",\"type\":\"Vector<InputAppEvent>\"}],\"type\":\"Bool\"},{\"id\":-966677240,\"method\":\"help.getPassportConfig\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"help.PassportConfig\"},{\"id\":1784243458,\"method\":\"langpack.getLanguage\",\"params\":[{\"name\":\"lang_pack\",\"type\":\"string\"},{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"LangPackLanguage\"},{\"id\":-760547348,\"method\":\"messages.updatePinnedMessage\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.0?true\"},{\"name\":\"unpin\",\"type\":\"flags.1?true\"},{\"name\":\"pm_oneside\",\"type\":\"flags.2?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":-1881204448,\"method\":\"account.confirmPasswordEmail\",\"params\":[{\"name\":\"code\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":2055154197,\"method\":\"account.resendPasswordEmail\",\"params\":[],\"type\":\"Bool\"},{\"id\":-1043606090,\"method\":\"account.cancelPasswordEmail\",\"params\":[],\"type\":\"Bool\"},{\"id\":-748624084,\"method\":\"help.getSupportName\",\"params\":[],\"type\":\"help.SupportName\"},{\"id\":59377875,\"method\":\"help.getUserInfo\",\"params\":[{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"help.UserInfo\"},{\"id\":1723407216,\"method\":\"help.editUserInfo\",\"params\":[{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"message\",\"type\":\"string\"},{\"name\":\"entities\",\"type\":\"Vector<MessageEntity>\"}],\"type\":\"help.UserInfo\"},{\"id\":-1626880216,\"method\":\"account.getContactSignUpNotification\",\"params\":[],\"type\":\"Bool\"},{\"id\":-806076575,\"method\":\"account.setContactSignUpNotification\",\"params\":[{\"name\":\"silent\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":1398240377,\"method\":\"account.getNotifyExceptions\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"compare_sound\",\"type\":\"flags.1?true\"},{\"name\":\"peer\",\"type\":\"flags.0?InputNotifyPeer\"}],\"type\":\"Updates\"},{\"id\":283795844,\"method\":\"messages.sendVote\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"options\",\"type\":\"Vector<bytes>\"}],\"type\":\"Updates\"},{\"id\":1941660731,\"method\":\"messages.getPollResults\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":1848369232,\"method\":\"messages.getOnlines\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"ChatOnlines\"},{\"id\":-554301545,\"method\":\"messages.editChatAbout\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"about\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":-1517917375,\"method\":\"messages.editChatDefaultBannedRights\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"banned_rights\",\"type\":\"ChatBannedRights\"}],\"type\":\"Updates\"},{\"id\":-57811990,\"method\":\"account.getWallPaper\",\"params\":[{\"name\":\"wallpaper\",\"type\":\"InputWallPaper\"}],\"type\":\"WallPaper\"},{\"id\":-578472351,\"method\":\"account.uploadWallPaper\",\"params\":[{\"name\":\"file\",\"type\":\"InputFile\"},{\"name\":\"mime_type\",\"type\":\"string\"},{\"name\":\"settings\",\"type\":\"WallPaperSettings\"}],\"type\":\"WallPaper\"},{\"id\":1817860919,\"method\":\"account.saveWallPaper\",\"params\":[{\"name\":\"wallpaper\",\"type\":\"InputWallPaper\"},{\"name\":\"unsave\",\"type\":\"Bool\"},{\"name\":\"settings\",\"type\":\"WallPaperSettings\"}],\"type\":\"Bool\"},{\"id\":-18000023,\"method\":\"account.installWallPaper\",\"params\":[{\"name\":\"wallpaper\",\"type\":\"InputWallPaper\"},{\"name\":\"settings\",\"type\":\"WallPaperSettings\"}],\"type\":\"Bool\"},{\"id\":-1153722364,\"method\":\"account.resetWallPapers\",\"params\":[],\"type\":\"Bool\"},{\"id\":1457130303,\"method\":\"account.getAutoDownloadSettings\",\"params\":[],\"type\":\"account.AutoDownloadSettings\"},{\"id\":1995661875,\"method\":\"account.saveAutoDownloadSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"low\",\"type\":\"flags.0?true\"},{\"name\":\"high\",\"type\":\"flags.1?true\"},{\"name\":\"settings\",\"type\":\"AutoDownloadSettings\"}],\"type\":\"Bool\"},{\"id\":899735650,\"method\":\"messages.getEmojiKeywords\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"EmojiKeywordsDifference\"},{\"id\":352892591,\"method\":\"messages.getEmojiKeywordsDifference\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"from_version\",\"type\":\"int\"}],\"type\":\"EmojiKeywordsDifference\"},{\"id\":1318675378,\"method\":\"messages.getEmojiKeywordsLanguages\",\"params\":[{\"name\":\"lang_codes\",\"type\":\"Vector<string>\"}],\"type\":\"Vector<EmojiLanguage>\"},{\"id\":-709817306,\"method\":\"messages.getEmojiURL\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"EmojiURL\"},{\"id\":1749536939,\"method\":\"folders.editPeerFolders\",\"params\":[{\"name\":\"folder_peers\",\"type\":\"Vector<InputFolderPeer>\"}],\"type\":\"Updates\"},{\"id\":472471681,\"method\":\"folders.deleteFolder\",\"params\":[{\"name\":\"folder_id\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":1932455680,\"method\":\"messages.getSearchCounters\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"filters\",\"type\":\"Vector<MessagesFilter>\"}],\"type\":\"Vector<messages.SearchCounter>\"},{\"id\":-170208392,\"method\":\"channels.getGroupsForDiscussion\",\"params\":[],\"type\":\"messages.Chats\"},{\"id\":1079520178,\"method\":\"channels.setDiscussionGroup\",\"params\":[{\"name\":\"broadcast\",\"type\":\"InputChannel\"},{\"name\":\"group\",\"type\":\"InputChannel\"}],\"type\":\"Bool\"},{\"id\":428848198,\"method\":\"messages.requestUrlAuth\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"peer\",\"type\":\"flags.1?InputPeer\"},{\"name\":\"msg_id\",\"type\":\"flags.1?int\"},{\"name\":\"button_id\",\"type\":\"flags.1?int\"},{\"name\":\"url\",\"type\":\"flags.2?string\"}],\"type\":\"UrlAuthResult\"},{\"id\":-1322487515,\"method\":\"messages.acceptUrlAuth\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"write_allowed\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"flags.1?InputPeer\"},{\"name\":\"msg_id\",\"type\":\"flags.1?int\"},{\"name\":\"button_id\",\"type\":\"flags.1?int\"},{\"name\":\"url\",\"type\":\"flags.2?string\"}],\"type\":\"UrlAuthResult\"},{\"id\":1336717624,\"method\":\"messages.hidePeerSettingsBar\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":-386636848,\"method\":\"contacts.addContact\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"add_phone_privacy_exception\",\"type\":\"flags.0?true\"},{\"name\":\"id\",\"type\":\"InputUser\"},{\"name\":\"first_name\",\"type\":\"string\"},{\"name\":\"last_name\",\"type\":\"string\"},{\"name\":\"phone\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":-130964977,\"method\":\"contacts.acceptContact\",\"params\":[{\"name\":\"id\",\"type\":\"InputUser\"}],\"type\":\"Updates\"},{\"id\":-1892102881,\"method\":\"channels.editCreator\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"password\",\"type\":\"InputCheckPasswordSRP\"}],\"type\":\"Updates\"},{\"id\":-750207932,\"method\":\"contacts.getLocated\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"background\",\"type\":\"flags.1?true\"},{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"self_expires\",\"type\":\"flags.0?int\"}],\"type\":\"Updates\"},{\"id\":1491484525,\"method\":\"channels.editLocation\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"geo_point\",\"type\":\"InputGeoPoint\"},{\"name\":\"address\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":-304832784,\"method\":\"channels.toggleSlowMode\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"seconds\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":-183077365,\"method\":\"messages.getScheduledHistory\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.Messages\"},{\"id\":-1111817116,\"method\":\"messages.getScheduledMessages\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"messages.Messages\"},{\"id\":-1120369398,\"method\":\"messages.sendScheduledMessages\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"Updates\"},{\"id\":1504586518,\"method\":\"messages.deleteScheduledMessages\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"Updates\"},{\"id\":473805619,\"method\":\"account.uploadTheme\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"file\",\"type\":\"InputFile\"},{\"name\":\"thumb\",\"type\":\"flags.0?InputFile\"},{\"name\":\"file_name\",\"type\":\"string\"},{\"name\":\"mime_type\",\"type\":\"string\"}],\"type\":\"Document\"},{\"id\":1697530880,\"method\":\"account.createTheme\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"slug\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"document\",\"type\":\"flags.2?InputDocument\"},{\"name\":\"settings\",\"type\":\"flags.3?Vector<InputThemeSettings>\"}],\"type\":\"Theme\"},{\"id\":737414348,\"method\":\"account.updateTheme\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"format\",\"type\":\"string\"},{\"name\":\"theme\",\"type\":\"InputTheme\"},{\"name\":\"slug\",\"type\":\"flags.0?string\"},{\"name\":\"title\",\"type\":\"flags.1?string\"},{\"name\":\"document\",\"type\":\"flags.2?InputDocument\"},{\"name\":\"settings\",\"type\":\"flags.3?Vector<InputThemeSettings>\"}],\"type\":\"Theme\"},{\"id\":-229175188,\"method\":\"account.saveTheme\",\"params\":[{\"name\":\"theme\",\"type\":\"InputTheme\"},{\"name\":\"unsave\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":-953697477,\"method\":\"account.installTheme\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"dark\",\"type\":\"flags.0?true\"},{\"name\":\"theme\",\"type\":\"flags.1?InputTheme\"},{\"name\":\"format\",\"type\":\"flags.2?string\"},{\"name\":\"base_theme\",\"type\":\"flags.3?BaseTheme\"}],\"type\":\"Bool\"},{\"id\":-1919060949,\"method\":\"account.getTheme\",\"params\":[{\"name\":\"format\",\"type\":\"string\"},{\"name\":\"theme\",\"type\":\"InputTheme\"},{\"name\":\"document_id\",\"type\":\"long\"}],\"type\":\"Theme\"},{\"id\":1913054296,\"method\":\"account.getThemes\",\"params\":[{\"name\":\"format\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"account.Themes\"},{\"id\":-1210022402,\"method\":\"auth.exportLoginToken\",\"params\":[{\"name\":\"api_id\",\"type\":\"int\"},{\"name\":\"api_hash\",\"type\":\"string\"},{\"name\":\"except_ids\",\"type\":\"Vector<long>\"}],\"type\":\"auth.LoginToken\"},{\"id\":-1783866140,\"method\":\"auth.importLoginToken\",\"params\":[{\"name\":\"token\",\"type\":\"bytes\"}],\"type\":\"auth.LoginToken\"},{\"id\":-392909491,\"method\":\"auth.acceptLoginToken\",\"params\":[{\"name\":\"token\",\"type\":\"bytes\"}],\"type\":\"Authorization\"},{\"id\":-1250643605,\"method\":\"account.setContentSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"sensitive_enabled\",\"type\":\"flags.0?true\"}],\"type\":\"Bool\"},{\"id\":-1952756306,\"method\":\"account.getContentSettings\",\"params\":[],\"type\":\"account.ContentSettings\"},{\"id\":300429806,\"method\":\"channels.getInactiveChannels\",\"params\":[],\"type\":\"messages.InactiveChats\"},{\"id\":1705865692,\"method\":\"account.getMultiWallPapers\",\"params\":[{\"name\":\"wallpapers\",\"type\":\"Vector<InputWallPaper>\"}],\"type\":\"Vector<WallPaper>\"},{\"id\":-1200736242,\"method\":\"messages.getPollVotes\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"option\",\"type\":\"flags.0?bytes\"},{\"name\":\"offset\",\"type\":\"flags.1?string\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.VotesList\"},{\"id\":-1257951254,\"method\":\"messages.toggleStickerSets\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"uninstall\",\"type\":\"flags.0?true\"},{\"name\":\"archive\",\"type\":\"flags.1?true\"},{\"name\":\"unarchive\",\"type\":\"flags.2?true\"},{\"name\":\"stickersets\",\"type\":\"Vector<InputStickerSet>\"}],\"type\":\"Bool\"},{\"id\":779736953,\"method\":\"payments.getBankCardData\",\"params\":[{\"name\":\"number\",\"type\":\"string\"}],\"type\":\"payments.BankCardData\"},{\"id\":-241247891,\"method\":\"messages.getDialogFilters\",\"params\":[],\"type\":\"Vector<DialogFilter>\"},{\"id\":-1566780372,\"method\":\"messages.getSuggestedDialogFilters\",\"params\":[],\"type\":\"Vector<DialogFilterSuggested>\"},{\"id\":450142282,\"method\":\"messages.updateDialogFilter\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"filter\",\"type\":\"flags.0?DialogFilter\"}],\"type\":\"Bool\"},{\"id\":-983318044,\"method\":\"messages.updateDialogFiltersOrder\",\"params\":[{\"name\":\"order\",\"type\":\"Vector<int>\"}],\"type\":\"Bool\"},{\"id\":-1421720550,\"method\":\"stats.getBroadcastStats\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"dark\",\"type\":\"flags.0?true\"},{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"stats.BroadcastStats\"},{\"id\":1646092192,\"method\":\"stats.loadAsyncGraph\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"token\",\"type\":\"string\"},{\"name\":\"x\",\"type\":\"flags.0?long\"}],\"type\":\"StatsGraph\"},{\"id\":-1707717072,\"method\":\"stickers.setStickerSetThumb\",\"params\":[{\"name\":\"stickerset\",\"type\":\"InputStickerSet\"},{\"name\":\"thumb\",\"type\":\"InputDocument\"}],\"type\":\"messages.StickerSet\"},{\"id\":85399130,\"method\":\"bots.setBotCommands\",\"params\":[{\"name\":\"scope\",\"type\":\"BotCommandScope\"},{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"commands\",\"type\":\"Vector<BotCommand>\"}],\"type\":\"Bool\"},{\"id\":2127598753,\"method\":\"messages.getOldFeaturedStickers\",\"params\":[{\"name\":\"offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.FeaturedStickers\"},{\"id\":-1063816159,\"method\":\"help.getPromoData\",\"params\":[],\"type\":\"help.PromoData\"},{\"id\":505748629,\"method\":\"help.hidePromoData\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":-8744061,\"method\":\"phone.sendSignalingData\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPhoneCall\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"type\":\"Bool\"},{\"id\":-589330937,\"method\":\"stats.getMegagroupStats\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"dark\",\"type\":\"flags.0?true\"},{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"stats.MegagroupStats\"},{\"id\":-349483786,\"method\":\"account.getGlobalPrivacySettings\",\"params\":[],\"type\":\"GlobalPrivacySettings\"},{\"id\":517647042,\"method\":\"account.setGlobalPrivacySettings\",\"params\":[{\"name\":\"settings\",\"type\":\"GlobalPrivacySettings\"}],\"type\":\"GlobalPrivacySettings\"},{\"id\":-183649631,\"method\":\"help.dismissSuggestion\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"suggestion\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":1935116200,\"method\":\"help.getCountriesList\",\"params\":[{\"name\":\"lang_code\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"help.CountriesList\"},{\"id\":584962828,\"method\":\"messages.getReplies\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"offset_date\",\"type\":\"int\"},{\"name\":\"add_offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"min_id\",\"type\":\"int\"},{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"messages.Messages\"},{\"id\":1147761405,\"method\":\"messages.getDiscussionMessage\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"messages.DiscussionMessage\"},{\"id\":-147740172,\"method\":\"messages.readDiscussion\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"read_max_id\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":698914348,\"method\":\"contacts.blockFromReplies\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"delete_message\",\"type\":\"flags.0?true\"},{\"name\":\"delete_history\",\"type\":\"flags.1?true\"},{\"name\":\"report_spam\",\"type\":\"flags.2?true\"},{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":1445996571,\"method\":\"stats.getMessagePublicForwards\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"offset_rate\",\"type\":\"int\"},{\"name\":\"offset_peer\",\"type\":\"InputPeer\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":-1226791947,\"method\":\"stats.getMessageStats\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"dark\",\"type\":\"flags.0?true\"},{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"stats.MessageStats\"},{\"id\":-265962357,\"method\":\"messages.unpinAllMessages\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"messages.AffectedHistory\"},{\"id\":1221445336,\"method\":\"phone.createGroupCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"rtmp_stream\",\"type\":\"flags.2?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"random_id\",\"type\":\"int\"},{\"name\":\"title\",\"type\":\"flags.0?string\"},{\"name\":\"schedule_date\",\"type\":\"flags.1?int\"}],\"type\":\"Updates\"},{\"id\":-1322057861,\"method\":\"phone.joinGroupCall\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"muted\",\"type\":\"flags.0?true\"},{\"name\":\"video_stopped\",\"type\":\"flags.2?true\"},{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"join_as\",\"type\":\"InputPeer\"},{\"name\":\"invite_hash\",\"type\":\"flags.1?string\"},{\"name\":\"params\",\"type\":\"DataJSON\"}],\"type\":\"Updates\"},{\"id\":1342404601,\"method\":\"phone.leaveGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"source\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":2067345760,\"method\":\"phone.inviteToGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"users\",\"type\":\"Vector<InputUser>\"}],\"type\":\"Updates\"},{\"id\":2054648117,\"method\":\"phone.discardGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"}],\"type\":\"Updates\"},{\"id\":1958458429,\"method\":\"phone.toggleGroupCallSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"reset_invite_hash\",\"type\":\"flags.1?true\"},{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"join_muted\",\"type\":\"flags.0?Bool\"}],\"type\":\"Updates\"},{\"id\":68699611,\"method\":\"phone.getGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"phone.GroupCall\"},{\"id\":-984033109,\"method\":\"phone.getGroupParticipants\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"ids\",\"type\":\"Vector<InputPeer>\"},{\"name\":\"sources\",\"type\":\"Vector<int>\"},{\"name\":\"offset\",\"type\":\"string\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"phone.GroupParticipants\"},{\"id\":-1248003721,\"method\":\"phone.checkGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"sources\",\"type\":\"Vector<int>\"}],\"type\":\"Vector<int>\"},{\"id\":1540419152,\"method\":\"messages.deleteChat\",\"params\":[{\"name\":\"chat_id\",\"type\":\"long\"}],\"type\":\"Bool\"},{\"id\":-104078327,\"method\":\"messages.deletePhoneCallHistory\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"revoke\",\"type\":\"flags.0?true\"}],\"type\":\"messages.AffectedFoundMessages\"},{\"id\":1140726259,\"method\":\"messages.checkHistoryImport\",\"params\":[{\"name\":\"import_head\",\"type\":\"string\"}],\"type\":\"messages.HistoryImportParsed\"},{\"id\":873008187,\"method\":\"messages.initHistoryImport\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"file\",\"type\":\"InputFile\"},{\"name\":\"media_count\",\"type\":\"int\"}],\"type\":\"messages.HistoryImport\"},{\"id\":713433234,\"method\":\"messages.uploadImportedMedia\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"import_id\",\"type\":\"long\"},{\"name\":\"file_name\",\"type\":\"string\"},{\"name\":\"media\",\"type\":\"InputMedia\"}],\"type\":\"MessageMedia\"},{\"id\":-1271008444,\"method\":\"messages.startHistoryImport\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"import_id\",\"type\":\"long\"}],\"type\":\"Bool\"},{\"id\":-1565154314,\"method\":\"messages.getExportedChatInvites\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"revoked\",\"type\":\"flags.3?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"admin_id\",\"type\":\"InputUser\"},{\"name\":\"offset_date\",\"type\":\"flags.2?int\"},{\"name\":\"offset_link\",\"type\":\"flags.2?string\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.ExportedChatInvites\"},{\"id\":1937010524,\"method\":\"messages.getExportedChatInvite\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"link\",\"type\":\"string\"}],\"type\":\"messages.ExportedChatInvite\"},{\"id\":-1110823051,\"method\":\"messages.editExportedChatInvite\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"revoked\",\"type\":\"flags.2?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"link\",\"type\":\"string\"},{\"name\":\"expire_date\",\"type\":\"flags.0?int\"},{\"name\":\"usage_limit\",\"type\":\"flags.1?int\"},{\"name\":\"request_needed\",\"type\":\"flags.3?Bool\"},{\"name\":\"title\",\"type\":\"flags.4?string\"}],\"type\":\"messages.ExportedChatInvite\"},{\"id\":1452833749,\"method\":\"messages.deleteRevokedExportedChatInvites\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"admin_id\",\"type\":\"InputUser\"}],\"type\":\"Bool\"},{\"id\":-731601877,\"method\":\"messages.deleteExportedChatInvite\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"link\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":958457583,\"method\":\"messages.getAdminsWithInvites\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"messages.ChatAdminsWithInvites\"},{\"id\":-553329330,\"method\":\"messages.getChatInviteImporters\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"requested\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"link\",\"type\":\"flags.1?string\"},{\"name\":\"q\",\"type\":\"flags.2?string\"},{\"name\":\"offset_date\",\"type\":\"int\"},{\"name\":\"offset_user\",\"type\":\"InputUser\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.ChatInviteImporters\"},{\"id\":-1207017500,\"method\":\"messages.setHistoryTTL\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"period\",\"type\":\"int\"}],\"type\":\"Updates\"},{\"id\":-91437323,\"method\":\"account.reportProfilePhoto\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"photo_id\",\"type\":\"InputPhoto\"},{\"name\":\"reason\",\"type\":\"ReportReason\"},{\"name\":\"message\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":187239529,\"method\":\"channels.convertToGigagroup\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"Updates\"},{\"id\":1573261059,\"method\":\"messages.checkHistoryImportPeer\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"messages.CheckedHistoryImportPeer\"},{\"id\":-248985848,\"method\":\"phone.toggleGroupCallRecord\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"start\",\"type\":\"flags.0?true\"},{\"name\":\"video\",\"type\":\"flags.2?true\"},{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"title\",\"type\":\"flags.1?string\"},{\"name\":\"video_portrait\",\"type\":\"flags.2?Bool\"}],\"type\":\"Updates\"},{\"id\":-1524155713,\"method\":\"phone.editGroupCallParticipant\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"participant\",\"type\":\"InputPeer\"},{\"name\":\"muted\",\"type\":\"flags.0?Bool\"},{\"name\":\"volume\",\"type\":\"flags.1?int\"},{\"name\":\"raise_hand\",\"type\":\"flags.2?Bool\"},{\"name\":\"video_stopped\",\"type\":\"flags.3?Bool\"},{\"name\":\"video_paused\",\"type\":\"flags.4?Bool\"},{\"name\":\"presentation_paused\",\"type\":\"flags.5?Bool\"}],\"type\":\"Updates\"},{\"id\":480685066,\"method\":\"phone.editGroupCallTitle\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":-277077702,\"method\":\"phone.getGroupCallJoinAs\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"phone.JoinAsPeers\"},{\"id\":-425040769,\"method\":\"phone.exportGroupCallInvite\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"can_self_unmute\",\"type\":\"flags.0?true\"},{\"name\":\"call\",\"type\":\"InputGroupCall\"}],\"type\":\"phone.ExportedGroupCallInvite\"},{\"id\":563885286,\"method\":\"phone.toggleGroupCallStartSubscription\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"subscribed\",\"type\":\"Bool\"}],\"type\":\"Updates\"},{\"id\":1451287362,\"method\":\"phone.startScheduledGroupCall\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"}],\"type\":\"Updates\"},{\"id\":1465786252,\"method\":\"phone.saveDefaultGroupCallJoinAs\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"join_as\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":-873829436,\"method\":\"phone.joinGroupCallPresentation\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"},{\"name\":\"params\",\"type\":\"DataJSON\"}],\"type\":\"Updates\"},{\"id\":475058500,\"method\":\"phone.leaveGroupCallPresentation\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"}],\"type\":\"Updates\"},{\"id\":676017721,\"method\":\"stickers.checkShortName\",\"params\":[{\"name\":\"short_name\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":1303364867,\"method\":\"stickers.suggestShortName\",\"params\":[{\"name\":\"title\",\"type\":\"string\"}],\"type\":\"stickers.SuggestedShortName\"},{\"id\":1032708345,\"method\":\"bots.resetBotCommands\",\"params\":[{\"name\":\"scope\",\"type\":\"BotCommandScope\"},{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":-481554986,\"method\":\"bots.getBotCommands\",\"params\":[{\"name\":\"scope\",\"type\":\"BotCommandScope\"},{\"name\":\"lang_code\",\"type\":\"string\"}],\"type\":\"Vector<BotCommand>\"},{\"id\":-1828139493,\"method\":\"account.resetPassword\",\"params\":[],\"type\":\"account.ResetPasswordResult\"},{\"id\":1284770294,\"method\":\"account.declinePasswordReset\",\"params\":[],\"type\":\"Bool\"},{\"id\":221691769,\"method\":\"auth.checkRecoveryPassword\",\"params\":[{\"name\":\"code\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":-700916087,\"method\":\"account.getChatThemes\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"account.Themes\"},{\"id\":-432283329,\"method\":\"messages.setChatTheme\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"emoticon\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":-1095836780,\"method\":\"channels.viewSponsoredMessage\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"random_id\",\"type\":\"bytes\"}],\"type\":\"Bool\"},{\"id\":-333377601,\"method\":\"channels.getSponsoredMessages\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"}],\"type\":\"messages.SponsoredMessages\"},{\"id\":745510839,\"method\":\"messages.getMessageReadParticipants\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"}],\"type\":\"Vector<long>\"},{\"id\":1240514025,\"method\":\"messages.getSearchResultsCalendar\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"filter\",\"type\":\"MessagesFilter\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"offset_date\",\"type\":\"int\"}],\"type\":\"messages.SearchResultsCalendar\"},{\"id\":1855292323,\"method\":\"messages.getSearchResultsPositions\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"filter\",\"type\":\"MessagesFilter\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.SearchResultsPositions\"},{\"id\":2145904661,\"method\":\"messages.hideChatJoinRequest\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"approved\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"Updates\"},{\"id\":-528091926,\"method\":\"messages.hideAllChatJoinRequests\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"approved\",\"type\":\"flags.0?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"link\",\"type\":\"flags.1?string\"}],\"type\":\"Updates\"},{\"id\":-1323389022,\"method\":\"messages.toggleNoForwards\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"enabled\",\"type\":\"Bool\"}],\"type\":\"Updates\"},{\"id\":-855777386,\"method\":\"messages.saveDefaultSendAs\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"send_as\",\"type\":\"InputPeer\"}],\"type\":\"Bool\"},{\"id\":231174382,\"method\":\"channels.getSendAs\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"channels.SendAsPeers\"},{\"id\":-1081501024,\"method\":\"account.setAuthorizationTTL\",\"params\":[{\"name\":\"authorization_ttl_days\",\"type\":\"int\"}],\"type\":\"Bool\"},{\"id\":1089766498,\"method\":\"account.changeAuthorizationSettings\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"hash\",\"type\":\"long\"},{\"name\":\"encrypted_requests_disabled\",\"type\":\"flags.0?Bool\"},{\"name\":\"call_requests_disabled\",\"type\":\"flags.1?Bool\"}],\"type\":\"Bool\"},{\"id\":913655003,\"method\":\"channels.deleteParticipantHistory\",\"params\":[{\"name\":\"channel\",\"type\":\"InputChannel\"},{\"name\":\"participant\",\"type\":\"InputPeer\"}],\"type\":\"messages.AffectedHistory\"},{\"id\":627641572,\"method\":\"messages.sendReaction\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"big\",\"type\":\"flags.1?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"msg_id\",\"type\":\"int\"},{\"name\":\"reaction\",\"type\":\"flags.0?string\"}],\"type\":\"Updates\"},{\"id\":-1950707482,\"method\":\"messages.getMessagesReactions\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"Vector<int>\"}],\"type\":\"Updates\"},{\"id\":-521245833,\"method\":\"messages.getMessageReactionsList\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"reaction\",\"type\":\"flags.0?string\"},{\"name\":\"offset\",\"type\":\"flags.1?string\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.MessageReactionsList\"},{\"id\":335875750,\"method\":\"messages.setChatAvailableReactions\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"available_reactions\",\"type\":\"Vector<string>\"}],\"type\":\"Updates\"},{\"id\":417243308,\"method\":\"messages.getAvailableReactions\",\"params\":[{\"name\":\"hash\",\"type\":\"int\"}],\"type\":\"messages.AvailableReactions\"},{\"id\":-647969580,\"method\":\"messages.setDefaultReaction\",\"params\":[{\"name\":\"reaction\",\"type\":\"string\"}],\"type\":\"Bool\"},{\"id\":617508334,\"method\":\"messages.translateText\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"peer\",\"type\":\"flags.0?InputPeer\"},{\"name\":\"msg_id\",\"type\":\"flags.0?int\"},{\"name\":\"text\",\"type\":\"flags.1?string\"},{\"name\":\"from_lang\",\"type\":\"flags.2?string\"},{\"name\":\"to_lang\",\"type\":\"string\"}],\"type\":\"messages.TranslatedText\"},{\"id\":-396644838,\"method\":\"messages.getUnreadReactions\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"offset_id\",\"type\":\"int\"},{\"name\":\"add_offset\",\"type\":\"int\"},{\"name\":\"limit\",\"type\":\"int\"},{\"name\":\"max_id\",\"type\":\"int\"},{\"name\":\"min_id\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":-2099097129,\"method\":\"messages.readReactions\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"}],\"type\":\"messages.AffectedHistory\"},{\"id\":-1963375804,\"method\":\"contacts.resolvePhone\",\"params\":[{\"name\":\"phone\",\"type\":\"string\"}],\"type\":\"contacts.ResolvedPeer\"},{\"id\":447879488,\"method\":\"phone.getGroupCallStreamChannels\",\"params\":[{\"name\":\"call\",\"type\":\"InputGroupCall\"}],\"type\":\"phone.GroupCallStreamChannels\"},{\"id\":-558650433,\"method\":\"phone.getGroupCallStreamRtmpUrl\",\"params\":[{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"revoke\",\"type\":\"Bool\"}],\"type\":\"phone.GroupCallStreamRtmpUrl\"},{\"id\":276705696,\"method\":\"messages.searchSentMedia\",\"params\":[{\"name\":\"q\",\"type\":\"string\"},{\"name\":\"filter\",\"type\":\"MessagesFilter\"},{\"name\":\"limit\",\"type\":\"int\"}],\"type\":\"messages.Messages\"},{\"id\":385663691,\"method\":\"messages.getAttachMenuBots\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"AttachMenuBots\"},{\"id\":1998676370,\"method\":\"messages.getAttachMenuBot\",\"params\":[{\"name\":\"bot\",\"type\":\"InputUser\"}],\"type\":\"AttachMenuBotsBot\"},{\"id\":451818415,\"method\":\"messages.toggleBotInAttachMenu\",\"params\":[{\"name\":\"bot\",\"type\":\"InputUser\"},{\"name\":\"enabled\",\"type\":\"Bool\"}],\"type\":\"Bool\"},{\"id\":262163967,\"method\":\"messages.requestWebView\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"from_bot_menu\",\"type\":\"flags.4?true\"},{\"name\":\"silent\",\"type\":\"flags.5?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"bot\",\"type\":\"InputUser\"},{\"name\":\"url\",\"type\":\"flags.1?string\"},{\"name\":\"start_param\",\"type\":\"flags.3?string\"},{\"name\":\"theme_params\",\"type\":\"flags.2?DataJSON\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"}],\"type\":\"WebViewResult\"},{\"id\":-768945848,\"method\":\"messages.prolongWebView\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"silent\",\"type\":\"flags.5?true\"},{\"name\":\"peer\",\"type\":\"InputPeer\"},{\"name\":\"bot\",\"type\":\"InputUser\"},{\"name\":\"query_id\",\"type\":\"long\"},{\"name\":\"reply_to_msg_id\",\"type\":\"flags.0?int\"}],\"type\":\"Bool\"},{\"id\":1790652275,\"method\":\"messages.requestSimpleWebView\",\"params\":[{\"name\":\"flags\",\"type\":\"#\"},{\"name\":\"bot\",\"type\":\"InputUser\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"theme_params\",\"type\":\"flags.0?DataJSON\"}],\"type\":\"SimpleWebViewResult\"},{\"id\":172168437,\"method\":\"messages.sendWebViewResultMessage\",\"params\":[{\"name\":\"bot_query_id\",\"type\":\"string\"},{\"name\":\"result\",\"type\":\"InputBotInlineResult\"}],\"type\":\"WebViewMessageSent\"},{\"id\":-603831608,\"method\":\"messages.sendWebViewData\",\"params\":[{\"name\":\"bot\",\"type\":\"InputUser\"},{\"name\":\"random_id\",\"type\":\"long\"},{\"name\":\"button_text\",\"type\":\"string\"},{\"name\":\"data\",\"type\":\"string\"}],\"type\":\"Updates\"},{\"id\":1157944655,\"method\":\"bots.setBotMenuButton\",\"params\":[{\"name\":\"user_id\",\"type\":\"InputUser\"},{\"name\":\"button\",\"type\":\"BotMenuButton\"}],\"type\":\"Bool\"},{\"id\":-1671369944,\"method\":\"bots.getBotMenuButton\",\"params\":[{\"name\":\"user_id\",\"type\":\"InputUser\"}],\"type\":\"BotMenuButton\"},{\"id\":-510647672,\"method\":\"account.getSavedRingtones\",\"params\":[{\"name\":\"hash\",\"type\":\"long\"}],\"type\":\"account.SavedRingtones\"},{\"id\":1038768899,\"method\":\"account.saveRingtone\",\"params\":[{\"name\":\"id\",\"type\":\"InputDocument\"},{\"name\":\"unsave\",\"type\":\"Bool\"}],\"type\":\"account.SavedRingtone\"},{\"id\":-2095414366,\"method\":\"account.uploadRingtone\",\"params\":[{\"name\":\"file\",\"type\":\"InputFile\"},{\"name\":\"file_name\",\"type\":\"string\"},{\"name\":\"mime_type\",\"type\":\"string\"}],\"type\":\"Document\"},{\"id\":2021942497,\"method\":\"bots.setBotBroadcastDefaultAdminRights\",\"params\":[{\"name\":\"admin_rights\",\"type\":\"ChatAdminRights\"}],\"type\":\"Bool\"},{\"id\":-1839281686,\"method\":\"bots.setBotGroupDefaultAdminRights\",\"params\":[{\"name\":\"admin_rights\",\"type\":\"ChatAdminRights\"}],\"type\":\"Bool\"}]},\"layer\":140} as {\r\n MTProto: {\r\n constructors: MTProtoConstructor[],\r\n methods: MTProtoMethod[],\r\n constructorsIndex?: {[id: number]: number}\r\n },\r\n API: {\r\n constructors: MTProtoConstructor[],\r\n methods: MTProtoMethod[],\r\n constructorsIndex?: {[id: number]: number}\r\n },\r\n layer: number,\r\n};","export default function bytesToHex(bytes: ArrayLike<number>) {\n const length = bytes.length;\n const arr: string[] = new Array(length);\n for(let i = 0; i < length; ++i) {\n arr[i] = (bytes[i] < 16 ? '0' : '') + (bytes[i] || 0).toString(16);\n }\n return arr.join('');\n}\n","export default function isObject<T extends Record<any, any>>(object: any): object is T {\n return typeof(object) === 'object' && object !== null;\n}\n","//export function gzipUncompress(bytes: ArrayBuffer, toString: true): string;\n\n// @ts-ignore\nimport pako from 'pako/dist/pako_inflate.min.js';\n\n//export function gzipUncompress(bytes: ArrayBuffer, toString?: false): Uint8Array;\nexport default function gzipUncompress(bytes: ArrayBuffer, toString?: boolean): string | Uint8Array {\n //console.log(dT(), 'Gzip uncompress start');\n const result = pako.inflate(bytes, toString ? {to: 'string'} : undefined);\n //console.log(dT(), 'Gzip uncompress finish'/* , result */);\n return result;\n}\n","export default function intToUint(val: number) {\n // return val < 0 ? val + 4294967296 : val; // 0 <= val <= Infinity\n return val >>> 0; // (4294967296 >>> 0) === 0; 0 <= val <= 4294967295\n}\n","import bigInt from \"big-integer\";\nimport intToUint from \"../number/intToUint\";\n\nexport default function longFromInts(high: number, low: number): string {\n high = intToUint(high), low = intToUint(low);\n return bigInt(high).shiftLeft(32).add(bigInt(low)).toString(10);\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport Schema, { MTProtoConstructor } from './schema';\nimport { JSONValue } from '../../layer';\nimport { MOUNT_CLASS_TO } from '../../config/debug';\nimport bytesToHex from '../../helpers/bytes/bytesToHex';\nimport isObject from '../../helpers/object/isObject';\nimport gzipUncompress from '../../helpers/gzipUncompress';\nimport bigInt from 'big-integer';\nimport longFromInts from '../../helpers/long/longFromInts';\n\n// @ts-ignore\n/* import {BigInteger} from 'jsbn';\n\nexport function bigint(num: number) {\n return new BigInteger(num.toString(16), 16);\n}\n\nfunction bigStringInt(strNum: string) {\n return new BigInteger(strNum, 10)\n} */\n\nconst boolFalse = +Schema.API.constructors.find(c => c.predicate === 'boolFalse').id;\nconst boolTrue = +Schema.API.constructors.find(c => c.predicate === 'boolTrue').id;\nconst vector = +Schema.API.constructors.find(c => c.predicate === 'vector').id;\nconst gzipPacked = +Schema.MTProto.constructors.find(c => c.predicate === 'gzip_packed').id;\n\n//console.log('boolFalse', boolFalse === 0xbc799737);\n\nclass TLSerialization {\n private maxLength = 2048; // 2Kb\n private offset = 0; // in bytes\n private mtproto = false;\n private debug = false;//Modes.debug;\n\n private buffer: ArrayBuffer;\n private intView: Int32Array;\n private byteView: Uint8Array;\n\n constructor(options: Partial<{startMaxLength: number, mtproto: true}> = {}) {\n this.maxLength = options.startMaxLength || 2048; // 2Kb\n this.mtproto = options.mtproto || false;\n this.createBuffer();\n }\n\n public createBuffer() {\n this.buffer = new ArrayBuffer(this.maxLength);\n this.intView = new Int32Array(this.buffer);\n this.byteView = new Uint8Array(this.buffer);\n }\n\n public getArray() {\n const resultBuffer = new ArrayBuffer(this.offset);\n\n //let perf = performance.now();\n /* const resultUint8: any = new Uint8Array(resultBuffer);\n resultUint8.set(this.byteView.subarray(0, this.offset)); */\n //console.log('perf uint8', performance.now() - perf);\n\n //perf = performance.now();\n const resultInt32 = new Int32Array(resultBuffer);\n resultInt32.set(this.intView.subarray(0, this.offset / 4));\n //console.log('perf int32', performance.now() - perf);\n\n /* if(resultUint8.buffer.byteLength !== resultInt32.buffer.byteLength) {\n console.error(resultUint8, resultInt32);\n } */\n \n return resultInt32;\n }\n\n public getBuffer() {\n return this.getArray().buffer;\n }\n\n public getBytes(typed: true): Uint8Array;\n public getBytes(typed?: false): number[];\n public getBytes(typed: boolean = true): number[] | Uint8Array {\n if(typed) {\n const resultBuffer = new ArrayBuffer(this.offset);\n const resultArray = new Uint8Array(resultBuffer);\n \n resultArray.set(this.byteView.subarray(0, this.offset));\n \n return resultArray;\n }\n \n const bytes: number[] = new Array(this.offset);\n for(let i = 0; i < this.offset; i++) {\n bytes[i] = this.byteView[i];\n }\n return bytes;\n }\n\n public getOffset() {\n return this.offset;\n }\n\n public checkLength(needBytes: number) {\n if(this.offset + needBytes < this.maxLength) {\n return;\n }\n \n //console.log('Increase buffer start', this.offset, needBytes, this.maxLength, this.byteView.slice(0, 32));\n this.maxLength = Math.ceil(Math.max(this.maxLength * 2, this.offset + needBytes + 16) / 4) * 4;\n const previousBuffer = this.buffer;\n //const previousByteView = this.byteView;\n const previousArray = new Int32Array(previousBuffer);\n \n this.createBuffer();\n \n new Int32Array(this.buffer).set(previousArray);\n /* console.log('Increase buffer end', this.offset, needBytes, this.maxLength, this.byteView.slice(0, 32), \n bytesCmp(previousByteView, this.byteView.slice(0, previousByteView.length))); */\n }\n\n public writeInt(i: number, field: string) {\n this.debug && console.log('>>>', i.toString(16), i, field);\n \n const offset = this.offset / 4;\n this.checkLength(4);\n this.intView[offset] = i;\n this.offset += 4;\n\n return offset;\n }\n \n public storeInt(i: number, field?: string) {\n return this.writeInt(i, (field || '') + ':int');\n }\n \n public storeBool(i: boolean, field?: string) {\n if(i) {\n this.writeInt(boolTrue, (field || '') + ':bool');\n } else {\n this.writeInt(boolFalse, (field || '') + ':bool');\n }\n }\n \n public storeLongP(iHigh: number, iLow: number, field?: string) {\n this.writeInt(iLow, (field || '') + ':long[low]');\n this.writeInt(iHigh, (field || '') + ':long[high]');\n }\n\n public storeLong(sLong: Array<number> | string | number, field?: string) {\n if(Array.isArray(sLong)) {\n if(sLong.length === 2) {\n return this.storeLongP(sLong[0], sLong[1], field);\n } else {\n return this.storeIntBytes(sLong, 64, field);\n }\n }\n \n if(typeof sLong !== 'string') {\n sLong = sLong ? sLong.toString() : '0';\n }\n\n const {quotient, remainder} = bigInt(sLong).divmod(0x100000000);\n const high = quotient.toJSNumber();\n const low = remainder.toJSNumber();\n\n this.writeInt(low, (field || '') + ':long[low]');\n this.writeInt(high, (field || '') + ':long[high]');\n }\n \n public storeDouble(f: any, field?: string) {\n const buffer = new ArrayBuffer(8);\n const intView = new Int32Array(buffer);\n const doubleView = new Float64Array(buffer);\n \n doubleView[0] = f;\n \n this.writeInt(intView[0], (field || '') + ':double[low]');\n this.writeInt(intView[1], (field || '') + ':double[high]');\n }\n \n public storeString(s: string, field?: string) {\n this.debug && console.log('>>>', s, (field || '') + ':string');\n \n if(s === undefined) {\n s = '';\n }\n const sUTF8 = unescape(encodeURIComponent(s));\n \n this.checkLength(sUTF8.length + 8);\n \n const len = sUTF8.length;\n if(len <= 253) {\n this.byteView[this.offset++] = len;\n } else {\n this.byteView[this.offset++] = 254;\n this.byteView[this.offset++] = len & 0xFF;\n this.byteView[this.offset++] = (len & 0xFF00) >> 8;\n this.byteView[this.offset++] = (len & 0xFF0000) >> 16;\n }\n for(let i = 0; i < len; i++) {\n this.byteView[this.offset++] = sUTF8.charCodeAt(i);\n }\n \n // Padding\n while(this.offset % 4) {\n this.byteView[this.offset++] = 0;\n }\n }\n \n public storeBytes(bytes: ArrayBuffer | Uint8Array | number[], field?: string) {\n if(bytes instanceof ArrayBuffer) {\n bytes = new Uint8Array(bytes);\n } else if(bytes === undefined) {\n bytes = [];\n }\n\n this.debug && console.log('>>>', bytesToHex(bytes as number[]), (field || '') + ':bytes');\n \n // if uint8array was json.stringified, then will be: {'0': 123, '1': 123}\n const len = (bytes as Uint8Array).length;\n this.checkLength(len + 8);\n if(len <= 253) {\n this.byteView[this.offset++] = len;\n } else {\n this.byteView[this.offset++] = 254;\n this.byteView[this.offset++] = len & 0xFF;\n this.byteView[this.offset++] = (len & 0xFF00) >> 8;\n this.byteView[this.offset++] = (len & 0xFF0000) >> 16;\n }\n \n this.byteView.set(bytes as Uint8Array, this.offset);\n this.offset += len;\n \n // Padding\n while(this.offset % 4) {\n this.byteView[this.offset++] = 0;\n }\n }\n \n public storeIntBytes(bytes: ArrayBuffer | Uint8Array | number[], bits: number, field?: string) {\n if(bytes instanceof ArrayBuffer) {\n bytes = new Uint8Array(bytes);\n }\n\n const len = (bytes as Uint8Array).length;\n if((bits % 32) || (len * 8) !== bits) {\n const error = new Error('Invalid bits: ' + bits + ', ' + len);\n console.error(error, bytes, field);\n throw error;\n }\n \n this.debug && console.log('>>>', bytesToHex(bytes as Uint8Array), (field || '') + ':int' + bits);\n this.checkLength(len);\n \n this.byteView.set(bytes as Uint8Array, this.offset);\n this.offset += len;\n }\n \n public storeRawBytes(bytes: ArrayLike<number>, field?: string) {\n if(bytes instanceof ArrayBuffer) {\n bytes = new Uint8Array(bytes);\n }\n\n const len = bytes.length;\n \n this.debug && console.log('>>>', bytesToHex(bytes), (field || ''));\n this.checkLength(len);\n \n this.byteView.set(bytes, this.offset);\n this.offset += len;\n }\n \n public storeMethod(methodName: string, params: any) {\n const schema = this.mtproto ? Schema.MTProto : Schema.API;\n const methodData = schema.methods.find(m => m.method === methodName);\n\n if(!methodData) {\n throw new Error('No method ' + methodName + ' found');\n }\n \n this.storeInt(methodData.id, methodName + '[id]');\n\n const pFlags = params.pFlags || params; // * support pFlags, though am not expecting it to be there\n const flagsOffsets: {[paramName: string]: number} = {};\n //console.log('storeMethod', len, methodData);\n for(const param of methodData.params) {\n let type = param.type;\n\n if(type.indexOf('?') !== -1) {\n const condType = type.split('?');\n const fieldBit = condType[0].split('.');\n\n if(!(params[fieldBit[0]] & (1 << +fieldBit[1]))) {\n if(condType[1] === 'true' ? pFlags[param.name] : params[param.name] !== undefined) {\n //console.log('storeMethod autocompleting', methodName, param.name, params[param.name], type);\n params[fieldBit[0]] |= 1 << +fieldBit[1];\n } else {\n continue;\n }\n }\n \n //console.log('storeMethod', methodName, fieldBit, params[fieldBit[0]], params, param, condType, !!(params[fieldBit[0]] & (1 << +fieldBit[1])));\n type = condType[1];\n }\n \n //console.log('storeMethod', methodName, param.name, params[param.name], type);\n const result = this.storeObject(params[param.name], type, methodName + '[' + param.name + ']');\n\n if(type === '#') {\n params[param.name] = params[param.name] || 0;\n flagsOffsets[param.name] = result as number;\n }\n }\n\n for(let paramName in flagsOffsets) {\n this.intView[flagsOffsets[paramName]] = params[paramName];\n }\n\n return methodData.type;\n }\n \n public storeObject(obj: any, type: string, field?: string) {\n //console.log('storeObject', obj, type, field, this.offset, this.getBytes(true).hex);\n switch(type) {\n case '#':\n obj = obj || 0;\n case 'int':\n return this.storeInt(obj, field);\n case 'long':\n return this.storeLong(obj, field);\n case 'int128':\n return this.storeIntBytes(obj, 128, field);\n case 'int256':\n return this.storeIntBytes(obj, 256, field);\n case 'int512':\n return this.storeIntBytes(obj, 512, field);\n case 'string':\n return this.storeString(obj, field);\n case 'bytes':\n return this.storeBytes(obj, field);\n case 'double':\n return this.storeDouble(obj, field);\n case 'Bool':\n return this.storeBool(obj, field);\n case 'true':\n return\n }\n \n if(Array.isArray(obj)) {\n if(type.substr(0, 6) === 'Vector') {\n this.writeInt(vector, field + '[id]');\n } else if (type.substr(0, 6) !== 'vector') {\n throw new Error('Invalid vector type ' + type);\n }\n\n const itemType = type.substr(7, type.length - 8); // for \"Vector<itemType>\"\n this.writeInt(obj.length, field + '[count]');\n for(let i = 0; i < obj.length; i++) {\n this.storeObject(obj[i], itemType, field + '[' + i + ']');\n }\n\n return true;\n } else if (type.substr(0, 6).toLowerCase() === 'vector') {\n throw new Error('Invalid vector object');\n }\n \n if(!isObject(obj)) {\n throw new Error('Invalid object for type ' + type);\n }\n \n const schema = this.mtproto ? Schema.MTProto : Schema.API;\n const predicate = obj['_'];\n let isBare = false;\n const constructorData: MTProtoConstructor = schema.constructors.find(c => c.predicate === predicate);\n \n if(isBare = (type.charAt(0) === '%')) {\n type = type.substr(1);\n }\n\n if(!constructorData) {\n throw new Error('No predicate ' + predicate + ' found');\n }\n \n if(predicate === type) {\n isBare = true;\n }\n \n if(!isBare) {\n this.writeInt(constructorData.id, field + '[' + predicate + '][id]');\n }\n\n const pFlags = obj.pFlags;\n const flagsOffsets: {[paramName: string]: number} = {};\n //console.log('storeObject', len, constructorData);\n for(const param of constructorData.params) {\n let type = param.type;\n\n //console.log('storeObject', param, type);\n if(type.indexOf('?') !== -1) {\n const condType = type.split('?');\n const fieldBit = condType[0].split('.');\n\n //console.log('storeObject fieldBit', fieldBit, obj[fieldBit[0]]);\n\n if(!(obj[fieldBit[0]] & (1 << +fieldBit[1]))) {\n if(condType[1] === 'true' ? pFlags && pFlags[param.name] : obj[param.name] !== undefined) {\n //console.log('storeObject autocompleting', param.name, obj[param.name], type);\n obj[fieldBit[0]] |= 1 << +fieldBit[1];\n } else {\n continue;\n }\n }\n\n type = condType[1];\n }\n //console.log('storeObject', param, type);\n \n const result = this.storeObject(obj[param.name], type, field + '[' + predicate + '][' + param.name + ']');\n\n if(type === '#') {\n obj[param.name] = obj[param.name] || 0;\n flagsOffsets[param.name] = result as number;\n }\n }\n\n for(let paramName in flagsOffsets) {\n this.intView[flagsOffsets[paramName]] = obj[paramName];\n }\n \n return constructorData.type;\n }\n}\n\nclass TLDeserialization<FetchLongAs extends Long> {\n private offset = 0; // in bytes\n private override: {[key: string]: (result: any, field: string) => void};\n\n private buffer: ArrayBuffer;\n private intView: Int32Array;\n private byteView: Uint8Array;\n\n // this.debug = \n private mtproto: boolean = false;\n private debug: boolean;\n\n constructor(buffer: ArrayBuffer | Uint8Array, options: Partial<{override: any, mtproto: true, debug: true}> = {}) {\n //buffer = addPadding(buffer, 4, true); // fix 21.01.2020 for wss\n if(buffer instanceof ArrayBuffer) {\n this.buffer = buffer;\n this.intView = new Int32Array(buffer);\n this.byteView = new Uint8Array(this.buffer);\n } else {\n this.buffer = buffer.buffer;\n this.intView = new Int32Array(buffer.buffer);\n this.byteView = buffer;\n }\n\n //console.log(this.intView);\n\n this.override = options.override || {};\n this.mtproto = !!options.mtproto;\n this.debug = options.debug !== undefined ? options.debug : /* Modes.debug */false;\n }\n\n /* public setMtproto(mtproto: boolean) {\n this.mtproto = mtproto;\n } */\n\n private readInt(field: string) {\n //if(this.offset >= this.intView.length * 4) {\n if((this.byteView.length - this.offset) < 4) {\n console.error(this.byteView, this.offset);\n throw new Error('Nothing to fetch: ' + field);\n }\n \n const i = this.intView[this.offset / 4];\n // const i = new Uint32Array(this.byteView.buffer.slice(this.offset, this.offset + 4))[0];\n \n this.debug/* || field.includes('[dialog][read_outbox_max_id]') */ \n && console.log('<<<', i.toString(16), i, field, \n this.byteView.slice(this.offset - 16, this.offset + 16), \n bytesToHex(this.byteView.slice(this.offset - 16, this.offset + 16)));\n \n this.offset += 4;\n \n return i;\n }\n \n public fetchInt(field?: string) {\n return this.readInt((field || '') + ':int');\n }\n \n public fetchDouble(field?: string) {\n const buffer = new ArrayBuffer(8);\n const intView = new Int32Array(buffer);\n const doubleView = new Float64Array(buffer);\n \n intView[0] = this.readInt((field || '') + ':double[low]'),\n intView[1] = this.readInt((field || '') + ':double[high]');\n \n return doubleView[0];\n }\n \n public fetchLong(field?: string): FetchLongAs {\n const iLow = this.readInt((field || '') + ':long[low]');\n const iHigh = this.readInt((field || '') + ':long[high]');\n \n //const longDec = bigint(iHigh).shiftLeft(32).add(bigint(iLow)).toString();\n const longDec = longFromInts(iHigh, iLow);\n\n if(!this.mtproto) {\n const num = +longDec;\n if(Number.isSafeInteger(num)) {\n // @ts-ignore\n return num;\n }\n }\n \n // @ts-ignore\n return longDec;\n }\n \n public fetchBool(field?: string): boolean {\n const i = this.readInt((field || '') + ':bool');\n if(i === boolTrue) {\n return true;\n } else if(i === boolFalse) {\n return false;\n }\n\n this.offset -= 4;\n return this.fetchObject('Object', field);\n }\n \n public fetchString(field?: string): string {\n let len = this.byteView[this.offset++];\n \n if(len === 254) {\n len = this.byteView[this.offset++] |\n (this.byteView[this.offset++] << 8) |\n (this.byteView[this.offset++] << 16);\n }\n \n let sUTF8 = '';\n for(let i = 0; i < len; i++) {\n sUTF8 += String.fromCharCode(this.byteView[this.offset++]);\n }\n \n // Padding\n while(this.offset % 4) {\n this.offset++;\n }\n \n let s: string;\n try {\n s = decodeURIComponent(escape(sUTF8));\n } catch (e) {\n s = sUTF8;\n }\n \n this.debug && console.log('<<<', s, (field || '') + ':string');\n \n return s;\n }\n \n public fetchBytes(field?: string) {\n let len = this.byteView[this.offset++];\n \n if(len === 254) {\n len = this.byteView[this.offset++] |\n (this.byteView[this.offset++] << 8) |\n (this.byteView[this.offset++] << 16);\n }\n \n const bytes = this.byteView.subarray(this.offset, this.offset + len);\n this.offset += len;\n \n // Padding\n while(this.offset % 4) {\n this.offset++;\n }\n \n this.debug && console.log('<<<', bytesToHex(bytes), (field || '') + ':bytes');\n \n return bytes;\n }\n \n public fetchIntBytes(bits: number, typed: true, field?: string): Uint8Array;\n public fetchIntBytes(bits: number, typed?: false, field?: string): number[];\n public fetchIntBytes(bits: number, typed: boolean = true, field?: string) {\n if(bits % 32) {\n throw new Error('Invalid bits: ' + bits);\n }\n \n const len = bits / 8;\n if(typed) {\n const result = this.byteView.subarray(this.offset, this.offset + len);\n this.offset += len;\n return result;\n }\n \n const bytes: number[] = new Array(len);\n for(let i = 0; i < len; i++) {\n bytes[i] = this.byteView[this.offset++];\n }\n \n this.debug && console.log('<<<', bytesToHex(bytes), (field || '') + ':int' + bits);\n \n return bytes;\n }\n \n public fetchRawBytes(len: number | false, typed: true, field: string): Uint8Array;\n public fetchRawBytes(len: number | false, typed: false, field: string): number[];\n public fetchRawBytes(len: number | false, typed: boolean = true, field: string) {\n if(len === false) {\n len = this.readInt((field || '') + '_length');\n if(len > this.byteView.byteLength) {\n throw new Error('Invalid raw bytes length: ' + len + ', buffer len: ' + this.byteView.byteLength);\n }\n }\n \n if(typed) {\n const bytes = new Uint8Array(len);\n bytes.set(this.byteView.subarray(this.offset, this.offset + len));\n this.offset += len;\n return bytes;\n }\n \n const bytes: number[] = new Array(len);\n for(let i = 0; i < len; i++) {\n bytes[i] = this.byteView[this.offset++];\n }\n \n this.debug && console.log('<<<', bytesToHex(bytes), (field || ''));\n \n return bytes;\n }\n\n private fetchVector(type: string, field?: string) {\n const len = this.readInt(field + '[count]');\n const result: any[] = new Array(len);\n if(len > 0) {\n const itemType = type.substr(7, type.length - 8); // for \"Vector<itemType>\"\n for(let i = 0; i < len; ++i) {\n result[i] = this.fetchObject(itemType, field + '[' + i + ']');\n }\n }\n \n return result;\n }\n \n public fetchObject(type: string, field?: string): any {\n switch(type) {\n case '#':\n case 'int':\n return this.fetchInt(field);\n case 'long':\n return this.fetchLong(field);\n case 'int128':\n return this.fetchIntBytes(128, true, field);\n case 'int256':\n return this.fetchIntBytes(256, true, field);\n case 'int512':\n return this.fetchIntBytes(512, true, field);\n case 'string':\n return this.fetchString(field);\n case 'bytes':\n return this.fetchBytes(field);\n case 'double':\n return this.fetchDouble(field);\n case 'Bool':\n return this.fetchBool(field);\n case 'true':\n return true;\n }\n \n field = field || type || 'Object';\n \n if(type.charAt(0) === 'v' && type.substr(1, 5) === 'ector') {\n return this.fetchVector(type, field);\n }\n \n const schema = this.mtproto ? Schema.MTProto : Schema.API;\n let constructorData: MTProtoConstructor = null;\n let fallback = false;\n \n if(type.charAt(0) === '%') {\n const checkType = type.substr(1);\n constructorData = schema.constructors.find(c => c.type === checkType);\n if(!constructorData) {\n throw new Error('Constructor not found for type: ' + type);\n }\n }/* else if(type.charAt(0) >= 97 && type.charAt(0) <= 122) {\n constructorData = schema.constructors.find(c => c.predicate === type);\n if(!constructorData) {\n throw new Error('Constructor not found for predicate: ' + type);\n }\n } */ else {\n const constructorCmp = this.readInt(field + '[id]');\n \n if(constructorCmp === gzipPacked) { // Gzip packed\n const compressed = this.fetchBytes(field + '[packed_string]');\n const uncompressed = gzipUncompress(compressed) as Uint8Array;\n const newDeserializer = new TLDeserialization(uncompressed); // rpc_result is packed here\n \n return newDeserializer.fetchObject(type, field);\n }\n\n if(constructorCmp === vector) {\n return this.fetchVector(type, field);\n }\n \n let index = schema.constructorsIndex;\n if(!index) {\n schema.constructorsIndex = index = {};\n for(let i = 0, len = schema.constructors.length; i < len; i++) {\n index[schema.constructors[i].id] = i;\n }\n }\n\n const i = index[constructorCmp];\n if(i !== undefined) {\n constructorData = schema.constructors[i];\n }\n \n if(!constructorData && this.mtproto) {\n const schemaFallback = Schema.API;\n for(let i = 0, len = schemaFallback.constructors.length; i < len; i++) {\n if(+schemaFallback.constructors[i].id === constructorCmp) {\n constructorData = schemaFallback.constructors[i];\n \n delete this.mtproto;\n fallback = true;\n break;\n }\n }\n }\n\n if(!constructorData) {\n console.error('Constructor not found:', constructorCmp);\n \n let int1: number, int2: number;\n try {\n int1 = this.fetchInt(field);\n int2 = this.fetchInt(field);\n } catch(err) {\n\n }\n\n throw new Error('Constructor not found: ' + constructorCmp + ' ' + int1 + ' ' + int2 + ' ' + field);\n }\n }\n \n const predicate = constructorData.predicate;\n \n const result: any = {'_': predicate};\n const overrideKey = (this.mtproto ? 'mt_' : '') + predicate;\n if(this.override[overrideKey]) {\n this.override[overrideKey](result, field + '[' + predicate + ']');\n } else {\n for(let i = 0, len = constructorData.params.length; i < len; i++) {\n const param = constructorData.params[i];\n let type = param.type;\n\n if(type === '#' && result.pFlags === undefined) {\n result.pFlags = {};\n }\n\n const isCond = (type.indexOf('?') !== -1);\n if(isCond) {\n const condType = type.split('?');\n const fieldBit = condType[0].split('.');\n\n if(!(result[fieldBit[0]] & (1 << +fieldBit[1]))) {\n //console.log('fetchObject bad', constructorData, result[fieldBit[0]], fieldBit);\n continue;\n }\n\n //console.log('fetchObject good', constructorData, result[fieldBit[0]], fieldBit);\n\n type = condType[1];\n }\n \n const value = this.fetchObject(type, field + '[' + predicate + '][' + param.name + ']');\n \n if(isCond && type === 'true') {\n result.pFlags[param.name] = value;\n } else {\n /* if(param.name === 'read_outbox_max_id') {\n console.log(result, param.name, value, field + '[' + predicate + '][' + param.name + ']');\n } */\n \n result[param.name] = value;\n }\n }\n }\n \n if(fallback) {\n this.mtproto = true;\n }\n\n if(type === 'JSONValue') {\n return this.formatJSONValue(result);\n }\n \n return result;\n }\n\n private formatJSONValue(jsonValue: JSONValue): any {\n if(!jsonValue._) return jsonValue;\n switch(jsonValue._) {\n case 'jsonNull':\n return null;\n case 'jsonObject': {\n const out: any = {};\n const objectValues = jsonValue.value;\n for(let i = 0, length = objectValues.length; i < length; ++i) {\n const objectValue = objectValues[i];\n out[objectValue.key] = this.formatJSONValue(objectValue.value);\n }\n return out;\n }\n default:\n return jsonValue.value;\n }\n }\n \n public getOffset() {\n return this.offset;\n }\n\n public setOffset(offset: number) {\n this.offset = offset;\n }\n \n /* public fetchEnd() {\n if(this.offset !== this.byteView.length) {\n throw new Error('Fetch end with non-empty buffer');\n }\n\n return true;\n } */\n}\n\nMOUNT_CLASS_TO.TLDeserialization = TLDeserialization;\nMOUNT_CLASS_TO.TLSerialization = TLSerialization;\nexport { TLDeserialization, TLSerialization };\n","import bigInt from 'big-integer';\n\nexport function bigIntFromBytes(bytes: Uint8Array | number[], base = 256) {\n return bigInt.fromArray(bytes instanceof Uint8Array ? [...bytes] : bytes, base);\n}\n\nexport function bigIntToBytes(bigInt: bigInt.BigInteger) {\n return new Uint8Array(bigInt.toArray(256).value);\n}\n","import { bigIntFromBytes, bigIntToBytes } from '../bigInt/bigIntConversion';\n\nexport default function bytesModPow(bytes: number[] | Uint8Array, exp: number[] | Uint8Array, mod: number[] | Uint8Array) {\n const bytesBigInt = bigIntFromBytes(bytes);\n const expBigInt = bigIntFromBytes(exp);\n const modBigInt = bigIntFromBytes(mod);\n const resBigInt = bytesBigInt.modPow(expBigInt, modBigInt);\n return bigIntToBytes(resBigInt);\n}\n","export default function randomize<T extends ArrayBufferView>(arr: T) {\n if(crypto && 'getRandomValues' in crypto) {\n crypto.getRandomValues(arr);\n } else {\n throw new Error('NO_SECURE_RANDOM');\n }\n \n return arr;\n}\n","import randomize from \"../array/randomize\";\nimport bufferConcats from \"./bufferConcats\";\n\nexport default function addPadding<T extends number[] | ArrayBuffer | Uint8Array>(\n bytes: T, \n blockSize: number = 16, \n zeroes?: boolean, \n blockSizeAsTotalLength = false, \n prepend = false\n): T {\n const len = (bytes as ArrayBuffer).byteLength || (bytes as Uint8Array).length;\n const needPadding = blockSizeAsTotalLength ? blockSize - len : blockSize - (len % blockSize);\n if(needPadding > 0 && needPadding < blockSize) {\n ////console.log('addPadding()', len, blockSize, needPadding);\n const padding = new Uint8Array(needPadding);\n if(zeroes) {\n for(let i = 0; i < needPadding; ++i) {\n padding[i] = 0;\n }\n } else {\n randomize(padding);\n }\n\n if(bytes instanceof ArrayBuffer) {\n return (prepend ? bufferConcats(padding, bytes) : bufferConcats(bytes, padding)).buffer as T;\n } else if(bytes instanceof Uint8Array) {\n return (prepend ? bufferConcats(padding, bytes) : bufferConcats(bytes, padding)) as T;\n } else {\n // @ts-ignore\n return (prepend ? [...padding].concat(bytes) : bytes.concat([...padding])) as T;\n }\n }\n\n return bytes;\n}\n","export default function bytesXor(bytes1: Uint8Array, bytes2: Uint8Array) {\n const len = bytes1.length;\n const bytes = new Uint8Array(len);\n\n for(let i = 0; i < len; ++i) {\n bytes[i] = bytes1[i] ^ bytes2[i];\n }\n\n return bytes;\n}\n","export default function convertToUint8Array(bytes: Uint8Array | ArrayBuffer | number[] | string): Uint8Array {\n if(bytes instanceof Uint8Array) {\n return bytes;\n } else if(typeof(bytes) === 'string') {\n return new TextEncoder().encode(bytes);\n }\n\n return new Uint8Array(bytes);\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport cryptoWorker from \"../crypto/cryptoworker\";\r\nimport { AccountPassword, InputCheckPasswordSRP, PasswordKdfAlgo } from \"../../layer\";\r\nimport addPadding from \"../../helpers/bytes/addPadding\";\r\nimport bufferConcats from \"../../helpers/bytes/bufferConcats\";\r\nimport bytesXor from \"../../helpers/bytes/bytesXor\";\r\nimport convertToUint8Array from \"../../helpers/bytes/convertToUint8Array\";\r\nimport bigInt from 'big-integer';\r\nimport { bigIntFromBytes, bigIntToBytes } from \"../../helpers/bigInt/bigIntConversion\";\r\nimport bytesToHex from \"../../helpers/bytes/bytesToHex\";\r\n\r\nexport async function makePasswordHash(password: string, client_salt: Uint8Array, server_salt: Uint8Array) {\r\n // ! look into crypto_methods.test.ts\r\n let buffer = await cryptoWorker.invokeCrypto('sha256', bufferConcats(client_salt, new TextEncoder().encode(password), client_salt));\r\n buffer = bufferConcats(server_salt, buffer, server_salt);\r\n buffer = await cryptoWorker.invokeCrypto('sha256', buffer);\r\n\r\n let hash = await cryptoWorker.invokeCrypto('pbkdf2', new Uint8Array(buffer), client_salt, 100000);\r\n hash = bufferConcats(server_salt, hash, server_salt);\r\n\r\n buffer = await cryptoWorker.invokeCrypto('sha256', hash);\r\n\r\n return buffer;\r\n}\r\n\r\nexport default async function computeSRP(password: string, state: AccountPassword, isNew: boolean) {\r\n const algo = (isNew ? state.new_algo : state.current_algo) as PasswordKdfAlgo.passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;\r\n\r\n const p = bigIntFromBytes(algo.p);\r\n const g = bigInt(algo.g);\r\n\r\n /* if(B.compareTo(BigInteger.ZERO) < 0) {\r\n console.error('srp_B < 0')\r\n }\r\n \r\n if(B.compareTo(p) <= 0) {\r\n console.error('srp_B <= p');\r\n } */\r\n \r\n /* let check_prime_and_good = (bytes: any, g: number) => {\r\n let good_prime = 'c71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5b';\r\n \r\n if(bytesToHex(bytes) === good_prime && [3, 4, 5, 7].indexOf(g) !== -1) {\r\n return true;\r\n }\r\n \r\n // TO-DO check_prime_and_good_check\r\n }; */\r\n \r\n //check_prime_and_good(algo.p, g);\r\n \r\n const pw_hash = await makePasswordHash(password, algo.salt1, algo.salt2);\r\n const x = bigInt(bytesToHex(pw_hash), 16);\r\n \r\n const padArray = function(arr: number[] | Uint8Array, len: number) {\r\n if(!(arr instanceof Uint8Array)) {\r\n arr = convertToUint8Array(arr);\r\n }\r\n \r\n return addPadding(arr, len, true, true, true);\r\n };\r\n \r\n const v = g.modPow(x, p);\r\n \r\n const flipper = (arr: Uint8Array | number[]) => {\r\n const out = new Uint8Array(arr.length);\r\n for(let i = 0; i < arr.length; i += 4) {\r\n out[i] = arr[i + 3];\r\n out[i + 1] = arr[i + 2];\r\n out[i + 2] = arr[i + 1];\r\n out[i + 3] = arr[i];\r\n }\r\n \r\n return out;\r\n };\r\n \r\n // * https://core.telegram.org/api/srp#setting-a-new-2fa-password\r\n if(isNew) {\r\n const bytes = bigIntToBytes(v);\r\n return padArray(/* (isBigEndian ? bytes.reverse() : bytes) */bytes, 256);\r\n }\r\n \r\n const B = bigIntFromBytes(state.srp_B);\r\n \r\n const pForHash = padArray(bigIntToBytes(p), 256);\r\n const gForHash = padArray(bigIntToBytes(g), 256);\r\n const b_for_hash = padArray(bigIntToBytes(B), 256);\r\n\r\n const kHash = await cryptoWorker.invokeCrypto('sha256', bufferConcats(pForHash, gForHash));\r\n const k = bigIntFromBytes(kHash);\r\n\r\n const k_v = k.multiply(v).mod(p);\r\n\r\n const is_good_mod_exp_first = (modexp: bigInt.BigInteger, prime: bigInt.BigInteger) => {\r\n const diff = prime.subtract(modexp);\r\n const min_diff_bits_count = 2048 - 64;\r\n const max_mod_exp_size = 256;\r\n if(diff.isNegative() ||\r\n diff.bitLength().toJSNumber() < min_diff_bits_count || \r\n modexp.bitLength().toJSNumber() < min_diff_bits_count || \r\n Math.floor((modexp.bitLength().toJSNumber() + 7) / 8) > max_mod_exp_size)\r\n return false;\r\n return true;\r\n };\r\n\r\n const generate_and_check_random = async() => {\r\n while(true) {\r\n const a = bigIntFromBytes(flipper(state.secure_random));\r\n //const a = str2bigInt('9153faef8f2bb6da91f6e5bc96bc00860a530a572a0f45aac0842b4602d711f8bda8d59fb53705e4ae3e31a3c4f0681955425f224297b8e9efd898fec22046debb7ba8a0bcf2be1ada7b100424ea318fdcef6ccfe6d7ab7d978c0eb76a807d4ab200eb767a22de0d828bc53f42c5a35c2df6e6ceeef9a3487aae8e9ef2271f2f6742e83b8211161fb1a0e037491ab2c2c73ad63c8bd1d739de1b523fe8d461270cedcf240de8da75f31be4933576532955041dc5770c18d3e75d0b357df9da4a5c8726d4fced87d15752400883dc57fa1937ac17608c5446c4774dcd123676d683ce3a1ab9f7e020ca52faafc99969822717c8e07ea383d5fb1a007ba0d170cb', 16);\r\n\r\n const A = g.modPow(a, p);\r\n if(is_good_mod_exp_first(A, p)) {\r\n const a_for_hash = bigIntToBytes(A);\r\n\r\n const s = await cryptoWorker.invokeCrypto('sha256', bufferConcats(a_for_hash, b_for_hash));\r\n // const u = bigInt(s.hex, 16);\r\n const u = bigIntFromBytes(s);\r\n if(!u.isZero() && !u.isNegative())\r\n return {a, a_for_hash, u};\r\n } \r\n }\r\n }\r\n\r\n const {a, a_for_hash, u} = await generate_and_check_random();\r\n\r\n let g_b: bigInt.BigInteger;\r\n if(!B.greater(k_v)) {\r\n g_b = B.add(p);\r\n } else g_b = B;\r\n g_b = g_b.subtract(k_v).mod(p);\r\n\r\n const ux = u.multiply(x);\r\n const a_ux = a.add(ux);\r\n const S = g_b.modPow(a_ux, p);\r\n\r\n const K = await cryptoWorker.invokeCrypto('sha256', padArray(bigIntToBytes(S), 256));\r\n\r\n let h1 = await cryptoWorker.invokeCrypto('sha256', pForHash);\r\n const h2 = await cryptoWorker.invokeCrypto('sha256', gForHash);\r\n h1 = bytesXor(h1, h2);\r\n\r\n const buff = bufferConcats(\r\n h1, \r\n await cryptoWorker.invokeCrypto('sha256', algo.salt1),\r\n await cryptoWorker.invokeCrypto('sha256', algo.salt2),\r\n a_for_hash,\r\n b_for_hash,\r\n K\r\n );\r\n\r\n const M1 = await cryptoWorker.invokeCrypto('sha256', buff);\r\n\r\n const out: InputCheckPasswordSRP.inputCheckPasswordSRP = {\r\n _: 'inputCheckPasswordSRP', \r\n srp_id: state.srp_id, \r\n A: new Uint8Array(a_for_hash), \r\n M1\r\n };\r\n\r\n return out;\r\n}\r\n","var S = new Uint8Array(256);\nvar Si = new Uint8Array(256);\nvar T1 = new Uint32Array(256);\nvar T2 = new Uint32Array(256);\nvar T3 = new Uint32Array(256);\nvar T4 = new Uint32Array(256);\nvar T5 = new Uint32Array(256);\nvar T6 = new Uint32Array(256);\nvar T7 = new Uint32Array(256);\nvar T8 = new Uint32Array(256);\nfunction computeTables() {\n var d = new Uint8Array(256);\n var t = new Uint8Array(256);\n var x2;\n var x4;\n var x8;\n var s;\n var tEnc;\n var tDec;\n var x = 0;\n var xInv = 0;\n // Compute double and third tables\n for (var i = 0; i < 256; i++) {\n d[i] = i << 1 ^ (i >> 7) * 283;\n t[d[i] ^ i] = i;\n }\n for (; !S[x]; x ^= x2 || 1) {\n // Compute sbox\n s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4;\n s = s >> 8 ^ s & 255 ^ 99;\n S[x] = s;\n Si[s] = x;\n // Compute MixColumns\n x8 = d[x4 = d[x2 = d[x]]];\n tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n tEnc = d[s] * 0x101 ^ s * 0x1010100;\n T1[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T2[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T3[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T4[x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n T5[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T6[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T7[s] = tDec = tDec << 24 ^ tDec >>> 8;\n T8[s] = tDec = tDec << 24 ^ tDec >>> 8;\n xInv = t[xInv] || 1;\n }\n}\n\n/**\n * Gets a uint32 from string in big-endian order order\n */\nfunction s2i(str, pos) {\n return (str.charCodeAt(pos) << 24\n ^ str.charCodeAt(pos + 1) << 16\n ^ str.charCodeAt(pos + 2) << 8\n ^ str.charCodeAt(pos + 3));\n}\n\n/* eslint-disable import/prefer-default-export */\n/**\n * Helper function for transforming string key to Uint32Array\n */\nfunction getWords(key) {\n if (key instanceof Uint32Array) {\n return key;\n }\n if (typeof key === 'string') {\n if (key.length % 4 !== 0)\n for (var i = key.length % 4; i <= 4; i++)\n key += '\\0x00';\n var buf = new Uint32Array(key.length / 4);\n for (var i = 0; i < key.length; i += 4)\n buf[i / 4] = s2i(key, i);\n return buf;\n }\n if (key instanceof Uint8Array) {\n var buf = new Uint32Array(key.length / 4);\n for (var i = 0; i < key.length; i += 4) {\n buf[i / 4] = (key[i] << 24\n ^ key[i + 1] << 16\n ^ key[i + 2] << 8\n ^ key[i + 3]);\n }\n return buf;\n }\n throw new Error('Unable to create 32-bit words');\n}\nfunction xor(left, right, to) {\n if (to === void 0) { to = left; }\n for (var i = 0; i < left.length; i++)\n to[i] = left[i] ^ right[i];\n}\n\ncomputeTables();\n/**\n * Low-level AES Cipher\n */\nvar AES = /** @class */ (function () {\n function AES(_key) {\n var key = getWords(_key);\n if (key.length !== 4 && key.length !== 6 && key.length !== 8) {\n throw new Error('Invalid key size');\n }\n this.encKey = new Uint32Array(4 * key.length + 28);\n this.decKey = new Uint32Array(4 * key.length + 28);\n this.encKey.set(key);\n var rcon = 1;\n var i = key.length;\n var tmp;\n // schedule encryption keys\n for (; i < 4 * key.length + 28; i++) {\n tmp = this.encKey[i - 1];\n // apply sbox\n if (i % key.length === 0 || (key.length === 8 && i % key.length === 4)) {\n tmp = S[tmp >>> 24] << 24 ^ S[(tmp >> 16) & 255] << 16 ^ S[(tmp >> 8) & 255] << 8 ^ S[tmp & 255];\n // shift rows and add rcon\n if (i % key.length === 0) {\n tmp = tmp << 8 ^ tmp >>> 24 ^ (rcon << 24);\n rcon = rcon << 1 ^ (rcon >> 7) * 283;\n }\n }\n this.encKey[i] = this.encKey[i - key.length] ^ tmp;\n }\n // schedule decryption keys\n for (var j = 0; i; j++, i--) {\n tmp = this.encKey[j & 3 ? i : i - 4];\n if (i <= 4 || j < 4) {\n this.decKey[j] = tmp;\n }\n else {\n this.decKey[j] = (T5[S[tmp >>> 24]]\n ^ T6[S[(tmp >> 16) & 255]]\n ^ T7[S[(tmp >> 8) & 255]]\n ^ T8[S[tmp & 255]]);\n }\n }\n }\n AES.prototype.encrypt = function (_message) {\n var message = getWords(_message);\n var out = new Uint32Array(4);\n var a = message[0] ^ this.encKey[0];\n var b = message[1] ^ this.encKey[1];\n var c = message[2] ^ this.encKey[2];\n var d = message[3] ^ this.encKey[3];\n var rounds = this.encKey.length / 4 - 2;\n var k = 4;\n var a2;\n var b2;\n var c2;\n // Inner rounds. Cribbed from OpenSSL.\n for (var i = 0; i < rounds; i++) {\n a2 = T1[a >>> 24] ^ T2[(b >> 16) & 255] ^ T3[(c >> 8) & 255] ^ T4[d & 255] ^ this.encKey[k];\n b2 = T1[b >>> 24] ^ T2[(c >> 16) & 255] ^ T3[(d >> 8) & 255] ^ T4[a & 255] ^ this.encKey[k + 1];\n c2 = T1[c >>> 24] ^ T2[(d >> 16) & 255] ^ T3[(a >> 8) & 255] ^ T4[b & 255] ^ this.encKey[k + 2];\n d = T1[d >>> 24] ^ T2[(a >> 16) & 255] ^ T3[(b >> 8) & 255] ^ T4[c & 255] ^ this.encKey[k + 3];\n a = a2;\n b = b2;\n c = c2;\n k += 4;\n // console.log(a, b, c, d);\n }\n // Last round.\n for (var i = 0; i < 4; i++) {\n out[i] = (S[a >>> 24] << 24\n ^ S[(b >> 16) & 255] << 16\n ^ S[(c >> 8) & 255] << 8\n ^ S[d & 255]\n ^ this.encKey[k++]);\n a2 = a;\n a = b;\n b = c;\n c = d;\n d = a2;\n }\n return out;\n };\n AES.prototype.decrypt = function (_message) {\n var message = getWords(_message);\n var out = new Uint32Array(4);\n var a = message[0] ^ this.decKey[0];\n var b = message[3] ^ this.decKey[1];\n var c = message[2] ^ this.decKey[2];\n var d = message[1] ^ this.decKey[3];\n var rounds = this.decKey.length / 4 - 2;\n var a2;\n var b2;\n var c2;\n var k = 4;\n // Inner rounds. Cribbed from OpenSSL.\n for (var i = 0; i < rounds; i++) {\n a2 = T5[a >>> 24] ^ T6[(b >> 16) & 255] ^ T7[(c >> 8) & 255] ^ T8[d & 255] ^ this.decKey[k];\n b2 = T5[b >>> 24] ^ T6[(c >> 16) & 255] ^ T7[(d >> 8) & 255] ^ T8[a & 255] ^ this.decKey[k + 1];\n c2 = T5[c >>> 24] ^ T6[(d >> 16) & 255] ^ T7[(a >> 8) & 255] ^ T8[b & 255] ^ this.decKey[k + 2];\n d = T5[d >>> 24] ^ T6[(a >> 16) & 255] ^ T7[(b >> 8) & 255] ^ T8[c & 255] ^ this.decKey[k + 3];\n a = a2;\n b = b2;\n c = c2;\n k += 4;\n }\n // Last round.\n for (var i = 0; i < 4; i++) {\n out[3 & -i] = (Si[a >>> 24] << 24\n ^ Si[(b >> 16) & 255] << 16\n ^ Si[(c >> 8) & 255] << 8\n ^ Si[d & 255]\n ^ this.decKey[k++]);\n a2 = a;\n a = b;\n b = c;\n c = d;\n d = a2;\n }\n return out;\n };\n return AES;\n}());\n\n/**\n * AES-IGE mode.\n */\nvar AES_IGE = /** @class */ (function () {\n function AES_IGE(key, iv, blockSize) {\n if (blockSize === void 0) { blockSize = 16; }\n this.key = getWords(key);\n this.iv = getWords(iv);\n this.cipher = new AES(key);\n this.blockSize = blockSize / 4;\n }\n /**\n * Encrypts plain text with AES-IGE mode.\n */\n AES_IGE.prototype.encrypt = function (message, buf) {\n var text = getWords(message);\n var cipherText = buf || new Uint32Array(text.length);\n var prevX = this.iv.subarray(this.blockSize, this.iv.length);\n var prevY = this.iv.subarray(0, this.blockSize);\n var yXOR = new Uint32Array(this.blockSize);\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = text.subarray(i, i + this.blockSize);\n xor(x, prevY, yXOR);\n var y = this.cipher.encrypt(yXOR);\n xor(y, prevX);\n prevX = x;\n prevY = y;\n for (var j = i, k = 0; j < text.length && k < 4; j++, k++)\n cipherText[j] = y[k];\n }\n return cipherText;\n };\n /**\n * Decrypts cipher text with AES-IGE mode.\n */\n AES_IGE.prototype.decrypt = function (message, buf) {\n var cipherText = getWords(message);\n var text = buf || new Uint32Array(cipherText.length);\n var prevY = this.iv.subarray(this.blockSize, this.iv.length);\n var prevX = this.iv.subarray(0, this.blockSize);\n var yXOR = new Uint32Array(this.blockSize);\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = cipherText.subarray(i, i + this.blockSize);\n xor(x, prevY, yXOR);\n var y = this.cipher.decrypt(yXOR);\n xor(y, prevX);\n prevX = x;\n prevY = y;\n for (var j = i, k = 0; j < text.length && k < 4; j++, k++)\n text[j] = y[k];\n }\n return text;\n };\n return AES_IGE;\n}());\n\n/**\n * AES-IGE mode.\n */\nvar AES_IGE$1 = /** @class */ (function () {\n function AES_IGE(key, counter, blockSize) {\n if (blockSize === void 0) { blockSize = 16; }\n this.offset = 0;\n this.key = getWords(key);\n this.counter = getWords(counter);\n this.cipher = new AES(key);\n this.blockSize = blockSize / 4;\n if (this.counter.length !== 4) {\n throw new Error('AES-CTR mode counter must be 16 bytes length');\n }\n }\n /**\n * Encrypts plain text with AES-IGE mode.\n */\n AES_IGE.prototype.encrypt = function (message, buf) {\n var text = getWords(message);\n var cipherText = buf || new Uint32Array(text.length);\n var offset = this.offset;\n for (var i = 0; i < text.length; i += this.blockSize) {\n var x = this.cipher.encrypt(this.counter);\n for (var j = i, k = offset; j < text.length && k < this.blockSize; j++, k++)\n cipherText[j] = x[k] ^ text[j];\n if (text.length - i >= this.blockSize)\n this.incrementCounter();\n if (offset) {\n i -= offset;\n offset = 0;\n }\n }\n this.offset = (this.offset + (text.length % 4)) % 4;\n return cipherText;\n };\n /**\n * Decrypts cipher text with AES-IGE mode.\n */\n AES_IGE.prototype.decrypt = function (message, buf) {\n return this.encrypt(message, buf);\n };\n AES_IGE.prototype.incrementCounter = function () {\n // increment counter\n for (var carry = this.counter.length - 1; carry >= 0; carry--) {\n if (++this.counter[carry] < 0xFFFFFFFF)\n break; // If overflowing, it'll be 0 and we'll have to continue propagating the carry\n }\n };\n return AES_IGE;\n}());\n\nexport default AES;\nexport { AES_IGE$1 as CTR, AES_IGE as IGE };\n","export default function bytesFromWordss(input: Uint32Array) {\n const o = new Uint8Array(input.byteLength);\n for(let i = 0, length = input.length * 4; i < length; ++i) {\n o[i] = ((input[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff);\n }\n\n return o;\n}\n","import convertToUint8Array from \"./convertToUint8Array\";\n\nexport default function bytesToWordss(input: Parameters<typeof convertToUint8Array>[0]) {\n const bytes = convertToUint8Array(input);\n\n const words: number[] = [];\n for(let i = 0, len = bytes.length; i < len; ++i) {\n words[i >>> 2] |= bytes[i] << (24 - (i % 4) * 8);\n }\n\n return new Uint32Array(words);\n}\n","import {IGE} from '@cryptography/aes';\nimport addPadding from '../../../helpers/bytes/addPadding';\nimport bytesFromWordss from '../../../helpers/bytes/bytesFromWordss';\nimport bytesToWordss from '../../../helpers/bytes/bytesToWordss';\n\nexport default function aesSync(bytes: Uint8Array, keyBytes: Uint8Array, ivBytes: Uint8Array, encrypt = true) {\n //console.log(dT(), 'AES start', bytes, keyBytes, ivBytes);\n\n const cipher = new IGE(bytesToWordss(keyBytes), bytesToWordss(ivBytes));\n const performedBytes = cipher[encrypt ? 'encrypt' : 'decrypt'](bytesToWordss(bytes));\n //console.log(dT(), 'AES finish');\n\n return bytesFromWordss(performedBytes);\n}\n\nexport function aesEncryptSync(bytes: Uint8Array, keyBytes: Uint8Array, ivBytes: Uint8Array) {\n return aesSync(addPadding(bytes), keyBytes, ivBytes, true);\n}\n\nexport function aesDecryptSync(bytes: Uint8Array, keyBytes: Uint8Array, ivBytes: Uint8Array) {\n return aesSync(bytes, keyBytes, ivBytes, false);\n}\n","const subtle = typeof(window) !== 'undefined' && 'crypto' in window ? window.crypto.subtle : self.crypto.subtle;\n\nexport default subtle;\n","import subtle from \"../subtle\";\n\nexport default async function pbkdf2(buffer: Parameters<SubtleCrypto['importKey']>[1], salt: HkdfParams['salt'], iterations: number) {\n const importKey = await subtle.importKey(\n 'raw',\n buffer,\n {name: 'PBKDF2'},\n false,\n [/* 'deriveKey', */'deriveBits']\n );\n \n /* await subtle.deriveKey(\n {\n name: 'PBKDF2',\n salt,\n iterations,\n hash: {name: 'SHA-512'}\n },\n importKey,\n {\n name: 'AES-CTR',\n length: 256\n },\n false,\n ['encrypt', 'decrypt']\n ); */\n\n const bits = subtle.deriveBits({\n name: 'PBKDF2',\n salt,\n iterations,\n hash: {name: 'SHA-512'},\n },\n importKey,\n 512\n );\n\n return bits.then(buffer => new Uint8Array(buffer));\n}\n","export default function bytesFromHex(hexString: string) {\n const len = hexString.length;\n const bytes = new Uint8Array(Math.ceil(len / 2));\n let start = 0;\n\n if(len % 2) { // read 0x581 as 0x0581\n bytes[start++] = parseInt(hexString.charAt(0), 16);\n }\n\n for(let i = start; i < len; i += 2) {\n bytes[start++] = parseInt(hexString.substr(i, 2), 16);\n }\n\n return bytes;\n}\n","import type { RSAPublicKeyHex } from \"../../mtproto/rsaKeysManager\";\nimport bytesModPow from \"../../../helpers/bytes/bytesModPow\";\nimport bytesFromHex from \"../../../helpers/bytes/bytesFromHex\";\n\nexport default function rsaEncrypt(bytes: Uint8Array, publicKey: RSAPublicKeyHex) {\n return bytesModPow(bytes, bytesFromHex(publicKey.exponent), bytesFromHex(publicKey.modulus));\n}\n","import convertToUint8Array from \"../../../helpers/bytes/convertToUint8Array\";\nimport subtle from \"../subtle\";\n//import sha1 from '@cryptography/sha1';\n\nexport default function sha1(bytes: Parameters<typeof convertToUint8Array>[0]) {\n return subtle.digest('SHA-1', convertToUint8Array(bytes)).then(b => {\n return new Uint8Array(b);\n });\n /* //console.trace(dT(), 'SHA-1 hash start', bytes);\n\n const hashBytes: number[] = [];\n\n let hash = sha1(String.fromCharCode.apply(null, \n bytes instanceof Uint8Array ? [...bytes] : [...new Uint8Array(bytes)]));\n for(let i = 0; i < hash.length; ++i) {\n hashBytes.push(hash.charCodeAt(i));\n }\n\n //console.log(dT(), 'SHA-1 hash finish', hashBytes, bytesToHex(hashBytes));\n\n return new Uint8Array(hashBytes); */\n}\n","import convertToUint8Array from \"../../../helpers/bytes/convertToUint8Array\";\nimport subtle from \"../subtle\";\n//import sha256 from '@cryptography/sha256';\n\nexport default function sha256(bytes: Parameters<typeof convertToUint8Array>[0]) {\n return subtle.digest('SHA-256', convertToUint8Array(bytes)).then(b => {\n //console.log('legacy', performance.now() - perfS);\n return new Uint8Array(b);\n });\n /* //console.log('SHA-256 hash start');\n\n let perfS = performance.now();\n \n\n let perfD = performance.now();\n let words = typeof(bytes) === 'string' ? bytes : bytesToWordss(bytes as any);\n let hash = sha256(words);\n console.log('darutkin', performance.now() - perfD);\n\n //console.log('SHA-256 hash finish', hash, sha256(words, 'hex'));\n\n return bytesFromWordss(hash); */\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nconst arrays = {\n 8: new Uint8Array(1),\n 16: new Uint16Array(1),\n 32: new Uint32Array(1),\n};\nexport function nextRandomUint(bits: 8 | 16 | 32) {\n const array = arrays[bits];\n crypto.getRandomValues(array);\n return array[0];\n}\n\nexport function randomLong() {\n return '' + nextRandomUint(32) + nextRandomUint(32) % 0xFFFFFF;\n}\n","import bigInt from \"big-integer\";\nimport { nextRandomUint } from \"../random\";\n\nexport default function bigIntRandom(min: bigInt.BigNumber, max: bigInt.BigNumber) {\n return bigInt.randBetween(min, max, () => {\n return nextRandomUint(32) / 0xFFFFFFFF;\n /* const bits = 32;\n const randomBytes = new Uint8Array(bits / 8);\n crypto.getRandomValues(randomBytes);\n const r = bigIntFromBytes(randomBytes).mod(bigInt(2).pow(bits));\n return r.toJSNumber(); */\n });\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\n// Thanks to https://xn--2-umb.com/09/12/brent-pollard-rho-factorisation/\n\nimport bigInt from \"big-integer\";\nimport { bigIntFromBytes, bigIntToBytes } from \"../../../../helpers/bigInt/bigIntConversion\";\nimport bigIntRandom from \"../../../../helpers/bigInt/bigIntRandom\";\n\n// let test = 0;\nfunction BrentPollardFactor(n: bigInt.BigInteger) {\n const two = bigInt[2];\n if(n.remainder(two).isZero()) {\n return two;\n }\n\n const m = bigInt(1000);\n let a: bigInt.BigInteger,\n x: bigInt.BigInteger,\n y: bigInt.BigInteger,\n ys: bigInt.BigInteger,\n r: bigInt.BigInteger,\n q: bigInt.BigInteger,\n g: bigInt.BigInteger;\n do \n a = bigIntRandom(bigInt.one, n.minus(1));\n while(a.isZero() || a.eq(n.minus(two)));\n y = bigIntRandom(bigInt.one, n.minus(1));\n r = bigInt.one;\n q = bigInt.one;\n\n // if(!test++) {\n // a = bigInt(3);\n // y = bigInt(3);\n // }\n\n const bigIntUint64 = bigInt('FFFFFFFFFFFFFFFF', 16);\n const bigIntUint64MinusPqPlusOne = bigIntUint64.minus(n).plus(1);\n\n const performY = (y: bigInt.BigInteger) => {\n y = y.pow(two).mod(n);\n y = y.add(a);\n if(y.lesser(a)) { // it slows down the script\n y = y.add(bigIntUint64MinusPqPlusOne);\n }\n y = y.mod(n);\n return y;\n };\n\n do {\n x = y;\n for(let i = 0; bigInt(i).lesser(r); ++i) {\n y = performY(y);\n }\n\n let k = bigInt.zero;\n do {\n ys = y;\n const condition = bigInt.min(m, r.minus(k));\n for(let i = 0; bigInt(i).lesser(condition); ++i) {\n y = performY(y);\n q = q.multiply(x.greater(y) ? x.minus(y) : y.minus(x)).mod(n);\n }\n g = bigInt.gcd(q, n);\n k = k.add(m);\n } while(k.lesser(r) && g.eq(bigInt.one));\n\n r = r.shiftLeft(bigInt.one);\n } while(g.eq(bigInt.one));\n\n if(g.eq(n)) {\n do {\n ys = performY(ys);\n g = bigInt.gcd(x.minus(ys).abs(), n);\n } while(g.eq(bigInt.one));\n }\n\n return g;\n}\n\nfunction primeFactors(pqBytes: Uint8Array | number[]) {\n const n = bigIntFromBytes(pqBytes);\n\n const factors: bigInt.BigInteger[] = [];\n const primes: bigInt.BigInteger[] = [];\n\n let factor = BrentPollardFactor(n);\n factors.push(n.divide(factor));\n factors.push(factor);\n\n // return [factor];\n\n do {\n const m = factors.pop();\n\n if(m.eq(bigInt.one))\n continue;\n\n if(m.isPrime(true)) {\n primes.push(m);\n\n // Remove the prime from the other factors\n for(let i = 0; i < factors.length; ++i) {\n let k = factors[i];\n if(k.mod(m).isZero()) {\n do\n k = k.divide(m);\n while(k.mod(m).isZero());\n factors[i] = k;\n }\n }\n } else {\n // factor = m.lesser(100) ? bigInt(PollardRho(m.toJSNumber())) : this.brentPollardFactor(m);\n factor = BrentPollardFactor(m);\n factors.push(m.divide(factor));\n factors.push(factor);\n }\n } while(factors.length);\n\n return primes;\n}\n\nexport default function factorizeBrentPollardPQ(pqBytes: Uint8Array | number[]): [Uint8Array, Uint8Array] {\n let factors = primeFactors(pqBytes);\n factors.sort((a, b) => a.compare(b));\n if(factors.length > 2) {\n factors = [\n factors.splice(factors.length - 2, 1)[0], \n factors.reduce((acc, v) => acc.multiply(v), bigInt.one)\n ];\n }\n \n const p = factors[0], q = factors[factors.length - 1];\n return (p.lesser(q) ? [p, q] : [q, p]).map(b => bigIntToBytes(b)) as any;\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport bigInt from \"big-integer\";\nimport randomize from \"../../helpers/array/randomize\";\nimport { bigIntFromBytes } from \"../../helpers/bigInt/bigIntConversion\";\nimport addPadding from \"../../helpers/bytes/addPadding\";\nimport bytesFromHex from \"../../helpers/bytes/bytesFromHex\";\nimport { MessagesDhConfig } from \"../../layer\";\nimport CallInstance from \"../calls/callInstance\";\nimport cryptoWorker from \"../crypto/cryptoworker\";\n\nexport default async function generateDh(dhConfig: MessagesDhConfig.messagesDhConfig) {\n const {p, g} = dhConfig;\n \n const generateA = (p: Uint8Array) => {\n for(;;) {\n const a = randomize(new Uint8Array(p.length));\n // const a = new Uint8Array(4).randomize();\n \n const aBigInt = bigIntFromBytes(a); // str2bigInt(bytesToHex(a), 16);\n if(!aBigInt.greater(bigInt.one)) {\n continue;\n }\n \n const pBigInt = bigIntFromBytes(p); // str2bigInt(bytesToHex(p), 16);\n if(!aBigInt.lesser(pBigInt.subtract(bigInt.one))) {\n continue;\n }\n \n return a;\n }\n };\n \n const a = generateA(p);\n // const a = new Uint8Array([0]);\n \n const gBytes = bytesFromHex(g.toString(16));\n const g_a = addPadding(await cryptoWorker.invokeCrypto('mod-pow', gBytes, a, p), 256, true, true, true);\n const g_a_hash = await cryptoWorker.invokeCrypto('sha256', g_a);\n \n const dh: CallInstance['dh'] = {\n a: a,\n g_a: g_a,\n g_a_hash: g_a_hash,\n p\n };\n \n return dh;\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport { bigIntFromBytes } from \"../../helpers/bigInt/bigIntConversion\";\nimport cryptoWorker from \"./cryptoworker\";\n\nexport default async function computeDhKey(g_b: Uint8Array, a: Uint8Array, p: Uint8Array) {\n const key = await cryptoWorker.invokeCrypto('mod-pow', g_b, a, p);\n const keySha1Hashed = await cryptoWorker.invokeCrypto('sha1', key);\n const key_fingerprint = keySha1Hashed.slice(-8).reverse(); // key_fingerprint: key_fingerprint as any // ! it doesn't work\n const key_fingerprint_long = bigIntFromBytes(key_fingerprint).toString(10); // bigInt2str(str2bigInt(bytesToHex(key_fingerprint), 16), 10);\n\n return {key, key_fingerprint: key_fingerprint_long};\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport cryptoWorker from '../../crypto/cryptoworker';\nimport bigInt from 'big-integer';\n\nfunction readBigIntFromBytesBE(bytes: Uint8Array) {\n const length = bytes.length;\n const bits = length * 8;\n let value = bigInt(bytes[0]).and(0x7F).shiftLeft(bits - 8);\n for(let i = 1; i < length; ++i) {\n const _bits = bits - (i + 1) * 8;\n const b = bigInt(bytes[i]);\n value = value.or(_bits ? b.shiftLeft(_bits) : b);\n }\n \n return value;\n}\n\n// Emojis were taken from tdlib\nconst emojis = [\n '1f609', '1f60d', '1f61b', '1f62d', '1f631', '1f621', '1f60e',\n '1f634', '1f635', '1f608', '1f62c', '1f607', '1f60f', '1f46e',\n '1f477', '1f482', '1f476', '1f468', '1f469', '1f474', '1f475',\n '1f63b', '1f63d', '1f640', '1f47a', '1f648', '1f649', '1f64a',\n '1f480', '1f47d', '1f4a9', '1f525', '1f4a5', '1f4a4', '1f442',\n '1f440', '1f443', '1f445', '1f444', '1f44d', '1f44e', '1f44c',\n '1f44a', '270c', '270b', '1f450', '1f446', '1f447', '1f449',\n '1f448', '1f64f', '1f44f', '1f4aa', '1f6b6', '1f3c3', '1f483',\n '1f46b', '1f46a', '1f46c', '1f46d', '1f485', '1f3a9', '1f451',\n '1f452', '1f45f', '1f45e', '1f460', '1f455', '1f457', '1f456',\n '1f459', '1f45c', '1f453', '1f380', '1f484', '1f49b', '1f499',\n '1f49c', '1f49a', '1f48d', '1f48e', '1f436', '1f43a', '1f431',\n '1f42d', '1f439', '1f430', '1f438', '1f42f', '1f428', '1f43b',\n '1f437', '1f42e', '1f417', '1f434', '1f411', '1f418', '1f43c',\n '1f427', '1f425', '1f414', '1f40d', '1f422', '1f41b', '1f41d',\n '1f41c', '1f41e', '1f40c', '1f419', '1f41a', '1f41f', '1f42c',\n '1f40b', '1f410', '1f40a', '1f42b', '1f340', '1f339', '1f33b',\n '1f341', '1f33e', '1f344', '1f335', '1f334', '1f333', '1f31e',\n '1f31a', '1f319', '1f30e', '1f30b', '26a1', '2614', '2744', '26c4',\n '1f300', '1f308', '1f30a', '1f393', '1f386', '1f383', '1f47b',\n '1f385', '1f384', '1f381', '1f388', '1f52e', '1f3a5', '1f4f7',\n '1f4bf', '1f4bb', '260e', '1f4e1', '1f4fa', '1f4fb', '1f509',\n '1f514', '23f3', '23f0', '231a', '1f512', '1f511', '1f50e',\n '1f4a1', '1f526', '1f50c', '1f50b', '1f6bf', '1f6bd', '1f527',\n '1f528', '1f6aa', '1f6ac', '1f4a3', '1f52b', '1f52a', '1f48a',\n '1f489', '1f4b0', '1f4b5', '1f4b3', '2709', '1f4eb', '1f4e6',\n '1f4c5', '1f4c1', '2702', '1f4cc', '1f4ce', '2712', '270f',\n '1f4d0', '1f4da', '1f52c', '1f52d', '1f3a8', '1f3ac', '1f3a4',\n '1f3a7', '1f3b5', '1f3b9', '1f3bb', '1f3ba', '1f3b8', '1f47e',\n '1f3ae', '1f0cf', '1f3b2', '1f3af', '1f3c8', '1f3c0', '26bd',\n '26be', '1f3be', '1f3b1', '1f3c9', '1f3b3', '1f3c1', '1f3c7',\n '1f3c6', '1f3ca', '1f3c4', '2615', '1f37c', '1f37a', '1f377',\n '1f374', '1f355', '1f354', '1f35f', '1f357', '1f371', '1f35a',\n '1f35c', '1f361', '1f373', '1f35e', '1f369', '1f366', '1f382',\n '1f370', '1f36a', '1f36b', '1f36d', '1f36f', '1f34e', '1f34f',\n '1f34a', '1f34b', '1f352', '1f347', '1f349', '1f353', '1f351',\n '1f34c', '1f350', '1f34d', '1f346', '1f345', '1f33d', '1f3e1',\n '1f3e5', '1f3e6', '26ea', '1f3f0', '26fa', '1f3ed', '1f5fb',\n '1f5fd', '1f3a0', '1f3a1', '26f2', '1f3a2', '1f6a2', '1f6a4',\n '2693', '1f680', '2708', '1f681', '1f682', '1f68b', '1f68e',\n '1f68c', '1f699', '1f697', '1f695', '1f69b', '1f6a8', '1f694',\n '1f692', '1f691', '1f6b2', '1f6a0', '1f69c', '1f6a6', '26a0',\n '1f6a7', '26fd', '1f3b0', '1f5ff', '1f3aa', '1f3ad',\n '1f1ef-1f1f5', '1f1f0-1f1f7', '1f1e9-1f1ea', '1f1e8-1f1f3',\n '1f1fa-1f1f8', '1f1eb-1f1f7', '1f1ea-1f1f8', '1f1ee-1f1f9',\n '1f1f7-1f1fa', '1f1ec-1f1e7', '0031-20e3', '0032-20e3', '0033-20e3',\n '0034-20e3', '0035-20e3', '0036-20e3', '0037-20e3', '0038-20e3', '0039-20e3',\n '0030-20e3', '1f51f', '2757', '2753', '2665', '2666', '1f4af', '1f517',\n '1f531', '1f534', '1f535', '1f536', '1f537'\n];\n\nexport default async function getEmojisFingerprint(key: Uint8Array, g_a: Uint8Array) {\n const arr = key.concat(g_a);\n const hash = await cryptoWorker.invokeCrypto('sha256', arr);\n\n const result: [string, string, string, string] = [] as any;\n const emojisLength = emojis.length;\n\n const kPartSize = 8;\n for(let partOffset = 0; partOffset != hash.length; partOffset += kPartSize) {\n const bytes = hash.slice(partOffset, partOffset + kPartSize);\n const value = readBigIntFromBytesBE(bytes);\n const index = value.mod(emojisLength).toJSNumber();\n\n // const emoji = emojiFromCodePoints(emojis[index]);\n const codePoints = emojis[index];\n result.push(codePoints);\n }\n\n return result;\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n * \r\n * Originally from:\r\n * https://github.com/zhukov/webogram\r\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\r\n * https://github.com/zhukov/webogram/blob/master/LICENSE\r\n */\r\n\r\n// import { MOUNT_CLASS_TO } from '../../config/debug';\r\nimport CryptoWorkerMethods, { CryptoMethods } from './crypto_methods';\r\n\r\n \r\nimport gzipUncompress from '../../helpers/gzipUncompress';\r\nimport bytesModPow from '../../helpers/bytes/bytesModPow';\r\nimport computeSRP from './srp';\r\nimport { aesEncryptSync, aesDecryptSync } from './utils/aesIGE';\r\nimport pbkdf2 from './utils/pbkdf2';\r\nimport rsaEncrypt from './utils/rsa';\r\nimport sha1 from './utils/sha1';\r\nimport sha256 from './utils/sha256';\r\nimport factorizeBrentPollardPQ from './utils/factorize/BrentPollard';\r\nimport generateDh from './generateDh';\r\nimport computeDhKey from './computeDhKey';\r\nimport getEmojisFingerprint from '../calls/helpers/getEmojisFingerprint';\r\n// import factorizeTdlibPQ from './utils/factorize/tdlib';\r\n \r\n\r\ntype Task = {\r\n taskId: number,\r\n task: string,\r\n args: any[]\r\n};\r\n\r\nclass CryptoWorker extends CryptoWorkerMethods {\r\n private webWorker: Worker | boolean = false;\r\n private taskId = 0;\r\n private awaiting: {\r\n [id: number]: {\r\n resolve: any,\r\n reject: any,\r\n taskName: string\r\n }\r\n } = {} as any;\r\n private pending: Array<Task> = [];\r\n private debug = false;\r\n\r\n private utils: CryptoMethods;\r\n\r\n constructor() {\r\n super();\r\n console.log('CW constructor');\r\n\r\n \r\n this.utils = {\r\n 'sha1': sha1,\r\n 'sha256': sha256,\r\n 'pbkdf2': pbkdf2,\r\n 'aes-encrypt': aesEncryptSync,\r\n 'aes-decrypt': aesDecryptSync,\r\n 'rsa-encrypt': rsaEncrypt,\r\n 'factorize': factorizeBrentPollardPQ,\r\n // 'factorize-tdlib': factorizeTdlibPQ, \r\n // 'factorize-new-new': pqPrimeLeemonNew, \r\n 'mod-pow': bytesModPow,\r\n 'gzipUncompress': gzipUncompress,\r\n 'computeSRP': computeSRP,\r\n 'generate-dh': generateDh,\r\n 'compute-dh-key': computeDhKey,\r\n 'get-emojis-fingerprint': getEmojisFingerprint\r\n };\r\n\r\n // Promise.all([\r\n // import('./crypto_utils').then(utils => {\r\n // Object.assign(this.utils, {\r\n // 'sha1-hash': utils.sha1HashSync,\r\n // 'sha256-hash': utils.sha256HashSync,\r\n // 'pbkdf2': utils.hash_pbkdf2,\r\n // 'aes-encrypt': utils.aesEncryptSync,\r\n // 'aes-decrypt': utils.aesDecryptSync,\r\n // 'rsa-encrypt': utils.rsaEncrypt,\r\n // 'factorize': utils.pqPrimeFactorization,\r\n // 'mod-pow': utils.bytesModPow,\r\n // 'gzipUncompress': utils.gzipUncompress,\r\n // });\r\n // }),\r\n\r\n // import('./srp').then(srp => {\r\n // this.utils.computeSRP = srp.computeSRP;\r\n // })/* ,\r\n\r\n // import('../bin_utils').then(utils => {\r\n // this.utils.unzip = utils.gzipUncompress;\r\n // }) */\r\n // ]);\r\n\r\n return;\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n public performTaskWorker<T>(task: string, ...args: any[]) {\r\n this.debug && console.log('CW start', task, args);\r\n\r\n \r\n // @ts-ignore\r\n return Promise.resolve<T>(this.utils[task](...args));\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n}\r\n\r\nconst cryptoWorker = new CryptoWorker();\r\n// MOUNT_CLASS_TO.CryptoWorker = cryptoWorker;\r\nexport default cryptoWorker;\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport type bytesModPow from \"../../helpers/bytes/bytesModPow\";\r\nimport type gzipUncompress from \"../../helpers/gzipUncompress\";\r\nimport type { Awaited } from \"../../types\";\r\nimport type getEmojisFingerprint from \"../calls/helpers/getEmojisFingerprint\";\r\nimport type computeDhKey from \"./computeDhKey\";\r\nimport type generateDh from \"./generateDh\";\r\nimport type computeSRP from \"./srp\";\r\nimport type { aesEncryptSync, aesDecryptSync } from \"./utils/aesIGE\";\r\nimport type factorizeBrentPollardPQ from \"./utils/factorize/BrentPollard\";\r\n// import type factorizeTdlibPQ from \"./utils/factorize/tdlib\";\r\nimport type pbkdf2 from \"./utils/pbkdf2\";\r\nimport type rsaEncrypt from \"./utils/rsa\";\r\nimport type sha1 from \"./utils/sha1\";\r\nimport type sha256 from \"./utils/sha256\";\r\n\r\nexport type CryptoMethods = {\r\n 'sha1': typeof sha1,\r\n 'sha256': typeof sha256,\r\n 'pbkdf2': typeof pbkdf2,\r\n 'aes-encrypt': typeof aesEncryptSync,\r\n 'aes-decrypt': typeof aesDecryptSync,\r\n 'rsa-encrypt': typeof rsaEncrypt,\r\n 'factorize': typeof factorizeBrentPollardPQ,\r\n // 'factorize-tdlib': typeof factorizeTdlibPQ,\r\n 'mod-pow': typeof bytesModPow,\r\n 'gzipUncompress': typeof gzipUncompress,\r\n 'computeSRP': typeof computeSRP,\r\n 'generate-dh': typeof generateDh,\r\n 'compute-dh-key': typeof computeDhKey,\r\n 'get-emojis-fingerprint': typeof getEmojisFingerprint\r\n};\r\n\r\nexport default abstract class CryptoWorkerMethods {\r\n abstract performTaskWorker<T>(task: string, ...args: any[]): Promise<T>;\r\n\r\n public invokeCrypto<Method extends keyof CryptoMethods>(\r\n method: Method, \r\n ...args: Parameters<CryptoMethods[typeof method]>\r\n ): Promise<Awaited<ReturnType<CryptoMethods[typeof method]>>> {\r\n return this.performTaskWorker<Awaited<ReturnType<CryptoMethods[typeof method]>>>(method, ...args as any[]);\r\n }\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport sessionStorage from '../sessionStorage';\nimport { nextRandomUint } from '../../helpers/random';\nimport { MOUNT_CLASS_TO } from '../../config/debug';\nimport { WorkerTaskVoidTemplate } from '../../types';\nimport { notifySomeone } from '../../helpers/context';\nimport longFromInts from '../../helpers/long/longFromInts';\n\n/*\nlet lol: any = {};\nfor(var i = 0; i < 100; i++) {\n timeManager.generateId();\n}\n*/\n\nexport interface ApplyServerTimeOffsetTask extends WorkerTaskVoidTemplate {\n type: 'applyServerTimeOffset',\n payload: TimeManager['timeOffset']\n};\n\nexport class TimeManager {\n private lastMessageId: [number, number] = [0, 0];\n private timeOffset: number = 0;\n\n constructor() {\n sessionStorage.get('server_time_offset').then((to) => {\n if(to) {\n this.timeOffset = to;\n }\n });\n }\n\n public generateId(): string {\n const timeTicks = Date.now(),\n timeSec = Math.floor(timeTicks / 1000) + this.timeOffset,\n timeMSec = timeTicks % 1000,\n random = nextRandomUint(16);\n\n let messageId: TimeManager['lastMessageId'] = [timeSec, (timeMSec << 21) | (random << 3) | 4];\n if(this.lastMessageId[0] > messageId[0] ||\n this.lastMessageId[0] === messageId[0] && this.lastMessageId[1] >= messageId[1]) {\n messageId = [this.lastMessageId[0], this.lastMessageId[1] + 4];\n }\n\n this.lastMessageId = messageId;\n\n const ret = longFromInts(messageId[0], messageId[1]);\n\n // if(lol[ret]) {\n // console.error('[TimeManager]: Generated SAME msg id', messageId, this.timeOffset, ret);\n // }\n // lol[ret] = true;\n\n // console.log('[TimeManager]: Generated msg id', messageId, this.timeOffset, ret);\n\n return ret\n }\n\n public applyServerTime(serverTime: number, localTime?: number) {\n localTime = (localTime || Date.now()) / 1000 | 0;\n const newTimeOffset = serverTime - localTime;\n const changed = Math.abs(this.timeOffset - newTimeOffset) > 10;\n this.lastMessageId = [0, 0];\n\n if(this.timeOffset !== newTimeOffset) {\n sessionStorage.set({\n server_time_offset: newTimeOffset\n });\n\n this.timeOffset = newTimeOffset;\n\n \n const task: ApplyServerTimeOffsetTask = {\n type: 'applyServerTimeOffset',\n payload: newTimeOffset\n };\n notifySomeone(task);\n \n }\n \n //console.log('[TimeManager]: Apply server time', serverTime, localTime, newTimeOffset, changed);\n\n return changed;\n }\n}\n\nconst timeManager = new TimeManager();\nMOUNT_CLASS_TO.timeManager = timeManager;\nexport default timeManager;\n","const ctx = typeof(window) !== 'undefined' ? window : self;\n\nexport default ctx;\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport ctx from './ctx';\r\n\r\nexport const USER_AGENT = navigator ? navigator.userAgent : null;\r\nexport const IS_APPLE = navigator.userAgent.search(/OS X|iPhone|iPad|iOS/i) !== -1;\r\nexport const IS_ANDROID = navigator.userAgent.toLowerCase().indexOf('android') !== -1;\r\nexport const IS_CHROMIUM = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\r\n\r\n// https://stackoverflow.com/a/58065241\r\nexport const IS_APPLE_MOBILE = (/iPad|iPhone|iPod/.test(navigator.platform) ||\r\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&\r\n !(ctx as any).MSStream;\r\n\r\nexport const IS_SAFARI = !!('safari' in ctx) || !!(USER_AGENT && (/\\b(iPad|iPhone|iPod)\\b/.test(USER_AGENT) || (!!USER_AGENT.match('Safari') && !USER_AGENT.match('Chrome'))))/* || true */;\r\nexport const IS_FIREFOX = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\r\n\r\nexport const IS_MOBILE_SAFARI = IS_SAFARI && IS_APPLE_MOBILE;\r\n\r\nexport const IS_MOBILE = /* screen.width && screen.width < 480 || */navigator.maxTouchPoints > 0 && navigator.userAgent.search(/iOS|iPhone OS|Android|BlackBerry|BB10|Series ?[64]0|J2ME|MIDP|opera mini|opera mobi|mobi.+Gecko|Windows Phone/i) != -1;\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport DEBUG from \"../config/debug\";\nimport { IS_FIREFOX, IS_SAFARI } from \"../environment/userAgent\";\nimport { IS_SERVICE_WORKER, IS_WEB_WORKER } from \"../helpers/context\";\n\nexport enum LogTypes {\n None = 0,\n Error = 1,\n Warn = 2,\n Log = 4,\n Debug = 8\n};\n\nexport const LOG_LEVELS = [LogTypes.None, LogTypes.Error, LogTypes.Warn, LogTypes.Log, LogTypes.Debug];\n\nconst _logTimer = Date.now();\nfunction dT() {\n return '[' + ((Date.now() - _logTimer) / 1000).toFixed(3) + ']';\n}\n\nlet getCallerFunctionNameFromLine: (line: string) => string;\n\nconst IS_WEBKIT = IS_SAFARI || IS_FIREFOX;\n\nif(IS_WEBKIT) {\n getCallerFunctionNameFromLine = (line) => {\n const splitted = line.split('@');\n return splitted[0];\n };\n} else {\n getCallerFunctionNameFromLine = (line: string) => {\n const splitted = line.trim().split(' ');\n if(splitted.length === 3) {\n return splitted[1].slice(splitted[1].lastIndexOf('.') + 1);\n }\n };\n}\n\nconst STYLES_SUPPORTED = !IS_WEBKIT;\nconst LINE_INDEX = IS_WEBKIT ? 2 : 3;\n\nfunction getCallerFunctionName() {\n const stack = new Error().stack;\n const lines = stack.split('\\n');\n const line = lines[LINE_INDEX] || lines[lines.length - 1];\n // const match = line.match(/\\.([^\\.]+?)\\s/);\n // line = match ? match[1] : line.trim();\n const caller = getCallerFunctionNameFromLine(line) || '<anonymous>';\n return '[' + caller + ']';\n}\n\nexport const LOGGER_STYLES = {\n reset: \"\\x1b[0m\",\n bright: \"\\x1b[1m\",\n dim: \"\\x1b[2m\",\n underscore: \"\\x1b[4m\",\n blink: \"\\x1b[5m\",\n reverse: \"\\x1b[7m\",\n hidden: \"\\x1b[8m\",\n // Foreground (text) colors\n fg: {\n black: \"\\x1b[30m\",\n red: \"\\x1b[31m\",\n green: \"\\x1b[32m\",\n yellow: \"\\x1b[33m\",\n blue: \"\\x1b[34m\",\n magenta: \"\\x1b[35m\",\n cyan: \"\\x1b[36m\",\n white: \"\\x1b[37m\"\n },\n // Background colors\n bg: {\n black: \"\\x1b[40m\",\n red: \"\\x1b[41m\",\n green: \"\\x1b[42m\",\n yellow: \"\\x1b[43m\",\n blue: \"\\x1b[44m\",\n magenta: \"\\x1b[45m\",\n cyan: \"\\x1b[46m\",\n white: \"\\x1b[47m\"\n }\n};\n\nexport type Logger = {\n (...args: any[]): void;\n warn(...args: any[]): void;\n info(...args: any[]): void;\n error(...args: any[]): void;\n trace(...args: any[]): void;\n debug(...args: any[]): void;\n assert(...args: any[]): void;\n // log(...args: any[]): void;\n setPrefix(newPrefix: string): void;\n setLevel(level: 0 | 1 | 2 | 3 | 4): void;\n bindPrefix(prefix: string): Logger;\n};\n\nconst methods: ['debug' | 'info' | 'warn' | 'error' | 'assert' | 'trace'/* | 'log' */, LogTypes][] = [\n [\"debug\", LogTypes.Debug], \n [\"info\", LogTypes.Log], \n [\"warn\", LogTypes.Warn], \n [\"error\", LogTypes.Error], \n [\"assert\", LogTypes.Error],\n [\"trace\", LogTypes.Log],\n // [\"log\", LogTypes.Log]\n];\n\nexport function logger(prefix: string, type: LogTypes = LogTypes.Log | LogTypes.Warn | LogTypes.Error, ignoreDebugReset = false, style = ''): Logger {\n let originalPrefix: string;\n if(!DEBUG && !ignoreDebugReset/* || true */) {\n type = LogTypes.Error;\n }\n\n if(!STYLES_SUPPORTED) {\n style = '';\n } else if(!style) {\n if(IS_SERVICE_WORKER) style = LOGGER_STYLES.fg.yellow;\n else if(IS_WEB_WORKER) style = LOGGER_STYLES.fg.cyan;\n }\n\n let originalStyle = style;\n if(style) style = `%s ${style}%s`;\n else style = '%s';\n\n //level = LogLevels.log | LogLevels.warn | LogLevels.error | LogLevels.debug\n\n const log: Logger = function(...args: any[]) {\n return type & LogTypes.Log && console.log(style, dT(), prefix, getCallerFunctionName(), ...args);\n } as any;\n\n methods.forEach(([method, logType]) => {\n log[method] = function(...args: any[]) {\n return type & logType && console[method](style, dT(), prefix, getCallerFunctionName(), ...args);\n };\n });\n\n log.setPrefix = function(newPrefix: string) {\n originalPrefix = newPrefix;\n prefix = '[' + newPrefix + ']';\n };\n\n log.setPrefix(prefix);\n\n log.setLevel = function(level: 0 | 1 | 2 | 3 | 4) {\n type = LOG_LEVELS.slice(0, level + 1).reduce((acc, v) => acc | v, 0) as any;\n };\n\n log.bindPrefix = function(prefix: string) {\n return logger(`${originalPrefix}] [${prefix}`, type, ignoreDebugReset, originalStyle);\n };\n\n return log;\n};\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport type { DcId } from \"../types\";\n\nexport const MAIN_DOMAIN = 'web.telegram.org';\n\nconst App = {\n id: +process.env.API_ID,\n hash: process.env.API_HASH,\n version: process.env.VERSION,\n versionFull: process.env.VERSION_FULL,\n build: +process.env.BUILD,\n langPackVersion: '0.4.0',\n langPack: 'macos',\n langPackCode: 'en',\n domains: [MAIN_DOMAIN] as string[],\n baseDcId: 2 as DcId,\n isMainDomain: location.hostname === MAIN_DOMAIN,\n suffix: 'K'\n};\n\nif(App.isMainDomain) { // use Webogram credentials then\n App.id = 2496;\n App.hash = '8da85b0d5bfe62527e5b244c209159c3';\n}\n\nexport default App;\n","export default function noop() {}\r\n","export default function pause(ms: number) {\r\n return new Promise<void>((resolve) => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport noop from \"./noop\";\r\n\r\nexport interface CancellablePromise<T> extends Promise<T> {\r\n resolve?: (value: T) => void,\r\n reject?: (...args: any[]) => void,\r\n cancel?: () => void,\r\n\r\n notify?: (...args: any[]) => void,\r\n notifyAll?: (...args: any[]) => void,\r\n lastNotify?: any,\r\n listeners?: Array<(...args: any[]) => void>,\r\n addNotifyListener?: (callback: (...args: any[]) => void) => void,\r\n\r\n isFulfilled?: boolean,\r\n isRejected?: boolean\r\n}\r\n\r\nexport default function deferredPromise<T>() {\r\n let deferredHelper: any = {\r\n isFulfilled: false, \r\n isRejected: false,\r\n\r\n notify: () => {}, \r\n notifyAll: (...args: any[]) => {\r\n deferredHelper.lastNotify = args;\r\n deferredHelper.listeners.forEach((callback: any) => callback(...args));\r\n }, \r\n\r\n listeners: [],\r\n addNotifyListener: (callback: (...args: any[]) => void) => {\r\n if(deferredHelper.lastNotify) {\r\n callback(...deferredHelper.lastNotify);\r\n }\r\n\r\n deferredHelper.listeners.push(callback);\r\n }\r\n };\r\n\r\n let deferred: CancellablePromise<T> = new Promise<T>((resolve, reject) => {\r\n deferredHelper.resolve = (value: T) => {\r\n if(deferred.isFulfilled || deferred.isRejected) return;\r\n\r\n deferred.isFulfilled = true;\r\n resolve(value);\r\n };\r\n \r\n deferredHelper.reject = (...args: any[]) => {\r\n if(deferred.isRejected || deferred.isFulfilled) return;\r\n \r\n deferred.isRejected = true;\r\n reject(...args);\r\n };\r\n });\r\n\r\n // @ts-ignore\r\n /* deferred.then = (resolve: (value: T) => any, reject: (...args: any[]) => any) => {\r\n const n = deferredPromise<ReturnType<typeof resolve>>();\r\n \r\n }; */\r\n\r\n deferred.catch(noop).finally(() => {\r\n deferred.notify = deferred.notifyAll = deferred.lastNotify = null;\r\n deferred.listeners.length = 0;\r\n\r\n if(deferred.cancel) {\r\n deferred.cancel = () => {};\r\n }\r\n });\r\n\r\n Object.assign(deferred, deferredHelper);\r\n\r\n return deferred;\r\n}\r\n","export default function findAndSplice<T>(array: Array<T>, verify: (value: T, index?: number, array?: Array<T>) => boolean) {\n const index = array.findIndex(verify);\n return index !== -1 ? array.splice(index, 1)[0] : undefined;\n};\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\n//import { MOUNT_CLASS_TO } from \"../config/debug\";\r\nimport type { ArgumentTypes, SuperReturnType } from \"../types\";\r\nimport findAndSplice from \"./array/findAndSplice\";\r\n\r\n// class EventSystem {\r\n// wm: WeakMap<any, Record<any, Set<any>>> = new WeakMap();\r\n\r\n// add(target: any, event: any, listener: any) {\r\n// let listeners = this.wm.get(target);\r\n// if (listeners === undefined) {\r\n// listeners = {};\r\n// }\r\n// let listenersForEvent = listeners[event];\r\n// if (listenersForEvent === undefined) {\r\n// listenersForEvent = new Set();\r\n// }\r\n// listenersForEvent.add(listener);\r\n// listeners[event] = listenersForEvent;\r\n// //target.addEventListener(event, listener);\r\n// this.wm.set(target, listeners);\r\n// };\r\n\r\n// remove(target: any, event: any, listener: any) {\r\n// let listeners = this.wm.get(target);\r\n// if (!listeners) return;\r\n// let listenersForEvent = listeners[event];\r\n// if (!listenersForEvent) return;\r\n// listenersForEvent.delete(listener);\r\n// };\r\n \r\n// /* fire(target, event) {\r\n// let listeners = this.wm.get(target);\r\n// if (!listeners) return;\r\n// let listenersForEvent = listeners[event];\r\n// if (!listenersForEvent) return;\r\n// for (let handler of handlers) {\r\n// setTimeout(handler, 0, event, target); // we use a setTimeout here because we want event triggering to be asynchronous. \r\n// }\r\n// }; */\r\n// }\r\n\r\n// console.log = () => {};\r\n\r\n// const e = new EventSystem();\r\n// MOUNT_CLASS_TO.e = e;\r\n\r\nexport type EventListenerListeners = Record<string, Function>;\r\n// export type EventListenerListeners = Record<string, (...args: any[]) => any>;\r\n// export type EventListenerListeners = {[name in string]: Function};\r\n\r\n/**\r\n * Better not to remove listeners during setting\r\n * Should add listener callback only once\r\n */\r\n\r\n// type EventLitenerCallback<T> = (data: T) => \r\n// export default class EventListenerBase<Listeners extends {[name: string]: Function}> {\r\nexport default class EventListenerBase<Listeners extends EventListenerListeners> {\r\n protected listeners: Partial<{\r\n [k in keyof Listeners]: Array<{callback: Listeners[k], options: boolean | AddEventListenerOptions}>\r\n }>;\r\n protected listenerResults: Partial<{\r\n [k in keyof Listeners]: ArgumentTypes<Listeners[k]>\r\n }>;\r\n\r\n private reuseResults: boolean;\r\n\r\n constructor(reuseResults?: boolean) {\r\n this._constructor(reuseResults);\r\n }\r\n\r\n public _constructor(reuseResults = false): any {\r\n this.reuseResults = reuseResults;\r\n this.listeners = {};\r\n this.listenerResults = {};\r\n }\r\n\r\n public addEventListener<T extends keyof Listeners>(name: T, callback: Listeners[T], options?: boolean | AddEventListenerOptions) {\r\n (this.listeners[name] ?? (this.listeners[name] = [])).push({callback, options}); // ! add before because if you don't, you won't be able to delete it from callback\r\n\r\n if(this.listenerResults.hasOwnProperty(name)) {\r\n callback(...this.listenerResults[name]);\r\n \r\n if((options as AddEventListenerOptions)?.once) {\r\n this.listeners[name].pop();\r\n return;\r\n }\r\n }\r\n \r\n //e.add(this, name, {callback, once});\r\n }\r\n\r\n public addMultipleEventsListeners(obj: {\r\n [name in keyof Listeners]?: Listeners[name]\r\n }) {\r\n for(const i in obj) {\r\n this.addEventListener(i, obj[i]);\r\n }\r\n }\r\n\r\n public removeEventListener<T extends keyof Listeners>(name: T, callback: Listeners[T], options?: boolean | AddEventListenerOptions) {\r\n if(this.listeners[name]) {\r\n findAndSplice(this.listeners[name], l => l.callback === callback);\r\n }\r\n //e.remove(this, name, callback);\r\n }\r\n\r\n // * must be protected, but who cares\r\n private _dispatchEvent<T extends keyof Listeners>(name: T, collectResults: boolean, ...args: ArgumentTypes<Listeners[T]>) {\r\n if(this.reuseResults) {\r\n this.listenerResults[name] = args;\r\n }\r\n\r\n const arr: Array<SuperReturnType<Listeners[typeof name]>> = collectResults && [];\r\n\r\n const listeners = this.listeners[name];\r\n if(listeners) {\r\n // ! this one will guarantee execution even if delete another listener during setting\r\n const left = listeners.slice();\r\n left.forEach((listener) => {\r\n const index = listeners.findIndex((l) => l.callback === listener.callback);\r\n if(index === -1) {\r\n return;\r\n }\r\n\r\n let result: any;\r\n try {\r\n result = listener.callback(...args);\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n\r\n if(arr) {\r\n arr.push(result);\r\n }\r\n\r\n if((listener.options as AddEventListenerOptions)?.once) {\r\n this.removeEventListener(name, listener.callback);\r\n }\r\n });\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n public dispatchResultableEvent<T extends keyof Listeners>(name: T, ...args: ArgumentTypes<Listeners[T]>) {\r\n return this._dispatchEvent(name, true, ...args);\r\n }\r\n\r\n // * must be protected, but who cares\r\n public dispatchEvent<L extends EventListenerListeners = Listeners, T extends keyof L = keyof L>(name: T, ...args: ArgumentTypes<L[T]>) {\r\n // @ts-ignore\r\n this._dispatchEvent(name, false, ...args);\r\n }\r\n\r\n public cleanup() {\r\n this.listeners = {}; \r\n this.listenerResults = {};\r\n }\r\n}\r\n","export default function indexOfAndSplice<T>(array: Array<T>, item: T) {\n const idx = array.indexOf(item);\n const spliced = idx !== -1 && array.splice(idx, 1);\n return spliced && spliced[0];\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { logger, LogTypes } from '../../logger';\r\nimport Modes from '../../../config/modes';\r\nimport EventListenerBase from '../../../helpers/eventListenerBase';\r\nimport { MTConnection } from './transport';\r\n\r\n// let closeSocketBefore = Date.now() + 30e3;\r\n// let closeSocketAfter = Date.now() + 10e3;\r\n\r\nexport default class Socket extends EventListenerBase<{\r\n open: () => void,\r\n message: (buffer: ArrayBuffer) => any,\r\n close: () => void,\r\n}> implements MTConnection {\r\n private ws: WebSocket;\r\n private log: ReturnType<typeof logger>;\r\n private debug = Modes.debug && false;\r\n\r\n constructor(protected dcId: number, protected url: string, logSuffix: string) {\r\n super();\r\n\r\n let logTypes = LogTypes.Error | LogTypes.Log;\r\n if(this.debug) logTypes |= LogTypes.Debug;\r\n this.log = logger(`WS-${dcId}` + logSuffix, logTypes);\r\n this.log('constructor');\r\n this.connect();\r\n\r\n return this;\r\n }\r\n\r\n private removeListeners() {\r\n if(!this.ws) {\r\n return;\r\n }\r\n\r\n this.ws.removeEventListener('open', this.handleOpen);\r\n this.ws.removeEventListener('close', this.handleClose);\r\n this.ws.removeEventListener('error', this.handleError);\r\n this.ws.removeEventListener('message', this.handleMessage);\r\n this.ws = undefined;\r\n }\r\n \r\n private connect() {\r\n this.ws = new WebSocket(this.url, 'binary');\r\n this.ws.binaryType = 'arraybuffer';\r\n this.ws.addEventListener('open', this.handleOpen);\r\n this.ws.addEventListener('close', this.handleClose);\r\n this.ws.addEventListener('error', this.handleError);\r\n this.ws.addEventListener('message', this.handleMessage);\r\n\r\n // if(Date.now() < closeSocketBefore) {\r\n // if(Date.now() >= closeSocketAfter) {\r\n // this.ws.close();\r\n // }\r\n }\r\n\r\n public close() {\r\n if(!this.ws) {\r\n return;\r\n }\r\n\r\n this.log('close execution');\r\n\r\n try {\r\n this.ws.close();\r\n } catch(err) {\r\n\r\n }\r\n this.handleClose();\r\n }\r\n \r\n private handleOpen = () => {\r\n this.log('opened');\r\n\r\n this.debug && this.log.debug('sending init packet');\r\n this.dispatchEvent('open');\r\n };\r\n\r\n private handleError = (e: Event) => {\r\n this.log.error('handleError', e);\r\n this.close();\r\n };\r\n\r\n private handleClose = () => {\r\n this.log('closed'/* , event, this.pending, this.ws.bufferedAmount */);\r\n\r\n this.removeListeners();\r\n this.dispatchEvent('close');\r\n };\r\n\r\n private handleMessage = (event: MessageEvent) => {\r\n this.debug && this.log.debug('<-', 'handleMessage', /* event, */event.data.byteLength);\r\n\r\n this.dispatchEvent('message', event.data as ArrayBuffer);\r\n };\r\n\r\n public send = (body: Uint8Array) => {\r\n this.debug && this.log.debug('-> body length to send:', body.length);\r\n\r\n this.ws.send(body);\r\n };\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\n//import aesjs from 'aes-js';\r\nimport AES from \"@cryptography/aes\";\r\nimport randomize from \"../../../helpers/array/randomize\";\r\nimport bytesFromWordss from \"../../../helpers/bytes/bytesFromWordss\";\r\nimport { Codec } from \"./codec\";\r\n\r\nclass Counter {\r\n public counter: Uint8Array;\r\n\r\n constructor(initialValue: Uint8Array) {\r\n this.counter = initialValue;\r\n }\r\n\r\n public increment() {\r\n const counter = this.counter;\r\n for(let i = 15; i >= 0; --i) {\r\n if(counter[i] === 255) {\r\n counter[i] = 0;\r\n } else {\r\n ++counter[i];\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n\r\nclass CTR {\r\n #counter: Counter;\r\n #remainingCounter: Uint8Array;\r\n #remainingCounterIndex: number;\r\n #aes: AES;\r\n\r\n constructor(key: Uint8Array, counter: Uint8Array) {\r\n this.#counter = new Counter(counter);\r\n this.#aes = new AES(key);\r\n this.#remainingCounterIndex = 16;\r\n }\r\n\r\n public update(payload: Uint8Array) {\r\n const encrypted = payload.slice();\r\n\r\n for(let i = 0; i < encrypted.length; ++i) {\r\n if(this.#remainingCounterIndex === 16) {\r\n this.#remainingCounter = new Uint8Array(bytesFromWordss(this.#aes.encrypt(this.#counter.counter)));\r\n this.#remainingCounterIndex = 0;\r\n this.#counter.increment();\r\n }\r\n\r\n encrypted[i] ^= this.#remainingCounter[this.#remainingCounterIndex++];\r\n }\r\n\r\n return encrypted;\r\n }\r\n}\r\n\r\n/* \r\n@cryptography/aes не работает с массивами которые не кратны 4, поэтому использую intermediate а не abridged\r\n*/\r\nexport default class Obfuscation {\r\n /* private enc: aesjs.ModeOfOperation.ModeOfOperationCTR;\r\n private dec: aesjs.ModeOfOperation.ModeOfOperationCTR; */\r\n\r\n private encNew: CTR;\r\n private decNew: CTR;\r\n // private cryptoEncKey: CryptoKey;\r\n // encIv: Uint8Array;\r\n\r\n public /* async */ init(codec: Codec) {\r\n const initPayload = new Uint8Array(64);\r\n randomize(initPayload);\r\n \r\n while(true) {\r\n const val = (initPayload[3] << 24) | (initPayload[2] << 16) | (initPayload[1] << 8) | initPayload[0];\r\n const val2 = (initPayload[7] << 24) | (initPayload[6] << 16) | (initPayload[5] << 8) | initPayload[4];\r\n if(initPayload[0] !== 0xef &&\r\n val !== 0x44414548 &&\r\n val !== 0x54534f50 &&\r\n val !== 0x20544547 &&\r\n val !== 0x4954504f &&\r\n val !== 0xeeeeeeee &&\r\n val !== 0xdddddddd &&\r\n val2 !== 0x00000000) {\r\n //initPayload[56] = initPayload[57] = initPayload[58] = initPayload[59] = transport;\r\n break;\r\n }\r\n randomize(initPayload);\r\n }\r\n\r\n ////////////////////////initPayload.subarray(60, 62).hex = dcId;\r\n /* initPayload.set(new Uint8Array([161, 208, 67, 71, 118, 109, 20, 111, 113, 255, 134, 10, 159, 241, 7, 44, 217, 82, 187, 76, 108, 131, 200, 186, 33, 57, 177, 251, 52, 34, 18, 54, 65, 105, 37, 89, 38, 20, 47, 168, 126, 181, 24, 138, 212, 68, 60, 150, 225, 37, 181, 4, 201, 50, 72, 151, 168, 143, 204, 169, 81, 187, 241, 23]));\r\n console.log('initPayload', initPayload); */\r\n\r\n const reversedPayload = initPayload.slice().reverse();\r\n\r\n const encKey = initPayload.slice(8, 40);\r\n const encIv = /* this.encIv = */initPayload.slice(40, 56);\r\n const decKey = reversedPayload.slice(8, 40);\r\n const decIv = reversedPayload.slice(40, 56);\r\n\r\n /* this.enc = new aesjs.ModeOfOperation.ctr(encKey, new aesjs.Counter(encIv as any));\r\n this.dec = new aesjs.ModeOfOperation.ctr(decKey, new aesjs.Counter(decIv as any)); */\r\n\r\n // console.log('encKey', encKey.hex, encIv.hex);\r\n // console.log('decKey', decKey.hex, decIv.hex);\r\n\r\n this.encNew = new CTR(encKey, encIv);\r\n this.decNew = new CTR(decKey, decIv);\r\n\r\n /* const key = this.cryptoEncKey = await subtle.importKey(\r\n 'raw',\r\n encKey,\r\n {name: 'AES-CTR'},\r\n false,\r\n ['encrypt']\r\n ); */\r\n\r\n initPayload.set(codec.obfuscateTag, 56);\r\n const encrypted = /* await */ this.encode(initPayload);\r\n\r\n //console.log('encrypted', encrypted);\r\n\r\n initPayload.set(encrypted.slice(56, 64), 56);\r\n\r\n return initPayload;\r\n }\r\n\r\n /* public encode(payload: Uint8Array) {\r\n let startTime = performance.now();\r\n let res = this.enc.encrypt(payload);\r\n let time = performance.now() - startTime;\r\n\r\n try {\r\n startTime = performance.now();\r\n let arr = this.encNew.encrypt(payload);\r\n //let resNew = bytesFromWords({words: arr, sigBytes: arr.length});\r\n let resNew = new Uint8Array(bytesFromWordss(arr));\r\n let time2 = performance.now() - startTime;\r\n console.log('Obfuscation: encode comparison:', res, arr, resNew, res.hex === resNew.hex, time2 < time);\r\n } catch(err) {\r\n console.error('Obfuscation: error:', err);\r\n }\r\n \r\n return res;\r\n }\r\n\r\n public decode(payload: Uint8Array) {\r\n let res = this.dec.encrypt(payload);\r\n\r\n try {\r\n let arr = this.decNew.decrypt(payload);\r\n //let resNew = bytesFromWords({words: arr, sigBytes: arr.length});\r\n let resNew = new Uint8Array(bytesFromWordss(arr));\r\n console.log('Obfuscation: decode comparison:', res, arr, resNew, res.hex === resNew.hex);\r\n } catch(err) {\r\n console.error('Obfuscation: error:', err);\r\n }\r\n \r\n return res;\r\n } */\r\n public encode(payload: Uint8Array) {\r\n /* return subtle.encrypt({\r\n name: 'AES-CTR',\r\n counter: this.encIv,\r\n length: 64\r\n },\r\n this.cryptoEncKey,\r\n payload\r\n ); */\r\n return this.encNew.update(payload);\r\n }\r\n\r\n public decode(payload: Uint8Array) {\r\n return this.decNew.update(payload);\r\n }\r\n /* public encode(payload: Uint8Array) {\r\n let res = this.encNew.encrypt(payload);\r\n let bytes = new Uint8Array(bytesFromWordss(res));\r\n \r\n return bytes;\r\n }\r\n\r\n public decode(payload: Uint8Array) {\r\n let res = this.decNew.decrypt(payload);\r\n let bytes = new Uint8Array(bytesFromWordss(res));\r\n \r\n return bytes;\r\n } */\r\n}","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { Codec } from \"./codec\";\r\n\r\nexport class IntermediatePacketCodec implements Codec {\r\n public tag = 0xee;\r\n public obfuscateTag = new Uint8Array([this.tag, this.tag, this.tag, this.tag]);\r\n\r\n //private lol = 0;\r\n\r\n public encodePacket(data: Uint8Array) {\r\n if((data.length % 4) !== 0) {\r\n console.error('Encode error!', data.length, data);\r\n }\r\n\r\n const len = data.length;\r\n const header = new Uint8Array(new Int32Array([/* ++this.lol >= 25 ? 0x80000001 : */len]).buffer);\r\n\r\n //console.log('got nobody cause im braindead', header, len, /* data, */data.buffer.byteLength === data.length);\r\n return header.concat(data);\r\n }\r\n\r\n public readPacket(data: Uint8Array) {\r\n const length = data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24);\r\n\r\n return data.slice(4, 4 + length);\r\n }\r\n}\r\n\r\nexport default new IntermediatePacketCodec();\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nexport enum ConnectionStatus {\r\n Connected,\r\n Connecting,\r\n Closed,\r\n TimedOut\r\n};\r\n\r\nexport type ConnectionStatusChange = {\r\n _: 'networkerStatus', \r\n status: ConnectionStatus,\r\n dcId: number,\r\n name: string,\r\n isFileNetworker: boolean,\r\n isFileDownload: boolean,\r\n isFileUpload: boolean,\r\n retryAt?: number\r\n};\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport Modes from \"../../../config/modes\";\nimport { logger, LogTypes } from \"../../logger\";\nimport MTPNetworker from \"../networker\";\nimport Obfuscation from \"./obfuscation\";\nimport MTTransport, { MTConnection, MTConnectionConstructable } from \"./transport\";\nimport intermediatePacketCodec from './intermediate';\nimport { ConnectionStatus } from \"../connectionStatus\";\n\n \nimport transportController from \"./controller\";\nimport bytesToHex from \"../../../helpers/bytes/bytesToHex\";\n \n\nexport default class TcpObfuscated implements MTTransport {\n private codec = intermediatePacketCodec;\n private obfuscation = new Obfuscation();\n public networker: MTPNetworker;\n\n private pending: Array<Partial<{\n resolve: any, \n reject: any, \n body: Uint8Array, \n encoded?: Uint8Array,\n bodySent: boolean\n }>> = [];\n\n private debug = Modes.debug && false/* true */;\n private log: ReturnType<typeof logger>;\n public connected = false;\n private lastCloseTime: number;\n public connection: MTConnection;\n\n private autoReconnect = true;\n private reconnectTimeout: number;\n\n //private debugPayloads: MTPNetworker['debugRequests'] = [];\n\n constructor(private Connection: MTConnectionConstructable, \n private dcId: number, \n private url: string, \n private logSuffix: string, \n private retryTimeout: number\n ) {\n let logTypes = LogTypes.Error | LogTypes.Log;\n if(this.debug) logTypes |= LogTypes.Debug;\n this.log = logger(`TCP-${dcId}` + logSuffix, logTypes);\n this.log('constructor');\n \n this.connect();\n }\n\n private onOpen = /* async */() => {\n this.connected = true;\n\n \n transportController.setTransportOpened('websocket');\n \n\n const initPayload = /* await */ this.obfuscation.init(this.codec);\n\n this.connection.send(initPayload);\n\n if(this.networker) {\n this.pending.length = 0; // ! clear queue and reformat messages to container, because if sending simultaneously 10+ messages, connection will die\n this.networker.setConnectionStatus(ConnectionStatus.Connected);\n this.networker.cleanupSent();\n this.networker.resend();\n } else {\n for(const pending of this.pending) {\n if(pending.encoded && pending.body) {\n pending.encoded = this.encodeBody(pending.body);\n }\n }\n }\n\n setTimeout(() => {\n this.releasePending();\n }, 0);\n };\n\n private onMessage = (buffer: ArrayBuffer) => {\n let data = this.obfuscation.decode(new Uint8Array(buffer));\n data = this.codec.readPacket(data);\n\n if(this.networker) { // authenticated!\n //this.pending = this.pending.filter(p => p.body); // clear pending\n\n this.debug && this.log.debug('redirecting to networker', data.length);\n this.networker.parseResponse(data).then(response => {\n this.debug && this.log.debug('redirecting to networker response:', response);\n\n try {\n this.networker.processMessage(response.response, response.messageId, response.sessionId);\n } catch(err) {\n this.log.error('handleMessage networker processMessage error', err);\n }\n\n //this.releasePending();\n }).catch(err => {\n this.log.error('handleMessage networker parseResponse error', err);\n });\n\n //this.dd();\n return;\n }\n\n //console.log('got hex:', data.hex);\n const pending = this.pending.shift();\n if(!pending) {\n this.debug && this.log.debug('no pending for res:', bytesToHex(data));\n return;\n }\n\n pending.resolve(data);\n };\n\n private onClose = () => {\n this.clear();\n \n let needTimeout: number, retryAt: number;\n if(this.autoReconnect) {\n const time = Date.now();\n const diff = time - this.lastCloseTime;\n needTimeout = !isNaN(diff) && diff < this.retryTimeout ? this.retryTimeout - diff : 0;\n retryAt = time + needTimeout;\n }\n \n if(this.networker) {\n this.networker.setConnectionStatus(ConnectionStatus.Closed, retryAt);\n this.pending.length = 0;\n }\n\n if(this.autoReconnect) {\n this.log('will try to reconnect after timeout:', needTimeout / 1000);\n this.reconnectTimeout = self.setTimeout(this.reconnect, needTimeout);\n } else {\n this.log('reconnect isn\\'t needed');\n }\n };\n\n public clear() {\n \n if(this.connected) {\n transportController.setTransportClosed('websocket');\n }\n \n\n this.connected = false;\n\n if(this.connection) {\n this.connection.removeEventListener('open', this.onOpen);\n this.connection.removeEventListener('close', this.onClose);\n this.connection.removeEventListener('message', this.onMessage);\n this.connection = undefined;\n }\n }\n\n /**\n * invoke only when closed\n */\n public reconnect = () => {\n if(this.reconnectTimeout !== undefined) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = undefined;\n }\n\n if(this.connection) {\n return;\n }\n\n this.log('trying to reconnect...');\n this.lastCloseTime = Date.now();\n \n if(!this.networker) {\n for(const pending of this.pending) {\n if(pending.bodySent) {\n pending.bodySent = false;\n }\n }\n } else {\n this.networker.setConnectionStatus(ConnectionStatus.Connecting);\n }\n\n this.connect();\n }\n\n public forceReconnect() {\n this.close();\n this.reconnect();\n }\n\n public destroy() {\n this.setAutoReconnect(false);\n this.close();\n\n this.pending.forEach(pending => {\n if(pending.reject) {\n pending.reject();\n }\n });\n this.pending.length = 0;\n }\n\n public close() {\n const connection = this.connection;\n if(connection) {\n const connected = this.connected;\n this.clear();\n if(connected) { // wait for buffered messages if they are there\n connection.addEventListener('message', this.onMessage);\n connection.addEventListener('close', () => {\n connection.removeEventListener('message', this.onMessage);\n }, {once: true});\n connection.close();\n }\n }\n }\n\n /**\n * Will connect if enable and disconnected \\\n * Will reset reconnection timeout if disable\n */\n public setAutoReconnect(enable: boolean) {\n this.autoReconnect = enable;\n\n if(!enable) {\n if(this.reconnectTimeout !== undefined) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = undefined;\n }\n } else if(!this.connection && this.reconnectTimeout === undefined) {\n this.reconnect();\n }\n }\n\n private connect() {\n if(this.connection) {\n this.close();\n }\n\n this.connection = new this.Connection(this.dcId, this.url, this.logSuffix);\n this.connection.addEventListener('open', this.onOpen);\n this.connection.addEventListener('close', this.onClose);\n this.connection.addEventListener('message', this.onMessage);\n }\n\n private encodeBody(body: Uint8Array) {\n const toEncode = this.codec.encodePacket(body);\n\n //this.log('send before obf:', /* body.hex, nonce.hex, */ toEncode.hex);\n const encoded = this.obfuscation.encode(toEncode);\n //this.log('send after obf:', enc.hex);\n\n return encoded;\n }\n\n public send(body: Uint8Array) {\n this.debug && this.log.debug('-> body length to pending:', body.length);\n\n const encoded: typeof body = this.connected ? this.encodeBody(body) : undefined;\n\n //return;\n\n if(this.networker) {\n this.pending.push({body, encoded});\n this.releasePending();\n } else {\n const promise = new Promise<typeof body>((resolve, reject) => {\n this.pending.push({resolve, reject, body, encoded});\n });\n\n this.releasePending();\n\n return promise;\n }\n }\n\n private releasePending(/* tt = false */) {\n if(!this.connected) {\n //this.connect();\n return;\n }\n\n /* if(!tt) {\n this.releasePendingDebounced();\n return;\n } */\n\n //this.log('-> messages to send:', this.pending.length);\n let length = this.pending.length;\n //for(let i = length - 1; i >= 0; --i) {\n for(let i = 0; i < length; ++i) {\n const pending = this.pending[i];\n const {body, bodySent} = pending;\n let encoded = pending.encoded;\n if(body && !bodySent) {\n\n //this.debugPayloads.push({before: body.slice(), after: enc});\n\n this.debug && this.log.debug('-> body length to send:', body.length);\n\n if(!encoded) {\n encoded = pending.encoded = this.encodeBody(body);\n }\n\n this.connection.send(encoded);\n \n if(!pending.resolve) { // remove if no response needed\n this.pending.splice(i--, 1);\n length--;\n } else {\n pending.bodySent = true;\n }\n\n //delete pending.body;\n }\n }\n }\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport { notifyAll } from \"../../../helpers/context\";\r\nimport EventListenerBase from \"../../../helpers/eventListenerBase\";\r\nimport { WorkerTaskVoidTemplate } from \"../../../types\";\r\nimport { MTConnection } from \"./transport\";\r\n\r\nlet socketId = 0;\r\nexport interface SocketProxyTask extends WorkerTaskVoidTemplate {\r\n type: 'socketProxy',\r\n payload: SocketProxySetupTask | SocketProxySendTask | SocketProxyCloseTask\r\n};\r\n\r\nexport interface SocketProxySetupTask extends WorkerTaskVoidTemplate {\r\n type: 'setup',\r\n payload: {\r\n dcId: number,\r\n url: string,\r\n logSuffix: string\r\n },\r\n id: number\r\n};\r\n\r\nexport interface SocketProxySendTask extends WorkerTaskVoidTemplate {\r\n type: 'send',\r\n payload: Uint8Array,\r\n id: number\r\n};\r\n\r\nexport interface SocketProxyCloseTask extends WorkerTaskVoidTemplate {\r\n type: 'close',\r\n id: number\r\n};\r\n\r\n \r\nexport default class SocketProxied extends EventListenerBase<{\r\n open: () => void,\r\n message: (buffer: ArrayBuffer) => any,\r\n close: () => void,\r\n}> implements MTConnection {\r\n private id: number;\r\n\r\n constructor(protected dcId: number, protected url: string, logSuffix: string) {\r\n super();\r\n this.id = ++socketId;\r\n socketsProxied.set(this.id, this);\r\n\r\n const task: SocketProxyTask = {\r\n type: 'socketProxy',\r\n payload: {\r\n type: 'setup', \r\n payload: {\r\n dcId, \r\n url,\r\n logSuffix\r\n },\r\n id: this.id\r\n }\r\n };\r\n\r\n notifyAll(task);\r\n }\r\n\r\n public send(payload: Uint8Array) {\r\n const task: SocketProxyTask = {\r\n type: 'socketProxy', \r\n payload: {\r\n type: 'send',\r\n payload,\r\n id: this.id\r\n }\r\n };\r\n\r\n notifyAll(task);\r\n }\r\n\r\n public close() {\r\n const task: SocketProxyTask = {\r\n type: 'socketProxy',\r\n payload: {\r\n type: 'close',\r\n id: this.id\r\n }\r\n };\r\n\r\n notifyAll(task);\r\n }\r\n}\r\n \r\n\r\nexport const socketsProxied: Map<number, SocketProxied> = new Map();\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n * \r\n * Originally from:\r\n * https://github.com/zhukov/webogram\r\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\r\n * https://github.com/zhukov/webogram/blob/master/LICENSE\r\n */\r\n\r\nimport MTTransport, { MTConnectionConstructable } from './transports/transport';\r\nimport Modes from '../../config/modes';\r\nimport App from '../../config/app';\r\nimport indexOfAndSplice from '../../helpers/array/indexOfAndSplice';\r\nimport { MOUNT_CLASS_TO } from '../../config/debug';\r\n\r\n \r\nimport HTTP from './transports/http';\r\n \r\n\r\n \r\nimport Socket from './transports/websocket';\r\nimport TcpObfuscated from './transports/tcpObfuscated';\r\nimport { IS_SAFARI } from '../../environment/userAgent';\r\nimport { IS_WEB_WORKER } from '../../helpers/context';\r\nimport SocketProxied from './transports/socketProxied';\r\nimport { DcId } from '../../types';\r\n \r\n\r\nexport type TransportType = 'websocket' | 'https' | 'http';\r\nexport type ConnectionType = 'client' | 'download' | 'upload';\r\ntype Servers = {\r\n [transportType in TransportType]: {\r\n [connectionType in ConnectionType]: {\r\n [dcId: DcId]: MTTransport[]\r\n }\r\n }\r\n};\r\n\r\nconst TEST_SUFFIX = Modes.test ? '_test' : '';\r\n\r\nexport class DcConfigurator {\r\n private sslSubdomains = ['pluto', 'venus', 'aurora', 'vesta', 'flora'];\r\n\r\n private dcOptions = Modes.test\r\n ? [\r\n {id: 1, host: '149.154.175.10', port: 80},\r\n {id: 2, host: '149.154.167.40', port: 80},\r\n {id: 3, host: '149.154.175.117', port: 80}\r\n ]\r\n : [\r\n {id: 1, host: '149.154.175.50', port: 80},\r\n {id: 2, host: '149.154.167.50', port: 80},\r\n {id: 3, host: '149.154.175.100', port: 80},\r\n {id: 4, host: '149.154.167.91', port: 80},\r\n {id: 5, host: '149.154.171.5', port: 80}\r\n ];\r\n\r\n public chosenServers: Servers = {} as any;\r\n\r\n \r\n private transportSocket = (dcId: DcId, connectionType: ConnectionType, suffix: string) => {\r\n const path = 'apiws' + TEST_SUFFIX;\r\n const chosenServer = `wss://${App.suffix.toLowerCase()}ws${dcId}${suffix}.web.telegram.org/${path}`;\r\n const logSuffix = connectionType === 'upload' ? '-U' : connectionType === 'download' ? '-D' : '';\r\n\r\n const retryTimeout = connectionType === 'client' ? 10000 : 10000;\r\n\r\n const oooohLetMeLive: MTConnectionConstructable = (IS_SAFARI && IS_WEB_WORKER && typeof(SocketProxied) !== 'undefined') /* || true */ ? SocketProxied : Socket;\r\n\r\n return new TcpObfuscated(oooohLetMeLive, dcId, chosenServer, logSuffix, retryTimeout);\r\n };\r\n \r\n\r\n \r\n private transportHTTP = (dcId: DcId, connectionType: ConnectionType, suffix: string) => {\r\n let chosenServer: string;\r\n if(Modes.ssl || !Modes.http) {\r\n const subdomain = this.sslSubdomains[dcId - 1] + (connectionType !== 'client' ? '-1' : '');\r\n const path = Modes.test ? 'apiw_test1' : 'apiw1';\r\n chosenServer = 'https://' + subdomain + '.web.telegram.org/' + path;\r\n } else {\r\n for(let dcOption of this.dcOptions) {\r\n if(dcOption.id === dcId) {\r\n chosenServer = 'http://' + dcOption.host + (dcOption.port !== 80 ? ':' + dcOption.port : '') + '/apiw1';\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const logSuffix = connectionType === 'upload' ? '-U' : connectionType === 'download' ? '-D' : '';\r\n return new HTTP(dcId, chosenServer, logSuffix);\r\n };\r\n \r\n\r\n public chooseServer(\r\n dcId: DcId, \r\n connectionType: ConnectionType = 'client', \r\n transportType: TransportType = Modes.transport, \r\n reuse = true\r\n ) {\r\n /* if(transportType === 'websocket' && !Modes.multipleConnections) {\r\n connectionType = 'client';\r\n } */\r\n\r\n if(!this.chosenServers.hasOwnProperty(transportType)) {\r\n this.chosenServers[transportType] = {\r\n client: {},\r\n download: {},\r\n upload: {}\r\n };\r\n }\r\n\r\n const servers = this.chosenServers[transportType][connectionType];\r\n\r\n if(!(dcId in servers)) {\r\n servers[dcId] = [];\r\n }\r\n\r\n const transports = servers[dcId];\r\n\r\n if(!transports.length || !reuse/* || (upload && transports.length < 1) */) {\r\n let transport: MTTransport;\r\n\r\n const suffix = connectionType === 'client' ? '' : '-1';\r\n\r\n \r\n transport = (transportType === 'websocket' ? this.transportSocket : this.transportHTTP)(dcId, connectionType, suffix);\r\n \r\n \r\n \r\n \r\n \r\n \r\n if(!transport) {\r\n console.error('No chosenServer!', dcId);\r\n return null;\r\n }\r\n \r\n if(reuse) {\r\n transports.push(transport);\r\n }\r\n \r\n return transport;\r\n }\r\n \r\n return transports[0];\r\n }\r\n \r\n public static removeTransport<T>(obj: any, transport: T) {\r\n for(const transportType in obj) {\r\n // @ts-ignore\r\n for(const connectionType in obj[transportType]) {\r\n // @ts-ignore\r\n for(const dcId in obj[transportType][connectionType]) {\r\n // @ts-ignore\r\n const transports: T[] = obj[transportType][connectionType][dcId];\r\n indexOfAndSplice(transports, transport);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst dcConfigurator = new DcConfigurator();\r\nMOUNT_CLASS_TO && (MOUNT_CLASS_TO.dcConfigurator = dcConfigurator);\r\nexport default dcConfigurator;\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport App from \"../../../config/app\";\nimport deferredPromise from \"../../../helpers/cancellablePromise\";\nimport EventListenerBase from \"../../../helpers/eventListenerBase\";\nimport pause from \"../../../helpers/schedulers/pause\";\nimport dcConfigurator, { TransportType } from \"../dcConfigurator\";\nimport type HTTP from \"./http\";\nimport type TcpObfuscated from \"./tcpObfuscated\";\nimport MTTransport from \"./transport\";\n\nexport class MTTransportController extends EventListenerBase<{\n change: (opened: MTTransportController['opened']) => void,\n transport: (type: TransportType) => void\n}> {\n private opened: Map<TransportType, number>;\n private transports: {[k in TransportType]?: MTTransport};\n private pinging: boolean;\n\n constructor() {\n super(true);\n\n this.opened = new Map();\n /* this.addEventListener('change', (opened) => {\n this.dispatchEvent('transport', opened.get('websocket') || !opened.get('https') ? 'websocket' : 'https');\n }); */\n\n this.addEventListener('change', (opened) => {\n if(!opened.get('websocket')) {\n this.waitForWebSocket();\n }\n });\n\n setTimeout(() => {\n this.waitForWebSocket();\n }, 200); // wait for first transport so won't have delay for first WS\n }\n\n public async pingTransports() {\n const timeout = 2000;\n const transports: {[k in TransportType]?: MTTransport} = this.transports = {\n https: dcConfigurator.chooseServer(App.baseDcId, 'client', 'https', false),\n websocket: dcConfigurator.chooseServer(App.baseDcId, 'client', 'websocket', false)\n };\n\n const httpPromise = deferredPromise<boolean>();\n ((this.transports.https as HTTP)._send(new Uint8Array(), 'no-cors') as any as Promise<any>)\n .then(() => httpPromise.resolve(true), () => httpPromise.resolve(false));\n setTimeout(() => httpPromise.resolve(false), timeout);\n\n const websocketPromise = deferredPromise<boolean>();\n const socket = transports.websocket as TcpObfuscated;\n socket.setAutoReconnect(false);\n socket.connection.addEventListener('close', () => websocketPromise.resolve(false), {once: true});\n socket.connection.addEventListener('open', () => websocketPromise.resolve(true), {once: true});\n setTimeout(() => {\n if(websocketPromise.isFulfilled || websocketPromise.isRejected) {\n return;\n }\n\n if(socket.connection) {\n socket.connection.close();\n }\n \n websocketPromise.resolve(false);\n }, timeout);\n\n const [isHttpAvailable, isWebSocketAvailable] = await Promise.all([httpPromise, websocketPromise]);\n\n for(const transportType in transports) {\n const transport = transports[transportType as TransportType];\n transport.destroy();\n }\n\n const result = {\n https: isHttpAvailable || this.opened.get('https') > 0,\n websocket: isWebSocketAvailable || this.opened.get('websocket') > 0\n };\n\n // result.websocket = false;\n return result;\n }\n\n public async waitForWebSocket() {\n if(this.pinging) return;\n this.pinging = true;\n\n while(true) {\n const {https, websocket} = await this.pingTransports();\n if(https || websocket) {\n this.dispatchEvent('transport', websocket || !https ? 'websocket' : 'https');\n }\n\n if(websocket) {\n break;\n }\n\n await pause(10000);\n }\n\n this.pinging = false;\n }\n\n public setTransportValue(type: TransportType, value: boolean) {\n let length = this.opened.get(type) || 0;\n length += value ? 1 : -1;\n \n this.opened.set(type, length);\n this.dispatchEvent('change', this.opened);\n }\n\n public setTransportOpened(type: TransportType) {\n return this.setTransportValue(type, true);\n }\n\n public setTransportClosed(type: TransportType) {\n return this.setTransportValue(type, false);\n }\n}\n\nconst transportController = new MTTransportController();\nexport default transportController;\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport pause from '../../../helpers/schedulers/pause';\r\nimport { DcId } from '../../../types';\r\nimport { logger, LogTypes } from '../../logger';\r\nimport type MTPNetworker from '../networker';\r\nimport MTTransport from './transport';\r\nimport Modes from '../../../config/modes';\r\n\r\n \r\nimport transportController from './controller';\r\n \r\n\r\nexport default class HTTP implements MTTransport {\r\n public networker: MTPNetworker;\r\n private log: ReturnType<typeof logger>;\r\n\r\n private pending: Array<{\r\n resolve: (body: Uint8Array) => void, \r\n reject: any, \r\n body: Uint8Array\r\n }> = [];\r\n private releasing: boolean;\r\n\r\n public connected: boolean;\r\n private destroyed: boolean;\r\n private debug: boolean;\r\n \r\n constructor(protected dcId: DcId, protected url: string, logSuffix: string) {\r\n this.debug = Modes.debug && false;\r\n\r\n let logTypes = LogTypes.Error | LogTypes.Log;\r\n if(this.debug) logTypes |= LogTypes.Debug;\r\n \r\n this.log = logger(`HTTP-${dcId}` + logSuffix, logTypes);\r\n this.log('constructor');\r\n\r\n this.connected = false;\r\n }\r\n\r\n public _send(body: Uint8Array, mode?: RequestMode) {\r\n this.debug && this.log.debug('-> body length to send:', body.length);\r\n\r\n return fetch(this.url, {method: 'POST', body, mode}).then(response => {\r\n if(response.status !== 200 && !mode) {\r\n response.arrayBuffer().then(buffer => {\r\n this.log.error('not 200', \r\n new TextDecoder(\"utf-8\").decode(new Uint8Array(buffer)));\r\n });\r\n\r\n throw response;\r\n }\r\n\r\n this.setConnected(true);\r\n\r\n // * test resending by dropping random request\r\n // if(Math.random() > .5) {\r\n // throw 'asd';\r\n // }\r\n\r\n return response.arrayBuffer().then(buffer => {\r\n return new Uint8Array(buffer);\r\n }); \r\n }, (err) => {\r\n this.setConnected(false);\r\n throw err;\r\n });\r\n }\r\n\r\n private setConnected(connected: boolean) {\r\n if(this.connected === connected || this.destroyed) {\r\n return;\r\n }\r\n\r\n this.connected = connected;\r\n\r\n \r\n transportController.setTransportValue('https', connected);\r\n \r\n }\r\n\r\n public destroy() {\r\n this.setConnected(false);\r\n this.destroyed = true;\r\n this.pending.forEach(pending => pending.reject());\r\n this.pending.length = 0;\r\n }\r\n\r\n public send(body: Uint8Array) {\r\n if(this.networker) {\r\n return this._send(body);\r\n } else {\r\n const promise = new Promise<typeof body>((resolve, reject) => {\r\n this.pending.push({resolve, reject, body});\r\n });\r\n\r\n this.releasePending();\r\n\r\n return promise;\r\n }\r\n }\r\n\r\n private async releasePending() {\r\n if(this.releasing) return;\r\n\r\n this.releasing = true;\r\n // this.log('-> messages to send:', this.pending.length);\r\n for(let i = 0; i < this.pending.length; ++i) {\r\n const pending = this.pending[i];\r\n const {body, resolve} = pending;\r\n\r\n try {\r\n const result = await this._send(body);\r\n resolve(result);\r\n this.pending.splice(i, 1);\r\n } catch(err) {\r\n this.log.error('Send plain request error:', err);\r\n await pause(5000);\r\n }\r\n\r\n --i;\r\n }\r\n\r\n this.releasing = false;\r\n }\r\n}\r\n","export default function bytesCmp(bytes1: number[] | Uint8Array, bytes2: number[] | Uint8Array) {\n const len = bytes1.length;\n if(len !== bytes2.length) {\n return false;\n }\n\n for(let i = 0; i < len; ++i) {\n if(bytes1[i] !== bytes2[i]) {\n return false;\n }\n }\n\n return true;\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport {TLDeserialization, TLSerialization} from './tl_utils';\nimport CryptoWorker from '../crypto/cryptoworker';\nimport sessionStorage from '../sessionStorage';\nimport Schema from './schema';\nimport timeManager from './timeManager';\nimport networkerFactory from './networkerFactory';\nimport { logger, LogTypes } from '../logger';\nimport { InvokeApiOptions } from '../../types';\nimport longToBytes from '../../helpers/long/longToBytes';\nimport MTTransport from './transports/transport';\nimport { nextRandomUint, randomLong } from '../../helpers/random';\nimport App from '../../config/app';\nimport DEBUG from '../../config/debug';\nimport Modes from '../../config/modes';\nimport noop from '../../helpers/noop';\n\n \nimport HTTP from './transports/http';\n \n\nimport type TcpObfuscated from './transports/tcpObfuscated';\nimport bigInt from 'big-integer';\nimport { ConnectionStatus } from './connectionStatus';\nimport ctx from '../../environment/ctx';\nimport bufferConcats from '../../helpers/bytes/bufferConcats';\nimport bytesCmp from '../../helpers/bytes/bytesCmp';\nimport bytesToHex from '../../helpers/bytes/bytesToHex';\nimport convertToUint8Array from '../../helpers/bytes/convertToUint8Array';\nimport isObject from '../../helpers/object/isObject';\nimport forEachReverse from '../../helpers/array/forEachReverse';\nimport sortLongsArray from '../../helpers/long/sortLongsArray';\nimport randomize from '../../helpers/array/randomize';\nimport deferredPromise, { CancellablePromise } from '../../helpers/cancellablePromise';\nimport pause from '../../helpers/schedulers/pause';\n\n//console.error('networker included!', new Error().stack);\n\nexport type MTMessageOptions = InvokeApiOptions & Partial<{\n noResponse: true, // http_wait\n longPoll: true,\n \n notContentRelated: true, // ACK\n noSchedule: true,\n // withResult: true,\n messageId: MTLong,\n}>;\n\nexport type MTMessage = InvokeApiOptions & MTMessageOptions & {\n msg_id: MTLong,\n seq_no: number,\n body?: Uint8Array | number[],\n isAPI?: boolean,\n // only these four are important\n\n acked?: boolean,\n\n deferred?: CancellablePromise<void>,\n\n container?: boolean,\n inner?: MTLong[],\n\n // below - options\n\n notContentRelated?: true,\n noSchedule?: true,\n\n resultType?: string,\n\n longPoll?: true,\n noResponse?: true, // only with http (http_wait for longPoll)\n};\n\nconst DRAIN_TIMEOUT = 10000;\nconst delays: {\n [k in 'client' | 'file']: {\n disconnectDelayMin: number,\n disconnectDelayMax: number,\n pingInterval: number,\n pingMaxTime: number,\n connectionTimeout: number\n }\n} = {\n client: {\n disconnectDelayMin: 7,\n disconnectDelayMax: 20,\n pingInterval: 2000,\n pingMaxTime: 5,\n connectionTimeout: 5000\n },\n file: {\n disconnectDelayMin: 10,\n disconnectDelayMax: 24,\n pingInterval: 3000,\n pingMaxTime: 7,\n connectionTimeout: 7500\n }\n};\nconst RESEND_OPTIONS: MTMessageOptions = {\n noSchedule: true,\n notContentRelated: true\n};\nlet invokeAfterMsgConstructor: number;\n\nexport default class MTPNetworker {\n private authKeyUint8: Uint8Array;\n\n public isFileNetworker: boolean;\n private isFileUpload: boolean;\n private isFileDownload: boolean;\n\n private lastServerMessages: Array<MTLong> = [];\n\n private sentMessages: {\n [msgId: MTLong]: MTMessage\n } = {};\n\n private pendingMessages: {[msgId: MTLong]: number} = {};\n private pendingAcks: Array<MTLong> = [];\n private pendingResendReq: MTLong[] = [];\n // private pendingResendAnsReq: MTLong[] = [];\n public connectionInited: boolean;\n\n private nextReqTimeout: number;\n private nextReq: number = 0;\n \n \n private longPollInterval: number;\n private longPollPending: number;\n private checkConnectionRetryAt: number;\n private checkConnectionTimeout: number;\n private checkConnectionPeriod = 0;\n private sleepAfter: number;\n private offline = false;\n private sendingLongPoll: boolean;\n \n\n private seqNo: number;\n private prevSessionId: Uint8Array;\n private sessionId: Uint8Array;\n private serverSalt: Uint8Array;\n\n private lastResendReq: {\n reqMsgId: MTLong,\n msgIds: MTPNetworker['pendingResendReq']\n };\n // private lastResendAnsReq: MTPNetworker['lastResendReq'];\n\n private name: string;\n private log: ReturnType<typeof logger>;\n \n public isOnline = false;\n private status: ConnectionStatus = ConnectionStatus.Closed;\n private lastResponseTime = 0;\n\n private debug = DEBUG /* && false */ || Modes.debug;\n\n public activeRequests = 0;\n\n public onDrain: () => void;\n private onDrainTimeout: number;\n\n public transport: MTTransport;\n\n \n private pingDelayDisconnectDeferred: CancellablePromise<string>;\n private pingPromise: Promise<void>;\n // private pingInterval: number;\n private lastPingTime: number;\n private lastPingDelayDisconnectId: string;\n \n //public onConnectionStatusChange: (online: boolean) => void;\n\n //private debugRequests: Array<{before: Uint8Array, after: Uint8Array}> = [];\n\n private delays: typeof delays[keyof typeof delays];\n // private getNewTimeOffset: boolean;\n\n constructor(\n public dcId: number, \n private authKey: Uint8Array, \n private authKeyId: Uint8Array,\n serverSalt: Uint8Array, \n options: InvokeApiOptions = {}\n ) {\n this.authKeyUint8 = convertToUint8Array(this.authKey);\n this.serverSalt = convertToUint8Array(serverSalt);\n\n this.isFileUpload = !!options.fileUpload;\n this.isFileDownload = !!options.fileDownload;\n this.isFileNetworker = this.isFileUpload || this.isFileDownload;\n this.delays = this.isFileNetworker ? delays.file : delays.client;\n\n const suffix = this.isFileUpload ? '-U' : this.isFileDownload ? '-D' : '';\n this.name = 'NET-' + dcId + suffix;\n //this.log = logger(this.name, this.upload && this.dcId === 2 ? LogLevels.debug | LogLevels.warn | LogLevels.log | LogLevels.error : LogLevels.error);\n this.log = logger(this.name, LogTypes.Log | LogTypes.Debug | LogTypes.Error | LogTypes.Warn, undefined);\n this.log('constructor'/* , this.authKey, this.authKeyID, this.serverSalt */);\n\n // Test resend after bad_server_salt\n /* if(this.dcId === 2 && this.upload) {\n //timeManager.applyServerTime((Date.now() / 1000 - 86400) | 0);\n this.serverSalt[0] = 0;\n } */\n\n this.updateSession();\n\n // if(!NetworkerFactory.offlineInited) {\n // NetworkerFactory.offlineInited = true;\n // /* rootScope.offline = true\n // rootScope.offlineConnecting = true */\n // }\n }\n\n private updateSession() {\n this.seqNo = 0;\n this.prevSessionId = this.sessionId;\n this.sessionId = randomize(new Uint8Array(8));\n }\n\n /* private clearContainers() {\n for(const messageId in this.sentMessages) {\n const message = this.sentMessages[messageId];\n if(message.container) {\n delete this.sentMessages[messageId];\n }\n }\n } */\n\n private updateSentMessage(sentMessageId: string) {\n const sentMessage = this.sentMessages[sentMessageId];\n if(!sentMessage) {\n return false;\n }\n\n if(sentMessage.container) {\n forEachReverse(sentMessage.inner, (innerSentMessageId, idx) => {\n const innerSentMessage = this.updateSentMessage(innerSentMessageId);\n if(!innerSentMessage) {\n sentMessage.inner.splice(idx, 1);\n } else {\n sentMessage.inner[idx] = innerSentMessage.msg_id;\n }\n });\n }\n \n sentMessage.msg_id = timeManager.generateId();\n sentMessage.seq_no = this.generateSeqNo(sentMessage.notContentRelated || sentMessage.container);\n\n if(this.debug) {\n this.log(`updateSentMessage, old=${sentMessageId}, new=${sentMessage.msg_id}`);\n }\n\n this.sentMessages[sentMessage.msg_id] = sentMessage;\n delete this.sentMessages[sentMessageId];\n \n return sentMessage;\n }\n\n private generateSeqNo(notContentRelated?: boolean) {\n let seqNo = this.seqNo * 2;\n \n if(!notContentRelated) {\n seqNo++;\n this.seqNo++;\n }\n \n return seqNo;\n }\n\n public wrapMtpCall(method: string, params: any, options: MTMessageOptions) {\n const serializer = new TLSerialization({mtproto: true});\n \n serializer.storeMethod(method, params);\n \n const messageId = timeManager.generateId();\n const seqNo = this.generateSeqNo();\n const message = {\n msg_id: messageId,\n seq_no: seqNo,\n body: serializer.getBytes(true)\n };\n \n if(Modes.debug) {\n this.log('MT call', method, params, messageId, seqNo);\n }\n \n return this.pushMessage(message, options);\n }\n \n public wrapMtpMessage(object: any, options: MTMessageOptions) {\n const serializer = new TLSerialization({mtproto: true});\n serializer.storeObject(object, 'Object');\n \n const messageId = timeManager.generateId();\n const seqNo = this.generateSeqNo(options.notContentRelated);\n const message = {\n msg_id: messageId,\n seq_no: seqNo,\n body: serializer.getBytes(true)\n };\n \n if(Modes.debug) {\n this.log('MT message', object, messageId, seqNo);\n }\n \n return this.pushMessage(message, options);\n }\n\n public wrapApiCall(method: string, params: any = {}, options: InvokeApiOptions = {}) {\n const serializer = new TLSerialization(options);\n \n if(!this.connectionInited) { // this will call once for each new session\n ///////this.log('Wrap api call !this.connectionInited');\n\n const invokeWithLayer = Schema.API.methods.find(m => m.method === 'invokeWithLayer');\n if(!invokeWithLayer) throw new Error('no invokeWithLayer!');\n serializer.storeInt(+invokeWithLayer.id, 'invokeWithLayer');\n\n // @ts-ignore\n serializer.storeInt(Schema.layer, 'layer');\n \n const initConnection = Schema.API.methods.find(m => m.method === 'initConnection');\n if(!initConnection) throw new Error('no initConnection!');\n \n serializer.storeInt(+initConnection.id, 'initConnection');\n serializer.storeInt(0x0, 'flags');\n serializer.storeInt(App.id, 'api_id');\n serializer.storeString(networkerFactory.userAgent || 'Unknown UserAgent', 'device_model');\n serializer.storeString(navigator.platform || 'Unknown Platform', 'system_version');\n serializer.storeString(App.version + (App.isMainDomain ? ' ' + App.suffix : ''), 'app_version');\n serializer.storeString(navigator.language || 'en', 'system_lang_code');\n serializer.storeString(App.langPack, 'lang_pack');\n serializer.storeString(networkerFactory.language, 'lang_code');\n //serializer.storeInt(0x0, 'proxy');\n /* serializer.storeMethod('initConnection', {\n 'flags': 0,\n 'api_id': App.id,\n 'device_model': navigator.userAgent || 'Unknown UserAgent',\n 'system_version': navigator.platform || 'Unknown Platform',\n 'app_version': App.version,\n 'system_lang_code': navigator.language || 'en',\n 'lang_pack': '',\n 'lang_code': navigator.language || 'en'\n }); */\n }\n \n if(options.afterMessageId) {\n if(invokeAfterMsgConstructor === undefined) {\n const m = Schema.API.methods.find(m => m.method === 'invokeAfterMsg');\n invokeAfterMsgConstructor = m ? +m.id : 0;\n }\n \n if(invokeAfterMsgConstructor) {\n // if(this.debug) {\n // this.log('invokeApi: store invokeAfterMsg');\n // }\n \n serializer.storeInt(invokeAfterMsgConstructor, 'invokeAfterMsg');\n serializer.storeLong(options.afterMessageId, 'msg_id');\n } else {\n this.log.error('no invokeAfterMsg!');\n }\n }\n \n options.resultType = serializer.storeMethod(method, params);\n\n /* if(method === 'account.updateNotifySettings') {\n this.log('api call body:', serializer.getBytes(true));\n } */\n \n const messageId = timeManager.generateId();\n const seqNo = this.generateSeqNo();\n const message = {\n msg_id: messageId,\n seq_no: seqNo,\n body: serializer.getBytes(true),\n isAPI: true\n };\n \n if(Modes.debug/* || true */) {\n this.log('Api call', method, message, params, options);\n } else if(this.debug) {\n this.log('Api call', method, params, options);\n }\n \n return this.pushMessage(message, options);\n }\n\n public changeTransport(transport?: MTTransport) {\n const oldTransport = this.transport;\n if(oldTransport) {\n oldTransport.destroy();\n\n if(this.nextReqTimeout) {\n clearTimeout(this.nextReqTimeout);\n this.nextReqTimeout = 0;\n this.nextReq = 0;\n }\n\n this.connectionInited = false;\n\n \n if(this.longPollInterval !== undefined) {\n clearInterval(this.longPollInterval);\n this.longPollInterval = undefined;\n }\n\n this.clearCheckConnectionTimeout();\n \n }\n\n this.log('change transport', transport, oldTransport);\n\n \n this.clearPingDelayDisconnect();\n\n // if(this.pingInterval !== undefined) {\n // clearInterval(this.pingInterval);\n // this.pingInterval = undefined;\n // }\n\n // this.clearPing();\n \n\n this.transport = transport;\n if(!transport) {\n return;\n }\n\n transport.networker = this;\n\n \n \n if(transport instanceof HTTP) {\n \n this.longPollInterval = ctx.setInterval(this.checkLongPoll, 10000);\n this.checkLongPoll();\n this.checkConnection('changed transport');\n \n }\n \n \n\n \n // * handle outcoming dead socket, server will close the connection\n if((transport as TcpObfuscated).connection) {\n // this.sendPingDelayDisconnect();\n\n if(transport.connected) {\n this.setConnectionStatus(ConnectionStatus.Connected);\n }\n\n // this.pingInterval = ctx.setInterval(this.sendPing, PING_INTERVAL);\n // this.sendPing();\n }\n \n\n this.resend();\n }\n\n public destroy() {\n this.log('destroy');\n }\n\n public forceReconnectTimeout() {\n if((this.transport as TcpObfuscated).reconnect) {\n (this.transport as TcpObfuscated).reconnect();\n } else {\n this.resend();\n }\n }\n\n public forceReconnect() {\n if((this.transport as TcpObfuscated).forceReconnect) {\n (this.transport as TcpObfuscated).forceReconnect();\n } else {\n this.checkConnection('force reconnect');\n }\n }\n\n /* private clearPing() {\n if(this.pingPromise) {\n this.pingPromise = undefined;\n }\n\n this.lastPingTime = undefined;\n }\n \n private sendPing = () => {\n // return;\n \n // if(!(this.transport as TcpObfuscated).connected) {\n // this.clearPing();\n // return;\n // }\n\n if(this.pingPromise) {\n return;\n }\n\n const startTime = Date.now();\n this.log('sendPing: ping', startTime);\n const promise = this.pingPromise = this.wrapMtpCall('ping', {\n ping_id: randomLong()\n }, {\n notContentRelated: true\n }).then(() => {\n const elapsedTime = Date.now() - startTime;\n this.lastPingTime = elapsedTime / 1000;\n this.log('sendPing: pong', elapsedTime);\n \n setTimeout(() => {\n if(this.pingPromise !== promise) {\n return;\n }\n \n this.pingPromise = undefined;\n this.sendPing();\n }, Math.max(0, PING_INTERVAL - elapsedTime));\n });\n }; */\n\n private clearPingDelayDisconnect() {\n const deferred = this.pingDelayDisconnectDeferred;\n this.pingDelayDisconnectDeferred = undefined;\n this.lastPingDelayDisconnectId = undefined;\n\n if(deferred) {\n deferred.reject();\n }\n }\n\n private sendPingDelayDisconnect = () => {\n // return;\n\n if(this.pingDelayDisconnectDeferred || !this.transport || !this.transport.connected) return;\n\n /* if(!this.isOnline) {\n if((this.transport as TcpObfuscated).connected) {\n (this.transport as TcpObfuscated).connection.close();\n }\n\n return;\n } */\n\n const deferred = this.pingDelayDisconnectDeferred = deferredPromise();\n const delays = this.delays;\n const pingMaxTime = this.delays.pingMaxTime;\n const lastPingTime = Math.min(this.lastPingTime ?? 0, pingMaxTime);\n const disconnectDelay = Math.round(delays.disconnectDelayMin + lastPingTime / pingMaxTime * (delays.disconnectDelayMax - delays.disconnectDelayMin));\n const timeoutTime = disconnectDelay * 1000;\n const startTime = Date.now();\n const pingId = this.lastPingDelayDisconnectId = randomLong();\n const options: MTMessageOptions = {notContentRelated: true};\n this.wrapMtpCall('ping_delay_disconnect', {\n ping_id: pingId,\n disconnect_delay: disconnectDelay\n }, options);\n \n this.log(`sendPingDelayDisconnect: ping, timeout=${timeoutTime}, lastPingTime=${this.lastPingTime}, msgId=${options.messageId}`);\n const rejectTimeout = self.setTimeout(deferred.reject, timeoutTime);\n\n const onResolved = (reason: string) => {\n clearTimeout(rejectTimeout);\n const elapsedTime = Date.now() - startTime;\n this.lastPingTime = elapsedTime / 1000;\n this.log(`sendPingDelayDisconnect: pong, reason='${reason}', time=${lastPingTime}, msgId=${options.messageId}`);\n if(elapsedTime > timeoutTime) {\n throw undefined;\n } else {\n return pause(Math.max(0, this.delays.pingInterval - elapsedTime/* timeoutTime - elapsedTime - PING_INTERVAL */));\n }\n };\n \n const onTimeout = () => {\n clearTimeout(rejectTimeout);\n const transport = this.transport as TcpObfuscated;\n if(this.pingDelayDisconnectDeferred !== deferred || !transport?.connection) {\n return;\n }\n\n this.log.error('sendPingDelayDisconnect: catch, closing connection', this.lastPingTime, options.messageId);\n transport.connection.close();\n };\n\n const onFinally = () => {\n if(this.pingDelayDisconnectDeferred !== deferred) {\n return;\n }\n\n this.pingDelayDisconnectDeferred = undefined;\n this.sendPingDelayDisconnect();\n };\n\n deferred\n .then(onResolved)\n .catch(onTimeout)\n .finally(onFinally);\n };\n\n \n private checkLongPoll = () => {\n const isClean = this.cleanupSent();\n //this.log.error('Check lp', this.longPollPending, this.dcId, isClean, this);\n if((this.longPollPending && Date.now() < this.longPollPending) ||\n this.offline ||\n this.isStopped() ||\n this.isFileNetworker) {\n //this.log('No lp this time');\n return false;\n }\n\n sessionStorage.get('dc').then((baseDcId) => {\n if(isClean && (\n baseDcId !== this.dcId ||\n (this.sleepAfter && Date.now() > this.sleepAfter)\n )) {\n //console.warn(dT(), 'Send long-poll for DC is delayed', this.dcId, this.sleepAfter);\n return;\n }\n\n this.sendLongPoll();\n });\n };\n\n private sendLongPoll() {\n if(this.sendingLongPoll) return;\n this.sendingLongPoll = true;\n const maxWait = 25000;\n\n this.longPollPending = Date.now() + maxWait;\n this.debug && this.log.debug('sendLongPoll', this.longPollPending);\n \n this.wrapMtpCall('http_wait', {\n max_delay: 500,\n wait_after: 150,\n max_wait: maxWait\n }, {\n noResponse: true,\n // notContentRelated: true,\n longPoll: true\n }).then(() => {\n this.longPollPending = undefined;\n setTimeout(this.checkLongPoll, 0);\n }, (error: ErrorEvent) => {\n this.log('Long-poll failed', error);\n }).finally(() => {\n this.sendingLongPoll = undefined;\n });\n }\n\n private checkConnection = (event: Event | string) => {\n this.debug && this.log('Check connection', event);\n this.clearCheckConnectionTimeout();\n\n if(!this.transport) {\n this.log.warn('No transport for checkConnection');\n return;\n }\n \n const serializer = new TLSerialization({mtproto: true});\n const pingId = randomLong();\n \n serializer.storeMethod('ping', {\n ping_id: pingId\n });\n \n const pingMessage = {\n msg_id: timeManager.generateId(),\n seq_no: this.generateSeqNo(true),\n body: serializer.getBytes(true)\n };\n\n if(this.offline) {\n this.setConnectionStatus(ConnectionStatus.Connecting);\n }\n\n this.sendEncryptedRequest(pingMessage).then(() => {\n this.toggleOffline(false);\n }, () => {\n this.debug && this.log('Delay', this.checkConnectionPeriod * 1000);\n this.checkConnectionTimeout = ctx.setTimeout(() => this.checkConnection('from failed checkConnection request'), this.checkConnectionPeriod * 1000 | 0);\n this.checkConnectionPeriod = Math.min(60, this.checkConnectionPeriod * 1.5);\n });\n };\n\n private clearCheckConnectionTimeout() {\n if(this.checkConnectionTimeout !== undefined) {\n clearTimeout(this.checkConnectionTimeout);\n this.checkConnectionTimeout = undefined;\n }\n }\n\n private toggleOffline(offline: boolean) {\n if(this.offline !== offline) {\n this.offline = offline;\n\n this.clearCheckConnectionTimeout();\n if(offline) {\n clearTimeout(this.nextReqTimeout);\n this.nextReqTimeout = 0;\n this.nextReq = 0;\n \n if(this.checkConnectionPeriod < 1.5) {\n this.checkConnectionPeriod = 0;\n }\n \n const delay = this.checkConnectionPeriod * 1000 | 0;\n this.checkConnectionRetryAt = Date.now() + delay;\n this.setConnectionStatus(ConnectionStatus.Closed, this.checkConnectionRetryAt);\n this.checkConnectionTimeout = ctx.setTimeout(() => this.checkConnection('from toggleOfline'), delay);\n this.checkConnectionPeriod = Math.min(30, (1 + this.checkConnectionPeriod) * 1.5);\n \n \n \n \n \n } else {\n this.setConnectionStatus(ConnectionStatus.Connected);\n this.checkLongPoll();\n\n this.scheduleRequest();\n \n \n \n \n \n }\n }\n\n this.setConnectionStatus(offline ? ConnectionStatus.Closed : ConnectionStatus.Connected, offline ? this.checkConnectionRetryAt : undefined);\n }\n\n private handleSentEncryptedRequestHTTP(promise: ReturnType<MTPNetworker['sendEncryptedRequest']>, message: MTMessage, noResponseMsgs: string[]) {\n // let timeout = setTimeout(() => {\n // this.log.error('handleSentEncryptedRequestHTTP timeout', promise, message, noResponseMsgs);\n // }, 5e3);\n\n promise.then((result) => {\n this.toggleOffline(false);\n // this.log('parse for', message);\n return this.parseResponse(result).then((response) => {\n this.debug && this.log.debug('Server response', response);\n \n this.processMessage(response.response, response.messageId, response.sessionId);\n\n this.checkLongPoll();\n this.checkConnectionPeriod = Math.max(1.1, Math.sqrt(this.checkConnectionPeriod));\n\n return true;\n });\n }, (error) => {\n this.log.error('Encrypted request failed', error, message);\n \n this.pushResend(message.msg_id);\n this.toggleOffline(true);\n\n return false;\n }).then((shouldResolve) => {\n // clearTimeout(timeout);\n const sentMessages = this.sentMessages;\n noResponseMsgs.forEach((msgId) => {\n const sentMessage = sentMessages[msgId];\n if(sentMessage) {\n const deferred = sentMessage.deferred;\n delete sentMessages[msgId];\n delete this.pendingMessages[msgId];\n shouldResolve ? deferred.resolve() : deferred.reject();\n }\n });\n });\n }\n \n\n // тут можно сделать таймаут и выводить дисконнект\n private pushMessage(message: {\n msg_id: string,\n seq_no: number,\n body: Uint8Array | number[],\n isAPI?: boolean\n }, options: MTMessageOptions) {\n let promise: CancellablePromise<void>;\n if(!options.notContentRelated || options.noResponse) {\n promise = deferredPromise();\n }\n \n this.sentMessages[message.msg_id] = Object.assign(\n message, \n options, \n promise ? {deferred: promise} : undefined\n );\n\n //this.log.error('Networker pushMessage:', this.sentMessages[message.msg_id]);\n\n this.pendingMessages[message.msg_id] = 0;\n \n if(!options.noSchedule) {\n this.scheduleRequest();\n }\n\n if(isObject(options)) {\n options.messageId = message.msg_id;\n }\n\n return promise;\n }\n\n public attachPromise(promise: Promise<any>, message: MTMessage) {\n const canIncrement = true;\n const timeout = setTimeout(() => {\n if(this.lastResponseTime && (Date.now() - this.lastResponseTime) < this.delays.connectionTimeout) {\n return;\n }\n\n this.log.error('timeout', message);\n if(this.isOnline) {\n this.setConnectionStatus(ConnectionStatus.TimedOut);\n }\n\n /* this.getEncryptedOutput(message).then(bytes => {\n this.log.error('timeout encrypted', bytes);\n }); */\n }, this.delays.connectionTimeout);\n\n promise.catch(noop).finally(() => {\n clearTimeout(timeout);\n this.setConnectionStatus(ConnectionStatus.Connected);\n\n if(canIncrement) {\n --this.activeRequests;\n this.setDrainTimeout();\n }\n });\n \n if(canIncrement) {\n ++this.activeRequests;\n if(this.onDrainTimeout !== undefined) {\n clearTimeout(this.onDrainTimeout);\n this.onDrainTimeout = undefined;\n }\n }\n }\n\n public setDrainTimeout() {\n if(!this.activeRequests && this.onDrain && this.onDrainTimeout === undefined) {\n this.onDrainTimeout = ctx.setTimeout(() => {\n this.onDrainTimeout = undefined;\n this.log('drain');\n this.onDrain();\n }, DRAIN_TIMEOUT);\n }\n }\n\n public setConnectionStatus(status: ConnectionStatus, retryAt?: number) {\n const isOnline = status === ConnectionStatus.Connected;\n const willChange = this.status !== status;\n this.isOnline = isOnline;\n this.status = status;\n\n if(willChange) {\n if(networkerFactory.onConnectionStatusChange) {\n networkerFactory.onConnectionStatusChange({\n _: 'networkerStatus',\n status,\n dcId: this.dcId,\n name: this.name,\n isFileNetworker: this.isFileNetworker,\n isFileDownload: this.isFileDownload,\n isFileUpload: this.isFileUpload,\n retryAt\n });\n }\n\n if(this.isOnline) {\n this.scheduleRequest();\n }\n\n if((this.transport as TcpObfuscated)?.connection) {\n this.clearPingDelayDisconnect();\n this.sendPingDelayDisconnect();\n }\n\n // this.getNewTimeOffset = true;\n }\n /* if(this.onConnectionStatusChange) {\n this.onConnectionStatusChange(this.isOnline);\n } */\n }\n\n private pushResend(messageId: string, delay = 100) {\n const value = delay ? Date.now() + delay : 0;\n const sentMessage = this.sentMessages[messageId];\n if(sentMessage.container) {\n for(const innerMsgId of sentMessage.inner) {\n this.pendingMessages[innerMsgId] = value;\n }\n } else {\n this.pendingMessages[messageId] = value;\n }\n\n if(sentMessage.acked) {\n this.log.error('pushResend: acked message?', sentMessage);\n }\n \n if(this.debug) {\n this.log.debug('pushResend:', messageId, sentMessage, this.pendingMessages, delay);\n }\n \n this.scheduleRequest(delay);\n }\n\n // * correct, fully checked\n private async getMsgKey(dataWithPadding: Uint8Array, isOut: boolean) {\n const x = isOut ? 0 : 8;\n const msgKeyLargePlain = bufferConcats(this.authKeyUint8.subarray(88 + x, 88 + x + 32), dataWithPadding);\n\n const msgKeyLarge = await CryptoWorker.invokeCrypto('sha256', msgKeyLargePlain);\n const msgKey = new Uint8Array(msgKeyLarge).subarray(8, 24);\n return msgKey;\n };\n\n // * correct, fully checked\n private getAesKeyIv(msgKey: Uint8Array, isOut: boolean): Promise<[Uint8Array, Uint8Array]> {\n const x = isOut ? 0 : 8;\n const sha2aText = new Uint8Array(52);\n const sha2bText = new Uint8Array(52);\n const promises: Array<Promise<Uint8Array>> = [];\n \n sha2aText.set(msgKey, 0);\n sha2aText.set(this.authKeyUint8.subarray(x, x + 36), 16);\n promises.push(CryptoWorker.invokeCrypto('sha256', sha2aText));\n \n sha2bText.set(this.authKeyUint8.subarray(40 + x, 40 + x + 36), 0);\n sha2bText.set(msgKey, 36);\n promises.push(CryptoWorker.invokeCrypto('sha256', sha2bText));\n\n return Promise.all(promises).then((results) => {\n const aesKey = new Uint8Array(32);\n const aesIv = new Uint8Array(32);\n const sha2a = new Uint8Array(results[0]);\n const sha2b = new Uint8Array(results[1]);\n \n aesKey.set(sha2a.subarray(0, 8));\n aesKey.set(sha2b.subarray(8, 24), 8);\n aesKey.set(sha2a.subarray(24, 32), 24);\n \n aesIv.set(sha2b.subarray(0, 8));\n aesIv.set(sha2a.subarray(8, 24), 8);\n aesIv.set(sha2b.subarray(24, 32), 24);\n \n return [aesKey, aesIv];\n });\n }\n\n public isStopped() {\n return networkerFactory.akStopped && !this.isFileNetworker;\n }\n\n private performScheduledRequest() {\n if(this.isStopped()) {\n return false;\n }\n\n if(this.pendingAcks.length) {\n const ackMsgIds = this.pendingAcks.slice();\n\n // this.log('acking messages', ackMsgIDs)\n this.wrapMtpMessage({\n _: 'msgs_ack',\n msg_ids: ackMsgIds\n }, {\n notContentRelated: true,\n noSchedule: true\n });\n }\n \n const pendingResendReqLength = this.pendingResendReq.length;\n if(pendingResendReqLength) {\n const options: MTMessageOptions = {...RESEND_OPTIONS};\n const msgIds = this.pendingResendReq.splice(0, pendingResendReqLength);\n this.wrapMtpMessage({\n _: 'msg_resend_req',\n msg_ids: msgIds\n }, options);\n\n this.log('resend: resending requests', options.messageId, msgIds);\n /* this.lastResendReq = {\n reqMsgId: options.messageId,\n msgIds: msgIds\n }; */\n\n // this.pendingResendReq.length = 0;\n }\n\n // if(this.pendingResendAnsReq.length) {\n // const options: MTMessageOptions = {...RESEND_OPTIONS};\n // const msgIds = this.pendingResendAnsReq.slice();\n // this.wrapMtpMessage({\n // _: 'msg_resend_ans_req',\n // msg_ids: msgIds\n // }, options);\n\n // this.log('resend: requesting answers', options.messageId, msgIds);\n // this.lastResendAnsReq = {\n // reqMsgId: options.messageId,\n // msgIds: msgIds\n // };\n\n // // this.pendingResendAnsReq.length = 0;\n // }\n \n let outMessage: MTMessage;\n const messages: typeof outMessage[] = [];\n \n //const currentTime = Date.now();\n let messagesByteLen = 0;\n\n \n let hasApiCall = false;\n let hasHttpWait = false;\n \n\n let lengthOverflow = false;\n\n // * Сюда никогда не попадут контейнеры, так как их не будет в pendingMessages\n const keys = sortLongsArray(Object.keys(this.pendingMessages));\n for(const messageId of keys) {\n //const value = this.pendingMessages[messageId];\n\n //if(!value || value <= currentTime) {\n const message = this.sentMessages[messageId];\n if(message && message.body) {\n /* if(message.fileUpload) {\n this.log('performScheduledRequest message:', message, message.body.length, (message.body as Uint8Array).byteLength, (message.body as Uint8Array).buffer.byteLength);\n } */\n\n const messageByteLength = message.body.length + 32;\n\n if((messagesByteLen + messageByteLength) > 655360) { // 640 Kb\n this.log.warn('lengthOverflow', message, messages);\n lengthOverflow = true;\n\n if(outMessage) { // if it's not a first message\n break;\n }\n }\n\n messages.push(message);\n messagesByteLen += messageByteLength;\n\n \n if(message.isAPI) {\n hasApiCall = true;\n } else if(message.longPoll) {\n hasHttpWait = true;\n }\n \n\n outMessage = message;\n } else {\n // this.log(message, messageId)\n }\n\n delete this.pendingMessages[messageId];\n //}\n }\n \n \n \n if(this.transport instanceof HTTP)\n \n if(hasApiCall && !hasHttpWait) {\n const serializer = new TLSerialization({mtproto: true});\n serializer.storeMethod('http_wait', {\n max_delay: 500,\n wait_after: 150,\n max_wait: 3000\n });\n\n messages.push({\n msg_id: timeManager.generateId(),\n seq_no: this.generateSeqNo(),\n body: serializer.getBytes(true)\n });\n }\n \n \n if(!messages.length) {\n // this.log('no scheduled messages')\n return;\n }\n \n \n const noResponseMsgs: Array<string> = messages.filter(message => message.noResponse).map(message => message.msg_id);\n \n \n if(messages.length > 1) {\n const container = this.generateContainerMessage(messagesByteLen, messages);\n outMessage = container.messageWithBody;\n \n this.sentMessages[outMessage.msg_id] = container.message;\n } else {\n this.sentMessages[outMessage.msg_id] = outMessage;\n }\n \n this.pendingAcks = [];\n\n const promise = this.sendEncryptedRequest(outMessage);\n\n \n \n if(this.transport instanceof HTTP)\n \n this.handleSentEncryptedRequestHTTP(promise, outMessage, noResponseMsgs);\n \n\n \n \n if(!(this.transport instanceof HTTP))\n \n this.cleanupSent(); // ! WARNING\n \n \n if(lengthOverflow) {\n this.scheduleRequest();\n }\n }\n\n private generateContainerMessage(messagesByteLen: number, messages: MTMessage[]) {\n const container = new TLSerialization({\n mtproto: true,\n startMaxLength: messagesByteLen + 64\n });\n\n container.storeInt(0x73f1f8dc, 'CONTAINER[id]');\n container.storeInt(messages.length, 'CONTAINER[count]');\n\n const innerMessages: string[] = [];\n messages.forEach((message, i) => {\n innerMessages.push(message.msg_id);\n // this.log('Pushing to container:', message.msg_id);\n container.storeLong(message.msg_id, 'CONTAINER[' + i + '][msg_id]');\n container.storeInt(message.seq_no, 'CONTAINER[' + i + '][seq_no]');\n container.storeInt(message.body.length, 'CONTAINER[' + i + '][bytes]');\n container.storeRawBytes(message.body, 'CONTAINER[' + i + '][body]');\n });\n\n const message: MTMessage = {\n msg_id: timeManager.generateId(),\n seq_no: this.generateSeqNo(true),\n container: true,\n inner: innerMessages\n };\n\n if(Modes.debug/* || true */) {\n this.log.warn('Container', innerMessages, message.msg_id, message.seq_no);\n }\n\n return {\n message,\n messageWithBody: Object.assign({body: container.getBytes(true)}, message),\n };\n }\n\n private async getEncryptedMessage(dataWithPadding: Uint8Array) {\n const msgKey = await this.getMsgKey(dataWithPadding, true);\n const keyIv = await this.getAesKeyIv(msgKey, true);\n // this.log('after msg key iv')\n\n const encryptedBytes = await CryptoWorker.invokeCrypto('aes-encrypt', dataWithPadding, keyIv[0], keyIv[1]);\n // this.log('Finish encrypt')\n\n return {\n bytes: encryptedBytes,\n msgKey\n };\n }\n\n private getDecryptedMessage(msgKey: Uint8Array, encryptedData: Uint8Array) {\n // this.log('get decrypted start')\n return this.getAesKeyIv(msgKey, false).then((keyIv) => {\n // this.log('after msg key iv')\n return CryptoWorker.invokeCrypto('aes-decrypt', encryptedData, keyIv[0], keyIv[1]);\n });\n }\n\n private getEncryptedOutput(message: MTMessage) {\n /* if(DEBUG) {\n this.log.debug('Send encrypted', message, this.authKeyId);\n } */\n /* if(!this.isOnline) {\n this.log('trying to send message when offline:', Object.assign({}, message));\n //debugger;\n } */\n\n const data = new TLSerialization({\n startMaxLength: message.body.length + 2048\n });\n\n data.storeIntBytes(this.serverSalt, 64, 'salt');\n data.storeIntBytes(this.sessionId, 64, 'session_id');\n \n data.storeLong(message.msg_id, 'message_id');\n data.storeInt(message.seq_no, 'seq_no');\n\n data.storeInt(message.body.length, 'message_data_length');\n data.storeRawBytes(message.body, 'message_data');\n\n /* const des = new TLDeserialization(data.getBuffer().slice(16));\n const desSalt = des.fetchLong();\n const desSessionId = des.fetchLong();\n\n if(!this.isOnline) {\n this.log.error('trying to send message when offline', message, new Uint8Array(des.buffer), desSalt, desSessionId);\n } */\n\n /* const messageDataLength = message.body.length;\n let canBeLength = 0; // bytes\n canBeLength += 8;\n canBeLength += 8;\n canBeLength += 8;\n canBeLength += 4;\n canBeLength += 4;\n canBeLength += message.body.length; */\n \n const dataBuffer = data.getBuffer();\n\n /* if(dataBuffer.byteLength !== canBeLength || !bytesCmp(new Uint8Array(dataBuffer.slice(dataBuffer.byteLength - message.body.length)), new Uint8Array(message.body))) {\n this.log.error('wrong length', dataBuffer, canBeLength, message.msg_id);\n } */\n\n const paddingLength = (16 - (data.getOffset() % 16)) + 16 * (1 + nextRandomUint(8) % 5);\n const padding = /* (message as any).padding || */randomize(new Uint8Array(paddingLength))/* .fill(0) */;\n /* const padding = [167, 148, 207, 226, 86, 192, 193, 57, 124, 153, 174, 145, 159, 1, 5, 70, 127, 157, \n 51, 241, 46, 85, 141, 212, 139, 234, 213, 164, 197, 116, 245, 70, 184, 40, 40, 201, 233, 211, 150, \n 94, 57, 84, 1, 135, 108, 253, 34, 139, 222, 208, 71, 214, 90, 67, 36, 28, 167, 148, 207, 226, 86, 192, 193, 57, 124, 153, 174, 145, 159, 1, 5, 70, 127, 157, \n 51, 241, 46, 85, 141, 212, 139, 234, 213, 164, 197, 116, 245, 70, 184, 40, 40, 201, 233, 211, 150, \n 94, 57, 84, 1, 135, 108, 253, 34, 139, 222, 208, 71, 214, 90, 67, 36, 28].slice(0, paddingLength); */\n\n //(message as any).padding = padding;\n\n const dataWithPadding = bufferConcats(dataBuffer, padding);\n // this.log('Adding padding', dataBuffer, padding, dataWithPadding)\n // this.log('auth_key_id', bytesToHex(self.authKeyID))\n\n /* if(dataWithPadding.byteLength % 16) {\n this.log.error('aaa', dataWithPadding, paddingLength);\n }\n\n if(message.fileUpload) {\n this.log('Send encrypted: body length:', (message.body as ArrayBuffer).byteLength, paddingLength, dataWithPadding);\n } */\n\n // * full next block is correct\n return this.getEncryptedMessage(dataWithPadding).then((encryptedResult) => {\n /* if(DEBUG) {\n this.log('Got encrypted out message', encryptedResult);\n } */\n\n const request = new TLSerialization({\n startMaxLength: encryptedResult.bytes.length + 256\n });\n request.storeIntBytes(this.authKeyId, 64, 'auth_key_id');\n request.storeIntBytes(encryptedResult.msgKey, 128, 'msg_key');\n request.storeRawBytes(encryptedResult.bytes, 'encrypted_data');\n \n const requestData = request.getBytes(true);\n\n // if(this.isFileNetworker) {\n // //this.log('Send encrypted: requestData length:', requestData.length, requestData.length % 16, paddingLength % 16, paddingLength, data.offset, encryptedResult.msgKey.length % 16, encryptedResult.bytes.length % 16);\n // //this.log('Send encrypted: messageId:', message.msg_id, requestData.length);\n // //this.log('Send encrypted:', message, new Uint8Array(bufferConcat(des.buffer, padding)), requestData, this.serverSalt.hex, this.sessionId.hex/* new Uint8Array(des.buffer) */);\n // this.debugRequests.push({before: new Uint8Array(bufferConcat(des.buffer, padding)), after: requestData});\n // }\n\n return requestData;\n });\n }\n\n private async sendEncryptedRequest(message: MTMessage) {\n const requestData = await this.getEncryptedOutput(message);\n\n if(!this.transport) {\n this.log.error('trying to send something when offline', this.transport, this);\n }\n\n this.debug && this.log.debug('sending:', message, [message.msg_id].concat(message.inner || []), requestData.length);\n const promise: Promise<Uint8Array> = this.transport ? this.transport.send(requestData) as any : Promise.reject({});\n // this.debug && this.log.debug('sendEncryptedRequest: launched message into space:', message, promise);\n \n \n \n \n \n \n if(!(this.transport instanceof HTTP)) return promise;\n \n \n const baseError = {\n code: 406,\n type: 'NETWORK_BAD_RESPONSE',\n transport: this.transport\n };\n \n return promise.then((result) => {\n if(!result?.byteLength) {\n throw baseError;\n }\n \n // this.debug && this.log.debug('sendEncryptedRequest: got response for:', message, [message.msg_id].concat(message.inner || []));\n return result;\n }, (error) => {\n if(!error.message && !error.type) {\n error = Object.assign(baseError, {\n type: 'NETWORK_BAD_REQUEST',\n originalError: error\n });\n }\n\n throw error;\n });\n \n }\n\n public parseResponse(responseBuffer: Uint8Array) {\n //const perf = performance.now();\n /* if(this.debug) {\n this.log.debug('Start parsing response', responseBuffer);\n } */\n\n this.lastResponseTime = Date.now();\n\n const deserializer = new TLDeserialization(responseBuffer);\n \n const authKeyId = deserializer.fetchIntBytes(64, true, 'auth_key_id');\n if(!bytesCmp(authKeyId, this.authKeyId)) {\n throw new Error('[MT] Invalid server auth_key_id: ' + bytesToHex(authKeyId));\n }\n\n const msgKey = deserializer.fetchIntBytes(128, true, 'msg_key');\n const encryptedData = deserializer.fetchRawBytes(responseBuffer.byteLength - deserializer.getOffset(), true, 'encrypted_data');\n \n return this.getDecryptedMessage(msgKey, encryptedData).then((dataWithPadding) => {\n // this.log('after decrypt')\n return this.getMsgKey(dataWithPadding, false).then((calcMsgKey) => {\n if(!bytesCmp(msgKey, calcMsgKey)) {\n this.log.warn('[MT] msg_keys', msgKey, calcMsgKey);\n this.updateSession(); // fix 28.01.2020\n throw new Error('[MT] server msgKey mismatch, updating session');\n }\n // this.log('after msgKey check')\n \n let deserializer = new TLDeserialization<MTLong>(dataWithPadding, {mtproto: true});\n \n /* const salt = */deserializer.fetchIntBytes(64, true, 'salt'); // need\n const sessionId = deserializer.fetchIntBytes(64, true, 'session_id');\n const messageId = deserializer.fetchLong('message_id');\n \n if(!bytesCmp(sessionId, this.sessionId) &&\n (!this.prevSessionId || !bytesCmp(sessionId, this.prevSessionId))) {\n this.log.warn('Sessions', sessionId, this.sessionId, this.prevSessionId, dataWithPadding);\n //this.updateSession();\n //this.sessionID = sessionID;\n throw new Error('[MT] Invalid server session_id: ' + bytesToHex(sessionId));\n }\n \n const seqNo = deserializer.fetchInt('seq_no');\n \n const totalLength = dataWithPadding.byteLength;\n \n const messageBodyLength = deserializer.fetchInt('message_data[length]');\n let offset = deserializer.getOffset();\n \n if((messageBodyLength % 4) ||\n messageBodyLength > totalLength - offset) {\n throw new Error('[MT] Invalid body length: ' + messageBodyLength);\n }\n const messageBody = deserializer.fetchRawBytes(messageBodyLength, true, 'message_data');\n \n offset = deserializer.getOffset();\n const paddingLength = totalLength - offset;\n if(paddingLength < 12 || paddingLength > 1024) {\n throw new Error('[MT] Invalid padding length: ' + paddingLength);\n }\n \n //let buffer = bytesToArrayBuffer(messageBody);\n deserializer = new TLDeserialization<MTLong>(/* buffer */messageBody, {\n mtproto: true, \n override: {\n mt_message: (result: any, field: string) => {\n result.msg_id = deserializer.fetchLong(field + '[msg_id]');\n result.seqno = deserializer.fetchInt(field + '[seqno]');\n result.bytes = deserializer.fetchInt(field + '[bytes]');\n \n const offset = deserializer.getOffset();\n \n //self.log('mt_message!!!!!', result, field);\n \n try {\n result.body = deserializer.fetchObject('Object', field + '[body]');\n } catch(e) {\n this.log.error('parse error', (e as Error).message, (e as Error).stack);\n result.body = {\n _: 'parse_error',\n error: e\n };\n }\n\n if(deserializer.getOffset() !== offset + result.bytes) {\n // console.warn(dT(), 'set offset', this.offset, offset, result.bytes)\n // this.log(result)\n deserializer.setOffset(offset + result.bytes);\n }\n // this.log('override message', result)\n },\n mt_rpc_result: (result: any, field: any) => {\n result.req_msg_id = deserializer.fetchLong(field + '[req_msg_id]');\n \n const sentMessage = this.sentMessages[result.req_msg_id];\n const type = sentMessage && sentMessage.resultType || 'Object';\n \n if(result.req_msg_id && !sentMessage) {\n // console.warn(dT(), 'Result for unknown message', result);\n return;\n }\n \n // deserializer.setMtproto(false);\n result.result = deserializer.fetchObject(type, field + '[result]');\n // deserializer.setMtproto(true);\n // self.log(dT(), 'override rpc_result', sentMessage, type, result);\n }\n }\n });\n\n const response = deserializer.fetchObject('', 'INPUT');\n //this.log.error('Parse response time:', performance.now() - perf);\n return {\n response,\n messageId,\n sessionId,\n seqNo\n };\n });\n });\n }\n\n private applyServerSalt(newServerSalt: string) {\n const serverSalt = longToBytes(newServerSalt);\n \n sessionStorage.set({\n ['dc' + this.dcId + '_server_salt']: bytesToHex(serverSalt)\n });\n \n this.serverSalt = new Uint8Array(serverSalt);\n }\n\n // ! таймаут очень сильно тормозит скорость работы сокета (даже нулевой) \n public scheduleRequest(delay?: number) {\n /* if(!this.isOnline) {\n return;\n } */\n\n \n \n if(this.transport instanceof HTTP) {\n \n if(this.offline) {\n this.checkConnection('forced schedule');\n }\n\n delay ||= 0; // set zero timeout to pack other messages too\n \n }\n \n \n\n const nextReq = Date.now() + (delay || 0);\n if(this.nextReq && (delay === undefined || this.nextReq <= nextReq)) {\n //this.debug && this.log('scheduleRequest: nextReq', this.nextReq, nextReq);\n return;\n }\n \n //this.debug && this.log('scheduleRequest: delay', delay);\n\n /* if(this.nextReqTimeout) {\n return;\n } */\n \n //const perf = performance.now();\n if(this.nextReqTimeout) {\n clearTimeout(this.nextReqTimeout);\n }\n\n const cb = () => {\n //this.debug && this.log('scheduleRequest: timeout delay was:', performance.now() - perf);\n\n this.nextReqTimeout = 0;\n this.nextReq = 0;\n\n \n \n if(this.transport instanceof HTTP)\n \n if(this.offline) {\n //this.log('Cancel scheduled');\n return;\n }\n \n\n this.performScheduledRequest();\n };\n\n this.nextReq = nextReq;\n\n if(delay !== undefined) {\n this.nextReqTimeout = self.setTimeout(cb, delay);\n } else {\n cb();\n }\n }\n\n private ackMessage(msgId: MTLong) {\n // this.log('ack message', msgID)\n this.pendingAcks.push(msgId);\n\n let delay: number;\n\n \n \n if(this.transport instanceof HTTP)\n \n delay = 30000;\n \n\n this.scheduleRequest(delay);\n }\n \n private reqResend(msgId: MTLong/* , isAnswer?: boolean */) {\n if(this.debug) {\n this.log.debug('Req resend', msgId/* , isAnswer */);\n }\n\n // (isAnswer ? this.pendingResendAnsReq : this.pendingResendReq).push(msgId);\n this.pendingResendReq.push(msgId);\n this.scheduleRequest(100);\n }\n\n public cleanupSent() {\n let notEmpty = false;\n const sentMessages = this.sentMessages;\n // this.log('clean start', this.dcId/*, sentMessages*/)\n Object.keys(sentMessages).forEach((msgId) => {\n const message = sentMessages[msgId];\n \n // this.log('clean iter', msgID, message)\n if(message.notContentRelated && this.pendingMessages[msgId] === undefined) {\n // this.log('clean notContentRelated', msgID)\n delete sentMessages[msgId];\n } else if(message.container) {\n for(const innerMsgId of message.inner) {\n if(sentMessages[innerMsgId] !== undefined) {\n // this.log('clean failed, found', msgID, message.inner[i], sentMessages[message.inner[i]].seq_no)\n notEmpty = true;\n return;\n }\n }\n // this.log('clean container', msgID)\n delete sentMessages[msgId];\n } else {\n notEmpty = true;\n }\n });\n \n return !notEmpty;\n }\n\n private processMessageAck(messageId: Long) {\n const sentMessage = this.sentMessages[messageId];\n if(sentMessage && !sentMessage.acked) {\n //delete sentMessage.body;\n sentMessage.acked = true;\n }\n }\n\n private processError(rawError: {error_message: string, error_code: number}) {\n const matches = (rawError.error_message || '').match(/^([A-Z_0-9]+\\b)(: (.+))?/) || [];\n rawError.error_code = rawError.error_code;\n \n return {\n code: !rawError.error_code || rawError.error_code <= 0 ? 500 : rawError.error_code,\n type: matches[1] || 'UNKNOWN',\n description: matches[3] || ('CODE#' + rawError.error_code + ' ' + rawError.error_message),\n originalError: rawError\n };\n }\n\n /**\n * * только для сокета\n * TODO: consider about containers resend\n */\n public resend() {\n const sentMessages = this.sentMessages;\n for(const id in sentMessages) {\n const msg = sentMessages[id];\n if(msg.body || msg.container) {\n this.pushResend(id);\n }\n }\n\n if((this.transport as TcpObfuscated).connection) {\n this.clearPingDelayDisconnect();\n this.sendPingDelayDisconnect();\n }\n }\n\n /* public requestMessageStatus() {\n const ids: string[] = [];\n for(const id in this.sentMessages) {\n const message = this.sentMessages[id];\n if(message.isAPI && message.fileUpload) {\n ids.push(message.msg_id);\n }\n }\n\n this.wrapMtpMessage({\n _: 'msgs_state_req',\n msg_ids: ids\n }, {\n notContentRelated: true\n }).then(res => {\n this.log('status', res);\n });\n } */\n\n private applyServerTime(messageId: string) {\n const serverTime = bigInt(messageId).shiftRight(32).toJSNumber();\n this.log('applying server time', serverTime);\n return timeManager.applyServerTime(serverTime);\n }\n\n // * https://core.telegram.org/mtproto/service_messages_about_messages#notice-of-ignored-error-message\n public processMessage(message: any, messageId: MTLong, sessionId: Uint8Array | number[]) {\n if(message._ === 'messageEmpty') {\n this.log.warn('processMessage: messageEmpty', message, messageId);\n return;\n }\n\n // messageId = messageId.toString();\n\n const msgidInt = parseInt(messageId.substr(0, -10), 10);\n if(msgidInt % 2) {\n this.log.warn('Server even message id: ', messageId, message);\n return;\n }\n\n if(this.debug) {\n this.log.debug('process message', message, messageId);\n }\n\n if(this.pingDelayDisconnectDeferred) {\n this.pingDelayDisconnectDeferred.resolve('any message');\n }\n\n // let changedTimeOffset: boolean;\n // if(this.getNewTimeOffset) {\n // changedTimeOffset = this.applyServerTime(messageId);\n // this.getNewTimeOffset = undefined;\n // }\n\n switch(message._) {\n case 'msg_container': {\n for(const innerMessage of message.messages) {\n this.processMessage(innerMessage, innerMessage.msg_id, sessionId);\n }\n\n break;\n }\n \n case 'bad_server_salt': {\n this.log('Bad server salt', message);\n\n this.applyServerSalt(message.new_server_salt);\n\n if(this.sentMessages[message.bad_msg_id]) {\n this.pushResend(message.bad_msg_id);\n }\n \n this.ackMessage(messageId);\n \n // simulate disconnect\n /* try {\n this.log('networker state:', this);\n // @ts-ignore\n this.transport.ws.close(1000);\n } catch(err) {\n this.log.error('transport', this.transport, err);\n } */\n\n break;\n }\n \n case 'bad_msg_notification': {\n this.log.error('Bad msg notification', message);\n\n switch(message.error_code) {\n case 16: // * msg_id too low\n case 17: // * msg_id too high\n case 32: // * msg_seqno too low\n case 33: // * msg_seqno too high\n case 64: { // * invalid container\n // if(changedTimeOffset === undefined) {\n // changedTimeOffset = this.applyServerTime(messageId);\n // }\n\n const changedTimeOffset = this.applyServerTime(messageId);\n if(message.error_code === 17 || changedTimeOffset) {\n this.log('Update session');\n this.updateSession();\n }\n\n const badMessage = this.updateSentMessage(message.bad_msg_id);\n if(badMessage) this.pushResend(badMessage.msg_id); // fix 23.01.2020\n //this.ackMessage(messageId);\n }\n\n // * invalid container\n /* case 64: {\n const badMessage = this.sentMessages[message.bad_msg_id];\n if(badMessage) {\n for(const msgId of badMessage.inner) {\n if(this.sentMessages[msgId] !== undefined) {\n this.updateSentMessage\n }\n }\n const inner = badMessage.inner;\n }\n } */\n }\n\n break;\n }\n \n case 'message': {\n if(this.lastServerMessages.indexOf(messageId) !== -1) {\n // console.warn('[MT] Server same messageId: ', messageId)\n this.ackMessage(messageId);\n return;\n }\n\n this.lastServerMessages.push(messageId);\n if(this.lastServerMessages.length > 100) {\n this.lastServerMessages.shift();\n }\n\n this.processMessage(message.body, message.msg_id, sessionId);\n break;\n }\n \n case 'new_session_created': {\n this.ackMessage(messageId);\n\n if(this.debug) {\n this.log.debug('new_session_created', message);\n }\n //this.updateSession();\n \n this.processMessageAck(message.first_msg_id);\n this.applyServerSalt(message.server_salt);\n \n sessionStorage.get('dc').then((baseDcId) => {\n if(baseDcId === this.dcId && !this.isFileNetworker && networkerFactory.updatesProcessor) {\n networkerFactory.updatesProcessor(message);\n }\n });\n break;\n }\n \n case 'msgs_ack': {\n for(const msgId of message.msg_ids) {\n this.processMessageAck(msgId);\n }\n\n break;\n }\n \n case 'msg_detailed_info': {\n const sentMessage = this.sentMessages[message.msg_id];\n if(!sentMessage) {\n this.ackMessage(message.answer_msg_id);\n break;\n }/* else if(sentMessage.acked) {\n this.reqResend(message.answer_msg_id, true);\n }\n\n break; */\n }\n\n case 'msg_new_detailed_info': {\n if(this.pendingAcks.indexOf(message.answer_msg_id) !== -1) {\n break;\n }\n\n this.reqResend(message.answer_msg_id);\n break;\n }\n \n case 'msgs_state_info': {\n this.ackMessage(message.answer_msg_id);\n const arr = [\n [this.lastResendReq, this.pendingResendReq] as const\n // [this.lastResendAnsReq, this.pendingResendAnsReq] as const\n ];\n\n for(const [lastResend, pendingResend] of arr) {\n if(lastResend?.reqMsgId === message.req_msg_id && pendingResend.length) {\n for(const badMsgId of lastResend.msgIds) {\n const pos = pendingResend.indexOf(badMsgId);\n if(pos !== -1) {\n pendingResend.splice(pos, 1);\n }\n }\n }\n }\n\n break;\n }\n\n case 'rpc_result': {\n this.ackMessage(messageId);\n \n const sentMessageId = message.req_msg_id;\n const sentMessage = this.sentMessages[sentMessageId];\n\n // if(this.debug) {\n // this.log.debug('Rpc response', message.result, sentMessage);\n // }\n\n this.processMessageAck(sentMessageId);\n if(sentMessage) {\n const deferred = sentMessage.deferred;\n if(message.result._ === 'rpc_error') {\n const error = this.processError(message.result);\n this.log('Rpc error', error);\n if(deferred) {\n deferred.reject(error);\n }\n } else {\n if(deferred) {\n deferred.resolve(message.result);\n }\n\n if(sentMessage.isAPI && !this.connectionInited) {\n this.connectionInited = true;\n }\n }\n \n delete this.sentMessages[sentMessageId];\n } else {\n if(this.debug) {\n this.log('Rpc result for unknown message:', sentMessageId, message);\n }\n }\n\n break;\n }\n\n case 'pong': { // * https://core.telegram.org/mtproto/service_messages#ping-messages-pingpong - These messages don't require acknowledgments\n /* const sentMessageId = message.msg_id;\n const sentMessage = this.sentMessages[sentMessageId]; \n\n if(sentMessage) {\n sentMessage.deferred.resolve(message);\n delete this.sentMessages[sentMessageId];\n } */\n const pingId = message.ping_id;\n if(this.lastPingDelayDisconnectId === pingId) {\n this.pingDelayDisconnectDeferred.resolve('pong');\n }\n\n break;\n }\n \n default:\n this.ackMessage(messageId);\n\n /* if(this.debug) {\n this.log.debug('Update', message);\n } */\n \n if(networkerFactory.updatesProcessor !== null) {\n networkerFactory.updatesProcessor(message);\n }\n break;\n }\n }\n}\n","export default function forEachReverse<T>(array: Array<T>, callback: (value: T, index?: number, array?: Array<T>) => void) {\n for(let length = array.length, i = length - 1; i >= 0; --i) {\n callback(array[i], i, array);\n }\n};\n","import bigInt from \"big-integer\";\n\nexport default function sortLongsArray(arr: string[]) {\n return arr.map(long => {\n return bigInt(long);\n }).sort((a, b) => {\n return a.compare(b);\n }).map(bigInt => {\n return bigInt.toString(10);\n });\n}\n","import addPadding from '../bytes/addPadding';\nimport bigInt from 'big-integer';\nimport { bigIntToBytes } from '../bigInt/bigIntConversion';\n\nexport default function longToBytes(sLong: string) {\n const bigIntBytes = bigIntToBytes(bigInt(sLong)).reverse();\n const bytes = addPadding(bigIntBytes, 8, true, false, false);\n // console.log('longToBytes', bytes, bigIntBytes);\n \n return bytes;\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n * \r\n * Originally from:\r\n * https://github.com/zhukov/webogram\r\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\r\n * https://github.com/zhukov/webogram/blob/master/LICENSE\r\n */\r\n\r\nimport type { ConnectionStatusChange } from \"./connectionStatus\";\r\nimport MTPNetworker from \"./networker\";\r\nimport { InvokeApiOptions } from \"../../types\";\r\nimport App from \"../../config/app\";\r\nimport { MOUNT_CLASS_TO } from \"../../config/debug\";\r\nimport indexOfAndSplice from \"../../helpers/array/indexOfAndSplice\";\r\n\r\nexport class NetworkerFactory {\r\n private networkers: MTPNetworker[] = [];\r\n public language = navigator.language || App.langPackCode;\r\n public updatesProcessor: (obj: any) => void = null;\r\n public onConnectionStatusChange: (info: ConnectionStatusChange) => void = null;\r\n public akStopped = false;\r\n public userAgent = navigator.userAgent;\r\n\r\n public removeNetworker(networker: MTPNetworker) {\r\n indexOfAndSplice(this.networkers, networker);\r\n }\r\n\r\n public setUpdatesProcessor(callback: (obj: any) => void) {\r\n this.updatesProcessor = callback;\r\n }\r\n\r\n public getNetworker(dcId: number, authKey: Uint8Array, authKeyId: Uint8Array, serverSalt: Uint8Array, options: InvokeApiOptions) {\r\n //console.log('NetworkerFactory: creating new instance of MTPNetworker:', dcId, options);\r\n const networker = new MTPNetworker(dcId, authKey, authKeyId, serverSalt, options);\r\n this.networkers.push(networker);\r\n return networker;\r\n }\r\n\r\n public startAll() {\r\n if(this.akStopped) {\r\n const stoppedNetworkers = this.networkers.filter(networker => networker.isStopped());\r\n\r\n this.akStopped = false;\r\n this.updatesProcessor && this.updatesProcessor({_: 'new_session_created'});\r\n \r\n for(const networker of stoppedNetworkers) {\r\n networker.scheduleRequest();\r\n }\r\n }\r\n }\r\n\r\n public stopAll() {\r\n this.akStopped = true;\r\n }\r\n\r\n public setLanguage(langCode: string) {\r\n this.language = langCode;\r\n for(const networker of this.networkers) {\r\n if(!networker.isFileNetworker) {\r\n networker.connectionInited = false;\r\n }\r\n }\r\n }\r\n\r\n public unsetConnectionInited() {\r\n for(const networker of this.networkers) {\r\n networker.connectionInited = false;\r\n }\r\n }\r\n\r\n public forceReconnectTimeout() {\r\n for(const networker of this.networkers) {\r\n networker.forceReconnectTimeout();\r\n }\r\n }\r\n\r\n public forceReconnect() {\r\n for(const networker of this.networkers) {\r\n if(!networker.isFileNetworker) {\r\n networker.forceReconnect();\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst networkerFactory = new NetworkerFactory();\r\nMOUNT_CLASS_TO && (MOUNT_CLASS_TO.networkerFactory = networkerFactory);\r\nexport default networkerFactory;\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n * \r\n * Originally from:\r\n * https://github.com/zhukov/webogram\r\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\r\n * https://github.com/zhukov/webogram/blob/master/LICENSE\r\n */\r\n\r\nimport { TLSerialization } from \"./tl_utils\";\r\nimport CryptoWorker from '../crypto/cryptoworker';\r\nimport Modes from \"../../config/modes\";\r\nimport bytesFromHex from \"../../helpers/bytes/bytesFromHex\";\r\nimport bytesToHex from \"../../helpers/bytes/bytesToHex\";\r\nimport bigInt from 'big-integer';\r\n\r\nexport type RSAPublicKeyHex = {\r\n modulus: string,\r\n exponent: string\r\n};\r\n\r\nexport class RSAKeysManager {\r\n\r\n /**\r\n * Server public key, obtained from here: https://core.telegram.org/api/obtaining_api_id\r\n * \r\n * \r\n * -----BEGIN RSA PUBLIC KEY-----\r\n * MIIBCgKCAQEA6LszBcC1LGzyr992NzE0ieY+BSaOW622Aa9Bd4ZHLl+TuFQ4lo4g\r\n * 5nKaMBwK/BIb9xUfg0Q29/2mgIR6Zr9krM7HjuIcCzFvDtr+L0GQjae9H0pRB2OO\r\n * 62cECs5HKhT5DZ98K33vmWiLowc621dQuwKWSQKjWf50XYFw42h21P2KXUGyp2y/\r\n * +aEyZ+uVgLLQbRA1dEjSDZ2iGRy12Mk5gpYc397aYp438fsJoHIgJ2lgMv5h7WY9\r\n * t6N/byY9Nw9p21Og3AoXSL2q/2IJ1WRUhebgAdGVMlV1fkuOQoEzR7EdpqtQD9Cs\r\n * 5+bfo3Nhmcyvk5ftB0WkJ9z6bNZ7yxrP8wIDAQAB\r\n * -----END RSA PUBLIC KEY-----\r\n *\r\n * -----BEGIN RSA PUBLIC KEY-----\r\n * MIIBCgKCAQEBadMIUYSKhyznMh+Pg+OxTLyDZrWEjQIPZC3oJCtuZX7qUxgcWqFX\r\n * Q1952TSY8S8NYuz12sK9Fvp+lil1hIG0U/cuPsK08VB1hB4VA+p0S46fGwVsRovq\r\n * 4qUiUIzQSjSHDASuXTOinlYEHwmg/GaLc5G7qhePWa0p9YmqYR5Ha3xHJywcXZrn\r\n * yE3nC9igL96Aanqv+Prbu1N+r9vAgZeHh9cfbtbV8WWwruOANOTEv2ctQLR0dfr9\r\n * MwQXNePTPQlYsO9HNIGS1LWe7hZFtGBAVJH92F7Kig68WqHM3PIZ6Sq7N0VSzfzL\r\n * b11Z/YHz2UXYtXADwL/m5pTpKBUtJBXkOQIDAQAB\r\n * -----END RSA PUBLIC KEY-----\r\n *\r\n * Bytes can be got via \r\n * $ openssl rsa -in rsa.pem -RSAPublicKey_in -pubout > pub.pem\r\n * $ openssl rsa -pubin -in pub.pem -text -noout\r\n */\r\n\r\n /* private publisKeysHex = [{\r\n modulus: 'c150023e2f70db7985ded064759cfecf0af328e69a41daf4d6f01b538135a6f91f8f8b2a0ec9ba9720ce352efcf6c5680ffc424bd634864902de0b4bd6d49f4e580230e3ae97d95c8b19442b3c0a10d8f5633fecedd6926a7f6dab0ddb7d457f9ea81b8465fcd6fffeed114011df91c059caedaf97625f6c96ecc74725556934ef781d866b34f011fce4d835a090196e9a5f0e4449af7eb697ddb9076494ca5f81104a305b6dd27665722c46b60e5df680fb16b210607ef217652e60236c255f6a28315f4083a96791d7214bf64c1df4fd0db1944fb26a2a57031b32eee64ad15a8ba68885cde74a5bfc920f6abf59ba5c75506373e7130f9042da922179251f',\r\n exponent: '010001'\r\n }, {\r\n modulus: 'aeec36c8ffc109cb099624685b97815415657bd76d8c9c3e398103d7ad16c9bba6f525ed0412d7ae2c2de2b44e77d72cbf4b7438709a4e646a05c43427c7f184debf72947519680e651500890c6832796dd11f772c25ff8f576755afe055b0a3752c696eb7d8da0d8be1faf38c9bdd97ce0a77d3916230c4032167100edd0f9e7a3a9b602d04367b689536af0d64b613ccba7962939d3b57682beb6dae5b608130b2e52aca78ba023cf6ce806b1dc49c72cf928a7199d22e3d7ac84e47bc9427d0236945d10dbd15177bab413fbf0edfda09f014c7a7da088dde9759702ca760af2b8e4e97cc055c617bd74c3d97008635b98dc4d621b4891da9fb0473047927',\r\n exponent: '010001'\r\n }, {\r\n modulus: 'bdf2c77d81f6afd47bd30f29ac76e55adfe70e487e5e48297e5a9055c9c07d2b93b4ed3994d3eca5098bf18d978d54f8b7c713eb10247607e69af9ef44f38e28f8b439f257a11572945cc0406fe3f37bb92b79112db69eedf2dc71584a661638ea5becb9e23585074b80d57d9f5710dd30d2da940e0ada2f1b878397dc1a72b5ce2531b6f7dd158e09c828d03450ca0ff8a174deacebcaa22dde84ef66ad370f259d18af806638012da0ca4a70baa83d9c158f3552bc9158e69bf332a45809e1c36905a5caa12348dd57941a482131be7b2355a5f4635374f3bd3ddf5ff925bf4809ee27c1e67d9120c5fe08a9de458b1b4a3c5d0a428437f2beca81f4e2d5ff',\r\n exponent: '010001'\r\n }, {\r\n modulus: 'b3f762b739be98f343eb1921cf0148cfa27ff7af02b6471213fed9daa0098976e667750324f1abcea4c31e43b7d11f1579133f2b3d9fe27474e462058884e5e1b123be9cbbc6a443b2925c08520e7325e6f1a6d50e117eb61ea49d2534c8bb4d2ae4153fabe832b9edf4c5755fdd8b19940b81d1d96cf433d19e6a22968a85dc80f0312f596bd2530c1cfb28b5fe019ac9bc25cd9c2a5d8a0f3a1c0c79bcca524d315b5e21b5c26b46babe3d75d06d1cd33329ec782a0f22891ed1db42a1d6c0dea431428bc4d7aabdcf3e0eb6fda4e23eb7733e7727e9a1915580796c55188d2596d2665ad1182ba7abf15aaa5a8b779ea996317a20ae044b820bff35b6e8a1',\r\n exponent: '010001'\r\n }, {\r\n modulus: 'be6a71558ee577ff03023cfa17aab4e6c86383cff8a7ad38edb9fafe6f323f2d5106cbc8cafb83b869cffd1ccf121cd743d509e589e68765c96601e813dc5b9dfc4be415c7a6526132d0035ca33d6d6075d4f535122a1cdfe017041f1088d1419f65c8e5490ee613e16dbf662698c0f54870f0475fa893fc41eb55b08ff1ac211bc045ded31be27d12c96d8d3cfc6a7ae8aa50bf2ee0f30ed507cc2581e3dec56de94f5dc0a7abee0be990b893f2887bd2c6310a1e0a9e3e38bd34fded2541508dc102a9c9b4c95effd9dd2dfe96c29be647d6c69d66ca500843cfaed6e440196f1dbe0e2e22163c61ca48c79116fa77216726749a976a1c4b0944b5121e8c01',\r\n exponent: '010001'\r\n }]; */\r\n\r\n private testPublicKeysHex: RSAPublicKeyHex[] = [{\r\n modulus: 'c8c11d635691fac091dd9489aedced2932aa8a0bcefef05fa800892d9b52ed03200865c9e97211cb2ee6c7ae96d3fb0e15aeffd66019b44a08a240cfdd2868a85e1f54d6fa5deaa041f6941ddf302690d61dc476385c2fa655142353cb4e4b59f6e5b6584db76fe8b1370263246c010c93d011014113ebdf987d093f9d37c2be48352d69a1683f8f6e6c2167983c761e3ab169fde5daaa12123fa1beab621e4da5935e9c198f82f35eae583a99386d8110ea6bd1abb0f568759f62694419ea5f69847c43462abef858b4cb5edc84e7b9226cd7bd7e183aa974a712c079dde85b9dc063b8a5c08e8f859c0ee5dcd824c7807f20153361a7f63cfd2a433a1be7f5',\r\n exponent: '010001'\r\n }];\r\n\r\n private publisKeysHex: RSAPublicKeyHex[] = [{\r\n // modulus: '00e8bb3305c0b52c6cf2afdf7637313489e63e05268e5badb601af417786472e5f93b85438968e20e6729a301c0afc121bf7151f834436f7fda680847a66bf64accec78ee21c0b316f0edafe2f41908da7bd1f4a5107638eeb67040ace472a14f90d9f7c2b7def99688ba3073adb5750bb02964902a359fe745d8170e36876d4fd8a5d41b2a76cbff9a13267eb9580b2d06d10357448d20d9da2191cb5d8c93982961cdfdeda629e37f1fb09a0722027696032fe61ed663db7a37f6f263d370f69db53a0dc0a1748bdaaff6209d5645485e6e001d1953255757e4b8e42813347b11da6ab500fd0ace7e6dfa3736199ccaf9397ed0745a427dcfa6cd67bcb1acff3',\r\n modulus: 'e8bb3305c0b52c6cf2afdf7637313489e63e05268e5badb601af417786472e5f93b85438968e20e6729a301c0afc121bf7151f834436f7fda680847a66bf64accec78ee21c0b316f0edafe2f41908da7bd1f4a5107638eeb67040ace472a14f90d9f7c2b7def99688ba3073adb5750bb02964902a359fe745d8170e36876d4fd8a5d41b2a76cbff9a13267eb9580b2d06d10357448d20d9da2191cb5d8c93982961cdfdeda629e37f1fb09a0722027696032fe61ed663db7a37f6f263d370f69db53a0dc0a1748bdaaff6209d5645485e6e001d1953255757e4b8e42813347b11da6ab500fd0ace7e6dfa3736199ccaf9397ed0745a427dcfa6cd67bcb1acff3',\r\n exponent: '010001'\r\n }];\r\n\r\n private publicKeysParsed: {\r\n [hex: string]: RSAPublicKeyHex\r\n } = {};\r\n private prepared = false;\r\n private preparePromise: Promise<void> = null;\r\n\r\n constructor() {\r\n if(Modes.test) {\r\n this.publisKeysHex = this.testPublicKeysHex;\r\n }\r\n }\r\n\r\n public prepare(): Promise<void> {\r\n if(this.preparePromise) return this.preparePromise;\r\n else if(this.prepared) {\r\n return Promise.resolve();\r\n }\r\n\r\n return this.preparePromise = Promise.all(this.publisKeysHex.map(keyParsed => {\r\n const RSAPublicKey = new TLSerialization();\r\n RSAPublicKey.storeBytes(bytesFromHex(keyParsed.modulus), 'n');\r\n RSAPublicKey.storeBytes(bytesFromHex(keyParsed.exponent), 'e');\r\n\r\n const buffer = RSAPublicKey.getBuffer();\r\n\r\n return CryptoWorker.invokeCrypto('sha1', buffer).then(bytes => {\r\n const fingerprintBytes = bytes.slice(-8);\r\n fingerprintBytes.reverse();\r\n \r\n this.publicKeysParsed[bytesToHex(fingerprintBytes).toLowerCase()] = {\r\n modulus: keyParsed.modulus,\r\n exponent: keyParsed.exponent\r\n };\r\n });\r\n })).then(() => {\r\n this.prepared = true;\r\n\r\n //console.log('[MT] Prepared keys');\r\n this.preparePromise = null;\r\n });\r\n }\r\n\r\n public async select(fingerprints: Array<string>) {\r\n await this.prepare();\r\n\r\n for(let i = 0; i < fingerprints.length; ++i) {\r\n let fingerprintHex = bigInt(fingerprints[i]).toString(16).toLowerCase();\r\n\r\n if(fingerprintHex.length < 16) {\r\n fingerprintHex = new Array(16 - fingerprintHex.length).fill('0').join('') + fingerprintHex;\r\n }\r\n\r\n //console.log(fingerprintHex, this.publicKeysParsed);\r\n const foundKey = this.publicKeysParsed[fingerprintHex];\r\n if(foundKey) {\r\n return Object.assign({\r\n fingerprint: fingerprints[i]\r\n }, foundKey);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default new RSAKeysManager();\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\n \nimport transportController from \"./transports/controller\";\n \n\nimport { TLSerialization, TLDeserialization } from \"./tl_utils\";\nimport dcConfigurator, { TransportType } from \"./dcConfigurator\";\nimport rsaKeysManager from \"./rsaKeysManager\";\nimport timeManager from \"./timeManager\";\n\nimport CryptoWorker from \"../crypto/cryptoworker\";\n\nimport { logger, LogTypes } from \"../logger\";\nimport DEBUG from \"../../config/debug\";\nimport { Awaited, DcId } from \"../../types\";\nimport { ApiError } from \"./apiManager\";\nimport addPadding from \"../../helpers/bytes/addPadding\";\nimport bytesCmp from \"../../helpers/bytes/bytesCmp\";\nimport bytesFromHex from \"../../helpers/bytes/bytesFromHex\";\nimport bytesToHex from \"../../helpers/bytes/bytesToHex\";\nimport bytesXor from \"../../helpers/bytes/bytesXor\";\nimport { bigIntFromBytes } from \"../../helpers/bigInt/bigIntConversion\";\nimport bigInt from \"big-integer\";\nimport randomize from \"../../helpers/array/randomize\";\n\n/* let fNewNonce: any = bytesFromHex('8761970c24cb2329b5b2459752c502f3057cb7e8dbab200e526e8767fdc73b3c').reverse();\nlet fNonce: any = bytesFromHex('b597720d11faa5914ef485c529cde414').reverse();\nlet fResult: any = new Uint8Array(bytesFromHex('000000000000000001b473a0661b285e480000006324160514e4cd29c585f44e91a5fa110d7297b5c0c4134c84893db5715ecd56af5ed618082182053cc5de91cd00000015c4b51c02000000a5b7f709355fc30b216be86c022bb4c3'));\n\nfNewNonce = false;\nfNonce = false;\nfResult = false; */\n\ntype AuthOptions = {\n dcId: number,\n nonce: Uint8Array,\n \n serverNonce?: Uint8Array,\n pq?: Uint8Array,\n fingerprints?: string[],\n publicKey?: {\n modulus: string,\n exponent: string,\n fingerprint: string\n },\n \n // good\n p?: Uint8Array,\n q?: Uint8Array,\n \n newNonce?: Uint8Array,\n \n retry?: number,\n \n b?: Uint8Array,\n g?: number,\n gA?: Uint8Array,\n dhPrime?: Uint8Array,\n \n tmpAesKey?: Uint8Array,\n tmpAesIv?: Uint8Array,\n \n authKeyId?: Uint8Array,\n authKey?: Uint8Array,\n serverSalt?: Uint8Array,\n\n localTime?: number,\n serverTime?: any,\n};\n\ntype ResPQ = {\n _: 'resPQ';\n nonce: Uint8Array;\n pq: Uint8Array;\n server_nonce: Uint8Array;\n server_public_key_fingerprints: string[];\n};\n\ntype P_Q_inner_data = {\n _: 'p_q_inner_data_dc';\n pq: Uint8Array;\n p: Uint8Array;\n q: Uint8Array;\n nonce: Uint8Array;\n server_nonce: Uint8Array;\n new_nonce: Uint8Array;\n dc: number;\n};\n\ntype req_DH_params = {\n nonce: Uint8Array;\n server_nonce: Uint8Array;\n p: Uint8Array;\n q: Uint8Array;\n public_key_fingerprint: string;\n encrypted_data: Uint8Array;\n};\n\nexport class Authorizer {\n private cached: {\n [dcId: DcId]: Promise<AuthOptions>\n };\n \n private log: ReturnType<typeof logger>;\n\n private transportType: TransportType;\n\n \n private getTransportTypePromise: Promise<void>;\n \n \n constructor() {\n this.cached = {};\n this.log = logger(`AUTHORIZER`, LogTypes.Error | LogTypes.Log);\n }\n \n private sendPlainRequest(dcId: DcId, requestArray: Uint8Array) {\n const requestLength = requestArray.byteLength;\n \n const header = new TLSerialization();\n header.storeLongP(0, 0, 'auth_key_id');\n header.storeLong(timeManager.generateId(), 'msg_id');\n header.storeInt(requestLength, 'request_length');\n \n const headerArray = header.getBytes(true) as Uint8Array;\n const resultArray = new Uint8Array(headerArray.byteLength + requestLength);\n resultArray.set(headerArray);\n resultArray.set(requestArray, headerArray.length);\n\n const transport = dcConfigurator.chooseServer(dcId, 'client', this.transportType);\n const baseError = {\n code: 406,\n type: 'NETWORK_BAD_RESPONSE'\n };\n \n if(DEBUG) {\n this.log('mtpSendPlainRequest: creating requestPromise');\n }\n \n const promise = transport.send(resultArray) as any as Promise<Uint8Array>;\n return promise.then(result => {\n if(DEBUG) {\n this.log('mtpSendPlainRequest: in good sector', result);\n }\n \n if(!result || !result.byteLength) {\n throw baseError;\n }\n \n try {\n /* result = fResult ? fResult : result;\n fResult = new Uint8Array(0); */\n \n const deserializer = new TLDeserialization<MTLong>(result, {mtproto: true});\n\n if(result.length === 4) {\n const errorCode = deserializer.fetchInt();\n this.log.error('mtpSendPlainRequest: wrong response, error code:', errorCode);\n throw errorCode;\n }\n\n const auth_key_id = deserializer.fetchLong('auth_key_id');\n if(auth_key_id !== '0') this.log.error('auth_key_id !== 0', auth_key_id);\n \n const msg_id = deserializer.fetchLong('msg_id');\n if(msg_id === '0') this.log.error('msg_id === 0', msg_id);\n \n const msg_len = deserializer.fetchInt('msg_len');\n if(!msg_len) this.log.error('no msg_len', msg_len);\n \n return deserializer;\n } catch(e) {\n this.log.error('mtpSendPlainRequest: deserialization went bad', e);\n const error = Object.assign(baseError, {originalError: e});\n throw error;\n }\n }, (error) => {\n if(!error.message && !error.type) {\n error = Object.assign(baseError, {\n originalError: error\n });\n }\n \n throw error;\n });\n }\n \n private async sendReqPQ(auth: AuthOptions) {\n const request = new TLSerialization({mtproto: true});\n \n request.storeMethod('req_pq_multi', {nonce: auth.nonce});\n\n if(DEBUG) {\n this.log('Send req_pq', bytesToHex(auth.nonce));\n }\n\n let deserializer: Awaited<ReturnType<Authorizer['sendPlainRequest']>>;\n try {\n const promise = this.sendPlainRequest(auth.dcId, request.getBytes(true));\n rsaKeysManager.prepare();\n deserializer = await promise;\n } catch(error) {\n this.log.error('req_pq error', (error as Error).message);\n throw error;\n }\n \n const response: ResPQ = deserializer.fetchObject('ResPQ');\n\n if(response._ !== 'resPQ') {\n throw new Error('[MT] resPQ response invalid: ' + response._);\n }\n \n if(!bytesCmp(auth.nonce, response.nonce)) {\n this.log.error(auth.nonce, response.nonce);\n throw new Error('[MT] resPQ nonce mismatch');\n }\n \n auth.serverNonce = response.server_nonce; // need\n auth.pq = response.pq;\n auth.fingerprints = response.server_public_key_fingerprints;\n \n if(DEBUG) {\n this.log('Got ResPQ', bytesToHex(auth.serverNonce), bytesToHex(auth.pq), auth.fingerprints);\n }\n \n const publicKey = await rsaKeysManager.select(auth.fingerprints);\n if(!publicKey) {\n throw new Error('[MT] No public key found');\n }\n \n auth.publicKey = publicKey;\n \n if(DEBUG) {\n this.log('PQ factorization start', auth.pq);\n }\n \n // let pAndQ: Awaited<ReturnType<typeof CryptoWorker['factorize']>>;\n try {\n var pAndQ = await CryptoWorker.invokeCrypto('factorize', auth.pq);\n } catch(error) {\n this.log.error('worker error factorize', error);\n throw error;\n }\n \n auth.p = pAndQ[0];\n auth.q = pAndQ[1];\n \n if(DEBUG) {\n this.log('PQ factorization done', pAndQ);\n }\n \n return this.sendReqDhParams(auth);\n }\n \n private async sendReqDhParams(auth: AuthOptions): Promise<AuthOptions> {\n auth.newNonce = randomize(new Uint8Array(32));\n\n const p_q_inner_data_dc: P_Q_inner_data = {\n _: 'p_q_inner_data_dc',\n pq: auth.pq,\n p: auth.p,\n q: auth.q,\n nonce: auth.nonce,\n server_nonce: auth.serverNonce,\n new_nonce: auth.newNonce,\n dc: 0\n };\n \n const pQInnerDataSerialization = new TLSerialization({mtproto: true});\n pQInnerDataSerialization.storeObject(p_q_inner_data_dc, 'P_Q_inner_data', 'DECRYPTED_DATA');\n\n const data = pQInnerDataSerialization.getBytes(true);\n if(data.length > 144) {\n throw 'DH_params: data is more than 144 bytes!';\n }\n\n const dataWithPadding = addPadding(data, 192, false, true, false);\n const dataPadReversed = dataWithPadding.slice().reverse();\n\n const getKeyAesEncrypted = async() => {\n for(;;) {\n const tempKey = randomize(new Uint8Array(32));\n const dataWithHash = dataPadReversed.concat(await CryptoWorker.invokeCrypto('sha256', tempKey.concat(dataWithPadding)));\n if(dataWithHash.length !== 224) {\n throw 'DH_params: dataWithHash !== 224 bytes!';\n }\n \n const aesEncrypted = await CryptoWorker.invokeCrypto('aes-encrypt', dataWithHash, tempKey, new Uint8Array([0]));\n const tempKeyXor = bytesXor(tempKey, await CryptoWorker.invokeCrypto('sha256', aesEncrypted));\n const keyAesEncrypted = tempKeyXor.concat(aesEncrypted);\n\n const keyAesEncryptedBigInt = bigIntFromBytes(keyAesEncrypted);\n const publicKeyModulusBigInt = bigInt(auth.publicKey.modulus, 16);\n\n if(keyAesEncryptedBigInt.compare(publicKeyModulusBigInt) === -1) {\n return keyAesEncrypted;\n }\n }\n };\n \n const keyAesEncrypted = await getKeyAesEncrypted();\n const encryptedData = addPadding(await CryptoWorker.invokeCrypto('rsa-encrypt', keyAesEncrypted, auth.publicKey), 256, true, true, true);\n\n const req_DH_params: req_DH_params = {\n nonce: auth.nonce,\n server_nonce: auth.serverNonce,\n p: auth.p,\n q: auth.q,\n public_key_fingerprint: auth.publicKey.fingerprint,\n encrypted_data: encryptedData\n };\n \n const request = new TLSerialization({mtproto: true});\n request.storeMethod('req_DH_params', req_DH_params);\n \n const requestBytes = request.getBytes(true);\n \n if(DEBUG) {\n this.log('Send req_DH_params', req_DH_params/* , requestBytes.hex */);\n }\n \n let deserializer: Awaited<ReturnType<Authorizer['sendPlainRequest']>>;\n try {\n deserializer = await this.sendPlainRequest(auth.dcId, requestBytes);\n } catch(error) {\n this.log.error('Send req_DH_params FAIL!', error);\n throw error;\n }\n \n const response = deserializer.fetchObject('Server_DH_Params', 'RESPONSE');\n \n if(DEBUG) {\n this.log('Sent req_DH_params, response:', response);\n }\n \n if(response._ !== 'server_DH_params_fail' && response._ !== 'server_DH_params_ok') {\n throw new Error('[MT] Server_DH_Params response invalid: ' + response._);\n }\n \n if(!bytesCmp(auth.nonce, response.nonce)) {\n throw new Error('[MT] Server_DH_Params nonce mismatch');\n }\n \n if(!bytesCmp(auth.serverNonce, response.server_nonce)) {\n throw new Error('[MT] Server_DH_Params server_nonce mismatch');\n }\n \n if(response._ === 'server_DH_params_fail') {\n const newNonceHash = (await CryptoWorker.invokeCrypto('sha1', auth.newNonce)).slice(-16);\n if(!bytesCmp(newNonceHash, response.new_nonce_hash)) {\n throw new Error('[MT] server_DH_params_fail new_nonce_hash mismatch');\n }\n \n throw new Error('[MT] server_DH_params_fail');\n }\n \n // fill auth object\n try {\n await this.decryptServerDhDataAnswer(auth, response.encrypted_answer);\n } catch(e) {\n this.log.error('mtpDecryptServerDhDataAnswer FAILED!', e);\n throw e;\n }\n \n //console.log(dT(), 'mtpSendReqDhParams: executing mtpSendSetClientDhParams...');\n \n return this.sendSetClientDhParams(auth);\n }\n \n private async decryptServerDhDataAnswer(auth: AuthOptions, encryptedAnswer: any) {\n auth.localTime = Date.now();\n \n // ! can't concat Array with Uint8Array!\n auth.tmpAesKey = (await CryptoWorker.invokeCrypto('sha1', auth.newNonce.concat(auth.serverNonce)))\n .concat((await CryptoWorker.invokeCrypto('sha1', auth.serverNonce.concat(auth.newNonce))).slice(0, 12));\n \n auth.tmpAesIv = (await CryptoWorker.invokeCrypto('sha1', auth.serverNonce.concat(auth.newNonce))).slice(12)\n .concat(await CryptoWorker.invokeCrypto('sha1', auth.newNonce.concat(auth.newNonce)), auth.newNonce.slice(0, 4));\n \n const answerWithHash = new Uint8Array(await CryptoWorker.invokeCrypto('aes-decrypt', encryptedAnswer, auth.tmpAesKey, auth.tmpAesIv));\n \n const hash = answerWithHash.slice(0, 20);\n const answerWithPadding = answerWithHash.slice(20);\n\n const deserializer = new TLDeserialization<MTLong>(answerWithPadding, {mtproto: true});\n const response = deserializer.fetchObject('Server_DH_inner_data');\n \n if(response._ !== 'server_DH_inner_data') {\n throw new Error('[MT] server_DH_inner_data response invalid: ' + response);\n }\n \n if(!bytesCmp(auth.nonce, response.nonce)) {\n throw new Error('[MT] server_DH_inner_data nonce mismatch');\n }\n \n if(!bytesCmp(auth.serverNonce, response.server_nonce)) {\n throw new Error('[MT] server_DH_inner_data serverNonce mismatch');\n }\n \n if(DEBUG) {\n this.log('Done decrypting answer');\n }\n auth.g = response.g;\n auth.dhPrime = response.dh_prime;\n auth.gA = response.g_a;\n auth.serverTime = response.server_time;\n auth.retry = 0;\n \n this.verifyDhParams(auth.g, auth.dhPrime, auth.gA);\n \n const offset = deserializer.getOffset();\n \n if(!bytesCmp(hash, await CryptoWorker.invokeCrypto('sha1', answerWithPadding.slice(0, offset)))) {\n throw new Error('[MT] server_DH_inner_data SHA1 mismatch');\n }\n \n timeManager.applyServerTime(auth.serverTime, auth.localTime);\n }\n \n private verifyDhParams(g: number, dhPrime: Uint8Array, gA: Uint8Array) {\n if(DEBUG) {\n this.log('Verifying DH params', g, dhPrime, gA);\n }\n\n const dhPrimeHex = bytesToHex(dhPrime);\n if(g !== 3 || dhPrimeHex !== 'c71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5b') {\n // The verified value is from https://core.telegram.org/mtproto/security_guidelines\n throw new Error('[MT] DH params are not verified: unknown dhPrime');\n }\n\n if(DEBUG) {\n this.log('dhPrime cmp OK');\n }\n \n const gABigInt = bigIntFromBytes(gA);\n const dhPrimeBigInt = bigInt(dhPrimeHex, 16);\n\n if(gABigInt.compare(bigInt.one) <= 0) {\n throw new Error('[MT] DH params are not verified: gA <= 1');\n }\n\n if(gABigInt.compare(dhPrimeBigInt.subtract(bigInt.one)) >= 0) {\n throw new Error('[MT] DH params are not verified: gA >= dhPrime - 1');\n }\n\n if(DEBUG) {\n this.log('1 < gA < dhPrime-1 OK');\n }\n \n const twoPow = bigInt(2).pow(2048 - 64);\n\n if(gABigInt.compare(twoPow) < 0) {\n throw new Error('[MT] DH params are not verified: gA < 2^{2048-64}');\n }\n if(gABigInt.compare(dhPrimeBigInt.subtract(twoPow)) >= 0) {\n throw new Error('[MT] DH params are not verified: gA > dhPrime - 2^{2048-64}');\n }\n\n if(DEBUG) {\n this.log('2^{2048-64} < gA < dhPrime-2^{2048-64} OK');\n }\n \n return true;\n }\n \n private async sendSetClientDhParams(auth: AuthOptions): Promise<AuthOptions> {\n const gBytes = bytesFromHex(auth.g.toString(16));\n \n auth.b = randomize(new Uint8Array(256));\n //MTProto.secureRandom.nextBytes(auth.b);\n \n // let gB: Awaited<ReturnType<typeof CryptoWorker['modPow']>>;\n try {\n var gB = await CryptoWorker.invokeCrypto('mod-pow', gBytes, auth.b, auth.dhPrime);\n } catch(error) {\n throw error;\n }\n \n const data = new TLSerialization({mtproto: true});\n data.storeObject({\n _: 'client_DH_inner_data',\n nonce: auth.nonce,\n server_nonce: auth.serverNonce,\n retry_id: [0, auth.retry++],\n g_b: gB\n }, 'Client_DH_Inner_Data');\n \n const dataWithHash = (await CryptoWorker.invokeCrypto('sha1', data.getBuffer())).concat(data.getBytes(true));\n const encryptedData = await CryptoWorker.invokeCrypto('aes-encrypt', dataWithHash, auth.tmpAesKey, auth.tmpAesIv);\n \n const request = new TLSerialization({mtproto: true});\n request.storeMethod('set_client_DH_params', {\n nonce: auth.nonce,\n server_nonce: auth.serverNonce,\n encrypted_data: encryptedData\n });\n \n if(DEBUG) {\n this.log('Send set_client_DH_params');\n }\n \n let deserializer: Awaited<ReturnType<Authorizer['sendPlainRequest']>>;\n try {\n deserializer = await this.sendPlainRequest(auth.dcId, request.getBytes(true));\n } catch(err) {\n throw err;\n }\n \n const response = deserializer.fetchObject('Set_client_DH_params_answer');\n \n if(response._ !== 'dh_gen_ok' && response._ !== 'dh_gen_retry' && response._ !== 'dh_gen_fail') {\n throw new Error('[MT] Set_client_DH_params_answer response invalid: ' + response._);\n }\n \n if(!bytesCmp(auth.nonce, response.nonce)) {\n throw new Error('[MT] Set_client_DH_params_answer nonce mismatch');\n }\n \n if(!bytesCmp(auth.serverNonce, response.server_nonce)) {\n throw new Error('[MT] Set_client_DH_params_answer server_nonce mismatch');\n }\n \n // let authKey: Uint8Array;\n try {\n var authKey = await CryptoWorker.invokeCrypto('mod-pow', auth.gA, auth.b, auth.dhPrime);\n } catch(err) {\n throw authKey;\n }\n \n const authKeyHash = await CryptoWorker.invokeCrypto('sha1', authKey),\n authKeyAux = authKeyHash.slice(0, 8),\n authKeyId = authKeyHash.slice(-8);\n \n if(DEBUG) {\n this.log('Got Set_client_DH_params_answer', response._, authKey);\n }\n switch(response._) {\n case 'dh_gen_ok': {\n const newNonceHash1 = (await CryptoWorker.invokeCrypto('sha1', auth.newNonce.concat([1], authKeyAux))).slice(-16);\n \n if(!bytesCmp(newNonceHash1, response.new_nonce_hash1)) {\n this.log.error('Set_client_DH_params_answer new_nonce_hash1 mismatch', newNonceHash1, response);\n throw new Error('new_nonce_hash1 mismatch');\n }\n \n const serverSalt = bytesXor(auth.newNonce.slice(0, 8), auth.serverNonce.slice(0, 8));\n if(DEBUG) {\n this.log('Auth successfull!', authKeyId, authKey, serverSalt);\n }\n \n auth.authKeyId = authKeyId;\n auth.authKey = authKey;\n auth.serverSalt = serverSalt;\n \n return auth;\n }\n \n case 'dh_gen_retry': {\n const newNonceHash2 = (await CryptoWorker.invokeCrypto('sha1', auth.newNonce.concat([2], authKeyAux))).slice(-16);\n if(!bytesCmp(newNonceHash2, response.new_nonce_hash2)) {\n throw new Error('[MT] Set_client_DH_params_answer new_nonce_hash2 mismatch');\n }\n \n return this.sendSetClientDhParams(auth);\n }\n \n case 'dh_gen_fail': {\n const newNonceHash3 = (await CryptoWorker.invokeCrypto('sha1', auth.newNonce.concat([3], authKeyAux))).slice(-16);\n if(!bytesCmp(newNonceHash3, response.new_nonce_hash3)) {\n throw new Error('[MT] Set_client_DH_params_answer new_nonce_hash3 mismatch');\n }\n \n throw new Error('[MT] Set_client_DH_params_answer fail');\n }\n }\n }\n\n \n private getTransportType() {\n if(this.getTransportTypePromise) return this.getTransportTypePromise;\n return this.getTransportTypePromise = transportController.pingTransports().then(({websocket}) => {\n this.transportType = websocket ? 'websocket' : 'https';\n this.log('will use transport:', this.transportType);\n });\n }\n \n \n public auth(dcId: DcId) {\n let promise = this.cached[dcId];\n if(promise) {\n return promise;\n }\n\n promise = new Promise(async(resolve, reject) => {\n \n await this.getTransportType();\n \n\n let error: ApiError;\n let _try = 1;\n while(_try++ <= 3) {\n try {\n const auth: AuthOptions = {\n dcId, \n nonce: randomize(new Uint8Array(16))\n };\n \n const promise = this.sendReqPQ(auth);\n resolve(await promise);\n return;\n } catch(err) {\n error = err;\n }\n }\n\n reject(error);\n });\n\n return this.cached[dcId] = promise;\n }\n}\n\nexport default new Authorizer();\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\nimport blobSafeMimeType from \"./blobSafeMimeType\";\n\nexport default function blobConstruct<T extends Uint8Array | string>(blobParts: Array<T> | T, mimeType: string = ''): Blob {\n if(!Array.isArray(blobParts)) {\n blobParts = [blobParts];\n }\n\n let blob;\n const safeMimeType = blobSafeMimeType(mimeType);\n try {\n blob = new Blob(blobParts, {type: safeMimeType});\n } catch(e) {\n // @ts-ignore\n let bb = new BlobBuilder;\n blobParts.forEach((blobPart: any) => {\n bb.append(blobPart);\n });\n blob = bb.getBlob(safeMimeType);\n }\n return blob;\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n * \n * Originally from:\n * https://github.com/zhukov/webogram\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\n * https://github.com/zhukov/webogram/blob/master/LICENSE\n */\n\n// https://www.iana.org/assignments/media-types/media-types.xhtml\nexport default function blobSafeMimeType(mimeType: string) {\n if([\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/svg+xml',\n 'image/webp',\n 'image/bmp',\n 'video/mp4',\n 'video/webm',\n 'video/quicktime',\n 'audio/ogg',\n 'audio/mpeg',\n 'audio/mp4',\n 'application/json',\n 'application/pdf'\n ].indexOf(mimeType) === -1) {\n return 'application/octet-stream';\n }\n\n return mimeType;\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n * \r\n * Originally from:\r\n * https://github.com/zhukov/webogram\r\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\r\n * https://github.com/zhukov/webogram/blob/master/LICENSE\r\n */\r\n\r\nimport { Database } from '../config/databases';\r\nimport Modes from '../config/modes';\r\nimport blobConstruct from '../helpers/blob/blobConstruct';\r\nimport safeAssign from '../helpers/object/safeAssign';\r\nimport { logger } from './logger';\r\n\r\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/createIndex\r\n */\r\nexport type IDBIndex = {\r\n indexName: string,\r\n keyPath: string,\r\n objectParameters: IDBIndexParameters\r\n};\r\n\r\nexport type IDBStore = {\r\n name: string, \r\n indexes?: IDBIndex[]\r\n};\r\n\r\nexport type IDBOptions = {\r\n name?: string,\r\n storeName: string,\r\n stores?: IDBStore[],\r\n version?: number\r\n};\r\n\r\nconst DEBUG = false;\r\n\r\nexport default class IDBStorage<T extends Database<any>> {\r\n private static STORAGES: IDBStorage<Database<any>>[] = [];\r\n private openDbPromise: Promise<IDBDatabase>;\r\n private db: IDBDatabase;\r\n private storageIsAvailable = true;\r\n\r\n private log: ReturnType<typeof logger>;\r\n \r\n private name: string;\r\n private version: number;\r\n private stores: IDBStore[];\r\n private storeName: T['stores'][0]['name'];\r\n\r\n constructor(db: T, storeName: typeof db['stores'][0]['name']) {\r\n safeAssign(this, db);\r\n\r\n if(Modes.test) {\r\n this.name += '_test';\r\n }\r\n\r\n this.storeName = storeName;\r\n\r\n this.log = logger('IDB-' + this.storeName);\r\n\r\n this.openDatabase(true);\r\n\r\n IDBStorage.STORAGES.push(this);\r\n }\r\n\r\n public static closeDatabases(preserve?: IDBStorage<Database<any>>) {\r\n this.STORAGES.forEach(storage => {\r\n if(preserve && preserve === storage) {\r\n return;\r\n }\r\n\r\n const db = storage.db;\r\n if(db) {\r\n db.onclose = () => {};\r\n db.close();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * ! WARNING ! function requires at least one opened connection\r\n */\r\n /* public static clearObjectStores() {\r\n const storage = this.STORAGES[0];\r\n this.closeDatabases(storage);\r\n\r\n const names = Array.from(storage.db.objectStoreNames);\r\n const promises = names.map(name => storage.clear(name));\r\n return Promise.all(promises);\r\n } */\r\n\r\n /* public static deleteDatabase() {\r\n this.closeDatabases();\r\n\r\n const storages = this.STORAGES;\r\n const dbNames = Array.from(new Set(storages.map(storage => storage.name)));\r\n const promises = dbNames.map(dbName => {\r\n return new Promise<void>((resolve, reject) => {\r\n const deleteRequest = indexedDB.deleteDatabase(dbName);\r\n \r\n deleteRequest.onerror = () => {\r\n reject();\r\n };\r\n \r\n deleteRequest.onsuccess = () => {\r\n resolve();\r\n };\r\n });\r\n });\r\n\r\n return Promise.all(promises);\r\n } */\r\n\r\n public isAvailable() {\r\n return this.storageIsAvailable;\r\n }\r\n\r\n public openDatabase(createNew = false): Promise<IDBDatabase> {\r\n if(this.openDbPromise && !createNew) {\r\n return this.openDbPromise;\r\n }\r\n\r\n const createObjectStore = (db: IDBDatabase, store: IDBStore) => {\r\n const os = db.createObjectStore(store.name);\r\n\r\n if(store.indexes?.length) {\r\n for(const index of store.indexes) {\r\n os.createIndex(index.indexName, index.keyPath, index.objectParameters);\r\n }\r\n }\r\n };\r\n\r\n try {\r\n var request = indexedDB.open(this.name, this.version);\r\n\r\n if(!request) {\r\n return Promise.reject();\r\n }\r\n } catch(error) {\r\n this.log.error('error opening db', (error as Error).message);\r\n this.storageIsAvailable = false;\r\n return Promise.reject(error);\r\n }\r\n\r\n let finished = false;\r\n setTimeout(() => {\r\n if(!finished) {\r\n request.onerror({type: 'IDB_CREATE_TIMEOUT'} as Event);\r\n }\r\n }, 3000);\r\n\r\n return this.openDbPromise = new Promise<IDBDatabase>((resolve, reject) => {\r\n request.onsuccess = (event) => {\r\n finished = true;\r\n const db = request.result;\r\n let calledNew = false;\r\n\r\n this.log('Opened');\r\n \r\n db.onerror = (error) => {\r\n this.storageIsAvailable = false;\r\n this.log.error('Error creating/accessing IndexedDB database', error);\r\n reject(error);\r\n };\r\n\r\n db.onclose = (e) => {\r\n this.log.error('closed:', e);\r\n !calledNew && this.openDatabase();\r\n };\r\n\r\n db.onabort = (e) => {\r\n this.log.error('abort:', e);\r\n const transaction = e.target as IDBTransaction;\r\n \r\n this.openDatabase(calledNew = true);\r\n\r\n if(transaction.onerror) {\r\n transaction.onerror(e);\r\n }\r\n\r\n db.close();\r\n };\r\n\r\n db.onversionchange = (e) => {\r\n this.log.error('onversionchange, lol?');\r\n };\r\n\r\n resolve(this.db = db);\r\n };\r\n \r\n request.onerror = (event) => {\r\n finished = true;\r\n this.storageIsAvailable = false;\r\n this.log.error('Error creating/accessing IndexedDB database', event);\r\n reject(event);\r\n };\r\n \r\n request.onupgradeneeded = (event) => {\r\n finished = true;\r\n this.log.warn('performing idb upgrade from', event.oldVersion, 'to', event.newVersion);\r\n\r\n // @ts-ignore\r\n var db = event.target.result as IDBDatabase;\r\n this.stores.forEach((store) => {\r\n /* if(db.objectStoreNames.contains(store.name)) {\r\n //if(event.oldVersion === 1) {\r\n db.deleteObjectStore(store.name);\r\n //}\r\n } */\r\n \r\n if(!db.objectStoreNames.contains(store.name)) {\r\n createObjectStore(db, store);\r\n }\r\n });\r\n };\r\n });\r\n }\r\n\r\n public delete(entryName: string | string[]): Promise<void> {\r\n //return Promise.resolve();\r\n if(!Array.isArray(entryName)) {\r\n entryName = [].concat(entryName);\r\n }\r\n\r\n return this.getObjectStore('readwrite', (objectStore) => {\r\n return (entryName as string[]).map((entryName) => objectStore.delete(entryName));\r\n }, DEBUG ? 'delete: ' + entryName.join(', ') : '');\r\n }\r\n\r\n public clear(storeName?: IDBStorage<T>['storeName']) {\r\n return this.getObjectStore('readwrite', (objectStore) => objectStore.clear(), DEBUG ? 'clear' : '', storeName);\r\n }\r\n\r\n public save(entryName: string | string[], value: any | any[]) {\r\n // const handleError = (error: Error) => {\r\n // this.log.error('save: transaction error:', entryName, value, db, error, error && error.name);\r\n // if((!error || error.name === 'InvalidStateError')/* && false */) {\r\n // setTimeout(() => {\r\n // this.save(entryName, value);\r\n // }, 2e3);\r\n // } else {\r\n // //console.error('IndexedDB saveFile transaction error:', error, error && error.name);\r\n // }\r\n // };\r\n\r\n if(!Array.isArray(entryName)) {\r\n entryName = [].concat(entryName);\r\n value = [].concat(value);\r\n }\r\n \r\n return this.getObjectStore('readwrite', (objectStore) => {\r\n return (entryName as string[]).map((entryName, idx) => objectStore.put(value[idx], entryName));\r\n }, DEBUG ? 'save: ' + entryName.join(', ') : '');\r\n }\r\n\r\n public saveFile(fileName: string, blob: Blob | Uint8Array) {\r\n //return Promise.resolve(blobConstruct([blob]));\r\n if(!(blob instanceof Blob)) {\r\n blob = blobConstruct(blob);\r\n }\r\n\r\n return this.save(fileName, blob);\r\n }\r\n\r\n /* public saveFileBase64(db: IDBDatabase, fileName: string, blob: Blob | any): Promise<Blob> {\r\n if(this.getBlobSize(blob) > 10 * 1024 * 1024) {\r\n return Promise.reject();\r\n }\r\n\r\n if(!(blob instanceof Blob)) {\r\n var safeMimeType = blobSafeMimeType(blob.type || 'image/jpeg');\r\n var address = 'data:' + safeMimeType + ';base64,' + bytesToBase64(blob);\r\n return this.storagePutB64String(db, fileName, address).then(() => {\r\n return blob;\r\n });\r\n }\r\n\r\n try {\r\n var reader = new FileReader();\r\n } catch (e) {\r\n this.storageIsAvailable = false;\r\n return Promise.reject();\r\n }\r\n\r\n let promise = new Promise<Blob>((resolve, reject) => {\r\n reader.onloadend = () => {\r\n this.storagePutB64String(db, fileName, reader.result as string).then(() => {\r\n resolve(blob);\r\n }, reject);\r\n }\r\n \r\n reader.onerror = reject;\r\n });\r\n \r\n\r\n try {\r\n reader.readAsDataURL(blob);\r\n } catch (e) {\r\n this.storageIsAvailable = false;\r\n return Promise.reject();\r\n }\r\n\r\n return promise;\r\n }\r\n\r\n public storagePutB64String(db: IDBDatabase, fileName: string, b64string: string) {\r\n try {\r\n var objectStore = db.transaction([this.storeName], 'readwrite')\r\n .objectStore(this.storeName);\r\n var request = objectStore.put(b64string, fileName);\r\n } catch(error) {\r\n this.storageIsAvailable = false;\r\n return Promise.reject(error);\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n request.onsuccess = function(event) {\r\n resolve();\r\n };\r\n \r\n request.onerror = reject;\r\n });\r\n }\r\n\r\n public getBlobSize(blob: any) {\r\n return blob.size || blob.byteLength || blob.length;\r\n } */\r\n\r\n public get<T>(entryName: string[]): Promise<T[]>;\r\n public get<T>(entryName: string): Promise<T>;\r\n public get<T>(entryName: string | string[]): Promise<T> | Promise<T[]> {\r\n //return Promise.reject();\r\n\r\n if(!Array.isArray(entryName)) {\r\n entryName = [].concat(entryName);\r\n }\r\n\r\n return this.getObjectStore<T>('readonly', (objectStore) => {\r\n return (entryName as string[]).map((entryName) => objectStore.get(entryName));\r\n }, DEBUG ? 'get: ' + entryName.join(', ') : '');\r\n }\r\n\r\n private getObjectStore<T>(mode: IDBTransactionMode, objectStore: (objectStore: IDBObjectStore) => IDBRequest | IDBRequest[], log?: string, storeName = this.storeName) {\r\n let perf: number;\r\n\r\n if(log) {\r\n perf = performance.now();\r\n this.log(log + ': start');\r\n }\r\n\r\n return this.openDatabase().then((db) => {\r\n return new Promise<T>((resolve, reject) => {\r\n /* if(mode === 'readwrite') {\r\n return;\r\n } */\r\n\r\n const transaction = db.transaction([storeName], mode);\r\n\r\n transaction.onerror = (e) => {\r\n clearTimeout(timeout);\r\n reject(transaction.error);\r\n };\r\n \r\n transaction.oncomplete = (e) => {\r\n clearTimeout(timeout);\r\n\r\n if(log) {\r\n this.log(log + ': end', performance.now() - perf);\r\n }\r\n\r\n const results = r.map(r => r.result);\r\n resolve(isArray ? results : results[0]);\r\n };\r\n \r\n const timeout = setTimeout(() => {\r\n this.log.error('transaction not finished', transaction);\r\n }, 10000);\r\n \r\n /* transaction.addEventListener('abort', (e) => {\r\n //handleError();\r\n this.log.error('IndexedDB: transaction abort!', transaction.error);\r\n }); */\r\n \r\n const requests = objectStore(transaction.objectStore(storeName));\r\n\r\n const isArray = Array.isArray(requests);\r\n const r: IDBRequest[] = isArray ? requests : [].concat(requests) as any;\r\n\r\n // const length = r.length;\r\n // /* let left = length;\r\n\r\n // const onRequestFinished = (error?: Error) => {\r\n // if(!--left) {\r\n // resolve(result);\r\n // clearTimeout(timeout);\r\n // }\r\n // }; */\r\n\r\n // for(let i = 0; i < length; ++i) {\r\n // const request = r[i];\r\n // request.onsuccess = () => {\r\n // onRequestFinished();\r\n // };\r\n\r\n // request.onerror = (e) => {\r\n // onRequestFinished(transaction.error);\r\n // };\r\n // }\r\n });\r\n });\r\n }\r\n\r\n public getAll<T>(): Promise<T[]> {\r\n return this.getObjectStore<T[]>('readonly', (objectStore) => objectStore.getAll(), DEBUG ? 'getAll' : '');\r\n }\r\n\r\n /* public getAllKeys(): Promise<Array<string>> {\r\n console.time('getAllEntries');\r\n return this.openDatabase().then((db) => {\r\n var objectStore = db.transaction([this.storeName], 'readonly')\r\n .objectStore(this.storeName);\r\n var request = objectStore.getAllKeys();\r\n\r\n return new Promise((resolve, reject) => {\r\n request.onsuccess = function(event) {\r\n // @ts-ignore\r\n var result = event.target.result;\r\n resolve(result);\r\n console.timeEnd('getAllEntries');\r\n }\r\n \r\n request.onerror = reject;\r\n });\r\n });\r\n } */\r\n\r\n /* public isFileExists(fileName: string): Promise<boolean> {\r\n console.time('isFileExists');\r\n return this.openDatabase().then((db) => {\r\n var objectStore = db.transaction([this.storeName], 'readonly')\r\n .objectStore(this.storeName);\r\n var request = objectStore.openCursor(fileName);\r\n\r\n return new Promise((resolve, reject) => {\r\n request.onsuccess = function(event) {\r\n // @ts-ignore\r\n var cursor = event.target.result;\r\n resolve(!!cursor);\r\n console.timeEnd('isFileExists');\r\n }\r\n \r\n request.onerror = reject;\r\n });\r\n });\r\n } */\r\n\r\n /* public getFileWriter(fileName: string, mimeType: string) {\r\n var fakeWriter = FileManager.getFakeFileWriter(mimeType, (blob) => {\r\n return this.saveFile(fileName, blob);\r\n });\r\n\r\n return Promise.resolve(fakeWriter);\r\n } */\r\n}\r\n","export default function safeAssign<T>(object: T, fromObject: any) {\n if(fromObject) {\n for(let i in fromObject) {\n if(fromObject[i] !== undefined) {\n // @ts-ignore\n object[i] = fromObject[i];\n }\n }\n }\n\n return object;\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n * \r\n * Originally from:\r\n * https://github.com/zhukov/webogram\r\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\r\n * https://github.com/zhukov/webogram/blob/master/LICENSE\r\n */\r\n\r\nimport type { UserAuth } from './mtproto_config';\r\nimport sessionStorage from '../sessionStorage';\r\nimport MTPNetworker, { MTMessage } from './networker';\r\nimport networkerFactory from './networkerFactory';\r\n//import { telegramMeWebService } from './mtproto';\r\nimport authorizer from './authorizer';\r\nimport dcConfigurator, { ConnectionType, DcConfigurator, TransportType } from './dcConfigurator';\r\nimport { logger } from '../logger';\r\nimport type { DcAuthKey, DcId, DcServerSalt, InvokeApiOptions } from '../../types';\r\nimport type { MethodDeclMap } from '../../layer';\r\nimport deferredPromise, { CancellablePromise } from '../../helpers/cancellablePromise';\r\n//import { clamp } from '../../helpers/number';\r\nimport { IS_SAFARI } from '../../environment/userAgent';\r\nimport App from '../../config/app';\r\nimport { MOUNT_CLASS_TO } from '../../config/debug';\r\nimport IDBStorage from '../idb';\r\nimport CryptoWorker from \"../crypto/cryptoworker\";\r\nimport ctx from '../../environment/ctx';\r\nimport noop from '../../helpers/noop';\r\nimport Modes from '../../config/modes';\r\nimport bytesFromHex from '../../helpers/bytes/bytesFromHex';\r\nimport bytesToHex from '../../helpers/bytes/bytesToHex';\r\nimport isObject from '../../helpers/object/isObject';\r\nimport pause from '../../helpers/schedulers/pause';\r\n\r\n \r\n \r\n \r\n\r\n \r\nimport transportController from './transports/controller';\r\nimport MTTransport from './transports/transport';\r\n \r\n\r\n/* var networker = apiManager.cachedNetworkers.websocket.upload[2];\r\nnetworker.wrapMtpMessage({\r\n _: 'msgs_state_req',\r\n msg_ids: [\"6888292542796810828\"]\r\n}, {\r\n notContentRelated: true\r\n}).then(res => {\r\n console.log('status', res);\r\n}); */\r\n\r\n//console.error('apiManager included!');\r\n// TODO: если запрос словил флуд, нужно сохранять его параметры и возвращать тот же промис на новый такой же запрос, например - загрузка истории\r\n\r\nexport type ApiError = Partial<{\r\n code: number,\r\n type: string,\r\n description: string,\r\n originalError: any,\r\n stack: string,\r\n handled: boolean,\r\n input: string,\r\n message: ApiError\r\n}>;\r\n\r\n/* class RotatableArray<T> {\r\n public array: Array<T> = [];\r\n private lastIndex = -1;\r\n\r\n public get() {\r\n this.lastIndex = clamp(this.lastIndex + 1, 0, this.array.length - 1);\r\n return this.array[this.lastIndex];\r\n }\r\n} */\r\n\r\nconst FILE_NETWORKERS_COUNT = 3;\r\n\r\nexport class ApiManager {\r\n private cachedNetworkers: {\r\n [transportType in TransportType]: {\r\n [connectionType in ConnectionType]: {\r\n [dcId: DcId]: MTPNetworker[]\r\n }\r\n }\r\n };\r\n \r\n private cachedExportPromise: {[x: number]: Promise<unknown>};\r\n private gettingNetworkers: {[dcIdAndType: string]: Promise<MTPNetworker>};\r\n private baseDcId: DcId;\r\n \r\n //public telegramMeNotified = false;\r\n\r\n private log: ReturnType<typeof logger>;\r\n\r\n private afterMessageTempIds: {\r\n [tempId: string]: {\r\n messageId: string,\r\n promise: Promise<any>\r\n }\r\n };\r\n\r\n private transportType: TransportType;\r\n \r\n constructor() {\r\n this.log = logger('API');\r\n\r\n this.cachedNetworkers = {} as any;\r\n this.cachedExportPromise = {};\r\n this.gettingNetworkers = {};\r\n this.baseDcId = 0;\r\n this.afterMessageTempIds = {};\r\n\r\n this.transportType = Modes.transport;\r\n\r\n \r\n transportController.addEventListener('transport', (transportType) => {\r\n this.changeTransportType(transportType);\r\n });\r\n \r\n }\r\n\r\n //private lol = false;\r\n \r\n // constructor() {\r\n //MtpSingleInstanceService.start();\r\n \r\n /* AppStorage.get<number>('dc').then((dcId) => {\r\n if(dcId) {\r\n this.baseDcId = dcId;\r\n }\r\n }); */\r\n // }\r\n \r\n /* public telegramMeNotify(newValue: boolean) {\r\n if(this.telegramMeNotified !== newValue) {\r\n this.telegramMeNotified = newValue;\r\n //telegramMeWebService.setAuthorized(this.telegramMeNotified);\r\n }\r\n } */\r\n\r\n private getTransportType(connectionType: ConnectionType) {\r\n \r\n \r\n \r\n \r\n \r\n // @ts-ignore\r\n const transportType: TransportType = this.transportType;\r\n \r\n\r\n return transportType;\r\n }\r\n\r\n private iterateNetworkers(callback: (o: {networker: MTPNetworker, dcId: DcId, connectionType: ConnectionType, transportType: TransportType, index: number, array: MTPNetworker[]}) => void) {\r\n for(const transportType in this.cachedNetworkers) {\r\n const connections = this.cachedNetworkers[transportType as TransportType];\r\n for(const connectionType in connections) {\r\n const dcs = connections[connectionType as ConnectionType];\r\n for(const dcId in dcs) {\r\n const networkers = dcs[dcId as any as DcId];\r\n networkers.forEach((networker, idx, arr) => {\r\n callback({\r\n networker,\r\n dcId: +dcId as DcId,\r\n connectionType: connectionType as ConnectionType,\r\n transportType: transportType as TransportType,\r\n index: idx,\r\n array: arr\r\n });\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n private chooseServer(dcId: DcId, connectionType: ConnectionType, transportType: TransportType) {\r\n return dcConfigurator.chooseServer(dcId, connectionType, transportType, connectionType === 'client');\r\n }\r\n\r\n public changeTransportType(transportType: TransportType) {\r\n const oldTransportType = this.transportType;\r\n if(oldTransportType === transportType) {\r\n return;\r\n }\r\n\r\n this.log('changing transport from', oldTransportType, 'to', transportType);\r\n\r\n const oldObject = this.cachedNetworkers[oldTransportType];\r\n const newObject = this.cachedNetworkers[transportType];\r\n this.cachedNetworkers[transportType] = oldObject;\r\n this.cachedNetworkers[oldTransportType] = newObject;\r\n\r\n this.transportType = transportType;\r\n\r\n for(const oldGetKey in this.gettingNetworkers) {\r\n const promise = this.gettingNetworkers[oldGetKey];\r\n delete this.gettingNetworkers[oldGetKey];\r\n\r\n const newGetKey = oldGetKey.replace(oldTransportType, transportType);\r\n this.gettingNetworkers[newGetKey] = promise;\r\n\r\n this.log('changed networker getKey from', oldGetKey, 'to', newGetKey)\r\n }\r\n\r\n this.iterateNetworkers((info) => {\r\n const transportType = this.getTransportType(info.connectionType);\r\n const transport = this.chooseServer(info.dcId, info.connectionType, transportType);\r\n this.changeNetworkerTransport(info.networker, transport);\r\n });\r\n }\r\n\r\n public async getBaseDcId() {\r\n if(this.baseDcId) {\r\n return this.baseDcId;\r\n }\r\n\r\n const baseDcId = await sessionStorage.get('dc');\r\n if(!this.baseDcId) {\r\n if(!baseDcId) {\r\n this.setBaseDcId(App.baseDcId);\r\n } else {\r\n this.baseDcId = baseDcId;\r\n }\r\n }\r\n\r\n return this.baseDcId;\r\n }\r\n \r\n public async setUserAuth(userAuth: UserAuth) {\r\n if(!userAuth.dcID) {\r\n const baseDcId = await this.getBaseDcId();\r\n userAuth.dcID = baseDcId;\r\n }\r\n\r\n sessionStorage.set({\r\n user_auth: userAuth\r\n });\r\n \r\n //this.telegramMeNotify(true);\r\n\r\n \r\n \r\n \r\n }\r\n\r\n public setBaseDcId(dcId: DcId) {\r\n const wasDcId = this.baseDcId;\r\n if(wasDcId) { // if migrated set ondrain\r\n this.getNetworker(wasDcId).then(networker => {\r\n this.setOnDrainIfNeeded(networker);\r\n });\r\n }\r\n\r\n this.baseDcId = dcId;\r\n\r\n sessionStorage.set({\r\n dc: this.baseDcId\r\n });\r\n }\r\n \r\n public async logOut() {\r\n const storageKeys: Array<DcAuthKey> = [];\r\n \r\n const prefix = 'dc';\r\n for(let dcId = 1; dcId <= 5; dcId++) {\r\n storageKeys.push(prefix + dcId + '_auth_key' as any);\r\n }\r\n \r\n // WebPushApiManager.forceUnsubscribe(); // WARNING // moved to worker's master\r\n const storageResult = await Promise.all(storageKeys.map(key => sessionStorage.get(key)));\r\n \r\n const logoutPromises: Promise<any>[] = [];\r\n for(let i = 0; i < storageResult.length; i++) {\r\n if(storageResult[i]) {\r\n logoutPromises.push(this.invokeApi('auth.logOut', {}, {dcId: (i + 1) as DcId, ignoreErrors: true}));\r\n }\r\n }\r\n\r\n const clear = () => {\r\n //console.error('apiManager: logOut clear');\r\n \r\n this.baseDcId = undefined;\r\n //this.telegramMeNotify(false);\r\n IDBStorage.closeDatabases();\r\n self.postMessage({type: 'clear'});\r\n };\r\n\r\n setTimeout(clear, 1e3);\r\n\r\n //return;\r\n \r\n return Promise.all(logoutPromises).catch((error) => {\r\n error.handled = true;\r\n }).finally(clear)/* .then(() => {\r\n location.pathname = '/';\r\n }) */;\r\n }\r\n\r\n private generateNetworkerGetKey(dcId: DcId, transportType: TransportType, connectionType: ConnectionType) {\r\n return [dcId, transportType, connectionType].join('-');\r\n }\r\n \r\n public getNetworker(dcId: DcId, options: InvokeApiOptions = {}): Promise<MTPNetworker> {\r\n const connectionType: ConnectionType = options.fileDownload ? 'download' : (options.fileUpload ? 'upload' : 'client');\r\n //const connectionType: ConnectionType = 'client';\r\n\r\n const transportType = this.getTransportType(connectionType);\r\n if(!this.cachedNetworkers[transportType]) {\r\n this.cachedNetworkers[transportType] = {\r\n client: {},\r\n download: {},\r\n upload: {}\r\n };\r\n }\r\n\r\n const cache = this.cachedNetworkers[transportType][connectionType];\r\n if(!(dcId in cache)) {\r\n cache[dcId] = [];\r\n }\r\n \r\n const networkers = cache[dcId];\r\n // @ts-ignore\r\n const maxNetworkers = connectionType === 'client' || transportType === 'https' ? 1 : FILE_NETWORKERS_COUNT;\r\n if(networkers.length >= maxNetworkers) {\r\n let i = networkers.length - 1, found = false;\r\n for(; i >= 0; --i) {\r\n if(networkers[i].isOnline) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n \r\n const networker = found ? networkers.splice(i, 1)[0] : networkers.pop();\r\n networkers.unshift(networker);\r\n return Promise.resolve(networker);\r\n }\r\n \r\n let getKey = this.generateNetworkerGetKey(dcId, transportType, connectionType);\r\n if(this.gettingNetworkers[getKey]) {\r\n return this.gettingNetworkers[getKey];\r\n }\r\n\r\n const ak: DcAuthKey = `dc${dcId}_auth_key` as any;\r\n const ss: DcServerSalt = `dc${dcId}_server_salt` as any;\r\n \r\n let transport = this.chooseServer(dcId, connectionType, transportType);\r\n return this.gettingNetworkers[getKey] = Promise.all([ak, ss].map(key => sessionStorage.get(key)))\r\n .then(async([authKeyHex, serverSaltHex]) => {\r\n let networker: MTPNetworker, error: any;\r\n if(authKeyHex && authKeyHex.length === 512) {\r\n if(!serverSaltHex || serverSaltHex.length !== 16) {\r\n serverSaltHex = 'AAAAAAAAAAAAAAAA';\r\n }\r\n \r\n const authKey = bytesFromHex(authKeyHex);\r\n const authKeyId = (await CryptoWorker.invokeCrypto('sha1', authKey)).slice(-8);\r\n const serverSalt = bytesFromHex(serverSaltHex);\r\n \r\n networker = networkerFactory.getNetworker(dcId, authKey, authKeyId, serverSalt, options);\r\n } else {\r\n try { // if no saved state\r\n const auth = await authorizer.auth(dcId);\r\n \r\n sessionStorage.set({\r\n [ak]: bytesToHex(auth.authKey),\r\n [ss]: bytesToHex(auth.serverSalt)\r\n });\r\n \r\n networker = networkerFactory.getNetworker(dcId, auth.authKey, auth.authKeyId, auth.serverSalt, options);\r\n } catch(_error) {\r\n error = _error;\r\n }\r\n }\r\n\r\n // ! cannot get it before this promise because simultaneous changeTransport will change nothing\r\n const newTransportType = this.getTransportType(connectionType);\r\n if(newTransportType !== transportType) {\r\n getKey = this.generateNetworkerGetKey(dcId, newTransportType, connectionType);\r\n transport.destroy();\r\n DcConfigurator.removeTransport(dcConfigurator.chosenServers, transport);\r\n\r\n if(networker) {\r\n transport = this.chooseServer(dcId, connectionType, newTransportType);\r\n }\r\n\r\n this.log('transport has been changed during authorization from', transportType, 'to', newTransportType);\r\n }\r\n\r\n /* networker.onConnectionStatusChange = (online) => {\r\n console.log('status:', online);\r\n }; */\r\n \r\n delete this.gettingNetworkers[getKey];\r\n\r\n if(error) {\r\n this.log('get networker error', error, (error as Error).stack);\r\n throw error;\r\n }\r\n\r\n this.changeNetworkerTransport(networker, transport);\r\n networkers.unshift(networker);\r\n this.setOnDrainIfNeeded(networker);\r\n return networker;\r\n });\r\n }\r\n\r\n private changeNetworkerTransport(networker: MTPNetworker, transport?: MTTransport) {\r\n const oldTransport = networker.transport;\r\n if(oldTransport) {\r\n DcConfigurator.removeTransport(dcConfigurator.chosenServers, oldTransport);\r\n }\r\n\r\n networker.changeTransport(transport);\r\n }\r\n\r\n public setOnDrainIfNeeded(networker: MTPNetworker) {\r\n if(networker.onDrain) {\r\n return;\r\n }\r\n \r\n const checkPromise: Promise<boolean> = networker.isFileNetworker ? \r\n Promise.resolve(true) : \r\n this.getBaseDcId().then(baseDcId => networker.dcId !== baseDcId);\r\n checkPromise.then(canRelease => {\r\n if(networker.onDrain) {\r\n return;\r\n }\r\n \r\n if(canRelease) {\r\n networker.onDrain = () => {\r\n this.log('networker drain', networker.dcId);\r\n\r\n networker.onDrain = undefined;\r\n this.changeNetworkerTransport(networker);\r\n networker.destroy();\r\n networkerFactory.removeNetworker(networker);\r\n DcConfigurator.removeTransport(this.cachedNetworkers, networker);\r\n };\r\n\r\n networker.setDrainTimeout();\r\n }\r\n });\r\n }\r\n \r\n public invokeApi<T extends keyof MethodDeclMap>(method: T, params: MethodDeclMap[T]['req'] = {}, options: InvokeApiOptions = {}): CancellablePromise<MethodDeclMap[T][\"res\"]> {\r\n ///////this.log('Invoke api', method, params, options);\r\n\r\n /* if(!this.lol) {\r\n networkerFactory.updatesProcessor({_: 'new_session_created'}, true);\r\n this.lol = true;\r\n } */\r\n\r\n const deferred = deferredPromise<MethodDeclMap[T]['res']>();\r\n\r\n let {afterMessageId, prepareTempMessageId} = options;\r\n if(prepareTempMessageId) {\r\n deferred.then(() => {\r\n delete this.afterMessageTempIds[prepareTempMessageId];\r\n });\r\n }\r\n\r\n if(MOUNT_CLASS_TO) {\r\n const startTime = Date.now();\r\n const interval = ctx.setInterval(() => {\r\n if(!cachedNetworker || !cachedNetworker.isStopped()) {\r\n this.log.error('Request is still processing:', method, params, options, 'time:', (Date.now() - startTime) / 1000);\r\n }\r\n //this.cachedUploadNetworkers[2].requestMessageStatus();\r\n }, 5e3);\r\n\r\n deferred.catch(noop).finally(() => {\r\n clearInterval(interval);\r\n });\r\n }\r\n\r\n const rejectPromise = async(error: ApiError) => {\r\n if(!error) {\r\n error = {type: 'ERROR_EMPTY'};\r\n } else if(!isObject(error)) {\r\n error = {message: error};\r\n }\r\n\r\n if((error.code === 401 && error.type === 'SESSION_REVOKED') || \r\n (error.code === 406 && error.type === 'AUTH_KEY_DUPLICATED')) {\r\n this.logOut();\r\n }\r\n\r\n if(options.ignoreErrors) {\r\n throw error;\r\n }\r\n \r\n if(error.code === 406) {\r\n error.handled = true;\r\n }\r\n \r\n if(!options.noErrorBox) {\r\n error.input = method;\r\n error.stack = stack || (error.originalError && error.originalError.stack) || error.stack || (new Error()).stack;\r\n setTimeout(() => {\r\n if(!error.handled) {\r\n if(error.code === 401) {\r\n this.logOut();\r\n } else {\r\n // ErrorService.show({error: error}); // WARNING\r\n }\r\n \r\n error.handled = true;\r\n }\r\n }, 100);\r\n }\r\n\r\n throw error;\r\n };\r\n \r\n let dcId: DcId;\r\n \r\n let cachedNetworker: MTPNetworker;\r\n let stack = (new Error()).stack || 'empty stack';\r\n const performRequest = (): Promise<any> => {\r\n if(afterMessageId) {\r\n const after = this.afterMessageTempIds[afterMessageId];\r\n if(after) {\r\n options.afterMessageId = after.messageId;\r\n }\r\n }\r\n\r\n const promise = cachedNetworker.wrapApiCall(method, params, options);\r\n\r\n if(prepareTempMessageId) {\r\n this.afterMessageTempIds[prepareTempMessageId] = {\r\n messageId: (options as MTMessage).messageId,\r\n promise: deferred\r\n };\r\n }\r\n\r\n return promise.catch((error: ApiError) => {\r\n //if(!options.ignoreErrors) {\r\n if(error.type !== 'FILE_REFERENCE_EXPIRED'/* && error.type !== 'MSG_WAIT_FAILED' */) {\r\n this.log.error('Error', error.code, error.type, this.baseDcId, dcId, method, params);\r\n }\r\n \r\n if(error.code === 401 && this.baseDcId === dcId) {\r\n if(error.type !== 'SESSION_PASSWORD_NEEDED') {\r\n sessionStorage.delete('dc')\r\n sessionStorage.delete('user_auth'); // ! возможно тут вообще не нужно это делать, но нужно проверить случай с USER_DEACTIVATED (https://core.telegram.org/api/errors)\r\n //this.telegramMeNotify(false);\r\n }\r\n \r\n throw error;\r\n } else if(error.code === 401 && this.baseDcId && dcId !== this.baseDcId) {\r\n if(this.cachedExportPromise[dcId] === undefined) {\r\n const promise = new Promise((exportResolve, exportReject) => {\r\n this.invokeApi('auth.exportAuthorization', {dc_id: dcId}, {noErrorBox: true}).then((exportedAuth) => {\r\n this.invokeApi('auth.importAuthorization', {\r\n id: exportedAuth.id,\r\n bytes: exportedAuth.bytes\r\n }, {dcId, noErrorBox: true}).then(exportResolve, exportReject);\r\n }, exportReject);\r\n });\r\n \r\n this.cachedExportPromise[dcId] = promise;\r\n }\r\n \r\n return this.cachedExportPromise[dcId].then(() => performRequest());\r\n } else if(error.code === 303) {\r\n const newDcId = +error.type.match(/^(PHONE_MIGRATE_|NETWORK_MIGRATE_|USER_MIGRATE_)(\\d+)/)[2] as DcId;\r\n if(newDcId !== dcId) {\r\n if(options.dcId) {\r\n options.dcId = newDcId;\r\n } else {\r\n this.setBaseDcId(newDcId);\r\n }\r\n \r\n return this.invokeApi(method, params, options);\r\n }\r\n } else if(error.code === 400 && error.type.indexOf('FILE_MIGRATE') === 0) {\r\n const newDcId = +error.type.match(/^(FILE_MIGRATE_)(\\d+)/)[2] as DcId;\r\n if(newDcId !== dcId) {\r\n options.dcId = newDcId;\r\n return this.invokeApi(method, params, options);\r\n } else {\r\n throw error;\r\n }\r\n } else if(error.code === 400 && error.type === 'CONNECTION_NOT_INITED') {\r\n networkerFactory.unsetConnectionInited();\r\n return performRequest();\r\n } else if(!options.rawError && error.code === 420) {\r\n const waitTime = +error.type.match(/^FLOOD_WAIT_(\\d+)/)[1] || 1;\r\n \r\n if(waitTime > (options.floodMaxTimeout !== undefined ? options.floodMaxTimeout : 60) && !options.prepareTempMessageId) {\r\n throw error;\r\n }\r\n \r\n return pause(waitTime/* (waitTime + 5) */ * 1000).then(() => performRequest());\r\n } else if(!options.rawError && ['MSG_WAIT_FAILED', 'MSG_WAIT_TIMEOUT'].includes(error.type)) {\r\n const after = this.afterMessageTempIds[afterMessageId];\r\n\r\n afterMessageId = undefined;\r\n delete options.afterMessageId;\r\n\r\n if(after) return after.promise.then(() => performRequest());\r\n else return performRequest();\r\n } else if(!options.rawError && error.code === 500) {\r\n const now = Date.now();\r\n if(options.stopTime) {\r\n if(now >= options.stopTime) {\r\n throw error;\r\n }\r\n }\r\n \r\n options.waitTime = options.waitTime ? Math.min(60, options.waitTime * 1.5) : 1;\r\n return pause(options.waitTime * 1000).then(() => performRequest());\r\n } else if(error.type === 'UNKNOWN') {\r\n return pause(1000).then(() => performRequest());\r\n } else {\r\n throw error;\r\n }\r\n });\r\n }\r\n \r\n let p: Promise<MTPNetworker>;\r\n if(dcId = (options.dcId || this.baseDcId)) {\r\n p = this.getNetworker(dcId, options);\r\n } else {\r\n p = this.getBaseDcId().then((baseDcId) => this.getNetworker(dcId = baseDcId, options));\r\n }\r\n\r\n p.then((networker) => {\r\n cachedNetworker = networker;\r\n const promise = performRequest();\r\n cachedNetworker.attachPromise(deferred, options as MTMessage);\r\n return promise;\r\n })\r\n .then(deferred.resolve)\r\n .catch(rejectPromise)\r\n .catch(deferred.reject);\r\n\r\n return deferred;\r\n }\r\n}\r\n\r\nconst apiManager = new ApiManager();\r\nMOUNT_CLASS_TO.apiManager = apiManager;\r\nexport default apiManager;\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n * \r\n * Originally from:\r\n * https://github.com/zhukov/webogram\r\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\r\n * https://github.com/zhukov/webogram/blob/master/LICENSE\r\n */\r\n\r\nimport blobConstruct from \"../helpers/blob/blobConstruct\";\r\n\r\nexport class FileManager {\r\n private blobSupported = true;\r\n \r\n constructor() {\r\n try {\r\n blobConstruct([], '');\r\n } catch(e) {\r\n this.blobSupported = false;\r\n }\r\n }\r\n \r\n public isAvailable() {\r\n return this.blobSupported;\r\n }\r\n \r\n public getFakeFileWriter(mimeType: string, size: number, saveFileCallback?: (blob: Blob) => Promise<Blob>) {\r\n let bytes: Uint8Array = new Uint8Array(size);\r\n const fakeFileWriter = {\r\n write: async(part: Uint8Array, offset: number) => {\r\n if(!this.blobSupported) {\r\n throw false;\r\n }\r\n \r\n bytes.set(part, offset);\r\n },\r\n truncate: () => {\r\n bytes = new Uint8Array();\r\n },\r\n trim: (size: number) => {\r\n bytes = bytes.slice(0, size);\r\n },\r\n finalize: (saveToStorage = true) => {\r\n const blob = blobConstruct(bytes, mimeType);\r\n\r\n if(saveToStorage && saveFileCallback) {\r\n saveFileCallback(blob);\r\n }\r\n \r\n return blob;\r\n },\r\n getParts: () => bytes,\r\n replaceParts: (parts: typeof bytes) => {\r\n bytes = parts;\r\n }\r\n };\r\n \r\n return fakeFileWriter;\r\n }\r\n}\r\n\r\nexport default new FileManager();\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport Modes from '../config/modes';\r\nimport blobConstruct from '../helpers/blob/blobConstruct';\r\nimport FileManager from './fileManager';\r\n//import { MOUNT_CLASS_TO } from './mtproto/mtproto_config';\r\n//import { logger } from './polyfill';\r\n\r\nexport type CacheStorageDbName = 'cachedFiles' | 'cachedStreamChunks' | 'cachedAssets';\r\n\r\nexport default class CacheStorageController {\r\n private static STORAGES: CacheStorageController[] = [];\r\n private openDbPromise: Promise<Cache>;\r\n\r\n private useStorage = true;\r\n\r\n //private log: ReturnType<typeof logger> = logger('CS');\r\n\r\n constructor(private dbName: CacheStorageDbName) {\r\n if(Modes.test) {\r\n this.dbName += '_test';\r\n }\r\n\r\n if(CacheStorageController.STORAGES.length) {\r\n this.useStorage = CacheStorageController.STORAGES[0].useStorage;\r\n }\r\n \r\n this.openDatabase();\r\n CacheStorageController.STORAGES.push(this);\r\n }\r\n\r\n private openDatabase(): Promise<Cache> {\r\n return this.openDbPromise ?? (this.openDbPromise = caches.open(this.dbName));\r\n }\r\n\r\n public delete(entryName: string) {\r\n return this.timeoutOperation((cache) => cache.delete('/' + entryName));\r\n }\r\n\r\n public deleteAll() {\r\n return caches.delete(this.dbName);\r\n }\r\n\r\n public get(entryName: string) {\r\n return this.timeoutOperation((cache) => cache.match('/' + entryName));\r\n }\r\n\r\n public save(entryName: string, response: Response) {\r\n // return new Promise((resolve) => {}); // DEBUG\r\n return this.timeoutOperation((cache) => cache.put('/' + entryName, response));\r\n }\r\n\r\n public getFile(fileName: string, method: 'blob' | 'json' | 'text' = 'blob'): Promise<any> {\r\n /* if(method === 'blob') {\r\n return Promise.reject();\r\n } */\r\n\r\n // const str = `get fileName: ${fileName}`;\r\n // console.time(str);\r\n return this.get(fileName).then((response) => {\r\n if(!response) {\r\n //console.warn('getFile:', response, fileName);\r\n throw 'NO_ENTRY_FOUND';\r\n }\r\n\r\n const promise = response[method]();\r\n // promise.then(() => {\r\n // console.timeEnd(str);\r\n // });\r\n return promise;\r\n });\r\n }\r\n\r\n public saveFile(fileName: string, blob: Blob | Uint8Array) {\r\n //return Promise.resolve(blobConstruct([blob]));\r\n if(!(blob instanceof Blob)) {\r\n blob = blobConstruct(blob);\r\n }\r\n\r\n const response = new Response(blob, {\r\n headers: {\r\n 'Content-Length': '' + blob.size\r\n }\r\n });\r\n \r\n return this.save(fileName, response).then(() => blob as Blob);\r\n }\r\n\r\n public timeoutOperation<T>(callback: (cache: Cache) => Promise<T>) {\r\n if(!this.useStorage) {\r\n return Promise.reject('STORAGE_OFFLINE');\r\n }\r\n\r\n return new Promise<T>(async(resolve, reject) => {\r\n let rejected = false;\r\n const timeout = setTimeout(() => {\r\n reject();\r\n //console.warn('CACHESTORAGE TIMEOUT');\r\n rejected = true;\r\n }, 15e3);\r\n\r\n try {\r\n const cache = await this.openDatabase();\r\n if(!cache) {\r\n this.useStorage = false;\r\n this.openDbPromise = undefined;\r\n throw 'no cache?';\r\n }\r\n\r\n const res = await callback(cache);\r\n\r\n if(rejected) return;\r\n resolve(res);\r\n } catch(err) {\r\n reject(err);\r\n }\r\n\r\n clearTimeout(timeout);\r\n });\r\n }\r\n\r\n public getFileWriter(fileName: string, fileSize: number, mimeType: string) {\r\n const fakeWriter = FileManager.getFakeFileWriter(mimeType, fileSize, (blob) => {\r\n return this.saveFile(fileName, blob).catch(() => blob);\r\n });\r\n\r\n return Promise.resolve(fakeWriter);\r\n }\r\n\r\n public static toggleStorage(enabled: boolean) {\r\n return Promise.all(this.STORAGES.map(storage => {\r\n storage.useStorage = enabled;\r\n \r\n if(!enabled) {\r\n return storage.deleteAll();\r\n }\r\n }));\r\n }\r\n}\r\n\r\n//const cacheStorage = new CacheStorageController(); \r\n//MOUNT_CLASS_TO.cacheStorage = cacheStorage;\r\n//export default cacheStorage;\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport readBlobAs from \"./readBlobAs\";\n\nexport default function readBlobAsArrayBuffer(blob: Blob) {\n return readBlobAs(blob, 'readAsArrayBuffer');\n}\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\n// import { IS_WEB_WORKER } from \"../context\";\n\n// const id = IS_WEB_WORKER ? Math.random() * 0x1000 | 0 : 0;\nexport default function readBlobAs(blob: Blob, method: 'readAsText'): Promise<string>;\nexport default function readBlobAs(blob: Blob, method: 'readAsDataURL'): Promise<string>;\nexport default function readBlobAs(blob: Blob, method: 'readAsArrayBuffer'): Promise<ArrayBuffer>;\nexport default function readBlobAs(blob: Blob, method: 'readAsArrayBuffer' | 'readAsText' | 'readAsDataURL'): Promise<any> {\n // const perf = performance.now();\n return new Promise<any>((resolve) => {\n const reader = new FileReader();\n reader.addEventListener('loadend', (e) => {\n // console.log(`readBlobAs [${id}] ${method} time ${performance.now() - perf}`);\n resolve(e.target.result);\n });\n reader[method](blob);\n });\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n * \r\n * Originally from:\r\n * https://github.com/zhukov/webogram\r\n * Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>\r\n * https://github.com/zhukov/webogram/blob/master/LICENSE\r\n */\r\n\r\nimport type { ReferenceBytes } from \"./referenceDatabase\";\r\nimport { MOUNT_CLASS_TO } from \"../../config/debug\";\r\nimport Modes from \"../../config/modes\";\r\nimport deferredPromise, { CancellablePromise } from \"../../helpers/cancellablePromise\";\r\nimport { notifyAll, notifySomeone } from \"../../helpers/context\";\r\nimport { getFileNameByLocation } from \"../../helpers/fileName\";\r\nimport { randomLong } from \"../../helpers/random\";\r\nimport { InputFile, InputFileLocation, InputWebFileLocation, UploadFile, UploadWebFile } from \"../../layer\";\r\nimport { DcId, WorkerTaskVoidTemplate } from \"../../types\";\r\nimport CacheStorageController from \"../cacheStorage\";\r\nimport cryptoWorker from \"../crypto/cryptoworker\";\r\nimport fileManager from \"../fileManager\";\r\nimport { logger, LogTypes } from \"../logger\";\r\nimport apiManager from \"./apiManager\";\r\nimport { isWebpSupported } from \"./mtproto.worker\";\r\nimport assumeType from \"../../helpers/assumeType\";\r\nimport ctx from \"../../environment/ctx\";\r\nimport noop from \"../../helpers/noop\";\r\nimport readBlobAsArrayBuffer from \"../../helpers/blob/readBlobAsArrayBuffer\";\r\nimport bytesToHex from \"../../helpers/bytes/bytesToHex\";\r\nimport findAndSplice from \"../../helpers/array/findAndSplice\";\r\nimport { IS_FIREFOX } from \"../../environment/userAgent\";\r\nimport fixFirefoxSvg from \"../../helpers/fixFirefoxSvg\";\r\n\r\ntype Delayed = {\r\n offset: number, \r\n writeFilePromise: CancellablePromise<void>, \r\n writeFileDeferred: CancellablePromise<void>\r\n};\r\n\r\nexport type DownloadOptions = {\r\n dcId: DcId, \r\n location: InputFileLocation | InputWebFileLocation, \r\n size?: number,\r\n fileName?: string,\r\n mimeType?: string,\r\n limitPart?: number,\r\n queueId?: number,\r\n onlyCache?: boolean,\r\n // getFileMethod: Parameters<CacheStorageController['getFile']>[1]\r\n};\r\n\r\ntype DownloadPromise = CancellablePromise<Blob>;\r\n\r\nexport type MyUploadFile = UploadFile.uploadFile | UploadWebFile.uploadWebFile;\r\n\r\nexport interface RefreshReferenceTask extends WorkerTaskVoidTemplate {\r\n type: 'refreshReference',\r\n payload: ReferenceBytes,\r\n};\r\n\r\nexport interface RefreshReferenceTaskResponse extends WorkerTaskVoidTemplate {\r\n type: 'refreshReference',\r\n payload: ReferenceBytes,\r\n originalPayload: ReferenceBytes\r\n};\r\n\r\nconst MAX_FILE_SAVE_SIZE = 20 * 1024 * 1024;\r\n\r\nexport class ApiFileManager {\r\n private cacheStorage = new CacheStorageController('cachedFiles');\r\n\r\n private cachedDownloadPromises: {\r\n [fileName: string]: DownloadPromise\r\n } = {};\r\n\r\n private uploadPromises: {\r\n [fileName: string]: Set<CancellablePromise<InputFile>>\r\n } = {};\r\n\r\n private downloadPulls: {\r\n [dcId: string]: Array<{\r\n id: number,\r\n queueId: number,\r\n cb: () => Promise<MyUploadFile | void>,\r\n deferred: {\r\n resolve: (...args: any[]) => void,\r\n reject: (...args: any[]) => void\r\n },\r\n activeDelta: number\r\n }>\r\n } = {};\r\n private downloadActives: {[dcId: string]: number} = {};\r\n\r\n public webpConvertPromises: {[fileName: string]: CancellablePromise<Uint8Array>} = {};\r\n public refreshReferencePromises: {\r\n [referenceHex: string]: {\r\n deferred: CancellablePromise<ReferenceBytes>,\r\n timeout: number\r\n }\r\n } = {};\r\n\r\n private log: ReturnType<typeof logger> = logger('AFM', LogTypes.Error | LogTypes.Log);\r\n private tempId = 0;\r\n private queueId = 0;\r\n private debug = Modes.debug;\r\n\r\n constructor() {\r\n setInterval(() => { // clear old promises\r\n for(const hex in this.refreshReferencePromises) {\r\n const {deferred} = this.refreshReferencePromises[hex];\r\n if(deferred.isFulfilled || deferred.isRejected) {\r\n delete this.refreshReferencePromises[hex];\r\n }\r\n }\r\n }, 1800e3);\r\n }\r\n\r\n private downloadRequest(dcId: 'upload', id: number, cb: () => Promise<void>, activeDelta: number, queueId?: number): Promise<void>;\r\n private downloadRequest(dcId: number, id: number, cb: () => Promise<MyUploadFile>, activeDelta: number, queueId?: number): Promise<MyUploadFile>;\r\n private downloadRequest(dcId: number | string, id: number, cb: () => Promise<MyUploadFile | void>, activeDelta: number, queueId: number = 0) {\r\n if(this.downloadPulls[dcId] === undefined) {\r\n this.downloadPulls[dcId] = [];\r\n this.downloadActives[dcId] = 0;\r\n }\r\n\r\n const downloadPull = this.downloadPulls[dcId];\r\n\r\n const promise = new Promise<MyUploadFile | void>((resolve, reject) => {\r\n downloadPull.push({id, queueId, cb, deferred: {resolve, reject}, activeDelta});\r\n });\r\n\r\n setTimeout(() => {\r\n this.downloadCheck(dcId);\r\n }, 0);\r\n\r\n return promise;\r\n }\r\n\r\n private downloadCheck(dcId: string | number) {\r\n const downloadPull = this.downloadPulls[dcId];\r\n const downloadLimit = dcId === 'upload' ? 24 : 36;\r\n //const downloadLimit = Infinity;\r\n\r\n if(this.downloadActives[dcId] >= downloadLimit || !downloadPull || !downloadPull.length) {\r\n return false;\r\n }\r\n\r\n //const data = downloadPull.shift();\r\n const data = findAndSplice(downloadPull, d => d.queueId === 0) || findAndSplice(downloadPull, d => d.queueId === this.queueId) || downloadPull.shift();\r\n const activeDelta = data.activeDelta || 1;\r\n\r\n this.downloadActives[dcId] += activeDelta;\r\n \r\n data.cb()\r\n .then((result) => {\r\n this.downloadActives[dcId] -= activeDelta;\r\n this.downloadCheck(dcId);\r\n\r\n data.deferred.resolve(result);\r\n }, (error: Error) => {\r\n // @ts-ignore\r\n if(!error || !error.type || (error.type !== 'DOWNLOAD_CANCELED' && error.type !== 'UPLOAD_CANCELED')) {\r\n this.log.error('downloadCheck error:', error);\r\n }\r\n\r\n this.downloadActives[dcId] -= activeDelta;\r\n this.downloadCheck(dcId);\r\n\r\n data.deferred.reject(error);\r\n });\r\n }\r\n\r\n public setQueueId(queueId: number) {\r\n //this.log.error('setQueueId', queueId);\r\n this.queueId = queueId;\r\n }\r\n\r\n private getFileStorage() {\r\n return this.cacheStorage;\r\n }\r\n\r\n public cancelDownload(fileName: string) {\r\n const promises = (this.cachedDownloadPromises[fileName] ? [this.cachedDownloadPromises[fileName]] : undefined) || \r\n (this.uploadPromises[fileName] ? Array.from(this.uploadPromises[fileName]) : []);\r\n let canceled = false;\r\n for(let i = 0, length = promises.length; i < length; ++i) {\r\n const promise = promises[i];\r\n if(promise && !promise.isRejected && !promise.isFulfilled) {\r\n promise.cancel();\r\n canceled = true;\r\n }\r\n }\r\n\r\n return canceled;\r\n }\r\n\r\n public requestWebFilePart(dcId: DcId, location: InputWebFileLocation, offset: number, limit: number, id = 0, queueId = 0, checkCancel?: () => void) {\r\n return this.downloadRequest(dcId, id, async() => { // do not remove async, because checkCancel will throw an error\r\n checkCancel && checkCancel();\r\n\r\n return apiManager.invokeApi('upload.getWebFile', {\r\n location,\r\n offset,\r\n limit\r\n }, {\r\n dcId,\r\n fileDownload: true\r\n });\r\n }, this.getDelta(limit), queueId);\r\n }\r\n\r\n public requestFilePart(dcId: DcId, location: InputFileLocation, offset: number, limit: number, id = 0, queueId = 0, checkCancel?: () => void) {\r\n return this.downloadRequest(dcId, id, async() => { // do not remove async, because checkCancel will throw an error\r\n checkCancel && checkCancel();\r\n\r\n const invoke = async(): Promise<MyUploadFile> => {\r\n checkCancel && checkCancel(); // do not remove async, because checkCancel will throw an error\r\n\r\n const promise = apiManager.invokeApi('upload.getFile', {\r\n location,\r\n offset,\r\n limit\r\n }, {\r\n dcId,\r\n fileDownload: true\r\n }) as Promise<MyUploadFile>;\r\n\r\n return promise.catch((err) => {\r\n if(err.type === 'FILE_REFERENCE_EXPIRED') {\r\n return this.refreshReference(location).then(invoke);\r\n }\r\n\r\n throw err;\r\n });\r\n };\r\n\r\n assumeType<InputFileLocation.inputDocumentFileLocation>(location);\r\n const reference = location.file_reference;\r\n if(reference && !location.checkedReference) { // check stream's location because it's new every call\r\n location.checkedReference = true;\r\n const hex = bytesToHex(reference);\r\n if(this.refreshReferencePromises[hex]) {\r\n return this.refreshReference(location).then(invoke);\r\n }\r\n }\r\n\r\n return invoke();\r\n }, this.getDelta(limit), queueId);\r\n }\r\n\r\n /* private convertBlobToBytes(blob: Blob) {\r\n return blob.arrayBuffer().then(buffer => new Uint8Array(buffer));\r\n } */\r\n\r\n private getDelta(bytes: number) {\r\n return bytes / 1024 / 128;\r\n }\r\n\r\n private getLimitPart(size: number): number {\r\n let bytes = 128 * 1024;\r\n\r\n while((size / bytes) > 2000) {\r\n bytes *= 2;\r\n }\r\n /* if(size < 1e6 || !size) bytes = 512;\r\n else if(size < 3e6) bytes = 256;\r\n else bytes = 128; */\r\n\r\n return bytes;\r\n }\r\n\r\n private uncompressTGS = (bytes: Uint8Array, fileName: string) => {\r\n //this.log('uncompressTGS', bytes, bytes.slice().buffer);\r\n // slice нужен потому что в uint8array - 5053 length, в arraybuffer - 5084\r\n return cryptoWorker.invokeCrypto('gzipUncompress', bytes.slice().buffer, false) as Promise<Uint8Array>;\r\n };\r\n\r\n private uncompressTGV = (bytes: Uint8Array, fileName: string) => {\r\n //this.log('uncompressTGS', bytes, bytes.slice().buffer);\r\n // slice нужен потому что в uint8array - 5053 length, в arraybuffer - 5084\r\n const buffer = bytes.slice().buffer;\r\n if(IS_FIREFOX) {\r\n return cryptoWorker.invokeCrypto('gzipUncompress', buffer, true).then((text) => {\r\n return fixFirefoxSvg(text as string);\r\n }).then((text) => {\r\n const textEncoder = new TextEncoder();\r\n return textEncoder.encode(text);\r\n });\r\n }\r\n\r\n return cryptoWorker.invokeCrypto('gzipUncompress', buffer, false) as Promise<Uint8Array>;\r\n };\r\n\r\n private convertWebp = (bytes: Uint8Array, fileName: string) => {\r\n const convertPromise = deferredPromise<Uint8Array>();\r\n\r\n const task = {type: 'convertWebp', payload: {fileName, bytes}};\r\n notifySomeone(task);\r\n return this.webpConvertPromises[fileName] = convertPromise;\r\n };\r\n\r\n private refreshReference(inputFileLocation: InputFileLocation) {\r\n const reference = (inputFileLocation as InputFileLocation.inputDocumentFileLocation).file_reference;\r\n const hex = bytesToHex(reference);\r\n\r\n let r = this.refreshReferencePromises[hex];\r\n if(!r) {\r\n const deferred = deferredPromise<ReferenceBytes>();\r\n\r\n r = this.refreshReferencePromises[hex] = {\r\n deferred,\r\n timeout: ctx.setTimeout(() => {\r\n this.log.error('Didn\\'t refresh the reference:', inputFileLocation);\r\n deferred.reject('REFERENCE_IS_NOT_REFRESHED');\r\n }, 60000)\r\n };\r\n\r\n deferred.catch(noop).finally(() => {\r\n clearTimeout(r.timeout);\r\n });\r\n\r\n const task = {type: 'refreshReference', payload: reference};\r\n notifySomeone(task);\r\n }\r\n\r\n // have to replace file_reference in any way, because location can be different everytime if it's stream\r\n return r.deferred.then(reference => {\r\n if(hex === bytesToHex(reference)) {\r\n throw 'REFERENCE_IS_NOT_REFRESHED';\r\n }\r\n\r\n (inputFileLocation as InputFileLocation.inputDocumentFileLocation).file_reference = reference;\r\n });\r\n }\r\n\r\n public downloadFile(options: DownloadOptions): DownloadPromise {\r\n if(!fileManager.isAvailable()) {\r\n return Promise.reject({type: 'BROWSER_BLOB_NOT_SUPPORTED'});\r\n }\r\n\r\n const size = options.size ?? 0;\r\n const {dcId, location} = options;\r\n\r\n let process: ApiFileManager['uncompressTGS'] | ApiFileManager['convertWebp'];\r\n\r\n if(options.mimeType === 'application/x-tgwallpattern') {\r\n process = this.uncompressTGV;\r\n options.mimeType = 'image/svg+xml';\r\n } else if(options.mimeType === 'image/webp' && !isWebpSupported()) {\r\n process = this.convertWebp;\r\n options.mimeType = 'image/png';\r\n } else if(options.mimeType === 'application/x-tgsticker') {\r\n process = this.uncompressTGS;\r\n options.mimeType = 'application/json';\r\n }\r\n\r\n const fileName = getFileNameByLocation(location, {fileName: options.fileName});\r\n const cachedPromise = this.cachedDownloadPromises[fileName];\r\n const fileStorage = this.getFileStorage();\r\n\r\n this.debug && this.log('downloadFile', fileName, size, location, options.mimeType);\r\n\r\n /* if(options.queueId) {\r\n this.log.error('downloadFile queueId:', fileName, options.queueId);\r\n } */\r\n\r\n if(cachedPromise) {\r\n //this.log('downloadFile cachedPromise');\r\n\r\n if(size) {\r\n return cachedPromise.then((blob) => {\r\n if(blob instanceof Blob && blob.size < size) {\r\n this.debug && this.log('downloadFile need to deleteFile, wrong size:', blob.size, size);\r\n\r\n return this.deleteFile(fileName).then(() => {\r\n return this.downloadFile(options);\r\n }).catch(() => {\r\n return this.downloadFile(options);\r\n });\r\n } else {\r\n return blob;\r\n }\r\n });\r\n } else {\r\n return cachedPromise;\r\n }\r\n }\r\n\r\n const deferred: DownloadPromise = deferredPromise();\r\n const mimeType = options.mimeType || 'image/jpeg';\r\n\r\n let error: Error;\r\n let resolved = false;\r\n let cacheFileWriter: ReturnType<typeof fileManager['getFakeFileWriter']>;\r\n let errorHandler = (_error: Error) => {\r\n error = _error;\r\n delete this.cachedDownloadPromises[fileName];\r\n deferred.reject(error);\r\n errorHandler = () => {};\r\n\r\n if(cacheFileWriter && (!error || error.type !== 'DOWNLOAD_CANCELED')) {\r\n cacheFileWriter.truncate();\r\n }\r\n };\r\n\r\n const id = this.tempId++;\r\n\r\n fileStorage.getFile(fileName).then(async(blob: Blob) => {\r\n //this.log('maybe cached', fileName);\r\n //throw '';\r\n\r\n if(blob.size < size) {\r\n //this.log('downloadFile need to deleteFile 2, wrong size:', blob.size, size);\r\n await this.deleteFile(fileName);\r\n throw false;\r\n }\r\n\r\n deferred.resolve(blob);\r\n }).catch(() => {\r\n //this.log('not cached', fileName);\r\n const limit = options.limitPart || this.getLimitPart(size);\r\n const fileWriterPromise = fileStorage.getFileWriter(fileName, size || limit, mimeType);\r\n\r\n fileWriterPromise.then((fileWriter) => {\r\n cacheFileWriter = fileWriter;\r\n let offset: number;\r\n let startOffset = 0;\r\n let writeFilePromise: CancellablePromise<void> = Promise.resolve(),\r\n writeFileDeferred: CancellablePromise<void>;\r\n //const maxRequests = 13107200 / limit; // * 100 Mb speed\r\n const maxRequests = Infinity;\r\n\r\n //console.error('maxRequests', maxRequests);\r\n\r\n const processDownloaded = async(bytes: Uint8Array) => {\r\n if(process) {\r\n //const perf = performance.now();\r\n const processed = await process(bytes, fileName);\r\n //this.log('downloadFile process downloaded time', performance.now() - perf, mimeType, process);\r\n return processed;\r\n }\r\n \r\n return bytes;\r\n };\r\n\r\n const r = location._ === 'inputWebFileLocation' ? this.requestWebFilePart.bind(this) : this.requestFilePart.bind(this);\r\n\r\n const delayed: Delayed[] = [];\r\n offset = startOffset;\r\n do {\r\n ////this.log('offset:', startOffset);\r\n writeFileDeferred = deferredPromise<void>();\r\n delayed.push({offset, writeFilePromise, writeFileDeferred});\r\n writeFilePromise = writeFileDeferred;\r\n offset += limit;\r\n } while(offset < size);\r\n\r\n let done = 0;\r\n const superpuper = async() => {\r\n //if(!delayed.length) return;\r\n\r\n const {offset, writeFilePromise, writeFileDeferred} = delayed.shift();\r\n try {\r\n checkCancel();\r\n\r\n // @ts-ignore\r\n const result = await r(dcId, location as any, offset, limit, id, options.queueId, checkCancel);\r\n\r\n const bytes = result.bytes;\r\n\r\n if(delayed.length) {\r\n superpuper();\r\n }\r\n\r\n this.debug && this.log('downloadFile requestFilePart result:', fileName, result);\r\n const isFinal = offset + limit >= size || !bytes.byteLength;\r\n if(bytes.byteLength) {\r\n //done += limit;\r\n done += bytes.byteLength;\r\n\r\n //if(!isFinal) {\r\n ////this.log('deferred notify 2:', {done: offset + limit, total: size}, deferred);\r\n deferred.notify({done, offset, total: size});\r\n //}\r\n\r\n await writeFilePromise;\r\n checkCancel();\r\n\r\n await fileWriter.write(bytes, offset);\r\n }\r\n\r\n if(isFinal && process) {\r\n const bytes = fileWriter.getParts();\r\n const processedResult = await processDownloaded(bytes);\r\n checkCancel();\r\n\r\n fileWriter.replaceParts(processedResult);\r\n }\r\n\r\n writeFileDeferred.resolve();\r\n\r\n if(isFinal) {\r\n resolved = true;\r\n\r\n const realSize = size || bytes.byteLength;\r\n if(!size) {\r\n fileWriter.trim(realSize);\r\n }\r\n\r\n deferred.resolve(fileWriter.finalize(realSize < MAX_FILE_SAVE_SIZE));\r\n }\r\n } catch(err) {\r\n errorHandler(err as Error);\r\n }\r\n };\r\n\r\n for(let i = 0, length = Math.min(maxRequests, delayed.length); i < length; ++i) {\r\n superpuper();\r\n }\r\n }).catch((err) => {\r\n if(!['STORAGE_OFFLINE'].includes(err)) {\r\n this.log.error('saveFile error:', err);\r\n }\r\n });\r\n });\r\n\r\n const checkCancel = () => {\r\n if(error) {\r\n throw error;\r\n }\r\n };\r\n\r\n deferred.cancel = () => {\r\n if(!error && !resolved) {\r\n const error = new Error('Canceled');\r\n error.type = 'DOWNLOAD_CANCELED';\r\n errorHandler(error);\r\n }\r\n };\r\n\r\n deferred.notify = (progress: {done: number, total: number, offset: number}) => {\r\n notifyAll({progress: {fileName, ...progress}});\r\n };\r\n\r\n this.cachedDownloadPromises[fileName] = deferred;\r\n\r\n deferred.catch(noop).finally(() => {\r\n delete this.cachedDownloadPromises[fileName];\r\n });\r\n\r\n return deferred;\r\n }\r\n\r\n private deleteFile(fileName: string) {\r\n //this.log('will delete file:', fileName);\r\n delete this.cachedDownloadPromises[fileName];\r\n return this.getFileStorage().delete(fileName);\r\n }\r\n\r\n public uploadFile({file, fileName}: {file: Blob | File, fileName: string}) {\r\n const fileSize = file.size, \r\n isBigFile = fileSize >= 10485760;\r\n\r\n let canceled = false,\r\n resolved = false,\r\n doneParts = 0,\r\n partSize = 262144; // 256 Kb\r\n\r\n /* if(fileSize > (524288 * 3000)) {\r\n partSize = 1024 * 1024;\r\n activeDelta = 8;\r\n } else */if(fileSize > 67108864) {\r\n partSize = 524288;\r\n } else if(fileSize < 102400) {\r\n partSize = 32768;\r\n }\r\n\r\n const activeDelta = this.getDelta(partSize);\r\n\r\n const totalParts = Math.ceil(fileSize / partSize);\r\n const fileId = randomLong();\r\n\r\n let _part = 0;\r\n\r\n const resultInputFile: InputFile = {\r\n _: isBigFile ? 'inputFileBig' : 'inputFile',\r\n id: fileId as any,\r\n parts: totalParts,\r\n name: fileName,\r\n md5_checksum: ''\r\n };\r\n\r\n const deferredHelper: {\r\n resolve?: (input: typeof resultInputFile) => void,\r\n reject?: (error: any) => void,\r\n notify?: (details: {done: number, total: number}) => void\r\n } = {\r\n notify: (details: {done: number, total: number}) => {}\r\n };\r\n const deferred: CancellablePromise<typeof resultInputFile> = new Promise((resolve, reject) => {\r\n if(totalParts > 4000) {\r\n return reject({type: 'FILE_TOO_BIG'});\r\n }\r\n\r\n deferredHelper.resolve = resolve;\r\n deferredHelper.reject = reject;\r\n });\r\n Object.assign(deferred, deferredHelper);\r\n\r\n if(totalParts > 4000) {\r\n return deferred;\r\n }\r\n \r\n let errorHandler = (error: any) => {\r\n if(error?.type !== 'UPLOAD_CANCELED') {\r\n this.log.error('Up Error', error);\r\n }\r\n\r\n deferred.reject(error);\r\n canceled = true;\r\n errorHandler = () => {};\r\n };\r\n\r\n const method = isBigFile ? 'upload.saveBigFilePart' : 'upload.saveFilePart';\r\n\r\n const id = this.tempId++;\r\n\r\n /* setInterval(() => {\r\n console.log(file);\r\n }, 1e3); */\r\n\r\n const self = this;\r\n function* generator() {\r\n for(let offset = 0; offset < fileSize; offset += partSize) {\r\n const part = _part++; // 0, 1\r\n yield self.downloadRequest('upload', id, () => {\r\n const blob = file.slice(offset, offset + partSize);\r\n\r\n return readBlobAsArrayBuffer(blob).then(buffer => {\r\n if(canceled) {\r\n throw {type: 'UPLOAD_CANCELED'};\r\n }\r\n\r\n self.debug && self.log('Upload file part, isBig:', isBigFile, part, buffer.byteLength, new Uint8Array(buffer).length, new Uint8Array(buffer).slice().length);\r\n\r\n /* const u = new Uint8Array(buffer.byteLength);\r\n for(let i = 0; i < u.length; ++i) {\r\n //u[i] = Math.random() * 255 | 0;\r\n u[i] = 0;\r\n }\r\n buffer = u.buffer; */\r\n \r\n /* setTimeout(() => {\r\n doneParts++;\r\n uploadResolve();\r\n \r\n //////this.log('Progress', doneParts * partSize / fileSize);\r\n\r\n self.log('done part', part, doneParts);\r\n \r\n deferred.notify({done: doneParts * partSize, total: fileSize});\r\n \r\n if(doneParts >= totalParts) {\r\n deferred.resolve(resultInputFile);\r\n resolved = true;\r\n }\r\n }, 1250);\r\n return; */\r\n\r\n return apiManager.invokeApi(method, {\r\n file_id: fileId,\r\n file_part: part,\r\n file_total_parts: totalParts,\r\n bytes: buffer/* new Uint8Array(buffer) */\r\n } as any, {\r\n //startMaxLength: partSize + 256,\r\n fileUpload: true\r\n }).then((result) => {\r\n doneParts++;\r\n \r\n //////this.log('Progress', doneParts * partSize / fileSize);\r\n \r\n deferred.notify({done: doneParts * partSize, total: fileSize});\r\n \r\n if(doneParts >= totalParts) {\r\n deferred.resolve(resultInputFile);\r\n resolved = true;\r\n }\r\n }, errorHandler);\r\n });\r\n }, activeDelta).catch(errorHandler);\r\n }\r\n }\r\n\r\n const it = generator();\r\n const process = () => {\r\n if(canceled) return;\r\n const r = it.next();\r\n if(r.done || canceled) return;\r\n (r.value as Promise<void>).then(process);\r\n };\r\n\r\n const maxRequests = Infinity;\r\n //const maxRequests = 10;\r\n /* for(let i = 0; i < 10; ++i) {\r\n process();\r\n } */\r\n for(let i = 0, length = Math.min(maxRequests, totalParts); i < length; ++i) {\r\n process();\r\n }\r\n\r\n deferred.cancel = () => {\r\n //this.log('cancel upload', canceled, resolved);\r\n if(!canceled && !resolved) {\r\n canceled = true;\r\n errorHandler({type: 'UPLOAD_CANCELED'});\r\n }\r\n };\r\n\r\n deferred.notify = (progress: {done: number, total: number}) => {\r\n notifyAll({progress: {fileName, ...progress}});\r\n };\r\n\r\n deferred.finally(() => {\r\n set.delete(deferred);\r\n if(!set.size) {\r\n delete this.uploadPromises[fileName];\r\n }\r\n });\r\n\r\n const set = this.uploadPromises[fileName] ?? (this.uploadPromises[fileName] = new Set());\r\n set.add(deferred);\r\n return deferred;\r\n }\r\n}\r\n\r\nconst apiFileManager = new ApiFileManager();\r\nMOUNT_CLASS_TO.apiFileManager = apiFileManager;\r\nexport default apiFileManager;\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nexport default function fixFirefoxSvg(text: string) {\n const svgIndex = text.indexOf('<svg');\n if(svgIndex !== 0) {\n text = text.slice(svgIndex);\n }\n\n const [_, __, width, height] = text.match(/viewBox=\"(.+?)\"/)[1].split(' ');\n text = text.replace(/>/, ` width=\"${width}\" height=\"${height}\">`).replace(/[^\\x00-\\x7F]/g, '');\n return text;\n}\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport type { InputFileLocation, InputStickerSet, InputWebFileLocation } from \"../layer\";\r\nimport type { DownloadOptions } from \"../lib/mtproto/apiFileManager\";\r\n\r\nconst FILENAME_JOINER = '_';\r\n\r\nexport function getFileNameByLocation(location: InputFileLocation | InputWebFileLocation, options?: Partial<{\r\n fileName: string\r\n}>) {\r\n const fileName = '';//(options?.fileName || '').split('.');\r\n const ext = fileName[fileName.length - 1] || '';\r\n\r\n let str: string;\r\n switch(location._) {\r\n case 'inputPhotoFileLocation': {\r\n str = ['photo', fileName[0], location.id, location.thumb_size].filter(Boolean).join(FILENAME_JOINER);\r\n break;\r\n }\r\n\r\n case 'inputDocumentFileLocation': {\r\n str = ['document', fileName[0], location.id, location.thumb_size].filter(Boolean).join(FILENAME_JOINER);\r\n break;\r\n }\r\n\r\n case 'inputPeerPhotoFileLocation':\r\n str = ['peerPhoto', location.photo_id, location.pFlags.big ? 'big' : 'small'].join(FILENAME_JOINER);\r\n break;\r\n \r\n case 'inputStickerSetThumb': {\r\n const id = (location.stickerset as InputStickerSet.inputStickerSetID).id || \r\n (location.stickerset as InputStickerSet.inputStickerSetShortName).short_name || \r\n (location.stickerset as InputStickerSet.inputStickerSetDice).emoticon || \r\n location.stickerset._;\r\n str = ['stickerSetThumb', id, location.thumb_version].join(FILENAME_JOINER);\r\n break;\r\n }\r\n\r\n case 'inputFileLocation': {\r\n str = location.volume_id + '_' + location.local_id;\r\n break;\r\n }\r\n\r\n case 'inputWebFileLocation': {\r\n str = ['webFile', location.url].join(FILENAME_JOINER);\r\n break;\r\n }\r\n\r\n default: {\r\n console.error('Unrecognized location:', location);\r\n str = '';\r\n break;\r\n }\r\n }\r\n\r\n return str + (ext ? '.' + ext : ext);\r\n}\r\n\r\nexport type FileURLType = 'photo' | 'thumb' | 'document' | 'stream' | 'download';\r\nexport function getFileURL(type: FileURLType, options: DownloadOptions) {\r\n //console.log('getFileURL', location);\r\n //const perf = performance.now();\r\n const encoded = encodeURIComponent(JSON.stringify(options));\r\n //console.log('getFileURL encode:', performance.now() - perf, encoded);\r\n\r\n return '/' + type + '/' + encoded;\r\n}\r\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\n// just to include\nimport '../polyfill';\n\nimport type { LocalStorageProxyTask } from '../localStorage';\nimport type { WebpConvertTask } from '../webp/webpWorkerController';\nimport type { ToggleStorageTask } from './mtprotoworker';\nimport type { RefreshReferenceTaskResponse } from './apiFileManager';\nimport apiManager from \"./apiManager\";\nimport cryptoWorker from \"../crypto/cryptoworker\";\nimport networkerFactory from \"./networkerFactory\";\nimport apiFileManager from './apiFileManager';\nimport { notifyAll } from '../../helpers/context';\nimport CacheStorageController from '../cacheStorage';\nimport sessionStorage from '../sessionStorage';\nimport { socketsProxied } from './transports/socketProxied';\nimport ctx from '../../environment/ctx';\nimport bytesToHex from '../../helpers/bytes/bytesToHex';\n\nlet webpSupported = false;\nexport const isWebpSupported = () => {\n return webpSupported;\n};\n\nnetworkerFactory.setUpdatesProcessor((obj) => {\n notifyAll({update: obj});\n});\n\nnetworkerFactory.onConnectionStatusChange = (status) => {\n notifyAll({type: 'connectionStatusChange', payload: status});\n};\n\nconst taskListeners = {\n convertWebp: (task: WebpConvertTask) => {\n const {fileName, bytes} = task.payload;\n const deferred = apiFileManager.webpConvertPromises[fileName];\n if(deferred) {\n deferred.resolve(bytes);\n delete apiFileManager.webpConvertPromises[fileName];\n }\n },\n\n webpSupport: (task: any) => {\n webpSupported = task.payload;\n },\n\n socketProxy: (task: any) => {\n const socketTask = task.payload;\n const id = socketTask.id;\n \n const socketProxied = socketsProxied.get(id);\n if(socketTask.type === 'message') {\n socketProxied.dispatchEvent('message', socketTask.payload);\n } else if(socketTask.type === 'open') {\n socketProxied.dispatchEvent('open');\n } else if(socketTask.type === 'close') {\n socketProxied.dispatchEvent('close');\n socketsProxied.delete(id);\n }\n },\n\n localStorageProxy: (task: LocalStorageProxyTask) => {\n sessionStorage.finishTask(task.id, task.payload);\n },\n\n userAgent: (task: any) => {\n networkerFactory.userAgent = task.payload;\n },\n\n online: () => {\n networkerFactory.forceReconnectTimeout();\n },\n\n forceReconnect: () => {\n networkerFactory.forceReconnect();\n },\n\n toggleStorage: (task: ToggleStorageTask) => {\n const enabled = task.payload;\n // AppStorage.toggleStorage(enabled);\n CacheStorageController.toggleStorage(enabled);\n },\n\n refreshReference: (task: RefreshReferenceTaskResponse) => {\n const hex = bytesToHex(task.originalPayload);\n const r = apiFileManager.refreshReferencePromises[hex];\n const deferred = r?.deferred;\n if(deferred) {\n if(task.error) {\n deferred.reject(task.error);\n } else {\n deferred.resolve(task.payload);\n }\n }\n },\n\n crypto: (task: any) => {\n cryptoWorker.invokeCrypto(task.task, ...task.args as any).then(result => {\n notifyAll({taskId: task.taskId, result});\n });\n }\n};\n\nconst onMessage = async(e: any) => {\n try {\n const task: {\n task: string,\n taskId: number,\n args: any[],\n type?: string\n } = e.data;\n const taskId = task.taskId;\n\n // @ts-ignore\n const f = taskListeners[task.type];\n if(f) {\n f(task);\n return;\n }\n\n if(!task.task) {\n return;\n }\n\n switch(task.task) {\n case 'requestFilePart':\n case 'setQueueId':\n case 'cancelDownload':\n case 'uploadFile':\n case 'downloadFile': {\n try {\n // @ts-ignore\n let result: any = apiFileManager[task.task].apply(apiFileManager, task.args);\n \n if(result instanceof Promise) {\n /* (result as ReturnType<ApiFileManager['downloadFile']>).notify = (progress: {done: number, total: number, offset: number}) => {\n notify({progress: {fileName, ...progress}});\n }; */\n result = await result;\n }\n \n notifyAll({taskId, result});\n } catch(error) {\n notifyAll({taskId, error});\n }\n\n break;\n }\n\n case 'getNetworker': {\n // @ts-ignore\n apiManager[task.task].apply(apiManager, task.args).finally(() => {\n notifyAll({taskId, result: null});\n });\n \n break;\n }\n\n case 'setLanguage':\n case 'startAll':\n case 'stopAll': {\n // @ts-ignore\n networkerFactory[task.task].apply(networkerFactory, task.args);\n break;\n }\n \n default: {\n try {\n // @ts-ignore\n let result = apiManager[task.task].apply(apiManager, task.args);\n \n if(result instanceof Promise) {\n result = await result;\n }\n\n //console.log(notifyAll);\n \n notifyAll({taskId, result});\n } catch(error) {\n notifyAll({taskId, error});\n }\n \n //throw new Error('Unknown task: ' + task.task);\n break;\n }\n }\n } catch(err) {\n console.error('worker task error:', err);\n }\n};\n\n//console.log('[WORKER] Will send ready', Date.now() / 1000);\nctx.addEventListener('message', onMessage);\nnotifyAll('ready');\n"],"sourceRoot":""}