1
0
mirror of https://github.com/danog/MadelineProto.git synced 2024-11-30 10:19:00 +01:00
MadelineProto/psalm-baseline.xml
2023-08-05 21:32:33 +02:00

9171 lines
361 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="5.13.1@086b94371304750d1c673315321a55d15fc59015">
<file src="src/API.php">
<ArgumentTypeCoercion>
<code>$settings</code>
</ArgumentTypeCoercion>
<DirectConstructorCall>
<code><![CDATA[$this->__construct($this->session->getSessionDirectoryPath())]]></code>
</DirectConstructorCall>
<MixedArgument>
<code><![CDATA[$app['api_hash']]]></code>
<code><![CDATA[$app['api_id']]]></code>
<code>$cb</code>
<code>$started</code>
<code>$started[$k]</code>
<code><![CDATA[Lang::$current_lang['botAlreadyRunning']]]></code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code><![CDATA[$cancel->getFuture()]]></code>
</MixedArgumentTypeCoercion>
<MixedArrayAccess>
<code><![CDATA[$app['api_hash']]]></code>
<code><![CDATA[$app['api_id']]]></code>
<code>$errors[$t]</code>
<code>$started[$k]</code>
</MixedArrayAccess>
<MixedAssignment>
<code>$app</code>
<code>$errors[$t]</code>
</MixedAssignment>
<MixedOperand>
<code>$errors[$t]</code>
</MixedOperand>
<PossiblyNullArgument>
<code>Logger::$default</code>
</PossiblyNullArgument>
<PossiblyNullReference>
<code>getMessage</code>
<code>wakeup</code>
</PossiblyNullReference>
<PropertyNotSetInConstructor>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
<code>API</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/APIWrapper.php">
<MixedArgument>
<code><![CDATA[$API->serializeSession($this)]]></code>
</MixedArgument>
<PossiblyNullReference>
<code>logger</code>
</PossiblyNullReference>
</file>
<file src="src/AbstractAPI.php">
<ArgumentTypeCoercion>
<code>$eventHandler</code>
</ArgumentTypeCoercion>
<DeprecatedMethod>
<code>loop</code>
<code>loop</code>
</DeprecatedMethod>
<MixedArgument>
<code>$started</code>
</MixedArgument>
<MixedArrayAccess>
<code>$errors[$t]</code>
</MixedArrayAccess>
<MixedAssignment>
<code>$errors[$t]</code>
</MixedAssignment>
<MixedOperand>
<code>$errors[$t]</code>
</MixedOperand>
<PossiblyNullReference>
<code>getMessage</code>
<code>isInited</code>
<code>setEventHandler</code>
</PossiblyNullReference>
</file>
<file src="src/AnnotationsBuilder.php">
<MixedArgument>
<code><![CDATA[$constructor['params']]]></code>
<code><![CDATA[$constructor['type']]]></code>
<code>$data</code>
<code><![CDATA[$data['method']]]></code>
<code><![CDATA[$data['method']]]></code>
<code><![CDATA[$data['type']]]></code>
<code><![CDATA[$data['type']]]></code>
<code><![CDATA[$data['type']]]></code>
<code>$method</code>
<code>$namespace</code>
<code><![CDATA[$param['description']]]></code>
<code><![CDATA[$param['subtype']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code>$params</code>
<code>$signature</code>
<code><![CDATA[$this->reflectionClasses['MTProto']]]></code>
<code>$type</code>
<code><![CDATA[Lang::$lang['en']["method_{$data['method']}"] ?? '']]></code>
<code><![CDATA[Lang::$lang['en']["method_{$method}_param_{$param['name']}_type_{$param['type']}"] ?? '']]></code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code><![CDATA[\uasort($newParams, fn (array $arr1, array $arr2) => isset($arr1['pow']) <=> isset($arr2['pow']))]]></code>
</MixedArgumentTypeCoercion>
<MixedArrayAccess>
<code><![CDATA[$constructor['params']]]></code>
<code><![CDATA[$constructor['predicate']]]></code>
<code><![CDATA[$constructor['type']]]></code>
<code><![CDATA[$constructor['type']]]></code>
<code><![CDATA[$data['method']]]></code>
<code><![CDATA[$data['method']]]></code>
<code><![CDATA[$data['method']]]></code>
<code><![CDATA[$param['description']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['subtype']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$this->blacklistHard['channels.getMessages']]]></code>
<code><![CDATA[$this->blacklistHard['messages.getHistory']]]></code>
<code><![CDATA[$this->blacklistHard['messages.getMessages']]]></code>
<code><![CDATA[Lang::$lang['en']["method_{$data['method']}"]]]></code>
<code><![CDATA[Lang::$lang['en']["method_{$method}_param_{$param['name']}_type_{$param['type']}"]]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$param['array']]]></code>
<code><![CDATA[$param['description']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['pow']]]></code>
<code><![CDATA[$param['pow']]]></code>
<code><![CDATA[$param['pow']]]></code>
<code><![CDATA[$param['subtype']]]></code>
<code><![CDATA[$param['subtype']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$newParams[$param['name']]]]></code>
<code><![CDATA[$stack[$param['type']]]]></code>
<code><![CDATA[$stack[$param['type']]]]></code>
<code><![CDATA[$stack[$param['type']]]]></code>
<code><![CDATA[$this->blacklist[$data['method']]]]></code>
<code><![CDATA[$this->special[$type]]]></code>
<code><![CDATA[$this->special[$type]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$base</code>
<code>$constructor</code>
<code>$data</code>
<code>$namespace</code>
<code>$namespace</code>
<code><![CDATA[$newParams[$param['name']]]]></code>
<code>$param</code>
<code>$param</code>
<code>$param</code>
<code><![CDATA[$this->blacklist]]></code>
<code><![CDATA[$this->blacklistHard]]></code>
</MixedAssignment>
<MixedInferredReturnType>
<code>string</code>
<code>string</code>
</MixedInferredReturnType>
<MixedOperand>
<code>$params</code>
<code><![CDATA[$type->getName() === 'self' ? $this->reflectionClasses['API'] : $type->getName()]]></code>
</MixedOperand>
<MixedReturnStatement>
<code>$base</code>
<code>$base</code>
<code><![CDATA[match ($type) {
'string' => 'string',
'bytes' => 'string',
'waveform' => 'array',
'int' => 'int',
'long' => 'int',
'strlong' => 'int',
'double' => 'float',
'float' => 'float',
'Bool' => 'bool',
'true' => 'bool',
'InputMessage' => 'array|int',
'InputMedia' => '\\danog\\MadelineProto\\EventHandler\\Media|array|string',
'InputCheckPasswordSRP' => 'string|array',
'DataJSON' => 'mixed',
'JSONValue' => 'mixed',
default => $this->special[$type] ?? 'array'
}]]></code>
<code><![CDATA[match ($type) {
'string' => 'string',
'bytes' => 'string',
'waveform' => 'array',
'int' => 'int',
'long' => 'int',
'strlong' => 'int',
'double' => 'float',
'float' => 'float',
'Bool' => 'bool',
'true' => 'bool',
'InputMessage' => 'array|int',
'InputMedia' => '\\danog\\MadelineProto\\EventHandler\\Media|array|string',
'InputCheckPasswordSRP' => 'string|array',
'DataJSON' => 'mixed',
'JSONValue' => 'mixed',
default => $this->special[$type] ?? 'array'
}]]></code>
</MixedReturnStatement>
</file>
<file src="src/ApiWrappers/Start.php">
<MissingReturnType>
<code>APIStart</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[Lang::$current_lang["apiAppInstructionsManual$k"]]]></code>
<code><![CDATA[Lang::$current_lang['apiChooseManualAutoTip']]]></code>
<code><![CDATA[Lang::$current_lang['apiChooseManualAutoTipWeb']]]></code>
<code><![CDATA[Lang::$current_lang['apiManualInstructions0']]]></code>
<code><![CDATA[Lang::$current_lang['apiManualInstructions1']]]></code>
<code><![CDATA[Lang::$current_lang['apiManualInstructions2']]]></code>
<code><![CDATA[Lang::$current_lang['apiManualWeb']]]></code>
<code><![CDATA[Lang::$current_lang['go']]]></code>
</MixedArgument>
<MixedOperand>
<code><![CDATA[Lang::$current_lang["apiAppInstructionsManual$k"]]]></code>
<code><![CDATA[Lang::$current_lang['apiManualInstructions0']]]></code>
<code><![CDATA[Lang::$current_lang['apiManualInstructions1']]]></code>
<code><![CDATA[Lang::$current_lang['apiManualInstructions2']]]></code>
<code><![CDATA[Lang::$current_lang['apiManualPrompt0']]]></code>
<code><![CDATA[Lang::$current_lang['apiManualPrompt1']]]></code>
</MixedOperand>
<RiskyCast>
<code><![CDATA[$_POST['api_id']]]></code>
</RiskyCast>
</file>
<file src="src/AsyncTools.php">
<DeprecatedMethod>
<code>self::call($a)</code>
<code>self::call($b)</code>
<code>self::call($callable)</code>
<code>self::call($promise)</code>
<code>self::call($promise)</code>
<code>self::timeout($promise, $timeout)</code>
</DeprecatedMethod>
<DocblockTypeContradiction>
<code>$callable instanceof Generator</code>
</DocblockTypeContradiction>
<InvalidReturnStatement>
<code>$callable</code>
</InvalidReturnStatement>
<InvalidReturnType>
<code><![CDATA[Future<T>]]></code>
</InvalidReturnType>
<MissingClosureReturnType>
<code><![CDATA[fn ($v) => $v instanceof Generator ? self::consumeGenerator($v) : $v]]></code>
</MissingClosureReturnType>
<MissingReturnType>
<code>all</code>
<code>any</code>
<code>first</code>
<code>some</code>
<code>wait</code>
</MissingReturnType>
<MixedArgument>
<code>$lines</code>
<code>$lines</code>
<code>$lines</code>
<code>$lines</code>
<code>$res</code>
<code>$res</code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code>$failureCb</code>
</MixedArgumentTypeCoercion>
<MixedArrayAccess>
<code>$lines[\count($lines) - 1]</code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code>$lines[\count($lines) - 1]</code>
</MixedArrayAssignment>
<MixedAssignment>
<code>$result</code>
<code>$yielded</code>
<code>$yielded</code>
<code>$yielded</code>
<code>$yielded</code>
<code>$yielded</code>
<code>$yielded</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>TReturn|TReturnAlt</code>
<code>string</code>
</MixedInferredReturnType>
<MixedOperand>
<code>$lines[\count($lines) - 1]</code>
</MixedOperand>
<MixedReturnStatement>
<code><![CDATA[\array_shift($lines) ?? '']]></code>
<code><![CDATA[\array_shift($lines) ?? '']]></code>
<code>self::timeout($promise, $timeout)</code>
</MixedReturnStatement>
<RedundantConditionGivenDocblockType>
<code>\is_callable($callable)</code>
</RedundantConditionGivenDocblockType>
</file>
<file src="src/Broadcast/Action/ActionForward.php">
<MixedArgument>
<code>$updates</code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$update['message']['id']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code>$id</code>
<code>$updates</code>
</MixedAssignment>
</file>
<file src="src/Broadcast/Action/ActionSend.php">
<MixedArgument>
<code>$message</code>
<code><![CDATA[$this->API->methodCallAsyncRead(
isset($message['media']['_']) &&
$message['media']['_'] !== 'messageMediaWebPage'
? 'messages.sendMedia'
: 'messages.sendMessage',
\array_merge($message, ['peer' => $peer]),
['FloodWaitLimit' => 2*86400]
)]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$message['media']['_']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code>$message</code>
</MixedAssignment>
<PossiblyUndefinedVariable>
<code>$id</code>
</PossiblyUndefinedVariable>
</file>
<file src="src/Broadcast/Broadcast.php">
<DocblockTypeContradiction>
<code><![CDATA[$this->broadcasts[$id]]]></code>
<code><![CDATA[$this->broadcasts[$id]]]></code>
</DocblockTypeContradiction>
<RedundantConditionGivenDocblockType>
<code><![CDATA[$this->broadcasts[$id]?->cancel()]]></code>
<code><![CDATA[$this->broadcasts[$id]?->getProgress()]]></code>
</RedundantConditionGivenDocblockType>
</file>
<file src="src/Broadcast/InternalState.php">
<MixedAssignment>
<code>$value</code>
</MixedAssignment>
<RedundantCondition>
<code><![CDATA[\is_array($this->filter->whitelist) && !\in_array($peer, $this->filter->whitelist, true)]]></code>
</RedundantCondition>
<UnusedVariable>
<code>$e</code>
</UnusedVariable>
</file>
<file src="src/Connection.php">
<InvalidPropertyAssignmentValue>
<code><![CDATA[$ctx->getStream()]]></code>
</InvalidPropertyAssignmentValue>
<MissingConstructor>
<code>$API</code>
<code>$ctx</code>
<code>$datacenter</code>
<code>$logger</code>
<code>$shared</code>
</MissingConstructor>
<MixedArgument>
<code><![CDATA[$arguments['file']]]></code>
<code><![CDATA[$arguments['file']['_']]]></code>
<code><![CDATA[$arguments['media']['url']]]></code>
<code><![CDATA[$arguments['media']['url']]]></code>
<code><![CDATA[$arguments['media']['url']]]></code>
<code>$body</code>
<code>$body</code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$singleMedia['media']]]></code>
<code><![CDATA[$singleMedia['media']]]></code>
<code><![CDATA[$singleMedia['media']['_']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$arguments['message']['media']]]></code>
<code><![CDATA[$arguments['message']['media']]]></code>
<code><![CDATA[$arguments['message']['media']]]></code>
<code><![CDATA[$arguments['message']['media']['iv']]]></code>
<code><![CDATA[$arguments['message']['media']['key']]]></code>
<code><![CDATA[$arguments['message']['media']['size']]]></code>
<code><![CDATA[$body['_']]]></code>
<code><![CDATA[$singleMedia['media']]]></code>
</MixedArrayAssignment>
<MixedAssignment>
<code><![CDATA[$arguments['file']]]></code>
<code><![CDATA[$arguments['file']]]></code>
<code><![CDATA[$arguments['message']['media']['iv']]]></code>
<code><![CDATA[$arguments['message']['media']['key']]]></code>
<code><![CDATA[$arguments['message']['media']['size']]]></code>
<code><![CDATA[$arguments['message']['reply_to_random_id']]]></code>
<code><![CDATA[$arguments['participant']]]></code>
<code>$body</code>
<code>$body</code>
<code>$body</code>
<code>$singleMedia</code>
<code><![CDATA[$singleMedia['media']]]></code>
</MixedAssignment>
<MixedMethodCall>
<code>complete</code>
</MixedMethodCall>
<PossiblyNullReference>
<code>refreshNext</code>
<code>refreshNext</code>
</PossiblyNullReference>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[$res['chat_id']]]></code>
</PossiblyUndefinedArrayOffset>
</file>
<file src="src/ContextConnector.php">
<PossiblyInvalidArgument>
<code>$uri</code>
</PossiblyInvalidArgument>
</file>
<file src="src/Conversion.php">
<DocblockTypeContradiction>
<code><![CDATA[\strlen($settings['old_session_passcode'])]]></code>
<code><![CDATA[\strlen($settings['old_session_passcode'])]]></code>
</DocblockTypeContradiction>
<MissingParamType>
<code>$auth_key</code>
<code>$data</code>
<code>$data</code>
<code>$fileName</code>
<code>$fileName</code>
<code>$fp</code>
<code>$new_session</code>
<code>$options</code>
<code>$options</code>
<code>$session</code>
<code>$settings</code>
<code>$settings</code>
<code>$settings</code>
<code>$settings</code>
</MissingParamType>
<MissingPropertyType>
<code>$tdesktop_base_path</code>
<code>$tdesktop_key</code>
<code>$tdesktop_user_base_path</code>
</MissingPropertyType>
<MissingReturnType>
<code>pyrogram</code>
<code>tdesktop</code>
<code>tdesktop_decrypt</code>
<code>tdesktop_fopen</code>
<code>tdesktop_fopen_encrypted</code>
<code>tdesktop_md5</code>
<code>tdesktop_read_bytearray</code>
<code>telethon</code>
<code>zerobias</code>
</MissingReturnType>
<MixedArgument>
<code>$aes_iv</code>
<code>$aes_key</code>
<code>$auth_key</code>
<code>$data</code>
<code>$data</code>
<code>$data</code>
<code><![CDATA[$dc['dc_id']]]></code>
<code>$fp</code>
<code>$fp</code>
<code>$info</code>
<code>$info</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main</code>
<code>$main_dc_id</code>
<code>$new_session</code>
<code>$res</code>
<code>$res</code>
<code>$salt</code>
<code>$salt</code>
<code>$salt</code>
<code><![CDATA[$session["dc$dc".'_auth_key']]]></code>
<code><![CDATA[$session['auth_key']]]></code>
<code>$settings</code>
<code>$settings</code>
<code>$settings</code>
<code>$settings</code>
<code><![CDATA[$settings['old_session_passcode']]]></code>
<code><![CDATA[$settings['old_session_passcode']]]></code>
<code><![CDATA[$settings['old_session_passcode']]]></code>
<code>self::tdesktop_md5($dataName)</code>
<code><![CDATA[self::tdesktop_md5($settings['old_session_key'])]]></code>
<code>self::tdesktop_read_bytearray(
self::tdesktop_decrypt($encryptedKey, $passKey),
)</code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code>$dcs</code>
</MixedArgumentTypeCoercion>
<MixedArrayAccess>
<code><![CDATA[$dc['auth_key']]]></code>
<code><![CDATA[$dc['dc_id']]]></code>
<code><![CDATA[$dc['dc_id']]]></code>
<code><![CDATA[$session["dc$dc".'_auth_key']]]></code>
<code><![CDATA[$session['auth_key']]]></code>
<code><![CDATA[$session['dc']]]></code>
<code><![CDATA[$session['dc_id']]]></code>
<code><![CDATA[$session['test_mode']]]></code>
<code><![CDATA[$settings['connection_settings']]]></code>
<code><![CDATA[$settings['connection_settings']['all']]]></code>
<code><![CDATA[$settings['old_session_key']]]></code>
<code><![CDATA[$settings['old_session_passcode']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$session['auth_key']]]></code>
<code><![CDATA[$settings['connection_settings']]]></code>
<code><![CDATA[$settings['connection_settings']['all']]]></code>
<code><![CDATA[$settings['connection_settings']['all']['test_mode']]]></code>
<code><![CDATA[$settings['old_session_key']]]></code>
<code><![CDATA[$settings['old_session_passcode']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$dcs[$dc['dc_id']]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$data</code>
<code>$data</code>
<code>$data</code>
<code>$dataName</code>
<code>$dc</code>
<code><![CDATA[$dcs[$dc['dc_id']]]]></code>
<code>$encryptedInfo</code>
<code>$encryptedKey</code>
<code>$encryptedKey</code>
<code>$f</code>
<code>$info</code>
<code>$key</code>
<code>$length</code>
<code>$main</code>
<code>$main</code>
<code>$res</code>
<code>$salt</code>
<code>$salt</code>
<code>$session</code>
<code>$session</code>
<code>$session</code>
<code>$sessions</code>
<code><![CDATA[$settings['connection_settings']['all']['test_mode']]]></code>
<code><![CDATA[$settings['old_session_key']]]></code>
<code><![CDATA[$settings['old_session_passcode']]]></code>
<code>self::$tdesktop_key</code>
</MixedAssignment>
<MixedOperand>
<code>$options</code>
<code>$salt</code>
<code>$salt</code>
<code><![CDATA[$settings['old_session_key']]]></code>
<code><![CDATA[$settings['old_session_key']]]></code>
</MixedOperand>
<PossiblyUndefinedArrayOffset>
<code>$part_one_md5</code>
<code>$part_one_md5</code>
</PossiblyUndefinedArrayOffset>
<PossiblyUndefinedVariable>
<code>$dc</code>
<code>$main_dc_id</code>
</PossiblyUndefinedVariable>
<RedundantConditionGivenDocblockType>
<code>notFalse</code>
</RedundantConditionGivenDocblockType>
<UnevaluatedCode>
<code>break;</code>
</UnevaluatedCode>
<UnusedFunctionCall>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
</UnusedFunctionCall>
<UnusedVariable>
<code>$part_two_md5</code>
<code>$user_id</code>
</UnusedVariable>
</file>
<file src="src/DataCenter.php">
<DocblockTypeContradiction>
<code>$socket instanceof Connection</code>
<code>\is_int($id)</code>
</DocblockTypeContradiction>
<MixedArgument>
<code><![CDATA[$data['linked']]]></code>
<code><![CDATA[$data['permAuthKey']]]></code>
<code><![CDATA[$data['tempAuthKey']]]></code>
<code><![CDATA[$data['tempAuthKey']]]></code>
<code><![CDATA[$extra['secret']]]></code>
<code><![CDATA[$this->dclist[$test][$ipv6]]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$data['linked']]]></code>
<code><![CDATA[$data['permAuthKey']]]></code>
<code><![CDATA[$data['tempAuthKey']]]></code>
<code><![CDATA[$data['tempAuthKey']]]></code>
<code><![CDATA[$data['tempAuthKey']]]></code>
<code><![CDATA[$data['tempAuthKey']]]></code>
<code><![CDATA[$data['tempAuthKey']['bound']]]></code>
<code><![CDATA[$data['tempAuthKey']['bound']]]></code>
<code><![CDATA[$extra['secret']]]></code>
<code><![CDATA[$this->dclist[$test][$ipv6]]]></code>
<code><![CDATA[$this->dclist[$test][$ipv6]]]></code>
<code><![CDATA[$this->dclist[$test][$ipv6]]]></code>
<code><![CDATA[$this->dclist[$test][$ipv6]]]></code>
<code><![CDATA[$this->dclist[$test][$ipv6][$dc_number]]]></code>
<code><![CDATA[$this->dclist[$test][$ipv6][$dc_number]]]></code>
<code><![CDATA[$this->dclist[$test][$ipv6][$dc_number]['secret']]]></code>
<code><![CDATA[$this->dclist[$test][$ipv6][$dc_number]['tcpo_only']]]></code>
<code><![CDATA[$this->dclist[$test][$ipv6][$id]]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$array[$id]['permAuthKey']['authorized']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code>$changed[$id]</code>
<code>$changed[$id]</code>
<code><![CDATA[$this->dclist[$test][$ipv6]]]></code>
<code><![CDATA[$this->dclist[$test][$ipv6][$id]]]></code>
<code><![CDATA[$this->sockets[$id]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$address</code>
<code><![CDATA[$array[$id]['permAuthKey']]]></code>
<code><![CDATA[$array[$id]['permAuthKey']['authorized']]]></code>
<code><![CDATA[$array[$id]['tempAuthKey']]]></code>
<code>$combo[\count($combo) - 2][1]</code>
<code>$data</code>
<code>$data</code>
<code>$dc</code>
<code>$dcs</code>
<code>$extra</code>
<code>$id</code>
<code>$ipv6</code>
<code>$only</code>
<code>$port</code>
<code>$port</code>
<code>$subdomain</code>
<code>$subdomain</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>bool</code>
</MixedInferredReturnType>
<MixedOperand>
<code>$address</code>
<code>$address</code>
<code>$address</code>
<code>$port</code>
<code>$port</code>
<code>$port</code>
<code>$port</code>
<code>$port</code>
<code>$subdomain</code>
<code>$subdomain</code>
<code>$subdomain</code>
<code>$subdomain</code>
</MixedOperand>
<MixedPropertyTypeCoercion>
<code><![CDATA[$this->sockets]]></code>
</MixedPropertyTypeCoercion>
<MixedReturnStatement>
<code><![CDATA[$this->dclist[$test][$ipv6][$dc]['cdn'] ?? false]]></code>
<code><![CDATA[$this->dclist[$test][$ipv6][$dc]['cdn'] ?? false]]></code>
</MixedReturnStatement>
<PossiblyUndefinedArrayOffset>
<code>$default[2]</code>
<code>$default[2]</code>
</PossiblyUndefinedArrayOffset>
<PropertyNotSetInConstructor>
<code>$dohWrapper</code>
</PropertyNotSetInConstructor>
<RedundantConditionGivenDocblockType>
<code>$socket instanceof DataCenterConnection</code>
<code><![CDATA[$socket instanceof DataCenterConnection && \is_int($key)]]></code>
<code><![CDATA[$this->settings->getTransport()]]></code>
<code>\is_int($key)</code>
</RedundantConditionGivenDocblockType>
</file>
<file src="src/DataCenterConnection.php">
<MissingConstructor>
<code>$API</code>
<code>$connectionsPromise</code>
<code>$ctx</code>
<code>$datacenter</code>
</MissingConstructor>
<MixedArgument>
<code>$aes_iv</code>
<code>$aes_key</code>
<code>$exported_authorization</code>
<code>$message_data</code>
</MixedArgument>
<MixedAssignment>
<code>$exported_authorization</code>
<code>$message_data</code>
<code>$res</code>
</MixedAssignment>
<PossiblyNullReference>
<code>bind</code>
</PossiblyNullReference>
<RedundantConditionGivenDocblockType>
<code><![CDATA[$authorized_socket->hasTempAuthKey()
&& $authorized_socket->hasPermAuthKey()
&& $authorized_socket->isAuthorized()
&& $this->API->authorized === \danog\MadelineProto\API::LOGGED_IN]]></code>
</RedundantConditionGivenDocblockType>
<UnsupportedReferenceUsage>
<code><![CDATA[$this->permAuthKey =& $this->API->datacenter->getDataCenterConnection($dc)->permAuthKey]]></code>
</UnsupportedReferenceUsage>
</file>
<file src="src/Db/ArrayCacheTrait.php">
<MissingParamType>
<code>$value</code>
</MissingParamType>
<MissingReturnType>
<code>getCache</code>
</MissingReturnType>
<MixedAssignment>
<code>$newValues[$key]</code>
</MixedAssignment>
</file>
<file src="src/Db/DbArray.php">
<ImplementedReturnTypeMismatch>
<code><![CDATA[\Traversable<TKey, TValue>]]></code>
</ImplementedReturnTypeMismatch>
</file>
<file src="src/Db/DbPropertiesTrait.php">
<MixedArrayOffset>
<code>$promises[$property]</code>
</MixedArrayOffset>
<MixedAssignment>
<code>$property</code>
<code>$result</code>
<code>$type</code>
</MixedAssignment>
<MixedOperand>
<code>$result</code>
</MixedOperand>
</file>
<file src="src/Db/Driver/Mysql.php">
<ArgumentTypeCoercion>
<code>$config</code>
<code>$config</code>
<code><![CDATA[$config->withDatabase(null)]]></code>
<code><![CDATA[$settings->getIdleTimeout()]]></code>
<code><![CDATA[$settings->getMaxConnections()]]></code>
</ArgumentTypeCoercion>
<PossiblyNullArrayAccess>
<code><![CDATA[$connection->query("SHOW VARIABLES LIKE 'max_connections'")->fetchRow()['Value']]]></code>
</PossiblyNullArrayAccess>
</file>
<file src="src/Db/Driver/Postgres.php">
<ArgumentTypeCoercion>
<code>$config</code>
<code>$config</code>
<code><![CDATA[$config->withDatabase(null)]]></code>
<code><![CDATA[$settings->getIdleTimeout()]]></code>
<code><![CDATA[$settings->getMaxConnections()]]></code>
</ArgumentTypeCoercion>
</file>
<file src="src/Db/DriverArray.php">
<ArgumentTypeCoercion>
<code>$previous</code>
<code>$settings</code>
<code>$settings</code>
<code>$settings</code>
</ArgumentTypeCoercion>
<LessSpecificReturnStatement>
<code>$instance</code>
</LessSpecificReturnStatement>
<MissingClosureParamType>
<code>$v</code>
<code>$value</code>
<code>$value</code>
</MissingClosureParamType>
<MissingClosureReturnType>
<code><![CDATA[fn ($v) => $v]]></code>
<code><![CDATA[fn ($value) => \json_decode($value, true, 256, JSON_THROW_ON_ERROR)]]></code>
</MissingClosureReturnType>
<MissingConstructor>
<code>$dbSettings</code>
<code>$dbSettings</code>
<code>$dbSettings</code>
<code>$dbSettings</code>
<code>$dbSettings</code>
<code>$dbSettings</code>
<code>$dbSettings</code>
<code>$dbSettings</code>
<code>$deserializer</code>
<code>$deserializer</code>
<code>$deserializer</code>
<code>$deserializer</code>
<code>$deserializer</code>
<code>$deserializer</code>
<code>$deserializer</code>
<code>$deserializer</code>
<code>$serializer</code>
<code>$serializer</code>
<code>$serializer</code>
<code>$serializer</code>
<code>$serializer</code>
<code>$serializer</code>
<code>$serializer</code>
<code>$serializer</code>
<code>$table</code>
<code>$table</code>
<code>$table</code>
<code>$table</code>
<code>$table</code>
<code>$table</code>
<code>$table</code>
<code>$table</code>
</MissingConstructor>
<MixedArgument>
<code>$key</code>
<code>$value</code>
</MixedArgument>
<MixedAssignment>
<code>$value</code>
</MixedAssignment>
<MoreSpecificReturnType>
<code>static</code>
</MoreSpecificReturnType>
<PossibleRawObjectIteration>
<code>$old</code>
</PossibleRawObjectIteration>
<UndefinedMethod>
<code>setSettings</code>
</UndefinedMethod>
<UnsafeInstantiation>
<code>new static()</code>
</UnsafeInstantiation>
</file>
<file src="src/Db/MemoryArray.php">
<MethodSignatureMismatch>
<code>MemoryArray</code>
<code>MemoryArray</code>
</MethodSignatureMismatch>
<MissingParamType>
<code>$array</code>
<code>$flags</code>
</MissingParamType>
<MixedArgument>
<code>$flags | self::STD_PROP_LIST</code>
</MixedArgument>
<MixedOperand>
<code>$flags</code>
</MixedOperand>
<MoreSpecificImplementedParamType>
<code>$settings</code>
</MoreSpecificImplementedParamType>
</file>
<file src="src/Db/MysqlArray.php">
<ArgumentTypeCoercion>
<code><![CDATA[$this->dbSettings]]></code>
</ArgumentTypeCoercion>
<InvalidDocblockParamName>
<code>$stmt</code>
</InvalidDocblockParamName>
<MissingConstructor>
<code>$pdo</code>
<code>$pdo</code>
</MissingConstructor>
<MixedArgument>
<code>$value</code>
</MixedArgument>
<MixedAssignment>
<code>$value</code>
</MixedAssignment>
</file>
<file src="src/Db/NullCache/NullCacheTrait.php">
<MissingParamType>
<code>$value</code>
</MissingParamType>
</file>
<file src="src/Db/PostgresArray.php">
<MissingClosureParamType>
<code>$v</code>
<code>$v</code>
<code>$v</code>
<code>$v</code>
<code>$v</code>
<code>$v</code>
<code>$v</code>
<code>$value</code>
</MissingClosureParamType>
<MissingClosureReturnType>
<code><![CDATA[fn ($v) => \igbinary_unserialize(\hex2bin($v))]]></code>
<code><![CDATA[fn ($v) => \unserialize(\hex2bin($v))]]></code>
<code><![CDATA[fn ($value) => \json_decode(\hex2bin($value), true, 256, JSON_THROW_ON_ERROR)]]></code>
</MissingClosureReturnType>
<MixedArgument>
<code>$v</code>
<code>$v</code>
<code>$v</code>
<code>$v</code>
<code>$value</code>
</MixedArgument>
</file>
<file src="src/Db/PostgresArrayBytea.php">
<ArgumentTypeCoercion>
<code><![CDATA[$this->dbSettings]]></code>
</ArgumentTypeCoercion>
<MissingClosureParamType>
<code>$v</code>
<code>$v</code>
<code>$v</code>
<code>$v</code>
<code>$v</code>
<code>$value</code>
</MissingClosureParamType>
<MissingClosureReturnType>
<code><![CDATA[fn ($v) => $v]]></code>
<code><![CDATA[fn ($value) => \json_decode($value, true, 256, JSON_THROW_ON_ERROR)]]></code>
</MissingClosureReturnType>
<MixedArgument>
<code>$v</code>
<code>$value</code>
</MixedArgument>
</file>
<file src="src/Db/RedisArray.php">
<ArgumentTypeCoercion>
<code><![CDATA[$this->dbSettings]]></code>
</ArgumentTypeCoercion>
<MissingConstructor>
<code>$db</code>
</MissingConstructor>
<MixedArgument>
<code><![CDATA[($this->serializer)($value)]]></code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code>$key</code>
<code>$key</code>
<code>$key</code>
<code>$key</code>
<code>$key</code>
<code>$key</code>
<code>$key</code>
</MixedArgumentTypeCoercion>
<MixedAssignment>
<code>$value</code>
</MixedAssignment>
<PossiblyNullArgument>
<code><![CDATA[$this->db->get($key)]]></code>
<code>$value</code>
</PossiblyNullArgument>
</file>
<file src="src/Db/SqlArray.php">
<InvalidDocblockParamName>
<code>$stmt</code>
</InvalidDocblockParamName>
<MissingConstructor>
<code>$db</code>
<code>$db</code>
<code>$db</code>
<code>$db</code>
<code>$db</code>
<code>$db</code>
</MissingConstructor>
<MixedArgument>
<code><![CDATA[$row['value']]]></code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code>$value</code>
</MixedArgumentTypeCoercion>
<MixedAssignment>
<code>$value</code>
</MixedAssignment>
<PossiblyNullArrayAccess>
<code><![CDATA[$row->fetchRow()['count']]]></code>
</PossiblyNullArrayAccess>
</file>
<file src="src/DoHConnector.php">
<MixedArgument>
<code>$host</code>
<code>$host</code>
<code>$host</code>
<code>$host</code>
<code>$port</code>
<code>$port</code>
<code>$scheme</code>
<code>$scheme</code>
</MixedArgument>
<MixedArrayAccess>
<code>$host[0]</code>
</MixedArrayAccess>
<PossiblyInvalidArgument>
<code>$builtUri</code>
<code>$uri</code>
</PossiblyInvalidArgument>
</file>
<file src="src/DoHWrapper.php">
<MixedAssignment>
<code>$extra</code>
</MixedAssignment>
<RedundantCondition>
<code>$orig[1][0] === BufferedRawStream::class</code>
</RedundantCondition>
</file>
<file src="src/DocsBuilder.php">
<MissingPropertyType>
<code>$any</code>
<code>$td</code>
<code>$types</code>
</MissingPropertyType>
<MixedArgument>
<code>$name</code>
<code>$otype</code>
<code><![CDATA[$this->settings['description']]]></code>
<code><![CDATA[$this->settings['output_dir']]]></code>
<code><![CDATA[$this->settings['output_dir']]]></code>
<code><![CDATA[$this->settings['output_dir']]]></code>
<code><![CDATA[$this->templates[$constructor]]]></code>
<code><![CDATA[$this->templates[$name]]]></code>
<code><![CDATA[$this->templates[$type]]]></code>
<code><![CDATA[$this->templates['Type']]]></code>
<code><![CDATA[$this->types]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$data['method']]]></code>
<code><![CDATA[$data['predicate']]]></code>
<code><![CDATA[$keys['constructors']]]></code>
<code><![CDATA[$keys['methods']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[Lang::$lang['en'][$key]]]></code>
</MixedArrayAssignment>
<MixedAssignment>
<code>$data</code>
<code>$data</code>
<code>$keys</code>
<code>$name</code>
<code>$otype</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$data['layer']]]></code>
<code><![CDATA[$data['predicate']]]></code>
<code><![CDATA[$this->settings['template']]]></code>
<code><![CDATA[$this->templates['types-index']]]></code>
</MixedOperand>
<PropertyNotSetInConstructor>
<code>$tdDescriptions</code>
<code>DocsBuilder</code>
<code>DocsBuilder</code>
<code>DocsBuilder</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/DocsBuilder/Constructors.php">
<MixedArgument>
<code>$constructor</code>
<code>$description</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['type']]]></code>
<code>$ptype</code>
<code>$ptype</code>
<code>$ptype</code>
<code><![CDATA[$this->types[$php_type]['constructors']]]></code>
<code>$type</code>
<code><![CDATA[Tools::end(\explode('.', $param[$type_or_subtype]))[0]]]></code>
<code><![CDATA[Tools::end(\explode('_', $ptype))[0]]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$data['params']]]></code>
<code><![CDATA[$data['params']]]></code>
<code><![CDATA[$data['predicate']]]></code>
<code><![CDATA[$data['type']]]></code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param[isset($param['subtype']) ? 'subtype' : 'type']]]></code>
<code><![CDATA[$this->TL->getConstructors()->findByType(\str_replace('%', '', $param[$type_or_subtype]))['predicate']]]></code>
<code><![CDATA[$this->TL->getConstructors()->findByType(\str_replace('%', '', $ptype))['predicate']]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['description']]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['description']]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]></code>
<code><![CDATA[$this->types[$php_type]]]></code>
<code><![CDATA[$this->types[$php_type]['constructors']]]></code>
<code><![CDATA[Lang::$lang['en']['object_'.$constructor.'_param_'.$param['name'].'_type_'.$param['type']]]]></code>
<code><![CDATA[Lang::$lang['en']['object_'.$constructor.'_param_'.$param['name'].'_type_'.$param['type']]]]></code>
<code><![CDATA[Lang::$lang['en']['object_'.$constructor]]]></code>
<code><![CDATA[Lang::$lang['en']['object_'.$constructor]]]></code>
<code><![CDATA[Tools::end(\explode('.', $param[$type_or_subtype]))[0]]]></code>
<code><![CDATA[Tools::end(\explode('_', $ptype))[0]]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$data['layer']]]></code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]></code>
<code><![CDATA[$this->types[$php_type]]]></code>
<code><![CDATA[$this->types[$php_type]]]></code>
<code><![CDATA[$this->types[$php_type]['constructors']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code>$got[$id]</code>
<code>$got[$id]</code>
<code><![CDATA[$this->TL->getConstructors()->by_id[$id]]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$constructor</code>
<code>$data</code>
<code>$description</code>
<code>$id</code>
<code>$param</code>
<code>$param</code>
<code>$param[$type_or_subtype]</code>
<code>$ptype</code>
<code>$ptype</code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['description']]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]></code>
<code>$type</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$data['layer']]]></code>
<code>$param[$type_or_subtype]</code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['description']]]></code>
<code><![CDATA[$this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]></code>
<code><![CDATA[$this->any]]></code>
</MixedOperand>
<UnusedVariable>
<code>$ppptype</code>
<code>$ppptype</code>
<code>$predicate</code>
<code>$pwr_params</code>
<code>$pwr_params</code>
<code>$pwr_params</code>
<code>$pwr_params</code>
</UnusedVariable>
</file>
<file src="src/DocsBuilder/Methods.php">
<MixedArgument>
<code>$bots</code>
<code><![CDATA[$data['type']]]></code>
<code>$description</code>
<code>$human_ptype</code>
<code>$human_ptype</code>
<code>$method</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]['description'] ?? '']]></code>
<code><![CDATA[$this->types[$php_type]['methods']]]></code>
<code><![CDATA[Tools::end(\explode('.', $param[$type_or_subtype]))[0]]]></code>
<code><![CDATA[Tools::end(\explode('.', $param[$type_or_subtype]))[0]]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$data['method']]]></code>
<code><![CDATA[$data['params']]]></code>
<code><![CDATA[$data['params']]]></code>
<code><![CDATA[$data['type']]]></code>
<code><![CDATA[$errors['human_result']]]></code>
<code><![CDATA[$errors['human_result'][$error]]]></code>
<code><![CDATA[$errors['human_result'][$error][0]]]></code>
<code><![CDATA[$errors['result']]]></code>
<code><![CDATA[$id['type']]]></code>
<code><![CDATA[$id['type']]]></code>
<code><![CDATA[$id['type']]]></code>
<code><![CDATA[$id['type']]]></code>
<code><![CDATA[$param[$type_or_subtype = isset($param['subtype']) ? 'subtype' : 'type']]]></code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]['description']]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]['description']]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]['description']]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]['params']]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]['params'][$param['name']]]]></code>
<code><![CDATA[$this->types[$php_type]]]></code>
<code><![CDATA[$this->types[$php_type]['methods']]]></code>
<code><![CDATA[Lang::$lang['en']['method_'.$method.'_param_'.$param['name'].'_type_'.$param['type']]]]></code>
<code><![CDATA[Lang::$lang['en']['method_'.$method]]]></code>
<code><![CDATA[Lang::$lang['en']['method_'.$method]]]></code>
<code><![CDATA[Tools::end(\explode('.', $param[$type_or_subtype]))[0]]]></code>
<code><![CDATA[Tools::end(\explode('.', $param[$type_or_subtype]))[0]]]></code>
<code><![CDATA[\json_decode(\file_get_contents('https://rpc.madelineproto.xyz/bot.json'), true)['result']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code>$param[$type_or_subtype]</code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['pow']]]></code>
<code><![CDATA[$param['subtype']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]['params'][$param['name']]]]></code>
<code><![CDATA[$this->types[$php_type]]]></code>
<code><![CDATA[$this->types[$php_type]]]></code>
<code><![CDATA[$this->types[$php_type]['methods']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$errors['human_result'][$error]]]></code>
<code>$new[$method]</code>
<code>$new[$method]</code>
<code><![CDATA[$new['result'][$method]]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]['params'][$param['name']]]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]['params'][$param['name']]]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]['params'][$param['name']]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$bots</code>
<code>$code</code>
<code>$code</code>
<code>$data</code>
<code>$description</code>
<code>$error</code>
<code>$error</code>
<code>$errors</code>
<code>$human_ptype</code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code>$method</code>
<code>$method</code>
<code>$param</code>
<code>$param</code>
<code>$ppptype</code>
<code>$ppptype</code>
<code>$ptype</code>
<code>$suberrors</code>
<code>$suberrors</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$errors['human_result'][$error][0]]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code>$ppptype</code>
<code>$ptype</code>
<code>$ptype</code>
<code>$ptype</code>
<code>$ptype</code>
<code><![CDATA[$this->any]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]['description']]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$method]['params'][$param['name']]]]></code>
<code><![CDATA[isset($param['subtype']) ? ' array of '.$ptype : $ptype]]></code>
<code><![CDATA[isset($param['subtype']) ? '['.$ppptype.']' : $ppptype]]></code>
</MixedOperand>
<UnusedVariable>
<code>$id</code>
<code>$json_params</code>
<code>$json_params</code>
<code>$json_params</code>
<code>$ppptype</code>
<code>$ppptype</code>
<code>$pwr_params</code>
<code>$pwr_params</code>
<code>$pwr_params</code>
</UnusedVariable>
</file>
<file src="src/EventHandler.php">
<ArgumentTypeCoercion>
<code>$class</code>
</ArgumentTypeCoercion>
<DeprecatedMethod>
<code><![CDATA[Tools::call($this->getReportPeers())]]></code>
<code><![CDATA[Tools::call($this->getReportPeers())]]></code>
</DeprecatedMethod>
<MixedArgument>
<code>$newHandlers</code>
<code>$pluginsTemp</code>
<code><![CDATA[Lang::$current_lang['plugin_path_does_not_exist']]]></code>
<code>self::$checkedPaths[$p]</code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code>$closure</code>
</MixedArgumentTypeCoercion>
<MixedArrayAccess>
<code><![CDATA[$constructor['predicate']]]></code>
<code><![CDATA[$constructor['type']]]></code>
<code><![CDATA[$constructor['type']]]></code>
<code>$newHandlers</code>
<code>$newMethods</code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code>$pluginsTemp []</code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$methods[$constructor['predicate']]]]></code>
<code><![CDATA[$methods[$constructor['predicate']]]]></code>
<code>$methods[$update]</code>
<code>$methods[$update]</code>
<code>$methods[$update]</code>
</MixedArrayOffset>
<MixedAssignment>
<code>$constructor</code>
<code>$constructor</code>
<code>$method</code>
<code>$methods[$update][]</code>
<code>$onAny</code>
<code>$plugin</code>
<code>$pluginsNew[$class]</code>
<code>$r</code>
<code>$r</code>
<code>$r</code>
<code>$r</code>
<code>$update</code>
<code>[$newMethods, $newHandlers]</code>
<code>self::$checkedPaths[$p]</code>
</MixedAssignment>
<MixedFunctionCall>
<code><![CDATA[$recurse($file, $namespace.'\\'.\basename($file))]]></code>
<code>$recurse($p)</code>
</MixedFunctionCall>
<MixedInferredReturnType>
<code>bool</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>internalStart</code>
<code>isPluginEnabled</code>
</MixedMethodCall>
<MixedReturnStatement>
<code>$closure($loop) ?? false</code>
<code>$closure($loop) ?? false</code>
</MixedReturnStatement>
<MixedReturnTypeCoercion>
<code><![CDATA[$this->periodicLoops]]></code>
<code><![CDATA[array<string, PeriodicLoop>]]></code>
</MixedReturnTypeCoercion>
<PossiblyInvalidArgument>
<code><![CDATA[$this->wrapper->getAPI()]]></code>
</PossiblyInvalidArgument>
<PossiblyNullArgument>
<code><![CDATA[$methodRefl->getParameters()[0]->getType()]]></code>
</PossiblyNullArgument>
<PropertyTypeCoercion>
<code>self::$pluginCache</code>
</PropertyTypeCoercion>
<RedundantFunctionCall>
<code>\array_values</code>
</RedundantFunctionCall>
<UnresolvableInclude>
<code>require $file</code>
</UnresolvableInclude>
<UnsafeInstantiation>
<code>new $class</code>
</UnsafeInstantiation>
<UnusedVariable>
<code>$handler</code>
<code>$pluginsTemp</code>
<code>$r</code>
</UnusedVariable>
</file>
<file src="src/EventHandler/AbstractMessage.php">
<InvalidReturnStatement>
<code><![CDATA[$this->replyCache]]></code>
<code><![CDATA[$this->replyCache]]></code>
</InvalidReturnStatement>
<MixedArgument>
<code>$messages[0]</code>
</MixedArgument>
<MixedArrayAccess>
<code>$messages[0]</code>
<code><![CDATA[$rawMessage['reply_to']['_']]]></code>
<code><![CDATA[$replyTo['forum_topic']]]></code>
<code><![CDATA[$replyTo['reply_to_msg_id']]]></code>
<code><![CDATA[$replyTo['reply_to_msg_id']]]></code>
<code><![CDATA[$replyTo['reply_to_msg_id']]]></code>
<code><![CDATA[$replyTo['reply_to_msg_id']]]></code>
<code><![CDATA[$replyTo['reply_to_scheduled']]]></code>
<code><![CDATA[$replyTo['reply_to_top_id']]]></code>
<code><![CDATA[$replyTo['reply_to_top_id']]]></code>
<code><![CDATA[$replyTo['reply_to_top_id']]]></code>
<code><![CDATA[$this->getClient()->methodCallAsyncRead(
API::isSupergroup($this->chatId) ? 'channels.getMessages' : 'messages.getMessages',
[
'channel' => $this->chatId,
'id' => [['_' => 'inputMessageReplyTo', 'id' => $this->id]]
]
)['messages']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code>$messages</code>
<code>$replyTo</code>
<code><![CDATA[$this->chatId]]></code>
<code><![CDATA[$this->date]]></code>
<code><![CDATA[$this->id]]></code>
<code><![CDATA[$this->mentioned]]></code>
<code><![CDATA[$this->out]]></code>
<code><![CDATA[$this->replyToMsgId]]></code>
<code><![CDATA[$this->replyToMsgId]]></code>
<code><![CDATA[$this->replyToMsgId]]></code>
<code><![CDATA[$this->replyToScheduled]]></code>
<code><![CDATA[$this->senderId]]></code>
<code><![CDATA[$this->silent]]></code>
<code><![CDATA[$this->threadId]]></code>
<code><![CDATA[$this->threadId]]></code>
<code><![CDATA[$this->topicId]]></code>
<code><![CDATA[$this->topicId]]></code>
<code><![CDATA[$this->ttlPeriod]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>$replyCache</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/CallbackQuery.php">
<MixedAssignment>
<code><![CDATA[$this->chatInstance]]></code>
<code><![CDATA[$this->queryId]]></code>
<code><![CDATA[$this->userId]]></code>
</MixedAssignment>
<MixedInferredReturnType>
<code>bool</code>
</MixedInferredReturnType>
<MixedReturnStatement>
<code><![CDATA[$this->getClient()->methodCallAsyncRead(
'messages.setBotCallbackAnswer',
[
'query_id' => $this->queryId,
'message' => $message,
'alert' => $alert,
'url' => $url,
'cache_time' => $cacheTime,
],
)]]></code>
</MixedReturnStatement>
</file>
<file src="src/EventHandler/Filter/FilterFromAdmin.php">
<MissingConstructor>
<code>$adminIds</code>
</MissingConstructor>
</file>
<file src="src/EventHandler/Filter/FilterFromSender.php">
<PropertyNotSetInConstructor>
<code>$peerResolved</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Filter/FilterFromSenders.php">
<PropertyNotSetInConstructor>
<code>$peersResolved</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Filter/FilterPeer.php">
<PropertyNotSetInConstructor>
<code>$peerResolved</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Filter/FilterRegex.php">
<PropertyTypeCoercion>
<code>$matches</code>
<code>$matches</code>
</PropertyTypeCoercion>
<UnusedFunctionCall>
<code>\preg_match</code>
</UnusedFunctionCall>
</file>
<file src="src/EventHandler/Filter/FilterSender.php">
<PropertyNotSetInConstructor>
<code>$peerResolved</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Keyboard.php">
<MixedArgument>
<code><![CDATA[$rawReplyMarkup['rows']]]></code>
<code><![CDATA[$rawReplyMarkup['rows']]]></code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code><![CDATA[\array_column($rawReplyMarkup['rows'], 'buttons')]]></code>
<code><![CDATA[\array_column($rawReplyMarkup['rows'], 'buttons')]]></code>
</MixedArgumentTypeCoercion>
</file>
<file src="src/EventHandler/Media.php">
<MixedArrayAccess>
<code><![CDATA[($rawMedia['document'] ?? $rawMedia['photo'])['date']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code><![CDATA[$this->creationDate]]></code>
<code><![CDATA[$this->spoiler]]></code>
<code><![CDATA[$this->ttl]]></code>
</MixedAssignment>
<PossiblyNullArrayAccess>
<code><![CDATA[$this->botApiFileId]]></code>
<code><![CDATA[$this->botApiFileUniqueId]]></code>
</PossiblyNullArrayAccess>
<PropertyNotSetInConstructor>
<code>$thumbs</code>
<code>$videoThumbs</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/AbstractAudio.php">
<MixedAssignment>
<code><![CDATA[$this->duration]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>AbstractAudio</code>
<code>AbstractAudio</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/AbstractSticker.php">
<MixedAssignment>
<code><![CDATA[$this->emoji]]></code>
<code><![CDATA[$this->stickerset]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>AbstractSticker</code>
<code>AbstractSticker</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/AbstractVideo.php">
<MixedAssignment>
<code><![CDATA[$this->duration]]></code>
<code><![CDATA[$this->height]]></code>
<code><![CDATA[$this->supportsStreaming]]></code>
<code><![CDATA[$this->width]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>AbstractVideo</code>
<code>AbstractVideo</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/AnimatedSticker.php">
<MixedArgument>
<code><![CDATA[$photoAttribute['h']]]></code>
<code><![CDATA[$photoAttribute['w']]]></code>
</MixedArgument>
<PropertyNotSetInConstructor>
<code>AnimatedSticker</code>
<code>AnimatedSticker</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/Audio.php">
<MixedAssignment>
<code><![CDATA[$this->performer]]></code>
<code><![CDATA[$this->title]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>Audio</code>
<code>Audio</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/CustomEmoji.php">
<MixedArgument>
<code><![CDATA[$photoAttribute['h']]]></code>
<code><![CDATA[$photoAttribute['w']]]></code>
</MixedArgument>
<MixedAssignment>
<code><![CDATA[$this->free]]></code>
<code><![CDATA[$this->textColor]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>CustomEmoji</code>
<code>CustomEmoji</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/Document.php">
<PropertyNotSetInConstructor>
<code>Document</code>
<code>Document</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/DocumentPhoto.php">
<MixedArrayAccess>
<code><![CDATA[$rawMedia['document']['attributes']]]></code>
<code>$t</code>
</MixedArrayAccess>
<MixedAssignment>
<code><![CDATA[$this->height]]></code>
<code><![CDATA[$this->width]]></code>
<code><![CDATA[['_' => $t]]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>DocumentPhoto</code>
<code>DocumentPhoto</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/Gif.php">
<MixedArrayAccess>
<code><![CDATA[$rawMedia['document']['attributes']]]></code>
<code>$t</code>
</MixedArrayAccess>
<MixedAssignment>
<code><![CDATA[['_' => $t]]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>Gif</code>
<code>Gif</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/MaskSticker.php">
<MixedArgument>
<code><![CDATA[$photoAttribute['h']]]></code>
<code><![CDATA[$photoAttribute['w']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$coords['n']]]></code>
<code><![CDATA[$coords['x']]]></code>
<code><![CDATA[$coords['y']]]></code>
<code><![CDATA[$coords['zoom']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code>$coords</code>
<code><![CDATA[$this->x]]></code>
<code><![CDATA[$this->y]]></code>
<code><![CDATA[$this->zoom]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>MaskSticker</code>
<code>MaskSticker</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/Photo.php">
<MixedArrayAccess>
<code><![CDATA[$rawMedia['photo']['has_stickers']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code><![CDATA[$this->hasStickers]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>Photo</code>
<code>Photo</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/RoundVideo.php">
<PropertyNotSetInConstructor>
<code>RoundVideo</code>
<code>RoundVideo</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/StaticSticker.php">
<MixedArgument>
<code><![CDATA[$photoAttribute['h']]]></code>
<code><![CDATA[$photoAttribute['w']]]></code>
</MixedArgument>
<PropertyNotSetInConstructor>
<code>StaticSticker</code>
<code>StaticSticker</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/Sticker.php">
<PropertyNotSetInConstructor>
<code>Sticker</code>
<code>Sticker</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/Video.php">
<MixedArrayAccess>
<code><![CDATA[$rawMedia['document']['attributes']]]></code>
<code>$t</code>
</MixedArrayAccess>
<MixedAssignment>
<code><![CDATA[['_' => $t]]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>Video</code>
<code>Video</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/VideoSticker.php">
<MixedArgument>
<code><![CDATA[$extraAttribute['h']]]></code>
<code><![CDATA[$extraAttribute['w']]]></code>
</MixedArgument>
<MixedAssignment>
<code><![CDATA[$this->duration]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>VideoSticker</code>
<code>VideoSticker</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Media/Voice.php">
<MixedAssignment>
<code><![CDATA[$this->waveform]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>Voice</code>
<code>Voice</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Message.php">
<ArgumentTypeCoercion>
<code><![CDATA[$this->entities]]></code>
<code><![CDATA[$this->entities]]></code>
</ArgumentTypeCoercion>
<LessSpecificReturnStatement>
<code><![CDATA[$this->getClient()->wrapMessage($this->getClient()->extractMessage($result))]]></code>
</LessSpecificReturnStatement>
<MixedArgument>
<code><![CDATA[$fwdFrom['channel_post'] ?? null]]></code>
<code><![CDATA[$fwdFrom['date']]]></code>
<code><![CDATA[$fwdFrom['from_name'] ?? null]]></code>
<code><![CDATA[$fwdFrom['post_author'] ?? null]]></code>
<code><![CDATA[$fwdFrom['saved_from_msg_id'] ?? null]]></code>
<code><![CDATA[$rawMessage['media']]]></code>
<code><![CDATA[$rawMessage['reply_markup']]]></code>
<code>$result</code>
<code>$result</code>
<code>$result</code>
<code><![CDATA[$this->message]]></code>
<code><![CDATA[$this->message]]></code>
<code><![CDATA[$this->message]]></code>
<code><![CDATA[$this->message]]></code>
<code><![CDATA[$this->protected]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$fwdFrom['channel_post']]]></code>
<code><![CDATA[$fwdFrom['date']]]></code>
<code><![CDATA[$fwdFrom['from_id']]]></code>
<code><![CDATA[$fwdFrom['from_name']]]></code>
<code><![CDATA[$fwdFrom['imported']]]></code>
<code><![CDATA[$fwdFrom['post_author']]]></code>
<code><![CDATA[$fwdFrom['psa_type']]]></code>
<code><![CDATA[$fwdFrom['saved_from_msg_id']]]></code>
<code><![CDATA[$fwdFrom['saved_from_peer']]]></code>
<code><![CDATA[$r['reaction']]]></code>
<code><![CDATA[$r['reaction']]]></code>
<code><![CDATA[$r['reaction']['document_id']]]></code>
<code><![CDATA[$r['reaction']['emoticon']]]></code>
<code>$result[0]</code>
<code><![CDATA[$result[0]['text']]]></code>
<code><![CDATA[$this->message[0]]]></code>
<code><![CDATA[$this->message[0]]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code>$fwdFrom</code>
<code>$r</code>
<code>$result</code>
<code>$result</code>
<code>$result</code>
<code>$result</code>
<code><![CDATA[$this->editDate]]></code>
<code><![CDATA[$this->entities]]></code>
<code><![CDATA[$this->fromScheduled]]></code>
<code><![CDATA[$this->imported]]></code>
<code><![CDATA[$this->message]]></code>
<code><![CDATA[$this->protected]]></code>
<code><![CDATA[$this->psaType]]></code>
<code><![CDATA[$this->viaBotId]]></code>
</MixedAssignment>
<MixedInferredReturnType>
<code>string</code>
</MixedInferredReturnType>
<MixedPropertyTypeCoercion>
<code><![CDATA[$this->reactions]]></code>
</MixedPropertyTypeCoercion>
<MixedReturnStatement>
<code><![CDATA[$result[0]['text']]]></code>
</MixedReturnStatement>
<MoreSpecificReturnType>
<code>Message</code>
</MoreSpecificReturnType>
<NullableReturnStatement>
<code><![CDATA[$this->getClient()->wrapMessage($this->getClient()->extractMessage($result))]]></code>
</NullableReturnStatement>
<PropertyNotSetInConstructor>
<code>$html</code>
<code>$htmlTelegram</code>
<code>Message</code>
</PropertyNotSetInConstructor>
<PropertyTypeCoercion>
<code><![CDATA[isset($rawMessage['media'])
? $API->wrapMedia($rawMessage['media'], $this->protected)
: null]]></code>
<code><![CDATA[isset($rawMessage['reply_markup'])
? Keyboard::fromRawReplyMarkup($rawMessage['reply_markup'])
: null]]></code>
</PropertyTypeCoercion>
</file>
<file src="src/EventHandler/Message/ChannelMessage.php">
<MixedAssignment>
<code><![CDATA[$this->signature]]></code>
<code><![CDATA[$this->views]]></code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>ChannelMessage</code>
<code>ChannelMessage</code>
<code>ChannelMessage</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Message/GroupMessage.php">
<PropertyNotSetInConstructor>
<code>GroupMessage</code>
<code>GroupMessage</code>
<code>GroupMessage</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Message/PrivateMessage.php">
<PropertyNotSetInConstructor>
<code>PrivateMessage</code>
<code>PrivateMessage</code>
<code>PrivateMessage</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Message/Service/DialogCreated.php">
<PropertyNotSetInConstructor>
<code>DialogCreated</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Message/Service/DialogMemberLeft.php">
<PropertyNotSetInConstructor>
<code>DialogMemberLeft</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Message/Service/DialogMembersJoined.php">
<PropertyNotSetInConstructor>
<code>DialogMembersJoined</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Message/Service/DialogMessagePinned.php">
<PropertyNotSetInConstructor>
<code>DialogMessagePinned</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Message/Service/DialogPhotoChanged.php">
<PropertyNotSetInConstructor>
<code>DialogPhotoChanged</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Message/Service/DialogTitleChanged.php">
<PropertyNotSetInConstructor>
<code>DialogTitleChanged</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/EventHandler/Query/ButtonQuery.php">
<MixedArgument>
<code><![CDATA[$res['data']]]></code>
</MixedArgument>
<MixedAssignment>
<code><![CDATA[$res[$prop->getName()]]]></code>
</MixedAssignment>
</file>
<file src="src/EventHandler/Query/ChatTrait.php">
<MixedArgument>
<code>$result</code>
</MixedArgument>
<MixedAssignment>
<code>$result</code>
<code><![CDATA[$this->messageId]]></code>
</MixedAssignment>
<MoreSpecificReturnType>
<code>Message</code>
</MoreSpecificReturnType>
<PossiblyNullPropertyAssignmentValue>
<code><![CDATA[$API->getIdInternal($rawCallback['peer'])]]></code>
</PossiblyNullPropertyAssignmentValue>
</file>
<file src="src/EventHandler/Query/GameQuery.php">
<MixedAssignment>
<code><![CDATA[$this->gameShortName]]></code>
</MixedAssignment>
</file>
<file src="src/EventHandler/Query/InlineTrait.php">
<MixedArgument>
<code><![CDATA[$rawCallback['access_hash']]]></code>
<code><![CDATA[$rawCallback['access_hash']]]></code>
<code><![CDATA[$rawCallback['dc_id']]]></code>
<code><![CDATA[$rawCallback['dc_id']]]></code>
<code><![CDATA[$rawCallback['id']]]></code>
<code><![CDATA[$rawCallback['id']]]></code>
<code><![CDATA[$rawCallback['owner_id']]]></code>
</MixedArgument>
<UnhandledMatchCondition>
<code><![CDATA[$rawCallback['_']]]></code>
</UnhandledMatchCondition>
</file>
<file src="src/EventHandler/Update.php">
<MixedAssignment>
<code><![CDATA[$res[$prop->getName()]]]></code>
</MixedAssignment>
</file>
<file src="src/EventHandlerIssue.php">
<MixedArgument>
<code><![CDATA[Lang::$current_lang[$this->severe ? 'static_analysis_severe' : 'static_analysis_minor']]]></code>
</MixedArgument>
</file>
<file src="src/Exception.php">
<MissingParamType>
<code>$code</code>
<code>$errfile</code>
<code>$errline</code>
<code>$errno</code>
<code>$errstr</code>
<code>$file</code>
<code>$line</code>
<code>$message</code>
</MissingParamType>
<MixedArgument>
<code>$code</code>
<code><![CDATA[$errfile ?? '']]></code>
<code>$errstr</code>
<code>$errstr</code>
<code>$errstr</code>
<code>$errstr</code>
<code>$message</code>
<code>$message</code>
<code><![CDATA[$this->file]]></code>
<code><![CDATA[$this->file]]></code>
<code><![CDATA[Lang::$current_lang['extensionRequired']]]></code>
<code><![CDATA[Lang::$current_lang['extensionRequiredInstallWithApt']]]></code>
<code><![CDATA[Lang::$current_lang['extensionRequiredInstallWithCustomInstructions']]]></code>
<code><![CDATA[Lang::$current_lang['extensionRequiredInstallWithCustomInstructions']]]></code>
<code><![CDATA[Lang::$current_lang['manualAdminActionRequired']]]></code>
<code><![CDATA[Lang::$current_lang['manualAdminActionRequired']]]></code>
<code><![CDATA[Lang::$current_lang['manualAdminActionRequired']]]></code>
<code><![CDATA[Lang::$current_lang['manualAdminActionRequired']]]></code>
<code><![CDATA[Lang::$current_lang['manualAdminActionRequired']]]></code>
<code><![CDATA[Lang::$current_lang['manualAdminActionRequired']]]></code>
<code><![CDATA[Lang::$current_lang['mmapErrorPart1']]]></code>
<code><![CDATA[Lang::$current_lang['mmapErrorPart2']]]></code>
<code><![CDATA[Lang::$current_lang['mmapErrorPart3']]]></code>
<code><![CDATA[Lang::$current_lang['mmapErrorPart4']]]></code>
</MixedArgument>
<MixedAssignment>
<code><![CDATA[$this->file]]></code>
<code><![CDATA[$this->line]]></code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$this->line]]></code>
</MixedOperand>
<UnusedVariable>
<code>$maps</code>
</UnusedVariable>
</file>
<file src="src/FileCallbackInterface.php">
<MissingReturnType>
<code>__invoke</code>
</MissingReturnType>
</file>
<file src="src/GarbageCollector.php">
<MixedArgument>
<code>$id</code>
<code>MADELINE_PHAR_GLOB</code>
<code>MADELINE_PHAR_VERSION</code>
<code>MADELINE_PHP</code>
<code>MADELINE_PHP</code>
<code>MADELINE_RELEASE_URL</code>
</MixedArgument>
<PropertyTypeCoercion>
<code>self::$map</code>
<code>self::$map ??= new WeakMap</code>
</PropertyTypeCoercion>
</file>
<file src="src/InternalDoc.php">
<DeprecatedMethod>
<code>\danog\MadelineProto\AsyncTools::after($a, $b)</code>
<code>\danog\MadelineProto\AsyncTools::all($promises)</code>
<code>\danog\MadelineProto\AsyncTools::any($promises)</code>
<code>\danog\MadelineProto\AsyncTools::call($promise)</code>
<code>\danog\MadelineProto\AsyncTools::first($promises)</code>
<code>\danog\MadelineProto\AsyncTools::some($promises)</code>
<code>\danog\MadelineProto\AsyncTools::timeout($promise, $timeout)</code>
<code>\danog\MadelineProto\AsyncTools::timeoutWithDefault($promise, $timeout, $default)</code>
<code>\danog\MadelineProto\AsyncTools::wait($promise)</code>
<code>loop</code>
<code>loop</code>
</DeprecatedMethod>
<InvalidReturnStatement>
<code><![CDATA[$this->wrapper->getAPI()->getDownloadInfo($messageMedia)]]></code>
<code><![CDATA[$this->wrapper->getAPI()->getEventHandler($class)]]></code>
</InvalidReturnStatement>
<InvalidReturnType>
<code>T|EventHandlerProxy|__PHP_Incomplete_Class|null</code>
<code>array{
* ext: string,
* name: string,
* mime: string,
* size: int,
* InputFileLocation: array,
* key_fingeprint?: string,
* key?: string,
* iv?: string,
* thumb_size?: string
* }</code>
</InvalidReturnType>
<MissingParamType>
<code>$data</code>
</MissingParamType>
<MissingReturnType>
<code>MTProtoToTd</code>
<code>MTProtoToTdcli</code>
<code>all</code>
<code>any</code>
<code>completeCall</code>
<code>completePhoneLogin</code>
<code>confirmCall</code>
<code>downloadToCallable</code>
<code>downloadToDir</code>
<code>downloadToStream</code>
<code>end</code>
<code>first</code>
<code>loop</code>
<code>phoneLogin</code>
<code>requestCall</code>
<code>requestSecretChat</code>
<code>some</code>
<code>start</code>
<code>tdToTdcli</code>
<code>upload</code>
<code>uploadEncrypted</code>
<code>uploadFromCallable</code>
<code>uploadFromStream</code>
<code>uploadFromTgfile</code>
<code>uploadFromUrl</code>
<code>wait</code>
</MissingReturnType>
<MixedInferredReturnType>
<code>string|false</code>
</MixedInferredReturnType>
<MixedReturnStatement>
<code><![CDATA[$this->wrapper->getAPI()->downloadToFile($messageMedia, $file, $cb)]]></code>
<code><![CDATA[$this->wrapper->getAPI()->downloadToFile($messageMedia, $file, $cb)]]></code>
</MixedReturnStatement>
<PossiblyInvalidPropertyAssignmentValue>
<code><![CDATA[$this->account ??= new \danog\MadelineProto\Namespace\AbstractAPI('account')]]></code>
<code><![CDATA[$this->auth ??= new \danog\MadelineProto\Namespace\AbstractAPI('auth')]]></code>
<code><![CDATA[$this->bots ??= new \danog\MadelineProto\Namespace\AbstractAPI('bots')]]></code>
<code><![CDATA[$this->channels ??= new \danog\MadelineProto\Namespace\AbstractAPI('channels')]]></code>
<code><![CDATA[$this->chatlists ??= new \danog\MadelineProto\Namespace\AbstractAPI('chatlists')]]></code>
<code><![CDATA[$this->contacts ??= new \danog\MadelineProto\Namespace\AbstractAPI('contacts')]]></code>
<code><![CDATA[$this->folders ??= new \danog\MadelineProto\Namespace\AbstractAPI('folders')]]></code>
<code><![CDATA[$this->help ??= new \danog\MadelineProto\Namespace\AbstractAPI('help')]]></code>
<code><![CDATA[$this->langpack ??= new \danog\MadelineProto\Namespace\AbstractAPI('langpack')]]></code>
<code><![CDATA[$this->messages ??= new \danog\MadelineProto\Namespace\AbstractAPI('messages')]]></code>
<code><![CDATA[$this->payments ??= new \danog\MadelineProto\Namespace\AbstractAPI('payments')]]></code>
<code><![CDATA[$this->phone ??= new \danog\MadelineProto\Namespace\AbstractAPI('phone')]]></code>
<code><![CDATA[$this->photos ??= new \danog\MadelineProto\Namespace\AbstractAPI('photos')]]></code>
<code><![CDATA[$this->stats ??= new \danog\MadelineProto\Namespace\AbstractAPI('stats')]]></code>
<code><![CDATA[$this->stickers ??= new \danog\MadelineProto\Namespace\AbstractAPI('stickers')]]></code>
<code><![CDATA[$this->stories ??= new \danog\MadelineProto\Namespace\AbstractAPI('stories')]]></code>
<code><![CDATA[$this->updates ??= new \danog\MadelineProto\Namespace\AbstractAPI('updates')]]></code>
<code><![CDATA[$this->upload ??= new \danog\MadelineProto\Namespace\AbstractAPI('upload')]]></code>
<code><![CDATA[$this->users ??= new \danog\MadelineProto\Namespace\AbstractAPI('users')]]></code>
</PossiblyInvalidPropertyAssignmentValue>
<PossiblyNullArgument>
<code>$callback</code>
</PossiblyNullArgument>
<PossiblyNullReference>
<code>MTProtoToBotAPI</code>
<code>MTProtoToTd</code>
<code>MTProtoToTdcli</code>
<code>acceptCall</code>
<code>acceptSecretChat</code>
<code>botAPIToMTProto</code>
<code>botLogin</code>
<code>broadcastCustom</code>
<code>broadcastForwardMessages</code>
<code>broadcastMessages</code>
<code>callStatus</code>
<code>cancelBroadcast</code>
<code>complete2faLogin</code>
<code>completeCall</code>
<code>completePhoneLogin</code>
<code>completeSignup</code>
<code>confirmCall</code>
<code>discardCall</code>
<code>discardSecretChat</code>
<code>downloadToBrowser</code>
<code>downloadToCallable</code>
<code>downloadToDir</code>
<code>downloadToFile</code>
<code>downloadToResponse</code>
<code>downloadToStream</code>
<code>exportAuthorization</code>
<code>extractMessage</code>
<code>extractMessageId</code>
<code>extractMessageUpdate</code>
<code>extractUpdates</code>
<code>fileGetContents</code>
<code>fullChatLastUpdated</code>
<code>fullGetSelf</code>
<code>getAdminIds</code>
<code>getAllMethods</code>
<code>getAuthorization</code>
<code>getBroadcastProgress</code>
<code>getCachedConfig</code>
<code>getCall</code>
<code>getCdnConfig</code>
<code>getConfig</code>
<code>getDNSClient</code>
<code>getDhConfig</code>
<code>getDialogIds</code>
<code>getDialogs</code>
<code>getDownloadInfo</code>
<code>getDownloadLink</code>
<code>getEventHandler</code>
<code>getFileInfo</code>
<code>getFullDialogs</code>
<code>getFullInfo</code>
<code>getHTTPClient</code>
<code>getHint</code>
<code>getId</code>
<code>getInfo</code>
<code>getLogger</code>
<code>getMethodNamespaces</code>
<code>getMethodsNamespaced</code>
<code>getPlugin</code>
<code>getPropicInfo</code>
<code>getPsrLogger</code>
<code>getPwrChat</code>
<code>getSecretChat</code>
<code>getSelf</code>
<code>getSessionName</code>
<code>getSettings</code>
<code>getSponsoredMessages</code>
<code>getTL</code>
<code>getType</code>
<code>getUpdates</code>
<code>getWebMessage</code>
<code>hasAdmins</code>
<code>hasEventHandler</code>
<code>hasPlugin</code>
<code>hasReportPeers</code>
<code>hasSecretChat</code>
<code>importAuthorization</code>
<code>initSelfRestart</code>
<code>isForum</code>
<code>isIpc</code>
<code>isIpcWorker</code>
<code>isPremium</code>
<code>isSelfBot</code>
<code>isSelfUser</code>
<code>logger</code>
<code>loop</code>
<code>peerIsset</code>
<code>phoneLogin</code>
<code>processDownloadServerPing</code>
<code>qrLogin</code>
<code>refreshFullPeerCache</code>
<code>refreshPeerCache</code>
<code>rekey</code>
<code>report</code>
<code>reportMemoryProfile</code>
<code>requestCall</code>
<code>requestSecretChat</code>
<code>resetUpdateState</code>
<code>restart</code>
<code>secretChatStatus</code>
<code>sendCustomEvent</code>
<code>sendDocument</code>
<code>sendMessage</code>
<code>sendMessageToAdmins</code>
<code>sendPhoto</code>
<code>setNoop</code>
<code>setReportPeers</code>
<code>setWebhook</code>
<code>setupLogger</code>
<code>start</code>
<code>stop</code>
<code>subscribeToUpdates</code>
<code>tdToMTProto</code>
<code>tdToTdcli</code>
<code>tdcliToTd</code>
<code>unsetEventHandler</code>
<code>update2fa</code>
<code>updateSettings</code>
<code>upload</code>
<code>uploadEncrypted</code>
<code>uploadFromCallable</code>
<code>uploadFromStream</code>
<code>uploadFromTgfile</code>
<code>uploadFromUrl</code>
<code>viewSponsoredMessage</code>
<code>wrapMedia</code>
<code>wrapMessage</code>
<code>wrapUpdate</code>
</PossiblyNullReference>
<PossiblyUndefinedMethod>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
<code>setWrapper</code>
</PossiblyUndefinedMethod>
</file>
<file src="src/Ipc/Client.php">
<ArgumentTypeCoercion>
<code>$class</code>
</ArgumentTypeCoercion>
<MissingReturnType>
<code>downloadToCallable</code>
<code>downloadToDir</code>
<code>downloadToFile</code>
<code>loop</code>
<code>methodCallAsyncRead</code>
<code>uploadFromCallable</code>
<code>uploadFromTgfile</code>
<code>uploadFromUrl</code>
</MissingReturnType>
<MixedArgumentTypeCoercion>
<code><![CDATA[$this->__call(...)]]></code>
</MixedArgumentTypeCoercion>
<MixedArrayAccess>
<code><![CDATA[$args['media']]]></code>
<code><![CDATA[$args['media']['file']]]></code>
<code><![CDATA[$args['multi_media']]]></code>
<code><![CDATA[$media['media']['file']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code>$callable</code>
<code>$callable</code>
<code>$dir</code>
<code>$file</code>
<code>$media</code>
<code>$media</code>
<code>$r</code>
<code>$r</code>
<code>$r</code>
<code>$url</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>Client|MTProto</code>
</MixedInferredReturnType>
<MixedReturnStatement>
<code>self::$instances[$session] ?? MTProto::giveInstanceBySession($session)</code>
<code>self::$instances[$session] ?? MTProto::giveInstanceBySession($session)</code>
</MixedReturnStatement>
</file>
<file src="src/Ipc/ClientAbstract.php">
<ArgumentTypeCoercion>
<code><![CDATA[$payload->getException()]]></code>
</ArgumentTypeCoercion>
<MixedArrayAccess>
<code>$id</code>
<code>$payload</code>
</MixedArrayAccess>
<MixedArrayOffset>
<code><![CDATA[$this->requests[$id]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$payload</code>
<code>[$id, $payload]</code>
</MixedAssignment>
<PossiblyNullReference>
<code>logger</code>
</PossiblyNullReference>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[\debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0]['file']]]></code>
</PossiblyUndefinedArrayOffset>
<PropertyNotSetInConstructor>
<code>$logger</code>
<code>$server</code>
</PropertyNotSetInConstructor>
<UnusedVariable>
<code>$promise</code>
</UnusedVariable>
</file>
<file src="src/Ipc/ExitFailure.php">
<ArgumentTypeCoercion>
<code>$previous</code>
</ArgumentTypeCoercion>
<InvalidStringClass>
<code><![CDATA[new $this->type($this->message, $this->code, $previous)]]></code>
</InvalidStringClass>
<MixedAssignment>
<code><![CDATA[$this->tlTrace]]></code>
</MixedAssignment>
<PossiblyInvalidArgument>
<code><![CDATA[$this->code]]></code>
</PossiblyInvalidArgument>
</file>
<file src="src/Ipc/IpcCapable.php">
<MixedAssignment>
<code><![CDATA[$this->API]]></code>
</MixedAssignment>
<MixedReturnStatement>
<code><![CDATA[$this->API ??= Client::giveInstanceBySession($this->session)]]></code>
<code><![CDATA[$this->API ??= Client::giveInstanceBySession($this->session)]]></code>
</MixedReturnStatement>
</file>
<file src="src/Ipc/IpcState.php">
<LessSpecificReturnStatement>
<code><![CDATA[$this->exception ? $this->exception->getException() : null]]></code>
</LessSpecificReturnStatement>
<MoreSpecificReturnType>
<code>?Throwable</code>
</MoreSpecificReturnType>
</file>
<file src="src/Ipc/Runner/ProcessRunner.php">
<MixedArgument>
<code>$value</code>
</MixedArgument>
<MixedAssignment>
<code>$value</code>
</MixedAssignment>
</file>
<file src="src/Ipc/Runner/RunnerAbstract.php">
<MixedInferredReturnType>
<code>string</code>
</MixedInferredReturnType>
<MixedReturnStatement>
<code>\MADELINE_PHP</code>
</MixedReturnStatement>
</file>
<file src="src/Ipc/Runner/WebRunner.php">
<PossiblyUndefinedArrayOffset>
<code><![CDATA[$_SERVER['REQUEST_URI']]]></code>
<code><![CDATA[$_SERVER['SERVER_NAME']]]></code>
<code><![CDATA[$_SERVER['SERVER_NAME']]]></code>
<code><![CDATA[$_SERVER['SERVER_PORT']]]></code>
</PossiblyUndefinedArrayOffset>
<PossiblyUndefinedVariable>
<code>$address</code>
</PossiblyUndefinedVariable>
<RedundantCastGivenDocblockType>
<code>(int) $port</code>
</RedundantCastGivenDocblockType>
</file>
<file src="src/Ipc/Runner/entry.php">
<MixedArgument>
<code><![CDATA[$GLOBALS['argv']]]></code>
<code>$session</code>
</MixedArgument>
<MixedAssignment>
<code>$session</code>
</MixedAssignment>
<PossiblyInvalidArgument>
<code><![CDATA[$_GET['cwd']]]></code>
<code>$arguments</code>
<code>$arguments</code>
<code>$arguments</code>
</PossiblyInvalidArgument>
<PossiblyInvalidCast>
<code><![CDATA[$_GET['cwd']]]></code>
</PossiblyInvalidCast>
<PossiblyInvalidPropertyAssignmentValue>
<code><![CDATA[$_GET['cwd'] ?? Magic::getcwd()]]></code>
</PossiblyInvalidPropertyAssignmentValue>
<UnevaluatedCode>
<code>exit(1);</code>
<code>exit(1);</code>
<code>exit(1);</code>
</UnevaluatedCode>
<UnresolvableInclude>
<code>include $autoloadPath</code>
</UnresolvableInclude>
</file>
<file src="src/Ipc/Server.php">
<MixedAssignment>
<code>$payload</code>
<code>$payload[1]</code>
<code>$result</code>
</MixedAssignment>
<MixedMethodCall>
<code>disconnect</code>
</MixedMethodCall>
<PropertyNotSetInConstructor>
<code>$callback</code>
<code>$server</code>
<code>$settings</code>
</PropertyNotSetInConstructor>
<TypeDoesNotContainType>
<code>$payload === self::SHUTDOWN</code>
<code>$payload === self::SHUTDOWN</code>
</TypeDoesNotContainType>
</file>
<file src="src/Ipc/ServerCallback.php">
<MissingReturnType>
<code>unwrap</code>
</MissingReturnType>
<PropertyNotSetInConstructor>
<code>ServerCallback</code>
<code>ServerCallback</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/Ipc/Wrapper.php">
<MissingClosureParamType>
<code>$args</code>
</MissingClosureParamType>
<MissingClosureReturnType>
<code><![CDATA[fn (...$args) => $this->__call($id, $args)]]></code>
</MissingClosureReturnType>
<MissingParamType>
<code>$data</code>
</MissingParamType>
<MissingReturnType>
<code>copy</code>
<code>unwrap</code>
</MissingReturnType>
<MixedArrayOffset>
<code><![CDATA[$this->callbacks[$payload[0]]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code><![CDATA[$instance->remoteId]]></code>
<code>$payload</code>
<code>$result</code>
</MixedAssignment>
<MixedPropertyTypeCoercion>
<code><![CDATA[$this->callbacks]]></code>
</MixedPropertyTypeCoercion>
<PropertyNotSetInConstructor>
<code>$data</code>
<code>Wrapper</code>
<code>Wrapper</code>
</PropertyNotSetInConstructor>
<UnsafeInstantiation>
<code>new $class($this, $ids)</code>
</UnsafeInstantiation>
<UnsupportedReferenceUsage>
<code><![CDATA[$this->callbackIds[] = &$callback]]></code>
<code><![CDATA[$this->callbackIds[] = &$callback]]></code>
</UnsupportedReferenceUsage>
<UnusedVariable>
<code>$payload</code>
</UnusedVariable>
</file>
<file src="src/Ipc/Wrapper/Cancellation.php">
<MixedInferredReturnType>
<code>bool</code>
<code>string</code>
</MixedInferredReturnType>
<MixedReturnStatement>
<code><![CDATA[$this->__call('isRequested')]]></code>
<code><![CDATA[$this->__call('unsubscribe', [$callback])]]></code>
</MixedReturnStatement>
</file>
<file src="src/Ipc/Wrapper/ClosableTrait.php">
<MixedInferredReturnType>
<code>bool</code>
</MixedInferredReturnType>
</file>
<file src="src/Ipc/Wrapper/ReadableStream.php">
<MissingTemplateParam>
<code>IteratorAggregate</code>
</MissingTemplateParam>
<MixedInferredReturnType>
<code>?string</code>
<code>bool</code>
</MixedInferredReturnType>
<MixedReturnStatement>
<code><![CDATA[$this->__call('isReadable')]]></code>
<code><![CDATA[$this->__call('read')]]></code>
</MixedReturnStatement>
</file>
<file src="src/Ipc/Wrapper/SeekableTrait.php">
<MixedInferredReturnType>
<code>int</code>
</MixedInferredReturnType>
</file>
<file src="src/Ipc/Wrapper/WritableStream.php">
<MixedInferredReturnType>
<code>bool</code>
</MixedInferredReturnType>
<MixedReturnStatement>
<code><![CDATA[$this->__call('isWritable')]]></code>
</MixedReturnStatement>
</file>
<file src="src/LightState.php">
<InvalidPropertyAssignmentValue>
<code><![CDATA[$API->getEventHandler()::class]]></code>
</InvalidPropertyAssignmentValue>
</file>
<file src="src/Logger.php">
<MixedOperand>
<code>$param</code>
<code><![CDATA[$this->colors[$level]]]></code>
</MixedOperand>
<PossiblyInvalidArgument>
<code>$optional</code>
<code>$optional</code>
<code>$optional</code>
<code>$optional</code>
<code>$optional</code>
<code>$optional</code>
<code>$optional</code>
<code>$optional</code>
<code><![CDATA[$stdout->getResource()]]></code>
<code><![CDATA[$this->mode === self::FILE_LOGGER
? $this->optional
: Magic::$script_cwd.DIRECTORY_SEPARATOR.'MadelineProto.log']]></code>
<code><![CDATA[$this->optional]]></code>
<code><![CDATA[$this->optional]]></code>
<code><![CDATA[$this->stdout->getResource()]]></code>
</PossiblyInvalidArgument>
<PossiblyInvalidCast>
<code>$optional</code>
<code>$optional</code>
<code>$optional</code>
<code>$optional</code>
<code>$optional</code>
<code>$optional</code>
<code>$optional</code>
<code><![CDATA[$this->optional]]></code>
<code><![CDATA[$this->optional]]></code>
</PossiblyInvalidCast>
<PossiblyInvalidOperand>
<code>$optional</code>
</PossiblyInvalidOperand>
<PossiblyNullFunctionCall>
<code><![CDATA[\call_user_func_array($this->optional, [$param, $level])]]></code>
</PossiblyNullFunctionCall>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[\debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0]['file']]]></code>
<code><![CDATA[\debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0]['file']]]></code>
</PossiblyUndefinedArrayOffset>
<PropertyNotSetInConstructor>
<code>$colors</code>
<code>$stdout</code>
</PropertyNotSetInConstructor>
<UninitializedProperty>
<code><![CDATA[$this->colors]]></code>
<code><![CDATA[$this->colors]]></code>
<code><![CDATA[$this->colors]]></code>
<code><![CDATA[$this->colors]]></code>
<code><![CDATA[$this->colors]]></code>
<code><![CDATA[$this->colors]]></code>
<code><![CDATA[$this->colors]]></code>
<code><![CDATA[$this->colors]]></code>
</UninitializedProperty>
</file>
<file src="src/Loop/Connection/CheckLoop.php">
<MixedArgument>
<code>$message_id</code>
<code>$message_id</code>
<code><![CDATA[$result['info']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$result['info']]]></code>
</MixedArrayAccess>
<MixedArrayOffset>
<code><![CDATA[$this->connection->new_outgoing[$message_id]]]></code>
<code><![CDATA[$this->connection->outgoing_messages[$message_id]]]></code>
<code><![CDATA[$this->connection->outgoing_messages[$message_id]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$message_id</code>
<code>$message_id</code>
<code>$reply[]</code>
<code>$reply[]</code>
<code>$reply[]</code>
</MixedAssignment>
<PossiblyNullArgument>
<code><![CDATA[$message->getMsgId()]]></code>
</PossiblyNullArgument>
<PossiblyNullOperand>
<code><![CDATA[$message->getSent()]]></code>
<code><![CDATA[$message->getSent()]]></code>
</PossiblyNullOperand>
<PossiblyNullPropertyFetch>
<code><![CDATA[$this->API->settings]]></code>
</PossiblyNullPropertyFetch>
<PossiblyNullReference>
<code>getRpc</code>
</PossiblyNullReference>
<PropertyNotSetInConstructor>
<code>CheckLoop</code>
<code>CheckLoop</code>
<code>CheckLoop</code>
<code>CheckLoop</code>
<code>CheckLoop</code>
</PropertyNotSetInConstructor>
<UninitializedProperty>
<code><![CDATA[$this->API]]></code>
</UninitializedProperty>
<UnusedVariable>
<code>$message_id</code>
<code>$reply</code>
</UnusedVariable>
</file>
<file src="src/Loop/Connection/CleanupLoop.php">
<PropertyNotSetInConstructor>
<code>CleanupLoop</code>
<code>CleanupLoop</code>
<code>CleanupLoop</code>
<code>CleanupLoop</code>
<code>CleanupLoop</code>
</PropertyNotSetInConstructor>
<RedundantCondition>
<code><![CDATA[$this->connection->msgIdHandler?->cleanup()]]></code>
</RedundantCondition>
<TypeDoesNotContainNull>
<code><![CDATA[$this->connection->msgIdHandler]]></code>
</TypeDoesNotContainNull>
</file>
<file src="src/Loop/Connection/HttpWaitLoop.php">
<PropertyNotSetInConstructor>
<code>HttpWaitLoop</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/Loop/Connection/PingLoop.php">
<PossiblyNullReference>
<code>getSettings</code>
</PossiblyNullReference>
<PropertyNotSetInConstructor>
<code>PingLoop</code>
<code>PingLoop</code>
<code>PingLoop</code>
<code>PingLoop</code>
</PropertyNotSetInConstructor>
<UninitializedProperty>
<code><![CDATA[$this->shared]]></code>
</UninitializedProperty>
</file>
<file src="src/Loop/Connection/ReadLoop.php">
<MixedArgument>
<code>$aes_iv</code>
<code>$aes_key</code>
<code>$deserialized</code>
<code>$message_data_length</code>
<code>$message_length</code>
<code>$seq_no</code>
</MixedArgument>
<MixedAssignment>
<code>$deserialized</code>
<code>$message_data_length</code>
<code>$message_length</code>
<code>$seq_no</code>
</MixedAssignment>
<MixedOperand>
<code>$message_data_length</code>
<code>$message_data_length</code>
<code>$message_data_length</code>
</MixedOperand>
<PossiblyNullArgument>
<code><![CDATA[$buffer->bufferRead($payload_length)]]></code>
<code><![CDATA[$buffer->bufferRead(4)]]></code>
<code><![CDATA[$buffer->bufferRead(4)]]></code>
<code><![CDATA[$buffer->bufferRead(8)]]></code>
<code>$message_data</code>
<code>$message_data</code>
<code>$message_key</code>
</PossiblyNullArgument>
<PossiblyNullOperand>
<code>$payload_length</code>
<code>$payload_length</code>
</PossiblyNullOperand>
<PossiblyNullReference>
<code>getReadBuffer</code>
</PossiblyNullReference>
<PropertyNotSetInConstructor>
<code>ReadLoop</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/Loop/Connection/WriteLoop.php">
<MixedArgument>
<code><![CDATA[$MTmessage['body']]]></code>
<code><![CDATA[$MTmessage['seqno']]]></code>
<code>$aes_iv</code>
<code>$aes_key</code>
<code>$body</code>
<code>$body</code>
<code>$message_data</code>
<code><![CDATA[$this->connection->call_queue[$queueId]]]></code>
<code><![CDATA[$this->connection->call_queue[$queueId]]]></code>
<code><![CDATA[$this->connection->call_queue[$queueId]]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$this->connection->call_queue[$queueId][$key]]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$this->connection->call_queue[$queueId][$message_id]]]></code>
</MixedArrayAssignment>
<MixedArrayTypeCoercion>
<code><![CDATA[$this->connection->call_queue[$queueId][$key]]]></code>
</MixedArrayTypeCoercion>
<MixedAssignment>
<code><![CDATA[$MTmessage['body']]]></code>
<code><![CDATA[$MTmessage['body']]]></code>
<code>$body</code>
<code>$body</code>
<code>$message_data</code>
<code>$message_data</code>
<code>$seq_no</code>
<code>$seq_no</code>
</MixedAssignment>
<MixedOperand>
<code>$message_data</code>
</MixedOperand>
<PossiblyNullArgument>
<code><![CDATA[$MTmessage['body']]]></code>
<code><![CDATA[$message->getSerializedBody()]]></code>
<code><![CDATA[$message->getSerializedBody()]]></code>
</PossiblyNullArgument>
<PossiblyNullArrayOffset>
<code><![CDATA[$this->connection->call_queue]]></code>
<code><![CDATA[$this->connection->call_queue]]></code>
</PossiblyNullArrayOffset>
<PossiblyNullOperand>
<code><![CDATA[$message->getSerializedBody()]]></code>
<code><![CDATA[$this->connection->session_id]]></code>
</PossiblyNullOperand>
<PossiblyNullReference>
<code>getWriteBuffer</code>
<code>getWriteBuffer</code>
</PossiblyNullReference>
<PossiblyUndefinedArrayOffset>
<code>$messages[0]</code>
</PossiblyUndefinedArrayOffset>
<PropertyNotSetInConstructor>
<code>WriteLoop</code>
</PropertyNotSetInConstructor>
<TypeDoesNotContainType>
<code><![CDATA[$this->shared->isHttp() && empty($this->connection->pendingOutgoing)]]></code>
</TypeDoesNotContainType>
<UnusedVariable>
<code>$MTmessage</code>
</UnusedVariable>
</file>
<file src="src/Loop/Generic/PeriodicLoopInternal.php">
<MissingClosureReturnType>
<code><![CDATA[fn () => $callable()]]></code>
</MissingClosureReturnType>
<MixedArgumentTypeCoercion>
<code><![CDATA[fn () => $callable()]]></code>
</MixedArgumentTypeCoercion>
</file>
<file src="src/Loop/Update/FeedLoop.php">
<MissingClosureParamType>
<code>$msg</code>
</MissingClosureParamType>
<MissingParamType>
<code>$messages</code>
<code>$update</code>
</MissingParamType>
<MissingReturnType>
<code>feed</code>
<code>feedSingle</code>
</MissingReturnType>
<MixedArgument>
<code>$channelId</code>
<code>$channelId</code>
<code>$message</code>
<code>$update</code>
<code>$update</code>
<code>$update</code>
<code><![CDATA[$update['message']['entities']]]></code>
<code><![CDATA[$update['pts']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$update['_']]]></code>
<code><![CDATA[$update['message']]]></code>
<code><![CDATA[$update['message']['_']]]></code>
<code><![CDATA[$update['message']['id']]]></code>
<code><![CDATA[$update['message']['peer_id']['channel_id']]]></code>
<code><![CDATA[$update['pts']]]></code>
<code><![CDATA[$update['pts_count']]]></code>
</MixedArrayAccess>
<MixedArrayOffset>
<code><![CDATA[$result[$this->feedSingle($update)]]]></code>
<code><![CDATA[$this->API->feeders[$channelId]]]></code>
</MixedArrayOffset>
<MixedArrayTypeCoercion>
<code><![CDATA[$this->API->feeders[$channelId]]]></code>
</MixedArrayTypeCoercion>
<MixedAssignment>
<code>$channelId</code>
<code>$channelId</code>
<code>$channelId</code>
<code>$computed</code>
<code>$message</code>
<code>$mid</code>
<code>$pts_count</code>
<code><![CDATA[$this->state]]></code>
<code>$update</code>
<code>$update</code>
<code>$update</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$message['_']]]></code>
<code>$pts_count</code>
<code><![CDATA[$update['_']]]></code>
</MixedOperand>
<PossiblyInvalidArgument>
<code><![CDATA[$update['message']]]></code>
</PossiblyInvalidArgument>
<PropertyNotSetInConstructor>
<code>$state</code>
<code>$updater</code>
<code>FeedLoop</code>
</PropertyNotSetInConstructor>
<UnusedVariable>
<code>$from</code>
<code>$parsedUpdates</code>
<code>$updates</code>
</UnusedVariable>
</file>
<file src="src/Loop/Update/SecretFeedLoop.php">
<MixedArgument>
<code>$update</code>
</MixedArgument>
<MixedAssignment>
<code>$update</code>
</MixedAssignment>
<PropertyNotSetInConstructor>
<code>SecretFeedLoop</code>
</PropertyNotSetInConstructor>
<UnusedVariable>
<code>$updates</code>
</UnusedVariable>
</file>
<file src="src/Loop/Update/SeqLoop.php">
<MixedArgument>
<code><![CDATA[$options['date']]]></code>
<code>$seq_end</code>
<code>$seq_start</code>
<code>$update</code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$options['date']]]></code>
<code><![CDATA[$options['seq_end']]]></code>
<code><![CDATA[$options['seq_start']]]></code>
<code><![CDATA[$update['options']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code>$options</code>
<code>$seq_end</code>
<code>$seq_start</code>
<code><![CDATA[$this->pendingWakeups]]></code>
<code><![CDATA[$this->state]]></code>
<code>$update</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$this->feeder->feed($updates['updates'])]]></code>
<code><![CDATA[$updates['_']]]></code>
</MixedOperand>
<PossiblyNullReference>
<code>checkSeq</code>
<code>feed</code>
</PossiblyNullReference>
<UnusedVariable>
<code>$options</code>
<code>$updates</code>
</UnusedVariable>
</file>
<file src="src/Loop/Update/UpdateLoop.php">
<DocblockTypeContradiction>
<code><![CDATA[$this->API->feeders[$channelId]]]></code>
</DocblockTypeContradiction>
<MixedArgument>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code><![CDATA[$difference['intermediate_state']]]></code>
<code><![CDATA[$difference['intermediate_state']['qts']]]></code>
<code><![CDATA[$difference['new_encrypted_messages']]]></code>
<code><![CDATA[$difference['new_encrypted_messages']]]></code>
<code><![CDATA[$difference['other_updates']]]></code>
<code><![CDATA[$difference['other_updates']]]></code>
<code><![CDATA[$difference['other_updates']]]></code>
<code><![CDATA[$difference['state']]]></code>
<code><![CDATA[$difference['state']['qts']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$difference['_']]]></code>
<code><![CDATA[$difference['_']]]></code>
<code><![CDATA[$difference['_']]]></code>
<code><![CDATA[$difference['_']]]></code>
<code><![CDATA[$difference['dialog']]]></code>
<code><![CDATA[$difference['dialog']['pts']]]></code>
<code><![CDATA[$difference['intermediate_state']]]></code>
<code><![CDATA[$difference['intermediate_state']]]></code>
<code><![CDATA[$difference['intermediate_state']]]></code>
<code><![CDATA[$difference['intermediate_state']['pts']]]></code>
<code><![CDATA[$difference['intermediate_state']['qts']]]></code>
<code><![CDATA[$difference['new_encrypted_messages']]]></code>
<code><![CDATA[$difference['new_encrypted_messages']]]></code>
<code><![CDATA[$difference['new_encrypted_messages']]]></code>
<code><![CDATA[$difference['new_encrypted_messages']]]></code>
<code><![CDATA[$difference['new_messages']]]></code>
<code><![CDATA[$difference['new_messages']]]></code>
<code><![CDATA[$difference['other_updates']]]></code>
<code><![CDATA[$difference['other_updates']]]></code>
<code><![CDATA[$difference['other_updates']]]></code>
<code><![CDATA[$difference['pts']]]></code>
<code><![CDATA[$difference['pts']]]></code>
<code><![CDATA[$difference['state']]]></code>
<code><![CDATA[$difference['state']]]></code>
<code><![CDATA[$difference['state']['qts']]]></code>
<code><![CDATA[$difference['timeout']]]></code>
<code><![CDATA[$this->API->authorization['user']['bot']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$difference['pts']]]></code>
<code><![CDATA[$difference['pts']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$this->API->feeders[$channelId]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$channelId</code>
<code>$difference</code>
<code>$difference</code>
<code><![CDATA[$difference['pts']]]></code>
<code><![CDATA[$difference['pts']]]></code>
<code>$encrypted</code>
<code>$encrypted</code>
<code>$request_pts</code>
<code>$result</code>
<code>$result</code>
<code>$result</code>
<code>$result</code>
<code>$result</code>
<code>$state</code>
<code>$timeout</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>?float</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>date</code>
<code>pts</code>
<code>pts</code>
<code>pts</code>
<code>pts</code>
<code>pts</code>
<code>qts</code>
<code>qts</code>
<code>qts</code>
<code>update</code>
<code>update</code>
<code>update</code>
<code>update</code>
<code>update</code>
<code>update</code>
<code>update</code>
</MixedMethodCall>
<MixedOperand>
<code><![CDATA[$difference['_']]]></code>
<code><![CDATA[$difference['_']]]></code>
<code>$request_pts</code>
<code>$result</code>
<code>$result</code>
<code><![CDATA[$state->pts()]]></code>
<code><![CDATA[$state->pts()]]></code>
<code><![CDATA[$state->pts() + 1]]></code>
<code><![CDATA[$this->feeder->feed($difference['other_updates'])]]></code>
<code><![CDATA[$this->feeder->feed($difference['other_updates'])]]></code>
<code><![CDATA[$this->feeder->feed($difference['other_updates'])]]></code>
</MixedOperand>
<MixedReturnStatement>
<code>$timeout</code>
<code>$timeout</code>
</MixedReturnStatement>
<PossiblyInvalidMethodCall>
<code>date</code>
<code>pts</code>
<code>pts</code>
<code>pts</code>
<code>pts</code>
<code>pts</code>
<code>qts</code>
<code>qts</code>
<code>qts</code>
<code>update</code>
<code>update</code>
<code>update</code>
<code>update</code>
<code>update</code>
<code>update</code>
<code>update</code>
</PossiblyInvalidMethodCall>
<PossiblyNullArrayAccess>
<code><![CDATA[$this->API->authorization['user']]]></code>
<code><![CDATA[$this->API->authorization['user']['bot']]]></code>
</PossiblyNullArrayAccess>
<PossiblyUndefinedVariable>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
<code>$difference</code>
</PossiblyUndefinedVariable>
<PropertyNotSetInConstructor>
<code>$feeder</code>
<code>UpdateLoop</code>
</PropertyNotSetInConstructor>
<RedundantConditionGivenDocblockType>
<code><![CDATA[$this->API->feeders[$channelId]?->resume()]]></code>
</RedundantConditionGivenDocblockType>
</file>
<file src="src/MTProto.php">
<DocblockTypeContradiction>
<code><![CDATA[\is_object($this->datacenter)]]></code>
<code><![CDATA[isset($this->TL)]]></code>
<code><![CDATA[isset($this->settings)]]></code>
<code><![CDATA[isset($this->settings)]]></code>
<code><![CDATA[new DataCenter($this, $this->dcList, $this->settings->getConnection())]]></code>
</DocblockTypeContradiction>
<InvalidArgument>
<code>$callbacks</code>
<code>$callbacks</code>
</InvalidArgument>
<InvalidReturnStatement>
<code><![CDATA[\array_merge(
\array_fill_keys(
[
'InputUser',
'InputChannel',
],
$this->getInputConstructor(...),
),
\array_fill_keys(
[
'User',
'Chat',
'Peer',
'InputDialogPeer',
'InputNotifyPeer',
],
$this->getInfo(...),
),
\array_fill_keys(
[
'InputMedia',
'InputDocument',
'InputPhoto',
],
$this->getFileInfo(...),
),
[
'InputFileLocation' => $this->getDownloadInfo(...),
'InputPeer' => $this->getInputPeer(...),
'InputCheckPasswordSRP' => function (string $password): array {
return (new PasswordCalculator($this->methodCallAsyncRead('account.getPassword', [])))->getCheckPassword($password);
},
],
)]]></code>
</InvalidReturnStatement>
<InvalidReturnType>
<code>array</code>
</InvalidReturnType>
<MissingReturnType>
<code>serializeSession</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[$chat['username']]]></code>
<code><![CDATA[$curkey['public_key']]]></code>
<code>$key</code>
<code>$key</code>
<code>$key</code>
<code>$key</code>
<code><![CDATA[$nearest_dc['country']]]></code>
<code><![CDATA[$nearest_dc['nearest_dc']]]></code>
<code>$options</code>
<code><![CDATA[$this->TL]]></code>
<code><![CDATA[$this->TL]]></code>
<code><![CDATA[$this->datacenter->currentDatacenter]]></code>
<code><![CDATA[$this->methodCallAsyncRead('account.getPassword', [])]]></code>
<code><![CDATA[$this->methodCallAsyncRead('phone.getCallConfig', [])]]></code>
<code><![CDATA[$this->settings]]></code>
<code><![CDATA[$this->settings->getIpc()]]></code>
<code><![CDATA[$this->settings->getSchema()]]></code>
<code><![CDATA[$this->settings->getSerialization()->applyChanges()->getInterval()]]></code>
<code>$username</code>
<code><![CDATA[Lang::$current_lang['extensionRecommended']]]></code>
<code><![CDATA[Lang::$current_lang['extensionRecommended']]]></code>
<code><![CDATA[Lang::$current_lang['nearest_dc']]]></code>
<code><![CDATA[Lang::$current_lang['noReportPeers']]]></code>
<code><![CDATA[Lang::$current_lang['update_madelineproto']]]></code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code>$callbacks</code>
<code>$callbacks</code>
<code>$id</code>
<code><![CDATA[$this->referenceDatabase->init(...)]]></code>
</MixedArgumentTypeCoercion>
<MixedArrayAccess>
<code><![CDATA[$chat['username']]]></code>
<code><![CDATA[$chat['usernames']]]></code>
<code><![CDATA[$curkey['public_key']]]></code>
<code><![CDATA[$dc['id']]]></code>
<code><![CDATA[$dc['id']]]></code>
<code><![CDATA[$dc['ipv6']]]></code>
<code><![CDATA[$dc['ipv6']]]></code>
<code><![CDATA[$dc['media_only']]]></code>
<code><![CDATA[$dc['media_only']]]></code>
<code><![CDATA[$dc['static']]]></code>
<code><![CDATA[$method['method']]]></code>
<code><![CDATA[$nearest_dc['country']]]></code>
<code><![CDATA[$nearest_dc['nearest_dc']]]></code>
<code><![CDATA[$nearest_dc['nearest_dc']]]></code>
<code><![CDATA[$nearest_dc['nearest_dc']]]></code>
<code><![CDATA[$nearest_dc['this_dc']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['InputEncryptedChat']]]></code>
<code>$username</code>
<code><![CDATA[$value['_']]]></code>
<code><![CDATA[$value['access_hash']]]></code>
<code><![CDATA[$value['id']]]></code>
<code><![CDATA[$value['min']]]></code>
<code><![CDATA[($this->methodCallAsyncRead('help.getCdnConfig', [], ['datacenter' => $this->authorized_dc]))['public_keys']]]></code>
<code><![CDATA[($this->methodCallAsyncRead('users.getUsers', ['id' => [['_' => 'inputUserSelf']]]))[0]]]></code>
</MixedArrayAccess>
<MixedArrayOffset>
<code>$new[$test][$ipv6][$id]</code>
</MixedArrayOffset>
<MixedAssignment>
<code>$callbacks []</code>
<code>$chat</code>
<code>$chat</code>
<code>$controller</code>
<code>$curkey</code>
<code>$data</code>
<code>$dc</code>
<code>$file</code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code>$key</code>
<code>$key</code>
<code>$key</code>
<code>$lock</code>
<code>$method</code>
<code>$methods[]</code>
<code>$nearest_dc</code>
<code>$new[$test][$ipv6][$id]</code>
<code>$new_dc</code>
<code>$options</code>
<code>$selfBot</code>
<code><![CDATA[$this->callCheckerLoop]]></code>
<code><![CDATA[$this->config]]></code>
<code><![CDATA[$this->configLoop]]></code>
<code><![CDATA[$this->datacenter]]></code>
<code><![CDATA[$this->phoneConfigLoop]]></code>
<code><![CDATA[$this->referenceDatabase]]></code>
<code><![CDATA[$this->reportMutex]]></code>
<code><![CDATA[$this->serializeLoop]]></code>
<code>$value</code>
<code>Lang::$current_lang</code>
<code><![CDATA[['username' => $username]]]></code>
</MixedAssignment>
<MixedInferredReturnType>
<code>array</code>
<code>array|false</code>
<code>bool</code>
<code>bool</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>acquire</code>
<code>applyChanges</code>
<code>applyChanges</code>
<code>applyChanges</code>
<code>applyChanges</code>
<code>discard</code>
<code>getAppInfo</code>
<code>getAuth</code>
<code>getCallState</code>
<code>getConnection</code>
<code>getConnection</code>
<code>getConnection</code>
<code>getDataCenterConnection</code>
<code>getDb</code>
<code>getDb</code>
<code>getDb</code>
<code>getDb</code>
<code>getEnableFileReferenceDb</code>
<code>getEnableMinDb</code>
<code>getInterval</code>
<code>getIpc</code>
<code>getIpc</code>
<code>getIpc</code>
<code>getLogger</code>
<code>getRSAKeys</code>
<code>getSchema</code>
<code>getSchema</code>
<code>getSchema</code>
<code>getSchema</code>
<code>getSchema</code>
<code>getSerialization</code>
<code>getSerialization</code>
<code>getTestRSAKeys</code>
<code>hasApiInfo</code>
<code>hasChanged</code>
<code>hasChanged</code>
<code>hasChanged</code>
<code>hasChanged</code>
<code>hasChanged</code>
<code>hasChanged</code>
<code>hasChanged</code>
<code>hasTempAuthKey</code>
<code>init</code>
<code>init</code>
<code>merge</code>
<code>needsUpgrade</code>
<code>needsUpgrade</code>
<code>needsUpgrade</code>
<code>release</code>
<code>resume</code>
<code>setMadeline</code>
<code>setMadeline</code>
<code>setSettings</code>
<code>start</code>
<code>start</code>
<code>start</code>
<code>start</code>
<code>start</code>
<code>stop</code>
</MixedMethodCall>
<MixedOperand>
<code>$id</code>
<code><![CDATA[Lang::$current_lang['noReportPeers']]]></code>
</MixedOperand>
<MixedPropertyAssignment>
<code><![CDATA[$this->datacenter]]></code>
<code><![CDATA[$this->datacenter]]></code>
</MixedPropertyAssignment>
<MixedPropertyFetch>
<code><![CDATA[$this->datacenter->currentDatacenter]]></code>
</MixedPropertyFetch>
<MixedReturnStatement>
<code><![CDATA[$this->authorization['user'] ?? false]]></code>
<code><![CDATA[$this->authorization['user'] ?? false]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->config]]></code>
<code><![CDATA[$this->config]]></code>
<code><![CDATA[$this->getSelf()['premium']]]></code>
</MixedReturnStatement>
<MixedReturnTypeCoercion>
<code><![CDATA[$this->cdn_rsa_keys]]></code>
<code><![CDATA[array<RSA>]]></code>
</MixedReturnTypeCoercion>
<NullableReturnStatement>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
</NullableReturnStatement>
<PossibleRawObjectIteration>
<code><![CDATA[$this->channels_state->get()]]></code>
<code><![CDATA[$this->channels_state->get()]]></code>
<code><![CDATA[$this->channels_state->get()]]></code>
<code><![CDATA[$this->channels_state->get()]]></code>
</PossibleRawObjectIteration>
<PossiblyInvalidArgument>
<code>$path</code>
</PossiblyInvalidArgument>
<PossiblyInvalidArrayAccess>
<code><![CDATA[$this->getSelf()['bot']]]></code>
<code><![CDATA[$this->getSelf()['premium']]]></code>
</PossiblyInvalidArrayAccess>
<PossiblyInvalidCast>
<code>$path</code>
</PossiblyInvalidCast>
<PossiblyNullArrayAccess>
<code><![CDATA[$this->authorization['hint']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
</PossiblyNullArrayAccess>
<PossiblyNullReference>
<code>logger</code>
<code>start</code>
<code>start</code>
</PossiblyNullReference>
<PropertyNotSetInConstructor>
<code>$channelParticipants</code>
<code>$chats</code>
<code>$full_chats</code>
<code>$logger</code>
<code>$minDatabase</code>
<code>$session</code>
<code>$snitch</code>
<code>$usernames</code>
<code>$wrapper</code>
<code>MTProto</code>
</PropertyNotSetInConstructor>
<PropertyTypeCoercion>
<code><![CDATA[$this->sanitizeReportPeers($userOrId)]]></code>
</PropertyTypeCoercion>
<RawObjectIteration>
<code><![CDATA[$this->chats]]></code>
<code><![CDATA[$this->chats]]></code>
</RawObjectIteration>
<RedundantCondition>
<code><![CDATA[$this->minDatabase?->sync()]]></code>
<code><![CDATA[isset($this->wrapper) && $this->isInited()]]></code>
</RedundantCondition>
<RedundantConditionGivenDocblockType>
<code><![CDATA[$this->authorized === API::LOGGED_IN && \is_int($dc_id)]]></code>
<code><![CDATA[$this->datacenter]]></code>
<code>\is_int($dc_id)</code>
<code><![CDATA[isset($this->datacenter)]]></code>
</RedundantConditionGivenDocblockType>
<TypeDoesNotContainNull>
<code><![CDATA[$this->minDatabase]]></code>
</TypeDoesNotContainNull>
<UnsupportedReferenceUsage>
<code><![CDATA[Lang::$current_lang =& Lang::$lang[$this->settings->getAppInfo()->getLangCode()]]]></code>
</UnsupportedReferenceUsage>
<UnusedForeachValue>
<code>$chat</code>
<code>$data</code>
</UnusedForeachValue>
<UnusedFunctionCall>
<code>\memprof_dump_pprof</code>
</UnusedFunctionCall>
<UnusedVariable>
<code>$callbacks</code>
<code>Lang::$current_lang</code>
</UnusedVariable>
</file>
<file src="src/MTProto/AuthKey.php">
<MixedArgument>
<code><![CDATA[$old['auth_key']]]></code>
<code><![CDATA[$old['auth_key']]]></code>
<code><![CDATA[$old['auth_key']]]></code>
<code><![CDATA[$old['authkey']]]></code>
<code><![CDATA[$old['server_salt']]]></code>
</MixedArgument>
</file>
<file src="src/MTProto/MTProtoIncomingMessage.php">
<MixedArrayOffset>
<code><![CDATA[MTProtoMessage::NOT_CONTENT_RELATED[$content['_']]]]></code>
<code><![CDATA[self::RESPONSE_ID_MAP[$this->content['_']]]]></code>
</MixedArrayOffset>
<MixedInferredReturnType>
<code>int</code>
<code>string</code>
</MixedInferredReturnType>
<MixedReturnStatement>
<code><![CDATA[$this->content['_']]]></code>
<code><![CDATA[$this->content[self::RESPONSE_ID_MAP[$this->content['_']]]]]></code>
</MixedReturnStatement>
</file>
<file src="src/MTProto/MTProtoOutgoingMessage.php">
<MissingReturnType>
<code>getBody</code>
</MissingReturnType>
<MixedPropertyTypeCoercion>
<code>new DeferredFuture</code>
</MixedPropertyTypeCoercion>
<PossiblyInvalidPropertyAssignmentValue>
<code><![CDATA[$this->state |= self::STATE_ACKED]]></code>
<code><![CDATA[$this->state |= self::STATE_REPLIED]]></code>
<code><![CDATA[$this->state |= self::STATE_SENT]]></code>
</PossiblyInvalidPropertyAssignmentValue>
<PossiblyNullOperand>
<code><![CDATA[$this->sent]]></code>
</PossiblyNullOperand>
</file>
<file src="src/MTProto/PermAuthKey.php">
<MixedArgument>
<code><![CDATA[$old['authorized']]]></code>
</MixedArgument>
<PossiblyNullArgument>
<code><![CDATA[$this->authKey]]></code>
</PossiblyNullArgument>
</file>
<file src="src/MTProto/TempAuthKey.php">
<MixedArgument>
<code><![CDATA[$old['connection_inited']]]></code>
<code><![CDATA[$old['expires']]]></code>
</MixedArgument>
<PossiblyNullArgument>
<code><![CDATA[$this->authKey]]></code>
</PossiblyNullArgument>
<PossiblyNullReference>
<code>authorized</code>
</PossiblyNullReference>
<UnsupportedReferenceUsage>
<code><![CDATA[$this->{$key} =& $bound->{$key}]]></code>
</UnsupportedReferenceUsage>
</file>
<file src="src/MTProtoSession/AckHandler.php">
<PossiblyNullArrayOffset>
<code><![CDATA[$this->ack_queue]]></code>
<code><![CDATA[$this->new_outgoing]]></code>
</PossiblyNullArrayOffset>
<PossiblyNullOperand>
<code><![CDATA[$message->getSent()]]></code>
<code><![CDATA[$message->getSent()]]></code>
<code><![CDATA[$message->getSent()]]></code>
</PossiblyNullOperand>
<UnnecessaryVarAnnotation>
<code>MTProtoOutgoingMessage</code>
<code>MTProtoOutgoingMessage</code>
</UnnecessaryVarAnnotation>
</file>
<file src="src/MTProtoSession/AuthKeyHandler.php">
<MixedArgument>
<code><![CDATA[$ResPQ['server_public_key_fingerprints']]]></code>
<code>$data</code>
<code>$encrypted_answer</code>
<code>$p</code>
<code>$p_q_inner_data</code>
<code>$p_q_inner_data</code>
<code>$pq_bytes</code>
<code>$q</code>
<code><![CDATA[$server_DH_inner_data['g']]]></code>
<code>$server_nonce</code>
<code><![CDATA[$this->time_delta]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$ResPQ['nonce']]]></code>
<code><![CDATA[$ResPQ['pq']]]></code>
<code><![CDATA[$ResPQ['server_nonce']]]></code>
<code><![CDATA[$ResPQ['server_public_key_fingerprints']]]></code>
<code><![CDATA[$Set_client_DH_params_answer['_']]]></code>
<code><![CDATA[$Set_client_DH_params_answer['new_nonce_hash1']]]></code>
<code><![CDATA[$Set_client_DH_params_answer['new_nonce_hash2']]]></code>
<code><![CDATA[$Set_client_DH_params_answer['new_nonce_hash3']]]></code>
<code><![CDATA[$Set_client_DH_params_answer['nonce']]]></code>
<code><![CDATA[$Set_client_DH_params_answer['server_nonce']]]></code>
<code><![CDATA[$server_DH_inner_data['dh_prime']]]></code>
<code><![CDATA[$server_DH_inner_data['g']]]></code>
<code><![CDATA[$server_DH_inner_data['g_a']]]></code>
<code><![CDATA[$server_DH_inner_data['nonce']]]></code>
<code><![CDATA[$server_DH_inner_data['server_nonce']]]></code>
<code><![CDATA[$server_DH_inner_data['server_time']]]></code>
<code><![CDATA[$server_dh_params['encrypted_answer']]]></code>
<code><![CDATA[$server_dh_params['nonce']]]></code>
<code><![CDATA[$server_dh_params['server_nonce']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code>$ResPQ</code>
<code>$Set_client_DH_params_answer</code>
<code>$data</code>
<code>$encrypted_answer</code>
<code>$encrypted_data</code>
<code>$p</code>
<code>$p</code>
<code>$p_q_inner_data</code>
<code>$pq_bytes</code>
<code>$q</code>
<code>$q</code>
<code>$server_DH_inner_data</code>
<code>$server_dh_params</code>
<code>$server_nonce</code>
<code>$server_time</code>
<code><![CDATA[$this->time_delta]]></code>
</MixedAssignment>
<MixedMethodCall>
<code>encrypt</code>
</MixedMethodCall>
<MixedOperand>
<code>$data</code>
<code>$p</code>
<code>$p</code>
<code>$p</code>
<code>$p*$q</code>
<code>$p_q_inner_data</code>
<code>$q</code>
<code>$q</code>
<code>$server_nonce</code>
<code>$server_nonce</code>
<code>$server_nonce</code>
<code>$server_time</code>
</MixedOperand>
<MixedPropertyFetch>
<code><![CDATA[$key->fp]]></code>
</MixedPropertyFetch>
<PossiblyUndefinedMethod>
<code>expires</code>
</PossiblyUndefinedMethod>
<UnevaluatedCode>
<code>break;</code>
</UnevaluatedCode>
<UnnecessaryVarAnnotation>
<code>string</code>
</UnnecessaryVarAnnotation>
</file>
<file src="src/MTProtoSession/CallHandler.php">
<MissingClosureReturnType>
<code><![CDATA[fn (WrappedFuture $f) => $f->await()]]></code>
</MissingClosureReturnType>
<MissingReturnType>
<code>methodCallAsyncRead</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[$aargs['FloodWaitLimit']]]></code>
<code><![CDATA[$aargs['cancellation'] ?? null]]></code>
<code><![CDATA[$aargs['msg_id']]]></code>
<code><![CDATA[$aargs['promise'] ?? null]]></code>
<code><![CDATA[$aargs['queue']]]></code>
<code><![CDATA[$methodInfo['type']]]></code>
<code><![CDATA[$this->API->parseMode($args)['message']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$methodInfo['type']]]></code>
</MixedArrayAccess>
<MixedArrayOffset>
<code><![CDATA[$this->outgoing_messages[$message_id]]]></code>
<code><![CDATA[$this->outgoing_messages[$message_id]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code><![CDATA[$aargs['datacenter']]]></code>
<code><![CDATA[$aargs['postpone']]]></code>
<code><![CDATA[$aargs['postpone']]]></code>
<code>$message_id</code>
<code>$methodInfo</code>
<code>$single_args</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>WrappedFuture</code>
</MixedInferredReturnType>
<MixedOperand>
<code><![CDATA[$this->outgoing_messages[$message_id] ?? $message_id]]></code>
</MixedOperand>
<PossiblyNullReference>
<code>resume</code>
<code>resume</code>
</PossiblyNullReference>
<UnnecessaryVarAnnotation>
<code>MTProtoOutgoingMessage</code>
<code>MTProtoOutgoingMessage</code>
</UnnecessaryVarAnnotation>
<UnusedVariable>
<code>$promises</code>
</UnusedVariable>
</file>
<file src="src/MTProtoSession/MsgIdHandler.php">
<MissingReturnType>
<code>getMaxId</code>
</MissingReturnType>
</file>
<file src="src/MTProtoSession/Reliable.php">
<MixedArgument>
<code><![CDATA[$content['info'][$key]]]></code>
<code><![CDATA[$content['msg_ids']]]></code>
<code><![CDATA[$content['msg_ids']]]></code>
<code>$msg_id</code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$content['info'][$key]]]></code>
</MixedArrayAccess>
<MixedArrayOffset>
<code><![CDATA[$content['info'][$key]]]></code>
<code><![CDATA[$this->incoming_messages[$content['answer_msg_id']]]]></code>
<code><![CDATA[$this->incoming_messages[$content['answer_msg_id']]]]></code>
<code><![CDATA[$this->incoming_messages[$msg_id]]]></code>
<code><![CDATA[$this->incoming_messages[$msg_id]]]></code>
<code><![CDATA[$this->outgoing_messages[$content['msg_id']]]]></code>
<code><![CDATA[$this->outgoing_messages[$msg_id]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$key</code>
<code>$msg_id</code>
<code>$msg_id</code>
<code>$msg_id</code>
<code>$msg_id</code>
<code>$shifted</code>
</MixedAssignment>
<MixedOperand>
<code>$msg_id</code>
<code>$msg_id</code>
</MixedOperand>
</file>
<file src="src/MTProtoSession/ResponseHandler.php">
<MissingClosureReturnType>
<code><![CDATA[fn () => $e]]></code>
</MissingClosureReturnType>
<MixedArgument>
<code><![CDATA[$content['orig_message']]]></code>
<code><![CDATA[$message->getContent()['_']]]></code>
<code><![CDATA[$message->read()['msg_ids']]]></code>
<code><![CDATA[$message->read()['server_salt']]]></code>
<code><![CDATA[$message['body']]]></code>
<code><![CDATA[$message['msg_id']]]></code>
<code><![CDATA[$message['msg_id']]]></code>
<code><![CDATA[$message['seqno']]]></code>
<code><![CDATA[$message['sideEffects']]]></code>
<code>$msg_id</code>
<code>$referencedMsgId</code>
<code>$response</code>
<code>$response</code>
<code><![CDATA[$response['_']]]></code>
<code><![CDATA[$response['error_code']]]></code>
<code><![CDATA[$response['error_code']]]></code>
<code><![CDATA[$response['error_code']]]></code>
<code><![CDATA[$response['error_code']]]></code>
<code><![CDATA[$response['error_code']]]></code>
<code><![CDATA[$response['error_code']]]></code>
<code><![CDATA[$response['error_code']]]></code>
<code><![CDATA[$response['error_message']]]></code>
<code><![CDATA[$response['error_message']]]></code>
<code><![CDATA[$response['error_message']]]></code>
<code><![CDATA[$response['error_message']]]></code>
<code><![CDATA[$response['error_message']]]></code>
<code><![CDATA[$response['error_message']]]></code>
<code><![CDATA[$response['error_message']]]></code>
<code><![CDATA[$response['error_message']]]></code>
<code><![CDATA[$response['error_message']]]></code>
<code><![CDATA[$response['error_message']]]></code>
<code><![CDATA[$response['new_server_salt']]]></code>
<code><![CDATA[Lang::$current_lang['account_banned']]]></code>
<code><![CDATA[Lang::$current_lang['account_banned']]]></code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code>$current_msg_id</code>
<code>$current_msg_id</code>
<code>$current_msg_id</code>
<code>$expecting_msg_id</code>
</MixedArgumentTypeCoercion>
<MixedArrayAccess>
<code><![CDATA[$message['body']]]></code>
<code><![CDATA[$message['msg_id']]]></code>
<code><![CDATA[$message['msg_id']]]></code>
<code><![CDATA[$message['msg_id']]]></code>
<code><![CDATA[$message['msg_id']]]></code>
<code><![CDATA[$message['seqno']]]></code>
<code><![CDATA[$message['sideEffects']]]></code>
<code><![CDATA[$response['_']]]></code>
<code><![CDATA[$response['error_code']]]></code>
<code><![CDATA[$response['error_code']]]></code>
<code><![CDATA[$response['error_code']]]></code>
<code><![CDATA[$response['error_code']]]></code>
<code><![CDATA[$response['new_server_salt']]]></code>
<code><![CDATA[$this->API->getTL()->getConstructors()->findByPredicate($message->getContent()['_'])['type']]]></code>
<code><![CDATA[$this->API->getTL()->getConstructors()->findByPredicate($response['_'])['type']]]></code>
</MixedArrayAccess>
<MixedArrayOffset>
<code><![CDATA[$this->incoming_messages[$message['msg_id']]]]></code>
<code><![CDATA[$this->incoming_messages[$referencedMsgId]]]></code>
<code><![CDATA[$this->new_incoming[$message['msg_id']]]]></code>
<code><![CDATA[MTProto::BAD_MSG_ERROR_CODES[$response['error_code']]]]></code>
<code><![CDATA[MTProto::BAD_MSG_ERROR_CODES[$response['error_code']]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$constructor</code>
<code>$message</code>
<code>$msg_id</code>
<code>$referencedMsgId</code>
<code>$response</code>
<code>$response_type</code>
</MixedAssignment>
<MixedOperand>
<code>$response_type</code>
<code><![CDATA[$this->API->authorization['user']['phone']]]></code>
<code><![CDATA[$this->API->authorization['user']['phone']]]></code>
</MixedOperand>
<PossiblyInvalidArgument>
<code>$response</code>
<code>\time() + $seconds</code>
</PossiblyInvalidArgument>
<PossiblyNullArgument>
<code>$msgId</code>
<code>$msgId</code>
<code><![CDATA[$request->getMsgId()]]></code>
<code><![CDATA[$request->getMsgId()]]></code>
<code><![CDATA[$request->getMsgId()]]></code>
</PossiblyNullArgument>
<PossiblyNullOperand>
<code><![CDATA[$message->getMsgId()]]></code>
</PossiblyNullOperand>
<PossiblyNullReference>
<code>resume</code>
</PossiblyNullReference>
<RedundantConditionGivenDocblockType>
<code><![CDATA[$this->API->authorized_dc == $this->datacenter && $this->API->authorized === \danog\MadelineProto\API::LOGGED_IN]]></code>
</RedundantConditionGivenDocblockType>
<UnnecessaryVarAnnotation>
<code>MTProtoIncomingMessage</code>
<code>MTProtoOutgoingMessage</code>
</UnnecessaryVarAnnotation>
</file>
<file src="src/MTProtoSession/SeqNoHandler.php">
<MissingParamType>
<code>$contentRelated</code>
<code>$contentRelated</code>
</MissingParamType>
<MissingReturnType>
<code>generateInSeqNo</code>
<code>generateOutSeqNo</code>
</MissingReturnType>
<MixedAssignment>
<code>$seq_no</code>
</MixedAssignment>
<MixedOperand>
<code>$seq_no</code>
</MixedOperand>
<PossiblyNullOperand>
<code><![CDATA[$message->getSeqNo()]]></code>
</PossiblyNullOperand>
</file>
<file src="src/MTProtoSession/Session.php">
<MissingConstructor>
<code>$msgIdHandler</code>
</MissingConstructor>
<PossiblyNullOperand>
<code><![CDATA[$message->getSent()]]></code>
</PossiblyNullOperand>
</file>
<file src="src/MTProtoTools/AuthKeyHandler.php">
<MixedArgument>
<code><![CDATA[$dh_config['g']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$dh_config['_']]]></code>
<code><![CDATA[$dh_config['g']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$dh_config['g']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
</MixedArrayAssignment>
<MixedAssignment>
<code>$dh_config</code>
<code><![CDATA[$this->dh_config]]></code>
</MixedAssignment>
<MixedInferredReturnType>
<code>array</code>
</MixedInferredReturnType>
</file>
<file src="src/MTProtoTools/CallHandler.php">
<MissingReturnType>
<code>methodCallAsyncRead</code>
<code>methodCallAsyncWrite</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[$aargs['datacenter'] ?? $this->datacenter->currentDatacenter]]></code>
<code><![CDATA[$aargs['datacenter'] ?? $this->datacenter->currentDatacenter]]></code>
</MixedArgument>
</file>
<file src="src/MTProtoTools/CombinedUpdatesState.php">
<MixedArgumentTypeCoercion>
<code>$channel</code>
</MixedArgumentTypeCoercion>
<MixedAssignment>
<code>$state</code>
</MixedAssignment>
<MixedPropertyTypeCoercion>
<code><![CDATA[$this->states]]></code>
</MixedPropertyTypeCoercion>
<PossiblyInvalidMethodCall>
<code>syncLoading</code>
</PossiblyInvalidMethodCall>
</file>
<file src="src/MTProtoTools/FileServer.php">
<MixedArgument>
<code><![CDATA[Lang::$current_lang["cli_need_dl.php_link"]]]></code>
<code><![CDATA[Lang::$current_lang["dl.php_powered_by_madelineproto"]]]></code>
<code><![CDATA[Lang::$current_lang['invalid_dl.php_session']]]></code>
<code><![CDATA[Lang::$current_lang['need_dl.php']]]></code>
</MixedArgument>
<MixedArrayOffset>
<code>self::$checkedAutoload[$autoloadPath]</code>
<code>self::$checkedAutoload[$autoloadPath]</code>
<code>self::$checkedAutoload[$autoloadPath]</code>
</MixedArrayOffset>
<MixedAssignment>
<code>$autoloadPath</code>
<code>$autoloadPath</code>
<code>$f</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>string</code>
</MixedInferredReturnType>
<PossiblyInvalidArgument>
<code><![CDATA[$_GET['m']]]></code>
<code><![CDATA[$_GET['n']]]></code>
</PossiblyInvalidArgument>
<PossiblyInvalidArrayAccess>
<code><![CDATA[$API->getSelf()['id']]]></code>
<code><![CDATA[$this->getSelf()['id']]]></code>
</PossiblyInvalidArrayAccess>
<PossiblyNullArgument>
<code>$media</code>
</PossiblyNullArgument>
<PossiblyNullArrayAccess>
<code><![CDATA[$this->extractBotAPIFile($this->MTProtoToBotAPI($media))['file_id']]]></code>
</PossiblyNullArrayAccess>
<PossiblyNullOperand>
<code>$name</code>
</PossiblyNullOperand>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[$_SERVER['SERVER_NAME']]]></code>
</PossiblyUndefinedArrayOffset>
<RiskyCast>
<code><![CDATA[$_GET['s']]]></code>
</RiskyCast>
</file>
<file src="src/MTProtoTools/Files.php">
<DocblockTypeContradiction>
<code><![CDATA[$fingerprint !== $messageMedia['key_fingerprint']]]></code>
</DocblockTypeContradiction>
<MissingClosureReturnType>
<code>static function (int $part_num) use ($size, $file_id, $part_total_num, $part_size, $callable, $ige) {</code>
</MissingClosureReturnType>
<MissingParamType>
<code>$data</code>
<code>$media</code>
</MissingParamType>
<MissingReturnType>
<code>downloadToCallable</code>
<code>downloadToDir</code>
<code>genAllFile</code>
<code>uploadFromCallable</code>
<code>uploadFromTgfile</code>
<code>uploadFromUrl</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[$attribute['file_name']]]></code>
<code><![CDATA[$attribute['file_name']]]></code>
<code>$bytes</code>
<code>$cur * 100 / $count</code>
<code>$cur * 100 / $part_total_num</code>
<code>$datacenter</code>
<code>$datacenter</code>
<code>$file</code>
<code>$info</code>
<code>$media</code>
<code>$media</code>
<code><![CDATA[$media['_']]]></code>
<code><![CDATA[$media['document']]]></code>
<code><![CDATA[$media['photo']]]></code>
<code>$messageMedia</code>
<code>$messageMedia</code>
<code>$messageMedia</code>
<code><![CDATA[$messageMedia['cdn_iv']]]></code>
<code><![CDATA[$messageMedia['cdn_key']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']['file_name']]]></code>
<code><![CDATA[$messageMedia['document']]]></code>
<code><![CDATA[$messageMedia['document']['access_hash']]]></code>
<code><![CDATA[$messageMedia['document']['id']]]></code>
<code><![CDATA[$messageMedia['document']['mime_type']]]></code>
<code><![CDATA[$messageMedia['file']['access_hash']]]></code>
<code><![CDATA[$messageMedia['file_name']]]></code>
<code><![CDATA[$messageMedia['file_token']]]></code>
<code><![CDATA[$messageMedia['file_token']]]></code>
<code><![CDATA[$messageMedia['file_token']]]></code>
<code><![CDATA[$messageMedia['id']]]></code>
<code><![CDATA[$messageMedia['id']]]></code>
<code><![CDATA[$messageMedia['sizes']]]></code>
<code><![CDATA[$messageMedia['sizes']]]></code>
<code><![CDATA[$offset['offset']]]></code>
<code><![CDATA[$offset['part_end_at'] - $offset['part_start_at']]]></code>
<code><![CDATA[$offset['part_start_at']]]></code>
<code>$old_dc</code>
<code>$resPromises</code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['mime'] ?? 'image/jpeg']]></code>
<code>$speed</code>
<code>$speed</code>
<code><![CDATA[$this->methodCallAsyncRead('upload.getCdnFileHashes', ['file_token' => $file, 'offset' => $offset], ['datacenter' => $datacenter])]]></code>
<code><![CDATA[$this->methodCallAsyncRead('upload.reuploadCdnFile', ['file_token' => $messageMedia['file_token'], 'request_token' => $res['request_token']], ['heavy' => true, 'datacenter' => $old_dc])]]></code>
<code>$time</code>
<code>$time</code>
<code>$url</code>
<code>++$datacenter</code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code><![CDATA[$this->downloadToCallable(...)]]></code>
<code><![CDATA[$this->methodCallAsyncWrite(...)]]></code>
<code><![CDATA[$this->uploadFromCallable(...)]]></code>
</MixedArgumentTypeCoercion>
<MixedArrayAccess>
<code><![CDATA[$answer['correct']]]></code>
<code><![CDATA[$answer['correct']]]></code>
<code><![CDATA[$answer['option']]]></code>
<code><![CDATA[$answer['option']]]></code>
<code><![CDATA[$attribute['_']]]></code>
<code><![CDATA[$attribute['_']]]></code>
<code><![CDATA[$attribute['file_name']]]></code>
<code><![CDATA[$attribute['file_name']]]></code>
<code><![CDATA[$constructor['_']]]></code>
<code><![CDATA[$constructor['media']]]></code>
<code><![CDATA[$constructor['message']]]></code>
<code><![CDATA[$hash['hash']]]></code>
<code><![CDATA[$hash['limit']]]></code>
<code><![CDATA[$hash['offset']]]></code>
<code><![CDATA[$media['_']]]></code>
<code><![CDATA[$media['_']]]></code>
<code><![CDATA[$media['access_hash']]]></code>
<code><![CDATA[$media['access_hash']]]></code>
<code><![CDATA[$media['document']]]></code>
<code><![CDATA[$media['document']]]></code>
<code><![CDATA[$media['document']]]></code>
<code><![CDATA[$media['document']]]></code>
<code><![CDATA[$media['document']['access_hash']]]></code>
<code><![CDATA[$media['document']['id']]]></code>
<code><![CDATA[$media['emoticon']]]></code>
<code><![CDATA[$media['id']]]></code>
<code><![CDATA[$media['id']]]></code>
<code><![CDATA[$media['photo']]]></code>
<code><![CDATA[$media['photo']]]></code>
<code><![CDATA[$media['photo']]]></code>
<code><![CDATA[$media['photo']]]></code>
<code><![CDATA[$media['photo']['access_hash']]]></code>
<code><![CDATA[$media['photo']['id']]]></code>
<code><![CDATA[$media['poll']]]></code>
<code><![CDATA[$media['poll']]]></code>
<code><![CDATA[$media['results']]]></code>
<code><![CDATA[$media['results']]]></code>
<code><![CDATA[$media['results']]]></code>
<code><![CDATA[$media['results']]]></code>
<code><![CDATA[$media['results']]]></code>
<code><![CDATA[$media['results']]]></code>
<code><![CDATA[$media['results']]]></code>
<code><![CDATA[$media['results']['results']]]></code>
<code><![CDATA[$media['results']['results']]]></code>
<code><![CDATA[$media['results']['solution']]]></code>
<code><![CDATA[$media['results']['solution']]]></code>
<code><![CDATA[$media['results']['solution_entities']]]></code>
<code><![CDATA[$media['results']['solution_entities']]]></code>
<code><![CDATA[$media['ttl_seconds']]]></code>
<code><![CDATA[$media['ttl_seconds']]]></code>
<code><![CDATA[$messageMedia['access_hash']]]></code>
<code><![CDATA[$messageMedia['access_hash']]]></code>
<code><![CDATA[$messageMedia['bytes']['bytes']]]></code>
<code><![CDATA[$messageMedia['dc_id']]]></code>
<code><![CDATA[$messageMedia['dc_id']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']['_']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']['attributes']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']['file_name']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']['iv']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']['key']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']['mime_type']]]></code>
<code><![CDATA[$messageMedia['decrypted_message']['media']['size']]]></code>
<code><![CDATA[$messageMedia['document']['access_hash']]]></code>
<code><![CDATA[$messageMedia['document']['attributes']]]></code>
<code><![CDATA[$messageMedia['document']['dc_id']]]></code>
<code><![CDATA[$messageMedia['document']['id']]]></code>
<code><![CDATA[$messageMedia['document']['id']]]></code>
<code><![CDATA[$messageMedia['document']['mime_type']]]></code>
<code><![CDATA[$messageMedia['document']['mime_type']]]></code>
<code><![CDATA[$messageMedia['document']['version']]]></code>
<code><![CDATA[$messageMedia['file']]]></code>
<code><![CDATA[$messageMedia['file']['access_hash']]]></code>
<code><![CDATA[$messageMedia['file']['access_hash']]]></code>
<code><![CDATA[$messageMedia['file']['dc_id']]]></code>
<code><![CDATA[$messageMedia['file']['id']]]></code>
<code><![CDATA[$messageMedia['file']['key_fingerprint']]]></code>
<code><![CDATA[$messageMedia['id']]]></code>
<code><![CDATA[$messageMedia['id']]]></code>
<code><![CDATA[$messageMedia['media']]]></code>
<code><![CDATA[$messageMedia['photo']['dc_id']]]></code>
<code><![CDATA[$messageMedia['sizes']]]></code>
<code><![CDATA[$res['_']]]></code>
<code><![CDATA[$res['_']]]></code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['dc_id']]]></code>
<code><![CDATA[$res['encryption_iv']]]></code>
<code><![CDATA[$res['encryption_key']]]></code>
<code><![CDATA[$res['file_token']]]></code>
<code><![CDATA[$res['request_token']]]></code>
<code><![CDATA[$res['type']]]></code>
<code><![CDATA[$res['type']]]></code>
<code><![CDATA[$res['type']['_']]]></code>
<code><![CDATA[$res['type']['_']]]></code>
<code><![CDATA[$this->TL->getConstructors()->findByPredicate($media['_'])['type']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$info['file_type']]]></code>
<code>$resPromises[]</code>
<code><![CDATA[$res['InputMedia']['correct_answers']]]></code>
<code><![CDATA[$res['InputMedia']['correct_answers']]]></code>
<code><![CDATA[$res['InputMedia']['solution_entities']]]></code>
<code><![CDATA[$res['InputMedia']['solution_entities']]]></code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['bytes']]]></code>
<code><![CDATA[$res['bytes']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code>$info[$method]</code>
<code>$info[$type]</code>
<code><![CDATA[$this->cdn_hashes[$file][$hash['offset']]]]></code>
<code><![CDATA[[$this->TL->getConstructors()->findByPredicate($media['_'])['type'] => $media]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$answer</code>
<code>$answer</code>
<code>$attribute</code>
<code>$attribute</code>
<code>$audio</code>
<code>$audio</code>
<code>$bytes</code>
<code>$bytes</code>
<code>$bytes</code>
<code>$callable</code>
<code>$callable</code>
<code>$constructor</code>
<code>$constructor</code>
<code>$constructor</code>
<code>$cur</code>
<code>$cur</code>
<code>$datacenter</code>
<code>$datacenter</code>
<code>$datacenter</code>
<code>$dir</code>
<code>$file</code>
<code>$hash</code>
<code>$info</code>
<code><![CDATA[$info['file_type']]]></code>
<code>$media</code>
<code>$messageMedia</code>
<code>$messageMedia</code>
<code>$messageMedia</code>
<code>$messageMedia</code>
<code>$messageMedia</code>
<code><![CDATA[$messageMedia['cdn_iv']]]></code>
<code><![CDATA[$messageMedia['cdn_key']]]></code>
<code><![CDATA[$messageMedia['file_token']]]></code>
<code>$method</code>
<code>$offset</code>
<code>$oldOffset</code>
<code>$old_dc</code>
<code>$r</code>
<code>$r</code>
<code>$readFuture</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code><![CDATA[$res['Document']]]></code>
<code><![CDATA[$res['InputFileLocation']['dc_id']]]></code>
<code><![CDATA[$res['InputFileLocation']['has_video']]]></code>
<code><![CDATA[$res['InputFileLocation']['photo_id']]]></code>
<code><![CDATA[$res['InputMedia']['correct_answers'][]]]></code>
<code><![CDATA[$res['InputMedia']['correct_answers'][]]]></code>
<code><![CDATA[$res['InputMedia']['solution']]]></code>
<code><![CDATA[$res['InputMedia']['solution']]]></code>
<code><![CDATA[$res['InputMedia']['solution_entities']]]></code>
<code><![CDATA[$res['InputMedia']['solution_entities']]]></code>
<code><![CDATA[$res['InputMedia']['ttl_seconds']]]></code>
<code><![CDATA[$res['InputMedia']['ttl_seconds']]]></code>
<code><![CDATA[$res['Photo']]]></code>
<code><![CDATA[$res['Poll']]]></code>
<code><![CDATA[$res['Poll']]]></code>
<code><![CDATA[$res['data']]]></code>
<code><![CDATA[$res['data']]]></code>
<code><![CDATA[$res['iv']]]></code>
<code><![CDATA[$res['key']]]></code>
<code><![CDATA[$res['key_fingerprint']]]></code>
<code><![CDATA[$res['mime']]]></code>
<code><![CDATA[$res['mime']]]></code>
<code><![CDATA[$res['name']]]></code>
<code><![CDATA[$res['name']]]></code>
<code><![CDATA[$res['size']]]></code>
<code><![CDATA[$res['size']]]></code>
<code><![CDATA[$res['size']]]></code>
<code><![CDATA[$res['size']]]></code>
<code><![CDATA[$res['thumb_size']]]></code>
<code><![CDATA[$res['thumb_size']]]></code>
<code><![CDATA[$res['thumb_size']]]></code>
<code>$size</code>
<code>$type</code>
<code>$url</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>array</code>
<code>array{
* ext: string,
* name: string,
* mime: string,
* size: int,
* InputFileLocation: array,
* key_fingerprint?: string,
* key?: string,
* iv?: string,
* thumb_size?: string
* }</code>
<code>array|null</code>
<code>string</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>await</code>
</MixedMethodCall>
<MixedOperand>
<code><![CDATA[$audio['performer']]]></code>
<code><![CDATA[$audio['performer']]]></code>
<code>$cur</code>
<code>$cur</code>
<code>$cur</code>
<code>$cur</code>
<code><![CDATA[$cur['width']]]></code>
<code>$datacenter</code>
<code>$dir</code>
<code><![CDATA[$messageMedia['_']]]></code>
<code><![CDATA[$messageMedia['dc_id']]]></code>
<code><![CDATA[$messageMedia['photo']['dc_id']]]></code>
<code><![CDATA[$n['width']]]></code>
<code>$offset</code>
<code>$offset</code>
<code><![CDATA[$offset['offset']]]></code>
<code><![CDATA[$offset['offset']]]></code>
<code><![CDATA[$offset['part_end_at']]]></code>
<code><![CDATA[$res['name']]]></code>
<code><![CDATA[$res['name']]]></code>
<code><![CDATA[$res['name']]]></code>
<code>$size</code>
<code>$size</code>
<code>$size</code>
</MixedOperand>
<MixedPropertyTypeCoercion>
<code><![CDATA[$this->cdn_hashes]]></code>
<code><![CDATA[$this->cdn_hashes]]></code>
</MixedPropertyTypeCoercion>
<MixedReturnStatement>
<code><![CDATA[$this->write[$offset]->getFuture()->await()]]></code>
</MixedReturnStatement>
<PossiblyInvalidArrayOffset>
<code><![CDATA[$this->read[$offset]]]></code>
<code><![CDATA[$this->write[$offset]]]></code>
<code><![CDATA[$this->write[$offset]]]></code>
</PossiblyInvalidArrayOffset>
<PossiblyNullArgument>
<code>$messageMedia</code>
<code>$old_dc</code>
</PossiblyNullArgument>
<PossiblyNullReference>
<code>decrypt</code>
<code>getReference</code>
<code>getReference</code>
<code>getReference</code>
<code>getReference</code>
<code>getReference</code>
<code>getReference</code>
<code>getReference</code>
</PossiblyNullReference>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[$messageMedia['bytes']]]></code>
<code><![CDATA[$messageMedia['document']]]></code>
<code><![CDATA[$messageMedia['document']]]></code>
<code><![CDATA[$messageMedia['iv']]]></code>
<code><![CDATA[$messageMedia['key_fingerprint']]]></code>
<code><![CDATA[$messageMedia['photo']]]></code>
</PossiblyUndefinedArrayOffset>
<PossiblyUndefinedVariable>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
</PossiblyUndefinedVariable>
<RedundantCondition>
<code><![CDATA[$fingerprint !== $messageMedia['key_fingerprint']]]></code>
</RedundantCondition>
<TypeDoesNotContainType>
<code><![CDATA[$res['ext'] === '']]></code>
<code><![CDATA[$res['ext'] === '']]></code>
</TypeDoesNotContainType>
<UnusedClosureParam>
<code>$speed</code>
<code>$speed</code>
<code>$time</code>
<code>$time</code>
</UnusedClosureParam>
<UnusedVariable>
<code>$size</code>
</UnusedVariable>
</file>
<file src="src/MTProtoTools/FilesAbstraction.php">
<MixedArgument>
<code>$attr</code>
<code>$attr</code>
<code>$attr</code>
<code>$attr</code>
<code>$attr</code>
<code>$attr</code>
<code>$attr</code>
<code>$has_document_photo</code>
<code>$has_document_photo</code>
<code>$has_document_photo</code>
<code>$has_document_photo</code>
<code>$has_document_photo</code>
<code>$has_video</code>
<code>$has_video</code>
<code>$has_video</code>
<code>$has_video</code>
<code><![CDATA[$this->methodCallAsyncRead(
'messages.sendMedia',
$params
)]]></code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code>$callback</code>
</MixedArgumentTypeCoercion>
<MixedArrayAccess>
<code><![CDATA[$attr['_']]]></code>
<code><![CDATA[$attr['mask']]]></code>
<code><![CDATA[$attr['voice']]]></code>
<code><![CDATA[$has_video['round_message']]]></code>
<code><![CDATA[$media['document']['attributes']]]></code>
<code><![CDATA[$media['document']['mime_type']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$base['attributes'][]]]></code>
</MixedArrayAssignment>
<MixedAssignment>
<code>$attr</code>
<code>$has_document_photo</code>
<code>$has_video</code>
<code>$t</code>
</MixedAssignment>
<MoreSpecificReturnType>
<code>Message</code>
</MoreSpecificReturnType>
</file>
<file src="src/MTProtoTools/FilesLogic.php">
<MissingClosureReturnType>
<code>static function (int $offset, int $size) use ($stream) {</code>
<code>static function (int $offset, int $size) use ($stream, $seekable, $lock) {</code>
<code>static function (string $payload, int $offset) use ($stream, $seekable, $lock) {</code>
</MissingClosureReturnType>
<MissingReturnType>
<code>downloadToStream</code>
<code>upload</code>
<code>uploadEncrypted</code>
<code>uploadFromStream</code>
</MissingReturnType>
<MixedArgument>
<code>$chunk</code>
<code>$file</code>
<code>$file</code>
<code>$file</code>
<code><![CDATA[$result->getServeRange()]]></code>
<code><![CDATA[$result->getServeRange()]]></code>
<code><![CDATA[$result->getServeRange()]]></code>
<code><![CDATA[$result->getServeRange()]]></code>
<code>$size</code>
<code>$size</code>
<code>$stream</code>
<code>$stream</code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code><![CDATA[$result->getHeaders()]]></code>
<code><![CDATA[$this->downloadToStream(...)]]></code>
</MixedArgumentTypeCoercion>
<MixedAssignment>
<code>$chunk</code>
<code>$file</code>
<code>$messageMedia</code>
<code>$messageMedia</code>
<code>$res</code>
<code>$size</code>
<code>$stream</code>
<code>$stream</code>
</MixedAssignment>
<PossiblyInvalidArgument>
<code>$file</code>
<code>$file</code>
</PossiblyInvalidArgument>
<PossiblyNullArgument>
<code>$body</code>
<code>$size</code>
</PossiblyNullArgument>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[$_SERVER['REQUEST_METHOD']]]></code>
<code><![CDATA[$_SERVER['REQUEST_METHOD']]]></code>
</PossiblyUndefinedArrayOffset>
<PossiblyUndefinedMethod>
<code>read</code>
<code>seek</code>
<code>seek</code>
</PossiblyUndefinedMethod>
<UnnecessaryVarAnnotation>
<code>Lock</code>
<code>Lock</code>
<code>Settings</code>
</UnnecessaryVarAnnotation>
</file>
<file src="src/MTProtoTools/MinDatabase.php">
<MissingReturnType>
<code>populateFrom</code>
</MissingReturnType>
<MixedArgument>
<code>$cache</code>
<code>$dbObject</code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code><![CDATA[$location['channel_id']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$chat['min']]]></code>
<code><![CDATA[$new['peer']['min']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$this->cache[$key][$id]]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code>$peers[$user]</code>
<code><![CDATA[$this->db[$id]]]></code>
<code><![CDATA[$this->db[$id]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$cache</code>
<code>$chat</code>
<code>$dbObject</code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code><![CDATA[$new['peer']]]></code>
<code>$origin</code>
<code><![CDATA[$origin['msg_id']]]></code>
<code>$user</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$new['_']]]></code>
</MixedOperand>
<MixedReturnTypeCoercion>
<code><![CDATA[\array_fill_keys(self::SWITCH_CONSTRUCTORS, $this->populateFrom(...))]]></code>
<code>array</code>
</MixedReturnTypeCoercion>
<PossiblyNullArgument>
<code>$id</code>
</PossiblyNullArgument>
<PossiblyNullArrayOffset>
<code>$peers</code>
<code>$peers</code>
<code>$peers</code>
<code>$peers</code>
<code><![CDATA[$this->db]]></code>
</PossiblyNullArrayOffset>
<PropertyNotSetInConstructor>
<code>$db</code>
</PropertyNotSetInConstructor>
<RawObjectIteration>
<code><![CDATA[$this->API->chats]]></code>
<code><![CDATA[$this->db]]></code>
</RawObjectIteration>
<UnusedForeachValue>
<code>$true</code>
</UnusedForeachValue>
</file>
<file src="src/MTProtoTools/PasswordCalculator.php">
<MixedArgument>
<code>$A</code>
<code>$client_salt</code>
<code>$gForHash</code>
<code>$g_x</code>
<code><![CDATA[$object['current_algo']['g']]]></code>
<code><![CDATA[$object['new_algo']['g']]]></code>
<code>$p</code>
<code>$pForHash</code>
<code><![CDATA[$params['password'] ?? '']]></code>
<code>$server_salt</code>
<code><![CDATA[$v->toBytes()]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$object['current_algo']['_']]]></code>
<code><![CDATA[$object['current_algo']['g']]]></code>
<code><![CDATA[$object['current_algo']['p']]]></code>
<code><![CDATA[$object['current_algo']['salt1']]]></code>
<code><![CDATA[$object['current_algo']['salt1']]]></code>
<code><![CDATA[$object['current_algo']['salt2']]]></code>
<code><![CDATA[$object['current_algo']['salt2']]]></code>
<code><![CDATA[$object['new_algo']['_']]]></code>
<code><![CDATA[$object['new_algo']['g']]]></code>
<code><![CDATA[$object['new_algo']['p']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$object['current_algo']['g']]]></code>
<code><![CDATA[$object['current_algo']['gForHash']]]></code>
<code><![CDATA[$object['current_algo']['p']]]></code>
<code><![CDATA[$object['current_algo']['pForHash']]]></code>
<code><![CDATA[$object['current_algo']['salt1']]]></code>
<code><![CDATA[$object['current_algo']['salt1']]]></code>
<code><![CDATA[$object['current_algo']['salt2']]]></code>
<code><![CDATA[$object['current_algo']['salt2']]]></code>
<code><![CDATA[$object['new_algo']['g']]]></code>
<code><![CDATA[$object['new_algo']['gForHash']]]></code>
<code><![CDATA[$object['new_algo']['p']]]></code>
<code><![CDATA[$object['new_algo']['pForHash']]]></code>
</MixedArrayAssignment>
<MixedAssignment>
<code>$A</code>
<code>$client_salt</code>
<code>$g</code>
<code>$g</code>
<code>$gForHash</code>
<code>$g_x</code>
<code><![CDATA[$new_settings['email']]]></code>
<code><![CDATA[$new_settings['hint']]]></code>
<code>$p</code>
<code>$p</code>
<code>$pForHash</code>
<code>$pForHash</code>
<code>$server_salt</code>
<code><![CDATA[$this->current_algo]]></code>
<code><![CDATA[$this->new_algo]]></code>
<code><![CDATA[$this->srp_id]]></code>
<code>$v</code>
</MixedAssignment>
<MixedMethodCall>
<code>powMod</code>
<code>powMod</code>
<code>powMod</code>
<code>toBytes</code>
<code>toString</code>
</MixedMethodCall>
<MixedOperand>
<code>$pForHash</code>
</MixedOperand>
<PossiblyNullOperand>
<code>$BForHash</code>
<code>$BForHash</code>
</PossiblyNullOperand>
<PossiblyNullReference>
<code>powMod</code>
</PossiblyNullReference>
</file>
<file src="src/MTProtoTools/PeerHandler.php">
<InvalidArrayOffset>
<code><![CDATA[$this->getInfo($peer, \danog\MadelineProto\API::INFO_TYPE_CONSTRUCTOR)['forum']]]></code>
</InvalidArrayOffset>
<MissingClosureReturnType>
<code><![CDATA[function () use ($channel, $filter, $q, $x, $total_count, &$res, $depth) {]]></code>
</MissingClosureReturnType>
<MissingParamType>
<code>$channel</code>
<code>$channel</code>
<code>$channel</code>
<code>$channel</code>
<code>$channel</code>
<code>$filter</code>
<code>$filter</code>
<code>$filter</code>
<code>$filter</code>
<code>$filter</code>
<code>$folder_id</code>
<code>$gres</code>
<code>$limit</code>
<code>$limit</code>
<code>$limit</code>
<code>$offset</code>
<code>$offset</code>
<code>$offset</code>
<code>$q</code>
<code>$q</code>
<code>$q</code>
<code>$q</code>
<code>$q</code>
<code>$res</code>
<code>$res</code>
<code>$total_count</code>
<code>$total_count</code>
</MissingParamType>
<MissingReturnType>
<code>fetchParticipants</code>
<code>fetchParticipantsCache</code>
<code>fwdPeerIsset</code>
<code>getInputConstructor</code>
<code>getInputPeer</code>
<code>getParticipantsHash</code>
<code>recurseAlphabetSearchParticipants</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[$channel['channel_id']]]></code>
<code><![CDATA[$channel['channel_id']]]></code>
<code><![CDATA[$channel['channel_id']]]></code>
<code>$chat</code>
<code>$chat</code>
<code>$chat</code>
<code><![CDATA[$chat['id']]]></code>
<code><![CDATA[$constructor['_']]]></code>
<code><![CDATA[$constructor['id']]]></code>
<code><![CDATA[$constructor['id']]]></code>
<code><![CDATA[$constructor['username']]]></code>
<code>$existingChat</code>
<code>$existingChat</code>
<code>$filter</code>
<code>$filter</code>
<code>$filter</code>
<code><![CDATA[$fwd['channel_id']]]></code>
<code><![CDATA[$gres['participants']]]></code>
<code><![CDATA[$gres['participants']]]></code>
<code><![CDATA[$gres['participants']]]></code>
<code><![CDATA[$gres['participants']]]></code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code><![CDATA[$id['channel_id']]]></code>
<code><![CDATA[$id['channel_id']]]></code>
<code><![CDATA[$id['channel_id']]]></code>
<code><![CDATA[$id['chat']['id']]]></code>
<code><![CDATA[$id['chat_id']]]></code>
<code><![CDATA[$id['id']]]></code>
<code>$limit</code>
<code>$limit</code>
<code>$limit</code>
<code>$offset</code>
<code>$offset</code>
<code>$offset</code>
<code>$q</code>
<code>$q</code>
<code>$q</code>
<code><![CDATA[$res['access_hash'] ?? 0]]></code>
<code><![CDATA[$res['id']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['photo']['access_hash']]]></code>
<code><![CDATA[$res['photo']['dc_id']]]></code>
<code><![CDATA[$res['photo']['id']]]></code>
<code><![CDATA[$res['photo']['sizes']]]></code>
<code><![CDATA[$this->full_chats[$partial['bot_api_id']]]]></code>
<code><![CDATA[$this->full_chats[$partial['bot_api_id']]]]></code>
<code><![CDATA[$user['id']]]></code>
<code><![CDATA[$user['id']]]></code>
<code><![CDATA[$user['id']]]></code>
<code><![CDATA[$user['id']]]></code>
<code>$username</code>
<code><![CDATA[-$chat['id']]]></code>
<code><![CDATA[-$chat['id']]]></code>
<code>await($promises)</code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$channel['channel_id']]]></code>
<code><![CDATA[$channel['channel_id']]]></code>
<code><![CDATA[$channel['channel_id']]]></code>
<code><![CDATA[$chat['min']]]></code>
<code><![CDATA[$entity['_']]]></code>
<code><![CDATA[$entity['user_id']]]></code>
<code><![CDATA[$existingChat['access_hash']]]></code>
<code><![CDATA[$existingChat['access_hash']]]></code>
<code><![CDATA[$existingChat['access_hash']]]></code>
<code><![CDATA[$existingChat['min']]]></code>
<code><![CDATA[$full['full']['chat_photo']]]></code>
<code><![CDATA[$full['full']['chat_photo']]]></code>
<code><![CDATA[$full['full']['exported_invite']]]></code>
<code><![CDATA[$full['full']['exported_invite']]]></code>
<code><![CDATA[$full['full']['exported_invite']['link']]]></code>
<code><![CDATA[$full['full']['exported_invite']['link']]]></code>
<code><![CDATA[$full['full']['participants']]]></code>
<code><![CDATA[$full['full']['participants']]]></code>
<code><![CDATA[$full['full']['participants']['participants']]]></code>
<code><![CDATA[$full['full']['participants']['participants']]]></code>
<code><![CDATA[$full['full']['profile_photo']]]></code>
<code><![CDATA[$gres['_']]]></code>
<code><![CDATA[$gres['count']]]></code>
<code><![CDATA[$gres['count']]]></code>
<code><![CDATA[$gres['count']]]></code>
<code><![CDATA[$gres['participants']]]></code>
<code><![CDATA[$gres['participants']]]></code>
<code><![CDATA[$gres['participants']]]></code>
<code><![CDATA[$gres['participants']]]></code>
<code><![CDATA[$gres['participants']]]></code>
<code><![CDATA[$gres['participants']]]></code>
<code><![CDATA[$gres['users']]]></code>
<code><![CDATA[$id['chat']['id']]]></code>
<code><![CDATA[$id['chat_id']]]></code>
<code><![CDATA[$id['chat_id']]]></code>
<code><![CDATA[$id['peer']]]></code>
<code><![CDATA[$id['peer_id']['_']]]></code>
<code><![CDATA[$id['peer_id']['user_id']]]></code>
<code><![CDATA[$invite['chat']]]></code>
<code><![CDATA[$invite['chat']]]></code>
<code><![CDATA[$participant['_']]]></code>
<code><![CDATA[$participant['_']]]></code>
<code><![CDATA[$participant['admin_rights']]]></code>
<code><![CDATA[$participant['admin_rights']]]></code>
<code><![CDATA[$participant['banned_rights']]]></code>
<code><![CDATA[$participant['banned_rights']]]></code>
<code><![CDATA[$participant['can_edit']]]></code>
<code><![CDATA[$participant['date']]]></code>
<code><![CDATA[$participant['date']]]></code>
<code><![CDATA[$participant['inviter_id']]]></code>
<code><![CDATA[$participant['inviter_id']]]></code>
<code><![CDATA[$participant['kicked_by']]]></code>
<code><![CDATA[$participant['kicked_by']]]></code>
<code><![CDATA[$participant['left']]]></code>
<code><![CDATA[$participant['peer']]]></code>
<code><![CDATA[$participant['peer']]]></code>
<code><![CDATA[$participant['peer']]]></code>
<code><![CDATA[$participant['promoted_by']]]></code>
<code><![CDATA[$participant['promoted_by']]]></code>
<code><![CDATA[$participant['rank']]]></code>
<code><![CDATA[$participant['user_id']]]></code>
<code><![CDATA[$participant['user_id']]]></code>
<code><![CDATA[$participant['user_id']]]></code>
<code><![CDATA[$participant['user_id']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['photo']['access_hash']]]></code>
<code><![CDATA[$res['photo']['dc_id']]]></code>
<code><![CDATA[$res['photo']['file_reference']]]></code>
<code><![CDATA[$res['photo']['id']]]></code>
<code><![CDATA[$res['photo']['sizes']]]></code>
<code><![CDATA[$res['photo']['sizes']]]></code>
<code><![CDATA[$res['photo']['sizes'][0]]]></code>
<code><![CDATA[$support['user']['id']]]></code>
<code><![CDATA[$this->TL->getConstructors()->findByPredicate($constructor['_'])['type']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->methodCallAsyncRead('help.getSupport', [])['user']]]></code>
<code>$username</code>
<code><![CDATA[($this->channelParticipants[$this->participantsKey($channel['channel_id'], $filter, $q, $offset, $limit)])['hash']]]></code>
<code><![CDATA[($this->full_chats[$id])['last_update']]]></code>
<code><![CDATA[($this->methodCallAsyncRead('contacts.resolveUsername', ['username' => $username]))['peer']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$gres['hash']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['participants'][$key]]]></code>
<code><![CDATA[$res['participants'][$participant['user_id'] ?? $this->getIdInternal($participant['peer'])]]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$res['participants'][$key]]]></code>
<code><![CDATA[$res['participants'][$participant['user_id'] ?? $this->getIdInternal($participant['peer'])]]]></code>
<code><![CDATA[$this->chats[$user['id']]]]></code>
<code><![CDATA[$this->chats[-$chat['id']]]]></code>
<code><![CDATA[$this->full_chats[$id]]]></code>
<code><![CDATA[$this->secret_chats[$id]]]></code>
<code><![CDATA[[$this->TL->getConstructors()->findByPredicate($constructor['_'])['type'] => $constructor]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$bot_api_id</code>
<code>$chat</code>
<code><![CDATA[$chat['access_hash']]]></code>
<code>$entity</code>
<code>$existingChat</code>
<code>$gres</code>
<code>$gres</code>
<code>$hash</code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code>$id</code>
<code>$ids[]</code>
<code>$invite</code>
<code>$invite</code>
<code>$invite</code>
<code>$key</code>
<code>$last_count</code>
<code>$newchat[$field]</code>
<code><![CDATA[$newres['admin_rights']]]></code>
<code><![CDATA[$newres['admin_rights']]]></code>
<code><![CDATA[$newres['banned_rights']]]></code>
<code><![CDATA[$newres['banned_rights']]]></code>
<code><![CDATA[$newres['can_edit']]]></code>
<code><![CDATA[$newres['date']]]></code>
<code><![CDATA[$newres['date']]]></code>
<code><![CDATA[$newres['left']]]></code>
<code><![CDATA[$newres['rank']]]></code>
<code>$participant</code>
<code>$participant</code>
<code>$participant</code>
<code>$res[$key]</code>
<code>$res[$key]</code>
<code>$res[$key]</code>
<code>$res[$key]</code>
<code>$res[$key]</code>
<code>$res[$key]</code>
<code><![CDATA[$res['bot_api_id']]]></code>
<code><![CDATA[$res['bot_api_id']]]></code>
<code><![CDATA[$res['channel_id']]]></code>
<code><![CDATA[$res['chat_id']]]></code>
<code><![CDATA[$res['invite']]]></code>
<code><![CDATA[$res['invite']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$res['photo']]]></code>
<code><![CDATA[$res['photo']]]></code>
<code><![CDATA[$res['photo']]]></code>
<code><![CDATA[$res['photo']]]></code>
<code><![CDATA[$res['user_id']]]></code>
<code>$size</code>
<code><![CDATA[$this->supportUser]]></code>
<code>$total_count</code>
<code><![CDATA[$user['access_hash']]]></code>
<code><![CDATA[$user['access_hash']]]></code>
<code><![CDATA[['username' => $username]]]></code>
</MixedAssignment>
<MixedInferredReturnType>
<code><![CDATA[($type is \danog\MadelineProto\API::INFO_TYPE_ALL ? (array{
* InputPeer: array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int},
* Peer: array{_: string, user_id?: int, chat_id?: int, channel_id?: int},
* DialogPeer: array{_: string, peer: array{_: string, user_id?: int, chat_id?: int, channel_id?: int}},
* NotifyPeer: array{_: string, peer: array{_: string, user_id?: int, chat_id?: int, channel_id?: int}},
* InputDialogPeer: array{_: string, peer: array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int}},
* InputNotifyPeer: array{_: string, peer: array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int}},
* bot_api_id: int,
* user_id?: int,
* chat_id?: int,
* channel_id?: int,
* InputUser?: array{_: string, user_id?: int, access_hash?: int, min?: bool},
* InputChannel?: array{_: string, channel_id: int, access_hash: int, min: bool},
* type: string
* }&array) : array|int)]]></code>
<code>($type is \danog\MadelineProto\API::INFO_TYPE_ALL ? array{
* InputPeer: array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int},
* Peer: array{_: string, user_id?: int, chat_id?: int, channel_id?: int},
* DialogPeer: array{_: string, peer: array{_: string, user_id?: int, chat_id?: int, channel_id?: int}},
* NotifyPeer: array{_: string, peer: array{_: string, user_id?: int, chat_id?: int, channel_id?: int}},
* InputDialogPeer: array{_: string, peer: array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int}},
* InputNotifyPeer: array{_: string, peer: array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int}},
* bot_api_id: int|string,
* user_id?: int,
* chat_id?: int,
* channel_id?: int,
* InputUser?: array{_: string, user_id?: int, access_hash?: int, min?: bool},
* InputChannel?: array{_: string, channel_id: int, access_hash: int, min: bool},
* type: string
* } : ($type is API::INFO_TYPE_TYPE ? string : ($type is \danog\MadelineProto\API::INFO_TYPE_ID ? int : array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int}|array{_: string, user_id?: int, access_hash?: int, min?: bool}|array{_: string, channel_id: int, access_hash: int, min: bool})))</code>
<code>?int</code>
<code>?int</code>
<code>array</code>
<code>bool</code>
<code>int</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>getOtherID</code>
</MixedMethodCall>
<MixedOperand>
<code><![CDATA[$chat['_']]]></code>
<code><![CDATA[$constructor['_']]]></code>
<code><![CDATA[$gres['count']]]></code>
<code><![CDATA[$id['_']]]></code>
<code>$q</code>
<code><![CDATA[$res['admins_count'] ?? 0]]></code>
<code><![CDATA[$res['photo']]]></code>
<code>$total_count</code>
<code><![CDATA[$user['_']]]></code>
<code><![CDATA[($res['participants_count'] ?? 0) + ($res['admins_count'] ?? 0)]]></code>
</MixedOperand>
<MoreSpecificReturnType>
<code>\danog\MadelineProto\API::PEER_TYPE_*</code>
</MoreSpecificReturnType>
<PossiblyInvalidArgument>
<code>$promises</code>
</PossiblyInvalidArgument>
<PossiblyNullArgument>
<code><![CDATA[$this->getIdInternal($full)]]></code>
<code><![CDATA[$this->getIdInternal($full)]]></code>
<code><![CDATA[$this->getIdInternal($id)]]></code>
<code><![CDATA[$this->getIdInternal($id)]]></code>
</PossiblyNullArgument>
<PossiblyNullArrayAccess>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
</PossiblyNullArrayAccess>
<PossiblyNullArrayOffset>
<code><![CDATA[$res['participants']]]></code>
<code><![CDATA[$this->full_chats]]></code>
<code><![CDATA[$this->full_chats]]></code>
</PossiblyNullArrayOffset>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[$partial['InputChannel']]]></code>
<code><![CDATA[$partial['InputUser']]]></code>
<code><![CDATA[$user['id']]]></code>
</PossiblyUndefinedArrayOffset>
<UnusedForeachValue>
<code>$size</code>
</UnusedForeachValue>
<UnusedVariable>
<code>$cached</code>
<code>$full</code>
</UnusedVariable>
</file>
<file src="src/MTProtoTools/ReferenceDatabase.php">
<MixedArgument>
<code>$cache</code>
<code>$cache</code>
<code>$cache</code>
<code>$cache</code>
<code><![CDATA[$data['id']]]></code>
<code>$location</code>
<code>$location</code>
<code><![CDATA[$locationValue['origins']]]></code>
<code><![CDATA[$location['dc_id']]]></code>
<code><![CDATA[$location['file_reference']['bytes']]]></code>
<code><![CDATA[$location['id']]]></code>
<code><![CDATA[$location['local_id']]]></code>
<code><![CDATA[$location['volume_id']]]></code>
<code>$origin</code>
<code>$origin</code>
<code>$origin</code>
<code>$origin</code>
<code>$origin</code>
<code>$origin</code>
<code>$origin</code>
<code>$originType</code>
<code>$originType</code>
<code>$originType</code>
<code>$originType</code>
<code><![CDATA[$origin['peer']]]></code>
<code><![CDATA[$origin['peer']]]></code>
<code><![CDATA[$origin['peer']]]></code>
<code>$photo</code>
<code>$reference</code>
<code>$reference</code>
<code>$reference</code>
<code>$reference</code>
<code><![CDATA[$size['location']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$attribute['_']]]></code>
<code><![CDATA[$attribute['stickerset']]]></code>
<code><![CDATA[$attribute['stickerset']]]></code>
<code><![CDATA[$attribute['stickerset']['_']]]></code>
<code>$cache[$location]</code>
<code>$cache[$location]</code>
<code>$cache[$location]</code>
<code>$cache[$location]</code>
<code><![CDATA[$data['photo']['photo_id']]]></code>
<code><![CDATA[$data['photo']['photo_id']]]></code>
<code><![CDATA[$data['profile_photo']['id']]]></code>
<code><![CDATA[$data['set']['access_hash']]]></code>
<code><![CDATA[$data['set']['id']]]></code>
<code><![CDATA[$locationValue['origins']]]></code>
<code><![CDATA[$locationValue['origins']]]></code>
<code><![CDATA[$origin['msg_id']]]></code>
<code><![CDATA[$origin['msg_id']]]></code>
<code><![CDATA[$origin['peer']]]></code>
<code><![CDATA[$origin['peer']]]></code>
<code><![CDATA[$origin['peer']]]></code>
<code><![CDATA[$origin['peer']]]></code>
<code><![CDATA[$origin['peer']]]></code>
<code><![CDATA[$origin['peer']]]></code>
<code><![CDATA[$origin['peer']]]></code>
<code><![CDATA[$photo['dc_id']]]></code>
<code><![CDATA[$photo['id']]]></code>
<code><![CDATA[$res['photo']['id']]]></code>
<code><![CDATA[$size['location']]]></code>
<code><![CDATA[$this->API->authorization['user']['id']]]></code>
<code><![CDATA[$this->API->authorization['user']['id']]]></code>
<code><![CDATA[$this->db[$locationString]['reference']]]></code>
<code><![CDATA[$this->db[$location]['origins']]]></code>
<code><![CDATA[$this->db[$location]['reference']]]></code>
<code><![CDATA[$this->db[$location]['reference']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$fullChat['last_update']]]></code>
<code><![CDATA[$locationValue['origins']]]></code>
<code><![CDATA[$locationValue['origins'][$originType]]]></code>
<code><![CDATA[$locationValue['reference']]]></code>
<code><![CDATA[$origin['peer']]]></code>
<code><![CDATA[$size['location']]]></code>
<code><![CDATA[$size['location']['dc_id']]]></code>
<code><![CDATA[$this->cache[$key][$location]]]></code>
<code><![CDATA[$this->cache[$key][$location]]]></code>
<code><![CDATA[$this->cache[$key][$location]]]></code>
<code><![CDATA[$this->cache[$key][self::serializeLocation($locationType, $location)]]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$this->API->full_chats[$origin['peer']]]]></code>
<code><![CDATA[$this->API->full_chats[$origin['peer']]]]></code>
<code><![CDATA[$this->cache[$key][$location]]]></code>
<code><![CDATA[$this->cache[$key][$location]]]></code>
<code><![CDATA[self::LOCATION_CONTEXT[$object['_']]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$attribute</code>
<code>$cache</code>
<code>$cache</code>
<code>$dc_id</code>
<code>$frame</code>
<code>$frames[]</code>
<code>$frames[]</code>
<code>$fullChat</code>
<code>$location</code>
<code>$location</code>
<code>$location</code>
<code>$location</code>
<code>$locationValue</code>
<code>$locationValue</code>
<code>$origin</code>
<code>$originType</code>
<code>$originType</code>
<code>$originType</code>
<code><![CDATA[$origin['emoticon']]]></code>
<code><![CDATA[$origin['max_id']]]></code>
<code><![CDATA[$origin['max_id']]]></code>
<code><![CDATA[$origin['max_id']]]></code>
<code><![CDATA[$origin['max_id']]]></code>
<code><![CDATA[$origin['max_id']]]></code>
<code><![CDATA[$origin['max_id']]]></code>
<code><![CDATA[$origin['msg_id']]]></code>
<code><![CDATA[$origin['peer']]]></code>
<code><![CDATA[$origin['stickerset']]]></code>
<code><![CDATA[$origin['user_id']]]></code>
<code><![CDATA[$origin['user_id']]]></code>
<code><![CDATA[$origin['user_id']]]></code>
<code><![CDATA[$origin['user_id']]]></code>
<code><![CDATA[$origin['user_id']]]></code>
<code><![CDATA[$origin['user_id']]]></code>
<code>$photo</code>
<code>$previous</code>
<code>$previous</code>
<code>$reference</code>
<code>$reference</code>
<code>$reference</code>
<code>$reference</code>
<code>$reference</code>
<code>$reference</code>
<code>$size</code>
<code><![CDATA[$size['location']['dc_id']]]></code>
<code>$tlTrace</code>
</MixedAssignment>
<MixedOperand>
<code>$frame</code>
<code><![CDATA[$location['_']]]></code>
<code>$tlTrace</code>
</MixedOperand>
<PossiblyNullArrayAccess>
<code><![CDATA[$this->API->authorization['user']]]></code>
<code><![CDATA[$this->API->authorization['user']]]></code>
<code><![CDATA[$this->API->authorization['user']['id']]]></code>
<code><![CDATA[$this->API->authorization['user']['id']]]></code>
</PossiblyNullArrayAccess>
<PropertyNotSetInConstructor>
<code>$db</code>
</PropertyNotSetInConstructor>
<UnusedVariable>
<code>$k</code>
</UnusedVariable>
</file>
<file src="src/MTProtoTools/ResponseInfo.php">
<MixedArgument>
<code><![CDATA[$headers['range']]]></code>
</MixedArgument>
<MixedAssignment>
<code>$length</code>
<code>$seek_end</code>
<code>$size</code>
<code>$subValue</code>
<code>$value</code>
</MixedAssignment>
<MixedOperand>
<code>$seek_end</code>
<code>$seek_end</code>
<code>$seek_end</code>
<code>$size</code>
<code>$size</code>
<code>$size</code>
<code><![CDATA[Lang::$current_lang["dl.php_check_logs_make_sure_session_running"]]]></code>
<code><![CDATA[Lang::$current_lang["dl.php_powered_by_madelineproto"]]]></code>
</MixedOperand>
<PossiblyUndefinedArrayOffset>
<code>$extra_ranges</code>
<code>$range_orig</code>
<code>$seek_end</code>
</PossiblyUndefinedArrayOffset>
<UnusedVariable>
<code>$extra_ranges</code>
</UnusedVariable>
</file>
<file src="src/MTProtoTools/UpdateHandler.php">
<ArgumentTypeCoercion>
<code><![CDATA[$this->wrapMedia([
'_' => 'messageMediaPhoto',
'photo' => $message['action']['photo']
])]]></code>
</ArgumentTypeCoercion>
<InaccessibleProperty>
<code><![CDATA[$last->nextSent]]></code>
</InaccessibleProperty>
<MissingReturnType>
<code>getUpdatesState</code>
<code>loadUpdateState</code>
</MissingReturnType>
<MixedArgument>
<code>$authorization</code>
<code><![CDATA[$authorization['authorization']]]></code>
<code>$button</code>
<code><![CDATA[$message['action']['title']]]></code>
<code><![CDATA[$message['action']['title']]]></code>
<code><![CDATA[$message['action']['user_id']]]></code>
<code><![CDATA[$message['action']['users']]]></code>
<code><![CDATA[$message['action']['users']]]></code>
<code>$result</code>
<code><![CDATA[$this->getUpdatesState()]]></code>
<code>$update</code>
<code><![CDATA[$update['chat']]]></code>
<code><![CDATA[$update['chat']]]></code>
<code><![CDATA[$update['chat']['admin_id']]]></code>
<code><![CDATA[$update['message']]]></code>
<code><![CDATA[$update['message']['chat_id']]]></code>
<code><![CDATA[$update['phone_call']]]></code>
<code><![CDATA[$update['phone_call']]]></code>
<code><![CDATA[$update['phone_call']]]></code>
<code><![CDATA[$update['phone_call']['admin_id']]]></code>
<code>$updates</code>
<code><![CDATA[$updates['entities']]]></code>
<code><![CDATA[$updates['fwd_from']]]></code>
<code><![CDATA[$updates['request']['body'] ?? []]]></code>
<code><![CDATA[$updates['request']['body'] ?? []]]></code>
<code><![CDATA[$updates['update']]]></code>
<code><![CDATA[Lang::$current_lang['secret_chat_skipping']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$authorization['_']]]></code>
<code><![CDATA[$authorization['authorization']]]></code>
<code><![CDATA[$authorization['dc_id']]]></code>
<code><![CDATA[$message['action']['_']]]></code>
<code><![CDATA[$message['action']['photo']]]></code>
<code><![CDATA[$message['action']['title']]]></code>
<code><![CDATA[$message['action']['title']]]></code>
<code><![CDATA[$message['action']['user_id']]]></code>
<code><![CDATA[$message['action']['users']]]></code>
<code><![CDATA[$message['action']['users']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$row['buttons']]]></code>
<code><![CDATA[$this->TL->getConstructors()->findByPredicate('message')['params']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->chats[$info['bot_api_id']]['username']]]></code>
<code><![CDATA[$update['_']]]></code>
<code><![CDATA[$update['chat']['_']]]></code>
<code><![CDATA[$update['chat']['admin_id']]]></code>
<code><![CDATA[$update['chat']['id']]]></code>
<code><![CDATA[$update['chat']['id']]]></code>
<code><![CDATA[$update['chat']['id']]]></code>
<code><![CDATA[$update['chat']['id']]]></code>
<code><![CDATA[$update['chat']['id']]]></code>
<code><![CDATA[$update['chat']['id']]]></code>
<code><![CDATA[$update['message']['action']['_']]]></code>
<code><![CDATA[$update['message']['chat_id']]]></code>
<code><![CDATA[$update['message']['chat_id']]]></code>
<code><![CDATA[$update['message']['chat_id']]]></code>
<code><![CDATA[$update['message']['chat_id']]]></code>
<code><![CDATA[$update['message']['chat_id']]]></code>
<code><![CDATA[$update['message']['chat_id']]]></code>
<code><![CDATA[$update['message']['from_id']]]></code>
<code><![CDATA[$update['message']['from_id']['user_id']]]></code>
<code><![CDATA[$update['message']['peer_id']['user_id']]]></code>
<code><![CDATA[$update['phone_call']['_']]]></code>
<code><![CDATA[$update['phone_call']['admin_id']]]></code>
<code><![CDATA[$update['phone_call']['g_a_hash']]]></code>
<code><![CDATA[$update['phone_call']['id']]]></code>
<code><![CDATA[$update['phone_call']['id']]]></code>
<code><![CDATA[$update['phone_call']['id']]]></code>
<code><![CDATA[$update['phone_call']['id']]]></code>
<code><![CDATA[$update['phone_call']['need_debug']]]></code>
<code><![CDATA[$update['phone_call']['reason']]]></code>
<code><![CDATA[$update['phone_call']['video']]]></code>
<code><![CDATA[$updates['request']['body']]]></code>
<code><![CDATA[$updates['request']['body']]]></code>
<code><![CDATA[$updates['request']['body']['peer']]]></code>
<code><![CDATA[$updates['request']['body']['peer']]]></code>
<code><![CDATA[$updates['updates'][$key]]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$message['reply_markup']['rows'][$key]]]></code>
<code><![CDATA[$message['reply_markup']['rows'][$key]['buttons']]]></code>
<code><![CDATA[$message['reply_markup']['rows'][$key]['buttons'][$bkey]]]></code>
<code><![CDATA[$this->authorization['hint']]]></code>
<code><![CDATA[$update['message']['out']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$message[$param['name']]]]></code>
<code><![CDATA[$message[$param['name']]]]></code>
<code><![CDATA[$message['reply_markup']['rows'][$key]]]></code>
<code><![CDATA[$message['reply_markup']['rows'][$key]['buttons'][$bkey]]]></code>
<code><![CDATA[$new[$param['name']]]]></code>
<code><![CDATA[$new[$param['name']]]]></code>
<code><![CDATA[$result[$this->feeders[FeedLoop::GENERIC]->feedSingle($update)]]]></code>
<code><![CDATA[$this->calls[$update['phone_call']['id']]]]></code>
<code><![CDATA[$this->calls[$update['phone_call']['id']]]]></code>
<code><![CDATA[$this->calls[$update['phone_call']['id']]]]></code>
<code><![CDATA[$this->calls[$update['phone_call']['id']]]]></code>
<code><![CDATA[$this->calls[$update['phone_call']['id']]]]></code>
<code><![CDATA[$this->calls[$update['phone_call']['id']]]]></code>
<code><![CDATA[$this->eventHandlerMethods[$updateType]]]></code>
<code><![CDATA[$this->feeders[$this->feeders[FeedLoop::GENERIC]->feedSingle($update)]]]></code>
<code><![CDATA[$this->feeders[$this->feeders[FeedLoop::GENERIC]->feedSingle($updates['update'])]]]></code>
<code><![CDATA[$this->secretFeeders[$update['message']['chat_id']]]]></code>
<code><![CDATA[$this->secretFeeders[$update['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$update['chat']['id']]]]></code>
<code><![CDATA[$this->secret_chats[$update['chat']['id']]]]></code>
<code><![CDATA[$this->secret_chats[$update['message']['chat_id']]]]></code>
<code><![CDATA[$this->temp_rekeyed_secret_chats[$update['chat']['id']]]]></code>
<code><![CDATA[$this->temp_rekeyed_secret_chats[$update['chat']['id']]]]></code>
<code><![CDATA[$this->temp_requested_secret_chats[$update['chat']['id']]]]></code>
<code><![CDATA[$this->temp_requested_secret_chats[$update['chat']['id']]]]></code>
<code><![CDATA[$updates['updates'][$key]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$authorization</code>
<code>$authorization</code>
<code>$bkey</code>
<code>$button</code>
<code>$closure</code>
<code>$cur_state</code>
<code>$data</code>
<code>$from_id</code>
<code>$from_id</code>
<code>$key</code>
<code>$key</code>
<code>$message_id</code>
<code><![CDATA[$new[$param['name']]]]></code>
<code>$param</code>
<code>$result</code>
<code>$row</code>
<code><![CDATA[$this->authorization]]></code>
<code><![CDATA[$this->authorization]]></code>
<code>$to_id</code>
<code>$to_id</code>
<code>$update</code>
<code>$update</code>
<code>$updateType</code>
<code><![CDATA[$update['message']['from_id']]]></code>
<code><![CDATA[$update['message']['to_id']]]></code>
<code><![CDATA[$update['phone_call']]]></code>
<code><![CDATA[$update['phone_call']]]></code>
<code><![CDATA[$update['phone_call']]]></code>
<code>$updates</code>
<code>$value</code>
</MixedAssignment>
<MixedFunctionCall>
<code>$closure($update)</code>
</MixedFunctionCall>
<MixedInferredReturnType>
<code>Message</code>
<code>array</code>
<code><![CDATA[array<array>]]></code>
<code>int</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>discard</code>
<code>qts</code>
<code>qts</code>
<code>qts</code>
<code>qts</code>
<code>qts</code>
<code>qts</code>
<code>qts</code>
<code>qts</code>
</MixedMethodCall>
<MixedOperand>
<code><![CDATA[$cur_state->qts()]]></code>
<code><![CDATA[$cur_state->qts()]]></code>
<code><![CDATA[$cur_state->qts()]]></code>
<code><![CDATA[$cur_state->qts()]]></code>
<code><![CDATA[$update['chat']['id']]]></code>
<code><![CDATA[$update['chat']['id']]]></code>
<code><![CDATA[$update['chat']['id']]]></code>
<code><![CDATA[$update['message']['chat_id']]]></code>
<code><![CDATA[$update['message']['chat_id']]]></code>
<code><![CDATA[$update['message']['chat_id']]]></code>
<code><![CDATA[$update['qts']]]></code>
<code><![CDATA[$update['qts']]]></code>
<code><![CDATA[$update['qts']]]></code>
<code><![CDATA[$updates['_']]]></code>
<code><![CDATA[$updates['_']]]></code>
</MixedOperand>
<PossiblyNullArrayAccess>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
</PossiblyNullArrayAccess>
<PossiblyNullArrayOffset>
<code><![CDATA[$this->msg_ids]]></code>
</PossiblyNullArrayOffset>
<PossiblyNullReference>
<code>addPendingWakeups</code>
<code>waitForInternalStart</code>
</PossiblyNullReference>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[$updates['out']]]></code>
<code><![CDATA[$updates['out']]]></code>
</PossiblyUndefinedArrayOffset>
<PossiblyUndefinedVariable>
<code>$first</code>
</PossiblyUndefinedVariable>
<UnevaluatedCode>
<code>break;</code>
</UnevaluatedCode>
<UnnecessaryVarAnnotation>
<code>Response</code>
</UnnecessaryVarAnnotation>
</file>
<file src="src/MTProtoTools/UpdatesState.php">
<MixedInferredReturnType>
<code>int</code>
</MixedInferredReturnType>
<MixedOperand>
<code><![CDATA[$update['pts']]]></code>
<code><![CDATA[$update['pts_count']]]></code>
</MixedOperand>
<MixedReturnStatement>
<code><![CDATA[$update['pts'] - ($this->pts + $update['pts_count'])]]></code>
</MixedReturnStatement>
</file>
<file src="src/Magic.php">
<MixedArgument>
<code><![CDATA[Lang::$current_lang['v_tgerror']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$res['human_result']]]></code>
<code><![CDATA[$res['result']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code>$res</code>
<code>RPCErrorException::$descriptions</code>
<code>RPCErrorException::$errorMethodMap</code>
<code>self::$emojis</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$res['human_result']]]></code>
</MixedOperand>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[\end($backtrace)['file']]]></code>
</PossiblyUndefinedArrayOffset>
</file>
<file src="src/MyTelegramOrgWrapper.php">
<DeprecatedMethod>
<code>Tools::wait($callable())</code>
</DeprecatedMethod>
<MissingReturnType>
<code>completeLogin</code>
<code>createApp</code>
<code>getApp</code>
<code>hasApp</code>
<code>loop</code>
</MissingReturnType>
<MixedArgument>
<code>$callable()</code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code><![CDATA[$this->getHeaders('app')]]></code>
<code><![CDATA[$this->getHeaders('origin')]]></code>
<code><![CDATA[$this->getHeaders('origin')]]></code>
<code><![CDATA[$this->getHeaders('refer')]]></code>
<code><![CDATA[$this->getHeaders('refer')]]></code>
<code><![CDATA[$this->getHeaders('refer')]]></code>
</MixedArgumentTypeCoercion>
<MixedArrayAccess>
<code><![CDATA[$resulta['random_hash']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code>$resulta</code>
<code><![CDATA[$this->hash]]></code>
</MixedAssignment>
<PossiblyNullArgument>
<code><![CDATA[$this->settings]]></code>
</PossiblyNullArgument>
<PossiblyUndefinedArrayOffset>
<code>$value</code>
</PossiblyUndefinedArrayOffset>
<UninitializedProperty>
<code><![CDATA[$this->settings]]></code>
</UninitializedProperty>
</file>
<file src="src/Namespace/AbstractAPI.php">
<MixedAssignment>
<code>$aargs</code>
<code>$args</code>
</MixedAssignment>
<PossiblyNullReference>
<code>methodCallAsyncRead</code>
</PossiblyNullReference>
<PropertyNotSetInConstructor>
<code>$wrapper</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/PTSException.php">
<MissingParamType>
<code>$file</code>
<code>$message</code>
</MissingParamType>
<MixedArgument>
<code>$file</code>
<code>$message</code>
</MixedArgument>
</file>
<file src="src/PsrLogger.php">
<MissingParamType>
<code>$level</code>
<code>$message</code>
</MissingParamType>
<MixedArrayOffset>
<code>self::LEVEL_MAP[$level]</code>
</MixedArrayOffset>
</file>
<file src="src/RPCError/FloodWaitError.php">
<ArgumentTypeCoercion>
<code>$previous</code>
</ArgumentTypeCoercion>
<MissingParamType>
<code>$caller</code>
<code>$code</code>
<code>$message</code>
</MissingParamType>
<MixedArgument>
<code>$code</code>
<code>$message</code>
</MixedArgument>
</file>
<file src="src/RPCErrorException.php">
<MissingParamType>
<code>$caller</code>
<code>$method</code>
</MissingParamType>
<MixedArgument>
<code>$method</code>
<code><![CDATA[Lang::$current_lang['rpc_tg_error']]]></code>
</MixedArgument>
<MixedArrayAssignment>
<code>self::$errorMethodMap[$code][$method]</code>
<code>self::$errorMethodMap[$code][$method][$error]</code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code>self::$errorMethodMap[$code][$method]</code>
<code>self::$errorMethodMap[$code][$method]</code>
</MixedArrayOffset>
<MixedAssignment>
<code>$description</code>
<code>$res</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>string</code>
</MixedInferredReturnType>
<MixedOperand>
<code>$method</code>
</MixedOperand>
<MixedReturnStatement>
<code>$description</code>
</MixedReturnStatement>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[$level['file']]]></code>
<code><![CDATA[$level['line']]]></code>
</PossiblyUndefinedArrayOffset>
<UnusedParam>
<code>$code</code>
</UnusedParam>
<UnusedVariable>
<code>$additional</code>
</UnusedVariable>
</file>
<file src="src/RSA.php">
<MixedAssignment>
<code><![CDATA[$instance->e]]></code>
<code><![CDATA[$instance->n]]></code>
</MixedAssignment>
<MixedMethodCall>
<code>toBytes</code>
<code>toBytes</code>
</MixedMethodCall>
<MixedOperand>
<code><![CDATA[$TL->serializeObject(['type' => 'bytes'], $instance->n->toBytes(), 'key')]]></code>
</MixedOperand>
<PropertyNotSetInConstructor>
<code>$e</code>
<code>$fp</code>
<code>$n</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/SecretChats/AuthKeyHandler.php">
<MissingParamType>
<code>$chat</code>
</MissingParamType>
<MissingReturnType>
<code>completeSecretChat</code>
<code>requestSecretChat</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code>$g_a</code>
<code>$g_a</code>
<code>$g_b</code>
<code>$g_b</code>
<code><![CDATA[$params['exchange_id']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying'][1]]]></code>
<code><![CDATA[$this->temp_rekeyed_secret_chats[$params['exchange_id']]]]></code>
<code><![CDATA[$this->temp_requested_secret_chats[$params['id']]]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$res['id']]]></code>
<code><![CDATA[$res['id']]]></code>
<code><![CDATA[$res['id']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['key']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['key']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['key']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['key']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['key']['visualization_orig']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['key']['visualization_orig']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying'][0]]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying'][0]]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying'][0]]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying'][0]]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying'][1]]]></code>
<code><![CDATA[$this->temp_rekeyed_secret_chats[$params['exchange_id']]['fingerprint']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$this->secret_chats[$chat]['key']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['key']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['old_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['old_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['rekeying']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['ttr']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['ttr']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['updated']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['updated']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$this->secretFeeders[$params['id']]]]></code>
<code><![CDATA[$this->secretFeeders[$params['id']]]]></code>
<code><![CDATA[$this->secretFeeders[$params['id']]]]></code>
<code><![CDATA[$this->secretFeeders[$params['id']]]]></code>
<code><![CDATA[$this->secretFeeders[$params['id']]]]></code>
<code><![CDATA[$this->secretFeeders[$params['id']]]]></code>
<code><![CDATA[$this->secret_chats[$params['id']]]]></code>
<code><![CDATA[$this->secret_chats[$params['id']]]]></code>
<code><![CDATA[$this->secret_chats[\is_array($chat) ? $chat['chat_id'] : $chat]]]></code>
<code><![CDATA[$this->secret_chats[\is_array($chat) ? $chat['chat_id'] : $chat]]]></code>
<code><![CDATA[$this->temp_rekeyed_secret_chats[$params['exchange_id']]]]></code>
<code><![CDATA[$this->temp_rekeyed_secret_chats[$params['exchange_id']]]]></code>
<code><![CDATA[$this->temp_rekeyed_secret_chats[$params['exchange_id']]]]></code>
<code><![CDATA[$this->temp_rekeyed_secret_chats[$params['exchange_id']]]]></code>
<code><![CDATA[$this->temp_rekeyed_secret_chats[$params['exchange_id']]]]></code>
<code><![CDATA[$this->temp_rekeyed_secret_chats[$params['exchange_id']]]]></code>
<code><![CDATA[$this->temp_rekeyed_secret_chats[$params['exchange_id']]]]></code>
<code><![CDATA[$this->temp_rekeyed_secret_chats[$params['exchange_id']]]]></code>
<code><![CDATA[$this->temp_requested_secret_chats[$params['id']]]]></code>
<code><![CDATA[$this->temp_requested_secret_chats[$params['id']]]]></code>
<code><![CDATA[$this->temp_requested_secret_chats[$res['id']]]]></code>
</MixedArrayOffset>
<MixedArrayTypeCoercion>
<code><![CDATA[$this->secret_chats[\is_array($chat) ? $chat['chat_id'] : $chat]]]></code>
<code><![CDATA[$this->secret_chats[\is_array($chat) ? $chat['chat_id'] : $chat]]]></code>
</MixedArrayTypeCoercion>
<MixedAssignment>
<code>$g_a</code>
<code>$g_a</code>
<code>$g_b</code>
<code>$g_b</code>
<code><![CDATA[$key['visualization_orig']]]></code>
<code><![CDATA[$key['visualization_orig']]]></code>
<code>$res</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>array</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>powMod</code>
<code>powMod</code>
<code>powMod</code>
<code>powMod</code>
</MixedMethodCall>
<MixedOperand>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$res['id']]]></code>
</MixedOperand>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[$user['user_id']]]></code>
</PossiblyUndefinedArrayOffset>
</file>
<file src="src/SecretChats/MessageHandler.php">
<MissingParamType>
<code>$chat_id</code>
<code>$chat_id</code>
<code>$encrypted_data</code>
<code>$encrypted_data</code>
<code>$message_key</code>
<code>$message_key</code>
<code>$old</code>
<code>$old</code>
</MissingParamType>
<MixedArgument>
<code>$aes_iv</code>
<code>$aes_iv</code>
<code>$aes_iv</code>
<code>$aes_key</code>
<code>$aes_key</code>
<code>$aes_key</code>
<code>$encrypted_data</code>
<code>$encrypted_data</code>
<code>$message</code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code>$message_data_length</code>
<code>$message_data_length</code>
<code>$message_key</code>
<code>$message_key</code>
<code><![CDATA[$this->secret_chats[$chat_id][$old ? 'old_key' : 'key']['auth_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id][$old ? 'old_key' : 'key']['auth_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id][$old ? 'old_key' : 'key']['auth_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['admin']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['key']['auth_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['key']['auth_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['key']['auth_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['layer']]]></code>
<code><![CDATA[Lang::$current_lang['secret_chat_skipping']]]></code>
<code><![CDATA[Lang::$current_lang['secret_chat_skipping']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$message['message']['bytes']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id][$old ? 'old_key' : 'key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id][$old ? 'old_key' : 'key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id][$old ? 'old_key' : 'key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id][$old ? 'old_key' : 'key']['auth_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id][$old ? 'old_key' : 'key']['auth_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id][$old ? 'old_key' : 'key']['auth_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['admin']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['admin']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['admin']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['admin']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['key']['auth_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['key']['auth_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['key']['auth_key']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['key']['fingerprint']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['layer']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['layer']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['layer']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['layer']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['mtproto']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['out_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['out_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['rekeying']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['rekeying'][0]]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['ttr']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['updated']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['in_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['key']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['mtproto']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['old_key']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['rekeying']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['ttr']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['ttr']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['updated']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$message['message']['bytes']]]></code>
<code><![CDATA[$message['message']['decrypted_message']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['out_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['outgoing']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['outgoing'][$this->secret_chats[$chat_id]['out_seq_no']]]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['ttr']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['incoming']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['incoming'][$this->secret_chats[$message['message']['chat_id']]['in_seq_no']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['mtproto']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['mtproto']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['ttr']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$this->secret_chats[$chat_id]]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['outgoing'][$this->secret_chats[$chat_id]['out_seq_no']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['incoming'][$this->secret_chats[$message['message']['chat_id']]['in_seq_no']]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$deserialized</code>
<code>$message</code>
<code><![CDATA[$message['message']['decrypted_message']]]></code>
<code>$message_data_length</code>
<code>$message_data_length</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$message['message']['chat_id']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['key']['fingerprint']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['out_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['ttr']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['updated']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['ttr']]]></code>
<code><![CDATA[$this->secret_chats[$message['message']['chat_id']]['updated']]]></code>
</MixedOperand>
</file>
<file src="src/SecretChats/ResponseHandler.php">
<MixedArgument>
<code>$action</code>
<code>$action</code>
<code>$action</code>
<code>$chatId</code>
<code>$chatId</code>
<code>$chatId</code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$action['_']]]></code>
<code><![CDATA[$action['end_seq_no']]]></code>
<code><![CDATA[$action['layer']]]></code>
<code><![CDATA[$action['layer']]]></code>
<code><![CDATA[$action['layer']]]></code>
<code><![CDATA[$action['start_seq_no']]]></code>
<code><![CDATA[$action['ttl_seconds']]]></code>
<code><![CDATA[$decryptedMessage['_']]]></code>
<code><![CDATA[$decryptedMessage['_']]]></code>
<code><![CDATA[$decryptedMessage['_']]]></code>
<code><![CDATA[$decryptedMessage['action']]]></code>
<code><![CDATA[$decryptedMessage['in_seq_no']]]></code>
<code><![CDATA[$decryptedMessage['layer']]]></code>
<code><![CDATA[$decryptedMessage['message']]]></code>
<code><![CDATA[$decryptedMessage['out_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['created']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['created']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['in_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['layer']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['out_seq_no_x']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['out_seq_no_x']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['outgoing']]]></code>
<code><![CDATA[$update['message']['chat_id']]]></code>
<code><![CDATA[$update['message']['decrypted_message']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$action['end_seq_no']]]></code>
<code><![CDATA[$action['end_seq_no']]]></code>
<code><![CDATA[$action['start_seq_no']]]></code>
<code><![CDATA[$action['start_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['in_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['layer']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['layer']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['mtproto']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['ttl']]]></code>
<code><![CDATA[$update['message']['decrypted_message']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$this->secret_chats[$chatId]]]></code>
<code><![CDATA[$this->secret_chats[$chatId]]]></code>
<code><![CDATA[$this->secret_chats[$chatId]]]></code>
<code><![CDATA[$this->secret_chats[$chatId]]]></code>
<code><![CDATA[$this->secret_chats[$chatId]]]></code>
<code><![CDATA[$this->secret_chats[$chatId]]]></code>
<code><![CDATA[$this->secret_chats[$chatId]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$action</code>
<code><![CDATA[$action['end_seq_no']]]></code>
<code><![CDATA[$action['end_seq_no']]]></code>
<code><![CDATA[$action['start_seq_no']]]></code>
<code><![CDATA[$action['start_seq_no']]]></code>
<code>$chatId</code>
<code>$decryptedMessage</code>
<code>$message</code>
<code>$seq</code>
<code><![CDATA[$update['message']['decrypted_message']]]></code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$action['end_seq_no']]]></code>
<code><![CDATA[$action['end_seq_no']]]></code>
<code><![CDATA[$action['start_seq_no']]]></code>
<code><![CDATA[$action['start_seq_no']]]></code>
<code>$chatId</code>
<code><![CDATA[$this->secret_chats[$chatId]['created']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['created']]]></code>
<code><![CDATA[$this->secret_chats[$chatId]['in_seq_no']]]></code>
</MixedOperand>
</file>
<file src="src/SecretChats/SeqNoHandler.php">
<MissingParamType>
<code>$chat</code>
<code>$chat</code>
<code>$chat_id</code>
<code>$chat_id</code>
<code>$seqno</code>
<code>$seqno</code>
</MissingParamType>
<MissingReturnType>
<code>checkSecretInSeqNo</code>
<code>checkSecretOutSeqNo</code>
<code>generateSecretInSeqNo</code>
<code>generateSecretOutSeqNo</code>
</MissingReturnType>
<MixedArgument>
<code>$chat_id</code>
<code>$chat_id</code>
<code>$chat_id</code>
<code>$chat_id</code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$message['decrypted_message']]]></code>
<code><![CDATA[$message['decrypted_message']]]></code>
<code><![CDATA[$message['decrypted_message']['in_seq_no']]]></code>
<code><![CDATA[$message['decrypted_message']['in_seq_no']]]></code>
<code><![CDATA[$message['decrypted_message']['out_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['in_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['in_seq_no_x']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['layer']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['layer']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['out_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['out_seq_no_x']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['in_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['in_seq_no_x']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['in_seq_no_x']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['incoming']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['incoming']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['out_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['out_seq_no_x']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['out_seq_no_x']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['out_seq_no_x']]]></code>
</MixedArrayAccess>
<MixedArrayOffset>
<code><![CDATA[$this->secret_chats[$chat]]]></code>
<code><![CDATA[$this->secret_chats[$chat]]]></code>
<code><![CDATA[$this->secret_chats[$chat]]]></code>
<code><![CDATA[$this->secret_chats[$chat]]]></code>
<code><![CDATA[$this->secret_chats[$chat]]]></code>
<code><![CDATA[$this->secret_chats[$chat]]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$last</code>
<code>$message</code>
<code>$message</code>
<code>$seqno</code>
<code>$seqno</code>
<code>$temp</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$message['decrypted_message']['in_seq_no']]]></code>
<code><![CDATA[$message['decrypted_message']['in_seq_no']]]></code>
<code><![CDATA[$message['decrypted_message']['out_seq_no']]]></code>
<code>$seqno</code>
<code>$seqno</code>
<code>$seqno</code>
<code>$seqno</code>
<code><![CDATA[$this->secret_chats[$chat]['in_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chat]['out_seq_no']]]></code>
<code><![CDATA[$this->secret_chats[$chat_id]['out_seq_no']]]></code>
</MixedOperand>
</file>
<file src="src/Serialization.php">
<LessSpecificReturnStatement>
<code>[$unserialized, $unlock]</code>
</LessSpecificReturnStatement>
<MixedArgument>
<code>$class</code>
<code>$class</code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code><![CDATA[$cancelIpc->getFuture()]]></code>
<code><![CDATA[$cancelIpc->getFuture()]]></code>
<code><![CDATA[$cancelIpc->getFuture()]]></code>
</MixedArgumentTypeCoercion>
<MixedAssignment>
<code>$class</code>
<code>$class</code>
<code>$copy</code>
<code>$res</code>
<code>$unserialized</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>array{0: (ChannelledSocket|APIWrapper|Throwable|null|0), 1: (callable|null)}</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>cancel</code>
<code>getEventHandler</code>
<code>getEventHandler</code>
</MixedMethodCall>
<MixedReturnStatement>
<code>$ipcSocket</code>
<code>$ipcSocket</code>
<code>$ipcSocket</code>
<code>$ipcSocket</code>
<code><![CDATA[$ipcSocket ?? self::tryConnect($session->getIpcPath(), $cancelIpc->getFuture())]]></code>
<code><![CDATA[$ipcSocket ?? self::tryConnect($session->getIpcPath(), $cancelIpc->getFuture())]]></code>
<code><![CDATA[$ipcSocket ?? self::tryConnect($session->getIpcPath(), $cancelIpc->getFuture(), customE: new AssertionError("Please make sure the $class class is in scope, or that the event handler is running (in a separate process or in the current process)."))]]></code>
<code><![CDATA[$ipcSocket ?? self::tryConnect($session->getIpcPath(), $cancelIpc->getFuture(), customE: new AssertionError("Please make sure the $class class is in scope, or that the event handler is running (in a separate process or in the current process)."))]]></code>
</MixedReturnStatement>
<NullableReturnStatement>
<code>$ipcSocket</code>
<code>$ipcSocket</code>
</NullableReturnStatement>
<PossiblyUndefinedMethod>
<code>$unserialized</code>
</PossiblyUndefinedMethod>
<UnusedVariable>
<code>$warningId</code>
</UnusedVariable>
</file>
<file src="src/SessionPaths.php">
<LessSpecificReturnStatement>
<code><![CDATA[$this->unserialize($this->ipcStatePath)]]></code>
</LessSpecificReturnStatement>
<MixedAssignment>
<code>$unserialized</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>?object</code>
</MixedInferredReturnType>
<MixedReturnStatement>
<code>$unserialized</code>
</MixedReturnStatement>
<MoreSpecificReturnType>
<code>?IpcState</code>
</MoreSpecificReturnType>
<PossiblyNullArgument>
<code><![CDATA[$file->read(null, 1)]]></code>
<code><![CDATA[$file->read(null, 1)]]></code>
<code>$php[0]</code>
<code>$php[1]</code>
</PossiblyNullArgument>
<PossiblyNullArrayAccess>
<code>$php[0]</code>
<code>$php[1]</code>
</PossiblyNullArrayAccess>
<PropertyTypeCoercion>
<code><![CDATA[$this->lightState ??= $this->unserialize($this->lightStatePath)]]></code>
</PropertyTypeCoercion>
</file>
<file src="src/Settings/AppInfo.php">
<MixedArrayOffset>
<code><![CDATA[$settings['app_info'][$array]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$array</code>
</MixedAssignment>
<UnusedVariable>
<code>Lang::$current_lang</code>
<code>Lang::$current_lang</code>
<code>Lang::$current_lang</code>
</UnusedVariable>
</file>
<file src="src/Settings/Auth.php">
<MixedArgument>
<code><![CDATA[$settings['connection_settings']['all']['pfs']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$settings['connection_settings']['all']['pfs']]]></code>
</MixedArrayAccess>
<MixedArrayOffset>
<code><![CDATA[$settings['authorization'][$array]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$array</code>
</MixedAssignment>
</file>
<file src="src/Settings/Connection.php">
<MixedArgument>
<code><![CDATA[$isProxyArray ? $settings['proxy_extra'][$key] : $settings['proxy_extra']]]></code>
<code>$protocol</code>
<code>$proxy</code>
<code><![CDATA[$settings['connection']['ssl_subdomains']]]></code>
<code><![CDATA[$settings['media_socket_count']['max']]]></code>
<code>$transport</code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$settings['all']]]></code>
<code><![CDATA[$settings['media_socket_count']['max']]]></code>
<code><![CDATA[$settings['proxy_extra'][$key]]]></code>
</MixedArrayAccess>
<MixedArrayOffset>
<code>$settings[$array]</code>
<code>$settings[$array]</code>
<code><![CDATA[$settings['proxy_extra'][$key]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$array</code>
<code>$array</code>
<code>$key</code>
<code>$protocol</code>
<code>$proxy</code>
<code>$settings</code>
<code>$settings</code>
<code>$transport</code>
</MixedAssignment>
<MixedPropertyTypeCoercion>
<code>$proxies</code>
</MixedPropertyTypeCoercion>
</file>
<file src="src/Settings/Database/DriverDatabaseAbstract.php">
<MixedArrayOffset>
<code>$settings[$array]</code>
</MixedArrayOffset>
<MixedAssignment>
<code>$array</code>
</MixedAssignment>
</file>
<file src="src/Settings/Database/Mysql.php">
<MixedArgument>
<code>$settings</code>
</MixedArgument>
<MixedAssignment>
<code>$settings</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$settings['host']]]></code>
<code><![CDATA[$settings['port']]]></code>
</MixedOperand>
</file>
<file src="src/Settings/Database/Postgres.php">
<MixedArgument>
<code>$settings</code>
</MixedArgument>
<MixedAssignment>
<code>$settings</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$settings['host']]]></code>
<code><![CDATA[$settings['port']]]></code>
</MixedOperand>
</file>
<file src="src/Settings/Database/Redis.php">
<MixedArgument>
<code>$settings</code>
</MixedArgument>
<MixedAssignment>
<code>$settings</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$settings['host']]]></code>
<code><![CDATA[$settings['port']]]></code>
</MixedOperand>
</file>
<file src="src/Settings/Database/SqlAbstract.php">
<MixedArgument>
<code><![CDATA[$settings['user']]]></code>
</MixedArgument>
<MixedArrayOffset>
<code>$settings[$array]</code>
</MixedArrayOffset>
<MixedAssignment>
<code>$array</code>
</MixedAssignment>
</file>
<file src="src/Settings/Files.php">
<MixedArgument>
<code><![CDATA[$settings['download']['parallel_chunks']]]></code>
<code><![CDATA[$settings['download']['report_broken_media']]]></code>
<code><![CDATA[$settings['upload']['allow_automatic_upload']]]></code>
<code><![CDATA[$settings['upload']['parallel_chunks']]]></code>
</MixedArgument>
</file>
<file src="src/Settings/Logger.php">
<MixedArgument>
<code><![CDATA[$settings['logger']['logger']]]></code>
<code><![CDATA[$settings['logger']['logger_level']]]></code>
<code><![CDATA[$settings['logger']['logger_param']]]></code>
<code><![CDATA[$settings['logger']['max_size'] ?? 1 * 1024 * 1024]]></code>
</MixedArgument>
<MixedArrayAssignment>
<code><![CDATA[$settings['logger']['logger_level']]]></code>
<code><![CDATA[$settings['logger']['logger_level']]]></code>
<code><![CDATA[$settings['logger']['logger_level']]]></code>
<code><![CDATA[$settings['logger']['logger_level']]]></code>
<code><![CDATA[$settings['logger']['logger_level']]]></code>
<code><![CDATA[$settings['logger']['logger_level']]]></code>
</MixedArrayAssignment>
<MixedAssignment>
<code><![CDATA[$settings['logger']['logger_param']]]></code>
</MixedAssignment>
<PossiblyInvalidArgument>
<code><![CDATA[$this->extra]]></code>
</PossiblyInvalidArgument>
<PossiblyInvalidCast>
<code><![CDATA[$this->extra]]></code>
</PossiblyInvalidCast>
</file>
<file src="src/Settings/Peer.php">
<MixedArrayOffset>
<code><![CDATA[$settings['peer'][$array]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$array</code>
</MixedAssignment>
</file>
<file src="src/Settings/RPC.php">
<MixedArgument>
<code><![CDATA[$settings['connection_settings']['all']['drop_timeout']]]></code>
<code><![CDATA[$settings['flood_timeout']['wait_if_lt']]]></code>
<code><![CDATA[$settings['msg_array_limit']['call_queue']]]></code>
<code><![CDATA[$settings['requests']['gzip_encode_if_gt']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$settings['connection_settings']['all']['drop_timeout']]]></code>
</MixedArrayAccess>
</file>
<file src="src/Settings/SecretChats.php">
<MixedArgument>
<code><![CDATA[$settings['secret_chats']['accept_chats']]]></code>
</MixedArgument>
</file>
<file src="src/Settings/Serialization.php">
<MixedArgument>
<code><![CDATA[$settings['serialization']['serialization_interval']]]></code>
</MixedArgument>
</file>
<file src="src/Settings/TLSchema.php">
<MixedArgument>
<code><![CDATA[$settings['layer']]]></code>
<code><![CDATA[$src['mtproto']]]></code>
<code><![CDATA[$src['secret']]]></code>
<code><![CDATA[$src['telegram']]]></code>
<code>parent::__sleep()</code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$settings['src']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code>$settings</code>
<code>$src</code>
</MixedAssignment>
</file>
<file src="src/SettingsAbstract.php">
<MixedArgument>
<code>$prop</code>
</MixedArgument>
<MixedAssignment>
<code>$prop</code>
<code><![CDATA[$result['set'.\ucfirst(Tools::toCamelCase($prop))]]]></code>
</MixedAssignment>
</file>
<file src="src/Shutdown.php">
<MixedMethodCall>
<code>isTerminated</code>
</MixedMethodCall>
</file>
<file src="src/Snitch.php">
<MixedArgument>
<code>$message</code>
</MixedArgument>
<MixedAssignment>
<code>$message</code>
</MixedAssignment>
</file>
<file src="src/StrTools.php">
<ArgumentTypeCoercion>
<code><![CDATA[$length<<1]]></code>
</ArgumentTypeCoercion>
<MixedOperand>
<code><![CDATA[$entity['document_id']]]></code>
<code><![CDATA[$entity['language']]]></code>
<code><![CDATA[$entity['url']]]></code>
<code><![CDATA[$entity['user_id']]]></code>
</MixedOperand>
</file>
<file src="src/Stream/ADNLTransport/ADNLStream.php">
<MissingPropertyType>
<code>$stream</code>
</MissingPropertyType>
<MixedArgument>
<code><![CDATA[$buffer->bufferRead(4)]]></code>
</MixedArgument>
<MixedAssignment>
<code>$buffer</code>
<code>$buffer</code>
<code>$length</code>
<code>$length</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>RawStreamInterface</code>
<code>Socket</code>
<code>\danog\MadelineProto\Stream\ReadBufferInterface</code>
<code>\danog\MadelineProto\Stream\WriteBufferInterface</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>bufferRead</code>
<code>bufferRead</code>
<code>bufferWrite</code>
<code>bufferWrite</code>
<code>checkReadHash</code>
<code>checkWriteHash</code>
<code>disconnect</code>
<code>getReadBuffer</code>
<code>getSocket</code>
<code>getWriteBuffer</code>
<code>startReadHash</code>
<code>startWriteHash</code>
</MixedMethodCall>
<MixedOperand>
<code>$length</code>
<code><![CDATA[\unpack('V', $buffer->bufferRead(4))[1]]]></code>
</MixedOperand>
<MixedReturnStatement>
<code>$buffer</code>
<code>$buffer</code>
<code><![CDATA[$this->stream]]></code>
<code><![CDATA[$this->stream->getSocket()]]></code>
</MixedReturnStatement>
<PossiblyUndefinedVariable>
<code>$l</code>
</PossiblyUndefinedVariable>
</file>
<file src="src/Stream/Common/BufferedRawStream.php">
<MissingPropertyType>
<code>$append</code>
<code>$append_after</code>
<code>$memory_stream</code>
<code>$stream</code>
</MissingPropertyType>
<MixedArgument>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
</MixedArgument>
<MixedInferredReturnType>
<code>?string</code>
<code>RawStreamInterface</code>
<code>Socket</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>disconnect</code>
<code>getSocket</code>
<code>read</code>
<code>write</code>
</MixedMethodCall>
<MixedOperand>
<code><![CDATA[$this->append]]></code>
<code><![CDATA[$this->append_after]]></code>
</MixedOperand>
<MixedReturnStatement>
<code><![CDATA[$this->stream]]></code>
<code><![CDATA[$this->stream->getSocket()]]></code>
<code><![CDATA[$this->stream->read($cancellation)]]></code>
</MixedReturnStatement>
</file>
<file src="src/Stream/Common/CtrStream.php">
<MissingPropertyType>
<code>$append</code>
<code>$append_after</code>
<code>$decrypt</code>
<code>$encrypt</code>
<code>$extra</code>
<code>$read_buffer</code>
<code>$stream</code>
<code>$write_buffer</code>
</MissingPropertyType>
<MixedArgument>
<code><![CDATA[$this->extra['decrypt']['iv']]]></code>
<code><![CDATA[$this->extra['decrypt']['key']]]></code>
<code><![CDATA[$this->extra['encrypt']['iv']]]></code>
<code><![CDATA[$this->extra['encrypt']['key']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$this->extra['decrypt']]]></code>
<code><![CDATA[$this->extra['decrypt']]]></code>
<code><![CDATA[$this->extra['decrypt']['iv']]]></code>
<code><![CDATA[$this->extra['decrypt']['key']]]></code>
<code><![CDATA[$this->extra['encrypt']]]></code>
<code><![CDATA[$this->extra['encrypt']]]></code>
<code><![CDATA[$this->extra['encrypt']['iv']]]></code>
<code><![CDATA[$this->extra['encrypt']['key']]]></code>
</MixedArrayAccess>
<MixedInferredReturnType>
<code>AES</code>
<code>AES</code>
<code>RawStreamInterface</code>
<code>Socket</code>
<code>string</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>bufferRead</code>
<code>bufferWrite</code>
<code>disconnect</code>
<code>encrypt</code>
<code>getReadBuffer</code>
<code>getSocket</code>
<code>getWriteBuffer</code>
</MixedMethodCall>
<MixedOperand>
<code><![CDATA[$this->append]]></code>
<code><![CDATA[$this->append_after]]></code>
</MixedOperand>
<MixedReturnStatement>
<code><![CDATA[$this->decrypt]]></code>
<code><![CDATA[$this->encrypt]]></code>
<code><![CDATA[$this->stream]]></code>
<code><![CDATA[$this->stream->getSocket()]]></code>
<code><![CDATA[@$this->decrypt->encrypt($this->read_buffer->bufferRead($length))]]></code>
</MixedReturnStatement>
<UnusedVariable>
<code>$data</code>
</UnusedVariable>
</file>
<file src="src/Stream/Common/FileBufferedStream.php">
<MissingConstructor>
<code>$append</code>
<code>$append_after</code>
</MissingConstructor>
<PossiblyNullReference>
<code>read</code>
<code>write</code>
</PossiblyNullReference>
</file>
<file src="src/Stream/Common/HashedBufferedStream.php">
<MissingPropertyType>
<code>$hash_name</code>
<code>$read_buffer</code>
<code>$read_check_after</code>
<code>$read_check_pos</code>
<code>$read_hash</code>
<code>$rev</code>
<code>$stream</code>
<code>$write_buffer</code>
<code>$write_check_after</code>
<code>$write_check_pos</code>
<code>$write_hash</code>
</MissingPropertyType>
<MixedArgument>
<code>$data</code>
<code>$data</code>
<code><![CDATA[$this->hash_name]]></code>
<code><![CDATA[$this->hash_name]]></code>
<code><![CDATA[$this->read_hash]]></code>
<code><![CDATA[$this->read_hash]]></code>
<code><![CDATA[$this->read_hash]]></code>
<code><![CDATA[$this->write_hash]]></code>
<code><![CDATA[$this->write_hash]]></code>
<code><![CDATA[$this->write_hash]]></code>
</MixedArgument>
<MixedAssignment>
<code>$data</code>
<code>$data</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>?string</code>
<code>RawStreamInterface</code>
<code>Socket</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>bufferRead</code>
<code>bufferRead</code>
<code>bufferRead</code>
<code>bufferRead</code>
<code>bufferWrite</code>
<code>bufferWrite</code>
<code>bufferWrite</code>
<code>disconnect</code>
<code>getReadBuffer</code>
<code>getSocket</code>
<code>getWriteBuffer</code>
</MixedMethodCall>
<MixedOperand>
<code><![CDATA[$this->read_check_pos]]></code>
<code><![CDATA[$this->read_check_pos]]></code>
<code><![CDATA[$this->read_check_pos]]></code>
<code><![CDATA[$this->write_check_pos]]></code>
<code><![CDATA[$this->write_check_pos]]></code>
<code><![CDATA[$this->write_check_pos]]></code>
</MixedOperand>
<MixedReturnStatement>
<code>$data</code>
<code>$data</code>
<code><![CDATA[$this->read_buffer->bufferRead($length)]]></code>
<code><![CDATA[$this->stream]]></code>
<code><![CDATA[$this->stream->getSocket()]]></code>
</MixedReturnStatement>
</file>
<file src="src/Stream/Common/SimpleBufferedRawStream.php">
<MixedArgument>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
<code><![CDATA[$this->memory_stream]]></code>
</MixedArgument>
<MixedInferredReturnType>
<code>RawStreamInterface</code>
</MixedInferredReturnType>
<MixedReturnStatement>
<code><![CDATA[$this->stream]]></code>
</MixedReturnStatement>
</file>
<file src="src/Stream/Common/UdpBufferedStream.php">
<InvalidPropertyAssignmentValue>
<code><![CDATA[$ctx->getStream($header)]]></code>
</InvalidPropertyAssignmentValue>
<PossiblyNullReference>
<code>close</code>
</PossiblyNullReference>
<PropertyNotSetInConstructor>
<code>$append</code>
<code>$append_after</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/Stream/ConnectionContext.php">
<LessSpecificReturnStatement>
<code>$obj</code>
</LessSpecificReturnStatement>
<MissingConstructor>
<code>$socketContext</code>
<code>$uri</code>
</MissingConstructor>
<MissingParamType>
<code>$extra</code>
</MissingParamType>
<MixedArrayAssignment>
<code><![CDATA[$extra['_']]]></code>
</MixedArrayAssignment>
<MixedAssignment>
<code>$extra</code>
<code>$extra</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>array</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>connect</code>
<code>new $clazz()</code>
</MixedMethodCall>
<MixedReturnStatement>
<code>$extra</code>
</MixedReturnStatement>
<MoreSpecificReturnType>
<code>StreamInterface</code>
</MoreSpecificReturnType>
</file>
<file src="src/Stream/MTProtoTransport/AbridgedStream.php">
<MissingPropertyType>
<code>$stream</code>
</MissingPropertyType>
<MixedArgument>
<code><![CDATA[$buffer->bufferRead(1)]]></code>
</MixedArgument>
<MixedAssignment>
<code>$buffer</code>
<code>$buffer</code>
<code>$length</code>
<code>$length</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>RawStreamInterface</code>
<code>Socket</code>
<code>\danog\MadelineProto\Stream\ReadBufferInterface</code>
<code>\danog\MadelineProto\Stream\WriteBufferInterface</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>bufferRead</code>
<code>bufferRead</code>
<code>bufferWrite</code>
<code>disconnect</code>
<code>getReadBuffer</code>
<code>getSocket</code>
<code>getWriteBuffer</code>
</MixedMethodCall>
<MixedOperand>
<code><![CDATA[$buffer->bufferRead(3)]]></code>
<code>$length</code>
</MixedOperand>
<MixedReturnStatement>
<code>$buffer</code>
<code>$buffer</code>
<code><![CDATA[$this->stream]]></code>
<code><![CDATA[$this->stream->getSocket()]]></code>
</MixedReturnStatement>
<PossiblyUndefinedVariable>
<code>$l</code>
</PossiblyUndefinedVariable>
</file>
<file src="src/Stream/MTProtoTransport/FullStream.php">
<MissingPropertyType>
<code>$in_seq_no</code>
<code>$out_seq_no</code>
<code>$stream</code>
</MissingPropertyType>
<MixedArgument>
<code><![CDATA[$buffer->bufferRead(4)]]></code>
<code><![CDATA[$buffer->bufferRead(4)]]></code>
</MixedArgument>
<MixedAssignment>
<code>$buffer</code>
<code>$buffer</code>
<code>$in_seq_no</code>
<code>$length</code>
<code>$read_length</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>RawStreamInterface</code>
<code>Socket</code>
<code>\danog\MadelineProto\Stream\ReadBufferInterface</code>
<code>\danog\MadelineProto\Stream\WriteBufferInterface</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>bufferRead</code>
<code>bufferRead</code>
<code>bufferWrite</code>
<code>checkReadHash</code>
<code>checkWriteHash</code>
<code>disconnect</code>
<code>getReadBuffer</code>
<code>getSocket</code>
<code>getWriteBuffer</code>
<code>startReadHash</code>
<code>startWriteHash</code>
</MixedMethodCall>
<MixedOperand>
<code>$read_length</code>
<code>$read_length</code>
<code><![CDATA[$this->in_seq_no]]></code>
<code><![CDATA[$this->out_seq_no]]></code>
</MixedOperand>
<MixedReturnStatement>
<code>$buffer</code>
<code>$buffer</code>
<code><![CDATA[$this->stream]]></code>
<code><![CDATA[$this->stream->getSocket()]]></code>
</MixedReturnStatement>
<PossiblyUndefinedVariable>
<code>$l</code>
</PossiblyUndefinedVariable>
</file>
<file src="src/Stream/MTProtoTransport/HttpStream.php">
<MissingConstructor>
<code>$stream</code>
<code>$stream</code>
<code>$uri</code>
</MissingConstructor>
<MissingPropertyType>
<code>$code</code>
<code>$ctx</code>
<code>$header</code>
</MissingPropertyType>
<MixedArgument>
<code><![CDATA[$this->ctx]]></code>
<code><![CDATA[$this->ctx]]></code>
</MixedArgument>
<MixedInferredReturnType>
<code>string</code>
</MixedInferredReturnType>
<MixedOperand>
<code><![CDATA[$extra['password']]]></code>
<code><![CDATA[$extra['user']]]></code>
<code><![CDATA[$this->header]]></code>
</MixedOperand>
<MixedReturnStatement>
<code><![CDATA[$this->code]]></code>
</MixedReturnStatement>
<PossiblyNullOperand>
<code><![CDATA[$buffer->bufferRead(1)]]></code>
<code>$piece</code>
<code><![CDATA[$this->uri->getPort()]]></code>
</PossiblyNullOperand>
<PossiblyUndefinedArrayOffset>
<code>$code</code>
<code>$current_header[1]</code>
<code>$description</code>
</PossiblyUndefinedArrayOffset>
<PropertyTypeCoercion>
<code><![CDATA[$ctx->getStream($header)]]></code>
</PropertyTypeCoercion>
<UnusedVariable>
<code>$description</code>
</UnusedVariable>
</file>
<file src="src/Stream/MTProtoTransport/IntermediatePaddedStream.php">
<MissingPropertyType>
<code>$stream</code>
</MissingPropertyType>
<MixedArgument>
<code><![CDATA[$buffer->bufferRead(4)]]></code>
</MixedArgument>
<MixedAssignment>
<code>$buffer</code>
<code>$buffer</code>
<code>$length</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>RawStreamInterface</code>
<code>Socket</code>
<code>\danog\MadelineProto\Stream\ReadBufferInterface</code>
<code>\danog\MadelineProto\Stream\WriteBufferInterface</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>bufferRead</code>
<code>bufferWrite</code>
<code>disconnect</code>
<code>getReadBuffer</code>
<code>getSocket</code>
<code>getWriteBuffer</code>
</MixedMethodCall>
<MixedReturnStatement>
<code>$buffer</code>
<code>$buffer</code>
<code><![CDATA[$this->stream]]></code>
<code><![CDATA[$this->stream->getSocket()]]></code>
</MixedReturnStatement>
<PossiblyUndefinedVariable>
<code>$l</code>
</PossiblyUndefinedVariable>
</file>
<file src="src/Stream/MTProtoTransport/IntermediateStream.php">
<MissingPropertyType>
<code>$stream</code>
</MissingPropertyType>
<MixedArgument>
<code><![CDATA[$buffer->bufferRead(4)]]></code>
</MixedArgument>
<MixedAssignment>
<code>$buffer</code>
<code>$buffer</code>
<code>$length</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>RawStreamInterface</code>
<code>Socket</code>
<code>\danog\MadelineProto\Stream\ReadBufferInterface</code>
<code>\danog\MadelineProto\Stream\WriteBufferInterface</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>bufferRead</code>
<code>bufferWrite</code>
<code>disconnect</code>
<code>getReadBuffer</code>
<code>getSocket</code>
<code>getWriteBuffer</code>
</MixedMethodCall>
<MixedReturnStatement>
<code>$buffer</code>
<code>$buffer</code>
<code><![CDATA[$this->stream]]></code>
<code><![CDATA[$this->stream->getSocket()]]></code>
</MixedReturnStatement>
<PossiblyUndefinedVariable>
<code>$l</code>
</PossiblyUndefinedVariable>
</file>
<file src="src/Stream/MTProtoTransport/ObfuscatedStream.php">
<MissingPropertyType>
<code>$extra</code>
<code>$stream</code>
</MissingPropertyType>
<MixedArgument>
<code><![CDATA[$extra['secret']]]></code>
<code><![CDATA[$extra['secret']]]></code>
<code><![CDATA[$extra['secret']]]></code>
<code><![CDATA[$extra['secret']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$this->extra['address']]]></code>
<code><![CDATA[$this->extra['port']]]></code>
<code><![CDATA[$this->extra['secret']]]></code>
<code><![CDATA[$this->extra['secret']]]></code>
</MixedArrayAccess>
<MixedOperand>
<code><![CDATA[$this->extra['address']]]></code>
<code><![CDATA[$this->extra['port']]]></code>
<code><![CDATA[$this->extra['secret']]]></code>
<code><![CDATA[$this->extra['secret']]]></code>
</MixedOperand>
</file>
<file src="src/Stream/Ogg/Ogg.php">
<MismatchingDocblockReturnType>
<code><![CDATA[iterable<string>]]></code>
</MismatchingDocblockReturnType>
<MixedArgument>
<code>$content[$offset++]</code>
<code>$content[$offset++]</code>
<code>$content[$offset++]</code>
<code>$content[$offset++]</code>
</MixedArgument>
<MixedReturnTypeCoercion>
<code><![CDATA[$this->emitter]]></code>
<code><![CDATA[iterable<string>]]></code>
<code><![CDATA[iterable<string>]]></code>
</MixedReturnTypeCoercion>
<PossiblyInvalidArgument>
<code>$offset</code>
<code>$offset</code>
<code>$offset</code>
<code>$offset</code>
<code>$offset</code>
<code>$offset</code>
<code>$size</code>
</PossiblyInvalidArgument>
<PossiblyInvalidPropertyAssignmentValue>
<code><![CDATA[$this->currentDuration += $frameDuration]]></code>
<code><![CDATA[$this->currentDuration += $totalDuration]]></code>
</PossiblyInvalidPropertyAssignmentValue>
<PropertyNotSetInConstructor>
<code>$emitter</code>
<code>$packFormat</code>
<code>$stream</code>
<code>$streamCount</code>
</PropertyNotSetInConstructor>
<PropertyTypeCoercion>
<code><![CDATA[$stream->getReadBuffer($l)]]></code>
</PropertyTypeCoercion>
<ReferenceConstraintViolation>
<code>$offset</code>
<code>$offset</code>
<code>$offset</code>
<code>$offset</code>
</ReferenceConstraintViolation>
<UnusedVariable>
<code>$stereo</code>
</UnusedVariable>
</file>
<file src="src/Stream/Proxy/HttpProxy.php">
<MissingConstructor>
<code>$stream</code>
</MissingConstructor>
<MissingPropertyType>
<code>$extra</code>
</MissingPropertyType>
<MixedArgument>
<code>$l</code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$this->extra['address']]]></code>
<code><![CDATA[$this->extra['port']]]></code>
</MixedArrayAccess>
<MixedOperand>
<code><![CDATA[$this->extra['address']]]></code>
<code><![CDATA[$this->extra['password']]]></code>
<code><![CDATA[$this->extra['port']]]></code>
<code><![CDATA[$this->extra['username']]]></code>
</MixedOperand>
<PossiblyNullArgument>
<code>$read</code>
</PossiblyNullArgument>
<PossiblyNullOperand>
<code><![CDATA[$buffer->bufferRead(1)]]></code>
<code>$piece</code>
<code>$port</code>
</PossiblyNullOperand>
<PossiblyUndefinedArrayOffset>
<code>$code</code>
<code>$current_header[1]</code>
<code>$description</code>
</PossiblyUndefinedArrayOffset>
<PossiblyUndefinedVariable>
<code>$l</code>
</PossiblyUndefinedVariable>
<PropertyTypeCoercion>
<code><![CDATA[$ctx->getStream()]]></code>
</PropertyTypeCoercion>
<UnusedVariable>
<code>$read</code>
</UnusedVariable>
</file>
<file src="src/Stream/Proxy/SocksProxy.php">
<MissingConstructor>
<code>$stream</code>
</MissingConstructor>
<MissingPropertyType>
<code>$extra</code>
</MissingPropertyType>
<MixedArgument>
<code><![CDATA[$this->extra['password']]]></code>
<code><![CDATA[$this->extra['username']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$this->extra['address']]]></code>
<code><![CDATA[$this->extra['password']]]></code>
<code><![CDATA[$this->extra['port']]]></code>
<code><![CDATA[$this->extra['username']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code>$port</code>
</MixedAssignment>
<MixedOperand>
<code>$port</code>
<code><![CDATA[$this->extra['address']]]></code>
<code><![CDATA[$this->extra['password']]]></code>
<code><![CDATA[$this->extra['port']]]></code>
<code><![CDATA[$this->extra['username']]]></code>
</MixedOperand>
<PossiblyNullArgument>
<code><![CDATA[$buffer->bufferRead(1)]]></code>
<code><![CDATA[$buffer->bufferRead(1)]]></code>
<code><![CDATA[$buffer->bufferRead(1)]]></code>
<code><![CDATA[$buffer->bufferRead(1)]]></code>
<code><![CDATA[$buffer->bufferRead(1)]]></code>
<code><![CDATA[$buffer->bufferRead(1)]]></code>
<code><![CDATA[$buffer->bufferRead(1)]]></code>
<code><![CDATA[$buffer->bufferRead(1)]]></code>
<code><![CDATA[$buffer->bufferRead(1)]]></code>
<code><![CDATA[$buffer->bufferRead(16)]]></code>
<code><![CDATA[$buffer->bufferRead(2)]]></code>
<code><![CDATA[$buffer->bufferRead(4)]]></code>
<code>$length</code>
</PossiblyNullArgument>
<PossiblyNullOperand>
<code>$ip</code>
</PossiblyNullOperand>
<PossiblyUndefinedVariable>
<code>$ip</code>
</PossiblyUndefinedVariable>
<PropertyTypeCoercion>
<code><![CDATA[$ctx->getStream(\chr(5).\chr(\strlen($methods)).$methods)]]></code>
</PropertyTypeCoercion>
</file>
<file src="src/Stream/Transport/DefaultStream.php">
<PossiblyNullReference>
<code>setupTls</code>
</PossiblyNullReference>
</file>
<file src="src/Stream/Transport/PremadeStream.php">
<MissingReturnType>
<code>getStream</code>
</MissingReturnType>
<PossiblyNullReference>
<code>write</code>
</PossiblyNullReference>
<UndefinedInterfaceMethod>
<code>write</code>
</UndefinedInterfaceMethod>
</file>
<file src="src/Stream/Transport/WsStream.php">
<MissingConstructor>
<code>$connector</code>
<code>$stream</code>
</MissingConstructor>
<MixedInferredReturnType>
<code>?string</code>
</MixedInferredReturnType>
<MixedReturnStatement>
<code>$data</code>
</MixedReturnStatement>
<PossiblyUndefinedVariable>
<code>$data</code>
</PossiblyUndefinedVariable>
</file>
<file src="src/TL/Conversion/BotAPI.php">
<MissingParamType>
<code>$markup</code>
</MissingParamType>
<MissingReturnType>
<code>parseReplyMarkup</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[$args['entities']]]></code>
<code><![CDATA[$args['entities']]]></code>
<code><![CDATA[$args['entities']]]></code>
<code><![CDATA[$args['message']]]></code>
<code>$arguments[$key]</code>
<code>$arguments[$key]</code>
<code><![CDATA[$arguments['entities'] ?? []]]></code>
<code><![CDATA[$arguments['entities'] ?? []]]></code>
<code><![CDATA[$arguments['parse_mode']]]></code>
<code><![CDATA[$arguments['parse_mode']]]></code>
<code><![CDATA[$arguments['parse_mode']['_']]]></code>
<code><![CDATA[$attribute['file_name']]]></code>
<code><![CDATA[$button['url']]]></code>
<code><![CDATA[$button['url']]]></code>
<code><![CDATA[$data['_']]]></code>
<code><![CDATA[$data['document']['access_hash']]]></code>
<code><![CDATA[$data['document']['dc_id']]]></code>
<code><![CDATA[$data['document']['id']]]></code>
<code><![CDATA[$data['document']['mime_type']]]></code>
<code><![CDATA[$data['document']['thumbs']]]></code>
<code><![CDATA[$data['document']['thumbs']]]></code>
<code><![CDATA[$data['entities']]]></code>
<code><![CDATA[$data['fwd_from']['channel_id']]]></code>
<code><![CDATA[$data['media']]]></code>
<code><![CDATA[$data['media']]]></code>
<code>$element</code>
<code><![CDATA[$entity['url']]]></code>
<code><![CDATA[$markup['inline_keyboard']]]></code>
<code><![CDATA[$markup['keyboard']]]></code>
<code>$max_length</code>
<code><![CDATA[Lang::$current_lang['botapi_conversion_error']]]></code>
<code>TYPES_IDS[$type_name]</code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$args['entities'][$k]]]></code>
<code><![CDATA[$attribute['_']]]></code>
<code><![CDATA[$attribute['alt']]]></code>
<code><![CDATA[$attribute['duration']]]></code>
<code><![CDATA[$attribute['duration']]]></code>
<code><![CDATA[$attribute['file_name']]]></code>
<code><![CDATA[$attribute['h']]]></code>
<code><![CDATA[$attribute['h']]]></code>
<code><![CDATA[$attribute['mask']]]></code>
<code><![CDATA[$attribute['mask_coords']]]></code>
<code><![CDATA[$attribute['performer']]]></code>
<code><![CDATA[$attribute['round_message']]]></code>
<code><![CDATA[$attribute['stickerset']]]></code>
<code><![CDATA[$attribute['title']]]></code>
<code><![CDATA[$attribute['voice']]]></code>
<code><![CDATA[$attribute['w']]]></code>
<code><![CDATA[$attribute['w']]]></code>
<code><![CDATA[$attribute['waveform']]]></code>
<code><![CDATA[$button['allow_bot_chats']]]></code>
<code><![CDATA[$button['allow_channel_chats']]]></code>
<code><![CDATA[$button['allow_group_chats']]]></code>
<code><![CDATA[$button['allow_user_chats']]]></code>
<code><![CDATA[$button['bot_username']]]></code>
<code><![CDATA[$button['forward_text']]]></code>
<code><![CDATA[$button['query']]]></code>
<code><![CDATA[$button['request_write_access']]]></code>
<code><![CDATA[$button['text']]]></code>
<code><![CDATA[$button['url']]]></code>
<code><![CDATA[$button['url']]]></code>
<code><![CDATA[$button['url']]]></code>
<code><![CDATA[$button['url']]]></code>
<code><![CDATA[$button['web_app']['url']]]></code>
<code><![CDATA[$data['date']]]></code>
<code><![CDATA[$data['document']['access_hash']]]></code>
<code><![CDATA[$data['document']['access_hash']]]></code>
<code><![CDATA[$data['document']['attributes']]]></code>
<code><![CDATA[$data['document']['dc_id']]]></code>
<code><![CDATA[$data['document']['file_reference']]]></code>
<code><![CDATA[$data['document']['id']]]></code>
<code><![CDATA[$data['document']['mime_type']]]></code>
<code><![CDATA[$data['document']['mime_type']]]></code>
<code><![CDATA[$data['document']['size']]]></code>
<code><![CDATA[$data['fwd_from']['channel_id']]]></code>
<code><![CDATA[$data['fwd_from']['channel_post']]]></code>
<code><![CDATA[$data['fwd_from']['date']]]></code>
<code><![CDATA[$data['fwd_from']['from_id']]]></code>
<code><![CDATA[$data['id']]]></code>
<code><![CDATA[$data['media']['_']]]></code>
<code><![CDATA[$data['message']]]></code>
<code><![CDATA[$data['peer_id']]]></code>
<code><![CDATA[$data['photo']['sizes']]]></code>
<code><![CDATA[$data['post']]]></code>
<code><![CDATA[$data['silent']]]></code>
<code><![CDATA[$entity['length']]]></code>
<code><![CDATA[$entity['length']]]></code>
<code><![CDATA[$entity['offset']]]></code>
<code><![CDATA[$entity['offset']]]></code>
<code><![CDATA[$entity['url']]]></code>
<code><![CDATA[$markup['inline_keyboard']]]></code>
<code><![CDATA[$markup['inline_keyboard']]]></code>
<code><![CDATA[$markup['keyboard']]]></code>
<code><![CDATA[$markup['keyboard']]]></code>
<code><![CDATA[$markup['one_time_keyboard']]]></code>
<code><![CDATA[$markup['one_time_keyboard']]]></code>
<code><![CDATA[$markup['resize_keyboard']]]></code>
<code><![CDATA[$markup['resize_keyboard']]]></code>
<code><![CDATA[$photo['_']]]></code>
<code>TYPES_IDS[$type_name]</code>
<code><![CDATA[\end($data['document']['thumbs'])['_']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$entity['length']]]></code>
<code><![CDATA[$entity['length']]]></code>
<code><![CDATA[$entity['offset']]]></code>
<code><![CDATA[$markup['_']]]></code>
<code><![CDATA[$markup['_']]]></code>
<code><![CDATA[$markup['resize']]]></code>
<code><![CDATA[$markup['rows']]]></code>
<code><![CDATA[$markup['rows']]]></code>
<code><![CDATA[$markup['single_use']]]></code>
<code><![CDATA[$multiple_args[$i]['entities'][]]]></code>
<code><![CDATA[$multiple_args[$i]['entities'][]]]></code>
<code><![CDATA[$newentity['length']]]></code>
<code><![CDATA[$newentity['offset']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$res['photo'][$key]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code><![CDATA[$args['entities']]]></code>
<code>$arguments[$mtproto]</code>
<code><![CDATA[$arguments['reply_markup']]]></code>
<code>$attribute</code>
<code>$audio</code>
<code>$button</code>
<code>$button</code>
<code>$button</code>
<code>$data</code>
<code><![CDATA[$data['custom_emoji_id']]]></code>
<code>$element</code>
<code>$entity</code>
<code>$entity</code>
<code>$entity</code>
<code><![CDATA[$entity['length']]]></code>
<code><![CDATA[$entity['length']]]></code>
<code><![CDATA[$entity['offset']]]></code>
<code>$key</code>
<code><![CDATA[$markup['resize']]]></code>
<code><![CDATA[$markup['single_use']]]></code>
<code>$max_length</code>
<code><![CDATA[$multiple_args[$i]['entities'][]]]></code>
<code><![CDATA[$multiple_args[$i]['entities'][]]]></code>
<code><![CDATA[$newd['date']]]></code>
<code><![CDATA[$newd['edit_date']]]></code>
<code><![CDATA[$newd['forward_date']]]></code>
<code><![CDATA[$newd['forward_from_message_id']]]></code>
<code><![CDATA[$newd['message_id']]]></code>
<code><![CDATA[$newd['post']]]></code>
<code><![CDATA[$newd['silent']]]></code>
<code><![CDATA[$newd['text']]]></code>
<code><![CDATA[$newd['views']]]></code>
<code>$newentity</code>
<code><![CDATA[$newentity['length']]]></code>
<code><![CDATA[$newentity['offset']]]></code>
<code><![CDATA[$newrows[$key]['buttons'][$button_key]['bot']]]></code>
<code><![CDATA[$newrows[$key]['buttons'][$button_key]['data']]]></code>
<code><![CDATA[$newrows[$key]['buttons'][$button_key]['fwd_text']]]></code>
<code><![CDATA[$newrows[$key]['buttons'][$button_key]['query']]]></code>
<code><![CDATA[$newrows[$key]['buttons'][$button_key]['query']]]></code>
<code><![CDATA[$newrows[$key]['buttons'][$button_key]['request_write_access']]]></code>
<code><![CDATA[$newrows[$key]['buttons'][$button_key]['text']]]></code>
<code><![CDATA[$newrows[$key]['buttons'][$button_key]['url']]]></code>
<code><![CDATA[$newrows[$key]['buttons'][$button_key]['url']]]></code>
<code><![CDATA[$newrows[$key]['buttons'][$button_key]['url']]]></code>
<code>$offset</code>
<code>$offset</code>
<code>$photo</code>
<code><![CDATA[$res['caption']]]></code>
<code><![CDATA[$res['duration']]]></code>
<code><![CDATA[$res['duration']]]></code>
<code><![CDATA[$res['emoji']]]></code>
<code><![CDATA[$res['file_name']]]></code>
<code><![CDATA[$res['file_name']]]></code>
<code><![CDATA[$res['file_size']]]></code>
<code><![CDATA[$res['height']]]></code>
<code><![CDATA[$res['height']]]></code>
<code><![CDATA[$res['mask']]]></code>
<code><![CDATA[$res['mask_coords']]]></code>
<code><![CDATA[$res['mime_type']]]></code>
<code><![CDATA[$res['performer']]]></code>
<code><![CDATA[$res['sticker_set']]]></code>
<code><![CDATA[$res['title']]]></code>
<code><![CDATA[$res['title']]]></code>
<code><![CDATA[$res['width']]]></code>
<code><![CDATA[$res['width']]]></code>
<code>$row</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$audio['performer']]]></code>
<code><![CDATA[$data['document']['id']]]></code>
<code><![CDATA[$entity['length']]]></code>
<code><![CDATA[$entity['length']]]></code>
<code><![CDATA[$entity['offset']]]></code>
<code><![CDATA[$entity['offset']]]></code>
<code><![CDATA[$entity['offset']]]></code>
<code><![CDATA[$entity['offset']]]></code>
<code>$offset</code>
<code>$offset</code>
<code>$offset</code>
<code><![CDATA[$res['file_name']]]></code>
<code><![CDATA[$res['file_name']]]></code>
</MixedOperand>
<MixedStringOffsetAssignment>
<code><![CDATA[$multiple_args[$i]['entities'][]]]></code>
<code><![CDATA[$multiple_args[$i]['entities'][]]]></code>
</MixedStringOffsetAssignment>
<MoreSpecificReturnType>
<code><![CDATA[array<int|int, array{_: string, buttons: array<int|int, array{_: string, text: mixed, same_peer?: bool, query?: mixed, data?: mixed, url?: mixed}>}>]]></code>
</MoreSpecificReturnType>
<PossiblyInvalidArgument>
<code><![CDATA[$args['entities']]]></code>
<code><![CDATA[$args['entities']]]></code>
</PossiblyInvalidArgument>
<PossiblyInvalidArrayOffset>
<code><![CDATA[$multiple_args[$i]['entities'][]]]></code>
<code><![CDATA[$multiple_args[$i]['entities'][]]]></code>
</PossiblyInvalidArrayOffset>
<PossiblyInvalidIterator>
<code><![CDATA[$args['entities']]]></code>
</PossiblyInvalidIterator>
<PossiblyUndefinedArrayOffset>
<code>$arguments[$key]</code>
<code><![CDATA[$data['document']]]></code>
</PossiblyUndefinedArrayOffset>
</file>
<file src="src/TL/Conversion/BotAPIFiles.php">
<MissingParamType>
<code>$photo</code>
<code>$photoSize</code>
<code>$thumbnail</code>
</MissingParamType>
<MixedArgument>
<code><![CDATA[$photoSize['location']['local_id']]]></code>
<code><![CDATA[$photoSize['location']['volume_id']]]></code>
<code><![CDATA[$photoSize['sizes']]]></code>
<code><![CDATA[$photoSize['type']]]></code>
<code><![CDATA[$photo['access_hash'] ?? 0]]></code>
<code><![CDATA[$photo['dc_id'] ?? 0]]></code>
<code><![CDATA[$photo['id'] ?? 0]]></code>
<code><![CDATA[Lang::$current_lang['file_type_invalid']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$photoSize['bytes']]]></code>
<code><![CDATA[$photoSize['h']]]></code>
<code><![CDATA[$photoSize['location']]]></code>
<code><![CDATA[$photoSize['location']]]></code>
<code><![CDATA[$photoSize['location']]]></code>
<code><![CDATA[$photoSize['location']]]></code>
<code><![CDATA[$photoSize['location']['local_id']]]></code>
<code><![CDATA[$photoSize['location']['local_id']]]></code>
<code><![CDATA[$photoSize['location']['volume_id']]]></code>
<code><![CDATA[$photoSize['location']['volume_id']]]></code>
<code><![CDATA[$photoSize['size']]]></code>
<code><![CDATA[$photoSize['sizes']]]></code>
<code><![CDATA[$photoSize['type']]]></code>
<code><![CDATA[$photoSize['w']]]></code>
<code><![CDATA[$photo['_']]]></code>
<code><![CDATA[$photo['access_hash']]]></code>
<code><![CDATA[$photo['dc_id']]]></code>
<code><![CDATA[$photo['file_reference']]]></code>
<code><![CDATA[$photo['id']]]></code>
<code><![CDATA[$photo['id']]]></code>
</MixedArrayAccess>
<MixedOperand>
<code><![CDATA[$photoSize['location']['local_id']]]></code>
<code><![CDATA[$photoSize['location']['volume_id']]]></code>
<code><![CDATA[$photo['id']]]></code>
</MixedOperand>
<UnusedParam>
<code>$thumbnail</code>
</UnusedParam>
</file>
<file src="src/TL/Conversion/Exception.php">
<MissingParamType>
<code>$file</code>
<code>$message</code>
</MissingParamType>
<MixedArgument>
<code>$file</code>
<code>$message</code>
</MixedArgument>
</file>
<file src="src/TL/Conversion/MarkdownEntities.php">
<DocblockTypeContradiction>
<code>$posClose === false</code>
<code>$posClose === false</code>
</DocblockTypeContradiction>
<UnusedVariable>
<code>$start</code>
</UnusedVariable>
</file>
<file src="src/TL/Conversion/TD.php">
<MissingReturnType>
<code>MTProtoToTd</code>
<code>MTProtoToTdcli</code>
<code>tdToTdcli</code>
</MissingReturnType>
<MixedArgument>
<code>$params[$td]</code>
<code><![CDATA[$params['ID']]]></code>
<code>$value</code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code>$key</code>
<code>$key</code>
</MixedArgumentTypeCoercion>
<MixedArrayAccess>
<code>$params[$mtproto[0]][$mtproto[1]]</code>
<code><![CDATA[$params[$td]['_']]]></code>
<code><![CDATA[$params[$td]['disable_web_page_preview']]]></code>
<code><![CDATA[$params['fwd_from']['channel_id']]]></code>
<code><![CDATA[$params['fwd_from']['channel_post']]]></code>
<code><![CDATA[$params['fwd_from']['date']]]></code>
<code><![CDATA[$params['fwd_from']['from_id']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$params[$td]['_']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[self::TD_PARAMS_CONVERSION[$params['_']]]]></code>
<code><![CDATA[self::TD_REVERSE[$params['_']]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$newparams[$key]</code>
<code>$newparams[$mtproto[0]]</code>
<code>$newparams[$mtproto[0]]</code>
<code>$newparams[$td]</code>
<code>$newparams[$td]</code>
<code>$newparams[$td]</code>
<code>$newparams[$td]</code>
<code>$newparams[$td]</code>
<code>$newparams[$td]</code>
<code><![CDATA[$newparams[$td]['channel_post']]]></code>
<code><![CDATA[$newparams[$td]['date']]]></code>
<code><![CDATA[$newparams[$td]['entities']]]></code>
<code><![CDATA[$newparams[$td]['web_page']]]></code>
<code><![CDATA[$newparams['no_webpage']]]></code>
<code>$value</code>
<code>$value</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>array</code>
</MixedInferredReturnType>
<MixedOperand>
<code><![CDATA[$newparams['ttl']]]></code>
<code><![CDATA[$params['fwd_from']['channel_id']]]></code>
</MixedOperand>
<PossiblyInvalidArgument>
<code><![CDATA[$params['ID']]]></code>
</PossiblyInvalidArgument>
<PossiblyInvalidCast>
<code><![CDATA[$params['ID']]]></code>
</PossiblyInvalidCast>
<PossiblyNullArrayAccess>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']['id']]]></code>
</PossiblyNullArrayAccess>
<PossiblyNullOperand>
<code><![CDATA[$newparams['ttl']]]></code>
</PossiblyNullOperand>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[$newparams['ttl']]]></code>
<code><![CDATA[$params['message']]]></code>
<code><![CDATA[$params['out']]]></code>
<code><![CDATA[$params['out']]]></code>
<code><![CDATA[$params['out']]]></code>
</PossiblyUndefinedArrayOffset>
</file>
<file src="src/TL/Exception.php">
<MissingParamType>
<code>$file</code>
<code>$message</code>
</MissingParamType>
<MixedArgument>
<code>$file</code>
<code>$message</code>
</MixedArgument>
</file>
<file src="src/TL/PrettyException.php">
<MixedArgument>
<code><![CDATA[$frame['file']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$frame['args']]]></code>
<code><![CDATA[$frame['args'][2]]]></code>
<code><![CDATA[$frame['args'][2]]]></code>
<code><![CDATA[$frame['args'][2]]]></code>
<code><![CDATA[$frame['file']]]></code>
<code><![CDATA[$frame['line']]]></code>
</MixedArrayAccess>
<MixedAssignment>
<code>$frame</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$frame['args'][2]]]></code>
<code><![CDATA[$frame['args'][2]]]></code>
<code><![CDATA[$frame['function']]]></code>
<code><![CDATA[$frame['line']]]></code>
</MixedOperand>
</file>
<file src="src/TL/TL.php">
<DocblockTypeContradiction>
<code>\is_resource($stream)</code>
<code>\is_resource($stream)</code>
</DocblockTypeContradiction>
<InvalidArrayOffset>
<code><![CDATA[($this->API->getInfo($arguments[$current_argument['name']]))['InputEncryptedChat']]]></code>
</InvalidArrayOffset>
<InvalidReturnStatement>
<code>$result</code>
</InvalidReturnStatement>
<InvalidReturnType>
<code><![CDATA[array<string, list<T>>]]></code>
</InvalidReturnType>
<MissingClosureParamType>
<code>$arg</code>
<code>$v</code>
<code>$v</code>
</MissingClosureParamType>
<MissingReturnType>
<code>deserialize</code>
<code>serializeMethod</code>
<code>serializeObject</code>
<code>serializeParams</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[$TL_dict['constructors'][$key]['id']]]></code>
<code><![CDATA[$TL_dict['methods'][$key]['id']]]></code>
<code>$arg</code>
<code>$arguments</code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]['_']]]></code>
<code><![CDATA[$arguments[$current_argument['name']]['_']]]></code>
<code><![CDATA[$arguments['id']]]></code>
<code><![CDATA[$arguments['id']]]></code>
<code><![CDATA[$arguments['message']]]></code>
<code><![CDATA[$arguments['peer']['chat_id']]]></code>
<code><![CDATA[$arguments['queuePromise']]]></code>
<code>$button</code>
<code>$constructorData</code>
<code>$constructorData</code>
<code>$current_argument</code>
<code>$current_argument</code>
<code>$current_argument</code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['type']]]></code>
<code>$elem</code>
<code>$elem</code>
<code>$file</code>
<code>$file</code>
<code>$long_len</code>
<code>$object</code>
<code>$object</code>
<code>$object</code>
<code>$object</code>
<code>$object</code>
<code>$object</code>
<code><![CDATA[$object->toBytes()]]></code>
<code><![CDATA[$object['_']]]></code>
<code><![CDATA[$object['bytes']]]></code>
<code><![CDATA[$object['bytes']]]></code>
<code>$pair</code>
<code>$predicate</code>
<code>$tl</code>
<code><![CDATA[$tl['layer'] ?? -1]]></code>
<code><![CDATA[$tl['layer'] ?? -1]]></code>
<code><![CDATA[$type['connection']->outgoing_messages[$x['req_msg_id']]]]></code>
<code><![CDATA[$type['connection']->outgoing_messages[$x['req_msg_id']]->getConstructor()]]></code>
<code><![CDATA[$type['subtype']]]></code>
<code><![CDATA[$type['type']]]></code>
<code><![CDATA[$type['type']]]></code>
<code><![CDATA[$type['type']]]></code>
<code><![CDATA[$type['type']]]></code>
<code><![CDATA[$type['type']]]></code>
<code><![CDATA[$type['type']]]></code>
<code><![CDATA[$type['type']]]></code>
<code><![CDATA[$x['_']]]></code>
<code><![CDATA[$x['data']]]></code>
<code><![CDATA[$x['result']]]></code>
<code>-$long_len</code>
<code><![CDATA[Lang::$current_lang['array_invalid']]]></code>
<code><![CDATA[Lang::$current_lang['could_not_convert_object']]]></code>
<code><![CDATA[Lang::$current_lang['file_parsing']]]></code>
<code><![CDATA[Lang::$current_lang['type_extract_error']]]></code>
<code><![CDATA[Lang::$current_lang['type_extract_error_id']]]></code>
<code><![CDATA[Lang::$current_lang['type_extract_error_id']]]></code>
<code>\is_int($object) ? (float) $object : $object</code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code>$cb</code>
<code>$id</code>
<code>$id</code>
<code>$k</code>
<code>$k</code>
<code>$scheme_type</code>
</MixedArgumentTypeCoercion>
<MixedArrayAccess>
<code><![CDATA[$TL_dict['constructors']]]></code>
<code><![CDATA[$TL_dict['constructors']]]></code>
<code><![CDATA[$TL_dict['constructors']]]></code>
<code><![CDATA[$TL_dict['constructors'][$key]]]></code>
<code><![CDATA[$TL_dict['constructors'][$key]]]></code>
<code><![CDATA[$TL_dict['constructors'][$key]['id']]]></code>
<code><![CDATA[$TL_dict['methods']]]></code>
<code><![CDATA[$TL_dict['methods']]]></code>
<code><![CDATA[$TL_dict['methods']]]></code>
<code><![CDATA[$TL_dict['methods'][$key]]]></code>
<code><![CDATA[$TL_dict['methods'][$key]]]></code>
<code><![CDATA[$TL_dict['methods'][$key]['id']]]></code>
<code><![CDATA[$arg['flag']]]></code>
<code><![CDATA[$arg['flag']]]></code>
<code><![CDATA[$arg['flag']]]></code>
<code><![CDATA[$arg['name']]]></code>
<code><![CDATA[$arg['name']]]></code>
<code><![CDATA[$arg['name']]]></code>
<code><![CDATA[$arg['pow']]]></code>
<code><![CDATA[$arg['pow']]]></code>
<code><![CDATA[$arg['pow']]]></code>
<code><![CDATA[$arg['type']]]></code>
<code><![CDATA[$arguments[$current_argument['name']]['_']]]></code>
<code><![CDATA[$arguments[$current_argument['name']]['_']]]></code>
<code><![CDATA[$arguments['file']['mime_type']]]></code>
<code><![CDATA[$arguments['peer']['chat_id']]]></code>
<code><![CDATA[$constructorData['id']]]></code>
<code><![CDATA[$constructorData['method']]]></code>
<code><![CDATA[$constructorData['method']]]></code>
<code><![CDATA[$constructorData['params']]]></code>
<code><![CDATA[$constructorData['predicate']]]></code>
<code><![CDATA[$constructorData['predicate']]]></code>
<code><![CDATA[$constructorData['predicate']]]></code>
<code><![CDATA[$constructorData['type']]]></code>
<code><![CDATA[$cur_flag['flag']]]></code>
<code><![CDATA[$cur_flag['flag']]]></code>
<code><![CDATA[$cur_flag['flag']]]></code>
<code><![CDATA[$cur_flag['flag']]]></code>
<code><![CDATA[$cur_flag['flag']]]></code>
<code><![CDATA[$cur_flag['flag']]]></code>
<code><![CDATA[$cur_flag['flag']]]></code>
<code><![CDATA[$cur_flag['flag']]]></code>
<code><![CDATA[$cur_flag['flag']]]></code>
<code><![CDATA[$cur_flag['name']]]></code>
<code><![CDATA[$cur_flag['name']]]></code>
<code><![CDATA[$cur_flag['name']]]></code>
<code><![CDATA[$cur_flag['name']]]></code>
<code><![CDATA[$cur_flag['name']]]></code>
<code><![CDATA[$cur_flag['name']]]></code>
<code><![CDATA[$cur_flag['pow']]]></code>
<code><![CDATA[$cur_flag['pow']]]></code>
<code><![CDATA[$cur_flag['pow']]]></code>
<code><![CDATA[$cur_flag['pow']]]></code>
<code><![CDATA[$cur_flag['pow']]]></code>
<code><![CDATA[$cur_flag['pow']]]></code>
<code><![CDATA[$cur_flag['type']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['type']]]></code>
<code><![CDATA[$current_argument['type']]]></code>
<code><![CDATA[$current_argument['type']]]></code>
<code><![CDATA[$current_argument['type']]]></code>
<code><![CDATA[$current_argument['type']]]></code>
<code><![CDATA[$current_argument['type']]]></code>
<code><![CDATA[$current_argument['type']]]></code>
<code><![CDATA[$current_argument['type']]]></code>
<code><![CDATA[$current_argument['type']]]></code>
<code><![CDATA[$current_argument['type']]]></code>
<code><![CDATA[$current_argument['type']]]></code>
<code><![CDATA[$data['method']]]></code>
<code><![CDATA[$data['predicate']]]></code>
<code><![CDATA[$elem['layer']]]></code>
<code><![CDATA[$id['id']]]></code>
<code><![CDATA[$id['id']]]></code>
<code><![CDATA[$id['type']]]></code>
<code><![CDATA[$id['type']]]></code>
<code><![CDATA[$object[$type['type']]]]></code>
<code><![CDATA[$object['_']]]></code>
<code><![CDATA[$object['_']]]></code>
<code><![CDATA[$pair['key']]]></code>
<code><![CDATA[$pair['value']]]></code>
<code><![CDATA[$row['buttons']]]></code>
<code><![CDATA[$this->constructors->findByPredicate($arguments[$current_argument['name']]['_'])['type']]]></code>
<code><![CDATA[$this->constructors->findByPredicate($arguments[$current_argument['name']]['_'])['type']]]></code>
<code><![CDATA[$this->constructors->findByPredicate($object['_'])['type']]]></code>
<code><![CDATA[$this->constructors->findByPredicate('vector')['id']]]></code>
<code><![CDATA[$this->constructors->findByPredicate('vector')['id']]]></code>
<code><![CDATA[$this->constructors->findByPredicate((bool) $object ? 'boolTrue' : 'boolFalse')['id']]]></code>
<code><![CDATA[$tl['id']]]></code>
<code><![CDATA[$type['connection']->outgoing_messages[$x['req_msg_id']]]]></code>
<code><![CDATA[$type['connection']->outgoing_messages[$x['req_msg_id']]]]></code>
<code><![CDATA[$type['connection']->outgoing_messages[$x['req_msg_id']]]]></code>
<code><![CDATA[$type['connection']->outgoing_messages[$x['req_msg_id']]]]></code>
<code><![CDATA[$type['type'][0]]]></code>
<code><![CDATA[$type['type'][0]]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$TL_dict['constructors']]]></code>
<code><![CDATA[$TL_dict['constructors'][$key]]]></code>
<code><![CDATA[$TL_dict['constructors'][$key]['id']]]></code>
<code><![CDATA[$TL_dict['methods']]]></code>
<code><![CDATA[$TL_dict['methods'][$key]]]></code>
<code><![CDATA[$TL_dict['methods'][$key]['id']]]></code>
<code><![CDATA[$arg['connection']]]></code>
<code><![CDATA[$arg['subtype']]]></code>
<code><![CDATA[$constructorData['connection']]]></code>
<code><![CDATA[$constructorData['predicate']]]></code>
<code><![CDATA[$constructorData['predicate']]]></code>
<code><![CDATA[$constructorData['subtype']]]></code>
<code><![CDATA[$constructorData['type']]]></code>
<code><![CDATA[$object['_']]]></code>
<code><![CDATA[$v['sideEffects']]]></code>
<code><![CDATA[$x['reply_markup']['rows'][$key]]]></code>
<code><![CDATA[$x['reply_markup']['rows'][$key]['buttons']]]></code>
<code><![CDATA[$x['reply_markup']['rows'][$key]['buttons'][$bkey]]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$TL_dict['constructors'][$key]]]></code>
<code><![CDATA[$TL_dict['constructors'][$key]]]></code>
<code><![CDATA[$TL_dict['constructors'][$key]]]></code>
<code><![CDATA[$TL_dict['methods'][$key]]]></code>
<code><![CDATA[$TL_dict['methods'][$key]]]></code>
<code><![CDATA[$TL_dict['methods'][$key]]]></code>
<code><![CDATA[$arguments[$cur_flag['flag']]]]></code>
<code><![CDATA[$arguments[$cur_flag['flag']]]]></code>
<code><![CDATA[$arguments[$cur_flag['flag']]]]></code>
<code><![CDATA[$arguments[$cur_flag['flag']]]]></code>
<code><![CDATA[$arguments[$cur_flag['flag']]]]></code>
<code><![CDATA[$arguments[$cur_flag['flag']]]]></code>
<code><![CDATA[$arguments[$cur_flag['flag']]]]></code>
<code><![CDATA[$arguments[$cur_flag['flag']]]]></code>
<code><![CDATA[$arguments[$cur_flag['flag']]]]></code>
<code><![CDATA[$arguments[$cur_flag['flag']]]]></code>
<code><![CDATA[$arguments[$cur_flag['name']]]]></code>
<code><![CDATA[$arguments[$cur_flag['name']]]]></code>
<code><![CDATA[$arguments[$cur_flag['name']]]]></code>
<code><![CDATA[$arguments[$cur_flag['name']]]]></code>
<code><![CDATA[$arguments[$cur_flag['name']]]]></code>
<code><![CDATA[$arguments[$cur_flag['name']]]]></code>
<code><![CDATA[$arguments[$cur_flag['name']]]]></code>
<code><![CDATA[$arguments[$cur_flag['name']]]]></code>
<code><![CDATA[$arguments[$cur_flag['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['flag']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$object[$type['type']]]]></code>
<code><![CDATA[$object[$type['type']]]]></code>
<code><![CDATA[$res[$pair['key']]]]></code>
<code><![CDATA[$this->afterConstructorDeserialization[$x['_']]]]></code>
<code><![CDATA[$this->afterConstructorDeserialization[$x['_']]]]></code>
<code><![CDATA[$this->afterMethodResponseDeserialization[$type['connection']->outgoing_messages[$x['req_msg_id']]->getConstructor()]]]></code>
<code><![CDATA[$this->afterMethodResponseDeserialization[$type['connection']->outgoing_messages[$x['req_msg_id']]->getConstructor()]]]></code>
<code><![CDATA[$this->beforeConstructorDeserialization[$x['_']]]]></code>
<code><![CDATA[$this->beforeConstructorDeserialization[$x['_']]]]></code>
<code><![CDATA[$this->beforeConstructorSerialization[$object['_']]]]></code>
<code><![CDATA[$this->beforeConstructorSerialization[$object['_']]]]></code>
<code><![CDATA[$this->tdDescriptions['constructors'][$name]]]></code>
<code><![CDATA[$this->tdDescriptions['constructors'][$name]]]></code>
<code><![CDATA[$this->tdDescriptions['constructors'][$name]]]></code>
<code><![CDATA[$this->tdDescriptions['constructors'][$name]]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$name]]]></code>
<code><![CDATA[$this->tdDescriptions['methods'][$name]]]></code>
<code><![CDATA[$this->typeMismatch[$type['type']]]]></code>
<code><![CDATA[$this->typeMismatch[$type['type']]]]></code>
<code><![CDATA[$type['connection']->outgoing_messages[$x['req_msg_id']]]]></code>
<code><![CDATA[$type['connection']->outgoing_messages[$x['req_msg_id']]]]></code>
<code><![CDATA[$type['connection']->outgoing_messages[$x['req_msg_id']]]]></code>
<code><![CDATA[$type['connection']->outgoing_messages[$x['req_msg_id']]]]></code>
<code><![CDATA[$type['connection']->outgoing_messages[$x['req_msg_id']]]]></code>
<code><![CDATA[$type['connection']->outgoing_messages[$x['req_msg_id']]]]></code>
<code><![CDATA[$type['connection']->outgoing_messages[$x['req_msg_id']]]]></code>
<code><![CDATA[$x[$arg['flag']]]]></code>
<code><![CDATA[$x[$arg['flag']]]]></code>
<code><![CDATA[$x[$arg['flag']]]]></code>
<code><![CDATA[$x[$arg['name']]]]></code>
<code><![CDATA[$x[$arg['name']]]]></code>
<code><![CDATA[$x[$arg['name']]]]></code>
<code><![CDATA[$x['reply_markup']['rows'][$key]]]></code>
<code><![CDATA[$x['reply_markup']['rows'][$key]['buttons'][$bkey]]]></code>
</MixedArrayOffset>
<MixedArrayTypeCoercion>
<code><![CDATA[$this->afterConstructorDeserialization[$x['_']]]]></code>
<code><![CDATA[$this->afterConstructorDeserialization[$x['_']]]]></code>
</MixedArrayTypeCoercion>
<MixedAssignment>
<code>$arg</code>
<code><![CDATA[$arg['connection']]]></code>
<code><![CDATA[$arguments[$cur_flag['flag']]]]></code>
<code><![CDATA[$arguments[$cur_flag['flag']]]]></code>
<code><![CDATA[$arguments[$cur_flag['flag']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code>$bkey</code>
<code>$button</code>
<code>$concat</code>
<code>$concat</code>
<code>$constructorData</code>
<code>$constructorData</code>
<code>$constructorData</code>
<code>$constructorData</code>
<code>$constructorData</code>
<code>$constructorData</code>
<code>$constructorData</code>
<code><![CDATA[$constructorData['connection']]]></code>
<code><![CDATA[$constructorData['subtype']]]></code>
<code>$count</code>
<code>$cur_flag</code>
<code>$current_argument</code>
<code>$current_object</code>
<code>$current_object</code>
<code>$data</code>
<code>$data</code>
<code>$elem</code>
<code>$elem</code>
<code>$file</code>
<code>$id</code>
<code>$id</code>
<code>$key</code>
<code>$key</code>
<code>$key</code>
<code>$long_len</code>
<code>$name</code>
<code>$name</code>
<code>$object</code>
<code>$object</code>
<code>$object</code>
<code><![CDATA[$object['_']]]></code>
<code>$pair</code>
<code>$pair</code>
<code>$predicate</code>
<code><![CDATA[$res[$pair['key']]]]></code>
<code>$result[]</code>
<code>$row</code>
<code><![CDATA[$this->secretLayer]]></code>
<code><![CDATA[$this->secretLayer]]></code>
<code>$tl</code>
<code><![CDATA[$type['type']]]></code>
<code>$v</code>
<code>$value</code>
<code>$value</code>
<code>$value</code>
<code>$value</code>
<code>$value</code>
<code><![CDATA[$x[$arg['name']]]]></code>
</MixedAssignment>
<MixedMethodCall>
<code>getConstructor</code>
<code>getConstructor</code>
<code>getConstructor</code>
<code>toBytes</code>
</MixedMethodCall>
<MixedOperand>
<code>$concat</code>
<code>$concat</code>
<code><![CDATA[$constructorData['method']]]></code>
<code><![CDATA[$constructorData['method']]]></code>
<code><![CDATA[$constructorData['predicate']]]></code>
<code><![CDATA[$cur_flag['pow']]]></code>
<code><![CDATA[$cur_flag['pow']]]></code>
<code><![CDATA[$cur_flag['pow']]]></code>
<code><![CDATA[$cur_flag['pow']]]></code>
<code><![CDATA[$current_argument['name']]]></code>
<code><![CDATA[$current_argument['pow']]]></code>
<code><![CDATA[$current_argument['type']]]></code>
<code><![CDATA[$id['id']]]></code>
<code><![CDATA[$id['id']]]></code>
<code><![CDATA[$this->constructors->findByPredicate('vector')['id']]]></code>
<code><![CDATA[$this->serializeObject($current_argument, $arguments[$current_argument['name']], $current_argument['name'], $layer)]]></code>
<code><![CDATA[$this->serializeObject($current_argument, $arguments['file']['mime_type'], $current_argument['name'], $layer)]]></code>
<code><![CDATA[$this->serializeObject($current_argument, $this->API->encryptSecretMessage($arguments['peer']['chat_id'], $arguments['message'], $arguments['queuePromise']), 'data')]]></code>
<code><![CDATA[$this->serializeObject(['type' => $type['subtype']], $current_object, $k, $layer)]]></code>
<code><![CDATA[$this->serializeObject(['type' => $type['subtype']], $current_object, $k, $layer)]]></code>
<code><![CDATA[$this->serializeObject(['type' => 'bytes'], Tools::random(15 + 4 * Tools::randomInt(modulus: 3)), 'random_bytes')]]></code>
<code><![CDATA[$tl['id']]]></code>
<code>$value</code>
<code>$value</code>
<code>$values[$bytePos+1]</code>
<code>$values[$bytePos]</code>
<code><![CDATA[$x[$arg['flag']]]]></code>
<code><![CDATA[$x[$arg['flag']]]]></code>
<code><![CDATA[$x[$arg['flag']]]]></code>
<code><![CDATA[Lang::$current_lang['constructor_not_found']]]></code>
<code><![CDATA[Lang::$current_lang['method_not_found']]]></code>
<code><![CDATA[Lang::$current_lang['params_missing']]]></code>
<code><![CDATA[Lang::$current_lang['src_file_invalid']]]></code>
<code><![CDATA[~$cur_flag['pow']]]></code>
<code><![CDATA[~$cur_flag['pow']]]></code>
</MixedOperand>
<MixedPropertyFetch>
<code><![CDATA[$type['connection']->outgoing_messages]]></code>
<code><![CDATA[$type['connection']->outgoing_messages]]></code>
</MixedPropertyFetch>
<MixedPropertyTypeCoercion>
<code><![CDATA[$this->mutexSideEffects]]></code>
</MixedPropertyTypeCoercion>
<PossiblyInvalidArgument>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments['id']]]></code>
<code><![CDATA[$arguments['id']]]></code>
<code><![CDATA[$arguments['message']]]></code>
<code><![CDATA[$arguments['queuePromise']]]></code>
<code><![CDATA[$x['result']]]></code>
</PossiblyInvalidArgument>
<PossiblyInvalidIterator>
<code><![CDATA[$x['value']]]></code>
</PossiblyInvalidIterator>
<PossiblyNullArgument>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]]]></code>
<code><![CDATA[$arguments[$current_argument['name']]['_']]]></code>
<code><![CDATA[$arguments[$current_argument['name']]['_']]]></code>
<code><![CDATA[$arguments['peer']['chat_id']]]></code>
</PossiblyNullArgument>
<PossiblyNullArrayAccess>
<code><![CDATA[$arguments[$current_argument['name']]['_']]]></code>
<code><![CDATA[$arguments[$current_argument['name']]['_']]]></code>
<code><![CDATA[$arguments['file']['mime_type']]]></code>
<code><![CDATA[$arguments['peer']['chat_id']]]></code>
</PossiblyNullArrayAccess>
<PossiblyNullOperand>
<code><![CDATA[$arguments[$current_argument['flag']]]]></code>
</PossiblyNullOperand>
<PossiblyNullPropertyFetch>
<code><![CDATA[$this->API->logger]]></code>
</PossiblyNullPropertyFetch>
<PossiblyNullReference>
<code>botAPIToMTProto</code>
<code>logger</code>
</PossiblyNullReference>
<PossiblyUndefinedArrayOffset>
<code>$elem[1]</code>
<code>$elem[1]</code>
<code>$elem[1]</code>
<code>$elem[1]</code>
</PossiblyUndefinedArrayOffset>
<PropertyNotSetInConstructor>
<code>$afterConstructorDeserialization</code>
<code>$afterMethodResponseDeserialization</code>
<code>$beforeConstructorDeserialization</code>
<code>$beforeConstructorSerialization</code>
<code>$beforeMethodResponseDeserialization</code>
<code>$constructors</code>
<code>$methods</code>
<code>$tdDescriptions</code>
<code>$typeMismatch</code>
</PropertyNotSetInConstructor>
<RedundantCastGivenDocblockType>
<code>(string) $object</code>
<code>(string) $object</code>
<code>(string) $object</code>
</RedundantCastGivenDocblockType>
<UnusedForeachValue>
<code>$value</code>
<code>$value</code>
</UnusedForeachValue>
<UnusedFunctionCall>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
</UnusedFunctionCall>
<UnusedVariable>
<code>$a</code>
</UnusedVariable>
</file>
<file src="src/TL/TLConstructors.php">
<MissingReturnType>
<code>findByPredicate</code>
<code>findByType</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[$json_dict['id']]]></code>
<code><![CDATA[$json_dict['predicate']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$constructor['type']]]></code>
<code><![CDATA[$this->by_id[$json_dict['id']]['layer']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$constructor['id']]]></code>
<code><![CDATA[$constructor['id']]]></code>
<code><![CDATA[$constructor['id']]]></code>
<code><![CDATA[$constructor['id']]]></code>
<code><![CDATA[$this->by_id[$json_dict['id']]['layer']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$this->by_id[$chosenid]]]></code>
<code><![CDATA[$this->by_id[$json_dict['id']]]]></code>
<code><![CDATA[$this->by_id[$json_dict['id']]]]></code>
<code><![CDATA[$this->by_id[$json_dict['id']]]]></code>
<code><![CDATA[$this->by_id[$json_dict['id']]]]></code>
<code><![CDATA[$this->by_id[$json_dict['id']]]]></code>
<code><![CDATA[$this->by_id[$this->by_predicate_and_layer[$predicate]]]]></code>
<code><![CDATA[$this->layers[$json_dict['layer']]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$alayer</code>
<code>$chosenid</code>
<code>$chosenid</code>
<code>$constructor</code>
<code>$constructor</code>
<code>$constructor</code>
<code>$constructor</code>
<code><![CDATA[$constructor['id']]]></code>
<code><![CDATA[$constructor['id']]]></code>
</MixedAssignment>
<MixedInferredReturnType>
<code>array|false</code>
</MixedInferredReturnType>
<MixedOperand>
<code>$alayer</code>
<code>$alayer</code>
<code>$alayer</code>
<code>$alayer</code>
<code><![CDATA[$json_dict['layer']]]></code>
<code><![CDATA[$json_dict['predicate']]]></code>
<code><![CDATA[$json_dict['type']]]></code>
</MixedOperand>
<MixedReturnStatement>
<code>$constructor</code>
</MixedReturnStatement>
</file>
<file src="src/TL/TLInterface.php">
<MissingReturnType>
<code>deserialize</code>
<code>serializeMethod</code>
<code>serializeObject</code>
</MissingReturnType>
</file>
<file src="src/TL/TLMethods.php">
<MissingReturnType>
<code>findById</code>
<code>findByMethod</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[$json_dict['id']]]></code>
<code><![CDATA[$json_dict['method']]]></code>
<code><![CDATA[$json_dict['method']]]></code>
</MixedArgument>
<MixedArrayAssignment>
<code><![CDATA[$method['id']]]></code>
<code><![CDATA[$method['id']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$this->by_id[$json_dict['id']]]]></code>
<code><![CDATA[$this->by_id[$this->by_method[$method_name]]]]></code>
<code><![CDATA[$this->by_method[$json_dict['method']]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$method</code>
<code>$method</code>
<code><![CDATA[$method['id']]]></code>
</MixedAssignment>
</file>
<file src="src/TL/TLParams.php">
<MixedArgument>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['name']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$this->by_id[$key]['params']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$param['flag']]]></code>
<code><![CDATA[$param['pow']]]></code>
<code><![CDATA[$param['splitSideEffects']]]></code>
<code><![CDATA[$param['subtype']]]></code>
<code><![CDATA[$param['subtype']]]></code>
<code><![CDATA[$param['subtype']]]></code>
<code><![CDATA[$param['subtype']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$param['type']]]></code>
<code><![CDATA[$this->by_id[$key]['params']]]></code>
<code><![CDATA[$this->by_id[$key]['params'][$kkey]]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$this->by_id[$key]['params'][$kkey]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$kkey</code>
<code>$param</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[$param['type']]]></code>
</MixedOperand>
</file>
<file src="src/TL/Types/Button.php">
<MissingReturnType>
<code>click</code>
</MissingReturnType>
<MixedArrayAccess>
<code><![CDATA[$API->authorization['user']['id']]]></code>
<code><![CDATA[$message['peer_id']['_']]]></code>
<code><![CDATA[$message['peer_id']['user_id']]]></code>
</MixedArrayAccess>
<MixedArrayOffset>
<code><![CDATA[$this->button[$name]]]></code>
<code><![CDATA[$this->button[$name]]]></code>
<code><![CDATA[$this->button[$name]]]></code>
<code><![CDATA[$this->button[$name]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code><![CDATA[$this->id]]></code>
<code><![CDATA[$this->label]]></code>
<code><![CDATA[$this->peer]]></code>
<code><![CDATA[$this->peer]]></code>
</MixedAssignment>
<PossiblyNullArrayAccess>
<code><![CDATA[$API->authorization['user']]]></code>
<code><![CDATA[$API->authorization['user']['id']]]></code>
</PossiblyNullArrayAccess>
</file>
<file src="src/Tools.php">
<ArgumentTypeCoercion>
<code><![CDATA[fn (ClassLike $c): bool => $c->name !== null]]></code>
</ArgumentTypeCoercion>
<MissingClosureParamType>
<code>$val</code>
</MissingClosureParamType>
<MissingClosureReturnType>
<code><![CDATA[fn &() => $this->{$var}]]></code>
</MissingClosureReturnType>
<MissingReturnType>
<code>end</code>
<code>getVar</code>
</MissingReturnType>
<MixedArgument>
<code>$cb</code>
<code>$hash</code>
<code><![CDATA[$size['type']]]></code>
<code><![CDATA[Lang::$current_lang['do_not_delete_MadelineProto.log']]]></code>
<code><![CDATA[Lang::$current_lang['do_not_remove_MadelineProto.log_phar']]]></code>
<code><![CDATA[Lang::$current_lang['do_not_use_blocking_class']]]></code>
<code><![CDATA[Lang::$current_lang['do_not_use_blocking_function']]]></code>
<code><![CDATA[Lang::$current_lang['do_not_use_deprecated_function']]]></code>
<code><![CDATA[Lang::$current_lang['do_not_use_non_root_require_in_event_handler']]]></code>
<code><![CDATA[Lang::$current_lang['must_have_declare_types']]]></code>
<code><![CDATA[Lang::$current_lang['plugins_do_not_use_require']]]></code>
<code><![CDATA[Lang::$current_lang['plugins_must_have_exactly_one_class']]]></code>
<code><![CDATA[Lang::$current_lang['recommend_not_use_filesystem_function']]]></code>
<code><![CDATA[Lang::$current_lang['value_bigger_than_2147483647']]]></code>
<code><![CDATA[Lang::$current_lang['value_bigger_than_4294967296']]]></code>
<code><![CDATA[Lang::$current_lang['value_smaller_than_0']]]></code>
<code><![CDATA[Lang::$current_lang['value_smaller_than_2147483648']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$size['h']]]></code>
<code><![CDATA[$size['type']]]></code>
<code><![CDATA[$size['w']]]></code>
<code><![CDATA[$val['@type']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$val['_']]]></code>
</MixedArrayAssignment>
<MixedAssignment>
<code>$curPixels</code>
<code>$hash</code>
<code>$hash</code>
<code>$hash</code>
<code>$hash</code>
<code>$long</code>
<code>$max</code>
<code>$max</code>
<code>$maxPixels</code>
<code>$parent</code>
<code>$size</code>
<code>$size</code>
<code><![CDATA[$val['_']]]></code>
</MixedAssignment>
<MixedInferredReturnType>
<code>float</code>
<code>int</code>
<code>int</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>getAttribute</code>
</MixedMethodCall>
<MixedOperand>
<code>$hash</code>
<code>$hash</code>
<code>$hash</code>
<code>$hash</code>
<code>$hash</code>
<code>$hash</code>
<code><![CDATA[$hash >> 21]]></code>
<code><![CDATA[$size['w']]]></code>
</MixedOperand>
<MixedReturnStatement>
<code><![CDATA[\unpack('d', Magic::$BIG_ENDIAN ? \strrev($value) : $value)[1]]]></code>
<code><![CDATA[\unpack('l', Magic::$BIG_ENDIAN ? \strrev($value) : $value)[1]]]></code>
<code><![CDATA[\unpack('q', Magic::$BIG_ENDIAN ? \strrev($value) : $value)[1]]]></code>
</MixedReturnStatement>
<PossiblyInvalidArgument>
<code>$value</code>
<code>$value</code>
</PossiblyInvalidArgument>
<PossiblyInvalidCast>
<code>$value</code>
</PossiblyInvalidCast>
<PossiblyNullFunctionCall>
<code><![CDATA[Closure::bind(
fn &() => $this->{$var},
$obj,
$obj::class,
)->__invoke()]]></code>
<code><![CDATA[Closure::bind(
function () use ($var, &$val): void {
$this->{$var} =& $val;
},
$obj,
$obj::class,
)->__invoke()]]></code>
</PossiblyNullFunctionCall>
<PossiblyNullReference>
<code>__invoke</code>
<code>__invoke</code>
</PossiblyNullReference>
<UnsupportedReferenceUsage>
<code><![CDATA[$this->{$var} =& $val]]></code>
</UnsupportedReferenceUsage>
<UnusedVariable>
<code>$f</code>
</UnusedVariable>
</file>
<file src="src/VoIP.php">
<ArgumentTypeCoercion>
<code>$stream</code>
</ArgumentTypeCoercion>
<MissingPropertyType>
<code>$TLID_DECRYPTED_AUDIO_BLOCK</code>
<code>$TLID_REFLECTOR_PEER_INFO</code>
<code>$TLID_REFLECTOR_SELF_INFO</code>
<code>$TLID_SIMPLE_AUDIO_BLOCK</code>
<code>$callID</code>
<code>$configuration</code>
<code>$creatorID</code>
<code>$holdFiles</code>
<code>$inputFiles</code>
<code>$internalStorage</code>
<code>$isPlaying</code>
<code>$otherID</code>
<code>$outputFile</code>
<code>$protocol</code>
<code>$received_timestamp_map</code>
<code>$remote_ack_timestamp_map</code>
<code>$session_in_seq_no</code>
<code>$session_out_seq_no</code>
<code>$signal</code>
<code>$storage</code>
<code>$visualization</code>
<code>$voip_state</code>
</MissingPropertyType>
<MissingReturnType>
<code>openFile</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[$endpoint['ip']]]></code>
<code><![CDATA[$endpoint['peer_tag']]]></code>
<code><![CDATA[$endpoint['peer_tag']]]></code>
<code><![CDATA[$endpoint['port']]]></code>
<code><![CDATA[$endpoint['port']]]></code>
<code>$file</code>
<code><![CDATA[$this->callID]]></code>
<code><![CDATA[$this->callID]]></code>
<code><![CDATA[$this->configuration['auth_key']]]></code>
<code><![CDATA[$this->inputFiles]]></code>
<code><![CDATA[$this->tempHoldFiles]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$endpoint['id']]]></code>
<code><![CDATA[$endpoint['id']]]></code>
<code><![CDATA[$endpoint['ip']]]></code>
<code><![CDATA[$endpoint['ipv6']]]></code>
<code><![CDATA[$endpoint['peer_tag']]]></code>
<code><![CDATA[$endpoint['peer_tag']]]></code>
<code><![CDATA[$endpoint['port']]]></code>
<code><![CDATA[$endpoint['port']]]></code>
<code><![CDATA[$this->callID['id']]]></code>
<code><![CDATA[$this->configuration['auth_key']]]></code>
<code><![CDATA[$this->configuration['endpoints']]]></code>
<code><![CDATA[$this->internalStorage['created']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$this->inputFiles[]]]></code>
<code><![CDATA[$this->inputFiles[]]]></code>
</MixedArrayAssignment>
<MixedAssignment>
<code>$endpoint</code>
<code>$file</code>
<code>$file</code>
<code>$id</code>
<code>$it</code>
<code>$payload</code>
<code><![CDATA[$this->tempHoldFiles]]></code>
</MixedAssignment>
<MixedInferredReturnType>
<code>array</code>
<code>array</code>
<code>int</code>
<code>int</code>
<code>int|bool</code>
<code>string|int</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>advance</code>
<code>advance</code>
<code>getCurrent</code>
<code>getCurrent</code>
</MixedMethodCall>
<MixedOperand>
<code><![CDATA[$endpoint['id']]]></code>
<code><![CDATA[$endpoint['id']]]></code>
<code><![CDATA[$endpoint['ipv6']]]></code>
</MixedOperand>
<MixedReturnStatement>
<code><![CDATA[$this->callID]]></code>
<code><![CDATA[$this->internalStorage['created'] ?? false]]></code>
<code><![CDATA[$this->internalStorage['created'] ?? false]]></code>
<code><![CDATA[$this->otherID]]></code>
<code><![CDATA[$this->protocol]]></code>
<code><![CDATA[$this->signal]]></code>
<code><![CDATA[$this->visualization]]></code>
</MixedReturnStatement>
<PropertyNotSetInConstructor>
<code>$authKey</code>
</PropertyNotSetInConstructor>
<UnusedVariable>
<code>$cnt</code>
<code>$cnt</code>
<code>$cnt</code>
</UnusedVariable>
</file>
<file src="src/VoIP/AckHandler.php">
<MissingParamType>
<code>$ack_mask</code>
<code>$last_ack_id</code>
<code>$packet_seq_no</code>
<code>$s1</code>
<code>$s2</code>
</MissingParamType>
<MissingReturnType>
<code>received_packet</code>
<code>seqgt</code>
</MissingReturnType>
<MixedArrayAccess>
<code><![CDATA[$this->received_timestamp_map[$diff]]]></code>
<code><![CDATA[$this->received_timestamp_map[$x]]]></code>
<code><![CDATA[$this->remote_ack_timestamp_map[$x]]]></code>
<code><![CDATA[$this->remote_ack_timestamp_map[$x]]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$this->received_timestamp_map[$diff+$x]]]></code>
<code><![CDATA[$this->received_timestamp_map[$diff]]]></code>
<code><![CDATA[$this->received_timestamp_map[$x]]]></code>
<code><![CDATA[$this->received_timestamp_map[0]]]></code>
<code><![CDATA[$this->remote_ack_timestamp_map[$diff+$x]]]></code>
<code><![CDATA[$this->remote_ack_timestamp_map[$x]]]></code>
<code><![CDATA[$this->remote_ack_timestamp_map[$x]]]></code>
<code><![CDATA[$this->remote_ack_timestamp_map[0]]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$this->received_timestamp_map[$diff+$x]]]></code>
<code><![CDATA[$this->received_timestamp_map[$diff]]]></code>
<code><![CDATA[$this->received_timestamp_map[$diff]]]></code>
<code><![CDATA[$this->remote_ack_timestamp_map[$diff+$x]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$diff</code>
<code>$diff</code>
<code>$diff</code>
<code>$remaining</code>
<code>$remaining</code>
</MixedAssignment>
<MixedOperand>
<code>$ack_mask</code>
<code>$diff</code>
<code>$diff</code>
<code>$diff</code>
<code>$diff</code>
<code>$last_ack_id</code>
<code>$packet_seq_no</code>
<code><![CDATA[$this->session_in_seq_no]]></code>
</MixedOperand>
</file>
<file src="src/VoIP/AuthKeyHandler.php">
<MissingClosureParamType>
<code>$controller</code>
<code>$id</code>
</MissingClosureParamType>
<MissingReturnType>
<code>completeCall</code>
<code>confirmCall</code>
<code>requestCall</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[$call['id']]]></code>
<code><![CDATA[$call['id']]]></code>
<code><![CDATA[$call['id']]]></code>
<code><![CDATA[$call['id']]]></code>
<code><![CDATA[$call['id']]]></code>
<code><![CDATA[$call['id']]]></code>
<code><![CDATA[$call['id']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']]]></code>
<code><![CDATA[$dh_config['p']->subtract(Magic::$two)]]></code>
<code><![CDATA[$dh_config['p']->subtract(Magic::$two)]]></code>
<code>$g_a</code>
<code>$g_b</code>
<code><![CDATA[$params['connections']]]></code>
<code><![CDATA[$params['g_a_or_b']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$params['id']]]></code>
<code><![CDATA[$res['connections']]]></code>
<code><![CDATA[$res['phone_call']]]></code>
<code><![CDATA[$this->calls[$call['id']]->getOtherID()]]></code>
<code><![CDATA[$this->calls[$params['id']]->configuration]]></code>
<code><![CDATA[$this->calls[$params['id']]->configuration]]></code>
<code><![CDATA[$this->calls[$params['id']]->configuration['endpoints']]]></code>
<code><![CDATA[$this->calls[$params['id']]->configuration['endpoints']]]></code>
<code><![CDATA[$this->calls[$params['id']]->getOtherID()]]></code>
<code><![CDATA[$this->calls[$params['id']]->getOtherID()]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage['a']]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage['b']]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage['g_a']]]></code>
<code><![CDATA[Lang::$current_lang['accepting_call']]]></code>
<code><![CDATA[Lang::$current_lang['call_already_accepted']]]></code>
<code><![CDATA[Lang::$current_lang['call_already_accepted']]]></code>
<code><![CDATA[Lang::$current_lang['call_completing']]]></code>
<code><![CDATA[Lang::$current_lang['call_confirming']]]></code>
<code><![CDATA[Lang::$current_lang['call_discarding']]]></code>
<code><![CDATA[Lang::$current_lang['call_error_1']]]></code>
<code><![CDATA[Lang::$current_lang['call_error_2']]]></code>
<code><![CDATA[Lang::$current_lang['call_error_3']]]></code>
<code><![CDATA[Lang::$current_lang['fingerprint_invalid']]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$res['connections']]]></code>
<code><![CDATA[$res['phone_call']]]></code>
<code><![CDATA[$res['phone_call']]]></code>
<code><![CDATA[$res['phone_call']]]></code>
<code><![CDATA[$res['phone_call']['id']]]></code>
<code><![CDATA[$res['phone_call']['id']]]></code>
<code><![CDATA[$this->calls[$params['id']]->configuration['endpoints']]]></code>
<code><![CDATA[$this->calls[$params['id']]->configuration['endpoints']]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage['a']]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage['b']]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage['g_a']]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage['g_a']]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage['g_a_hash']]]></code>
<code><![CDATA[($this->methodCallAsyncRead('phone.confirmCall', ['key_fingerprint' => \substr(\sha1($key, true), -8), 'peer' => ['id' => $params['id'], 'access_hash' => $params['access_hash'], '_' => 'inputPhoneCall'], 'g_a' => $this->calls[$params['id']]->storage['g_a'], 'protocol' => ['_' => 'phoneCallProtocol', 'udp_reflector' => true, 'min_layer' => 65, 'max_layer' => VoIP::getConnectionMaxLayer()]]))['phone_call']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$this->calls[$params['id']]->configuration['endpoints']]]></code>
<code><![CDATA[$this->calls[$params['id']]->configuration['endpoints']]]></code>
<code><![CDATA[$this->calls[$res['phone_call']['id']]->storage['b']]]></code>
</MixedArrayAssignment>
<MixedArrayOffset>
<code><![CDATA[$this->calls[$call['id']]]]></code>
<code><![CDATA[$this->calls[$call['id']]]]></code>
<code><![CDATA[$this->calls[$call['id']]]]></code>
<code><![CDATA[$this->calls[$call['id']]]]></code>
<code><![CDATA[$this->calls[$call['id']]]]></code>
<code><![CDATA[$this->calls[$call['id']]]]></code>
<code><![CDATA[$this->calls[$call['id']]]]></code>
<code><![CDATA[$this->calls[$call['id']]]]></code>
<code><![CDATA[$this->calls[$id]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$res['phone_call']['id']]]]></code>
<code><![CDATA[$this->calls[$res['phone_call']['id']]]]></code>
</MixedArrayOffset>
<MixedAssignment>
<code>$c</code>
<code>$g_a</code>
<code>$g_b</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$res</code>
<code>$visualization[]</code>
<code>$visualization[]</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>?VoIP</code>
<code>array</code>
<code>int</code>
</MixedInferredReturnType>
<MixedMethodCall>
<code>discard</code>
<code>getCallState</code>
<code>getCallState</code>
<code>getDebugLog</code>
<code>getOtherID</code>
<code>getOtherID</code>
<code>getOtherID</code>
<code>getPreferredRelayID</code>
<code>parseConfig</code>
<code>parseConfig</code>
<code>powMod</code>
<code>powMod</code>
<code>setCall</code>
<code>setVisualization</code>
<code>setVisualization</code>
<code>startTheMagic</code>
<code>startTheMagic</code>
<code>subtract</code>
<code>subtract</code>
<code>whenCreated</code>
</MixedMethodCall>
<MixedOperand>
<code><![CDATA[$this->calls[$call['id']]->whenCreated()]]></code>
<code><![CDATA[$this->config['call_connect_timeout_ms']]]></code>
<code><![CDATA[$this->config['call_connect_timeout_ms']]]></code>
<code><![CDATA[$this->config['call_receive_timeout_ms']]]></code>
<code><![CDATA[$this->config['call_receive_timeout_ms']]]></code>
</MixedOperand>
<MixedPropertyAssignment>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$params['id']]]]></code>
<code><![CDATA[$this->calls[$res['phone_call']['id']]]]></code>
</MixedPropertyAssignment>
<MixedPropertyFetch>
<code><![CDATA[$this->calls[$params['id']]->configuration]]></code>
<code><![CDATA[$this->calls[$params['id']]->configuration]]></code>
<code><![CDATA[$this->calls[$params['id']]->configuration]]></code>
<code><![CDATA[$this->calls[$params['id']]->configuration]]></code>
<code><![CDATA[$this->calls[$params['id']]->configuration]]></code>
<code><![CDATA[$this->calls[$params['id']]->configuration]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage]]></code>
<code><![CDATA[$this->calls[$params['id']]->storage]]></code>
<code><![CDATA[$this->calls[$res['phone_call']['id']]->storage]]></code>
</MixedPropertyFetch>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[$call['id']]]></code>
<code><![CDATA[$call['id']]]></code>
<code><![CDATA[$call['id']]]></code>
<code><![CDATA[$call['id']]]></code>
<code><![CDATA[$user['user_id']]]></code>
</PossiblyUndefinedArrayOffset>
<UnusedVariable>
<code>$res</code>
</UnusedVariable>
</file>
<file src="src/VoIP/Endpoint.php">
<MissingReturnType>
<code>read</code>
</MissingReturnType>
<MixedArgument>
<code>$aes_iv</code>
<code>$aes_iv</code>
<code>$aes_key</code>
<code>$aes_key</code>
</MixedArgument>
<MixedAssignment>
<code>$innerLen</code>
</MixedAssignment>
<PossiblyNullReference>
<code>read</code>
</PossiblyNullReference>
<UnusedVariable>
<code>$payload</code>
</UnusedVariable>
</file>
<file src="src/VoIP/MessageHandler.php">
<MissingParamType>
<code>$args</code>
<code>$datacenter</code>
<code>$object</code>
<code>$stream</code>
</MissingParamType>
<MissingReturnType>
<code>pack_string</code>
<code>recv_message</code>
<code>send_message</code>
<code>unpack_string</code>
</MissingReturnType>
<MixedArgument>
<code><![CDATA[$args[$x]['data']]]></code>
<code><![CDATA[$args[$x]['data']]]></code>
<code><![CDATA[$args[$x]['timestamp']]]></code>
<code><![CDATA[$args[$x]['timestamp']]]></code>
<code><![CDATA[$args['_']]]></code>
<code><![CDATA[$args['_']]]></code>
<code><![CDATA[$args['address']]]></code>
<code><![CDATA[$args['all_streams']]]></code>
<code><![CDATA[$args['audio_streams']]]></code>
<code><![CDATA[$args['data']]]></code>
<code><![CDATA[$args['enabled']]]></code>
<code><![CDATA[$args['id']]]></code>
<code><![CDATA[$args['min_protocol']]]></code>
<code><![CDATA[$args['min_protocol']]]></code>
<code><![CDATA[$args['out_seq_no']]]></code>
<code><![CDATA[$args['port']]]></code>
<code><![CDATA[$args['protocol']]]></code>
<code><![CDATA[$args['protocol']]]></code>
<code><![CDATA[$args['relay_d']]]></code>
<code><![CDATA[$args['timestamp']]]></code>
<code><![CDATA[$args['video_streams']]]></code>
<code>$codec</code>
<code>$flags</code>
<code>$flags</code>
<code>$flags</code>
<code>$flags</code>
<code>$length</code>
<code>$length</code>
<code>$length</code>
<code>$long_len</code>
<code>$object</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code>$stream</code>
<code>$stream</code>
<code>$stream</code>
<code>$stream</code>
<code>$stream</code>
<code>$stream</code>
<code><![CDATA[$stream['enabled']]]></code>
<code><![CDATA[$stream['id']]]></code>
<code><![CDATA[$stream['type']]]></code>
<code><![CDATA[$this->session_in_seq_no]]></code>
<code><![CDATA[$this->session_in_seq_no]]></code>
<code><![CDATA[$this->session_in_seq_no]]></code>
<code><![CDATA[$this->session_out_seq_no]]></code>
<code><![CDATA[$this->session_out_seq_no]]></code>
<code><![CDATA[$this->session_out_seq_no]]></code>
<code><![CDATA[$this->unpack_string($payload)]]></code>
<code><![CDATA[$this->unpack_string($payload)]]></code>
<code>-$long_len</code>
</MixedArgument>
<MixedArrayAccess>
<code>$args[$x]</code>
<code>$args[$x]</code>
<code>$args[$x]</code>
<code>$args[$x]</code>
<code>$args[$x]</code>
<code>$args[$x]</code>
<code>$args[$x]</code>
<code>$args[$x]</code>
<code><![CDATA[$args[$x]['data']]]></code>
<code><![CDATA[$args[$x]['data']]]></code>
<code><![CDATA[$args[$x]['data']]]></code>
<code><![CDATA[$args[$x]['data']]]></code>
<code><![CDATA[$args[$x]['stream_id']]]></code>
<code><![CDATA[$args[$x]['stream_id']]]></code>
<code><![CDATA[$args[$x]['timestamp']]]></code>
<code><![CDATA[$args[$x]['timestamp']]]></code>
<code><![CDATA[$args['_']]]></code>
<code><![CDATA[$args['_']]]></code>
<code><![CDATA[$args['_']]]></code>
<code><![CDATA[$args['_']]]></code>
<code><![CDATA[$args['address']]]></code>
<code><![CDATA[$args['all_streams']]]></code>
<code><![CDATA[$args['all_streams']]]></code>
<code><![CDATA[$args['audio_streams']]]></code>
<code><![CDATA[$args['data']]]></code>
<code><![CDATA[$args['data']]]></code>
<code><![CDATA[$args['enabled']]]></code>
<code><![CDATA[$args['extra']]]></code>
<code><![CDATA[$args['id']]]></code>
<code><![CDATA[$args['min_protocol']]]></code>
<code><![CDATA[$args['min_protocol']]]></code>
<code><![CDATA[$args['out_seq_no']]]></code>
<code><![CDATA[$args['port']]]></code>
<code><![CDATA[$args['protocol']]]></code>
<code><![CDATA[$args['protocol']]]></code>
<code><![CDATA[$args['relay_d']]]></code>
<code><![CDATA[$args['stream_id']]]></code>
<code><![CDATA[$args['timestamp']]]></code>
<code><![CDATA[$args['video_streams']]]></code>
<code><![CDATA[$stream['codec']]]></code>
<code><![CDATA[$stream['enabled']]]></code>
<code><![CDATA[$stream['frame_duration']]]></code>
<code><![CDATA[$stream['id']]]></code>
<code><![CDATA[$stream['type']]]></code>
<code><![CDATA[$this->configuration['call_id']]]></code>
<code><![CDATA[$this->configuration['call_id']]]></code>
<code><![CDATA[$this->received_timestamp_map[$x]]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$result[$x]['data']]]></code>
<code><![CDATA[$result[$x]['data']]]></code>
<code><![CDATA[$result[$x]['has_more_flags']]]></code>
<code><![CDATA[$result[$x]['has_more_flags']]]></code>
<code><![CDATA[$result[$x]['stream_id']]]></code>
<code><![CDATA[$result[$x]['stream_id']]]></code>
<code><![CDATA[$result[$x]['timestamp']]]></code>
<code><![CDATA[$result[$x]['timestamp']]]></code>
</MixedArrayAssignment>
<MixedAssignment>
<code>$ack_mask</code>
<code>$ack_mask</code>
<code>$ack_mask</code>
<code>$codec</code>
<code>$codec</code>
<code>$flags</code>
<code>$flags</code>
<code>$flags</code>
<code>$flags</code>
<code>$flags</code>
<code>$flags</code>
<code>$flags</code>
<code>$in_seq_no</code>
<code>$in_seq_no</code>
<code>$in_seq_no</code>
<code>$length</code>
<code>$length</code>
<code>$length</code>
<code>$long_len</code>
<code>$out_seq_no</code>
<code>$out_seq_no</code>
<code>$out_seq_no</code>
<code>$payload</code>
<code>$payload</code>
<code>$payload</code>
<code><![CDATA[$result[$x]['timestamp']]]></code>
<code><![CDATA[$result[$x]['timestamp']]]></code>
<code><![CDATA[$result['_']]]></code>
<code><![CDATA[$result['address']]]></code>
<code><![CDATA[$result['all_streams'][$x]['frame_duration']]]></code>
<code><![CDATA[$result['extra']]]></code>
<code><![CDATA[$result['out_seq_no']]]></code>
<code><![CDATA[$result['port']]]></code>
<code><![CDATA[$result['timestamp']]]></code>
<code>$stream</code>
</MixedAssignment>
<MixedMethodCall>
<code>write</code>
</MixedMethodCall>
<MixedOperand>
<code><![CDATA[$args[$x]['data']]]></code>
<code><![CDATA[$args[$x]['data']]]></code>
<code><![CDATA[$args[$x]['stream_id']]]></code>
<code><![CDATA[$args[$x]['stream_id']]]></code>
<code><![CDATA[$args['_']]]></code>
<code><![CDATA[$args['_'] << 24]]></code>
<code><![CDATA[$args['data']]]></code>
<code><![CDATA[$args['stream_id']]]></code>
<code>$codec</code>
<code>$flags</code>
<code>$flags</code>
<code>$flags</code>
<code>$flags</code>
<code>$flags</code>
<code>$flags</code>
<code>$flags</code>
<code>$flags</code>
<code>$payload</code>
<code>$payload</code>
<code><![CDATA[$stream['codec']]]></code>
<code><![CDATA[$this->configuration['call_id']]]></code>
<code><![CDATA[$this->pack_string($args['extra'])]]></code>
<code><![CDATA[$this->pack_string($message)]]></code>
<code><![CDATA[$this->pack_string($message)]]></code>
<code><![CDATA[\unpack('V', \stream_get_contents($payload, 4))[1]]]></code>
</MixedOperand>
<PossiblyUndefinedVariable>
<code>$ack_mask</code>
<code>$in_seq_no</code>
<code>$out_seq_no</code>
</PossiblyUndefinedVariable>
<UnusedFunctionCall>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
<code>\stream_get_contents</code>
</UnusedFunctionCall>
<UnusedVariable>
<code>$flags</code>
</UnusedVariable>
</file>
<file src="src/Wrappers/Ads.php">
<MixedArgument>
<code>$result</code>
</MixedArgument>
<MixedArrayAccess>
<code>$cache[0]</code>
<code>$cache[1]</code>
</MixedArrayAccess>
<MixedAssignment>
<code>$cache</code>
<code>$result</code>
<code>$result</code>
</MixedAssignment>
<MixedInferredReturnType>
<code>?array</code>
<code>bool</code>
</MixedInferredReturnType>
</file>
<file src="src/Wrappers/Button.php">
<MixedInferredReturnType>
<code>array|true</code>
</MixedInferredReturnType>
</file>
<file src="src/Wrappers/DialogHandler.php">
<InvalidReturnType>
<code><![CDATA[array<int, array>]]></code>
</InvalidReturnType>
<MixedArgument>
<code>$chat</code>
<code><![CDATA[$res['dialogs'] ?? []]]></code>
<code><![CDATA[$res['messages'] ?? []]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$dialog['peer']]]></code>
<code><![CDATA[$dialog['top_message']]]></code>
<code><![CDATA[$message['_']]]></code>
<code><![CDATA[$message['date']]]></code>
<code><![CDATA[$message['id']]]></code>
<code><![CDATA[$res['count']]]></code>
<code><![CDATA[$res['dialogs']]]></code>
<code><![CDATA[$res['messages']]]></code>
<code><![CDATA[$result['_']]]></code>
<code><![CDATA[$result['intermediate_state']]]></code>
<code><![CDATA[$result['pts']]]></code>
<code><![CDATA[$result['state']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->botDialogsUpdatesState['pts']]]></code>
<code><![CDATA[$this->methodCallAsyncRead(
'updates.getDifference',
$state,
['cancellation' => Tools::getTimeoutCancellation(15.0), 'FloodWaitLimit' => 86400]
)['_']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$res['messages']]]></code>
</MixedArrayAssignment>
<MixedAssignment>
<code>$chat</code>
<code>$dialog</code>
<code>$dialogs[$id]</code>
<code>$id</code>
<code>$last_date</code>
<code>$last_id</code>
<code>$message</code>
<code>$res</code>
<code>$res[]</code>
<code>$result</code>
<code>$result</code>
<code><![CDATA[$this->botDialogsUpdatesState]]></code>
<code><![CDATA[$this->botDialogsUpdatesState]]></code>
<code><![CDATA[$this->bottomPts]]></code>
<code><![CDATA[$this->topPts]]></code>
</MixedAssignment>
<MixedReturnTypeCoercion>
<code><![CDATA[list<array>]]></code>
</MixedReturnTypeCoercion>
<PossiblyNullArrayAccess>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
<code><![CDATA[$this->authorization['user']['bot']]]></code>
</PossiblyNullArrayAccess>
<PossiblyNullArrayOffset>
<code>$dialogs</code>
</PossiblyNullArrayOffset>
<RawObjectIteration>
<code><![CDATA[$this->chats]]></code>
<code><![CDATA[$this->chats]]></code>
</RawObjectIteration>
</file>
<file src="src/Wrappers/Events.php">
<DocblockTypeContradiction>
<code><![CDATA[$this->event_handler_instance === null || $this->event_handler_instance instanceof __PHP_Incomplete_Class]]></code>
<code><![CDATA[$this->event_handler_instance instanceof __PHP_Incomplete_Class]]></code>
</DocblockTypeContradiction>
<MixedPropertyTypeCoercion>
<code>$pluginsNew</code>
</MixedPropertyTypeCoercion>
<MoreSpecificReturnType>
<code>PluginEventHandler|EventHandlerProxy|null</code>
</MoreSpecificReturnType>
<PossiblyInvalidArrayOffset>
<code><![CDATA[$this->pluginInstances[$class]]]></code>
<code><![CDATA[$this->pluginInstances[$class]]]></code>
<code><![CDATA[$this->pluginInstances[$class]]]></code>
<code><![CDATA[$this->pluginInstances[$class]]]></code>
<code><![CDATA[$this->pluginInstances[$class]]]></code>
</PossiblyInvalidArrayOffset>
<UnsafeInstantiation>
<code>new $class_name</code>
</UnsafeInstantiation>
</file>
<file src="src/Wrappers/Login.php">
<InvalidFalsableReturnType>
<code>array</code>
</InvalidFalsableReturnType>
<MissingReturnType>
<code>completePhoneLogin</code>
<code>phoneLogin</code>
</MissingReturnType>
<MixedArgument>
<code>$authorization</code>
<code>$authorization</code>
<code><![CDATA[$authorization['authorization']]]></code>
<code><![CDATA[$authorization['expires']]]></code>
<code>$res</code>
<code><![CDATA[$this->methodCallAsyncRead(
'auth.importBotAuthorization',
[
'bot_auth_token' => $token,
'api_id' => $this->settings->getAppInfo()->getApiId(),
'api_hash' => $this->settings->getAppInfo()->getApiHash(),
],
)]]></code>
<code><![CDATA[$this->methodCallAsyncRead('account.getPassword', [])]]></code>
<code><![CDATA[$this->methodCallAsyncRead('auth.signUp', ['phone_number' => $this->authorization['phone_number'], 'phone_code_hash' => $this->authorization['phone_code_hash'], 'phone_code' => $this->authorization['phone_code'], 'first_name' => $first_name, 'last_name' => $last_name])]]></code>
</MixedArgument>
<MixedArrayAccess>
<code><![CDATA[$authorization['_']]]></code>
<code><![CDATA[$authorization['_']]]></code>
<code><![CDATA[$authorization['_']]]></code>
<code><![CDATA[$authorization['authorization']]]></code>
<code><![CDATA[$authorization['dc_id']]]></code>
<code><![CDATA[$authorization['expires']]]></code>
<code><![CDATA[$authorization['token']]]></code>
</MixedArrayAccess>
<MixedArrayAssignment>
<code><![CDATA[$authorization['_']]]></code>
<code><![CDATA[$this->authorization['hint']]]></code>
<code><![CDATA[$this->authorization['hint']]]></code>
<code><![CDATA[$this->authorization['phone_number']]]></code>
</MixedArrayAssignment>
<MixedAssignment>
<code>$authorization</code>
<code>$authorization</code>
<code>$authorization</code>
<code>$res</code>
<code>$res</code>
<code><![CDATA[$this->authorization]]></code>
<code><![CDATA[$this->authorization]]></code>
<code><![CDATA[$this->authorization]]></code>
<code><![CDATA[$this->authorization]]></code>
<code><![CDATA[$this->authorization]]></code>
<code><![CDATA[$this->authorization]]></code>
</MixedAssignment>
<PossiblyNullArrayAccess>
<code><![CDATA[$this->authorization['phone_code']]]></code>
<code><![CDATA[$this->authorization['phone_code_hash']]]></code>
<code><![CDATA[$this->authorization['phone_code_hash']]]></code>
<code><![CDATA[$this->authorization['phone_number']]]></code>
<code><![CDATA[$this->authorization['phone_number']]]></code>
</PossiblyNullArrayAccess>
<RedundantConditionGivenDocblockType>
<code>\is_array($auth_key)</code>
</RedundantConditionGivenDocblockType>
</file>
<file src="src/Wrappers/Loop.php">
<MissingReturnType>
<code>loop</code>
</MissingReturnType>
<MixedAssignment>
<code>$r</code>
<code>$r</code>
<code>$r</code>
</MixedAssignment>
<MixedMethodCall>
<code>logger</code>
<code>logger</code>
</MixedMethodCall>
<PossiblyInvalidOperand>
<code><![CDATA[$_REQUEST['MadelineSelfRestart']]]></code>
</PossiblyInvalidOperand>
</file>
<file src="src/Wrappers/Start.php">
<DocblockTypeContradiction>
<code><![CDATA[$this->getAuthorization() === \danog\MadelineProto\API::LOGGED_IN]]></code>
</DocblockTypeContradiction>
<MissingReturnType>
<code>start</code>
</MissingReturnType>
<MixedArgument>
<code>$title</code>
<code><![CDATA[Lang::$current_lang['apiError']]]></code>
<code><![CDATA[Lang::$current_lang['apiError']]]></code>
<code><![CDATA[Lang::$current_lang['apiError']]]></code>
<code><![CDATA[Lang::$current_lang['apiError']]]></code>
<code><![CDATA[Lang::$current_lang['apiError']]]></code>
<code><![CDATA[Lang::$current_lang['apiError']]]></code>
<code><![CDATA[Lang::$current_lang['apiError']]]></code>
<code><![CDATA[Lang::$current_lang['apiError']]]></code>
<code><![CDATA[Lang::$current_lang['apiError']]]></code>
<code><![CDATA[Lang::$current_lang['apiError']]]></code>
<code><![CDATA[Lang::$current_lang['go']]]></code>
<code><![CDATA[Lang::$current_lang['loginBot']]]></code>
<code><![CDATA[Lang::$current_lang['loginBotTokenWeb']]]></code>
<code><![CDATA[Lang::$current_lang['loginNoCode']]]></code>
<code><![CDATA[Lang::$current_lang['loginNoCode']]]></code>
<code><![CDATA[Lang::$current_lang['loginNoName']]]></code>
<code><![CDATA[Lang::$current_lang['loginNoName']]]></code>
<code><![CDATA[Lang::$current_lang['loginOptionBot']]]></code>
<code><![CDATA[Lang::$current_lang['loginOptionUser']]]></code>
<code><![CDATA[Lang::$current_lang['loginUser']]]></code>
<code><![CDATA[Lang::$current_lang['loginUserCode']]]></code>
<code><![CDATA[Lang::$current_lang['loginUserCode']]]></code>
<code><![CDATA[Lang::$current_lang['loginUserPass']]]></code>
<code><![CDATA[Lang::$current_lang['loginUserPass']]]></code>
<code><![CDATA[Lang::$current_lang['loginUserPassHint']]]></code>
<code><![CDATA[Lang::$current_lang['loginUserPassWeb']]]></code>
<code><![CDATA[Lang::$current_lang['loginUserPassWeb']]]></code>
<code><![CDATA[Lang::$current_lang['loginUserPhoneCodeWeb']]]></code>
<code><![CDATA[Lang::$current_lang['loginUserPhoneWeb']]]></code>
<code><![CDATA[Lang::$current_lang['loginWebQr']]]></code>
<code><![CDATA[Lang::$current_lang['signupFirstName']]]></code>
<code><![CDATA[Lang::$current_lang['signupLastName']]]></code>
</MixedArgument>
<MixedAssignment>
<code>$firstName</code>
<code>$lastName</code>
<code>$title</code>
<code>$title</code>
<code>$title</code>
</MixedAssignment>
<MixedOperand>
<code><![CDATA[Lang::$current_lang['loginManual']]]></code>
<code><![CDATA[Lang::$current_lang['loginQr']]]></code>
<code><![CDATA[Lang::$current_lang['loginQrCodeExpired']]]></code>
<code><![CDATA[Lang::$current_lang['loginQrCodeSuccessful']]]></code>
</MixedOperand>
<PossiblyInvalidArgument>
<code><![CDATA[$_POST['first_name']]]></code>
<code><![CDATA[$_POST['last_name'] ?? '']]></code>
<code><![CDATA[$_POST['password']]]></code>
<code><![CDATA[$_POST['phone_code']]]></code>
<code><![CDATA[$_POST['phone_number']]]></code>
<code><![CDATA[$_POST['token']]]></code>
</PossiblyInvalidArgument>
<PossiblyInvalidCast>
<code><![CDATA[$_POST['first_name']]]></code>
<code><![CDATA[$_POST['last_name'] ?? '']]></code>
<code><![CDATA[$_POST['password']]]></code>
<code><![CDATA[$_POST['phone_code']]]></code>
<code><![CDATA[$_POST['phone_number']]]></code>
<code><![CDATA[$_POST['token']]]></code>
</PossiblyInvalidCast>
<PossiblyUndefinedArrayOffset>
<code><![CDATA[Lang::$current_lang['loginManual']]]></code>
<code><![CDATA[Lang::$current_lang['loginQr']]]></code>
</PossiblyUndefinedArrayOffset>
<PossiblyUndefinedVariable>
<code>$result</code>
<code>$result</code>
</PossiblyUndefinedVariable>
<UnnecessaryVarAnnotation>
<code>?LoginQrCode</code>
<code>?LoginQrCode</code>
<code>?LoginQrCode</code>
</UnnecessaryVarAnnotation>
<UnusedVariable>
<code>$form</code>
</UnusedVariable>
</file>
<file src="src/loop.php">
<MissingClosureReturnType>
<code>function ($_) use ($callback) {</code>
</MissingClosureReturnType>
<MixedAssignment>
<code>$result</code>
<code>$result</code>
<code>$result</code>
<code>$result</code>
</MixedAssignment>
<PossiblyNullFunctionCall>
<code>$callback()</code>
<code>$callback()</code>
</PossiblyNullFunctionCall>
</file>
</files>