#!/usr/bin/env php }conf/config.level6.neonקh?~conf/config.levelmax.neon!קh!hconf/config.level0.neonp+קhp+Uf(conf/config.neonקhDLconf/bleedingEdge.neonקhDconf/config.level3.neonF קhF D~conf/parametersSchema.neonקhxconf/config.level7.neonYקhY^bZconf/config.level8.neonDקhDsJcconf/config.level1.neonקh?$conf/config.level4.neon-קh-'ϟconf/config.stubValidator.neon-קh-kconf/config.level9.neonHקhHuconf/config.level2.neonקh <conf/config.level5.neonBקhBO'$resources/functionMap_php82delta.phpקh RϤ1resources/functionMap_php80delta_bleedingEdge.phpקhOresources/RegexGrammar.ppקh7?yresources/functionMap.phpvקhvq&resources/functionMap_bleedingEdge.phpHLקhHLgĤ$resources/functionMap_php80delta.phpljקhljI$resources/functionMap_php81delta.phpקh*$resources/functionMap_php83delta.phpקhÆ$resources/functionMap_php84delta.phpקh2 preload.phpקhT]ߤstubs/ReflectionProperty.stubקhXڛڤ%stubs/ReflectionFunctionAbstract.stubקhVcȤstubs/Exception.stub- קh- Wmstubs/core.stub"קh">stubs/mysqli.stubXקhX FVstubs/ArrayObject.stubקhjMstubs/socket_select.stubקhf/stubs/socket_select_php8.stubקh٤stubs/spl.stub/קh/ stubs/SplObjectStorage.stubקh+qstubs/ReflectionAttribute.stub קh qstubs/ImagickPixel.stubpקhp+stubs/ibm_db2.stubקhcҤ"stubs/ReflectionClassConstant.stubקhDxdstubs/bleedingEdge/Rule.stubקhߤ !stubs/bleedingEdge/Countable.stuboקho U stubs/typeCheckingFunctions.stub^קh^U5 ¤stubs/Countable.stubdקhd䞤stubs/runtime/Attribute.php9קh9Qۊ%stubs/runtime/ReflectionUnionType.phpקhD=,stubs/runtime/ReflectionIntersectionType.phpקh;/stubs/runtime/Enum/ReflectionEnumBackedCase.phpקh;7ystubs/runtime/Enum/UnitEnum.phpקh-stubs/runtime/Enum/ReflectionEnumUnitCase.phpקh!stubs/runtime/Enum/BackedEnum.php קh M%stubs/runtime/Enum/ReflectionEnum.phpקhmG%stubs/runtime/ReflectionAttribute.phpקh="stubs/ReflectionEnum.stubhקhhݠFߤstubs/iterable.stub#קh#)kstubs/PDOStatement.stubקhstubs/json_validate.stubקhvRstubs/WeakReference.stub`קh``stubs/ReflectionParameter.stubקh5Τstubs/arrayFunctions.stub5קh5.stubs/date.stubקhfastubs/zip.stub4קh4#stubs/dom.stubMקhMM =stubs/ReflectionMethod.stubקhästubs/ReflectionClass.stubקhڤstubs/ext-ds.stubw8קhw8 & bin/phpstanקhФvendor/react/socket/LICENSEuקhu{)vendor/react/socket/src/UnixConnector.phpקhn$vendor/react/socket/src/FdServer.phpקh!2ˤ+vendor/react/socket/src/SecureConnector.phpJקhJŤ/vendor/react/socket/src/ConnectionInterface.phpmקhm󎫤(vendor/react/socket/src/SocketServer.php"קh"Hjɤ,vendor/react/socket/src/TimeoutConnector.phpa קha A#:vendor/react/socket/src/HappyEyeBallsConnectionBuilder.php-קh-(}e%-vendor/react/socket/src/FixedUriConnector.php<קh<Xؤ*vendor/react/socket/src/LimitingServer.phpקhȝG!(vendor/react/socket/src/SecureServer.phpקh 2vendor/react/socket/src/HappyEyeBallsConnector.php קh QV(vendor/react/socket/src/DnsConnector.phpקh%vendor/react/socket/src/Connector.phpקhB)%vendor/react/socket/src/TcpServer.php"קh"w"vendor/react/socket/src/Server.phpקhͷ.vendor/react/socket/src/ConnectorInterface.php=קh=4U&vendor/react/socket/src/UnixServer.phpקh<Ϥ(vendor/react/socket/src/TcpConnector.phpקhzi&vendor/react/socket/src/Connection.phpקh$0,vendor/react/socket/src/StreamEncryption.phpקhFbs+vendor/react/socket/src/ServerInterface.phpקh0-vendor/react/promise/LICENSEgקhgF&vendor/react/promise/src/functions.php,קh,@ $vendor/react/promise/src/Promise.php#(קh#( jv6vendor/react/promise/src/Internal/FulfilledPromise.phpT קhT x#s7vendor/react/promise/src/Internal/CancellationQueue.php'קh'tK5vendor/react/promise/src/Internal/RejectedPromise.php קh =%vendor/react/promise/src/Deferred.php%קh%!.vendor/react/promise/src/functions_include.phpקhRS9vendor/react/promise/src/Exception/CompositeException.phptקhtOڤ6vendor/react/promise/src/Exception/LengthException.phpqקhqM -vendor/react/promise/src/PromiseInterface.phpmקhmCvendor/react/dns/LICENSEuקhu{0vendor/react/dns/src/RecordNotFoundException.phpkקhk>+vendor/react/dns/src/BadServerException.phpfקhfP\|&vendor/react/dns/src/Model/Message.phpקhQzt%vendor/react/dns/src/Model/Record.phpקhk\14vendor/react/dns/src/Query/CancellationException.phpvקhv"^,vendor/react/dns/src/Query/RetryExecutor.phpK קhK (fv3vendor/react/dns/src/Query/UdpTransportExecutor.phph!קhh!Ry.vendor/react/dns/src/Query/TimeoutExecutor.php קh koI.vendor/react/dns/src/Query/CachingExecutor.phpU קhU ߬+vendor/react/dns/src/Query/CoopExecutor.php קh `,פ/vendor/react/dns/src/Query/TimeoutException.phpjקhj©9vendor/react/dns/src/Query/SelectiveTransportExecutor.php קh /vendor/react/dns/src/Query/FallbackExecutor.phpקh %Ѥ0vendor/react/dns/src/Query/HostsFileExecutor.php קh $vendor/react/dns/src/Query/Query.phpקhǠ*0vendor/react/dns/src/Query/ExecutorInterface.phpקhg]3vendor/react/dns/src/Query/TcpTransportExecutor.php6קh6_|(vendor/react/dns/src/Protocol/Parser.php,קh,=p.vendor/react/dns/src/Protocol/BinaryDumper.phpQקhQ͋o)vendor/react/dns/src/Resolver/Factory.php קh LD*vendor/react/dns/src/Resolver/Resolver.phpקh(3vendor/react/dns/src/Resolver/ResolverInterface.phpקhߔ)vendor/react/dns/src/Config/HostsFile.phpקh &vendor/react/dns/src/Config/Config.phpKקhK.ycvendor/react/cache/LICENSEuקhu{)vendor/react/cache/src/CacheInterface.php0 קh0 E%vendor/react/cache/src/ArrayCache.php_קh_ {vendor/react/stream/LICENSEuקhu{1vendor/react/stream/src/DuplexStreamInterface.phpקhޤ vendor/react/stream/src/Util.phpקh娨2vendor/react/stream/src/ReadableResourceStream.phpקhk値3vendor/react/stream/src/ReadableStreamInterface.php7קh7@0vendor/react/stream/src/DuplexResourceStream.phpקhS3vendor/react/stream/src/WritableStreamInterface.php9קh9Nպ~2vendor/react/stream/src/WritableResourceStream.phpקhQ)vendor/react/stream/src/ThroughStream.phpקh6+vendor/react/stream/src/CompositeStream.phphקhhSbvendor/react/event-loop/LICENSEuקhu{$vendor/react/event-loop/src/Loop.php9קh9/0vendor/react/event-loop/src/StreamSelectLoop.php/קh/s+-vendor/react/event-loop/src/LoopInterface.phpKקhK-'vendor/react/event-loop/src/Factory.php<קh<^)vendor/react/event-loop/src/ExtUvLoop.php#קh#+vendor/react/event-loop/src/Timer/Timer.php6קh6ť,vendor/react/event-loop/src/Timer/Timers.php קh 7ߤ)vendor/react/event-loop/src/ExtEvLoop.phpקhnҤ4vendor/react/event-loop/src/Tick/FutureTickQueue.phpקhֿ,vendor/react/event-loop/src/ExtLibevLoop.phpקh=V/vendor/react/event-loop/src/ExtLibeventLoop.php!קh!.vendor/react/event-loop/src/SignalsHandler.php+קh+9.vendor/react/event-loop/src/TimerInterface.phpקh? \,vendor/react/event-loop/src/ExtEventLoop.phpקh0g"vendor/react/child-process/LICENSEuקhu{*vendor/react/child-process/src/Process.php:קh:bvendor/react/async/LICENSE^קh^yT$vendor/react/async/src/functions.phpBקhBcH,vendor/react/async/src/functions_include.phpקh3 dvendor/react/http/PATCHES.txtקh!=yvendor/react/http/LICENSEuקhu{@vendor/react/http/src/Middleware/RequestBodyBufferMiddleware.php3קh3FFvendor/react/http/src/Middleware/LimitConcurrentRequestsMiddleware.phpקhڪT@vendor/react/http/src/Middleware/RequestBodyParserMiddleware.php^קh^`YB`?vendor/react/http/src/Middleware/StreamingRequestMiddleware.php/ קh/ )vendor/react/http/src/Message/Request.php" קh" P3vendor/react/http/src/Message/ResponseException.phpקh6d/vendor/react/http/src/Message/ServerRequest.php/קh/1;%vendor/react/http/src/Message/Uri.phpL%קhL%Ȥ*vendor/react/http/src/Message/Response.php}9קh}9+vendor/ondram/ci-detector/src/Ci/Bamboo.php8קh8FlS"vendor/phpstan/php-8-stubs/LICENSE/קh/#Ȥ(vendor/phpstan/php-8-stubs/stubs/LICENSE קh V=vendor/phpstan/php-8-stubs/stubs/ext/xml/xml_parser_free.stub>קh>X9ޤEvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_set_element_handler.stub קh ;aCvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_parser_set_option.stubקhI\xRvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_set_start_namespace_decl_handler.stubקh "Lvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_set_character_data_handler.stubקhbTvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_set_processing_instruction_handler.stubקh{NQCvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_parse_into_struct.stubeקheGBvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_parser_create_ns.stubhקhhPvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_set_end_namespace_decl_handler.stubקhՇ-{Rvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_set_unparsed_entity_decl_handler.stubקh||ߤ<vendor/phpstan/php-8-stubs/stubs/ext/xml/xml_set_object.stubקhj7vendor/phpstan/php-8-stubs/stubs/ext/xml/xml_parse.stub]קh] NKvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_set_notation_decl_handler.stubקhHvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_get_current_byte_index.stubHקhHqFCvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_parser_get_option.stubקh=t>vendor/phpstan/php-8-stubs/stubs/ext/xml/xml_error_string.stub?קh?wK@vendor/phpstan/php-8-stubs/stubs/ext/xml/xml_get_error_code.stub@קh@m:Ivendor/phpstan/php-8-stubs/stubs/ext/xml/xml_get_current_line_number.stubIקhI< ?vendor/phpstan/php-8-stubs/stubs/ext/xml/xml_parser_create.stubnקhnkP7vendor/phpstan/php-8-stubs/stubs/ext/xml/XMLParser.stub!קh!; AQvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_set_external_entity_ref_handler.stubקhqKvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_get_current_column_number.stubKקhKVJEvendor/phpstan/php-8-stubs/stubs/ext/xml/xml_set_default_handler.stub{קh{;vendor/phpstan/php-8-stubs/stubs/ext/calendar/cal_info.stubOקhOVf=vendor/phpstan/php-8-stubs/stubs/ext/calendar/jewishtojd.stubEקhE=vendor/phpstan/php-8-stubs/stubs/ext/calendar/juliantojd.stubEקhE>vendor/phpstan/php-8-stubs/stubs/ext/calendar/easter_date.stubXקhXM>vendor/phpstan/php-8-stubs/stubs/ext/calendar/jddayofweek.stubXקhXb=vendor/phpstan/php-8-stubs/stubs/ext/calendar/frenchtojd.stubEקhE=vendor/phpstan/php-8-stubs/stubs/ext/calendar/jdtojulian.stub8קh8ݝ;vendor/phpstan/php-8-stubs/stubs/ext/calendar/unixtojd.stub@קh@bvDvendor/phpstan/php-8-stubs/stubs/ext/calendar/cal_days_in_month.stubsקhs V@vendor/phpstan/php-8-stubs/stubs/ext/calendar/gregoriantojd.stubHקhH%g^=vendor/phpstan/php-8-stubs/stubs/ext/calendar/jdtofrench.stub8קh8dV>vendor/phpstan/php-8-stubs/stubs/ext/calendar/jdmonthname.stubDקhDt>vendor/phpstan/php-8-stubs/stubs/ext/calendar/cal_from_jd.stub^קh^xա>vendor/phpstan/php-8-stubs/stubs/ext/calendar/easter_days.stubXקhXTX2=vendor/phpstan/php-8-stubs/stubs/ext/calendar/jdtojewish.stub^קh^zA<vendor/phpstan/php-8-stubs/stubs/ext/calendar/cal_to_jd.stubSקhSoY;vendor/phpstan/php-8-stubs/stubs/ext/calendar/jdtounix.stub3קh3)&@vendor/phpstan/php-8-stubs/stubs/ext/calendar/jdtogregorian.stub;קh; <vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp2_getnext.stubקhD|Fvendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp_get_valueretrieval.stub3קh3K Z3vendor/phpstan/php-8-stubs/stubs/ext/snmp/SNMP.stubקh}|$>vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp2_real_walk.stubקh}<vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp3_getnext.stubקhZݤIvendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp_set_oid_output_format.stubקh:`M9vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp3_walk.stubקh'|M;vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmprealwalk.stubקhhƤ8vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp2_get.stubקhKIvendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp_set_oid_numeric_print.stubקhjΤ6vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmpset.stubקh7vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmpwalk.stubקhRS6vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmpget.stubקhWޤBvendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp_set_enum_print.stubקhi9vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp2_walk.stubקhuڤ8vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp2_set.stubקh"a<vendor/phpstan/php-8-stubs/stubs/ext/snmp/SNMPException.stub9קh9=wFvendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp_set_valueretrieval.stubקhޤ:vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmpgetnext.stubקh38vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp3_get.stub קh -!L>vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp3_real_walk.stubקhC`8vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp3_set.stub3קh3xCvendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp_set_quick_print.stubקh{:vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmpwalkoid.stubקhJA̤Cvendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp_get_quick_print.stub1קh1:<vendor/phpstan/php-8-stubs/stubs/ext/snmp/snmp_read_mib.stub:קh:nUCvendor/phpstan/php-8-stubs/stubs/ext/pdo_firebird/Pdo/Firebird.stubקhA_gGvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionProperty.stub"קh"GOvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionFunctionAbstract.stubקh|ҤLvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionZendExtension.stubקhHvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionUnionType.stuboקhoHvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionException.stubZקhZ&Kvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionEnumUnitCase.stub~קh~D%Gvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionConstant.stubקh$KOvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionIntersectionType.stubקhoQ>vendor/phpstan/php-8-stubs/stubs/ext/reflection/Reflector.stub3קh3Hvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionAttribute.stubקh:Lvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionClassConstant.stub. קh. I Hvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionGenerator.stubקhQDvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionFiber.stubקhCvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionEnum.stub4קh4q6ϤHvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionReference.stubbקhb^8Hvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionParameter.stub קh Q*6Cvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionType.stubקh9Mvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionEnumBackedCase.stubקh^hEvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionObject.stubwקhw?vendor/phpstan/php-8-stubs/stubs/ext/reflection/Reflection.stubקhHvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionNamedType.stubקhLQEvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionMethod.stub קh 6Gvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionFunction.stubקhDnEvendor/phpstan/php-8-stubs/stubs/ext/reflection/PropertyHookType.stubgקhg`פHvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionExtension.stubקhT1Dvendor/phpstan/php-8-stubs/stubs/ext/reflection/ReflectionClass.stubG$קhG$Ҹդ>vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_num_recent.stubקhE678vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_scan.stubOקhO^BeM:vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_status.stubקh(%2?vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_unsubscribe.stubקh'{J;vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_is_open.stubPקhPz8vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_utf8.stubAקhA tAvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_mutf7_to_utf8.stubEקhE:ܤ8vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_ping.stubקhI@@8vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_mail.stubקhcp|=vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_get_quota.stubIקhIR<?vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_listmailbox.stub3קh3hk?vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_utf7_decode.stubCקhCb5;vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_headers.stubקha :vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_getacl.stubקhk:vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_reopen.stub קh 7:o=vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_set_quota.stubקh:vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_delete.stubrקhrǖ{:vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_rename.stubקhX֤<vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_undelete.stubxקhx>$8vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_8bit.stub<קh<W8vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_lsub.stubקh ݤAvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_createmailbox.stubקh#%:vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_alerts.stub/קh/>vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_last_error.stub4קh4Bvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_mailboxmsginfo.stubקh28:vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_thread.stubקhvW?vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_fetchheader.stubקh=vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_mail_move.stubקh)ԤHvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_rfc822_parse_headers.stubpקhpó>vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_headerinfo.stubCקhC}V@Bvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_fetchstructure.stub קh `;vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_num_msg.stubקhb1=vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_mail_copy.stubקht@vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_mail_compose.stubTקhT09vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_close.stub-קh-J]:vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_setacl.stubקh9vBvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_clearflag_full.stubקhcڤ?vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_scanmailbox.stub]קh]?Bvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_listsubscribed.stub9קh9?9:=vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_subscribe.stubקh-fAvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_getsubscribed.stubקh=vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_fetchmime.stubקh":vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_append.stubUקhU(^Hvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_rfc822_write_address.stubqקhqٹ@vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_setflag_full.stubקhqhA;vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_timeout.stubQקhQϔnФ6vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_gc.stubקh!װAvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_renamemailbox.stubקh8P:vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_create.stubקhe6?vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_utf7_encode.stub=קh=N Avendor/phpstan/php-8-stubs/stubs/ext/imap/imap_utf8_to_mutf7.stub\קh\hAvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_deletemailbox.stubקh*ɧ9vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_msgno.stubקh^7.:vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_qprint.stub>קh>Hvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_rfc822_parse_adrlist.stub_קh_c=vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_fetchbody.stubקh$8vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_open.stubקhD:vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_errors.stub/קh/r<vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_listscan.stubקh!Iۤ:vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_base64.stub>קh>T'<vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_savebody.stubuקhuQp8vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_body.stubקh:vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_search.stub-קh-R-vendor/phpstan/php-8-stubs/stubs/ext/imap/IMAP/Connection.stubwקhw̑^fAvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_get_quotaroot.stubקhž8vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_list.stubקhREȤ=vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_fetchtext.stub-קh-er9vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_check.stubקh?8>vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_bodystruct.stubקh Z:vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_binary.stub>קh>sFvendor/phpstan/php-8-stubs/stubs/ext/imap/imap_mime_header_decode.stubPקhPplr@vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_getmailboxes.stubקhӤ7vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_uid.stubקh*;vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_expunge.stubקhΡ8vendor/phpstan/php-8-stubs/stubs/ext/imap/imap_sort.stub}קh}-?ܤ7vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_rmdir.stubקh6vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_cdup.stubקh"7vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_chdir.stubקh0e<vendor/phpstan/php-8-stubs/stubs/ext/ftp/FTP/Connection.stubvקhv;p7vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_login.stubקhB"5vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_pwd.stubקhvEF<vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_get_option.stubקhWU!<vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_set_option.stub קh ^e8vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_delete.stubקh_96vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_fput.stubmקhm3y6vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_mlsd.stubקh٬Ԥ9vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_connect.stubקh`q=vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_nb_continue.stubקhc Ǥ5vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_get.stubKקhKŧ6vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_site.stubקh7vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_mkdir.stubקhԵ18vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_nb_get.stubUקhU6vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_pasv.stubקha~5vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_put.stubKקhK&ۤ7vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_nlist.stub קh ]8vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_rename.stubקh^❤6vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_size.stubקh'E9vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_nb_fput.stubqקhq7vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_close.stubקhƅV9vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_nb_fget.stubqקhqBE7vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_chmod.stubקhoG9vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_systype.stubקhn6vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_fget.stubmקhm~F6vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_exec.stubקhXB`8vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_append.stub/קh/w5vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_raw.stubקh.Z7vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_alloc.stubקh*8vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_nb_put.stub[קh[dC#T6vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_mdtm.stubקh@ԅ=vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_ssl_connect.stub*קh*kv6vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_quit.stubקh_9vendor/phpstan/php-8-stubs/stubs/ext/ftp/ftp_rawlist.stub@קh@_Rvendor/phpstan/php-8-stubs/stubs/ext/libxml/libxml_set_external_entity_loader.stubZקhZfrlRvendor/phpstan/php-8-stubs/stubs/ext/libxml/libxml_get_external_entity_loader.stubTקhTaABvendor/phpstan/php-8-stubs/stubs/ext/libxml/libxml_get_errors.stub/קh/<vendor/phpstan/php-8-stubs/stubs/ext/libxml/LibXMLError.stub?קh?Mvendor/phpstan/php-8-stubs/stubs/ext/libxml/libxml_disable_entity_loader.stub`קh`Fvendor/phpstan/php-8-stubs/stubs/ext/libxml/libxml_get_last_error.stub@קh@)Kvendor/phpstan/php-8-stubs/stubs/ext/libxml/libxml_set_streams_context.stub_קh_pu+Kvendor/phpstan/php-8-stubs/stubs/ext/libxml/libxml_use_internal_errors.stubOקhOnu8Dvendor/phpstan/php-8-stubs/stubs/ext/libxml/libxml_clear_errors.stub0קh0'Evendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_result_error_field.stub קh ~Z>vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_lo_truncate.stubקh@I<vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_fieldtype.stubקhv=vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_get_result.stubקhvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_fetch_array.stubYקhYmyƤ>vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_socket_poll.stubקh@{Fvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_set_error_verbosity.stub+קh+#=vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_get_notify.stub:קh:%>vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_last_notice.stubקhWnXDvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_send_query_params.stub קh 7/<vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_copy_from.stubdקhddSf<vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_loreadall.stubקhe4:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_lo_read.stubקhdO <vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_lo_export.stubקh>vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_free_result.stubקhD@vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_result_status.stub קh 4J=vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_freeresult.stubקhע?vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_field_prtlen.stubקh'49vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_socket.stubקhГEvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_result_memory_size.stubyקhyڤ<vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_meta_data.stub[קh[?vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_send_execute.stubקhR9vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_delete.stub[קh[H_%<vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_fieldname.stubקhtFvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_set_client_encoding.stub)קh)H)?vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_connect_poll.stubקh34>vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_field_table.stub קh F?vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_fetch_object.stubiקhip,ؤ;vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_fieldnum.stubקhogǤ?vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_send_prepare.stubקh\*:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_get_pid.stubקhgr <vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_cmdtuples.stubקh; Avendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_escape_literal.stub@קh@yȤ;vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_loexport.stubקhvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_lo_read_all.stubקhpH@<vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_fetch_all.stubקh149vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_update.stubyקhy=vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_field_name.stubקha<vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_lo_unlink.stub-קh-[VNg@vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_escape_string.stub2קh2IAvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_field_type_oid.stubקhmRkDvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_escape_identifier.stubFקhF;l^=vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_last_error.stubקhADOvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_set_error_context_visibility.stubקhz뇤?vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_put_copy_end.stubpקhpܳפ:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_numrows.stubקhx=vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_send_query.stubקhkl=vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_field_type.stubקhD17vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_exec.stubXקhXR8vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_trace.stubקh%:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_lowrite.stub>קh>ITe?vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_cancel_query.stubקh)2T>vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_fieldisnull.stubקhy @vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_consume_input.stubקhEe=vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_num_fields.stubקh 9vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_select.stubקh]KJCvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_connection_reset.stubקhMW6vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_jit.stubקhf9vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_dbname.stubקh)^68vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_close.stub)קh)jI:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_version.stub קh  !<vendor/phpstan/php-8-stubs/stubs/ext/pgsql/PgSql/Result.stubtקhtK}@vendor/phpstan/php-8-stubs/stubs/ext/pgsql/PgSql/Connection.stubxקhxZ@ 19vendor/phpstan/php-8-stubs/stubs/ext/pgsql/PgSql/Lob.stubqקhq<vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_fieldsize.stubקh8bxAvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_clientencoding.stub>קh>b;vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_last_oid.stubקhSbEvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_transaction_status.stubקh3 :vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_untrace.stub/קh/:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_convert.stubeקhe%˯7vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_host.stubקhݤpm:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_loclose.stubקhę;vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_end_copy.stubקhng?vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_fetch_result.stubקh.?vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_escape_bytea.stub0קh0WmI7vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_ping.stubקhG9vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_result.stubקh\9vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_loopen.stubקho<<vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_fetch_row.stubSקhSVn>vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_fieldprtlen.stubקh ʤHvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_set_chunked_rows_size.stubקhj/:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_lo_tell.stubקhNAvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_unescape_bytea.stub>קh>} T>vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_result_seek.stubקhƼIBvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_connection_busy.stubקhQ<vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_field_num.stubקh8,@vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_field_is_null.stubקh6:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_lo_seek.stubקhW<vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_lo_create.stubhקhh8.>vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_fetch_assoc.stub)קh)Dl灤;vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_locreate.stubקh:";vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_pconnect.stubקhBĤ=vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_field_size.stubקh¤:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_options.stubקhwfS6vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_tty.stubקhM ݤ:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_copy_to.stubקh@;vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_loimport.stubקh` ?vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_query_params.stubקhF=vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_getlastoid.stubקh{ ;vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_num_rows.stubקh}h7:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_lo_open.stubקhHT8vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_flush.stubקh'[:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_execute.stubקh^wDvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_fetch_all_columns.stubקhE;vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_lo_close.stubקhY%$;vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_lounlink.stubwקhw Cvendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_parameter_status.stub@קh@ϧݤ:vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_connect.stubקh8vendor/phpstan/php-8-stubs/stubs/ext/pgsql/pg_query.stubCקhC>[Hvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_get_privatekey.stubקhNdEvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_x509_export.stubקh[Mvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_random_pseudo_bytes.stubקh%Kp%Jvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_x509_fingerprint.stubקhAJvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkey_get_private.stubקh*oCvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkey_free.stub[קh[[jEvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_spki_export.stubDקhD]ȤCvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_x509_free.stubaקha.MIԤIvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_password_verify.stubקhB;(Ivendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkey_get_public.stubקh`Fvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkcs7_verify.stubקhդDvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkcs7_sign.stubDקhD%Gvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkcs12_export.stubקh=IWDvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_csr_export.stubקhiLvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_csr_get_public_key.stubקhOXϤ>vendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_open.stubקh1̽tPvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_x509_check_private_key.stubקh LIvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_get_curve_names.stubjקhj⡤Lvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_get_cipher_methods.stubdקhd$Mvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_x509_export_to_file.stubקhC m>vendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_seal.stubקhKBvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_free_key.stubzקhz\҅Jvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_cipher_iv_length.stubMקhM~Ivendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_private_encrypt.stubקh ZFvendor/phpstan/php-8-stubs/stubs/ext/openssl/OpenSSLAsymmetricKey.stub,קh,{ՔHvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_get_md_methods.stub`קh` IEvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_cms_encrypt.stubVקhV0ΤOvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkcs12_export_to_file.stubקh4bMvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkey_export_to_file.stubקhw#Evendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkey_export.stubקhOkyHvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_public_encrypt.stubקh'@vendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_verify.stubקh8oGvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkcs7_decrypt.stubקh.ͤLvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_csr_export_to_file.stubקh;!sBvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_cms_read.stubuקhu(o@vendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_digest.stubqקhq~ՒKvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_cipher_key_length.stub_קh_HFvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_error_string.stub9קh97G1Kvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_x509_checkpurpose.stubקhDvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_cms_verify.stub(קh(ۤAvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_decrypt.stub~קh~8Bvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkey_new.stubZקhZNDvendor/phpstan/php-8-stubs/stubs/ext/openssl/OpenSSLCertificate.stubLקhLLYZIvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_private_decrypt.stubקh{Rvendor/phpstan/php-8-stubs/stubs/ext/openssl/OpenSSLCertificateSigningRequest.stub8קh8wmWAvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_csr_new.stubקha^AGvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkcs7_encrypt.stub קh h+ !Evendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_spki_verify.stub<קh<N>vendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_sign.stubקhȤOvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_spki_export_challenge.stubNקhNBvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_csr_sign.stubקhäEvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_x509_verify.stubקhkMIvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_csr_get_subject.stubקh+sBvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_cms_sign.stub]קh]Yh8Gvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_get_publickey.stubקhU@vendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pbkdf2.stubקhsDvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkcs7_read.stubmקhmzHvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_public_decrypt.stubקhEvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkcs12_read.stubקhAvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_encrypt.stubקhlS8Cvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_x509_read.stubjקhjb({eDvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_x509_parse.stubקh%Jvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkey_get_details.stubmקhmDBvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_spki_new.stubקh].Lvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_get_cert_locations.stubOקhO?Gvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_password_hash.stubקhlz3Hvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_dh_compute_key.stubqקhq 6Evendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_cms_decrypt.stub4קh4CzEvendor/phpstan/php-8-stubs/stubs/ext/openssl/openssl_pkey_derive.stubקhIG<vendor/phpstan/php-8-stubs/stubs/ext/soap/is_soap_fault.stub7קh7ת*9vendor/phpstan/php-8-stubs/stubs/ext/soap/SoapClient.stubBקhBB<8vendor/phpstan/php-8-stubs/stubs/ext/soap/SoapFault.stubקh1Evendor/phpstan/php-8-stubs/stubs/ext/soap/use_soap_error_handler.stubhקhhīd6vendor/phpstan/php-8-stubs/stubs/ext/soap/SoapVar.stubקhT|l8vendor/phpstan/php-8-stubs/stubs/ext/soap/SoapParam.stubbקhbd>9vendor/phpstan/php-8-stubs/stubs/ext/soap/SoapHeader.stubקhV9vendor/phpstan/php-8-stubs/stubs/ext/soap/SoapServer.stub&קh&}Zn7vendor/phpstan/php-8-stubs/stubs/ext/soap/Soap/Sdl.stubpקhpWͤ7vendor/phpstan/php-8-stubs/stubs/ext/soap/Soap/Url.stubpקhpR{?vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_ssl_set.stubYקhYOYDvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_more_results.stub>קh>y@vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_rollback.stub`קh`Cvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_multi_query.stubLקhLR=vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_error.stub9קh9H`Ivendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_get_warnings.stubdקhd\'Gvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_get_result.stubzקhzZ}Cvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_change_user.stubtקhtvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_report.stubקhpͦHvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_bind_result.stub\קh\f[=vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_debug.stubקh+<vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_kill.stubGקhG/BI@vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_sqlstate.stub<קh<A4Ivendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_store_result.stubLקhL繽i<vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_ping.stub6קh6DFvFvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_data_seek.stubVקhVVqTJvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_get_server_version.stubCקhC"Avendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_fetch_all.stubקhJD{E7vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli.stub2קh2aqDvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_get_warnings.stubOקhO|Kvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_send_long_data.stublקhlrJvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_real_escape_string.stubVקhV<1Bvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_errno.stubDקhD2v6<vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stat.stub>קh>ۑBvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_reset.stubEקhEoϤ?vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_connect.stubקhpAvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_insert_id.stubAקhAƙsHvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_field_count.stubJקhJKDvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_real_connect.stubקho=vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_close.stubקhޤBvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_fetch.stubFקhFzIvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_more_results.stublקhl#Avendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_init.stubIקhI-1*<vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_info.stub9קh9nm<vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_init.stub1קh1xfέIvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_release_savepoint.stubXקhX֮Evendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_connect_error.stub4קh4xFvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_get_proto_info.stub?קh?0!Cvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_free_result.stubEקhE@Bvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_autocommit.stubJקhJ>6Fvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_insert_id.stubOקhO9Dvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_prepare.stubVקhV`Evendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_num_rows.stubUקhUICvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_next_result.stub=קh=OlCvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_thread_safe.stub/קh/GĤCvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_get_charset.stubGקhGwޤGvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_dump_debug_info.stubAקhA+UGCvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_fetch_assoc.stubhקhh[k>vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_driver.stubGקhGAiBvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_use_result.stubLקhL˞ Dvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_store_result.stub]קh]qHvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_next_result.stubKקhK'4Avendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_fetch_row.stubfקhfDgEvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_escape_string.stubyקhy0Evendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_fetch_lengths.stubeקhe{ܧ=vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_errno.stub6קh6깤Evendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_attr_get.stubWקhW}>Jvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_affected_rows.stubSקhSMEvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_warning_count.stub>קh>Y!%Gvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_get_client_info.stubKקhK2ܤBvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_real_query.stubKקhKlEvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_get_host_info.stubAקhA`Evendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_attr_set.stubdקhd[Avendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_thread_id.stub:קh:YXHvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_free_result.stubKקhK,?vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_refresh.stubEקhE٤?vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_execute.stubקh=cDvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_fetch_fields.stub^קh^Gvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_get_links_stats.stubKקhKs@-Gvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_bind_param.stubjקhjuX̬Dvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_fetch_column.stubקh^EHvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_reap_async_query.stubqקhqK Cvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_fetch_field.stubMקhM щJvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_get_client_version.stub5קh5DC<vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt.stub8 קh8 rdDvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_fetch_object.stubקh'U>vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_commit.stub^קh^J?vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_options.stubnקhnIvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_begin_transaction.stubiקhiwФ<vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_poll.stubקheLvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_result_metadata.stub_קh_퀞٤Bvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_error.stubGקhG}*>vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_result.stub% קh% XoCvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_fetch_array.stubקh؇Avendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_select_db.stubMקhM[Jvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_character_set_name.stubFקhF6ěCvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_field_count.stub<קh<FGV=vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_query.stub}קh}vBvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_close.stubקhxBvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_field_seek.stubקhlEvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_affected_rows.stubEקhE?vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_warning.stubקh@`<Cvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_set_charset.stubNקhN='6Evendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_sqlstate.stubJקhJ}KEvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_sql_exception.stubקh.Dvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_execute.stubקh&2ԤEvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_execute_query.stubקh(iۤGvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_get_server_info.stubCקhC6?vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_prepare.stub]קh]ڤAvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_data_seek.stubPקhP}KLvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_get_connection_stats.stub~קh~vHvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_param_count.stubJקhJ܌FJvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_fetch_field_direct.stub`קh`g`Avendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_savepoint.stubIקhIBvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_field_tell.stubCקhC`@vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_num_rows.stubHקhHPHvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_get_client_stats.stubLקhL Bvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_num_fields.stubCקhCs>Evendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_connect_errno.stub0קh0S>?vendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_set_opt.stubקh=Gvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_stmt_error_list.stubbקhbIgBvendor/phpstan/php-8-stubs/stubs/ext/mysqli/mysqli_error_list.stubTקhT6GQ=vendor/phpstan/php-8-stubs/stubs/ext/xmlreader/XMLReader.stub'קh't=yCvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_get_option.stubxקhx]I?vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_create.stubXקhXRO?vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_accept.stubBקhBjդ@vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_sendmsg.stub_קh_qp ?vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_select.stubקhZOޤBvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_set_block.stub<קh<vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_close.stub8קh8Ivendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_addrinfo_explain.stubaקhaJ NCvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_set_option.stubקhFvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_import_stream.stub`קh`R7Ť@vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_recvmsg.stub`קh`ۓ=vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_read.stubiקhiqb=vendor/phpstan/php-8-stubs/stubs/ext/sockets/AddressInfo.stub#קh#AAPvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_wsaprotocol_info_export.stubtקhtPvDvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_clear_error.stubFקhF_{Z?vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_atmark.stubhקhh%|8vendor/phpstan/php-8-stubs/stubs/ext/sockets/Socket.stub@קh@RoHvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_addrinfo_lookup.stubקh\ur=vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_recv.stub}קh}>>vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_write.stub`קh`)=vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_bind.stubWקhW%Qvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_wsaprotocol_info_release.stubKקhK攘Cvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_last_error.stubKקhKAvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_shutdown.stubfקhf?vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_sendto.stubקh6qAvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_strerror.stub=קh='ЊDvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_getsockname.stubקhPI2Fvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_create_listen.stubקh7Dvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_getpeername.stubקhx?vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_listen.stubKקhK%lFvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_export_stream.stubXקhXhPFvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_addrinfo_bind.stubOקhOIDvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_create_pair.stubקh l?vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_setopt.stubקhĉ Pvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_wsaprotocol_info_import.stubSקhSCvendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_cmsg_space.stubQקhQ\դ=vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_send.stubcקhcN.[4@vendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_connect.stub^קh^[`Avendor/phpstan/php-8-stubs/stubs/ext/sockets/socket_recvfrom.stubקh4!ˤ@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_cmp.stubxקhx?;vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/dotnet.stubקh`*Nvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_date_to_timestamp.stubGקhG뾤Pvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_date_from_timestamp.stubJקhJzHvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/com_safearray_proxy.stubCקhCj@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_and.stubEקhE{wqEvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_set_type.stubIקhIkjo@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_mul.stubEקhE5[Gvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/com_print_typeinfo.stubקh?oJvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/com_get_active_object.stub\קh\)ˤEvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_get_type.stub=קh=ND@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_xor.stubEקhE؏+Bvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_round.stubJקhJ.Bvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/com_exception.stub?קh?PfAvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_cast.stubIקhI*8vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/com.stubקhKϯ@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_sub.stubEקhEAg3@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_pow.stubEקhEWgEvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/com_load_typelib.stub[קh[g@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_eqv.stubEקhE=@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_int.stub8קh8(?^Evendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/com_message_pump.stubJקhJ@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_not.stub8קh8F@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_abs.stub8קh8<դEvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/COMPersistHelper.stubקh찤Cvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/com_event_sink.stub{קh{B0ԅ@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_div.stubEקhEDvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/com_create_guid.stub4קh4\B#@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_imp.stubEקhE26WAvendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_idiv.stubFקhFh<vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant.stubקh4b@p@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_add.stubEקhE'Z5?vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_or.stubDקhDS@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_set.stubiקhi @vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_neg.stub8קh8ox@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_mod.stubEקhEY@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_fix.stub8קh8F@vendor/phpstan/php-8-stubs/stubs/ext/com_dotnet/variant_cat.stubEקhEjKvendor/phpstan/php-8-stubs/stubs/ext/opcache/opcache_get_configuration.stubTקhTzGvendor/phpstan/php-8-stubs/stubs/ext/opcache/opcache_jit_blacklist.stubTקhTֹDvendor/phpstan/php-8-stubs/stubs/ext/opcache/opcache_invalidate.stubTקhT1Dvendor/phpstan/php-8-stubs/stubs/ext/opcache/opcache_get_status.stubiקhiZH"Fvendor/phpstan/php-8-stubs/stubs/ext/opcache/opcache_compile_file.stubAקhA:ÑҤ?vendor/phpstan/php-8-stubs/stubs/ext/opcache/opcache_reset.stubLקhLuJvendor/phpstan/php-8-stubs/stubs/ext/opcache/opcache_is_script_cached.stubEקhEd%=vendor/phpstan/php-8-stubs/stubs/ext/exif/exif_thumbnail.stubקh-)=vendor/phpstan/php-8-stubs/stubs/ext/exif/exif_imagetype.stub@קh@vY=vendor/phpstan/php-8-stubs/stubs/ext/exif/exif_read_data.stubקh~&;vendor/phpstan/php-8-stubs/stubs/ext/exif/exif_tagname.stub]קh]J)f;vendor/phpstan/php-8-stubs/stubs/ext/ffi/FFI/Exception.stub:קh:ڧAvendor/phpstan/php-8-stubs/stubs/ext/ffi/FFI/ParserException.stubNקhN2q 07vendor/phpstan/php-8-stubs/stubs/ext/ffi/FFI/CType.stubF+קhF+x7vendor/phpstan/php-8-stubs/stubs/ext/ffi/FFI/CData.stub-קh-1vendor/phpstan/php-8-stubs/stubs/ext/ffi/FFI.stub קh CgGvendor/phpstan/php-8-stubs/stubs/ext/readline/readline_add_history.stub?קh?fՁEvendor/phpstan/php-8-stubs/stubs/ext/readline/readline_redisplay.stub/קh/''Ovendor/phpstan/php-8-stubs/stubs/ext/readline/readline_completion_function.stubKקhKqRSvendor/phpstan/php-8-stubs/stubs/ext/readline/readline_callback_handler_remove.stub=קh=yHvendor/phpstan/php-8-stubs/stubs/ext/readline/readline_list_history.stubcקhc%;vendor/phpstan/php-8-stubs/stubs/ext/readline/readline.stubeקhe%ؤNvendor/phpstan/php-8-stubs/stubs/ext/readline/readline_callback_read_char.stub8קh8~qeGvendor/phpstan/php-8-stubs/stubs/ext/readline/readline_on_new_line.stubIקhItȸHvendor/phpstan/php-8-stubs/stubs/ext/readline/readline_read_history.stubQקhQ$7ФIvendor/phpstan/php-8-stubs/stubs/ext/readline/readline_write_history.stubKקhK@bR@vendor/phpstan/php-8-stubs/stubs/ext/readline/readline_info.stubקhGTvendor/phpstan/php-8-stubs/stubs/ext/readline/readline_callback_handler_install.stubקh7#Ivendor/phpstan/php-8-stubs/stubs/ext/readline/readline_clear_history.stub3קh3$Bvendor/phpstan/php-8-stubs/stubs/ext/spl/OutOfBoundsException.stubQקhQ$";vendor/phpstan/php-8-stubs/stubs/ext/spl/OuterIterator.stubקh==>vendor/phpstan/php-8-stubs/stubs/ext/spl/RuntimeException.stubFקhFGFvendor/phpstan/php-8-stubs/stubs/ext/spl/InvalidArgumentException.stubSקhSW;vendor/phpstan/php-8-stubs/stubs/ext/spl/spl_object_id.stub7קh7[ 3;vendor/phpstan/php-8-stubs/stubs/ext/spl/ArrayIterator.stubקhuP@vendor/phpstan/php-8-stubs/stubs/ext/spl/FilesystemIterator.stubIקhI$>vendor/phpstan/php-8-stubs/stubs/ext/spl/IteratorIterator.stub,קh,h絤Hvendor/phpstan/php-8-stubs/stubs/ext/spl/RecursiveDirectoryIterator.stubקht6<vendor/phpstan/php-8-stubs/stubs/ext/spl/RangeException.stubKקhK7gͤ?vendor/phpstan/php-8-stubs/stubs/ext/spl/SplTempFileObject.stubקhhv9vendor/phpstan/php-8-stubs/stubs/ext/spl/ArrayObject.stub]קh]_;vendor/phpstan/php-8-stubs/stubs/ext/spl/SplFileObject.stubקhz<vendor/phpstan/php-8-stubs/stubs/ext/spl/AppendIterator.stubקhYT?vendor/phpstan/php-8-stubs/stubs/ext/spl/RecursiveIterator.stubקhۤ=vendor/phpstan/php-8-stubs/stubs/ext/spl/spl_object_hash.stub<קh<x~;vendor/phpstan/php-8-stubs/stubs/ext/spl/RegexIterator.stub קh 1<vendor/phpstan/php-8-stubs/stubs/ext/spl/iterator_apply.stubiקhi:vendor/phpstan/php-8-stubs/stubs/ext/spl/spl_autoload.stubWקhW5=8vendor/phpstan/php-8-stubs/stubs/ext/spl/class_uses.stubקhC>vendor/phpstan/php-8-stubs/stubs/ext/spl/SplObjectStorage.stubX קhX ɤEvendor/phpstan/php-8-stubs/stubs/ext/spl/RecursiveFilterIterator.stubקhDvendor/phpstan/php-8-stubs/stubs/ext/spl/RecursiveRegexIterator.stubקh6&Mvendor/phpstan/php-8-stubs/stubs/ext/spl/RecursiveCallbackFilterIterator.stub קh :ir&>vendor/phpstan/php-8-stubs/stubs/ext/spl/class_implements.stubקhqNl@Cvendor/phpstan/php-8-stubs/stubs/ext/spl/RecursiveTreeIterator.stubV קhV 41??vendor/phpstan/php-8-stubs/stubs/ext/spl/spl_autoload_call.stub;קh;{ń";vendor/phpstan/php-8-stubs/stubs/ext/spl/SplFixedArray.stubקh}1m8vendor/phpstan/php-8-stubs/stubs/ext/spl/SplMinHeap.stubקh]=vendor/phpstan/php-8-stubs/stubs/ext/spl/CachingIterator.stub קh <vendor/phpstan/php-8-stubs/stubs/ext/spl/iterator_count.stubקhS4Cvendor/phpstan/php-8-stubs/stubs/ext/spl/spl_autoload_register.stubwקhwn{>vendor/phpstan/php-8-stubs/stubs/ext/spl/SeekableIterator.stubקh֤>vendor/phpstan/php-8-stubs/stubs/ext/spl/InfiniteIterator.stubקh3VHAvendor/phpstan/php-8-stubs/stubs/ext/spl/OutOfRangeException.stubNקhN"8Dvendor/phpstan/php-8-stubs/stubs/ext/spl/BadMethodCallException.stub[קh[&:vendor/phpstan/php-8-stubs/stubs/ext/spl/GlobIterator.stubcקhc 9vendor/phpstan/php-8-stubs/stubs/ext/spl/SplFileInfo.stubקhY<vendor/phpstan/php-8-stubs/stubs/ext/spl/FilterIterator.stubקhŹ8vendor/phpstan/php-8-stubs/stubs/ext/spl/SplSubject.stubjקhjrϤ=vendor/phpstan/php-8-stubs/stubs/ext/spl/LengthException.stubJקhJ2?;vendor/phpstan/php-8-stubs/stubs/ext/spl/class_parents.stubקhLwHDvendor/phpstan/php-8-stubs/stubs/ext/spl/RecursiveArrayIterator.stubqקhqZ)#ޤDvendor/phpstan/php-8-stubs/stubs/ext/spl/spl_autoload_functions.stub4קh4mpiFvendor/phpstan/php-8-stubs/stubs/ext/spl/BadFunctionCallException.stubSקhS7}Ҥ>vendor/phpstan/php-8-stubs/stubs/ext/spl/SplPriorityQueue.stub קh x^<vendor/phpstan/php-8-stubs/stubs/ext/spl/LogicException.stubcקhcU;Gvendor/phpstan/php-8-stubs/stubs/ext/spl/RecursiveIteratorIterator.stub קh _TqEvendor/phpstan/php-8-stubs/stubs/ext/spl/spl_autoload_unregister.stubFקhFW6vendor/phpstan/php-8-stubs/stubs/ext/spl/SplQueue.stubקhtV@vendor/phpstan/php-8-stubs/stubs/ext/spl/UnderflowException.stubOקhOA9vendor/phpstan/php-8-stubs/stubs/ext/spl/spl_classes.stub@קh@n;>vendor/phpstan/php-8-stubs/stubs/ext/spl/NoRewindIterator.stubקhKm6vendor/phpstan/php-8-stubs/stubs/ext/spl/SplStack.stub7קh7>9vendor/phpstan/php-8-stubs/stubs/ext/spl/SplObserver.stubקhMƵAvendor/phpstan/php-8-stubs/stubs/ext/spl/SplDoublyLinkedList.stubrקhrFvendor/phpstan/php-8-stubs/stubs/ext/spl/UnexpectedValueException.stubUקhUh?vendor/phpstan/php-8-stubs/stubs/ext/spl/DirectoryIterator.stub!קh!iECDvendor/phpstan/php-8-stubs/stubs/ext/spl/CallbackFilterIterator.stubקh ;vendor/phpstan/php-8-stubs/stubs/ext/spl/LimitIterator.stubקh5vendor/phpstan/php-8-stubs/stubs/ext/spl/SplHeap.stubZקhZ4Y`;vendor/phpstan/php-8-stubs/stubs/ext/spl/EmptyIterator.stubjקhjGځݤ=vendor/phpstan/php-8-stubs/stubs/ext/spl/DomainException.stubJקhJ|HR>vendor/phpstan/php-8-stubs/stubs/ext/spl/MultipleIterator.stubi קhi cX䌤?vendor/phpstan/php-8-stubs/stubs/ext/spl/iterator_to_array.stubקh:6YؤEvendor/phpstan/php-8-stubs/stubs/ext/spl/spl_autoload_extensions.stubUקhUc Fvendor/phpstan/php-8-stubs/stubs/ext/spl/RecursiveCachingIterator.stubקh)?vendor/phpstan/php-8-stubs/stubs/ext/spl/OverflowException.stubNקhNƤ<vendor/phpstan/php-8-stubs/stubs/ext/spl/ParentIterator.stub7קh7ml8vendor/phpstan/php-8-stubs/stubs/ext/spl/SplMaxHeap.stubקhC0>vendor/phpstan/php-8-stubs/stubs/ext/intl/intl_error_name.stub<קh<vz1Bvendor/phpstan/php-8-stubs/stubs/ext/intl/locale_get_keywords.stubaקhaϹnCvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_get_timezone.stub]קh]^=Cvendor/phpstan/php-8-stubs/stubs/ext/intl/normalizer_normalize.stubxקhx'Bvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_get_pattern.stubUקhUSXLvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_set_first_day_of_week.stubקhtDvendor/phpstan/php-8-stubs/stubs/ext/intl/calendar/IntlCalendar.stubFקhF8+Mvendor/phpstan/php-8-stubs/stubs/ext/intl/calendar/IntlGregorianCalendar.stubקh`TTvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_repeated_wall_time_option.stubXקhX=vendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_equals.stubXקhXeW>vendor/phpstan/php-8-stubs/stubs/ext/intl/collator_create.stubOקhO `Cvendor/phpstan/php-8-stubs/stubs/ext/intl/msgfmt_parse_message.stubקhABvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_set_lenient.stubקh\<vendor/phpstan/php-8-stubs/stubs/ext/intl/msgfmt_format.stub]קh]X/_<vendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_clear.stubקhVʤBvendor/phpstan/php-8-stubs/stubs/ext/intl/intl_get_error_code.stub<קh<Q/Evendor/phpstan/php-8-stubs/stubs/ext/intl/resourcebundle_locales.stub_קh_O_}Svendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_skipped_wall_time_option.stubWקhWy@vendor/phpstan/php-8-stubs/stubs/ext/intl/grapheme_strripos.stubdקhd='Dvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_raw_offset.stubHקhHDJvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_get_calendar_object.stubiקhiV*+}?vendor/phpstan/php-8-stubs/stubs/ext/intl/grapheme_strrpos.stubcקhcDҤ:vendor/phpstan/php-8-stubs/stubs/ext/intl/idn_to_utf8.stubקhJuGvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_use_daylight_time.stubLקhLҤOvendor/phpstan/php-8-stubs/stubs/ext/intl/transliterator_create_from_rules.stubקhw4Cvendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_set_attribute.stubnקhn XRHvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_get_error_message.stubUקhUDoBvendor/phpstan/php-8-stubs/stubs/ext/intl/locale_canonicalize.stubAקhA:<vendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_after.stubWקhWU@vendor/phpstan/php-8-stubs/stubs/ext/intl/locale_get_script.stub?קh?FʿOvendor/phpstan/php-8-stubs/stubs/ext/intl/resourcebundle_get_error_message.stubVקhV6Evendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_error_code.stubOקhO,%室Mvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_weekend_transition.stubgקhgwr<vendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_format.stubקhCZOvendor/phpstan/php-8-stubs/stubs/ext/intl/transliterator_get_error_message.stubdקhd"KKvendor/phpstan/php-8-stubs/stubs/ext/intl/transliterator_transliterate.stubקh!nrFvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_create_instance.stubקh<|>vendor/phpstan/php-8-stubs/stubs/ext/intl/intl_is_failure.stub:קh:{yCvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_get_datetype.stubSקhSy>vendor/phpstan/php-8-stubs/stubs/ext/intl/grapheme_strlen.stubSקhS 4?vendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_type.stubFקhF|Dvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_create_default.stub;קh;9B<vendor/phpstan/php-8-stubs/stubs/ext/intl/IntlException.stubTקhTcDvendor/phpstan/php-8-stubs/stubs/ext/intl/msgfmt_get_error_code.stubMקhMwυIvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_tz_data_version.stub?קh?KU^><vendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_create.stubzקhz5ڈt=vendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_gmt.stub4קh4@vendor/phpstan/php-8-stubs/stubs/ext/intl/collator/Collator.stubF קhF CT{=vendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_before.stubXקhX3TKvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_greatest_minimum.stubaקha1zIvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_from_date_time_zone.stubXקhXtELvendor/phpstan/php-8-stubs/stubs/ext/intl/transliterator/Transliterator.stubקh<vendor/phpstan/php-8-stubs/stubs/ext/intl/locale/Locale.stuboקhoIvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_actual_minimum.stub_קh_%B@Bvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_set_lenient.stub\קh\n*wFvendor/phpstan/php-8-stubs/stubs/ext/intl/transliterator_list_ids.stubRקhR."9Gvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_in_daylight_time.stubLקhLCvendor/phpstan/php-8-stubs/stubs/ext/intl/converter/UConverter.stub(1קh(1Gvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_equivalent_id.stub\קh\5=vendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_create.stubcקhc/uHvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_error_message.stubUקhU>vendor/phpstan/php-8-stubs/stubs/ext/intl/grapheme_strpos.stubbקhb9hⓤ?vendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_time.stubKקhK]Dvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_error_code.stubNקhNUCvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_set_timezone.stubJקhJ݆Avendor/phpstan/php-8-stubs/stubs/ext/intl/locale_get_default.stub>קh>FPFvendor/phpstan/php-8-stubs/stubs/ext/intl/collator_get_error_code.stubJקhJ.ȤDvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_time_zone.stubXקhXCDvendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_get_error_code.stubLקhL$?vendor/phpstan/php-8-stubs/stubs/ext/intl/grapheme_extract.stubקh恤<vendor/phpstan/php-8-stubs/stubs/ext/intl/collator_sort.stuboקhoǍGvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_error_message.stubTקhTyKvendor/phpstan/php-8-stubs/stubs/ext/intl/dateformat/IntlDateFormatter.stubקh~a4Rvendor/phpstan/php-8-stubs/stubs/ext/intl/dateformat/IntlDatePatternGenerator.stubNקhNޒ!Tvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_keyword_values_for_locale.stubקhKvendor/phpstan/php-8-stubs/stubs/ext/intl/collator_sort_with_sort_keys.stubYקhY$r_Lvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_first_day_of_week.stubVקhVPC̤Fvendor/phpstan/php-8-stubs/stubs/ext/intl/locale_get_display_name.stubiקhi8դ;vendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_roll.stubrקhrFeJvendor/phpstan/php-8-stubs/stubs/ext/intl/intlgregcal_create_instance.stubקhioMIvendor/phpstan/php-8-stubs/stubs/ext/intl/msgformat/MessageFormatter.stubקhLEvendor/phpstan/php-8-stubs/stubs/ext/intl/collator_get_attribute.stubYקhY'C $Gvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_field_difference.stuboקho?@vendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_get_locale.stubqקhqJFvendor/phpstan/php-8-stubs/stubs/ext/intl/locale_accept_from_http.stubJקhJg׽Cvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_set_calendar.stubpקhpW)`Avendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_unknown.stub8קh8Evendor/phpstan/php-8-stubs/stubs/ext/intl/intl_get_error_message.stub5קh5C;$?vendor/phpstan/php-8-stubs/stubs/ext/intl/grapheme_stripos.stubcקhc Avendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_is_weekend.stub`קh`c)Dvendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_parse_currency.stubקhˤBvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_minimum.stubXקhXB(Dvendor/phpstan/php-8-stubs/stubs/ext/intl/collator_get_strength.stubBקhB4[@vendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_localtime.stubקheƤDvendor/phpstan/php-8-stubs/stubs/ext/intl/locale_filter_matches.stubrקhr?vendor/phpstan/php-8-stubs/stubs/ext/intl/grapheme_stristr.stubqקhqԺUBvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_set_pattern.stub^קh^C->vendor/phpstan/php-8-stubs/stubs/ext/intl/grapheme_strstr.stubpקhp(5Evendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_format_currency.stubwקhwMdHvendor/phpstan/php-8-stubs/stubs/ext/intl/spoofchecker/Spoofchecker.stubקhdaGvendor/phpstan/php-8-stubs/stubs/ext/intl/normalizer_is_normalized.stubcקhc|Lvendor/phpstan/php-8-stubs/stubs/ext/intl/resourcebundle_get_error_code.stubPקhP9eGvendor/phpstan/php-8-stubs/stubs/ext/intl/msgfmt_get_error_message.stubSקhSVYIvendor/phpstan/php-8-stubs/stubs/ext/intl/collator_get_error_message.stubPקhP]#Avendor/phpstan/php-8-stubs/stubs/ext/intl/locale_set_default.stubקh=dEvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_dst_savings.stubIקhICತDvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_windows_id.stubnקhn{$ŋCvendor/phpstan/php-8-stubs/stubs/ext/intl/resourcebundle_count.stubGקhG<vendor/phpstan/php-8-stubs/stubs/ext/intl/msgfmt_create.stubgקhgb>vendor/phpstan/php-8-stubs/stubs/ext/intl/grapheme_substr.stubdקhd;vendor/phpstan/php-8-stubs/stubs/ext/intl/msgfmt_parse.stubsקhsخ0Cvendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_get_attribute.stubgקhg{Kvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_day_of_week_type.stubeקhe2Fvendor/phpstan/php-8-stubs/stubs/ext/intl/locale_get_all_variants.stubDקhDlKvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_id_for_windows_id.stubkקhkR-Cvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_get_timetype.stubSקhS`PAvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_is_lenient.stubLקhLGԤGvendor/phpstan/php-8-stubs/stubs/ext/intl/intlgregcal_is_leap_year.stub`קh`Hvendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_set_text_attribute.stubpקhpaBvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_maximum.stubXקhX{?vendor/phpstan/php-8-stubs/stubs/ext/intl/collator_compare.stubeקhe<=RUvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_minimal_days_in_first_week.stub_קh_F@Lvendor/phpstan/php-8-stubs/stubs/ext/intl/resourcebundle/ResourceBundle.stubhקhh+@vendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_region.stubHקhHW_̤Hvendor/phpstan/php-8-stubs/stubs/ext/intl/formatter/NumberFormatter.stub\קh\Ҥ@vendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_get_symbol.stub^קh^AUvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_set_minimal_days_in_first_week.stubקhM=@vendor/phpstan/php-8-stubs/stubs/ext/intl/msgfmt_get_locale.stubLקhL+ Dvendor/phpstan/php-8-stubs/stubs/ext/intl/collator_set_strength.stubקhІpHvendor/phpstan/php-8-stubs/stubs/ext/intl/locale_get_display_script.stubkקhkdkIvendor/phpstan/php-8-stubs/stubs/ext/intl/locale_get_display_variant.stublקhl2T[=vendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_format.stubקh4Avendor/phpstan/php-8-stubs/stubs/ext/intl/resourcebundle_get.stub2קh2O>@vendor/phpstan/php-8-stubs/stubs/ext/intl/locale_get_region.stub?קh?Dvendor/phpstan/php-8-stubs/stubs/ext/intl/normalizer/Normalizer.stub קh h@vendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_set_symbol.stubeקhe I٤Bvendor/phpstan/php-8-stubs/stubs/ext/intl/common/IntlIterator.stubiקhiXAIvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_actual_maximum.stub_קh_'zyCvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_get_calendar.stubSקhS{эOvendor/phpstan/php-8-stubs/stubs/ext/intl/intlgregcal_get_gregorian_change.stub^קh^dƤCvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_to_date_time.stubSקhS!=r:vendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_set.stubקh&ʵCEvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_from_date_time.stuboקhoJKAvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_get_locale.stubtקht:LԤAvendor/phpstan/php-8-stubs/stubs/ext/intl/msgfmt_get_pattern.stubSקhSuDvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_format_object.stubקh2wDvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_has_same_rules.stubfקhf Avendor/phpstan/php-8-stubs/stubs/ext/intl/msgfmt_set_pattern.stub\קh\Dvendor/phpstan/php-8-stubs/stubs/ext/intl/resourcebundle_create.stubקhk<vendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_parse.stubקh7Avendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_is_lenient.stubFקhFsFLqFvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_canonical_id.stubקh7=vendor/phpstan/php-8-stubs/stubs/ext/intl/locale_compose.stubAקhA~`ФHvendor/phpstan/php-8-stubs/stubs/ext/intl/locale_get_display_region.stubkקhk+_Avendor/phpstan/php-8-stubs/stubs/ext/intl/grapheme_str_split.stubfקhf-sqAvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_iana_id.stub|קh|`Dvendor/phpstan/php-8-stubs/stubs/ext/intl/collator_get_sort_key.stub[קh[KJvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_count_equivalent_ids.stub^קh^$'<vendor/phpstan/php-8-stubs/stubs/ext/intl/locale_lookup.stubקhrqHvendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_get_text_attribute.stubiקhiGvendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_get_error_message.stubRקhREvendor/phpstan/php-8-stubs/stubs/ext/intl/collator_set_attribute.stub`קh`Gvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_to_date_time_zone.stub[קh[}K;vendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_parse.stubקhҤDvendor/phpstan/php-8-stubs/stubs/ext/intl/transliterator_create.stubקhw%Ovendor/phpstan/php-8-stubs/stubs/ext/intl/normalizer_get_raw_decomposition.stubקh½Avendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_set_pattern.stub[קh[$դ:vendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get.stubPקhP@D =vendor/phpstan/php-8-stubs/stubs/ext/intl/collator_asort.stubpקhp^RAvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_locale.stubYקhY Gvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_is_equivalent_to.stubbקhbqrJvendor/phpstan/php-8-stubs/stubs/ext/intl/locale_get_display_language.stubmקhm׫Lvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_available_locales.stubRקhR*e?Jvendor/phpstan/php-8-stubs/stubs/ext/intl/locale_get_primary_language.stubIקhI@~Fvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_display_name.stubקhhW:vendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_add.stubWקhWy;zUvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_create_time_zone_id_enumeration.stubקh:Ovendor/phpstan/php-8-stubs/stubs/ext/intl/intlgregcal_set_gregorian_change.stuboקho<}Dvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_set_time_zone.stubקh Hvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_create_enumeration.stubקh5Avendor/phpstan/php-8-stubs/stubs/ext/intl/numfmt_get_pattern.stubRקhRK=vendor/phpstan/php-8-stubs/stubs/ext/intl/uchar/IntlChar.stubJקhJD <vendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_id.stubIקhIATvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_set_repeated_wall_time_option.stubקh^`lBvendor/phpstan/php-8-stubs/stubs/ext/intl/collator_get_locale.stubTקhT/<Fvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_get_timezone_id.stubYקhYkDvendor/phpstan/php-8-stubs/stubs/ext/intl/msgfmt_format_message.stubhקhhDvendor/phpstan/php-8-stubs/stubs/ext/intl/timezone/IntlTimeZone.stubקhWEvendor/phpstan/php-8-stubs/stubs/ext/intl/datefmt_get_error_code.stubOקhO4.Fvendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_create_time_zone.stubPקhP{ФSvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_set_skipped_wall_time_option.stubקhJLvendor/phpstan/php-8-stubs/stubs/ext/intl/transliterator_get_error_code.stub^קh^*`>vendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_now.stub-קh-Z2;vendor/phpstan/php-8-stubs/stubs/ext/intl/idn_to_ascii.stubקh3H=vendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_is_set.stubNקhNi=Hvendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_get_least_maximum.stub^קh^Rv@vendor/phpstan/php-8-stubs/stubs/ext/intl/intltz_get_offset.stubקhqs(ɤ;vendor/phpstan/php-8-stubs/stubs/ext/intl/locale_parse.stub9קh9pLvendor/phpstan/php-8-stubs/stubs/ext/intl/transliterator_create_inverse.stubeקhe~1K?vendor/phpstan/php-8-stubs/stubs/ext/intl/intlcal_set_time.stubVקhVsNvendor/phpstan/php-8-stubs/stubs/ext/intl/breakiterator/IntlBreakIterator.stubLקhLp WqNvendor/phpstan/php-8-stubs/stubs/ext/intl/breakiterator/IntlPartsIterator.stub@קh@m6Wvendor/phpstan/php-8-stubs/stubs/ext/intl/breakiterator/IntlRuleBasedBreakIterator.stubקhf,Wvendor/phpstan/php-8-stubs/stubs/ext/intl/breakiterator/IntlCodePointBreakIterator.stubקh?6vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bcdiv.stubRקhR 7vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bcceil.stubTקhT6vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bcpow.stubUקhUzä8vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bcscale.stub5קh5<>vendor/phpstan/php-8-stubs/stubs/ext/bcmath/BcMath/Number.stub6קh6]6vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bcmul.stubRקhRf=8vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bcfloor.stubUקhU8vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bcround.stubקh7vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bccomp.stubPקhPt 6vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bcmod.stubRקhR5P9vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bcdivmod.stubקhc789vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bcpowmod.stubiקhi"?56vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bcsub.stubRקhRrjD6vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bcadd.stubtקht˯7vendor/phpstan/php-8-stubs/stubs/ext/bcmath/bcsqrt.stubDקhD=M?vendor/phpstan/php-8-stubs/stubs/ext/fileinfo/finfo_buffer.stubקh6 rH8vendor/phpstan/php-8-stubs/stubs/ext/fileinfo/finfo.stub>קh> =vendor/phpstan/php-8-stubs/stubs/ext/fileinfo/finfo_file.stubקhvz=vendor/phpstan/php-8-stubs/stubs/ext/fileinfo/finfo_open.stubקh<*Bvendor/phpstan/php-8-stubs/stubs/ext/fileinfo/finfo_set_flags.stub קh +6%Dvendor/phpstan/php-8-stubs/stubs/ext/fileinfo/mime_content_type.stubkקhk}.>vendor/phpstan/php-8-stubs/stubs/ext/fileinfo/finfo_close.stubקhޠ8;vendor/phpstan/php-8-stubs/stubs/ext/pdo_odbc/Pdo/Odbc.stubBקhBjBvendor/phpstan/php-8-stubs/stubs/ext/sysvshm/SysvSharedMemory.stubJקhJI_+<vendor/phpstan/php-8-stubs/stubs/ext/sysvshm/shm_attach.stubnקhn I!@vendor/phpstan/php-8-stubs/stubs/ext/sysvshm/shm_remove_var.stubKקhK)q<vendor/phpstan/php-8-stubs/stubs/ext/sysvshm/shm_detach.stub=קh=:Pā=vendor/phpstan/php-8-stubs/stubs/ext/sysvshm/shm_has_var.stubHקhH9<vendor/phpstan/php-8-stubs/stubs/ext/sysvshm/shm_remove.stub=קh=BE=vendor/phpstan/php-8-stubs/stubs/ext/sysvshm/shm_get_var.stubIקhIu=vendor/phpstan/php-8-stubs/stubs/ext/sysvshm/shm_put_var.stubVקhV¾5vendor/phpstan/php-8-stubs/stubs/ext/random/rand.stubWקhW4!:vendor/phpstan/php-8-stubs/stubs/ext/random/lcg_value.stub8קh8;vendor/phpstan/php-8-stubs/stubs/ext/random/getrandmax.stubSקhS~Rw6vendor/phpstan/php-8-stubs/stubs/ext/random/srand.stubקh6x<=vendor/phpstan/php-8-stubs/stubs/ext/random/random_bytes.stubZקhZTP8vendor/phpstan/php-8-stubs/stubs/ext/random/mt_rand.stubZקhZݐ^>vendor/phpstan/php-8-stubs/stubs/ext/random/mt_getrandmax.stub:קh:g;vendor/phpstan/php-8-stubs/stubs/ext/random/random_int.stubIקhIYCvendor/phpstan/php-8-stubs/stubs/ext/random/Random/RandomError.stubnקhnwYOvendor/phpstan/php-8-stubs/stubs/ext/random/Random/BrokenRandomEngineError.stubקhiBvendor/phpstan/php-8-stubs/stubs/ext/random/Random/Randomizer.stubקh e]>vendor/phpstan/php-8-stubs/stubs/ext/random/Random/Engine.stubhקhh*Hvendor/phpstan/php-8-stubs/stubs/ext/random/Random/CryptoSafeEngine.stubaקha?Evendor/phpstan/php-8-stubs/stubs/ext/random/Random/Engine/Secure.stubקhǥkFvendor/phpstan/php-8-stubs/stubs/ext/random/Random/Engine/Mt19937.stubקhRvendor/phpstan/php-8-stubs/stubs/ext/random/Random/Engine/PcgOneseq128XslRr64.stubקh|l!Qvendor/phpstan/php-8-stubs/stubs/ext/random/Random/Engine/Xoshiro256StarStar.stub"קh"n !Gvendor/phpstan/php-8-stubs/stubs/ext/random/Random/RandomException.stubvקhvaHvendor/phpstan/php-8-stubs/stubs/ext/random/Random/IntervalBoundary.stubEקhEI9vendor/phpstan/php-8-stubs/stubs/ext/random/mt_srand.stubקhd:vendor/phpstan/php-8-stubs/stubs/ext/hash/hash_equals.stubQקhQݍ3vendor/phpstan/php-8-stubs/stubs/ext/hash/hash.stub*קh*N9vendor/phpstan/php-8-stubs/stubs/ext/hash/hash_final.stubTקhT+i8vendor/phpstan/php-8-stubs/stubs/ext/hash/hash_hmac.stubeקheZ饤8vendor/phpstan/php-8-stubs/stubs/ext/hash/hash_init.stubקhP8Cvendor/phpstan/php-8-stubs/stubs/ext/hash/mhash_get_block_size.stubSקhSx8vendor/phpstan/php-8-stubs/stubs/ext/hash/hash_hkdf.stubxקhx8vendor/phpstan/php-8-stubs/stubs/ext/hash/hash_file.stubקhT54vendor/phpstan/php-8-stubs/stubs/ext/hash/mhash.stubVקhV `:vendor/phpstan/php-8-stubs/stubs/ext/hash/hash_pbkdf2.stub_קh_DѤ:vendor/phpstan/php-8-stubs/stubs/ext/hash/mhash_count.stub'קh'v 9vendor/phpstan/php-8-stubs/stubs/ext/hash/hash_algos.stubUקhU7=vendor/phpstan/php-8-stubs/stubs/ext/hash/hash_hmac_file.stubtקhtm?vendor/phpstan/php-8-stubs/stubs/ext/hash/hash_update_file.stubקh\:vendor/phpstan/php-8-stubs/stubs/ext/hash/HashContext.stubקh 8vendor/phpstan/php-8-stubs/stubs/ext/hash/hash_copy.stubCקhCj>vendor/phpstan/php-8-stubs/stubs/ext/hash/hash_hmac_algos.stubZקhZMUAvendor/phpstan/php-8-stubs/stubs/ext/hash/hash_update_stream.stub}קh}WZBvendor/phpstan/php-8-stubs/stubs/ext/hash/mhash_get_hash_name.stubAקhA3n?vendor/phpstan/php-8-stubs/stubs/ext/hash/mhash_keygen_s2k.stubkקhkڣ:vendor/phpstan/php-8-stubs/stubs/ext/hash/hash_update.stubקhd8=vendor/phpstan/php-8-stubs/stubs/ext/pdo_mysql/Pdo/Mysql.stubקh6vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_fact.stub9קh9B烤5vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_neg.stub8קh85vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_sub.stubPקhPAi8vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_jacobi.stubRקhRj5vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_div.stubקh>}5vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_and.stubPקhPcmΒ5vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_add.stubPקhP<@vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_perfect_square.stubCקhCeE*0;vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_kronecker.stubUקhU#¤;vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_nextprime.stub>קh>6vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_powm.stubnקhnzR:vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_popcount.stub<קh<=56vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_init.stubCקhC'¿J4vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_or.stubOקhON4<vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_prob_prime.stubUקhUY6vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_sqrt.stub9קh92H8vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_clrbit.stub<קh<-ؤ5vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_cmp.stubOקhOЃ5vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_xor.stubPקhPɐm9vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_testbit.stubHקhHaOX:vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_binomial.stubCקhC :vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_legendre.stubTקhTN7vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_scan1.stubFקhF65vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_pow.stubGקhG6vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_sign.stub8קh8}:vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_divexact.stubUקhUj7vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_scan0.stubFקhFHV8vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_export.stubקht?vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_perfect_power.stubBקhBIqΤ9vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_hamdist.stubSקhS0)"5vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_gcd.stubPקhP69vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_sqrtrem.stubTקhT^8vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_invert.stubYקhY^ 8vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_div_qr.stubקh *5vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_abs.stub8קh8ܕp=vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_random_seed.stubAקhA86vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_root.stubCקhCF8vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_strval.stubMקhMO-5vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_com.stub8קh8SԴ>vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_random_range.stubWקhW-7vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_div_q.stubwקhww9vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_rootrem.stub^קh^se`=vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_random_bits.stub5קh55vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_lcm.stubPקhPZ%5vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_mul.stubPקhPFF8vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_setbit.stubPקhP +8vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_gcdext.stubkקhk~?07vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_div_r.stubwקhwlo9?1vendor/phpstan/php-8-stubs/stubs/ext/gmp/GMP.stub<קh<(8vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_intval.stub:קh:Z8vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_import.stubwקhw[Y5vendor/phpstan/php-8-stubs/stubs/ext/gmp/gmp_mod.stubPקhPPZCvendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_tableprivileges.stub קh H;vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_columns.stubקhDl8vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_exec.stubקhJڮ>vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_num_fields.stubקh:}f=vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_field_len.stubקh^e?vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_foreignkeys.stubקh?Bvendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_specialcolumns.stubקhg`g5?vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_data_source.stubקh.=vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_close_all.stubMקhM]j&?vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_longreadlen.stubקh;vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_prepare.stubקh㈤:vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_commit.stubקh|OC:vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_result.stubקhn|>vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_statistics.stubkקhkf[;vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_execute.stubקh_e:vendor/phpstan/php-8-stubs/stubs/ext/odbc/Odbc/Result.stubmקhmܕ>b>vendor/phpstan/php-8-stubs/stubs/ext/odbc/Odbc/Connection.stubqקhqWk;vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_binmode.stubקh9V?vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_field_scale.stubקh bV@vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_fetch_object.stubFקhF\h=vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_field_num.stubקhp=vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_fetch_row.stubקh)9vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_error.stubקh{ ?vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_fetch_array.stubקh%\<vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_pconnect.stubhקhhSj<vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_rollback.stubקhNCvendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_field_precision.stubקhPؤ?vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_next_result.stub קh mKOvendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_connection_string_is_quoted.stubsקhsPip;vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_connect.stubfקhfDvendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_columnprivileges.stub_קh_ Q7>vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_autocommit.stubbקhb(I?vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_gettypeinfo.stubקhQ9vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_close.stubקhX`N Kvendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_connection_string_quote.stubWקhWA٤>vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_field_name.stubקh:vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_tables.stubקh=vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_setoption.stubקhp1>vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_field_type.stubקhYi>vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_fetch_into.stubKקhK55Rvendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_connection_string_should_quote.stub\קh\q<vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_num_rows.stubקhPȤ?vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_primarykeys.stub5קh5!a:vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_cursor.stubקhl?vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_free_result.stubקhxD<vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_errormsg.stubקhOi}>vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_result_all.stubקhlzDvendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_procedurecolumns.stubCקhCѳc>vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_procedures.stubiקhi9G,6vendor/phpstan/php-8-stubs/stubs/ext/odbc/odbc_do.stub קh 8vendor/phpstan/php-8-stubs/stubs/ext/standard/fputs.stubקh' r<vendor/phpstan/php-8-stubs/stubs/ext/standard/parse_url.stubקhs+Cvendor/phpstan/php-8-stubs/stubs/ext/standard/htmlspecialchars.stubקhW֤=vendor/phpstan/php-8-stubs/stubs/ext/standard/dns_get_mx.stubקh%Cvendor/phpstan/php-8-stubs/stubs/ext/standard/dns_check_record.stubקh9vendor/phpstan/php-8-stubs/stubs/ext/standard/uksort.stubקhDĄHvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_set_chunk_size.stubiקhi@)@vendor/phpstan/php-8-stubs/stubs/ext/standard/str_increment.stubKקhKtDvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_bucket_new.stubקh6놞>vendor/phpstan/php-8-stubs/stubs/ext/standard/show_source.stubrקhrv6Jvendor/phpstan/php-8-stubs/stubs/ext/standard/image_type_to_extension.stubeקhecAvendor/phpstan/php-8-stubs/stubs/ext/standard/array_diff_key.stubJקhJ=+:vendor/phpstan/php-8-stubs/stubs/ext/standard/lcfirst.stub4קh4 ,@vendor/phpstan/php-8-stubs/stubs/ext/standard/str_decrement.stubKקhKzR7vendor/phpstan/php-8-stubs/stubs/ext/standard/tanh.stub,קh,ש:vendor/phpstan/php-8-stubs/stubs/ext/standard/stristr.stubiקhiOzBvendor/phpstan/php-8-stubs/stubs/ext/standard/config_get_hash.stubSקhSV+Mvendor/phpstan/php-8-stubs/stubs/ext/standard/get_html_translation_table.stubקhi=vendor/phpstan/php-8-stubs/stubs/ext/standard/strtolower.stub7קh7?vendor/phpstan/php-8-stubs/stubs/ext/standard/array_column.stubvקhv%Bvendor/phpstan/php-8-stubs/stubs/ext/standard/password_verify.stubJקhJMvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_context_set_options.stub קh 'hĤ9vendor/phpstan/php-8-stubs/stubs/ext/standard/fscanf.stubקht[ <vendor/phpstan/php-8-stubs/stubs/ext/standard/fileinode.stub;קh;l6"MIvendor/phpstan/php-8-stubs/stubs/ext/standard/__PHP_Incomplete_Class.stub^קh^LG8H>vendor/phpstan/php-8-stubs/stubs/ext/standard/array_shift.stub6קh60SCvendor/phpstan/php-8-stubs/stubs/ext/standard/getprotobynumber.stubcקhcDvendor/phpstan/php-8-stubs/stubs/ext/standard/password_get_info.stubcקhc Kvendor/phpstan/php-8-stubs/stubs/ext/standard/unregister_tick_function.stubGקhG{5@vendor/phpstan/php-8-stubs/stubs/ext/standard/array_replace.stubOקhO|7cCvendor/phpstan/php-8-stubs/stubs/ext/standard/get_current_user.stub6קh6R:vendor/phpstan/php-8-stubs/stubs/ext/standard/strcspn.stubkקhk~Hvendor/phpstan/php-8-stubs/stubs/ext/standard/php_ini_scanned_files.stub:קh:WeMvendor/phpstan/php-8-stubs/stubs/ext/standard/register_shutdown_function.stubקhJKBvendor/phpstan/php-8-stubs/stubs/ext/standard/array_diff_ukey.stubfקhf7 Cvendor/phpstan/php-8-stubs/stubs/ext/standard/disk_total_space.stubEקhEBx̤Avendor/phpstan/php-8-stubs/stubs/ext/standard/clearstatcache.stubkקhk??vendor/phpstan/php-8-stubs/stubs/ext/standard/array_unique.stubPקhP|3J:vendor/phpstan/php-8-stubs/stubs/ext/standard/fgetcsv.stubקh('?vendor/phpstan/php-8-stubs/stubs/ext/standard/StreamBucket.stub קh "i79vendor/phpstan/php-8-stubs/stubs/ext/standard/strpos.stubYקhYO?7vendor/phpstan/php-8-stubs/stubs/ext/standard/fdiv.stub:קh:]7vendor/phpstan/php-8-stubs/stubs/ext/standard/rand.stubFקhF<vendor/phpstan/php-8-stubs/stubs/ext/standard/doubleval.stubJקhJg(9vendor/phpstan/php-8-stubs/stubs/ext/standard/dechex.stub-קh-•U:vendor/phpstan/php-8-stubs/stubs/ext/standard/print_r.stubקh"NEvendor/phpstan/php-8-stubs/stubs/ext/standard/move_uploaded_file.stubGקhGU*;vendor/phpstan/php-8-stubs/stubs/ext/standard/closelog.stubeקheI8vendor/phpstan/php-8-stubs/stubs/ext/standard/fread.stub]קh]kOAvendor/phpstan/php-8-stubs/stubs/ext/standard/parse_ini_file.stubקh e;vendor/phpstan/php-8-stubs/stubs/ext/standard/readfile.stubקh<vendor/phpstan/php-8-stubs/stubs/ext/standard/array_any.stubWקhWD?vendor/phpstan/php-8-stubs/stubs/ext/standard/str_contains.stubIקhIi:3ˤIvendor/phpstan/php-8-stubs/stubs/ext/standard/output_add_rewrite_var.stubNקhN]4<vendor/phpstan/php-8-stubs/stubs/ext/standard/inet_pton.stubUקhUɔ:vendor/phpstan/php-8-stubs/stubs/ext/standard/extract.stub|קh|f8vendor/phpstan/php-8-stubs/stubs/ext/standard/fsync.stubYקhY+ >vendor/phpstan/php-8-stubs/stubs/ext/standard/array_slice.stubtקhtCvendor/phpstan/php-8-stubs/stubs/ext/standard/sys_get_temp_dir.stub6קh6Qq<vendor/phpstan/php-8-stubs/stubs/ext/standard/Directory.stubקhtw]=vendor/phpstan/php-8-stubs/stubs/ext/standard/array_keys.stubקh b<vendor/phpstan/php-8-stubs/stubs/ext/standard/filegroup.stub;קh;4Cvendor/phpstan/php-8-stubs/stubs/ext/standard/get_include_path.stub5קh5ha<vendor/phpstan/php-8-stubs/stubs/ext/standard/str_rot13.stub6קh6谛;Jvendor/phpstan/php-8-stubs/stubs/ext/standard/htmlspecialchars_decode.stubקh+Lvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_context_get_params.stubrקhrt<vendor/phpstan/php-8-stubs/stubs/ext/standard/rewinddir.stub`קh`=Lvendor/phpstan/php-8-stubs/stubs/ext/standard/output_reset_rewrite_vars.stub6קh66vendor/phpstan/php-8-stubs/stubs/ext/standard/log.stub>קh>G7vendor/phpstan/php-8-stubs/stubs/ext/standard/sinh.stub,קh,+.>vendor/phpstan/php-8-stubs/stubs/ext/standard/utf8_encode.stub8קh8_?=vendor/phpstan/php-8-stubs/stubs/ext/standard/getlastmod.stub,קh,Ӥ9vendor/phpstan/php-8-stubs/stubs/ext/standard/strspn.stubjקhjxHvendor/phpstan/php-8-stubs/stubs/ext/standard/array_intersect_assoc.stubQקhQ³L8vendor/phpstan/php-8-stubs/stubs/ext/standard/atanh.stub-קh-OY=vendor/phpstan/php-8-stubs/stubs/ext/standard/str_getcsv.stubקh:7 @vendor/phpstan/php-8-stubs/stubs/ext/standard/stream_select.stubOקhOݤ8vendor/phpstan/php-8-stubs/stubs/ext/standard/asinh.stub-קh-ޤJvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_register_wrapper.stubקhE?vendor/phpstan/php-8-stubs/stubs/ext/standard/getimagesize.stubקh:vendor/phpstan/php-8-stubs/stubs/ext/standard/fprintf.stubkקhkU9vendor/phpstan/php-8-stubs/stubs/ext/standard/is_int.stub/קh/^Lvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_wrapper_unregister.stubFקhFy>vendor/phpstan/php-8-stubs/stubs/ext/standard/file_exists.stub8קh8^,<vendor/phpstan/php-8-stubs/stubs/ext/standard/is_string.stub2קh2x7vendor/phpstan/php-8-stubs/stubs/ext/standard/feof.stubGקhG=mBvendor/phpstan/php-8-stubs/stubs/ext/standard/debug_zval_dump.stubJקhJd5͉?vendor/phpstan/php-8-stubs/stubs/ext/standard/headers_list.stubAקhAgŤLvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_context_set_option.stubקhK Hvendor/phpstan/php-8-stubs/stubs/ext/standard/password_needs_rehash.stubjקhj7O>vendor/phpstan/php-8-stubs/stubs/ext/standard/get_browser.stubקh/.Evendor/phpstan/php-8-stubs/stubs/ext/standard/stream_socket_pair.stubקhXy7vendor/phpstan/php-8-stubs/stubs/ext/standard/prev.stub6קh6l<vendor/phpstan/php-8-stubs/stubs/ext/standard/array_pad.stubNקhN{~ ?vendor/phpstan/php-8-stubs/stubs/ext/standard/is_writeable.stubSקhS:vendor/phpstan/php-8-stubs/stubs/ext/standard/fputcsv.stubקh^@"Jvendor/phpstan/php-8-stubs/stubs/ext/standard/image_type_to_mime_type.stubSקhS1{Τ>vendor/phpstan/php-8-stubs/stubs/ext/standard/chunk_split.stubfקhf-jBvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_get_line.stub|קh|Bvendor/phpstan/php-8-stubs/stubs/ext/standard/array_multisort.stubקhnla;vendor/phpstan/php-8-stubs/stubs/ext/standard/linkinfo.stub6קh6ݍ6vendor/phpstan/php-8-stubs/stubs/ext/standard/pos.stubJקhJ@vendor/phpstan/php-8-stubs/stubs/ext/standard/array_unshift.stubHקhHb`9vendor/phpstan/php-8-stubs/stubs/ext/standard/hexdec.stub:קh:AT9vendor/phpstan/php-8-stubs/stubs/ext/standard/chroot.stubtקht:vendor/phpstan/php-8-stubs/stubs/ext/standard/natsort.stub}קh}*#Gvendor/phpstan/php-8-stubs/stubs/ext/standard/call_user_func_array.stubQקhQ+w:vendor/phpstan/php-8-stubs/stubs/ext/standard/is_link.stub4קh4Cvendor/phpstan/php-8-stubs/stubs/ext/standard/memory_get_usage.stubDקhDEN<vendor/phpstan/php-8-stubs/stubs/ext/standard/sha1_file.stubTקhTdEW"7vendor/phpstan/php-8-stubs/stubs/ext/standard/asin.stub,קh,+9:vendor/phpstan/php-8-stubs/stubs/ext/standard/ini_get.stub:קh:9vendor/phpstan/php-8-stubs/stubs/ext/standard/syslog.stubקhx8vendor/phpstan/php-8-stubs/stubs/ext/standard/ksort.stubקhUf8vendor/phpstan/php-8-stubs/stubs/ext/standard/chdir.stub3קh3{RQ:vendor/phpstan/php-8-stubs/stubs/ext/standard/str_pad.stubzקhze!9vendor/phpstan/php-8-stubs/stubs/ext/standard/getopt.stubקh<vendor/phpstan/php-8-stubs/stubs/ext/standard/setlocale.stubקh Ib@vendor/phpstan/php-8-stubs/stubs/ext/standard/getservbyport.stubkקhkFWSvendor/phpstan/php-8-stubs/stubs/ext/standard/http_clear_last_response_headers.stubNקhNA#Mvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_context_get_options.stubxקhxໄ<vendor/phpstan/php-8-stubs/stubs/ext/standard/fpassthru.stubKקhKAvendor/phpstan/php-8-stubs/stubs/ext/standard/sys_getloadavg.stubgקhg{dv@vendor/phpstan/php-8-stubs/stubs/ext/standard/password_hash.stubhקhh4Y<vendor/phpstan/php-8-stubs/stubs/ext/standard/is_double.stubIקhI6vendor/phpstan/php-8-stubs/stubs/ext/standard/max.stub?קh??vendor/phpstan/php-8-stubs/stubs/ext/standard/base_convert.stubTקhTY!t9vendor/phpstan/php-8-stubs/stubs/ext/standard/getenv.stubvקhvq9vendor/phpstan/php-8-stubs/stubs/ext/standard/unlink.stubiקhiȤ<vendor/phpstan/php-8-stubs/stubs/ext/standard/lcg_value.stub3קh3r*:vendor/phpstan/php-8-stubs/stubs/ext/standard/is_file.stub4קh4J=vendor/phpstan/php-8-stubs/stubs/ext/standard/shell_exec.stubCקhCW8vendor/phpstan/php-8-stubs/stubs/ext/standard/chmod.stubKקhKAvendor/phpstan/php-8-stubs/stubs/ext/standard/substr_replace.stubקh[[;vendor/phpstan/php-8-stubs/stubs/ext/standard/getmygid.stub*קh*5;vendor/phpstan/php-8-stubs/stubs/ext/standard/basename.stubHקhH]aפ?vendor/phpstan/php-8-stubs/stubs/ext/standard/ob_end_clean.stub)קh)"?EEvendor/phpstan/php-8-stubs/stubs/ext/standard/html_entity_decode.stubקhR{Lvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_context_set_params.stubקh9<?vendor/phpstan/php-8-stubs/stubs/ext/standard/stripslashes.stub9קh9m=vendor/phpstan/php-8-stubs/stubs/ext/standard/var_export.stubLקhLk\}Gvendor/phpstan/php-8-stubs/stubs/ext/standard/array_intersect_ukey.stubkקhk|Mvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_context_set_default.stubWקhWDEvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_get_filters.stubGקhG4, `Avendor/phpstan/php-8-stubs/stubs/ext/standard/escapeshellarg.stub8קh8 ܤFvendor/phpstan/php-8-stubs/stubs/ext/standard/forward_static_call.stubSקhS=vendor/phpstan/php-8-stubs/stubs/ext/standard/getmyinode.stub,קh,$h:vendor/phpstan/php-8-stubs/stubs/ext/standard/strrchr.stubקh v9vendor/phpstan/php-8-stubs/stubs/ext/standard/rewind.stubIקhIBӐ:vendor/phpstan/php-8-stubs/stubs/ext/standard/deg2rad.stub/קh/C~Avendor/phpstan/php-8-stubs/stubs/ext/standard/getprotobyname.stub_קh_qIvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_filter_register.stubUקhU-n;vendor/phpstan/php-8-stubs/stubs/ext/standard/vsprintf.stubDקhD?c>vendor/phpstan/php-8-stubs/stubs/ext/standard/gethostname.stub[קh[1)<vendor/phpstan/php-8-stubs/stubs/ext/standard/is_object.stub2קh2*j:vendor/phpstan/php-8-stubs/stubs/ext/standard/scandir.stubקh::vendor/phpstan/php-8-stubs/stubs/ext/standard/ucfirst.stub4קh4 ܤ9vendor/phpstan/php-8-stubs/stubs/ext/standard/putenv.stubHקhH+V7vendor/phpstan/php-8-stubs/stubs/ext/standard/sqrt.stub,קh,Jvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_set_write_buffer.stubdקhd;vendor/phpstan/php-8-stubs/stubs/ext/standard/ob_clean.stub%קh%MҤ:vendor/phpstan/php-8-stubs/stubs/ext/standard/shuffle.stub}קh}ʓc~9vendor/phpstan/php-8-stubs/stubs/ext/standard/printf.stubBקhB(;vendor/phpstan/php-8-stubs/stubs/ext/standard/vfprintf.stubiקhiAɤ9vendor/phpstan/php-8-stubs/stubs/ext/standard/hebrev.stubPקhPJ=I9vendor/phpstan/php-8-stubs/stubs/ext/standard/decoct.stub-קh-+Cvendor/phpstan/php-8-stubs/stubs/ext/standard/error_clear_last.stub-קh-sq8:vendor/phpstan/php-8-stubs/stubs/ext/standard/strcoll.stubJקhJ0:vendor/phpstan/php-8-stubs/stubs/ext/standard/boolval.stub0קh0#ACvendor/phpstan/php-8-stubs/stubs/ext/standard/ob_list_handlers.stubEקhEDT e=vendor/phpstan/php-8-stubs/stubs/ext/standard/proc_close.stubNקhNמ;vendor/phpstan/php-8-stubs/stubs/ext/standard/getmypid.stub*קh*o4<vendor/phpstan/php-8-stubs/stubs/ext/standard/setcookie.stubקhN~?vendor/phpstan/php-8-stubs/stubs/ext/standard/array_splice.stubrקhrÝ5:vendor/phpstan/php-8-stubs/stubs/ext/standard/current.stub8קh8Nr9vendor/phpstan/php-8-stubs/stubs/ext/standard/header.stubpקhp7^9vendor/phpstan/php-8-stubs/stubs/ext/standard/strval.stub1קh18vendor/phpstan/php-8-stubs/stubs/ext/standard/flock.stubקh)-&9vendor/phpstan/php-8-stubs/stubs/ext/standard/is_nan.stub-קh-#"Avendor/phpstan/php-8-stubs/stubs/ext/standard/assert_options.stubOקhO}d@vendor/phpstan/php-8-stubs/stubs/ext/standard/str_ends_with.stubJקhJJOJvendor/phpstan/php-8-stubs/stubs/ext/standard/array_uintersect_uassoc.stubnקhnEvendor/phpstan/php-8-stubs/stubs/ext/standard/array_udiff_uassoc.stubiקhiBJӤ=vendor/phpstan/php-8-stubs/stubs/ext/standard/pfsockopen.stubקh{[h@vendor/phpstan/php-8-stubs/stubs/ext/standard/array_reverse.stubTקhT¼)06vendor/phpstan/php-8-stubs/stubs/ext/standard/md5.stubRקhR)8vendor/phpstan/php-8-stubs/stubs/ext/standard/umask.stub2קh2&MAvendor/phpstan/php-8-stubs/stubs/ext/standard/substr_compare.stubקhИG?vendor/phpstan/php-8-stubs/stubs/ext/standard/similar_text.stubwקhw<<vendor/phpstan/php-8-stubs/stubs/ext/standard/strnatcmp.stubEקhEhL;vendor/phpstan/php-8-stubs/stubs/ext/standard/floatval.stub2קh22;vendor/phpstan/php-8-stubs/stubs/ext/standard/is_array.stub1קh1曤7vendor/phpstan/php-8-stubs/stubs/ext/standard/fmod.stub:קh:"-?vendor/phpstan/php-8-stubs/stubs/ext/standard/setrawcookie.stubקh$؃Hvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_bucket_prepend.stubקhqm@vendor/phpstan/php-8-stubs/stubs/ext/standard/stripcslashes.stub:קh:N_X8vendor/phpstan/php-8-stubs/stubs/ext/standard/rsort.stubקh1>\E>vendor/phpstan/php-8-stubs/stubs/ext/standard/get_cfg_var.stubDקhDA>vendor/phpstan/php-8-stubs/stubs/ext/standard/is_callable.stubקh(Jvendor/phpstan/php-8-stubs/stubs/ext/standard/quoted_printable_encode.stubDקhD0,Dvendor/phpstan/php-8-stubs/stubs/ext/standard/connection_status.stub-קh-n <vendor/phpstan/php-8-stubs/stubs/ext/standard/is_scalar.stub2קh22m6vendor/phpstan/php-8-stubs/stubs/ext/standard/min.stub?קh?ԤGvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_socket_sendto.stubקhg;vendor/phpstan/php-8-stubs/stubs/ext/standard/realpath.stub9קh9/'~8vendor/phpstan/php-8-stubs/stubs/ext/standard/log10.stub-קh-nɤBvendor/phpstan/php-8-stubs/stubs/ext/standard/set_file_buffer.stubקhOK7vendor/phpstan/php-8-stubs/stubs/ext/standard/fpow.stubiקhi vJvendor/phpstan/php-8-stubs/stubs/ext/standard/sapi_windows_cp_is_utf8.stub4קh4VЋ<vendor/phpstan/php-8-stubs/stubs/ext/standard/urlencode.stub6קh6ze=vendor/phpstan/php-8-stubs/stubs/ext/standard/key_exists.stubvקhv@);8vendor/phpstan/php-8-stubs/stubs/ext/standard/log1p.stub-קh-`99vendor/phpstan/php-8-stubs/stubs/ext/standard/lchgrp.stubFקhFa;Ivendor/phpstan/php-8-stubs/stubs/ext/standard/array_uintersect_assoc.stubmקhmM)w<vendor/phpstan/php-8-stubs/stubs/ext/standard/fdatasync.stub]קh]@Dvendor/phpstan/php-8-stubs/stubs/ext/standard/array_diff_uassoc.stubhקhhJvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_wrapper_register.stubקhK$7vendor/phpstan/php-8-stubs/stubs/ext/standard/sha1.stubTקhT ¤=vendor/phpstan/php-8-stubs/stubs/ext/standard/array_diff.stubFקhFCCvendor/phpstan/php-8-stubs/stubs/ext/standard/convert_uuencode.stubNקhN~Kvendor/phpstan/php-8-stubs/stubs/ext/standard/header_register_callback.stubYקhYq&Fvendor/phpstan/php-8-stubs/stubs/ext/standard/sapi_windows_cp_set.stubeקheNv[Nvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_socket_enable_crypto.stubקh|j"@vendor/phpstan/php-8-stubs/stubs/ext/standard/ob_get_status.stub[קh[ӁW&=vendor/phpstan/php-8-stubs/stubs/ext/standard/getrandmax.stubBקhBla@vendor/phpstan/php-8-stubs/stubs/ext/standard/array_combine.stubEקhEc`8vendor/phpstan/php-8-stubs/stubs/ext/standard/lstat.stubPקhP<vendor/phpstan/php-8-stubs/stubs/ext/standard/array_map.stubZקhZKcܤ9vendor/phpstan/php-8-stubs/stubs/ext/standard/system.stuboקho7қ:vendor/phpstan/php-8-stubs/stubs/ext/standard/dirname.stubCקhC!jФ?vendor/phpstan/php-8-stubs/stubs/ext/standard/ob_get_level.stub(קh(y,@vendor/phpstan/php-8-stubs/stubs/ext/standard/ob_get_length.stub/קh/ ם7vendor/phpstan/php-8-stubs/stubs/ext/standard/trim.stubWקhW+:vendor/phpstan/php-8-stubs/stubs/ext/standard/stripos.stubZקhZBSAѤ8vendor/phpstan/php-8-stubs/stubs/ext/standard/chown.stubDקhDs:vendor/phpstan/php-8-stubs/stubs/ext/standard/rad2deg.stub/קh/dO-Hvendor/phpstan/php-8-stubs/stubs/ext/standard/array_change_key_case.stubWקhWQ=vendor/phpstan/php-8-stubs/stubs/ext/standard/array_find.stubYקhYn<?vendor/phpstan/php-8-stubs/stubs/ext/standard/gettimeofday.stub]קh]q;?9vendor/phpstan/php-8-stubs/stubs/ext/standard/fwrite.stubqקhq8vendor/phpstan/php-8-stubs/stubs/ext/standard/crc32.stub=קh=@Cvendor/phpstan/php-8-stubs/stubs/ext/standard/parse_ini_string.stubקh t7vendor/phpstan/php-8-stubs/stubs/ext/standard/sort.stubקh(vY<vendor/phpstan/php-8-stubs/stubs/ext/standard/is_finite.stub0קh0ArSvendor/phpstan/php-8-stubs/stubs/ext/standard/sapi_windows_generate_ctrl_event.stubUקhU`:vendor/phpstan/php-8-stubs/stubs/ext/standard/tempnam.stubMקhM>{$;vendor/phpstan/php-8-stubs/stubs/ext/standard/getmyuid.stub;קh;4G Bvendor/phpstan/php-8-stubs/stubs/ext/standard/array_fill_keys.stubFקhFm:vendor/phpstan/php-8-stubs/stubs/ext/standard/getmxrr.stubקh~ߤBvendor/phpstan/php-8-stubs/stubs/ext/standard/disk_free_space.stubDקhD,T;vendor/phpstan/php-8-stubs/stubs/ext/standard/strptime.stubקh~@vendor/phpstan/php-8-stubs/stubs/ext/standard/number_format.stubקh4Avendor/phpstan/php-8-stubs/stubs/ext/standard/proc_terminate.stubeקheuO7vendor/phpstan/php-8-stubs/stubs/ext/standard/chop.stubkקhk9vendor/phpstan/php-8-stubs/stubs/ext/standard/octdec.stub<קh<9:vendor/phpstan/php-8-stubs/stubs/ext/standard/is_null.stub0קh0E8Ivendor/phpstan/php-8-stubs/stubs/ext/standard/stream_socket_get_name.stuboקho QQ8vendor/phpstan/php-8-stubs/stubs/ext/standard/asort.stubקhU!Avendor/phpstan/php-8-stubs/stubs/ext/standard/highlight_file.stubXקhXH:7vendor/phpstan/php-8-stubs/stubs/ext/standard/next.stub6קh6UP8vendor/phpstan/php-8-stubs/stubs/ext/standard/acosh.stub-קh-3<vendor/phpstan/php-8-stubs/stubs/ext/standard/quotemeta.stub6קh6V 9vendor/phpstan/php-8-stubs/stubs/ext/standard/intval.stub>קh>YMvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_context_get_default.stub_קh_׬ؤ7vendor/phpstan/php-8-stubs/stubs/ext/standard/join.stubfקhfa)8vendor/phpstan/php-8-stubs/stubs/ext/standard/srand.stubקhv NHvendor/phpstan/php-8-stubs/stubs/ext/standard/memory_get_peak_usage.stubIקhI)*Gvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_supports_lock.stubWקhWx ĤBvendor/phpstan/php-8-stubs/stubs/ext/standard/ob_get_contents.stub4קh4 p>RDvendor/phpstan/php-8-stubs/stubs/ext/standard/socket_get_status.stubxקhxդ8vendor/phpstan/php-8-stubs/stubs/ext/standard/sleep.stub-קh-3cLDvendor/phpstan/php-8-stubs/stubs/ext/standard/ignore_user_abort.stubAקhA6vendor/phpstan/php-8-stubs/stubs/ext/standard/key.stub>קh>{ܠ;vendor/phpstan/php-8-stubs/stubs/ext/standard/filesize.stub:קh:Avendor/phpstan/php-8-stubs/stubs/ext/standard/time_nanosleep.stubyקhy0:vendor/phpstan/php-8-stubs/stubs/ext/standard/openlog.stubקh&r`8vendor/phpstan/php-8-stubs/stubs/ext/standard/fstat.stubbקhbh7?vendor/phpstan/php-8-stubs/stubs/ext/standard/rawurlencode.stub9קh9Gvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_filter_append.stubקh;:vendor/phpstan/php-8-stubs/stubs/ext/standard/ini_set.stubקhP9vendor/phpstan/php-8-stubs/stubs/ext/standard/is_dir.stub3קh36vendor/phpstan/php-8-stubs/stubs/ext/standard/chr.stub0קh04n9vendor/phpstan/php-8-stubs/stubs/ext/standard/intdiv.stub6קh6]aФFvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_get_wrappers.stubHקhH!>vendor/phpstan/php-8-stubs/stubs/ext/standard/array_udiff.stubbקhbKBvendor/phpstan/php-8-stubs/stubs/ext/standard/php_user_filter.stubקhb@k7vendor/phpstan/php-8-stubs/stubs/ext/standard/atan.stub,קh,ͤEvendor/phpstan/php-8-stubs/stubs/ext/standard/connection_aborted.stub.קh.79vendor/phpstan/php-8-stubs/stubs/ext/standard/rename.stubqקhq<vendor/phpstan/php-8-stubs/stubs/ext/standard/filemtime.stub;קh;S9vendor/phpstan/php-8-stubs/stubs/ext/standard/strrev.stub3קh3>vendor/phpstan/php-8-stubs/stubs/ext/standard/array_merge.stub9קh9dHvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_context_create.stubqקhqR5R9vendor/phpstan/php-8-stubs/stubs/ext/standard/strstr.stubhקhh<7vendor/phpstan/php-8-stubs/stubs/ext/standard/file.stubקhK>vendor/phpstan/php-8-stubs/stubs/ext/standard/count_chars.stubzקhz7n5vendor/phpstan/php-8-stubs/stubs/ext/standard/dl.stub9קh9-U~@vendor/phpstan/php-8-stubs/stubs/ext/standard/strnatcasecmp.stubIקhIA_';vendor/phpstan/php-8-stubs/stubs/ext/standard/closedir.stub_קh_DyJ8vendor/phpstan/php-8-stubs/stubs/ext/standard/chgrp.stubEקhE* >vendor/phpstan/php-8-stubs/stubs/ext/standard/levenshtein.stubקhAvendor/phpstan/php-8-stubs/stubs/ext/standard/dns_get_record.stubקha[8;vendor/phpstan/php-8-stubs/stubs/ext/standard/md5_file.stubSקhS&ۤ<vendor/phpstan/php-8-stubs/stubs/ext/standard/microtime.stuboקhooĕGvendor/phpstan/php-8-stubs/stubs/ext/standard/array_walk_recursive.stubקhc2Cvendor/phpstan/php-8-stubs/stubs/ext/standard/time_sleep_until.stub=קh=hE:vendor/phpstan/php-8-stubs/stubs/ext/standard/is_bool.stub0קh0Cvendor/phpstan/php-8-stubs/stubs/ext/standard/highlight_string.stubקhkb@vendor/phpstan/php-8-stubs/stubs/ext/standard/gethostbyname.stub<קh<?N;vendor/phpstan/php-8-stubs/stubs/ext/standard/constant.stubJקhJk,8vendor/phpstan/php-8-stubs/stubs/ext/standard/mkdir.stubקh Gvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_socket_client.stub1קh1sxNvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_resolve_include_path.stubPקhP'F^9vendor/phpstan/php-8-stubs/stubs/ext/standard/decbin.stub-קh-!K9vendor/phpstan/php-8-stubs/stubs/ext/standard/arsort.stubקhDEvendor/phpstan/php-8-stubs/stubs/ext/standard/array_count_values.stubiקhirZe7vendor/phpstan/php-8-stubs/stubs/ext/standard/acos.stub,קh,t׽Avendor/phpstan/php-8-stubs/stubs/ext/standard/error_get_last.stubDקhDU1̤9vendor/phpstan/php-8-stubs/stubs/ext/standard/strtok.stubPקhPGL?vendor/phpstan/php-8-stubs/stubs/ext/standard/random_bytes.stubEקhEO6vendor/phpstan/php-8-stubs/stubs/ext/standard/ord.stub0קh02a/Pvendor/phpstan/php-8-stubs/stubs/ext/standard/sapi_windows_set_ctrl_handler.stub^קh^|7vendor/phpstan/php-8-stubs/stubs/ext/standard/copy.stuboקhoK=Mvendor/phpstan/php-8-stubs/stubs/ext/standard/sapi_windows_vt100_support.stubקh?8vendor/phpstan/php-8-stubs/stubs/ext/standard/expm1.stub-קh-BfHvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_copy_to_stream.stubקh?K7vendor/phpstan/php-8-stubs/stubs/ext/standard/exec.stubקh6@vendor/phpstan/php-8-stubs/stubs/ext/standard/base64_encode.stubIקhIQvendor/phpstan/php-8-stubs/stubs/ext/standard/http_get_last_response_headers.stubNקhN=Ĥ7vendor/phpstan/php-8-stubs/stubs/ext/standard/cosh.stub,קh,ge:vendor/phpstan/php-8-stubs/stubs/ext/standard/implode.stubSקhSq?V:vendor/phpstan/php-8-stubs/stubs/ext/standard/bin2hex.stubCקhCFۤ<vendor/phpstan/php-8-stubs/stubs/ext/standard/array_sum.stub7קh7̮8vendor/phpstan/php-8-stubs/stubs/ext/standard/count.stubRקhRG:vendor/phpstan/php-8-stubs/stubs/ext/standard/fnmatch.stubiקhib=vendor/phpstan/php-8-stubs/stubs/ext/standard/phpcredits.stubקh @vendor/phpstan/php-8-stubs/stubs/ext/standard/stream_isatty.stubPקhPk;vendor/phpstan/php-8-stubs/stubs/ext/standard/is_float.stub1קh1ʛ9vendor/phpstan/php-8-stubs/stubs/ext/standard/sscanf.stubsקhs ]9vendor/phpstan/php-8-stubs/stubs/ext/standard/hrtime.stubaקha2 Gvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_filter_remove.stubeקhe8m%Evendor/phpstan/php-8-stubs/stubs/ext/standard/realpath_cache_get.stubGקhG֧Lvendor/phpstan/php-8-stubs/stubs/ext/standard/forward_static_call_array.stubVקhVq;=vendor/phpstan/php-8-stubs/stubs/ext/standard/strtoupper.stub7קh79Z+Evendor/phpstan/php-8-stubs/stubs/ext/standard/http_response_code.stubIקhIyg <vendor/phpstan/php-8-stubs/stubs/ext/standard/urldecode.stub6קh6qv8vendor/phpstan/php-8-stubs/stubs/ext/standard/round.stubקhp|mq<vendor/phpstan/php-8-stubs/stubs/ext/standard/php_uname.stub:קh:?vendor/phpstan/php-8-stubs/stubs/ext/standard/array_filter.stubaקha9vendor/phpstan/php-8-stubs/stubs/ext/standard/unpack.stubקhS}T٤Avendor/phpstan/php-8-stubs/stubs/ext/standard/array_key_last.stubBקhBs7?vendor/phpstan/php-8-stubs/stubs/ext/standard/RoundingMode.stubקhtGvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_bucket_append.stubקhk8vendor/phpstan/php-8-stubs/stubs/ext/standard/hypot.stub5קh5(4<vendor/phpstan/php-8-stubs/stubs/ext/standard/error_log.stubקh-;vendor/phpstan/php-8-stubs/stubs/ext/standard/pathinfo.stubkקhk6[Ĥ:vendor/phpstan/php-8-stubs/stubs/ext/standard/sprintf.stub^קh^SAvendor/phpstan/php-8-stubs/stubs/ext/standard/AssertionError.stub@קh@6¤6vendor/phpstan/php-8-stubs/stubs/ext/standard/tan.stub+קh+*>BZ?vendor/phpstan/php-8-stubs/stubs/ext/standard/array_search.stubiקhiai<vendor/phpstan/php-8-stubs/stubs/ext/standard/fileperms.stub;קh;F>vendor/phpstan/php-8-stubs/stubs/ext/standard/ini_get_all.stubuקhṳ:vendor/phpstan/php-8-stubs/stubs/ext/standard/tmpfile.stub<קh<?:vendor/phpstan/php-8-stubs/stubs/ext/standard/gettype.stubFקhF_@vendor/phpstan/php-8-stubs/stubs/ext/standard/header_remove.stub>קh>}<vendor/phpstan/php-8-stubs/stubs/ext/standard/array_pop.stub4קh4mߤ;vendor/phpstan/php-8-stubs/stubs/ext/standard/ob_flush.stub%קh%$E=vendor/phpstan/php-8-stubs/stubs/ext/standard/array_fill.stubRקhRˤEvendor/phpstan/php-8-stubs/stubs/ext/standard/socket_set_timeout.stubקhUR6vendor/phpstan/php-8-stubs/stubs/ext/standard/sin.stub+קh+֊9vendor/phpstan/php-8-stubs/stubs/ext/standard/getcwd.stub2קh288ǤAvendor/phpstan/php-8-stubs/stubs/ext/standard/str_word_count.stubקhw}8vendor/phpstan/php-8-stubs/stubs/ext/standard/floor.stub1קh1opZ?vendor/phpstan/php-8-stubs/stubs/ext/standard/ob_get_clean.stub1קh1zդFvendor/phpstan/php-8-stubs/stubs/ext/standard/php_ini_loaded_file.stub8קh80 :vendor/phpstan/php-8-stubs/stubs/ext/standard/strpbrk.stubNקhNKݤ;vendor/phpstan/php-8-stubs/stubs/ext/standard/in_array.stubYקhY(1äCvendor/phpstan/php-8-stubs/stubs/ext/standard/http_build_query.stubקh@vendor/phpstan/php-8-stubs/stubs/ext/standard/diskfreespace.stub`קh`kK=vendor/phpstan/php-8-stubs/stubs/ext/standard/addslashes.stub7קh7PYӛ:vendor/phpstan/php-8-stubs/stubs/ext/standard/mt_rand.stubIקhI:<vendor/phpstan/php-8-stubs/stubs/ext/standard/str_split.stubdקhdͤ8vendor/phpstan/php-8-stubs/stubs/ext/standard/range.stubקhj%>>vendor/phpstan/php-8-stubs/stubs/ext/standard/nl_langinfo.stubNקhNvendor/phpstan/php-8-stubs/stubs/ext/standard/ini_restore.stub6קh6ik=vendor/phpstan/php-8-stubs/stubs/ext/standard/array_flip.stubaקha%菤?vendor/phpstan/php-8-stubs/stubs/ext/standard/array_reduce.stubaקha AOvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_bucket_make_writeable.stub'קh'PΤCvendor/phpstan/php-8-stubs/stubs/ext/standard/array_diff_assoc.stubLקhLB:vendor/phpstan/php-8-stubs/stubs/ext/standard/readdir.stubfקhf97Dvendor/phpstan/php-8-stubs/stubs/ext/standard/file_put_contents.stubקh;vendor/phpstan/php-8-stubs/stubs/ext/standard/ob_start.stubrקhr}<Fvendor/phpstan/php-8-stubs/stubs/ext/standard/realpath_cache_size.stub/קh/zlCvendor/phpstan/php-8-stubs/stubs/ext/standard/array_uintersect.stubgקhgVś<vendor/phpstan/php-8-stubs/stubs/ext/standard/array_all.stubWקhW¤Evendor/phpstan/php-8-stubs/stubs/ext/standard/stream_set_timeout.stubקhiه@vendor/phpstan/php-8-stubs/stubs/ext/standard/is_executable.stub:קh:Hp?vendor/phpstan/php-8-stubs/stubs/ext/standard/array_values.stubTקhTJvendor/phpstan/php-8-stubs/stubs/ext/standard/quoted_printable_decode.stub^קh^nEvendor/phpstan/php-8-stubs/stubs/ext/standard/ini_parse_quantity.stubPקhP3 =vendor/phpstan/php-8-stubs/stubs/ext/standard/checkdnsrr.stubkקhk;vendor/phpstan/php-8-stubs/stubs/ext/standard/strripos.stub[קh[Ҥ7vendor/phpstan/php-8-stubs/stubs/ext/standard/ceil.stub0קh0R>9vendor/phpstan/php-8-stubs/stubs/ext/standard/fclose.stubIקhIp|9vendor/phpstan/php-8-stubs/stubs/ext/standard/uniqid.stub|קh|=7@vendor/phpstan/php-8-stubs/stubs/ext/standard/get_meta_tags.stubxקhxRp>vendor/phpstan/php-8-stubs/stubs/ext/standard/is_iterable.stub4קh48ŝ?vendor/phpstan/php-8-stubs/stubs/ext/standard/ob_get_flush.stub1קh1x=vendor/phpstan/php-8-stubs/stubs/ext/standard/random_int.stub8קh8#sCvendor/phpstan/php-8-stubs/stubs/ext/standard/is_uploaded_file.stub=קh=Էr26vendor/phpstan/php-8-stubs/stubs/ext/standard/end.stub5קh5e9vendor/phpstan/php-8-stubs/stubs/ext/standard/usleep.stub4קh4Avendor/phpstan/php-8-stubs/stubs/ext/standard/call_user_func.stubNקhN<vendor/phpstan/php-8-stubs/stubs/ext/standard/ini_alter.stubקhg}٤Jvendor/phpstan/php-8-stubs/stubs/ext/standard/array_replace_recursive.stubYקhY>Y:vendor/phpstan/php-8-stubs/stubs/ext/standard/soundex.stubDקhD+/DGvendor/phpstan/php-8-stubs/stubs/ext/standard/sapi_windows_cp_conv.stubvקhvI]Fvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_set_blocking.stubdקhdu8vendor/phpstan/php-8-stubs/stubs/ext/standard/rmdir.stubiקhipO#=vendor/phpstan/php-8-stubs/stubs/ext/standard/is_integer.stubHקhH >vendor/phpstan/php-8-stubs/stubs/ext/standard/array_chunk.stub_קh_ZǤ@vendor/phpstan/php-8-stubs/stubs/ext/standard/getservbyname.stubgקhg8vendor/phpstan/php-8-stubs/stubs/ext/standard/fgets.stubeקheπ2>vendor/phpstan/php-8-stubs/stubs/ext/standard/addcslashes.stubLקhLaqCvendor/phpstan/php-8-stubs/stubs/ext/standard/set_include_path.stubIקhI:vendor/phpstan/php-8-stubs/stubs/ext/standard/compact.stubקhzؤ?vendor/phpstan/php-8-stubs/stubs/ext/standard/substr_count.stubnקhnH6vendor/phpstan/php-8-stubs/stubs/ext/standard/dir.stubsקhs??vendor/phpstan/php-8-stubs/stubs/ext/standard/rawurldecode.stub9קh96Fvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_get_contents.stubקh0$7vendor/phpstan/php-8-stubs/stubs/ext/standard/pack.stubWקhW1ݤ8vendor/phpstan/php-8-stubs/stubs/ext/standard/rtrim.stubXקhXt15Fvendor/phpstan/php-8-stubs/stubs/ext/standard/socket_set_blocking.stubקh @~:vendor/phpstan/php-8-stubs/stubs/ext/standard/phpinfo.stubקhߒ;vendor/phpstan/php-8-stubs/stubs/ext/standard/mt_srand.stubקh'8vendor/phpstan/php-8-stubs/stubs/ext/standard/atan2.stub5קh5zA6vendor/phpstan/php-8-stubs/stubs/ext/standard/exp.stub+קh+ۤ:vendor/phpstan/php-8-stubs/stubs/ext/standard/is_long.stubEקhEH;vendor/phpstan/php-8-stubs/stubs/ext/standard/var_dump.stubOקhO}?vendor/phpstan/php-8-stubs/stubs/ext/standard/headers_sent.stubקhHGvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_get_meta_data.stub\קh\.>(Ivendor/phpstan/php-8-stubs/stubs/ext/standard/array_intersect_uassoc.stubmקhm=:|>vendor/phpstan/php-8-stubs/stubs/ext/standard/get_headers.stubקh CCFvendor/phpstan/php-8-stubs/stubs/ext/standard/array_intersect_key.stubOקhO 釤9vendor/phpstan/php-8-stubs/stubs/ext/standard/lchown.stubUקhUY6vendor/phpstan/php-8-stubs/stubs/ext/standard/pow.stubGקhG\4ϤGvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_socket_accept.stubקh(_Ivendor/phpstan/php-8-stubs/stubs/ext/standard/stream_set_read_buffer.stubcקhcm=vendor/phpstan/php-8-stubs/stubs/ext/standard/strip_tags.stub_קh_f:vendor/phpstan/php-8-stubs/stubs/ext/standard/hex2bin.stub:קh:@Q\1Gvendor/phpstan/php-8-stubs/stubs/ext/standard/php_strip_whitespace.stubCקhC%`Jvendor/phpstan/php-8-stubs/stubs/ext/standard/memory_reset_peak_usage.stubEקhE4?9vendor/phpstan/php-8-stubs/stubs/ext/standard/sizeof.stubgקhgDDvendor/phpstan/php-8-stubs/stubs/ext/standard/file_get_contents.stubקhј7:vendor/phpstan/php-8-stubs/stubs/ext/standard/vprintf.stub@קh@^A9vendor/phpstan/php-8-stubs/stubs/ext/standard/pclose.stubHקhH=tBvendor/phpstan/php-8-stubs/stubs/ext/standard/array_key_first.stubCקhCHrʷ9vendor/phpstan/php-8-stubs/stubs/ext/standard/krsort.stubקhbKAvendor/phpstan/php-8-stubs/stubs/ext/standard/get_debug_type.stub9קh91&D8vendor/phpstan/php-8-stubs/stubs/ext/standard/nl2br.stubJקhJ;WtB8vendor/phpstan/php-8-stubs/stubs/ext/standard/reset.stub7קh7?_<vendor/phpstan/php-8-stubs/stubs/ext/standard/serialize.stub4קh4פ>vendor/phpstan/php-8-stubs/stubs/ext/standard/unserialize.stubJקhJɒ9vendor/phpstan/php-8-stubs/stubs/ext/standard/bindec.stub=קh=kXa=vendor/phpstan/php-8-stubs/stubs/ext/standard/is_numeric.stub3קh3r>vendor/phpstan/php-8-stubs/stubs/ext/standard/is_resource.stub4קh4U8vendor/phpstan/php-8-stubs/stubs/ext/standard/ftell.stubMקhMT4Ivendor/phpstan/php-8-stubs/stubs/ext/standard/stream_wrapper_restore.stubCקhCAe8vendor/phpstan/php-8-stubs/stubs/ext/standard/fseek.stublקhl=vendor/phpstan/php-8-stubs/stubs/ext/standard/array_walk.stubקhZ>vendor/phpstan/php-8-stubs/stubs/ext/standard/natcasesort.stubקhAi8vendor/phpstan/php-8-stubs/stubs/ext/standard/ltrim.stubXקhX;->vendor/phpstan/php-8-stubs/stubs/ext/standard/is_infinite.stub2קh2ko=vendor/phpstan/php-8-stubs/stubs/ext/standard/str_repeat.stubCקhC+;vendor/phpstan/php-8-stubs/stubs/ext/standard/filetype.stub=קh=LHvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_filter_prepend.stubקh)Avendor/phpstan/php-8-stubs/stubs/ext/standard/set_time_limit.stubkקhk,mz;vendor/phpstan/php-8-stubs/stubs/ext/standard/wordwrap.stubzקhzcEb5vendor/phpstan/php-8-stubs/stubs/ext/standard/pi.stub קh _loͤ>vendor/phpstan/php-8-stubs/stubs/ext/standard/is_writable.stub8קh8b:vendor/phpstan/php-8-stubs/stubs/ext/standard/opendir.stubקh#`rBvendor/phpstan/php-8-stubs/stubs/ext/standard/array_intersect.stubKקhK]7vendor/phpstan/php-8-stubs/stubs/ext/standard/ftok.stubfקhf/'Bvendor/phpstan/php-8-stubs/stubs/ext/standard/version_compare.stubקhZ5gBvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_is_local.stubYקhYI(Ѥ<vendor/phpstan/php-8-stubs/stubs/ext/standard/metaphone.stubfקhfФ:vendor/phpstan/php-8-stubs/stubs/ext/standard/ip2long.stub3קh3<vendor/phpstan/php-8-stubs/stubs/ext/standard/parse_str.stubZקhZȇPI@vendor/phpstan/php-8-stubs/stubs/ext/standard/array_is_list.stubGקhG8Bvendor/phpstan/php-8-stubs/stubs/ext/standard/str_starts_with.stubLקhLY?vendor/phpstan/php-8-stubs/stubs/ext/standard/ob_end_flush.stub)קh)ҤAvendor/phpstan/php-8-stubs/stubs/ext/standard/gethostbynamel.stubYקhY{@vendor/phpstan/php-8-stubs/stubs/ext/standard/base64_decode.stubVקhV5lQ6vendor/phpstan/php-8-stubs/stubs/ext/standard/cos.stub+קh+YF*>vendor/phpstan/php-8-stubs/stubs/ext/standard/str_replace.stubקh<vendor/phpstan/php-8-stubs/stubs/ext/standard/filectime.stub;קh;3:vendor/phpstan/php-8-stubs/stubs/ext/standard/symlink.stub@קh@/j<vendor/phpstan/php-8-stubs/stubs/ext/standard/iptcparse.stubVקhVה:vendor/phpstan/php-8-stubs/stubs/ext/standard/ucwords.stubXקhX|ΤHvendor/phpstan/php-8-stubs/stubs/ext/standard/array_merge_recursive.stubCקhC<7vendor/phpstan/php-8-stubs/stubs/ext/standard/glob.stuboקhoѤ9vendor/phpstan/php-8-stubs/stubs/ext/standard/fflush.stubIקhId$_`8vendor/phpstan/php-8-stubs/stubs/ext/standard/popen.stubWקhWo.@vendor/phpstan/php-8-stubs/stubs/ext/standard/gethostbyaddr.stubCקhC8vendor/phpstan/php-8-stubs/stubs/ext/standard/touch.stubiקhiA<vendor/phpstan/php-8-stubs/stubs/ext/standard/fileowner.stub;קh;Oh9vendor/phpstan/php-8-stubs/stubs/ext/standard/strchr.stub}קh}F?vendor/phpstan/php-8-stubs/stubs/ext/standard/htmlentities.stub]קh]Ri~;vendor/phpstan/php-8-stubs/stubs/ext/standard/passthru.stubקhO^:vendor/phpstan/php-8-stubs/stubs/ext/standard/long2ip.stubקhQ<vendor/phpstan/php-8-stubs/stubs/ext/standard/getrusage.stubnקhn<6vendor/phpstan/php-8-stubs/stubs/ext/standard/abs.stub@קh@D_fӤBvendor/phpstan/php-8-stubs/stubs/ext/standard/proc_get_status.stubhקhh_l]Dvendor/phpstan/php-8-stubs/stubs/ext/standard/array_udiff_assoc.stubhקhhPj8vendor/phpstan/php-8-stubs/stubs/ext/standard/flush.stub"קh"E9vendor/phpstan/php-8-stubs/stubs/ext/standard/uasort.stubקhVnH8vendor/phpstan/php-8-stubs/stubs/ext/standard/strtr.stubZקhZ<@vendor/phpstan/php-8-stubs/stubs/ext/standard/array_product.stub;קh;q-7vendor/phpstan/php-8-stubs/stubs/ext/standard/stat.stubOקhO,`Cvendor/phpstan/php-8-stubs/stubs/ext/standard/array_key_exists.stub]קh]^2:vendor/phpstan/php-8-stubs/stubs/ext/standard/explode.stubקhҤ(M;vendor/phpstan/php-8-stubs/stubs/ext/standard/readlink.stubvקhvHP=vendor/phpstan/php-8-stubs/stubs/ext/standard/phpversion.stubHקhHL<vendor/phpstan/php-8-stubs/stubs/ext/standard/proc_open.stubקh Evendor/phpstan/php-8-stubs/stubs/ext/standard/request_parse_body.stubקh[+Evendor/phpstan/php-8-stubs/stubs/ext/standard/net_get_interfaces.stubקht1Ivendor/phpstan/php-8-stubs/stubs/ext/standard/getimagesizefromstring.stubקhy7vendor/phpstan/php-8-stubs/stubs/ext/standard/link.stub=קh= Ivendor/phpstan/php-8-stubs/stubs/ext/standard/stream_socket_recvfrom.stubקhUq5$Gvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_socket_server.stub-קh-gYHvendor/phpstan/php-8-stubs/stubs/ext/standard/stream_get_transports.stubJקhJǤDvendor/phpstan/php-8-stubs/stubs/ext/standard/ob_implicit_flush.stubAקhA>vendor/phpstan/php-8-stubs/stubs/ext/standard/utf8_decode.stub8קh8{,<vendor/phpstan/php-8-stubs/stubs/ext/standard/proc_nice.stubDקhD=vendor/phpstan/php-8-stubs/stubs/ext/standard/localeconv.stub?קh?{=vendor/phpstan/php-8-stubs/stubs/ext/standard/array_rand.stubMקhMBQ:vendor/phpstan/php-8-stubs/stubs/ext/standard/strrpos.stubZקhZG} Ivendor/phpstan/php-8-stubs/stubs/ext/standard/stream_socket_shutdown.stubyקhy" <vendor/phpstan/php-8-stubs/stubs/ext/standard/fileatime.stubLקhL|8vendor/phpstan/php-8-stubs/stubs/ext/standard/fopen.stubקhFvendor/phpstan/php-8-stubs/stubs/ext/standard/sapi_windows_cp_get.stub@קh@9Avendor/phpstan/php-8-stubs/stubs/ext/standard/array_find_key.stub]קh]x#<vendor/phpstan/php-8-stubs/stubs/ext/standard/inet_ntop.stubUקhUYt٤9vendor/phpstan/php-8-stubs/stubs/ext/standard/substr.stubUקhUE#Ivendor/phpstan/php-8-stubs/stubs/ext/standard/register_tick_function.stub\קh\n(>vendor/phpstan/php-8-stubs/stubs/ext/standard/str_shuffle.stub8קh87j8vendor/phpstan/php-8-stubs/stubs/ext/standard/fgetc.stubPקhP̳kh8vendor/phpstan/php-8-stubs/stubs/ext/standard/usort.stubקh<vendor/phpstan/php-8-stubs/stubs/ext/standard/iptcembed.stubmקhm/*Cvendor/phpstan/php-8-stubs/stubs/ext/standard/convert_uudecode.stubCקhC6b?vendor/phpstan/php-8-stubs/stubs/ext/standard/is_countable.stub5קh5s8vendor/phpstan/php-8-stubs/stubs/ext/standard/crypt.stubNקhN7>vendor/phpstan/php-8-stubs/stubs/ext/standard/is_readable.stub8קh8[Kz@vendor/phpstan/php-8-stubs/stubs/ext/standard/php_sapi_name.stub2קh2Y7vendor/phpstan/php-8-stubs/stubs/ext/standard/mail.stubקhfc:vendor/phpstan/php-8-stubs/stubs/ext/standard/settype.stub=קh=<vendor/phpstan/php-8-stubs/stubs/ext/standard/ftruncate.stubWקhWӌӣ<vendor/phpstan/php-8-stubs/stubs/ext/standard/fsockopen.stubקh/A=vendor/phpstan/php-8-stubs/stubs/ext/standard/array_push.stubSקhS^;?vendor/phpstan/php-8-stubs/stubs/ext/standard/str_ireplace.stubקhY9:vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_handlers.stubXקhXN+b8vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_insert.stubxקhx9#$:vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_firstkey.stubקh9vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_nextkey.stubקhT̤6vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_open.stubkקhkf7vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_close.stubקhٻ9vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_replace.stub{קh{B8vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_exists.stubKקhKl8vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_delete.stubKקhKmj,<vendor/phpstan/php-8-stubs/stubs/ext/dba/Dba/Connection.stubvקhvh+7vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_popen.stubקh% ޤ7vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_fetch.stubקhIؤ;vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_key_split.stubGקhGP6vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_sync.stubקh[6vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_list.stub&קh&:vendor/phpstan/php-8-stubs/stubs/ext/dba/dba_optimize.stubקhR<vendor/phpstan/php-8-stubs/stubs/ext/gettext/dcngettext.stubקh@vendor/phpstan/php-8-stubs/stubs/ext/gettext/bindtextdomain.stubקhhIvendor/phpstan/php-8-stubs/stubs/ext/gettext/bind_textdomain_codeset.stubCקhCEމ<vendor/phpstan/php-8-stubs/stubs/ext/gettext/textdomain.stubקhǕ9vendor/phpstan/php-8-stubs/stubs/ext/gettext/gettext.stub5קh5R9ג;vendor/phpstan/php-8-stubs/stubs/ext/gettext/dcgettext.stubVקhVr-T;vendor/phpstan/php-8-stubs/stubs/ext/gettext/dngettext.stubקhO:vendor/phpstan/php-8-stubs/stubs/ext/gettext/ngettext.stubhקhhٵ3vendor/phpstan/php-8-stubs/stubs/ext/gettext/_.stubEקhEhﳀ:vendor/phpstan/php-8-stubs/stubs/ext/gettext/dgettext.stubFקhF;Cvendor/phpstan/php-8-stubs/stubs/ext/session/session_create_id.stubIקhI)i@vendor/phpstan/php-8-stubs/stubs/ext/session/SessionHandler.stubקhIvendor/phpstan/php-8-stubs/stubs/ext/session/SessionHandlerInterface.stubקh&)Kvendor/phpstan/php-8-stubs/stubs/ext/session/session_set_cookie_params.stubקh4Fvendor/phpstan/php-8-stubs/stubs/ext/session/session_cache_expire.stubHקhH?vendor/phpstan/php-8-stubs/stubs/ext/session/session_abort.stub*קh*]ĤAvendor/phpstan/php-8-stubs/stubs/ext/session/session_destroy.stub,קh,N@vendor/phpstan/php-8-stubs/stubs/ext/session/session_commit.stubMקhMn =Evendor/phpstan/php-8-stubs/stubs/ext/session/session_write_close.stub0קh0H8Jvendor/phpstan/php-8-stubs/stubs/ext/session/session_set_save_handler.stubקh_ӤGvendor/phpstan/php-8-stubs/stubs/ext/session/session_cache_limiter.stubOקhOV?vendor/phpstan/php-8-stubs/stubs/ext/session/session_reset.stub*קh*l?vendor/phpstan/php-8-stubs/stubs/ext/session/session_unset.stub*קh* P%@vendor/phpstan/php-8-stubs/stubs/ext/session/session_encode.stub3קh3 o4@vendor/phpstan/php-8-stubs/stubs/ext/session/session_decode.stub7קh7쭤?vendor/phpstan/php-8-stubs/stubs/ext/session/session_start.stub=קh=1T>vendor/phpstan/php-8-stubs/stubs/ext/session/session_name.stubgקhgC;Xvendor/phpstan/php-8-stubs/stubs/ext/session/SessionUpdateTimestampHandlerInterface.stub+קh+BEvendor/phpstan/php-8-stubs/stubs/ext/session/session_module_name.stubNקhNrQ@vendor/phpstan/php-8-stubs/stubs/ext/session/session_status.stub*קh*Qe<vendor/phpstan/php-8-stubs/stubs/ext/session/session_gc.stub,קh,<vendor/phpstan/php-8-stubs/stubs/ext/session/session_id.stubAקhA󁬤Gvendor/phpstan/php-8-stubs/stubs/ext/session/session_regenerate_id.stubRקhRMchKvendor/phpstan/php-8-stubs/stubs/ext/session/session_get_cookie_params.stubNקhN:\aCvendor/phpstan/php-8-stubs/stubs/ext/session/session_save_path.stubJקhJ.ZDvendor/phpstan/php-8-stubs/stubs/ext/session/SessionIdInterface.stubקhbᣤKvendor/phpstan/php-8-stubs/stubs/ext/session/session_register_shutdown.stub6קh6KS?vendor/phpstan/php-8-stubs/stubs/ext/pdo_sqlite/Pdo/Sqlite.stubmקhm Cvendor/phpstan/php-8-stubs/stubs/ext/pdo_sqlite/PDO_SQLite_Ext.stubקhW5vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzgets.stubzקhzEl7vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzrewind.stub`קh` ~d]4vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzeof.stub[קh[9:l^5vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzputs.stubקhdCvendor/phpstan/php-8-stubs/stubs/ext/zlib/zlib_get_coding_type.stub9קh9s)7vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzdecode.stubNקhN]x5vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzfile.stublקhlۥCvendor/phpstan/php-8-stubs/stubs/ext/zlib/inflate_get_read_len.stubHקhH8:vendor/phpstan/php-8-stubs/stubs/ext/zlib/inflate_add.stubyקhyu9vendor/phpstan/php-8-stubs/stubs/ext/zlib/readgzfile.stubWקhW1<38vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzinflate.stubOקhO6ޤ7vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzencode.stubnקhnD9~5vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzread.stubrקhr5vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzgetc.stubeקheZ=vendor/phpstan/php-8-stubs/stubs/ext/zlib/DeflateContext.stub&קh&Ǭ9vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzpassthru.stubdקhdjҤ;vendor/phpstan/php-8-stubs/stubs/ext/zlib/inflate_init.stub\קh\-Ǥ9vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzcompress.stubsקhseֆ6vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzclose.stub_קh_c6vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzwrite.stubקhD=vendor/phpstan/php-8-stubs/stubs/ext/zlib/InflateContext.stubHקhHI5vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzseek.stubקhF5vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzopen.stubtקht6:vendor/phpstan/php-8-stubs/stubs/ext/zlib/zlib_decode.stubQקhQB:vendor/phpstan/php-8-stubs/stubs/ext/zlib/zlib_encode.stub\קh\dI5vendor/phpstan/php-8-stubs/stubs/ext/zlib/gztell.stubbקhb]g:vendor/phpstan/php-8-stubs/stubs/ext/zlib/deflate_add.stubyקhy9Avendor/phpstan/php-8-stubs/stubs/ext/zlib/inflate_get_status.stubFקhFMsO;vendor/phpstan/php-8-stubs/stubs/ext/zlib/deflate_init.stub\קh\<8vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzdeflate.stubnקhn{eq;vendor/phpstan/php-8-stubs/stubs/ext/zlib/ob_gzhandler.stubIקhI F0;vendor/phpstan/php-8-stubs/stubs/ext/zlib/gzuncompress.stubRקhR;nxMvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_dict_add_to_session.stubdקhdYFvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_dict_suggest.stubuקhu4Hvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_dict_get_error.stubYקhYiJCvendor/phpstan/php-8-stubs/stubs/ext/enchant/EnchantDictionary.stub)קh)u.=^Bvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_dict_add.stubYקhY'W\Nvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_broker_set_dict_path.stub{קh{OGvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_dict_describe.stubhקhhj}Mvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_broker_set_ordering.stubmקhmPvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_dict_store_replacement.stub~קh~EJvUJvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_broker_get_error.stubSקhS;ӤNvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_dict_add_to_personal.stubקhʹGvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_dict_is_added.stub^קh^8<Jvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_broker_free_dict.stubfקhf ?vendor/phpstan/php-8-stubs/stubs/ext/enchant/EnchantBroker.stubGקhG!Qvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_broker_request_pwl_dict.stubxקhx{*N7Mvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_broker_request_dict.stuboקho$_ Dvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_dict_check.stub[קh[uEvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_broker_init.stub@קh@:Evendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_broker_free.stubYקhY}Jvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_dict_quick_check.stubקhrAKvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_broker_list_dicts.stubdקhdlSԤLvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_broker_dict_exists.stubZקhZG;פNvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_broker_get_dict_path.stubuקhux kIvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_broker_describe.stubbקhbLvendor/phpstan/php-8-stubs/stubs/ext/enchant/enchant_dict_is_in_session.stubקhTAvendor/phpstan/php-8-stubs/stubs/ext/tokenizer/token_get_all.stubiקhi8L+>vendor/phpstan/php-8-stubs/stubs/ext/tokenizer/token_name.stub0קh0$E<vendor/phpstan/php-8-stubs/stubs/ext/tokenizer/PhpToken.stubקh+n:vendor/phpstan/php-8-stubs/stubs/ext/pdo/PDOException.stubZקhZ41vendor/phpstan/php-8-stubs/stubs/ext/pdo/PDO.stubbZקhbZ-0:vendor/phpstan/php-8-stubs/stubs/ext/pdo/PDOStatement.stubK קhK xҤ4vendor/phpstan/php-8-stubs/stubs/ext/pdo/PDORow.stubקhӪ!29vendor/phpstan/php-8-stubs/stubs/ext/pdo/pdo_drivers.stub@קh@C;vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_ltrim.stub|קh|o᪤Gvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_internal_encoding.stubPקhP{9vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_ord.stubPקhP_<vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_strlen.stubMקhM*j=vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_stripos.stubwקhwnFvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_ereg_search_regs.stub~קh~j=vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_str_pad.stubקh 2=vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_ucfirst.stubbקhbS~ۤ>vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_strripos.stubxקhxȴ@vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_http_input.stubcקhcG=vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_stristr.stubקh3@vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_strtoupper.stubTקhTGvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_regex_set_options.stubJקhJRޘFvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_convert_encoding.stubקh)JvEvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_detect_encoding.stubקhE;vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_eregi.stubsקhsBvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_convert_case.stubaקha7).Hvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_ereg_search_setpos.stub=קh=d^=vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_lcfirst.stubbקhbUOAvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_http_output.stubJקhJT.?vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_send_mail.stubקhAJvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_decode_numericentity.stubjקhj3䍤Gvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_decode_mimeheader.stubAקhA׽Evendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_ereg_search_pos.stub}קh}Aߤ<vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_strcut.stubqקhqP=vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_strrchr.stubקh铤;vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_scrub.stubOקhO(RR?vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_str_split.stubcקhc>nWIvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_preferred_mime_name.stubKקhK&YjBvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_substr_count.stubeקheJFvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_encoding_aliases.stubXקhXZ<vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_strstr.stubקhB;vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_split.stubsקhs >vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_strwidth.stubOקhO*<vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_substr.stubqקhqW>vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_strrichr.stubקhRBvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_ereg_replace.stubקhD>vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_get_info.stub/קh/bߗ Gvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_convert_variables.stubקh}Z@vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_strimwidth.stubקhcGGvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_encode_mimeheader.stubקhe#Cvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_eregi_replace.stubקh%7Dvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_check_encoding.stubgקhgP=vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_strrpos.stubwקhwbiBvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_convert_kana.stubkקhkyQI~;vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_rtrim.stub|קh|@@vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_strtolower.stubTקhTvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_language.stubiקhiq<vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_strpos.stubvקhvBJvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_substitute_character.stubkקhk5sϤIvendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_ereg_search_getregs.stubQקhQW@vendor/phpstan/php-8-stubs/stubs/ext/mbstring/mb_ereg_match.stubbקhb^7vendor/phpstan/php-8-stubs/stubs/ext/phar/PharData.stub.(קh.(2T/3vendor/phpstan/php-8-stubs/stubs/ext/phar/Phar.stube+קhe+Vפ;vendor/phpstan/php-8-stubs/stubs/ext/phar/PharFileInfo.stubקh!yi<vendor/phpstan/php-8-stubs/stubs/ext/phar/PharException.stubTקhTvO>vendor/phpstan/php-8-stubs/stubs/ext/json/json_last_error.stub+קh+ߏ,Ӥ<vendor/phpstan/php-8-stubs/stubs/ext/json/JsonException.stub2קh2P'Bvendor/phpstan/php-8-stubs/stubs/ext/json/json_last_error_msg.stub2קh2 <vendor/phpstan/php-8-stubs/stubs/ext/json/json_validate.stubiקhi:vendor/phpstan/php-8-stubs/stubs/ext/json/json_decode.stubrקhrh):vendor/phpstan/php-8-stubs/stubs/ext/json/json_encode.stubקhx褤?vendor/phpstan/php-8-stubs/stubs/ext/json/JsonSerializable.stubקhaH=vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_setpgid.stubWקhW%N=vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getpgid.stubRקhR 4e<vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getgid.stub/קh/fIE<vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_mkfifo.stub^קh^y?vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_fpathconf.stubקh<&<vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getpid.stub(קh(!>vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getgrnam.stubUקhU"yDvendor/phpstan/php-8-stubs/stubs/ext/posix/posix_get_last_error.stub7קh7C7@vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_initgroups.stubcקhcYW;vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_errno.stubJקhJǤ<vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_setgid.stub6קh6ht=vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_setegid.stubKקhKrK=vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getpgrp.stub0קh0x<vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_access.stubPקhPi;vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_times.stubFקhF_v>vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getlogin.stubOקhO^dH>vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_strerror.stub<קh<.<vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getsid.stubWקhWxx<vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_setuid.stub5קh5>?vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getrlimit.stubקh+=vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_geteuid.stub)קh)Pޘ%=vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_sysconf.stubMקhMX=vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getppid.stub)קh)֤;vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_mknod.stub}קh}4=vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_ttyname.stubuקhuQ>vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_pathconf.stubmקhmLb+=vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_eaccess.stuboקhoTk'>vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getpwnam.stubYקhYk8P?vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getgroups.stubgקhgfK=vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getegid.stub)קh)&D<vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getcwd.stub1קh1I[=vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_seteuid.stubJקhJwpp;vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_uname.stubMקhM"hr<vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getuid.stub(קh(0<vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_isatty.stubeקheN?vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_setrlimit.stubxקhxhp >vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getgrgid.stubVקhV):vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_kill.stubeקhen1<vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_setsid.stub;קh;:|>vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_getpwuid.stubUקhU;ߖ=vendor/phpstan/php-8-stubs/stubs/ext/posix/posix_ctermid.stubFקhFQoM>vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_explode_dn.stubfקhf&";vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_mod_del.stub קh 6LBvendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_get_attributes.stub;קh;\4y?vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_8859_to_t61.stubBקhB-A8vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_list.stublקhle%:vendor/phpstan/php-8-stubs/stubs/ext/ldap/LDAP/Result.stubsקhsA7=>vendor/phpstan/php-8-stubs/stubs/ext/ldap/LDAP/Connection.stubwקhw;ըѤ?vendor/phpstan/php-8-stubs/stubs/ext/ldap/LDAP/ResultEntry.stubxקhxoq(<vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_bind_ext.stub[קh[̖9vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_close.stubקh6j?vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_mod_del_ext.stub9קh9Cvendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_parse_reference.stubקhHΤ>vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_get_values.stubקhD`=vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_sasl_bind.stub!קh!й?vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_mod_add_ext.stub9קh9}8vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_bind.stubקhʸCvendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_first_reference.stubקh3>:vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_delete.stubקhpQ:vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_rename.stubקh;=vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_start_tls.stubקhgBvendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_next_attribute.stubקh75\<Dvendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_count_references.stubקhR'7vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_add.stubקhbS@vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_modify_batch.stub/קh/g9vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_errno.stubקh;?vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_exop_passwd.stubקh%0:vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_dn2ufn.stub:קh:bŤ?vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_t61_to_8859.stubYקhY Cvendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_mod_replace_ext.stubAקhA/>vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_set_option.stub1קh1h6M:vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_modify.stubGקhGҙ8>vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_rename_ext.stubקh4le:vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_get_dn.stubקh}0Bvendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_connect_wallet.stubקh5D?vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_get_entries.stub>קh> (|@vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_exop_refresh.stub)קh):vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_escape.stubcקhcD[GtBvendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_next_reference.stubקhmy8vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_exop.stubקhҝT9vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_error.stubקhlM@vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_parse_result.stubקhXC;vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_add_ext.stub1קh1)f>vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_get_option.stub1קh1 0Cvendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_first_attribute.stubקh6 Bvendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_get_values_len.stubmקhm.)ͤ>vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_parse_exop.stub)קh)a":vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_unbind.stubקhsɤ=vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_exop_sync.stubLקhL)/ ;vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_connect.stubקhŤ;vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_err2str.stub5קh5:3ސ;vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_mod_add.stub קh oQv?vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_mod_replace.stubקh=q㧤?vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_first_entry.stubקhS;vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_compare.stub;קh;|?٤?vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_exop_whoami.stubקh*Avendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_count_entries.stubקh7D:vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_search.stubpקhpZ[HդCvendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_set_rebind_proc.stubקhf>vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_next_entry.stubקh$9>vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_delete_ext.stubקh~w?vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_free_result.stubקhM[8vendor/phpstan/php-8-stubs/stubs/ext/ldap/ldap_read.stubzקhz~35vendor/phpstan/php-8-stubs/stubs/ext/bz2/bzclose.stubfקhf\m4vendor/phpstan/php-8-stubs/stubs/ext/bz2/bzread.stub]קh] ѤC:vendor/phpstan/php-8-stubs/stubs/ext/bz2/bzdecompress.stub`קh`V5vendor/phpstan/php-8-stubs/stubs/ext/bz2/bzwrite.stubקh1]5vendor/phpstan/php-8-stubs/stubs/ext/bz2/bzerror.stubקh5vendor/phpstan/php-8-stubs/stubs/ext/bz2/bzflush.stubfקhf6vendor/phpstan/php-8-stubs/stubs/ext/bz2/bzerrstr.stubקhWǤ5vendor/phpstan/php-8-stubs/stubs/ext/bz2/bzerrno.stubקh-+4vendor/phpstan/php-8-stubs/stubs/ext/bz2/bzopen.stubקhDӤ8vendor/phpstan/php-8-stubs/stubs/ext/bz2/bzcompress.stubdקhd?Qmu=vendor/phpstan/php-8-stubs/stubs/ext/pdo_pgsql/Pdo/Pgsql.stub[קh[}3$Avendor/phpstan/php-8-stubs/stubs/ext/pdo_pgsql/PDO_PGSql_Ext.stubgקhg6vendor/phpstan/php-8-stubs/stubs/ext/zip/zip_open.stubקhC>7vendor/phpstan/php-8-stubs/stubs/ext/zip/zip_close.stubYקhYb$Ivendor/phpstan/php-8-stubs/stubs/ext/zip/zip_entry_compressionmethod.stubקh|䆤=vendor/phpstan/php-8-stubs/stubs/ext/zip/zip_entry_close.stubkקhkj5Fvendor/phpstan/php-8-stubs/stubs/ext/zip/zip_entry_compressedsize.stubyקhyN8vendor/phpstan/php-8-stubs/stubs/ext/zip/ZipArchive.stubקh@vendor/phpstan/php-8-stubs/stubs/ext/zip/zip_entry_filesize.stubsקhs yr<vendor/phpstan/php-8-stubs/stubs/ext/zip/zip_entry_read.stubקh/<vendor/phpstan/php-8-stubs/stubs/ext/zip/zip_entry_name.stubrקhrES<vendor/phpstan/php-8-stubs/stubs/ext/zip/zip_entry_open.stubקhSy6vendor/phpstan/php-8-stubs/stubs/ext/zip/zip_read.stublקhlJ@vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_parse_string.stubקhf*H>vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_get_status.stub6קh6731@vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_config_count.stub8קh8ŗAvendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_warning_count.stub9קh9?vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_get_release.stub/קh/[6G?vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_repair_file.stubקh絲7vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidyNode.stubקhѲޤ@vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_get_html_ver.stub8קh8<vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_get_html.stub;קh;g5?vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_get_opt_doc.stubjקhj-<vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_is_xhtml.stub5קh5>0<vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_get_root.stub;קh;I>vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_get_output.stub9קh9JDvendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_get_error_buffer.stubEקhE&+:vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_is_xml.stub3קh3դ<vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_get_body.stub;קh;)>vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_get_config.stub?קh?=3vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy.stubY קhY q@vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_clean_repair.stub9קh9c]Avendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_repair_string.stubקhc <vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_diagnose.stub5קh5¤<vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_get_head.stub;קh;{`?vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_error_count.stub7קh7Å@>vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_parse_file.stubקh_xN:vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_getopt.stubNקhN\T-@vendor/phpstan/php-8-stubs/stubs/ext/tidy/tidy_access_count.stub8קh8;vendor/phpstan/php-8-stubs/stubs/ext/xsl/XSLTProcessor.stubקh_Y=vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_append.stubEקhEҒ<=vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocisetprefetch.stubקh9?vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocinewdescriptor.stubקhʆH?vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocistatementtype.stubקhaÅ=vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_num_fields.stubVקhVTw8vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_close.stubUקhU'^N@vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicollassignelem.stubקh KV<vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocifreecursor.stubקh`Y'?vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocinewcollection.stubקh7vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocifetch.stubxקhx>vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicolumnisnull.stubקhׄ:vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicolltrim.stubקh:vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_eof.stub4קh4D,n=vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_new_cursor.stubqקhq ʤBvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_field_precision.stubuקhuڙ?vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_bind_by_name.stubקhZAvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_collection_max.stubNקhNpo<vendor/phpstan/php-8-stubs/stubs/ext/oci8/OCICollection.stubקhqX]<vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicolumnname.stubקh:8vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_error.stubקhY<vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_write.stub^קh^8k9vendor/phpstan/php-8-stubs/stubs/ext/oci8/ociloadlob.stubiקhi#e=Avendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_free_statement.stub[קh[+6+>vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_field_scale.stubqקhq9vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicollmax.stubzקhz,;vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocinewcursor.stubקhtգ>vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocidefinebyname.stubקh8vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicommit.stub|קh|Ҥ;vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_read.stubJקhJ?vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicolumntyperaw.stubקhHuä8vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocinlogon.stubקhd \?vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocifreestatement.stubקhe ?vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_fetch_object.stubקhVLWͤ<vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicolumnsize.stubקh0Avendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicolumnprecision.stubקh/m<vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_fetch_row.stub]קh]Һޤ;vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_size.stub:קh:!0:=vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocisavelobfile.stubyקhySp;vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_load.stub=קh=;vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_pconnect.stubקh+v?vendor/phpstan/php-8-stubs/stubs/ext/oci8/ociserverversion.stubקhh=vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_set_action.stubiקhiDà֤;vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_num_rows.stubZקhZ Ƥ;vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_save.stubTקhTyD*Lvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_collection_element_assign.stuboקhoAÀ<vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicolumntype.stubקhF =vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_field_name.stubsקhs%ɤ@vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocifreecollection.stub}קh}~a;vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_rollback.stubWקhWUD]Cvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_set_prefetch_lob.stubקh <Hvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_set_client_identifier.stubwקhws;vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_copy.stubXקhXۅњ>vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_set_edition.stub;קh;?rBvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_set_client_info.stubwקhwJ8>vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_free_cursor.stubyקhysQ>vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_fetch_assoc.stub_קh_i<vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_fetch_all.stubקh(?1Ivendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_collection_element_get.stubpקhp >vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_fetch_array.stubקhQ:vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocifreedesc.stubiקhitD(Bvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_collection_trim.stubTקhT+S@vendor/phpstan/php-8-stubs/stubs/ext/oci8/ociwritelobtofile.stubקhѯ:vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_connect.stubקhb]mDvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_collection_append.stub[קh[8vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocilogoff.stub|קh|Ĭ0y;vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_tell.stub:קh:yK8vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicancel.stubzקhzV_9vendor/phpstan/php-8-stubs/stubs/ext/oci8/ociexecute.stubקhuEvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_bind_array_by_name.stubקh^$<vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_flush.stubEקhEţ@vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocifetchstatement.stubקh ex<vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_erase.stubeקheCvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_set_db_operation.stuboקho,}bAvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_server_version.stubeקheAvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_new_collection.stubקh4 9vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocinumcols.stub~קh~NY<vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicollappend.stubקh15<vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocibindbyname.stubקhܸt:vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocirollback.stubקh@vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocipasswordchange.stubקh@vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_field_is_null.stubnקhnJ?vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_set_prefetch.stubdקhdק=vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_import.stubIקhI95֤7vendor/phpstan/php-8-stubs/stubs/ext/oci8/ociparse.stubקhW[=vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicollgetelem.stubקh"Jvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_unregister_taf_callback.stubfקhfƤAvendor/phpstan/php-8-stubs/stubs/ext/oci8/ocisetbufferinglob.stubGקhGPD0Ф?vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_is_equal.stubIקhISYAvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_field_type_raw.stubtקht+k9vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_cancel.stubSקhSBvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_free_collection.stubJקhJM|yBvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_set_module_name.stublקhlog8vendor/phpstan/php-8-stubs/stubs/ext/oci8/ociresult.stubקhM;Avendor/phpstan/php-8-stubs/stubs/ext/oci8/ocigetbufferinglob.stub;קh;dȤ8vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_fetch.stubRקhR&դ9vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_result.stubhקhhG%Ȥ:vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_execute.stubwקhwHj8vendor/phpstan/php-8-stubs/stubs/ext/oci8/ociplogon.stubקh<:vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocirowcount.stubקhԧ>vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_new_connect.stubקhqH?vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_truncate.stubJקhJHvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_register_taf_callback.stubyקhyN Avendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_new_descriptor.stub|קh|C"8vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_parse.stubyקhyä5vendor/phpstan/php-8-stubs/stubs/ext/oci8/OCILob.stub< קh< Ĥ=vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_field_type.stubwקhwG9vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocisavelob.stubקh%y<7vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocierror.stubקh__=vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_field_size.stubpקhpH3Τ:vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicollsize.stub|קh|;vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocifetchinto.stubקh%9vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_commit.stubUקhU&ФBvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_collection_size.stubOקhOXAvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_statement_type.stubcקhci%H;vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_seek.stub^קh^5ݤDvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_collection_assign.stubZקhZBvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_password_change.stubקhPAvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_client_version.stub1קh1Bvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_free_descriptor.stub<קh<# 7vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocilogon.stubקh{c2=vendor/phpstan/php-8-stubs/stubs/ext/oci8/ocicolumnscale.stubקhEFCvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_set_call_timeout.stubmקhm2Ivendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_get_implicit_resultset.stub{קh{=vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_rewind.stub7קh7T6RAvendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_define_by_name.stubקh^٬=vendor/phpstan/php-8-stubs/stubs/ext/oci8/oci_lob_export.stubsקhsH>Gvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_config_data_dir.stubקhj<_Hvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_config_save_repl.stubקhFCvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_config_repl.stubקh S,Fvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_add_to_session.stubקh(Cvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_config_mode.stubקhA2aEvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_config_create.stub,קh,(Bvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_new_config.stubקhEvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_config_ignore.stubקh`S Gvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_config_dict_dir.stubקhtXEvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_clear_session.stubקhoΤDvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_new_personal.stub|קh|p|Gvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_add_to_personal.stubקhz&yIvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_store_replacement.stubקhBvendor/phpstan/php-8-stubs/stubs/ext/pspell/PSpell/Dictionary.stubyקhyS>vendor/phpstan/php-8-stubs/stubs/ext/pspell/PSpell/Config.stubuקhuFFJvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_config_runtogether.stubקhw?vendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_suggest.stubקh|Gvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_config_personal.stubקh0 ۤEvendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_save_wordlist.stubקh[WO=vendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_check.stubקh8Ϥ;vendor/phpstan/php-8-stubs/stubs/ext/pspell/pspell_new.stubhקhh?5vendor/phpstan/php-8-stubs/stubs/ext/shmop/Shmop.stub?קh?f+:vendor/phpstan/php-8-stubs/stubs/ext/shmop/shmop_open.stubbקhb:;vendor/phpstan/php-8-stubs/stubs/ext/shmop/shmop_write.stubOקhOME&;vendor/phpstan/php-8-stubs/stubs/ext/shmop/shmop_close.stubHקhH1e%:vendor/phpstan/php-8-stubs/stubs/ext/shmop/shmop_size.stub3קh3<vendor/phpstan/php-8-stubs/stubs/ext/shmop/shmop_delete.stub6קh6[:vendor/phpstan/php-8-stubs/stubs/ext/shmop/shmop_read.stubNקhNRΤEvendor/phpstan/php-8-stubs/stubs/ext/simplexml/SimpleXMLIterator.stub=קh= Hvendor/phpstan/php-8-stubs/stubs/ext/simplexml/simplexml_import_dom.stub#קh#u֤Ivendor/phpstan/php-8-stubs/stubs/ext/simplexml/simplexml_load_string.stubקhs,Dvendor/phpstan/php-8-stubs/stubs/ext/simplexml/SimpleXMLElement.stub קh Gvendor/phpstan/php-8-stubs/stubs/ext/simplexml/simplexml_load_file.stubקhIvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_end_element.stubDקhD򉯤Kvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_write_element.stubmקhmIvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_write_cdata.stubUקhUCvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_flush.stubXקhXnŤMvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_write_attribute.stubeקheϤGvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_write_raw.stubSקhSkˤMvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_end_dtd_attlist.stubHקhHYJ.Fvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_start_pi.stubQקhQCNvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_start_element_ns.stub|קh|ǚ>Ivendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_start_cdata.stubDקhDQ܋2Fvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_write_pi.stubbקhbVNvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_start_dtd_entity.stubfקhfdGvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_start_dtd.stubקhxN`Nvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_write_dtd_entity.stubקhtd+ʤLvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_end_dtd_entity.stubGקhG&m%Gvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_write_dtd.stubקhoMvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_start_attribute.stubVקhV+$UNvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_full_end_element.stubIקhI `\Ivendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_end_comment.stubDקhDVKvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_start_comment.stubFקhFb~oIvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_open_memory.stub>קh>۽Jvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_end_document.stubEקhEFkuOvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_write_dtd_element.stubiקhi Ovendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_start_dtd_element.stubaקha&htBvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_text.stubNקhNR=kޤNvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_write_element_ns.stubקh#Kvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_end_attribute.stubFקhF Pvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_start_attribute_ns.stub~קh~zKvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_start_element.stubTקhT,dDvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_end_pi.stub?קh?C0Ovendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_start_dtd_attlist.stubXקhXOvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_set_indent_string.stub_קh__pPvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_write_attribute_ns.stubקhV=vendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/XMLWriter.stub:קh:TX Kvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_write_comment.stubWקhWdFvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_open_uri.stubhקhhsKvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_output_memory.stub\קh\<-5Evendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_end_dtd.stub@קh@U|Gvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_end_cdata.stubBקhBW@Lvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_start_document.stubקh.wӤHvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_set_indent.stubQקhQ bHMvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_end_dtd_element.stubHקhH JHzOvendor/phpstan/php-8-stubs/stubs/ext/xmlwriter/xmlwriter_write_dtd_attlist.stubiקhi"hCvendor/phpstan/php-8-stubs/stubs/ext/filter/filter_input_array.stubקhKx:vendor/phpstan/php-8-stubs/stubs/ext/filter/filter_id.stub7קh7=vendor/phpstan/php-8-stubs/stubs/ext/filter/filter_input.stub{קh{`@8Avendor/phpstan/php-8-stubs/stubs/ext/filter/filter_var_array.stubקh+{K<vendor/phpstan/php-8-stubs/stubs/ext/filter/filter_list.stub@קh@V;vendor/phpstan/php-8-stubs/stubs/ext/filter/filter_var.stubjקhjc?vendor/phpstan/php-8-stubs/stubs/ext/filter/filter_has_var.stubnקhnu`Jvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_box_keypair.stub8קh8dډUvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_aead_aes256gcm_decrypt.stubקhཤ[vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_core_ristretto255_scalar_mul.stubnקhn> a;vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_add.stubHקhHEAvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_increment.stub<קh<vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_memcmp.stubIקhI+H Pvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_pwhash_str_verify.stubZקhZ9bvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_secretstream_xchacha20poly1305_push.stubקhau?vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_compare.stubJקhJ(gIdvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_secretstream_xchacha20poly1305_keygen.stubקh=vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_unpad.stubJקhJcvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_secretstream_xchacha20poly1305_rekey.stub]קh] 9Tvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_core_ristretto255_sub.stubgקhgo:Tvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_core_ristretto255_add.stubקh\gۤ^vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_core_ristretto255_scalar_reduce.stubfקhfDPvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_sign_seed_keypair.stubJקhJy@Hvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_secretbox.stubaקha nGvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_box_open.stubnקhn{Abvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_secretstream_xchacha20poly1305_pull.stubקhlHvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_shorthash.stubYקhYxˁVvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_pwhash_str_needs_rehash.stubקhq{WDOvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_shorthash_keygen.stub=קh=]N̤Zvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_pwhash_scryptsalsa208sha256.stubקhoavendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_aead_chacha20poly1305_ietf_decrypt.stubקhTmӤevendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_pwhash_scryptsalsa208sha256_str_verify.stuboקho0_\vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_sign_ed25519_sk_to_curve25519.stub\קh\!,Jvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_auth_verify.stub_קh_W#Tvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_aead_aes256gcm_keygen.stubBקhBTE%Ivendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_kx_keypair.stub7קh7;&Gvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_box_seal.stubXקhX1HˤMvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_secretbox_open.stuboקho07(Vvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_stream_xchacha20_keygen.stubUקhUëMvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_sign_publickey.stubKקhK|O ^vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_core_ristretto255_scalar_negate.stubfקhfUĤNvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_scalarmult_base.stubקhYL!avendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_aead_xchacha20poly1305_ietf_keygen.stubOקhO6[vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_box_publickey_from_secretkey.stub[קh[`ȧTvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_aead_aegis256_decrypt.stubקhVvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_stream_xchacha20_xor_ic.stubקh:8Bvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_bin2base64.stubmקhmfߤUvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_aead_aegis128l_decrypt.stubקhX᧤gvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_secretstream_xchacha20poly1305_init_pull.stubpקhp"nZvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_aead_aes256gcm_is_available.stubhקhh<Jvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_generichash.stubקhפMvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_sign_secretkey.stubKקhK*_vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_core_ristretto255_is_valid_point.stubeקhe18Ivendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_stream_xor.stubbקhb[?vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_bin2hex.stub;קh;[,bvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_aead_xchacha20poly1305_ietf_encrypt.stubקhs^vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_core_ristretto255_scalar_invert.stubfקhfwLvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_box_seal_open.stubdקhdgavendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_aead_chacha20poly1305_ietf_encrypt.stubקhJWvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_core_ristretto255_random.stubVקhVzPvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_generichash_final.stub{קh{;Ovendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_box_seed_keypair.stubIקhI]MIvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_scalarmult.stubRקhR+([vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_core_ristretto255_scalar_add.stubnקhn3>mJvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_auth_keygen.stub8קh8`@QLvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_box_publickey.stubJקhJВ3Bvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_box.stub`קh`!Ovendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_stream_xchacha20.stubקhzLvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_sign_detached.stub]קh] UHvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_sign_open.stubfקhfY\^vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_pwhash_scryptsalsa208sha256_str.stubzקhzgUvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_kx_server_session_keys.stubxקhx%dhvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_sign_keypair_from_secretkey_and_publickey.stub|קh|2ڤIvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_pwhash_str.stubeקhes Tvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_aead_aegis128l_keygen.stubSקhSMOvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_generichash_init.stub|קh|UD8sSvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_sign_verify_detached.stubuקhu"R\vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_aead_chacha20poly1305_encrypt.stubקh'v\vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_sign_ed25519_pk_to_curve25519.stub\קh\AKvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_kx_secretkey.stubIקhIgS}Rvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_kdf_derive_from_key.stubקh"aΤSvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_stream_xchacha20_xor.stub}קh}kU[vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_scalarmult_ristretto255_base.stubcקhc-ُ~Kvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_sign_keypair.stub9קh9ۥLvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_box_secretkey.stubJקhJQOvendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_secretbox_keygen.stub=קh=o[vendor/phpstan/php-8-stubs/stubs/ext/sodium/sodium_crypto_aead_chacha20poly1305_keygen.stubIקhI&6vendor/phpstan/php-8-stubs/stubs/ext/gd/imagechar.stubקhڅ@vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreatefromjpeg.stub]קh]x4vendor/phpstan/php-8-stubs/stubs/ext/gd/imagesx.stub2קh2(QhŤ?vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecopymergegray.stubקh0cX9vendor/phpstan/php-8-stubs/stubs/ext/gd/imagesetclip.stub\קh\Avendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreatetruecolor.stubRקhRޤ7vendor/phpstan/php-8-stubs/stubs/ext/gd/imagetypes.stub&קh&o JAvendor/phpstan/php-8-stubs/stubs/ext/gd/imageaffinematrixget.stubקh{9;vendor/phpstan/php-8-stubs/stubs/ext/gd/imagerectangle.stubjקhj~C7;vendor/phpstan/php-8-stubs/stubs/ext/gd/imagefontwidth.stubקhd~Ҥ>vendor/phpstan/php-8-stubs/stubs/ext/gd/imagefilltoborder.stublקhlyb?vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreatefromxbm.stubPקhPW9vendor/phpstan/php-8-stubs/stubs/ext/gd/imagepolygon.stubuקhuC=vendor/phpstan/php-8-stubs/stubs/ext/gd/imageistruecolor.stub<קh< @fDvendor/phpstan/php-8-stubs/stubs/ext/gd/imagepalettetotruecolor.stubCקhCI>vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolorresolve.stub]קh]#ޤ@vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreatefromavif.stubקhK:vendor/phpstan/php-8-stubs/stubs/ext/gd/imageloadfont.stubקh"t禤4vendor/phpstan/php-8-stubs/stubs/ext/gd/imagegd.stubIקhI9v=vendor/phpstan/php-8-stubs/stubs/ext/gd/imagelayereffect.stubIקhIf^;vendor/phpstan/php-8-stubs/stubs/ext/gd/imagesavealpha.stubHקhHF[Avendor/phpstan/php-8-stubs/stubs/ext/gd/imagefilledrectangle.stubpקhpVd0?vendor/phpstan/php-8-stubs/stubs/ext/gd/imagefilledpolygon.stub{קh{)E9vendor/phpstan/php-8-stubs/stubs/ext/gd/imagedestroy.stub?קh? ݪ?vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreatefromxpm.stub\קh\:q:vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolorset.stubקh\y.@vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreatefromwbmp.stubQקhQ ?vendor/phpstan/php-8-stubs/stubs/ext/gd/imagefilledellipse.stubקh7!ܤ6vendor/phpstan/php-8-stubs/stubs/ext/gd/imagejpeg.stubקhQf?vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecopyresampled.stubקhu8;vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecopymerge.stubקh2\>Avendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolordeallocate.stubLקhLGڤ3vendor/phpstan/php-8-stubs/stubs/ext/gd/GdFont.stubbקhb+<>vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreatefromgd.stubHקhH7r8vendor/phpstan/php-8-stubs/stubs/ext/gd/imageftbbox.stubקhMCvendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreatefromgd2part.stubvקhvH9vendor/phpstan/php-8-stubs/stubs/ext/gd/imagettfbbox.stubקhdQ;vendor/phpstan/php-8-stubs/stubs/ext/gd/imageinterlace.stubPקhP;6vendor/phpstan/php-8-stubs/stubs/ext/gd/imagewbmp.stubקhU?6vendor/phpstan/php-8-stubs/stubs/ext/gd/imageflip.stub@קh@k-Z =vendor/phpstan/php-8-stubs/stubs/ext/gd/imageopenpolygon.stubyקhyޅL<vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolormatch.stubNקhN}LǤ?vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreatefrompng.stubcקhcAvendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolorclosesthwb.stub`קh`-خ;vendor/phpstan/php-8-stubs/stubs/ext/gd/imagefilledarc.stubקh/4vendor/phpstan/php-8-stubs/stubs/ext/gd/imagesy.stub2קh2iJ䫤=vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolorstotal.stub;קh;Fp9vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolorat.stubMקhMF&Bvendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreatefromstring.stubHקhHc?vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreatefrombmp.stub\קh\DEDvendor/phpstan/php-8-stubs/stubs/ext/gd/imageaffinematrixconcat.stubpקhpI.4Cvendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolorresolvealpha.stubnקhn1hV5vendor/phpstan/php-8-stubs/stubs/ext/gd/imagegd2.stubקhfa5vendor/phpstan/php-8-stubs/stubs/ext/gd/imagegif.stubkקhk Dvendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolorallocatealpha.stubuקhuX8vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreate.stubIקhI$8vendor/phpstan/php-8-stubs/stubs/ext/gd/imagerotate.stubUקhUNv5vendor/phpstan/php-8-stubs/stubs/ext/gd/imagexbm.stubmקhm/n:vendor/phpstan/php-8-stubs/stubs/ext/gd/imagestringup.stubקhE9vendor/phpstan/php-8-stubs/stubs/ext/gd/imageellipse.stub{קh{:9vendor/phpstan/php-8-stubs/stubs/ext/gd/imagesettile.stubHקhH̤=vendor/phpstan/php-8-stubs/stubs/ext/gd/imagepalettecopy.stubIקhI\48vendor/phpstan/php-8-stubs/stubs/ext/gd/imagefilter.stub~קh~|&;vendor/phpstan/php-8-stubs/stubs/ext/gd/imageantialias.stubHקhHYT6vendor/phpstan/php-8-stubs/stubs/ext/gd/imageavif.stubקhJ(a<vendor/phpstan/php-8-stubs/stubs/ext/gd/imagegrabwindow.stubmקhmp:vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecropauto.stubקh-<vendor/phpstan/php-8-stubs/stubs/ext/gd/imagedashedline.stubkקhkV?6vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecrop.stubQקhQ Bvendor/phpstan/php-8-stubs/stubs/ext/gd/imagegetinterpolation.stub@קh@W"u>vendor/phpstan/php-8-stubs/stubs/ext/gd/imagegammacorrect.stubfקhft<vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolorexact.stub[קh[6vendor/phpstan/php-8-stubs/stubs/ext/gd/imagefill.stubQקhQd?vendor/phpstan/php-8-stubs/stubs/ext/gd/imagealphablending.stubLקhLc?vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolorallocate.stubdקhdպ8vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecharup.stubקhڤBvendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolortransparent.stubTקhTϤ5vendor/phpstan/php-8-stubs/stubs/ext/gd/imagebmp.stubקhx+Cvendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolorclosestalpha.stubnקhnP:vendor/phpstan/php-8-stubs/stubs/ext/gd/imagesetpixel.stubUקhUBiW 5vendor/phpstan/php-8-stubs/stubs/ext/gd/imagearc.stubקh]sF:vendor/phpstan/php-8-stubs/stubs/ext/gd/imagesetstyle.stubGקhG]4vendor/phpstan/php-8-stubs/stubs/ext/gd/gd_info.stub<קh<ՙGBvendor/phpstan/php-8-stubs/stubs/ext/gd/imagesetinterpolation.stubcקhc$m<vendor/phpstan/php-8-stubs/stubs/ext/gd/imagegrabscreen.stub6קh6cO7vendor/phpstan/php-8-stubs/stubs/ext/gd/imagescale.stub~קh~F2|>@vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolorsforindex.stubcקhcO?8vendor/phpstan/php-8-stubs/stubs/ext/gd/imagefttext.stubקh^ >vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecolorclosest.stub]קh]xp9vendor/phpstan/php-8-stubs/stubs/ext/gd/imagettftext.stubקh*j4vendor/phpstan/php-8-stubs/stubs/ext/gd/GdImage.stubAקhA_n ¤:vendor/phpstan/php-8-stubs/stubs/ext/gd/imagesetbrush.stubJקhJs>6vendor/phpstan/php-8-stubs/stubs/ext/gd/imageline.stubeקhex?vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreatefromgd2.stubIקhI.>vendor/phpstan/php-8-stubs/stubs/ext/gd/imagesetthickness.stubMקhM݉=vendor/phpstan/php-8-stubs/stubs/ext/gd/imageconvolution.stubjקhj$ݤ?vendor/phpstan/php-8-stubs/stubs/ext/gd/imagecreatefromgif.stubIקhIik7Dvendor/phpstan/php-8-stubs/stubs/ext/gd/imagetruecolortopalette.stubbקhb8vendor/phpstan/php-8-stubs/stubs/ext/gd/imagestring.stubקh@=vendor/phpstan/php-8-stubs/stubs/ext/sqlite3/SQLite3Stmt.stubקhLȤ9vendor/phpstan/php-8-stubs/stubs/ext/sqlite3/SQLite3.stub9קh9=7Bvendor/phpstan/php-8-stubs/stubs/ext/sqlite3/SQLite3Exception.stubkקhk*Y?vendor/phpstan/php-8-stubs/stubs/ext/sqlite3/SQLite3Result.stub.קh. Gvendor/phpstan/php-8-stubs/stubs/ext/date/timezone_transitions_get.stubקh 6vendor/phpstan/php-8-stubs/stubs/ext/date/getdate.stubRקhR]Tp<>vendor/phpstan/php-8-stubs/stubs/ext/date/DateObjectError.stubcקhcG\Qvendor/phpstan/php-8-stubs/stubs/ext/date/DateMalformedPeriodStringException.stubzקhz& T5vendor/phpstan/php-8-stubs/stubs/ext/date/mktime.stubקhqd:vendor/phpstan/php-8-stubs/stubs/ext/date/date_create.stublקhl/<vendor/phpstan/php-8-stubs/stubs/ext/date/timezone_open.stubIקhI.Hvendor/phpstan/php-8-stubs/stubs/ext/date/date_default_timezone_set.stubHקhH`eTvendor/phpstan/php-8-stubs/stubs/ext/date/date_interval_create_from_date_string.stubaקhaa׀ 8vendor/phpstan/php-8-stubs/stubs/ext/date/localtime.stuboקho#v<vendor/phpstan/php-8-stubs/stubs/ext/date/date_sun_info.stubsקhs&)Hvendor/phpstan/php-8-stubs/stubs/ext/date/date_default_timezone_get.stub8קh8 H6@vendor/phpstan/php-8-stubs/stubs/ext/date/DateTimeImmutable.stub קh _s19vendor/phpstan/php-8-stubs/stubs/ext/date/gmstrftime.stubUקhU~_qDvendor/phpstan/php-8-stubs/stubs/ext/date/date_create_immutable.stubקhCvendor/phpstan/php-8-stubs/stubs/ext/date/date_interval_format.stubXקhXDBvendor/phpstan/php-8-stubs/stubs/ext/date/timezone_offset_get.stubbקhb Fvendor/phpstan/php-8-stubs/stubs/ext/date/timezone_name_from_abbr.stubnקhnCvendor/phpstan/php-8-stubs/stubs/ext/date/date_get_last_errors.stubOקhO֩[5vendor/phpstan/php-8-stubs/stubs/ext/date/gmdate.stubKקhKeHvendor/phpstan/php-8-stubs/stubs/ext/date/timezone_identifiers_list.stubקh7vendor/phpstan/php-8-stubs/stubs/ext/date/DateTime.stubקhҤKvendor/phpstan/php-8-stubs/stubs/ext/date/DateMalformedStringException.stubtקhttkwJvendor/phpstan/php-8-stubs/stubs/ext/date/timezone_abbreviations_list.stubPקhPP69Lvendor/phpstan/php-8-stubs/stubs/ext/date/DateInvalidOperationException.stubuקhu+`Avendor/phpstan/php-8-stubs/stubs/ext/date/date_timestamp_get.stubHקhH/a=;vendor/phpstan/php-8-stubs/stubs/ext/date/date_sunrise.stubקhˠ;vendor/phpstan/php-8-stubs/stubs/ext/date/DateTimeZone.stubaקhaƲ;vendor/phpstan/php-8-stubs/stubs/ext/date/DateInterval.stubקhfEvendor/phpstan/php-8-stubs/stubs/ext/date/date_parse_from_format.stubkקhkMYu<vendor/phpstan/php-8-stubs/stubs/ext/date/date_time_set.stubקhr@Cvendor/phpstan/php-8-stubs/stubs/ext/date/timezone_version_get.stub3קh3a1nj3vendor/phpstan/php-8-stubs/stubs/ext/date/time.stub קh e:vendor/phpstan/php-8-stubs/stubs/ext/date/date_sunset.stubקh`qg<vendor/phpstan/php-8-stubs/stubs/ext/date/date_date_set.stubaקhai&@vendor/phpstan/php-8-stubs/stubs/ext/date/date_timezone_get.stubWקhW |8vendor/phpstan/php-8-stubs/stubs/ext/date/strtotime.stubyקhyIѤ:vendor/phpstan/php-8-stubs/stubs/ext/date/date_modify.stubVקhV {U8vendor/phpstan/php-8-stubs/stubs/ext/date/DateError.stubYקhY9vendor/phpstan/php-8-stubs/stubs/ext/date/DatePeriod.stubקh@#Z@vendor/phpstan/php-8-stubs/stubs/ext/date/DateTimeInterface.stub קh ?vendor/phpstan/php-8-stubs/stubs/ext/date/date_isodate_set.stubmקhmwl7vendor/phpstan/php-8-stubs/stubs/ext/date/date_sub.stubTקhTq}>vendor/phpstan/php-8-stubs/stubs/ext/date/date_offset_get.stubEקhEZ)3vendor/phpstan/php-8-stubs/stubs/ext/date/date.stubIקhIY7vendor/phpstan/php-8-stubs/stubs/ext/date/date_add.stubTקhT57f:vendor/phpstan/php-8-stubs/stubs/ext/date/date_format.stubTקhTq(%Ӥ<vendor/phpstan/php-8-stubs/stubs/ext/date/DateException.stubaקhaf8vendor/phpstan/php-8-stubs/stubs/ext/date/date_diff.stubקhS~Kvendor/phpstan/php-8-stubs/stubs/ext/date/DateInvalidTimeZoneException.stubtקht~MDvendor/phpstan/php-8-stubs/stubs/ext/date/timezone_location_get.stubeקhe:¤7vendor/phpstan/php-8-stubs/stubs/ext/date/gmmktime.stubקh˜Fvendor/phpstan/php-8-stubs/stubs/ext/date/date_create_from_format.stubקh48vendor/phpstan/php-8-stubs/stubs/ext/date/checkdate.stubEקhE&7vendor/phpstan/php-8-stubs/stubs/ext/date/strftime.stubSקhSt4vendor/phpstan/php-8-stubs/stubs/ext/date/idate.stubMקhM189vendor/phpstan/php-8-stubs/stubs/ext/date/date_parse.stubOקhO%-Avendor/phpstan/php-8-stubs/stubs/ext/date/date_timestamp_set.stubUקhU%=@vendor/phpstan/php-8-stubs/stubs/ext/date/timezone_name_get.stubEקhEJPvendor/phpstan/php-8-stubs/stubs/ext/date/date_create_immutable_from_format.stubקhh@vendor/phpstan/php-8-stubs/stubs/ext/date/date_timezone_set.stub]קh](Svendor/phpstan/php-8-stubs/stubs/ext/date/DateMalformedIntervalStringException.stub|קh|oȗ=vendor/phpstan/php-8-stubs/stubs/ext/date/DateRangeError.stubbקhb(u=vendor/phpstan/php-8-stubs/stubs/ext/sysvmsg/msg_receive.stub"קh"s-?vendor/phpstan/php-8-stubs/stubs/ext/sysvmsg/msg_get_queue.stub^קh^+u.Bvendor/phpstan/php-8-stubs/stubs/ext/sysvmsg/SysvMessageQueue.stubJקhJ[6MBvendor/phpstan/php-8-stubs/stubs/ext/sysvmsg/msg_queue_exists.stub5קh5zl?vendor/phpstan/php-8-stubs/stubs/ext/sysvmsg/msg_set_queue.stubOקhOޕ>:vendor/phpstan/php-8-stubs/stubs/ext/sysvmsg/msg_send.stubקh,@vendor/phpstan/php-8-stubs/stubs/ext/sysvmsg/msg_stat_queue.stubJקhJ~Bvendor/phpstan/php-8-stubs/stubs/ext/sysvmsg/msg_remove_queue.stubEקhE@vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_setopt_array.stubQקhQxgL?vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_file_create.stub~קh~1$j;vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_version.stubGקhG_F9vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_reset.stubAקhAuL@vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_share_setopt.stubgקhg<vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_strerror.stub<קh<óq<vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_unescape.stubUקhU9vendor/phpstan/php-8-stubs/stubs/ext/curl/CurlHandle.stubDקhD7vendor/phpstan/php-8-stubs/stubs/ext/curl/CURLFile.stubקhn7B@vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_multi_select.stubaקha`xDvendor/phpstan/php-8-stubs/stubs/ext/curl/curl_multi_getcontent.stubHקhH8:vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_upkeep.stubקhj=vendor/phpstan/php-8-stubs/stubs/ext/curl/CURLStringFile.stubקh'V9vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_close.stub:קh:09q>vendor/phpstan/php-8-stubs/stubs/ext/curl/CurlMultiHandle.stub'קh'`f`;vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_getinfo.stubRקhR3>vendor/phpstan/php-8-stubs/stubs/ext/curl/CurlShareHandle.stub'קh'4\4:vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_setopt.stubVקhVb?vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_share_errno.stubJקhJuBvendor/phpstan/php-8-stubs/stubs/ext/curl/curl_multi_strerror.stubBקhB@vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_multi_setopt.stubgקhg}ˤ?vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_copy_handle.stubMקhM Gvendor/phpstan/php-8-stubs/stubs/ext/curl/curl_multi_remove_handle.stubgקhgmCvendor/phpstan/php-8-stubs/stubs/ext/curl/curl_multi_info_read.stubקhԂBvendor/phpstan/php-8-stubs/stubs/ext/curl/curl_share_strerror.stubBקhBm28vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_exec.stubGקhGa>vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_multi_exec.stub{קh{ IJ9vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_errno.stub9קh9>vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_multi_init.stub8קh85Ƥ?vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_multi_errno.stubJקhJ h:vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_escape.stubקh?vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_multi_close.stubKקhKD$)8vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_init.stubFקhFB4Dvendor/phpstan/php-8-stubs/stubs/ext/curl/curl_multi_add_handle.stubdקhd8QA:9vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_pause.stubvקhv i;9vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_error.stub<קh<>ti?vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_share_close.stubKקhK>n>vendor/phpstan/php-8-stubs/stubs/ext/curl/curl_share_init.stub8קh8ZHɤAvendor/phpstan/php-8-stubs/stubs/ext/iconv/iconv_mime_encode.stubrקhrx <vendor/phpstan/php-8-stubs/stubs/ext/iconv/iconv_strpos.stubyקhy2h*=vendor/phpstan/php-8-stubs/stubs/ext/iconv/iconv_strrpos.stubiקhia2<vendor/phpstan/php-8-stubs/stubs/ext/iconv/iconv_substr.stub{קh{'6Avendor/phpstan/php-8-stubs/stubs/ext/iconv/iconv_mime_decode.stubmקhm:<vendor/phpstan/php-8-stubs/stubs/ext/iconv/iconv_strlen.stubxקhxBvendor/phpstan/php-8-stubs/stubs/ext/iconv/iconv_set_encoding.stubMקhM۱5vendor/phpstan/php-8-stubs/stubs/ext/iconv/iconv.stubdקhdzޱIvendor/phpstan/php-8-stubs/stubs/ext/iconv/iconv_mime_decode_headers.stubקhz\믤Bvendor/phpstan/php-8-stubs/stubs/ext/iconv/iconv_get_encoding.stubhקhhW7vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMEntity.stub,קh,v5vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMAttr.stubקh>vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMCharacterData.stub$קh$!28vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMElement.stubקhs>vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/HTMLDocument.stubקhq?vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/NamespaceInfo.stubCקhC\*xAvendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/DtdNamedNodeMap.stubUקhUd <vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/ParentNode.stubyקhycqBvendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/AdjacentPosition.stubקhб+;vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/ChildNode.stubקh Ť7vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/XPath.stubקh9vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/Element.stubקh%ܤ:vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/Notation.stubקhgL6vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/Node.stub'קh'HRvפ:vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/Document.stubקh ={Avendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/EntityReference.stubTקhTn݁Bvendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/DocumentFragment.stubקh\+@m?vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/CharacterData.stub+קh+6vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/Text.stubקhA􆕤=vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/XMLDocument.stubקhR@vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/Implementation.stubקh>vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/CDATASection.stubQקhQfƤ6vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/Attr.stub=קh=e8vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/Entity.stub<קh<}]lGvendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/ProcessingInstruction.stubקhMiH=vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/HTMLElement.stubSקhSd7z:vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/NodeList.stubקh) ;vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/TokenList.stubקh͵ȤBvendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/import_simplexml.stubiקhi*E@vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/HTMLCollection.stub7קh7h+Z>vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/NamedNodeMap.stub%קh%C (9vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/Comment.stubקhӜ>vendor/phpstan/php-8-stubs/stubs/ext/dom/Dom/DocumentType.stub(קh((y5vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMText.stubקh8葰Bvendor/phpstan/php-8-stubs/stubs/ext/dom/dom_import_simplexml.stubKקhKE8vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMComment.stubuקhup=1Avendor/phpstan/php-8-stubs/stubs/ext/dom/DOMDocumentFragment.stub7קh7 Τ5vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMNode.stub קh q';vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMParentNode.stubAקhA>vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMNameSpaceNode.stubקhPHۤ:vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMException.stub7קh7wH@vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMEntityReference.stuboקho*=vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMNamedNodeMap.stubקhFvendor/phpstan/php-8-stubs/stubs/ext/dom/DOMProcessingInstruction.stubקhBȤ=vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMDocumentType.stubTקhToW==vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMCdataSection.stublקhl 9vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMDocument.stubקh㖑6vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMXPath.stubקhI9vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMNotation.stub.קh.c:vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMChildNode.stubIקhIheL?vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMImplementation.stub.קh. Z9vendor/phpstan/php-8-stubs/stubs/ext/dom/DOMNodeList.stubCקhCGQEvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_signal_dispatch.stub2קh2:"=vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_waitpid.stubקhA>vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_strerror.stubCקhCfVAvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_getpriority.stub|קh|;vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_forkx.stub[קh[1ߤ?vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_wifexited.stubEקhE4 5:vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_wait.stubקhtMAvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_wifsignaled.stub@קh@<vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_waitid.stubקhܸ ;vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_alarm.stub3קh3u>Dvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_setcpuaffinity.stubnקhn~=ƤDvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_getcpuaffinity.stubקhIn:vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_exec.stub[קh[ʤBvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_setqos_class.stubtקhtDb>vendor/phpstan/php-8-stubs/stubs/ext/pcntl/Pcntl/QosClass.stubקhitV>vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_wstopsig.stub;קh; tuAvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_sigprocmask.stubקhvBvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_sigtimedwait.stubקhiBvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_wifcontinued.stubQקhQh=vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_unshare.stubHקhHk5Avendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_wexitstatus.stub>קh>Ӑ !<vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_signal.stubקh;vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_errno.stubJקhJ6~@vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_wifstopped.stub8קh8pAvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_sigwaitinfo.stubקh"ODvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_get_last_error.stub0קh0h1Hvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_signal_get_handler.stubVקhV%>vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_wtermsig.stub;קh;LQ:vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_fork.stubHקhHҤ;vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_rfork.stublקhl Bvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_getqos_class.stub|קh|%;vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_setns.stubקhG<vendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_getcpu.stubYקhY2Cvendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_async_signals.stubDקhD>8Avendor/phpstan/php-8-stubs/stubs/ext/pcntl/pcntl_setpriority.stubקh9=vendor/phpstan/php-8-stubs/stubs/ext/pdo_dblib/Pdo/Dblib.stubQקhQM-u9vendor/phpstan/php-8-stubs/stubs/ext/pcre/preg_match.stubקh +9vendor/phpstan/php-8-stubs/stubs/ext/pcre/preg_split.stubקh}XDvendor/phpstan/php-8-stubs/stubs/ext/pcre/preg_replace_callback.stubקhόѤ>vendor/phpstan/php-8-stubs/stubs/ext/pcre/preg_last_error.stub+קh+9{j :vendor/phpstan/php-8-stubs/stubs/ext/pcre/preg_filter.stubקh`FH9vendor/phpstan/php-8-stubs/stubs/ext/pcre/preg_quote.stubOקhO-Jvendor/phpstan/php-8-stubs/stubs/ext/pcre/preg_replace_callback_array.stubקh?3=vendor/phpstan/php-8-stubs/stubs/ext/pcre/preg_match_all.stubקhx^8vendor/phpstan/php-8-stubs/stubs/ext/pcre/preg_grep.stubZקhZBvendor/phpstan/php-8-stubs/stubs/ext/pcre/preg_last_error_msg.stub2קh2tK;vendor/phpstan/php-8-stubs/stubs/ext/pcre/preg_replace.stubקh<Dvendor/phpstan/php-8-stubs/stubs/sapi/cli/cli_set_process_title.stub?קh?vendor/phpstan/php-8-stubs/stubs/sapi/phpdbg/phpdbg_clear.stub)קh)jw?vendor/phpstan/php-8-stubs/stubs/sapi/phpdbg/phpdbg_prompt.stub8קh85SBvendor/phpstan/php-8-stubs/stubs/sapi/phpdbg/phpdbg_end_oplog.stubBקhBoq=vendor/phpstan/php-8-stubs/stubs/sapi/phpdbg/phpdbg_exec.stub>קh>eGvendor/phpstan/php-8-stubs/stubs/sapi/phpdbg/phpdbg_break_function.stubBקhB{&>vendor/phpstan/php-8-stubs/stubs/sapi/phpdbg/phpdbg_color.stubDקhDψEvendor/phpstan/php-8-stubs/stubs/sapi/phpdbg/phpdbg_break_method.stubMקhMJCvendor/phpstan/php-8-stubs/stubs/sapi/phpdbg/phpdbg_break_next.stubPקhPdL,Gvendor/phpstan/php-8-stubs/stubs/sapi/apache2handler/apache_getenv.stub]קh]]3Kvendor/phpstan/php-8-stubs/stubs/sapi/apache2handler/apache_lookup_uri.stubhקhhkz-Evendor/phpstan/php-8-stubs/stubs/sapi/apache2handler/apache_note.stub]קh]7dAvendor/phpstan/php-8-stubs/stubs/sapi/apache2handler/virtual.stub/קh/{XӤGvendor/phpstan/php-8-stubs/stubs/sapi/apache2handler/getallheaders.stubPקhP(Lvendor/phpstan/php-8-stubs/stubs/sapi/apache2handler/apache_get_modules.stub0קh07ҤLvendor/phpstan/php-8-stubs/stubs/sapi/apache2handler/apache_get_version.stub7קh7>֤Gvendor/phpstan/php-8-stubs/stubs/sapi/apache2handler/apache_setenv.stubdקhdKݤQvendor/phpstan/php-8-stubs/stubs/sapi/apache2handler/apache_response_headers.stub5קh5Pvendor/phpstan/php-8-stubs/stubs/sapi/apache2handler/apache_request_headers.stub4קh4DhH:Evendor/phpstan/php-8-stubs/stubs/sapi/cgi/apache_child_terminate.stubUקhU Ϥ<vendor/phpstan/php-8-stubs/stubs/sapi/cgi/getallheaders.stubPקhP(Fvendor/phpstan/php-8-stubs/stubs/sapi/cgi/apache_response_headers.stub5קh5Evendor/phpstan/php-8-stubs/stubs/sapi/cgi/apache_request_headers.stub4קh4DhH:Nvendor/phpstan/php-8-stubs/stubs/sapi/litespeed/litespeed_request_headers.stubYקhY4SBvendor/phpstan/php-8-stubs/stubs/sapi/litespeed/getallheaders.stubSקhSgMvendor/phpstan/php-8-stubs/stubs/sapi/litespeed/litespeed_finish_request.stub5קh5gR,Gvendor/phpstan/php-8-stubs/stubs/sapi/litespeed/apache_get_modules.stub0קh07ҤOvendor/phpstan/php-8-stubs/stubs/sapi/litespeed/litespeed_response_headers.stub>קh>jLvendor/phpstan/php-8-stubs/stubs/sapi/litespeed/apache_response_headers.stubdקhdcLKvendor/phpstan/php-8-stubs/stubs/sapi/litespeed/apache_request_headers.stub\קh\8=vendor/phpstan/php-8-stubs/stubs/Zend/ArgumentCountError.stub7קh7f-3vendor/phpstan/php-8-stubs/stubs/Zend/Override.stubקh~}Ϥ@vendor/phpstan/php-8-stubs/stubs/Zend/restore_error_handler.stubקh$P%)?vendor/phpstan/php-8-stubs/stubs/Zend/get_declared_classes.stubIקhI\4vendor/phpstan/php-8-stubs/stubs/Zend/TypeError.stub*קh*֤=vendor/phpstan/php-8-stubs/stubs/Zend/get_included_files.stubGקhGT 9vendor/phpstan/php-8-stubs/stubs/Zend/get_class_vars.stubPקhPu;vendor/phpstan/php-8-stubs/stubs/Zend/extension_loaded.stub>קh>2[놤4vendor/phpstan/php-8-stubs/stubs/Zend/Exception.stubdקhd?[i8vendor/phpstan/php-8-stubs/stubs/Zend/trigger_error.stubקh;cBvendor/phpstan/php-8-stubs/stubs/Zend/get_mangled_object_vars.stubCקhC6vendor/phpstan/php-8-stubs/stubs/Zend/enum_exists.stub\קh\ԩ 8vendor/phpstan/php-8-stubs/stubs/Zend/get_resources.stub?קh?P2鮤5vendor/phpstan/php-8-stubs/stubs/Zend/BackedEnum.stubקhH+<vendor/phpstan/php-8-stubs/stubs/Zend/get_class_methods.stubdקhd]S6vendor/phpstan/php-8-stubs/stubs/Zend/strncasecmp.stubTקhT*b 5vendor/phpstan/php-8-stubs/stubs/Zend/gc_enabled.stub'קh'r}:vendor/phpstan/php-8-stubs/stubs/Zend/error_reporting.stubCקhCATp>vendor/phpstan/php-8-stubs/stubs/Zend/get_extension_funcs.stub_קh_!S:vendor/phpstan/php-8-stubs/stubs/Zend/property_exists.stub{קh{y:vendor/phpstan/php-8-stubs/stubs/Zend/function_exists.stub<קh<$m>vendor/phpstan/php-8-stubs/stubs/Zend/UnhandledMatchError.stub4קh4-A7vendor/phpstan/php-8-stubs/stubs/Zend/zend_version.stubMקhM吤:vendor/phpstan/php-8-stubs/stubs/Zend/debug_backtrace.stubקhw|z4vendor/phpstan/php-8-stubs/stubs/Zend/Generator.stub:קh:8vendor/phpstan/php-8-stubs/stubs/Zend/func_get_args.stub+קh+66vendor/phpstan/php-8-stubs/stubs/Zend/Traversable.stubCקhCł7vendor/phpstan/php-8-stubs/stubs/Zend/CompileError.stub-קh-5vendor/phpstan/php-8-stubs/stubs/Zend/Stringable.stubJקhJ}ވ>vendor/phpstan/php-8-stubs/stubs/Zend/get_declared_traits.stubHקhH{8 ;vendor/phpstan/php-8-stubs/stubs/Zend/InternalIterator.stubקh }>vendor/phpstan/php-8-stubs/stubs/Zend/DivisionByZeroError.stub>קh>8դ5vendor/phpstan/php-8-stubs/stubs/Zend/Deprecated.stub_קh_5vendor/phpstan/php-8-stubs/stubs/Zend/ParseError.stub2קh2!9vendor/phpstan/php-8-stubs/stubs/Zend/zend_thread_id.stubIקhI0o1vendor/phpstan/php-8-stubs/stubs/Zend/strcmp.stubBקhB01vendor/phpstan/php-8-stubs/stubs/Zend/define.stubקhn/vendor/phpstan/php-8-stubs/stubs/Zend/is_a.stubקhߤBvendor/phpstan/php-8-stubs/stubs/Zend/get_declared_interfaces.stubLקhLu 55vendor/phpstan/php-8-stubs/stubs/Zend/ValueError.stub+קh+&ȲDvendor/phpstan/php-8-stubs/stubs/Zend/RequestParseBodyException.stubOקhOZ4_<vendor/phpstan/php-8-stubs/stubs/Zend/gc_collect_cycles.stub-קh-W;vendor/phpstan/php-8-stubs/stubs/Zend/get_defined_vars.stubEקhE[m=vendor/phpstan/php-8-stubs/stubs/Zend/SensitiveParameter.stubקhQ0vendor/phpstan/php-8-stubs/stubs/Zend/Error.stubקhe@vendor/phpstan/php-8-stubs/stubs/Zend/get_loaded_extensions.stubgקhgO6:vendor/phpstan/php-8-stubs/stubs/Zend/get_resource_id.stubUקhU\ ߤ5vendor/phpstan/php-8-stubs/stubs/Zend/strcasecmp.stubFקhFX8vendor/phpstan/php-8-stubs/stubs/Zend/func_num_args.stub)קh)OPh9vendor/phpstan/php-8-stubs/stubs/Zend/is_subclass_of.stubקh14vendor/phpstan/php-8-stubs/stubs/Zend/Countable.stub}קh}ҿ;vendor/phpstan/php-8-stubs/stubs/Zend/interface_exists.stubUקhUy0vendor/phpstan/php-8-stubs/stubs/Zend/Fiber.stub קh m6vendor/phpstan/php-8-stubs/stubs/Zend/class_alias.stub[קh[Ĥ6vendor/phpstan/php-8-stubs/stubs/Zend/ArrayAccess.stub5קh5&+3vendor/phpstan/php-8-stubs/stubs/Zend/UnitEnum.stubyקhywGuפ<vendor/phpstan/php-8-stubs/stubs/Zend/IteratorAggregate.stubקh-E4vendor/phpstan/php-8-stubs/stubs/Zend/get_class.stub@קh@Ap8vendor/phpstan/php-8-stubs/stubs/Zend/WeakReference.stubקhqq5vendor/phpstan/php-8-stubs/stubs/Zend/user_error.stubקhקh>0O;vendor/phpstan/php-8-stubs/stubs/Zend/get_called_class.stub/קh/歉<vendor/phpstan/php-8-stubs/stubs/Zend/get_resource_type.stubZקhZ(ˤ+vendor/phpstan/php-8-stubs/Php8StubsMap.phpקh*4ڤ$vendor/phpstan/phpdoc-parser/LICENSE.קh.-5vendor/phpstan/phpdoc-parser/src/Printer/DiffElem.phpקhZ63vendor/phpstan/phpdoc-parser/src/Printer/Differ.phpקhRǀ4vendor/phpstan/phpdoc-parser/src/Printer/Printer.phpjקhji1M9vendor/phpstan/phpdoc-parser/src/Parser/TokenIterator.php#קh#G#|;vendor/phpstan/phpdoc-parser/src/Parser/ParserException.phpg קhg u/g8vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.phpYקhY=ߤ;vendor/phpstan/phpdoc-parser/src/Parser/ConstExprParser.php<'קh<'t6vendor/phpstan/phpdoc-parser/src/Parser/TypeParser.phpקhYդ;vendor/phpstan/phpdoc-parser/src/Parser/StringUnescaper.php> קh> +t92vendor/phpstan/phpdoc-parser/src/Ast/Attribute.php9קh9-vendor/phpstan/phpdoc-parser/src/Ast/Node.phpwקhw?S; 7vendor/phpstan/phpdoc-parser/src/Ast/NodeAttributes.phpקhYXTAvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamTagValueNode.phpקhCvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/InvalidTagValueNode.phpקh>NDvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamOutTagValueNode.php2קh2m[vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamImmediatelyInvokedCallableTagValueNode.phpקh5SCvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/GenericTagValueNode.phpקh&>vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocTextNode.phpקhNMvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/RequireImplementsTagValueNode.phpקh:EˤLvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamClosureThisTagValueNode.php:קh:ęIvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineArgument.phpקhLM*Jvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineArrayItem.phpLקhL0BMvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineTagValueNode.phpקh^Fvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineArray.phpTקhT|mKvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineAnnotation.phpקh(TͤBvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/AssertTagValueNode.phppקhp>䍤Dvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/PropertyTagValueNode.php-קh-Y?ŤBvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/ReturnTagValueNode.phpקhHKvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/MethodTagValueParameterNode.php3קh3뉤Jvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/RequireExtendsTagValueNode.phpקhB'?vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocChildNode.phpקhCvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/SelfOutTagValueNode.phpקh2KAvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/MixinTagValueNode.phpקhaBvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocTagValueNode.phpקh9eBvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/MethodTagValueNode.phpקh4>ˤBvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/ThrowsTagValueNode.phpקh6Jvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/AssertTagPropertyValueNode.phpקhPoUvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamLaterInvokedCallableTagValueNode.phpקhOؼHvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/AssertTagMethodValueNode.phpקhĚd?vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/VarTagValueNode.phpBקhBkN-Fvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/DeprecatedTagValueNode.phpקh2w=vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocTagNode.php(קh(XrCvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/ExtendsTagValueNode.phpקhuE此Dvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/TemplateTagValueNode.php:קh:U@vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/UsesTagValueNode.phpקhEvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/TypeAliasTagValueNode.phpwקhw6&"!Ivendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/TypelessParamTagValueNode.phpקh<Kvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/TypeAliasImportTagValueNode.phpקhpкFvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/ImplementsTagValueNode.phpקh?:vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocNode.php65קh65}nzVvendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/PureUnlessCallableIsImpureTagValueNode.phpקhZt=vendor/phpstan/phpdoc-parser/src/Ast/Type/GenericTypeNode.phpRקhRq`:vendor/phpstan/phpdoc-parser/src/Ast/Type/ThisTypeNode.php(קh(+œ6vendor/phpstan/phpdoc-parser/src/Ast/Type/TypeNode.phpקh]ˤ;vendor/phpstan/phpdoc-parser/src/Ast/Type/UnionTypeNode.php?קh?TMvendor/phpstan/phpdoc-parser/src/Ast/Type/ConditionalTypeForParameterNode.phpAקhA>a<vendor/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeNode.php$קh$̤Bvendor/phpstan/phpdoc-parser/src/Ast/Type/OffsetAccessTypeNode.php_קh_HǤAvendor/phpstan/phpdoc-parser/src/Ast/Type/ObjectShapeItemNode.phpקh=vendor/phpstan/phpdoc-parser/src/Ast/Type/InvalidTypeNode.phpSקhSGvendor/phpstan/phpdoc-parser/src/Ast/Type/CallableTypeParameterNode.phpקh\6Avendor/phpstan/phpdoc-parser/src/Ast/Type/ConditionalTypeNode.phpNקhN@@vendor/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeItemNode.phpקhԯ>vendor/phpstan/phpdoc-parser/src/Ast/Type/NullableTypeNode.phpקhK6ˤ;vendor/phpstan/phpdoc-parser/src/Ast/Type/ArrayTypeNode.phpקhΞ>vendor/phpstan/phpdoc-parser/src/Ast/Type/CallableTypeNode.phpקh/,|Hvendor/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeUnsealedTypeNode.php!קh!;vendor/phpstan/phpdoc-parser/src/Ast/Type/ConstTypeNode.phpקh!.ߤBvendor/phpstan/phpdoc-parser/src/Ast/Type/IntersectionTypeNode.phpFקhF76=vendor/phpstan/phpdoc-parser/src/Ast/Type/ObjectShapeNode.phpMקhMͥR@vendor/phpstan/phpdoc-parser/src/Ast/Type/IdentifierTypeNode.phpקhFAvendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstFetchNode.phpקh[ePvendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/QuoteAwareConstExprStringNode.phpP קhP ]Ivendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprArrayItemNode.phpקh4|ͤDvendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprNullNode.php;קh;g @vendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprNode.phpקh0KEvendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprArrayNode.phpFקhFDNvendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/DoctrineConstExprStringNode.phpuקhu,wѤFvendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprStringNode.phpקhč Gvendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprIntegerNode.phpקhҳEvendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprFalseNode.php=קh=P1w1Evendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprFloatNode.phpקh Dvendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprTrueNode.php;קh;ĉECvendor/phpstan/phpdoc-parser/src/Ast/NodeVisitor/CloningVisitor.phpקhd4vendor/phpstan/phpdoc-parser/src/Ast/NodeVisitor.php קh o<vendor/phpstan/phpdoc-parser/src/Ast/AbstractNodeVisitor.phpקh/6vendor/phpstan/phpdoc-parser/src/Ast/NodeTraverser.php*קh*B,0vendor/phpstan/phpdoc-parser/src/Lexer/Lexer.phpקh gvendor/composer/LICENSE.קh. vendor/composer/semver/LICENSEקhBh(vendor/composer/semver/src/Intervals.phpNקhNМ%vendor/composer/semver/src/Semver.phpT קhT c8t)vendor/composer/semver/src/Comparator.phpb קhb u6,vendor/composer/semver/src/VersionParser.phpTקhToF4/vendor/composer/semver/src/Constraint/Bound.phpE קhE k#=vendor/composer/semver/src/Constraint/ConstraintInterface.phpקh%z9vendor/composer/semver/src/Constraint/MultiConstraint.php@#קh@#5W<vendor/composer/semver/src/Constraint/MatchAllConstraint.phpקh\=vendor/composer/semver/src/Constraint/MatchNoneConstraint.phpקh(c4vendor/composer/semver/src/Constraint/Constraint.php0קh0~s/vendor/composer/semver/src/CompilingMatcher.php) קh) 'vendor/composer/semver/src/Interval.phpקh 'vendor/composer/autoload_namespaces.phpקh/t"vendor/composer/autoload_files.phpwקhw )!vendor/composer/autoload_psr4.phpקh#w#vendor/composer/autoload_static.phpMקhM{\1%vendor/composer/InstalledVersions.phpCקhCvendor/symfony/string/LICENSE,קh,զ_Ϥ6vendor/symfony/string/Inflector/InflectorInterface.phpVקhVe O4vendor/symfony/string/Inflector/EnglishInflector.phpBקhB~33vendor/symfony/string/Inflector/FrenchInflector.php$קh$q $vendor/symfony/string/ByteString.php<קh<P)vendor/symfony/string/CodePointString.phpקhUR 6vendor/symfony/string/Exception/ExceptionInterface.phpcקhc 4vendor/symfony/string/Exception/RuntimeException.phpקh<vendor/symfony/string/Exception/InvalidArgumentException.phpקhZF'vendor/symfony/string/UnicodeString.php2קh2R/vendor/symfony/string/AbstractUnicodeString.phpaiקhai{$vendor/symfony/string/LazyString.phprקhrn$2vendor/symfony/string/Slugger/SluggerInterface.phpקhx*.vendor/symfony/string/Slugger/AsciiSlugger.php3קh3 a-vendor/symfony/string/Resources/functions.phppקhp g<vendor/symfony/string/Resources/data/wcswidth_table_zero.phpקh[N<vendor/symfony/string/Resources/data/wcswidth_table_wide.phpקhDƤ(vendor/symfony/string/AbstractString.phpOקhO|Ť%vendor/symfony/process/PhpProcess.php קh )7vendor/symfony/process/LICENSE,קh,U'vendor/symfony/process/ProcessUtils.php\קh\sr糤&vendor/symfony/process/InputStream.php קh $Ww"vendor/symfony/process/Process.phpקh .vendor/symfony/process/PhpExecutableFinder.phpa קha `+vendor/symfony/process/ExecutableFinder.php קh %P7vendor/symfony/process/Exception/ExceptionInterface.phpקhS#%5vendor/symfony/process/Exception/RuntimeException.phpקhv;vendor/symfony/process/Exception/ProcessFailedException.phpIקhId=vendor/symfony/process/Exception/ProcessTimedOutException.php|קh|I3vendor/symfony/process/Exception/LogicException.phpקhS=vendor/symfony/process/Exception/ProcessSignaledException.phpקh>p=vendor/symfony/process/Exception/InvalidArgumentException.phpקh XĮ.vendor/symfony/process/Pipes/AbstractPipes.phpקheuӤ*vendor/symfony/process/Pipes/UnixPipes.phpקh"Mɤ/vendor/symfony/process/Pipes/PipesInterface.phpקh-vendor/symfony/process/Pipes/WindowsPipes.phpoקhoK%vendor/symfony/polyfill-php73/LICENSE,קh,+vendor/symfony/polyfill-php73/bootstrap.phpקh|'vendor/symfony/polyfill-php73/Php73.phpbקhbJ<?vendor/symfony/polyfill-php73/Resources/stubs/JsonException.phpEקhE8S-vendor/symfony/polyfill-intl-grapheme/LICENSE,קh,H3vendor/symfony/polyfill-intl-grapheme/bootstrap.phpקh2vendor/symfony/polyfill-intl-grapheme/Grapheme.php8&קh8&I5vendor/symfony/polyfill-intl-grapheme/bootstrap80.phpg קhg E{%vendor/symfony/polyfill-php81/LICENSE,קh,0+vendor/symfony/polyfill-php81/bootstrap.phpקh<P'vendor/symfony/polyfill-php81/Php81.phpקh$Fvendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.phpקh5+@vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.phpקhJT(vendor/symfony/service-contracts/LICENSE,קh,3vendor/symfony/service-contracts/ResetInterface.phpקhNj@vendor/symfony/service-contracts/Attribute/SubscribedService.php:קh:@7vendor/symfony/service-contracts/Attribute/Required.phpקh%;vendor/symfony/service-contracts/ServiceSubscriberTrait.phpקh8vendor/symfony/service-contracts/ServiceLocatorTrait.php קh eku=vendor/symfony/service-contracts/ServiceProviderInterface.phpקhG?vendor/symfony/service-contracts/ServiceSubscriberInterface.phpקhwg%vendor/symfony/polyfill-php80/LICENSE,קh, K+vendor/symfony/polyfill-php80/bootstrap.phpקh.Ĥ'vendor/symfony/polyfill-php80/Php80.php קh cH*vendor/symfony/polyfill-php80/PhpToken.phpקh]f;vendor/symfony/polyfill-php80/Resources/stubs/Attribute.phpקhMK<Evendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.phpGקhGֈ+:vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.phpwקhw=7T8<vendor/symfony/polyfill-php80/Resources/stubs/Stringable.phpקht]\ڤ<vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php>קh>g0vendor/symfony/console/Helper/QuestionHelper.phpLקhL0뽤+vendor/symfony/console/Helper/TableCell.phpקhB96vendor/symfony/console/Helper/DebugFormatterHelper.php\ קh\ E-vendor/symfony/console/Helper/ProgressBar.phpOHקhOHfE0vendor/symfony/console/Helper/TableSeparator.php%קh%w;W+vendor/symfony/console/Helper/TableRows.phpVקhVͣ7vendor/symfony/console/Helper/SymfonyQuestionHelper.phpG קhG )1vendor/symfony/console/Helper/HelperInterface.php^קh^CTޤ2vendor/symfony/console/Helper/DescriptorHelper.php קh [,vendor/symfony/console/Helper/TableStyle.php0קh0TV1vendor/symfony/console/Helper/FormatterHelper.php קh G>|2vendor/symfony/console/Helper/InputAwareHelper.php!קh!LݛG+vendor/symfony/console/Helper/HelperSet.phpE קhE +C'vendor/symfony/console/Helper/Table.phpsקhs?0vendor/symfony/console/Helper/TableCellStyle.phpdקhd3Q3vendor/symfony/console/Helper/ProgressIndicator.phpקh /vendor/symfony/console/Helper/ProcessHelper.phpקh'^l(vendor/symfony/console/Helper/Helper.phpקhie6(vendor/symfony/console/Helper/Dumper.phpXקhX{f(vendor/symfony/console/ConsoleEvents.phpקhʽvendor/symfony/console/LICENSE,קh,U=vendor/symfony/console/CommandLoader/FactoryCommandLoader.phpeקheWh?vendor/symfony/console/CommandLoader/CommandLoaderInterface.phpקhIФ?vendor/symfony/console/CommandLoader/ContainerCommandLoader.phpקh,vendor/symfony/console/Input/StringInput.php קh o<*vendor/symfony/console/Input/ArgvInput.php0קh0Z.vendor/symfony/console/Input/InputArgument.php קh e%&vendor/symfony/console/Input/Input.php=קh=:0vendor/symfony/console/Input/InputDefinition.phpT.קhT.~54vendor/symfony/console/Input/InputAwareInterface.phpLקhL/vendor/symfony/console/Input/InputInterface.phpקhm;,vendor/symfony/console/Input/InputOption.php`קh`"k9vendor/symfony/console/Input/StreamableInputInterface.phpzקhzd+vendor/symfony/console/Input/ArrayInput.phpקh.7Fvendor/symfony/console/Formatter/WrappableOutputFormatterInterface.phpקh =vendor/symfony/console/Formatter/OutputFormatterInterface.phpDקhD 5`Bvendor/symfony/console/Formatter/OutputFormatterStyleInterface.phpiקhi49vendor/symfony/console/Formatter/OutputFormatterStyle.php קh Ig8vendor/symfony/console/Formatter/NullOutputFormatter.phpoקhon^|>vendor/symfony/console/Formatter/OutputFormatterStyleStack.php+ קh+ `4vendor/symfony/console/Formatter/OutputFormatter.php קh -Z=vendor/symfony/console/Formatter/NullOutputFormatterStyle.phpקh$r3vendor/symfony/console/SingleCommandApplication.php9קh9]6&vendor/symfony/console/Application.phpקh:c.vendor/symfony/console/Attribute/AsCommand.phpNקhNs,6ʤ2vendor/symfony/console/Command/CompleteCommand.php קh R.vendor/symfony/console/Command/LazyCommand.phpFקhF~8.vendor/symfony/console/Command/ListCommand.php קh 8vendor/symfony/console/Command/DumpCompletionCommand.phpקhy=vendor/symfony/console/Command/SignalableCommandInterface.phpקh목*vendor/symfony/console/Command/Command.phpPקhP&w.vendor/symfony/console/Command/HelpCommand.php קh 2q0vendor/symfony/console/Command/LockableTrait.php$קh$t[/vendor/symfony/console/Logger/ConsoleLogger.phpקhxz8vendor/symfony/console/SignalRegistry/SignalRegistry.phpDקhDj#2vendor/symfony/console/CI/GithubActionReporter.php# קh# a{5vendor/symfony/console/Completion/CompletionInput.php[ קh[ q;vendor/symfony/console/Completion/CompletionSuggestions.phpnקhnDǤAvendor/symfony/console/Completion/Output/BashCompletionOutput.phpקh8[ФFvendor/symfony/console/Completion/Output/CompletionOutputInterface.phpקhŠ0vendor/symfony/console/Completion/Suggestion.phpקh!vendor/symfony/console/Cursor.php?קh?nU6vendor/symfony/console/Event/ConsoleTerminateEvent.phpjקhj䤱٤3vendor/symfony/console/Event/ConsoleSignalEvent.phpקh04vendor/symfony/console/Event/ConsoleCommandEvent.php=קh=B-vendor/symfony/console/Event/ConsoleEvent.phpקh#2vendor/symfony/console/Event/ConsoleErrorEvent.php"קh"礤6vendor/symfony/console/EventListener/ErrorListener.php^ קh^ Te-vendor/symfony/console/Style/SymfonyStyle.php9קh9Eq@,vendor/symfony/console/Style/OutputStyle.phpL קhL mַ/vendor/symfony/console/Style/StyleInterface.phpR קhR T0vendor/symfony/console/Output/BufferedOutput.phpcקhc%ʤ1vendor/symfony/console/Output/OutputInterface.phpt קht ,vendor/symfony/console/Output/NullOutput.php8 קh8 ΘǤ.vendor/symfony/console/Output/StreamOutput.phpקh63/vendor/symfony/console/Output/ConsoleOutput.php)קh)<(vendor/symfony/console/Output/Output.phpgקhgDI6vendor/symfony/console/Output/ConsoleSectionOutput.phpקhhH8vendor/symfony/console/Output/ConsoleOutputInterface.php1קh1gp]5vendor/symfony/console/Output/TrimmedBufferOutput.phpoקhoK58vendor/symfony/console/Descriptor/MarkdownDescriptor.phpkקhk4vendor/symfony/console/Descriptor/TextDescriptor.php2קh2IDG9vendor/symfony/console/Descriptor/DescriptorInterface.phpQקhQސ,0vendor/symfony/console/Descriptor/Descriptor.php קh ֶ^<vendor/symfony/console/Descriptor/ApplicationDescription.php%קh%2kf3vendor/symfony/console/Descriptor/XmlDescriptor.php.'קh.'Ҥ4vendor/symfony/console/Descriptor/JsonDescriptor.phpקhԤDvendor/symfony/console/DependencyInjection/AddConsoleCommandPass.phpקhI=vendor/symfony/console/Exception/CommandNotFoundException.phpקhEe^7vendor/symfony/console/Exception/ExceptionInterface.phpקh0>5vendor/symfony/console/Exception/RuntimeException.phpקhb:vendor/symfony/console/Exception/MissingInputException.phpקhiQ?vendor/symfony/console/Exception/NamespaceNotFoundException.phpקhV33vendor/symfony/console/Exception/LogicException.phpקh;vendor/symfony/console/Exception/InvalidOptionException.phpקh6Z=vendor/symfony/console/Exception/InvalidArgumentException.phpקhmp2vendor/symfony/console/Question/ChoiceQuestion.phpקh,8vendor/symfony/console/Question/ConfirmationQuestion.php)קh)E ,vendor/symfony/console/Question/Question.php~קh~-Τ#vendor/symfony/console/Terminal.phpmקhm񉢤9vendor/symfony/console/Tester/CommandCompletionTester.phpLקhLgI@vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.phpקh3vendor/symfony/console/Tester/ApplicationTester.php קh k-vendor/symfony/console/Tester/TesterTrait.phpקh]/vendor/symfony/console/Tester/CommandTester.phpJ קhJ p~ vendor/symfony/console/Color.phpZקhZE0vendor/symfony/console/Resources/completion.bash קh z(4vendor/symfony/console/Resources/bin/hiddeninput.exe$קh$v#vendor/symfony/finder/Gitignore.php% קh% vendor/symfony/finder/LICENSE,קh,U%vendor/symfony/finder/SplFileInfo.php,קh, vendor/symfony/finder/Finder.phpXקhXb`T9vendor/symfony/finder/Exception/AccessDeniedException.phpקh<>vendor/symfony/finder/Exception/DirectoryNotFoundException.phpקhM?vendor/symfony/finder/Glob.phpJקhJd*ֹ3vendor/symfony/finder/Comparator/DateComparator.phpקhs/vendor/symfony/finder/Comparator/Comparator.php קh 25vendor/symfony/finder/Comparator/NumberComparator.php קh M)/vendor/symfony/finder/Iterator/LazyIterator.phpקhy:vendor/symfony/finder/Iterator/DateRangeFilterIterator.phpקh 7<vendor/symfony/finder/Iterator/FilecontentFilterIterator.phpקh3vendor/symfony/finder/Iterator/SortableIterator.phpjקhjAɲ:vendor/symfony/finder/Iterator/SizeRangeFilterIterator.phpקhQ5vendor/symfony/finder/Iterator/PathFilterIterator.phpקhh79vendor/symfony/finder/Iterator/FilenameFilterIterator.phpקh> @;vendor/symfony/finder/Iterator/DepthRangeFilterIterator.phpקhV=vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.phpקhD7vendor/symfony/finder/Iterator/CustomFilterIterator.php3קh3:Avendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php קh hfӤ;vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.phpקhʳ}9vendor/symfony/finder/Iterator/FileTypeFilterIterator.phpקh]+`=vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php קh |zK@vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.phpfקhfP@vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php_קh_dBvendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.phpa קha |ⳤ%vendor/symfony/polyfill-php74/LICENSE,קh,զ_Ϥ'vendor/symfony/polyfill-php74/Php74.php קh AV܀+vendor/symfony/polyfill-php74/bootstrap.php%קh% %vendor/symfony/polyfill-ctype/LICENSE,קh,+vendor/symfony/polyfill-ctype/bootstrap.php,קh,Ǥ'vendor/symfony/polyfill-ctype/Ctype.phpקh-vendor/symfony/polyfill-ctype/bootstrap80.phphקhhk@vendor/jetbrains/phpstorm-stubs/opentelemetry/opentelemetry.stubPקhP.vendor/jetbrains/phpstorm-stubs/amqp/amqp.stub3קh3{6vendor/jetbrains/phpstorm-stubs/libevent/libevent.stub"Yקh"Y02vendor/jetbrains/phpstorm-stubs/cubrid/cubrid.stubtקht ~,vendor/jetbrains/phpstorm-stubs/xml/xml.stubZקhZ]!6vendor/jetbrains/phpstorm-stubs/calendar/calendar.stub&קh&fxݤ4vendor/jetbrains/phpstorm-stubs/gearman/gearman.stubקhଉ4vendor/jetbrains/phpstorm-stubs/decimal/decimal.stub<<קh<<zy2vendor/jetbrains/phpstorm-stubs/SQLite/SQLite.stublקhl L.vendor/jetbrains/phpstorm-stubs/snmp/snmp.stubקh0vendor/jetbrains/phpstorm-stubs/oauth/oauth.stubb קhb bp.vendor/jetbrains/phpstorm-stubs/zstd/zstd.stubקhLV@vendor/jetbrains/phpstorm-stubs/mysql_xdevapi/mysql_xdevapi.stubקh^6vendor/jetbrains/phpstorm-stubs/simdjson/simdjson.stub/קh/P^+vendor/jetbrains/phpstorm-stubs/runTests.sh`קh`Rz10vendor/jetbrains/phpstorm-stubs/uuid/uuid_c.stub קh }j.vendor/jetbrains/phpstorm-stubs/fann/fann.stubhקhha*2vendor/jetbrains/phpstorm-stubs/xcache/xcache.stubקh^)+vendor/jetbrains/phpstorm-stubs/PATCHES.txtEקhEZΤ'vendor/jetbrains/phpstorm-stubs/LICENSEW,קhW,M̤.vendor/jetbrains/phpstorm-stubs/imap/imap.stub;קh;Е4vendor/jetbrains/phpstorm-stubs/imap/Connection.stubHקhHF?4vendor/jetbrains/phpstorm-stubs/inotify/inotify.stubNקhNn3vendor/jetbrains/phpstorm-stubs/ftp/Connection.stubGקhG!,vendor/jetbrains/phpstorm-stubs/ftp/ftp.stubiקhiy("0vendor/jetbrains/phpstorm-stubs/gnupg/gnupg.stubZIקhZI 30vendor/jetbrains/phpstorm-stubs/mysql/mysql.stub|קh|0{2vendor/jetbrains/phpstorm-stubs/libxml/libxml.stub$קh$V98vendor/jetbrains/phpstorm-stubs/ZendUtils/ZendUtils.stub8קh8܌,vendor/jetbrains/phpstorm-stubs/ast/ast.stub [קh [nΤ4vendor/jetbrains/phpstorm-stubs/leveldb/LevelDB.stubקh;2vendor/jetbrains/phpstorm-stubs/pgsql/pgsql_c.stubקh޲0vendor/jetbrains/phpstorm-stubs/pgsql/pgsql.stubsקhs Tj.vendor/jetbrains/phpstorm-stubs/grpc/grpc.stubYקhYXK٤4vendor/jetbrains/phpstorm-stubs/openssl/openssl.stubקhФ.vendor/jetbrains/phpstorm-stubs/soap/soap.stubGקhGZ0vendor/jetbrains/phpstorm-stubs/soap/soap_n.stubקhu1vendor/jetbrains/phpstorm-stubs/svm/SVMModel.stubקh p,vendor/jetbrains/phpstorm-stubs/svm/SVM.stubקhg2vendor/jetbrains/phpstorm-stubs/relay/Cluster.stub?קh?_p4vendor/jetbrains/phpstorm-stubs/relay/Exception.stubcקhcr!0vendor/jetbrains/phpstorm-stubs/relay/Table.stubrקhrGͤ0vendor/jetbrains/phpstorm-stubs/relay/Relay.stub;קh;1vendor/jetbrains/phpstorm-stubs/relay/Events.stubקh)3vendor/jetbrains/phpstorm-stubs/relay/Sentinel.stubקh&vY0vendor/jetbrains/phpstorm-stubs/relay/Event.stubקh,7A2vendor/jetbrains/phpstorm-stubs/relay/KeyType.stubקhۼ,vendor/jetbrains/phpstorm-stubs/svn/svn.stublקhl R2vendor/jetbrains/phpstorm-stubs/mysqli/mysqli.stub2קh2?8vendor/jetbrains/phpstorm-stubs/xmlreader/xmlreader.stubsDקhsD+{ˤ,vendor/jetbrains/phpstorm-stubs/FFI/FFI.stubMקhMt4vendor/jetbrains/phpstorm-stubs/imagick/imagick.stubmקhm~:vendor/jetbrains/phpstorm-stubs/frankenphp/frankenphp.stubקhx;vendor/jetbrains/phpstorm-stubs/mongodb/ReadPreference.stubDקhDϣ@vendor/jetbrains/phpstorm-stubs/mongodb/TopologyDescription.stubקh,3vendor/jetbrains/phpstorm-stubs/mongodb/Server.stub'קh';dCvendor/jetbrains/phpstorm-stubs/mongodb/BSON/ObjectIdInterface.stubקhC_:vendor/jetbrains/phpstorm-stubs/mongodb/BSON/ObjectId.stubקhtl?Dvendor/jetbrains/phpstorm-stubs/mongodb/BSON/TimestampInterface.stubקhE p:vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Document.stubקhhbT@vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Unserializable.stubקh"t_7vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Int64.stubOקhO$6vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Type.stubקh'J-Avendor/jetbrains/phpstorm-stubs/mongodb/BSON/MaxKeyInterface.stubקh#<vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Decimal128.stubקhWϤEvendor/jetbrains/phpstorm-stubs/mongodb/BSON/JavascriptInterface.stubקh]O؇Fvendor/jetbrains/phpstorm-stubs/mongodb/BSON/UTCDateTimeInterface.stub+קh+2,8vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Binary.stub קh ?Avendor/jetbrains/phpstorm-stubs/mongodb/BSON/BinaryInterface.stubקh0>F>vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Serializable.stubקh@}8vendor/jetbrains/phpstorm-stubs/mongodb/BSON/MaxKey.stubקhW:vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Iterator.stubקh ;vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Undefined.stubOקhOU=vendor/jetbrains/phpstorm-stubs/mongodb/BSON/UTCDateTime.stubN קhN dEvendor/jetbrains/phpstorm-stubs/mongodb/BSON/Decimal128Interface.stub8קh8L=pAvendor/jetbrains/phpstorm-stubs/mongodb/BSON/MinKeyInterface.stubקhGu;vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Timestamp.stubq קhq gH7vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Regex.stubVקhVuk8vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Symbol.stub/קh/R;vendor/jetbrains/phpstorm-stubs/mongodb/BSON/functions.stub^ קh^ 9=vendor/jetbrains/phpstorm-stubs/mongodb/BSON/PackedArray.stubקhפ<vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Javascript.stubקh#<Ѥ8vendor/jetbrains/phpstorm-stubs/mongodb/BSON/MinKey.stubקh @vendor/jetbrains/phpstorm-stubs/mongodb/BSON/RegexInterface.stubeקhem;vendor/jetbrains/phpstorm-stubs/mongodb/BSON/DBPointer.stubקh7=vendor/jetbrains/phpstorm-stubs/mongodb/BSON/Persistable.stubקh!t4vendor/jetbrains/phpstorm-stubs/mongodb/Command.stubקh޾d6vendor/jetbrains/phpstorm-stubs/mongodb/BulkWrite.stub קh #Z>vendor/jetbrains/phpstorm-stubs/mongodb/ServerDescription.stubקh.8vendor/jetbrains/phpstorm-stubs/mongodb/ReadConcern.stub קh w5vendor/jetbrains/phpstorm-stubs/mongodb/CursorId.stubwקhw:?7vendor/jetbrains/phpstorm-stubs/mongodb/WriteError.stub`קh`__K4vendor/jetbrains/phpstorm-stubs/mongodb/Manager.stub*קh*dk2vendor/jetbrains/phpstorm-stubs/mongodb/Query.stubקhԶǤ4vendor/jetbrains/phpstorm-stubs/mongodb/mongodb.stubFקhF.Fvendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/SDAMSubscriber.stub קh ƐKvendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/TopologyClosedEvent.stubקh89Jvendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/CommandFailedEvent.stubקhc됒Kvendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/CommandStartedEvent.stubקhTLvendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/TopologyChangedEvent.stubקhe4Svendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/ServerHeartbeatStartedEvent.stubxקhxxJvendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/ServerOpeningEvent.stubvקhv62Uvendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/ServerHeartbeatSucceededEvent.stubUקhU2y{Evendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/LogSubscriber.stubקhn̅Ivendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/CommandSubscriber.stubקh;OJvendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/ServerChangedEvent.stubקhpBvendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/Subscriber.stubקhIvendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/ServerClosedEvent.stubrקhr:SRvendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/ServerHeartbeatFailedEvent.stub]קh]5Avendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/functions.stubuקhuƽgMvendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/CommandSucceededEvent.stubקhuLvendor/jetbrains/phpstorm-stubs/mongodb/Monitoring/TopologyOpeningEvent.stubקhYWu=vendor/jetbrains/phpstorm-stubs/mongodb/ClientEncryption.stubfקhf8DZ99vendor/jetbrains/phpstorm-stubs/mongodb/WriteConcern.stubE קhE S8vendor/jetbrains/phpstorm-stubs/mongodb/WriteResult.stubd קhd ݚ<vendor/jetbrains/phpstorm-stubs/mongodb/CursorInterface.stubקh 3vendor/jetbrains/phpstorm-stubs/mongodb/Cursor.stubקhH4vendor/jetbrains/phpstorm-stubs/mongodb/Session.stubTקhTڸ7Mvendor/jetbrains/phpstorm-stubs/mongodb/Exception/SSLConnectionException.stub2קh2Gvendor/jetbrains/phpstorm-stubs/mongodb/Exception/RuntimeException.stubFקhFEOvendor/jetbrains/phpstorm-stubs/mongodb/Exception/InvalidArgumentException.stubSקhS5k:@vendor/jetbrains/phpstorm-stubs/mongodb/Exception/Exception.stub:קh:MGvendor/jetbrains/phpstorm-stubs/mongodb/Exception/CommandException.stub קh K*Jvendor/jetbrains/phpstorm-stubs/mongodb/Exception/EncryptionException.stub,קh, 5Nvendor/jetbrains/phpstorm-stubs/mongodb/Exception/AuthenticationException.stub5קh5KIvendor/jetbrains/phpstorm-stubs/mongodb/Exception/BulkWriteException.stubקhPvendor/jetbrains/phpstorm-stubs/mongodb/Exception/ExecutionTimeoutException.stubHקhHALvendor/jetbrains/phpstorm-stubs/mongodb/Exception/WriteConcernException.stubyקhyJvendor/jetbrains/phpstorm-stubs/mongodb/Exception/ConnectionException.stubGקhGAlEvendor/jetbrains/phpstorm-stubs/mongodb/Exception/LogicException.stubקhZŤQvendor/jetbrains/phpstorm-stubs/mongodb/Exception/ConnectionTimeoutException.stubdקhd -;Evendor/jetbrains/phpstorm-stubs/mongodb/Exception/WriteException.stubקhGgOvendor/jetbrains/phpstorm-stubs/mongodb/Exception/UnexpectedValueException.stubjקhjMmFvendor/jetbrains/phpstorm-stubs/mongodb/Exception/ServerException.stubקh`6vendor/jetbrains/phpstorm-stubs/mongodb/ServerApi.stubקh֤>vendor/jetbrains/phpstorm-stubs/mongodb/WriteConcernError.stubקhVZ4vendor/jetbrains/phpstorm-stubs/sockets/sockets.stub=קh=`p.vendor/jetbrains/phpstorm-stubs/pcov/pcov.stubקh\X?vendor/jetbrains/phpstorm-stubs/meta/attributes/ArrayShape.stubVקhVO7Cvendor/jetbrains/phpstorm-stubs/meta/attributes/ExpectedValues.stubקhђ~>vendor/jetbrains/phpstorm-stubs/meta/attributes/Immutable.stubקha'=vendor/jetbrains/phpstorm-stubs/meta/attributes/NoReturn.stubקh4@vendor/jetbrains/phpstorm-stubs/meta/attributes/ObjectShape.stubקhk p?vendor/jetbrains/phpstorm-stubs/meta/attributes/Deprecated.stubקhk^9vendor/jetbrains/phpstorm-stubs/meta/attributes/Pure.stubקh;ŚKvendor/jetbrains/phpstorm-stubs/meta/attributes/internal/TentativeType.stubקh()Tvendor/jetbrains/phpstorm-stubs/meta/attributes/internal/LanguageLevelTypeAware.stuboקho%[vendor/jetbrains/phpstorm-stubs/meta/attributes/internal/PhpStormStubsElementAvailable.stubקhe3Pvendor/jetbrains/phpstorm-stubs/meta/attributes/internal/ReturnTypeContract.stubhקhh< x=vendor/jetbrains/phpstorm-stubs/meta/attributes/Language.stubקhMJ8vendor/jetbrains/phpstorm-stubs/xlswriter/xlswriter.stub'>קh'>@4vendor/jetbrains/phpstorm-stubs/ncurses/ncurses.stubקh*֩:vendor/jetbrains/phpstorm-stubs/com_dotnet/com_dotnet.stubf/קhf/b4vendor/jetbrains/phpstorm-stubs/msgpack/msgpack.stubXקhX2d\0vendor/jetbrains/phpstorm-stubs/event/event.stubקhzI.vendor/jetbrains/phpstorm-stubs/exif/exif.stubקh 0 Ѥ.vendor/jetbrains/phpstorm-stubs/uopz/uopz.stub&קh&-#2vendor/jetbrains/phpstorm-stubs/sqlsrv/sqlsrv.stub~קh~i8vendor/jetbrains/phpstorm-stubs/ZendCache/ZendCache.stub קh ab*vendor/jetbrains/phpstorm-stubs/ds/ds.stubקhRE6vendor/jetbrains/phpstorm-stubs/parallel/parallel.stubקhzNvendor/jetbrains/phpstorm-stubs/parallel/parallel/Sync/Error/IllegalValue.stubeקhe> wAvendor/jetbrains/phpstorm-stubs/parallel/parallel/Sync/Error.stubHקhHbQvendor/jetbrains/phpstorm-stubs/parallel/parallel/Channel/Error/IllegalValue.stubkקhkKvendor/jetbrains/phpstorm-stubs/parallel/parallel/Channel/Error/Closed.stubeקhez Nvendor/jetbrains/phpstorm-stubs/parallel/parallel/Channel/Error/Existence.stubhקhhyäDvendor/jetbrains/phpstorm-stubs/parallel/parallel/Channel/Error.stubKקhK%>vendor/jetbrains/phpstorm-stubs/parallel/parallel/Runtime.stubקh0ˤKvendor/jetbrains/phpstorm-stubs/parallel/parallel/Events/Error/Timeout.stubdקhdJ6Mvendor/jetbrains/phpstorm-stubs/parallel/parallel/Events/Error/Existence.stubfקhfRbVvendor/jetbrains/phpstorm-stubs/parallel/parallel/Events/Input/Error/IllegalValue.stubuקhuiSvendor/jetbrains/phpstorm-stubs/parallel/parallel/Events/Input/Error/Existence.stubrקhr7oIvendor/jetbrains/phpstorm-stubs/parallel/parallel/Events/Input/Error.stubPקhP?Cvendor/jetbrains/phpstorm-stubs/parallel/parallel/Events/Input.stub0קh0>Hvendor/jetbrains/phpstorm-stubs/parallel/parallel/Events/Event/Type.stub.קh.ϞZ>Ivendor/jetbrains/phpstorm-stubs/parallel/parallel/Events/Event/Error.stubPקhPRCvendor/jetbrains/phpstorm-stubs/parallel/parallel/Events/Error.stubJקhJžCvendor/jetbrains/phpstorm-stubs/parallel/parallel/Events/Event.stubקh̀8Wvendor/jetbrains/phpstorm-stubs/parallel/parallel/Runtime/Error/IllegalInstruction.stubqקhqZGKvendor/jetbrains/phpstorm-stubs/parallel/parallel/Runtime/Error/Closed.stubeקheppNvendor/jetbrains/phpstorm-stubs/parallel/parallel/Runtime/Error/Bootstrap.stubhקhhUקh>^=vendor/jetbrains/phpstorm-stubs/parallel/parallel/Events.stub קh ܤ<vendor/jetbrains/phpstorm-stubs/parallel/parallel/Error.stub:קh:{=vendor/jetbrains/phpstorm-stubs/parallel/parallel/Future.stub`קh`.?DäMvendor/jetbrains/phpstorm-stubs/parallel/parallel/Future/Error/Cancelled.stub_קh_Kvendor/jetbrains/phpstorm-stubs/parallel/parallel/Future/Error/Foreign.stub]קh]}Jvendor/jetbrains/phpstorm-stubs/parallel/parallel/Future/Error/Killed.stub\קh\< Cvendor/jetbrains/phpstorm-stubs/parallel/parallel/Future/Error.stubJקhJb;vendor/jetbrains/phpstorm-stubs/parallel/parallel/Sync.stubקh4R>vendor/jetbrains/phpstorm-stubs/parallel/parallel/Channel.stub(קh(&6vendor/jetbrains/phpstorm-stubs/readline/readline.stubCקhCc0vendor/jetbrains/phpstorm-stubs/Core/Core_c.stubԋקhԋ60vendor/jetbrains/phpstorm-stubs/Core/Core_d.stub $קh $Zy.vendor/jetbrains/phpstorm-stubs/Core/Core.stub_קh_RBvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionProperty.stuba.קha. -Jvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionFunctionAbstract.stubh(קhh(#Gvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionZendExtension.stub קh b{`Cvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionUnionType.stub קh ˜Cvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionException.stubקh#5Fvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionEnumUnitCase.stubקhE;Bvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionConstant.stubקh|Jvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionIntersectionType.stubקh6c89vendor/jetbrains/phpstorm-stubs/Reflection/Reflector.stubקhTCvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionAttribute.stubקhזGvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionClassConstant.stub4קh4|Cvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionGenerator.stubL קhL +K?vendor/jetbrains/phpstorm-stubs/Reflection/ReflectionFiber.stubקh*a>vendor/jetbrains/phpstorm-stubs/Reflection/ReflectionEnum.stubקhNCvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionReference.stubקh؆5Cvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionParameter.stub'קh'EO>vendor/jetbrains/phpstorm-stubs/Reflection/ReflectionType.stubקhRHvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionEnumBackedCase.stubPקhPg@vendor/jetbrains/phpstorm-stubs/Reflection/ReflectionObject.stubקh0:vendor/jetbrains/phpstorm-stubs/Reflection/Reflection.stubקhCCvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionNamedType.stubpקhp'@vendor/jetbrains/phpstorm-stubs/Reflection/ReflectionMethod.stubU*קhU*Bvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionFunction.stubקhb@vendor/jetbrains/phpstorm-stubs/Reflection/PropertyHookType.stub3קh3FCvendor/jetbrains/phpstorm-stubs/Reflection/ReflectionExtension.stub2קh2~?vendor/jetbrains/phpstorm-stubs/Reflection/ReflectionClass.stub\קh\ۆ$.vendor/jetbrains/phpstorm-stubs/v8js/v8js.stubקhU92vendor/jetbrains/phpstorm-stubs/intl/IntlChar.stubL/קhL/]t.vendor/jetbrains/phpstorm-stubs/intl/intl.stub.}קh.}PBvendor/jetbrains/phpstorm-stubs/intl/IntlDatePatternGenerator.stubקh$J2vendor/jetbrains/phpstorm-stubs/bcmath/bcmath.stub#קh#b@vendor/jetbrains/phpstorm-stubs/mosquitto-php/mosquitto-php.stubq5קhq5H^*vendor/jetbrains/phpstorm-stubs/pq/pq.stub+קh+2vendor/jetbrains/phpstorm-stubs/crypto/crypto.stub1?קh1?ګפ6vendor/jetbrains/phpstorm-stubs/fileinfo/fileinfo.stubr!קhr!WY12vendor/jetbrains/phpstorm-stubs/xdebug/xdebug.stub3קh3^Ȥ2vendor/jetbrains/phpstorm-stubs/expect/expect.stub קh I.Ȥ,vendor/jetbrains/phpstorm-stubs/rar/rar.stub_קh_EQ`,vendor/jetbrains/phpstorm-stubs/rrd/rrd.stub0קh0Τ4vendor/jetbrains/phpstorm-stubs/sysvshm/sysvshm.stub>קh> 4vendor/jetbrains/phpstorm-stubs/suhosin/suhosin.stubקhQ2vendor/jetbrains/phpstorm-stubs/random/random.stubקh^5:vendor/jetbrains/phpstorm-stubs/couchbase_v2/toplevel.stubWקhWa->;vendor/jetbrains/phpstorm-stubs/couchbase_v2/couchbase.stubקhdz 6vendor/jetbrains/phpstorm-stubs/newrelic/newrelic.stubקhϤ.vendor/jetbrains/phpstorm-stubs/hash/hash.stubEקhE̠8vendor/jetbrains/phpstorm-stubs/zookeeper/zookeeper.stub")קh") ޛ0vendor/jetbrains/phpstorm-stubs/xxtea/xxtea.stubקh$nڤ4vendor/jetbrains/phpstorm-stubs/meminfo/meminfo.stubקhrbɤ,vendor/jetbrains/phpstorm-stubs/gmp/gmp.stubuקhuO:vendor/jetbrains/phpstorm-stubs/LuaSandbox/LuaSandbox.stubEקhE.vendor/jetbrains/phpstorm-stubs/odbc/odbc.stubyקhyFvendor/jetbrains/phpstorm-stubs/solr/Queries/SolrCollapseFunction.stubקhE Fvendor/jetbrains/phpstorm-stubs/solr/Queries/SolrModifiableParams.stubkקhk%Avendor/jetbrains/phpstorm-stubs/solr/Queries/SolrDisMaxQuery.stub-קh-I!<vendor/jetbrains/phpstorm-stubs/solr/Queries/SolrParams.stubקh(D;vendor/jetbrains/phpstorm-stubs/solr/Queries/SolrQuery.stubs>קhs>Evendor/jetbrains/phpstorm-stubs/solr/Documents/SolrInputDocument.stub&קh&?J Evendor/jetbrains/phpstorm-stubs/solr/Documents/SolrDocumentField.stubקh \@vendor/jetbrains/phpstorm-stubs/solr/Documents/SolrDocument.stub/קh/F&:vendor/jetbrains/phpstorm-stubs/solr/Utils/SolrObject.stub קh t 9vendor/jetbrains/phpstorm-stubs/solr/Utils/SolrUtils.stub קh O4vendor/jetbrains/phpstorm-stubs/solr/SolrClient.stubMקhMC|Gvendor/jetbrains/phpstorm-stubs/solr/Responses/SolrGenericResponse.stub+קh+Evendor/jetbrains/phpstorm-stubs/solr/Responses/SolrQueryResponse.stubקhɤDvendor/jetbrains/phpstorm-stubs/solr/Responses/SolrPingResponse.stubקhޡޤ@vendor/jetbrains/phpstorm-stubs/solr/Responses/SolrResponse.stubקh/I%Fvendor/jetbrains/phpstorm-stubs/solr/Responses/SolrUpdateResponse.stub%קh%>H٤3vendor/jetbrains/phpstorm-stubs/solr/constants.stubDקhD cHvendor/jetbrains/phpstorm-stubs/solr/Exceptions/SolrClientException.stubsקhsGPRvendor/jetbrains/phpstorm-stubs/solr/Exceptions/SolrIllegalOperationException.stubקh-N%Hvendor/jetbrains/phpstorm-stubs/solr/Exceptions/SolrServerException.stubyקhyC$Bvendor/jetbrains/phpstorm-stubs/solr/Exceptions/SolrException.stubקh&Qvendor/jetbrains/phpstorm-stubs/solr/Exceptions/SolrIllegalArgumentException.stubקh)4[vendor/jetbrains/phpstorm-stubs/solr/Exceptions/SolrMissingMandatoryParameterException.stubקhn3vendor/jetbrains/phpstorm-stubs/solr/functions.stubקhAA8vendor/jetbrains/phpstorm-stubs/couchbase/couchbase.stubקhCƤ.vendor/jetbrains/phpstorm-stubs/zend/zend.stubXקhXB 0vendor/jetbrains/phpstorm-stubs/zend/zend_d.stubקh-|j0vendor/jetbrains/phpstorm-stubs/zend/zend_f.stub.קh.6x.vendor/jetbrains/phpstorm-stubs/yaml/yaml.stubhקhh{Ȥ9vendor/jetbrains/phpstorm-stubs/standard/standard_10.stubקh@G>vendor/jetbrains/phpstorm-stubs/standard/_standard_manual.stub)קh)ػD8vendor/jetbrains/phpstorm-stubs/standard/standard_5.stubÄקhÄ 46vendor/jetbrains/phpstorm-stubs/standard/password.stub'קh'Ou8vendor/jetbrains/phpstorm-stubs/standard/standard_6.stubקhbQ>vendor/jetbrains/phpstorm-stubs/standard/standard_defines.stub קh ~۞4vendor/jetbrains/phpstorm-stubs/standard/_types.stubHקhHW8vendor/jetbrains/phpstorm-stubs/standard/standard_7.stubקh.Ť8vendor/jetbrains/phpstorm-stubs/standard/standard_4.stubקhgR8vendor/jetbrains/phpstorm-stubs/standard/standard_1.stublקhlO8vendor/jetbrains/phpstorm-stubs/standard/standard_2.stub"קh"-Qʤ8vendor/jetbrains/phpstorm-stubs/standard/standard_8.stubקh=N8vendor/jetbrains/phpstorm-stubs/standard/standard_9.stubקh/c;/8vendor/jetbrains/phpstorm-stubs/standard/standard_0.stub$קh$>3vendor/jetbrains/phpstorm-stubs/standard/basic.stub,קh,ND8vendor/jetbrains/phpstorm-stubs/standard/standard_3.stubyyקhyynN<vendor/jetbrains/phpstorm-stubs/elastic_apm/elastic_apm.stub~קh~,vendor/jetbrains/phpstorm-stubs/dba/dba.stubE0קhE0Nԣ3vendor/jetbrains/phpstorm-stubs/dba/Connection.stubGקhGo@3>vendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/Exception.stubAקhAD/Q:vendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/Queue.stubקhhhCvendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/Metadata/Topic.stubקhcGvendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/Metadata/Partition.stubקhDvendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/Metadata/Broker.stubקhIQuRHvendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/Metadata/Collection.stubקhL9vendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/Conf.stubqקhq8=vendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/Consumer.stubקhTYCvendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/TopicPartition.stub!קh!9<Bvendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/ConsumerTopic.stubקh>:vendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/Topic.stub{קh{t{=<vendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/Message.stubrקhrbWBvendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/ProducerTopic.stubaקhaGvendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/KafkaConsumerTopic.stubקhC٤Bvendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/KafkaConsumer.stubq קhq F!>vendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/TopicConf.stub קh x=vendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/Metadata.stubקhώ=vendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/Producer.stub9קh9߲Hvendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka/KafkaErrorException.stubקhQ6vendor/jetbrains/phpstorm-stubs/rdkafka/constants.stub#קh# 4vendor/jetbrains/phpstorm-stubs/rdkafka/RdKafka.stubqקhq;Ҥ6vendor/jetbrains/phpstorm-stubs/rdkafka/functions.stubקh2vendor/jetbrains/phpstorm-stubs/mcrypt/mcrypt.stub_קh_iXV4vendor/jetbrains/phpstorm-stubs/SplType/SplType.stub קh o8vendor/jetbrains/phpstorm-stubs/mapscript/mapscript.stubקh{|K,vendor/jetbrains/phpstorm-stubs/pam/pam.stubקhs]74vendor/jetbrains/phpstorm-stubs/gettext/gettext.stub\קh\f;vendor/jetbrains/phpstorm-stubs/session/SessionHandler.stub[(קh[(mf4vendor/jetbrains/phpstorm-stubs/session/session.stubiGקhiGޤ.vendor/jetbrains/phpstorm-stubs/ming/ming.stubr"קhr"2: 5vendor/jetbrains/phpstorm-stubs/sybase/sybase_ct.stub7קh7#!8vendor/jetbrains/phpstorm-stubs/mailparse/mailparse.stubwקhwr<vendor/jetbrains/phpstorm-stubs/libvirt-php/libvirt-php.stub9קh9:`.vendor/jetbrains/phpstorm-stubs/zlib/zlib.stubKקhKZԤ2vendor/jetbrains/phpstorm-stubs/pdflib/PDFlib.stub/Tקh/T5% K4vendor/jetbrains/phpstorm-stubs/enchant/enchant.stub)קh)R0vendor/jetbrains/phpstorm-stubs/xdiff/xdiff.stub"(קh"(,vendor/jetbrains/phpstorm-stubs/eio/eio.stubfyקhfy,vendor/jetbrains/phpstorm-stubs/lua/lua.stub< קh< €6vendor/jetbrains/phpstorm-stubs/igbinary/igbinary.stubקho/7vendor/jetbrains/phpstorm-stubs/tokenizer/PhpToken.stubקh&8vendor/jetbrains/phpstorm-stubs/tokenizer/tokenizer.stubקh&2vendor/jetbrains/phpstorm-stubs/docker-compose.ymlZקhZzNq,vendor/jetbrains/phpstorm-stubs/lzf/lzf.stubקhƤ>vendor/jetbrains/phpstorm-stubs/win32service/win32service.stubEcקhEcRۤ.vendor/jetbrains/phpstorm-stubs/wddx/wddx.stub קh [L,vendor/jetbrains/phpstorm-stubs/fpm/fpm.stubקhB6vendor/jetbrains/phpstorm-stubs/yaf/yaf_namespace.stub^[קh^[vD,vendor/jetbrains/phpstorm-stubs/yaf/yaf.stub`קh`k6vendor/jetbrains/phpstorm-stubs/mbstring/mbstring.stubקhK M8vendor/jetbrains/phpstorm-stubs/memcached/memcached.stubקhH@.vendor/jetbrains/phpstorm-stubs/sync/sync.stubi7קhi7VB,vendor/jetbrains/phpstorm-stubs/PDO/PDO.stubcGקhcGK&sʤ2vendor/jetbrains/phpstorm-stubs/ffmpeg/ffmpeg.stubקhg%.vendor/jetbrains/phpstorm-stubs/json/json.stub4קh4tA0vendor/jetbrains/phpstorm-stubs/posix/posix.stubTkקhTkd .vendor/jetbrains/phpstorm-stubs/apcu/apcu.stub[nקh[nF0vendor/jetbrains/phpstorm-stubs/ldap/Result.stubDקhDvZ4vendor/jetbrains/phpstorm-stubs/ldap/Connection.stubHקhH5vendor/jetbrains/phpstorm-stubs/ldap/ResultEntry.stubIקhIPx_.vendor/jetbrains/phpstorm-stubs/ldap/ldap.stubקh8vendor/jetbrains/phpstorm-stubs/blackfire/blackfire.stubHקhHZ44vendor/jetbrains/phpstorm-stubs/PhpStormStubsMap.php" קh" d\h0vendor/jetbrains/phpstorm-stubs/stats/stats.stub"Hקh"He/vendor/jetbrains/phpstorm-stubs/Inspections.xmlקhwl6vendor/jetbrains/phpstorm-stubs/memcache/memcache.stub$Rקh$RU*,vendor/jetbrains/phpstorm-stubs/bz2/bz2.stubqקhq4 8vendor/jetbrains/phpstorm-stubs/cassandra/cassandra.stub קh 3Ԥ0vendor/jetbrains/phpstorm-stubs/mssql/mssql.stub6Mקh6MW˟Bvendor/jetbrains/phpstorm-stubs/uploadprogress/uploadprogress.stub קh r݋*vendor/jetbrains/phpstorm-stubs/Ev/Ev.stubקhr2vendor/jetbrains/phpstorm-stubs/apache/apache.stub-קh-L2vendor/jetbrains/phpstorm-stubs/phpdbg/phpdbg.stubgקhgAȾO6vendor/jetbrains/phpstorm-stubs/pthreads/pthreads.stubHקhH>93vendor/jetbrains/phpstorm-stubs/swoole/aliases.stubX קhX ᕤ5vendor/jetbrains/phpstorm-stubs/swoole/constants.stubAקhA@y>vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Http/Server.stub`קh`Y?vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Http/Request.stubקh],@vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Http/Response.stubקhc<vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Exception.stubZקhZCvendor/jetbrains/phpstorm-stubs/swoole/Swoole/WebSocket/Server.stubקh!AfGvendor/jetbrains/phpstorm-stubs/swoole/Swoole/WebSocket/CloseFrame.stubקh%Bvendor/jetbrains/phpstorm-stubs/swoole/Swoole/WebSocket/Frame.stubקhD9vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Server.stubq&קhq&EĤ8vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Timer.stub{קh{U:vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Runtime.stubקhHvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Http/Server.stubקhy*Rvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Http/Client/Exception.stubwקhwHvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Http/Client.stub)קh) g&Fvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Scheduler.stubקh9Kvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Curl/Exception.stubpקhp{_ԤBvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Redis.stubmקhm%TBvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/MySQL.stub<קh<& Cvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/System.stub קh SAۤCvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Socket.stubaקhaMDvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Context.stubקhMvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Socket/Exception.stubrקhr-| Evendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Iterator.stubקh4;Lvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/MySQL/Exception.stubqקhqQïLvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/MySQL/Statement.stubקh5Svendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Http2/Client/Exception.stubxקhxP Ivendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Http2/Client.stuboקhoG>Cvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Client.stubקhpծDvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine/Channel.stubקhOhFvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Connection/Iterator.stubקhfoƤ8vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Table.stubקhƂwդ7vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Lock.stubקh.n<vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Coroutine.stubקhNˤ:vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Process.stubקh8<ڋCvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Client/Exception.stubhקhh;8vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Error.stubRקhRTAvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Timer/Iterator.stubקhg8'9vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Atomic.stubקheKͤ8vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Event.stubקhw?vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Process/Pool.stubקhL4!@vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Http2/Request.stubקhH1Avendor/jetbrains/phpstorm-stubs/swoole/Swoole/Http2/Response.stubקhi>vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Atomic/Long.stubקh9vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Client.stub קh Ѥ@vendor/jetbrains/phpstorm-stubs/swoole/Swoole/ExitException.stub קh _?vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Redis/Server.stub קh ?>vendor/jetbrains/phpstorm-stubs/swoole/Swoole/Server/Task.stubקheZvendor/jetbrains/phpstorm-stubs/swoole/Swoole/Server/Port.stubקh_{5vendor/jetbrains/phpstorm-stubs/swoole/functions.stub8"קh8"6|+vendor/jetbrains/phpstorm-stubs/qodana.yaml קh 'JX;.vendor/jetbrains/phpstorm-stubs/ssh2/ssh2.stubZקhZo4vendor/jetbrains/phpstorm-stubs/rpminfo/rpminfo.stub-קh-8vendor/jetbrains/phpstorm-stubs/aerospike/aerospike.stub24קh24ٸe4vendor/jetbrains/phpstorm-stubs/aerospike/Bytes.stub קh ʍ,vendor/jetbrains/phpstorm-stubs/zip/zip.stub קh C98vendor/jetbrains/phpstorm-stubs/winbinder/winbinder.stubxקhx:8vendor/jetbrains/phpstorm-stubs/libsodium/libsodium.stube<קhe<`-:vendor/jetbrains/phpstorm-stubs/libsodium/libsodium_f.stubקhړ+:vendor/jetbrains/phpstorm-stubs/libsodium/libsodium_d.stub@קh@+Ƥ.vendor/jetbrains/phpstorm-stubs/tidy/tidy.stubLקhLדN,vendor/jetbrains/phpstorm-stubs/xsl/xsl.stub;קh;$Ȥ.vendor/jetbrains/phpstorm-stubs/oci8/oci8.stuboקhoh!p0vendor/jetbrains/phpstorm-stubs/oci8/oci8v3.stubE9קhE9>vendor/jetbrains/phpstorm-stubs/ZendDebugger/ZendDebugger.stubקhw!2vendor/jetbrains/phpstorm-stubs/recode/recode.stubקhO9vendor/jetbrains/phpstorm-stubs/Zend OPcache/OPcache.stubm קhm Im0vendor/jetbrains/phpstorm-stubs/geoip/geoip.stub$קh$62vendor/jetbrains/phpstorm-stubs/pspell/pspell.stubq.קhq.0\4vendor/jetbrains/phpstorm-stubs/pspell/pspell_c.stubקhR 0vendor/jetbrains/phpstorm-stubs/shmop/shmop.stubקh2ɤ8vendor/jetbrains/phpstorm-stubs/xmlwriter/xmlwriter.stubקhO< /vendor/jetbrains/phpstorm-stubs/regex/ereg.stubz קhz =cP2vendor/jetbrains/phpstorm-stubs/xmlrpc/xmlrpc.stubקh0vendor/jetbrains/phpstorm-stubs/stomp/stomp.stubA"קhA"!K2vendor/jetbrains/phpstorm-stubs/filter/filter.stub;קh;v2֬6vendor/jetbrains/phpstorm-stubs/mqseries/mqseries.stubקh1%,vendor/jetbrains/phpstorm-stubs/zmq/zmq.stubzuקhzuZJvendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient.stubקh!Tvendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient/Exception.stubdקhdYvYvendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient/Metadata/Topic.stubSקhS\]vendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient/Metadata/Partition.stubקhgZvendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient/Metadata/Broker.stub9קh9uo`^vendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient/Metadata/Collection.stub קh Svendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient/Consumer.stubWקhWYvendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient/TopicPartition.stub&קh&>~Pvendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient/Topic.stubקh Rvendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient/Message.stubקhkSvendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient/Metadata.stub9קh9!aSvendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient/Producer.stubקhИ^vendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient/KafkaErrorException.stubקhi',Xvendor/jetbrains/phpstorm-stubs/simple_kafka_client/SimpleKafkaClient/Configuration.stubxקhxռvBvendor/jetbrains/phpstorm-stubs/simple_kafka_client/functions.stubקhBQ0vendor/jetbrains/phpstorm-stubs/mongo/mongo.stubקh;n2vendor/jetbrains/phpstorm-stubs/sodium/sodium.stubקh D4vendor/jetbrains/phpstorm-stubs/gmagick/gmagick.stubjקhjY\ .vendor/jetbrains/phpstorm-stubs/Phar/Phar.stub(קh(6K6vendor/jetbrains/phpstorm-stubs/wincache/wincache.stubaקhaЃ 4vendor/jetbrains/phpstorm-stubs/sysvsem/sysvsem.stub קh zX,vendor/jetbrains/phpstorm-stubs/dio/dio.stub%קh%'&.vendor/jetbrains/phpstorm-stubs/dio/dio_d.stubקhC0vendor/jetbrains/phpstorm-stubs/ctype/ctype.stubRקhRP1vendor/jetbrains/phpstorm-stubs/Parle/RLexer.stubקh w:vendor/jetbrains/phpstorm-stubs/Parle/ParserException.stubxקhxL9vendor/jetbrains/phpstorm-stubs/Parle/LexerException.stubwקhw^Ut0vendor/jetbrains/phpstorm-stubs/Parle/Lexer.stub*קh*; 0vendor/jetbrains/phpstorm-stubs/Parle/Token.stubקhN0vendor/jetbrains/phpstorm-stubs/Parle/Stack.stubAקhA.>o_2vendor/jetbrains/phpstorm-stubs/Parle/RParser.stubקhɥФ4vendor/jetbrains/phpstorm-stubs/Parle/ErrorInfo.stubAקhA1vendor/jetbrains/phpstorm-stubs/Parle/Parser.stub,קh,2vendor/jetbrains/phpstorm-stubs/xhprof/xhprof.stubקhg"դ.vendor/jetbrains/phpstorm-stubs/geos/geos.stubAקhAU.vendor/jetbrains/phpstorm-stubs/judy/judy.stubF"קhF"q32vendor/jetbrains/phpstorm-stubs/radius/radius.stubGקhG4g4vendor/jetbrains/phpstorm-stubs/ibm_db2/ibm_db2.stubקh̯.vendor/jetbrains/phpstorm-stubs/gd/GdFont.stub3קh3`I=*vendor/jetbrains/phpstorm-stubs/gd/gd.stubקh4vendor/jetbrains/phpstorm-stubs/sqlite3/sqlite3.stubfקhfԽ0vendor/jetbrains/phpstorm-stubs/date/date_c.stubšקhš?Ao0vendor/jetbrains/phpstorm-stubs/date/date_d.stub"קh"e.vendor/jetbrains/phpstorm-stubs/date/date.stub+קh+s4vendor/jetbrains/phpstorm-stubs/sysvmsg/sysvmsg.stub&קh&jΤ/vendor/jetbrains/phpstorm-stubs/http/http3.stub]קh]<.vendor/jetbrains/phpstorm-stubs/http/http.stubקh*vendor/jetbrains/phpstorm-stubs/uv/UV.stub קh h<4vendor/jetbrains/phpstorm-stubs/uv/uv_functions.stubfקhft9vendor/jetbrains/phpstorm-stubs/snappy/snappy/snappy.stubקh 8vendor/jetbrains/phpstorm-stubs/interbase/interbase.stubקh8vendor/jetbrains/phpstorm-stubs/curl/CURLStringFile.stubקh@b0vendor/jetbrains/phpstorm-stubs/curl/curl_d.stubNקhNr.W?.vendor/jetbrains/phpstorm-stubs/curl/curl.stubsקhs7vendor/jetbrains/phpstorm-stubs/redis/RedisCluster.stub,קh,IU0vendor/jetbrains/phpstorm-stubs/redis/Redis.stubקh*Y8vendor/jetbrains/phpstorm-stubs/redis/RedisSentinel.stubקhz A5vendor/jetbrains/phpstorm-stubs/redis/RedisArray.stubLקhLfL8vendor/jetbrains/phpstorm-stubs/SimpleXML/SimpleXML.stubQLקhQLO0vendor/jetbrains/phpstorm-stubs/iconv/iconv.stub5קh51+G.vendor/jetbrains/phpstorm-stubs/dom/dom_n.stub קh ~,vendor/jetbrains/phpstorm-stubs/dom/dom.stubyקhy9.vendor/jetbrains/phpstorm-stubs/dom/dom_c.stub_קh_2vendor/jetbrains/phpstorm-stubs/pcntl/pcntl_c.stubקhzEh0vendor/jetbrains/phpstorm-stubs/pcntl/pcntl.stubYXקhYXۖ<Ȥ,vendor/jetbrains/phpstorm-stubs/yar/yar.stubקhۤ2vendor/jetbrains/phpstorm-stubs/brotli/brotli.stubקhp<5ʤ.vendor/jetbrains/phpstorm-stubs/SPL/SPL_f.stubmקhmO:ä/vendor/jetbrains/phpstorm-stubs/SPL/SPL_c1.stub ?קh ?L,vendor/jetbrains/phpstorm-stubs/SPL/SPL.stubקhh ?vendor/jetbrains/phpstorm-stubs/superglobals/_superglobals.stubקhFe.vendor/jetbrains/phpstorm-stubs/pcre/pcre.stubzPקhzPY2vendor/jetbrains/phpstorm-stubs/SaxonC/SaxonC.stublקhl# 9vendor/nette/robot-loader/src/RobotLoader/RobotLoader.php@קh@C6vendor/nette/schema/src/Schema/ValidationException.phpקhw`0vendor/nette/schema/src/Schema/Elements/Base.phpקhӗޤ0vendor/nette/schema/src/Schema/Elements/Type.phpקh)X1vendor/nette/schema/src/Schema/Elements/AnyOf.phpVקhVz2F+5vendor/nette/schema/src/Schema/Elements/Structure.phpקhz ,vendor/nette/schema/src/Schema/Processor.php קh d )vendor/nette/schema/src/Schema/Schema.phpyקhyZ|*vendor/nette/schema/src/Schema/Message.php קh 3vendor/nette/schema/src/Schema/DynamicParameter.phpקhU*vendor/nette/schema/src/Schema/Context.phpקhՒ*vendor/nette/schema/src/Schema/Helpers.php קh %f)vendor/nette/schema/src/Schema/Expect.php קh ivendor/nette/utils/ncs.xmlקhvendor/nette/utils/ncs.php8קh8 Q+vendor/nette/utils/src/Utils/Reflection.php{7קh{7oZ)vendor/nette/utils/src/Utils/Callback.phpקhW'vendor/nette/utils/src/Utils/Random.phpקhITƤ.vendor/nette/utils/src/Utils/ObjectHelpers.phpFקhF^ *vendor/nette/utils/src/Utils/ArrayHash.phpNקhNp"%vendor/nette/utils/src/Utils/Type.phpקho&vendor/nette/utils/src/Utils/Image.php`קh`gm%vendor/nette/utils/src/Utils/Html.phpZקhZ%+='vendor/nette/utils/src/Utils/Arrays.php1קh1iԤ+vendor/nette/utils/src/Utils/Validators.php+קh+jA'vendor/nette/utils/src/Utils/Floats.phpm קhm '7+vendor/nette/utils/src/Utils/exceptions.phpקhD| )*vendor/nette/utils/src/Utils/ArrayList.php קh ܷ(vendor/nette/utils/src/Utils/Helpers.php קh JP#,vendor/nette/utils/src/Utils/ObjectMixin.phpקhj2)vendor/nette/utils/src/Utils/DateTime.php_קh_rb%vendor/nette/utils/src/Utils/Json.phpקhf*vendor/nette/utils/src/Utils/Paginator.phpקhpjz(vendor/nette/utils/src/Utils/Strings.phpqQקhqQ#+vendor/nette/utils/src/Utils/FileSystem.php קh ]T(vendor/nette/utils/src/compatibility.phpקhQ%vendor/nette/utils/src/exceptions.phpקh֡)vendor/nette/utils/src/HtmlStringable.phplקhl*o%vendor/nette/utils/src/Translator.phpקh',&vendor/nette/utils/src/SmartObject.phpקhU5*&vendor/nette/utils/src/StaticClass.phpקh_)14vendor/nette/utils/src/Iterators/CachingIterator.php קh +vendor/nette/utils/src/Iterators/Mapper.phpקh#4\vendor/nette/di/PATCHES.txtקh%vendor/nette/di/src/compatibility.phpקh[,vendor/nette/di/src/DI/DependencyChecker.phpקh2,vendor/nette/di/src/DI/CompilerExtension.phpקhW c#vendor/nette/di/src/DI/Resolver.phpbקhb21vendor/nette/di/src/DI/Extensions/DIExtension.php9 קh9 /Ӑ6vendor/nette/di/src/DI/Extensions/DefinitionSchema.phpoקho>=5vendor/nette/di/src/DI/Extensions/InjectExtension.phpקhÖ5vendor/nette/di/src/DI/Extensions/SearchExtension.phpקh8vendor/nette/di/src/DI/Extensions/ConstantsExtension.phpקh2w7vendor/nette/di/src/DI/Extensions/ServicesExtension.phpקhL9vendor/nette/di/src/DI/Extensions/ExtensionsExtension.phpקhӤ8vendor/nette/di/src/DI/Extensions/DecoratorExtension.phpg קhg jE9vendor/nette/di/src/DI/Extensions/ParametersExtension.php{קh{2ZƤ2vendor/nette/di/src/DI/Extensions/PhpExtension.phpקh*)$vendor/nette/di/src/DI/Container.php:,קh:,J=8vendor/nette/di/src/DI/Definitions/ServiceDefinition.phpiקhi҅8vendor/nette/di/src/DI/Definitions/LocatorDefinition.phpuקhuB0vendor/nette/di/src/DI/Definitions/Reference.phpקhx0vendor/nette/di/src/DI/Definitions/Statement.phpקh~ڊ1vendor/nette/di/src/DI/Definitions/Definition.php'קh' ٌ8vendor/nette/di/src/DI/Definitions/FactoryDefinition.phpG#קhG#vGxv9vendor/nette/di/src/DI/Definitions/AccessorDefinition.php$קh$j٤9vendor/nette/di/src/DI/Definitions/ImportedDefinition.phpקhCV+vendor/nette/di/src/DI/DynamicParameter.phpoקho`4%vendor/nette/di/src/DI/exceptions.php6קh6F,vendor/nette/di/src/DI/Attributes/Inject.php!קh!n T"vendor/nette/di/src/DI/Helpers.php#קh#̤%vendor/nette/di/src/DI/Autowiring.phpcקhc\*vendor/nette/di/src/DI/ContainerLoader.phpLקhL6'vendor/nette/di/src/DI/PhpGenerator.phpקhSդ)vendor/nette/di/src/DI/Config/Adapter.phpקh)W6vendor/nette/di/src/DI/Config/Adapters/NeonAdapter.phpקh>U5vendor/nette/di/src/DI/Config/Adapters/PhpAdapter.phpקh )vendor/nette/di/src/DI/Config/Helpers.php%קh%#L(vendor/nette/di/src/DI/Config/Loader.php4קh4W~ +vendor/nette/di/src/DI/ContainerBuilder.php+קh+^&z#vendor/nette/di/src/DI/Compiler.php%קh%[H6vendor/nette/di/src/Bridges/DITracy/ContainerPanel.phpi קhi Fvendor/nette/di/src/Bridges/DITracy/templates/ContainerPanel.tab.phtmlקh>F-Hvendor/nette/di/src/Bridges/DITracy/templates/ContainerPanel.panel.phtmlקh]띦+vendor/nette/bootstrap/src/Configurator.phpקht(Fvendor/nette/bootstrap/src/Bootstrap/Extensions/ConstantsExtension.php)קh)@vendor/nette/bootstrap/src/Bootstrap/Extensions/PhpExtension.phpQקhQT.?5vendor/nette/bootstrap/src/Bootstrap/Configurator.php,קh,n4"vendor/nette/php-generator/ncs.php'קh'V9vendor/nette/php-generator/src/PhpGenerator/Attribute.php_קh_)8vendor/nette/php-generator/src/PhpGenerator/Constant.phpקh59vendor/nette/php-generator/src/PhpGenerator/Extractor.php >קh >.GK7vendor/nette/php-generator/src/PhpGenerator/Factory.php3קh37$4vendor/nette/php-generator/src/PhpGenerator/Type.phpXקhXC8vendor/nette/php-generator/src/PhpGenerator/TraitUse.phpקh;Ӥ7vendor/nette/php-generator/src/PhpGenerator/Closure.phpקhL8vendor/nette/php-generator/src/PhpGenerator/EnumCase.phpקhtAvendor/nette/php-generator/src/PhpGenerator/PromotedParameter.phpקhÊ:vendor/nette/php-generator/src/PhpGenerator/PhpLiteral.phpקh5ů>vendor/nette/php-generator/src/PhpGenerator/GlobalFunction.phpקhZX87vendor/nette/php-generator/src/PhpGenerator/Helpers.phpקhӯT6vendor/nette/php-generator/src/PhpGenerator/Method.php קh )9vendor/nette/php-generator/src/PhpGenerator/ClassType.phpF;קhF;򵻤7vendor/nette/php-generator/src/PhpGenerator/Printer.php[4קh[4<vendor/nette/php-generator/src/PhpGenerator/PhpNamespace.phpC'קhC'':vendor/nette/php-generator/src/PhpGenerator/PsrPrinter.phpקhI㈤Cvendor/nette/php-generator/src/PhpGenerator/Traits/CommentAware.phpקhH'AFvendor/nette/php-generator/src/PhpGenerator/Traits/VisibilityAware.php<קh</J Evendor/nette/php-generator/src/PhpGenerator/Traits/AttributeAware.phpקh! Cvendor/nette/php-generator/src/PhpGenerator/Traits/FunctionLike.php0קh0GDƤ@vendor/nette/php-generator/src/PhpGenerator/Traits/NameAware.phpקh47vendor/nette/php-generator/src/PhpGenerator/Literal.php קh Ѳ7vendor/nette/php-generator/src/PhpGenerator/PhpFile.phpקh+lc9vendor/nette/php-generator/src/PhpGenerator/Parameter.php+ קh+ 8vendor/nette/php-generator/src/PhpGenerator/Property.php קh 6vendor/nette/php-generator/src/PhpGenerator/Dumper.php8#קh8#ߤvendor/nette/neon/PATCHES.txtקh0Ovendor/nette/neon/bin/neon-lintKקhK~D(vendor/nette/neon/src/Neon/Exception.php7קh7TX&vendor/nette/neon/src/Neon/Decoder.phpקhP3*vendor/nette/neon/src/Neon/TokenStream.php.קh.2u2(vendor/nette/neon/src/Neon/Traverser.phpjקhj]a#vendor/nette/neon/src/Neon/Node.phpקh Ĥ$vendor/nette/neon/src/Neon/Token.php}קh}9/vendor/nette/neon/src/Neon/Node/LiteralNode.phpE קhE v#.vendor/nette/neon/src/Neon/Node/StringNode.php קh (Ϥ2vendor/nette/neon/src/Neon/Node/BlockArrayNode.phpקhKDh-vendor/nette/neon/src/Neon/Node/ArrayNode.phpקh3vendor/nette/neon/src/Neon/Node/EntityChainNode.phpקhb 3vendor/nette/neon/src/Neon/Node/InlineArrayNode.php_קh_U4Fݤ1vendor/nette/neon/src/Neon/Node/ArrayItemNode.phpקhe˚.vendor/nette/neon/src/Neon/Node/EntityNode.phpYקhY۫_%vendor/nette/neon/src/Neon/Entity.phpקhX7$vendor/nette/neon/src/Neon/Lexer.php קh W2%vendor/nette/neon/src/Neon/Parser.php!קh!=xI&vendor/nette/neon/src/Neon/Encoder.phph קhh q#vendor/nette/neon/src/Neon/Neon.phpקhqA(vendor/nette/finder/src/Utils/Finder.php*קh*\ J-vendor/autoload.phpקhv֤$vendor/fig/http-message-util/LICENSE=קh=?;vendor/fig/http-message-util/src/RequestMethodInterface.phpקhЭ8vendor/fig/http-message-util/src/StatusCodeInterface.phpyקhyJXWvendor/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionEnumUnitCase.phpקh1?~Svendor/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionFunction.php\"קh\"MaOvendor/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionType.php קh Rc/FYvendor/ondrejmirtes/better-reflection/src/Reflection/Adapter/Exception/NotImplemented.phpקhIReTvendor/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionParameter.phpt#קht#.Tvendor/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionAttribute.phpקhC,Ovendor/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionEnum.phpSKקhSKWKvendor/ondrejmirtes/better-reflection/src/Reflection/ReflectionFunction.phpקhCԤ`vendor/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionFunctionStringCast.php קh F[3evendor/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionClassConstantStringCast.phpקhm4avendor/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionParameterStringCast.phpeקhe *`vendor/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionEnumCaseStringCast.phpקh2^\vendor/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionTypeStringCast.php:קh:l1τ^vendor/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionMethodStringCast.phpyקhy+]vendor/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionClassStringCast.php(#קh(#Uavendor/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionAttributeStringCast.phpWקhWhW`vendor/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionPropertyStringCast.phpJקhJ/`vendor/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionConstantStringCast.phpקhpGvendor/ondrejmirtes/better-reflection/src/Reflection/ReflectionType.phpV קhV =aWvendor/ondrejmirtes/better-reflection/src/Reflection/Exception/FunctionDoesNotExist.php{קh{cKvendor/ondrejmirtes/better-reflection/src/Reflection/Exception/NoParent.phpקhߤVvendor/ondrejmirtes/better-reflection/src/Reflection/Exception/PropertyIsNotStatic.php[קh[Tvendor/ondrejmirtes/better-reflection/src/Reflection/Exception/CircularReference.phpmקhm"Vvendor/ondrejmirtes/better-reflection/src/Reflection/Exception/InvalidConstantNode.phpקh ՗Vvendor/ondrejmirtes/better-reflection/src/Reflection/Exception/CodeLocationMissing.phpקhSvendor/ondrejmirtes/better-reflection/src/Reflection/Exception/NoObjectProvided.phpקh/Wvendor/ondrejmirtes/better-reflection/src/Reflection/Exception/PropertyDoesNotExist.php]קh]/7i[[vendor/ondrejmirtes/better-reflection/src/Reflection/Exception/ObjectNotInstanceOfClass.phpxקhx wTvendor/ondrejmirtes/better-reflection/src/Reflection/Exception/ClassDoesNotExist.phpקhnZvendor/ondrejmirtes/better-reflection/src/Reflection/Exception/MethodPrototypeNotFound.phpקh27VNvendor/ondrejmirtes/better-reflection/src/Reflection/Exception/NotAnObject.phpקhZvendor/ondrejmirtes/better-reflection/src/Reflection/Exception/InvalidDefaultValueType.phpקhudB_vendor/ondrejmirtes/better-reflection/src/Reflection/Exception/InvalidArrowFunctionBodyNode.php,קh,pJͤLvendor/ondrejmirtes/better-reflection/src/Reflection/ReflectionParameter.php?Eקh?E ILvendor/ondrejmirtes/better-reflection/src/Reflection/ReflectionAttribute.phpקhĤGvendor/ondrejmirtes/better-reflection/src/Reflection/ReflectionEnum.phpjקhj 2>vendor/ondrejmirtes/better-reflection/src/BetterReflection.phpקhJSo3avendor/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/ReflectionSourceStubber.php(zקh(z깆fvendor/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/PhpStormStubs/CachingVisitor.phptקhtdvendor/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/PhpStormStubsSourceStubber.php|קh|H`vendor/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/AggregateSourceStubber.phpקh)Wvendor/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/SourceStubber.phpקhϭmvendor/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/Exception/CouldNotFindPhpStormStubs.php0קh0~Rvendor/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/StubData.phpקh$դGvendor/ondrejmirtes/better-reflection/src/SourceLocator/FileChecker.phpקh)MYvendor/ondrejmirtes/better-reflection/src/SourceLocator/Located/InternalLocatedSource.php קh zVvendor/ondrejmirtes/better-reflection/src/SourceLocator/Located/AliasLocatedSource.phpOקhOZvendor/ondrejmirtes/better-reflection/src/SourceLocator/Located/AnonymousLocatedSource.phptקhtm Wvendor/ondrejmirtes/better-reflection/src/SourceLocator/Located/EvaledLocatedSource.php4קh4{rjQvendor/ondrejmirtes/better-reflection/src/SourceLocator/Located/LocatedSource.php קh SΤbvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/AnonymousClassObjectSourceLocator.phpDקhDNwXvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/SingleFileSourceLocator.phpTקhTzE{GVvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/AutoloadSourceLocator.php.קh.ySYvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/PhpInternalSourceLocator.php2 קh2 Uvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/ClosureSourceLocator.php}קh}M$ФVvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/AbstractSourceLocator.php= קh= *Wvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/AggregateSourceLocator.phpקhHpvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/AutoloadSourceLocator/FileReadTrapStreamWrapper.php~קh~J`Vvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/ComposerSourceLocator.phpקhҤYvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/Psr0Mapping.phpGקhG'eavendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/Exception/Exception.phpקhlvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/Exception/InvalidPrefixMapping.phpsקhs󴜤Yvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/Psr4Mapping.php קh bvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/PsrAutoloaderMapping.phpvקhv'֤^vendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/PsrAutoloaderLocator.php קh X4mlvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/MakeLocatorForComposerJson.phpקhL+|vendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/MakeLocatorForComposerJsonAndInstalledJson.phpo קho :mvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/MakeLocatorForInstalledJson.phpקh#@evendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/Exception.phpקhZ\mvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/FailedToParseJson.phpקh'<ovendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/MissingComposerJson.phpקhT_ʤpvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/MissingInstalledJson.phpקh"osvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/InvalidProjectDirectory.phpקh!4lWvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/MemoizingSourceLocator.php קh _ۤTvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/StringSourceLocator.php1קh1<>٤Zvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/FileIteratorSourceLocator.php קh ʑqWYvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/DirectoriesSourceLocator.phpקh8QvYXvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/EvaledCodeSourceLocator.phpקhWvNvendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/SourceLocator.php+קh+C=Wvendor/ondrejmirtes/better-reflection/src/SourceLocator/Exception/FunctionUndefined.phpVקhVN0Yvendor/ondrejmirtes/better-reflection/src/SourceLocator/Exception/InvalidFileLocation.phpקhUvendor/ondrejmirtes/better-reflection/src/SourceLocator/Exception/NoClosureOnLine.phppקhpGVvendor/ondrejmirtes/better-reflection/src/SourceLocator/Exception/InvalidDirectory.phpקhdTVvendor/ondrejmirtes/better-reflection/src/SourceLocator/Exception/NotInternalClass.phpקhzׯbvendor/ondrejmirtes/better-reflection/src/SourceLocator/Exception/EvaledClosureCannotBeLocated.php$קh$dϤ\vendor/ondrejmirtes/better-reflection/src/SourceLocator/Exception/NoAnonymousClassOnLine.phpקh\Uvendor/ondrejmirtes/better-reflection/src/SourceLocator/Exception/InvalidFileInfo.php+קh+J"[vendor/ondrejmirtes/better-reflection/src/SourceLocator/Exception/TwoClosuresOnSameLine.phprקhrӤcvendor/ondrejmirtes/better-reflection/src/SourceLocator/Exception/TwoAnonymousClassesOnSameLine.phpקhM/ivendor/ondrejmirtes/better-reflection/src/SourceLocator/Exception/EvaledAnonymousClassCannotBeLocated.php3קh36ǮUvendor/ondrejmirtes/better-reflection/src/SourceLocator/Ast/FindReflectionsInTree.php0קh0d Gvendor/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Locator.php( קh( aVvendor/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Parser/MemoizingParser.phpקhg [vendor/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Exception/ParseToAstFailure.phpקhJ:^vendor/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Strategy/AstConversionStrategy.phpקhϜYvendor/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Strategy/NodeToReflection.php קh |~Jvendor/ondrejmirtes/better-reflection/src/NodeCompiler/CompilerContext.php_קh_ZWHvendor/ondrejmirtes/better-reflection/src/NodeCompiler/CompiledValue.phpקh_Mvendor/ondrejmirtes/better-reflection/src/NodeCompiler/CompileNodeToValue.php3קh3TXvendor/ondrejmirtes/better-reflection/src/NodeCompiler/Exception/UnableToCompileNode.phpקhvNҺFvendor/ondrejmirtes/better-reflection/src/Util/ConstantNodeChecker.phpקh߸CLvendor/ondrejmirtes/better-reflection/src/Util/CalculateReflectionColumn.phpקh5_=vendor/ondrejmirtes/better-reflection/src/Util/FileHelper.phpf קhf AuLKvendor/ondrejmirtes/better-reflection/src/Util/Exception/NoNodePosition.phpקh$Pvendor/ondrejmirtes/better-reflection/src/Util/Exception/InvalidNodePosition.phpVקhV>UݤDvendor/ondrejmirtes/better-reflection/src/Util/GetLastDocComment.phpקhtGvendor/ondrejmirtes/better-reflection/src/Util/FindReflectionOnLine.phpקhP5ˤHvendor/ondrejmirtes/better-reflection/src/Util/ClassExistenceChecker.php{קh{J vendor/hoa/ustring/Exception.phpקhPRvendor/hoa/ustring/Ustring.phpeקhe #vendor/hoa/ustring/Bin/Fromcode.php קh ;m!vendor/hoa/ustring/Bin/Tocode.php קh -vendor/hoa/ustring/Documentation/Fr/Index.xylEnקhEnFp-vendor/hoa/ustring/Documentation/En/Index.xylhקhhvvendor/hoa/ustring/Search.php קh  vendor/hoa/file/ReadWrite.php"קh"vendor/hoa/file/PATCHES.txtקh)vendor/hoa/file/Generic.php44קh44W\/vendor/hoa/file/SplFileInfo.php קh RKvendor/hoa/file/Directory.phpקhVvendor/hoa/file/Finder.php%Dקh%Dސ'vendor/hoa/file/Exception/Exception.phpקhU墕.vendor/hoa/file/Exception/FileDoesNotExist.phpקhKivendor/hoa/file/Watcher.phpקhċvvendor/hoa/file/File.php%קh%W 'vendor/hoa/file/Temporary/ReadWrite.php"קh"'vendor/hoa/file/Temporary/Temporary.phpקh09"vendor/hoa/file/Temporary/Read.phpmקhm3#vendor/hoa/file/Temporary/Write.phpקhF6vendor/hoa/file/Link/Link.phpRקhRM"vendor/hoa/file/Link/ReadWrite.php"קh"ͤvendor/hoa/file/Link/Read.phpPקhPX<6vendor/hoa/file/Link/Write.phpקhGvendor/hoa/file/Read.phpAקhA$vendor/hoa/file/Write.phpקh0M$vendor/hoa/consistency/Exception.phpקhmX"vendor/hoa/consistency/PATCHES.txtקhoV?%vendor/hoa/consistency/Autoloader.phpaקha"vendor/hoa/consistency/Prelude.phpקhY`i$vendor/hoa/consistency/Xcallable.phpt קht t&vendor/hoa/consistency/Consistency.php~ קh~ vendor/hoa/event/Exception.phpקh=vendor/hoa/event/Listenable.phpקhGOvendor/hoa/event/Listens.php קh #vvendor/hoa/event/Bucket.phpD קhD 4u*vendor/hoa/event/Source.php_קh_vendor/hoa/event/Event.phpקhGṳvendor/hoa/event/Listener.phpקhݤvendor/hoa/visitor/Visit.phpקh5vendor/hoa/visitor/Element.phpקheb"vendor/hoa/exception/Exception.phpO קhO vendor/hoa/exception/Idle.phpקh= vendor/hoa/exception/PATCHES.txtקh`onvendor/hoa/exception/Error.phpH קhH *b&vendor/hoa/exception/Group.phpZקhZf$vendor/hoa/math/Util.phpYקhYc] vendor/hoa/math/Bin/Calc.phpקh&~"vendor/hoa/math/Sampler/Random.php קh P%#vendor/hoa/math/Sampler/Sampler.php!קh!Mvendor/hoa/math/Context.php קh J/'vendor/hoa/math/Exception/Exception.phpקh -vendor/hoa/math/Exception/UnknownFunction.phpקh䒤4vendor/hoa/math/Exception/AlreadyDefinedConstant.phpקh=-vendor/hoa/math/Exception/UnknownVariable.phpקh*-vendor/hoa/math/Exception/UnknownConstant.phpקhqvendor/hoa/math/Arithmetic.pp קh ٤*vendor/hoa/math/Combinatorics/Counting.phpקhsY73vendor/hoa/math/Combinatorics/Combination/Gamma.php?קh?ʤ9vendor/hoa/math/Combinatorics/Combination/Combination.php קh  K>vendor/hoa/math/Combinatorics/Combination/CartesianProduct.phpקh-vendor/hoa/math/Combinatorics/Arrangement.phpקhsY7+vendor/hoa/math/Combinatorics/FiniteSet.phpקhsY7-vendor/hoa/math/Combinatorics/Permutation.phpקhsY7&vendor/hoa/math/Visitor/Arithmetic.phpG'קhG'-}ڤ!vendor/hoa/iterator/Exception.phpקh>Tvendor/hoa/iterator/Counter.phpקh6՟vendor/hoa/iterator/PATCHES.txtקh2 vendor/hoa/iterator/Seekable.phpqקhqפ%vendor/hoa/iterator/Demultiplexer.phpקh: +(vendor/hoa/iterator/IteratorIterator.phpvקhviÃ# vendor/hoa/iterator/Multiple.php קh  #vendor/hoa/iterator/SplFileInfo.phphקhhol(vendor/hoa/iterator/Recursive/Filter.phpקh҅%vendor/hoa/iterator/Recursive/Map.php|קh|PX:+vendor/hoa/iterator/Recursive/Directory.phpקh6FY+vendor/hoa/iterator/Recursive/Recursive.phpקhZr 0vendor/hoa/iterator/Recursive/CallbackFilter.phpקh&vendor/hoa/iterator/Recursive/Mock.phpoקhow3vendor/hoa/iterator/Recursive/RegularExpression.phpקhlֲ*vendor/hoa/iterator/Recursive/Iterator.phpקhsvendor/hoa/iterator/Filter.phpgקhgiһvendor/hoa/iterator/Map.phpVקhVw!vendor/hoa/iterator/Directory.phpקh~vendor/hoa/iterator/Append.php^קh^{F&vendor/hoa/iterator/CallbackFilter.php~קh~L"vendor/hoa/iterator/Lookbehind.php4קh4*4vendor/hoa/iterator/Buffer.phpקhMtʤ vendor/hoa/iterator/Infinite.phpfקhf*vendor/hoa/iterator/Outer.phpfקhf񽲤 vendor/hoa/iterator/NoRewind.phpfקhf7Z/})vendor/hoa/iterator/CallbackGenerator.php קh 6H9vendor/hoa/iterator/Mock.phpXקhX|!)vendor/hoa/iterator/RegularExpression.php!קh!^Iuvendor/hoa/iterator/Limit.phpZקhZ!x#vendor/hoa/iterator/Glob.phpVקhVǻ vendor/hoa/iterator/Repeater.php5קh5q!vendor/hoa/iterator/Aggregate.phpvקhvˤ!vendor/hoa/iterator/Lookahead.phpqקhq_"vendor/hoa/iterator/FileSystem.php קh  vendor/hoa/iterator/Iterator.phpקh"!vendor/hoa/protocol/Exception.phpקh6\vendor/hoa/protocol/PATCHES.txtקhP#vendor/hoa/protocol/Bin/Resolve.phpקhAM!vendor/hoa/protocol/Node/Node.php&קh&z$vendor/hoa/protocol/Node/Library.php קh 7 vendor/hoa/protocol/Protocol.phpקhHvendor/hoa/protocol/Wrapper.php&Fקh&F[ ZCvendor/hoa/stream/Exception.phpקhe3vendor/hoa/stream/PATCHES.txtקhaQ&vendor/hoa/stream/Filter/Exception.phpקh#vendor/hoa/stream/Filter/Filter.phpקhY&:)vendor/hoa/stream/Filter/LateComputed.phpcקhc4G"vendor/hoa/stream/Filter/Basic.phpקhx$vendor/hoa/stream/IStream/Stream.phpקhg'vendor/hoa/stream/IStream/Touchable.phpקh-6(vendor/hoa/stream/IStream/Structural.phpקhq~'vendor/hoa/stream/IStream/Pointable.php קh gq&vendor/hoa/stream/IStream/Lockable.phph קhh &vendor/hoa/stream/IStream/Pathable.phpsקhsI7!vendor/hoa/stream/IStream/Out.php קh ǟΤ vendor/hoa/stream/IStream/In.phpnקhnT &vendor/hoa/stream/IStream/Statable.php קh i(vendor/hoa/stream/IStream/Bufferable.php קh Yqvendor/hoa/stream/Stream.phpAקhA]vendor/hoa/stream/Bucket.phpקhe'vendor/hoa/stream/Wrapper/Exception.phpקhXe/vendor/hoa/stream/Wrapper/IWrapper/IWrapper.phpקh?-vendor/hoa/stream/Wrapper/IWrapper/Stream.php0(קh0(_S+vendor/hoa/stream/Wrapper/IWrapper/File.phpקh݉=%vendor/hoa/stream/Wrapper/Wrapper.phpקhLQvendor/hoa/stream/Context.phpeקhelpvendor/hoa/stream/Composite.php קh ¯~ vendor/hoa/zformat/Exception.phpקhNf vendor/hoa/zformat/Parameter.phpGקhG?&vendor/hoa/zformat/Parameterizable.phpקhKnvendor/hoa/regex/Exception.phpקh vendor/hoa/regex/Grammar.pp קh AL&vendor/hoa/regex/Visitor/Isotropic.php>$קh>$CId;vendor/hoa/compiler/PATCHES.txt;קh;Tsvendor/hoa/compiler/Bin/Pp.phpקh%vendor/hoa/compiler/Llk/Llk.php.קh.&&vendor/hoa/compiler/Llk/Rule/Entry.phphקhh+ͤ&vendor/hoa/compiler/Llk/Rule/Ekzit.phpoקhoV|.vendor/hoa/compiler/Llk/Rule/Concatenation.phpzקhz_oP&vendor/hoa/compiler/Llk/Rule/Token.php=קh=i/'vendor/hoa/compiler/Llk/Rule/Choice.phpeקheOᙤ+vendor/hoa/compiler/Llk/Rule/Repetition.php קh T1&)vendor/hoa/compiler/Llk/Rule/Analyzer.php"4קh"4xF+vendor/hoa/compiler/Llk/Rule/Invocation.phpLקhLᙤ%vendor/hoa/compiler/Llk/Rule/Rule.php"קh"hg7-vendor/hoa/compiler/Llk/Sampler/Exception.phpקhk+vendor/hoa/compiler/Llk/Sampler/Sampler.phpקhk<*5vendor/hoa/compiler/Llk/Sampler/BoundedExhaustive.php&קh&Uo+vendor/hoa/compiler/Llk/Sampler/Uniform.php"קh",vendor/hoa/compiler/Llk/Sampler/Coverage.php{Fקh{FCCvendor/hoa/compiler/Llk/Llk.pp קh Gr!vendor/hoa/compiler/Llk/Lexer.phpקh|O"vendor/hoa/compiler/Llk/Parser.php Qקh QJ($vendor/hoa/compiler/Llk/TreeNode.phpקhIC\ۤ.vendor/hoa/compiler/Documentation/Fr/Index.xyltקhtE.vendor/hoa/compiler/Documentation/En/Index.xylקhd/+vendor/hoa/compiler/Exception/Exception.php קh ?.vendor/hoa/compiler/Exception/IllegalToken.php קh EW 1vendor/hoa/compiler/Exception/UnexpectedToken.phpקh/=vendor/hoa/compiler/Exception/FinalStateHasNotBeenReached.phpקhbsϤ'vendor/hoa/compiler/Exception/Lexer.phpקh&vendor/hoa/compiler/Exception/Rule.phpקh5<@3vendor/hoa/compiler/Exception/UnrecognizedToken.php קh wؤvendor/hoa/compiler/Ll1.php`kקh`kF)$vendor/hoa/compiler/Visitor/Dump.php? קh? L护vendor/psr/container/LICENSEyקhyOp/vendor/psr/container/src/ContainerInterface.php"קh"H_vendor/fidry/cpu-core-counter/src/Executor/ProcessExecutor.phpקhB_?vendor/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.phpקhֺ4vendor/fidry/cpu-core-counter/src/CpuCoreCounter.php!קh!U:vendor/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php קh J&K?vendor/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.phpקh򓃢Dvendor/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.phpקhIvendor/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.phpxקhxv?vendor/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.phpMקhMt >vendor/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.phpקh=Avendor/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.phpקh k@vendor/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.phpxקhxG9>vendor/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.phpקhŤ=vendor/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.phpzקhz=L=vendor/fidry/cpu-core-counter/src/Finder/NProcessorFinder.phpקh.4?vendor/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.phpAקhA)>vendor/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.phpקh&t;vendor/fidry/cpu-core-counter/src/Finder/FinderRegistry.phpקhF}>vendor/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.phpקhǤ<vendor/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.phpvקhvvj8vendor/fidry/cpu-core-counter/src/Finder/NProcFinder.phpקhCvendor/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.phpקh>nCvendor/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.phpקhx@vendor/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php קh Ĭ:vendor/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php קh \iAvendor/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.phpקhw}/vendor/fidry/cpu-core-counter/src/Diagnoser.php{קh{ =vendor/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php$קh$L%vendor/nikic/php-parser/LICENSEקh*Fvendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.phpWקhW "4vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php קh v=vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.phpקh85vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.phpD קhD CD@vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.phpקhJ1vendor/nikic/php-parser/lib/PhpParser/Comment.phpקhi7vendor/nikic/php-parser/lib/PhpParser/ParserFactory.phpD קhD S?vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.phpnקhnZAMAvendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php|קh|.vendor/nikic/php-parser/lib/PhpParser/Node.phpקheȊԤ>vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php#קh#*tY Lvendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.phpzקhz56Z;vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php/קh/9vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.phpקh'>;8vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.phpקh @vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.phpӤקhӤw8vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.phpקh6ۤ:vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php/קh/G;vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php1קh1(jLDvendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.phpbקhba:vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php.קh.(8vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.phpקh7vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php[קh[\P5<vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.phpקhż07vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.phpg קhg koä>vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.phpקh<vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php%קh%8vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php{קh{a,;#<vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php קh w6vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.phpקhixL:vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php<קh<L=vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.phpקh?{6vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php~קh~[W{8vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php@קh@`Bvendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.phpקh!<vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.phpקhħJ2vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php9קh9[3vendor/nikic/php-parser/lib/PhpParser/Node/Expr.phpקh:7vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.phpקhj,q;vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.phpקh{:vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.phpCקhC y8vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.phpקh<vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.phpקh@ˤ8vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.phpxקhxP=vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.phpקhi$<vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.phpקh%6`:vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.phpקhx ,;vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.phpקhH=vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.phpקh'(:vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.phpNקhNoP>vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.phpקh+28<vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php0קh0,fS:vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php~קh~۵:vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.phpקhix9vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php{קh{~=vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.phpקhgAvendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php>קh>0>vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php<קh<8:vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php~קh~?(8vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php1קh1k>vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.phpקh$?vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.phpIקhI>lפ@vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.phpקh`̤?vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.phpקhkO#ͤ=vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.phpקho=>vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.phpקhd?vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.phpקh@@vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.phpקhm3?vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.phpקh8)J]:vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.phpקh =Gvendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.phpקh7F@vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.phpקhc@vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.phpקhǒ߿Gvendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.phpקh( fFvendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.phpקh.@vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.phpקh|Cvendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.phpקhAvendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.phpקh BEvendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.phpקhQBvendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.phpקhU@vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.phpקhU#`ɤGvendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.phpקhxFvendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.phpקhwúIvendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.phpקhĤGvendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.phpקhM ;vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php קh vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.phpקh9<vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php_קh_4A=vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.phpiקhinT>vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.phpקh l 9vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.phpקh*IGvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.phpAקhArL0Kvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.phpIקhIK@vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php2קh2̒_Fvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php@קh@@vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php2קh21Fvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php?קh?d;xFvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php@קh@.?Gvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php@קh@ݞFvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php>קh>Η0Gvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.phpAקhA(Dvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php:קh:Dvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php:קh:KBvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php7קh7(@vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php3קh39VGvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.phpBקhBاCvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php8קh8"ɼAvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php4קh4~i1Gvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.phpBקhBGpKvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.phpIקhI#tEvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php=קh=5p6Fvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php?קh? 72Evendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php=קh=:Bvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php6קh6߉@vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php2קh2iaGvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php@קh@LK Ivendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.phpFקhF1Fvendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php?קh?э;vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php~קh~4QCvendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.phpקhAʤAvendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.phpקhj77<vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.phpקhp Ф9vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.phpקh:vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php{קh{Avendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.phph קhh Ll^Ť:vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.phpקhճŤ9vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.phpקh2;vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php~קh~J<vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.phpקhOJ>vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.phpwקhwpAvendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.phpקhDG:vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php{קh{Ly0Fvendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.phpSקhS3ͤ>vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.phpJקhJ:vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php{קh{Y:vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php(קh(93'3vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.phpקhEt1=vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.phpקhUPR4vendor/nikic/php-parser/lib/PhpParser/Node/Param.phpsקhsbN@vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php קh T.Bvendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.phpקhE <vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php*קh* >vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.phpקh+[9vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.phpקh+:vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.phpקh >vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.phpקhiDvendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.phpקhn:vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.phpקhp/<vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.phpקhYƤ:vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.phpeקhe#>7vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php*קh*9vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.phpקhwC<vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.phpקhQM=vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php קh ܄hFvendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php קh !<;vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php%קh%ߩ'<vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.phpwקhw ,9vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.phpקhci7vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php0קh0cL <vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.phpקh_:Ǥ:vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.phprקhrŠ:vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php5קh5^?Lvendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php1קh1Q9Qvendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.phpJקhJ:`;vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.phpקhJ};vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php9קh9t>vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php קh GUBvendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.phpקhץ19vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.phpBקhB~Ȥ?vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.phpxקhx5<vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php_קh_h8vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php.קh.cW@vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.phpקh )>vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.phpקhFHod>vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.phpקhxR:vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.phpקh=vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php קh >78vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php\קh\,9vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php\קh\XEu;vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.phpקh¤7vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php2קh2?<vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.phpקh!:vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.phpקhc%=vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.phpקhU:vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.phpaקha95;vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.phpקh:9vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.phpקhyh:vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.phpקhF=eL=vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.phpקh$Uq<vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php קh / ?vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.phpקhaD;vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.phpקh,O5vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.phpsקhsuQ3vendor/nikic/php-parser/lib/PhpParser/Node/Name.phpקhV59vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.phpקhm{=vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.phpi קhi 1=vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.phpקh^T@vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.phpSקhSix>vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.phpקhdGvendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.phpDקhDCEvendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php@קh@&Q&Jvendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.phpMקhMfAGvendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.phpDקhD+0 Dvendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php=קh=)GKvendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.phpPקhPtGvendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.phpFקhF3Evendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php@קh@g¤Hvendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.phpקh՝=vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.phpYקhY285vendor/nikic/php-parser/lib/PhpParser/Node/Const_.phpקh<Ѥ5vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php+קh+PĤ9vendor/nikic/php-parser/lib/PhpParser/Parser/Multiple.phpקhFR7vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.phpקhy\5vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.phpTקhTH/vendor/nikic/php-parser/lib/PhpParser/Lexer.php&[קh&[k0vendor/nikic/php-parser/lib/PhpParser/Parser.phpקhC2Ӥ<vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.phpv%קhv%8vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php,קh,O4vendor/nikic/php-parser/lib/PhpParser/NodeDumper.phpVקhV6vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php2קh2L/vendor/nikic/php-parser/lib/PhpParser/Error.phpקh%b&1vendor/nikic/php-parser/lib/PhpParser/Builder.phpקhDvendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.phplקhl=*Mvendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php]קh] Dvendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.phpקh!FKvendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.phptקhtkڤIvendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.phpקh+Bvendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php&קh&6]vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.phpeקheNeVWvendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.phpקhV&zWvendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php} קh} N Svendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.phpקhx,Mvendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.phpקhpLSvendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php[קh[_'Kvendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.phpmקhmmzGSvendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.phpקhm src/File/FileWriter.phpקhRsrc/File/FileReader.phpקhBWͤ&src/File/CouldNotReadFileException.phpקhx1gsrc/File/RelativePathHelper.phpקh+l7src/Reflection/MissingMethodFromReflectionException.phpvקhvCzb(src/Reflection/ClassMemberReflection.phpdקhdY3٤2src/Reflection/WrappedExtendedMethodReflection.php4קh4u>G5src/Reflection/PropertiesClassReflectionExtension.phpSקhS-=[%src/Reflection/ConstantNameHelper.phpקhB.src/Reflection/InitializerExprTypeResolver.php,aקh,aQC0src/Reflection/ParametersAcceptorWithPhpDocs.phpקhO$E"src/Reflection/ClassReflection.php1קh1ͤ'2src/Reflection/MethodsClassReflectionExtension.php:קh:GgN3src/Reflection/ClassReflectionExtensionRegistry.php קh {#5src/Reflection/CallableFunctionVariantWithPhpDocs.php קh 4*Zޤ,src/Reflection/ClassMemberAccessAnswerer.phptקhtJ$src/Reflection/PassedByReference.php%קh%B9src/Reflection/MissingPropertyFromReflectionException.php}קh}D$+src/Reflection/ExtendedMethodReflection.phpIקhIX\7src/Reflection/Callables/CallableParametersAcceptor.phpקh"R.src/Reflection/Callables/SimpleImpurePoint.phpקhn-src/Reflection/Callables/SimpleThrowPoint.phpקhkC4src/Reflection/Callables/FunctionCallableVariant.phptקht,N1-src/Reflection/ParametersAcceptorSelector.phpקhі"src/Reflection/ClassNameHelper.php קh aE4src/Reflection/WrappedExtendedPropertyReflection.php7קh7];src/Reflection/Annotations/AnnotationPropertyReflection.phpkקhkEۡԤ9src/Reflection/Annotations/AnnotationMethodReflection.phpקhol㿤Lsrc/Reflection/Annotations/AnnotationsPropertiesClassReflectionExtension.phpmקhmUaIsrc/Reflection/Annotations/AnnotationsMethodsClassReflectionExtension.phpקh% Csrc/Reflection/Annotations/AnnotationsMethodParameterReflection.php.קh..src/Reflection/Dummy/DummyMethodReflection.php קh 2gV0src/Reflection/Dummy/DummyPropertyReflection.phpOקhOvE6src/Reflection/Dummy/ChangedTypePropertyReflection.php קh m0src/Reflection/Dummy/DummyConstantReflection.phpuקhuA3src/Reflection/Dummy/DummyConstructorReflection.php קh w4src/Reflection/Dummy/ChangedTypeMethodReflection.phpקh0*0src/Reflection/Native/NativeMethodReflection.php קh A>2src/Reflection/Native/NativeFunctionReflection.phpקhUR3src/Reflection/Native/NativeParameterReflection.phpקhatʤ>src/Reflection/Native/NativeParameterWithPhpDocsReflection.php קh 5+src/Reflection/PhpVersionStaticAccessor.phpkקhkq?:src/Reflection/AllowedSubTypesClassReflectionExtension.phpקhUlb-src/Reflection/ExtendedPropertyReflection.phpקhS-src/Reflection/FunctionVariantWithPhpDocs.phpקh <src/Reflection/SignatureMap/FunctionSignatureMapProvider.php 'קh 'vRp8src/Reflection/SignatureMap/Php8SignatureMapProvider.phpNקhN`Mu4src/Reflection/SignatureMap/SignatureMapProvider.phpקhX 7;src/Reflection/SignatureMap/SignatureMapProviderFactory.phpRקhR%ڏ@src/Reflection/SignatureMap/NativeFunctionReflectionProvider.php קh 7֥2src/Reflection/SignatureMap/SignatureMapParser.php קh Xu1src/Reflection/SignatureMap/FunctionSignature.phpקh2src/Reflection/SignatureMap/ParameterSignature.php?קh?ᷤ6src/Reflection/ResolvedFunctionVariantWithOriginal.php)קh)&UTsrc/Reflection/RequireExtension/RequireExtendsPropertiesClassReflectionExtension.phplקhl>Qsrc/Reflection/RequireExtension/RequireExtendsMethodsClassReflectionExtension.phpFקhFޤ$src/Reflection/NamespaceAnswerer.phpקh\w'src/Reflection/BrokerAwareExtension.phpקhJsrc/Reflection/Assertions.php קh kXƤ1src/Reflection/ParameterReflectionWithPhpDocs.phpקhy,src/Reflection/MethodPrototypeReflection.php קh # @%src/Reflection/ReflectionProvider.phpקhr!"src/Reflection/FunctionVariant.php1קh1$yפ4src/Reflection/GenericParametersAcceptorResolver.phpEקhE =Fsrc/Reflection/Type/UnionTypeUnresolvedPropertyPrototypeReflection.php קh ]U_Ksrc/Reflection/Type/IntersectionTypeUnresolvedMethodPrototypeReflection.php קh '¤:src/Reflection/Type/IntersectionTypePropertyReflection.phpnקhnT8src/Reflection/Type/IntersectionTypeMethodReflection.phpקhMsrc/Reflection/Type/IntersectionTypeUnresolvedPropertyPrototypeReflection.php קh Cy̤Dsrc/Reflection/Type/UnionTypeUnresolvedMethodPrototypeReflection.php קh 0SФIsrc/Reflection/Type/CalledOnTypeUnresolvedPropertyPrototypeReflection.phpcקhcD耤Csrc/Reflection/Type/CallbackUnresolvedMethodPrototypeReflection.php.קh.eg=src/Reflection/Type/UnresolvedPropertyPrototypeReflection.phpקhT`1src/Reflection/Type/UnionTypeMethodReflection.phpTקhT?e;src/Reflection/Type/UnresolvedMethodPrototypeReflection.phpקhC.3src/Reflection/Type/UnionTypePropertyReflection.phppקhp/~Gsrc/Reflection/Type/CalledOnTypeUnresolvedMethodPrototypeReflection.php?קh?cNEsrc/Reflection/Type/CallbackUnresolvedPropertyPrototypeReflection.phphקhh-3Psrc/Reflection/BetterReflection/SourceStubber/ReflectionSourceStubberFactory.phpקhhSsrc/Reflection/BetterReflection/SourceStubber/PhpStormStubsSourceStubberFactory.phpקhԊ@src/Reflection/BetterReflection/Reflector/MemoizingReflector.phpקh'b<src/Reflection/BetterReflection/BetterReflectionProvider.phplTקhlT"Csrc/Reflection/BetterReflection/BetterReflectionProviderFactory.php#קh#)yHsrc/Reflection/BetterReflection/BetterReflectionSourceLocatorFactory.php!קh!"kBsrc/Reflection/BetterReflection/SourceLocator/FileNodesFetcher.phpקhjn̤Gsrc/Reflection/BetterReflection/SourceLocator/AutoloadSourceLocator.phpo6קho6%zYsrc/Reflection/BetterReflection/SourceLocator/OptimizedSingleFileSourceLocatorFactory.phpקhiTsrc/Reflection/BetterReflection/SourceLocator/NewOptimizedDirectorySourceLocator.php קh Rp}Rsrc/Reflection/BetterReflection/SourceLocator/PhpVersionBlacklistSourceLocator.phpקh@src/Reflection/BetterReflection/SourceLocator/CachingVisitor.phpקhc$fVMsrc/Reflection/BetterReflection/SourceLocator/SkipClassAliasSourceLocator.phpקhsФ`src/Reflection/BetterReflection/SourceLocator/ComposerJsonAndInstalledJsonSourceLocatorMaker.php*קh*`zlQsrc/Reflection/BetterReflection/SourceLocator/OptimizedDirectorySourceLocator.php4קh4==src/Reflection/BetterReflection/SourceLocator/FetchedNode.php קh Psrc/Reflection/BetterReflection/SourceLocator/RewriteClassAliasSourceLocator.phpקh,Rsrc/Reflection/BetterReflection/SourceLocator/OptimizedSingleFileSourceLocator.php%%קh%%K!Ksrc/Reflection/BetterReflection/SourceLocator/FileReadTrapStreamWrapper.php)קh)q|Dsrc/Reflection/BetterReflection/SourceLocator/FetchedNodesResult.php'קh'QOsrc/Reflection/BetterReflection/SourceLocator/OptimizedPsrAutoloaderLocator.phpקh[bB[src/Reflection/BetterReflection/SourceLocator/OptimizedDirectorySourceLocatorRepository.phpקhbĥ@src/Reflection/BetterReflection/SourceLocator/PhpFileCleaner.php"קh"`Xsrc/Reflection/BetterReflection/SourceLocator/OptimizedDirectorySourceLocatorFactory.phpiקhi\src/Reflection/BetterReflection/SourceLocator/OptimizedSingleFileSourceLocatorRepository.phpקh?BPsrc/Reflection/BetterReflection/SourceLocator/AutoloadFunctionsSourceLocator.phpקh[HNsrc/Reflection/BetterReflection/SourceLocator/ReflectionClassSourceLocator.phpLקhL+?Vsrc/Reflection/BetterReflection/SourceLocator/OptimizedPsrAutoloaderLocatorFactory.phpsקhsǣ/`*src/Reflection/ClassConstantReflection.php\קh\\JN,src/Reflection/TrivialParametersAcceptor.phpFקhF.?Rg+src/Reflection/ResolvedMethodReflection.php=קh=*src/Reflection/ResolvedFunctionVariant.phpקhli'Ԥ-src/Reflection/ResolvedPropertyReflection.phpKקhK^p5src/Reflection/Constant/RuntimeConstantReflection.phpקh`@&src/Reflection/ParameterReflection.phpקh`}1%src/Reflection/FunctionReflection.phpקh2src/Reflection/AdditionalConstructorsExtension.phpקh W<)src/Reflection/InitializerExprContext.phpקh"+src/Reflection/GlobalConstantReflection.phpקhvZʤ%src/Reflection/PropertyReflection.phpWקhW,src/Analyser/ConditionalExpressionHolder.phpקhp7%src/Analyser/ProcessClosureResult.phpקh 1src/Analyser/ScopeContext.php קh *)src/Analyser/LazyInternalScopeFactory.phpקh9isrc/Analyser/Scope.phpקh]{!src/Analyser/ExpressionResult.phpU קhU src/Analyser/AnalyserResult.php}קh}M̤%src/Analyser/ExpressionTypeHolder.phpקh*-src/Analyser/Error.phpקhg3!src/Analyser/ConstantResolver.php+קh+31src/Analyser/MutatingScope.php\קh\8#src/Analyser/StatementExitPoint.phpqקhqI"src/Analyser/ExpressionContext.phpקhn,a%src/Analyser/InternalScopeFactory.phpקhϤƷ,src/Analyser/EnsuredNonNullabilityResult.phpWקhW{=m%src/Analyser/TypeSpecifierFactory.php=קh=yO0src/Analyser/Ignore/IgnoredErrorHelperResult.php(קh(@q7#src/Analyser/Ignore/IgnoreLexer.phpy קhy =$src/Analyser/Ignore/IgnoredError.php4 קh4 ^*src/Analyser/Ignore/IgnoredErrorHelper.phpקh~9src/Analyser/Ignore/IgnoredErrorHelperProcessedResult.php קh 48C,src/Analyser/Ignore/IgnoreParseException.phpקh툤src/Analyser/NameScope.phpIקhIe=9src/Analyser/SpecifiedTypes.php^קh^Z=(src/Analyser/ConstantResolverFactory.php?קh?)& src/Cache/MemoryCacheStorage.phpOקhO kBsrc/Cache/CacheItem.php8קh8OIWsrc/Cache/Cache.phpgקhg`src/Cache/CacheStorage.php0קh0src/Cache/FileCacheStorage.phpO קhO "+ src/Command/FixerApplication.phpUקhUB/src/Command/InceptionNotSuccessfulException.phpקh_src/Command/DiagnoseCommand.php?קh?src/Command/InceptionResult.phpzקhzP"src/Command/FixerWorkerCommand.php>קh>K!ˤsrc/Command/AnalyserRunner.php]קh]m!"src/Command/ErrorsConsoleStyle.phpקh"פsrc/Command/AnalyseCommand.php קh Ǥsrc/Command/Output.phpקh9"src/Command/AnalyseApplication.php7קh7gM}'src/Command/ClearResultCacheCommand.php קh o%src/Command/FixerProcessException.phpקhH}8src/Command/ErrorFormatter/BaselinePhpErrorFormatter.phpP קhP я3src/Command/ErrorFormatter/GithubErrorFormatter.phph קhh VԤ9src/Command/ErrorFormatter/BaselineNeonErrorFormatter.php קh &2src/Command/ErrorFormatter/JunitErrorFormatter.php קh U+7src/Command/ErrorFormatter/CheckstyleErrorFormatter.phpקh=43src/Command/ErrorFormatter/GitlabErrorFormatter.php5קh5eɤ5src/Command/ErrorFormatter/TeamcityErrorFormatter.phpקhK.1src/Command/ErrorFormatter/JsonErrorFormatter.phpRקhR"o/-src/Command/ErrorFormatter/ErrorFormatter.phpקhs̤0src/Command/ErrorFormatter/RawErrorFormatter.phpjקhj2src/Command/ErrorFormatter/TableErrorFormatter.phpPקhPjkU7src/Command/ErrorFormatter/CiDetectedErrorFormatter.phpקhDT src/Command/WorkerCommand.php,קh,|B[+src/Command/IgnoredRegexValidatorResult.phpקh3?%src/Command/DumpParametersCommand.phpFקhF]src/Command/OutputStyle.phpקh>gsrc/Command/CommandHelper.php߉קh߉7٤%src/Command/IgnoredRegexValidator.phpקhsrc/Command/AnalysisResult.phpcקhc$esrc/Command/fixer-phar.pubkey קh u䪤%src/Command/Symfony/SymfonyOutput.phpקh@<$src/Command/Symfony/SymfonyStyle.phpקh_Rsrc/TrinaryLogic.phpקh3*#src/Internal/CombinationsHelper.phpקh{ou*src/Internal/DirectoryCreatorException.php8קh8~!src/Internal/DirectoryCreator.phpקhzysrc/Internal/SprintfHelper.phpקh 6src/Internal/ComposerHelper.php קh 7A4src/Internal/ContainerDynamicReturnTypeExtension.php)קh)wCsrc/Internal/BytesHelper.phpקhe| src/autoloadFunctions.phpקhѤ(src/Broker/FunctionNotFoundException.phpקhr'src/Broker/AnonymousClassNameHelper.phpקhk0<src/Broker/BrokerFactory.phpקh6QΗ(src/Broker/ClassAutoloadingException.phpקh!uV(src/Broker/ConstantNotFoundException.phpקhcH%src/Broker/ClassNotFoundException.phpקh^zߤsrc/Broker/Broker.phpקh&src/AnalysedCodeException.phpקhiqE^src/Node/PropertyAssignNode.phpNקhNJsrc/Node/InvalidateExprNode.phpקh,src/Node/VarTagChangedExpressionTypeNode.phpקh4/src/Node/BooleanOrNode.phpקh*ksrc/Node/InTraitNode.phpyקhy@&src/Node/InstantiationCallableNode.phpקh~# src/Node/ClassPropertiesNode.phpY@קhY@ɤsrc/Node/BooleanAndNode.phpקh7cJsrc/Node/ExecutionEndNode.phpקh76src/Node/InFunctionNode.phpקh_(src/Node/Expr/GetOffsetValueTypeExpr.php4קh4%7'src/Node/Expr/ExistingArrayDimFetch.php2קh20src/Node/Expr/SetExistingOffsetValueTypeExpr.phpקhf6*src/Node/Expr/OriginalPropertyTypeExpr.phpקh4src/Node/Expr/ParameterVariableOriginalValueExpr.phpקh DHsrc/Node/Expr/TypeExpr.phpקhgä(src/Node/Expr/GetIterableKeyTypeExpr.phpקhWm2B,src/Node/Expr/PropertyInitializationExpr.phpקhl֤!src/Node/Expr/UnsetOffsetExpr.php&קh&Wc(src/Node/Expr/SetOffsetValueTypeExpr.phpקh6&src/Node/Expr/AlwaysRememberedExpr.php.קh.w~(*src/Node/Expr/GetIterableValueTypeExpr.phpקh &%src/Node/UnreachableStatementNode.phpקh!src/Node/FunctionCallableNode.phpקh;(src/Node/ClosureReturnStatementsNode.php קh \src/Node/ClassMethodsNode.phpקhjW#src/Node/BreaklessWhileLoopNode.phpקhF src/Node/InArrowFunctionNode.phpWקhWE<%src/Node/StaticMethodCallableNode.php;קh;)3E0src/Node/InClosureNode.php)קh){9S$src/Node/Printer/NodeTypePrinter.phpקhw9src/Node/Printer/Printer.phpקh$ src/Node/Printer/ExprPrinter.phpקhWԝΤ"src/Node/FinallyExitPointsNode.phpקh@q{)src/Node/FunctionReturnStatementsNode.php קh 4src/Node/ClassPropertyNode.phpקh2src/Node/ClassConstantsNode.phpקh"häsrc/Node/InForeachNode.phpקhSqGsrc/Node/MatchExpressionArm.phpקht#src/Node/MatchExpressionArmBody.php3קh3ƶ3src/Node/Method/MethodCall.phpקh[$src/Node/Property/PropertyAssign.phprקhr "src/Node/Property/PropertyRead.php קh W#src/Node/Property/PropertyWrite.phpקh}$src/Node/ClassStatementsGatherer.php#קh#src/Node/ClassMethod.phpOקhO-e(7'src/Node/MethodReturnStatementsNode.phpקhcˌsrc/Node/MethodCallableNode.phpקhoosrc/Node/NoopExpressionNode.phpקh5src/Node/VirtualNode.phpקh@Ϥsrc/Node/AnonymousClassNode.phpקhbɫsrc/Node/FileNode.phpPקhPQsrc/Node/InClassMethodNode.phpקh ܤ!src/Node/ReturnStatementsNode.phpoקho7(src/Node/Constant/ClassConstantFetch.phpiקhisrc/Node/VariableAssignNode.phpקh %src/Node/DoWhileLoopConditionNode.php<קh<{ osrc/Node/InClassNode.php2קh2bXsrc/Node/LiteralArrayNode.php~קh~9/rsrc/Node/CollectedDataNode.phpקhßsrc/Node/LiteralArrayItem.phpgקhg%k src/Node/MatchExpressionNode.phpקhذ0src/Node/IssetExpr.phpקh-nsrc/Node/ReturnStatement.phpקh쏿+src/Node/CatchWithUnthrownExceptionNode.phpקhG(src/Node/MatchExpressionArmCondition.phpקh& ++src/Classes/ForbiddenClassNameExtension.phpLקhL}жsrc/debugScope.phpקh -src/Parser/TypeTraverserInstanceofVisitor.php(קh(QFsrc/Parser/RichParser.php4קh4dR4src/Parser/RemoveUnusedCodeByPhpVersionIdVisitor.phpS קhS SL"src/Parser/ArrayFindArgVisitor.phpקh̲?"src/Parser/ArrayWalkArgVisitor.phpקh+F!src/Parser/PhpParserDecorator.phpקh#ߤsrc/Parser/LexerFactory.phpקh$B9&src/Parser/ClosureBindToVarVisitor.phpקhB/src/Parser/ImmediatelyInvokedClosureVisitor.phpקhŇo/src/Parser/MagicConstantParamDefaultVisitor.phpקhBäsrc/Parser/CleaningParser.phpקhԱD%src/Parser/ParentStmtTypesVisitor.phpnקhn &ܤ%src/Parser/DeclarePositionVisitor.phpקhmA#src/Parser/CurlSetOptArgVisitor.phpקhAc$src/Parser/AnonymousClassVisitor.phpfקhf,G src/Parser/PathRoutingParser.php קh ҂M%src/Parser/TraitCollectingVisitor.phpקh}4(Ĥ!src/Parser/ArrayMapArgVisitor.phpקh,z츤$src/Parser/ParserErrorsException.phpקh<)src/Parser/SimpleParser.phpקhFasrc/Parser/Parser.phpקh_8&src/Parser/ArrowFunctionArgVisitor.phpקhǤ src/Parser/ClosureArgVisitor.phpקhgˤ"src/Parser/TryCatchTypeVisitor.phpקhK>src/Parser/CachedParser.php קh 64l$src/Parser/ClosureBindArgVisitor.phpקh`i#src/Parser/LastConditionVisitor.php קh o+src/Parser/NewAssignedToPropertyVisitor.phpקhX$src/Parser/ArrayFilterArgVisitor.phpקhNh5*src/Parser/FunctionCallStatementFinder.phpקhJysrc/Parser/CleaningVisitor.php\ קh\ H src/PhpDoc/StubFilesProvider.phpקh%!src/PhpDoc/PhpDocNodeResolver.php iקh i$#4src/PhpDoc/NameScopeAlreadyBeingCreatedException.phpקh//!src/PhpDoc/StubFilesExtension.phptקhtR"src/PhpDoc/ResolvedPhpDocBlock.phpҙקhҙ8'src/PhpDoc/StubSourceLocatorFactory.php3 קh3 ͤ$src/PhpDoc/ConstExprNodeResolver.phpקhc src/PhpDoc/TypeNodeResolver.phpקh8src/PhpDoc/TypeNodeResolverExtensionRegistryProvider.phpקhp:(-src/PhpDoc/TypeNodeResolverAwareExtension.phpקhN,ssrc/PhpDoc/StubValidator.php7קh7喚0>src/PhpDoc/DirectTypeNodeResolverExtensionRegistryProvider.php&קh& N src/PhpDoc/Tag/ImplementsTag.php_קh_%A;src/PhpDoc/Tag/ExtendsTag.php\קh\5Y!'src/PhpDoc/Tag/RequireImplementsTag.phpfקhf|src/PhpDoc/Tag/TypedTag.phpקh*4%src/PhpDoc/Tag/MethodTagParameter.phpקhsrc/Rules/Properties/ReadOnlyByPhpDocPropertyAssignRefRule.phpxקhx1?src/Rules/Properties/AccessPrivatePropertyThroughStaticRule.php=קh=uɤ2src/Rules/Properties/NullsafePropertyFetchRule.php קh :̑6src/Rules/Properties/TypesAssignedToPropertiesRule.php קh >>Csrc/Rules/Properties/DirectReadWritePropertiesExtensionProvider.phphקhhe*3src/Rules/Properties/ReadOnlyPropertyAssignRule.phpקhSAsrc/Rules/Properties/LazyReadWritePropertiesExtensionProvider.phpקhÁ;src/Rules/Properties/ReadOnlyByPhpDocPropertyAssignRule.phpקhz/src/Rules/Properties/PropertyAttributesRule.phpקhr7=src/Rules/Properties/ReadWritePropertiesExtensionProvider.php.קh._1src/Rules/Properties/PropertyReflectionFinder.phpקhBsrc/Rules/Properties/MissingReadOnlyByPhpDocPropertyAssignRule.php קh ź8src/Rules/Properties/WritingToReadOnlyPropertiesRule.phpקh8Ġ8src/Rules/Properties/InvalidCallablePropertyTypeRule.phpקhh5src/Rules/Properties/AccessPropertiesInAssignRule.phpקh)-src/Rules/Properties/ReadOnlyPropertyRule.phpקh83src/Rules/Properties/AccessStaticPropertiesRule.phpE"קhE"1u5src/Rules/Properties/ReadOnlyByPhpDocPropertyRule.phpקh۫G2src/Rules/Properties/UninitializedPropertyRule.phpקh:UpФ;src/Rules/Properties/AccessStaticPropertiesInAssignRule.phpקh.ڤ/src/Rules/Properties/OverridingPropertyRule.php קh "ؤ*src/Rules/RuleLevelHelperAcceptsResult.phpקhzJ +src/Rules/UnusedFunctionParametersCheck.php קh ʐԤ%src/Rules/ClassForbiddenNameCheck.php קh =s src/Rules/Debug/DumpTypeRule.phpקhӤ&src/Rules/Debug/DumpPhpDocTypeRule.php*קh*zB"src/Rules/Debug/FileAssertRule.phpקh~"src/Rules/Debug/DebugScopeRule.phpHקhH src/Rules/ClassNameCheck.phpקhcHsrc/Rules/RuleError.phpקht@Фsrc/Rules/FoundTypeResult.phpקhh[gsrc/Rules/FileRuleError.phpקh!v'src/Rules/ClassCaseSensitivityCheck.phpקhPsrc/Rules/AttributesCheck.phplקhlF[src/Rules/LazyRegistry.phpקhoϒ1src/Rules/Regexp/RegularExpressionPatternRule.phpקhv!1src/Rules/Regexp/RegularExpressionQuotingRule.phpקh]pĤ9src/Rules/Comparison/WhileLoopAlwaysTrueConditionRule.php קh x8c7src/Rules/Comparison/BooleanOrConstantConditionRule.phpקh kb@src/Rules/Comparison/ImpossibleCheckTypeStaticMethodCallRule.phpקhSGsrc/Rules/Comparison/NumberComparisonOperatorsConstantConditionRule.phpp קhp , 8src/Rules/Comparison/BooleanNotConstantConditionRule.php קh Y]:src/Rules/Comparison/WhileLoopAlwaysFalseConditionRule.php2קh2P49src/Rules/Comparison/UnreachableTernaryElseBranchRule.php קh ^:src/Rules/Comparison/ImpossibleCheckTypeMethodCallRule.phpקh{,src/Rules/Comparison/MatchExpressionRule.php>קh>Y(@4src/Rules/Comparison/ConstantLooseComparisonRule.phpקhDu Ӥ7src/Rules/Comparison/UsageOfVoidMatchExpressionRule.php"קh"2src/Rules/Comparison/ImpossibleCheckTypeHelper.php"Fקh"FExǤ<src/Rules/Comparison/ImpossibleCheckTypeFunctionCallRule.phpQקhQQ=src/Rules/Comparison/TernaryOperatorConstantConditionRule.phpקh2< 0src/Rules/Comparison/IfConstantConditionRule.phpקhEW9src/Rules/Comparison/DoWhileLoopConstantConditionRule.php קh Eb4src/Rules/Comparison/ElseIfConstantConditionRule.php קh 2src/Rules/Comparison/UnreachableIfBranchesRule.php קh cIK8src/Rules/Comparison/BooleanAndConstantConditionRule.phpקh4src/Rules/Comparison/ConstantConditionRuleHelper.php קh k8src/Rules/Comparison/LogicalXorConstantConditionRule.phpקhI=src/Rules/Comparison/StrictComparisonOfDifferentTypesRule.php=קh=;&4src/Rules/Namespaces/ExistingNamesInGroupUseRule.phpקh6/src/Rules/Namespaces/ExistingNamesInUseRule.phphקhhI!src/Rules/Pure/PureMethodRule.phpקhۅ&src/Rules/Pure/FunctionPurityCheck.phpקh#src/Rules/Pure/PureFunctionRule.phpקh=2src/Rules/Cast/InvalidPartOfEncapsedStringRule.phpקh<src/Rules/Cast/PrintRule.phpYקhYQf¤"src/Rules/Cast/InvalidCastRule.php קh (ysrc/Rules/Cast/EchoRule.phpקhv src/Rules/Cast/UnsetCastRule.phpקh|Ҥ&src/Rules/Generators/YieldTypeRule.phpU קhU b-src/Rules/Generators/YieldInGeneratorRule.php"קh"}! *src/Rules/Generators/YieldFromTypeRule.php"קh"QҤ4src/Rules/Variables/ParameterOutAssignedTypeRule.php קh @!src/Rules/Variables/EmptyRule.phpUקhUeR,src/Rules/Variables/CompactVariablesRule.php קh A(src/Rules/Variables/NullCoalesceRule.phpקh1T[+src/Rules/Variables/DefinedVariableRule.phpקh^ɤ!src/Rules/Variables/IssetRule.phpקh⿤%src/Rules/Variables/ThrowTypeRule.phpQקhQO8src/Rules/Variables/ParameterOutExecutionEndTypeRule.phpקhjt+src/Rules/Variables/VariableCloningRule.phpקh-!src/Rules/Variables/UnsetRule.phpקhSY5)src/Rules/FunctionCallParametersCheck.phpdקhde6src/Rules/DeadCode/PossiblyPureMethodCallCollector.phpקh˒;src/Rules/DeadCode/FunctionWithoutImpurePointsCollector.phpקhi0src/Rules/DeadCode/UnusedPrivateConstantRule.phpTקhT8KCsrc/Rules/DeadCode/CallToMethodStatementWithoutImpurePointsRule.phphקhhʩsrc/Rules/DeadCode/NoopRule.phpקhIsrc/Rules/DeadCode/CallToStaticMethodStatementWithoutImpurePointsRule.phpקhu.src/Rules/DeadCode/UnusedPrivateMethodRule.phpקh29src/Rules/DeadCode/MethodWithoutImpurePointsCollector.phpקh%src/Rules/DeadCode/BetterNoopRule.phpKקhK\4src/Rules/DeadCode/PossiblyPureFuncCallCollector.phpקh+fY0src/Rules/DeadCode/UnusedPrivatePropertyRule.phpC!קhC!50>src/Rules/DeadCode/ConstructorWithoutImpurePointsCollector.phpקheHsrc/Rules/DeadCode/CallToConstructorStatementWithoutImpurePointsRule.phpקh B/src/Rules/DeadCode/UnreachableStatementRule.phpקh!6src/Rules/DeadCode/PossiblyPureStaticCallCollector.phpקhj/src/Rules/DeadCode/PossiblyPureNewCollector.php3קh3٤Esrc/Rules/DeadCode/CallToFunctionStatementWithoutImpurePointsRule.phpקh|9src/Rules/Functions/MissingFunctionReturnTypehintRule.php קh 8:/src/Rules/Functions/RandomIntParametersRule.phpקh?src/Rules/Functions/InvalidLexicalVariablesInClosureUseRule.phpקhdu4src/Rules/Functions/CallToFunctionParametersRule.php קh -l5src/Rules/Functions/CallToNonExistentFunctionRule.php'קh'./src/Rules/Functions/RedefinedParametersRule.phpקh4/src/Rules/Functions/ReturnNullsafeByRefRule.phpZקhZן,src/Rules/Functions/PrintfParametersRule.phps קhs G-src/Rules/Functions/UnusedClosureUsesRule.phpקhM<src/Rules/Functions/IncompatibleDefaultParameterTypeRule.phpקhƈ<src/Rules/Functions/MissingFunctionParameterTypehintRule.phpקh{1src/Rules/Functions/PrintfArrayParametersRule.phpקhۤ&src/Rules/Functions/ReturnTypeRule.php(קh(t$7Ϥ=src/Rules/Functions/ExistingClassesInClosureTypehintsRule.php\קh\(l-src/Rules/Functions/ClosureReturnTypeRule.php@קh@fn3src/Rules/Functions/ArrowFunctionReturnTypeRule.phpקh\M9src/Rules/Functions/SortParameterCastableToStringRule.phpקh2%l{,src/Rules/Functions/FunctionCallableRule.phpקh ֤'src/Rules/Functions/ArrayValuesRule.phpTקhT.6src/Rules/Functions/ExistingClassesInTypehintsRule.phpקhΤ+src/Rules/Functions/ImplodeFunctionRule.php קh CR)src/Rules/Functions/InnerFunctionRule.phpeקheEl)src/Rules/Functions/CallCallablesRule.phpPקhP6src/Rules/Functions/UselessFunctionReturnValueRule.php קh h5Isrc/Rules/Functions/IncompatibleArrowFunctionDefaultParameterTypeRule.phpקhD$src/Rules/Functions/PrintfHelper.php@ קh@ S8src/Rules/Functions/DuplicateFunctionDeclarationRule.phpקh7ҭ<src/Rules/Functions/ArrowFunctionReturnNullsafeByRefRule.phpקh6 +src/Rules/Functions/ParamAttributesRule.phpקhg$Ϥ3src/Rules/Functions/ArrowFunctionAttributesRule.php קh m0'src/Rules/Functions/ArrayFilterRule.phpקh;.Ӥ(src/Rules/Functions/CallUserFuncRule.php קh K<src/Rules/Functions/ImplodeParameterCastableToStringRule.php קh Csrc/Rules/Functions/IncompatibleClosureDefaultParameterTypeRule.phpקhW),src/Rules/Functions/DefineParametersRule.phpקhx Csrc/Rules/Functions/ExistingClassesInArrowFunctionTypehintsRule.phpקhU$.src/Rules/Functions/FunctionAttributesRule.phpקh-src/Rules/Functions/ClosureAttributesRule.phpקh7f95src/Rules/Functions/ParameterCastableToStringRule.php קh 鸤Esrc/Rules/Functions/CallToFunctionStatementWithoutSideEffectsRule.phpHקhH'>9src/Rules/Functions/VariadicParametersDeclarationRule.php2קh2k,src/Rules/Keywords/RequireFileExistsRule.phpקh(-src/Rules/Keywords/DeclareStrictTypesRule.phpקh[B.src/Rules/Keywords/ContinueBreakInLoopRule.phpקh0rsrc/Rules/RuleLevelHelper.phpMBקhMBxRG2src/Rules/Generics/MethodSignatureVarianceRule.php קh  -src/Rules/Generics/InterfaceAncestorsRule.php קh =ps%src/Rules/Generics/UsedTraitsRule.php קh [ )src/Rules/Generics/ClassAncestorsRule.phpקhxM7I/src/Rules/Generics/FunctionTemplateTypeRule.php קh faI,1src/Rules/Generics/CrossCheckInterfacesHelper.php קh Ԥ5src/Rules/Generics/MethodTagTemplateTypeTraitRule.php+קh++\-src/Rules/Generics/GenericObjectTypeCheck.phpקh-~ˤ,src/Rules/Generics/TraitTemplateTypeRule.phpZ קhZ 31src/Rules/Generics/MethodTagTemplateTypeCheck.php קh (src/Rules/Generics/EnumAncestorsRule.phpn קhn ۻ(src/Rules/Generics/TemplateTypeCheck.php)'קh)'j֤-src/Rules/Generics/MethodTemplateTypeRule.php)קh)<;$src/Rules/Generics/VarianceCheck.php,קh,%6,src/Rules/Generics/ClassTemplateTypeRule.phpקh訤+src/Rules/Generics/PropertyVarianceRule.phpקh?4src/Rules/Generics/FunctionSignatureVarianceRule.phpקhjr20src/Rules/Generics/InterfaceTemplateTypeRule.phpקha1+src/Rules/Generics/EnumTemplateTypeRule.phpקh0src/Rules/Generics/MethodTagTemplateTypeRule.phptקhtӛ:,src/Rules/Generics/GenericAncestorsCheck.phpBקhBo?,src/Rules/ParameterCastableToStringCheck.phpjקhjL/src/Rules/Methods/AlwaysUsedMethodExtension.phpKקhKGe6src/Rules/Methods/IllegalConstructorStaticCallRule.php קh %gFsrc/Rules/Methods/CallToConstructorStatementWithoutSideEffectsRule.phpקhцꑤ8src/Rules/Methods/CallPrivateMethodThroughStaticRule.phpקh1y Asrc/Rules/Methods/CallToMethodStatementWithoutSideEffectsRule.php קh >[Ф7src/Rules/Methods/AlwaysUsedMethodExtensionProvider.php)קh)E+src/Rules/Methods/CallStaticMethodsRule.php קh ӆ:src/Rules/Methods/IncompatibleDefaultParameterTypeRule.phpקh$src/Rules/Methods/ReturnTypeRule.phpקhDۊ/src/Rules/Methods/ConstructorReturnTypeRule.phpקh:m8src/Rules/Methods/MissingMethodParameterTypehintRule.phpקh@b(src/Rules/Methods/MethodCallableRule.phpקh^oN;src/Rules/Methods/LazyAlwaysUsedMethodExtensionProvider.phpקhܤ6src/Rules/Methods/IllegalConstructorMethodCallRule.phpקhx<4src/Rules/Methods/ExistingClassesInTypehintsRule.phpקhj3 5src/Rules/Methods/MissingMethodReturnTypehintRule.php קh g7/src/Rules/Methods/AbstractPrivateMethodRule.phpקh~)*src/Rules/Methods/OverridingMethodRule.php?קh? %5src/Rules/Methods/MissingMethodImplementationRule.phpקh}Ť%src/Rules/Methods/MethodCallCheck.phpקh5src/Rules/Methods/MethodVisibilityInInterfaceRule.php?קh?2src/Rules/Methods/MissingMethodSelfOutTypeRule.phpM קhM p~=src/Rules/Methods/DirectAlwaysUsedMethodExtensionProvider.phpקhAGsrc/Rules/Methods/CallToStaticMethodStatementWithoutSideEffectsRule.phpI קhI +src/Rules/Methods/StaticMethodCallCheck.php'קh'_P)src/Rules/Methods/MethodSignatureRule.php.קh.)[/src/Rules/Methods/ConsistentConstructorRule.php6קh6>Ф.src/Rules/Methods/StaticMethodCallableRule.php<קh<n,src/Rules/Methods/NullsafeMethodCallRule.phppקhpu(Ť%src/Rules/Methods/CallMethodsRule.php קh Wb:src/Rules/Methods/MissingMagicSerializationMethodsRule.php קh )5src/Rules/Methods/MethodParameterComparisonHelper.php8קh8?*src/Rules/Methods/MethodAttributesRule.phpקhU9:src/Rules/Methods/AbstractMethodInNonAbstractClassRule.phpSקhS ,src/Rules/Methods/FinalPrivateMethodRule.phpקh'ߙ4src/Rules/Constants/NativeTypedClassConstantRule.phpקhxL0src/Rules/Constants/MagicConstantContextRule.phpvקhvɺ.src/Rules/Constants/OverridingConstantRule.phpקhZk8src/Rules/Constants/MissingClassConstantTypehintRule.phpE קhE ݤ9src/Rules/Constants/AlwaysUsedClassConstantsExtension.phpקhޡr)src/Rules/Constants/FinalConstantRule.phpקha2$src/Rules/Constants/ConstantRule.phpקho^ک0src/Rules/Constants/ClassAsClassConstantRule.php}קh}8src/Rules/Constants/ValueAssignedToClassConstantRule.phpקhY5src/Rules/Constants/DynamicClassConstantFetchRule.phpקh0aAsrc/Rules/Constants/AlwaysUsedClassConstantsExtensionProvider.phpEקhER?Esrc/Rules/Constants/LazyAlwaysUsedClassConstantsExtensionProvider.php!קh!j@src/Rules/TooWideTypehints/TooWideMethodParameterOutTypeRule.phpקh͉?src/Rules/TooWideTypehints/TooWideClosureReturnTypehintRule.phpקhi Ф@src/Rules/TooWideTypehints/TooWideFunctionReturnTypehintRule.php קh Ĕ>src/Rules/TooWideTypehints/TooWideMethodReturnTypehintRule.phpMקhMhݤ6src/Rules/TooWideTypehints/TooWidePropertyTypeRule.phpקh;'Esrc/Rules/TooWideTypehints/TooWideArrowFunctionReturnTypehintRule.phpקh] WBsrc/Rules/TooWideTypehints/TooWideFunctionParameterOutTypeRule.phpקhg;src/Rules/TooWideTypehints/TooWideParameterOutTypeCheck.php? קh? o|"src/Rules/MissingTypehintCheck.phpקhrc+src/Rules/Types/InvalidTypesInUnionRule.phpL קhL K0src/Rules/MetadataRuleError.phpקhh3src/Rules/Classes/ExistingClassInInstanceOfRule.php קh @.2src/Rules/Classes/LocalTypeTraitUseAliasesRule.phpקh_v$src/Rules/Classes/MethodTagCheck.phpH/קhH/}95src/Rules/Classes/UnusedConstructorParametersRule.phpקh+src/Rules/Classes/LocalTypeAliasesCheck.php6;קh6;(u'src/Rules/Classes/ReadOnlyClassRule.phpקh iB)src/Rules/Classes/AllowedSubTypesRule.php קh 7D-src/Rules/Classes/TraitAttributeClassRule.phpPקhPE\w*src/Rules/Classes/PropertyTagTraitRule.phpקh%src/Rules/Classes/PropertyTagRule.phpקh?<src/Rules/Classes/AccessPrivateConstantThroughStaticRule.phpקh⌵1src/Rules/Classes/ExistingClassInTraitUseRule.php קh BկԤ+src/Rules/Classes/RequireImplementsRule.phpקhʤ:src/Rules/Classes/ExistingClassesInClassImplementsRule.php5 קh5 ^.(src/Rules/Classes/RequireExtendsRule.phpקhәi#src/Rules/Classes/NewStaticRule.phpקhO src/Rules/Classes/MixinCheck.phpקh߫#src/Rules/Classes/MethodTagRule.phpקhF+src/Rules/Classes/MethodTagTraitUseRule.phpקh)D9src/Rules/Classes/ExistingClassesInEnumImplementsRule.php קh aV1src/Rules/Classes/ClassConstantAttributesRule.php$קh$p.src/Rules/Classes/DuplicateDeclarationRule.phpקh/ *src/Rules/Classes/LocalTypeAliasesRule.phpקhUG}3src/Rules/Classes/DuplicateClassDeclarationRule.php קh 1=L/src/Rules/Classes/InstantiationCallableRule.phpקhݦ'src/Rules/Classes/ClassConstantRule.phpקh`ä&src/Rules/Classes/PropertyTagCheck.php\'קh\' 93src/Rules/Classes/InvalidPromotedPropertiesRule.php קh cؕ'src/Rules/Classes/InstantiationRule.php $קh $fX)src/Rules/Classes/ClassAttributesRule.phpRקhRcxsrc/Rules/Classes/MixinRule.phpקhc$src/Rules/Classes/MixinTraitRule.phpwקhw(src/Rules/Classes/MethodTagTraitRule.phpקhjyK'src/Rules/Classes/MixinTraitUseRule.phpקh~-src/Rules/Classes/PropertyTagTraitUseRule.phpקhwbv5src/Rules/Classes/ExistingClassInClassExtendsRule.php+קh+"Pw-0src/Rules/Classes/NonClassAttributeClassRule.phpfקhf-Y/src/Rules/Classes/LocalTypeTraitAliasesRule.phpקh{ج.src/Rules/Classes/ImpossibleInstanceOfRule.phpקhwO;src/Rules/Classes/ExistingClassesInInterfaceExtendsRule.php קh '21$src/Rules/Classes/EnumSanityRule.php^קh^8src/Rules/LineRuleError.phpקh[%7'src/Rules/PhpDoc/FunctionAssertRule.phpקhU֤0src/Rules/PhpDoc/InvalidPhpDocVarTagTypeRule.phpקhQգ.src/Rules/PhpDoc/GenericCallableRuleHelper.phpקh +src/Rules/PhpDoc/UnresolvableTypeHelper.phpEקhE u%src/Rules/PhpDoc/AssertRuleHelper.php%קh%vZ9src/Rules/PhpDoc/RequireImplementsDefinitionTraitRule.php קh qf(src/Rules/PhpDoc/RequireExtendsCheck.phpD קhD 5)src/Rules/PhpDoc/VarTagTypeRuleHelper.phpJ#קhJ#]E1src/Rules/PhpDoc/InvalidThrowsPhpDocValueRule.php קh #7src/Rules/PhpDoc/IncompatiblePropertyPhpDocTypeRule.phpקhޤ%src/Rules/PhpDoc/PhpDocLineHelper.php:קh:6}Dsrc/Rules/PhpDoc/IncompatibleParamImmediatelyInvokedCallableRule.php קh U2src/Rules/PhpDoc/WrongVariableNameInVarTagRule.php6קh6la4src/Rules/PhpDoc/VarTagChangedExpressionTypeRule.phphקhhˊ4src/Rules/PhpDoc/MethodConditionalReturnTypeRule.phpקh!̷ܤ6src/Rules/PhpDoc/RequireExtendsDefinitionClassRule.php0קh0BF0src/Rules/PhpDoc/IncompatibleSelfOutTypeRule.phpd קhd O-src/Rules/PhpDoc/InvalidPHPStanDocTagRule.phpקhaB6src/Rules/PhpDoc/FunctionConditionalReturnTypeRule.phpקhF%src/Rules/PhpDoc/MethodAssertRule.phpקhχ<src/Rules/PhpDoc/IncompatibleClassConstantPhpDocTypeRule.php קh j逘/src/Rules/PhpDoc/IncompatiblePhpDocTypeRule.phpc.קhc.)A3.src/Rules/PhpDoc/InvalidPhpDocTagValueRule.phpקh=9src/Rules/PhpDoc/RequireImplementsDefinitionClassRule.phpקh[6src/Rules/PhpDoc/RequireExtendsDefinitionTraitRule.php קh FC=4src/Rules/PhpDoc/ConditionalReturnTypeRuleHelper.phpקhyƐ/src/Rules/Api/RuntimeReflectionFunctionRule.phpקhU (src/Rules/Api/ApiClassConstFetchRule.phpf קhf _2z'src/Rules/Api/ApiInstanceofTypeRule.php<קh<&src/Rules/Api/BcUncoveredInterface.phpקh ٤4src/Rules/Api/RuntimeReflectionInstantiationRule.php: קh: Mh%&src/Rules/Api/ApiInstantiationRule.php קh ױ)src/Rules/Api/ApiInterfaceExtendsRule.php) קh) z6ݤsrc/Rules/Api/ApiRuleHelper.phph קhh 1J%src/Rules/Api/GetTemplateTypeRule.php קh %src/Rules/Api/ApiClassExtendsRule.php קh R#src/Rules/Api/ApiMethodCallRule.php> קh> +`|#src/Rules/Api/ApiStaticCallRule.php קh (src/Rules/Api/ApiClassImplementsRule.php+ קh+ Y!src/Rules/Api/ApiTraitUseRule.phpקhL7src/Rules/Api/PhpStanNamespaceIn3rdPartyPackageRule.php קh ϜbF5src/Rules/Api/NodeConnectingVisitorAttributesRule.php קh `b#src/Rules/Api/ApiInstanceofRule.php[קh[jlZ%src/Rules/FunctionReturnTypeCheck.phpP קhP Ȯ$src/Rules/RuleErrors/RuleError91.phpקh *$src/Rules/RuleErrors/RuleError57.phpקhc $src/Rules/RuleErrors/RuleError43.phpקhW$src/Rules/RuleErrors/RuleError71.phpקhⳠ%src/Rules/RuleErrors/RuleError109.phpקh6:$src/Rules/RuleErrors/RuleError81.phptקhtȃe$src/Rules/RuleErrors/RuleError25.phpקh-$Ť$src/Rules/RuleErrors/RuleError85.phpקh@9$src/Rules/RuleErrors/RuleError75.phpקh䎀%src/Rules/RuleErrors/RuleError111.php<קh<g0!:$src/Rules/RuleErrors/RuleError87.php{קh{oY$src/Rules/RuleErrors/RuleError61.phpקhyY$src/Rules/RuleErrors/RuleError33.phpEקhE M$src/Rules/RuleErrors/RuleError27.phpקhG:%src/Rules/RuleErrors/RuleError125.php`קh`+#src/Rules/RuleErrors/RuleError3.phpקh``$src/Rules/RuleErrors/RuleError37.phpקhb $src/Rules/RuleErrors/RuleError23.php;קh;[D$src/Rules/RuleErrors/RuleError17.php4קh4ȹ$src/Rules/RuleErrors/RuleError19.phpקh.~U#src/Rules/RuleErrors/RuleError9.phpקhq&%src/Rules/RuleErrors/RuleError115.phpקh |$src/Rules/RuleErrors/RuleError99.php3קh3?$src/Rules/RuleErrors/RuleError13.phpjקhjŤ#src/Rules/RuleErrors/RuleError7.phphקhh#src/Rules/RuleErrors/RuleError5.phpקhk*$src/Rules/RuleErrors/RuleError47.phpקh1$src/Rules/RuleErrors/RuleError67.phpPקhPԶߤ$src/Rules/RuleErrors/RuleError89.php#קh#l-src/Rules/RuleErrorBuilder.phpקh/src/Rules/DirectRegistry.php%קh%u.src/Rules/Exceptions/NoncapturingCatchRule.phpקh$.src/Rules/Exceptions/TooWideThrowTypeCheck.phpקhVѤ3src/Rules/Exceptions/TooWideMethodThrowTypeRule.phpקh_~Bsrc/Rules/Exceptions/MissingCheckedExceptionInMethodThrowsRule.phpקhg 5src/Rules/Exceptions/TooWideFunctionThrowTypeRule.phpZקhZSڱCsrc/Rules/Exceptions/ThrowsVoidMethodWithExplicitThrowPointRule.php קh /zh5src/Rules/Exceptions/DefaultExceptionTypeResolver.phpקhÔw7src/Rules/Exceptions/CatchWithUnthrownExceptionRule.phpTקhTX*src/Rules/Exceptions/ThrowExprTypeRule.phpVקhVM(KDsrc/Rules/Exceptions/MissingCheckedExceptionInFunctionThrowsRule.php}קh}煤,src/Rules/Exceptions/ThrowExpressionRule.phpקh]Esrc/Rules/Exceptions/ThrowsVoidFunctionWithExplicitThrowPointRule.php קh ӗ5src/Rules/Exceptions/CaughtExceptionExistenceRule.php קh ~w)=src/Rules/Exceptions/MissingCheckedExceptionInThrowsCheck.phpקh~:src/Rules/Exceptions/OverwrittenExitPointByFinallyRule.php$קh$9}.src/Rules/Exceptions/ExceptionTypeResolver.phpקhssrc/Rules/TipRuleError.phpקh|src/Rules/NullsafeCheck.phpקhìsrc/Rules/IssetCheck.php/קh/c쑤%src/Rules/FunctionDefinitionCheck.phpfקhfUҤsrc/Rules/ClassNameNodePair.phpקh$hͤ&src/Rules/Playground/NoPhpCodeRule.phpVקhV:E Ԥ*src/Rules/Playground/FunctionNeverRule.phpUקhU{٤(src/Rules/Playground/NeverRuleHelper.phpקh@.-src/Rules/Playground/NotAnalysedTraitRule.phpקhZʆ(src/Rules/Playground/MethodNeverRule.phpwקhw]r#src/Rules/NonIgnorableRuleError.phpקh6y̤src/Rules/Registry.php'קh'!src/Rules/Names/UsedNamesRule.phpקhv.src/Rules/Traits/TraitDeclarationCollector.php[קh[놤2src/Rules/Traits/ConflictingTraitConstantsRule.php#קh#$Pפ*src/Rules/Traits/ConstantsInTraitsRule.php*קh*٤)src/Rules/Traits/NotAnalysedTraitRule.phpקhx^*&src/Rules/Traits/TraitUseCollector.phpקh8'src/Rules/Missing/MissingReturnRule.phppקhp6-src/Rules/Arrays/OffsetAccessAssignOpRule.php קh ,7(.src/Rules/Arrays/AppendedArrayItemTypeRule.php קh ģ$src/Rules/Arrays/DeadForeachRule.phpקhAȤ2src/Rules/Arrays/InvalidKeyInArrayDimFetchRule.phpקhM:src/Rules/Arrays/NonexistentOffsetInArrayDimFetchCheck.phpקhy9src/Rules/Arrays/OffsetAccessWithoutDimForReadingRule.phpקh?-src/Rules/Arrays/AppendedArrayKeyTypeRule.php קh e'src/Rules/Arrays/EmptyArrayItemRule.php:קh:Yr:.src/Rules/Arrays/UnpackIterableInArrayRule.phpקhr*src/Rules/Arrays/IterableInForeachRule.phpBקhBpz.src/Rules/Arrays/InvalidKeyInArrayItemRule.phpקh>Zf*src/Rules/Arrays/AllowedArrayKeysTypes.php{ קh{ ~mB+src/Rules/Arrays/ArrayDestructuringRule.phpZ קhZ 1s9src/Rules/Arrays/NonexistentOffsetInArrayDimFetchRule.php קh r}{o'src/Rules/Arrays/ArrayUnpackingRule.phpgקhg⩤4src/Rules/Arrays/OffsetAccessValueAssignmentRule.php קh UV5src/Rules/Arrays/DuplicateKeysInLiteralArraysRule.phpiקhi P/src/Rules/Arrays/OffsetAccessAssignmentRule.php קh :)src/Rules/Ignore/IgnoreParseErrorRule.phpBקhBb-.src/Rules/EnumCases/EnumCaseAttributesRule.phpקh8]*!src/Rules/IdentifierRuleError.phpקhMT3'src/Rules/DateTimeInstantiationRule.php/קh/+^src/Rules/Rule.phpקhYړ+src/Rules/Whitespace/FileWhitespaceRule.php_ קh_ src/Type/LateResolvableType.phpקh1src/Type/TypeWithClassName.php\קh\'ܤ(src/Type/ParserNodeTypeToPHPStanType.phpקh2"src/Type/LooseComparisonHelper.php קh 9ͤ(src/Type/GenericTypeVariableResolver.phpקh0?1src/Type/CircularTypeAliasDefinitionException.phpקhűä*src/Type/MethodTypeSpecifyingExtension.php'קh'T\0e,src/Type/MethodParameterOutTypeExtension.phpקh src/Type/TypeTraverser.php*קh*pI'src/Type/Helper/GetTemplateTypeType.php קh 2src/Type/StaticMethodParameterOutTypeExtension.phpקhsrc/Type/TypeAliasResolver.php4קh4Л"src/Type/JustNullableTypeTrait.php2קh2OchG)src/Type/Accessory/HasOffsetValueType.php5קh5fс)src/Type/Accessory/OversizedArrayType.phpk*קhk*T%aӤ3src/Type/Accessory/AccessoryLowercaseStringType.phpo$קho$3src/Type/Accessory/AccessoryUppercaseStringType.phpo$קho$o 1src/Type/Accessory/AccessoryLiteralStringType.php$קh$dT-src/Type/Accessory/AccessoryArrayListType.php10קh104(src/Type/Accessory/NonEmptyArrayType.php+קh+դ$src/Type/Accessory/HasOffsetType.phpO,קhO,)9&src/Type/Accessory/HasPropertyType.phpקhȨ`2src/Type/Accessory/AccessoryNonEmptyStringType.php&קh&Ѥ$src/Type/Accessory/HasMethodType.phpקhǚ$src/Type/Accessory/AccessoryType.phpקh;ʠ1src/Type/Accessory/AccessoryNumericStringType.php%קh%+2src/Type/Accessory/AccessoryNonFalsyStringType.php'$קh'$!f&src/Type/TypeAliasResolverProvider.phpקh!nsrc/Type/SubtractableType.phpקhsrc/Type/KeyOfType.php& קh& s٤*src/Type/LazyTypeAliasResolverProvider.phpקhcksrc/Type/ClosureTypeFactory.phplקhl?ݤ'src/Type/CircularTypeAliasErrorType.phpקh[}src/Type/ObjectShapeType.phpGקhGasrc/Type/ExponentiateHelper.phpקhMsrc/Type/VerbosityLevel.phpuקhuS,src/Type/FunctionTypeSpecifyingExtension.phpקhg\Psrc/Type/ValueOfType.php קh E2src/Type/FunctionParameterClosureTypeExtension.phpקh_src/Type/Type.php0קh0$F$src/Type/UsefulTypeAliasResolver.phpקhпsrc/Type/UnionType.php(קh([src/Type/ClassStringType.phpM קhM src/Type/ConstantTypeHelper.php קh D㫤,src/Type/DirectTypeAliasResolverProvider.phpקh)src/Type/ConditionalType.phpקh,src/Type/DynamicMethodThrowTypeExtension.phpgקhgޭ^3src/Type/DynamicStaticMethodReturnTypeExtension.phpקhCѤsrc/Type/TypehintHelper.php%קh%Z}6src/Type/StaticMethodParameterClosureTypeExtension.phpקhc}Bsrc/Type/NewObjectType.php6 קh6 src/Type/CallableTypeHelper.phpקh"Tʤsrc/Type/StringType.phpI!קhI!G \ src/Type/IsSuperTypeOfResult.phpVקhV0\/src/Type/DynamicFunctionReturnTypeExtension.php~קh~src/Type/IterableType.php=קh=e/src/Type/DynamicReturnTypeExtensionRegistry.phpקhn&src/Type/TypeAlias.phpiקhi9 src/Type/MixedType.php8קh84src/Type/OperatorTypeSpecifyingExtensionRegistry.php קh 4,src/Type/ExpressionTypeResolverExtension.phpIקhIC8src/Type/StaticTypeFactory.phpקhesrc/Type/ObjectType.phpxקhxF28&src/Type/SimultaneousTypeTraverser.phpקh,դsrc/Type/NullType.phpo)קho),@#src/Type/Regex/RegexAlternation.phpקh^ m'src/Type/Regex/RegexGroupWalkResult.php קh c#src/Type/Regex/RegexGroupParser.phpTקhTeāX)src/Type/Regex/RegexNonCapturingGroup.phpmקhm%D&src/Type/Regex/RegexCapturingGroup.phpקh+-ڤ(src/Type/Regex/RegexExpressionHelper.phpקh(Ϥ%src/Type/Regex/RegexAstWalkResult.php קh iڤsrc/Type/ResourceType.phpw קhw src/Type/ConstantType.php|קh|>Gsrc/Type/RecursionGuard.phpקh}O(src/Type/ConditionalTypeForParameter.phpקhΤsrc/Type/OffsetAccessType.php קh <'src/Type/NonexistentParentClassType.phpקhzsrc/Type/BitwiseFlagHelper.php קh *-{0src/Type/MethodParameterClosureTypeExtension.phpsקhsMҌ0src/Type/StaticMethodTypeSpecifyingExtension.phpGקhGz;src/Type/IntersectionType.php\קh\Ww,src/Type/OperatorTypeSpecifyingExtension.phpקh tF$src/Type/Enum/EnumCaseObjectType.phpקh Msrc/Type/ClosureType.phpaקhaF;src/Type/StrictMixedType.phpu/קhu/ֹsrc/Type/BooleanType.phpקh D]src/Type/IntegerRangeType.phpc\קhc\Y]2src/Type/Constant/ConstantScalarToBooleanTrait.phpקh&.src/Type/Constant/ConstantArrayTypeBuilder.php0קh0K0src/Type/Constant/ConstantArrayTypeAndMethod.phpקh.'src/Type/Constant/ConstantArrayType.phppקhpByŤ)src/Type/Constant/ConstantIntegerType.php קh j+src/Type/Constant/OversizedArrayBuilder.phpקhvj')src/Type/Constant/ConstantBooleanType.php קh 'src/Type/Constant/ConstantFloatType.php קh B(src/Type/Constant/ConstantStringType.phpKקhK?}Ǥ"src/Type/NonAcceptingNeverType.phpקhE3src/Type/NeverType.php6קh6&src/Type/TypeResult.phpקh( src/Type/BenevolentUnionType.phpקhDfr2src/Type/DynamicStaticMethodThrowTypeExtension.phpקhsrc/Type/CompoundType.phpקhUsrc/Type/ThisType.php? קh? w-src/Type/StaticType.php^קh^ID*src/Type/ObjectShapePropertyReflection.phpקhc4src/Type/ExpressionTypeResolverExtensionRegistry.php'קh'ynsrc/Type/ErrorType.phpקhXäsrc/Type/ConstantScalarType.phpקh)Ysrc/Type/AcceptsResult.php קh x|wsrc/Type/CallableType.phpgSקhgS* 8src/Type/StringAlwaysAcceptingObjectWithToStringType.phpקhY 94src/Type/Php/ArrayMapFunctionReturnTypeExtension.phpmקhmva/src/Type/Php/PowFunctionReturnTypeExtension.php{קh{_ڤ-src/Type/Php/DateFunctionReturnTypeHelper.phpקhݠ_7src/Type/Php/ArrayCurrentDynamicReturnTypeExtension.phpקh77src/Type/Php/IsArrayFunctionTypeSpecifyingExtension.phpקh$Ұ7src/Type/Php/ArrayReduceFunctionReturnTypeExtension.phpקh{u'src/Type/Php/RegexArrayShapeMatcher.phpDקhD>src/Type/Php/ClosureFromCallableDynamicReturnTypeExtension.php~קh~{s$1src/Type/Php/CountFunctionReturnTypeExtension.phpקhj.m8src/Type/Php/ArrayCombineFunctionReturnTypeExtension.php^קh^¤=src/Type/Php/ArrayMergeFunctionDynamicReturnTypeExtension.phpקhlӤ5src/Type/Php/ArrayFlipFunctionReturnTypeExtension.php קh VQ2src/Type/Php/HrtimeFunctionReturnTypeExtension.phpקh:src/Type/Php/DateIntervalConstructorThrowTypeExtension.phpקhP47@src/Type/Php/ReflectionPropertyConstructorThrowTypeExtension.php קh <src/Type/Php/ArrayKeysFunctionDynamicReturnTypeExtension.php:קh:0~;src/Type/Php/ArraySearchFunctionTypeSpecifyingExtension.phpHקhHkԤ?src/Type/Php/GettimeofdayDynamicFunctionReturnTypeExtension.phpJקhJR>7src/Type/Php/TrimFunctionDynamicReturnTypeExtension.phpקhv>src/Type/Php/ArrayKeyExistsFunctionTypeSpecifyingExtension.phpf קhf ;src/Type/Php/ClassExistsFunctionTypeSpecifyingExtension.phpקh j:src/Type/Php/HighlightStringDynamicReturnTypeExtension.phpקhk8?src/Type/Php/StrWordCountFunctionDynamicReturnTypeExtension.php$קh$|44src/Type/Php/StrSplitFunctionReturnTypeExtension.phpקh*6src/Type/Php/ClosureBindDynamicReturnTypeExtension.phpקh]1src/Type/Php/HashFunctionsReturnTypeExtension.php@קh@"D6src/Type/Php/AssertFunctionTypeSpecifyingExtension.phpקh&f4src/Type/Php/MbFunctionsReturnTypeExtensionTrait.phpקho% 9>src/Type/Php/SimpleXMLElementConstructorThrowTypeExtension.phpwקhwtZˤ?src/Type/Php/NumberFormatFunctionDynamicReturnTypeExtension.phpקh vQ8src/Type/Php/ArrayReplaceFunctionReturnTypeExtension.phpjקhjbp5src/Type/Php/StrtotimeFunctionReturnTypeExtension.php קh 1)S1src/Type/Php/PregMatchTypeSpecifyingExtension.php4 קh4 iK9src/Type/Php/GetCalledClassDynamicReturnTypeExtension.phpקh*4src/Type/Php/DateFormatMethodReturnTypeExtension.php&קh&9Ӥ3src/Type/Php/GetClassDynamicReturnTypeExtension.php% קh% wϡ6src/Type/Php/AbsFunctionDynamicReturnTypeExtension.phpקhD8src/Type/Php/GetDebugTypeFunctionReturnTypeExtension.phpקhL>src/Type/Php/ArrayValuesFunctionDynamicReturnTypeExtension.php@קh@E"?7src/Type/Php/ArrayFilterFunctionReturnTypeExtension.phpקhov0src/Type/Php/DsMapDynamicReturnTypeExtension.php:קh:̢;src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.phpקhcQK6src/Type/Php/ArraySliceFunctionReturnTypeExtension.phpyקhyXAsrc/Type/Php/GetParentClassDynamicFunctionReturnTypeExtension.php קh #hŤAsrc/Type/Php/SimpleXMLElementClassPropertyReflectionExtension.phpקh?@6src/Type/Php/PregFilterFunctionReturnTypeExtension.phpקh|/src/Type/Php/FilterFunctionReturnTypeHelper.php4Bקh4B>B8src/Type/Php/PregReplaceCallbackClosureTypeExtension.phpקh 2src/Type/Php/ParseStrParameterOutTypeExtension.phpקhǬ1src/Type/Php/LtrimFunctionReturnTypeExtension.php[קh[ILɤ3src/Type/Php/CompactFunctionReturnTypeExtension.phpt קht bj8src/Type/Php/ClosureBindToDynamicReturnTypeExtension.phpקh@src/Type/Php/ReflectionFunctionConstructorThrowTypeExtension.phpjקhj20src/Type/Php/DateFunctionReturnTypeExtension.phpקhDԤ5src/Type/Php/CountFunctionTypeSpecifyingExtension.phpקhbQ6src/Type/Php/ArrayChunkFunctionReturnTypeExtension.phpiקhiy5src/Type/Php/StrRepeatFunctionReturnTypeExtension.phpקh+ON>src/Type/Php/ArraySearchFunctionDynamicReturnTypeExtension.php&קh&O /src/Type/Php/StatDynamicReturnTypeExtension.phpnקhnڤPD2src/Type/Php/StrPadFunctionReturnTypeExtension.php) קh) ap4src/Type/Php/PregSplitDynamicReturnTypeExtension.phpsקhs<src/Type/Php/IsSubclassOfFunctionTypeSpecifyingExtension.php קh *٤3src/Type/Php/ImplodeFunctionReturnTypeExtension.phpקhy4src/Type/Php/DateTimeSubMethodThrowTypeExtension.php קh դ4src/Type/Php/MethodExistsTypeSpecifyingExtension.phpקh̓9:src/Type/Php/IsIterableFunctionTypeSpecifyingExtension.php.קh.R37src/Type/Php/ArrayKeyLastDynamicReturnTypeExtension.phpקh?y5src/Type/Php/DsMapDynamicMethodThrowTypeExtension.phpקh fS6src/Type/Php/FilterInputDynamicReturnTypeExtension.phpקh^(Ȥ>src/Type/Php/CurlGetinfoFunctionDynamicReturnTypeExtension.phpקhx!3src/Type/Php/DateTimeDynamicReturnTypeExtension.php;קh;00Asrc/Type/Php/VersionCompareFunctionDynamicReturnTypeExtension.php קh 3src/Type/Php/ArrayKeyDynamicReturnTypeExtension.phpקh*1=2src/Type/Php/StrlenFunctionReturnTypeExtension.php קh S]6src/Type/Php/DateFormatFunctionReturnTypeExtension.phpקh¥Cs)src/Type/Php/IntdivThrowTypeExtension.phpgקhgC7src/Type/Php/ArraySpliceFunctionReturnTypeExtension.phpקhn/src/Type/Php/MbFunctionsReturnTypeExtension.php קh `,4src/Type/Php/ArrayFilterFunctionReturnTypeHelper.php1קh1! K2src/Type/Php/MinMaxFunctionReturnTypeExtension.php קh wl?src/Type/Php/SimpleXMLElementXpathMethodReturnTypeExtension.phpקhY?/=src/Type/Php/ReflectionClassConstructorThrowTypeExtension.php&קh&91src/Type/Php/RangeFunctionReturnTypeExtension.php5קh5 =src/Type/Php/ArrayIntersectKeyFunctionReturnTypeExtension.phpקhmB*src/Type/Php/IniGetReturnTypeExtension.phpקhWN7src/Type/Php/InArrayFunctionTypeSpecifyingExtension.phpקh%*z?src/Type/Php/BackedEnumFromMethodDynamicReturnTypeExtension.phpz קhz ;src/Type/Php/IteratorToArrayFunctionReturnTypeExtension.phpaקhamUBɤ@src/Type/Php/ArrayPointerFunctionsDynamicReturnTypeExtension.phpקhuC5src/Type/Php/ArrayRandFunctionReturnTypeExtension.php!קh!`6src/Type/Php/DateTimeConstructorThrowTypeExtension.phpקhAsrc/Type/Php/StrIncrementDecrementFunctionReturnTypeExtension.phpקh*Z9src/Type/Php/DateTimeCreateDynamicReturnTypeExtension.php.קh.(1[4src/Type/Php/MbStrlenFunctionReturnTypeExtension.phpקh^Yܤ3src/Type/Php/IsAFunctionTypeSpecifyingExtension.phpH קhH ΃e5src/Type/Php/MicrotimeFunctionReturnTypeExtension.phpקh¤4src/Type/Php/ArrayPopFunctionReturnTypeExtension.phpקhƤ6src/Type/Php/BcMathStringOrNullReturnTypeExtension.phpj(קhj(WYsrc/Type/Php/ArrayChangeKeyCaseFunctionReturnTypeExtension.phpקhy-lBsrc/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php/ קh/ ⩏5src/Type/Php/ArrayFillFunctionReturnTypeExtension.php) קh) b-src/Type/Php/ThrowableReturnTypeExtension.phpקhs2src/Type/Php/StrrevFunctionReturnTypeExtension.php קh -?src/Type/Php/Base64DecodeDynamicFunctionReturnTypeExtension.phpקhgR:src/Type/Php/IsCallableFunctionTypeSpecifyingExtension.php קh {`֤:src/Type/Php/DateTimeZoneConstructorThrowTypeExtension.phpקhzZ9src/Type/Php/DatePeriodConstructorReturnTypeExtension.php$ קh$ mFܤ:src/Type/Php/ExplodeFunctionDynamicReturnTypeExtension.php קh f*7src/Type/Php/SetTypeFunctionTypeSpecifyingExtension.php; קh; G:src/Type/Php/CtypeDigitFunctionTypeSpecifyingExtension.php קh W:src/Type/Php/DioStatDynamicFunctionReturnTypeExtension.phpקh 2src/Type/Php/DateTimeModifyReturnTypeExtension.php9 קh9 w1src/Type/Php/SubstrDynamicReturnTypeExtension.phpoקhofڤ3src/Type/Php/PregMatchParameterOutTypeExtension.phphקhhH 7src/Type/Php/DateIntervalDynamicReturnTypeExtension.phpקhqM>:src/Type/Php/GetDefinedVarsFunctionReturnTypeExtension.phpקh {Asrc/Type/Php/ReflectionGetAttributesMethodReturnTypeExtension.phpקh-rJ1src/Type/Php/XMLReaderOpenReturnTypeExtension.phpקhh8src/Type/Php/ArrayReverseFunctionReturnTypeExtension.phpקh"ˤ>src/Type/Php/FunctionExistsFunctionTypeSpecifyingExtension.phpAקhA 'src/Type/Php/JsonThrowTypeExtension.phpNקhND+2;src/Type/Php/ArraySumFunctionDynamicReturnTypeExtension.phpקhVN6src/Type/Php/PropertyExistsTypeSpecifyingExtension.php קh /m8src/Type/Php/ArrayKeyFirstDynamicReturnTypeExtension.phpקhyZ9src/Type/Php/FilterVarArrayDynamicReturnTypeExtension.php קh Gv4src/Type/Php/ArrayNextDynamicReturnTypeExtension.phpקh*E@src/Type/Php/MbSubstituteCharacterDynamicReturnTypeExtension.php\קh\ )7src/Type/Php/ArrayColumnFunctionReturnTypeExtension.phpקhI[Фsrc/Type/Php/ConstantHelper.phpZקhZt99src/Type/Php/SscanfFunctionDynamicReturnTypeExtension.phpg קhg ns1src/Type/Php/RoundFunctionReturnTypeExtension.php קh Mcw9src/Type/Php/ArgumentBasedFunctionReturnTypeExtension.php קh x;src/Type/Php/ParseUrlFunctionDynamicReturnTypeExtension.phpקhΉ>src/Type/Php/ReflectionMethodConstructorThrowTypeExtension.php} קh} *Τ4src/Type/Php/ConstantFunctionReturnTypeExtension.phpקhԤ5src/Type/Php/ArrayFindFunctionReturnTypeExtension.php3קh3S8src/Type/Php/ArrayFindKeyFunctionReturnTypeExtension.php+קh+*")src/Type/Php/AssertThrowTypeExtension.php$קh$M9src/Type/Php/ArrayFillKeysFunctionReturnTypeExtension.phpFקhFCl ;src/Type/Php/ClassImplementsFunctionReturnTypeExtension.php{קh{c%w7src/Type/Php/DefinedConstantTypeSpecifyingExtension.phpקhӰ:src/Type/Php/SprintfFunctionDynamicReturnTypeExtension.php0קh0A8src/Type/Php/OpenSslEncryptParameterOutTypeExtension.php קh UCsrc/Type/Php/ReflectionClassIsSubclassOfTypeSpecifyingExtension.phpקh,Ф=src/Type/Php/MbConvertEncodingFunctionReturnTypeExtension.phpקhg#;src/Type/Php/JsonThrowOnErrorDynamicReturnTypeExtension.phpקh-ۤsrc/Type/IntegerType.phpקh0src/Type/Traits/UndecidedComparisonTypeTrait.phpקhn*src/Type/Traits/TruthyBooleanTypeTrait.phpקh *src/Type/Traits/NonRemoveableTypeTrait.phpקh4i8'src/Type/Traits/MaybeArrayTypeTrait.phpקh{6src/Type/Traits/ConstantNumericComparisonTypeTrait.php) קh) 5#src/Type/Traits/ObjectTypeTrait.php{קh{s>0(src/Type/Traits/NonCallableTypeTrait.phpקhզ[-src/Type/Traits/NonGeneralizableTypeTrait.phpקhf7ݤ2src/Type/Traits/MaybeOffsetAccessibleTypeTrait.phpxקhx*src/Type/Traits/FalseyBooleanTypeTrait.phpקh4k1+src/Type/Traits/LateResolvableTypeTrait.php=קh=: *src/Type/Traits/MaybeCallableTypeTrait.phpקh(src/Type/Traits/MaybeObjectTypeTrait.php קh 2{*src/Type/Traits/MaybeIterableTypeTrait.phpIקhI%src/Type/Traits/NonArrayTypeTrait.phpקh݄#8src/Type/Traits/UndecidedComparisonCompoundTypeTrait.phpקh(src/Type/Traits/NonIterableTypeTrait.phpקh. |0src/Type/Traits/NonOffsetAccessibleTypeTrait.phpקh&src/Type/Traits/NonObjectTypeTrait.phpu קhu B'src/Type/Traits/NonGenericTypeTrait.phpקhށ-src/Type/Traits/UndecidedBooleanTypeTrait.phpקhȷ+src/Type/Traits/ConstantScalarTypeTrait.php6קh6z;r1-src/Type/DynamicMethodReturnTypeExtension.phpקhC$.src/Type/FunctionParameterOutTypeExtension.phpקh$%¤src/Type/TypeUtils.php~2קh~2&,src/Type/TypeCombinator.phpקhERjsrc/Type/ArrayType.phpcקhcpsrc/Type/FloatType.phpקhj:src/Type/FileTypeMapper.php4קh4:릤#src/Type/ObjectWithoutClassType.phpקhX@ src/Type/GeneralizePrecision.phpקh0"?src/Type/UnionTypeHelper.php~קh~"o(src/Type/Generic/TemplateTypeFactory.phpTקhTiI)src/Type/Generic/TemplateIterableType.php+קh+^,src/Type/Generic/TemplateObjectShapeType.phpקh b*src/Type/Generic/TemplateTypeReference.phpקhB8&src/Type/Generic/TemplateUnionType.php-קh-`mh2src/Type/Generic/TemplateTypeParameterStrategy.phpקh(})src/Type/Generic/TemplateTypeVariance.phpקhK'src/Type/Generic/TemplateTypeHelper.phpקh/%,src/Type/Generic/TemplateStrictMixedType.phpקhA!src/Type/Generic/TemplateType.php|קh|r/)src/Type/Generic/TemplateTypeStrategy.php<קh<Uzܤ,src/Type/Generic/TemplateTypeVarianceMap.phpקh$.&src/Type/Generic/TemplateMixedType.phphקhho'src/Type/Generic/TemplateStringType.phpVקhV6yI/&src/Type/Generic/GenericStaticType.php%קh%]0src/Type/Generic/TemplateBenevolentUnionType.phpEקhE֤&src/Type/Generic/TemplateTypeScope.phpקhG+src/Type/Generic/GenericClassStringType.phpקh{.src/Type/Generic/TemplateGenericObjectType.phpקh"(src/Type/Generic/TemplateBooleanType.php[קh[-src/Type/Generic/TemplateIntersectionType.phpקh 'src/Type/Generic/TemplateObjectType.php קh 8)src/Type/Generic/TypeProjectionHelper.phpsקhsH^1&src/Type/Generic/TemplateFloatType.phpQקhQ$Z/src/Type/Generic/TemplateConstantStringType.phpקh+T$src/Type/Generic/TemplateTypeMap.php_קh_T&src/Type/Generic/GenericObjectType.php6קh6_'Ф(src/Type/Generic/TemplateIntegerType.php[קh[˝L.src/Type/Generic/TemplateConstantArrayType.phpקh(\&&src/Type/Generic/TemplateTypeTrait.php0קh0$y1src/Type/Generic/TemplateTypeArgumentStrategy.phpקhfy&src/Type/Generic/TemplateKeyOfType.php{קh{f0src/Type/Generic/TemplateConstantIntegerType.phpקhGA8դ3src/Type/Generic/TemplateObjectWithoutClassType.php,קh,<&src/Type/Generic/TemplateArrayType.php|קh|`src/Type/VoidType.phpקhʃl¤.src/Type/DynamicFunctionThrowTypeExtension.phplקhl+src/dumpType.phpAקhA (src/Process/ProcessCanceledException.phpקhw@Xsrc/Process/ProcessPromise.phpz קhz `src/Process/CpuCoreCounter.phpקhX'src/Process/ProcessCrashedException.phpקh &Фsrc/Process/ProcessHelper.phpY קhY /a.src/DependencyInjection/BleedingEdgeToggle.phpקh7a5src/DependencyInjection/ParametersSchemaExtension.phpקh ^d/src/DependencyInjection/ProjectConfigHelper.phpקh ^0src/DependencyInjection/Nette/NetteContainer.php קh r\4src/DependencyInjection/ConditionalTagsExtension.phpקhhޤ6src/DependencyInjection/ParameterNotFoundException.phpPקhP DOsrc/DependencyInjection/Reflection/ClassReflectionExtensionRegistryProvider.php קh rSsrc/DependencyInjection/Reflection/LazyClassReflectionExtensionRegistryProvider.php+ קh+ Pyʤ8src/DependencyInjection/InvalidExcludePathsException.php'קh'Ԕ~6src/DependencyInjection/DerivativeContainerFactory.php קh %src/DependencyInjection/Container.phpקh؋R'src/DependencyInjection/NeonAdapter.phpקh/礤,src/DependencyInjection/ContainerFactory.php&<קh&<D%.src/DependencyInjection/MemoizingContainer.phpקhmr*src/DependencyInjection/RulesExtension.phpקhq)src/DependencyInjection/LoaderFactory.php,קh,s&src/DependencyInjection/NeonLoader.phpקh|cBsrc/DependencyInjection/Type/ParameterOutTypeExtensionProvider.phpקhJsrc/DependencyInjection/Type/LazyParameterClosureTypeExtensionProvider.php{קh{ äBsrc/DependencyInjection/Type/DynamicThrowTypeExtensionProvider.phpקhpդPsrc/DependencyInjection/Type/OperatorTypeSpecifyingExtensionRegistryProvider.phpקhs)Fsrc/DependencyInjection/Type/LazyDynamicThrowTypeExtensionProvider.php[קh[*ǤTsrc/DependencyInjection/Type/LazyOperatorTypeSpecifyingExtensionRegistryProvider.phpקhe('Fsrc/DependencyInjection/Type/LazyParameterOutTypeExtensionProvider.php[קh[j4Osrc/DependencyInjection/Type/LazyDynamicReturnTypeExtensionRegistryProvider.php!קh!;-jPsrc/DependencyInjection/Type/ExpressionTypeResolverExtensionRegistryProvider.phpקh楤Fsrc/DependencyInjection/Type/ParameterClosureTypeExtensionProvider.phpקhI{Ksrc/DependencyInjection/Type/DynamicReturnTypeExtensionRegistryProvider.phpקh;rTsrc/DependencyInjection/Type/LazyExpressionTypeResolverExtensionRegistryProvider.phpקhRפ9src/DependencyInjection/ValidateExcludePathsExtension.phpw קhw |n-:src/DependencyInjection/ValidateIgnoredErrorsExtension.php! קh! ;src/DependencyInjection/DuplicateIncludedFilesException.phppקhp԰;i(src/DependencyInjection/Configurator.php קh -src/DependencyInjection/Neon/OptionalPath.phpקh`GŤ@src/DependencyInjection/InvalidIgnoredErrorPatternsException.php/קh/6 src/Collectors/CollectedData.phpZקhZna"src/Collectors/RegistryFactory.phpקhwʤsrc/Collectors/Collector.php קh ;src/Collectors/Registry.phpvקhv($src/Php/PhpVersionFactoryFactory.phpקh:)ߤsrc/Php/PhpVersionFactory.phpקh^ Фsrc/Php/PhpVersion.php+"קh+"P\src/Parallel/Schedule.phpקh޻src/Parallel/Process.phpקh src/Parallel/ProcessPool.phpjקhj󦈤!src/Parallel/ParallelAnalyser.php!5קh!5P')src/Parallel/ProcessTimedOutException.phpקhߤsrc/Parallel/Scheduler.php קh includes: - config.level5.neon parameters: checkGenericClassInNonGenericObjectType: true checkMissingIterableValueType: true checkMissingVarTagTypehint: true checkMissingTypehints: true rules: - PHPStan\Rules\Constants\MissingClassConstantTypehintRule - PHPStan\Rules\Functions\MissingFunctionReturnTypehintRule - PHPStan\Rules\Methods\MissingMethodReturnTypehintRule - PHPStan\Rules\Properties\MissingPropertyTypehintRule conditionalTags: PHPStan\Rules\Methods\MissingMethodSelfOutTypeRule: phpstan.rules.rule: %featureToggles.absentTypeChecks% services: - class: PHPStan\Rules\Functions\MissingFunctionParameterTypehintRule arguments: paramOut: %featureToggles.paramOutType% tags: - phpstan.rules.rule - class: PHPStan\Rules\Methods\MissingMethodParameterTypehintRule arguments: paramOut: %featureToggles.paramOutType% tags: - phpstan.rules.rule - class: PHPStan\Rules\Methods\MissingMethodSelfOutTypeRule includes: - config.level9.neon parameters: customRulesetUsed: false conditionalTags: PHPStan\Rules\Api\NodeConnectingVisitorAttributesRule: phpstan.rules.rule: %featureToggles.nodeConnectingVisitorRule% PHPStan\Rules\Properties\MissingReadOnlyByPhpDocPropertyAssignRule: phpstan.rules.rule: %featureToggles.readOnlyByPhpDoc% PHPStan\Rules\Properties\ReadOnlyByPhpDocPropertyRule: phpstan.rules.rule: %featureToggles.readOnlyByPhpDoc% PHPStan\Rules\Properties\UninitializedPropertyRule: phpstan.rules.rule: %checkUninitializedProperties% PHPStan\Rules\Methods\ConsistentConstructorRule: phpstan.rules.rule: %featureToggles.consistentConstructor% PHPStan\Rules\Api\ApiClassConstFetchRule: phpstan.rules.rule: %featureToggles.runtimeReflectionRules% PHPStan\Rules\Api\ApiInstanceofRule: phpstan.rules.rule: %featureToggles.runtimeReflectionRules% PHPStan\Rules\Api\RuntimeReflectionFunctionRule: phpstan.rules.rule: %featureToggles.runtimeReflectionRules% PHPStan\Rules\Api\RuntimeReflectionInstantiationRule: phpstan.rules.rule: %featureToggles.runtimeReflectionRules% PHPStan\Rules\Methods\MissingMagicSerializationMethodsRule: phpstan.rules.rule: %featureToggles.missingMagicSerializationRule% PHPStan\Rules\Constants\MagicConstantContextRule: phpstan.rules.rule: %featureToggles.magicConstantOutOfContext% PHPStan\Rules\Functions\UselessFunctionReturnValueRule: phpstan.rules.rule: %featureToggles.uselessReturnValue% PHPStan\Rules\Functions\PrintfArrayParametersRule: phpstan.rules.rule: %featureToggles.printfArrayParameters% PHPStan\Rules\Regexp\RegularExpressionQuotingRule: phpstan.rules.rule: %featureToggles.validatePregQuote% PHPStan\Rules\Keywords\RequireFileExistsRule: phpstan.rules.rule: %featureToggles.requireFileExists% PHPStan\Rules\Classes\LocalTypeTraitUseAliasesRule: phpstan.rules.rule: %featureToggles.absentTypeChecks% rules: - PHPStan\Rules\Api\ApiInstantiationRule - PHPStan\Rules\Api\ApiClassExtendsRule - PHPStan\Rules\Api\ApiClassImplementsRule - PHPStan\Rules\Api\ApiInterfaceExtendsRule - PHPStan\Rules\Api\ApiMethodCallRule - PHPStan\Rules\Api\ApiStaticCallRule - PHPStan\Rules\Api\ApiTraitUseRule - PHPStan\Rules\Api\GetTemplateTypeRule - PHPStan\Rules\Api\PhpStanNamespaceIn3rdPartyPackageRule - PHPStan\Rules\Arrays\DuplicateKeysInLiteralArraysRule - PHPStan\Rules\Arrays\EmptyArrayItemRule - PHPStan\Rules\Arrays\OffsetAccessWithoutDimForReadingRule - PHPStan\Rules\Cast\UnsetCastRule - PHPStan\Rules\Classes\AllowedSubTypesRule - PHPStan\Rules\Classes\ClassAttributesRule - PHPStan\Rules\Classes\ClassConstantAttributesRule - PHPStan\Rules\Classes\ClassConstantRule - PHPStan\Rules\Classes\DuplicateDeclarationRule - PHPStan\Rules\Classes\EnumSanityRule - PHPStan\Rules\Classes\ExistingClassesInClassImplementsRule - PHPStan\Rules\Classes\ExistingClassesInEnumImplementsRule - PHPStan\Rules\Classes\ExistingClassesInInterfaceExtendsRule - PHPStan\Rules\Classes\ExistingClassInTraitUseRule - PHPStan\Rules\Classes\InstantiationRule - PHPStan\Rules\Classes\InstantiationCallableRule - PHPStan\Rules\Classes\InvalidPromotedPropertiesRule - PHPStan\Rules\Classes\LocalTypeAliasesRule - PHPStan\Rules\Classes\LocalTypeTraitAliasesRule - PHPStan\Rules\Classes\NewStaticRule - PHPStan\Rules\Classes\NonClassAttributeClassRule - PHPStan\Rules\Classes\ReadOnlyClassRule - PHPStan\Rules\Classes\TraitAttributeClassRule - PHPStan\Rules\Constants\ClassAsClassConstantRule - PHPStan\Rules\Constants\DynamicClassConstantFetchRule - PHPStan\Rules\Constants\FinalConstantRule - PHPStan\Rules\Constants\NativeTypedClassConstantRule - PHPStan\Rules\EnumCases\EnumCaseAttributesRule - PHPStan\Rules\Exceptions\NoncapturingCatchRule - PHPStan\Rules\Exceptions\ThrowExpressionRule - PHPStan\Rules\Functions\ArrowFunctionAttributesRule - PHPStan\Rules\Functions\ArrowFunctionReturnNullsafeByRefRule - PHPStan\Rules\Functions\ClosureAttributesRule - PHPStan\Rules\Functions\DefineParametersRule - PHPStan\Rules\Functions\ExistingClassesInArrowFunctionTypehintsRule - PHPStan\Rules\Functions\CallToFunctionParametersRule - PHPStan\Rules\Functions\ExistingClassesInClosureTypehintsRule - PHPStan\Rules\Functions\ExistingClassesInTypehintsRule - PHPStan\Rules\Functions\FunctionAttributesRule - PHPStan\Rules\Functions\InnerFunctionRule - PHPStan\Rules\Functions\InvalidLexicalVariablesInClosureUseRule - PHPStan\Rules\Functions\ParamAttributesRule - PHPStan\Rules\Functions\PrintfParametersRule - PHPStan\Rules\Functions\RedefinedParametersRule - PHPStan\Rules\Functions\ReturnNullsafeByRefRule - PHPStan\Rules\Ignore\IgnoreParseErrorRule - PHPStan\Rules\Functions\VariadicParametersDeclarationRule - PHPStan\Rules\Keywords\ContinueBreakInLoopRule - PHPStan\Rules\Keywords\DeclareStrictTypesRule - PHPStan\Rules\Methods\AbstractMethodInNonAbstractClassRule - PHPStan\Rules\Methods\AbstractPrivateMethodRule - PHPStan\Rules\Methods\CallMethodsRule - PHPStan\Rules\Methods\CallStaticMethodsRule - PHPStan\Rules\Methods\ConstructorReturnTypeRule - PHPStan\Rules\Methods\ExistingClassesInTypehintsRule - PHPStan\Rules\Methods\FinalPrivateMethodRule - PHPStan\Rules\Methods\MethodCallableRule - PHPStan\Rules\Methods\MethodVisibilityInInterfaceRule - PHPStan\Rules\Methods\MissingMethodImplementationRule - PHPStan\Rules\Methods\MethodAttributesRule - PHPStan\Rules\Methods\StaticMethodCallableRule - PHPStan\Rules\Names\UsedNamesRule - PHPStan\Rules\Operators\InvalidAssignVarRule - PHPStan\Rules\Properties\AccessPropertiesInAssignRule - PHPStan\Rules\Properties\AccessStaticPropertiesInAssignRule - PHPStan\Rules\Properties\InvalidCallablePropertyTypeRule - PHPStan\Rules\Properties\MissingReadOnlyPropertyAssignRule - PHPStan\Rules\Properties\PropertiesInInterfaceRule - PHPStan\Rules\Properties\PropertyAttributesRule - PHPStan\Rules\Properties\ReadOnlyPropertyRule - PHPStan\Rules\Traits\ConflictingTraitConstantsRule - PHPStan\Rules\Traits\ConstantsInTraitsRule - PHPStan\Rules\Types\InvalidTypesInUnionRule - PHPStan\Rules\Variables\UnsetRule - PHPStan\Rules\Whitespace\FileWhitespaceRule services: - class: PHPStan\Rules\Api\ApiClassConstFetchRule - class: PHPStan\Rules\Api\ApiInstanceofRule - class: PHPStan\Rules\Api\ApiInstanceofTypeRule arguments: enabled: %featureToggles.instanceofType% deprecationRulesInstalled: %deprecationRulesInstalled% tags: - phpstan.rules.rule - class: PHPStan\Rules\Api\NodeConnectingVisitorAttributesRule - class: PHPStan\Rules\Api\RuntimeReflectionFunctionRule - class: PHPStan\Rules\Api\RuntimeReflectionInstantiationRule - class: PHPStan\Rules\Classes\ExistingClassInClassExtendsRule tags: - phpstan.rules.rule - class: PHPStan\Rules\Classes\ExistingClassInInstanceOfRule tags: - phpstan.rules.rule arguments: checkClassCaseSensitivity: %checkClassCaseSensitivity% - class: PHPStan\Rules\Classes\LocalTypeTraitUseAliasesRule - class: PHPStan\Rules\Exceptions\CaughtExceptionExistenceRule tags: - phpstan.rules.rule arguments: checkClassCaseSensitivity: %checkClassCaseSensitivity% - class: PHPStan\Rules\Functions\CallToNonExistentFunctionRule tags: - phpstan.rules.rule arguments: checkFunctionNameCase: %checkFunctionNameCase% - class: PHPStan\Rules\Constants\OverridingConstantRule arguments: checkPhpDocMethodSignatures: %checkPhpDocMethodSignatures% tags: - phpstan.rules.rule - class: PHPStan\Rules\Methods\OverridingMethodRule arguments: checkPhpDocMethodSignatures: %checkPhpDocMethodSignatures% genericPrototypeMessage: %featureToggles.genericPrototypeMessage% finalByPhpDoc: %featureToggles.finalByPhpDoc% checkMissingOverrideMethodAttribute: %checkMissingOverrideMethodAttribute% tags: - phpstan.rules.rule - class: PHPStan\Rules\Methods\ConsistentConstructorRule - class: PHPStan\Rules\Missing\MissingReturnRule arguments: checkExplicitMixedMissingReturn: %checkExplicitMixedMissingReturn% checkPhpDocMissingReturn: %checkPhpDocMissingReturn% tags: - phpstan.rules.rule - class: PHPStan\Rules\Namespaces\ExistingNamesInGroupUseRule tags: - phpstan.rules.rule arguments: checkFunctionNameCase: %checkFunctionNameCase% - class: PHPStan\Rules\Namespaces\ExistingNamesInUseRule tags: - phpstan.rules.rule arguments: checkFunctionNameCase: %checkFunctionNameCase% - class: PHPStan\Rules\Operators\InvalidIncDecOperationRule tags: - phpstan.rules.rule arguments: bleedingEdge: %featureToggles.bleedingEdge% checkThisOnly: %checkThisOnly% - class: PHPStan\Rules\Properties\AccessPropertiesRule tags: - phpstan.rules.rule arguments: reportMagicProperties: %reportMagicProperties% checkDynamicProperties: %checkDynamicProperties% - class: PHPStan\Rules\Properties\AccessStaticPropertiesRule tags: - phpstan.rules.rule - class: PHPStan\Rules\Properties\ExistingClassesInPropertiesRule tags: - phpstan.rules.rule arguments: checkClassCaseSensitivity: %checkClassCaseSensitivity% checkThisOnly: %checkThisOnly% - class: PHPStan\Rules\Functions\FunctionCallableRule arguments: checkFunctionNameCase: %checkFunctionNameCase% reportMaybes: %reportMaybes% tags: - phpstan.rules.rule - class: PHPStan\Rules\Properties\MissingReadOnlyByPhpDocPropertyAssignRule - class: PHPStan\Rules\Properties\OverridingPropertyRule arguments: checkPhpDocMethodSignatures: %checkPhpDocMethodSignatures% reportMaybes: %reportMaybesInPropertyPhpDocTypes% tags: - phpstan.rules.rule - class: PHPStan\Rules\Properties\ReadOnlyByPhpDocPropertyRule - class: PHPStan\Rules\Properties\UninitializedPropertyRule - class: PHPStan\Rules\Properties\WritingToReadOnlyPropertiesRule arguments: checkThisOnly: %checkThisOnly% tags: - phpstan.rules.rule - class: PHPStan\Rules\Properties\ReadingWriteOnlyPropertiesRule arguments: checkThisOnly: %checkThisOnly% tags: - phpstan.rules.rule - class: PHPStan\Rules\Variables\CompactVariablesRule arguments: checkMaybeUndefinedVariables: %checkMaybeUndefinedVariables% tags: - phpstan.rules.rule - class: PHPStan\Rules\Variables\DefinedVariableRule arguments: cliArgumentsVariablesRegistered: %cliArgumentsVariablesRegistered% checkMaybeUndefinedVariables: %checkMaybeUndefinedVariables% tags: - phpstan.rules.rule - class: PHPStan\Rules\Regexp\RegularExpressionPatternRule tags: - phpstan.rules.rule - class: PHPStan\Reflection\ConstructorsHelper arguments: additionalConstructors: %additionalConstructors% - class: PHPStan\Rules\Methods\MissingMagicSerializationMethodsRule - class: PHPStan\Rules\Constants\MagicConstantContextRule - class: PHPStan\Rules\Functions\UselessFunctionReturnValueRule - class: PHPStan\Rules\Functions\PrintfArrayParametersRule - class: PHPStan\Rules\Regexp\RegularExpressionQuotingRule - class: PHPStan\Rules\Keywords\RequireFileExistsRule arguments: currentWorkingDirectory: %currentWorkingDirectory% includes: - parametersSchema.neon parameters: bootstrapFiles: - ../stubs/runtime/ReflectionUnionType.php - ../stubs/runtime/ReflectionAttribute.php - ../stubs/runtime/Attribute.php - ../stubs/runtime/ReflectionIntersectionType.php excludes_analyse: [] excludePaths: null level: null paths: [] exceptions: implicitThrows: true reportUncheckedExceptionDeadCatch: true uncheckedExceptionRegexes: [] uncheckedExceptionClasses: [] checkedExceptionRegexes: [] checkedExceptionClasses: [] check: missingCheckedExceptionInThrows: false tooWideThrowType: false featureToggles: bleedingEdge: false disableRuntimeReflectionProvider: true skipCheckGenericClasses: - DatePeriod - CallbackFilterIterator - FilterIterator - RecursiveCallbackFilterIterator - AppendIterator - NoRewindIterator - LimitIterator - InfiniteIterator - CachingIterator - RegexIterator - ReflectionEnum explicitMixedInUnknownGenericNew: false explicitMixedForGlobalVariables: false explicitMixedViaIsArray: false arrayFilter: false arrayUnpacking: false arrayValues: false nodeConnectingVisitorCompatibility: true nodeConnectingVisitorRule: false illegalConstructorMethodCall: false disableCheckMissingIterableValueType: false strictUnnecessaryNullsafePropertyFetch: false looseComparison: false consistentConstructor: false checkUnresolvableParameterTypes: false readOnlyByPhpDoc: false phpDocParserRequireWhitespaceBeforeDescription: false phpDocParserIncludeLines: false enableIgnoreErrorsWithinPhpDocs: false runtimeReflectionRules: false notAnalysedTrait: false curlSetOptTypes: false listType: false abstractTraitMethod: false missingMagicSerializationRule: false nullContextForVoidReturningFunctions: false unescapeStrings: false alwaysCheckTooWideReturnTypeFinalMethods: false duplicateStubs: false logicalXor: false betterNoop: false invarianceComposition: false alwaysTrueAlwaysReported: false disableUnreachableBranchesRules: false varTagType: false closureDefaultParameterTypeRule: false newRuleLevelHelper: false instanceofType: false paramOutVariance: false allInvalidPhpDocs: false strictStaticMethodTemplateTypeVariance: false propertyVariance: false genericPrototypeMessage: false stricterFunctionMap: false invalidPhpDocTagLine: false detectDeadTypeInMultiCatch: false zeroFiles: false projectServicesNotInAnalysedPaths: false callUserFunc: false finalByPhpDoc: false magicConstantOutOfContext: false paramOutType: false pure: false checkParameterCastableToStringFunctions: false uselessReturnValue: false printfArrayParameters: false preciseMissingReturn: false validatePregQuote: false noImplicitWildcard: false requireFileExists: false narrowPregMatches: true tooWidePropertyType: false explicitThrow: false absentTypeChecks: false fileExtensions: - php checkAdvancedIsset: false checkAlwaysTrueCheckTypeFunctionCall: %featureToggles.alwaysTrueAlwaysReported% checkAlwaysTrueInstanceof: %featureToggles.alwaysTrueAlwaysReported% checkAlwaysTrueStrictComparison: %featureToggles.alwaysTrueAlwaysReported% checkAlwaysTrueLooseComparison: %featureToggles.alwaysTrueAlwaysReported% reportAlwaysTrueInLastCondition: false checkClassCaseSensitivity: false checkExplicitMixed: false checkImplicitMixed: false checkFunctionArgumentTypes: false checkFunctionNameCase: false checkGenericClassInNonGenericObjectType: false checkInternalClassCaseSensitivity: false checkMissingIterableValueType: false checkMissingCallableSignature: false checkMissingVarTagTypehint: false checkArgumentsPassedByReference: false checkMaybeUndefinedVariables: false checkNullables: false checkThisOnly: true checkUnionTypes: false checkBenevolentUnionTypes: false checkExplicitMixedMissingReturn: false checkPhpDocMissingReturn: false checkPhpDocMethodSignatures: false checkExtraArguments: false checkMissingTypehints: false checkTooWideReturnTypesInProtectedAndPublicMethods: false checkUninitializedProperties: false checkDynamicProperties: false deprecationRulesInstalled: false inferPrivatePropertyTypeFromConstructor: false reportMaybes: false reportMaybesInMethodSignatures: false reportMaybesInPropertyPhpDocTypes: false reportStaticMethodSignatures: false reportWrongPhpDocTypeInVarTag: false reportAnyTypeWideningInVarTag: false reportPossiblyNonexistentGeneralArrayOffset: false reportPossiblyNonexistentConstantArrayOffset: false checkMissingOverrideMethodAttribute: false mixinExcludeClasses: [] scanFiles: [] scanDirectories: [] parallel: jobSize: 20 processTimeout: 600.0 maximumNumberOfProcesses: 32 minimumNumberOfJobsPerProcess: 2 buffer: 134217728 phpVersion: null polluteScopeWithLoopInitialAssignments: true polluteScopeWithAlwaysIterableForeach: true propertyAlwaysWrittenTags: [] propertyAlwaysReadTags: [] fixerTmpDir: %pro.tmpDir% additionalConstructors: [] treatPhpDocTypesAsCertain: true usePathConstantsAsConstantString: false rememberPossiblyImpureFunctionValues: true tips: treatPhpDocTypesAsCertain: true tipsOfTheDay: true reportMagicMethods: false reportMagicProperties: false ignoreErrors: [] internalErrorsCountLimit: 50 cache: nodesByFileCountMax: 1024 nodesByStringCountMax: 256 reportUnmatchedIgnoredErrors: true scopeClass: PHPStan\Analyser\MutatingScope typeAliases: [] universalObjectCratesClasses: - stdClass stubFiles: - ../stubs/ReflectionAttribute.stub - ../stubs/ReflectionClass.stub - ../stubs/ReflectionClassConstant.stub - ../stubs/ReflectionFunctionAbstract.stub - ../stubs/ReflectionMethod.stub - ../stubs/ReflectionParameter.stub - ../stubs/ReflectionProperty.stub - ../stubs/iterable.stub - ../stubs/ArrayObject.stub - ../stubs/WeakReference.stub - ../stubs/ext-ds.stub - ../stubs/ImagickPixel.stub - ../stubs/PDOStatement.stub - ../stubs/date.stub - ../stubs/ibm_db2.stub - ../stubs/mysqli.stub - ../stubs/zip.stub - ../stubs/dom.stub - ../stubs/spl.stub - ../stubs/SplObjectStorage.stub - ../stubs/Exception.stub - ../stubs/arrayFunctions.stub - ../stubs/core.stub - ../stubs/typeCheckingFunctions.stub earlyTerminatingMethodCalls: [] earlyTerminatingFunctionCalls: [] memoryLimitFile: %tmpDir%/.memory_limit tempResultCachePath: %tmpDir%/resultCaches resultCachePath: %tmpDir%/resultCache.php resultCacheChecksProjectExtensionFilesDependencies: false staticReflectionClassNamePatterns: [] dynamicConstantNames: - ICONV_IMPL - LIBXML_VERSION - LIBXML_DOTTED_VERSION - Memcached::HAVE_ENCODING - Memcached::HAVE_IGBINARY - Memcached::HAVE_JSON - Memcached::HAVE_MSGPACK - Memcached::HAVE_SASL - Memcached::HAVE_SESSION - PHP_VERSION - PHP_MAJOR_VERSION - PHP_MINOR_VERSION - PHP_RELEASE_VERSION - PHP_VERSION_ID - PHP_EXTRA_VERSION - PHP_WINDOWS_VERSION_MAJOR - PHP_WINDOWS_VERSION_MINOR - PHP_WINDOWS_VERSION_BUILD - PHP_ZTS - PHP_DEBUG - PHP_MAXPATHLEN - PHP_OS - PHP_OS_FAMILY - PHP_SAPI - PHP_EOL - PHP_INT_MAX - PHP_INT_MIN - PHP_INT_SIZE - PHP_FLOAT_DIG - PHP_FLOAT_EPSILON - PHP_FLOAT_MIN - PHP_FLOAT_MAX - DEFAULT_INCLUDE_PATH - PEAR_INSTALL_DIR - PEAR_EXTENSION_DIR - PHP_EXTENSION_DIR - PHP_PREFIX - PHP_BINDIR - PHP_BINARY - PHP_MANDIR - PHP_LIBDIR - PHP_DATADIR - PHP_SYSCONFDIR - PHP_LOCALSTATEDIR - PHP_CONFIG_FILE_PATH - PHP_CONFIG_FILE_SCAN_DIR - PHP_SHLIB_SUFFIX - PHP_FD_SETSIZE - OPENSSL_VERSION_NUMBER - ZEND_DEBUG_BUILD - ZEND_THREAD_SAFE - E_ALL customRulesetUsed: null editorUrl: null editorUrlTitle: null errorFormat: null sysGetTempDir: ::sys_get_temp_dir() sourceLocatorPlaygroundMode: false pro: dnsServers: - '1.1.1.2' tmpDir: %sysGetTempDir%/phpstan-fixer __validate: true extensions: rules: PHPStan\DependencyInjection\RulesExtension conditionalTags: PHPStan\DependencyInjection\ConditionalTagsExtension parametersSchema: PHPStan\DependencyInjection\ParametersSchemaExtension validateIgnoredErrors: PHPStan\DependencyInjection\ValidateIgnoredErrorsExtension validateExcludePaths: PHPStan\DependencyInjection\ValidateExcludePathsExtension rules: - PHPStan\Rules\Debug\DebugScopeRule - PHPStan\Rules\Debug\DumpPhpDocTypeRule - PHPStan\Rules\Debug\DumpTypeRule - PHPStan\Rules\Debug\FileAssertRule conditionalTags: PHPStan\Rules\Exceptions\MissingCheckedExceptionInFunctionThrowsRule: phpstan.rules.rule: %exceptions.check.missingCheckedExceptionInThrows% PHPStan\Rules\Exceptions\MissingCheckedExceptionInMethodThrowsRule: phpstan.rules.rule: %exceptions.check.missingCheckedExceptionInThrows% PHPStan\Rules\Exceptions\TooWideFunctionThrowTypeRule: phpstan.rules.rule: %exceptions.check.tooWideThrowType% PHPStan\Rules\Exceptions\TooWideMethodThrowTypeRule: phpstan.rules.rule: %exceptions.check.tooWideThrowType% PhpParser\NodeVisitor\NodeConnectingVisitor: phpstan.parser.richParserNodeVisitor: %featureToggles.nodeConnectingVisitorCompatibility% PHPStan\Parser\CurlSetOptArgVisitor: phpstan.parser.richParserNodeVisitor: %featureToggles.curlSetOptTypes% PHPStan\Parser\TypeTraverserInstanceofVisitor: phpstan.parser.richParserNodeVisitor: %featureToggles.instanceofType% services: - class: PhpParser\BuilderFactory - class: PHPStan\Parser\LexerFactory - class: PhpParser\NodeVisitor\NameResolver arguments: options: preserveOriginalNames: true - class: PHPStan\Parser\AnonymousClassVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\ArrayFilterArgVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\ArrayFindArgVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\ArrayMapArgVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\ArrayWalkArgVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\ClosureArgVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\ClosureBindToVarVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\ClosureBindArgVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\CurlSetOptArgVisitor - class: PHPStan\Parser\TypeTraverserInstanceofVisitor - class: PHPStan\Parser\ArrowFunctionArgVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\MagicConstantParamDefaultVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\NewAssignedToPropertyVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\ParentStmtTypesVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\TryCatchTypeVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\LastConditionVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PhpParser\NodeVisitor\NodeConnectingVisitor - class: PHPStan\Node\Printer\ExprPrinter - class: PHPStan\Node\Printer\Printer - class: PHPStan\Broker\AnonymousClassNameHelper arguments: relativePathHelper: @simpleRelativePathHelper - class: PHPStan\Php\PhpVersion factory: @PHPStan\Php\PhpVersionFactory::create - class: PHPStan\Php\PhpVersionFactory factory: @PHPStan\Php\PhpVersionFactoryFactory::create - class: PHPStan\Php\PhpVersionFactoryFactory arguments: versionId: %phpVersion% composerAutoloaderProjectPaths: %composerAutoloaderProjectPaths% - class: PHPStan\PhpDocParser\Lexer\Lexer - class: PHPStan\PhpDocParser\Parser\TypeParser arguments: quoteAwareConstExprString: %featureToggles.unescapeStrings% - class: PHPStan\PhpDocParser\Parser\ConstExprParser factory: @PHPStan\PhpDoc\ConstExprParserFactory::create() - class: PHPStan\PhpDocParser\Parser\PhpDocParser arguments: requireWhitespaceBeforeDescription: %featureToggles.phpDocParserRequireWhitespaceBeforeDescription% preserveTypeAliasesWithInvalidTypes: true usedAttributes: lines: %featureToggles.phpDocParserIncludeLines% - class: PHPStan\PhpDocParser\Printer\Printer - class: PHPStan\PhpDoc\ConstExprParserFactory arguments: unescapeStrings: %featureToggles.unescapeStrings% - class: PHPStan\PhpDoc\PhpDocInheritanceResolver - class: PHPStan\PhpDoc\PhpDocNodeResolver - class: PHPStan\PhpDoc\PhpDocStringResolver - class: PHPStan\PhpDoc\ConstExprNodeResolver - class: PHPStan\PhpDoc\TypeNodeResolver - class: PHPStan\PhpDoc\TypeNodeResolverExtensionRegistryProvider factory: PHPStan\PhpDoc\LazyTypeNodeResolverExtensionRegistryProvider - class: PHPStan\PhpDoc\TypeStringResolver - class: PHPStan\PhpDoc\StubValidator arguments: duplicateStubs: %featureToggles.duplicateStubs% - class: PHPStan\PhpDoc\CountableStubFilesExtension arguments: bleedingEdge: %featureToggles.bleedingEdge% tags: - phpstan.stubFilesExtension - class: PHPStan\PhpDoc\SocketSelectStubFilesExtension tags: - phpstan.stubFilesExtension - class: PHPStan\PhpDoc\DefaultStubFilesProvider arguments: stubFiles: %stubFiles% composerAutoloaderProjectPaths: %composerAutoloaderProjectPaths% autowired: - PHPStan\PhpDoc\StubFilesProvider - class: PHPStan\PhpDoc\JsonValidateStubFilesExtension tags: - phpstan.stubFilesExtension - class: PHPStan\PhpDoc\ReflectionEnumStubFilesExtension tags: - phpstan.stubFilesExtension - class: PHPStan\Analyser\Analyser arguments: internalErrorsCountLimit: %internalErrorsCountLimit% - class: PHPStan\Analyser\AnalyserResultFinalizer arguments: reportUnmatchedIgnoredErrors: %reportUnmatchedIgnoredErrors% - class: PHPStan\Analyser\FileAnalyser arguments: parser: @defaultAnalysisParser - class: PHPStan\Analyser\LocalIgnoresProcessor - class: PHPStan\Analyser\RuleErrorTransformer - class: PHPStan\Analyser\Ignore\IgnoredErrorHelper arguments: ignoreErrors: %ignoreErrors% reportUnmatchedIgnoredErrors: %reportUnmatchedIgnoredErrors% - class: PHPStan\Analyser\Ignore\IgnoreLexer - class: PHPStan\Analyser\LazyInternalScopeFactory arguments: scopeClass: %scopeClass% autowired: - PHPStan\Analyser\InternalScopeFactory - class: PHPStan\Analyser\ScopeFactory - class: PHPStan\Analyser\NodeScopeResolver arguments: parser: @defaultAnalysisParser reflector: @nodeScopeResolverReflector polluteScopeWithLoopInitialAssignments: %polluteScopeWithLoopInitialAssignments% polluteScopeWithAlwaysIterableForeach: %polluteScopeWithAlwaysIterableForeach% earlyTerminatingMethodCalls: %earlyTerminatingMethodCalls% earlyTerminatingFunctionCalls: %earlyTerminatingFunctionCalls% implicitThrows: %exceptions.implicitThrows% treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% detectDeadTypeInMultiCatch: %featureToggles.detectDeadTypeInMultiCatch% universalObjectCratesClasses: %universalObjectCratesClasses% paramOutType: %featureToggles.paramOutType% preciseMissingReturn: %featureToggles.preciseMissingReturn% explicitThrow: %featureToggles.explicitThrow% - class: PHPStan\Analyser\ConstantResolver factory: @PHPStan\Analyser\ConstantResolverFactory::create() - class: PHPStan\Analyser\ConstantResolverFactory - implement: PHPStan\Analyser\ResultCache\ResultCacheManagerFactory arguments: scanFileFinder: @fileFinderScan cacheFilePath: %resultCachePath% analysedPaths: %analysedPaths% analysedPathsFromConfig: %analysedPathsFromConfig% composerAutoloaderProjectPaths: %composerAutoloaderProjectPaths% usedLevel: %usedLevel% cliAutoloadFile: %cliAutoloadFile% bootstrapFiles: %bootstrapFiles% scanFiles: %scanFiles% scanDirectories: %scanDirectories% checkDependenciesOfProjectExtensionFiles: %resultCacheChecksProjectExtensionFilesDependencies% - class: PHPStan\Analyser\ResultCache\ResultCacheClearer arguments: cacheFilePath: %resultCachePath% - class: PHPStan\Analyser\RicherScopeGetTypeHelper - class: PHPStan\Cache\Cache arguments: storage: @cacheStorage - class: PHPStan\Collectors\Registry factory: @PHPStan\Collectors\RegistryFactory::create - class: PHPStan\Collectors\RegistryFactory - class: PHPStan\Command\AnalyseApplication - class: PHPStan\Command\AnalyserRunner - class: PHPStan\Command\FixerApplication arguments: analysedPaths: %analysedPaths% currentWorkingDirectory: %currentWorkingDirectory% proTmpDir: %pro.tmpDir% dnsServers: %pro.dnsServers% composerAutoloaderProjectPaths: %composerAutoloaderProjectPaths% allConfigFiles: %allConfigFiles% cliAutoloadFile: %cliAutoloadFile% bootstrapFiles: %bootstrapFiles% editorUrl: %editorUrl% usedLevel: %usedLevel% - class: PHPStan\Dependency\DependencyResolver - class: PHPStan\Dependency\ExportedNodeFetcher arguments: parser: @defaultAnalysisParser - class: PHPStan\Dependency\ExportedNodeResolver - class: PHPStan\Dependency\ExportedNodeVisitor - class: PHPStan\DependencyInjection\Container factory: PHPStan\DependencyInjection\MemoizingContainer arguments: originalContainer: @PHPStan\DependencyInjection\Nette\NetteContainer - class: PHPStan\DependencyInjection\Nette\NetteContainer autowired: - PHPStan\DependencyInjection\Nette\NetteContainer - class: PHPStan\DependencyInjection\DerivativeContainerFactory arguments: currentWorkingDirectory: %currentWorkingDirectory% tempDirectory: %tempDir% additionalConfigFiles: %additionalConfigFiles% analysedPaths: %analysedPaths% composerAutoloaderProjectPaths: %composerAutoloaderProjectPaths% analysedPathsFromConfig: %analysedPathsFromConfig% usedLevel: %usedLevel% generateBaselineFile: %generateBaselineFile% cliAutoloadFile: %cliAutoloadFile% singleReflectionFile: %singleReflectionFile% singleReflectionInsteadOfFile: %singleReflectionInsteadOfFile% - class: PHPStan\DependencyInjection\Reflection\ClassReflectionExtensionRegistryProvider factory: PHPStan\DependencyInjection\Reflection\LazyClassReflectionExtensionRegistryProvider - class: PHPStan\DependencyInjection\Type\DynamicReturnTypeExtensionRegistryProvider factory: PHPStan\DependencyInjection\Type\LazyDynamicReturnTypeExtensionRegistryProvider - class: PHPStan\DependencyInjection\Type\ParameterOutTypeExtensionProvider factory: PHPStan\DependencyInjection\Type\LazyParameterOutTypeExtensionProvider - class: PHPStan\DependencyInjection\Type\ExpressionTypeResolverExtensionRegistryProvider factory: PHPStan\DependencyInjection\Type\LazyExpressionTypeResolverExtensionRegistryProvider - class: PHPStan\DependencyInjection\Type\OperatorTypeSpecifyingExtensionRegistryProvider factory: PHPStan\DependencyInjection\Type\LazyOperatorTypeSpecifyingExtensionRegistryProvider - class: PHPStan\DependencyInjection\Type\DynamicThrowTypeExtensionProvider factory: PHPStan\DependencyInjection\Type\LazyDynamicThrowTypeExtensionProvider - class: PHPStan\DependencyInjection\Type\ParameterClosureTypeExtensionProvider factory: PHPStan\DependencyInjection\Type\LazyParameterClosureTypeExtensionProvider - class: PHPStan\File\FileHelper arguments: workingDirectory: %currentWorkingDirectory% - class: PHPStan\File\FileExcluderFactory arguments: obsoleteExcludesAnalyse: %excludes_analyse% excludePaths: %excludePaths% - implement: PHPStan\File\FileExcluderRawFactory arguments: noImplicitWildcard: %featureToggles.noImplicitWildcard% fileExcluderAnalyse: class: PHPStan\File\FileExcluder factory: @PHPStan\File\FileExcluderFactory::createAnalyseFileExcluder() autowired: false fileExcluderScan: class: PHPStan\File\FileExcluder factory: @PHPStan\File\FileExcluderFactory::createScanFileExcluder() autowired: false fileFinderAnalyse: class: PHPStan\File\FileFinder arguments: fileExcluder: @fileExcluderAnalyse fileExtensions: %fileExtensions% autowired: false fileFinderScan: class: PHPStan\File\FileFinder arguments: fileExcluder: @fileExcluderScan fileExtensions: %fileExtensions% autowired: false - class: PHPStan\File\FileMonitor arguments: analyseFileFinder: @fileFinderAnalyse scanFileFinder: @fileFinderScan analysedPaths: %analysedPaths% analysedPathsFromConfig: %analysedPathsFromConfig% scanFiles: %scanFiles% scanDirectories: %scanDirectories% - class: PHPStan\Parser\DeclarePositionVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parser\ImmediatelyInvokedClosureVisitor tags: - phpstan.parser.richParserNodeVisitor - class: PHPStan\Parallel\ParallelAnalyser arguments: internalErrorsCountLimit: %internalErrorsCountLimit% processTimeout: %parallel.processTimeout% decoderBufferSize: %parallel.buffer% - class: PHPStan\Parallel\Scheduler arguments: jobSize: %parallel.jobSize% maximumNumberOfProcesses: %parallel.maximumNumberOfProcesses% minimumNumberOfJobsPerProcess: %parallel.minimumNumberOfJobsPerProcess% tags: - phpstan.diagnoseExtension - class: PHPStan\Parser\FunctionCallStatementFinder - class: PHPStan\Process\CpuCoreCounter - implement: PHPStan\Reflection\FunctionReflectionFactory arguments: parser: @defaultAnalysisParser - class: PHPStan\Reflection\InitializerExprTypeResolver arguments: usePathConstantsAsConstantString: %usePathConstantsAsConstantString% - class: PHPStan\Reflection\Annotations\AnnotationsMethodsClassReflectionExtension - class: PHPStan\Reflection\Annotations\AnnotationsPropertiesClassReflectionExtension - class: PHPStan\Reflection\BetterReflection\SourceLocator\CachingVisitor - class: PHPStan\Reflection\BetterReflection\SourceLocator\FileNodesFetcher arguments: parser: @defaultAnalysisParser - class: PHPStan\Reflection\BetterReflection\SourceLocator\ComposerJsonAndInstalledJsonSourceLocatorMaker - class: PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedDirectorySourceLocatorFactory arguments: fileFinder: @fileFinderScan - class: PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedDirectorySourceLocatorRepository - implement: PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedPsrAutoloaderLocatorFactory - implement: PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedSingleFileSourceLocatorFactory - class: PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedSingleFileSourceLocatorRepository - class: PHPStan\Reflection\RequireExtension\RequireExtendsMethodsClassReflectionExtension - class: PHPStan\Reflection\RequireExtension\RequireExtendsPropertiesClassReflectionExtension - class: PHPStan\Reflection\Mixin\MixinMethodsClassReflectionExtension arguments: mixinExcludeClasses: %mixinExcludeClasses% - class: PHPStan\Reflection\Mixin\MixinPropertiesClassReflectionExtension arguments: mixinExcludeClasses: %mixinExcludeClasses% - class: PHPStan\Reflection\Php\PhpClassReflectionExtension arguments: parser: @defaultAnalysisParser inferPrivatePropertyTypeFromConstructor: %inferPrivatePropertyTypeFromConstructor% - implement: PHPStan\Reflection\Php\PhpMethodReflectionFactory arguments: parser: @defaultAnalysisParser - class: PHPStan\Reflection\Php\Soap\SoapClientMethodsClassReflectionExtension - class: PHPStan\Reflection\Php\EnumAllowedSubTypesClassReflectionExtension tags: - phpstan.broker.allowedSubTypesClassReflectionExtension - class: PHPStan\Reflection\Php\UniversalObjectCratesClassReflectionExtension tags: - phpstan.broker.propertiesClassReflectionExtension arguments: classes: %universalObjectCratesClasses% - class: PHPStan\Reflection\PHPStan\NativeReflectionEnumReturnDynamicReturnTypeExtension tags: - phpstan.broker.dynamicMethodReturnTypeExtension arguments: className: PHPStan\Reflection\ClassReflection methodName: getNativeReflection - class: PHPStan\Reflection\PHPStan\NativeReflectionEnumReturnDynamicReturnTypeExtension tags: - phpstan.broker.dynamicMethodReturnTypeExtension arguments: className: PHPStan\Reflection\Php\BuiltinMethodReflection methodName: getDeclaringClass - class: PHPStan\Reflection\ReflectionProvider\ReflectionProviderProvider factory: PHPStan\Reflection\ReflectionProvider\LazyReflectionProviderProvider - class: PHPStan\Reflection\SignatureMap\NativeFunctionReflectionProvider arguments: reflector: @betterReflectionReflector - class: PHPStan\Reflection\SignatureMap\SignatureMapParser - class: PHPStan\Reflection\SignatureMap\FunctionSignatureMapProvider arguments: stricterFunctionMap: %featureToggles.stricterFunctionMap% autowired: - PHPStan\Reflection\SignatureMap\FunctionSignatureMapProvider - class: PHPStan\Reflection\SignatureMap\Php8SignatureMapProvider autowired: - PHPStan\Reflection\SignatureMap\Php8SignatureMapProvider - class: PHPStan\Reflection\SignatureMap\SignatureMapProviderFactory - class: PHPStan\Reflection\SignatureMap\SignatureMapProvider factory: @PHPStan\Reflection\SignatureMap\SignatureMapProviderFactory::create() - class: PHPStan\Rules\Api\ApiRuleHelper - class: PHPStan\Rules\AttributesCheck arguments: deprecationRulesInstalled: %deprecationRulesInstalled% - class: PHPStan\Rules\Arrays\NonexistentOffsetInArrayDimFetchCheck arguments: reportMaybes: %reportMaybes% bleedingEdge: %featureToggles.bleedingEdge% reportPossiblyNonexistentGeneralArrayOffset: %reportPossiblyNonexistentGeneralArrayOffset% reportPossiblyNonexistentConstantArrayOffset: %reportPossiblyNonexistentConstantArrayOffset% - class: PHPStan\Rules\ClassNameCheck - class: PHPStan\Rules\ClassCaseSensitivityCheck arguments: checkInternalClassCaseSensitivity: %checkInternalClassCaseSensitivity% - class: PHPStan\Rules\ClassForbiddenNameCheck - class: PHPStan\Rules\Classes\LocalTypeAliasesCheck arguments: globalTypeAliases: %typeAliases% checkMissingTypehints: %checkMissingTypehints% checkClassCaseSensitivity: %checkClassCaseSensitivity% absentTypeChecks: %featureToggles.absentTypeChecks% - class: PHPStan\Rules\Classes\MethodTagCheck arguments: checkClassCaseSensitivity: %checkClassCaseSensitivity% checkMissingTypehints: %checkMissingTypehints% - class: PHPStan\Rules\Classes\MixinCheck arguments: checkClassCaseSensitivity: %checkClassCaseSensitivity% absentTypeChecks: %featureToggles.absentTypeChecks% checkMissingTypehints: %checkMissingTypehints% - class: PHPStan\Rules\Classes\PropertyTagCheck arguments: checkClassCaseSensitivity: %checkClassCaseSensitivity% checkMissingTypehints: %checkMissingTypehints% - class: PHPStan\Rules\Comparison\ConstantConditionRuleHelper arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% looseComparisonRuleEnabled: %featureToggles.looseComparison% - class: PHPStan\Rules\Comparison\ImpossibleCheckTypeHelper arguments: universalObjectCratesClasses: %universalObjectCratesClasses% treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% nullContextForVoidReturningFunctions: %featureToggles.nullContextForVoidReturningFunctions% - class: PHPStan\Rules\Exceptions\DefaultExceptionTypeResolver arguments: uncheckedExceptionRegexes: %exceptions.uncheckedExceptionRegexes% uncheckedExceptionClasses: %exceptions.uncheckedExceptionClasses% checkedExceptionRegexes: %exceptions.checkedExceptionRegexes% checkedExceptionClasses: %exceptions.checkedExceptionClasses% autowired: - PHPStan\Rules\Exceptions\DefaultExceptionTypeResolver - class: PHPStan\Rules\Exceptions\MissingCheckedExceptionInFunctionThrowsRule - class: PHPStan\Rules\Exceptions\MissingCheckedExceptionInMethodThrowsRule - class: PHPStan\Rules\Exceptions\MissingCheckedExceptionInThrowsCheck arguments: exceptionTypeResolver: @exceptionTypeResolver - class: PHPStan\Rules\Exceptions\TooWideFunctionThrowTypeRule - class: PHPStan\Rules\Exceptions\TooWideMethodThrowTypeRule - class: PHPStan\Rules\Exceptions\TooWideThrowTypeCheck - class: PHPStan\Rules\FunctionCallParametersCheck arguments: checkArgumentTypes: %checkFunctionArgumentTypes% checkArgumentsPassedByReference: %checkArgumentsPassedByReference% checkExtraArguments: %checkExtraArguments% checkMissingTypehints: %checkMissingTypehints% checkUnresolvableParameterTypes: %featureToggles.checkUnresolvableParameterTypes% - class: PHPStan\Rules\FunctionDefinitionCheck arguments: checkClassCaseSensitivity: %checkClassCaseSensitivity% checkThisOnly: %checkThisOnly% absentTypeChecks: %featureToggles.absentTypeChecks% - class: PHPStan\Rules\FunctionReturnTypeCheck - class: PHPStan\Rules\ParameterCastableToStringCheck - class: PHPStan\Rules\Generics\CrossCheckInterfacesHelper - class: PHPStan\Rules\Generics\GenericAncestorsCheck arguments: checkGenericClassInNonGenericObjectType: %checkGenericClassInNonGenericObjectType% skipCheckGenericClasses: %featureToggles.skipCheckGenericClasses% absentTypeChecks: %featureToggles.absentTypeChecks% - class: PHPStan\Rules\Generics\GenericObjectTypeCheck - class: PHPStan\Rules\Generics\MethodTagTemplateTypeCheck - class: PHPStan\Rules\Generics\TemplateTypeCheck arguments: checkClassCaseSensitivity: %checkClassCaseSensitivity% - class: PHPStan\Rules\Generics\VarianceCheck arguments: checkParamOutVariance: %featureToggles.paramOutVariance% strictStaticVariance: %featureToggles.strictStaticMethodTemplateTypeVariance% - class: PHPStan\Rules\IssetCheck arguments: checkAdvancedIsset: %checkAdvancedIsset% treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% strictUnnecessaryNullsafePropertyFetch: %featureToggles.strictUnnecessaryNullsafePropertyFetch% - class: PHPStan\Rules\Methods\MethodCallCheck arguments: checkFunctionNameCase: %checkFunctionNameCase% reportMagicMethods: %reportMagicMethods% - class: PHPStan\Rules\Methods\StaticMethodCallCheck arguments: checkFunctionNameCase: %checkFunctionNameCase% reportMagicMethods: %reportMagicMethods% - class: PHPStan\Rules\Methods\MethodSignatureRule arguments: reportMaybes: %reportMaybesInMethodSignatures% reportStatic: %reportStaticMethodSignatures% abstractTraitMethod: %featureToggles.abstractTraitMethod% - class: PHPStan\Rules\Methods\MethodParameterComparisonHelper arguments: genericPrototypeMessage: %featureToggles.genericPrototypeMessage% - class: PHPStan\Rules\MissingTypehintCheck arguments: checkMissingIterableValueType: %checkMissingIterableValueType% disableCheckMissingIterableValueType: %featureToggles.disableCheckMissingIterableValueType% checkGenericClassInNonGenericObjectType: %checkGenericClassInNonGenericObjectType% checkMissingCallableSignature: %checkMissingCallableSignature% skipCheckGenericClasses: %featureToggles.skipCheckGenericClasses% - class: PHPStan\Rules\NullsafeCheck - class: PHPStan\Rules\Constants\LazyAlwaysUsedClassConstantsExtensionProvider - class: PHPStan\Rules\Methods\LazyAlwaysUsedMethodExtensionProvider - class: PHPStan\Rules\PhpDoc\ConditionalReturnTypeRuleHelper - class: PHPStan\Rules\PhpDoc\AssertRuleHelper arguments: checkMissingTypehints: %checkMissingTypehints% checkClassCaseSensitivity: %checkClassCaseSensitivity% absentTypeChecks: %featureToggles.absentTypeChecks% - class: PHPStan\Rules\PhpDoc\UnresolvableTypeHelper - class: PHPStan\Rules\PhpDoc\GenericCallableRuleHelper - class: PHPStan\Rules\PhpDoc\VarTagTypeRuleHelper arguments: checkTypeAgainstPhpDocType: %reportWrongPhpDocTypeInVarTag% strictWideningCheck: %reportAnyTypeWideningInVarTag% - class: PHPStan\Rules\Playground\NeverRuleHelper - class: PHPStan\Rules\Properties\LazyReadWritePropertiesExtensionProvider - class: PHPStan\Rules\Properties\PropertyDescriptor - class: PHPStan\Rules\Properties\PropertyReflectionFinder - class: PHPStan\Rules\Pure\FunctionPurityCheck - class: PHPStan\Rules\RuleLevelHelper arguments: checkNullables: %checkNullables% checkThisOnly: %checkThisOnly% checkUnionTypes: %checkUnionTypes% checkExplicitMixed: %checkExplicitMixed% checkImplicitMixed: %checkImplicitMixed% newRuleLevelHelper: %featureToggles.newRuleLevelHelper% checkBenevolentUnionTypes: %checkBenevolentUnionTypes% - class: PHPStan\Rules\UnusedFunctionParametersCheck - class: PHPStan\Rules\TooWideTypehints\TooWideParameterOutTypeCheck - class: PHPStan\Type\FileTypeMapper arguments: phpParser: @defaultAnalysisParser - class: PHPStan\Type\TypeAliasResolver factory: PHPStan\Type\UsefulTypeAliasResolver arguments: globalTypeAliases: %typeAliases% - class: PHPStan\Type\TypeAliasResolverProvider factory: PHPStan\Type\LazyTypeAliasResolverProvider - class: PHPStan\Type\BitwiseFlagHelper - class: PHPStan\Type\Php\AbsFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArgumentBasedFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayChangeKeyCaseFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayIntersectKeyFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayChunkFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayColumnFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayCombineFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayCurrentDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayFillFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayFillKeysFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayFilterFunctionReturnTypeHelper - class: PHPStan\Type\Php\ArrayFilterFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayFlipFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayFindFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayFindKeyFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayKeyDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayKeyExistsFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\ArrayKeyFirstDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayKeyLastDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayKeysFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayMapFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayMergeFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayNextDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayPopFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayRandFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayReduceFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayReplaceFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayReverseFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayShiftFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArraySliceFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArraySpliceFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArraySearchFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArraySearchFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\ArrayValuesFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArraySumFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\AssertThrowTypeExtension tags: - phpstan.dynamicFunctionThrowTypeExtension - class: PHPStan\Type\Php\BackedEnumFromMethodDynamicReturnTypeExtension tags: - phpstan.broker.dynamicStaticMethodReturnTypeExtension - class: PHPStan\Type\Php\Base64DecodeDynamicFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\BcMathStringOrNullReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ClosureBindDynamicReturnTypeExtension tags: - phpstan.broker.dynamicStaticMethodReturnTypeExtension - class: PHPStan\Type\Php\ClosureBindToDynamicReturnTypeExtension tags: - phpstan.broker.dynamicMethodReturnTypeExtension - class: PHPStan\Type\Php\ClosureFromCallableDynamicReturnTypeExtension tags: - phpstan.broker.dynamicStaticMethodReturnTypeExtension - class: PHPStan\Type\Php\CompactFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension arguments: checkMaybeUndefinedVariables: %checkMaybeUndefinedVariables% - class: PHPStan\Type\Php\ConstantFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ConstantHelper - class: PHPStan\Type\Php\CountFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\CountFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\CurlGetinfoFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\DateFunctionReturnTypeHelper - class: PHPStan\Type\Php\DateFormatFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\DateFormatMethodReturnTypeExtension tags: - phpstan.broker.dynamicMethodReturnTypeExtension - class: PHPStan\Type\Php\DateFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\DateIntervalConstructorThrowTypeExtension tags: - phpstan.dynamicStaticMethodThrowTypeExtension - class: PHPStan\Type\Php\DateIntervalDynamicReturnTypeExtension tags: - phpstan.broker.dynamicStaticMethodReturnTypeExtension - class: PHPStan\Type\Php\DateTimeCreateDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\DateTimeDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\DateTimeModifyReturnTypeExtension tags: - phpstan.broker.dynamicMethodReturnTypeExtension arguments: dateTimeClass: DateTime - class: PHPStan\Type\Php\DateTimeModifyReturnTypeExtension tags: - phpstan.broker.dynamicMethodReturnTypeExtension arguments: dateTimeClass: DateTimeImmutable - class: PHPStan\Type\Php\DateTimeConstructorThrowTypeExtension tags: - phpstan.dynamicStaticMethodThrowTypeExtension - class: PHPStan\Type\Php\DateTimeModifyMethodThrowTypeExtension tags: - phpstan.dynamicMethodThrowTypeExtension - class: PHPStan\Type\Php\DateTimeSubMethodThrowTypeExtension tags: - phpstan.dynamicMethodThrowTypeExtension - class: PHPStan\Type\Php\DateTimeZoneConstructorThrowTypeExtension tags: - phpstan.dynamicStaticMethodThrowTypeExtension - class: PHPStan\Type\Php\DsMapDynamicReturnTypeExtension tags: - phpstan.broker.dynamicMethodReturnTypeExtension - class: PHPStan\Type\Php\DsMapDynamicMethodThrowTypeExtension tags: - phpstan.dynamicMethodThrowTypeExtension - class: PHPStan\Type\Php\DioStatDynamicFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ExplodeFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\FilterFunctionReturnTypeHelper - class: PHPStan\Type\Php\FilterInputDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\FilterVarDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\FilterVarArrayDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\GetCalledClassDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\GetClassDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\GetDebugTypeFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\GetDefinedVarsFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\GetParentClassDynamicFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\GettypeFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\GettimeofdayDynamicFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\HashFunctionsReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\HighlightStringDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\IntdivThrowTypeExtension tags: - phpstan.dynamicFunctionThrowTypeExtension - class: PHPStan\Type\Php\IniGetReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\JsonThrowTypeExtension tags: - phpstan.dynamicFunctionThrowTypeExtension - class: PHPStan\Type\Php\OpenSslEncryptParameterOutTypeExtension tags: - phpstan.functionParameterOutTypeExtension - class: PHPStan\Type\Php\ParseStrParameterOutTypeExtension tags: - phpstan.functionParameterOutTypeExtension - class: PHPStan\Type\Php\PregMatchTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\PregMatchParameterOutTypeExtension tags: - phpstan.functionParameterOutTypeExtension - class: PHPStan\Type\Php\PregReplaceCallbackClosureTypeExtension tags: - phpstan.functionParameterClosureTypeExtension - class: PHPStan\Type\Php\RegexArrayShapeMatcher - class: PHPStan\Type\Regex\RegexGroupParser - class: PHPStan\Type\Regex\RegexExpressionHelper - class: PHPStan\Type\Php\ReflectionClassConstructorThrowTypeExtension tags: - phpstan.dynamicStaticMethodThrowTypeExtension - class: PHPStan\Type\Php\ReflectionFunctionConstructorThrowTypeExtension tags: - phpstan.dynamicStaticMethodThrowTypeExtension - class: PHPStan\Type\Php\ReflectionMethodConstructorThrowTypeExtension tags: - phpstan.dynamicStaticMethodThrowTypeExtension - class: PHPStan\Type\Php\ReflectionPropertyConstructorThrowTypeExtension tags: - phpstan.dynamicStaticMethodThrowTypeExtension - class: PHPStan\Type\Php\StrContainingTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\SimpleXMLElementClassPropertyReflectionExtension tags: - phpstan.broker.propertiesClassReflectionExtension - class: PHPStan\Type\Php\SimpleXMLElementConstructorThrowTypeExtension tags: - phpstan.dynamicStaticMethodThrowTypeExtension - class: PHPStan\Type\Php\StatDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - phpstan.broker.dynamicMethodReturnTypeExtension - class: PHPStan\Type\Php\MethodExistsTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\PropertyExistsTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\MinMaxFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\NumberFormatFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\PathinfoFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\PregFilterFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\PregSplitDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ReflectionClassIsSubclassOfTypeSpecifyingExtension tags: - phpstan.typeSpecifier.methodTypeSpecifyingExtension - class: PHPStan\Type\Php\ReplaceFunctionsDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ArrayPointerFunctionsDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\LtrimFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\MbFunctionsReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\MbConvertEncodingFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\MbSubstituteCharacterDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\MbStrlenFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\MicrotimeFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\HrtimeFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ImplodeFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\NonEmptyStringFunctionsReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\SetTypeFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\StrCaseFunctionsReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\StrlenFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\StrIncrementDecrementFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\StrPadFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\StrRepeatFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\StrrevFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\SubstrDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\ThrowableReturnTypeExtension tags: - phpstan.broker.dynamicMethodReturnTypeExtension - class: PHPStan\Type\Php\ParseUrlFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\TriggerErrorDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\TrimFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\VersionCompareFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\PowFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\RoundFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\StrtotimeFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\RandomIntFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\RangeFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\AssertFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\ClassExistsFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\ClassImplementsFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\DefineConstantTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\DefinedConstantTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\FunctionExistsFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\InArrayFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\IsArrayFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension arguments: explicitMixed: %featureToggles.explicitMixedViaIsArray% - class: PHPStan\Type\Php\IsCallableFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\IsIterableFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\IsSubclassOfFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\IteratorToArrayFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\IsAFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\IsAFunctionTypeSpecifyingHelper - class: PHPStan\Type\Php\CtypeDigitFunctionTypeSpecifyingExtension tags: - phpstan.typeSpecifier.functionTypeSpecifyingExtension - class: PHPStan\Type\Php\JsonThrowOnErrorDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\TypeSpecifyingFunctionsDynamicReturnTypeExtension arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% universalObjectCratesClasses: %universalObjectCratesClasses% nullContextForVoidReturningFunctions: %featureToggles.nullContextForVoidReturningFunctions% tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\SimpleXMLElementAsXMLMethodReturnTypeExtension tags: - phpstan.broker.dynamicMethodReturnTypeExtension - class: PHPStan\Type\Php\SimpleXMLElementXpathMethodReturnTypeExtension tags: - phpstan.broker.dynamicMethodReturnTypeExtension - class: PHPStan\Type\Php\StrSplitFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\StrTokFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\SprintfFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\SscanfFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\StrvalFamilyFunctionReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\StrWordCountFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - class: PHPStan\Type\Php\XMLReaderOpenReturnTypeExtension tags: - phpstan.broker.dynamicMethodReturnTypeExtension - phpstan.broker.dynamicStaticMethodReturnTypeExtension - class: PHPStan\Type\Php\ReflectionGetAttributesMethodReturnTypeExtension arguments: className: ReflectionClass tags: - phpstan.broker.dynamicMethodReturnTypeExtension - class: PHPStan\Type\Php\ReflectionGetAttributesMethodReturnTypeExtension arguments: className: ReflectionClassConstant tags: - phpstan.broker.dynamicMethodReturnTypeExtension - class: PHPStan\Type\Php\ReflectionGetAttributesMethodReturnTypeExtension arguments: className: ReflectionFunctionAbstract tags: - phpstan.broker.dynamicMethodReturnTypeExtension - class: PHPStan\Type\Php\ReflectionGetAttributesMethodReturnTypeExtension arguments: className: ReflectionParameter tags: - phpstan.broker.dynamicMethodReturnTypeExtension - class: PHPStan\Type\Php\ReflectionGetAttributesMethodReturnTypeExtension arguments: className: ReflectionProperty tags: - phpstan.broker.dynamicMethodReturnTypeExtension - class: PHPStan\Type\Php\DatePeriodConstructorReturnTypeExtension tags: - phpstan.broker.dynamicStaticMethodReturnTypeExtension - class: PHPStan\Type\ClosureTypeFactory arguments: parser: @currentPhpVersionPhpParser - class: PHPStan\Type\Constant\OversizedArrayBuilder - class: PHPStan\Rules\Functions\PrintfHelper exceptionTypeResolver: class: PHPStan\Rules\Exceptions\ExceptionTypeResolver factory: @PHPStan\Rules\Exceptions\DefaultExceptionTypeResolver typeSpecifier: class: PHPStan\Analyser\TypeSpecifier factory: @typeSpecifierFactory::create typeSpecifierFactory: class: PHPStan\Analyser\TypeSpecifierFactory relativePathHelper: class: PHPStan\File\RelativePathHelper factory: PHPStan\File\FuzzyRelativePathHelper arguments: currentWorkingDirectory: %currentWorkingDirectory% analysedPaths: %analysedPaths% fallbackRelativePathHelper: @parentDirectoryRelativePathHelper simpleRelativePathHelper: class: PHPStan\File\RelativePathHelper factory: PHPStan\File\SimpleRelativePathHelper arguments: currentWorkingDirectory: %currentWorkingDirectory% autowired: false parentDirectoryRelativePathHelper: class: PHPStan\File\ParentDirectoryRelativePathHelper arguments: parentDirectory: %currentWorkingDirectory% autowired: false broker: class: PHPStan\Broker\Broker factory: @brokerFactory::create autowired: - PHPStan\Broker\Broker brokerFactory: class: PHPStan\Broker\BrokerFactory cacheStorage: class: PHPStan\Cache\FileCacheStorage arguments: directory: %tmpDir%/cache/PHPStan autowired: false currentPhpVersionRichParser: class: PHPStan\Parser\RichParser arguments: parser: @currentPhpVersionPhpParser lexer: @currentPhpVersionLexer enableIgnoreErrorsWithinPhpDocs: %featureToggles.enableIgnoreErrorsWithinPhpDocs% autowired: false currentPhpVersionSimpleParser: class: PHPStan\Parser\CleaningParser arguments: wrappedParser: @currentPhpVersionSimpleDirectParser autowired: false currentPhpVersionSimpleDirectParser: class: PHPStan\Parser\SimpleParser arguments: parser: @currentPhpVersionPhpParser autowired: false defaultAnalysisParser: class: PHPStan\Parser\CachedParser arguments: originalParser: @pathRoutingParser cachedNodesByStringCountMax: %cache.nodesByStringCountMax% autowired: false phpParserDecorator: class: PHPStan\Parser\PhpParserDecorator arguments: wrappedParser: @defaultAnalysisParser autowired: false currentPhpVersionLexer: class: PhpParser\Lexer factory: @PHPStan\Parser\LexerFactory::create() autowired: false currentPhpVersionPhpParser: class: PhpParser\Parser\Php7 arguments: lexer: @currentPhpVersionLexer autowired: false registry: class: PHPStan\Rules\LazyRegistry autowired: - PHPStan\Rules\Registry stubPhpDocProvider: class: PHPStan\PhpDoc\StubPhpDocProvider arguments: parser: @defaultAnalysisParser reflectionProviderFactory: class: PHPStan\Reflection\ReflectionProvider\ReflectionProviderFactory arguments: staticReflectionProvider: @betterReflectionProvider reflectionProvider: factory: @PHPStan\Reflection\ReflectionProvider\ReflectionProviderFactory::create autowired: - PHPStan\Reflection\ReflectionProvider betterReflectionSourceLocator: class: PHPStan\BetterReflection\SourceLocator\Type\SourceLocator factory: @PHPStan\Reflection\BetterReflection\BetterReflectionSourceLocatorFactory::create autowired: false originalBetterReflectionReflector: class: PHPStan\BetterReflection\Reflector\DefaultReflector arguments: sourceLocator: @betterReflectionSourceLocator betterReflectionReflector: class: PHPStan\Reflection\BetterReflection\Reflector\MemoizingReflector arguments: reflector: @originalBetterReflectionReflector autowired: false betterReflectionClassReflector: class: PHPStan\BetterReflection\Reflector\ClassReflector arguments: sourceLocator: @betterReflectionSourceLocator autowired: false betterReflectionFunctionReflector: class: PHPStan\BetterReflection\Reflector\FunctionReflector arguments: sourceLocator: @betterReflectionSourceLocator autowired: false betterReflectionConstantReflector: class: PHPStan\BetterReflection\Reflector\ConstantReflector arguments: sourceLocator: @betterReflectionSourceLocator autowired: false nodeScopeResolverReflector: factory: @betterReflectionReflector autowired: false betterReflectionProvider: class: PHPStan\Reflection\BetterReflection\BetterReflectionProvider arguments: reflector: @betterReflectionReflector universalObjectCratesClasses: %universalObjectCratesClasses% autowired: false - class: PHPStan\Reflection\BetterReflection\BetterReflectionSourceLocatorFactory arguments: parser: @phpParserDecorator php8Parser: @php8PhpParser scanFiles: %scanFiles% scanDirectories: %scanDirectories% analysedPaths: %analysedPaths% composerAutoloaderProjectPaths: %composerAutoloaderProjectPaths% analysedPathsFromConfig: %analysedPathsFromConfig% playgroundMode: %sourceLocatorPlaygroundMode% singleReflectionFile: %singleReflectionFile% - implement: PHPStan\Reflection\BetterReflection\BetterReflectionProviderFactory arguments: universalObjectCratesClasses: %universalObjectCratesClasses% - class: PHPStan\Reflection\BetterReflection\SourceStubber\PhpStormStubsSourceStubberFactory arguments: phpParser: @php8PhpParser - factory: @PHPStan\Reflection\BetterReflection\SourceStubber\PhpStormStubsSourceStubberFactory::create() autowired: - PHPStan\BetterReflection\SourceLocator\SourceStubber\PhpStormStubsSourceStubber - factory: @PHPStan\Reflection\BetterReflection\SourceStubber\ReflectionSourceStubberFactory::create() autowired: - PHPStan\BetterReflection\SourceLocator\SourceStubber\ReflectionSourceStubber - class: PHPStan\Reflection\BetterReflection\SourceStubber\ReflectionSourceStubberFactory php8Lexer: class: PhpParser\Lexer\Emulative factory: @PHPStan\Parser\LexerFactory::createEmulative() autowired: false php8PhpParser: class: PhpParser\Parser\Php7 arguments: lexer: @php8Lexer autowired: false php8Parser: class: PHPStan\Parser\SimpleParser arguments: parser: @php8PhpParser autowired: false pathRoutingParser: class: PHPStan\Parser\PathRoutingParser arguments: currentPhpVersionRichParser: @currentPhpVersionRichParser currentPhpVersionSimpleParser: @currentPhpVersionSimpleParser php8Parser: @php8Parser singleReflectionFile: %singleReflectionFile% autowired: false phpstanDiagnoseExtension: class: PHPStan\Diagnose\PHPStanDiagnoseExtension arguments: composerAutoloaderProjectPaths: %composerAutoloaderProjectPaths% allConfigFiles: %allConfigFiles% autowired: false - class: PHPStan\Command\ErrorFormatter\CiDetectedErrorFormatter autowired: - PHPStan\Command\ErrorFormatter\CiDetectedErrorFormatter errorFormatter.raw: class: PHPStan\Command\ErrorFormatter\RawErrorFormatter errorFormatter.table: class: PHPStan\Command\ErrorFormatter\TableErrorFormatter arguments: simpleRelativePathHelper: @simpleRelativePathHelper showTipsOfTheDay: %tipsOfTheDay% editorUrl: %editorUrl% editorUrlTitle: %editorUrlTitle% errorFormatter.checkstyle: class: PHPStan\Command\ErrorFormatter\CheckstyleErrorFormatter arguments: relativePathHelper: @simpleRelativePathHelper errorFormatter.json: class: PHPStan\Command\ErrorFormatter\JsonErrorFormatter arguments: pretty: false errorFormatter.junit: class: PHPStan\Command\ErrorFormatter\JunitErrorFormatter arguments: relativePathHelper: @simpleRelativePathHelper errorFormatter.prettyJson: class: PHPStan\Command\ErrorFormatter\JsonErrorFormatter arguments: pretty: true errorFormatter.gitlab: class: PHPStan\Command\ErrorFormatter\GitlabErrorFormatter arguments: relativePathHelper: @simpleRelativePathHelper errorFormatter.github: class: PHPStan\Command\ErrorFormatter\GithubErrorFormatter arguments: relativePathHelper: @simpleRelativePathHelper errorFormatter.teamcity: class: PHPStan\Command\ErrorFormatter\TeamcityErrorFormatter arguments: relativePathHelper: @simpleRelativePathHelper parameters: featureToggles: bleedingEdge: true skipCheckGenericClasses!: [] explicitMixedInUnknownGenericNew: true explicitMixedForGlobalVariables: true explicitMixedViaIsArray: true arrayFilter: true arrayUnpacking: true arrayValues: true nodeConnectingVisitorCompatibility: false nodeConnectingVisitorRule: true disableCheckMissingIterableValueType: true strictUnnecessaryNullsafePropertyFetch: true looseComparison: true consistentConstructor: true checkUnresolvableParameterTypes: true readOnlyByPhpDoc: true phpDocParserRequireWhitespaceBeforeDescription: true phpDocParserIncludeLines: true enableIgnoreErrorsWithinPhpDocs: true runtimeReflectionRules: true notAnalysedTrait: true curlSetOptTypes: true listType: true abstractTraitMethod: true missingMagicSerializationRule: true nullContextForVoidReturningFunctions: true unescapeStrings: true alwaysCheckTooWideReturnTypeFinalMethods: true duplicateStubs: true logicalXor: true betterNoop: true invarianceComposition: true alwaysTrueAlwaysReported: true disableUnreachableBranchesRules: true varTagType: true closureDefaultParameterTypeRule: true newRuleLevelHelper: true instanceofType: true paramOutVariance: true allInvalidPhpDocs: true strictStaticMethodTemplateTypeVariance: true propertyVariance: true genericPrototypeMessage: true stricterFunctionMap: true invalidPhpDocTagLine: true detectDeadTypeInMultiCatch: true zeroFiles: true projectServicesNotInAnalysedPaths: true callUserFunc: true finalByPhpDoc: true magicConstantOutOfContext: true paramOutType: true pure: true checkParameterCastableToStringFunctions: true uselessReturnValue: true printfArrayParameters: true preciseMissingReturn: true validatePregQuote: true noImplicitWildcard: true tooWidePropertyType: true explicitThrow: true absentTypeChecks: true requireFileExists: true stubFiles: - ../stubs/bleedingEdge/Rule.stub includes: - config.level2.neon conditionalTags: PHPStan\Rules\Arrays\ArrayUnpackingRule: phpstan.rules.rule: %featureToggles.arrayUnpacking% PHPStan\Rules\Properties\ReadOnlyByPhpDocPropertyAssignRefRule: phpstan.rules.rule: %featureToggles.readOnlyByPhpDoc% PHPStan\Rules\Properties\ReadOnlyByPhpDocPropertyAssignRule: phpstan.rules.rule: %featureToggles.readOnlyByPhpDoc% PHPStan\Rules\Variables\ParameterOutAssignedTypeRule: phpstan.rules.rule: %featureToggles.paramOutType% PHPStan\Rules\Variables\ParameterOutExecutionEndTypeRule: phpstan.rules.rule: %featureToggles.paramOutType% rules: - PHPStan\Rules\Arrays\ArrayDestructuringRule - PHPStan\Rules\Arrays\IterableInForeachRule - PHPStan\Rules\Arrays\OffsetAccessAssignmentRule - PHPStan\Rules\Arrays\OffsetAccessAssignOpRule - PHPStan\Rules\Arrays\OffsetAccessValueAssignmentRule - PHPStan\Rules\Arrays\UnpackIterableInArrayRule - PHPStan\Rules\Exceptions\ThrowExprTypeRule - PHPStan\Rules\Functions\ArrowFunctionReturnTypeRule - PHPStan\Rules\Functions\ClosureReturnTypeRule - PHPStan\Rules\Functions\ReturnTypeRule - PHPStan\Rules\Generators\YieldTypeRule - PHPStan\Rules\Methods\ReturnTypeRule - PHPStan\Rules\Properties\DefaultValueTypesAssignedToPropertiesRule - PHPStan\Rules\Properties\ReadOnlyPropertyAssignRule - PHPStan\Rules\Properties\ReadOnlyPropertyAssignRefRule - PHPStan\Rules\Properties\TypesAssignedToPropertiesRule - PHPStan\Rules\Variables\ThrowTypeRule - PHPStan\Rules\Variables\VariableCloningRule parameters: checkPhpDocMethodSignatures: true services: - class: PHPStan\Rules\Arrays\InvalidKeyInArrayDimFetchRule arguments: reportMaybes: %reportMaybes% tags: - phpstan.rules.rule - class: PHPStan\Rules\Arrays\InvalidKeyInArrayItemRule arguments: reportMaybes: %reportMaybes% tags: - phpstan.rules.rule - class: PHPStan\Rules\Arrays\NonexistentOffsetInArrayDimFetchRule arguments: reportMaybes: %reportMaybes% tags: - phpstan.rules.rule - class: PHPStan\Rules\Exceptions\ThrowsVoidFunctionWithExplicitThrowPointRule arguments: exceptionTypeResolver: @exceptionTypeResolver missingCheckedExceptionInThrows: %exceptions.check.missingCheckedExceptionInThrows% tags: - phpstan.rules.rule - class: PHPStan\Rules\Exceptions\ThrowsVoidMethodWithExplicitThrowPointRule arguments: exceptionTypeResolver: @exceptionTypeResolver missingCheckedExceptionInThrows: %exceptions.check.missingCheckedExceptionInThrows% tags: - phpstan.rules.rule - class: PHPStan\Rules\Generators\YieldFromTypeRule arguments: reportMaybes: %reportMaybes% tags: - phpstan.rules.rule - class: PHPStan\Rules\Generators\YieldInGeneratorRule arguments: reportMaybes: %reportMaybes% tags: - phpstan.rules.rule - class: PHPStan\Rules\Arrays\ArrayUnpackingRule - class: PHPStan\Rules\Properties\ReadOnlyByPhpDocPropertyAssignRefRule - class: PHPStan\Rules\Properties\ReadOnlyByPhpDocPropertyAssignRule - class: PHPStan\Rules\Variables\ParameterOutAssignedTypeRule - class: PHPStan\Rules\Variables\ParameterOutExecutionEndTypeRule parametersSchema: bootstrapFiles: listOf(string()) excludes_analyse: listOf(string()) excludePaths: schema(anyOf(structure({analyse: listOf(string())}), structure({analyseAndScan: listOf(string())}), structure({analyse: listOf(string()), analyseAndScan: listOf(string())})), nullable()) level: schema(anyOf(int(), string()), nullable()) paths: listOf(string()) exceptions: structure({implicitThrows: bool(), reportUncheckedExceptionDeadCatch: bool(), uncheckedExceptionRegexes: listOf(string()), uncheckedExceptionClasses: listOf(string()), checkedExceptionRegexes: listOf(string()), checkedExceptionClasses: listOf(string()), check: structure({missingCheckedExceptionInThrows: bool(), tooWideThrowType: bool()})}) featureToggles: structure({bleedingEdge: bool(), disableRuntimeReflectionProvider: bool(), skipCheckGenericClasses: listOf(string()), explicitMixedInUnknownGenericNew: bool(), explicitMixedForGlobalVariables: bool(), explicitMixedViaIsArray: bool(), arrayFilter: bool(), arrayUnpacking: bool(), arrayValues: bool(), nodeConnectingVisitorCompatibility: bool(), nodeConnectingVisitorRule: bool(), illegalConstructorMethodCall: bool(), disableCheckMissingIterableValueType: bool(), strictUnnecessaryNullsafePropertyFetch: bool(), looseComparison: bool(), consistentConstructor: bool(), checkUnresolvableParameterTypes: bool(), readOnlyByPhpDoc: bool(), phpDocParserRequireWhitespaceBeforeDescription: bool(), phpDocParserIncludeLines: bool(), enableIgnoreErrorsWithinPhpDocs: bool(), runtimeReflectionRules: bool(), notAnalysedTrait: bool(), curlSetOptTypes: bool(), listType: bool(), abstractTraitMethod: bool(), missingMagicSerializationRule: bool(), nullContextForVoidReturningFunctions: bool(), unescapeStrings: bool(), alwaysCheckTooWideReturnTypeFinalMethods: bool(), duplicateStubs: bool(), logicalXor: bool(), betterNoop: bool(), invarianceComposition: bool(), alwaysTrueAlwaysReported: bool(), disableUnreachableBranchesRules: bool(), varTagType: bool(), closureDefaultParameterTypeRule: bool(), newRuleLevelHelper: bool(), instanceofType: bool(), paramOutVariance: bool(), allInvalidPhpDocs: bool(), strictStaticMethodTemplateTypeVariance: bool(), propertyVariance: bool(), genericPrototypeMessage: bool(), stricterFunctionMap: bool(), invalidPhpDocTagLine: bool(), detectDeadTypeInMultiCatch: bool(), zeroFiles: bool(), projectServicesNotInAnalysedPaths: bool(), callUserFunc: bool(), finalByPhpDoc: bool(), magicConstantOutOfContext: bool(), paramOutType: bool(), pure: bool(), checkParameterCastableToStringFunctions: bool(), uselessReturnValue: bool(), printfArrayParameters: bool(), preciseMissingReturn: bool(), validatePregQuote: bool(), noImplicitWildcard: bool(), narrowPregMatches: bool(), tooWidePropertyType: bool(), explicitThrow: bool(), absentTypeChecks: bool(), requireFileExists: bool()}) fileExtensions: listOf(string()) checkAdvancedIsset: bool() checkAlwaysTrueCheckTypeFunctionCall: bool() checkAlwaysTrueInstanceof: bool() checkAlwaysTrueStrictComparison: bool() checkAlwaysTrueLooseComparison: bool() reportAlwaysTrueInLastCondition: bool() checkClassCaseSensitivity: bool() checkExplicitMixed: bool() checkImplicitMixed: bool() checkFunctionArgumentTypes: bool() checkFunctionNameCase: bool() checkGenericClassInNonGenericObjectType: bool() checkInternalClassCaseSensitivity: bool() checkMissingIterableValueType: bool() checkMissingCallableSignature: bool() checkMissingVarTagTypehint: bool() checkArgumentsPassedByReference: bool() checkMaybeUndefinedVariables: bool() checkNullables: bool() checkThisOnly: bool() checkUnionTypes: bool() checkBenevolentUnionTypes: bool() checkExplicitMixedMissingReturn: bool() checkPhpDocMissingReturn: bool() checkPhpDocMethodSignatures: bool() checkExtraArguments: bool() checkMissingTypehints: bool() checkTooWideReturnTypesInProtectedAndPublicMethods: bool() checkUninitializedProperties: bool() checkDynamicProperties: bool() deprecationRulesInstalled: bool() inferPrivatePropertyTypeFromConstructor: bool() tips: structure({treatPhpDocTypesAsCertain: bool()}) tipsOfTheDay: bool() reportMaybes: bool() reportMaybesInMethodSignatures: bool() reportMaybesInPropertyPhpDocTypes: bool() reportStaticMethodSignatures: bool() reportWrongPhpDocTypeInVarTag: bool() reportAnyTypeWideningInVarTag: bool() reportPossiblyNonexistentGeneralArrayOffset: bool() reportPossiblyNonexistentConstantArrayOffset: bool() checkMissingOverrideMethodAttribute: bool() parallel: structure({jobSize: int(), processTimeout: float(), maximumNumberOfProcesses: int(), minimumNumberOfJobsPerProcess: int(), buffer: int()}) phpVersion: schema(anyOf(schema(int(), min(70100), max(80499))), nullable()) polluteScopeWithLoopInitialAssignments: bool() polluteScopeWithAlwaysIterableForeach: bool() propertyAlwaysWrittenTags: listOf(string()) propertyAlwaysReadTags: listOf(string()) additionalConstructors: listOf(string()) treatPhpDocTypesAsCertain: bool() usePathConstantsAsConstantString: bool() rememberPossiblyImpureFunctionValues: bool() reportMagicMethods: bool() reportMagicProperties: bool() ignoreErrors: listOf(anyOf(string(), structure({?messages: listOf(string()), ?identifier: string(), ?path: string(), ?reportUnmatched: bool()}), structure({?message: string(), ?identifier: string(), ?path: string(), ?reportUnmatched: bool()}), structure({?message: string(), count: int(), path: string(), ?identifier: string(), ?reportUnmatched: bool()}), structure({?message: string(), paths: listOf(string()), ?identifier: string(), ?reportUnmatched: bool()}), structure({?messages: listOf(string()), paths: listOf(string()), ?identifier: string(), ?reportUnmatched: bool()}))) internalErrorsCountLimit: int() cache: structure({nodesByFileCountMax: int(), nodesByStringCountMax: int()}) reportUnmatchedIgnoredErrors: bool() scopeClass: string() typeAliases: arrayOf(string()) universalObjectCratesClasses: listOf(string()) stubFiles: listOf(string()) earlyTerminatingMethodCalls: arrayOf(listOf(string())) earlyTerminatingFunctionCalls: listOf(string()) memoryLimitFile: string() tempResultCachePath: string() resultCachePath: string() resultCacheChecksProjectExtensionFilesDependencies: bool() staticReflectionClassNamePatterns: listOf(string()) dynamicConstantNames: listOf(string()) customRulesetUsed: schema(bool(), nullable()) rootDir: string() tmpDir: string() currentWorkingDirectory: string() cliArgumentsVariablesRegistered: bool() mixinExcludeClasses: listOf(string()) scanFiles: listOf(string()) scanDirectories: listOf(string()) fixerTmpDir: string() editorUrl: schema(string(), nullable()) editorUrlTitle: schema(string(), nullable()) errorFormat: schema(string(), nullable()) pro: structure({dnsServers: schema(listOf(string()), min(1)), tmpDir: string()}) env: arrayOf(string(), anyOf(int(), string())) sysGetTempDir: string() sourceLocatorPlaygroundMode: bool() debugMode: bool() productionMode: bool() tempDir: string() __validate: bool() additionalConfigFiles: arrayOf(string()) generateBaselineFile: schema(string(), nullable()) analysedPaths: listOf(string()) allConfigFiles: listOf(string()) composerAutoloaderProjectPaths: listOf(string()) analysedPathsFromConfig: listOf(string()) usedLevel: string() cliAutoloadFile: schema(string(), nullable()) singleReflectionFile: schema(string(), nullable()) singleReflectionInsteadOfFile: schema(string(), nullable()) includes: - config.level6.neon parameters: checkUnionTypes: true reportMaybes: true includes: - config.level7.neon parameters: checkNullables: true includes: - config.level0.neon parameters: checkMaybeUndefinedVariables: true checkExtraArguments: true reportMagicMethods: true reportMagicProperties: true rules: - PHPStan\Rules\Classes\UnusedConstructorParametersRule - PHPStan\Rules\Constants\ConstantRule - PHPStan\Rules\Functions\UnusedClosureUsesRule - PHPStan\Rules\Variables\EmptyRule - PHPStan\Rules\Variables\IssetRule - PHPStan\Rules\Variables\NullCoalesceRule includes: - config.level3.neon rules: - PHPStan\Rules\Arrays\DeadForeachRule - PHPStan\Rules\DeadCode\UnreachableStatementRule - PHPStan\Rules\DeadCode\UnusedPrivateConstantRule - PHPStan\Rules\DeadCode\UnusedPrivateMethodRule - PHPStan\Rules\Exceptions\OverwrittenExitPointByFinallyRule - PHPStan\Rules\Functions\CallToFunctionStatementWithoutSideEffectsRule - PHPStan\Rules\Methods\CallToMethodStatementWithoutSideEffectsRule - PHPStan\Rules\Methods\CallToStaticMethodStatementWithoutSideEffectsRule - PHPStan\Rules\Methods\NullsafeMethodCallRule - PHPStan\Rules\TooWideTypehints\TooWideArrowFunctionReturnTypehintRule - PHPStan\Rules\TooWideTypehints\TooWideClosureReturnTypehintRule - PHPStan\Rules\TooWideTypehints\TooWideFunctionReturnTypehintRule conditionalTags: PHPStan\Rules\Comparison\ConstantLooseComparisonRule: phpstan.rules.rule: %featureToggles.looseComparison% PHPStan\Rules\Traits\TraitDeclarationCollector: phpstan.collector: %featureToggles.notAnalysedTrait% PHPStan\Rules\Traits\TraitUseCollector: phpstan.collector: %featureToggles.notAnalysedTrait% PHPStan\Rules\Traits\NotAnalysedTraitRule: phpstan.rules.rule: %featureToggles.notAnalysedTrait% PHPStan\Rules\Comparison\LogicalXorConstantConditionRule: phpstan.rules.rule: %featureToggles.logicalXor% PHPStan\Rules\DeadCode\BetterNoopRule: phpstan.rules.rule: %featureToggles.betterNoop% PHPStan\Rules\TooWideTypehints\TooWideFunctionParameterOutTypeRule: phpstan.rules.rule: %featureToggles.paramOutType% PHPStan\Rules\TooWideTypehints\TooWideMethodParameterOutTypeRule: phpstan.rules.rule: %featureToggles.paramOutType% PHPStan\Rules\DeadCode\CallToConstructorStatementWithoutImpurePointsRule: phpstan.rules.rule: %featureToggles.pure% PHPStan\Rules\DeadCode\PossiblyPureNewCollector: phpstan.collector: %featureToggles.pure% PHPStan\Rules\DeadCode\ConstructorWithoutImpurePointsCollector: phpstan.collector: %featureToggles.pure% PHPStan\Rules\DeadCode\CallToFunctionStatementWithoutImpurePointsRule: phpstan.rules.rule: %featureToggles.pure% PHPStan\Rules\DeadCode\PossiblyPureFuncCallCollector: phpstan.collector: %featureToggles.pure% PHPStan\Rules\DeadCode\FunctionWithoutImpurePointsCollector: phpstan.collector: %featureToggles.pure% PHPStan\Rules\DeadCode\CallToMethodStatementWithoutImpurePointsRule: phpstan.rules.rule: %featureToggles.pure% PHPStan\Rules\DeadCode\PossiblyPureMethodCallCollector: phpstan.collector: %featureToggles.pure% PHPStan\Rules\DeadCode\MethodWithoutImpurePointsCollector: phpstan.collector: %featureToggles.pure% PHPStan\Rules\DeadCode\CallToStaticMethodStatementWithoutImpurePointsRule: phpstan.rules.rule: %featureToggles.pure% PHPStan\Rules\DeadCode\PossiblyPureStaticCallCollector: phpstan.collector: %featureToggles.pure% PHPStan\Rules\TooWideTypehints\TooWidePropertyTypeRule: phpstan.rules.rule: %featureToggles.tooWidePropertyType% parameters: checkAdvancedIsset: true services: - class: PHPStan\Rules\Classes\ImpossibleInstanceOfRule arguments: checkAlwaysTrueInstanceof: %checkAlwaysTrueInstanceof% treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% reportAlwaysTrueInLastCondition: %reportAlwaysTrueInLastCondition% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\BooleanAndConstantConditionRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% bleedingEdge: %featureToggles.bleedingEdge% reportAlwaysTrueInLastCondition: %reportAlwaysTrueInLastCondition% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\BooleanOrConstantConditionRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% bleedingEdge: %featureToggles.bleedingEdge% reportAlwaysTrueInLastCondition: %reportAlwaysTrueInLastCondition% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\BooleanNotConstantConditionRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% reportAlwaysTrueInLastCondition: %reportAlwaysTrueInLastCondition% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\DeadCode\NoopRule arguments: better: %featureToggles.betterNoop% tags: - phpstan.rules.rule - class: PHPStan\Rules\DeadCode\CallToConstructorStatementWithoutImpurePointsRule - class: PHPStan\Rules\DeadCode\ConstructorWithoutImpurePointsCollector - class: PHPStan\Rules\DeadCode\PossiblyPureNewCollector - class: PHPStan\Rules\DeadCode\CallToFunctionStatementWithoutImpurePointsRule - class: PHPStan\Rules\DeadCode\FunctionWithoutImpurePointsCollector - class: PHPStan\Rules\DeadCode\PossiblyPureFuncCallCollector - class: PHPStan\Rules\DeadCode\CallToMethodStatementWithoutImpurePointsRule - class: PHPStan\Rules\DeadCode\MethodWithoutImpurePointsCollector - class: PHPStan\Rules\DeadCode\PossiblyPureMethodCallCollector - class: PHPStan\Rules\DeadCode\CallToStaticMethodStatementWithoutImpurePointsRule - class: PHPStan\Rules\DeadCode\PossiblyPureStaticCallCollector - class: PHPStan\Rules\DeadCode\UnusedPrivatePropertyRule arguments: alwaysWrittenTags: %propertyAlwaysWrittenTags% alwaysReadTags: %propertyAlwaysReadTags% checkUninitializedProperties: %checkUninitializedProperties% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\DoWhileLoopConstantConditionRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\ElseIfConstantConditionRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% reportAlwaysTrueInLastCondition: %reportAlwaysTrueInLastCondition% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\IfConstantConditionRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\ImpossibleCheckTypeFunctionCallRule arguments: checkAlwaysTrueCheckTypeFunctionCall: %checkAlwaysTrueCheckTypeFunctionCall% treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% reportAlwaysTrueInLastCondition: %reportAlwaysTrueInLastCondition% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\ImpossibleCheckTypeMethodCallRule arguments: checkAlwaysTrueCheckTypeFunctionCall: %checkAlwaysTrueCheckTypeFunctionCall% treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% reportAlwaysTrueInLastCondition: %reportAlwaysTrueInLastCondition% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\ImpossibleCheckTypeStaticMethodCallRule arguments: checkAlwaysTrueCheckTypeFunctionCall: %checkAlwaysTrueCheckTypeFunctionCall% treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% reportAlwaysTrueInLastCondition: %reportAlwaysTrueInLastCondition% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\LogicalXorConstantConditionRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% reportAlwaysTrueInLastCondition: %reportAlwaysTrueInLastCondition% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% - class: PHPStan\Rules\DeadCode\BetterNoopRule - class: PHPStan\Rules\Comparison\MatchExpressionRule arguments: checkAlwaysTrueStrictComparison: %checkAlwaysTrueStrictComparison% disableUnreachable: %featureToggles.disableUnreachableBranchesRules% reportAlwaysTrueInLastCondition: %reportAlwaysTrueInLastCondition% treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\NumberComparisonOperatorsConstantConditionRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\StrictComparisonOfDifferentTypesRule arguments: checkAlwaysTrueStrictComparison: %checkAlwaysTrueStrictComparison% treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% reportAlwaysTrueInLastCondition: %reportAlwaysTrueInLastCondition% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\ConstantLooseComparisonRule arguments: checkAlwaysTrueLooseComparison: %checkAlwaysTrueLooseComparison% treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% reportAlwaysTrueInLastCondition: %reportAlwaysTrueInLastCondition% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% - class: PHPStan\Rules\Comparison\TernaryOperatorConstantConditionRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\UnreachableIfBranchesRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% disable: %featureToggles.disableUnreachableBranchesRules% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\UnreachableTernaryElseBranchRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% disable: %featureToggles.disableUnreachableBranchesRules% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\WhileLoopAlwaysFalseConditionRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Comparison\WhileLoopAlwaysTrueConditionRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% tags: - phpstan.rules.rule - class: PHPStan\Rules\Methods\CallToConstructorStatementWithoutSideEffectsRule arguments: reportNoConstructor: %featureToggles.pure% tags: - phpstan.rules.rule - class: PHPStan\Rules\TooWideTypehints\TooWideMethodReturnTypehintRule arguments: checkProtectedAndPublicMethods: %checkTooWideReturnTypesInProtectedAndPublicMethods% alwaysCheckFinal: %featureToggles.alwaysCheckTooWideReturnTypeFinalMethods% tags: - phpstan.rules.rule - class: PHPStan\Rules\Properties\NullsafePropertyFetchRule tags: - phpstan.rules.rule - class: PHPStan\Rules\Traits\TraitDeclarationCollector - class: PHPStan\Rules\Traits\TraitUseCollector - class: PHPStan\Rules\Traits\NotAnalysedTraitRule - class: PHPStan\Rules\Exceptions\CatchWithUnthrownExceptionRule arguments: exceptionTypeResolver: @exceptionTypeResolver reportUncheckedExceptionDeadCatch: %exceptions.reportUncheckedExceptionDeadCatch% tags: - phpstan.rules.rule - class: PHPStan\Rules\TooWideTypehints\TooWideFunctionParameterOutTypeRule - class: PHPStan\Rules\TooWideTypehints\TooWideMethodParameterOutTypeRule - class: PHPStan\Rules\TooWideTypehints\TooWidePropertyTypeRule parameters: checkThisOnly: false checkClassCaseSensitivity: true checkGenericClassInNonGenericObjectType: true checkMissingIterableValueType: true checkMissingTypehints: true checkMissingCallableSignature: false __validate: false services: - class: PHPStan\PhpDoc\StubSourceLocatorFactory arguments: php8Parser: @php8PhpParser nodeScopeResolverClassReflector: factory: @stubReflector stubBetterReflectionProvider: class: PHPStan\Reflection\BetterReflection\BetterReflectionProvider arguments: reflector: @stubReflector universalObjectCratesClasses: %universalObjectCratesClasses% autowired: false stubReflector: class: PHPStan\BetterReflection\Reflector\DefaultReflector arguments: sourceLocator: @stubSourceLocator autowired: false stubSourceLocator: class: PHPStan\BetterReflection\SourceLocator\Type\SourceLocator factory: @PHPStan\PhpDoc\StubSourceLocatorFactory::create() autowired: false reflectionProvider: factory: @stubBetterReflectionProvider autowired: - PHPStan\Reflection\ReflectionProvider includes: - config.level8.neon parameters: checkExplicitMixed: true includes: - config.level1.neon parameters: checkClassCaseSensitivity: true checkThisOnly: false checkPhpDocMissingReturn: true rules: - PHPStan\Rules\Cast\EchoRule - PHPStan\Rules\Cast\InvalidCastRule - PHPStan\Rules\Cast\InvalidPartOfEncapsedStringRule - PHPStan\Rules\Cast\PrintRule - PHPStan\Rules\Classes\AccessPrivateConstantThroughStaticRule - PHPStan\Rules\Comparison\UsageOfVoidMatchExpressionRule - PHPStan\Rules\Constants\ValueAssignedToClassConstantRule - PHPStan\Rules\Functions\IncompatibleDefaultParameterTypeRule - PHPStan\Rules\Generics\ClassAncestorsRule - PHPStan\Rules\Generics\ClassTemplateTypeRule - PHPStan\Rules\Generics\EnumAncestorsRule - PHPStan\Rules\Generics\EnumTemplateTypeRule - PHPStan\Rules\Generics\FunctionTemplateTypeRule - PHPStan\Rules\Generics\FunctionSignatureVarianceRule - PHPStan\Rules\Generics\InterfaceAncestorsRule - PHPStan\Rules\Generics\InterfaceTemplateTypeRule - PHPStan\Rules\Generics\MethodTemplateTypeRule - PHPStan\Rules\Generics\MethodTagTemplateTypeRule - PHPStan\Rules\Generics\MethodSignatureVarianceRule - PHPStan\Rules\Generics\TraitTemplateTypeRule - PHPStan\Rules\Generics\UsedTraitsRule - PHPStan\Rules\Methods\CallPrivateMethodThroughStaticRule - PHPStan\Rules\Methods\IncompatibleDefaultParameterTypeRule - PHPStan\Rules\Operators\InvalidComparisonOperationRule - PHPStan\Rules\PhpDoc\FunctionConditionalReturnTypeRule - PHPStan\Rules\PhpDoc\MethodConditionalReturnTypeRule - PHPStan\Rules\PhpDoc\FunctionAssertRule - PHPStan\Rules\PhpDoc\MethodAssertRule - PHPStan\Rules\PhpDoc\IncompatibleSelfOutTypeRule - PHPStan\Rules\PhpDoc\IncompatibleClassConstantPhpDocTypeRule - PHPStan\Rules\PhpDoc\IncompatiblePhpDocTypeRule - PHPStan\Rules\PhpDoc\IncompatiblePropertyPhpDocTypeRule - PHPStan\Rules\PhpDoc\InvalidThrowsPhpDocValueRule - PHPStan\Rules\PhpDoc\IncompatibleParamImmediatelyInvokedCallableRule - PHPStan\Rules\Properties\AccessPrivatePropertyThroughStaticRule - PHPStan\Rules\Classes\RequireImplementsRule - PHPStan\Rules\Classes\RequireExtendsRule - PHPStan\Rules\PhpDoc\RequireImplementsDefinitionClassRule - PHPStan\Rules\PhpDoc\RequireExtendsDefinitionClassRule - PHPStan\Rules\PhpDoc\RequireExtendsDefinitionTraitRule conditionalTags: PHPStan\Rules\Classes\MethodTagRule: phpstan.rules.rule: %featureToggles.absentTypeChecks% PHPStan\Rules\Classes\MethodTagTraitRule: phpstan.rules.rule: %featureToggles.absentTypeChecks% PHPStan\Rules\Classes\MethodTagTraitUseRule: phpstan.rules.rule: %featureToggles.absentTypeChecks% PHPStan\Rules\Classes\MixinTraitRule: phpstan.rules.rule: %featureToggles.absentTypeChecks% PHPStan\Rules\Classes\MixinTraitUseRule: phpstan.rules.rule: %featureToggles.absentTypeChecks% PHPStan\Rules\Classes\PropertyTagRule: phpstan.rules.rule: %featureToggles.absentTypeChecks% PHPStan\Rules\Classes\PropertyTagTraitRule: phpstan.rules.rule: %featureToggles.absentTypeChecks% PHPStan\Rules\Classes\PropertyTagTraitUseRule: phpstan.rules.rule: %featureToggles.absentTypeChecks% PHPStan\Rules\Functions\IncompatibleArrowFunctionDefaultParameterTypeRule: phpstan.rules.rule: %featureToggles.closureDefaultParameterTypeRule% PHPStan\Rules\Functions\IncompatibleClosureDefaultParameterTypeRule: phpstan.rules.rule: %featureToggles.closureDefaultParameterTypeRule% PHPStan\Rules\Generics\MethodTagTemplateTypeTraitRule: phpstan.rules.rule: %featureToggles.absentTypeChecks% PHPStan\Rules\Methods\IllegalConstructorMethodCallRule: phpstan.rules.rule: %featureToggles.illegalConstructorMethodCall% PHPStan\Rules\Methods\IllegalConstructorStaticCallRule: phpstan.rules.rule: %featureToggles.illegalConstructorMethodCall% PHPStan\Rules\PhpDoc\VarTagChangedExpressionTypeRule: phpstan.rules.rule: %featureToggles.varTagType% PHPStan\Rules\Generics\PropertyVarianceRule: phpstan.rules.rule: %featureToggles.propertyVariance% PHPStan\Rules\Pure\PureFunctionRule: phpstan.rules.rule: %featureToggles.pure% PHPStan\Rules\Pure\PureMethodRule: phpstan.rules.rule: %featureToggles.pure% services: - class: PHPStan\Rules\Classes\MixinRule tags: - phpstan.rules.rule - class: PHPStan\Rules\Classes\MixinTraitRule - class: PHPStan\Rules\Classes\MixinTraitUseRule - class: PHPStan\Rules\Classes\MethodTagRule - class: PHPStan\Rules\Classes\MethodTagTraitRule - class: PHPStan\Rules\Classes\MethodTagTraitUseRule - class: PHPStan\Rules\Classes\PropertyTagRule - class: PHPStan\Rules\Classes\PropertyTagTraitRule - class: PHPStan\Rules\Classes\PropertyTagTraitUseRule - class: PHPStan\Rules\PhpDoc\RequireExtendsCheck arguments: checkClassCaseSensitivity: %checkClassCaseSensitivity% - class: PHPStan\Rules\PhpDoc\RequireImplementsDefinitionTraitRule arguments: checkClassCaseSensitivity: %checkClassCaseSensitivity% tags: - phpstan.rules.rule - class: PHPStan\Rules\Functions\IncompatibleArrowFunctionDefaultParameterTypeRule - class: PHPStan\Rules\Functions\IncompatibleClosureDefaultParameterTypeRule - class: PHPStan\Rules\Functions\CallCallablesRule arguments: reportMaybes: %reportMaybes% tags: - phpstan.rules.rule - class: PHPStan\Rules\Generics\MethodTagTemplateTypeTraitRule - class: PHPStan\Rules\Methods\IllegalConstructorMethodCallRule - class: PHPStan\Rules\Methods\IllegalConstructorStaticCallRule - class: PHPStan\Rules\PhpDoc\InvalidPhpDocTagValueRule arguments: checkAllInvalidPhpDocs: %featureToggles.allInvalidPhpDocs% invalidPhpDocTagLine: %featureToggles.invalidPhpDocTagLine% tags: - phpstan.rules.rule - class: PHPStan\Rules\PhpDoc\InvalidPhpDocVarTagTypeRule arguments: checkClassCaseSensitivity: %checkClassCaseSensitivity% checkMissingVarTagTypehint: %checkMissingVarTagTypehint% tags: - phpstan.rules.rule - class: PHPStan\Rules\PhpDoc\InvalidPHPStanDocTagRule arguments: checkAllInvalidPhpDocs: %featureToggles.allInvalidPhpDocs% tags: - phpstan.rules.rule - class: PHPStan\Rules\PhpDoc\VarTagChangedExpressionTypeRule - class: PHPStan\Rules\PhpDoc\WrongVariableNameInVarTagRule arguments: checkTypeAgainstNativeType: %featureToggles.varTagType% tags: - phpstan.rules.rule - class: PHPStan\Rules\Generics\PropertyVarianceRule arguments: readOnlyByPhpDoc: %featureToggles.readOnlyByPhpDoc% - class: PHPStan\Rules\Pure\PureFunctionRule - class: PHPStan\Rules\Pure\PureMethodRule - class: PHPStan\Rules\Operators\InvalidBinaryOperationRule arguments: bleedingEdge: %featureToggles.bleedingEdge% tags: - phpstan.rules.rule - class: PHPStan\Rules\Operators\InvalidUnaryOperationRule arguments: bleedingEdge: %featureToggles.bleedingEdge% tags: - phpstan.rules.rule includes: - config.level4.neon parameters: checkFunctionArgumentTypes: true checkArgumentsPassedByReference: true conditionalTags: PHPStan\Rules\Functions\ArrayFilterRule: phpstan.rules.rule: %featureToggles.arrayFilter% PHPStan\Rules\Functions\ArrayValuesRule: phpstan.rules.rule: %featureToggles.arrayValues% PHPStan\Rules\Functions\CallUserFuncRule: phpstan.rules.rule: %featureToggles.callUserFunc% PHPStan\Rules\Functions\ParameterCastableToStringRule: phpstan.rules.rule: %featureToggles.checkParameterCastableToStringFunctions% PHPStan\Rules\Functions\ImplodeParameterCastableToStringRule: phpstan.rules.rule: %featureToggles.checkParameterCastableToStringFunctions% PHPStan\Rules\Functions\SortParameterCastableToStringRule: phpstan.rules.rule: %featureToggles.checkParameterCastableToStringFunctions% rules: - PHPStan\Rules\DateTimeInstantiationRule services: - class: PHPStan\Rules\Functions\RandomIntParametersRule arguments: reportMaybes: %reportMaybes% tags: - phpstan.rules.rule - class: PHPStan\Rules\Functions\ArrayFilterRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% - class: PHPStan\Rules\Functions\ArrayValuesRule arguments: treatPhpDocTypesAsCertain: %treatPhpDocTypesAsCertain% treatPhpDocTypesAsCertainTip: %tips.treatPhpDocTypesAsCertain% - class: PHPStan\Rules\Functions\CallUserFuncRule - class: PHPStan\Rules\Functions\ImplodeFunctionRule arguments: disabled: %featureToggles.checkParameterCastableToStringFunctions% tags: - phpstan.rules.rule - class: PHPStan\Rules\Functions\ParameterCastableToStringRule - class: PHPStan\Rules\Functions\ImplodeParameterCastableToStringRule - class: PHPStan\Rules\Functions\SortParameterCastableToStringRule ['iterator_count' => ['0|positive-int', 'iterator' => 'iterable'], 'iterator_to_array' => ['array', 'iterator' => 'iterable', 'use_keys=' => 'bool'], 'str_split' => ['list', 'str' => 'string', 'split_length=' => 'positive-int']], 'old' => []]; ['error_log' => ['bool', 'message' => 'string', 'message_type=' => '0|1|3|4', 'destination=' => 'string', 'extra_headers=' => 'string'], 'filter_input' => ['mixed', 'type' => 'INPUT_GET|INPUT_POST|INPUT_COOKIE|INPUT_SERVER|INPUT_ENV', 'variable_name' => 'string', 'filter=' => 'int', 'options=' => 'array|int'], 'filter_input_array' => ['array|false|null', 'type' => 'INPUT_GET|INPUT_POST|INPUT_COOKIE|INPUT_SERVER|INPUT_ENV', 'definition=' => 'int|array', 'add_empty=' => 'bool'], 'hash_hkdf' => ['non-falsy-string', 'algo' => 'non-falsy-string', 'key' => 'string', 'length=' => '0|positive-int', 'info=' => 'string', 'salt=' => 'string'], 'hash_pbkdf2' => ['non-empty-string', 'algo' => 'non-falsy-string', 'password' => 'string', 'salt' => 'string', 'iterations' => 'positive-int', 'length=' => '0|positive-int', 'raw_output=' => 'bool'], 'imagecreate' => ['__benevolent', 'width' => 'int<1, max>', 'height' => 'int<1, max>'], 'imagecreatetruecolor' => ['__benevolent', 'width' => 'int<1, max>', 'height' => 'int<1, max>'], 'mb_detect_order' => ['bool|list', 'encoding_list=' => 'non-empty-list|non-falsy-string|null']], 'old' => []]; // // Hoa // // // @license // // New BSD License // // Copyright © 2007-2017, Hoa community. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // * Neither the name of the Hoa nor the names of its contributors may be // used to endorse or promote products derived from this software without // specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // // Grammar \Hoa\Regex\Grammar. // // Provide grammar of PCRE (Perl Compatible Regular Expression)for the LL(k) // parser. More informations at http://pcre.org/pcre.txt, sections pcrepattern & // pcresyntax. // // @copyright Copyright © 2007-2017 Hoa community. // @license New BSD License // // Character classes. // tokens suffixed with "fc_" are the same as without such suffix but followed by "class:_class" %token negative_class_fc_ \[\^(?=\]) -> class_fc %token class_fc_ \[(?=\]) -> class_fc %token class_fc:_class \] -> class %token negative_class_ \[\^ -> class %token class_ \[ -> class %token class:posix_class \[:\^?[a-z]+:\] %token class:class_ \[ %token class:_class \] -> default %token class:range \- // taken over from literals but class:character has \b support on top (backspace in character classes) %token class:character \\([aefnrtb]|c[\x00-\x7f]) %token class:dynamic_character \\([0-7]{3}|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}) %token class:character_type \\([CdDhHNRsSvVwWX]|[pP]{[^}]+}) %token class:literal \\.|.|\n // Internal options. // See https://www.regular-expressions.info/refmodifiers.html // and https://www.php.net/manual/en/regexp.reference.internal-options.php %token internal_option \(\?[imsxnJUX^]*-?[imsxnJUX^]+\) // Lookahead and lookbehind assertions. %token lookahead_ \(\?= %token negative_lookahead_ \(\?! %token lookbehind_ \(\?<= %token negative_lookbehind_ \(\? nc %token absolute_reference_ \(\?\((?=\d) -> c %token relative_reference_ \(\?\((?=[\+\-]) -> c %token c:index [\+\-]?\d+ -> default %token assertion_reference_ \(\?\( // Comments. %token comment_ \(\?# -> co %token co:_comment \) -> default %token co:comment .*?(?=(? mark %token mark:name [^)]+ %token mark:_marker \) -> default // Capturing group. %token named_capturing_ \(\?P?< -> nc %token nc:_named_capturing > -> default %token nc:capturing_name .+?(?=(?) %token non_capturing_ \(\?: %token non_capturing_internal_option \(\?[imsxnJUX^]*-?[imsxnJUX^]+: %token non_capturing_reset_ \(\?\| %token atomic_group_ \(\?> %token capturing_ \( %token _capturing \) // Quantifiers (by default, greedy). %token zero_or_one_possessive \?\+ %token zero_or_one_lazy \?\? %token zero_or_one \? %token zero_or_more_possessive \*\+ %token zero_or_more_lazy \*\? %token zero_or_more \* %token one_or_more_possessive \+\+ %token one_or_more_lazy \+\? %token one_or_more \+ %token exactly_n \{[0-9]+\} %token n_to_m_possessive \{[0-9]+,[0-9]+\}\+ %token n_to_m_lazy \{[0-9]+,[0-9]+\}\? %token n_to_m \{[0-9]+,[0-9]+\} %token n_or_more_possessive \{[0-9]+,\}\+ %token n_or_more_lazy \{[0-9]+,\}\? %token n_or_more \{[0-9]+,\} // Alternation. %token alternation \| // Literal. %token character \\([aefnrt]|c[\x00-\x7f]) %token dynamic_character \\([0-7]{3}|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}) // Please, see PCRESYNTAX(3), General Category properties, PCRE special category // properties and script names for \p{} and \P{}. %token character_type \\([CdDhHNRsSvVwWX]|[pP]{[^}]+}) %token anchor \\([bBAZzG])|\^|\$ %token match_point_reset \\K %token literal \\.|.|\n // Rules. #expression: alternation() alternation: concatenation()? ( concatenation()? #alternation )* concatenation: ( internal_options() | assertion() | quantification() | condition() ) ( ( internal_options() | assertion() | quantification() | condition() ) #concatenation )* #internal_options: #condition: ( ::named_reference_:: ::_named_capturing:: #namedcondition | ( ::relative_reference_:: #relativecondition | ::absolute_reference_:: #absolutecondition ) | ::assertion_reference_:: alternation() #assertioncondition ) ::_capturing:: alternation() ::_capturing:: assertion: ( ::lookahead_:: #lookahead | ::negative_lookahead_:: #negativelookahead | ::lookbehind_:: #lookbehind | ::negative_lookbehind_:: #negativelookbehind ) alternation() ::_capturing:: quantification: ( class() | simple() ) ( quantifier() #quantification )? quantifier: | | | | | | | | | | | | | | | #class: ( ::negative_class_fc_:: #negativeclass <_class> | ::class_fc_:: <_class> | ::negative_class_:: #negativeclass | ::class_:: ) ? ( | | range() ? | literal() )* ? ::_class:: #range: literal() ::range:: literal() simple: capturing() | literal() #capturing: ::marker_:: ::_marker:: #mark | ::comment_:: ? ::_comment:: #comment | ( ::named_capturing_:: ::_named_capturing:: #namedcapturing | ::non_capturing_:: #noncapturing | non_capturing_internal_options() #noncapturing | ::non_capturing_reset_:: #noncapturingreset | ::atomic_group_:: #atomicgroup | ::capturing_:: ) alternation() ::_capturing:: non_capturing_internal_options: literal: | | | | | ' => [', ''=>''] * alternative signature for the same function * '' => [', ''=>''] * * A '&' in front of the means the arg is always passed by reference. * (i.e. ReflectionParameter->isPassedByReference()) * This was previously only used in cases where the function actually created the * variable in the local scope. * Some reference arguments will have prefixes in to indicate the way the argument is used. * Currently, the only prefixes with meaning are 'rw_' (read-write) and 'w_' (write). * Those prefixes don't mean anything for non-references. * Code using these signatures should remove those prefixes from messages rendered to the user. * 1. '&rw_' indicates that a parameter with a value is expected to be passed in, and may be modified. * Phan will warn if the variable has an incompatible type, or is undefined. * 2. '&w_' indicates that a parameter is expected to be passed in, and the value will be ignored, and may be overwritten. * 3. The absence of a prefix is treated by Phan the same way as having the prefix 'w_' (Some may be changed to 'rw_name'). These will have prefixes added later. * * So, for functions like sort() where technically the arg is by-ref, * indicate the reference param's signature by-ref and read-write, * as `'&rw_array'=>'array'` * so that Phan won't create it in the local scope * * However, for a function like preg_match() where the 3rd arg is an array of sub-pattern matches (and optional), * this arg needs to be marked as by-ref and write-only, as `'&w_matches='=>'array'`. * * A '=' following the indicates this arg is optional. * * The can begin with '...' to indicate the arg is variadic. * '...args=' indicates it is both variadic and optional. * * Some reference arguments will have prefixes in to indicate the way the argument is used. * Currently, the only prefixes with meaning are 'rw_' and 'w_'. * Code using these signatures should remove those prefixes from messages rendered to the user. * 1. '&rw_name' indicates that a parameter with a value is expected to be passed in, and may be modified. * 2. '&w_name' indicates that a parameter is expected to be passed in, and the value will be ignored, and may be overwritten. * * Sources of stub info: * * 1. Reflection * 2. docs.php.net's SVN repo or website, and examples (See internal/internalsignatures.php) * 3. Various websites documenting individual extensions * 4. PHPStorm stubs (For anything missing from the above sources) * See internal/internalsignatures.php */ return [ '_' => ['string', 'message'=>'string'], 'abs' => ['float|0|positive-int', 'num'=>'int|float'], 'accelerator_get_configuration' => ['array'], 'accelerator_get_scripts' => ['array'], 'accelerator_get_status' => ['array', 'fetch_scripts'=>'bool'], 'accelerator_reset' => [''], 'accelerator_set_status' => ['void', 'status'=>''], 'acos' => ['float', 'number'=>'float'], 'acosh' => ['float', 'number'=>'float'], 'addcslashes' => ['string', 'str'=>'string', 'charlist'=>'string'], 'addslashes' => ['string', 'str'=>'string'], 'AMQPChannel::__construct' => ['void', 'connection'=>'AMQPConnection'], 'AMQPChannel::basicRecover' => ['void', 'requeue='=>'bool'], 'AMQPChannel::commitTransaction' => ['void'], 'AMQPChannel::getChannelId' => ['int<1, 65535>'], 'AMQPChannel::getConnection' => ['AMQPConnection'], 'AMQPChannel::getPrefetchCount' => ['int<0, 65535>'], 'AMQPChannel::getPrefetchSize' => ['int<0, max>'], 'AMQPChannel::isConnected' => ['bool'], 'AMQPChannel::qos' => ['void', 'size'=>'int', 'count'=>'int', 'global='=>'bool'], 'AMQPChannel::rollbackTransaction' => ['void'], 'AMQPChannel::setPrefetchCount' => ['void', 'count'=>'int'], 'AMQPChannel::setPrefetchSize' => ['void', 'size'=>'int'], 'AMQPChannel::startTransaction' => ['void'], 'AMQPConnection::__construct' => ['void', 'credentials='=>'array'], 'AMQPConnection::connect' => ['void'], 'AMQPConnection::disconnect' => ['void'], 'AMQPConnection::getHost' => ['string'], 'AMQPConnection::getLogin' => ['string'], 'AMQPConnection::getMaxChannels' => ['int<1, 65535>'], 'AMQPConnection::getPassword' => ['string'], 'AMQPConnection::getPort' => ['int<1, 65535>'], 'AMQPConnection::getReadTimeout' => ['float'], 'AMQPConnection::getTimeout' => ['float'], 'AMQPConnection::getUsedChannels' => ['int<1, 65535>'], 'AMQPConnection::getVhost' => ['string'], 'AMQPConnection::getWriteTimeout' => ['float'], 'AMQPConnection::isConnected' => ['bool'], 'AMQPConnection::isPersistent' => ['bool'], 'AMQPConnection::pconnect' => ['void'], 'AMQPConnection::pdisconnect' => ['void'], 'AMQPConnection::preconnect' => ['void'], 'AMQPConnection::reconnect' => ['void'], 'AMQPConnection::setHost' => ['void', 'host'=>'string'], 'AMQPConnection::setLogin' => ['void', 'login'=>'string'], 'AMQPConnection::setPassword' => ['void', 'password'=>'string'], 'AMQPConnection::setPort' => ['void', 'port'=>'int'], 'AMQPConnection::setReadTimeout' => ['void', 'timeout'=>'int'], 'AMQPConnection::setTimeout' => ['void', 'timeout'=>'int'], 'AMQPConnection::setVhost' => ['void', 'vhost'=>'string'], 'AMQPConnection::setWriteTimeout' => ['void', 'timeout'=>'int'], 'AMQPEnvelope::getAppId' => ['string|null'], 'AMQPEnvelope::getBody' => ['string'], 'AMQPEnvelope::getContentEncoding' => ['string|null'], 'AMQPEnvelope::getContentType' => ['string|null'], 'AMQPEnvelope::getCorrelationId' => ['string|null'], 'AMQPEnvelope::getDeliveryMode' => ['int'], 'AMQPEnvelope::getDeliveryTag' => ['int|null'], 'AMQPEnvelope::getExchangeName' => ['string|null'], 'AMQPEnvelope::getExpiration' => ['string|null'], 'AMQPEnvelope::getHeader' => ['mixed', 'headerName'=>'string'], 'AMQPEnvelope::getHeaders' => ['array'], 'AMQPEnvelope::getMessageId' => ['string|null'], 'AMQPEnvelope::getPriority' => ['int<0, max>'], 'AMQPEnvelope::getReplyTo' => ['string|null'], 'AMQPEnvelope::getRoutingKey' => ['string'], 'AMQPEnvelope::getTimestamp' => ['int|null'], 'AMQPEnvelope::getType' => ['string|null'], 'AMQPEnvelope::getUserId' => ['string|null'], 'AMQPEnvelope::isRedelivery' => ['bool'], 'AMQPExchange::__construct' => ['void', 'channel'=>'AMQPChannel'], 'AMQPExchange::bind' => ['void', 'exchangeName'=>'string', 'routingKey='=>'string|null', 'arguments='=>'array'], 'AMQPExchange::declareExchange' => ['void'], 'AMQPExchange::delete' => ['void', 'exchangeName='=>'string', 'flags='=>'int'], 'AMQPExchange::getArgument' => ['scalar|null', 'argumentName'=>'string'], 'AMQPExchange::getArguments' => ['array'], 'AMQPExchange::getChannel' => ['AMQPChannel'], 'AMQPExchange::getConnection' => ['AMQPConnection'], 'AMQPExchange::getFlags' => ['int'], 'AMQPExchange::getName' => ['string|null'], 'AMQPExchange::getType' => ['string|null'], 'AMQPExchange::publish' => ['void', 'message'=>'string', 'routingKey='=>'string|null', 'flags='=>'int|null', 'header='=>'array'], 'AMQPExchange::setArgument' => ['void', 'argumentName'=>'string', 'argumentValue'=>'scalar|null'], 'AMQPExchange::setArguments' => ['void', 'arguments'=>'array'], 'AMQPExchange::setFlags' => ['void', 'flags'=>'int|null'], 'AMQPExchange::setName' => ['void', 'exchangeName'=>'string|null'], 'AMQPExchange::setType' => ['void', 'exchangeType'=>'string|null'], 'AMQPExchange::unbind' => ['void', 'exchangeName'=>'string', 'routingKey='=>'string|null', 'arguments='=>'array'], 'AMQPQueue::__construct' => ['void', 'channel'=>'AMQPChannel'], 'AMQPQueue::ack' => ['void', 'deliveryTag'=>'int', 'flags='=>'int|null'], 'AMQPQueue::bind' => ['void', 'exchangeName'=>'string', 'routingKey='=>'string|null', 'arguments='=>'array'], 'AMQPQueue::cancel' => ['void', 'consumerTag='=>'string'], 'AMQPQueue::consume' => ['void', 'callback='=>'null|callable(AMQPEnvelope, AMQPQueue): mixed', 'flags='=>'int|null', 'consumerTag='=>'string|null'], 'AMQPQueue::declareQueue' => ['int'], 'AMQPQueue::delete' => ['int', 'flags='=>'int|null'], 'AMQPQueue::get' => ['AMQPEnvelope|null', 'flags='=>'int|null'], 'AMQPQueue::getArgument' => ['scalar|null|array|AMQPValue|AMQPDecimal|AMQPTimestamp', 'argumentName'=>'string'], 'AMQPQueue::getArguments' => ['array'], 'AMQPQueue::getChannel' => ['AMQPChannel'], 'AMQPQueue::getConnection' => ['AMQPConnection'], 'AMQPQueue::getFlags' => ['int'], 'AMQPQueue::getName' => ['string|null'], 'AMQPQueue::nack' => ['void', 'deliveryTag'=>'int', 'flags='=>'int|null'], 'AMQPQueue::purge' => ['int'], 'AMQPQueue::reject' => ['void', 'deliveryTag'=>'int', 'flags='=>'int|null'], 'AMQPQueue::setArgument' => ['void', 'argumentName'=>'string', 'argumentValue'=>'scalar|null|array|AMQPValue|AMQPDecimal|AMQPTimestamp'], 'AMQPQueue::setArguments' => ['void', 'arguments'=>'array'], 'AMQPQueue::setFlags' => ['void', 'flags'=>'int|null'], 'AMQPQueue::setName' => ['void', 'name'=>'string'], 'AMQPQueue::unbind' => ['void', 'exchangeName'=>'string', 'routingKey='=>'string|null', 'arguments='=>'array'], 'apache_child_terminate' => ['bool'], 'apache_get_modules' => ['array'], 'apache_get_version' => ['string|false'], 'apache_getenv' => ['string|false', 'variable'=>'string', 'walk_to_top='=>'bool'], 'apache_lookup_uri' => ['object|false', 'filename'=>'string'], 'apache_note' => ['string|false', 'note_name'=>'string', 'note_value='=>'string'], 'apache_request_headers' => ['array|false'], 'apache_reset_timeout' => ['bool'], 'apache_response_headers' => ['array|false'], 'apache_setenv' => ['bool', 'variable'=>'string', 'value'=>'string', 'walk_to_top='=>'bool'], 'apc_add' => ['bool', 'key'=>'string', 'var'=>'mixed', 'ttl='=>'int'], 'apc_add\'1' => ['array', 'values'=>'array', 'unused='=>'', 'ttl='=>'int'], 'apc_bin_dump' => ['string', 'files='=>'array', 'user_vars='=>'array'], 'apc_bin_dumpfile' => ['int', 'files'=>'array', 'user_vars'=>'array', 'filename'=>'string', 'flags='=>'int', 'context='=>'resource'], 'apc_bin_load' => ['bool', 'data'=>'string', 'flags='=>'int'], 'apc_bin_loadfile' => ['bool', 'filename'=>'string', 'context='=>'resource', 'flags='=>'int'], 'apc_cache_info' => ['array', 'cache_type='=>'string', 'limited='=>'bool'], 'apc_cas' => ['bool', 'key'=>'string', 'old'=>'int', 'new'=>'int'], 'apc_clear_cache' => ['bool', 'cache_type='=>'string'], 'apc_compile_file' => ['mixed', 'filename'=>'string', 'atomic='=>'bool'], 'apc_dec' => ['int', 'key'=>'string', 'step='=>'int', '&w_success='=>'bool'], 'apc_define_constants' => ['bool', 'key'=>'string', 'constants'=>'array', 'case_sensitive='=>'bool'], 'apc_delete' => ['bool', 'key'=>'string|string[]|APCIterator'], 'apc_delete_file' => ['mixed', 'keys'=>'mixed'], 'apc_exists' => ['bool', 'keys'=>'string'], 'apc_exists\'1' => ['array', 'keys'=>'string[]'], 'apc_fetch' => ['mixed', 'key'=>'mixed', '&w_success='=>'bool'], 'apc_inc' => ['int', 'key'=>'string', 'step='=>'int', '&w_success='=>'bool'], 'apc_load_constants' => ['bool', 'key'=>'string', 'case_sensitive='=>'bool'], 'apc_sma_info' => ['array', 'limited='=>'bool'], 'apc_store' => ['bool', 'key'=>'string', 'var'=>'', 'ttl='=>'int'], 'apc_store\'1' => ['array', 'values'=>'array', 'unused='=>'', 'ttl='=>'int'], 'APCIterator::__construct' => ['void', 'cache'=>'string', 'search='=>'', 'format='=>'int', 'chunk_size='=>'int', 'list='=>'int'], 'APCIterator::current' => ['mixed'], 'APCIterator::getTotalCount' => ['int'], 'APCIterator::getTotalHits' => ['int'], 'APCIterator::getTotalSize' => ['int'], 'APCIterator::key' => ['string'], 'APCIterator::next' => ['void'], 'APCIterator::rewind' => ['void'], 'APCIterator::valid' => ['bool'], 'apcu_add' => ['bool', 'key'=>'string', 'var'=>'', 'ttl='=>'int'], 'apcu_add\'1' => ['array', 'values'=>'array', 'unused='=>'', 'ttl='=>'int'], 'apcu_cache_info' => ['array', 'limited='=>'bool'], 'apcu_cas' => ['bool', 'key'=>'string', 'old'=>'int', 'new'=>'int'], 'apcu_clear_cache' => ['bool'], 'apcu_dec' => ['int', 'key'=>'string', 'step='=>'int', '&w_success='=>'bool', 'ttl='=>'int'], 'apcu_delete' => ['bool', 'key'=>'string|APCuIterator'], 'apcu_delete\'1' => ['list', 'key'=>'string[]'], 'apcu_entry' => ['mixed', 'key'=>'string', 'generator'=>'callable', 'ttl='=>'int'], 'apcu_exists' => ['bool', 'keys'=>'string'], 'apcu_exists\'1' => ['array', 'keys'=>'string[]'], 'apcu_fetch' => ['mixed', 'key'=>'string|string[]', '&w_success='=>'bool'], 'apcu_inc' => ['int', 'key'=>'string', 'step='=>'int', '&w_success='=>'bool', 'ttl='=>'int'], 'apcu_sma_info' => ['array', 'limited='=>'bool'], 'apcu_store' => ['bool', 'key'=>'string', 'var='=>'', 'ttl='=>'int'], 'apcu_store\'1' => ['array', 'values'=>'array', 'unused='=>'', 'ttl='=>'int'], 'APCuIterator::__construct' => ['void', 'search='=>'string|string[]|null', 'format='=>'int', 'chunk_size='=>'int', 'list='=>'int'], 'APCuIterator::current' => ['mixed'], 'APCuIterator::getTotalCount' => ['int'], 'APCuIterator::getTotalHits' => ['int'], 'APCuIterator::getTotalSize' => ['int'], 'APCuIterator::key' => ['string'], 'APCuIterator::next' => ['void'], 'APCuIterator::rewind' => ['void'], 'APCuIterator::valid' => ['bool'], 'apd_breakpoint' => ['bool', 'debug_level'=>'int'], 'apd_callstack' => ['array'], 'apd_clunk' => ['void', 'warning'=>'string', 'delimiter='=>'string'], 'apd_continue' => ['bool', 'debug_level'=>'int'], 'apd_croak' => ['void', 'warning'=>'string', 'delimiter='=>'string'], 'apd_dump_function_table' => ['void'], 'apd_dump_persistent_resources' => ['array'], 'apd_dump_regular_resources' => ['array'], 'apd_echo' => ['bool', 'output'=>'string'], 'apd_get_active_symbols' => ['array'], 'apd_set_pprof_trace' => ['string', 'dump_directory='=>'string', 'fragment='=>'string'], 'apd_set_session' => ['void', 'debug_level'=>'int'], 'apd_set_session_trace' => ['void', 'debug_level'=>'int', 'dump_directory='=>'string'], 'apd_set_session_trace_socket' => ['bool', 'tcp_server'=>'string', 'socket_type'=>'int', 'port'=>'int', 'debug_level'=>'int'], 'AppendIterator::__construct' => ['void'], 'AppendIterator::append' => ['void', 'iterator'=>'Iterator'], 'AppendIterator::current' => ['mixed'], 'AppendIterator::getArrayIterator' => ['ArrayIterator'], 'AppendIterator::getInnerIterator' => ['iterator'], 'AppendIterator::getIteratorIndex' => ['int'], 'AppendIterator::key' => ['mixed'], 'AppendIterator::next' => ['void'], 'AppendIterator::rewind' => ['void'], 'AppendIterator::valid' => ['bool'], 'array_change_key_case' => ['array', 'input'=>'array', 'case='=>'int'], 'array_chunk' => ['list', 'input'=>'array', 'size'=>'positive-int', 'preserve_keys='=>'bool'], 'array_column' => ['array', 'array'=>'array', 'column_key'=>'mixed', 'index_key='=>'mixed'], 'array_combine' => ['array|false', 'keys'=>'array', 'values'=>'array'], 'array_count_values' => ['array', 'input'=>'array'], 'array_diff' => ['array', 'arr1'=>'array', 'arr2'=>'array', '...args='=>'array'], 'array_diff_assoc' => ['array', 'arr1'=>'array', 'arr2'=>'array', '...args='=>'array'], 'array_diff_key' => ['array', 'arr1'=>'array', 'arr2'=>'array', '...args='=>'array'], 'array_diff_uassoc' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'data_comp_func'=>'callable(mixed,mixed):int'], 'array_diff_uassoc\'1' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest='=>'array|callable'], 'array_diff_ukey' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'key_comp_func'=>'callable(mixed,mixed):int'], 'array_diff_ukey\'1' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest='=>'array|callable(mixed,mixed):int'], 'array_fill' => ['array', 'start_key'=>'int', 'num'=>'int', 'val'=>'mixed'], 'array_fill_keys' => ['array', 'keys'=>'array', 'val'=>'mixed'], 'array_filter' => ['array', 'input'=>'array', 'callback='=>'callable(mixed,mixed):bool|callable(mixed):bool', 'flag='=>'int'], 'array_flip' => ['array', 'input'=>'array'], 'array_intersect' => ['array', 'arr1'=>'array', 'arr2'=>'array', '...args='=>'array'], 'array_intersect_assoc' => ['array', 'arr1'=>'array', 'arr2'=>'array', '...args='=>'array'], 'array_intersect_key' => ['array', 'arr1'=>'array', 'arr2'=>'array', '...args='=>'array'], 'array_intersect_uassoc' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'key_compare_func'=>'callable(mixed,mixed):int'], 'array_intersect_uassoc\'1' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest'=>'array|callable'], 'array_intersect_ukey' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'key_compare_func'=>'callable(mixed,mixed):int'], 'array_intersect_ukey\'1' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest'=>'array|callable(mixed,mixed):int'], 'array_key_exists' => ['bool', 'key'=>'string|int', 'search'=>'array'], 'array_key_first' => ['int|string|null', 'array'=>'array'], 'array_key_last' => ['int|string|null', 'array'=>'array'], 'array_keys' => ['list', 'input'=>'array', 'search_value='=>'mixed', 'strict='=>'bool'], 'array_map' => ['array', 'callback'=>'?callable', 'array'=>'array', '...args='=>'array'], 'array_merge' => ['array', 'arr1'=>'array', '...args='=>'array'], 'array_merge_recursive' => ['array', 'arr1'=>'array', '...args='=>'array'], 'array_multisort' => ['bool', 'array1'=>'array', 'array1_sort_order='=>'array|int', 'array1_sort_flags='=>'array|int', '...args='=>'array|int'], 'array_pad' => ['array', 'input'=>'array', 'pad_size'=>'int', 'pad_value'=>'mixed'], 'array_pop' => ['mixed', '&rw_stack'=>'array'], 'array_product' => ['int|float', 'input'=>'array'], 'array_push' => ['int', '&rw_stack'=>'array', 'var'=>'mixed', '...vars='=>'mixed'], 'array_rand' => ['int|string|array|array', 'input'=>'array', 'num_req'=>'int'], 'array_rand\'1' => ['int|string', 'input'=>'array'], 'array_reduce' => ['mixed', 'input'=>'array', 'callback'=>'callable(mixed,mixed):mixed', 'initial='=>'mixed'], 'array_replace' => ['array', 'arr1'=>'array', 'arr2'=>'array', '...args='=>'array'], 'array_replace_recursive' => ['array', 'arr1'=>'array', 'arr2'=>'array', '...args='=>'array'], 'array_reverse' => ['array', 'input'=>'array', 'preserve='=>'bool'], 'array_search' => ['int|string|false', 'needle'=>'mixed', 'haystack'=>'array', 'strict='=>'bool'], 'array_shift' => ['mixed', '&rw_stack'=>'array'], 'array_slice' => ['array', 'input'=>'array', 'offset'=>'int', 'length='=>'?int', 'preserve_keys='=>'bool'], 'array_splice' => ['array', '&rw_input'=>'array', 'offset'=>'int', 'length='=>'int', 'replacement='=>'mixed'], 'array_sum' => ['int|float', 'input'=>'array'], 'array_udiff' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'data_comp_func'=>'callable(mixed,mixed):int'], 'array_udiff\'1' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest='=>'array|callable(mixed,mixed):int'], 'array_udiff_assoc' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'key_comp_func'=>'callable(mixed,mixed):int'], 'array_udiff_assoc\'1' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest='=>'array|callable(mixed,mixed):int'], 'array_udiff_uassoc' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'data_comp_func'=>'callable', 'key_comp_func'=>'callable(mixed,mixed):int'], 'array_udiff_uassoc\'1' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', 'arg5'=>'array|callable(mixed,mixed):int', '...rest='=>'array|callable(mixed,mixed):int'], 'array_uintersect' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'data_compare_func'=>'callable(mixed,mixed):int'], 'array_uintersect\'1' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest='=>'array|callable(mixed,mixed):int'], 'array_uintersect_assoc' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'data_compare_func'=>'callable(mixed,mixed):int'], 'array_uintersect_assoc\'1' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest='=>'array|callable(mixed,mixed):int'], 'array_uintersect_uassoc' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'data_compare_func'=>'callable(mixed,mixed):int', 'key_compare_func'=>'callable(mixed,mixed):int'], 'array_uintersect_uassoc\'1' => ['array', 'arr1'=>'array', 'arr2'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', 'arg5'=>'array|callable(mixed,mixed):int', '...rest='=>'array|callable(mixed,mixed):int'], 'array_unique' => ['array', 'array'=>'array', 'flags='=>'int'], 'array_unshift' => ['positive-int', '&rw_stack'=>'array', 'var'=>'mixed', '...vars='=>'mixed'], 'array_values' => ['list', 'input'=>'array'], 'array_walk' => ['bool', '&rw_input'=>'array|object', 'callback'=>'callable', 'userdata='=>'mixed'], 'array_walk_recursive' => ['bool', '&rw_input'=>'array|object', 'callback'=>'callable', 'userdata='=>'mixed'], 'ArrayAccess::offsetExists' => ['bool', 'offset'=>'mixed'], 'ArrayAccess::offsetGet' => ['mixed', 'offset'=>'mixed'], 'ArrayAccess::offsetSet' => ['void', 'offset'=>'mixed', 'value'=>'mixed'], 'ArrayAccess::offsetUnset' => ['void', 'offset'=>'mixed'], 'ArrayIterator::__construct' => ['void', 'array='=>'array|object', 'flags='=>'int'], 'ArrayIterator::append' => ['void', 'value'=>'mixed'], 'ArrayIterator::asort' => ['void'], 'ArrayIterator::count' => ['0|positive-int'], 'ArrayIterator::current' => ['mixed'], 'ArrayIterator::getArrayCopy' => ['array'], 'ArrayIterator::getFlags' => ['int'], 'ArrayIterator::key' => ['int|string|false'], 'ArrayIterator::ksort' => ['void'], 'ArrayIterator::natcasesort' => ['void'], 'ArrayIterator::natsort' => ['void'], 'ArrayIterator::next' => ['void'], 'ArrayIterator::offsetExists' => ['bool', 'index'=>'string|int|bool|null'], 'ArrayIterator::offsetGet' => ['mixed', 'index'=>'string|int|bool|null'], 'ArrayIterator::offsetSet' => ['void', 'index'=>'string|int|bool|null', 'newval'=>'mixed'], 'ArrayIterator::offsetUnset' => ['void', 'index'=>'string|int|bool|null'], 'ArrayIterator::rewind' => ['void'], 'ArrayIterator::seek' => ['void', 'position'=>'int'], 'ArrayIterator::serialize' => ['string'], 'ArrayIterator::setFlags' => ['void', 'flags'=>'string'], 'ArrayIterator::uasort' => ['void', 'callback'=>'callable(mixed,mixed):int'], 'ArrayIterator::uksort' => ['void', 'callback'=>'callable(array-key,array-key):int'], 'ArrayIterator::unserialize' => ['void', 'serialized'=>'string'], 'ArrayIterator::valid' => ['bool'], 'ArrayObject::__construct' => ['void', 'input='=>'array|object', 'flags='=>'int', 'iterator_class='=>'class-string'], 'ArrayObject::append' => ['void', 'value'=>'mixed'], 'ArrayObject::asort' => ['void'], 'ArrayObject::count' => ['0|positive-int'], 'ArrayObject::exchangeArray' => ['array', 'ar'=>'mixed'], 'ArrayObject::getArrayCopy' => ['array'], 'ArrayObject::getFlags' => ['int'], 'ArrayObject::getIterator' => ['ArrayIterator'], 'ArrayObject::getIteratorClass' => ['string'], 'ArrayObject::ksort' => ['void'], 'ArrayObject::natcasesort' => ['void'], 'ArrayObject::natsort' => ['void'], 'ArrayObject::offsetExists' => ['bool', 'index'=>'mixed'], 'ArrayObject::offsetGet' => ['mixed', 'index'=>'mixed'], 'ArrayObject::offsetSet' => ['void', 'index'=>'mixed', 'newval'=>'mixed'], 'ArrayObject::offsetUnset' => ['void', 'index'=>'mixed'], 'ArrayObject::serialize' => ['string'], 'ArrayObject::setFlags' => ['void', 'flags'=>'int'], 'ArrayObject::setIteratorClass' => ['void', 'iterator_class'=>'string'], 'ArrayObject::uasort' => ['void', 'callback'=>'callable'], 'ArrayObject::uksort' => ['void', 'callback'=>'callable(array-key,array-key):int'], 'ArrayObject::unserialize' => ['void', 'serialized'=>'string'], 'arsort' => ['bool', '&rw_array_arg'=>'array', 'sort_flags='=>'int'], 'asin' => ['float', 'number'=>'float'], 'asinh' => ['float', 'number'=>'float'], 'asort' => ['bool', '&rw_array_arg'=>'array', 'sort_flags='=>'int'], 'assert' => ['bool', 'assertion'=>'string|bool', 'description='=>'string|Throwable|null'], 'assert_options' => ['mixed', 'what'=>'int', 'value='=>'mixed'], 'ast\get_kind_name' => ['string', 'kind'=>'int'], 'ast\get_metadata' => ['array'], 'ast\get_supported_versions' => ['array', 'exclude_deprecated='=>'bool'], 'ast\kind_uses_flags' => ['bool', 'kind'=>'int'], 'ast\Node::__construct' => ['void', 'kind='=>'int', 'flags='=>'int', 'children='=>'ast\Node\Decl[]|ast\Node[]|array[]|int[]|string[]|float[]|bool[]|null[]', 'start_line='=>'int'], 'ast\parse_code' => ['ast\Node', 'code'=>'string', 'version'=>'int', 'filename='=>'string'], 'ast\parse_file' => ['ast\Node', 'filename'=>'string', 'version'=>'int'], 'atan' => ['float', 'number'=>'float'], 'atan2' => ['float', 'y'=>'float', 'x'=>'float'], 'atanh' => ['float', 'number'=>'float'], 'BadFunctionCallException::__clone' => ['void'], 'BadFunctionCallException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?BadFunctionCallException)'], 'BadFunctionCallException::__toString' => ['string'], 'BadFunctionCallException::getCode' => ['int'], 'BadFunctionCallException::getFile' => ['string'], 'BadFunctionCallException::getLine' => ['int'], 'BadFunctionCallException::getMessage' => ['string'], 'BadFunctionCallException::getPrevious' => ['(?Throwable)|(?BadFunctionCallException)'], 'BadFunctionCallException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'BadFunctionCallException::getTraceAsString' => ['string'], 'BadMethodCallException::__clone' => ['void'], 'BadMethodCallException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?BadMethodCallException)'], 'BadMethodCallException::__toString' => ['string'], 'BadMethodCallException::getCode' => ['int'], 'BadMethodCallException::getFile' => ['string'], 'BadMethodCallException::getLine' => ['int'], 'BadMethodCallException::getMessage' => ['string'], 'BadMethodCallException::getPrevious' => ['(?Throwable)|(?BadMethodCallException)'], 'BadMethodCallException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'BadMethodCallException::getTraceAsString' => ['string'], 'base64_decode' => ['string', 'str'=>'string', 'strict='=>'false'], 'base64_decode\'1' => ['string|false', 'str'=>'string', 'strict='=>'true'], 'base64_encode' => ['string', 'str'=>'string'], 'base_convert' => ['string', 'number'=>'string', 'frombase'=>'int', 'tobase'=>'int'], 'basename' => ['string', 'path'=>'string', 'suffix='=>'string'], 'bbcode_add_element' => ['bool', 'bbcode_container'=>'resource', 'tag_name'=>'string', 'tag_rules'=>'array'], 'bbcode_add_smiley' => ['bool', 'bbcode_container'=>'resource', 'smiley'=>'string', 'replace_by'=>'string'], 'bbcode_create' => ['resource', 'bbcode_initial_tags='=>'array'], 'bbcode_destroy' => ['bool', 'bbcode_container'=>'resource'], 'bbcode_parse' => ['string', 'bbcode_container'=>'resource', 'to_parse'=>'string'], 'bbcode_set_arg_parser' => ['bool', 'bbcode_container'=>'resource', 'bbcode_arg_parser'=>'resource'], 'bbcode_set_flags' => ['bool', 'bbcode_container'=>'resource', 'flags'=>'int', 'mode='=>'int'], 'bcadd' => ['numeric-string', 'left_operand'=>'string', 'right_operand'=>'string', 'scale='=>'int'], 'bccomp' => ['int', 'left_operand'=>'string', 'right_operand'=>'string', 'scale='=>'int'], 'bcdiv' => ['numeric-string|null', 'left_operand'=>'string', 'right_operand'=>'string', 'scale='=>'int'], 'bcmod' => ['numeric-string|null', 'left_operand'=>'string', 'right_operand'=>'string', 'scale='=>'int'], 'bcmul' => ['numeric-string', 'left_operand'=>'string', 'right_operand'=>'string', 'scale='=>'int'], 'bcompiler_load' => ['bool', 'filename'=>'string'], 'bcompiler_load_exe' => ['bool', 'filename'=>'string'], 'bcompiler_parse_class' => ['bool', 'class'=>'string', 'callback'=>'string'], 'bcompiler_read' => ['bool', 'filehandle'=>'resource'], 'bcompiler_write_class' => ['bool', 'filehandle'=>'resource', 'classname'=>'string', 'extends='=>'string'], 'bcompiler_write_constant' => ['bool', 'filehandle'=>'resource', 'constantname'=>'string'], 'bcompiler_write_exe_footer' => ['bool', 'filehandle'=>'resource', 'startpos'=>'int'], 'bcompiler_write_file' => ['bool', 'filehandle'=>'resource', 'filename'=>'string'], 'bcompiler_write_footer' => ['bool', 'filehandle'=>'resource'], 'bcompiler_write_function' => ['bool', 'filehandle'=>'resource', 'functionname'=>'string'], 'bcompiler_write_functions_from_file' => ['bool', 'filehandle'=>'resource', 'filename'=>'string'], 'bcompiler_write_header' => ['bool', 'filehandle'=>'resource', 'write_ver='=>'string'], 'bcompiler_write_included_filename' => ['bool', 'filehandle'=>'resource', 'filename'=>'string'], 'bcpow' => ['numeric-string', 'base'=>'string', 'exponent'=>'string', 'scale='=>'int'], 'bcpowmod' => ['numeric-string|null', 'base'=>'string', 'exponent'=>'string', 'modulus'=>'string', 'scale='=>'int'], 'bcscale' => ['int', 'scale='=>'int'], 'bcsqrt' => ['numeric-string', 'operand'=>'string', 'scale='=>'int'], 'bcsub' => ['numeric-string', 'left_operand'=>'string', 'right_operand'=>'string', 'scale='=>'int'], 'bin2hex' => ['string', 'data'=>'string'], 'bind_textdomain_codeset' => ['string|false', 'domain'=>'string', 'codeset'=>'string'], 'bindec' => ['float|int', 'binary_number'=>'string'], 'bindtextdomain' => ['string|false', 'domain_name'=>'string', 'dir'=>'string'], 'birdstep_autocommit' => ['bool', 'index'=>'int'], 'birdstep_close' => ['bool', 'id'=>'int'], 'birdstep_commit' => ['bool', 'index'=>'int'], 'birdstep_connect' => ['int', 'server'=>'string', 'user'=>'string', 'pass'=>'string'], 'birdstep_exec' => ['int', 'index'=>'int', 'exec_str'=>'string'], 'birdstep_fetch' => ['bool', 'index'=>'int'], 'birdstep_fieldname' => ['string', 'index'=>'int', 'col'=>'int'], 'birdstep_fieldnum' => ['int', 'index'=>'int'], 'birdstep_freeresult' => ['bool', 'index'=>'int'], 'birdstep_off_autocommit' => ['bool', 'index'=>'int'], 'birdstep_result' => ['', 'index'=>'int', 'col'=>''], 'birdstep_rollback' => ['bool', 'index'=>'int'], 'blenc_encrypt' => ['string', 'plaintext'=>'string', 'encodedfile'=>'string', 'encryption_key='=>'string'], 'boolval' => ['bool', 'var'=>'mixed'], 'BSON\Binary::__construct' => ['void', 'data'=>'string', 'subtype'=>'string'], 'BSON\Binary::getSubType' => [''], 'BSON\fromArray' => ['string', 'array'=>'string'], 'BSON\fromJSON' => ['string', 'json'=>'string'], 'BSON\Javascript::__construct' => ['void', 'javascript'=>'string', 'scope='=>'string'], 'BSON\ObjectID::__construct' => ['void', 'id='=>'string'], 'BSON\ObjectID::__toString' => ['string'], 'BSON\Regex::__construct' => ['void', 'pattern'=>'string', 'flags'=>'string'], 'BSON\Regex::__toString' => ['string'], 'BSON\Regex::getFlags' => [''], 'BSON\Regex::getPattern' => [''], 'BSON\Serializable::bsonSerialize' => ['string'], 'BSON\Timestamp::__construct' => ['void', 'increment'=>'string', 'timestamp'=>'string'], 'BSON\Timestamp::__toString' => ['string'], 'BSON\toArray' => ['array', 'bson'=>'string'], 'BSON\toJSON' => ['string', 'bson'=>'string'], 'BSON\Unserializable::bsonUnserialize' => ['', 'data'=>'array'], 'BSON\UTCDatetime::__construct' => ['void', 'milliseconds'=>'string'], 'BSON\UTCDatetime::__toString' => ['string'], 'BSON\UTCDatetime::toDateTime' => [''], 'bson_decode' => ['array', 'bson'=>'string'], 'bson_encode' => ['string', 'anything'=>'mixed'], 'bzclose' => ['bool', 'bz'=>'resource'], 'bzcompress' => ['string|int', 'source'=>'string', 'blocksize100k='=>'int', 'workfactor='=>'int'], 'bzdecompress' => ['string|int|false', 'source'=>'string', 'small='=>'int'], 'bzerrno' => ['int', 'bz'=>'resource'], 'bzerror' => ['array', 'bz'=>'resource'], 'bzerrstr' => ['string', 'bz'=>'resource'], 'bzflush' => ['bool', 'bz'=>'resource'], 'bzopen' => ['resource|false', 'file'=>'string|resource', 'mode'=>'string'], 'bzread' => ['string|false', 'bz'=>'resource', 'length='=>'int'], 'bzwrite' => ['int|false', 'bz'=>'resource', 'data'=>'string', 'length='=>'int'], 'CachingIterator::__construct' => ['void', 'iterator'=>'Iterator', 'flags='=>''], 'CachingIterator::__toString' => ['string'], 'CachingIterator::count' => ['0|positive-int'], 'CachingIterator::current' => ['mixed'], 'CachingIterator::getCache' => ['array'], 'CachingIterator::getFlags' => ['int'], 'CachingIterator::getInnerIterator' => ['Iterator'], 'CachingIterator::hasNext' => ['bool'], 'CachingIterator::key' => ['mixed'], 'CachingIterator::next' => ['void'], 'CachingIterator::offsetExists' => ['bool', 'index'=>'string'], 'CachingIterator::offsetGet' => ['mixed', 'index'=>'string'], 'CachingIterator::offsetSet' => ['void', 'index'=>'string', 'newval'=>'mixed'], 'CachingIterator::offsetUnset' => ['void', 'index'=>'string'], 'CachingIterator::rewind' => ['void'], 'CachingIterator::setFlags' => ['void', 'flags'=>'int'], 'CachingIterator::valid' => ['bool'], 'Cairo::availableFonts' => ['array'], 'Cairo::availableSurfaces' => ['array'], 'Cairo::statusToString' => ['string', 'status'=>'int'], 'Cairo::version' => ['int'], 'Cairo::versionString' => ['string'], 'cairo_append_path' => ['', 'path'=>'cairopath', 'context'=>'cairocontext'], 'cairo_arc' => ['', 'x'=>'float', 'y'=>'float', 'radius'=>'float', 'angle1'=>'float', 'angle2'=>'float', 'context'=>'cairocontext'], 'cairo_arc_negative' => ['', 'x'=>'float', 'y'=>'float', 'radius'=>'float', 'angle1'=>'float', 'angle2'=>'float', 'context'=>'cairocontext'], 'cairo_available_fonts' => ['array'], 'cairo_available_surfaces' => ['array'], 'cairo_clip' => ['', 'context'=>'cairocontext'], 'cairo_clip_extents' => ['array', 'context'=>'cairocontext'], 'cairo_clip_preserve' => ['', 'context'=>'cairocontext'], 'cairo_clip_rectangle_list' => ['array', 'context'=>'cairocontext'], 'cairo_close_path' => ['', 'context'=>'cairocontext'], 'cairo_copy_page' => ['', 'context'=>'cairocontext'], 'cairo_copy_path' => ['CairoPath', 'context'=>'cairocontext'], 'cairo_copy_path_flat' => ['CairoPath', 'context'=>'cairocontext'], 'cairo_create' => ['CairoContext', 'surface'=>'cairosurface'], 'cairo_curve_to' => ['', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float', 'x3'=>'float', 'y3'=>'float', 'context'=>'cairocontext'], 'cairo_device_to_user' => ['array', 'x'=>'float', 'y'=>'float', 'context'=>'cairocontext'], 'cairo_device_to_user_distance' => ['array', 'x'=>'float', 'y'=>'float', 'context'=>'cairocontext'], 'cairo_fill' => ['', 'context'=>'cairocontext'], 'cairo_fill_extents' => ['array', 'context'=>'cairocontext'], 'cairo_fill_preserve' => ['', 'context'=>'cairocontext'], 'cairo_font_extents' => ['array', 'context'=>'cairocontext'], 'cairo_font_face_get_type' => ['int', 'fontface'=>'cairofontface'], 'cairo_font_face_status' => ['int', 'fontface'=>'cairofontface'], 'cairo_font_options_create' => ['CairoFontOptions'], 'cairo_font_options_equal' => ['bool', 'options'=>'cairofontoptions', 'other'=>'cairofontoptions'], 'cairo_font_options_get_antialias' => ['int', 'options'=>'cairofontoptions'], 'cairo_font_options_get_hint_metrics' => ['int', 'options'=>'cairofontoptions'], 'cairo_font_options_get_hint_style' => ['int', 'options'=>'cairofontoptions'], 'cairo_font_options_get_subpixel_order' => ['int', 'options'=>'cairofontoptions'], 'cairo_font_options_hash' => ['int', 'options'=>'cairofontoptions'], 'cairo_font_options_merge' => ['void', 'options'=>'cairofontoptions', 'other'=>'cairofontoptions'], 'cairo_font_options_set_antialias' => ['void', 'options'=>'cairofontoptions', 'antialias'=>'int'], 'cairo_font_options_set_hint_metrics' => ['void', 'options'=>'cairofontoptions', 'hint_metrics'=>'int'], 'cairo_font_options_set_hint_style' => ['void', 'options'=>'cairofontoptions', 'hint_style'=>'int'], 'cairo_font_options_set_subpixel_order' => ['void', 'options'=>'cairofontoptions', 'subpixel_order'=>'int'], 'cairo_font_options_status' => ['int', 'options'=>'cairofontoptions'], 'cairo_format_stride_for_width' => ['int', 'format'=>'int', 'width'=>'int'], 'cairo_get_antialias' => ['int', 'context'=>'cairocontext'], 'cairo_get_current_point' => ['array', 'context'=>'cairocontext'], 'cairo_get_dash' => ['array', 'context'=>'cairocontext'], 'cairo_get_dash_count' => ['int', 'context'=>'cairocontext'], 'cairo_get_fill_rule' => ['int', 'context'=>'cairocontext'], 'cairo_get_font_face' => ['', 'context'=>'cairocontext'], 'cairo_get_font_matrix' => ['', 'context'=>'cairocontext'], 'cairo_get_font_options' => ['', 'context'=>'cairocontext'], 'cairo_get_group_target' => ['', 'context'=>'cairocontext'], 'cairo_get_line_cap' => ['int', 'context'=>'cairocontext'], 'cairo_get_line_join' => ['int', 'context'=>'cairocontext'], 'cairo_get_line_width' => ['float', 'context'=>'cairocontext'], 'cairo_get_matrix' => ['', 'context'=>'cairocontext'], 'cairo_get_miter_limit' => ['float', 'context'=>'cairocontext'], 'cairo_get_operator' => ['int', 'context'=>'cairocontext'], 'cairo_get_scaled_font' => ['', 'context'=>'cairocontext'], 'cairo_get_source' => ['', 'context'=>'cairocontext'], 'cairo_get_target' => ['', 'context'=>'cairocontext'], 'cairo_get_tolerance' => ['float', 'context'=>'cairocontext'], 'cairo_glyph_path' => ['', 'glyphs'=>'array', 'context'=>'cairocontext'], 'cairo_has_current_point' => ['bool', 'context'=>'cairocontext'], 'cairo_identity_matrix' => ['', 'context'=>'cairocontext'], 'cairo_image_surface_create' => ['CairoImageSurface', 'format'=>'int', 'width'=>'int', 'height'=>'int'], 'cairo_image_surface_create_for_data' => ['CairoImageSurface', 'data'=>'string', 'format'=>'int', 'width'=>'int', 'height'=>'int', 'stride='=>'int'], 'cairo_image_surface_create_from_png' => ['CairoImageSurface', 'file'=>'string'], 'cairo_image_surface_get_data' => ['string', 'surface'=>'cairoimagesurface'], 'cairo_image_surface_get_format' => ['int', 'surface'=>'cairoimagesurface'], 'cairo_image_surface_get_height' => ['int', 'surface'=>'cairoimagesurface'], 'cairo_image_surface_get_stride' => ['int', 'surface'=>'cairoimagesurface'], 'cairo_image_surface_get_width' => ['int', 'surface'=>'cairoimagesurface'], 'cairo_in_fill' => ['bool', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'cairo_in_stroke' => ['bool', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'cairo_line_to' => ['', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'cairo_mask' => ['', 'pattern'=>'cairopattern', 'context'=>'cairocontext'], 'cairo_mask_surface' => ['', 'surface'=>'cairosurface', 'x='=>'string', 'y='=>'string', 'context='=>'cairocontext'], 'cairo_matrix_create_scale' => ['object', 'sx'=>'float', 'sy'=>'float'], 'cairo_matrix_init' => ['object', 'xx='=>'float', 'yx='=>'float', 'xy='=>'float', 'yy='=>'float', 'x0='=>'float', 'y0='=>'float'], 'cairo_matrix_init_identity' => ['object'], 'cairo_matrix_init_rotate' => ['object', 'radians'=>'float'], 'cairo_matrix_init_scale' => ['object', 'sx'=>'float', 'sy'=>'float'], 'cairo_matrix_init_translate' => ['object', 'tx'=>'float', 'ty'=>'float'], 'cairo_matrix_invert' => ['void', 'matrix'=>'cairomatrix'], 'cairo_matrix_multiply' => ['CairoMatrix', 'matrix1'=>'cairomatrix', 'matrix2'=>'cairomatrix'], 'cairo_matrix_rotate' => ['', 'matrix'=>'cairomatrix', 'radians'=>'float'], 'cairo_matrix_scale' => ['', 'sx'=>'float', 'sy'=>'float', 'context'=>'cairocontext'], 'cairo_matrix_transform_distance' => ['array', 'matrix'=>'cairomatrix', 'dx'=>'float', 'dy'=>'float'], 'cairo_matrix_transform_point' => ['array', 'matrix'=>'cairomatrix', 'dx'=>'float', 'dy'=>'float'], 'cairo_matrix_translate' => ['void', 'matrix'=>'cairomatrix', 'tx'=>'float', 'ty'=>'float'], 'cairo_move_to' => ['', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'cairo_new_path' => ['', 'context'=>'cairocontext'], 'cairo_new_sub_path' => ['', 'context'=>'cairocontext'], 'cairo_paint' => ['', 'context'=>'cairocontext'], 'cairo_paint_with_alpha' => ['', 'alpha'=>'string', 'context'=>'cairocontext'], 'cairo_path_extents' => ['array', 'context'=>'cairocontext'], 'cairo_pattern_add_color_stop_rgb' => ['void', 'pattern'=>'cairogradientpattern', 'offset'=>'float', 'red'=>'float', 'green'=>'float', 'blue'=>'float'], 'cairo_pattern_add_color_stop_rgba' => ['void', 'pattern'=>'cairogradientpattern', 'offset'=>'float', 'red'=>'float', 'green'=>'float', 'blue'=>'float', 'alpha'=>'float'], 'cairo_pattern_create_for_surface' => ['CairoPattern', 'surface'=>'cairosurface'], 'cairo_pattern_create_linear' => ['CairoPattern', 'x0'=>'float', 'y0'=>'float', 'x1'=>'float', 'y1'=>'float'], 'cairo_pattern_create_radial' => ['CairoPattern', 'x0'=>'float', 'y0'=>'float', 'r0'=>'float', 'x1'=>'float', 'y1'=>'float', 'r1'=>'float'], 'cairo_pattern_create_rgb' => ['CairoPattern', 'red'=>'float', 'green'=>'float', 'blue'=>'float'], 'cairo_pattern_create_rgba' => ['CairoPattern', 'red'=>'float', 'green'=>'float', 'blue'=>'float', 'alpha'=>'float'], 'cairo_pattern_get_color_stop_count' => ['int', 'pattern'=>'cairogradientpattern'], 'cairo_pattern_get_color_stop_rgba' => ['array', 'pattern'=>'cairogradientpattern', 'index'=>'int'], 'cairo_pattern_get_extend' => ['int', 'pattern'=>'string'], 'cairo_pattern_get_filter' => ['int', 'pattern'=>'cairosurfacepattern'], 'cairo_pattern_get_linear_points' => ['array', 'pattern'=>'cairolineargradient'], 'cairo_pattern_get_matrix' => ['CairoMatrix', 'pattern'=>'cairopattern'], 'cairo_pattern_get_radial_circles' => ['array', 'pattern'=>'cairoradialgradient'], 'cairo_pattern_get_rgba' => ['array', 'pattern'=>'cairosolidpattern'], 'cairo_pattern_get_surface' => ['CairoSurface', 'pattern'=>'cairosurfacepattern'], 'cairo_pattern_get_type' => ['int', 'pattern'=>'cairopattern'], 'cairo_pattern_set_extend' => ['void', 'pattern'=>'string', 'extend'=>'string'], 'cairo_pattern_set_filter' => ['void', 'pattern'=>'cairosurfacepattern', 'filter'=>'int'], 'cairo_pattern_set_matrix' => ['void', 'pattern'=>'cairopattern', 'matrix'=>'cairomatrix'], 'cairo_pattern_status' => ['int', 'pattern'=>'cairopattern'], 'cairo_pdf_surface_create' => ['CairoPdfSurface', 'file'=>'string', 'width'=>'float', 'height'=>'float'], 'cairo_pdf_surface_set_size' => ['void', 'surface'=>'cairopdfsurface', 'width'=>'float', 'height'=>'float'], 'cairo_pop_group' => ['', 'context'=>'cairocontext'], 'cairo_pop_group_to_source' => ['', 'context'=>'cairocontext'], 'cairo_ps_get_levels' => ['array'], 'cairo_ps_level_to_string' => ['string', 'level'=>'int'], 'cairo_ps_surface_create' => ['CairoPsSurface', 'file'=>'string', 'width'=>'float', 'height'=>'float'], 'cairo_ps_surface_dsc_begin_page_setup' => ['void', 'surface'=>'cairopssurface'], 'cairo_ps_surface_dsc_begin_setup' => ['void', 'surface'=>'cairopssurface'], 'cairo_ps_surface_dsc_comment' => ['void', 'surface'=>'cairopssurface', 'comment'=>'string'], 'cairo_ps_surface_get_eps' => ['bool', 'surface'=>'cairopssurface'], 'cairo_ps_surface_restrict_to_level' => ['void', 'surface'=>'cairopssurface', 'level'=>'int'], 'cairo_ps_surface_set_eps' => ['void', 'surface'=>'cairopssurface', 'level'=>'bool'], 'cairo_ps_surface_set_size' => ['void', 'surface'=>'cairopssurface', 'width'=>'float', 'height'=>'float'], 'cairo_push_group' => ['', 'context'=>'cairocontext'], 'cairo_push_group_with_content' => ['', 'content'=>'string', 'context'=>'cairocontext'], 'cairo_rectangle' => ['', 'x'=>'string', 'y'=>'string', 'width'=>'string', 'height'=>'string', 'context'=>'cairocontext'], 'cairo_rel_curve_to' => ['', 'x1'=>'string', 'y1'=>'string', 'x2'=>'string', 'y2'=>'string', 'x3'=>'string', 'y3'=>'string', 'context'=>'cairocontext'], 'cairo_rel_line_to' => ['', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'cairo_rel_move_to' => ['', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'cairo_reset_clip' => ['', 'context'=>'cairocontext'], 'cairo_restore' => ['', 'context'=>'cairocontext'], 'cairo_rotate' => ['', 'sx'=>'string', 'sy'=>'string', 'context'=>'cairocontext', 'angle'=>'string'], 'cairo_save' => ['', 'context'=>'cairocontext'], 'cairo_scale' => ['', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'cairo_scaled_font_create' => ['CairoScaledFont', 'fontface'=>'cairofontface', 'matrix'=>'cairomatrix', 'ctm'=>'cairomatrix', 'fontoptions'=>'cairofontoptions'], 'cairo_scaled_font_extents' => ['array', 'scaledfont'=>'cairoscaledfont'], 'cairo_scaled_font_get_ctm' => ['CairoMatrix', 'scaledfont'=>'cairoscaledfont'], 'cairo_scaled_font_get_font_face' => ['CairoFontFace', 'scaledfont'=>'cairoscaledfont'], 'cairo_scaled_font_get_font_matrix' => ['CairoFontOptions', 'scaledfont'=>'cairoscaledfont'], 'cairo_scaled_font_get_font_options' => ['CairoFontOptions', 'scaledfont'=>'cairoscaledfont'], 'cairo_scaled_font_get_scale_matrix' => ['CairoMatrix', 'scaledfont'=>'cairoscaledfont'], 'cairo_scaled_font_get_type' => ['int', 'scaledfont'=>'cairoscaledfont'], 'cairo_scaled_font_glyph_extents' => ['array', 'scaledfont'=>'cairoscaledfont', 'glyphs'=>'array'], 'cairo_scaled_font_status' => ['int', 'scaledfont'=>'cairoscaledfont'], 'cairo_scaled_font_text_extents' => ['array', 'scaledfont'=>'cairoscaledfont', 'text'=>'string'], 'cairo_select_font_face' => ['', 'family'=>'string', 'slant='=>'string', 'weight='=>'string', 'context='=>'cairocontext'], 'cairo_set_antialias' => ['', 'antialias='=>'string', 'context='=>'cairocontext'], 'cairo_set_dash' => ['', 'dashes'=>'array', 'offset='=>'string', 'context='=>'cairocontext'], 'cairo_set_fill_rule' => ['', 'setting'=>'string', 'context'=>'cairocontext'], 'cairo_set_font_face' => ['', 'fontface'=>'cairofontface', 'context'=>'cairocontext'], 'cairo_set_font_matrix' => ['', 'matrix'=>'cairomatrix', 'context'=>'cairocontext'], 'cairo_set_font_options' => ['', 'fontoptions'=>'cairofontoptions', 'context'=>'cairocontext'], 'cairo_set_font_size' => ['', 'size'=>'string', 'context'=>'cairocontext'], 'cairo_set_line_cap' => ['', 'setting'=>'string', 'context'=>'cairocontext'], 'cairo_set_line_join' => ['', 'setting'=>'string', 'context'=>'cairocontext'], 'cairo_set_line_width' => ['', 'width'=>'string', 'context'=>'cairocontext'], 'cairo_set_matrix' => ['', 'matrix'=>'cairomatrix', 'context'=>'cairocontext'], 'cairo_set_miter_limit' => ['', 'limit'=>'string', 'context'=>'cairocontext'], 'cairo_set_operator' => ['', 'setting'=>'string', 'context'=>'cairocontext'], 'cairo_set_scaled_font' => ['', 'scaledfont'=>'cairoscaledfont', 'context'=>'cairocontext'], 'cairo_set_source' => ['', 'red'=>'string', 'green'=>'string', 'blue'=>'string', 'alpha'=>'string', 'context'=>'cairocontext', 'pattern'=>'cairopattern'], 'cairo_set_source_surface' => ['', 'surface'=>'cairosurface', 'x='=>'string', 'y='=>'string', 'context='=>'cairocontext'], 'cairo_set_tolerance' => ['', 'tolerance'=>'string', 'context'=>'cairocontext'], 'cairo_show_page' => ['', 'context'=>'cairocontext'], 'cairo_show_text' => ['', 'text'=>'string', 'context'=>'cairocontext'], 'cairo_status' => ['int', 'context'=>'cairocontext'], 'cairo_status_to_string' => ['string', 'status'=>'int'], 'cairo_stroke' => ['', 'context'=>'cairocontext'], 'cairo_stroke_extents' => ['array', 'context'=>'cairocontext'], 'cairo_stroke_preserve' => ['', 'context'=>'cairocontext'], 'cairo_surface_copy_page' => ['void', 'surface'=>'cairosurface'], 'cairo_surface_create_similar' => ['CairoSurface', 'surface'=>'cairosurface', 'content'=>'int', 'width'=>'float', 'height'=>'float'], 'cairo_surface_finish' => ['void', 'surface'=>'cairosurface'], 'cairo_surface_flush' => ['void', 'surface'=>'cairosurface'], 'cairo_surface_get_content' => ['int', 'surface'=>'cairosurface'], 'cairo_surface_get_device_offset' => ['array', 'surface'=>'cairosurface'], 'cairo_surface_get_font_options' => ['CairoFontOptions', 'surface'=>'cairosurface'], 'cairo_surface_get_type' => ['int', 'surface'=>'cairosurface'], 'cairo_surface_mark_dirty' => ['void', 'surface'=>'cairosurface'], 'cairo_surface_mark_dirty_rectangle' => ['void', 'surface'=>'cairosurface', 'x'=>'float', 'y'=>'float', 'width'=>'float', 'height'=>'float'], 'cairo_surface_set_device_offset' => ['void', 'surface'=>'cairosurface', 'x'=>'float', 'y'=>'float'], 'cairo_surface_set_fallback_resolution' => ['void', 'surface'=>'cairosurface', 'x'=>'float', 'y'=>'float'], 'cairo_surface_show_page' => ['void', 'surface'=>'cairosurface'], 'cairo_surface_status' => ['int', 'surface'=>'cairosurface'], 'cairo_surface_write_to_png' => ['void', 'surface'=>'cairosurface', 'stream'=>'resource'], 'cairo_svg_get_versions' => ['array'], 'cairo_svg_surface_create' => ['CairoSvgSurface', 'file'=>'string', 'width'=>'float', 'height'=>'float'], 'cairo_svg_surface_get_versions' => ['array'], 'cairo_svg_surface_restrict_to_version' => ['void', 'surface'=>'cairosvgsurface', 'version'=>'int'], 'cairo_svg_version_to_string' => ['string', 'version'=>'int'], 'cairo_text_extents' => ['array', 'text'=>'string', 'context'=>'cairocontext'], 'cairo_text_path' => ['', 'string'=>'string', 'context'=>'cairocontext', 'text'=>'string'], 'cairo_transform' => ['', 'matrix'=>'cairomatrix', 'context'=>'cairocontext'], 'cairo_translate' => ['', 'tx'=>'string', 'ty'=>'string', 'context'=>'cairocontext', 'x'=>'string', 'y'=>'string'], 'cairo_user_to_device' => ['array', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'cairo_user_to_device_distance' => ['array', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'cairo_version' => ['int'], 'cairo_version_string' => ['string'], 'CairoContext::__construct' => ['void', 'surface'=>'CairoSurface'], 'CairoContext::appendPath' => ['', 'path'=>'cairopath', 'context'=>'cairocontext'], 'CairoContext::arc' => ['', 'x'=>'float', 'y'=>'float', 'radius'=>'float', 'angle1'=>'float', 'angle2'=>'float', 'context'=>'cairocontext'], 'CairoContext::arcNegative' => ['', 'x'=>'float', 'y'=>'float', 'radius'=>'float', 'angle1'=>'float', 'angle2'=>'float', 'context'=>'cairocontext'], 'CairoContext::clip' => ['', 'context'=>'cairocontext'], 'CairoContext::clipExtents' => ['array', 'context'=>'cairocontext'], 'CairoContext::clipPreserve' => ['', 'context'=>'cairocontext'], 'CairoContext::clipRectangleList' => ['array', 'context'=>'cairocontext'], 'CairoContext::closePath' => ['', 'context'=>'cairocontext'], 'CairoContext::copyPage' => ['', 'context'=>'cairocontext'], 'CairoContext::copyPath' => ['CairoPath', 'context'=>'cairocontext'], 'CairoContext::copyPathFlat' => ['CairoPath', 'context'=>'cairocontext'], 'CairoContext::curveTo' => ['', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float', 'x3'=>'float', 'y3'=>'float', 'context'=>'cairocontext'], 'CairoContext::deviceToUser' => ['array', 'x'=>'float', 'y'=>'float', 'context'=>'cairocontext'], 'CairoContext::deviceToUserDistance' => ['array', 'x'=>'float', 'y'=>'float', 'context'=>'cairocontext'], 'CairoContext::fill' => ['', 'context'=>'cairocontext'], 'CairoContext::fillExtents' => ['array', 'context'=>'cairocontext'], 'CairoContext::fillPreserve' => ['', 'context'=>'cairocontext'], 'CairoContext::fontExtents' => ['array', 'context'=>'cairocontext'], 'CairoContext::getAntialias' => ['int', 'context'=>'cairocontext'], 'CairoContext::getCurrentPoint' => ['array', 'context'=>'cairocontext'], 'CairoContext::getDash' => ['array', 'context'=>'cairocontext'], 'CairoContext::getDashCount' => ['int', 'context'=>'cairocontext'], 'CairoContext::getFillRule' => ['int', 'context'=>'cairocontext'], 'CairoContext::getFontFace' => ['', 'context'=>'cairocontext'], 'CairoContext::getFontMatrix' => ['', 'context'=>'cairocontext'], 'CairoContext::getFontOptions' => ['', 'context'=>'cairocontext'], 'CairoContext::getGroupTarget' => ['', 'context'=>'cairocontext'], 'CairoContext::getLineCap' => ['int', 'context'=>'cairocontext'], 'CairoContext::getLineJoin' => ['int', 'context'=>'cairocontext'], 'CairoContext::getLineWidth' => ['float', 'context'=>'cairocontext'], 'CairoContext::getMatrix' => ['', 'context'=>'cairocontext'], 'CairoContext::getMiterLimit' => ['float', 'context'=>'cairocontext'], 'CairoContext::getOperator' => ['int', 'context'=>'cairocontext'], 'CairoContext::getScaledFont' => ['', 'context'=>'cairocontext'], 'CairoContext::getSource' => ['', 'context'=>'cairocontext'], 'CairoContext::getTarget' => ['', 'context'=>'cairocontext'], 'CairoContext::getTolerance' => ['float', 'context'=>'cairocontext'], 'CairoContext::glyphPath' => ['', 'glyphs'=>'array', 'context'=>'cairocontext'], 'CairoContext::hasCurrentPoint' => ['bool', 'context'=>'cairocontext'], 'CairoContext::identityMatrix' => ['', 'context'=>'cairocontext'], 'CairoContext::inFill' => ['bool', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'CairoContext::inStroke' => ['bool', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'CairoContext::lineTo' => ['', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'CairoContext::mask' => ['', 'pattern'=>'cairopattern', 'context'=>'cairocontext'], 'CairoContext::maskSurface' => ['', 'surface'=>'cairosurface', 'x='=>'string', 'y='=>'string', 'context='=>'cairocontext'], 'CairoContext::moveTo' => ['', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'CairoContext::newPath' => ['', 'context'=>'cairocontext'], 'CairoContext::newSubPath' => ['', 'context'=>'cairocontext'], 'CairoContext::paint' => ['', 'context'=>'cairocontext'], 'CairoContext::paintWithAlpha' => ['', 'alpha'=>'string', 'context'=>'cairocontext'], 'CairoContext::pathExtents' => ['array', 'context'=>'cairocontext'], 'CairoContext::popGroup' => ['', 'context'=>'cairocontext'], 'CairoContext::popGroupToSource' => ['', 'context'=>'cairocontext'], 'CairoContext::pushGroup' => ['', 'context'=>'cairocontext'], 'CairoContext::pushGroupWithContent' => ['', 'content'=>'string', 'context'=>'cairocontext'], 'CairoContext::rectangle' => ['', 'x'=>'string', 'y'=>'string', 'width'=>'string', 'height'=>'string', 'context'=>'cairocontext'], 'CairoContext::relCurveTo' => ['', 'x1'=>'string', 'y1'=>'string', 'x2'=>'string', 'y2'=>'string', 'x3'=>'string', 'y3'=>'string', 'context'=>'cairocontext'], 'CairoContext::relLineTo' => ['', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'CairoContext::relMoveTo' => ['', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'CairoContext::resetClip' => ['', 'context'=>'cairocontext'], 'CairoContext::restore' => ['', 'context'=>'cairocontext'], 'CairoContext::rotate' => ['', 'angle'=>'string', 'context'=>'cairocontext'], 'CairoContext::save' => ['', 'context'=>'cairocontext'], 'CairoContext::scale' => ['', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'CairoContext::selectFontFace' => ['', 'family'=>'string', 'slant='=>'string', 'weight='=>'string', 'context='=>'cairocontext'], 'CairoContext::setAntialias' => ['', 'antialias='=>'string', 'context='=>'cairocontext'], 'CairoContext::setDash' => ['', 'dashes'=>'array', 'offset='=>'string', 'context='=>'cairocontext'], 'CairoContext::setFillRule' => ['', 'setting'=>'string', 'context'=>'cairocontext'], 'CairoContext::setFontFace' => ['', 'fontface'=>'cairofontface', 'context'=>'cairocontext'], 'CairoContext::setFontMatrix' => ['', 'matrix'=>'cairomatrix', 'context'=>'cairocontext'], 'CairoContext::setFontOptions' => ['', 'fontoptions'=>'cairofontoptions', 'context'=>'cairocontext'], 'CairoContext::setFontSize' => ['', 'size'=>'string', 'context'=>'cairocontext'], 'CairoContext::setLineCap' => ['', 'setting'=>'string', 'context'=>'cairocontext'], 'CairoContext::setLineJoin' => ['', 'setting'=>'string', 'context'=>'cairocontext'], 'CairoContext::setLineWidth' => ['', 'width'=>'string', 'context'=>'cairocontext'], 'CairoContext::setMatrix' => ['', 'matrix'=>'cairomatrix', 'context'=>'cairocontext'], 'CairoContext::setMiterLimit' => ['', 'limit'=>'string', 'context'=>'cairocontext'], 'CairoContext::setOperator' => ['', 'setting'=>'string', 'context'=>'cairocontext'], 'CairoContext::setScaledFont' => ['', 'scaledfont'=>'cairoscaledfont', 'context'=>'cairocontext'], 'CairoContext::setSource' => ['', 'pattern'=>'cairopattern', 'context'=>'cairocontext'], 'CairoContext::setSourceRGB' => ['', 'red'=>'string', 'green'=>'string', 'blue'=>'string', 'context'=>'cairocontext', 'pattern'=>'cairopattern'], 'CairoContext::setSourceRGBA' => ['', 'red'=>'string', 'green'=>'string', 'blue'=>'string', 'alpha'=>'string', 'context'=>'cairocontext', 'pattern'=>'cairopattern'], 'CairoContext::setSourceSurface' => ['', 'surface'=>'cairosurface', 'x='=>'string', 'y='=>'string', 'context='=>'cairocontext'], 'CairoContext::setTolerance' => ['', 'tolerance'=>'string', 'context'=>'cairocontext'], 'CairoContext::showPage' => ['', 'context'=>'cairocontext'], 'CairoContext::showText' => ['', 'text'=>'string', 'context'=>'cairocontext'], 'CairoContext::status' => ['int', 'context'=>'cairocontext'], 'CairoContext::stroke' => ['', 'context'=>'cairocontext'], 'CairoContext::strokeExtents' => ['array', 'context'=>'cairocontext'], 'CairoContext::strokePreserve' => ['', 'context'=>'cairocontext'], 'CairoContext::textExtents' => ['array', 'text'=>'string', 'context'=>'cairocontext'], 'CairoContext::textPath' => ['', 'string'=>'string', 'context'=>'cairocontext', 'text'=>'string'], 'CairoContext::transform' => ['', 'matrix'=>'cairomatrix', 'context'=>'cairocontext'], 'CairoContext::translate' => ['', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'CairoContext::userToDevice' => ['array', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'CairoContext::userToDeviceDistance' => ['array', 'x'=>'string', 'y'=>'string', 'context'=>'cairocontext'], 'CairoFontFace::__construct' => ['void'], 'CairoFontFace::getType' => ['int'], 'CairoFontFace::status' => ['int', 'fontface'=>'cairofontface'], 'CairoFontOptions::__construct' => ['void'], 'CairoFontOptions::equal' => ['bool', 'other'=>'string'], 'CairoFontOptions::getAntialias' => ['int', 'context'=>'cairocontext'], 'CairoFontOptions::getHintMetrics' => ['int'], 'CairoFontOptions::getHintStyle' => ['int'], 'CairoFontOptions::getSubpixelOrder' => ['int'], 'CairoFontOptions::hash' => ['int'], 'CairoFontOptions::merge' => ['void', 'other'=>'string'], 'CairoFontOptions::setAntialias' => ['', 'antialias='=>'string', 'context='=>'cairocontext'], 'CairoFontOptions::setHintMetrics' => ['void', 'hint_metrics'=>'string'], 'CairoFontOptions::setHintStyle' => ['void', 'hint_style'=>'string'], 'CairoFontOptions::setSubpixelOrder' => ['void', 'subpixel_order'=>'string'], 'CairoFontOptions::status' => ['int', 'context'=>'cairocontext'], 'CairoFormat::strideForWidth' => ['int', 'format'=>'int', 'width'=>'int'], 'CairoGradientPattern::addColorStopRgb' => ['void', 'offset'=>'string', 'red'=>'string', 'green'=>'string', 'blue'=>'string'], 'CairoGradientPattern::addColorStopRgba' => ['void', 'offset'=>'string', 'red'=>'string', 'green'=>'string', 'blue'=>'string', 'alpha'=>'string'], 'CairoGradientPattern::getColorStopCount' => ['int'], 'CairoGradientPattern::getColorStopRgba' => ['array', 'index'=>'string'], 'CairoGradientPattern::getExtend' => ['int'], 'CairoGradientPattern::setExtend' => ['void', 'extend'=>'int'], 'CairoImageSurface::__construct' => ['void', 'format'=>'int', 'width'=>'int', 'height'=>'int'], 'CairoImageSurface::createForData' => ['void', 'data'=>'string', 'format'=>'int', 'width'=>'int', 'height'=>'int', 'stride='=>'int'], 'CairoImageSurface::createFromPng' => ['CairoImageSurface', 'file'=>'string'], 'CairoImageSurface::getData' => ['string'], 'CairoImageSurface::getFormat' => ['int'], 'CairoImageSurface::getHeight' => ['int'], 'CairoImageSurface::getStride' => ['int'], 'CairoImageSurface::getWidth' => ['int'], 'CairoLinearGradient::__construct' => ['void', 'x0'=>'float', 'y0'=>'float', 'x1'=>'float', 'y1'=>'float'], 'CairoLinearGradient::getPoints' => ['array'], 'CairoMatrix::__construct' => ['void', 'xx='=>'float', 'yx='=>'float', 'xy='=>'float', 'yy='=>'float', 'x0='=>'float', 'y0='=>'float'], 'CairoMatrix::initIdentity' => ['object'], 'CairoMatrix::initRotate' => ['object', 'radians'=>'float'], 'CairoMatrix::initScale' => ['object', 'sx'=>'float', 'sy'=>'float'], 'CairoMatrix::initTranslate' => ['object', 'tx'=>'float', 'ty'=>'float'], 'CairoMatrix::invert' => ['void'], 'CairoMatrix::multiply' => ['CairoMatrix', 'matrix1'=>'cairomatrix', 'matrix2'=>'cairomatrix'], 'CairoMatrix::rotate' => ['', 'sx'=>'string', 'sy'=>'string', 'context'=>'cairocontext', 'angle'=>'string'], 'CairoMatrix::scale' => ['', 'sx'=>'float', 'sy'=>'float', 'context'=>'cairocontext'], 'CairoMatrix::transformDistance' => ['array', 'dx'=>'string', 'dy'=>'string'], 'CairoMatrix::transformPoint' => ['array', 'dx'=>'string', 'dy'=>'string'], 'CairoMatrix::translate' => ['', 'tx'=>'string', 'ty'=>'string', 'context'=>'cairocontext', 'x'=>'string', 'y'=>'string'], 'CairoPattern::__construct' => ['void'], 'CairoPattern::getMatrix' => ['', 'context'=>'cairocontext'], 'CairoPattern::getType' => ['int'], 'CairoPattern::setMatrix' => ['', 'matrix'=>'cairomatrix', 'context'=>'cairocontext'], 'CairoPattern::status' => ['int', 'context'=>'cairocontext'], 'CairoPdfSurface::__construct' => ['void', 'file'=>'string', 'width'=>'float', 'height'=>'float'], 'CairoPdfSurface::setSize' => ['void', 'width'=>'string', 'height'=>'string'], 'CairoPsSurface::__construct' => ['void', 'file'=>'string', 'width'=>'float', 'height'=>'float'], 'CairoPsSurface::dscBeginPageSetup' => ['void'], 'CairoPsSurface::dscBeginSetup' => ['void'], 'CairoPsSurface::dscComment' => ['void', 'comment'=>'string'], 'CairoPsSurface::getEps' => ['bool'], 'CairoPsSurface::getLevels' => ['array'], 'CairoPsSurface::levelToString' => ['string', 'level'=>'int'], 'CairoPsSurface::restrictToLevel' => ['void', 'level'=>'string'], 'CairoPsSurface::setEps' => ['void', 'level'=>'string'], 'CairoPsSurface::setSize' => ['void', 'width'=>'string', 'height'=>'string'], 'CairoRadialGradient::__construct' => ['void', 'x0'=>'float', 'y0'=>'float', 'r0'=>'float', 'x1'=>'float', 'y1'=>'float', 'r1'=>'float'], 'CairoRadialGradient::getCircles' => ['array'], 'CairoScaledFont::__construct' => ['void', 'font_face'=>'CairoFontFace', 'matrix'=>'CairoMatrix', 'ctm'=>'CairoMatrix', 'options'=>'CairoFontOptions'], 'CairoScaledFont::extents' => ['array'], 'CairoScaledFont::getCtm' => ['CairoMatrix'], 'CairoScaledFont::getFontFace' => ['', 'context'=>'cairocontext'], 'CairoScaledFont::getFontMatrix' => ['', 'context'=>'cairocontext'], 'CairoScaledFont::getFontOptions' => ['', 'context'=>'cairocontext'], 'CairoScaledFont::getScaleMatrix' => ['void'], 'CairoScaledFont::getType' => ['int'], 'CairoScaledFont::glyphExtents' => ['array', 'glyphs'=>'string'], 'CairoScaledFont::status' => ['int', 'context'=>'cairocontext'], 'CairoScaledFont::textExtents' => ['array', 'text'=>'string', 'context'=>'cairocontext'], 'CairoSolidPattern::__construct' => ['void', 'red'=>'float', 'green'=>'float', 'blue'=>'float', 'alpha='=>'float'], 'CairoSolidPattern::getRgba' => ['array'], 'CairoSurface::__construct' => ['void'], 'CairoSurface::copyPage' => ['', 'context'=>'cairocontext'], 'CairoSurface::createSimilar' => ['void', 'other'=>'cairosurface', 'content'=>'int', 'width'=>'string', 'height'=>'string'], 'CairoSurface::finish' => ['void'], 'CairoSurface::flush' => ['void'], 'CairoSurface::getContent' => ['int'], 'CairoSurface::getDeviceOffset' => ['array'], 'CairoSurface::getFontOptions' => ['', 'context'=>'cairocontext'], 'CairoSurface::getType' => ['int'], 'CairoSurface::markDirty' => ['void'], 'CairoSurface::markDirtyRectangle' => ['void', 'x'=>'string', 'y'=>'string', 'width'=>'string', 'height'=>'string'], 'CairoSurface::setDeviceOffset' => ['void', 'x'=>'string', 'y'=>'string'], 'CairoSurface::setFallbackResolution' => ['void', 'x'=>'string', 'y'=>'string'], 'CairoSurface::showPage' => ['', 'context'=>'cairocontext'], 'CairoSurface::status' => ['int', 'context'=>'cairocontext'], 'CairoSurface::writeToPng' => ['void', 'file'=>'string'], 'CairoSurfacePattern::__construct' => ['void', 'surface'=>'CairoSurface'], 'CairoSurfacePattern::getExtend' => ['int'], 'CairoSurfacePattern::getFilter' => ['int'], 'CairoSurfacePattern::getSurface' => ['void'], 'CairoSurfacePattern::setExtend' => ['void', 'extend'=>'int'], 'CairoSurfacePattern::setFilter' => ['void', 'filter'=>'string'], 'CairoSvgSurface::__construct' => ['void', 'file'=>'string', 'width'=>'float', 'height'=>'float'], 'CairoSvgSurface::getVersions' => ['array'], 'CairoSvgSurface::restrictToVersion' => ['void', 'version'=>'string'], 'CairoSvgSurface::versionToString' => ['string', 'version'=>'int'], 'cal_days_in_month' => ['int', 'calendar'=>'int', 'month'=>'int', 'year'=>'int'], 'cal_from_jd' => ['array', 'jd'=>'int', 'calendar'=>'int'], 'cal_info' => ['array', 'calendar='=>'int'], 'cal_to_jd' => ['int', 'calendar'=>'int', 'month'=>'int', 'day'=>'int', 'year'=>'int'], 'calcul_hmac' => ['string', 'clent'=>'string', 'siretcode'=>'string', 'price'=>'string', 'reference'=>'string', 'validity'=>'string', 'taxation'=>'string', 'devise'=>'string', 'language'=>'string'], 'calculhmac' => ['string', 'clent'=>'string', 'data'=>'string'], 'call_user_func' => ['mixed', 'function'=>'callable', '...parameters='=>'mixed'], 'call_user_func_array' => ['mixed', 'function'=>'callable', 'parameters'=>'array'], 'call_user_method' => ['mixed', 'method_name'=>'string', 'obj'=>'object', 'parameter='=>'mixed', '...args='=>'mixed'], 'call_user_method_array' => ['mixed', 'method_name'=>'string', 'obj'=>'object', 'params'=>'array'], 'CallbackFilterIterator::__construct' => ['void', 'iterator'=>'Iterator', 'func'=>'callable'], 'CallbackFilterIterator::accept' => ['bool'], 'CallbackFilterIterator::current' => ['mixed'], 'CallbackFilterIterator::getInnerIterator' => ['Iterator'], 'CallbackFilterIterator::key' => ['mixed'], 'CallbackFilterIterator::next' => ['void'], 'CallbackFilterIterator::rewind' => ['void'], 'CallbackFilterIterator::valid' => ['bool'], 'ceil' => ['__benevolent', 'number'=>'float'], 'chdb::__construct' => ['void', 'pathname'=>'string'], 'chdb::get' => ['string', 'key'=>'string'], 'chdb_create' => ['bool', 'pathname'=>'string', 'data'=>'array'], 'chdir' => ['bool', 'directory'=>'string'], 'checkdate' => ['bool', 'month'=>'int', 'day'=>'int', 'year'=>'int'], 'checkdnsrr' => ['bool', 'host'=>'string', 'type='=>'string'], 'chgrp' => ['bool', 'filename'=>'string', 'group'=>'string|int'], 'chmod' => ['bool', 'filename'=>'string', 'mode'=>'int'], 'chop' => ['string', 'str'=>'string', 'character_mask='=>'string'], 'chown' => ['bool', 'filename'=>'string', 'user'=>'string|int'], 'chr' => ['non-empty-string', 'ascii'=>'int'], 'chroot' => ['bool', 'directory'=>'string'], 'chunk_split' => ['string', 'str'=>'string', 'chunklen='=>'positive-int', 'ending='=>'string'], 'class_alias' => ['bool', 'user_class_name'=>'string', 'alias_name'=>'string', 'autoload='=>'bool'], 'class_exists' => ['bool', 'classname'=>'string', 'autoload='=>'bool'], 'class_implements' => ['array|false', 'what'=>'object|string', 'autoload='=>'bool'], 'class_parents' => ['array|false', 'instance'=>'object|string', 'autoload='=>'bool'], 'class_uses' => ['array|false', 'what'=>'object|string', 'autoload='=>'bool'], 'classkit_import' => ['array', 'filename'=>'string'], 'classkit_method_add' => ['bool', 'classname'=>'string', 'methodname'=>'string', 'args'=>'string', 'code'=>'string', 'flags='=>'int'], 'classkit_method_copy' => ['bool', 'dclass'=>'string', 'dmethod'=>'string', 'sclass'=>'string', 'smethod='=>'string'], 'classkit_method_redefine' => ['bool', 'classname'=>'string', 'methodname'=>'string', 'args'=>'string', 'code'=>'string', 'flags='=>'int'], 'classkit_method_remove' => ['bool', 'classname'=>'string', 'methodname'=>'string'], 'classkit_method_rename' => ['bool', 'classname'=>'string', 'methodname'=>'string', 'newname'=>'string'], 'classObj::__construct' => ['void', 'layer'=>'layerObj', 'class'=>'classObj'], 'classObj::addLabel' => ['int', 'label'=>'labelObj'], 'classObj::convertToString' => ['string'], 'classObj::createLegendIcon' => ['imageObj', 'width'=>'int', 'height'=>'int'], 'classObj::deletestyle' => ['int', 'index'=>'int'], 'classObj::drawLegendIcon' => ['int', 'width'=>'int', 'height'=>'int', 'im'=>'imageObj', 'dstX'=>'int', 'dstY'=>'int'], 'classObj::free' => ['void'], 'classObj::getExpressionString' => ['string'], 'classObj::getLabel' => ['labelObj', 'index'=>'int'], 'classObj::getMetaData' => ['int', 'name'=>'string'], 'classObj::getStyle' => ['styleObj', 'index'=>'int'], 'classObj::getTextString' => ['string'], 'classObj::movestyledown' => ['int', 'index'=>'int'], 'classObj::movestyleup' => ['int', 'index'=>'int'], 'classObj::ms_newClassObj' => ['classObj', 'layer'=>'layerObj', 'class'=>'classObj'], 'classObj::removeLabel' => ['labelObj', 'index'=>'int'], 'classObj::removeMetaData' => ['int', 'name'=>'string'], 'classObj::set' => ['int', 'property_name'=>'string', 'new_value'=>''], 'classObj::setExpression' => ['int', 'expression'=>'string'], 'classObj::setMetaData' => ['int', 'name'=>'string', 'value'=>'string'], 'classObj::settext' => ['int', 'text'=>'string'], 'classObj::updateFromString' => ['int', 'snippet'=>'string'], 'clearstatcache' => ['void', 'clear_realpath_cache='=>'bool', 'filename='=>'string'], 'cli_get_process_title' => ['string'], 'cli_set_process_title' => ['bool', 'arg'=>'string'], 'ClosedGeneratorException::__clone' => ['void'], 'ClosedGeneratorException::__toString' => ['string'], 'ClosedGeneratorException::getCode' => ['int'], 'ClosedGeneratorException::getFile' => ['string'], 'ClosedGeneratorException::getLine' => ['int'], 'ClosedGeneratorException::getMessage' => ['string'], 'ClosedGeneratorException::getPrevious' => ['Throwable|ClosedGeneratorException|null'], 'ClosedGeneratorException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'ClosedGeneratorException::getTraceAsString' => ['string'], 'closedir' => ['void', 'dir_handle='=>'resource'], 'closelog' => ['bool'], 'Closure::__construct' => ['void'], 'Closure::__invoke' => ['', '...args='=>''], 'Closure::bind' => ['__benevolent', 'old'=>'Closure', 'to'=>'?object', 'scope='=>'object|string|null'], 'Closure::bindTo' => ['__benevolent', 'new'=>'?object', 'newscope='=>'object|string|null'], 'Closure::call' => ['', 'to'=>'object', '...parameters='=>''], 'Closure::fromCallable' => ['Closure', 'callable'=>'callable'], 'clusterObj::convertToString' => ['string'], 'clusterObj::getFilterString' => ['string'], 'clusterObj::getGroupString' => ['string'], 'clusterObj::setFilter' => ['int', 'expression'=>'string'], 'clusterObj::setGroup' => ['int', 'expression'=>'string'], 'Collator::__construct' => ['void', 'locale'=>'string'], 'Collator::asort' => ['bool', '&rw_arr'=>'array', 'sort_flag='=>'int'], 'Collator::compare' => ['int|false', 'str1'=>'string', 'str2'=>'string'], 'Collator::create' => ['?Collator', 'locale'=>'string'], 'Collator::getAttribute' => ['int', 'attr'=>'int'], 'Collator::getErrorCode' => ['int'], 'Collator::getErrorMessage' => ['string'], 'Collator::getLocale' => ['string', 'type'=>'int'], 'Collator::getSortKey' => ['string', 'str'=>'string'], 'Collator::getStrength' => ['int'], 'Collator::setAttribute' => ['bool', 'attr'=>'int', 'val'=>'int'], 'Collator::setStrength' => ['bool', 'strength'=>'int'], 'Collator::sort' => ['bool', '&rw_arr'=>'array', 'sort_flags='=>'int'], 'Collator::sortWithSortKeys' => ['bool', '&rw_arr'=>'array'], 'collator_asort' => ['bool', 'coll'=>'collator', '&rw_arr'=>'array', 'sort_flag='=>'int'], 'collator_compare' => ['int|false', 'coll'=>'collator', 'str1'=>'string', 'str2'=>'string'], 'collator_create' => ['?Collator', 'locale'=>'string'], 'collator_get_attribute' => ['int|false', 'coll'=>'collator', 'attr'=>'int'], 'collator_get_error_code' => ['int|false', 'coll'=>'collator'], 'collator_get_error_message' => ['string|false', 'coll'=>'collator'], 'collator_get_locale' => ['string|false', 'coll'=>'collator', 'type'=>'int'], 'collator_get_sort_key' => ['string|false', 'coll'=>'collator', 'str'=>'string'], 'collator_get_strength' => ['int', 'coll'=>'collator'], 'collator_set_attribute' => ['bool', 'coll'=>'collator', 'attr'=>'int', 'val'=>'int'], 'collator_set_strength' => ['bool', 'coll'=>'collator', 'strength'=>'int'], 'collator_sort' => ['bool', 'coll'=>'collator', '&rw_arr'=>'array', 'sort_flag='=>'int'], 'collator_sort_with_sort_keys' => ['bool', 'coll'=>'collator', '&rw_arr'=>'array'], 'Collectable::isGarbage' => ['bool'], 'colorObj::setHex' => ['int', 'hex'=>'string'], 'colorObj::toHex' => ['string'], 'COM::__call' => ['', 'name'=>'', 'args'=>''], 'COM::__construct' => ['void', 'module_name'=>'string', 'server_name='=>'mixed', 'codepage='=>'int', 'typelib='=>'string'], 'COM::__get' => ['', 'name'=>''], 'COM::__set' => ['', 'name'=>'', 'value'=>''], 'com_addref' => [''], 'com_create_guid' => ['string|false'], 'com_event_sink' => ['bool', 'comobject'=>'object', 'sinkobject'=>'object', 'sinkinterface='=>'mixed'], 'com_get_active_object' => ['object', 'progid'=>'string', 'code_page='=>'int'], 'com_isenum' => ['bool', 'com_module'=>'variant'], 'com_load_typelib' => ['bool', 'typelib_name'=>'string', 'case_insensitive='=>'int'], 'com_message_pump' => ['bool', 'timeoutms='=>'int'], 'com_print_typeinfo' => ['bool', 'comobject_or_typelib'=>'object', 'dispinterface='=>'string', 'wantsink='=>'bool'], 'com_release' => [''], 'compact' => ['array', '...var_names='=>'string|array'], 'COMPersistHelper::__construct' => ['void', 'com_object'=>'object'], 'COMPersistHelper::GetCurFile' => ['string'], 'COMPersistHelper::GetMaxStreamSize' => ['int'], 'COMPersistHelper::InitNew' => ['int'], 'COMPersistHelper::LoadFromFile' => ['bool', 'filename'=>'string', 'flags'=>'int'], 'COMPersistHelper::LoadFromStream' => ['', 'stream'=>''], 'COMPersistHelper::SaveToFile' => ['bool', 'filename'=>'string', 'remember'=>'bool'], 'COMPersistHelper::SaveToStream' => ['int', 'stream'=>''], 'componere\cast' => ['Type', 'arg1'=>'', 'object'=>''], 'componere\cast_by_ref' => ['Type', 'arg1'=>'', 'object'=>''], 'confirm_pdo_ibm_compiled' => [''], 'connection_aborted' => ['0|1'], 'connection_status' => ['int-mask'], 'connection_timeout' => ['int'], 'constant' => ['mixed', 'const_name'=>'string'], 'convert_cyr_string' => ['string', 'str'=>'string', 'from'=>'string', 'to'=>'string'], 'convert_uudecode' => ['string|false', 'data'=>'string'], 'convert_uuencode' => ['string', 'data'=>'string'], 'copy' => ['bool', 'source_file'=>'string', 'destination_file'=>'string', 'context='=>'resource'], 'cos' => ['float', 'number'=>'float'], 'cosh' => ['float', 'number'=>'float'], 'Couchbase\AnalyticsQuery::__construct' => ['void'], 'Couchbase\AnalyticsQuery::fromString' => ['Couchbase\AnalyticsQuery', 'statement'=>'string'], 'Couchbase\basicDecoderV1' => ['mixed', 'bytes'=>'string', 'flags'=>'int', 'datatype'=>'int', 'options'=>'array'], 'Couchbase\basicEncoderV1' => ['array', 'value'=>'mixed', 'options'=>'array'], 'Couchbase\BooleanFieldSearchQuery::__construct' => ['void'], 'Couchbase\BooleanFieldSearchQuery::boost' => ['Couchbase\BooleanFieldSearchQuery', 'boost'=>'float'], 'Couchbase\BooleanFieldSearchQuery::field' => ['Couchbase\BooleanFieldSearchQuery', 'field'=>'string'], 'Couchbase\BooleanFieldSearchQuery::jsonSerialize' => ['array'], 'Couchbase\BooleanSearchQuery::__construct' => ['void'], 'Couchbase\BooleanSearchQuery::boost' => ['Couchbase\BooleanSearchQuery', 'boost'=>'float'], 'Couchbase\BooleanSearchQuery::jsonSerialize' => ['array'], 'Couchbase\BooleanSearchQuery::must' => ['Couchbase\BooleanSearchQuery', '...queries='=>'array'], 'Couchbase\BooleanSearchQuery::mustNot' => ['Couchbase\BooleanSearchQuery', '...queries='=>'array'], 'Couchbase\BooleanSearchQuery::should' => ['Couchbase\BooleanSearchQuery', '...queries='=>'array'], 'Couchbase\Bucket::__construct' => ['void'], 'Couchbase\Bucket::__get' => ['int', 'name'=>'string'], 'Couchbase\Bucket::__set' => ['int', 'name'=>'string', 'value'=>'int'], 'Couchbase\Bucket::append' => ['Couchbase\Document|array', 'ids'=>'array|string', 'value'=>'mixed', 'options='=>'array'], 'Couchbase\Bucket::counter' => ['Couchbase\Document|array', 'ids'=>'array|string', 'delta='=>'int', 'options='=>'array'], 'Couchbase\Bucket::diag' => ['array', 'reportId='=>'string'], 'Couchbase\Bucket::get' => ['Couchbase\Document|array', 'ids'=>'array|string', 'options='=>'array'], 'Couchbase\Bucket::getAndLock' => ['Couchbase\Document|array', 'ids'=>'array|string', 'lockTime'=>'int', 'options='=>'array'], 'Couchbase\Bucket::getAndTouch' => ['Couchbase\Document|array', 'ids'=>'array|string', 'expiry'=>'int', 'options='=>'array'], 'Couchbase\Bucket::getFromReplica' => ['Couchbase\Document|array', 'ids'=>'array|string', 'options='=>'array'], 'Couchbase\Bucket::insert' => ['Couchbase\Document|array', 'ids'=>'array|string', 'value'=>'mixed', 'options='=>'array'], 'Couchbase\Bucket::listExists' => ['bool', 'id'=>'string', 'value'=>'mixed'], 'Couchbase\Bucket::listGet' => ['mixed', 'id'=>'string', 'index'=>'int'], 'Couchbase\Bucket::listPush' => ['', 'id'=>'string', 'value'=>'mixed'], 'Couchbase\Bucket::listRemove' => ['', 'id'=>'string', 'index'=>'int'], 'Couchbase\Bucket::listSet' => ['', 'id'=>'string', 'index'=>'int', 'value'=>'mixed'], 'Couchbase\Bucket::listShift' => ['', 'id'=>'string', 'value'=>'mixed'], 'Couchbase\Bucket::listSize' => ['int', 'id'=>'string'], 'Couchbase\Bucket::lookupIn' => ['Couchbase\LookupInBuilder', 'id'=>'string'], 'Couchbase\Bucket::manager' => ['Couchbase\BucketManager'], 'Couchbase\Bucket::mapAdd' => ['', 'id'=>'string', 'key'=>'string', 'value'=>'mixed'], 'Couchbase\Bucket::mapGet' => ['mixed', 'id'=>'string', 'key'=>'string'], 'Couchbase\Bucket::mapRemove' => ['', 'id'=>'string', 'key'=>'string'], 'Couchbase\Bucket::mapSize' => ['int', 'id'=>'string'], 'Couchbase\Bucket::mutateIn' => ['Couchbase\MutateInBuilder', 'id'=>'string', 'cas'=>'string'], 'Couchbase\Bucket::ping' => ['array', 'services='=>'int', 'reportId='=>'string'], 'Couchbase\Bucket::prepend' => ['Couchbase\Document|array', 'ids'=>'array|string', 'value'=>'mixed', 'options='=>'array'], 'Couchbase\Bucket::query' => ['object', 'query'=>'Couchbase\AnalyticsQuery|Couchbase\N1qlQuery|Couchbase\SearchQuery|Couchbase\SpatialViewQuery|Couchbase\ViewQuery', 'jsonAsArray='=>'bool|false'], 'Couchbase\Bucket::queueAdd' => ['', 'id'=>'string', 'value'=>'mixed'], 'Couchbase\Bucket::queueExists' => ['bool', 'id'=>'string', 'value'=>'mixed'], 'Couchbase\Bucket::queueRemove' => ['mixed', 'id'=>'string'], 'Couchbase\Bucket::queueSize' => ['int', 'id'=>'string'], 'Couchbase\Bucket::remove' => ['Couchbase\Document|array', 'ids'=>'array|string', 'options='=>'array'], 'Couchbase\Bucket::replace' => ['Couchbase\Document|array', 'ids'=>'array|string', 'value'=>'mixed', 'options='=>'array'], 'Couchbase\Bucket::retrieveIn' => ['Couchbase\DocumentFragment', 'id'=>'string', '...paths='=>'array'], 'Couchbase\Bucket::setAdd' => ['', 'id'=>'string', 'value'=>'bool|float|int|string'], 'Couchbase\Bucket::setExists' => ['bool', 'id'=>'string', 'value'=>'bool|float|int|string'], 'Couchbase\Bucket::setRemove' => ['', 'id'=>'string', 'value'=>'bool|float|int|string'], 'Couchbase\Bucket::setSize' => ['int', 'id'=>'string'], 'Couchbase\Bucket::setTranscoder' => ['', 'encoder'=>'callable', 'decoder'=>'callable'], 'Couchbase\Bucket::touch' => ['Couchbase\Document|array', 'ids'=>'array|string', 'expiry'=>'int', 'options='=>'array'], 'Couchbase\Bucket::unlock' => ['Couchbase\Document|array', 'ids'=>'array|string', 'options='=>'array'], 'Couchbase\Bucket::upsert' => ['Couchbase\Document|array', 'ids'=>'array|string', 'value'=>'mixed', 'options='=>'array'], 'Couchbase\BucketManager::__construct' => ['void'], 'Couchbase\BucketManager::createN1qlIndex' => ['', 'name'=>'string', 'fields'=>'array', 'whereClause='=>'string', 'ignoreIfExist='=>'bool|false', 'defer='=>'bool|false'], 'Couchbase\BucketManager::createN1qlPrimaryIndex' => ['', 'customName='=>'string', 'ignoreIfExist='=>'bool|false', 'defer='=>'bool|false'], 'Couchbase\BucketManager::dropN1qlIndex' => ['', 'name'=>'string', 'ignoreIfNotExist='=>'bool|false'], 'Couchbase\BucketManager::dropN1qlPrimaryIndex' => ['', 'customName='=>'string', 'ignoreIfNotExist='=>'bool|false'], 'Couchbase\BucketManager::flush' => [''], 'Couchbase\BucketManager::getDesignDocument' => ['array', 'name'=>'string'], 'Couchbase\BucketManager::info' => ['array'], 'Couchbase\BucketManager::insertDesignDocument' => ['', 'name'=>'string', 'document'=>'array'], 'Couchbase\BucketManager::listDesignDocuments' => ['array'], 'Couchbase\BucketManager::listN1qlIndexes' => ['array'], 'Couchbase\BucketManager::removeDesignDocument' => ['', 'name'=>'string'], 'Couchbase\BucketManager::upsertDesignDocument' => ['', 'name'=>'string', 'document'=>'array'], 'Couchbase\ClassicAuthenticator::bucket' => ['', 'name'=>'string', 'password'=>'string'], 'Couchbase\ClassicAuthenticator::cluster' => ['', 'username'=>'string', 'password'=>'string'], 'Couchbase\Cluster::__construct' => ['void', 'connstr'=>'string'], 'Couchbase\Cluster::authenticate' => ['null', 'authenticator'=>'Couchbase\Authenticator'], 'Couchbase\Cluster::authenticateAs' => ['null', 'username'=>'string', 'password'=>'string'], 'Couchbase\Cluster::manager' => ['Couchbase\ClusterManager', 'username='=>'string', 'password='=>'string'], 'Couchbase\Cluster::openBucket' => ['Couchbase\Bucket', 'name='=>'string', 'password='=>'string'], 'Couchbase\ClusterManager::__construct' => ['void'], 'Couchbase\ClusterManager::createBucket' => ['', 'name'=>'string', 'options='=>'array'], 'Couchbase\ClusterManager::getUser' => ['array', 'username'=>'string', 'domain='=>'int'], 'Couchbase\ClusterManager::info' => ['array'], 'Couchbase\ClusterManager::listBuckets' => ['array'], 'Couchbase\ClusterManager::listUsers' => ['array', 'domain='=>'int'], 'Couchbase\ClusterManager::removeBucket' => ['', 'name'=>'string'], 'Couchbase\ClusterManager::removeUser' => ['', 'name'=>'string', 'domain='=>'int'], 'Couchbase\ClusterManager::upsertUser' => ['', 'name'=>'string', 'settings'=>'Couchbase\UserSettings', 'domain='=>'int'], 'Couchbase\ConjunctionSearchQuery::__construct' => ['void'], 'Couchbase\ConjunctionSearchQuery::boost' => ['Couchbase\ConjunctionSearchQuery', 'boost'=>'float'], 'Couchbase\ConjunctionSearchQuery::every' => ['Couchbase\ConjunctionSearchQuery', '...queries='=>'array'], 'Couchbase\ConjunctionSearchQuery::jsonSerialize' => ['array'], 'Couchbase\DateRangeSearchFacet::__construct' => ['void'], 'Couchbase\DateRangeSearchFacet::addRange' => ['Couchbase\DateSearchFacet', 'name'=>'string', 'start'=>'int|string', 'end'=>'int|string'], 'Couchbase\DateRangeSearchFacet::jsonSerialize' => ['array'], 'Couchbase\DateRangeSearchQuery::__construct' => ['void'], 'Couchbase\DateRangeSearchQuery::boost' => ['Couchbase\DateRangeSearchQuery', 'boost'=>'float'], 'Couchbase\DateRangeSearchQuery::dateTimeParser' => ['Couchbase\DateRangeSearchQuery', 'dateTimeParser'=>'string'], 'Couchbase\DateRangeSearchQuery::end' => ['Couchbase\DateRangeSearchQuery', 'end'=>'int|string', 'inclusive='=>'bool|false'], 'Couchbase\DateRangeSearchQuery::field' => ['Couchbase\DateRangeSearchQuery', 'field'=>'string'], 'Couchbase\DateRangeSearchQuery::jsonSerialize' => ['array'], 'Couchbase\DateRangeSearchQuery::start' => ['Couchbase\DateRangeSearchQuery', 'start'=>'int|string', 'inclusive='=>'bool|true'], 'Couchbase\defaultDecoder' => ['mixed', 'bytes'=>'string', 'flags'=>'int', 'datatype'=>'int'], 'Couchbase\defaultEncoder' => ['array', 'value'=>'mixed'], 'Couchbase\DisjunctionSearchQuery::__construct' => ['void'], 'Couchbase\DisjunctionSearchQuery::boost' => ['Couchbase\DisjunctionSearchQuery', 'boost'=>'float'], 'Couchbase\DisjunctionSearchQuery::either' => ['Couchbase\DisjunctionSearchQuery', '...queries='=>'array'], 'Couchbase\DisjunctionSearchQuery::jsonSerialize' => ['array'], 'Couchbase\DisjunctionSearchQuery::min' => ['Couchbase\DisjunctionSearchQuery', 'min'=>'int'], 'Couchbase\DocIdSearchQuery::__construct' => ['void'], 'Couchbase\DocIdSearchQuery::boost' => ['Couchbase\DocIdSearchQuery', 'boost'=>'float'], 'Couchbase\DocIdSearchQuery::docIds' => ['Couchbase\DocIdSearchQuery', '...documentIds='=>'array'], 'Couchbase\DocIdSearchQuery::field' => ['Couchbase\DocIdSearchQuery', 'field'=>'string'], 'Couchbase\DocIdSearchQuery::jsonSerialize' => ['array'], 'Couchbase\fastlzCompress' => ['string', 'data'=>'string'], 'Couchbase\fastlzDecompress' => ['string', 'data'=>'string'], 'Couchbase\GeoBoundingBoxSearchQuery::__construct' => ['void'], 'Couchbase\GeoBoundingBoxSearchQuery::boost' => ['Couchbase\GeoBoundingBoxSearchQuery', 'boost'=>'float'], 'Couchbase\GeoBoundingBoxSearchQuery::field' => ['Couchbase\GeoBoundingBoxSearchQuery', 'field'=>'string'], 'Couchbase\GeoBoundingBoxSearchQuery::jsonSerialize' => ['array'], 'Couchbase\GeoDistanceSearchQuery::__construct' => ['void'], 'Couchbase\GeoDistanceSearchQuery::boost' => ['Couchbase\GeoDistanceSearchQuery', 'boost'=>'float'], 'Couchbase\GeoDistanceSearchQuery::field' => ['Couchbase\GeoDistanceSearchQuery', 'field'=>'string'], 'Couchbase\GeoDistanceSearchQuery::jsonSerialize' => ['array'], 'Couchbase\LookupInBuilder::__construct' => ['void'], 'Couchbase\LookupInBuilder::execute' => ['Couchbase\DocumentFragment'], 'Couchbase\LookupInBuilder::exists' => ['Couchbase\LookupInBuilder', 'path'=>'string', 'options='=>'array'], 'Couchbase\LookupInBuilder::get' => ['Couchbase\LookupInBuilder', 'path'=>'string', 'options='=>'array'], 'Couchbase\LookupInBuilder::getCount' => ['Couchbase\LookupInBuilder', 'path'=>'string', 'options='=>'array'], 'Couchbase\MatchAllSearchQuery::__construct' => ['void'], 'Couchbase\MatchAllSearchQuery::boost' => ['Couchbase\MatchAllSearchQuery', 'boost'=>'float'], 'Couchbase\MatchAllSearchQuery::jsonSerialize' => ['array'], 'Couchbase\MatchNoneSearchQuery::__construct' => ['void'], 'Couchbase\MatchNoneSearchQuery::boost' => ['Couchbase\MatchNoneSearchQuery', 'boost'=>'float'], 'Couchbase\MatchNoneSearchQuery::jsonSerialize' => ['array'], 'Couchbase\MatchPhraseSearchQuery::__construct' => ['void'], 'Couchbase\MatchPhraseSearchQuery::analyzer' => ['Couchbase\MatchPhraseSearchQuery', 'analyzer'=>'string'], 'Couchbase\MatchPhraseSearchQuery::boost' => ['Couchbase\MatchPhraseSearchQuery', 'boost'=>'float'], 'Couchbase\MatchPhraseSearchQuery::field' => ['Couchbase\MatchPhraseSearchQuery', 'field'=>'string'], 'Couchbase\MatchPhraseSearchQuery::jsonSerialize' => ['array'], 'Couchbase\MatchSearchQuery::__construct' => ['void'], 'Couchbase\MatchSearchQuery::analyzer' => ['Couchbase\MatchSearchQuery', 'analyzer'=>'string'], 'Couchbase\MatchSearchQuery::boost' => ['Couchbase\MatchSearchQuery', 'boost'=>'float'], 'Couchbase\MatchSearchQuery::field' => ['Couchbase\MatchSearchQuery', 'field'=>'string'], 'Couchbase\MatchSearchQuery::fuzziness' => ['Couchbase\MatchSearchQuery', 'fuzziness'=>'int'], 'Couchbase\MatchSearchQuery::jsonSerialize' => ['array'], 'Couchbase\MatchSearchQuery::prefixLength' => ['Couchbase\MatchSearchQuery', 'prefixLength'=>'int'], 'Couchbase\MutateInBuilder::__construct' => ['void'], 'Couchbase\MutateInBuilder::arrayAddUnique' => ['Couchbase\MutateInBuilder', 'path'=>'string', 'value'=>'mixed', 'options='=>'array|bool'], 'Couchbase\MutateInBuilder::arrayAppend' => ['Couchbase\MutateInBuilder', 'path'=>'string', 'value'=>'mixed', 'options='=>'array|bool'], 'Couchbase\MutateInBuilder::arrayAppendAll' => ['Couchbase\MutateInBuilder', 'path'=>'string', 'values'=>'array', 'options='=>'array|bool'], 'Couchbase\MutateInBuilder::arrayInsert' => ['Couchbase\MutateInBuilder', 'path'=>'string', 'value'=>'mixed', 'options='=>'array'], 'Couchbase\MutateInBuilder::arrayInsertAll' => ['Couchbase\MutateInBuilder', 'path'=>'string', 'values'=>'array', 'options='=>'array'], 'Couchbase\MutateInBuilder::arrayPrepend' => ['Couchbase\MutateInBuilder', 'path'=>'string', 'value'=>'mixed', 'options='=>'array|bool'], 'Couchbase\MutateInBuilder::arrayPrependAll' => ['Couchbase\MutateInBuilder', 'path'=>'string', 'values'=>'array', 'options='=>'array|bool'], 'Couchbase\MutateInBuilder::counter' => ['Couchbase\MutateInBuilder', 'path'=>'string', 'delta'=>'int', 'options='=>'array|bool'], 'Couchbase\MutateInBuilder::execute' => ['Couchbase\DocumentFragment'], 'Couchbase\MutateInBuilder::insert' => ['Couchbase\MutateInBuilder', 'path'=>'string', 'value'=>'mixed', 'options='=>'array|bool'], 'Couchbase\MutateInBuilder::modeDocument' => ['', 'mode'=>'int'], 'Couchbase\MutateInBuilder::remove' => ['Couchbase\MutateInBuilder', 'path'=>'string', 'options='=>'array'], 'Couchbase\MutateInBuilder::replace' => ['Couchbase\MutateInBuilder', 'path'=>'string', 'value'=>'mixed', 'options='=>'array'], 'Couchbase\MutateInBuilder::upsert' => ['Couchbase\MutateInBuilder', 'path'=>'string', 'value'=>'mixed', 'options='=>'array|bool'], 'Couchbase\MutateInBuilder::withExpiry' => ['Couchbase\MutateInBuilder', 'expiry'=>'Couchbase\expiry'], 'Couchbase\MutationState::__construct' => ['void'], 'Couchbase\MutationState::add' => ['', 'source'=>'Couchbase\Document|Couchbase\DocumentFragment|array'], 'Couchbase\MutationState::from' => ['Couchbase\MutationState', 'source'=>'Couchbase\Document|Couchbase\DocumentFragment|array'], 'Couchbase\MutationToken::__construct' => ['void'], 'Couchbase\MutationToken::bucketName' => ['string'], 'Couchbase\MutationToken::from' => ['', 'bucketName'=>'string', 'vbucketId'=>'int', 'vbucketUuid'=>'string', 'sequenceNumber'=>'string'], 'Couchbase\MutationToken::sequenceNumber' => ['string'], 'Couchbase\MutationToken::vbucketId' => ['int'], 'Couchbase\MutationToken::vbucketUuid' => ['string'], 'Couchbase\N1qlIndex::__construct' => ['void'], 'Couchbase\N1qlQuery::__construct' => ['void'], 'Couchbase\N1qlQuery::adhoc' => ['Couchbase\N1qlQuery', 'adhoc'=>'bool'], 'Couchbase\N1qlQuery::consistency' => ['Couchbase\N1qlQuery', 'consistency'=>'int'], 'Couchbase\N1qlQuery::consistentWith' => ['Couchbase\N1qlQuery', 'state'=>'Couchbase\MutationState'], 'Couchbase\N1qlQuery::crossBucket' => ['Couchbase\N1qlQuery', 'crossBucket'=>'bool'], 'Couchbase\N1qlQuery::fromString' => ['Couchbase\N1qlQuery', 'statement'=>'string'], 'Couchbase\N1qlQuery::maxParallelism' => ['Couchbase\N1qlQuery', 'maxParallelism'=>'int'], 'Couchbase\N1qlQuery::namedParams' => ['Couchbase\N1qlQuery', 'params'=>'array'], 'Couchbase\N1qlQuery::pipelineBatch' => ['Couchbase\N1qlQuery', 'pipelineBatch'=>'int'], 'Couchbase\N1qlQuery::pipelineCap' => ['Couchbase\N1qlQuery', 'pipelineCap'=>'int'], 'Couchbase\N1qlQuery::positionalParams' => ['Couchbase\N1qlQuery', 'params'=>'array'], 'Couchbase\N1qlQuery::readonly' => ['Couchbase\N1qlQuery', 'readonly'=>'bool'], 'Couchbase\N1qlQuery::scanCap' => ['Couchbase\N1qlQuery', 'scanCap'=>'int'], 'Couchbase\NumericRangeSearchFacet::__construct' => ['void'], 'Couchbase\NumericRangeSearchFacet::addRange' => ['Couchbase\NumericSearchFacet', 'name'=>'string', 'min'=>'float', 'max'=>'float'], 'Couchbase\NumericRangeSearchFacet::jsonSerialize' => ['array'], 'Couchbase\NumericRangeSearchQuery::__construct' => ['void'], 'Couchbase\NumericRangeSearchQuery::boost' => ['Couchbase\NumericRangeSearchQuery', 'boost'=>'float'], 'Couchbase\NumericRangeSearchQuery::field' => ['Couchbase\NumericRangeSearchQuery', 'field'=>'string'], 'Couchbase\NumericRangeSearchQuery::jsonSerialize' => ['array'], 'Couchbase\NumericRangeSearchQuery::max' => ['Couchbase\NumericRangeSearchQuery', 'max'=>'float', 'inclusive='=>'bool|false'], 'Couchbase\NumericRangeSearchQuery::min' => ['Couchbase\NumericRangeSearchQuery', 'min'=>'float', 'inclusive='=>'bool|true'], 'Couchbase\passthruDecoder' => ['string', 'bytes'=>'string', 'flags'=>'int', 'datatype'=>'int'], 'Couchbase\passthruEncoder' => ['array', 'value'=>'string'], 'Couchbase\PasswordAuthenticator::password' => ['Couchbase\PasswordAuthenticator', 'password'=>'string'], 'Couchbase\PasswordAuthenticator::username' => ['Couchbase\PasswordAuthenticator', 'username'=>'string'], 'Couchbase\PhraseSearchQuery::__construct' => ['void'], 'Couchbase\PhraseSearchQuery::boost' => ['Couchbase\PhraseSearchQuery', 'boost'=>'float'], 'Couchbase\PhraseSearchQuery::field' => ['Couchbase\PhraseSearchQuery', 'field'=>'string'], 'Couchbase\PhraseSearchQuery::jsonSerialize' => ['array'], 'Couchbase\PrefixSearchQuery::__construct' => ['void'], 'Couchbase\PrefixSearchQuery::boost' => ['Couchbase\PrefixSearchQuery', 'boost'=>'float'], 'Couchbase\PrefixSearchQuery::field' => ['Couchbase\PrefixSearchQuery', 'field'=>'string'], 'Couchbase\PrefixSearchQuery::jsonSerialize' => ['array'], 'Couchbase\QueryStringSearchQuery::__construct' => ['void'], 'Couchbase\QueryStringSearchQuery::boost' => ['Couchbase\QueryStringSearchQuery', 'boost'=>'float'], 'Couchbase\QueryStringSearchQuery::jsonSerialize' => ['array'], 'Couchbase\RegexpSearchQuery::__construct' => ['void'], 'Couchbase\RegexpSearchQuery::boost' => ['Couchbase\RegexpSearchQuery', 'boost'=>'float'], 'Couchbase\RegexpSearchQuery::field' => ['Couchbase\RegexpSearchQuery', 'field'=>'string'], 'Couchbase\RegexpSearchQuery::jsonSerialize' => ['array'], 'Couchbase\SearchQuery::__construct' => ['void', 'indexName'=>'string', 'queryPart'=>'Couchbase\SearchQueryPart'], 'Couchbase\SearchQuery::addFacet' => ['Couchbase\SearchQuery', 'name'=>'string', 'facet'=>'Couchbase\SearchFacet'], 'Couchbase\SearchQuery::boolean' => ['Couchbase\BooleanSearchQuery'], 'Couchbase\SearchQuery::booleanField' => ['Couchbase\BooleanFieldSearchQuery', 'value'=>'bool'], 'Couchbase\SearchQuery::conjuncts' => ['Couchbase\ConjunctionSearchQuery', '...queries='=>'array'], 'Couchbase\SearchQuery::consistentWith' => ['Couchbase\SearchQuery', 'state'=>'Couchbase\MutationState'], 'Couchbase\SearchQuery::dateRange' => ['Couchbase\DateRangeSearchQuery'], 'Couchbase\SearchQuery::dateRangeFacet' => ['Couchbase\DateRangeSearchFacet', 'field'=>'string', 'limit'=>'int'], 'Couchbase\SearchQuery::disjuncts' => ['Couchbase\DisjunctionSearchQuery', '...queries='=>'array'], 'Couchbase\SearchQuery::docId' => ['Couchbase\DocIdSearchQuery', '...documentIds='=>'array'], 'Couchbase\SearchQuery::explain' => ['Couchbase\SearchQuery', 'explain'=>'bool'], 'Couchbase\SearchQuery::fields' => ['Couchbase\SearchQuery', '...fields='=>'array'], 'Couchbase\SearchQuery::geoBoundingBox' => ['Couchbase\GeoBoundingBoxSearchQuery', 'topLeftLongitude'=>'float', 'topLeftLatitude'=>'float', 'bottomRightLongitude'=>'float', 'bottomRightLatitude'=>'float'], 'Couchbase\SearchQuery::geoDistance' => ['Couchbase\GeoDistanceSearchQuery', 'longitude'=>'float', 'latitude'=>'float', 'distance'=>'string'], 'Couchbase\SearchQuery::highlight' => ['Couchbase\SearchQuery', 'style'=>'string', '...fields='=>'array'], 'Couchbase\SearchQuery::jsonSerialize' => ['array'], 'Couchbase\SearchQuery::limit' => ['Couchbase\SearchQuery', 'limit'=>'int'], 'Couchbase\SearchQuery::match' => ['Couchbase\MatchSearchQuery', 'match'=>'string'], 'Couchbase\SearchQuery::matchAll' => ['Couchbase\MatchAllSearchQuery'], 'Couchbase\SearchQuery::matchNone' => ['Couchbase\MatchNoneSearchQuery'], 'Couchbase\SearchQuery::matchPhrase' => ['Couchbase\MatchPhraseSearchQuery', '...terms='=>'array'], 'Couchbase\SearchQuery::numericRange' => ['Couchbase\NumericRangeSearchQuery'], 'Couchbase\SearchQuery::numericRangeFacet' => ['Couchbase\NumericRangeSearchFacet', 'field'=>'string', 'limit'=>'int'], 'Couchbase\SearchQuery::prefix' => ['Couchbase\PrefixSearchQuery', 'prefix'=>'string'], 'Couchbase\SearchQuery::queryString' => ['Couchbase\QueryStringSearchQuery', 'queryString'=>'string'], 'Couchbase\SearchQuery::regexp' => ['Couchbase\RegexpSearchQuery', 'regexp'=>'string'], 'Couchbase\SearchQuery::serverSideTimeout' => ['Couchbase\SearchQuery', 'serverSideTimeout'=>'int'], 'Couchbase\SearchQuery::skip' => ['Couchbase\SearchQuery', 'skip'=>'int'], 'Couchbase\SearchQuery::sort' => ['Couchbase\SearchQuery', '...sort='=>'array'], 'Couchbase\SearchQuery::term' => ['Couchbase\TermSearchQuery', 'term'=>'string'], 'Couchbase\SearchQuery::termFacet' => ['Couchbase\TermSearchFacet', 'field'=>'string', 'limit'=>'int'], 'Couchbase\SearchQuery::termRange' => ['Couchbase\TermRangeSearchQuery'], 'Couchbase\SearchQuery::wildcard' => ['Couchbase\WildcardSearchQuery', 'wildcard'=>'string'], 'Couchbase\SpatialViewQuery::__construct' => ['void'], 'Couchbase\SpatialViewQuery::bbox' => ['Couchbase\SpatialViewQuery', 'bbox'=>'array'], 'Couchbase\SpatialViewQuery::consistency' => ['Couchbase\SpatialViewQuery', 'consistency'=>'int'], 'Couchbase\SpatialViewQuery::custom' => ['', 'customParameters'=>'array'], 'Couchbase\SpatialViewQuery::encode' => ['array'], 'Couchbase\SpatialViewQuery::endRange' => ['Couchbase\SpatialViewQuery', 'range'=>'array'], 'Couchbase\SpatialViewQuery::limit' => ['Couchbase\SpatialViewQuery', 'limit'=>'int'], 'Couchbase\SpatialViewQuery::order' => ['Couchbase\SpatialViewQuery', 'order'=>'int'], 'Couchbase\SpatialViewQuery::skip' => ['Couchbase\SpatialViewQuery', 'skip'=>'int'], 'Couchbase\SpatialViewQuery::startRange' => ['Couchbase\SpatialViewQuery', 'range'=>'array'], 'Couchbase\TermRangeSearchQuery::__construct' => ['void'], 'Couchbase\TermRangeSearchQuery::boost' => ['Couchbase\TermRangeSearchQuery', 'boost'=>'float'], 'Couchbase\TermRangeSearchQuery::field' => ['Couchbase\TermRangeSearchQuery', 'field'=>'string'], 'Couchbase\TermRangeSearchQuery::jsonSerialize' => ['array'], 'Couchbase\TermRangeSearchQuery::max' => ['Couchbase\TermRangeSearchQuery', 'max'=>'string', 'inclusive='=>'bool|false'], 'Couchbase\TermRangeSearchQuery::min' => ['Couchbase\TermRangeSearchQuery', 'min'=>'string', 'inclusive='=>'bool|true'], 'Couchbase\TermSearchFacet::__construct' => ['void'], 'Couchbase\TermSearchFacet::jsonSerialize' => ['array'], 'Couchbase\TermSearchQuery::__construct' => ['void'], 'Couchbase\TermSearchQuery::boost' => ['Couchbase\TermSearchQuery', 'boost'=>'float'], 'Couchbase\TermSearchQuery::field' => ['Couchbase\TermSearchQuery', 'field'=>'string'], 'Couchbase\TermSearchQuery::fuzziness' => ['Couchbase\TermSearchQuery', 'fuzziness'=>'int'], 'Couchbase\TermSearchQuery::jsonSerialize' => ['array'], 'Couchbase\TermSearchQuery::prefixLength' => ['Couchbase\TermSearchQuery', 'prefixLength'=>'int'], 'Couchbase\UserSettings::fullName' => ['Couchbase\UserSettings', 'fullName'=>'string'], 'Couchbase\UserSettings::password' => ['Couchbase\UserSettings', 'password'=>'string'], 'Couchbase\UserSettings::role' => ['Couchbase\UserSettings', 'role'=>'string', 'bucket='=>'string'], 'Couchbase\ViewQuery::__construct' => ['void'], 'Couchbase\ViewQuery::consistency' => ['Couchbase\ViewQuery', 'consistency'=>'int'], 'Couchbase\ViewQuery::custom' => ['Couchbase\ViewQuery', 'customParameters'=>'array'], 'Couchbase\ViewQuery::encode' => ['array'], 'Couchbase\ViewQuery::from' => ['Couchbase\ViewQuery', 'designDocumentName'=>'string', 'viewName'=>'string'], 'Couchbase\ViewQuery::fromSpatial' => ['Couchbase\SpatialViewQuery', 'designDocumentName'=>'string', 'viewName'=>'string'], 'Couchbase\ViewQuery::group' => ['Couchbase\ViewQuery', 'group'=>'bool'], 'Couchbase\ViewQuery::groupLevel' => ['Couchbase\ViewQuery', 'groupLevel'=>'int'], 'Couchbase\ViewQuery::idRange' => ['Couchbase\ViewQuery', 'startKeyDocumentId'=>'string', 'endKeyDocumentId'=>'string'], 'Couchbase\ViewQuery::key' => ['Couchbase\ViewQuery', 'key'=>'mixed'], 'Couchbase\ViewQuery::keys' => ['Couchbase\ViewQuery', 'keys'=>'array'], 'Couchbase\ViewQuery::limit' => ['Couchbase\ViewQuery', 'limit'=>'int'], 'Couchbase\ViewQuery::order' => ['Couchbase\ViewQuery', 'order'=>'int'], 'Couchbase\ViewQuery::range' => ['Couchbase\ViewQuery', 'startKey'=>'mixed', 'endKey'=>'mixed', 'inclusiveEnd='=>'bool|false'], 'Couchbase\ViewQuery::reduce' => ['Couchbase\ViewQuery', 'reduce'=>'bool'], 'Couchbase\ViewQuery::skip' => ['Couchbase\ViewQuery', 'skip'=>'int'], 'Couchbase\ViewQueryEncodable::encode' => ['array'], 'Couchbase\WildcardSearchQuery::__construct' => ['void'], 'Couchbase\WildcardSearchQuery::boost' => ['Couchbase\WildcardSearchQuery', 'boost'=>'float'], 'Couchbase\WildcardSearchQuery::field' => ['Couchbase\WildcardSearchQuery', 'field'=>'string'], 'Couchbase\WildcardSearchQuery::jsonSerialize' => ['array'], 'Couchbase\zlibCompress' => ['string', 'data'=>'string'], 'Couchbase\zlibDecompress' => ['string', 'data'=>'string'], 'count' => ['0|positive-int', 'var'=>'Countable|array', 'mode='=>'int'], 'count_chars' => ['mixed', 'input'=>'string', 'mode='=>'0|1|2|3|4'], 'Countable::count' => ['0|positive-int'], 'crack_check' => ['bool', 'dictionary'=>'', 'password'=>'string'], 'crack_closedict' => ['bool', 'dictionary='=>'resource'], 'crack_getlastmessage' => ['string'], 'crack_opendict' => ['resource', 'dictionary'=>'string'], 'crash' => [''], 'crc32' => ['int', 'str'=>'string'], 'create_function' => ['string', 'args'=>'string', 'code'=>'string'], 'crypt' => ['non-empty-string', 'str'=>'string', 'salt='=>'string'], 'ctype_alnum' => ['bool', 'c'=>'mixed'], 'ctype_alpha' => ['bool', 'c'=>'mixed'], 'ctype_cntrl' => ['bool', 'c'=>'mixed'], 'ctype_digit' => ['bool', 'c'=>'mixed'], 'ctype_graph' => ['bool', 'c'=>'mixed'], 'ctype_lower' => ['bool', 'c'=>'mixed'], 'ctype_print' => ['bool', 'c'=>'mixed'], 'ctype_punct' => ['bool', 'c'=>'mixed'], 'ctype_space' => ['bool', 'c'=>'mixed'], 'ctype_upper' => ['bool', 'c'=>'mixed'], 'ctype_xdigit' => ['bool', 'c'=>'mixed'], 'cubrid_affected_rows' => ['int', 'req_identifier='=>''], 'cubrid_bind' => ['bool', 'req_identifier'=>'resource', 'bind_param'=>'int', 'bind_value'=>'mixed', 'bind_value_type='=>'string'], 'cubrid_client_encoding' => ['string', 'conn_identifier='=>''], 'cubrid_close' => ['bool', 'conn_identifier='=>''], 'cubrid_close_prepare' => ['bool', 'req_identifier'=>'resource'], 'cubrid_close_request' => ['bool', 'req_identifier'=>'resource'], 'cubrid_col_get' => ['array', 'conn_identifier'=>'resource', 'oid'=>'string', 'attr_name'=>'string'], 'cubrid_col_size' => ['int', 'conn_identifier'=>'resource', 'oid'=>'string', 'attr_name'=>'string'], 'cubrid_column_names' => ['array', 'req_identifier'=>'resource'], 'cubrid_column_types' => ['array', 'req_identifier'=>'resource'], 'cubrid_commit' => ['bool', 'conn_identifier'=>'resource'], 'cubrid_connect' => ['resource', 'host'=>'string', 'port'=>'int', 'dbname'=>'string', 'userid='=>'string', 'passwd='=>'string'], 'cubrid_connect_with_url' => ['resource', 'conn_url'=>'string', 'userid='=>'string', 'passwd='=>'string'], 'cubrid_current_oid' => ['string', 'req_identifier'=>'resource'], 'cubrid_data_seek' => ['bool', 'req_identifier'=>'', 'row_number'=>'int'], 'cubrid_db_name' => ['string', 'result'=>'array', 'index'=>'int'], 'cubrid_db_parameter' => ['array', 'conn_identifier'=>'resource'], 'cubrid_disconnect' => ['bool', 'conn_identifier'=>'resource'], 'cubrid_drop' => ['bool', 'conn_identifier'=>'resource', 'oid'=>'string'], 'cubrid_errno' => ['int', 'conn_identifier='=>''], 'cubrid_error' => ['string', 'connection='=>''], 'cubrid_error_code' => ['int'], 'cubrid_error_code_facility' => ['int'], 'cubrid_error_msg' => ['string'], 'cubrid_execute' => ['bool', 'conn_identifier'=>'', 'sql'=>'string', 'option='=>'int', 'request_identifier='=>''], 'cubrid_fetch' => ['mixed', 'result'=>'resource', 'type='=>'int'], 'cubrid_fetch_array' => ['array', 'result'=>'', 'type='=>'int'], 'cubrid_fetch_assoc' => ['array', 'result'=>''], 'cubrid_fetch_field' => ['object', 'result'=>'', 'field_offset='=>'int'], 'cubrid_fetch_lengths' => ['array', 'result'=>''], 'cubrid_fetch_object' => ['object', 'result'=>'', 'class_name='=>'string', 'params='=>'array'], 'cubrid_fetch_row' => ['array', 'result'=>''], 'cubrid_field_flags' => ['string', 'result'=>'', 'field_offset'=>'int'], 'cubrid_field_len' => ['int', 'result'=>'', 'field_offset'=>'int'], 'cubrid_field_name' => ['string', 'result'=>'', 'field_offset'=>'int'], 'cubrid_field_seek' => ['bool', 'result'=>'', 'field_offset='=>'int'], 'cubrid_field_table' => ['string', 'result'=>'', 'field_offset'=>'int'], 'cubrid_field_type' => ['string', 'result'=>'', 'field_offset'=>'int'], 'cubrid_free_result' => ['bool', 'req_identifier'=>'resource'], 'cubrid_get' => ['mixed', 'conn_identifier'=>'resource', 'oid'=>'string', 'attr='=>'mixed'], 'cubrid_get_autocommit' => ['bool', 'conn_identifier'=>'resource'], 'cubrid_get_charset' => ['string', 'conn_identifier'=>'resource'], 'cubrid_get_class_name' => ['string', 'conn_identifier'=>'resource', 'oid'=>'string'], 'cubrid_get_client_info' => ['string'], 'cubrid_get_db_parameter' => ['array', 'conn_identifier'=>'resource'], 'cubrid_get_query_timeout' => ['int', 'req_identifier'=>'resource'], 'cubrid_get_server_info' => ['string', 'conn_identifier'=>'resource'], 'cubrid_insert_id' => ['string', 'conn_identifier='=>'resource'], 'cubrid_is_instance' => ['int', 'conn_identifier'=>'resource', 'oid'=>'string'], 'cubrid_list_dbs' => ['array', 'conn_identifier'=>''], 'cubrid_load_from_glo' => ['int', 'conn_identifier'=>'', 'oid'=>'string', 'file_name'=>'string'], 'cubrid_lob2_bind' => ['bool', 'req_identifier'=>'resource', 'bind_index'=>'int', 'bind_value'=>'mixed', 'bind_value_type='=>'string'], 'cubrid_lob2_close' => ['bool', 'lob_identifier'=>'resource'], 'cubrid_lob2_export' => ['bool', 'lob_identifier'=>'resource', 'file_name'=>'string'], 'cubrid_lob2_import' => ['bool', 'lob_identifier'=>'resource', 'file_name'=>'string'], 'cubrid_lob2_new' => ['resource', 'conn_identifier='=>'resource', 'type='=>'string'], 'cubrid_lob2_read' => ['string', 'lob_identifier'=>'resource', 'len'=>'int'], 'cubrid_lob2_seek' => ['bool', 'lob_identifier'=>'resource', 'offset'=>'int', 'origin='=>'int'], 'cubrid_lob2_seek64' => ['bool', 'lob_identifier'=>'resource', 'offset'=>'string', 'origin='=>'int'], 'cubrid_lob2_size' => ['int', 'lob_identifier'=>'resource'], 'cubrid_lob2_size64' => ['string', 'lob_identifier'=>'resource'], 'cubrid_lob2_tell' => ['int', 'lob_identifier'=>'resource'], 'cubrid_lob2_tell64' => ['string', 'lob_identifier'=>'resource'], 'cubrid_lob2_write' => ['bool', 'lob_identifier'=>'resource', 'buf'=>'string'], 'cubrid_lob_close' => ['bool', 'lob_identifier_array'=>'array'], 'cubrid_lob_export' => ['bool', 'conn_identifier'=>'resource', 'lob_identifier'=>'resource', 'path_name'=>'string'], 'cubrid_lob_get' => ['array', 'conn_identifier'=>'resource', 'sql'=>'string'], 'cubrid_lob_send' => ['bool', 'conn_identifier'=>'resource', 'lob_identifier'=>'resource'], 'cubrid_lob_size' => ['string', 'lob_identifier'=>'resource'], 'cubrid_lock_read' => ['bool', 'conn_identifier'=>'resource', 'oid'=>'string'], 'cubrid_lock_write' => ['bool', 'conn_identifier'=>'resource', 'oid'=>'string'], 'cubrid_move_cursor' => ['int', 'req_identifier'=>'resource', 'offset'=>'int', 'origin='=>'int'], 'cubrid_new_glo' => ['string', 'conn_identifier'=>'', 'class_name'=>'string', 'file_name'=>'string'], 'cubrid_next_result' => ['bool', 'result'=>'resource'], 'cubrid_num_cols' => ['int', 'req_identifier'=>'resource'], 'cubrid_num_fields' => ['int', 'result'=>''], 'cubrid_num_rows' => ['int', 'req_identifier'=>'resource'], 'cubrid_pconnect' => ['resource', 'host'=>'string', 'port'=>'int', 'dbname'=>'string', 'userid='=>'string', 'passwd='=>'string'], 'cubrid_pconnect_with_url' => ['resource', 'conn_url'=>'string', 'userid='=>'string', 'passwd='=>'string'], 'cubrid_ping' => ['bool', 'conn_identifier='=>''], 'cubrid_prepare' => ['resource', 'conn_identifier'=>'resource', 'prepare_stmt'=>'string', 'option='=>'int'], 'cubrid_put' => ['bool', 'conn_identifier'=>'resource', 'oid'=>'string', 'attr='=>'string', 'value='=>'mixed'], 'cubrid_query' => ['resource', 'query'=>'string', 'conn_identifier='=>''], 'cubrid_real_escape_string' => ['string', 'unescaped_string'=>'string', 'conn_identifier='=>''], 'cubrid_result' => ['string', 'result'=>'', 'row'=>'int', 'field='=>''], 'cubrid_rollback' => ['bool', 'conn_identifier'=>'resource'], 'cubrid_save_to_glo' => ['int', 'conn_identifier'=>'', 'oid'=>'string', 'file_name'=>'string'], 'cubrid_schema' => ['array', 'conn_identifier'=>'resource', 'schema_type'=>'int', 'class_name='=>'string', 'attr_name='=>'string'], 'cubrid_send_glo' => ['int', 'conn_identifier'=>'', 'oid'=>'string'], 'cubrid_seq_drop' => ['bool', 'conn_identifier'=>'resource', 'oid'=>'string', 'attr_name'=>'string', 'index'=>'int'], 'cubrid_seq_insert' => ['bool', 'conn_identifier'=>'resource', 'oid'=>'string', 'attr_name'=>'string', 'index'=>'int', 'seq_element'=>'string'], 'cubrid_seq_put' => ['bool', 'conn_identifier'=>'resource', 'oid'=>'string', 'attr_name'=>'string', 'index'=>'int', 'seq_element'=>'string'], 'cubrid_set_add' => ['bool', 'conn_identifier'=>'resource', 'oid'=>'string', 'attr_name'=>'string', 'set_element'=>'string'], 'cubrid_set_autocommit' => ['bool', 'conn_identifier'=>'resource', 'mode'=>'bool'], 'cubrid_set_db_parameter' => ['bool', 'conn_identifier'=>'resource', 'param_type'=>'int', 'param_value'=>'int'], 'cubrid_set_drop' => ['bool', 'conn_identifier'=>'resource', 'oid'=>'string', 'attr_name'=>'string', 'set_element'=>'string'], 'cubrid_set_query_timeout' => ['bool', 'req_identifier'=>'resource', 'timeout'=>'int'], 'cubrid_unbuffered_query' => ['resource', 'query'=>'string', 'conn_identifier='=>''], 'cubrid_version' => ['string'], 'curl_close' => ['void', 'ch'=>'resource'], 'curl_copy_handle' => ['resource|false', 'ch'=>'resource'], 'curl_errno' => ['int', 'ch'=>'resource'], 'curl_error' => ['string', 'ch'=>'resource'], 'curl_escape' => ['string|false', 'ch'=>'resource', 'str'=>'string'], 'curl_exec' => ['bool|string', 'ch'=>'resource'], 'curl_file_create' => ['CURLFile', 'filename'=>'string', 'mimetype='=>'string', 'postfilename='=>'string'], 'curl_getinfo' => ['mixed', 'ch'=>'resource', 'option='=>'int'], 'curl_init' => ['__benevolent', 'url='=>'string'], 'curl_multi_add_handle' => ['int', 'mh'=>'resource', 'ch'=>'resource'], 'curl_multi_close' => ['void', 'mh'=>'resource'], 'curl_multi_errno' => ['int', 'mh'=>'resource'], 'curl_multi_exec' => ['int', 'mh'=>'resource', '&w_still_running'=>'int'], 'curl_multi_getcontent' => ['string|null', 'ch'=>'resource'], 'curl_multi_info_read' => ['array|false', 'mh'=>'resource', '&w_msgs_in_queue='=>'int'], 'curl_multi_init' => ['resource'], 'curl_multi_remove_handle' => ['int', 'mh'=>'resource', 'ch'=>'resource'], 'curl_multi_select' => ['int', 'mh'=>'resource', 'timeout='=>'float'], 'curl_multi_setopt' => ['bool', 'mh'=>'resource', 'option'=>'int', 'value'=>'mixed'], 'curl_multi_strerror' => ['string', 'code'=>'int'], 'curl_pause' => ['int', 'ch'=>'resource', 'bitmask'=>'int'], 'curl_reset' => ['void', 'ch'=>'resource'], 'curl_setopt' => ['bool', 'ch'=>'resource', 'option'=>'int', 'value'=>'mixed'], 'curl_setopt_array' => ['bool', 'ch'=>'resource', 'options'=>'array'], 'curl_share_close' => ['void', 'sh'=>'resource'], 'curl_share_errno' => ['int', 'sh'=>'resource'], 'curl_share_init' => ['resource'], 'curl_share_setopt' => ['bool', 'sh'=>'resource', 'option'=>'int', 'value'=>'mixed'], 'curl_share_strerror' => ['string', 'code'=>'int'], 'curl_strerror' => ['string', 'code'=>'int'], 'curl_unescape' => ['string|false', 'ch'=>'resource', 'str'=>'string'], 'curl_version' => ['array|false', 'version='=>'int'], 'CURLFile::__construct' => ['void', 'filename'=>'string', 'mimetype='=>'string', 'postfilename='=>'string'], 'CURLFile::__wakeup' => ['void'], 'CURLFile::getFilename' => ['string'], 'CURLFile::getMimeType' => ['string'], 'CURLFile::getPostFilename' => ['string'], 'CURLFile::setMimeType' => ['void', 'mime'=>'string'], 'CURLFile::setPostFilename' => ['void', 'name'=>'string'], 'current' => ['mixed', 'array_arg'=>'array|object'], 'cyrus_authenticate' => ['void', 'connection'=>'resource', 'mechlist='=>'string', 'service='=>'string', 'user='=>'string', 'minssf='=>'int', 'maxssf='=>'int', 'authname='=>'string', 'password='=>'string'], 'cyrus_bind' => ['bool', 'connection'=>'resource', 'callbacks'=>'array'], 'cyrus_close' => ['bool', 'connection'=>'resource'], 'cyrus_connect' => ['resource', 'host='=>'string', 'port='=>'string', 'flags='=>'int'], 'cyrus_query' => ['array', 'connection'=>'resource', 'query'=>'string'], 'cyrus_unbind' => ['bool', 'connection'=>'resource', 'trigger_name'=>'string'], 'date' => ['string', 'format'=>'string', 'timestamp='=>'int'], 'date_add' => ['DateTime|false', 'object'=>'', 'interval'=>''], 'date_create' => ['DateTime|false', 'time='=>'string|null', 'timezone='=>'?DateTimeZone'], 'date_create_from_format' => ['DateTime|false', 'format'=>'string', 'time'=>'string', 'timezone='=>'?DateTimeZone'], 'date_create_immutable' => ['DateTimeImmutable|false', 'time='=>'string', 'timezone='=>'?DateTimeZone'], 'date_create_immutable_from_format' => ['DateTimeImmutable|false', 'format'=>'string', 'time'=>'string', 'timezone='=>'?DateTimeZone'], 'date_date_set' => ['DateTime|false', 'object'=>'', 'year'=>'', 'month'=>'', 'day'=>''], 'date_default_timezone_get' => ['string'], 'date_default_timezone_set' => ['bool', 'timezone_identifier'=>'string'], 'date_diff' => ['DateInterval', 'obj1'=>'DateTimeInterface', 'obj2'=>'DateTimeInterface', 'absolute='=>'bool'], 'date_format' => ['string', 'obj'=>'DateTimeInterface', 'format'=>'string'], 'date_get_last_errors' => ['array{warning_count: 0|positive-int, warnings: list, error_count: 0|positive-int, errors: list}|false'], 'date_interval_create_from_date_string' => ['DateInterval|false', 'time'=>'string'], 'date_interval_format' => ['string', 'object'=>'DateInterval', 'format'=>'string'], 'date_isodate_set' => ['DateTime|false', 'object'=>'DateTime', 'year'=>'int', 'week'=>'int', 'day='=>'int|mixed'], 'date_modify' => ['DateTime|false', 'object'=>'DateTime', 'modify'=>'string'], 'date_offset_get' => ['int', 'obj'=>'DateTimeInterface'], 'date_parse' => ['array{year: int|false, month: int|false, day: int|false, hour: int|false, minute: int|false, second: int|false, fraction: float|false, warning_count: int, warnings: string[], error_count: int, errors: string[], is_localtime: bool, zone_type?: int|bool, zone?: int|bool, is_dst?: bool, tz_abbr?: string, tz_id?: string, relative?: array{year: int, month: int, day: int, hour: int, minute: int, second: int, weekday?: int, weekdays?: int, first_day_of_month?: bool, last_day_of_month?: bool}}', 'date'=>'string'], 'date_parse_from_format' => ['array{year: int|false, month: int|false, day: int|false, hour: int|false, minute: int|false, second: int|false, fraction: float|false, warning_count: int, warnings: string[], error_count: int, errors: string[], is_localtime: bool, zone_type?: int|bool, zone?: int|bool, is_dst?: bool, tz_abbr?: string, tz_id?: string, relative?: array{year: int, month: int, day: int, hour: int, minute: int, second: int, weekday?: int, weekdays?: int, first_day_of_month?: bool, last_day_of_month?: bool}}', 'format'=>'string', 'date'=>'string'], 'date_sub' => ['DateTime|false', 'object'=>'DateTime', 'interval'=>'DateInterval'], 'date_sun_info' => ['__benevolent', 'time'=>'int', 'latitude'=>'float', 'longitude'=>'float'], 'date_sunrise' => ['mixed', 'time'=>'int', 'format='=>'int', 'latitude='=>'float', 'longitude='=>'float', 'zenith='=>'float', 'gmt_offset='=>'float'], 'date_sunset' => ['mixed', 'time'=>'int', 'format='=>'int', 'latitude='=>'float', 'longitude='=>'float', 'zenith='=>'float', 'gmt_offset='=>'float'], 'date_time_set' => ['DateTime|false', 'object'=>'', 'hour'=>'', 'minute'=>'', 'second='=>'', 'microseconds='=>''], 'date_timestamp_get' => ['int', 'obj'=>'DateTimeInterface'], 'date_timestamp_set' => ['DateTime|false', 'object'=>'DateTime', 'unixtimestamp'=>'int'], 'date_timezone_get' => ['DateTimeZone|false', 'obj'=>'DateTimeInterface'], 'date_timezone_set' => ['DateTime|false', 'object'=>'DateTime', 'timezone'=>'DateTimeZone'], 'datefmt_create' => ['IntlDateFormatter|false', 'locale'=>'?string', 'datetype'=>'?int', 'timetype'=>'?int', 'timezone='=>'string|DateTimeZone|IntlTimeZone|null', 'calendar='=>'int|IntlCalendar|null', 'pattern='=>'string'], 'datefmt_format' => ['string|false', 'fmt'=>'IntlDateFormatter', 'value'=>'DateTime|IntlCalendar|array|int'], 'datefmt_format_object' => ['string|false', 'object'=>'object', 'format='=>'mixed', 'locale='=>'string'], 'datefmt_get_calendar' => ['int|false', 'fmt'=>'IntlDateFormatter'], 'datefmt_get_calendar_object' => ['IntlCalendar|false|null', 'fmt'=>'IntlDateFormatter'], 'datefmt_get_datetype' => ['int|false', 'fmt'=>'IntlDateFormatter'], 'datefmt_get_error_code' => ['int', 'fmt'=>'IntlDateFormatter'], 'datefmt_get_error_message' => ['string', 'fmt'=>'IntlDateFormatter'], 'datefmt_get_locale' => ['string|false', 'fmt'=>'IntlDateFormatter', 'which='=>'int'], 'datefmt_get_pattern' => ['string|false', 'fmt'=>'IntlDateFormatter'], 'datefmt_get_timetype' => ['int|false', 'fmt'=>'IntlDateFormatter'], 'datefmt_get_timezone' => ['IntlTimeZone|false'], 'datefmt_get_timezone_id' => ['string|false', 'fmt'=>'IntlDateFormatter'], 'datefmt_is_lenient' => ['bool', 'fmt'=>'IntlDateFormatter'], 'datefmt_localtime' => ['array|false', 'fmt'=>'IntlDateFormatter', 'text_to_parse='=>'string', '&rw_parse_pos='=>'int'], 'datefmt_parse' => ['int|float|false', 'fmt'=>'IntlDateFormatter', 'text_to_parse='=>'string', '&rw_parse_pos='=>'int'], 'datefmt_set_calendar' => ['bool', 'fmt'=>'IntlDateFormatter', 'which'=>'int'], 'datefmt_set_lenient' => ['void', 'fmt'=>'IntlDateFormatter', 'lenient'=>'bool'], 'datefmt_set_pattern' => ['bool', 'fmt'=>'IntlDateFormatter', 'pattern'=>'string'], 'datefmt_set_timezone' => ['bool', 'zone'=>'mixed'], 'datefmt_set_timezone_id' => ['bool', 'fmt'=>'IntlDateFormatter', 'zone'=>'string'], 'DateInterval::__construct' => ['void', 'spec'=>'string'], 'DateInterval::__set_state' => ['DateInterval', 'array'=>'array'], 'DateInterval::__wakeup' => ['void'], 'DateInterval::createFromDateString' => ['DateInterval|false', 'time'=>'string'], 'DateInterval::format' => ['string', 'format'=>'string'], 'DatePeriod::__construct' => ['void', 'start'=>'DateTimeInterface', 'interval'=>'DateInterval', 'recur'=>'int', 'options='=>'int'], 'DatePeriod::__construct\'1' => ['void', 'start'=>'DateTimeInterface', 'interval'=>'DateInterval', 'end'=>'DateTimeInterface', 'options='=>'int'], 'DatePeriod::__construct\'2' => ['void', 'iso'=>'string', 'options='=>'int'], 'DatePeriod::__wakeup' => ['void'], 'DatePeriod::getDateInterval' => ['DateInterval'], 'DatePeriod::getEndDate' => ['?DateTimeInterface'], 'DatePeriod::getStartDate' => ['DateTimeInterface'], 'DateTime::__construct' => ['void', 'time='=>'string', 'timezone='=>'?DateTimeZone'], 'DateTime::__set_state' => ['static', 'array'=>'array'], 'DateTime::__wakeup' => ['void'], 'DateTime::add' => ['static', 'interval'=>'DateInterval'], 'DateTime::createFromFormat' => ['static|false', 'format'=>'string', 'time'=>'string', 'timezone='=>'DateTimeZone|null'], 'DateTime::createFromImmutable' => ['static', 'object'=>'DateTimeImmutable'], 'DateTime::diff' => ['DateInterval', 'datetime2'=>'DateTimeInterface', 'absolute='=>'bool'], 'DateTime::format' => ['string', 'format'=>'string'], 'DateTime::getLastErrors' => ['array{warning_count: 0|positive-int, warnings: list, error_count: 0|positive-int, errors: list}|false'], 'DateTime::getOffset' => ['int'], 'DateTime::getTimestamp' => ['int'], 'DateTime::getTimezone' => ['DateTimeZone'], 'DateTime::modify' => ['__benevolent', 'modify'=>'string'], 'DateTime::setDate' => ['static', 'year'=>'int', 'month'=>'int', 'day'=>'int'], 'DateTime::setISODate' => ['static', 'year'=>'int', 'week'=>'int', 'day='=>'int'], 'DateTime::setTime' => ['static', 'hour'=>'int', 'minute'=>'int', 'second='=>'int', 'microseconds='=>'int'], 'DateTime::setTimestamp' => ['static', 'unixtimestamp'=>'int'], 'DateTime::setTimezone' => ['static', 'timezone'=>'DateTimeZone'], 'DateTime::sub' => ['static', 'interval'=>'DateInterval'], 'DateTimeImmutable::__construct' => ['void', 'time='=>'string', 'timezone='=>'?DateTimeZone'], 'DateTimeImmutable::__set_state' => ['static', 'array'=>'array'], 'DateTimeImmutable::__wakeup' => ['void'], 'DateTimeImmutable::add' => ['static', 'interval'=>'DateInterval'], 'DateTimeImmutable::createFromFormat' => ['static|false', 'format'=>'string', 'time'=>'string', 'timezone='=>'DateTimeZone|null'], 'DateTimeImmutable::createFromMutable' => ['static', 'datetime'=>'DateTime'], 'DateTimeImmutable::diff' => ['DateInterval', 'datetime2'=>'DateTimeInterface', 'absolute='=>'bool'], 'DateTimeImmutable::format' => ['string', 'format'=>'string'], 'DateTimeImmutable::getLastErrors' => ['array{warning_count: 0|positive-int, warnings: list, error_count: 0|positive-int, errors: list}|false'], 'DateTimeImmutable::getOffset' => ['int'], 'DateTimeImmutable::getTimestamp' => ['int'], 'DateTimeImmutable::getTimezone' => ['DateTimeZone'], 'DateTimeImmutable::modify' => ['__benevolent', 'modify'=>'string'], 'DateTimeImmutable::setDate' => ['static', 'year'=>'int', 'month'=>'int', 'day'=>'int'], 'DateTimeImmutable::setISODate' => ['static', 'year'=>'int', 'week'=>'int', 'day='=>'int'], 'DateTimeImmutable::setTime' => ['static', 'hour'=>'int', 'minute'=>'int', 'second='=>'int', 'microseconds='=>'int'], 'DateTimeImmutable::setTimestamp' => ['static', 'unixtimestamp'=>'int'], 'DateTimeImmutable::setTimezone' => ['static', 'timezone'=>'DateTimeZone'], 'DateTimeImmutable::sub' => ['static', 'interval'=>'DateInterval'], 'DateTimeInterface::diff' => ['DateInterval', 'datetime2'=>'DateTimeInterface', 'absolute='=>'bool'], 'DateTimeInterface::format' => ['string', 'format'=>'string'], 'DateTimeInterface::getOffset' => ['int'], 'DateTimeInterface::getTimestamp' => ['int'], 'DateTimeInterface::getTimezone' => ['DateTimeZone'], 'DateTimeZone::__construct' => ['void', 'timezone'=>'string'], 'DateTimeZone::__set_state' => ['DateTimeZone', 'array'=>'array'], 'DateTimeZone::__wakeup' => ['void'], 'DateTimeZone::getLocation' => ['array{country_code: string, latitude: float, longitude: float, comments: string}|false'], 'DateTimeZone::getName' => ['string'], 'DateTimeZone::getOffset' => ['int', 'datetime'=>'DateTimeInterface'], 'DateTimeZone::getTransitions' => ['list', 'timestamp_begin='=>'int', 'timestamp_end='=>'int'], 'DateTimeZone::listAbbreviations' => ['array>'], 'DateTimeZone::listIdentifiers' => ['list', 'what='=>'int', 'country='=>'string'], 'db2_autocommit' => ['DB2_AUTOCOMMIT_OFF|DB2_AUTOCOMMIT_ON|bool', 'connection'=>'resource', 'value='=>'DB2_AUTOCOMMIT_OFF|DB2_AUTOCOMMIT_ON'], 'db2_bind_param' => ['bool', 'stmt'=>'resource', 'parameter_number'=>'int', 'variable_name'=>'string', 'parameter_type='=>'int', 'data_type='=>'int', 'precision='=>'int', 'scale='=>'int'], 'db2_client_info' => ['stdClass|false', 'connection'=>'resource'], 'db2_close' => ['bool', 'connection'=>'resource'], 'db2_column_privileges' => ['resource|false', 'connection'=>'resource', 'qualifier='=>'string', 'schema='=>'string', 'table_name='=>'string', 'column_name='=>'string'], 'db2_columns' => ['resource|false', 'connection'=>'resource', 'qualifier='=>'string', 'schema='=>'string', 'table_name='=>'string', 'column_name='=>'string'], 'db2_commit' => ['bool', 'connection'=>'resource'], 'db2_conn_error' => ['string', 'connection='=>'resource'], 'db2_conn_errormsg' => ['string', 'connection='=>'resource'], 'db2_connect' => ['resource|false', 'database'=>'string', 'username'=>'string', 'password'=>'string', 'options='=>'array'], 'db2_cursor_type' => ['int', 'stmt'=>'resource'], 'db2_escape_string' => ['string', 'string_literal'=>'string'], 'db2_exec' => ['resource|false', 'connection'=>'resource', 'statement'=>'string', 'options='=>'array'], 'db2_execute' => ['bool', 'stmt'=>'resource', 'parameters='=>'array'], 'db2_fetch_array' => ['non-empty-list|false', 'stmt'=>'resource', 'row_number='=>'int'], 'db2_fetch_assoc' => ['non-empty-array|false', 'stmt'=>'resource', 'row_number='=>'int'], 'db2_fetch_both' => ['array|false', 'stmt'=>'resource', 'row_number='=>'int'], 'db2_fetch_object' => ['stdClass|false', 'stmt'=>'resource', 'row_number='=>'int'], 'db2_fetch_row' => ['bool', 'stmt'=>'resource', 'row_number='=>'int'], 'db2_field_display_size' => ['int|false', 'stmt'=>'resource', 'column'=>'mixed'], 'db2_field_name' => ['string|false', 'stmt'=>'resource', 'column'=>'mixed'], 'db2_field_num' => ['int|false', 'stmt'=>'resource', 'column'=>'mixed'], 'db2_field_precision' => ['int|false', 'stmt'=>'resource', 'column'=>'mixed'], 'db2_field_scale' => ['int|false', 'stmt'=>'resource', 'column'=>'mixed'], 'db2_field_type' => ['string|false', 'stmt'=>'resource', 'column'=>'mixed'], 'db2_field_width' => ['int|false', 'stmt'=>'resource', 'column'=>'mixed'], 'db2_foreign_keys' => ['resource|false', 'connection'=>'resource', 'qualifier'=>'string', 'schema'=>'string', 'table_name'=>'string'], 'db2_free_result' => ['bool', 'stmt'=>'resource'], 'db2_free_stmt' => ['bool', 'stmt'=>'resource'], 'db2_get_option' => ['string|false', 'resource'=>'resource', 'option'=>'string'], 'db2_last_insert_id' => ['string|null', 'resource'=>'resource'], 'db2_lob_read' => ['string|false', 'stmt'=>'resource', 'colnum'=>'int', 'length'=>'int'], 'db2_next_result' => ['resource|false', 'stmt'=>'resource'], 'db2_num_fields' => ['0|positive-int|false', 'stmt'=>'resource'], 'db2_num_rows' => ['0|positive-int|false', 'stmt'=>'resource'], 'db2_pclose' => ['bool', 'resource'=>'resource'], 'db2_pconnect' => ['resource|false', 'database'=>'string', 'username'=>'string', 'password'=>'string', 'options='=>'array'], 'db2_prepare' => ['resource|false', 'connection'=>'resource', 'statement'=>'string', 'options='=>'array'], 'db2_primary_keys' => ['resource|false', 'connection'=>'resource', 'qualifier'=>'string', 'schema'=>'string', 'table_name'=>'string'], 'db2_primarykeys' => [''], 'db2_procedure_columns' => ['resource|false', 'connection'=>'resource', 'qualifier'=>'string', 'schema'=>'string', 'procedure'=>'string', 'parameter'=>'string'], 'db2_procedurecolumns' => [''], 'db2_procedures' => ['resource|false', 'connection'=>'resource', 'qualifier'=>'string', 'schema'=>'string', 'procedure'=>'string'], 'db2_result' => ['mixed', 'stmt'=>'resource', 'column'=>'mixed'], 'db2_rollback' => ['bool', 'connection'=>'resource'], 'db2_server_info' => ['stdClass|false', 'connection'=>'resource'], 'db2_set_option' => ['bool', 'resource'=>'resource', 'options'=>'array', 'type'=>'int'], 'db2_setoption' => [''], 'db2_special_columns' => ['resource|false', 'connection'=>'resource', 'qualifier'=>'string', 'schema'=>'string', 'table_name'=>'string', 'scope'=>'int'], 'db2_specialcolumns' => [''], 'db2_statistics' => ['resource|false', 'connection'=>'resource', 'qualifier'=>'string', 'schema'=>'string', 'table_name'=>'string', 'unique'=>'bool'], 'db2_stmt_error' => ['string', 'stmt='=>'resource'], 'db2_stmt_errormsg' => ['string', 'stmt='=>'resource'], 'db2_table_privileges' => ['resource|false', 'connection'=>'resource', 'qualifier='=>'string', 'schema='=>'string', 'table_name='=>'string'], 'db2_tableprivileges' => [''], 'db2_tables' => ['resource|false', 'connection'=>'resource', 'qualifier='=>'string', 'schema='=>'string', 'table_name='=>'string', 'table_type='=>'string'], 'dba_close' => ['void', 'handle'=>'resource'], 'dba_delete' => ['bool', 'key'=>'string', 'handle'=>'resource'], 'dba_exists' => ['bool', 'key'=>'string', 'handle'=>'resource'], 'dba_fetch' => ['string|false', 'key'=>'string', 'skip'=>'int', 'handle'=>'resource'], 'dba_fetch\'1' => ['string|false', 'key'=>'string', 'handle'=>'resource'], 'dba_firstkey' => ['string|false', 'handle'=>'resource'], 'dba_handlers' => ['array', 'full_info='=>'bool'], 'dba_insert' => ['bool', 'key'=>'string', 'value'=>'string', 'handle'=>'resource'], 'dba_key_split' => ['array|false', 'key'=>'string'], 'dba_list' => ['array'], 'dba_nextkey' => ['string|false', 'handle'=>'resource'], 'dba_open' => ['resource|false', 'path'=>'string', 'mode'=>'string', 'handlername='=>'string', '...args='=>'string'], 'dba_optimize' => ['bool', 'handle'=>'resource'], 'dba_popen' => ['resource|false', 'path'=>'string', 'mode'=>'string', 'handlername='=>'string', '...args='=>'string'], 'dba_replace' => ['bool', 'key'=>'string', 'value'=>'string', 'handle'=>'resource'], 'dba_sync' => ['bool', 'handle'=>'resource'], 'dbase_add_record' => ['bool', 'dbase_identifier'=>'resource', 'record'=>'array'], 'dbase_close' => ['bool', 'dbase_identifier'=>'resource'], 'dbase_create' => ['resource|false', 'filename'=>'string', 'fields'=>'array'], 'dbase_delete_record' => ['bool', 'dbase_identifier'=>'resource', 'record_number'=>'int'], 'dbase_get_header_info' => ['array', 'dbase_identifier'=>'resource'], 'dbase_get_record' => ['array', 'dbase_identifier'=>'resource', 'record_number'=>'int'], 'dbase_get_record_with_names' => ['array', 'dbase_identifier'=>'resource', 'record_number'=>'int'], 'dbase_numfields' => ['int', 'dbase_identifier'=>'resource'], 'dbase_numrecords' => ['int', 'dbase_identifier'=>'resource'], 'dbase_open' => ['resource|false', 'filename'=>'string', 'mode'=>'int'], 'dbase_pack' => ['bool', 'dbase_identifier'=>'resource'], 'dbase_replace_record' => ['bool', 'dbase_identifier'=>'resource', 'record'=>'array', 'record_number'=>'int'], 'dbplus_add' => ['int', 'relation'=>'resource', 'tuple'=>'array'], 'dbplus_aql' => ['resource', 'query'=>'string', 'server='=>'string', 'dbpath='=>'string'], 'dbplus_chdir' => ['string', 'newdir='=>'string'], 'dbplus_close' => ['mixed', 'relation'=>'resource'], 'dbplus_curr' => ['int', 'relation'=>'resource', 'tuple'=>'array'], 'dbplus_errcode' => ['string', 'errno='=>'int'], 'dbplus_errno' => ['int'], 'dbplus_find' => ['int', 'relation'=>'resource', 'constraints'=>'array', 'tuple'=>'mixed'], 'dbplus_first' => ['int', 'relation'=>'resource', 'tuple'=>'array'], 'dbplus_flush' => ['int', 'relation'=>'resource'], 'dbplus_freealllocks' => ['int'], 'dbplus_freelock' => ['int', 'relation'=>'resource', 'tuple'=>'string'], 'dbplus_freerlocks' => ['int', 'relation'=>'resource'], 'dbplus_getlock' => ['int', 'relation'=>'resource', 'tuple'=>'string'], 'dbplus_getunique' => ['int', 'relation'=>'resource', 'uniqueid'=>'int'], 'dbplus_info' => ['int', 'relation'=>'resource', 'key'=>'string', 'result'=>'array'], 'dbplus_last' => ['int', 'relation'=>'resource', 'tuple'=>'array'], 'dbplus_lockrel' => ['int', 'relation'=>'resource'], 'dbplus_next' => ['int', 'relation'=>'resource', 'tuple'=>'array'], 'dbplus_open' => ['resource', 'name'=>'string'], 'dbplus_prev' => ['int', 'relation'=>'resource', 'tuple'=>'array'], 'dbplus_rchperm' => ['int', 'relation'=>'resource', 'mask'=>'int', 'user'=>'string', 'group'=>'string'], 'dbplus_rcreate' => ['resource', 'name'=>'string', 'domlist'=>'mixed', 'overwrite='=>'bool'], 'dbplus_rcrtexact' => ['mixed', 'name'=>'string', 'relation'=>'resource', 'overwrite='=>'bool'], 'dbplus_rcrtlike' => ['mixed', 'name'=>'string', 'relation'=>'resource', 'overwrite='=>'int'], 'dbplus_resolve' => ['array', 'relation_name'=>'string'], 'dbplus_restorepos' => ['int', 'relation'=>'resource', 'tuple'=>'array'], 'dbplus_rkeys' => ['mixed', 'relation'=>'resource', 'domlist'=>'mixed'], 'dbplus_ropen' => ['resource', 'name'=>'string'], 'dbplus_rquery' => ['resource', 'query'=>'string', 'dbpath='=>'string'], 'dbplus_rrename' => ['int', 'relation'=>'resource', 'name'=>'string'], 'dbplus_rsecindex' => ['mixed', 'relation'=>'resource', 'domlist'=>'mixed', 'type'=>'int'], 'dbplus_runlink' => ['int', 'relation'=>'resource'], 'dbplus_rzap' => ['int', 'relation'=>'resource'], 'dbplus_savepos' => ['int', 'relation'=>'resource'], 'dbplus_setindex' => ['int', 'relation'=>'resource', 'idx_name'=>'string'], 'dbplus_setindexbynumber' => ['int', 'relation'=>'resource', 'idx_number'=>'int'], 'dbplus_sql' => ['resource', 'query'=>'string', 'server='=>'string', 'dbpath='=>'string'], 'dbplus_tcl' => ['string', 'sid'=>'int', 'script'=>'string'], 'dbplus_tremove' => ['int', 'relation'=>'resource', 'tuple'=>'array', 'current='=>'array'], 'dbplus_undo' => ['int', 'relation'=>'resource'], 'dbplus_undoprepare' => ['int', 'relation'=>'resource'], 'dbplus_unlockrel' => ['int', 'relation'=>'resource'], 'dbplus_unselect' => ['int', 'relation'=>'resource'], 'dbplus_update' => ['int', 'relation'=>'resource', 'old'=>'array', 'new'=>'array'], 'dbplus_xlockrel' => ['int', 'relation'=>'resource'], 'dbplus_xunlockrel' => ['int', 'relation'=>'resource'], 'dbx_close' => ['int', 'link_identifier'=>'object'], 'dbx_compare' => ['int', 'row_a'=>'array', 'row_b'=>'array', 'column_key'=>'string', 'flags='=>'int'], 'dbx_connect' => ['object', 'module'=>'mixed', 'host'=>'string', 'database'=>'string', 'username'=>'string', 'password'=>'string', 'persistent='=>'int'], 'dbx_error' => ['string', 'link_identifier'=>'object'], 'dbx_escape_string' => ['string', 'link_identifier'=>'object', 'text'=>'string'], 'dbx_fetch_row' => ['mixed', 'result_identifier'=>'object'], 'dbx_query' => ['mixed', 'link_identifier'=>'object', 'sql_statement'=>'string', 'flags='=>'int'], 'dbx_sort' => ['bool', 'result'=>'object', 'user_compare_function'=>'string'], 'dcgettext' => ['string', 'domain_name'=>'string', 'msgid'=>'string', 'category'=>'int'], 'dcngettext' => ['string', 'domain'=>'string', 'msgid1'=>'string', 'msgid2'=>'string', 'n'=>'int', 'category'=>'int'], 'deaggregate' => ['', 'object'=>'object', 'class_name='=>'string'], 'debug_backtrace' => ['list\',args?:mixed[],object?:object}>', 'options='=>'int|bool', 'limit='=>'int'], 'debug_print_backtrace' => ['void', 'options='=>'int|bool', 'limit='=>'int'], 'debug_zval_dump' => ['void', '...var'=>'mixed'], 'debugger_connect' => [''], 'debugger_connector_pid' => [''], 'debugger_get_server_start_time' => [''], 'debugger_print' => [''], 'debugger_start_debug' => [''], 'decbin' => ['string', 'decimal_number'=>'int'], 'dechex' => ['string', 'num'=>'int'], 'decoct' => ['string', 'decimal_number'=>'int'], 'define' => ['bool', 'constant_name'=>'string', 'value'=>'mixed', 'case_insensitive='=>'bool'], 'define_syslog_variables' => ['void'], 'defined' => ['bool', 'name'=>'string'], 'deflate_add' => ['string|false', 'context'=>'resource', 'data'=>'string', 'flush_mode='=>'int'], 'deflate_init' => ['resource|false', 'encoding'=>'int', 'options='=>'array'], 'deg2rad' => ['float', 'number'=>'float'], 'dgettext' => ['string', 'domain_name'=>'string', 'msgid'=>'string'], 'dio_close' => ['void', 'fd'=>'resource'], 'dio_fcntl' => ['mixed', 'fd'=>'resource', 'cmd'=>'int', 'args='=>'mixed'], 'dio_open' => ['resource|false', 'filename'=>'string', 'flags'=>'int', 'mode='=>'int'], 'dio_read' => ['string', 'fd'=>'resource', 'len='=>'int'], 'dio_seek' => ['int', 'fd'=>'resource', 'pos'=>'int', 'whence='=>'int'], 'dio_stat' => ['array|null', 'fd'=>'resource'], 'dio_tcsetattr' => ['bool', 'fd'=>'resource', 'options'=>'array'], 'dio_truncate' => ['bool', 'fd'=>'resource', 'offset'=>'int'], 'dio_write' => ['int', 'fd'=>'resource', 'data'=>'string', 'len='=>'int'], 'dir' => ['Directory|false', 'directory'=>'string', 'context='=>'resource'], 'Directory::close' => ['void', 'dir_handle='=>'resource'], 'Directory::read' => ['string|false', 'dir_handle='=>'resource'], 'Directory::rewind' => ['void', 'dir_handle='=>'resource'], 'DirectoryIterator::__construct' => ['void', 'path'=>'string'], 'DirectoryIterator::__toString' => ['string'], 'DirectoryIterator::current' => ['DirectoryIterator'], 'DirectoryIterator::getATime' => ['int'], 'DirectoryIterator::getBasename' => ['string', 'suffix='=>'string'], 'DirectoryIterator::getChildren' => ['RecursiveDirectoryIterator'], 'DirectoryIterator::getCTime' => ['int'], 'DirectoryIterator::getExtension' => ['string'], 'DirectoryIterator::getFileInfo' => ['SplFileInfo', 'class_name='=>'string'], 'DirectoryIterator::getFilename' => ['string'], 'DirectoryIterator::getGroup' => ['int'], 'DirectoryIterator::getInode' => ['int'], 'DirectoryIterator::getLinkTarget' => ['string'], 'DirectoryIterator::getMTime' => ['int'], 'DirectoryIterator::getOwner' => ['int'], 'DirectoryIterator::getPath' => ['string'], 'DirectoryIterator::getPathInfo' => ['SplFileInfo', 'class_name='=>'string'], 'DirectoryIterator::getPathname' => ['string'], 'DirectoryIterator::getPerms' => ['int'], 'DirectoryIterator::getRealPath' => ['string'], 'DirectoryIterator::getSize' => ['int'], 'DirectoryIterator::getType' => ['string'], 'DirectoryIterator::isDir' => ['bool'], 'DirectoryIterator::isDot' => ['bool'], 'DirectoryIterator::isExecutable' => ['bool'], 'DirectoryIterator::isFile' => ['bool'], 'DirectoryIterator::isLink' => ['bool'], 'DirectoryIterator::isReadable' => ['bool'], 'DirectoryIterator::isWritable' => ['bool'], 'DirectoryIterator::key' => ['string'], 'DirectoryIterator::next' => ['void'], 'DirectoryIterator::openFile' => ['SplFileObject', 'mode='=>'string', 'use_include_path='=>'bool', 'context='=>'resource'], 'DirectoryIterator::rewind' => ['void'], 'DirectoryIterator::seek' => ['void', 'position'=>'int'], 'DirectoryIterator::setFileClass' => ['void', 'class_name='=>'string'], 'DirectoryIterator::setInfoClass' => ['void', 'class_name='=>'string'], 'DirectoryIterator::valid' => ['bool'], 'dirname' => ['string', 'path'=>'string', 'levels='=>'positive-int'], 'disk_free_space' => ['float|false', 'path'=>'string'], 'disk_total_space' => ['float|false', 'path'=>'string'], 'diskfreespace' => ['float|false', 'path'=>'string'], 'display_disabled_function' => [''], 'dl' => ['bool', 'extension_filename'=>'string'], 'dngettext' => ['string', 'domain'=>'string', 'msgid1'=>'string', 'msgid2'=>'string', 'count'=>'int'], 'dns_check_record' => ['bool', 'host'=>'string', 'type='=>'string'], 'dns_get_mx' => ['bool', 'hostname'=>'string', '&w_mxhosts'=>'array', '&w_weight'=>'array'], 'dns_get_record' => ['list|false', 'hostname'=>'string', 'type='=>'int', '&w_authns='=>'array', '&w_addtl='=>'array', 'raw='=>'bool'], 'dom_document_relaxNG_validate_file' => ['bool', 'filename'=>'string'], 'dom_document_relaxNG_validate_xml' => ['bool', 'source'=>'string'], 'dom_document_schema_validate' => ['bool', 'source'=>'string', 'flags'=>'int'], 'dom_document_schema_validate_file' => ['bool', 'filename'=>'string', 'flags'=>'int'], 'dom_document_xinclude' => ['int', 'options'=>'int'], 'dom_import_simplexml' => ['DOMElement|false', 'node'=>'SimpleXMLElement'], 'dom_xpath_evaluate' => ['', 'expr'=>'string', 'context'=>'DOMNode', 'registernodens'=>'bool'], 'dom_xpath_query' => ['DOMNodeList', 'expr'=>'string', 'context'=>'DOMNode', 'registernodens'=>'bool'], 'dom_xpath_register_ns' => ['bool', 'prefix'=>'string', 'uri'=>'string'], 'dom_xpath_register_php_functions' => [''], 'DomainException::__clone' => ['void'], 'DomainException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?DomainException)'], 'DomainException::__toString' => ['string'], 'DomainException::__wakeup' => ['void'], 'DomainException::getCode' => ['int'], 'DomainException::getFile' => ['string'], 'DomainException::getLine' => ['int'], 'DomainException::getMessage' => ['string'], 'DomainException::getPrevious' => ['Throwable|DomainException|null'], 'DomainException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'DomainException::getTraceAsString' => ['string'], 'DOMAttr::__construct' => ['void', 'name'=>'string', 'value='=>'string'], 'DOMAttr::isId' => ['bool'], 'DomAttribute::name' => ['string'], 'DomAttribute::set_value' => ['bool', 'content'=>'string'], 'DomAttribute::specified' => ['bool'], 'DomAttribute::value' => ['string'], 'DOMCdataSection::__construct' => ['void', 'value'=>'string'], 'DOMCharacterData::appendData' => ['void', 'data'=>'string'], 'DOMCharacterData::deleteData' => ['void', 'offset'=>'int', 'count'=>'int'], 'DOMCharacterData::insertData' => ['void', 'offset'=>'int', 'data'=>'string'], 'DOMCharacterData::replaceData' => ['void', 'offset'=>'int', 'count'=>'int', 'data'=>'string'], 'DOMCharacterData::substringData' => ['string', 'offset'=>'int', 'count'=>'int'], 'DOMComment::__construct' => ['void', 'value='=>'string'], 'DOMDocument::__construct' => ['void', 'version='=>'string', 'encoding='=>'string'], 'DOMDocument::createAttribute' => ['__benevolent', 'name'=>'string'], 'DOMDocument::createAttributeNS' => ['__benevolent', 'namespaceuri'=>'string', 'qualifiedname'=>'string'], 'DOMDocument::createCDATASection' => ['__benevolent', 'data'=>'string'], 'DOMDocument::createComment' => ['DOMComment', 'data'=>'string'], 'DOMDocument::createDocumentFragment' => ['DOMDocumentFragment'], 'DOMDocument::createElement' => ['__benevolent', 'name'=>'string', 'value='=>'string'], 'DOMDocument::createElementNS' => ['__benevolent', 'namespaceuri'=>'string', 'qualifiedname'=>'string', 'value='=>'string'], 'DOMDocument::createEntityReference' => ['__benevolent', 'name'=>'string'], 'DOMDocument::createProcessingInstruction' => ['__benevolent', 'target'=>'string', 'data='=>'string'], 'DOMDocument::createTextNode' => ['DOMText', 'content'=>'string'], 'DOMDocument::getElementById' => ['DOMElement|null', 'elementid'=>'string'], 'DOMDocument::getElementsByTagName' => ['DOMNodeList', 'name'=>'string'], 'DOMDocument::getElementsByTagNameNS' => ['DOMNodeList', 'namespaceuri'=>'string', 'localname'=>'string'], 'DOMDocument::importNode' => ['DOMNode', 'importednode'=>'DOMNode', 'deep='=>'bool'], 'DOMDocument::load' => ['bool', 'filename'=>'string', 'options='=>'int'], 'DOMDocument::loadHTML' => ['bool', 'source'=>'string', 'options='=>'int'], 'DOMDocument::loadHTMLFile' => ['bool', 'filename'=>'string', 'options='=>'int'], 'DOMDocument::loadXML' => ['bool', 'source'=>'string', 'options='=>'int'], 'DOMDocument::normalizeDocument' => ['void'], 'DOMDocument::registerNodeClass' => ['bool', 'baseclass'=>'string', 'extendedclass'=>'string'], 'DOMDocument::relaxNGValidate' => ['bool', 'filename'=>'string'], 'DOMDocument::relaxNGValidateSource' => ['bool', 'source'=>'string'], 'DOMDocument::save' => ['int|false', 'filename'=>'string', 'options='=>'int'], 'DOMDocument::saveHTML' => ['string|false', 'node='=>'?DOMNode'], 'DOMDocument::saveHTMLFile' => ['int|false', 'filename'=>'string'], 'DOMDocument::saveXML' => ['string|false', 'node='=>'?DOMNode', 'options='=>'int'], 'DOMDocument::schemaValidate' => ['bool', 'filename'=>'string', 'flags='=>'int'], 'DOMDocument::schemaValidateSource' => ['bool', 'source'=>'string', 'flags='=>'int'], 'DOMDocument::validate' => ['bool'], 'DOMDocument::xinclude' => ['int', 'options='=>'int'], 'DOMDocumentFragment::__construct' => ['void'], 'DOMDocumentFragment::appendXML' => ['bool', 'data'=>'string'], 'DomDocumentType::entities' => ['array'], 'DomDocumentType::internal_subset' => ['bool'], 'DomDocumentType::name' => ['string'], 'DomDocumentType::notations' => ['array'], 'DomDocumentType::public_id' => ['string'], 'DomDocumentType::system_id' => ['string'], 'DOMElement::__construct' => ['void', 'name'=>'string', 'value='=>'string', 'uri='=>'string'], 'DOMElement::get_attribute' => ['string', 'name'=>'string'], 'DOMElement::get_attribute_node' => ['DomAttribute', 'name'=>'string'], 'DOMElement::get_elements_by_tagname' => ['array', 'name'=>'string'], 'DOMElement::getAttribute' => ['string', 'name'=>'string'], 'DOMElement::getAttributeNode' => ['DOMAttr', 'name'=>'string'], 'DOMElement::getAttributeNodeNS' => ['DOMAttr', 'namespaceuri'=>'string', 'localname'=>'string'], 'DOMElement::getAttributeNS' => ['string', 'namespaceuri'=>'string', 'localname'=>'string'], 'DOMElement::getElementsByTagName' => ['DOMNodeList', 'name'=>'string'], 'DOMElement::getElementsByTagNameNS' => ['DOMNodeList', 'namespaceuri'=>'string', 'localname'=>'string'], 'DOMElement::has_attribute' => ['bool', 'name'=>'string'], 'DOMElement::hasAttribute' => ['bool', 'name'=>'string'], 'DOMElement::hasAttributeNS' => ['bool', 'namespaceuri'=>'string', 'localname'=>'string'], 'DOMElement::remove_attribute' => ['bool', 'name'=>'string'], 'DOMElement::removeAttribute' => ['bool', 'name'=>'string'], 'DOMElement::removeAttributeNode' => ['bool', 'oldnode'=>'DOMAttr'], 'DOMElement::removeAttributeNS' => ['bool', 'namespaceuri'=>'string', 'localname'=>'string'], 'DOMElement::set_attribute' => ['DomAttribute', 'name'=>'string', 'value'=>'string'], 'DOMElement::set_attribute_node' => ['DomNode', 'attr'=>'DOMNode'], 'DOMElement::setAttribute' => ['DOMAttr', 'name'=>'string', 'value'=>'string'], 'DOMElement::setAttributeNode' => ['DOMAttr', 'attr'=>'DOMAttr'], 'DOMElement::setAttributeNodeNS' => ['DOMAttr', 'attr'=>'DOMAttr'], 'DOMElement::setAttributeNS' => ['void', 'namespaceuri'=>'string', 'qualifiedname'=>'string', 'value'=>'string'], 'DOMElement::setIdAttribute' => ['void', 'name'=>'string', 'isid'=>'bool'], 'DOMElement::setIdAttributeNode' => ['void', 'attr'=>'DOMAttr', 'isid'=>'bool'], 'DOMElement::setIdAttributeNS' => ['void', 'namespaceuri'=>'string', 'localname'=>'string', 'isid'=>'bool'], 'DOMElement::tagname' => ['string'], 'DOMEntityReference::__construct' => ['void', 'name'=>'string'], 'DOMImplementation::__construct' => ['void'], 'DOMImplementation::createDocument' => ['DOMDocument', 'namespaceuri='=>'string', 'qualifiedname='=>'string', 'doctype='=>'DOMDocumentType'], 'DOMImplementation::createDocumentType' => ['DOMDocumentType', 'qualifiedname='=>'string', 'publicid='=>'string', 'systemid='=>'string'], 'DOMImplementation::hasFeature' => ['bool', 'feature'=>'string', 'version'=>'string'], 'DOMNamedNodeMap::count' => ['0|positive-int'], 'DOMNamedNodeMap::getNamedItem' => ['?DOMNode', 'name'=>'string'], 'DOMNamedNodeMap::getNamedItemNS' => ['?DOMNode', 'namespaceuri'=>'string', 'localname'=>'string'], 'DOMNamedNodeMap::item' => ['?DOMNode', 'index'=>'int'], 'DomNode::add_namespace' => ['bool', 'uri'=>'string', 'prefix'=>'string'], 'DomNode::append_child' => ['DOMNode', 'newnode'=>'DOMNode'], 'DOMNode::appendChild' => ['DOMNode', 'newnode'=>'DOMNode'], 'DOMNode::C14N' => ['string', 'exclusive='=>'bool', 'with_comments='=>'bool', 'xpath='=>'array', 'ns_prefixes='=>'array'], 'DOMNode::C14NFile' => ['int', 'uri='=>'string', 'exclusive='=>'bool', 'with_comments='=>'bool', 'xpath='=>'array', 'ns_prefixes='=>'array'], 'DOMNode::cloneNode' => ['DOMNode', 'deep='=>'bool'], 'DOMNode::getLineNo' => ['int'], 'DOMNode::getNodePath' => ['?string'], 'DOMNode::hasAttributes' => ['bool'], 'DOMNode::hasChildNodes' => ['bool'], 'DOMNode::insertBefore' => ['DOMNode', 'newnode'=>'DOMNode', 'refnode='=>'DOMNode'], 'DOMNode::isDefaultNamespace' => ['bool', 'namespaceuri'=>'string'], 'DOMNode::isSameNode' => ['bool', 'node'=>'DOMNode'], 'DOMNode::isSupported' => ['bool', 'feature'=>'string', 'version'=>'string'], 'DOMNode::lookupNamespaceURI' => ['?string', 'prefix'=>'?string'], 'DOMNode::lookupPrefix' => ['string', 'namespaceuri'=>'string'], 'DOMNode::normalize' => ['void'], 'DOMNode::removeChild' => ['DOMNode', 'oldnode'=>'DOMNode'], 'DOMNode::replaceChild' => ['DOMNode', 'newnode'=>'DOMNode', 'oldnode'=>'DOMNode'], 'DOMNodeList::count' => ['0|positive-int'], 'DOMNodeList::item' => ['?DOMNode', 'index'=>'int'], 'DOMProcessingInstruction::__construct' => ['void', 'name'=>'string', 'value'=>'string'], 'DomProcessingInstruction::data' => ['string'], 'DomProcessingInstruction::target' => ['string'], 'DOMText::__construct' => ['void', 'value='=>'string'], 'DOMText::isElementContentWhitespace' => ['bool'], 'DOMText::isWhitespaceInElementContent' => ['bool'], 'DOMText::splitText' => ['DOMText|false', 'offset'=>'int'], 'domxml_new_doc' => ['DomDocument', 'version'=>'string'], 'domxml_open_file' => ['DomDocument', 'filename'=>'string', 'mode='=>'int', 'error='=>'array'], 'domxml_open_mem' => ['DomDocument', 'str'=>'string', 'mode='=>'int', 'error='=>'array'], 'domxml_version' => ['string'], 'domxml_xmltree' => ['DomDocument', 'str'=>'string'], 'domxml_xslt_stylesheet' => ['DomXsltStylesheet', 'xsl_buf'=>'string'], 'domxml_xslt_stylesheet_doc' => ['DomXsltStylesheet', 'xsl_doc'=>'DOMDocument'], 'domxml_xslt_stylesheet_file' => ['DomXsltStylesheet', 'xsl_file'=>'string'], 'domxml_xslt_version' => ['int'], 'DOMXPath::__construct' => ['void', 'doc'=>'DOMDocument'], 'DOMXPath::evaluate' => ['mixed', 'expression'=>'string', 'contextnode='=>'?DOMNode', 'registernodens='=>'bool'], 'DOMXPath::query' => ['DOMNodeList|false', 'expression'=>'string', 'contextnode='=>'?DOMNode', 'registernodens='=>'bool'], 'DOMXPath::registerNamespace' => ['bool', 'prefix'=>'string', 'namespaceuri'=>'string'], 'DOMXPath::registerPhpFunctions' => ['void', 'restrict='=>'mixed'], 'DomXsltStylesheet::process' => ['DomDocument', 'xml_doc'=>'DOMDocument', 'xslt_params='=>'array', 'is_xpath_param='=>'bool', 'profile_filename='=>'string'], 'DomXsltStylesheet::result_dump_file' => ['string', 'xmldoc'=>'DOMDocument', 'filename'=>'string'], 'DomXsltStylesheet::result_dump_mem' => ['string', 'xmldoc'=>'DOMDocument'], 'DOTNET::__construct' => ['void', 'assembly_name'=>'string', 'class_name'=>'string', 'codepage='=>'int'], 'dotnet_load' => ['int', 'assembly_name'=>'string', 'datatype_name='=>'string', 'codepage='=>'int'], 'doubleval' => ['float', 'var'=>'scalar|array|resource|null'], 'Ds\Collection::clear' => ['void'], 'Ds\Collection::copy' => ['Ds\Collection'], 'Ds\Collection::isEmpty' => ['bool'], 'Ds\Collection::toArray' => ['array'], 'Ds\Deque::__construct' => ['void', 'values='=>'mixed'], 'Ds\Deque::allocate' => ['void', 'capacity'=>'int'], 'Ds\Deque::apply' => ['void', 'callback'=>'callable'], 'Ds\Deque::capacity' => ['int'], 'Ds\Deque::clear' => ['void'], 'Ds\Deque::contains' => ['bool', '...values='=>'mixed'], 'Ds\Deque::copy' => ['Ds\Deque'], 'Ds\Deque::count' => ['0|positive-int'], 'Ds\Deque::filter' => ['Ds\Deque', 'callback='=>'callable'], 'Ds\Deque::find' => ['mixed', 'value'=>'mixed'], 'Ds\Deque::first' => ['mixed'], 'Ds\Deque::get' => ['void', 'index'=>'int'], 'Ds\Deque::insert' => ['void', 'index'=>'int', '...values='=>'mixed'], 'Ds\Deque::isEmpty' => ['bool'], 'Ds\Deque::join' => ['string', 'glue='=>'string'], 'Ds\Deque::jsonSerialize' => ['array'], 'Ds\Deque::last' => ['mixed'], 'Ds\Deque::map' => ['Ds\Deque', 'callback'=>'callable'], 'Ds\Deque::merge' => ['Ds\Deque', 'values'=>'mixed'], 'Ds\Deque::pop' => ['mixed'], 'Ds\Deque::push' => ['void', '...values='=>'mixed'], 'Ds\Deque::reduce' => ['mixed', 'callback'=>'callable', 'initial='=>'mixed'], 'Ds\Deque::remove' => ['mixed', 'index'=>'int'], 'Ds\Deque::reverse' => ['void'], 'Ds\Deque::reversed' => ['Ds\Deque'], 'Ds\Deque::rotate' => ['void', 'rotations'=>'int'], 'Ds\Deque::set' => ['void', 'index'=>'int', 'value'=>'mixed'], 'Ds\Deque::shift' => ['mixed'], 'Ds\Deque::slice' => ['Ds\Deque', 'index'=>'int', 'length='=>'?int'], 'Ds\Deque::sort' => ['void', 'comparator='=>'callable'], 'Ds\Deque::sorted' => ['Ds\Deque', 'comparator='=>'callable'], 'Ds\Deque::sum' => ['int|float'], 'Ds\Deque::toArray' => ['array'], 'Ds\Deque::unshift' => ['void', '...values='=>'mixed'], 'Ds\Hashable::equals' => ['bool', 'obj'=>'mixed'], 'Ds\Hashable::hash' => ['mixed'], 'Ds\Map::__construct' => ['void', 'values='=>'mixed'], 'Ds\Map::allocate' => ['void', 'capacity'=>'int'], 'Ds\Map::apply' => ['void', 'callback'=>'callable'], 'Ds\Map::capacity' => ['int'], 'Ds\Map::clear' => ['void'], 'Ds\Map::copy' => ['Ds\Map'], 'Ds\Map::count' => ['0|positive-int'], 'Ds\Map::diff' => ['Ds\Map', 'map'=>'Ds\Map'], 'Ds\Map::filter' => ['Ds\Map', 'callback='=>'callable'], 'Ds\Map::first' => ['Ds\Pair'], 'Ds\Map::get' => ['mixed', 'key'=>'mixed', 'default='=>'mixed'], 'Ds\Map::hasKey' => ['bool', 'key'=>'mixed'], 'Ds\Map::hasValue' => ['bool', 'value'=>'mixed'], 'Ds\Map::intersect' => ['Ds\Map', 'map'=>'Ds\Map'], 'Ds\Map::isEmpty' => ['bool'], 'Ds\Map::jsonSerialize' => ['array'], 'Ds\Map::keys' => ['Ds\Set'], 'Ds\Map::ksort' => ['void', 'comparator='=>'callable'], 'Ds\Map::ksorted' => ['Ds\Map', 'comparator='=>'callable'], 'Ds\Map::last' => ['Ds\Pair'], 'Ds\Map::map' => ['Ds\Map', 'callback'=>'callable'], 'Ds\Map::merge' => ['Ds\Map', 'values'=>'mixed'], 'Ds\Map::pairs' => ['Ds\Sequence'], 'Ds\Map::put' => ['void', 'key'=>'mixed', 'value'=>'mixed'], 'Ds\Map::putAll' => ['void', 'values'=>'mixed'], 'Ds\Map::reduce' => ['mixed', 'callback'=>'callable', 'initial='=>'mixed'], 'Ds\Map::remove' => ['mixed', 'key'=>'mixed', 'default='=>'mixed'], 'Ds\Map::reverse' => ['void'], 'Ds\Map::reversed' => ['Ds\Map'], 'Ds\Map::skip' => ['Ds\Pair', 'position'=>'int'], 'Ds\Map::slice' => ['Ds\Map', 'index'=>'int', 'length='=>'?int'], 'Ds\Map::sort' => ['void', 'comparator='=>'callable'], 'Ds\Map::sorted' => ['Ds\Map', 'comparator='=>'callable'], 'Ds\Map::sum' => ['int|float'], 'Ds\Map::toArray' => ['array'], 'Ds\Map::union' => ['Ds\Map', 'map'=>'Ds\Map'], 'Ds\Map::values' => ['Ds\Sequence'], 'Ds\Map::xor' => ['Ds\Map', 'map'=>'Ds\Map'], 'Ds\Pair::__construct' => ['void', 'key='=>'mixed', 'value='=>'mixed'], 'Ds\Pair::copy' => ['Ds\Pair'], 'Ds\Pair::jsonSerialize' => ['array'], 'Ds\Pair::toArray' => ['array'], 'Ds\PriorityQueue::__construct' => ['void'], 'Ds\PriorityQueue::allocate' => ['void', 'capacity'=>'int'], 'Ds\PriorityQueue::capacity' => ['int'], 'Ds\PriorityQueue::clear' => ['void'], 'Ds\PriorityQueue::copy' => ['Ds\PriorityQueue'], 'Ds\PriorityQueue::count' => ['0|positive-int'], 'Ds\PriorityQueue::isEmpty' => ['bool'], 'Ds\PriorityQueue::jsonSerialize' => ['array'], 'Ds\PriorityQueue::peek' => ['mixed'], 'Ds\PriorityQueue::pop' => ['mixed'], 'Ds\PriorityQueue::push' => ['void', 'value'=>'mixed', 'priority'=>'int'], 'Ds\PriorityQueue::toArray' => ['array'], 'Ds\Queue::__construct' => ['void', 'values='=>'mixed'], 'Ds\Queue::allocate' => ['void', 'capacity'=>'int'], 'Ds\Queue::capacity' => ['int'], 'Ds\Queue::clear' => ['void'], 'Ds\Queue::copy' => ['Ds\Queue'], 'Ds\Queue::count' => ['0|positive-int'], 'Ds\Queue::isEmpty' => ['bool'], 'Ds\Queue::jsonSerialize' => ['array'], 'Ds\Queue::peek' => ['mixed'], 'Ds\Queue::pop' => ['mixed'], 'Ds\Queue::push' => ['void', '...values='=>'mixed'], 'Ds\Queue::toArray' => ['array'], 'Ds\Sequence::allocate' => ['void', 'capacity'=>'int'], 'Ds\Sequence::apply' => ['void', 'callback'=>'callable'], 'Ds\Sequence::capacity' => ['int'], 'Ds\Sequence::contains' => ['bool', '...values='=>'mixed'], 'Ds\Sequence::filter' => ['Ds\Sequence', 'callback='=>'callable'], 'Ds\Sequence::find' => ['mixed', 'value'=>'mixed'], 'Ds\Sequence::first' => ['mixed'], 'Ds\Sequence::get' => ['mixed', 'index'=>'int'], 'Ds\Sequence::insert' => ['void', 'index'=>'int', '...values='=>'mixed'], 'Ds\Sequence::join' => ['string', 'glue='=>'string'], 'Ds\Sequence::last' => ['void'], 'Ds\Sequence::map' => ['Ds\Sequence', 'callback'=>'callable'], 'Ds\Sequence::merge' => ['Ds\Sequence', 'values'=>'mixed'], 'Ds\Sequence::pop' => ['mixed'], 'Ds\Sequence::push' => ['void', '...values='=>'mixed'], 'Ds\Sequence::reduce' => ['mixed', 'callback'=>'callable', 'initial='=>'mixed'], 'Ds\Sequence::remove' => ['mixed', 'index'=>'int'], 'Ds\Sequence::reverse' => ['void'], 'Ds\Sequence::reversed' => ['Ds\Sequence'], 'Ds\Sequence::rotate' => ['void', 'rotations'=>'int'], 'Ds\Sequence::set' => ['void', 'index'=>'int', 'value'=>'mixed'], 'Ds\Sequence::shift' => ['mixed'], 'Ds\Sequence::slice' => ['Ds\Sequence', 'index'=>'int', 'length='=>'?int'], 'Ds\Sequence::sort' => ['void', 'comparator='=>'callable'], 'Ds\Sequence::sorted' => ['Ds\Sequence', 'comparator='=>'callable'], 'Ds\Sequence::sum' => ['int|float'], 'Ds\Sequence::unshift' => ['void', '...values='=>'mixed'], 'Ds\Set::__construct' => ['void', 'values='=>'mixed'], 'Ds\Set::add' => ['void', '...values='=>'mixed'], 'Ds\Set::allocate' => ['void', 'capacity'=>'int'], 'Ds\Set::capacity' => ['int'], 'Ds\Set::clear' => ['void'], 'Ds\Set::contains' => ['bool', '...values='=>'mixed'], 'Ds\Set::copy' => ['Ds\Set'], 'Ds\Set::count' => ['0|positive-int'], 'Ds\Set::diff' => ['Ds\Set', 'set'=>'Ds\Set'], 'Ds\Set::filter' => ['Ds\Set', 'callback='=>'callable'], 'Ds\Set::first' => ['mixed'], 'Ds\Set::get' => ['mixed', 'index'=>'int'], 'Ds\Set::intersect' => ['Ds\Set', 'set'=>'Ds\Set'], 'Ds\Set::isEmpty' => ['bool'], 'Ds\Set::join' => ['string', 'glue='=>'string'], 'Ds\Set::jsonSerialize' => ['array'], 'Ds\Set::last' => ['mixed'], 'Ds\Set::map' => ['Ds\Set', 'callback='=>'callable'], 'Ds\Set::merge' => ['Ds\Set', 'values'=>'mixed'], 'Ds\Set::reduce' => ['mixed', 'callback'=>'callable', 'initial='=>'mixed'], 'Ds\Set::remove' => ['void', '...values='=>'mixed'], 'Ds\Set::reverse' => ['void'], 'Ds\Set::reversed' => ['Ds\Set'], 'Ds\Set::slice' => ['Ds\Set', 'index'=>'int', 'length='=>'?int'], 'Ds\Set::sort' => ['void', 'comparator='=>'callable'], 'Ds\Set::sorted' => ['Ds\Set', 'comparator='=>'callable'], 'Ds\Set::sum' => ['int|float'], 'Ds\Set::toArray' => ['array'], 'Ds\Set::union' => ['Ds\Set', 'set'=>'Ds\Set'], 'Ds\Set::xor' => ['Ds\Set', 'set'=>'Ds\Set'], 'Ds\Stack::__construct' => ['void', 'values='=>'mixed'], 'Ds\Stack::allocate' => ['void', 'capacity'=>'int'], 'Ds\Stack::capacity' => ['int'], 'Ds\Stack::clear' => ['void'], 'Ds\Stack::copy' => ['Ds\Stack'], 'Ds\Stack::count' => ['0|positive-int'], 'Ds\Stack::isEmpty' => ['bool'], 'Ds\Stack::jsonSerialize' => ['array'], 'Ds\Stack::peek' => ['mixed'], 'Ds\Stack::pop' => ['mixed'], 'Ds\Stack::push' => ['void', '...values='=>'mixed'], 'Ds\Stack::toArray' => ['array'], 'Ds\Vector::__construct' => ['void', 'values='=>'mixed'], 'Ds\Vector::allocate' => ['void', 'capacity'=>'int'], 'Ds\Vector::apply' => ['void', 'callback'=>'callable'], 'Ds\Vector::capacity' => ['int'], 'Ds\Vector::clear' => ['void'], 'Ds\Vector::contains' => ['bool', '...values='=>'mixed'], 'Ds\Vector::copy' => ['Ds\Vector'], 'Ds\Vector::count' => ['0|positive-int'], 'Ds\Vector::filter' => ['Ds\Vector', 'callback='=>'callable'], 'Ds\Vector::find' => ['mixed', 'value'=>'mixed'], 'Ds\Vector::first' => ['mixed'], 'Ds\Vector::get' => ['mixed', 'index'=>'int'], 'Ds\Vector::insert' => ['void', 'index'=>'int', '...values='=>'mixed'], 'Ds\Vector::isEmpty' => ['bool'], 'Ds\Vector::join' => ['string', 'glue='=>'string'], 'Ds\Vector::jsonSerialize' => ['array'], 'Ds\Vector::last' => ['mixed'], 'Ds\Vector::map' => ['Ds\Vector', 'callback'=>'callable'], 'Ds\Vector::merge' => ['Ds\Vector', 'values'=>'mixed'], 'Ds\Vector::pop' => ['mixed'], 'Ds\Vector::push' => ['void', '...values='=>'mixed'], 'Ds\Vector::reduce' => ['mixed', 'callback'=>'callable', 'initial='=>'mixed'], 'Ds\Vector::remove' => ['mixed', 'index'=>'int'], 'Ds\Vector::reverse' => ['void'], 'Ds\Vector::reversed' => ['Ds\Vector'], 'Ds\Vector::rotate' => ['void', 'rotations'=>'int'], 'Ds\Vector::set' => ['void', 'index'=>'int', 'value'=>'mixed'], 'Ds\Vector::shift' => ['mixed'], 'Ds\Vector::slice' => ['Ds\Vector', 'index'=>'int', 'length='=>'?int'], 'Ds\Vector::sort' => ['void', 'comparator='=>'callable'], 'Ds\Vector::sorted' => ['Ds\Vector', 'comparator='=>'callable'], 'Ds\Vector::sum' => ['int|float'], 'Ds\Vector::toArray' => ['array'], 'Ds\Vector::unshift' => ['void', '...values='=>'mixed'], 'each' => ['array', '&rw_arr'=>'array'], 'easter_date' => ['int', 'year='=>'int'], 'easter_days' => ['int', 'year='=>'int', 'method='=>'int'], 'eio_busy' => ['resource', 'delay'=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_cancel' => ['void', 'req'=>'resource'], 'eio_chmod' => ['resource', 'path'=>'string', 'mode'=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_chown' => ['resource', 'path'=>'string', 'uid'=>'int', 'gid='=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_close' => ['resource', 'fd'=>'mixed', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_custom' => ['resource', 'execute'=>'callable', 'pri'=>'int', 'callback'=>'callable', 'data='=>'mixed'], 'eio_dup2' => ['resource', 'fd'=>'mixed', 'fd2'=>'mixed', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_event_loop' => ['bool'], 'eio_fallocate' => ['resource', 'fd'=>'mixed', 'mode'=>'int', 'offset'=>'int', 'length'=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_fchmod' => ['resource', 'fd'=>'mixed', 'mode'=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_fchown' => ['resource', 'fd'=>'mixed', 'uid'=>'int', 'gid='=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_fdatasync' => ['resource', 'fd'=>'mixed', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_fstat' => ['resource', 'fd'=>'mixed', 'pri'=>'int', 'callback'=>'callable', 'data='=>'mixed'], 'eio_fstatvfs' => ['resource', 'fd'=>'mixed', 'pri'=>'int', 'callback'=>'callable', 'data='=>'mixed'], 'eio_fsync' => ['resource', 'fd'=>'mixed', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_ftruncate' => ['resource', 'fd'=>'mixed', 'offset='=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_futime' => ['resource', 'fd'=>'mixed', 'atime'=>'float', 'mtime'=>'float', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_get_event_stream' => ['mixed'], 'eio_get_last_error' => ['string', 'req'=>'resource'], 'eio_grp' => ['resource', 'callback'=>'callable', 'data='=>'string'], 'eio_grp_add' => ['void', 'grp'=>'resource', 'req'=>'resource'], 'eio_grp_cancel' => ['void', 'grp'=>'resource'], 'eio_grp_limit' => ['void', 'grp'=>'resource', 'limit'=>'int'], 'eio_init' => ['void'], 'eio_link' => ['resource', 'path'=>'string', 'new_path'=>'string', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_lstat' => ['resource', 'path'=>'string', 'pri'=>'int', 'callback'=>'callable', 'data='=>'mixed'], 'eio_mkdir' => ['resource', 'path'=>'string', 'mode'=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_mknod' => ['resource', 'path'=>'string', 'mode'=>'int', 'dev'=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_nop' => ['resource', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_npending' => ['int'], 'eio_nready' => ['int'], 'eio_nreqs' => ['int'], 'eio_nthreads' => ['int'], 'eio_open' => ['resource', 'path'=>'string', 'flags'=>'int', 'mode'=>'int', 'pri'=>'int', 'callback'=>'callable', 'data='=>'mixed'], 'eio_poll' => ['int'], 'eio_read' => ['resource', 'fd'=>'mixed', 'length'=>'int', 'offset'=>'int', 'pri'=>'int', 'callback'=>'callable', 'data='=>'mixed'], 'eio_readahead' => ['resource', 'fd'=>'mixed', 'offset'=>'int', 'length'=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_readdir' => ['resource', 'path'=>'string', 'flags'=>'int', 'pri'=>'int', 'callback'=>'callable', 'data='=>'string'], 'eio_readlink' => ['resource', 'path'=>'string', 'pri'=>'int', 'callback'=>'callable', 'data='=>'string'], 'eio_realpath' => ['resource', 'path'=>'string', 'pri'=>'int', 'callback'=>'callable', 'data='=>'string'], 'eio_rename' => ['resource', 'path'=>'string', 'new_path'=>'string', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_rmdir' => ['resource', 'path'=>'string', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_seek' => ['resource', 'fd'=>'mixed', 'offset'=>'int', 'whence'=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_sendfile' => ['resource', 'out_fd'=>'mixed', 'in_fd'=>'mixed', 'offset'=>'int', 'length'=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'string'], 'eio_set_max_idle' => ['void', 'nthreads'=>'int'], 'eio_set_max_parallel' => ['void', 'nthreads'=>'int'], 'eio_set_max_poll_reqs' => ['void', 'nreqs'=>'int'], 'eio_set_max_poll_time' => ['void', 'nseconds'=>'float'], 'eio_set_min_parallel' => ['void', 'nthreads'=>'string'], 'eio_stat' => ['resource', 'path'=>'string', 'pri'=>'int', 'callback'=>'callable', 'data='=>'mixed'], 'eio_statvfs' => ['resource', 'path'=>'string', 'pri'=>'int', 'callback'=>'callable', 'data='=>'mixed'], 'eio_symlink' => ['resource', 'path'=>'string', 'new_path'=>'string', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_sync' => ['resource', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_sync_file_range' => ['resource', 'fd'=>'mixed', 'offset'=>'int', 'nbytes'=>'int', 'flags'=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_syncfs' => ['resource', 'fd'=>'mixed', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_truncate' => ['resource', 'path'=>'string', 'offset='=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_unlink' => ['resource', 'path'=>'string', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_utime' => ['resource', 'path'=>'string', 'atime'=>'float', 'mtime'=>'float', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'eio_write' => ['resource', 'fd'=>'mixed', 'str'=>'string', 'length='=>'int', 'offset='=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'], 'EmptyIterator::current' => ['mixed'], 'EmptyIterator::key' => ['mixed'], 'EmptyIterator::next' => ['void'], 'EmptyIterator::rewind' => ['void'], 'EmptyIterator::valid' => ['bool'], 'enchant_broker_describe' => ['array', 'broker'=>'resource'], 'enchant_broker_dict_exists' => ['bool', 'broker'=>'resource', 'tag'=>'string'], 'enchant_broker_free' => ['bool', 'broker'=>'resource'], 'enchant_broker_free_dict' => ['bool', 'dict'=>'resource'], 'enchant_broker_get_dict_path' => ['string|false', 'broker'=>'resource', 'dict_type'=>'int'], 'enchant_broker_get_error' => ['string|false', 'broker'=>'resource'], 'enchant_broker_init' => ['resource|false'], 'enchant_broker_list_dicts' => ['array|false', 'broker'=>'resource'], 'enchant_broker_request_dict' => ['resource|false', 'broker'=>'resource', 'tag'=>'string'], 'enchant_broker_request_pwl_dict' => ['resource|false', 'broker'=>'resource', 'filename'=>'string'], 'enchant_broker_set_dict_path' => ['bool', 'broker'=>'resource', 'dict_type'=>'int', 'value'=>'string'], 'enchant_broker_set_ordering' => ['bool', 'broker'=>'resource', 'tag'=>'string', 'ordering'=>'string'], 'enchant_dict_add_to_personal' => ['void', 'dict'=>'resource', 'word'=>'string'], 'enchant_dict_add_to_session' => ['void', 'dict'=>'resource', 'word'=>'string'], 'enchant_dict_check' => ['bool', 'dict'=>'resource', 'word'=>'string'], 'enchant_dict_describe' => ['array', 'dict'=>'resource'], 'enchant_dict_get_error' => ['string|false', 'dict'=>'resource'], 'enchant_dict_is_in_session' => ['bool', 'dict'=>'resource', 'word'=>'string'], 'enchant_dict_quick_check' => ['bool', 'dict'=>'resource', 'word'=>'string', 'suggestions='=>'array'], 'enchant_dict_store_replacement' => ['void', 'dict'=>'resource', 'mis'=>'string', 'cor'=>'string'], 'enchant_dict_suggest' => ['array', 'dict'=>'resource', 'word'=>'string'], 'end' => ['mixed', '&rw_array_arg'=>'array|object'], 'ereg' => ['int', 'pattern'=>'string', 'string'=>'string', 'regs='=>'array'], 'ereg_replace' => ['string', 'pattern'=>'string', 'replacement'=>'string', 'string'=>'string'], 'eregi' => ['int', 'pattern'=>'string', 'string'=>'string', 'regs='=>'array'], 'eregi_replace' => ['string', 'pattern'=>'string', 'replacement'=>'string', 'string'=>'string'], 'Error::__clone' => ['void'], 'Error::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?Error)'], 'Error::__toString' => ['string'], 'Error::getCode' => ['int'], 'Error::getFile' => ['string'], 'Error::getLine' => ['int'], 'Error::getMessage' => ['string'], 'Error::getPrevious' => ['Throwable|Error|null'], 'Error::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'Error::getTraceAsString' => ['string'], 'error_clear_last' => ['void'], 'error_get_last' => ['?array{type:int,message:string,file:string,line:int}'], 'error_log' => ['bool', 'message'=>'string', 'message_type='=>'int', 'destination='=>'string', 'extra_headers='=>'string'], 'error_reporting' => ['int', 'new_error_level='=>'int'], 'ErrorException::__clone' => ['void'], 'ErrorException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'severity='=>'int', 'filename='=>'string', 'lineno='=>'int', 'previous='=>'(?Throwable)|(?ErrorException)'], 'ErrorException::__toString' => ['string'], 'ErrorException::getCode' => ['int'], 'ErrorException::getFile' => ['string'], 'ErrorException::getLine' => ['int'], 'ErrorException::getMessage' => ['string'], 'ErrorException::getPrevious' => ['Throwable|ErrorException|null'], 'ErrorException::getSeverity' => ['int'], 'ErrorException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'ErrorException::getTraceAsString' => ['string'], 'escapeshellarg' => ['string', 'arg'=>'string'], 'escapeshellcmd' => ['string', 'command'=>'string'], 'Ev::backend' => ['int'], 'Ev::depth' => ['int'], 'Ev::embeddableBackends' => ['int'], 'Ev::feedSignal' => ['void', 'signum'=>'int'], 'Ev::feedSignalEvent' => ['void', 'signum'=>'int'], 'Ev::iteration' => ['int'], 'Ev::now' => ['float'], 'Ev::nowUpdate' => ['void'], 'Ev::recommendedBackends' => ['int'], 'Ev::resume' => ['void'], 'Ev::run' => ['void', 'flags='=>'int'], 'Ev::sleep' => ['void', 'seconds'=>'float'], 'Ev::stop' => ['void', 'how='=>'int'], 'Ev::supportedBackends' => ['int'], 'Ev::suspend' => ['void'], 'Ev::time' => ['float'], 'Ev::verify' => ['void'], 'EvCheck::__construct' => ['void', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvCheck::createStopped' => ['object', 'callback'=>'string', 'data='=>'string', 'priority='=>'string'], 'EvChild::__construct' => ['void', 'pid'=>'int', 'trace'=>'bool', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvChild::createStopped' => ['object', 'pid'=>'int', 'trace'=>'bool', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvChild::set' => ['void', 'pid'=>'int', 'trace'=>'bool'], 'EvEmbed::__construct' => ['void', 'other'=>'object', 'callback='=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvEmbed::createStopped' => ['void', 'other'=>'object', 'callback='=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvEmbed::set' => ['void', 'other'=>'object'], 'EvEmbed::sweep' => ['void'], 'Event::__construct' => ['void', 'base'=>'EventBase', 'fd'=>'mixed', 'what'=>'int', 'cb'=>'callable', 'arg='=>'mixed'], 'Event::add' => ['bool', 'timeout='=>'float'], 'Event::addSignal' => ['bool', 'timeout='=>'float'], 'Event::addTimer' => ['bool', 'timeout='=>'float'], 'Event::del' => ['bool'], 'Event::delSignal' => ['bool'], 'Event::delTimer' => ['bool'], 'Event::free' => ['void'], 'Event::getSupportedMethods' => ['array'], 'Event::pending' => ['bool', 'flags'=>'int'], 'Event::set' => ['bool', 'base'=>'EventBase', 'fd'=>'mixed', 'what='=>'int', 'cb='=>'callable', 'arg='=>'mixed'], 'Event::setPriority' => ['bool', 'priority'=>'int'], 'Event::setTimer' => ['bool', 'base'=>'EventBase', 'cb'=>'callable', 'arg='=>'mixed'], 'Event::signal' => ['Event', 'base'=>'EventBase', 'signum'=>'int', 'cb'=>'callable', 'arg='=>'mixed'], 'Event::timer' => ['Event', 'base'=>'EventBase', 'cb'=>'callable', 'arg='=>'mixed'], 'event_add' => ['bool', 'event'=>'resource', 'timeout='=>'int'], 'event_base_free' => ['void', 'event_base'=>'resource'], 'event_base_loop' => ['int', 'event_base'=>'resource', 'flags='=>'int'], 'event_base_loopbreak' => ['bool', 'event_base'=>'resource'], 'event_base_loopexit' => ['bool', 'event_base'=>'resource', 'timeout='=>'int'], 'event_base_new' => ['resource'], 'event_base_priority_init' => ['bool', 'event_base'=>'resource', 'npriorities'=>'int'], 'event_base_reinit' => ['bool', 'event_base'=>'resource'], 'event_base_set' => ['bool', 'event'=>'resource', 'event_base'=>'resource'], 'event_buffer_base_set' => ['bool', 'bevent'=>'resource', 'event_base'=>'resource'], 'event_buffer_disable' => ['bool', 'bevent'=>'resource', 'events'=>'int'], 'event_buffer_enable' => ['bool', 'bevent'=>'resource', 'events'=>'int'], 'event_buffer_fd_set' => ['void', 'bevent'=>'resource', 'fd'=>'resource'], 'event_buffer_free' => ['void', 'bevent'=>'resource'], 'event_buffer_new' => ['resource', 'stream'=>'resource', 'readcb'=>'mixed', 'writecb'=>'mixed', 'errorcb'=>'mixed', 'arg='=>'mixed'], 'event_buffer_priority_set' => ['bool', 'bevent'=>'resource', 'priority'=>'int'], 'event_buffer_read' => ['string', 'bevent'=>'resource', 'data_size'=>'int'], 'event_buffer_set_callback' => ['bool', 'event'=>'resource', 'readcb'=>'mixed', 'writecb'=>'mixed', 'errorcb'=>'mixed', 'arg='=>'mixed'], 'event_buffer_timeout_set' => ['void', 'bevent'=>'resource', 'read_timeout'=>'int', 'write_timeout'=>'int'], 'event_buffer_watermark_set' => ['void', 'bevent'=>'resource', 'events'=>'int', 'lowmark'=>'int', 'highmark'=>'int'], 'event_buffer_write' => ['bool', 'bevent'=>'resource', 'data'=>'string', 'data_size='=>'int'], 'event_del' => ['bool', 'event'=>'resource'], 'event_free' => ['void', 'event'=>'resource'], 'event_new' => ['resource'], 'event_priority_set' => ['bool', 'event'=>'resource', 'priority'=>'int'], 'event_set' => ['bool', 'event'=>'resource', 'fd'=>'mixed', 'events'=>'int', 'callback'=>'mixed', 'arg='=>'mixed'], 'event_timer_add' => ['bool', 'event'=>'resource', 'timeout='=>'int'], 'event_timer_del' => ['bool', 'event'=>'resource'], 'event_timer_new' => ['bool|resource'], 'event_timer_pending' => ['bool', 'event'=>'resource', 'timeout='=>'int'], 'event_timer_set' => ['bool', 'event'=>'resource', 'callback'=>'callable', 'arg='=>'mixed'], 'EventBase::__construct' => ['void', 'cfg='=>'EventConfig'], 'EventBase::dispatch' => ['void'], 'EventBase::exit' => ['bool', 'timeout='=>'float'], 'EventBase::free' => ['void'], 'EventBase::getFeatures' => ['int'], 'EventBase::getMethod' => ['string', 'cfg='=>'EventConfig'], 'EventBase::getTimeOfDayCached' => ['float'], 'EventBase::gotExit' => ['bool'], 'EventBase::gotStop' => ['bool'], 'EventBase::loop' => ['bool', 'flags='=>'int'], 'EventBase::priorityInit' => ['bool', 'n_priorities'=>'int'], 'EventBase::reInit' => ['bool'], 'EventBase::stop' => ['bool'], 'EventBuffer::__construct' => ['void'], 'EventBuffer::add' => ['bool', 'data'=>'string'], 'EventBuffer::addBuffer' => ['bool', 'buf'=>'EventBuffer'], 'EventBuffer::appendFrom' => ['int', 'buf'=>'EventBuffer', 'len'=>'int'], 'EventBuffer::copyout' => ['int', '&w_data'=>'string', 'max_bytes'=>'int'], 'EventBuffer::drain' => ['bool', 'len'=>'int'], 'EventBuffer::enableLocking' => ['void'], 'EventBuffer::expand' => ['bool', 'len'=>'int'], 'EventBuffer::freeze' => ['bool', 'at_front'=>'bool'], 'EventBuffer::lock' => ['void'], 'EventBuffer::prepend' => ['bool', 'data'=>'string'], 'EventBuffer::prependBuffer' => ['bool', 'buf'=>'EventBuffer'], 'EventBuffer::pullup' => ['string', 'size'=>'int'], 'EventBuffer::read' => ['string', 'max_bytes'=>'int'], 'EventBuffer::readFrom' => ['int', 'fd'=>'mixed', 'howmuch'=>'int'], 'EventBuffer::readLine' => ['string', 'eol_style'=>'int'], 'EventBuffer::search' => ['mixed', 'what'=>'string', 'start='=>'int', 'end='=>'int'], 'EventBuffer::searchEol' => ['mixed', 'start='=>'int', 'eol_style='=>'int'], 'EventBuffer::substr' => ['string', 'start'=>'int', 'length='=>'int'], 'EventBuffer::unfreeze' => ['bool', 'at_front'=>'bool'], 'EventBuffer::unlock' => ['bool'], 'EventBuffer::write' => ['int', 'fd'=>'mixed', 'howmuch='=>'int'], 'EventBufferEvent::__construct' => ['void', 'base'=>'EventBase', 'socket='=>'mixed', 'options='=>'int', 'readcb='=>'callable', 'writecb='=>'callable', 'eventcb='=>'callable'], 'EventBufferEvent::close' => ['void'], 'EventBufferEvent::connect' => ['bool', 'addr'=>'string'], 'EventBufferEvent::connectHost' => ['bool', 'dns_base'=>'EventDnsBase', 'hostname'=>'string', 'port'=>'int', 'family='=>'int'], 'EventBufferEvent::createPair' => ['array', 'base'=>'EventBase', 'options='=>'int'], 'EventBufferEvent::disable' => ['bool', 'events'=>'int'], 'EventBufferEvent::enable' => ['bool', 'events'=>'int'], 'EventBufferEvent::free' => ['void'], 'EventBufferEvent::getDnsErrorString' => ['string'], 'EventBufferEvent::getEnabled' => ['int'], 'EventBufferEvent::getInput' => ['EventBuffer'], 'EventBufferEvent::getOutput' => ['EventBuffer'], 'EventBufferEvent::read' => ['string', 'size'=>'int'], 'EventBufferEvent::readBuffer' => ['bool', 'buf'=>'EventBuffer'], 'EventBufferEvent::setCallbacks' => ['void', 'readcb'=>'callable', 'writecb'=>'callable', 'eventcb'=>'callable', 'arg='=>'string'], 'EventBufferEvent::setPriority' => ['bool', 'priority'=>'int'], 'EventBufferEvent::setTimeouts' => ['bool', 'timeout_read'=>'float', 'timeout_write'=>'float'], 'EventBufferEvent::setWatermark' => ['void', 'events'=>'int', 'lowmark'=>'int', 'highmark'=>'int'], 'EventBufferEvent::sslError' => ['string'], 'EventBufferEvent::sslFilter' => ['EventBufferEvent', 'base'=>'EventBase', 'underlying'=>'EventBufferEvent', 'ctx'=>'EventSslContext', 'state'=>'int', 'options='=>'int'], 'EventBufferEvent::sslGetCipherInfo' => ['string'], 'EventBufferEvent::sslGetCipherName' => ['string'], 'EventBufferEvent::sslGetCipherVersion' => ['string'], 'EventBufferEvent::sslGetProtocol' => ['string'], 'EventBufferEvent::sslRenegotiate' => ['void'], 'EventBufferEvent::sslSocket' => ['EventBufferEvent', 'base'=>'EventBase', 'socket'=>'mixed', 'ctx'=>'EventSslContext', 'state'=>'int', 'options='=>'int'], 'EventBufferEvent::write' => ['bool', 'data'=>'string'], 'EventBufferEvent::writeBuffer' => ['bool', 'buf'=>'EventBuffer'], 'EventConfig::__construct' => ['void'], 'EventConfig::avoidMethod' => ['bool', 'method'=>'string'], 'EventConfig::requireFeatures' => ['bool', 'feature'=>'int'], 'EventConfig::setMaxDispatchInterval' => ['void', 'max_interval'=>'int', 'max_callbacks'=>'int', 'min_priority'=>'int'], 'EventDnsBase::__construct' => ['void', 'base'=>'EventBase', 'initialize'=>'bool'], 'EventDnsBase::addNameserverIp' => ['bool', 'ip'=>'string'], 'EventDnsBase::addSearch' => ['void', 'domain'=>'string'], 'EventDnsBase::clearSearch' => ['void'], 'EventDnsBase::countNameservers' => ['int'], 'EventDnsBase::loadHosts' => ['bool', 'hosts'=>'string'], 'EventDnsBase::parseResolvConf' => ['bool', 'flags'=>'int', 'filename'=>'string'], 'EventDnsBase::setOption' => ['bool', 'option'=>'string', 'value'=>'string'], 'EventDnsBase::setSearchNdots' => ['bool', 'ndots'=>'int'], 'EventHttp::__construct' => ['void', 'base'=>'EventBase', 'ctx='=>'EventSslContext'], 'EventHttp::accept' => ['bool', 'socket'=>'mixed'], 'EventHttp::addServerAlias' => ['bool', 'alias'=>'string'], 'EventHttp::bind' => ['void', 'address'=>'string', 'port'=>'int'], 'EventHttp::removeServerAlias' => ['bool', 'alias'=>'string'], 'EventHttp::setAllowedMethods' => ['void', 'methods'=>'int'], 'EventHttp::setCallback' => ['void', 'path'=>'string', 'cb'=>'string', 'arg='=>'string'], 'EventHttp::setDefaultCallback' => ['void', 'cb'=>'string', 'arg='=>'string'], 'EventHttp::setMaxBodySize' => ['void', 'value'=>'int'], 'EventHttp::setMaxHeadersSize' => ['void', 'value'=>'int'], 'EventHttp::setTimeout' => ['void', 'value'=>'int'], 'EventHttpConnection::__construct' => ['void', 'base'=>'EventBase', 'dns_base'=>'EventDnsBase', 'address'=>'string', 'port'=>'int', 'ctx='=>'EventSslContext'], 'EventHttpConnection::getBase' => ['EventBase'], 'EventHttpConnection::getPeer' => ['void', '&w_address'=>'string', '&w_port'=>'int'], 'EventHttpConnection::makeRequest' => ['bool', 'req'=>'EventHttpRequest', 'type'=>'int', 'uri'=>'string'], 'EventHttpConnection::setCloseCallback' => ['void', 'callback'=>'callable', 'data='=>'mixed'], 'EventHttpConnection::setLocalAddress' => ['void', 'address'=>'string'], 'EventHttpConnection::setLocalPort' => ['void', 'port'=>'int'], 'EventHttpConnection::setMaxBodySize' => ['void', 'max_size'=>'string'], 'EventHttpConnection::setMaxHeadersSize' => ['void', 'max_size'=>'string'], 'EventHttpConnection::setRetries' => ['void', 'retries'=>'int'], 'EventHttpConnection::setTimeout' => ['void', 'timeout'=>'int'], 'EventHttpRequest::__construct' => ['void', 'callback'=>'callable', 'data='=>'mixed'], 'EventHttpRequest::addHeader' => ['bool', 'key'=>'string', 'value'=>'string', 'type'=>'int'], 'EventHttpRequest::cancel' => ['void'], 'EventHttpRequest::clearHeaders' => ['void'], 'EventHttpRequest::closeConnection' => ['void'], 'EventHttpRequest::findHeader' => ['void', 'key'=>'string', 'type'=>'string'], 'EventHttpRequest::free' => ['void'], 'EventHttpRequest::getBufferEvent' => ['EventBufferEvent'], 'EventHttpRequest::getCommand' => ['void'], 'EventHttpRequest::getConnection' => ['EventHttpConnection'], 'EventHttpRequest::getHost' => ['string'], 'EventHttpRequest::getInputBuffer' => ['EventBuffer'], 'EventHttpRequest::getInputHeaders' => ['array'], 'EventHttpRequest::getOutputBuffer' => ['EventBuffer'], 'EventHttpRequest::getOutputHeaders' => ['void'], 'EventHttpRequest::getResponseCode' => ['int'], 'EventHttpRequest::getUri' => ['string'], 'EventHttpRequest::removeHeader' => ['void', 'key'=>'string', 'type'=>'string'], 'EventHttpRequest::sendError' => ['void', 'error'=>'int', 'reason='=>'string'], 'EventHttpRequest::sendReply' => ['void', 'code'=>'int', 'reason'=>'string', 'buf='=>'EventBuffer'], 'EventHttpRequest::sendReplyChunk' => ['void', 'buf'=>'EventBuffer'], 'EventHttpRequest::sendReplyEnd' => ['void'], 'EventHttpRequest::sendReplyStart' => ['void', 'code'=>'int', 'reason'=>'string'], 'EventListener::__construct' => ['void', 'base'=>'EventBase', 'cb'=>'callable', 'data'=>'mixed', 'flags'=>'int', 'backlog'=>'int', 'target'=>'mixed'], 'EventListener::disable' => ['bool'], 'EventListener::enable' => ['bool'], 'EventListener::getBase' => ['void'], 'EventListener::getSocketName' => ['bool', '&w_address'=>'string', '&w_port='=>'mixed'], 'EventListener::setCallback' => ['void', 'cb'=>'callable', 'arg='=>'mixed'], 'EventListener::setErrorCallback' => ['void', 'cb'=>'string'], 'EventSslContext::__construct' => ['void', 'method'=>'string', 'options'=>'string'], 'EventUtil::__construct' => ['void'], 'EventUtil::getLastSocketErrno' => ['int', 'socket='=>'mixed'], 'EventUtil::getLastSocketError' => ['string', 'socket='=>'mixed'], 'EventUtil::getSocketFd' => ['int', 'socket'=>'mixed'], 'EventUtil::getSocketName' => ['bool', 'socket'=>'mixed', '&w_address'=>'string', '&w_port='=>'mixed'], 'EventUtil::setSocketOption' => ['bool', 'socket'=>'mixed', 'level'=>'int', 'optname'=>'int', 'optval'=>'mixed'], 'EventUtil::sslRandPoll' => ['void'], 'EvFork::__construct' => ['void', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvFork::createStopped' => ['object', 'callback'=>'string', 'data='=>'string', 'priority='=>'string'], 'EvIdle::__construct' => ['void', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvIdle::createStopped' => ['object', 'callback'=>'string', 'data='=>'mixed', 'priority='=>'int'], 'EvIo::__construct' => ['void', 'fd'=>'mixed', 'events'=>'int', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvIo::createStopped' => ['EvIo', 'fd'=>'mixed', 'events'=>'int', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvIo::set' => ['void', 'fd'=>'mixed', 'events'=>'int'], 'EvLoop::__construct' => ['void', 'flags='=>'int', 'data='=>'mixed', 'io_interval='=>'float', 'timeout_interval='=>'float'], 'EvLoop::backend' => ['int'], 'EvLoop::check' => ['EvCheck', 'callback'=>'string', 'data='=>'string', 'priority='=>'string'], 'EvLoop::child' => ['EvChild', 'pid'=>'string', 'trace'=>'string', 'callback'=>'string', 'data='=>'string', 'priority='=>'string'], 'EvLoop::defaultLoop' => ['EvLoop', 'flags='=>'int', 'data='=>'mixed', 'io_interval='=>'float', 'timeout_interval='=>'float'], 'EvLoop::embed' => ['EvEmbed', 'other'=>'string', 'callback='=>'string', 'data='=>'string', 'priority='=>'string'], 'EvLoop::fork' => ['EvFork', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvLoop::idle' => ['EvIdle', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvLoop::invokePending' => ['void'], 'EvLoop::io' => ['EvIo', 'fd'=>'mixed', 'events'=>'int', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvLoop::loopFork' => ['void'], 'EvLoop::now' => ['float'], 'EvLoop::nowUpdate' => ['void'], 'EvLoop::periodic' => ['EvPeriodic', 'offset'=>'float', 'interval'=>'float', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvLoop::prepare' => ['EvPrepare', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvLoop::resume' => ['void'], 'EvLoop::run' => ['void', 'flags='=>'int'], 'EvLoop::signal' => ['EvSignal', 'signum'=>'int', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvLoop::stat' => ['EvStat', 'path'=>'string', 'interval'=>'float', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvLoop::stop' => ['void', 'how='=>'int'], 'EvLoop::suspend' => ['void'], 'EvLoop::timer' => ['EvTimer', 'after'=>'float', 'repeat'=>'float', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvLoop::verify' => ['void'], 'EvPeriodic::__construct' => ['void', 'offset'=>'float', 'interval'=>'string', 'reschedule_cb'=>'callable', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvPeriodic::again' => ['void'], 'EvPeriodic::at' => ['float'], 'EvPeriodic::createStopped' => ['EvPeriodic', 'offset'=>'float', 'interval'=>'float', 'reschedule_cb'=>'callable', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvPeriodic::set' => ['void', 'offset'=>'float', 'interval'=>'float'], 'EvPrepare::__construct' => ['void', 'callback'=>'string', 'data='=>'string', 'priority='=>'string'], 'EvPrepare::createStopped' => ['EvPrepare', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvSignal::__construct' => ['void', 'signum'=>'int', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvSignal::createStopped' => ['EvSignal', 'signum'=>'int', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvSignal::set' => ['void', 'signum'=>'int'], 'EvStat::__construct' => ['void', 'path'=>'string', 'interval'=>'float', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvStat::attr' => ['array'], 'EvStat::createStopped' => ['void', 'path'=>'string', 'interval'=>'float', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvStat::prev' => ['void'], 'EvStat::set' => ['void', 'path'=>'string', 'interval'=>'float'], 'EvStat::stat' => ['bool'], 'EvTimer::__construct' => ['void', 'after'=>'float', 'repeat'=>'float', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvTimer::again' => ['void'], 'EvTimer::createStopped' => ['EvTimer', 'after'=>'float', 'repeat'=>'float', 'callback'=>'callable', 'data='=>'mixed', 'priority='=>'int'], 'EvTimer::set' => ['void', 'after'=>'float', 'repeat'=>'float'], 'EvWatcher::__construct' => ['void'], 'EvWatcher::clear' => ['int'], 'EvWatcher::feed' => ['void', 'revents'=>'int'], 'EvWatcher::getLoop' => ['EvLoop'], 'EvWatcher::invoke' => ['void', 'revents'=>'int'], 'EvWatcher::keepalive' => ['bool', 'value='=>'bool'], 'EvWatcher::setCallback' => ['void', 'callback'=>'callable'], 'EvWatcher::start' => ['void'], 'EvWatcher::stop' => ['void'], 'Exception::__clone' => ['void'], 'Exception::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?Exception)'], 'Exception::__toString' => ['string'], 'Exception::getCode' => ['mixed'], 'Exception::getFile' => ['string'], 'Exception::getLine' => ['int'], 'Exception::getMessage' => ['string'], 'Exception::getPrevious' => ['(?Throwable)|(?Exception)'], 'Exception::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'Exception::getTraceAsString' => ['string'], 'exec' => ['string|false', 'command'=>'string', '&w_output='=>'array', '&w_return_value='=>'int'], 'exif_imagetype' => ['int|false', 'imagefile'=>'string'], 'exif_read_data' => ['array|false', 'filename'=>'string|resource', 'sections_needed='=>'string', 'sub_arrays='=>'bool', 'read_thumbnail='=>'bool'], 'exif_tagname' => ['string|false', 'index'=>'int'], 'exif_thumbnail' => ['string|false', 'filename'=>'string', '&w_width='=>'int', '&w_height='=>'int', '&w_imagetype='=>'int'], 'exp' => ['float', 'number'=>'float'], 'expect_expectl' => ['int', 'expect'=>'resource', 'cases'=>'array', 'match='=>'array'], 'expect_popen' => ['resource|false', 'command'=>'string'], 'explode' => ['list|false', 'separator'=>'string', 'str'=>'string', 'limit='=>'int'], 'expm1' => ['float', 'number'=>'float'], 'extension_loaded' => ['bool', 'extension_name'=>'string'], 'extract' => ['0|positive-int', 'array'=>'array', 'flags='=>'int', 'prefix='=>'string|null'], 'ezmlm_hash' => ['int', 'addr'=>'string'], 'fam_cancel_monitor' => ['bool', 'fam'=>'resource', 'fam_monitor'=>'resource'], 'fam_close' => ['void', 'fam'=>'resource'], 'fam_monitor_collection' => ['resource', 'fam'=>'resource', 'dirname'=>'string', 'depth'=>'int', 'mask'=>'string'], 'fam_monitor_directory' => ['resource', 'fam'=>'resource', 'dirname'=>'string'], 'fam_monitor_file' => ['resource', 'fam'=>'resource', 'filename'=>'string'], 'fam_next_event' => ['array', 'fam'=>'resource'], 'fam_open' => ['resource|false', 'appname='=>'string'], 'fam_pending' => ['int', 'fam'=>'resource'], 'fam_resume_monitor' => ['bool', 'fam'=>'resource', 'fam_monitor'=>'resource'], 'fam_suspend_monitor' => ['bool', 'fam'=>'resource', 'fam_monitor'=>'resource'], 'fann_cascadetrain_on_data' => ['bool', 'ann'=>'resource', 'data'=>'resource', 'max_neurons'=>'int', 'neurons_between_reports'=>'int', 'desired_error'=>'float'], 'fann_cascadetrain_on_file' => ['bool', 'ann'=>'resource', 'filename'=>'string', 'max_neurons'=>'int', 'neurons_between_reports'=>'int', 'desired_error'=>'float'], 'fann_clear_scaling_params' => ['bool', 'ann'=>'resource'], 'fann_copy' => ['resource', 'ann'=>'resource'], 'fann_create_from_file' => ['resource', 'configuration_file'=>'string'], 'fann_create_shortcut' => ['reference', 'num_layers'=>'int', 'num_neurons1'=>'int', 'num_neurons2'=>'int', '...args='=>'int'], 'fann_create_shortcut_array' => ['resource', 'num_layers'=>'int', 'layers'=>'array'], 'fann_create_sparse' => ['resource|false', 'connection_rate'=>'float', 'num_layers'=>'int', 'num_neurons1'=>'int', 'num_neurons2'=>'int', '...args='=>'int'], 'fann_create_sparse_array' => ['resource|false', 'connection_rate'=>'float', 'num_layers'=>'int', 'layers'=>'array'], 'fann_create_standard' => ['resource', 'num_layers'=>'int', 'num_neurons1'=>'int', 'num_neurons2'=>'int', '...args='=>'int'], 'fann_create_standard_array' => ['resource', 'num_layers'=>'int', 'layers'=>'array'], 'fann_create_train' => ['resource', 'num_data'=>'int', 'num_input'=>'int', 'num_output'=>'int'], 'fann_create_train_from_callback' => ['resource', 'num_data'=>'int', 'num_input'=>'int', 'num_output'=>'int', 'user_function'=>'callable'], 'fann_descale_input' => ['bool', 'ann'=>'resource', 'input_vector'=>'array'], 'fann_descale_output' => ['bool', 'ann'=>'resource', 'output_vector'=>'array'], 'fann_descale_train' => ['bool', 'ann'=>'resource', 'train_data'=>'resource'], 'fann_destroy' => ['bool', 'ann'=>'resource'], 'fann_destroy_train' => ['bool', 'train_data'=>'resource'], 'fann_duplicate_train_data' => ['resource', 'data'=>'resource'], 'fann_get_activation_function' => ['int', 'ann'=>'resource', 'layer'=>'int', 'neuron'=>'int'], 'fann_get_activation_steepness' => ['float', 'ann'=>'resource', 'layer'=>'int', 'neuron'=>'int'], 'fann_get_bias_array' => ['array', 'ann'=>'resource'], 'fann_get_bit_fail' => ['int', 'ann'=>'resource'], 'fann_get_bit_fail_limit' => ['float', 'ann'=>'resource'], 'fann_get_cascade_activation_functions' => ['array', 'ann'=>'resource'], 'fann_get_cascade_activation_functions_count' => ['int', 'ann'=>'resource'], 'fann_get_cascade_activation_steepnesses' => ['array', 'ann'=>'resource'], 'fann_get_cascade_activation_steepnesses_count' => ['int', 'ann'=>'resource'], 'fann_get_cascade_candidate_change_fraction' => ['float', 'ann'=>'resource'], 'fann_get_cascade_candidate_limit' => ['float', 'ann'=>'resource'], 'fann_get_cascade_candidate_stagnation_epochs' => ['float', 'ann'=>'resource'], 'fann_get_cascade_max_cand_epochs' => ['int', 'ann'=>'resource'], 'fann_get_cascade_max_out_epochs' => ['int', 'ann'=>'resource'], 'fann_get_cascade_min_cand_epochs' => ['int', 'ann'=>'resource'], 'fann_get_cascade_min_out_epochs' => ['int', 'ann'=>'resource'], 'fann_get_cascade_num_candidate_groups' => ['int', 'ann'=>'resource'], 'fann_get_cascade_num_candidates' => ['int', 'ann'=>'resource'], 'fann_get_cascade_output_change_fraction' => ['float', 'ann'=>'resource'], 'fann_get_cascade_output_stagnation_epochs' => ['int', 'ann'=>'resource'], 'fann_get_cascade_weight_multiplier' => ['float', 'ann'=>'resource'], 'fann_get_connection_array' => ['array', 'ann'=>'resource'], 'fann_get_connection_rate' => ['float', 'ann'=>'resource'], 'fann_get_errno' => ['int', 'errdat'=>'resource'], 'fann_get_errstr' => ['string', 'errdat'=>'resource'], 'fann_get_layer_array' => ['array', 'ann'=>'resource'], 'fann_get_learning_momentum' => ['float', 'ann'=>'resource'], 'fann_get_learning_rate' => ['float', 'ann'=>'resource'], 'fann_get_MSE' => ['float', 'ann'=>'resource'], 'fann_get_network_type' => ['int', 'ann'=>'resource'], 'fann_get_num_input' => ['int', 'ann'=>'resource'], 'fann_get_num_layers' => ['int', 'ann'=>'resource'], 'fann_get_num_output' => ['int', 'ann'=>'resource'], 'fann_get_quickprop_decay' => ['float', 'ann'=>'resource'], 'fann_get_quickprop_mu' => ['float', 'ann'=>'resource'], 'fann_get_rprop_decrease_factor' => ['float', 'ann'=>'resource'], 'fann_get_rprop_delta_max' => ['float', 'ann'=>'resource'], 'fann_get_rprop_delta_min' => ['float', 'ann'=>'resource'], 'fann_get_rprop_delta_zero' => ['float|false', 'ann'=>'resource'], 'fann_get_rprop_increase_factor' => ['float', 'ann'=>'resource'], 'fann_get_sarprop_step_error_shift' => ['float', 'ann'=>'resource'], 'fann_get_sarprop_step_error_threshold_factor' => ['float', 'ann'=>'resource'], 'fann_get_sarprop_temperature' => ['float', 'ann'=>'resource'], 'fann_get_sarprop_weight_decay_shift' => ['float', 'ann'=>'resource'], 'fann_get_total_connections' => ['int', 'ann'=>'resource'], 'fann_get_total_neurons' => ['int', 'ann'=>'resource'], 'fann_get_train_error_function' => ['int', 'ann'=>'resource'], 'fann_get_train_stop_function' => ['int', 'ann'=>'resource'], 'fann_get_training_algorithm' => ['int', 'ann'=>'resource'], 'fann_init_weights' => ['bool', 'ann'=>'resource', 'train_data'=>'resource'], 'fann_length_train_data' => ['int', 'data'=>'resource'], 'fann_merge_train_data' => ['resource', 'data1'=>'resource', 'data2'=>'resource'], 'fann_num_input_train_data' => ['int', 'data'=>'resource'], 'fann_num_output_train_data' => ['int', 'data'=>'resource'], 'fann_print_error' => ['void', 'errdat'=>'string'], 'fann_randomize_weights' => ['bool', 'ann'=>'resource', 'min_weight'=>'float', 'max_weight'=>'float'], 'fann_read_train_from_file' => ['resource', 'filename'=>'string'], 'fann_reset_errno' => ['void', 'errdat'=>'resource'], 'fann_reset_errstr' => ['void', 'errdat'=>'resource'], 'fann_reset_MSE' => ['bool', 'ann'=>'string'], 'fann_run' => ['array', 'ann'=>'resource', 'input'=>'array'], 'fann_save' => ['bool', 'ann'=>'resource', 'configuration_file'=>'string'], 'fann_save_train' => ['bool', 'data'=>'resource', 'file_name'=>'string'], 'fann_scale_input' => ['bool', 'ann'=>'resource', 'input_vector'=>'array'], 'fann_scale_input_train_data' => ['bool', 'train_data'=>'resource', 'new_min'=>'float', 'new_max'=>'float'], 'fann_scale_output' => ['bool', 'ann'=>'resource', 'output_vector'=>'array'], 'fann_scale_output_train_data' => ['bool', 'train_data'=>'resource', 'new_min'=>'float', 'new_max'=>'float'], 'fann_scale_train' => ['bool', 'ann'=>'resource', 'train_data'=>'resource'], 'fann_scale_train_data' => ['bool', 'train_data'=>'resource', 'new_min'=>'float', 'new_max'=>'float'], 'fann_set_activation_function' => ['bool', 'ann'=>'resource', 'activation_function'=>'int', 'layer'=>'int', 'neuron'=>'int'], 'fann_set_activation_function_hidden' => ['bool', 'ann'=>'resource', 'activation_function'=>'int'], 'fann_set_activation_function_layer' => ['bool', 'ann'=>'resource', 'activation_function'=>'int', 'layer'=>'int'], 'fann_set_activation_function_output' => ['bool', 'ann'=>'resource', 'activation_function'=>'int'], 'fann_set_activation_steepness' => ['bool', 'ann'=>'resource', 'activation_steepness'=>'float', 'layer'=>'int', 'neuron'=>'int'], 'fann_set_activation_steepness_hidden' => ['bool', 'ann'=>'resource', 'activation_steepness'=>'float'], 'fann_set_activation_steepness_layer' => ['bool', 'ann'=>'resource', 'activation_steepness'=>'float', 'layer'=>'int'], 'fann_set_activation_steepness_output' => ['bool', 'ann'=>'resource', 'activation_steepness'=>'float'], 'fann_set_bit_fail_limit' => ['bool', 'ann'=>'resource', 'bit_fail_limit'=>'float'], 'fann_set_callback' => ['bool', 'ann'=>'resource', 'callback'=>'callable'], 'fann_set_cascade_activation_functions' => ['bool', 'ann'=>'resource', 'cascade_activation_functions'=>'array'], 'fann_set_cascade_activation_steepnesses' => ['bool', 'ann'=>'resource', 'cascade_activation_steepnesses_count'=>'array'], 'fann_set_cascade_candidate_change_fraction' => ['bool', 'ann'=>'resource', 'cascade_candidate_change_fraction'=>'float'], 'fann_set_cascade_candidate_limit' => ['bool', 'ann'=>'resource', 'cascade_candidate_limit'=>'float'], 'fann_set_cascade_candidate_stagnation_epochs' => ['bool', 'ann'=>'resource', 'cascade_candidate_stagnation_epochs'=>'int'], 'fann_set_cascade_max_cand_epochs' => ['bool', 'ann'=>'resource', 'cascade_max_cand_epochs'=>'int'], 'fann_set_cascade_max_out_epochs' => ['bool', 'ann'=>'resource', 'cascade_max_out_epochs'=>'int'], 'fann_set_cascade_min_cand_epochs' => ['bool', 'ann'=>'resource', 'cascade_min_cand_epochs'=>'int'], 'fann_set_cascade_min_out_epochs' => ['bool', 'ann'=>'resource', 'cascade_min_out_epochs'=>'int'], 'fann_set_cascade_num_candidate_groups' => ['bool', 'ann'=>'resource', 'cascade_num_candidate_groups'=>'int'], 'fann_set_cascade_output_change_fraction' => ['bool', 'ann'=>'resource', 'cascade_output_change_fraction'=>'float'], 'fann_set_cascade_output_stagnation_epochs' => ['bool', 'ann'=>'resource', 'cascade_output_stagnation_epochs'=>'int'], 'fann_set_cascade_weight_multiplier' => ['bool', 'ann'=>'resource', 'cascade_weight_multiplier'=>'float'], 'fann_set_error_log' => ['void', 'errdat'=>'resource', 'log_file'=>'string'], 'fann_set_input_scaling_params' => ['bool', 'ann'=>'resource', 'train_data'=>'resource', 'new_input_min'=>'float', 'new_input_max'=>'float'], 'fann_set_learning_momentum' => ['bool', 'ann'=>'resource', 'learning_momentum'=>'float'], 'fann_set_learning_rate' => ['bool', 'ann'=>'resource', 'learning_rate'=>'float'], 'fann_set_output_scaling_params' => ['bool', 'ann'=>'resource', 'train_data'=>'resource', 'new_output_min'=>'float', 'new_output_max'=>'float'], 'fann_set_quickprop_decay' => ['bool', 'ann'=>'resource', 'quickprop_decay'=>'float'], 'fann_set_quickprop_mu' => ['bool', 'ann'=>'resource', 'quickprop_mu'=>'float'], 'fann_set_rprop_decrease_factor' => ['bool', 'ann'=>'resource', 'rprop_decrease_factor'=>'float'], 'fann_set_rprop_delta_max' => ['bool', 'ann'=>'resource', 'rprop_delta_max'=>'float'], 'fann_set_rprop_delta_min' => ['bool', 'ann'=>'resource', 'rprop_delta_min'=>'float'], 'fann_set_rprop_delta_zero' => ['bool', 'ann'=>'resource', 'rprop_delta_zero'=>'float'], 'fann_set_rprop_increase_factor' => ['bool', 'ann'=>'resource', 'rprop_increase_factor'=>'float'], 'fann_set_sarprop_step_error_shift' => ['bool', 'ann'=>'resource', 'sarprop_step_error_shift'=>'float'], 'fann_set_sarprop_step_error_threshold_factor' => ['bool', 'ann'=>'resource', 'sarprop_step_error_threshold_factor'=>'float'], 'fann_set_sarprop_temperature' => ['bool', 'ann'=>'resource', 'sarprop_temperature'=>'float'], 'fann_set_sarprop_weight_decay_shift' => ['bool', 'ann'=>'resource', 'sarprop_weight_decay_shift'=>'float'], 'fann_set_scaling_params' => ['bool', 'ann'=>'resource', 'train_data'=>'resource', 'new_input_min'=>'float', 'new_input_max'=>'float', 'new_output_min'=>'float', 'new_output_max'=>'float'], 'fann_set_train_error_function' => ['bool', 'ann'=>'resource', 'error_function'=>'int'], 'fann_set_train_stop_function' => ['bool', 'ann'=>'resource', 'stop_function'=>'int'], 'fann_set_training_algorithm' => ['bool', 'ann'=>'resource', 'training_algorithm'=>'int'], 'fann_set_weight' => ['bool', 'ann'=>'resource', 'from_neuron'=>'int', 'to_neuron'=>'int', 'weight'=>'float'], 'fann_set_weight_array' => ['bool', 'ann'=>'resource', 'connections'=>'array'], 'fann_shuffle_train_data' => ['bool', 'train_data'=>'resource'], 'fann_subset_train_data' => ['resource', 'data'=>'resource', 'pos'=>'int', 'length'=>'int'], 'fann_test' => ['bool', 'ann'=>'resource', 'input'=>'array', 'desired_output'=>'array'], 'fann_test_data' => ['float', 'ann'=>'resource', 'data'=>'resource'], 'fann_train' => ['bool', 'ann'=>'resource', 'input'=>'array', 'desired_output'=>'array'], 'fann_train_epoch' => ['float', 'ann'=>'resource', 'data'=>'resource'], 'fann_train_on_data' => ['bool', 'ann'=>'resource', 'data'=>'resource', 'max_epochs'=>'int', 'epochs_between_reports'=>'int', 'desired_error'=>'float'], 'fann_train_on_file' => ['bool', 'ann'=>'resource', 'filename'=>'string', 'max_epochs'=>'int', 'epochs_between_reports'=>'int', 'desired_error'=>'float'], 'FANNConnection::__construct' => ['void', 'from_neuron'=>'int', 'to_neuron'=>'int', 'weight'=>'float'], 'FANNConnection::getFromNeuron' => ['int'], 'FANNConnection::getToNeuron' => ['int'], 'FANNConnection::getWeight' => ['void'], 'FANNConnection::setWeight' => ['bool', 'weight'=>'float'], 'fastcgi_finish_request' => ['bool'], 'fbsql_affected_rows' => ['int', 'link_identifier='=>'?resource'], 'fbsql_autocommit' => ['bool', 'link_identifier'=>'resource', 'onoff='=>'bool'], 'fbsql_blob_size' => ['int', 'blob_handle'=>'string', 'link_identifier='=>'?resource'], 'fbsql_change_user' => ['bool', 'user'=>'string', 'password'=>'string', 'database='=>'string', 'link_identifier='=>'?resource'], 'fbsql_clob_size' => ['int', 'clob_handle'=>'string', 'link_identifier='=>'?resource'], 'fbsql_close' => ['bool', 'link_identifier='=>'?resource'], 'fbsql_commit' => ['bool', 'link_identifier='=>'?resource'], 'fbsql_connect' => ['resource', 'hostname='=>'string', 'username='=>'string', 'password='=>'string'], 'fbsql_create_blob' => ['string', 'blob_data'=>'string', 'link_identifier='=>'?resource'], 'fbsql_create_clob' => ['string', 'clob_data'=>'string', 'link_identifier='=>'?resource'], 'fbsql_create_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'?resource', 'database_options='=>'string'], 'fbsql_data_seek' => ['bool', 'result'=>'resource', 'row_number'=>'int'], 'fbsql_database' => ['string', 'link_identifier'=>'resource', 'database='=>'string'], 'fbsql_database_password' => ['string', 'link_identifier'=>'resource', 'database_password='=>'string'], 'fbsql_db_query' => ['resource', 'database'=>'string', 'query'=>'string', 'link_identifier='=>'?resource'], 'fbsql_db_status' => ['int', 'database_name'=>'string', 'link_identifier='=>'?resource'], 'fbsql_drop_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'?resource'], 'fbsql_errno' => ['int', 'link_identifier='=>'?resource'], 'fbsql_error' => ['string', 'link_identifier='=>'?resource'], 'fbsql_fetch_array' => ['array', 'result'=>'resource', 'result_type='=>'int'], 'fbsql_fetch_assoc' => ['array', 'result'=>'resource'], 'fbsql_fetch_field' => ['object', 'result'=>'resource', 'field_offset='=>'int'], 'fbsql_fetch_lengths' => ['array', 'result'=>'resource'], 'fbsql_fetch_object' => ['object', 'result'=>'resource'], 'fbsql_fetch_row' => ['array', 'result'=>'resource'], 'fbsql_field_flags' => ['string', 'result'=>'resource', 'field_offset='=>'int'], 'fbsql_field_len' => ['int', 'result'=>'resource', 'field_offset='=>'int'], 'fbsql_field_name' => ['string', 'result'=>'resource', 'field_index='=>'int'], 'fbsql_field_seek' => ['bool', 'result'=>'resource', 'field_offset='=>'int'], 'fbsql_field_table' => ['string', 'result'=>'resource', 'field_offset='=>'int'], 'fbsql_field_type' => ['string', 'result'=>'resource', 'field_offset='=>'int'], 'fbsql_free_result' => ['bool', 'result'=>'resource'], 'fbsql_get_autostart_info' => ['array', 'link_identifier='=>'?resource'], 'fbsql_hostname' => ['string', 'link_identifier'=>'resource', 'host_name='=>'string'], 'fbsql_insert_id' => ['int', 'link_identifier='=>'?resource'], 'fbsql_list_dbs' => ['resource', 'link_identifier='=>'?resource'], 'fbsql_list_fields' => ['resource', 'database_name'=>'string', 'table_name'=>'string', 'link_identifier='=>'?resource'], 'fbsql_list_tables' => ['resource', 'database'=>'string', 'link_identifier='=>'?resource'], 'fbsql_next_result' => ['bool', 'result'=>'resource'], 'fbsql_num_fields' => ['int', 'result'=>'resource'], 'fbsql_num_rows' => ['int', 'result'=>'resource'], 'fbsql_password' => ['string', 'link_identifier'=>'resource', 'password='=>'string'], 'fbsql_pconnect' => ['resource', 'hostname='=>'string', 'username='=>'string', 'password='=>'string'], 'fbsql_query' => ['resource', 'query'=>'string', 'link_identifier='=>'?resource', 'batch_size='=>'int'], 'fbsql_read_blob' => ['string', 'blob_handle'=>'string', 'link_identifier='=>'?resource'], 'fbsql_read_clob' => ['string', 'clob_handle'=>'string', 'link_identifier='=>'?resource'], 'fbsql_result' => ['mixed', 'result'=>'resource', 'row='=>'int', 'field='=>'mixed'], 'fbsql_rollback' => ['bool', 'link_identifier='=>'?resource'], 'fbsql_rows_fetched' => ['int', 'result'=>'resource'], 'fbsql_select_db' => ['bool', 'database_name='=>'string', 'link_identifier='=>'?resource'], 'fbsql_set_characterset' => ['void', 'link_identifier'=>'resource', 'characterset'=>'int', 'in_out_both='=>'int'], 'fbsql_set_lob_mode' => ['bool', 'result'=>'resource', 'lob_mode'=>'int'], 'fbsql_set_password' => ['bool', 'link_identifier'=>'resource', 'user'=>'string', 'password'=>'string', 'old_password'=>'string'], 'fbsql_set_transaction' => ['void', 'link_identifier'=>'resource', 'locking'=>'int', 'isolation'=>'int'], 'fbsql_start_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'?resource', 'database_options='=>'string'], 'fbsql_stop_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'?resource'], 'fbsql_table_name' => ['string', 'result'=>'resource', 'index'=>'int'], 'fbsql_username' => ['string', 'link_identifier'=>'resource', 'username='=>'string'], 'fbsql_warnings' => ['bool', 'onoff='=>'bool'], 'fclose' => ['bool', 'fp'=>'resource'], 'fdf_add_doc_javascript' => ['bool', 'fdf_document'=>'resource', 'script_name'=>'string', 'script_code'=>'string'], 'fdf_add_template' => ['bool', 'fdf_document'=>'resource', 'newpage'=>'int', 'filename'=>'string', 'template'=>'string', 'rename'=>'int'], 'fdf_close' => ['void', 'fdf_document'=>'resource'], 'fdf_create' => ['resource'], 'fdf_enum_values' => ['bool', 'fdf_document'=>'resource', 'function'=>'callable', 'userdata='=>'mixed'], 'fdf_errno' => ['int'], 'fdf_error' => ['string', 'error_code='=>'int'], 'fdf_get_ap' => ['bool', 'fdf_document'=>'resource', 'field'=>'string', 'face'=>'int', 'filename'=>'string'], 'fdf_get_attachment' => ['array', 'fdf_document'=>'resource', 'fieldname'=>'string', 'savepath'=>'string'], 'fdf_get_encoding' => ['string', 'fdf_document'=>'resource'], 'fdf_get_file' => ['string', 'fdf_document'=>'resource'], 'fdf_get_flags' => ['int', 'fdf_document'=>'resource', 'fieldname'=>'string', 'whichflags'=>'int'], 'fdf_get_opt' => ['mixed', 'fdf_document'=>'resource', 'fieldname'=>'string', 'element='=>'int'], 'fdf_get_status' => ['string', 'fdf_document'=>'resource'], 'fdf_get_value' => ['mixed', 'fdf_document'=>'resource', 'fieldname'=>'string', 'which='=>'int'], 'fdf_get_version' => ['string', 'fdf_document='=>'resource'], 'fdf_header' => ['void'], 'fdf_next_field_name' => ['string', 'fdf_document'=>'resource', 'fieldname='=>'string'], 'fdf_open' => ['resource|false', 'filename'=>'string'], 'fdf_open_string' => ['resource', 'fdf_data'=>'string'], 'fdf_remove_item' => ['bool', 'fdf_document'=>'resource', 'fieldname'=>'string', 'item'=>'int'], 'fdf_save' => ['bool', 'fdf_document'=>'resource', 'filename='=>'string'], 'fdf_save_string' => ['string', 'fdf_document'=>'resource'], 'fdf_set_ap' => ['bool', 'fdf_document'=>'resource', 'field_name'=>'string', 'face'=>'int', 'filename'=>'string', 'page_number'=>'int'], 'fdf_set_encoding' => ['bool', 'fdf_document'=>'resource', 'encoding'=>'string'], 'fdf_set_file' => ['bool', 'fdf_document'=>'resource', 'url'=>'string', 'target_frame='=>'string'], 'fdf_set_flags' => ['bool', 'fdf_document'=>'resource', 'fieldname'=>'string', 'whichflags'=>'int', 'newflags'=>'int'], 'fdf_set_javascript_action' => ['bool', 'fdf_document'=>'resource', 'fieldname'=>'string', 'trigger'=>'int', 'script'=>'string'], 'fdf_set_on_import_javascript' => ['bool', 'fdf_document'=>'resource', 'script'=>'string', 'before_data_import'=>'bool'], 'fdf_set_opt' => ['bool', 'fdf_document'=>'resource', 'fieldname'=>'string', 'element'=>'int', 'str1'=>'string', 'str2'=>'string'], 'fdf_set_status' => ['bool', 'fdf_document'=>'resource', 'status'=>'string'], 'fdf_set_submit_form_action' => ['bool', 'fdf_document'=>'resource', 'fieldname'=>'string', 'trigger'=>'int', 'script'=>'string', 'flags'=>'int'], 'fdf_set_target_frame' => ['bool', 'fdf_document'=>'resource', 'frame_name'=>'string'], 'fdf_set_value' => ['bool', 'fdf_document'=>'resource', 'fieldname'=>'string', 'value'=>'mixed', 'isname='=>'int'], 'fdf_set_version' => ['bool', 'fdf_document'=>'resource', 'version'=>'string'], 'feof' => ['bool', 'fp'=>'resource'], 'fflush' => ['bool', 'fp'=>'resource'], 'ffmpeg_animated_gif::__construct' => ['void', 'output_file_path'=>'string', 'width'=>'int', 'height'=>'int', 'frame_rate'=>'int', 'loop_count='=>'int'], 'ffmpeg_animated_gif::addFrame' => ['', 'frame_to_add'=>'ffmpeg_frame'], 'ffmpeg_frame::__construct' => ['void', 'gd_image'=>'resource'], 'ffmpeg_frame::crop' => ['', 'crop_top'=>'int', 'crop_bottom='=>'int', 'crop_left='=>'int', 'crop_right='=>'int'], 'ffmpeg_frame::getHeight' => ['int'], 'ffmpeg_frame::getPresentationTimestamp' => ['int'], 'ffmpeg_frame::getPTS' => ['int'], 'ffmpeg_frame::getWidth' => ['int'], 'ffmpeg_frame::resize' => ['', 'width'=>'int', 'height'=>'int', 'crop_top='=>'int', 'crop_bottom='=>'int', 'crop_left='=>'int', 'crop_right='=>'int'], 'ffmpeg_frame::toGDImage' => ['resource'], 'ffmpeg_movie::__construct' => ['void', 'path_to_media'=>'string', 'persistent'=>'bool'], 'ffmpeg_movie::getArtist' => ['string'], 'ffmpeg_movie::getAudioBitRate' => ['int'], 'ffmpeg_movie::getAudioChannels' => ['int'], 'ffmpeg_movie::getAudioCodec' => ['string'], 'ffmpeg_movie::getAudioSampleRate' => ['int'], 'ffmpeg_movie::getAuthor' => ['string'], 'ffmpeg_movie::getBitRate' => ['int'], 'ffmpeg_movie::getComment' => ['string'], 'ffmpeg_movie::getCopyright' => ['string'], 'ffmpeg_movie::getDuration' => ['int'], 'ffmpeg_movie::getFilename' => ['string'], 'ffmpeg_movie::getFrame' => ['ffmpeg_frame', 'framenumber'=>'int'], 'ffmpeg_movie::getFrameCount' => ['int'], 'ffmpeg_movie::getFrameHeight' => ['int'], 'ffmpeg_movie::getFrameNumber' => ['int'], 'ffmpeg_movie::getFrameRate' => ['int'], 'ffmpeg_movie::getFrameWidth' => ['int'], 'ffmpeg_movie::getGenre' => ['string'], 'ffmpeg_movie::getNextKeyFrame' => ['ffmpeg_frame'], 'ffmpeg_movie::getPixelFormat' => [''], 'ffmpeg_movie::getTitle' => ['string'], 'ffmpeg_movie::getTrackNumber' => ['int|string'], 'ffmpeg_movie::getVideoBitRate' => ['int'], 'ffmpeg_movie::getVideoCodec' => ['string'], 'ffmpeg_movie::getYear' => ['int|string'], 'ffmpeg_movie::hasAudio' => ['bool'], 'ffmpeg_movie::hasVideo' => ['bool'], 'fgetc' => ['string|false', 'fp'=>'resource'], 'fgetcsv' => ['list|array{0: null}|false|null', 'fp'=>'resource', 'length='=>'0|positive-int|null', 'delimiter='=>'string', 'enclosure='=>'string', 'escape='=>'string'], 'fgets' => ['string|false', 'fp'=>'resource', 'length='=>'0|positive-int'], 'fgetss' => ['string|false', 'fp'=>'resource', 'length='=>'0|positive-int', 'allowable_tags='=>'string'], 'file' => ['list|false', 'filename'=>'string', 'flags='=>'int', 'context='=>'resource'], 'file_exists' => ['bool', 'filename'=>'string'], 'file_get_contents' => ['string|false', 'filename'=>'string', 'use_include_path='=>'bool', 'context='=>'?resource', 'offset='=>'int', 'maxlen='=>'0|positive-int'], 'file_put_contents' => ['0|positive-int|false', 'file'=>'string', 'data'=>'mixed', 'flags='=>'int', 'context='=>'?resource'], 'fileatime' => ['int|false', 'filename'=>'string'], 'filectime' => ['int|false', 'filename'=>'string'], 'filegroup' => ['int|false', 'filename'=>'string'], 'fileinode' => ['int|false', 'filename'=>'string'], 'filemtime' => ['int|false', 'filename'=>'string'], 'fileowner' => ['int|false', 'filename'=>'string'], 'fileperms' => ['int|false', 'filename'=>'string'], 'filepro' => ['bool', 'directory'=>'string'], 'filepro_fieldcount' => ['int'], 'filepro_fieldname' => ['string', 'field_number'=>'int'], 'filepro_fieldtype' => ['string', 'field_number'=>'int'], 'filepro_fieldwidth' => ['int', 'field_number'=>'int'], 'filepro_retrieve' => ['string', 'row_number'=>'int', 'field_number'=>'int'], 'filepro_rowcount' => ['int'], 'filesize' => ['0|positive-int|false', 'filename'=>'string'], 'FilesystemIterator::__construct' => ['void', 'path'=>'string', 'flags='=>'int'], 'FilesystemIterator::current' => ['string|SplFileInfo'], 'FilesystemIterator::getFlags' => ['int'], 'FilesystemIterator::key' => ['string'], 'FilesystemIterator::next' => ['void'], 'FilesystemIterator::rewind' => ['void'], 'FilesystemIterator::setFlags' => ['void', 'flags='=>'int'], 'filetype' => ['string|false', 'filename'=>'string'], 'filter_has_var' => ['bool', 'type'=>'int', 'variable_name'=>'string'], 'filter_id' => ['int|false', 'filtername'=>'string'], 'filter_input' => ['mixed', 'type'=>'int', 'variable_name'=>'string', 'filter='=>'int', 'options='=>'array|int'], 'filter_input_array' => ['array|false|null', 'type'=>'int', 'definition='=>'int|array', 'add_empty='=>'bool'], 'filter_list' => ['non-empty-list'], 'filter_var' => ['mixed', 'variable'=>'mixed', 'filter='=>'int', 'options='=>'mixed'], 'filter_var_array' => ['array|false|null', 'data'=>'array', 'definition='=>'mixed', 'add_empty='=>'bool'], 'FilterIterator::__construct' => ['void', 'iterator'=>'Iterator'], 'FilterIterator::accept' => ['bool'], 'FilterIterator::current' => ['mixed'], 'FilterIterator::getInnerIterator' => ['Iterator'], 'FilterIterator::key' => ['mixed'], 'FilterIterator::next' => ['void'], 'FilterIterator::rewind' => ['void'], 'FilterIterator::valid' => ['bool'], 'finfo::__construct' => ['void', 'options='=>'int', 'magic_file='=>'string'], 'finfo::finfo' => ['void', 'options='=>'int', 'magic_file='=>'string'], 'finfo::buffer' => ['string|false', 'string'=>'string', 'options='=>'int', 'context='=>'resource'], 'finfo::file' => ['string|false', 'file_name'=>'string', 'options='=>'int', 'context='=>'resource'], 'finfo::set_flags' => ['bool', 'options'=>'int'], 'finfo_buffer' => ['string|false', 'finfo'=>'resource', 'string'=>'string', 'options='=>'int', 'context='=>'resource'], 'finfo_close' => ['bool', 'finfo'=>'resource'], 'finfo_file' => ['string|false', 'finfo'=>'resource', 'file_name'=>'string', 'options='=>'int', 'context='=>'resource'], 'finfo_open' => ['resource|false', 'options='=>'int', 'arg='=>'string'], 'finfo_set_flags' => ['bool', 'finfo'=>'resource', 'options'=>'int'], 'floatval' => ['float', 'var'=>'scalar|array|resource|null'], 'flock' => ['bool', 'fp'=>'resource', 'operation'=>'int', '&w_wouldblock='=>'int'], 'floor' => ['__benevolent', 'number'=>'float'], 'flush' => ['void'], 'fmod' => ['float', 'x'=>'float', 'y'=>'float'], 'fnmatch' => ['bool', 'pattern'=>'string', 'filename'=>'string', 'flags='=>'int'], 'fopen' => ['resource|false', 'filename'=>'string', 'mode'=>'string', 'use_include_path='=>'bool', 'context='=>'resource|null'], 'forward_static_call' => ['mixed', 'function'=>'callable', '...parameters='=>'mixed'], 'forward_static_call_array' => ['mixed', 'function'=>'callable', 'parameters'=>'array'], 'fpassthru' => ['0|positive-int|false', 'fp'=>'resource'], 'fpm_get_status' => ['array{pool: string, process-manager: \'dynamic\'|\'ondemand\'|\'static\', start-time: int<0, max>, start-since: int<0, max>, accepted-conn: int<0, max>, listen-queue: int<0, max>, max-listen-queue: int<0, max>, listen-queue-len: int<0, max>, idle-processes: int<0, max>, active-processes: int<1, max>, total-processes: int<1, max>, max-active-processes: int<1, max>, max-children-reached: 0|1, slow-requests: int<0, max>, procs: array, state: \'Idle\'|\'Running\', start-time: int<0, max>, start-since: int<0, max>, requests: int<0, max>, request-duration: int<0, max>, request-method: string, request-uri: string, query-string: string, request-length: int<0, max>, user: string, script: string, last-request-cpu: float, last-request-memory: int<0, max>}>}|false'], 'fprintf' => ['int', 'stream'=>'resource', 'format'=>'string', '...values='=>'__stringAndStringable|int|float|null|bool'], 'fputcsv' => ['0|positive-int|false', 'fp'=>'resource', 'fields'=>'array', 'delimiter='=>'string', 'enclosure='=>'string', 'escape_char='=>'string'], 'fputs' => ['0|positive-int|false', 'fp'=>'resource', 'str'=>'string', 'length='=>'0|positive-int'], 'fread' => ['string', 'fp'=>'resource', 'length'=>'positive-int'], 'frenchtojd' => ['int', 'month'=>'int', 'day'=>'int', 'year'=>'int'], 'fribidi_log2vis' => ['string', 'str'=>'string', 'direction'=>'string', 'charset'=>'int'], 'fscanf' => ['list|int|false', 'stream'=>'resource', 'format'=>'string', '&...w_vars='=>'string|int|float|null'], 'fseek' => ['0|-1', 'fp'=>'resource', 'offset'=>'int', 'whence='=>'int'], 'fsockopen' => ['resource|false', 'hostname'=>'string', 'port='=>'int', '&w_errno='=>'int', '&w_errstr='=>'string', 'timeout='=>'float'], 'fstat' => ['array|false', 'fp'=>'resource'], 'ftell' => ['int|false', 'fp'=>'resource'], 'ftok' => ['int', 'pathname'=>'string', 'proj'=>'string'], 'ftp_alloc' => ['bool', 'stream'=>'resource', 'size'=>'int', '&w_response='=>'string'], 'ftp_append' => ['bool', 'ftp'=>'resource', 'remote_file'=>'string', 'local_file'=>'string', 'mode='=>'int'], 'ftp_cdup' => ['bool', 'stream'=>'resource'], 'ftp_chdir' => ['bool', 'stream'=>'resource', 'directory'=>'string'], 'ftp_chmod' => ['int|false', 'stream'=>'resource', 'mode'=>'int', 'filename'=>'string'], 'ftp_close' => ['bool', 'stream'=>'resource'], 'ftp_connect' => ['resource|false', 'host'=>'string', 'port='=>'int', 'timeout='=>'int'], 'ftp_delete' => ['bool', 'stream'=>'resource', 'file'=>'string'], 'ftp_exec' => ['bool', 'stream'=>'resource', 'command'=>'string'], 'ftp_fget' => ['bool', 'stream'=>'resource', 'fp'=>'resource', 'remote_file'=>'string', 'mode='=>'int', 'resumepos='=>'int'], 'ftp_fput' => ['bool', 'stream'=>'resource', 'remote_file'=>'string', 'fp'=>'resource', 'mode='=>'int', 'startpos='=>'int'], 'ftp_get' => ['bool', 'stream'=>'resource', 'local_file'=>'string', 'remote_file'=>'string', 'mode='=>'int', 'resume_pos='=>'int'], 'ftp_get_option' => ['mixed', 'stream'=>'resource', 'option'=>'int'], 'ftp_login' => ['bool', 'stream'=>'resource', 'username'=>'string', 'password'=>'string'], 'ftp_mdtm' => ['int', 'stream'=>'resource', 'filename'=>'string'], 'ftp_mkdir' => ['string|false', 'stream'=>'resource', 'directory'=>'string'], 'ftp_mlsd' => ['array|false', 'ftp_stream'=>'resource', 'directory'=>'string'], 'ftp_nb_continue' => ['int', 'stream'=>'resource'], 'ftp_nb_fget' => ['int', 'stream'=>'resource', 'fp'=>'resource', 'remote_file'=>'string', 'mode='=>'int', 'resumepos='=>'int'], 'ftp_nb_fput' => ['int', 'stream'=>'resource', 'remote_file'=>'string', 'fp'=>'resource', 'mode='=>'int', 'startpos='=>'int'], 'ftp_nb_get' => ['int|false', 'stream'=>'resource', 'local_file'=>'string', 'remote_file'=>'string', 'mode='=>'int', 'resume_pos='=>'int'], 'ftp_nb_put' => ['int|false', 'stream'=>'resource', 'remote_file'=>'string', 'local_file'=>'string', 'mode='=>'int', 'startpos='=>'int'], 'ftp_nlist' => ['array|false', 'stream'=>'resource', 'directory'=>'string'], 'ftp_pasv' => ['bool', 'stream'=>'resource', 'pasv'=>'bool'], 'ftp_put' => ['bool', 'stream'=>'resource', 'remote_file'=>'string', 'local_file'=>'string', 'mode='=>'int', 'startpos='=>'int'], 'ftp_pwd' => ['string|false', 'stream'=>'resource'], 'ftp_raw' => ['array', 'stream'=>'resource', 'command'=>'string'], 'ftp_rawlist' => ['array|false', 'stream'=>'resource', 'directory'=>'string', 'recursive='=>'bool'], 'ftp_rename' => ['bool', 'stream'=>'resource', 'src'=>'string', 'dest'=>'string'], 'ftp_rmdir' => ['bool', 'stream'=>'resource', 'directory'=>'string'], 'ftp_set_option' => ['bool', 'stream'=>'resource', 'option'=>'int', 'value'=>'mixed'], 'ftp_site' => ['bool', 'stream'=>'resource', 'cmd'=>'string'], 'ftp_size' => ['int', 'stream'=>'resource', 'filename'=>'string'], 'ftp_ssl_connect' => ['resource|false', 'host'=>'string', 'port='=>'int', 'timeout='=>'int'], 'ftp_systype' => ['string|false', 'stream'=>'resource'], 'ftruncate' => ['bool', 'fp'=>'resource', 'size'=>'0|positive-int'], 'func_get_arg' => ['mixed', 'arg_num'=>'0|positive-int'], 'func_get_args' => ['list'], 'func_num_args' => ['0|positive-int'], 'function_exists' => ['bool', 'function_name'=>'string'], 'fwrite' => ['0|positive-int|false', 'fp'=>'resource', 'str'=>'string', 'length='=>'0|positive-int'], 'gc_collect_cycles' => ['int'], 'gc_disable' => ['void'], 'gc_enable' => ['void'], 'gc_enabled' => ['bool'], 'gc_mem_caches' => ['int'], 'gc_status' => ['array{runs:int,collected:int,threshold:int,roots:int}'], 'gd_info' => ['array'], 'gearman_bugreport' => [''], 'gearman_client_add_options' => ['', 'client_object'=>'', 'option'=>''], 'gearman_client_add_server' => ['', 'client_object'=>'', 'host'=>'', 'port'=>''], 'gearman_client_add_servers' => ['', 'client_object'=>'', 'servers'=>''], 'gearman_client_add_task' => ['', 'client_object'=>'', 'function_name'=>'', 'workload'=>'', 'context'=>'', 'unique'=>''], 'gearman_client_add_task_background' => ['', 'client_object'=>'', 'function_name'=>'', 'workload'=>'', 'context'=>'', 'unique'=>''], 'gearman_client_add_task_high' => ['', 'client_object'=>'', 'function_name'=>'', 'workload'=>'', 'context'=>'', 'unique'=>''], 'gearman_client_add_task_high_background' => ['', 'client_object'=>'', 'function_name'=>'', 'workload'=>'', 'context'=>'', 'unique'=>''], 'gearman_client_add_task_low' => ['', 'client_object'=>'', 'function_name'=>'', 'workload'=>'', 'context'=>'', 'unique'=>''], 'gearman_client_add_task_low_background' => ['', 'client_object'=>'', 'function_name'=>'', 'workload'=>'', 'context'=>'', 'unique'=>''], 'gearman_client_add_task_status' => ['', 'client_object'=>'', 'job_handle'=>'', 'context'=>''], 'gearman_client_clear_fn' => ['', 'client_object'=>''], 'gearman_client_clone' => ['', 'client_object'=>''], 'gearman_client_context' => ['', 'client_object'=>''], 'gearman_client_create' => ['', 'client_object'=>''], 'gearman_client_do' => ['', 'client_object'=>'', 'function_name'=>'', 'workload'=>'', 'unique'=>''], 'gearman_client_do_background' => ['', 'client_object'=>'', 'function_name'=>'', 'workload'=>'', 'unique'=>''], 'gearman_client_do_high' => ['', 'client_object'=>'', 'function_name'=>'', 'workload'=>'', 'unique'=>''], 'gearman_client_do_high_background' => ['', 'client_object'=>'', 'function_name'=>'', 'workload'=>'', 'unique'=>''], 'gearman_client_do_job_handle' => ['', 'client_object'=>''], 'gearman_client_do_low' => ['', 'client_object'=>'', 'function_name'=>'', 'workload'=>'', 'unique'=>''], 'gearman_client_do_low_background' => ['', 'client_object'=>'', 'function_name'=>'', 'workload'=>'', 'unique'=>''], 'gearman_client_do_normal' => ['', 'client_object'=>'', 'function_name'=>'string', 'workload'=>'string', 'unique'=>'string'], 'gearman_client_do_status' => ['', 'client_object'=>''], 'gearman_client_echo' => ['', 'client_object'=>'', 'workload'=>''], 'gearman_client_errno' => ['', 'client_object'=>''], 'gearman_client_error' => ['', 'client_object'=>''], 'gearman_client_job_status' => ['', 'client_object'=>'', 'job_handle'=>''], 'gearman_client_options' => ['', 'client_object'=>''], 'gearman_client_remove_options' => ['', 'client_object'=>'', 'option'=>''], 'gearman_client_return_code' => ['', 'client_object'=>''], 'gearman_client_run_tasks' => ['', 'data'=>''], 'gearman_client_set_complete_fn' => ['', 'client_object'=>'', 'callback'=>''], 'gearman_client_set_context' => ['', 'client_object'=>'', 'context'=>''], 'gearman_client_set_created_fn' => ['', 'client_object'=>'', 'callback'=>''], 'gearman_client_set_data_fn' => ['', 'client_object'=>'', 'callback'=>''], 'gearman_client_set_exception_fn' => ['', 'client_object'=>'', 'callback'=>''], 'gearman_client_set_fail_fn' => ['', 'client_object'=>'', 'callback'=>''], 'gearman_client_set_options' => ['', 'client_object'=>'', 'option'=>''], 'gearman_client_set_status_fn' => ['', 'client_object'=>'', 'callback'=>''], 'gearman_client_set_timeout' => ['', 'client_object'=>'', 'timeout'=>''], 'gearman_client_set_warning_fn' => ['', 'client_object'=>'', 'callback'=>''], 'gearman_client_set_workload_fn' => ['', 'client_object'=>'', 'callback'=>''], 'gearman_client_timeout' => ['', 'client_object'=>''], 'gearman_client_wait' => ['', 'client_object'=>''], 'gearman_job_function_name' => ['', 'job_object'=>''], 'gearman_job_handle' => ['string'], 'gearman_job_return_code' => ['', 'job_object'=>''], 'gearman_job_send_complete' => ['', 'job_object'=>'', 'result'=>''], 'gearman_job_send_data' => ['', 'job_object'=>'', 'data'=>''], 'gearman_job_send_exception' => ['', 'job_object'=>'', 'exception'=>''], 'gearman_job_send_fail' => ['', 'job_object'=>''], 'gearman_job_send_status' => ['', 'job_object'=>'', 'numerator'=>'', 'denominator'=>''], 'gearman_job_send_warning' => ['', 'job_object'=>'', 'warning'=>''], 'gearman_job_status' => ['array', 'job_handle'=>'string'], 'gearman_job_unique' => ['', 'job_object'=>''], 'gearman_job_workload' => ['', 'job_object'=>''], 'gearman_job_workload_size' => ['', 'job_object'=>''], 'gearman_task_data' => ['', 'task_object'=>''], 'gearman_task_data_size' => ['', 'task_object'=>''], 'gearman_task_denominator' => ['', 'task_object'=>''], 'gearman_task_function_name' => ['', 'task_object'=>''], 'gearman_task_is_known' => ['', 'task_object'=>''], 'gearman_task_is_running' => ['', 'task_object'=>''], 'gearman_task_job_handle' => ['', 'task_object'=>''], 'gearman_task_numerator' => ['', 'task_object'=>''], 'gearman_task_recv_data' => ['', 'task_object'=>'', 'data_len'=>''], 'gearman_task_return_code' => ['', 'task_object'=>''], 'gearman_task_send_workload' => ['', 'task_object'=>'', 'data'=>''], 'gearman_task_unique' => ['', 'task_object'=>''], 'gearman_verbose_name' => ['', 'verbose'=>''], 'gearman_version' => [''], 'gearman_worker_add_function' => ['', 'worker_object'=>'', 'function_name'=>'', 'function'=>'', 'data'=>'', 'timeout'=>''], 'gearman_worker_add_options' => ['', 'worker_object'=>'', 'option'=>''], 'gearman_worker_add_server' => ['', 'worker_object'=>'', 'host'=>'', 'port'=>''], 'gearman_worker_add_servers' => ['', 'worker_object'=>'', 'servers'=>''], 'gearman_worker_clone' => ['', 'worker_object'=>''], 'gearman_worker_create' => [''], 'gearman_worker_echo' => ['', 'worker_object'=>'', 'workload'=>''], 'gearman_worker_errno' => ['', 'worker_object'=>''], 'gearman_worker_error' => ['', 'worker_object'=>''], 'gearman_worker_grab_job' => ['', 'worker_object'=>''], 'gearman_worker_options' => ['', 'worker_object'=>''], 'gearman_worker_register' => ['', 'worker_object'=>'', 'function_name'=>'', 'timeout'=>''], 'gearman_worker_remove_options' => ['', 'worker_object'=>'', 'option'=>''], 'gearman_worker_return_code' => ['', 'worker_object'=>''], 'gearman_worker_set_options' => ['', 'worker_object'=>'', 'option'=>''], 'gearman_worker_set_timeout' => ['', 'worker_object'=>'', 'timeout'=>''], 'gearman_worker_timeout' => ['', 'worker_object'=>''], 'gearman_worker_unregister' => ['', 'worker_object'=>'', 'function_name'=>''], 'gearman_worker_unregister_all' => ['', 'worker_object'=>''], 'gearman_worker_wait' => ['', 'worker_object'=>''], 'gearman_worker_work' => ['', 'worker_object'=>''], 'GearmanClient::__construct' => ['void'], 'GearmanClient::addOptions' => ['bool', 'options'=>'int'], 'GearmanClient::addServer' => ['bool', 'host='=>'string', 'port='=>'int'], 'GearmanClient::addServers' => ['bool', 'servers='=>'string'], 'GearmanClient::addTask' => ['GearmanTask', 'function_name'=>'string', 'workload'=>'string', 'context='=>'mixed', 'unique='=>'string'], 'GearmanClient::addTaskBackground' => ['GearmanTask', 'function_name'=>'string', 'workload'=>'string', 'context='=>'mixed', 'unique='=>'string'], 'GearmanClient::addTaskHigh' => ['GearmanTask', 'function_name'=>'string', 'workload'=>'string', 'context='=>'mixed', 'unique='=>'string'], 'GearmanClient::addTaskHighBackground' => ['GearmanTask', 'function_name'=>'string', 'workload'=>'string', 'context='=>'mixed', 'unique='=>'string'], 'GearmanClient::addTaskLow' => ['GearmanTask', 'function_name'=>'string', 'workload'=>'string', 'context='=>'mixed', 'unique='=>'string'], 'GearmanClient::addTaskLowBackground' => ['GearmanTask', 'function_name'=>'string', 'workload'=>'string', 'context='=>'mixed', 'unique='=>'string'], 'GearmanClient::addTaskStatus' => ['GearmanTask', 'job_handle'=>'string', 'context='=>'string'], 'GearmanClient::clearCallbacks' => ['bool'], 'GearmanClient::clone' => ['GearmanClient'], 'GearmanClient::context' => ['string'], 'GearmanClient::data' => ['string'], 'GearmanClient::do' => ['string', 'function_name'=>'string', 'workload'=>'string', 'unique='=>'string'], 'GearmanClient::doBackground' => ['string', 'function_name'=>'string', 'workload'=>'string', 'unique='=>'string'], 'GearmanClient::doHigh' => ['string', 'function_name'=>'string', 'workload'=>'string', 'unique='=>'string'], 'GearmanClient::doHighBackground' => ['string', 'function_name'=>'string', 'workload'=>'string', 'unique='=>'string'], 'GearmanClient::doJobHandle' => ['string'], 'GearmanClient::doLow' => ['string', 'function_name'=>'string', 'workload'=>'string', 'unique='=>'string'], 'GearmanClient::doLowBackground' => ['string', 'function_name'=>'string', 'workload'=>'string', 'unique='=>'string'], 'GearmanClient::doNormal' => ['string', 'function_name'=>'string', 'workload'=>'string', 'unique='=>'string'], 'GearmanClient::doStatus' => ['array'], 'GearmanClient::echo' => ['bool', 'workload'=>'string'], 'GearmanClient::error' => ['string'], 'GearmanClient::getErrno' => ['int'], 'GearmanClient::jobStatus' => ['array', 'job_handle'=>'string'], 'GearmanClient::options' => [''], 'GearmanClient::ping' => ['bool', 'workload'=>'string'], 'GearmanClient::removeOptions' => ['bool', 'options'=>'int'], 'GearmanClient::returnCode' => ['int'], 'GearmanClient::runTasks' => ['bool'], 'GearmanClient::setClientCallback' => ['void', 'callback'=>'callable'], 'GearmanClient::setCompleteCallback' => ['bool', 'callback'=>'callable'], 'GearmanClient::setContext' => ['bool', 'context'=>'string'], 'GearmanClient::setCreatedCallback' => ['bool', 'callback'=>'string'], 'GearmanClient::setData' => ['bool', 'data'=>'string'], 'GearmanClient::setDataCallback' => ['bool', 'callback'=>'callable'], 'GearmanClient::setExceptionCallback' => ['bool', 'callback'=>'callable'], 'GearmanClient::setFailCallback' => ['bool', 'callback'=>'callable'], 'GearmanClient::setOptions' => ['bool', 'options'=>'int'], 'GearmanClient::setStatusCallback' => ['bool', 'callback'=>'callable'], 'GearmanClient::setTimeout' => ['bool', 'timeout'=>'int'], 'GearmanClient::setWarningCallback' => ['bool', 'callback'=>'callable'], 'GearmanClient::setWorkloadCallback' => ['bool', 'callback'=>'callable'], 'GearmanClient::timeout' => ['int'], 'GearmanClient::wait' => [''], 'GearmanJob::__construct' => ['void'], 'GearmanJob::complete' => ['bool', 'result'=>'string'], 'GearmanJob::data' => ['bool', 'data'=>'string'], 'GearmanJob::exception' => ['bool', 'exception'=>'string'], 'GearmanJob::fail' => ['bool'], 'GearmanJob::functionName' => ['string'], 'GearmanJob::handle' => ['string'], 'GearmanJob::returnCode' => ['int'], 'GearmanJob::sendComplete' => ['bool', 'result'=>'string'], 'GearmanJob::sendData' => ['bool', 'data'=>'string'], 'GearmanJob::sendException' => ['bool', 'exception'=>'string'], 'GearmanJob::sendFail' => ['bool'], 'GearmanJob::sendStatus' => ['bool', 'numerator'=>'int', 'denominator'=>'int'], 'GearmanJob::sendWarning' => ['bool', 'warning'=>'string'], 'GearmanJob::setReturn' => ['bool', 'gearman_return_t'=>'string'], 'GearmanJob::status' => ['bool', 'numerator'=>'int', 'denominator'=>'int'], 'GearmanJob::unique' => ['string'], 'GearmanJob::warning' => ['bool', 'warning'=>'string'], 'GearmanJob::workload' => ['string'], 'GearmanJob::workloadSize' => ['int'], 'GearmanTask::__construct' => ['void'], 'GearmanTask::create' => ['GearmanTask'], 'GearmanTask::data' => ['string'], 'GearmanTask::dataSize' => ['int'], 'GearmanTask::function' => ['string'], 'GearmanTask::functionName' => ['string'], 'GearmanTask::isKnown' => ['bool'], 'GearmanTask::isRunning' => ['bool'], 'GearmanTask::jobHandle' => ['string'], 'GearmanTask::recvData' => ['array', 'data_len'=>'int'], 'GearmanTask::returnCode' => ['int'], 'GearmanTask::sendData' => ['int', 'data'=>'string'], 'GearmanTask::sendWorkload' => ['int', 'data'=>'string'], 'GearmanTask::taskDenominator' => ['int'], 'GearmanTask::taskNumerator' => ['int'], 'GearmanTask::unique' => ['string'], 'GearmanTask::uuid' => ['string'], 'GearmanWorker::__construct' => ['void'], 'GearmanWorker::addFunction' => ['bool', 'function_name'=>'string', 'function'=>'callable', 'context='=>'mixed', 'timeout='=>'int'], 'GearmanWorker::addOptions' => ['bool', 'option'=>'int'], 'GearmanWorker::addServer' => ['bool', 'host='=>'string', 'port='=>'int'], 'GearmanWorker::addServers' => ['bool', 'servers'=>'string'], 'GearmanWorker::clone' => ['void'], 'GearmanWorker::echo' => ['bool', 'workload'=>'string'], 'GearmanWorker::error' => ['string'], 'GearmanWorker::getErrno' => ['int'], 'GearmanWorker::grabJob' => [''], 'GearmanWorker::options' => ['int'], 'GearmanWorker::register' => ['bool', 'function_name'=>'string', 'timeout='=>'int'], 'GearmanWorker::removeOptions' => ['bool', 'option'=>'int'], 'GearmanWorker::returnCode' => ['int'], 'GearmanWorker::setId' => ['bool', 'id'=>'string'], 'GearmanWorker::setOptions' => ['bool', 'option'=>'int'], 'GearmanWorker::setTimeout' => ['bool', 'timeout'=>'int'], 'GearmanWorker::timeout' => ['int'], 'GearmanWorker::unregister' => ['bool', 'function_name'=>'string'], 'GearmanWorker::unregisterAll' => ['bool'], 'GearmanWorker::wait' => ['bool'], 'GearmanWorker::work' => ['bool'], 'Gender\Gender::__construct' => ['void', 'dsn='=>'string'], 'Gender\Gender::connect' => ['bool', 'dsn'=>'string'], 'Gender\Gender::country' => ['array', 'country'=>'int'], 'Gender\Gender::get' => ['int', 'name'=>'string', 'country='=>'int'], 'Gender\Gender::isNick' => ['array', 'name0'=>'string', 'name1'=>'string', 'country='=>'int'], 'Gender\Gender::similarNames' => ['array', 'name'=>'string', 'country='=>'int'], 'Generator::__wakeup' => ['void'], 'Generator::current' => ['mixed'], 'Generator::getReturn' => ['mixed'], 'Generator::key' => ['mixed'], 'Generator::next' => ['void'], 'Generator::rewind' => ['void'], 'Generator::send' => ['mixed', 'value'=>'mixed'], 'Generator::throw' => ['mixed', 'exception'=>'Exception|Throwable'], 'Generator::valid' => ['bool'], 'geoip_asnum_by_name' => ['string', 'hostname'=>'string'], 'geoip_continent_code_by_name' => ['string', 'hostname'=>'string'], 'geoip_country_code3_by_name' => ['string', 'hostname'=>'string'], 'geoip_country_code_by_name' => ['string', 'hostname'=>'string'], 'geoip_country_name_by_name' => ['string', 'hostname'=>'string'], 'geoip_database_info' => ['string', 'database='=>'int'], 'geoip_db_avail' => ['bool', 'database'=>'int'], 'geoip_db_filename' => ['string', 'database'=>'int'], 'geoip_db_get_all_info' => ['array'], 'geoip_domain_by_name' => ['string', 'hostname'=>'string'], 'geoip_id_by_name' => ['int', 'hostname'=>'string'], 'geoip_isp_by_name' => ['string', 'hostname'=>'string'], 'geoip_netspeedcell_by_name' => ['string', 'hostname'=>'string'], 'geoip_org_by_name' => ['string', 'hostname'=>'string'], 'geoip_record_by_name' => ['array', 'hostname'=>'string'], 'geoip_region_by_name' => ['array', 'hostname'=>'string'], 'geoip_region_name_by_code' => ['string', 'country_code'=>'string', 'region_code'=>'string'], 'geoip_setup_custom_directory' => ['void', 'path'=>'string'], 'geoip_time_zone_by_country_and_region' => ['string|false', 'country_code'=>'string', 'region_code='=>'string'], 'get_browser' => ['mixed', 'browser_name='=>'string', 'return_array='=>'bool'], 'get_call_stack' => [''], 'get_called_class' => ['class-string'], 'get_cfg_var' => ['mixed', 'option_name'=>'string'], 'get_class' => ['class-string', 'object='=>'object'], 'get_class_methods' => ['list', 'class'=>'mixed'], 'get_class_vars' => ['array', 'class_name'=>'string'], 'get_current_user' => ['string'], 'get_declared_classes' => ['list'], 'get_declared_interfaces' => ['list'], 'get_declared_traits' => ['list'], 'get_defined_constants' => ['array', 'categorize='=>'bool'], 'get_defined_functions' => ['array{internal:non-empty-list,user:list}', 'exclude_disabled='=>'bool'], 'get_defined_vars' => ['array'], 'get_extension_funcs' => ['list|false', 'extension_name'=>'string'], 'get_headers' => ['array|false', 'url'=>'string', 'format='=>'int', 'context='=>'resource'], 'get_html_translation_table' => ['array', 'table='=>'int', 'flags='=>'int', 'encoding='=>'string'], 'get_include_path' => ['__benevolent'], 'get_included_files' => ['list'], 'get_loaded_extensions' => ['list', 'zend_extensions='=>'bool'], 'get_magic_quotes_gpc' => ['false'], 'get_magic_quotes_runtime' => ['false'], 'get_meta_tags' => ['array|false', 'filename'=>'string', 'use_include_path='=>'bool'], 'get_object_vars' => ['array', 'obj'=>'object'], 'get_parent_class' => ['class-string|false', 'object='=>'mixed'], 'get_required_files' => ['list'], 'get_resource_type' => ['string', 'res'=>'resource'], 'get_resources' => ['array', 'type='=>'string'], 'getallheaders' => ['array'], 'getcwd' => ['non-empty-string|false'], 'getdate' => ['array{seconds: int<0, 59>, minutes: int<0, 59>, hours: int<0, 23>, mday: int<1, 31>, wday: int<0, 6>, mon: int<1, 12>, year: int, yday: int<0, 365>, weekday: "Monday"|"Tuesday"|"Wednesday"|"Thursday"|"Friday"|"Saturday"|"Sunday", month: "January"|"February"|"March"|"April"|"May"|"June"|"July"|"August"|"September"|"October"|"November"|"December", 0: int}', 'timestamp='=>'int'], 'getenv' => ['string|false', 'varname'=>'string', 'local_only='=>'bool'], 'getenv\'1' => ['array'], 'gethostbyaddr' => ['string|false', 'ip_address'=>'string'], 'gethostbyname' => ['string', 'hostname'=>'string'], 'gethostbynamel' => ['list|false', 'hostname'=>'string'], 'gethostname' => ['string|false'], 'getimagesize' => ['array{0: 0|positive-int, 1: 0|positive-int, 2: int, 3: string, mime: string, channels?: int, bits?: int}|false', 'imagefile'=>'string', '&w_info='=>'array'], 'getimagesizefromstring' => ['array{0: 0|positive-int, 1: 0|positive-int, 2: int, 3: string, mime: string, channels?: int, bits?: int}|false', 'data'=>'string', '&w_info='=>'array'], 'getlastmod' => ['int|false'], 'getmxrr' => ['bool', 'hostname'=>'string', '&w_mxhosts'=>'array', '&w_weight='=>'array'], 'getmygid' => ['int|false'], 'getmyinode' => ['int|false'], 'getmypid' => ['int|false'], 'getmyuid' => ['int|false'], 'getopt' => ['__benevolent|array|array>|false>', 'options'=>'string', 'longopts='=>'array', '&w_optind='=>'int'], 'getprotobyname' => ['int|false', 'name'=>'string'], 'getprotobynumber' => ['string|false', 'proto'=>'int'], 'getrandmax' => ['int'], 'getrusage' => ['array|false', 'who='=>'int'], 'getservbyname' => ['int|false', 'service'=>'string', 'protocol'=>'string'], 'getservbyport' => ['string|false', 'port'=>'int', 'protocol'=>'string'], 'gettext' => ['string', 'msgid'=>'string'], 'gettimeofday' => ['array|float', 'get_as_float='=>'bool'], 'gettype' => ['string', 'var'=>'mixed'], 'glob' => ['list|false', 'pattern'=>'string', 'flags='=>'int'], 'GlobIterator::__construct' => ['void', 'path'=>'string', 'flags='=>'int'], 'GlobIterator::cont' => ['int'], 'GlobIterator::count' => ['0|positive-int'], 'Gmagick::__construct' => ['void', 'filename='=>'string'], 'Gmagick::addimage' => ['Gmagick', 'gmagick'=>'gmagick'], 'Gmagick::addnoiseimage' => ['Gmagick', 'noise'=>'int'], 'Gmagick::annotateimage' => ['Gmagick', 'gmagickdraw'=>'gmagickdraw', 'x'=>'float', 'y'=>'float', 'angle'=>'float', 'text'=>'string'], 'Gmagick::blurimage' => ['Gmagick', 'radius'=>'float', 'sigma'=>'float', 'channel='=>'int'], 'Gmagick::borderimage' => ['Gmagick', 'color'=>'gmagickpixel', 'width'=>'int', 'height'=>'int'], 'Gmagick::charcoalimage' => ['Gmagick', 'radius'=>'float', 'sigma'=>'float'], 'Gmagick::chopimage' => ['Gmagick', 'width'=>'int', 'height'=>'int', 'x'=>'int', 'y'=>'int'], 'Gmagick::clear' => ['Gmagick'], 'Gmagick::commentimage' => ['Gmagick', 'comment'=>'string'], 'Gmagick::compositeimage' => ['Gmagick', 'source'=>'gmagick', 'compose'=>'int', 'x'=>'int', 'y'=>'int'], 'Gmagick::cropimage' => ['Gmagick', 'width'=>'int', 'height'=>'int', 'x'=>'int', 'y'=>'int'], 'Gmagick::cropthumbnailimage' => ['Gmagick', 'width'=>'int', 'height'=>'int'], 'Gmagick::current' => ['Gmagick'], 'Gmagick::cyclecolormapimage' => ['Gmagick', 'displace'=>'int'], 'Gmagick::deconstructimages' => ['Gmagick'], 'Gmagick::despeckleimage' => ['Gmagick'], 'Gmagick::destroy' => ['bool'], 'Gmagick::drawimage' => ['Gmagick', 'gmagickdraw'=>'gmagickdraw'], 'Gmagick::edgeimage' => ['Gmagick', 'radius'=>'float'], 'Gmagick::embossimage' => ['Gmagick', 'radius'=>'float', 'sigma'=>'float'], 'Gmagick::enhanceimage' => ['Gmagick'], 'Gmagick::equalizeimage' => ['Gmagick'], 'Gmagick::flipimage' => ['Gmagick'], 'Gmagick::flopimage' => ['Gmagick'], 'Gmagick::frameimage' => ['Gmagick', 'color'=>'gmagickpixel', 'width'=>'int', 'height'=>'int', 'inner_bevel'=>'int', 'outer_bevel'=>'int'], 'Gmagick::gammaimage' => ['Gmagick', 'gamma'=>'float'], 'Gmagick::getcopyright' => ['string'], 'Gmagick::getfilename' => ['string'], 'Gmagick::getimagebackgroundcolor' => ['GmagickPixel'], 'Gmagick::getimageblueprimary' => ['array'], 'Gmagick::getimagebordercolor' => ['GmagickPixel'], 'Gmagick::getimagechanneldepth' => ['int', 'channel_type'=>'int'], 'Gmagick::getimagecolors' => ['int'], 'Gmagick::getimagecolorspace' => ['int'], 'Gmagick::getimagecompose' => ['int'], 'Gmagick::getimagedelay' => ['int'], 'Gmagick::getimagedepth' => ['int'], 'Gmagick::getimagedispose' => ['int'], 'Gmagick::getimageextrema' => ['array'], 'Gmagick::getimagefilename' => ['string'], 'Gmagick::getimageformat' => ['string'], 'Gmagick::getimagegamma' => ['float'], 'Gmagick::getimagegreenprimary' => ['array'], 'Gmagick::getimageheight' => ['int'], 'Gmagick::getimagehistogram' => ['array'], 'Gmagick::getimageindex' => ['int'], 'Gmagick::getimageinterlacescheme' => ['int'], 'Gmagick::getimageiterations' => ['int'], 'Gmagick::getimagematte' => ['int'], 'Gmagick::getimagemattecolor' => ['GmagickPixel'], 'Gmagick::getimageprofile' => ['string', 'name'=>'string'], 'Gmagick::getimageredprimary' => ['array'], 'Gmagick::getimagerenderingintent' => ['int'], 'Gmagick::getimageresolution' => ['array'], 'Gmagick::getimagescene' => ['int'], 'Gmagick::getimagesignature' => ['string'], 'Gmagick::getimagetype' => ['int'], 'Gmagick::getimageunits' => ['int'], 'Gmagick::getimagewhitepoint' => ['array'], 'Gmagick::getimagewidth' => ['int'], 'Gmagick::getpackagename' => ['string'], 'Gmagick::getquantumdepth' => ['array'], 'Gmagick::getreleasedate' => ['string'], 'Gmagick::getsamplingfactors' => ['array'], 'Gmagick::getsize' => ['array'], 'Gmagick::getversion' => ['array'], 'Gmagick::hasnextimage' => ['bool'], 'Gmagick::haspreviousimage' => ['bool'], 'Gmagick::implodeimage' => ['mixed', 'radius'=>'float'], 'Gmagick::labelimage' => ['mixed', 'label'=>'string'], 'Gmagick::levelimage' => ['mixed', 'blackpoint'=>'float', 'gamma'=>'float', 'whitepoint'=>'float', 'channel='=>'int'], 'Gmagick::magnifyimage' => ['mixed'], 'Gmagick::mapimage' => ['Gmagick', 'gmagick'=>'gmagick', 'dither'=>'bool'], 'Gmagick::medianfilterimage' => ['void', 'radius'=>'float'], 'Gmagick::minifyimage' => ['Gmagick'], 'Gmagick::modulateimage' => ['Gmagick', 'brightness'=>'float', 'saturation'=>'float', 'hue'=>'float'], 'Gmagick::motionblurimage' => ['Gmagick', 'radius'=>'float', 'sigma'=>'float', 'angle'=>'float'], 'Gmagick::newimage' => ['Gmagick', 'width'=>'int', 'height'=>'int', 'background'=>'string', 'format='=>'string'], 'Gmagick::nextimage' => ['bool'], 'Gmagick::normalizeimage' => ['Gmagick', 'channel='=>'int'], 'Gmagick::oilpaintimage' => ['Gmagick', 'radius'=>'float'], 'Gmagick::previousimage' => ['bool'], 'Gmagick::profileimage' => ['Gmagick', 'name'=>'string', 'profile'=>'string'], 'Gmagick::quantizeimage' => ['Gmagick', 'numcolors'=>'int', 'colorspace'=>'int', 'treedepth'=>'int', 'dither'=>'bool', 'measureerror'=>'bool'], 'Gmagick::quantizeimages' => ['Gmagick', 'numcolors'=>'int', 'colorspace'=>'int', 'treedepth'=>'int', 'dither'=>'bool', 'measureerror'=>'bool'], 'Gmagick::queryfontmetrics' => ['array', 'draw'=>'gmagickdraw', 'text'=>'string'], 'Gmagick::queryfonts' => ['array', 'pattern='=>'string'], 'Gmagick::queryformats' => ['array', 'pattern='=>'string'], 'Gmagick::radialblurimage' => ['Gmagick', 'angle'=>'float', 'channel='=>'int'], 'Gmagick::raiseimage' => ['Gmagick', 'width'=>'int', 'height'=>'int', 'x'=>'int', 'y'=>'int', 'raise'=>'bool'], 'Gmagick::read' => ['Gmagick', 'filename'=>'string'], 'Gmagick::readimage' => ['Gmagick', 'filename'=>'string'], 'Gmagick::readimageblob' => ['Gmagick', 'imagecontents'=>'string', 'filename='=>'string'], 'Gmagick::readimagefile' => ['Gmagick', 'fp'=>'resource', 'filename='=>'string'], 'Gmagick::reducenoiseimage' => ['Gmagick', 'radius'=>'float'], 'Gmagick::removeimage' => ['Gmagick'], 'Gmagick::removeimageprofile' => ['string', 'name'=>'string'], 'Gmagick::resampleimage' => ['Gmagick', 'xresolution'=>'float', 'yresolution'=>'float', 'filter'=>'int', 'blur'=>'float'], 'Gmagick::resizeimage' => ['Gmagick', 'width'=>'int', 'height'=>'int', 'filter'=>'int', 'blur'=>'float', 'fit='=>'bool'], 'Gmagick::rollimage' => ['Gmagick', 'x'=>'int', 'y'=>'int'], 'Gmagick::rotateimage' => ['Gmagick', 'color'=>'mixed', 'degrees'=>'float'], 'Gmagick::scaleimage' => ['Gmagick', 'width'=>'int', 'height'=>'int', 'fit='=>'bool'], 'Gmagick::separateimagechannel' => ['Gmagick', 'channel'=>'int'], 'Gmagick::setCompressionQuality' => ['Gmagick', 'quality'=>'int'], 'Gmagick::setfilename' => ['Gmagick', 'filename'=>'string'], 'Gmagick::setimagebackgroundcolor' => ['Gmagick', 'color'=>'gmagickpixel'], 'Gmagick::setimageblueprimary' => ['Gmagick', 'x'=>'float', 'y'=>'float'], 'Gmagick::setimagebordercolor' => ['Gmagick', 'color'=>'gmagickpixel'], 'Gmagick::setimagechanneldepth' => ['Gmagick', 'channel'=>'int', 'depth'=>'int'], 'Gmagick::setimagecolorspace' => ['Gmagick', 'colorspace'=>'int'], 'Gmagick::setimagecompose' => ['Gmagick', 'composite'=>'int'], 'Gmagick::setimagedelay' => ['Gmagick', 'delay'=>'int'], 'Gmagick::setimagedepth' => ['Gmagick', 'depth'=>'int'], 'Gmagick::setimagedispose' => ['Gmagick', 'disposetype'=>'int'], 'Gmagick::setimagefilename' => ['Gmagick', 'filename'=>'string'], 'Gmagick::setimageformat' => ['Gmagick', 'imageformat'=>'string'], 'Gmagick::setimagegamma' => ['Gmagick', 'gamma'=>'float'], 'Gmagick::setimagegreenprimary' => ['Gmagick', 'x'=>'float', 'y'=>'float'], 'Gmagick::setimageindex' => ['Gmagick', 'index'=>'int'], 'Gmagick::setimageinterlacescheme' => ['Gmagick', 'interlace'=>'int'], 'Gmagick::setimageiterations' => ['Gmagick', 'iterations'=>'int'], 'Gmagick::setimageprofile' => ['Gmagick', 'name'=>'string', 'profile'=>'string'], 'Gmagick::setimageredprimary' => ['Gmagick', 'x'=>'float', 'y'=>'float'], 'Gmagick::setimagerenderingintent' => ['Gmagick', 'rendering_intent'=>'int'], 'Gmagick::setimageresolution' => ['Gmagick', 'xresolution'=>'float', 'yresolution'=>'float'], 'Gmagick::setimagescene' => ['Gmagick', 'scene'=>'int'], 'Gmagick::setimagetype' => ['Gmagick', 'imgtype'=>'int'], 'Gmagick::setimageunits' => ['Gmagick', 'resolution'=>'int'], 'Gmagick::setimagewhitepoint' => ['Gmagick', 'x'=>'float', 'y'=>'float'], 'Gmagick::setsamplingfactors' => ['Gmagick', 'factors'=>'array'], 'Gmagick::setsize' => ['Gmagick', 'columns'=>'int', 'rows'=>'int'], 'Gmagick::shearimage' => ['Gmagick', 'color'=>'mixed', 'xshear'=>'float', 'yshear'=>'float'], 'Gmagick::solarizeimage' => ['Gmagick', 'threshold'=>'int'], 'Gmagick::spreadimage' => ['Gmagick', 'radius'=>'float'], 'Gmagick::stripimage' => ['Gmagick'], 'Gmagick::swirlimage' => ['Gmagick', 'degrees'=>'float'], 'Gmagick::thumbnailimage' => ['Gmagick', 'width'=>'int', 'height'=>'int', 'fit='=>'bool'], 'Gmagick::trimimage' => ['Gmagick', 'fuzz'=>'float'], 'Gmagick::write' => ['', 'filename'=>'string'], 'Gmagick::writeimage' => ['Gmagick', 'filename'=>'string', 'all_frames='=>'bool'], 'GmagickDraw::annotate' => ['GmagickDraw', 'x'=>'float', 'y'=>'float', 'text'=>'string'], 'GmagickDraw::arc' => ['GmagickDraw', 'sx'=>'float', 'sy'=>'float', 'ex'=>'float', 'ey'=>'float', 'sd'=>'float', 'ed'=>'float'], 'GmagickDraw::bezier' => ['GmagickDraw', 'coordinate_array'=>'array'], 'GmagickDraw::ellipse' => ['GmagickDraw', 'ox'=>'float', 'oy'=>'float', 'rx'=>'float', 'ry'=>'float', 'start'=>'float', 'end'=>'float'], 'GmagickDraw::getfillcolor' => ['GmagickPixel'], 'GmagickDraw::getfillopacity' => ['float'], 'GmagickDraw::getfont' => ['string'], 'GmagickDraw::getfontsize' => ['float'], 'GmagickDraw::getfontstyle' => ['int'], 'GmagickDraw::getfontweight' => ['int'], 'GmagickDraw::getstrokecolor' => ['GmagickPixel'], 'GmagickDraw::getstrokeopacity' => ['float'], 'GmagickDraw::getstrokewidth' => ['float'], 'GmagickDraw::gettextdecoration' => ['int'], 'GmagickDraw::gettextencoding' => ['string'], 'GmagickDraw::line' => ['GmagickDraw', 'sx'=>'float', 'sy'=>'float', 'ex'=>'float', 'ey'=>'float'], 'GmagickDraw::point' => ['GmagickDraw', 'x'=>'float', 'y'=>'float'], 'GmagickDraw::polygon' => ['GmagickDraw', 'coordinates'=>'array'], 'GmagickDraw::polyline' => ['GmagickDraw', 'coordinate_array'=>'array'], 'GmagickDraw::rectangle' => ['GmagickDraw', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float'], 'GmagickDraw::rotate' => ['GmagickDraw', 'degrees'=>'float'], 'GmagickDraw::roundrectangle' => ['GmagickDraw', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float', 'rx'=>'float', 'ry'=>'float'], 'GmagickDraw::scale' => ['GmagickDraw', 'x'=>'float', 'y'=>'float'], 'GmagickDraw::setfillcolor' => ['GmagickDraw', 'color'=>'string'], 'GmagickDraw::setfillopacity' => ['GmagickDraw', 'fill_opacity'=>'float'], 'GmagickDraw::setfont' => ['GmagickDraw', 'font'=>'string'], 'GmagickDraw::setfontsize' => ['GmagickDraw', 'pointsize'=>'float'], 'GmagickDraw::setfontstyle' => ['GmagickDraw', 'style'=>'int'], 'GmagickDraw::setfontweight' => ['GmagickDraw', 'weight'=>'int'], 'GmagickDraw::setstrokecolor' => ['GmagickDraw', 'color'=>'gmagickpixel'], 'GmagickDraw::setstrokeopacity' => ['GmagickDraw', 'stroke_opacity'=>'float'], 'GmagickDraw::setstrokewidth' => ['GmagickDraw', 'width'=>'float'], 'GmagickDraw::settextdecoration' => ['GmagickDraw', 'decoration'=>'int'], 'GmagickDraw::settextencoding' => ['GmagickDraw', 'encoding'=>'string'], 'GmagickPixel::__construct' => ['void', 'color='=>'string'], 'GmagickPixel::getcolor' => ['mixed', 'as_array='=>'bool', 'normalize_array='=>'bool'], 'GmagickPixel::getcolorcount' => ['int'], 'GmagickPixel::getcolorvalue' => ['float', 'color'=>'int'], 'GmagickPixel::setcolor' => ['GmagickPixel', 'color'=>'string'], 'GmagickPixel::setcolorvalue' => ['GmagickPixel', 'color'=>'int', 'value'=>'float'], 'gmdate' => ['string', 'format'=>'string', 'timestamp='=>'int'], 'gmmktime' => ['int|false', 'hour='=>'int', 'min='=>'int', 'sec='=>'int', 'mon='=>'int', 'day='=>'int', 'year='=>'int'], 'GMP::__construct' => ['void'], 'GMP::__toString' => ['string'], 'GMP::serialize' => ['string'], 'GMP::unserialize' => ['void', 'serialized'=>'string'], 'gmp_abs' => ['GMP', 'a'=>'GMP|string|int'], 'gmp_add' => ['GMP', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_and' => ['GMP', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_binomial' => ['GMP|false', 'n'=>'GMP|string|int', 'k'=>'int'], 'gmp_clrbit' => ['void', 'a'=>'GMP|string|int', 'index'=>'int'], 'gmp_cmp' => ['int', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_com' => ['GMP', 'a'=>'GMP|string|int'], 'gmp_div' => ['GMP', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int', 'round='=>'int'], 'gmp_div_q' => ['GMP', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int', 'round='=>'int'], 'gmp_div_qr' => ['array', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int', 'round='=>'int'], 'gmp_div_r' => ['GMP', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int', 'round='=>'int'], 'gmp_divexact' => ['GMP', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_export' => ['string', 'gmpnumber'=>'GMP|string|int', 'word_size='=>'int', 'options='=>'int'], 'gmp_fact' => ['GMP', 'a'=>'int'], 'gmp_gcd' => ['GMP', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_gcdext' => ['array', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_hamdist' => ['int', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_import' => ['GMP', 'data'=>'string', 'word_size='=>'int', 'options='=>'int'], 'gmp_init' => ['GMP', 'number'=>'int|string', 'base='=>'int'], 'gmp_intval' => ['int', 'gmpnumber'=>'GMP|string|int'], 'gmp_invert' => ['GMP|false', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_jacobi' => ['int', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_kronecker' => ['int', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_lcm' => ['GMP', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_legendre' => ['int', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_mod' => ['GMP', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_mul' => ['GMP', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_neg' => ['GMP', 'a'=>'GMP|string|int'], 'gmp_nextprime' => ['GMP', 'a'=>'GMP|string|int'], 'gmp_or' => ['GMP', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_perfect_power' => ['bool', 'a'=>'GMP|string|int'], 'gmp_perfect_square' => ['bool', 'a'=>'GMP|string|int'], 'gmp_popcount' => ['int', 'a'=>'GMP|string|int'], 'gmp_pow' => ['GMP', 'base'=>'GMP|string|int', 'exp'=>'int'], 'gmp_powm' => ['GMP', 'base'=>'GMP|string|int', 'exp'=>'GMP|string|int', 'mod'=>'GMP|string|int'], 'gmp_prob_prime' => ['int', 'a'=>'GMP|string|int', 'reps='=>'int'], 'gmp_random' => ['GMP', 'limiter='=>'int'], 'gmp_random_bits' => ['GMP', 'bits'=>'int'], 'gmp_random_range' => ['GMP', 'min'=>'GMP|string|int', 'max'=>'GMP|string|int'], 'gmp_random_seed' => ['void', 'seed'=>'GMP|string|int'], 'gmp_root' => ['GMP', 'a'=>'GMP|string|int', 'nth'=>'int'], 'gmp_rootrem' => ['array', 'a'=>'GMP|string|int', 'nth'=>'int'], 'gmp_scan0' => ['int', 'a'=>'GMP|string|int', 'start'=>'int'], 'gmp_scan1' => ['int', 'a'=>'GMP|string|int', 'start'=>'int'], 'gmp_setbit' => ['void', 'a'=>'GMP|string|int', 'index'=>'int', 'set_clear='=>'bool'], 'gmp_sign' => ['int', 'a'=>'GMP|string|int'], 'gmp_sqrt' => ['GMP', 'a'=>'GMP|string|int'], 'gmp_sqrtrem' => ['array', 'a'=>'GMP|string|int'], 'gmp_strval' => ['string', 'gmpnumber'=>'GMP|string|int', 'base='=>'int'], 'gmp_sub' => ['GMP', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmp_testbit' => ['bool', 'a'=>'GMP|string|int', 'index'=>'int'], 'gmp_xor' => ['GMP', 'a'=>'GMP|string|int', 'b'=>'GMP|string|int'], 'gmstrftime' => ['string|false', 'format'=>'string', 'timestamp='=>'int'], 'gnupg::adddecryptkey' => ['bool', 'fingerprint'=>'string', 'passphrase'=>'string'], 'gnupg::addencryptkey' => ['bool', 'fingerprint'=>'string'], 'gnupg::addsignkey' => ['bool', 'fingerprint'=>'string', 'passphrase='=>'string'], 'gnupg::cleardecryptkeys' => ['bool'], 'gnupg::clearencryptkeys' => ['bool'], 'gnupg::clearsignkeys' => ['bool'], 'gnupg::decrypt' => ['string|false', 'text'=>'string'], 'gnupg::deletekey' => ['bool', 'key'=>'string', 'allow_secret'=>'bool'], 'gnupg::decryptverify' => ['array|false', 'text'=>'string', '&plaintext'=>'string'], 'gnupg::encrypt' => ['string|false', 'plaintext'=>'string'], 'gnupg::encryptsign' => ['string|false', 'plaintext'=>'string'], 'gnupg::export' => ['string|false', 'fingerprint'=>'string'], 'gnupg::getengineinfo' => ['array'], 'gnupg::geterror' => ['string|false'], 'gnupg::getprotocol' => ['int'], 'gnupg::gettrustlist' => ['array', 'pattern'=>'string'], 'gnupg::import' => ['array|false', 'keydata'=>'string'], 'gnupg::init' => ['resource', 'options'=>'?array{file_name?:string,home_dir?:string}'], 'gnupg::keyinfo' => ['array|false', 'pattern'=>'string'], 'gnupg::listsignatures' => ['?array', 'keyid'=>'string'], 'gnupg::setarmor' => ['bool', 'armor'=>'int'], 'gnupg::seterrormode' => ['void', 'errormode'=>'int'], 'gnupg::setsignmode' => ['bool', 'signmode'=>'int'], 'gnupg::sign' => ['string|false', 'plaintext'=>'string'], 'gnupg::verify' => ['array|false', 'signed_text'=>'string', 'signature'=>'string|false', '&plaintext='=>'string'], 'gnupg_adddecryptkey' => ['bool', 'identifier'=>'resource', 'fingerprint'=>'string', 'passphrase'=>'string'], 'gnupg_addencryptkey' => ['bool', 'identifier'=>'resource', 'fingerprint'=>'string'], 'gnupg_addsignkey' => ['bool', 'identifier'=>'resource', 'fingerprint'=>'string', 'passphrase='=>'string'], 'gnupg_cleardecryptkeys' => ['bool', 'identifier'=>'resource'], 'gnupg_clearencryptkeys' => ['bool', 'identifier'=>'resource'], 'gnupg_clearsignkeys' => ['bool', 'identifier'=>'resource'], 'gnupg_decrypt' => ['string|false', 'identifier'=>'resource', 'text'=>'string'], 'gnupg_decryptverify' => ['array', 'identifier'=>'resource', 'text'=>'string', 'plaintext'=>'string'], 'gnupg_deletekey' => ['bool', 'identifier'=>'resource', 'key'=>'string', 'allow_secret'=>'bool'], 'gnupg_encrypt' => ['string|false', 'identifier'=>'resource', 'plaintext'=>'string'], 'gnupg_encryptsign' => ['string|false', 'identifier'=>'resource', 'plaintext'=>'string'], 'gnupg_export' => ['string|false', 'identifier'=>'resource', 'fingerprint'=>'string'], 'gnupg_getengineinfo' => ['array', 'identifier'=>'resource'], 'gnupg_geterror' => ['string|false', 'identifier'=>'resource'], 'gnupg_getprotocol' => ['int', 'identifier'=>'resource'], 'gnupg_gettrustlist' => ['array', 'identifier'=>'resource', 'pattern'=>'string'], 'gnupg_import' => ['array|false', 'identifier'=>'resource', 'keydata'=>'string'], 'gnupg_init' => ['resource', 'options='=>'?array{file_name?:string,home_dir?:string}'], 'gnupg_keyinfo' => ['array|false', 'identifier'=>'resource', 'pattern'=>'string'], 'gnupg_listsignatures' => ['?array', 'identifier'=>'resource', 'keyid'=>'string'], 'gnupg_setarmor' => ['bool', 'identifier'=>'resource', 'armor'=>'int'], 'gnupg_seterrormode' => ['void', 'identifier'=>'resource', 'errormode'=>'int'], 'gnupg_setsignmode' => ['bool', 'identifier'=>'resource', 'signmode'=>'int'], 'gnupg_sign' => ['string|false', 'identifier'=>'resource', 'plaintext'=>'string'], 'gnupg_verify' => ['array|false', 'identifier'=>'resource', 'signed_text'=>'string', 'signature'=>'string|false', '&plaintext='=>'string'], 'gopher_parsedir' => ['array', 'dirent'=>'string'], 'grapheme_extract' => ['string|false', 'str'=>'string', 'size'=>'int', 'extract_type='=>'int', 'start='=>'int', '&w_next='=>'int'], 'grapheme_stripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'], 'grapheme_stristr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'part='=>'bool'], 'grapheme_strlen' => ['0|positive-int|false', 'str'=>'string'], 'grapheme_strpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'], 'grapheme_strripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'], 'grapheme_strrpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'], 'grapheme_strstr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'part='=>'bool'], 'grapheme_substr' => ['string|false', 'str'=>'string', 'start'=>'int', 'length='=>'int'], 'gregoriantojd' => ['int', 'month'=>'int', 'day'=>'int', 'year'=>'int'], 'gridObj::set' => ['int', 'property_name'=>'string', 'new_value'=>''], 'Grpc\Call::__construct' => ['void', 'channel'=>'Grpc\Channel', 'method'=>'string', 'absolute_deadline'=>'Grpc\Timeval', 'host_override='=>'mixed'], 'Grpc\Call::cancel' => [''], 'Grpc\Call::getPeer' => ['string'], 'Grpc\Call::setCredentials' => ['int', 'creds_obj'=>'Grpc\CallCredentials'], 'Grpc\Call::startBatch' => ['object', 'batch'=>'array'], 'Grpc\CallCredentials::createComposite' => ['Grpc\CallCredentials', 'cred1'=>'Grpc\CallCredentials', 'cred2'=>'Grpc\CallCredentials'], 'Grpc\CallCredentials::createFromPlugin' => ['Grpc\CallCredentials', 'callback'=>'Closure'], 'Grpc\Channel::__construct' => ['void', 'target'=>'string', 'args='=>'array'], 'Grpc\Channel::close' => [''], 'Grpc\Channel::getConnectivityState' => ['int', 'try_to_connect='=>'bool|false'], 'Grpc\Channel::getTarget' => ['string'], 'Grpc\Channel::watchConnectivityState' => ['bool', 'last_state'=>'int', 'deadline_obj'=>'Grpc\Timeval'], 'Grpc\ChannelCredentials::createComposite' => ['Grpc\ChannelCredentials', 'cred1'=>'Grpc\ChannelCredentials', 'cred2'=>'Grpc\CallCredentials'], 'Grpc\ChannelCredentials::createDefault' => ['Grpc\ChannelCredentials'], 'Grpc\ChannelCredentials::createInsecure' => ['null'], 'Grpc\ChannelCredentials::createSsl' => ['Grpc\ChannelCredentials', 'pem_root_certs='=>'string|null', 'pem_private_key='=>'string|null', 'pem_cert_chain='=>'string|null'], 'Grpc\ChannelCredentials::setDefaultRootsPem' => ['', 'pem_roots'=>'string'], 'Grpc\Server::__construct' => ['void', 'args'=>'array'], 'Grpc\Server::addHttp2Port' => ['bool', 'addr'=>'string'], 'Grpc\Server::addSecureHttp2Port' => ['bool', 'addr'=>'string', 'creds_obj'=>'Grpc\ServerCredentials'], 'Grpc\Server::requestCall' => ['', 'tag_new'=>'int', 'tag_cancel'=>'int'], 'Grpc\Server::start' => [''], 'Grpc\ServerCredentials::createSsl' => ['object', 'pem_root_certs'=>'string', 'pem_private_key'=>'string', 'pem_cert_chain'=>'string'], 'Grpc\Timeval::__construct' => ['void', 'usec'=>'int'], 'Grpc\Timeval::add' => ['Grpc\Timeval', 'other'=>'Grpc\Timeval'], 'Grpc\Timeval::compare' => ['int', 'a'=>'Grpc\Timeval', 'b'=>'Grpc\Timeval'], 'Grpc\Timeval::infFuture' => ['Grpc\Timeval'], 'Grpc\Timeval::infPast' => ['Grpc\Timeval'], 'Grpc\Timeval::now' => ['Grpc\Timeval'], 'Grpc\Timeval::similar' => ['bool', 'a'=>'Grpc\Timeval', 'b'=>'Grpc\Timeval', 'threshold'=>'Grpc\Timeval'], 'Grpc\Timeval::sleepUntil' => [''], 'Grpc\Timeval::subtract' => ['Grpc\Timeval', 'other'=>'Grpc\Timeval'], 'Grpc\Timeval::zero' => ['Grpc\Timeval'], 'gupnp_context_get_host_ip' => ['string', 'context'=>'resource'], 'gupnp_context_get_port' => ['int', 'context'=>'resource'], 'gupnp_context_get_subscription_timeout' => ['int', 'context'=>'resource'], 'gupnp_context_host_path' => ['bool', 'context'=>'resource', 'local_path'=>'string', 'server_path'=>'string'], 'gupnp_context_new' => ['resource', 'host_ip='=>'string', 'port='=>'int'], 'gupnp_context_set_subscription_timeout' => ['void', 'context'=>'resource', 'timeout'=>'int'], 'gupnp_context_timeout_add' => ['bool', 'context'=>'resource', 'timeout'=>'int', 'callback'=>'mixed', 'arg='=>'mixed'], 'gupnp_context_unhost_path' => ['bool', 'context'=>'resource', 'server_path'=>'string'], 'gupnp_control_point_browse_start' => ['bool', 'cpoint'=>'resource'], 'gupnp_control_point_browse_stop' => ['bool', 'cpoint'=>'resource'], 'gupnp_control_point_callback_set' => ['bool', 'cpoint'=>'resource', 'signal'=>'int', 'callback'=>'mixed', 'arg='=>'mixed'], 'gupnp_control_point_new' => ['resource', 'context'=>'resource', 'target'=>'string'], 'gupnp_device_action_callback_set' => ['bool', 'root_device'=>'resource', 'signal'=>'int', 'action_name'=>'string', 'callback'=>'mixed', 'arg='=>'mixed'], 'gupnp_device_info_get' => ['array', 'root_device'=>'resource'], 'gupnp_device_info_get_service' => ['resource', 'root_device'=>'resource', 'type'=>'string'], 'gupnp_root_device_get_available' => ['bool', 'root_device'=>'resource'], 'gupnp_root_device_get_relative_location' => ['string', 'root_device'=>'resource'], 'gupnp_root_device_new' => ['resource', 'context'=>'resource', 'location'=>'string', 'description_dir'=>'string'], 'gupnp_root_device_set_available' => ['bool', 'root_device'=>'resource', 'available'=>'bool'], 'gupnp_root_device_start' => ['bool', 'root_device'=>'resource'], 'gupnp_root_device_stop' => ['bool', 'root_device'=>'resource'], 'gupnp_service_action_get' => ['mixed', 'action'=>'resource', 'name'=>'string', 'type'=>'int'], 'gupnp_service_action_return' => ['bool', 'action'=>'resource'], 'gupnp_service_action_return_error' => ['bool', 'action'=>'resource', 'error_code'=>'int', 'error_description='=>'string'], 'gupnp_service_action_set' => ['bool', 'action'=>'resource', 'name'=>'string', 'type'=>'int', 'value'=>'mixed'], 'gupnp_service_freeze_notify' => ['bool', 'service'=>'resource'], 'gupnp_service_info_get' => ['array', 'proxy'=>'resource'], 'gupnp_service_info_get_introspection' => ['mixed', 'proxy'=>'resource', 'callback='=>'mixed', 'arg='=>'mixed'], 'gupnp_service_introspection_get_state_variable' => ['array', 'introspection'=>'resource', 'variable_name'=>'string'], 'gupnp_service_notify' => ['bool', 'service'=>'resource', 'name'=>'string', 'type'=>'int', 'value'=>'mixed'], 'gupnp_service_proxy_action_get' => ['mixed', 'proxy'=>'resource', 'action'=>'string', 'name'=>'string', 'type'=>'int'], 'gupnp_service_proxy_action_set' => ['bool', 'proxy'=>'resource', 'action'=>'string', 'name'=>'string', 'value'=>'mixed', 'type'=>'int'], 'gupnp_service_proxy_add_notify' => ['bool', 'proxy'=>'resource', 'value'=>'string', 'type'=>'int', 'callback'=>'mixed', 'arg='=>'mixed'], 'gupnp_service_proxy_callback_set' => ['bool', 'proxy'=>'resource', 'signal'=>'int', 'callback'=>'mixed', 'arg='=>'mixed'], 'gupnp_service_proxy_get_subscribed' => ['bool', 'proxy'=>'resource'], 'gupnp_service_proxy_remove_notify' => ['bool', 'proxy'=>'resource', 'value'=>'string'], 'gupnp_service_proxy_send_action' => ['array', 'proxy'=>'resource', 'action'=>'string', 'in_params'=>'array', 'out_params'=>'array'], 'gupnp_service_proxy_set_subscribed' => ['bool', 'proxy'=>'resource', 'subscribed'=>'bool'], 'gupnp_service_thaw_notify' => ['bool', 'service'=>'resource'], 'gzclose' => ['bool', 'zp'=>'resource'], 'gzcompress' => ['string|false', 'data'=>'string', 'level='=>'int', 'encoding='=>'int'], 'gzdecode' => ['string|false', 'data'=>'string', 'length='=>'int'], 'gzdeflate' => ['string|false', 'data'=>'string', 'level='=>'int', 'encoding='=>'int'], 'gzencode' => ['string|false', 'data'=>'string', 'level='=>'int', 'encoding_mode='=>'int'], 'gzeof' => ['bool', 'zp'=>'resource'], 'gzfile' => ['list|false', 'filename'=>'string', 'use_include_path='=>'int'], 'gzgetc' => ['string|false', 'zp'=>'resource'], 'gzgets' => ['string|false', 'zp'=>'resource', 'length='=>'int'], 'gzgetss' => ['string|false', 'zp'=>'resource', 'length'=>'int', 'allowable_tags='=>'string'], 'gzinflate' => ['string|false', 'data'=>'string', 'length='=>'int'], 'gzopen' => ['resource|false', 'filename'=>'string', 'mode'=>'string', 'use_include_path='=>'int'], 'gzpassthru' => ['int|false', 'zp'=>'resource'], 'gzputs' => ['int|false', 'zp'=>'resource', 'string'=>'string', 'length='=>'int'], 'gzread' => ['string|false', 'zp'=>'resource', 'length'=>'int'], 'gzrewind' => ['bool', 'zp'=>'resource'], 'gzseek' => ['int', 'zp'=>'resource', 'offset'=>'int', 'whence='=>'int'], 'gztell' => ['int|false', 'zp'=>'resource'], 'gzuncompress' => ['string|false', 'data'=>'string', 'length='=>'int'], 'gzwrite' => ['int|false', 'zp'=>'resource', 'string'=>'string', 'length='=>'int'], 'HaruAnnotation::setBorderStyle' => ['bool', 'width'=>'float', 'dash_on'=>'int', 'dash_off'=>'int'], 'HaruAnnotation::setHighlightMode' => ['bool', 'mode'=>'int'], 'HaruAnnotation::setIcon' => ['bool', 'icon'=>'int'], 'HaruAnnotation::setOpened' => ['bool', 'opened'=>'bool'], 'HaruDestination::setFit' => ['bool'], 'HaruDestination::setFitB' => ['bool'], 'HaruDestination::setFitBH' => ['bool', 'top'=>'float'], 'HaruDestination::setFitBV' => ['bool', 'left'=>'float'], 'HaruDestination::setFitH' => ['bool', 'top'=>'float'], 'HaruDestination::setFitR' => ['bool', 'left'=>'float', 'bottom'=>'float', 'right'=>'float', 'top'=>'float'], 'HaruDestination::setFitV' => ['bool', 'left'=>'float'], 'HaruDestination::setXYZ' => ['bool', 'left'=>'float', 'top'=>'float', 'zoom'=>'float'], 'HaruDoc::__construct' => ['void'], 'HaruDoc::addPage' => ['object'], 'HaruDoc::addPageLabel' => ['bool', 'first_page'=>'int', 'style'=>'int', 'first_num'=>'int', 'prefix='=>'string'], 'HaruDoc::createOutline' => ['object', 'title'=>'string', 'parent_outline='=>'object', 'encoder='=>'object'], 'HaruDoc::getCurrentEncoder' => ['object'], 'HaruDoc::getCurrentPage' => ['object'], 'HaruDoc::getEncoder' => ['object', 'encoding'=>'string'], 'HaruDoc::getFont' => ['object', 'fontname'=>'string', 'encoding='=>'string'], 'HaruDoc::getInfoAttr' => ['string', 'type'=>'int'], 'HaruDoc::getPageLayout' => ['int'], 'HaruDoc::getPageMode' => ['int'], 'HaruDoc::getStreamSize' => ['int'], 'HaruDoc::insertPage' => ['object', 'page'=>'object'], 'HaruDoc::loadJPEG' => ['object', 'filename'=>'string'], 'HaruDoc::loadPNG' => ['object', 'filename'=>'string', 'deferred='=>'bool'], 'HaruDoc::loadRaw' => ['object', 'filename'=>'string', 'width'=>'int', 'height'=>'int', 'color_space'=>'int'], 'HaruDoc::loadTTC' => ['string', 'fontfile'=>'string', 'index'=>'int', 'embed='=>'bool'], 'HaruDoc::loadTTF' => ['string', 'fontfile'=>'string', 'embed='=>'bool'], 'HaruDoc::loadType1' => ['string', 'afmfile'=>'string', 'pfmfile='=>'string'], 'HaruDoc::output' => ['bool'], 'HaruDoc::readFromStream' => ['string', 'bytes'=>'int'], 'HaruDoc::resetError' => ['bool'], 'HaruDoc::resetStream' => ['bool'], 'HaruDoc::save' => ['bool', 'file'=>'string'], 'HaruDoc::saveToStream' => ['bool'], 'HaruDoc::setCompressionMode' => ['bool', 'mode'=>'int'], 'HaruDoc::setCurrentEncoder' => ['bool', 'encoding'=>'string'], 'HaruDoc::setEncryptionMode' => ['bool', 'mode'=>'int', 'key_len='=>'int'], 'HaruDoc::setInfoAttr' => ['bool', 'type'=>'int', 'info'=>'string'], 'HaruDoc::setInfoDateAttr' => ['bool', 'type'=>'int', 'year'=>'int', 'month'=>'int', 'day'=>'int', 'hour'=>'int', 'min'=>'int', 'sec'=>'int', 'ind'=>'string', 'off_hour'=>'int', 'off_min'=>'int'], 'HaruDoc::setOpenAction' => ['bool', 'destination'=>'object'], 'HaruDoc::setPageLayout' => ['bool', 'layout'=>'int'], 'HaruDoc::setPageMode' => ['bool', 'mode'=>'int'], 'HaruDoc::setPagesConfiguration' => ['bool', 'page_per_pages'=>'int'], 'HaruDoc::setPassword' => ['bool', 'owner_password'=>'string', 'user_password'=>'string'], 'HaruDoc::setPermission' => ['bool', 'permission'=>'int'], 'HaruDoc::useCNSEncodings' => ['bool'], 'HaruDoc::useCNSFonts' => ['bool'], 'HaruDoc::useCNTEncodings' => ['bool'], 'HaruDoc::useCNTFonts' => ['bool'], 'HaruDoc::useJPEncodings' => ['bool'], 'HaruDoc::useJPFonts' => ['bool'], 'HaruDoc::useKREncodings' => ['bool'], 'HaruDoc::useKRFonts' => ['bool'], 'HaruEncoder::getByteType' => ['int', 'text'=>'string', 'index'=>'int'], 'HaruEncoder::getType' => ['int'], 'HaruEncoder::getUnicode' => ['int', 'character'=>'int'], 'HaruEncoder::getWritingMode' => ['int'], 'HaruFont::getAscent' => ['int'], 'HaruFont::getCapHeight' => ['int'], 'HaruFont::getDescent' => ['int'], 'HaruFont::getEncodingName' => ['string'], 'HaruFont::getFontName' => ['string'], 'HaruFont::getTextWidth' => ['array', 'text'=>'string'], 'HaruFont::getUnicodeWidth' => ['int', 'character'=>'int'], 'HaruFont::getXHeight' => ['int'], 'HaruFont::measureText' => ['int', 'text'=>'string', 'width'=>'float', 'font_size'=>'float', 'char_space'=>'float', 'word_space'=>'float', 'word_wrap='=>'bool'], 'HaruImage::getBitsPerComponent' => ['int'], 'HaruImage::getColorSpace' => ['string'], 'HaruImage::getHeight' => ['int'], 'HaruImage::getSize' => ['array'], 'HaruImage::getWidth' => ['int'], 'HaruImage::setColorMask' => ['bool', 'rmin'=>'int', 'rmax'=>'int', 'gmin'=>'int', 'gmax'=>'int', 'bmin'=>'int', 'bmax'=>'int'], 'HaruImage::setMaskImage' => ['bool', 'mask_image'=>'object'], 'HaruOutline::setDestination' => ['bool', 'destination'=>'object'], 'HaruOutline::setOpened' => ['bool', 'opened'=>'bool'], 'HaruPage::arc' => ['bool', 'x'=>'float', 'y'=>'float', 'ray'=>'float', 'ang1'=>'float', 'ang2'=>'float'], 'HaruPage::beginText' => ['bool'], 'HaruPage::circle' => ['bool', 'x'=>'float', 'y'=>'float', 'ray'=>'float'], 'HaruPage::closePath' => ['bool'], 'HaruPage::concat' => ['bool', 'a'=>'float', 'b'=>'float', 'c'=>'float', 'd'=>'float', 'x'=>'float', 'y'=>'float'], 'HaruPage::createDestination' => ['object'], 'HaruPage::createLinkAnnotation' => ['object', 'rectangle'=>'array', 'destination'=>'object'], 'HaruPage::createTextAnnotation' => ['object', 'rectangle'=>'array', 'text'=>'string', 'encoder='=>'object'], 'HaruPage::createURLAnnotation' => ['object', 'rectangle'=>'array', 'url'=>'string'], 'HaruPage::curveTo' => ['bool', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float', 'x3'=>'float', 'y3'=>'float'], 'HaruPage::curveTo2' => ['bool', 'x2'=>'float', 'y2'=>'float', 'x3'=>'float', 'y3'=>'float'], 'HaruPage::curveTo3' => ['bool', 'x1'=>'float', 'y1'=>'float', 'x3'=>'float', 'y3'=>'float'], 'HaruPage::drawImage' => ['bool', 'image'=>'object', 'x'=>'float', 'y'=>'float', 'width'=>'float', 'height'=>'float'], 'HaruPage::ellipse' => ['bool', 'x'=>'float', 'y'=>'float', 'xray'=>'float', 'yray'=>'float'], 'HaruPage::endPath' => ['bool'], 'HaruPage::endText' => ['bool'], 'HaruPage::eofill' => ['bool'], 'HaruPage::eoFillStroke' => ['bool', 'close_path='=>'bool'], 'HaruPage::fill' => ['bool'], 'HaruPage::fillStroke' => ['bool', 'close_path='=>'bool'], 'HaruPage::getCharSpace' => ['float'], 'HaruPage::getCMYKFill' => ['array'], 'HaruPage::getCMYKStroke' => ['array'], 'HaruPage::getCurrentFont' => ['object'], 'HaruPage::getCurrentFontSize' => ['float'], 'HaruPage::getCurrentPos' => ['array'], 'HaruPage::getCurrentTextPos' => ['array'], 'HaruPage::getDash' => ['array'], 'HaruPage::getFillingColorSpace' => ['int'], 'HaruPage::getFlatness' => ['float'], 'HaruPage::getGMode' => ['int'], 'HaruPage::getGrayFill' => ['float'], 'HaruPage::getGrayStroke' => ['float'], 'HaruPage::getHeight' => ['float'], 'HaruPage::getHorizontalScaling' => ['float'], 'HaruPage::getLineCap' => ['int'], 'HaruPage::getLineJoin' => ['int'], 'HaruPage::getLineWidth' => ['float'], 'HaruPage::getMiterLimit' => ['float'], 'HaruPage::getRGBFill' => ['array'], 'HaruPage::getRGBStroke' => ['array'], 'HaruPage::getStrokingColorSpace' => ['int'], 'HaruPage::getTextLeading' => ['float'], 'HaruPage::getTextMatrix' => ['array'], 'HaruPage::getTextRenderingMode' => ['int'], 'HaruPage::getTextRise' => ['float'], 'HaruPage::getTextWidth' => ['float', 'text'=>'string'], 'HaruPage::getTransMatrix' => ['array'], 'HaruPage::getWidth' => ['float'], 'HaruPage::getWordSpace' => ['float'], 'HaruPage::lineTo' => ['bool', 'x'=>'float', 'y'=>'float'], 'HaruPage::measureText' => ['int', 'text'=>'string', 'width'=>'float', 'wordwrap='=>'bool'], 'HaruPage::moveTextPos' => ['bool', 'x'=>'float', 'y'=>'float', 'set_leading='=>'bool'], 'HaruPage::moveTo' => ['bool', 'x'=>'float', 'y'=>'float'], 'HaruPage::moveToNextLine' => ['bool'], 'HaruPage::rectangle' => ['bool', 'x'=>'float', 'y'=>'float', 'width'=>'float', 'height'=>'float'], 'HaruPage::setCharSpace' => ['bool', 'char_space'=>'float'], 'HaruPage::setCMYKFill' => ['bool', 'c'=>'float', 'm'=>'float', 'y'=>'float', 'k'=>'float'], 'HaruPage::setCMYKStroke' => ['bool', 'c'=>'float', 'm'=>'float', 'y'=>'float', 'k'=>'float'], 'HaruPage::setDash' => ['bool', 'pattern'=>'array', 'phase'=>'int'], 'HaruPage::setFlatness' => ['bool', 'flatness'=>'float'], 'HaruPage::setFontAndSize' => ['bool', 'font'=>'object', 'size'=>'float'], 'HaruPage::setGrayFill' => ['bool', 'value'=>'float'], 'HaruPage::setGrayStroke' => ['bool', 'value'=>'float'], 'HaruPage::setHeight' => ['bool', 'height'=>'float'], 'HaruPage::setHorizontalScaling' => ['bool', 'scaling'=>'float'], 'HaruPage::setLineCap' => ['bool', 'cap'=>'int'], 'HaruPage::setLineJoin' => ['bool', 'join'=>'int'], 'HaruPage::setLineWidth' => ['bool', 'width'=>'float'], 'HaruPage::setMiterLimit' => ['bool', 'limit'=>'float'], 'HaruPage::setRGBFill' => ['bool', 'r'=>'float', 'g'=>'float', 'b'=>'float'], 'HaruPage::setRGBStroke' => ['bool', 'r'=>'float', 'g'=>'float', 'b'=>'float'], 'HaruPage::setRotate' => ['bool', 'angle'=>'int'], 'HaruPage::setSize' => ['bool', 'size'=>'int', 'direction'=>'int'], 'HaruPage::setSlideShow' => ['bool', 'type'=>'int', 'disp_time'=>'float', 'trans_time'=>'float'], 'HaruPage::setTextLeading' => ['bool', 'text_leading'=>'float'], 'HaruPage::setTextMatrix' => ['bool', 'a'=>'float', 'b'=>'float', 'c'=>'float', 'd'=>'float', 'x'=>'float', 'y'=>'float'], 'HaruPage::setTextRenderingMode' => ['bool', 'mode'=>'int'], 'HaruPage::setTextRise' => ['bool', 'rise'=>'float'], 'HaruPage::setWidth' => ['bool', 'width'=>'float'], 'HaruPage::setWordSpace' => ['bool', 'word_space'=>'float'], 'HaruPage::showText' => ['bool', 'text'=>'string'], 'HaruPage::showTextNextLine' => ['bool', 'text'=>'string', 'word_space='=>'float', 'char_space='=>'float'], 'HaruPage::stroke' => ['bool', 'close_path='=>'bool'], 'HaruPage::textOut' => ['bool', 'x'=>'float', 'y'=>'float', 'text'=>'string'], 'HaruPage::textRect' => ['bool', 'left'=>'float', 'top'=>'float', 'right'=>'float', 'bottom'=>'float', 'text'=>'string', 'align='=>'int'], 'hash' => ['non-falsy-string|false', 'algo'=>'string', 'data'=>'string', 'raw_output='=>'bool'], 'hash_algos' => ['non-empty-list'], 'hash_copy' => ['HashContext', 'context'=>'HashContext'], 'hash_equals' => ['bool', 'known_string'=>'string', 'user_string'=>'string'], 'hash_file' => ['non-falsy-string|false', 'algo'=>'string', 'filename'=>'string', 'raw_output='=>'bool'], 'hash_final' => ['non-falsy-string', 'context'=>'HashContext', 'raw_output='=>'bool'], 'hash_hkdf' => ['non-falsy-string|false', 'algo'=>'string', 'key'=>'string', 'length='=>'int', 'info='=>'string', 'salt='=>'string'], 'hash_hmac' => ['non-falsy-string|false', 'algo'=>'string', 'data'=>'string', 'key'=>'string', 'raw_output='=>'bool'], 'hash_hmac_algos' => ['non-empty-list'], 'hash_hmac_file' => ['non-falsy-string|false', 'algo'=>'string', 'filename'=>'string', 'key'=>'string', 'raw_output='=>'bool'], 'hash_init' => ['HashContext', 'algo'=>'string', 'options='=>'int', 'key='=>'string'], 'hash_pbkdf2' => ['(non-falsy-string&lowercase-string)|false', 'algo'=>'string', 'password'=>'string', 'salt'=>'string', 'iterations'=>'int', 'length='=>'int', 'raw_output='=>'bool'], 'hash_update' => ['bool', 'context'=>'HashContext', 'data'=>'string'], 'hash_update_file' => ['bool', 'context'=>'HashContext', 'filename'=>'string', 'scontext='=>'?HashContext'], 'hash_update_stream' => ['int', 'context'=>'HashContext', 'handle'=>'resource', 'length='=>'int'], 'hashTableObj::clear' => ['void'], 'hashTableObj::get' => ['string', 'key'=>'string'], 'hashTableObj::nextkey' => ['string', 'previousKey'=>'string'], 'hashTableObj::remove' => ['int', 'key'=>'string'], 'hashTableObj::set' => ['int', 'key'=>'string', 'value'=>'string'], 'header' => ['void', 'header'=>'string', 'replace='=>'bool', 'http_response_code='=>'int'], 'header_register_callback' => ['bool', 'callback'=>'callable'], 'header_remove' => ['void', 'name='=>'string'], 'headers_list' => ['list'], 'headers_sent' => ['bool', '&w_file='=>'string', '&w_line='=>'int'], 'hebrev' => ['string', 'str'=>'string', 'max_chars_per_line='=>'int'], 'hebrevc' => ['string', 'str'=>'string', 'max_chars_per_line='=>'int'], 'hex2bin' => ['string|false', 'data'=>'string'], 'hexdec' => ['int|float', 'hexadecimal_number'=>'string'], 'highlight_file' => ['string|bool', 'file_name'=>'string', 'return='=>'bool'], 'highlight_string' => ['string|bool', 'string'=>'string', 'return='=>'bool'], 'hrtime' => ['array{0:int,1:int}|int|float|false', 'get_as_number='=>'bool'], 'HRTime\PerformanceCounter::getElapsedTicks' => ['int'], 'HRTime\PerformanceCounter::getFrequency' => ['int'], 'HRTime\PerformanceCounter::getLastElapsedTicks' => ['int'], 'HRTime\PerformanceCounter::getTicks' => ['int'], 'HRTime\PerformanceCounter::getTicksSince' => ['int', 'start'=>'int'], 'HRTime\PerformanceCounter::isRunning' => ['bool'], 'HRTime\PerformanceCounter::start' => ['void'], 'HRTime\PerformanceCounter::stop' => ['void'], 'HRTime\StopWatch::getElapsedTicks' => ['int'], 'HRTime\StopWatch::getElapsedTime' => ['float', 'unit='=>'int'], 'HRTime\StopWatch::getLastElapsedTicks' => ['int'], 'HRTime\StopWatch::getLastElapsedTime' => ['float', 'unit='=>'int'], 'HRTime\StopWatch::isRunning' => ['bool'], 'HRTime\StopWatch::start' => ['void'], 'HRTime\StopWatch::stop' => ['void'], 'html_entity_decode' => ['string', 'string'=>'string', 'quote_style='=>'int', 'encoding='=>'string'], 'htmlentities' => ['string', 'string'=>'string', 'quote_style='=>'int', 'encoding='=>'string', 'double_encode='=>'bool'], 'htmlspecialchars' => ['string', 'string'=>'string', 'quote_style='=>'int', 'encoding='=>'string', 'double_encode='=>'bool'], 'htmlspecialchars_decode' => ['string', 'string'=>'string', 'quote_style='=>'int'], 'http\Env\Request::__construct' => ['void'], 'http\Env\Request::getCookie' => ['mixed', 'name='=>'string', 'type='=>'mixed', 'defval='=>'mixed', 'delete='=>'bool|false'], 'http\Env\Request::getFiles' => ['array'], 'http\Env\Request::getForm' => ['mixed', 'name='=>'string', 'type='=>'mixed', 'defval='=>'mixed', 'delete='=>'bool|false'], 'http\Env\Request::getQuery' => ['mixed', 'name='=>'string', 'type='=>'mixed', 'defval='=>'mixed', 'delete='=>'bool|false'], 'http\Env\Response::__construct' => ['void'], 'http\Env\Response::__invoke' => ['bool', 'data'=>'string', 'ob_flags='=>'int'], 'http\Env\Response::isCachedByETag' => ['int', 'header_name='=>'string'], 'http\Env\Response::isCachedByLastModified' => ['int', 'header_name='=>'string'], 'http\Env\Response::send' => ['bool', 'stream='=>'resource'], 'http\Env\Response::setCacheControl' => ['http\Env\Response', 'cache_control'=>'string'], 'http\Env\Response::setContentDisposition' => ['http\Env\Response', 'disposition_params'=>'array'], 'http\Env\Response::setContentEncoding' => ['http\Env\Response', 'content_encoding'=>'int'], 'http\Env\Response::setContentType' => ['http\Env\Response', 'content_type'=>'string'], 'http\Env\Response::setCookie' => ['http\Env\Response', 'cookie'=>'mixed'], 'http\Env\Response::setEnvRequest' => ['http\Env\Response', 'env_request'=>'http\Message'], 'http\Env\Response::setEtag' => ['http\Env\Response', 'etag'=>'string'], 'http\Env\Response::setLastModified' => ['http\Env\Response', 'last_modified'=>'int'], 'http\Env\Response::setThrottleRate' => ['http\Env\Response', 'chunk_size'=>'int', 'delay='=>'float|int'], 'http\QueryString::__construct' => ['void', 'querystring'=>'string'], 'http\QueryString::__toString' => ['string'], 'http\QueryString::get' => ['', 'name='=>'string', 'type='=>'mixed', 'defval='=>'mixed', 'delete='=>'bool|false'], 'http\QueryString::getArray' => ['array', 'name'=>'string', 'defval='=>'mixed', 'delete='=>'bool|false'], 'http\QueryString::getBool' => ['bool', 'name'=>'string', 'defval='=>'mixed', 'delete='=>'bool|false'], 'http\QueryString::getFloat' => ['float', 'name'=>'string', 'defval='=>'mixed', 'delete='=>'bool|false'], 'http\QueryString::getGlobalInstance' => ['http\QueryString'], 'http\QueryString::getInt' => ['int', 'name'=>'string', 'defval='=>'mixed', 'delete='=>'bool|false'], 'http\QueryString::getIterator' => ['IteratorAggregate'], 'http\QueryString::getObject' => ['', 'name'=>'string', 'defval='=>'mixed', 'delete='=>'bool|false'], 'http\QueryString::getString' => ['string', 'name'=>'string', 'defval='=>'mixed', 'delete='=>'bool|false'], 'http\QueryString::mod' => ['http\QueryString', 'params='=>'mixed'], 'http\QueryString::offsetExists' => ['bool', 'offset'=>'mixed'], 'http\QueryString::offsetGet' => ['mixed', 'offset'=>'mixed'], 'http\QueryString::offsetSet' => ['void', 'offset'=>'mixed', 'value'=>'mixed'], 'http\QueryString::offsetUnset' => ['void', 'offset'=>'mixed'], 'http\QueryString::serialize' => ['string'], 'http\QueryString::set' => ['http\QueryString', 'params'=>'mixed'], 'http\QueryString::toArray' => ['mixed[]'], 'http\QueryString::toString' => ['string'], 'http\QueryString::unserialize' => ['void', 'serialized'=>''], 'http\QueryString::xlate' => ['http\QueryString'], 'http\Url::__construct' => ['void', 'old_url='=>'mixed', 'new_url='=>'mixed', 'flags='=>'int'], 'http\Url::__toString' => [''], 'http\Url::mod' => ['http\Url', 'parts'=>'mixed', 'flags='=>'float|int|mixed'], 'http\Url::toArray' => ['string[]'], 'http\Url::toString' => ['string'], 'http_build_cookie' => ['string', 'cookie'=>'array'], 'http_build_query' => ['string', 'querydata'=>'array|object', 'prefix='=>'string', 'arg_separator='=>'string', 'enc_type='=>'int'], 'http_build_str' => ['string', 'query'=>'array', 'prefix='=>'?string', 'arg_separator='=>'string'], 'http_build_url' => ['string', 'url='=>'string|array', 'parts='=>'string|array', 'flags='=>'int', 'new_url='=>'array'], 'http_cache_etag' => ['bool', 'etag='=>'string'], 'http_cache_last_modified' => ['bool', 'timestamp_or_expires='=>'int'], 'http_chunked_decode' => ['string', 'encoded'=>'string'], 'http_date' => ['string', 'timestamp='=>'int'], 'http_deflate' => ['string', 'data'=>'string', 'flags='=>'int'], 'http_get' => ['string', 'url'=>'string', 'options='=>'array', 'info='=>'array'], 'http_get_request_body' => ['string'], 'http_get_request_body_stream' => ['resource'], 'http_get_request_headers' => ['array'], 'http_head' => ['string', 'url'=>'string', 'options='=>'array', 'info='=>'array'], 'http_inflate' => ['string', 'data'=>'string'], 'http_match_etag' => ['bool', 'etag'=>'string', 'for_range='=>'bool'], 'http_match_modified' => ['bool', 'timestamp='=>'int', 'for_range='=>'bool'], 'http_match_request_header' => ['bool', 'header'=>'string', 'value'=>'string', 'match_case='=>'bool'], 'http_negotiate_charset' => ['string', 'supported'=>'array', 'result='=>'array'], 'http_negotiate_content_type' => ['string', 'supported'=>'array', 'result='=>'array'], 'http_negotiate_language' => ['string', 'supported'=>'array', 'result='=>'array'], 'http_parse_cookie' => ['object', 'cookie'=>'string', 'flags='=>'int', 'allowed_extras='=>'array'], 'http_parse_headers' => ['array', 'header'=>'string'], 'http_parse_message' => ['object', 'message'=>'string'], 'http_parse_params' => ['object', 'param'=>'string', 'flags='=>'int'], 'http_persistent_handles_clean' => ['string', 'ident='=>'string'], 'http_persistent_handles_count' => ['object'], 'http_persistent_handles_ident' => ['string', 'ident='=>'string'], 'http_post_data' => ['string', 'url'=>'string', 'data'=>'string', 'options='=>'array', 'info='=>'array'], 'http_post_fields' => ['string', 'url'=>'string', 'data'=>'array', 'files='=>'array', 'options='=>'array', 'info='=>'array'], 'http_put_data' => ['string', 'url'=>'string', 'data'=>'string', 'options='=>'array', 'info='=>'array'], 'http_put_file' => ['string', 'url'=>'string', 'file'=>'string', 'options='=>'array', 'info='=>'array'], 'http_put_stream' => ['string', 'url'=>'string', 'stream'=>'', 'options='=>'array', 'info='=>'array'], 'http_redirect' => ['bool', 'url='=>'string', 'params='=>'array', 'session='=>'bool', 'status='=>'int'], 'http_request' => ['string', 'method'=>'int', 'url'=>'string', 'body='=>'string', 'options='=>'array', 'info='=>'array'], 'http_request_body_encode' => ['string', 'fields'=>'array', 'files'=>'array'], 'http_request_method_exists' => ['int', 'method'=>''], 'http_request_method_name' => ['string', 'method'=>'int'], 'http_request_method_register' => ['int', 'method'=>'string'], 'http_request_method_unregister' => ['bool', 'method'=>''], 'http_response_code' => ['int|bool', 'response_code='=>'int'], 'http_send_content_disposition' => ['bool', 'filename'=>'string', 'inline='=>'bool'], 'http_send_content_type' => ['bool', 'content_type='=>'string'], 'http_send_data' => ['bool', 'data'=>'string'], 'http_send_file' => ['bool', 'file'=>'string'], 'http_send_last_modified' => ['bool', 'timestamp='=>'int'], 'http_send_status' => ['bool', 'status'=>'int'], 'http_send_stream' => ['bool', 'stream'=>''], 'http_support' => ['int', 'feature='=>'int'], 'http_throttle' => ['', 'sec'=>'float', 'bytes='=>'int'], 'HttpDeflateStream::__construct' => ['void', 'flags='=>'int'], 'HttpDeflateStream::factory' => ['HttpDeflateStream', 'flags='=>'int', 'class_name='=>'string'], 'HttpDeflateStream::finish' => ['string', 'data='=>'string'], 'HttpDeflateStream::flush' => ['string', 'data='=>'string'], 'HttpDeflateStream::update' => ['string', 'data'=>'string'], 'HttpInflateStream::__construct' => ['void', 'flags='=>'int'], 'HttpInflateStream::factory' => ['HttpInflateStream', 'flags='=>'int', 'class_name='=>'string'], 'HttpInflateStream::finish' => ['string', 'data='=>'string'], 'HttpInflateStream::flush' => ['string', 'data='=>'string'], 'HttpInflateStream::update' => ['string', 'data'=>'string'], 'HttpMessage::__construct' => ['void', 'message='=>'string'], 'HttpMessage::__toString' => ['string'], 'HttpMessage::addHeaders' => ['', 'headers'=>'array', 'append='=>'bool'], 'HttpMessage::count' => ['0|positive-int'], 'HttpMessage::current' => ['mixed'], 'HttpMessage::detach' => ['HttpMessage'], 'HttpMessage::factory' => ['HttpMessage', 'raw_message='=>'string', 'class_name='=>'string'], 'HttpMessage::fromEnv' => ['HttpMessage', 'message_type'=>'int', 'class_name='=>'string'], 'HttpMessage::fromString' => ['HttpMessage', 'raw_message='=>'string', 'class_name='=>'string'], 'HttpMessage::getBody' => ['string'], 'HttpMessage::getHeader' => ['string', 'header'=>'string'], 'HttpMessage::getHeaders' => ['array'], 'HttpMessage::getHttpVersion' => ['string'], 'HttpMessage::getInfo' => [''], 'HttpMessage::getParentMessage' => ['HttpMessage'], 'HttpMessage::getRequestMethod' => ['string'], 'HttpMessage::getRequestUrl' => ['string'], 'HttpMessage::getResponseCode' => ['int'], 'HttpMessage::getResponseStatus' => ['string'], 'HttpMessage::getType' => ['int'], 'HttpMessage::guessContentType' => ['string', 'magic_file'=>'string', 'magic_mode='=>'int'], 'HttpMessage::key' => ['int|string'], 'HttpMessage::next' => ['void'], 'HttpMessage::prepend' => ['', 'message'=>'httpmessage', 'top='=>'bool'], 'HttpMessage::reverse' => ['HttpMessage'], 'HttpMessage::rewind' => ['void'], 'HttpMessage::send' => ['bool'], 'HttpMessage::serialize' => ['string'], 'HttpMessage::setBody' => ['', 'body'=>'string'], 'HttpMessage::setHeaders' => ['', 'headers'=>'array'], 'HttpMessage::setHttpVersion' => ['bool', 'version'=>'string'], 'HttpMessage::setInfo' => ['', 'http_info'=>''], 'HttpMessage::setRequestMethod' => ['bool', 'method'=>'string'], 'HttpMessage::setRequestUrl' => ['bool', 'url'=>'string'], 'HttpMessage::setResponseCode' => ['bool', 'code'=>'int'], 'HttpMessage::setResponseStatus' => ['bool', 'status'=>'string'], 'HttpMessage::setType' => ['', 'type'=>'int'], 'HttpMessage::toMessageTypeObject' => ['HttpRequest|HttpResponse'], 'HttpMessage::toString' => ['string', 'include_parent='=>'bool'], 'HttpMessage::unserialize' => ['void', 'serialized'=>''], 'HttpMessage::valid' => ['bool'], 'HttpQueryString::__construct' => ['void', 'global='=>'bool', 'add='=>''], 'HttpQueryString::__toString' => ['string'], 'HttpQueryString::factory' => ['', 'global'=>'', 'params'=>'', 'class_name'=>''], 'HttpQueryString::get' => ['', 'key='=>'string', 'type='=>'', 'defval='=>'', 'delete='=>'bool'], 'HttpQueryString::getArray' => ['', 'name'=>'', 'defval'=>'', 'delete'=>''], 'HttpQueryString::getBool' => ['', 'name'=>'', 'defval'=>'', 'delete'=>''], 'HttpQueryString::getFloat' => ['', 'name'=>'', 'defval'=>'', 'delete'=>''], 'HttpQueryString::getInt' => ['', 'name'=>'', 'defval'=>'', 'delete'=>''], 'HttpQueryString::getObject' => ['', 'name'=>'', 'defval'=>'', 'delete'=>''], 'HttpQueryString::getString' => ['', 'name'=>'', 'defval'=>'', 'delete'=>''], 'HttpQueryString::mod' => ['HttpQueryString', 'params'=>''], 'HttpQueryString::offsetExists' => ['bool', 'offset'=>'mixed'], 'HttpQueryString::offsetGet' => ['mixed', 'offset'=>'mixed'], 'HttpQueryString::offsetSet' => ['void', 'offset'=>'mixed', 'value'=>'mixed'], 'HttpQueryString::offsetUnset' => ['void', 'offset'=>'mixed'], 'HttpQueryString::serialize' => ['string'], 'HttpQueryString::set' => ['string', 'params'=>''], 'HttpQueryString::singleton' => ['HttpQueryString', 'global='=>'bool'], 'HttpQueryString::toArray' => ['array'], 'HttpQueryString::toString' => ['string'], 'HttpQueryString::unserialize' => ['void', 'serialized'=>'string'], 'HttpQueryString::xlate' => ['bool', 'ie'=>'string', 'oe'=>'string'], 'HttpRequest::__construct' => ['void', 'url='=>'string', 'request_method='=>'int', 'options='=>'array'], 'HttpRequest::addBody' => ['', 'request_body_data'=>''], 'HttpRequest::addCookies' => ['bool', 'cookies'=>'array'], 'HttpRequest::addHeaders' => ['bool', 'headers'=>'array'], 'HttpRequest::addPostFields' => ['bool', 'post_data'=>'array'], 'HttpRequest::addPostFile' => ['bool', 'name'=>'string', 'file'=>'string', 'content_type='=>'string'], 'HttpRequest::addPutData' => ['bool', 'put_data'=>'string'], 'HttpRequest::addQueryData' => ['bool', 'query_params'=>'array'], 'HttpRequest::addRawPostData' => ['bool', 'raw_post_data'=>'string'], 'HttpRequest::addSslOptions' => ['bool', 'options'=>'array'], 'HttpRequest::clearHistory' => [''], 'HttpRequest::enableCookies' => ['bool'], 'HttpRequest::encodeBody' => ['', 'fields'=>'', 'files'=>''], 'HttpRequest::factory' => ['', 'url'=>'', 'method'=>'', 'options'=>'', 'class_name'=>''], 'HttpRequest::flushCookies' => [''], 'HttpRequest::get' => ['', 'url'=>'', 'options'=>'', '&info'=>''], 'HttpRequest::getBody' => [''], 'HttpRequest::getContentType' => ['string'], 'HttpRequest::getCookies' => ['array'], 'HttpRequest::getHeaders' => ['array'], 'HttpRequest::getHistory' => ['HttpMessage'], 'HttpRequest::getMethod' => ['int'], 'HttpRequest::getOptions' => ['array'], 'HttpRequest::getPostFields' => ['array'], 'HttpRequest::getPostFiles' => ['array'], 'HttpRequest::getPutData' => ['string'], 'HttpRequest::getPutFile' => ['string'], 'HttpRequest::getQueryData' => ['string'], 'HttpRequest::getRawPostData' => ['string'], 'HttpRequest::getRawRequestMessage' => ['string'], 'HttpRequest::getRawResponseMessage' => ['string'], 'HttpRequest::getRequestMessage' => ['HttpMessage'], 'HttpRequest::getResponseBody' => ['string'], 'HttpRequest::getResponseCode' => ['int'], 'HttpRequest::getResponseCookies' => ['array', 'flags='=>'int', 'allowed_extras='=>'array'], 'HttpRequest::getResponseData' => ['array'], 'HttpRequest::getResponseHeader' => ['', 'name='=>'string'], 'HttpRequest::getResponseInfo' => ['', 'name='=>'string'], 'HttpRequest::getResponseMessage' => ['HttpMessage'], 'HttpRequest::getResponseStatus' => ['string'], 'HttpRequest::getSslOptions' => ['array'], 'HttpRequest::getUrl' => ['string'], 'HttpRequest::head' => ['', 'url'=>'', 'options'=>'', '&info'=>''], 'HttpRequest::methodExists' => ['', 'method'=>''], 'HttpRequest::methodName' => ['', 'method_id'=>''], 'HttpRequest::methodRegister' => ['', 'method_name'=>''], 'HttpRequest::methodUnregister' => ['', 'method'=>''], 'HttpRequest::postData' => ['', 'url'=>'', 'data'=>'', 'options'=>'', '&info'=>''], 'HttpRequest::postFields' => ['', 'url'=>'', 'data'=>'', 'options'=>'', '&info'=>''], 'HttpRequest::putData' => ['', 'url'=>'', 'data'=>'', 'options'=>'', '&info'=>''], 'HttpRequest::putFile' => ['', 'url'=>'', 'file'=>'', 'options'=>'', '&info'=>''], 'HttpRequest::putStream' => ['', 'url'=>'', 'stream'=>'', 'options'=>'', '&info'=>''], 'HttpRequest::resetCookies' => ['bool', 'session_only='=>'bool'], 'HttpRequest::send' => ['HttpMessage'], 'HttpRequest::setBody' => ['bool', 'request_body_data='=>'string'], 'HttpRequest::setContentType' => ['bool', 'content_type'=>'string'], 'HttpRequest::setCookies' => ['bool', 'cookies='=>'array'], 'HttpRequest::setHeaders' => ['bool', 'headers='=>'array'], 'HttpRequest::setMethod' => ['bool', 'request_method'=>'int'], 'HttpRequest::setOptions' => ['bool', 'options='=>'array'], 'HttpRequest::setPostFields' => ['bool', 'post_data'=>'array'], 'HttpRequest::setPostFiles' => ['bool', 'post_files'=>'array'], 'HttpRequest::setPutData' => ['bool', 'put_data='=>'string'], 'HttpRequest::setPutFile' => ['bool', 'file='=>'string'], 'HttpRequest::setQueryData' => ['bool', 'query_data'=>''], 'HttpRequest::setRawPostData' => ['bool', 'raw_post_data='=>'string'], 'HttpRequest::setSslOptions' => ['bool', 'options='=>'array'], 'HttpRequest::setUrl' => ['bool', 'url'=>'string'], 'HttpRequestDataShare::__construct' => ['void'], 'HttpRequestDataShare::__destruct' => [''], 'HttpRequestDataShare::attach' => ['', 'request'=>'HttpRequest'], 'HttpRequestDataShare::count' => ['0|positive-int'], 'HttpRequestDataShare::detach' => ['', 'request'=>'HttpRequest'], 'HttpRequestDataShare::factory' => ['', 'global'=>'', 'class_name'=>''], 'HttpRequestDataShare::reset' => [''], 'HttpRequestDataShare::singleton' => ['', 'global'=>''], 'HttpRequestPool::__construct' => ['void', 'request='=>'httprequest'], 'HttpRequestPool::__destruct' => [''], 'HttpRequestPool::attach' => ['bool', 'request'=>'httprequest'], 'HttpRequestPool::count' => ['0|positive-int'], 'HttpRequestPool::current' => ['mixed'], 'HttpRequestPool::detach' => ['bool', 'request'=>'httprequest'], 'HttpRequestPool::enableEvents' => ['', 'enable'=>''], 'HttpRequestPool::enablePipelining' => ['', 'enable'=>''], 'HttpRequestPool::getAttachedRequests' => ['array'], 'HttpRequestPool::getFinishedRequests' => ['array'], 'HttpRequestPool::key' => ['int|string'], 'HttpRequestPool::next' => ['void'], 'HttpRequestPool::reset' => [''], 'HttpRequestPool::rewind' => ['void'], 'HttpRequestPool::send' => ['bool'], 'HttpRequestPool::socketPerform' => ['bool'], 'HttpRequestPool::socketSelect' => ['bool', 'timeout='=>'float'], 'HttpRequestPool::valid' => ['bool'], 'HttpResponse::capture' => [''], 'HttpResponse::getBufferSize' => ['int'], 'HttpResponse::getCache' => ['bool'], 'HttpResponse::getCacheControl' => ['string'], 'HttpResponse::getContentDisposition' => ['string'], 'HttpResponse::getContentType' => ['string'], 'HttpResponse::getData' => ['string'], 'HttpResponse::getETag' => ['string'], 'HttpResponse::getFile' => ['string'], 'HttpResponse::getGzip' => ['bool'], 'HttpResponse::getHeader' => ['', 'name='=>'string'], 'HttpResponse::getLastModified' => ['int'], 'HttpResponse::getRequestBody' => ['string'], 'HttpResponse::getRequestBodyStream' => ['resource'], 'HttpResponse::getRequestHeaders' => ['array'], 'HttpResponse::getStream' => ['resource'], 'HttpResponse::getThrottleDelay' => ['float'], 'HttpResponse::guessContentType' => ['string', 'magic_file'=>'string', 'magic_mode='=>'int'], 'HttpResponse::redirect' => ['', 'url='=>'string', 'params='=>'array', 'session='=>'bool', 'status='=>'int'], 'HttpResponse::send' => ['bool', 'clean_ob='=>'bool'], 'HttpResponse::setBufferSize' => ['bool', 'bytes'=>'int'], 'HttpResponse::setCache' => ['bool', 'cache'=>'bool'], 'HttpResponse::setCacheControl' => ['bool', 'control'=>'string', 'max_age='=>'int', 'must_revalidate='=>'bool'], 'HttpResponse::setContentDisposition' => ['bool', 'filename'=>'string', 'inline='=>'bool'], 'HttpResponse::setContentType' => ['bool', 'content_type'=>'string'], 'HttpResponse::setData' => ['bool', 'data'=>''], 'HttpResponse::setETag' => ['bool', 'etag'=>'string'], 'HttpResponse::setFile' => ['bool', 'file'=>'string'], 'HttpResponse::setGzip' => ['bool', 'gzip'=>'bool'], 'HttpResponse::setHeader' => ['bool', 'name'=>'string', 'value='=>'', 'replace='=>'bool'], 'HttpResponse::setLastModified' => ['bool', 'timestamp'=>'int'], 'HttpResponse::setStream' => ['bool', 'stream'=>''], 'HttpResponse::setThrottleDelay' => ['bool', 'seconds'=>'float'], 'HttpResponse::status' => ['bool', 'status'=>'int'], 'HttpUtil::buildCookie' => ['', 'cookie_array'=>''], 'HttpUtil::buildStr' => ['', 'query'=>'', 'prefix'=>'', 'arg_sep'=>''], 'HttpUtil::buildUrl' => ['', 'url'=>'', 'parts'=>'', 'flags'=>'', '&composed'=>''], 'HttpUtil::chunkedDecode' => ['', 'encoded_string'=>''], 'HttpUtil::date' => ['', 'timestamp'=>''], 'HttpUtil::deflate' => ['', 'plain'=>'', 'flags'=>''], 'HttpUtil::inflate' => ['', 'encoded'=>''], 'HttpUtil::matchEtag' => ['', 'plain_etag'=>'', 'for_range'=>''], 'HttpUtil::matchModified' => ['', 'last_modified'=>'', 'for_range'=>''], 'HttpUtil::matchRequestHeader' => ['', 'header_name'=>'', 'header_value'=>'', 'case_sensitive'=>''], 'HttpUtil::negotiateCharset' => ['', 'supported'=>'', '&result'=>''], 'HttpUtil::negotiateContentType' => ['', 'supported'=>'', '&result'=>''], 'HttpUtil::negotiateLanguage' => ['', 'supported'=>'', '&result'=>''], 'HttpUtil::parseCookie' => ['', 'cookie_string'=>''], 'HttpUtil::parseHeaders' => ['', 'headers_string'=>''], 'HttpUtil::parseMessage' => ['', 'message_string'=>''], 'HttpUtil::parseParams' => ['', 'param_string'=>'', 'flags'=>''], 'HttpUtil::support' => ['', 'feature'=>''], 'hw_api::checkin' => ['bool', 'parameter'=>'array'], 'hw_api::checkout' => ['bool', 'parameter'=>'array'], 'hw_api::children' => ['array', 'parameter'=>'array'], 'hw_api::content' => ['HW_API_Content', 'parameter'=>'array'], 'hw_api::copy' => ['hw_api_content', 'parameter'=>'array'], 'hw_api::dbstat' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::dcstat' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::dstanchors' => ['array', 'parameter'=>'array'], 'hw_api::dstofsrcanchor' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::find' => ['array', 'parameter'=>'array'], 'hw_api::ftstat' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::hwstat' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::identify' => ['bool', 'parameter'=>'array'], 'hw_api::info' => ['array', 'parameter'=>'array'], 'hw_api::insert' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::insertanchor' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::insertcollection' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::insertdocument' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::link' => ['bool', 'parameter'=>'array'], 'hw_api::lock' => ['bool', 'parameter'=>'array'], 'hw_api::move' => ['bool', 'parameter'=>'array'], 'hw_api::object' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::objectbyanchor' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::parents' => ['array', 'parameter'=>'array'], 'hw_api::remove' => ['bool', 'parameter'=>'array'], 'hw_api::replace' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::setcommittedversion' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::srcanchors' => ['array', 'parameter'=>'array'], 'hw_api::srcsofdst' => ['array', 'parameter'=>'array'], 'hw_api::unlock' => ['bool', 'parameter'=>'array'], 'hw_api::user' => ['hw_api_object', 'parameter'=>'array'], 'hw_api::userlist' => ['array', 'parameter'=>'array'], 'hw_api_attribute' => ['HW_API_Attribute', 'name='=>'string', 'value='=>'string'], 'hw_api_attribute::key' => ['string'], 'hw_api_attribute::langdepvalue' => ['string', 'language'=>'string'], 'hw_api_attribute::value' => ['string'], 'hw_api_attribute::values' => ['array'], 'hw_api_content' => ['HW_API_Content', 'content'=>'string', 'mimetype'=>'string'], 'hw_api_content::mimetype' => ['string'], 'hw_api_content::read' => ['string', 'buffer'=>'string', 'len'=>'int'], 'hw_api_error::count' => ['0|positive-int'], 'hw_api_error::reason' => ['HW_API_Reason'], 'hw_api_object' => ['hw_api_object', 'parameter'=>'array'], 'hw_api_object::assign' => ['bool', 'parameter'=>'array'], 'hw_api_object::attreditable' => ['bool', 'parameter'=>'array'], 'hw_api_object::count' => ['0|positive-int', 'parameter'=>'array'], 'hw_api_object::insert' => ['bool', 'attribute'=>'hw_api_attribute'], 'hw_api_object::remove' => ['bool', 'name'=>'string'], 'hw_api_object::title' => ['string', 'parameter'=>'array'], 'hw_api_object::value' => ['string', 'name'=>'string'], 'hw_api_reason::description' => ['string'], 'hw_api_reason::type' => ['HW_API_Reason'], 'hw_Array2Objrec' => ['string', 'object_array'=>'array'], 'hw_changeobject' => ['bool', 'link'=>'int', 'objid'=>'int', 'attributes'=>'array'], 'hw_Children' => ['array', 'connection'=>'int', 'objectid'=>'int'], 'hw_ChildrenObj' => ['array', 'connection'=>'int', 'objectid'=>'int'], 'hw_Close' => ['bool', 'connection'=>'int'], 'hw_Connect' => ['int', 'host'=>'string', 'port'=>'int', 'username='=>'string', 'password='=>'string'], 'hw_connection_info' => ['', 'link'=>'int'], 'hw_cp' => ['int', 'connection'=>'int', 'object_id_array'=>'array', 'destination_id'=>'int'], 'hw_Deleteobject' => ['bool', 'connection'=>'int', 'object_to_delete'=>'int'], 'hw_DocByAnchor' => ['int', 'connection'=>'int', 'anchorid'=>'int'], 'hw_DocByAnchorObj' => ['string', 'connection'=>'int', 'anchorid'=>'int'], 'hw_Document_Attributes' => ['string', 'hw_document'=>'int'], 'hw_Document_BodyTag' => ['string', 'hw_document'=>'int', 'prefix='=>'string'], 'hw_Document_Content' => ['string', 'hw_document'=>'int'], 'hw_Document_SetContent' => ['bool', 'hw_document'=>'int', 'content'=>'string'], 'hw_Document_Size' => ['int', 'hw_document'=>'int'], 'hw_dummy' => ['string', 'link'=>'int', 'id'=>'int', 'msgid'=>'int'], 'hw_EditText' => ['bool', 'connection'=>'int', 'hw_document'=>'int'], 'hw_Error' => ['int', 'connection'=>'int'], 'hw_ErrorMsg' => ['string', 'connection'=>'int'], 'hw_Free_Document' => ['bool', 'hw_document'=>'int'], 'hw_GetAnchors' => ['array', 'connection'=>'int', 'objectid'=>'int'], 'hw_GetAnchorsObj' => ['array', 'connection'=>'int', 'objectid'=>'int'], 'hw_GetAndLock' => ['string', 'connection'=>'int', 'objectid'=>'int'], 'hw_GetChildColl' => ['array', 'connection'=>'int', 'objectid'=>'int'], 'hw_GetChildCollObj' => ['array', 'connection'=>'int', 'objectid'=>'int'], 'hw_GetChildDocColl' => ['array', 'connection'=>'int', 'objectid'=>'int'], 'hw_GetChildDocCollObj' => ['array', 'connection'=>'int', 'objectid'=>'int'], 'hw_GetObject' => ['', 'connection'=>'int', 'objectid'=>'', 'query='=>'string'], 'hw_GetObjectByQuery' => ['array', 'connection'=>'int', 'query'=>'string', 'max_hits'=>'int'], 'hw_GetObjectByQueryColl' => ['array', 'connection'=>'int', 'objectid'=>'int', 'query'=>'string', 'max_hits'=>'int'], 'hw_GetObjectByQueryCollObj' => ['array', 'connection'=>'int', 'objectid'=>'int', 'query'=>'string', 'max_hits'=>'int'], 'hw_GetObjectByQueryObj' => ['array', 'connection'=>'int', 'query'=>'string', 'max_hits'=>'int'], 'hw_GetParents' => ['array', 'connection'=>'int', 'objectid'=>'int'], 'hw_GetParentsObj' => ['array', 'connection'=>'int', 'objectid'=>'int'], 'hw_getrellink' => ['string', 'link'=>'int', 'rootid'=>'int', 'sourceid'=>'int', 'destid'=>'int'], 'hw_GetRemote' => ['int', 'connection'=>'int', 'objectid'=>'int'], 'hw_getremotechildren' => ['', 'connection'=>'int', 'object_record'=>'string'], 'hw_GetSrcByDestObj' => ['array', 'connection'=>'int', 'objectid'=>'int'], 'hw_GetText' => ['int', 'connection'=>'int', 'objectid'=>'int', 'prefix='=>''], 'hw_getusername' => ['string', 'connection'=>'int'], 'hw_Identify' => ['string', 'link'=>'int', 'username'=>'string', 'password'=>'string'], 'hw_InCollections' => ['array', 'connection'=>'int', 'object_id_array'=>'array', 'collection_id_array'=>'array', 'return_collections'=>'int'], 'hw_Info' => ['string', 'connection'=>'int'], 'hw_InsColl' => ['int', 'connection'=>'int', 'objectid'=>'int', 'object_array'=>'array'], 'hw_InsDoc' => ['int', 'connection'=>'', 'parentid'=>'int', 'object_record'=>'string', 'text='=>'string'], 'hw_insertanchors' => ['bool', 'hwdoc'=>'int', 'anchorecs'=>'array', 'dest'=>'array', 'urlprefixes='=>'array'], 'hw_InsertDocument' => ['int', 'connection'=>'int', 'parent_id'=>'int', 'hw_document'=>'int'], 'hw_InsertObject' => ['int', 'connection'=>'int', 'object_rec'=>'string', 'parameter'=>'string'], 'hw_mapid' => ['int', 'connection'=>'int', 'server_id'=>'int', 'object_id'=>'int'], 'hw_Modifyobject' => ['bool', 'connection'=>'int', 'object_to_change'=>'int', 'remove'=>'array', 'add'=>'array', 'mode='=>'int'], 'hw_mv' => ['int', 'connection'=>'int', 'object_id_array'=>'array', 'source_id'=>'int', 'destination_id'=>'int'], 'hw_New_Document' => ['int', 'object_record'=>'string', 'document_data'=>'string', 'document_size'=>'int'], 'hw_objrec2array' => ['array', 'object_record'=>'string', 'format='=>'array'], 'hw_Output_Document' => ['bool', 'hw_document'=>'int'], 'hw_pConnect' => ['int', 'host'=>'string', 'port'=>'int', 'username='=>'string', 'password='=>'string'], 'hw_PipeDocument' => ['int', 'connection'=>'int', 'objectid'=>'int', 'url_prefixes='=>'array'], 'hw_Root' => ['int'], 'hw_setlinkroot' => ['int', 'link'=>'int', 'rootid'=>'int'], 'hw_stat' => ['string', 'link'=>'int'], 'hw_Unlock' => ['bool', 'connection'=>'int', 'objectid'=>'int'], 'hw_Who' => ['array', 'connection'=>'int'], 'hwapi_attribute_new' => ['HW_API_Attribute', 'name='=>'string', 'value='=>'string'], 'hwapi_content_new' => ['HW_API_Content', 'content'=>'string', 'mimetype'=>'string'], 'hwapi_hgcsp' => ['HW_API', 'hostname'=>'string', 'port='=>'int'], 'hwapi_object_new' => ['hw_api_object', 'parameter'=>'array'], 'hypot' => ['float', 'num1'=>'float', 'num2'=>'float'], 'ibase_add_user' => ['bool', 'service_handle'=>'resource', 'user_name'=>'string', 'password'=>'string', 'first_name='=>'string', 'middle_name='=>'string', 'last_name='=>'string'], 'ibase_affected_rows' => ['int', 'link_identifier='=>'resource'], 'ibase_backup' => ['mixed', 'service_handle'=>'resource', 'source_db'=>'string', 'dest_file'=>'string', 'options='=>'int', 'verbose='=>'bool'], 'ibase_blob_add' => ['void', 'blob_handle'=>'resource', 'data'=>'string'], 'ibase_blob_cancel' => ['bool', 'blob_handle'=>'resource'], 'ibase_blob_close' => ['string', 'blob_handle'=>'resource'], 'ibase_blob_create' => ['resource', 'link_identifier='=>'resource'], 'ibase_blob_echo' => ['bool', 'link_identifier'=>'', 'blob_id'=>'string'], 'ibase_blob_echo\'1' => ['bool', 'blob_id'=>'string'], 'ibase_blob_get' => ['string', 'blob_handle'=>'resource', 'len'=>'int'], 'ibase_blob_import' => ['string', 'link_identifier'=>'', 'file_handle'=>''], 'ibase_blob_info' => ['array', 'link_identifier'=>'', 'blob_id'=>'string'], 'ibase_blob_info\'1' => ['array', 'blob_id'=>'string'], 'ibase_blob_open' => ['resource|false', 'link_identifier'=>'', 'blob_id'=>'string'], 'ibase_blob_open\'1' => ['resource', 'blob_id'=>'string'], 'ibase_close' => ['bool', 'link_identifier='=>'resource'], 'ibase_commit' => ['bool', 'link_identifier='=>'resource'], 'ibase_commit_ret' => ['bool', 'link_identifier='=>'resource'], 'ibase_connect' => ['resource', 'database='=>'string', 'username='=>'string', 'password='=>'string', 'charset='=>'string', 'buffers='=>'int', 'dialect='=>'int', 'role='=>'string'], 'ibase_db_info' => ['string', 'service_handle'=>'resource', 'db'=>'string', 'action'=>'int', 'argument='=>'int'], 'ibase_delete_user' => ['bool', 'service_handle'=>'resource', 'user_name'=>'string', 'password='=>'string', 'first_name='=>'string', 'middle_name='=>'string', 'last_name='=>'string'], 'ibase_drop_db' => ['bool', 'link_identifier='=>'resource'], 'ibase_errcode' => ['int'], 'ibase_errmsg' => ['string'], 'ibase_execute' => ['resource', 'query'=>'resource', 'bind_arg='=>'mixed', '...args='=>'mixed'], 'ibase_fetch_assoc' => ['array', 'result'=>'resource', 'fetch_flags='=>'int'], 'ibase_fetch_object' => ['object', 'result'=>'resource', 'fetch_flags='=>'int'], 'ibase_fetch_row' => ['array', 'result'=>'resource', 'fetch_flags='=>'int'], 'ibase_field_info' => ['array', 'query_result'=>'resource', 'field_number'=>'int'], 'ibase_free_event_handler' => ['bool', 'event'=>'resource'], 'ibase_free_query' => ['bool', 'query'=>'resource'], 'ibase_free_result' => ['bool', 'result'=>'resource'], 'ibase_gen_id' => ['int', 'generator'=>'string', 'increment='=>'int', 'link_identifier='=>'resource'], 'ibase_maintain_db' => ['bool', 'service_handle'=>'resource', 'db'=>'string', 'action'=>'int', 'argument='=>'int'], 'ibase_modify_user' => ['bool', 'service_handle'=>'resource', 'user_name'=>'string', 'password'=>'string', 'first_name='=>'string', 'middle_name='=>'string', 'last_name='=>'string'], 'ibase_name_result' => ['bool', 'result'=>'resource', 'name'=>'string'], 'ibase_num_fields' => ['int', 'query_result'=>'resource'], 'ibase_num_params' => ['int', 'query'=>'resource'], 'ibase_num_rows' => ['int', 'result_identifier'=>''], 'ibase_param_info' => ['array', 'query'=>'resource', 'field_number'=>'int'], 'ibase_pconnect' => ['resource', 'database='=>'string', 'username='=>'string', 'password='=>'string', 'charset='=>'string', 'buffers='=>'int', 'dialect='=>'int', 'role='=>'string'], 'ibase_prepare' => ['resource', 'link_identifier'=>'', 'query'=>'string', 'trans_identifier'=>''], 'ibase_query' => ['resource', 'link_identifier='=>'resource', 'string='=>'string', 'bind_arg='=>'int', '...args='=>''], 'ibase_restore' => ['mixed', 'service_handle'=>'resource', 'source_file'=>'string', 'dest_db'=>'string', 'options='=>'int', 'verbose='=>'bool'], 'ibase_rollback' => ['bool', 'link_identifier='=>'resource'], 'ibase_rollback_ret' => ['bool', 'link_identifier='=>'resource'], 'ibase_server_info' => ['string', 'service_handle'=>'resource', 'action'=>'int'], 'ibase_service_attach' => ['resource', 'host'=>'string', 'dba_username'=>'string', 'dba_password'=>'string'], 'ibase_service_detach' => ['bool', 'service_handle'=>'resource'], 'ibase_set_event_handler' => ['resource', 'link_identifier'=>'', 'callback'=>'callable', 'event='=>'string', '...args='=>''], 'ibase_set_event_handler\'1' => ['resource', 'callback'=>'callable', 'event'=>'string', '...args'=>''], 'ibase_timefmt' => ['bool', 'format'=>'string', 'columntype='=>'int'], 'ibase_trans' => ['resource', 'trans_args='=>'int', 'link_identifier='=>'', '...args='=>''], 'ibase_wait_event' => ['string', 'link_identifier'=>'', 'event='=>'string', '...args='=>''], 'ibase_wait_event\'1' => ['string', 'event'=>'string', '...args'=>''], 'iconv' => ['string|false', 'in_charset'=>'string', 'out_charset'=>'string', 'str'=>'string'], 'iconv_get_encoding' => ['mixed', 'type='=>'string'], 'iconv_mime_decode' => ['string|false', 'encoded_string'=>'string', 'mode='=>'int', 'charset='=>'string'], 'iconv_mime_decode_headers' => ['array|false', 'headers'=>'string', 'mode='=>'int', 'charset='=>'string'], 'iconv_mime_encode' => ['string|false', 'field_name'=>'string', 'field_value'=>'string', 'preference='=>'array'], 'iconv_set_encoding' => ['bool', 'type'=>'string', 'charset'=>'string'], 'iconv_strlen' => ['0|positive-int|false', 'str'=>'string', 'charset='=>'string'], 'iconv_strpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int', 'charset='=>'string'], 'iconv_strrpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'charset='=>'string'], 'iconv_substr' => ['string|false', 'str'=>'string', 'offset'=>'int', 'length='=>'int', 'charset='=>'string'], 'id3_get_frame_long_name' => ['string', 'frameid'=>'string'], 'id3_get_frame_short_name' => ['string', 'frameid'=>'string'], 'id3_get_genre_id' => ['int', 'genre'=>'string'], 'id3_get_genre_list' => ['array'], 'id3_get_genre_name' => ['string', 'genre_id'=>'int'], 'id3_get_tag' => ['array', 'filename'=>'string', 'version='=>'int'], 'id3_get_version' => ['int', 'filename'=>'string'], 'id3_remove_tag' => ['bool', 'filename'=>'string', 'version='=>'int'], 'id3_set_tag' => ['bool', 'filename'=>'string', 'tag'=>'array', 'version='=>'int'], 'idate' => ['int|false', 'format'=>'string', 'timestamp='=>'int'], 'idn_strerror' => ['string', 'errorcode'=>'int'], 'idn_to_ascii' => ['string|false', 'domain'=>'string', 'options='=>'int', 'variant='=>'int', '&w_idna_info='=>'array'], 'idn_to_utf8' => ['string|false', 'domain'=>'string', 'options='=>'int', 'variant='=>'int', '&w_idna_info='=>'array'], 'ifx_affected_rows' => ['int', 'result_id'=>'resource'], 'ifx_blobinfile_mode' => ['bool', 'mode'=>'int'], 'ifx_byteasvarchar' => ['bool', 'mode'=>'int'], 'ifx_close' => ['bool', 'link_identifier='=>'resource'], 'ifx_connect' => ['resource', 'database='=>'string', 'userid='=>'string', 'password='=>'string'], 'ifx_copy_blob' => ['int', 'bid'=>'int'], 'ifx_create_blob' => ['int', 'type'=>'int', 'mode'=>'int', 'param'=>'string'], 'ifx_create_char' => ['int', 'param'=>'string'], 'ifx_do' => ['bool', 'result_id'=>'resource'], 'ifx_error' => ['string', 'link_identifier='=>'resource'], 'ifx_errormsg' => ['string', 'errorcode='=>'int'], 'ifx_fetch_row' => ['array', 'result_id'=>'resource', 'position='=>'mixed'], 'ifx_fieldproperties' => ['array', 'result_id'=>'resource'], 'ifx_fieldtypes' => ['array', 'result_id'=>'resource'], 'ifx_free_blob' => ['bool', 'bid'=>'int'], 'ifx_free_char' => ['bool', 'bid'=>'int'], 'ifx_free_result' => ['bool', 'result_id'=>'resource'], 'ifx_get_blob' => ['string', 'bid'=>'int'], 'ifx_get_char' => ['string', 'bid'=>'int'], 'ifx_getsqlca' => ['array', 'result_id'=>'resource'], 'ifx_htmltbl_result' => ['int', 'result_id'=>'resource', 'html_table_options='=>'string'], 'ifx_nullformat' => ['bool', 'mode'=>'int'], 'ifx_num_fields' => ['int', 'result_id'=>'resource'], 'ifx_num_rows' => ['int', 'result_id'=>'resource'], 'ifx_pconnect' => ['resource', 'database='=>'string', 'userid='=>'string', 'password='=>'string'], 'ifx_prepare' => ['resource', 'query'=>'string', 'link_identifier'=>'resource', 'cursor_def='=>'int', 'blobidarray='=>'mixed'], 'ifx_query' => ['resource', 'query'=>'string', 'link_identifier'=>'resource', 'cursor_type='=>'int', 'blobidarray='=>'mixed'], 'ifx_textasvarchar' => ['bool', 'mode'=>'int'], 'ifx_update_blob' => ['bool', 'bid'=>'int', 'content'=>'string'], 'ifx_update_char' => ['bool', 'bid'=>'int', 'content'=>'string'], 'ifxus_close_slob' => ['bool', 'bid'=>'int'], 'ifxus_create_slob' => ['int', 'mode'=>'int'], 'ifxus_free_slob' => ['bool', 'bid'=>'int'], 'ifxus_open_slob' => ['int', 'bid'=>'int', 'mode'=>'int'], 'ifxus_read_slob' => ['string', 'bid'=>'int', 'nbytes'=>'int'], 'ifxus_seek_slob' => ['int', 'bid'=>'int', 'mode'=>'int', 'offset'=>'int'], 'ifxus_tell_slob' => ['int', 'bid'=>'int'], 'ifxus_write_slob' => ['int', 'bid'=>'int', 'content'=>'string'], 'igbinary_serialize' => ['string|null', 'value'=>'mixed'], 'igbinary_unserialize' => ['mixed', 'str'=>'string'], 'ignore_user_abort' => ['0|1', 'value='=>'bool'], 'iis_add_server' => ['int', 'path'=>'string', 'comment'=>'string', 'server_ip'=>'string', 'port'=>'int', 'host_name'=>'string', 'rights'=>'int', 'start_server'=>'int'], 'iis_get_dir_security' => ['int', 'server_instance'=>'int', 'virtual_path'=>'string'], 'iis_get_script_map' => ['string', 'server_instance'=>'int', 'virtual_path'=>'string', 'script_extension'=>'string'], 'iis_get_server_by_comment' => ['int', 'comment'=>'string'], 'iis_get_server_by_path' => ['int', 'path'=>'string'], 'iis_get_server_rights' => ['int', 'server_instance'=>'int', 'virtual_path'=>'string'], 'iis_get_service_state' => ['int', 'service_id'=>'string'], 'iis_remove_server' => ['int', 'server_instance'=>'int'], 'iis_set_app_settings' => ['int', 'server_instance'=>'int', 'virtual_path'=>'string', 'application_scope'=>'string'], 'iis_set_dir_security' => ['int', 'server_instance'=>'int', 'virtual_path'=>'string', 'directory_flags'=>'int'], 'iis_set_script_map' => ['int', 'server_instance'=>'int', 'virtual_path'=>'string', 'script_extension'=>'string', 'engine_path'=>'string', 'allow_scripting'=>'int'], 'iis_set_server_rights' => ['int', 'server_instance'=>'int', 'virtual_path'=>'string', 'directory_flags'=>'int'], 'iis_start_server' => ['int', 'server_instance'=>'int'], 'iis_start_service' => ['int', 'service_id'=>'string'], 'iis_stop_server' => ['int', 'server_instance'=>'int'], 'iis_stop_service' => ['int', 'service_id'=>'string'], 'image2wbmp' => ['bool', 'im'=>'resource', 'filename='=>'?string', 'threshold='=>'int'], 'image_type_to_extension' => ['string|false', 'imagetype'=>'int', 'include_dot='=>'bool'], 'image_type_to_mime_type' => ['string', 'imagetype'=>'int'], 'imageaffine' => ['resource|false', 'src'=>'resource', 'affine'=>'array', 'clip='=>'array'], 'imageaffineconcat' => ['array', 'm1'=>'array', 'm2'=>'array'], 'imageaffinematrixconcat' => ['array{0:float,1:float,2:float,3:float,4:float,5:float}|false', 'm1'=>'array', 'm2'=>'array'], 'imageaffinematrixget' => ['array{0:float,1:float,2:float,3:float,4:float,5:float}|false', 'type'=>'int', 'options'=>'array|float'], 'imagealphablending' => ['bool', 'im'=>'resource', 'on'=>'bool'], 'imageantialias' => ['bool', 'im'=>'resource', 'on'=>'bool'], 'imagearc' => ['bool', 'im'=>'resource', 'cx'=>'int', 'cy'=>'int', 'w'=>'int', 'h'=>'int', 's'=>'int', 'e'=>'int', 'col'=>'int'], 'imagebmp' => ['bool', 'image'=>'resource', 'to='=>'string|resource|null', 'compressed='=>'bool'], 'imagechar' => ['bool', 'im'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'c'=>'string', 'col'=>'int'], 'imagecharup' => ['bool', 'im'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'c'=>'string', 'col'=>'int'], 'imagecolorallocate' => ['int<0, max>|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'], 'imagecolorallocatealpha' => ['int<0, max>|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'], 'imagecolorat' => ['int<0, max>|false', 'im'=>'resource', 'x'=>'int', 'y'=>'int'], 'imagecolorclosest' => ['int<0, max>', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'], 'imagecolorclosestalpha' => ['int<0, max>', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'], 'imagecolorclosesthwb' => ['int<0, max>', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'], 'imagecolordeallocate' => ['bool', 'im'=>'resource', 'index'=>'int'], 'imagecolorexact' => ['int<0, max>|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'], 'imagecolorexactalpha' => ['int<0, max>|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'], 'imagecolormatch' => ['bool', 'im1'=>'resource', 'im2'=>'resource'], 'imagecolorresolve' => ['int<0, max>', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'], 'imagecolorresolvealpha' => ['int<0, max>', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'], 'imagecolorset' => ['void', 'im'=>'resource', 'col'=>'int', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha='=>'int'], 'imagecolorsforindex' => ['array{red: int<0, 255>, green: int<0, 255>, blue: int<0, 255>, alpha: int<0, 127>}', 'im'=>'resource', 'col'=>'int'], 'imagecolorstotal' => ['int<0, 256>', 'im'=>'resource'], 'imagecolortransparent' => ['int', 'im'=>'resource', 'col='=>'int'], 'imageconvolution' => ['bool', 'src_im'=>'resource', 'matrix3x3'=>'array', 'div'=>'float', 'offset'=>'float'], 'imagecopy' => ['bool', 'dst_im'=>'resource', 'src_im'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_w'=>'int', 'src_h'=>'int'], 'imagecopymerge' => ['bool', 'src_im'=>'resource', 'dst_im'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_w'=>'int', 'src_h'=>'int', 'pct'=>'int'], 'imagecopymergegray' => ['bool', 'src_im'=>'resource', 'dst_im'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_w'=>'int', 'src_h'=>'int', 'pct'=>'int'], 'imagecopyresampled' => ['bool', 'dst_im'=>'resource', 'src_im'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_w'=>'int', 'dst_h'=>'int', 'src_w'=>'int', 'src_h'=>'int'], 'imagecopyresized' => ['bool', 'dst_im'=>'resource', 'src_im'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_w'=>'int', 'dst_h'=>'int', 'src_w'=>'int', 'src_h'=>'int'], 'imagecreate' => ['__benevolent', 'x_size'=>'int', 'y_size'=>'int'], 'imagecreatefrombmp' => ['resource|false', 'filename'=>'string'], 'imagecreatefromgd' => ['resource|false', 'filename'=>'string'], 'imagecreatefromgd2' => ['resource|false', 'filename'=>'string'], 'imagecreatefromgd2part' => ['resource|false', 'filename'=>'string', 'srcx'=>'int', 'srcy'=>'int', 'width'=>'int', 'height'=>'int'], 'imagecreatefromgif' => ['resource|false', 'filename'=>'string'], 'imagecreatefromjpeg' => ['resource|false', 'filename'=>'string'], 'imagecreatefrompng' => ['resource|false', 'filename'=>'string'], 'imagecreatefromstring' => ['resource|false', 'image'=>'string'], 'imagecreatefromwbmp' => ['resource|false', 'filename'=>'string'], 'imagecreatefromwebp' => ['resource|false', 'filename'=>'string'], 'imagecreatefromxbm' => ['resource|false', 'filename'=>'string'], 'imagecreatefromxpm' => ['resource|false', 'filename'=>'string'], 'imagecreatetruecolor' => ['__benevolent', 'x_size'=>'int', 'y_size'=>'int'], 'imagecrop' => ['resource|false', 'im'=>'resource', 'rect'=>'array'], 'imagecropauto' => ['resource|false', 'im'=>'resource', 'mode='=>'int', 'threshold='=>'float', 'color='=>'int'], 'imagedashedline' => ['bool', 'im'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'col'=>'int'], 'imagedestroy' => ['bool', 'im'=>'resource'], 'imageellipse' => ['bool', 'im'=>'resource', 'cx'=>'int', 'cy'=>'int', 'w'=>'int', 'h'=>'int', 'color'=>'int'], 'imagefill' => ['bool', 'im'=>'resource', 'x'=>'int', 'y'=>'int', 'col'=>'int'], 'imagefilledarc' => ['bool', 'im'=>'resource', 'cx'=>'int', 'cy'=>'int', 'w'=>'int', 'h'=>'int', 's'=>'int', 'e'=>'int', 'col'=>'int', 'style'=>'int'], 'imagefilledellipse' => ['bool', 'im'=>'resource', 'cx'=>'int', 'cy'=>'int', 'w'=>'int', 'h'=>'int', 'color'=>'int'], 'imagefilledpolygon' => ['bool', 'im'=>'resource', 'point'=>'array', 'num_points'=>'int', 'col'=>'int'], 'imagefilledrectangle' => ['bool', 'im'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'col'=>'int'], 'imagefilltoborder' => ['bool', 'im'=>'resource', 'x'=>'int', 'y'=>'int', 'border'=>'int', 'col'=>'int'], 'imagefilter' => ['bool', 'src_im'=>'resource', 'filtertype'=>'int', 'arg1='=>'int', 'arg2='=>'int', 'arg3='=>'int', 'arg4='=>'int'], 'imageflip' => ['bool', 'im'=>'resource', 'mode'=>'int'], 'imagefontheight' => ['int', 'font'=>'int'], 'imagefontwidth' => ['int', 'font'=>'int'], 'imageftbbox' => ['array|false', 'size'=>'float', 'angle'=>'float', 'font_file'=>'string', 'text'=>'string', 'extrainfo='=>'array'], 'imagefttext' => ['array|false', 'im'=>'resource', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'col'=>'int', 'font_file'=>'string', 'text'=>'string', 'extrainfo='=>'array'], 'imagegammacorrect' => ['bool', 'im'=>'resource', 'inputgamma'=>'float', 'outputgamma'=>'float'], 'imagegd' => ['bool', 'im'=>'resource', 'filename='=>'string|resource|null'], 'imagegd2' => ['bool', 'im'=>'resource', 'filename='=>'string|resource|null', 'chunk_size='=>'int', 'type='=>'int'], 'imagegetclip' => ['array', 'im'=>'resource'], 'imagegif' => ['bool', 'im'=>'resource', 'filename='=>'string|resource|null'], 'imagegrabscreen' => ['resource|false'], 'imagegrabwindow' => ['resource|false', 'window_handle'=>'int', 'client_area='=>'int'], 'imageinterlace' => ['int', 'im'=>'resource', 'interlace='=>'int'], 'imageistruecolor' => ['bool', 'im'=>'resource'], 'imagejpeg' => ['bool', 'im'=>'resource', 'filename='=>'string|resource|null', 'quality='=>'int'], 'imagelayereffect' => ['bool', 'im'=>'resource', 'effect'=>'int'], 'imageline' => ['bool', 'im'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'col'=>'int'], 'imageloadfont' => ['int|false', 'filename'=>'string'], 'imageObj::pasteImage' => ['void', 'srcImg'=>'imageObj', 'transparentColorHex'=>'int', 'dstX'=>'int', 'dstY'=>'int', 'angle'=>'int'], 'imageObj::saveImage' => ['int', 'filename'=>'string', 'oMap'=>'mapObj'], 'imageObj::saveWebImage' => ['string'], 'imageopenpolygon' => ['bool', 'image'=>'resource', 'points'=>'array', 'num_points'=>'int', 'color'=>'int'], 'imagepalettecopy' => ['void', 'dst'=>'resource', 'src'=>'resource'], 'imagepalettetotruecolor' => ['bool', 'src'=>'resource'], 'imagepng' => ['bool', 'im'=>'resource', 'filename='=>'string|resource|null', 'quality='=>'int', 'filters='=>'int'], 'imagepolygon' => ['bool', 'im'=>'resource', 'point'=>'array', 'num_points'=>'int', 'col'=>'int'], 'imagepsbbox' => ['array', 'text'=>'string', 'font'=>'', 'size'=>'int', 'space'=>'int', 'tightness'=>'int', 'angle'=>'float'], 'imagepsencodefont' => ['bool', 'font_index'=>'resource', 'encodingfile'=>'string'], 'imagepsextendfont' => ['bool', 'font_index'=>'resource', 'extend'=>'float'], 'imagepsfreefont' => ['bool', 'font_index'=>'resource'], 'imagepsloadfont' => ['resource', 'filename'=>'string'], 'imagepsslantfont' => ['bool', 'font_index'=>'resource', 'slant'=>'float'], 'imagepstext' => ['array', 'image'=>'resource', 'text'=>'string', 'font_index'=>'resource', 'size'=>'int', 'foreground'=>'int', 'background'=>'int', 'x'=>'int', 'y'=>'int', 'space='=>'int', 'tightness='=>'int', 'angle='=>'float', 'antialias_steps='=>'int'], 'imagerectangle' => ['bool', 'im'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'col'=>'int'], 'imageresolution' => ['mixed', 'image'=>'resource', 'res_x='=>'int', 'res_y='=>'int'], 'imagerotate' => ['resource|false', 'src_im'=>'resource', 'angle'=>'float', 'bgdcolor'=>'int', 'ignoretransparent='=>'int'], 'imagesavealpha' => ['bool', 'im'=>'resource', 'on'=>'bool'], 'imagescale' => ['resource|false', 'im'=>'resource', 'new_width'=>'int', 'new_height='=>'int', 'method='=>'int'], 'imagesetbrush' => ['bool', 'image'=>'resource', 'brush'=>'resource'], 'imagesetclip' => ['bool', 'im'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int'], 'imagesetinterpolation' => ['bool', 'im'=>'resource', 'method'=>'int'], 'imagesetpixel' => ['bool', 'im'=>'resource', 'x'=>'int', 'y'=>'int', 'col'=>'int'], 'imagesetstyle' => ['bool', 'im'=>'resource', 'styles'=>'array'], 'imagesetthickness' => ['bool', 'im'=>'resource', 'thickness'=>'int'], 'imagesettile' => ['bool', 'image'=>'resource', 'tile'=>'resource'], 'imagestring' => ['bool', 'im'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'str'=>'string', 'col'=>'int'], 'imagestringup' => ['bool', 'im'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'str'=>'string', 'col'=>'int'], 'imagesx' => ['int<1, max>', 'im'=>'resource'], 'imagesy' => ['int<1, max>', 'im'=>'resource'], 'imagetruecolortopalette' => ['bool', 'im'=>'resource', 'ditherflag'=>'bool', 'colorswanted'=>'int'], 'imagettfbbox' => ['array|false', 'size'=>'float', 'angle'=>'float', 'font_file'=>'string', 'text'=>'string'], 'imagettftext' => ['array|false', 'im'=>'resource', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'col'=>'int', 'font_file'=>'string', 'text'=>'string'], 'imagetypes' => ['int'], 'imagewbmp' => ['bool', 'im'=>'resource', 'filename='=>'string|resource|null', 'foreground='=>'int'], 'imagewebp' => ['bool', 'im'=>'resource', 'filename='=>'string|resource|null', 'quality='=>'int'], 'imagexbm' => ['bool', 'im'=>'resource', 'filename='=>'string|resource|null', 'foreground='=>'int'], 'Imagick::__construct' => ['void', 'files='=>''], 'Imagick::__toString' => ['string'], 'Imagick::adaptiveBlurImage' => ['bool', 'radius'=>'float', 'sigma'=>'float', 'channel='=>'int'], 'Imagick::adaptiveResizeImage' => ['bool', 'columns'=>'int', 'rows'=>'int', 'bestfit='=>'bool'], 'Imagick::adaptiveSharpenImage' => ['bool', 'radius'=>'float', 'sigma'=>'float', 'channel='=>'int'], 'Imagick::adaptiveThresholdImage' => ['bool', 'width'=>'int', 'height'=>'int', 'offset'=>'int'], 'Imagick::addImage' => ['bool', 'source'=>'imagick'], 'Imagick::addNoiseImage' => ['bool', 'noise_type'=>'int', 'channel='=>'int'], 'Imagick::affineTransformImage' => ['bool', 'matrix'=>'imagickdraw'], 'Imagick::animateImages' => ['bool', 'x_server'=>'string'], 'Imagick::annotateImage' => ['bool', 'draw_settings'=>'imagickdraw', 'x'=>'float', 'y'=>'float', 'angle'=>'float', 'text'=>'string'], 'Imagick::appendImages' => ['Imagick', 'stack'=>'bool'], 'Imagick::autoGammaImage' => ['bool', 'channel='=>'int'], 'Imagick::autoLevelImage' => ['bool', 'channel='=>'int'], 'Imagick::autoOrient' => ['bool'], 'Imagick::averageImages' => ['Imagick'], 'Imagick::blackThresholdImage' => ['bool', 'threshold'=>'mixed'], 'Imagick::blueShiftImage' => ['bool', 'factor='=>'float'], 'Imagick::blurImage' => ['bool', 'radius'=>'float', 'sigma'=>'float', 'channel='=>'int'], 'Imagick::borderImage' => ['bool', 'bordercolor'=>'mixed', 'width'=>'int', 'height'=>'int'], 'Imagick::brightnessContrastImage' => ['bool', 'brightness'=>'float', 'contrast'=>'float', 'channel='=>'int'], 'Imagick::charcoalImage' => ['bool', 'radius'=>'float', 'sigma'=>'float'], 'Imagick::chopImage' => ['bool', 'width'=>'int', 'height'=>'int', 'x'=>'int', 'y'=>'int'], 'Imagick::clampImage' => ['bool', 'channel='=>'int'], 'Imagick::clear' => ['bool'], 'Imagick::clipImage' => ['bool'], 'Imagick::clipImagePath' => ['void', 'pathname'=>'string', 'inside'=>'string'], 'Imagick::clipPathImage' => ['bool', 'pathname'=>'string', 'inside'=>'bool'], 'Imagick::clone' => ['Imagick'], 'Imagick::clutImage' => ['bool', 'lookup_table'=>'imagick', 'int='=>'float'], 'Imagick::coalesceImages' => ['Imagick'], 'Imagick::colorFloodfillImage' => ['bool', 'fill'=>'mixed', 'fuzz'=>'float', 'bordercolor'=>'mixed', 'x'=>'int', 'y'=>'int'], 'Imagick::colorizeImage' => ['bool', 'colorize'=>'mixed', 'opacity'=>'mixed'], 'Imagick::colorMatrixImage' => ['bool', 'color_matrix'=>'array'], 'Imagick::combineImages' => ['Imagick', 'channeltype'=>'int'], 'Imagick::commentImage' => ['bool', 'comment'=>'string'], 'Imagick::compareImageChannels' => ['array{Imagick,float}', 'image'=>'imagick', 'channeltype'=>'int', 'metrictype'=>'int'], 'Imagick::compareImageLayers' => ['Imagick', 'method'=>'int'], 'Imagick::compareImages' => ['array{Imagick,float}', 'compare'=>'imagick', 'metric'=>'int'], 'Imagick::compositeImage' => ['bool', 'composite_object'=>'imagick', 'composite'=>'int', 'x'=>'int', 'y'=>'int', 'channel='=>'int'], 'Imagick::compositeImageGravity' => ['bool', 'imagick'=>'Imagick', 'COMPOSITE_CONSTANT'=>'int', 'GRAVITY_CONSTANT'=>'int'], 'Imagick::contrastImage' => ['bool', 'sharpen'=>'bool'], 'Imagick::contrastStretchImage' => ['bool', 'black_point'=>'float', 'white_point'=>'float', 'channel='=>'int'], 'Imagick::convolveImage' => ['bool', 'kernel'=>'array', 'channel='=>'int'], 'Imagick::count' => ['0|positive-int', 'mode='=>'int'], 'Imagick::cropImage' => ['bool', 'width'=>'int', 'height'=>'int', 'x'=>'int', 'y'=>'int'], 'Imagick::cropThumbnailImage' => ['bool', 'width'=>'int', 'height'=>'int', 'legacy='=>'bool'], 'Imagick::current' => ['Imagick'], 'Imagick::cycleColormapImage' => ['bool', 'displace'=>'int'], 'Imagick::decipherImage' => ['bool', 'passphrase'=>'string'], 'Imagick::deconstructImages' => ['Imagick'], 'Imagick::deleteImageArtifact' => ['bool', 'artifact'=>'string'], 'Imagick::deleteImageProperty' => ['void', 'name'=>'string'], 'Imagick::deskewImage' => ['bool', 'threshold'=>'float'], 'Imagick::despeckleImage' => ['bool'], 'Imagick::destroy' => ['bool'], 'Imagick::displayImage' => ['bool', 'servername'=>'string'], 'Imagick::displayImages' => ['bool', 'servername'=>'string'], 'Imagick::distortImage' => ['bool', 'method'=>'int', 'arguments'=>'array', 'bestfit'=>'bool'], 'Imagick::drawImage' => ['bool', 'draw'=>'imagickdraw'], 'Imagick::edgeImage' => ['bool', 'radius'=>'float'], 'Imagick::embossImage' => ['bool', 'radius'=>'float', 'sigma'=>'float'], 'Imagick::encipherImage' => ['bool', 'passphrase'=>'string'], 'Imagick::enhanceImage' => ['bool'], 'Imagick::equalizeImage' => ['bool'], 'Imagick::evaluateImage' => ['bool', 'op'=>'int', 'constant'=>'float', 'channel='=>'int'], 'Imagick::evaluateImages' => ['bool', 'EVALUATE_CONSTANT'=>'int'], 'Imagick::exportImagePixels' => ['list', 'x'=>'int', 'y'=>'int', 'width'=>'int', 'height'=>'int', 'map'=>'string', 'storage'=>'int'], 'Imagick::extentImage' => ['bool', 'width'=>'int', 'height'=>'int', 'x'=>'int', 'y'=>'int'], 'Imagick::filter' => ['bool', 'ImagickKernel'=>'ImagickKernel', 'CHANNEL='=>'int'], 'Imagick::flattenImages' => ['Imagick'], 'Imagick::flipImage' => ['bool'], 'Imagick::floodFillPaintImage' => ['bool', 'fill'=>'mixed', 'fuzz'=>'float', 'target'=>'mixed', 'x'=>'int', 'y'=>'int', 'invert'=>'bool', 'channel='=>'int'], 'Imagick::flopImage' => ['bool'], 'Imagick::forwardFourierTransformimage' => ['bool', 'magnitude'=>'bool'], 'Imagick::frameImage' => ['bool', 'matte_color'=>'mixed', 'width'=>'int', 'height'=>'int', 'inner_bevel'=>'int', 'outer_bevel'=>'int'], 'Imagick::functionImage' => ['bool', 'function'=>'int', 'arguments'=>'array', 'channel='=>'int'], 'Imagick::fxImage' => ['Imagick', 'expression'=>'string', 'channel='=>'int'], 'Imagick::gammaImage' => ['bool', 'gamma'=>'float', 'channel='=>'int'], 'Imagick::gaussianBlurImage' => ['bool', 'radius'=>'float', 'sigma'=>'float', 'channel='=>'int'], 'Imagick::getColorspace' => ['Imagick::COLORSPACE_*'], 'Imagick::getCompression' => ['Imagick::COMPRESSION_*'], 'Imagick::getCompressionQuality' => ['int'], 'Imagick::getConfigureOptions' => ['string'], 'Imagick::getCopyright' => ['string'], 'Imagick::getFeatures' => ['string'], 'Imagick::getFilename' => ['string'], 'Imagick::getFont' => ['string'], 'Imagick::getFormat' => ['string'], 'Imagick::getGravity' => ['Imagick::GRAVITY_*'], 'Imagick::getHDRIEnabled' => ['int'], 'Imagick::getHomeURL' => ['string'], 'Imagick::getImage' => ['Imagick'], 'Imagick::getImageAlphaChannel' => ['bool'], 'Imagick::getImageArtifact' => ['string', 'artifact'=>'string'], 'Imagick::getImageAttribute' => ['string', 'key'=>'string'], 'Imagick::getImageBackgroundColor' => ['ImagickPixel'], 'Imagick::getImageBlob' => ['string'], 'Imagick::getImageBluePrimary' => ['array{x:float,y:float}'], 'Imagick::getImageBorderColor' => ['ImagickPixel'], 'Imagick::getImageChannelDepth' => ['int', 'channel'=>'int'], 'Imagick::getImageChannelDistortion' => ['float', 'reference'=>'imagick', 'channel'=>'int', 'metric'=>'int'], 'Imagick::getImageChannelDistortions' => ['float', 'reference'=>'imagick', 'metric'=>'int', 'channel='=>'int'], 'Imagick::getImageChannelExtrema' => ['array{minima:0|positive-int,maxima:0|positive-int}', 'channel'=>'int'], 'Imagick::getImageChannelKurtosis' => ['array{kurtosis:float,skewness:float}', 'channel='=>'int'], 'Imagick::getImageChannelMean' => ['array{mean:float,standardDeviation:float}', 'channel'=>'int'], 'Imagick::getImageChannelRange' => ['array{minima:float,maxima:float}', 'channel'=>'int'], 'Imagick::getImageChannelStatistics' => ['array{mean:float,minima:float,maxima:float,standardDeviation:float,depth:int}'], 'Imagick::getImageClipMask' => ['Imagick'], 'Imagick::getImageColormapColor' => ['ImagickPixel', 'index'=>'int'], 'Imagick::getImageColors' => ['int'], 'Imagick::getImageColorspace' => ['Imagick::COLORSPACE_*'], 'Imagick::getImageCompose' => ['Imagick::COMPOSITE_*'], 'Imagick::getImageCompression' => ['Imagick::COMPRESSION_*'], 'Imagick::getImageCompressionQuality' => ['int'], 'Imagick::getImageDelay' => ['int'], 'Imagick::getImageDepth' => ['int'], 'Imagick::getImageDispose' => ['Imagick::DISPOSE_*'], 'Imagick::getImageDistortion' => ['float', 'reference'=>'magickwand', 'metric'=>'int'], 'Imagick::getImageExtrema' => ['array{min:0|positive-int,max:0|positive-int}'], 'Imagick::getImageFilename' => ['string'], 'Imagick::getImageFormat' => ['string'], 'Imagick::getImageGamma' => ['float'], 'Imagick::getImageGeometry' => ['array{width:int,height:int}'], 'Imagick::getImageGravity' => ['Imagick::GRAVITY_*'], 'Imagick::getImageGreenPrimary' => ['array{x:float,y:float}'], 'Imagick::getImageHeight' => ['int'], 'Imagick::getImageHistogram' => ['list'], 'Imagick::getImageIndex' => ['int'], 'Imagick::getImageInterlaceScheme' => ['Imagick::INTERLACE_*'], 'Imagick::getImageInterpolateMethod' => ['Imagick::INTERPOLATE_*'], 'Imagick::getImageIterations' => ['int'], 'Imagick::getImageLength' => ['0|positive-int'], 'Imagick::getImageMagickLicense' => ['string'], 'Imagick::getImageMatte' => ['bool'], 'Imagick::getImageMatteColor' => ['ImagickPixel'], 'Imagick::getImageMimeType' => ['non-empty-string'], 'Imagick::getImageOrientation' => ['Imagick::ORIENTATION_*'], 'Imagick::getImagePage' => ['array{width:int,height:int,x:int,y:int}'], 'Imagick::getImagePixelColor' => ['ImagickPixel', 'x'=>'int', 'y'=>'int'], 'Imagick::getImageProfile' => ['string', 'name'=>'string'], 'Imagick::getImageProfiles' => ['array', 'pattern='=>'string', 'only_names='=>'bool'], 'Imagick::getImageProperties' => ['array', 'pattern='=>'string', 'only_names='=>'bool'], 'Imagick::getImageProperty' => ['string', 'name'=>'string'], 'Imagick::getImageRedPrimary' => ['array{x:float,y:float}'], 'Imagick::getImageRegion' => ['Imagick', 'width'=>'int', 'height'=>'int', 'x'=>'int', 'y'=>'int'], 'Imagick::getImageRenderingIntent' => ['Imagick::RENDERINGINTENT_*'], 'Imagick::getImageResolution' => ['array{x:float,y:float}'], 'Imagick::getImagesBlob' => ['string'], 'Imagick::getImageScene' => ['0|positive-int'], 'Imagick::getImageSignature' => ['string'], 'Imagick::getImageSize' => ['0|positive-int'], 'Imagick::getImageTicksPerSecond' => ['0|positive-int'], 'Imagick::getImageTotalInkDensity' => ['float'], 'Imagick::getImageType' => ['Imagick::IMGTYPE_*'], 'Imagick::getImageUnits' => ['int'], 'Imagick::getImageVirtualPixelMethod' => ['int'], 'Imagick::getImageWhitePoint' => ['array{x:float,y:float}'], 'Imagick::getImageWidth' => ['0|positive-int'], 'Imagick::getInterlaceScheme' => ['Imagick::INTERLACE_*'], 'Imagick::getIteratorIndex' => ['int'], 'Imagick::getNumberImages' => ['0|positive-int'], 'Imagick::getOption' => ['string', 'key'=>'string'], 'Imagick::getPackageName' => ['string'], 'Imagick::getPage' => ['array{width:int,height:int,x:int,y:int}'], 'Imagick::getPixelIterator' => ['ImagickPixelIterator'], 'Imagick::getPixelRegionIterator' => ['ImagickPixelIterator', 'x'=>'int', 'y'=>'int', 'columns'=>'int', 'rows'=>'int'], 'Imagick::getPointSize' => ['float'], 'Imagick::getQuantum' => ['0|positive-int'], 'Imagick::getQuantumDepth' => ['array{quantumDepthLong:0|positive-int,quantumDepthString:numeric-string}'], 'Imagick::getQuantumRange' => ['array{quantumRangeLong:0|positive-int,quantumRangeString:numeric-string}'], 'Imagick::getRegistry' => ['string', 'key'=>'string'], 'Imagick::getReleaseDate' => ['string'], 'Imagick::getResource' => ['int', 'type'=>'int'], 'Imagick::getResourceLimit' => ['int', 'type'=>'int'], 'Imagick::getSamplingFactors' => ['list'], 'Imagick::getSize' => ['array{columns:0|positive-int,rows:0|positive-int}'], 'Imagick::getSizeOffset' => ['int'], 'Imagick::getVersion' => ['array{versionNumber:0|positive-int,versionString:non-falsy-string}'], 'Imagick::haldClutImage' => ['bool', 'clut'=>'imagick', 'channel='=>'int'], 'Imagick::hasNextImage' => ['bool'], 'Imagick::hasPreviousImage' => ['bool'], 'Imagick::identifyFormat' => ['string|false', 'embedText'=>'string'], 'Imagick::identifyImage' => ['array{imageName:string,mimetype:string,format:string,units:string,colorSpace:string,type:string,compression:string,fileSize:string,geometry:array{width:0|positive-int,height:0|positive-int},resolution:array{x:float,y:float},signature:string}', 'appendrawoutput='=>'bool'], 'Imagick::identifyImageType' => ['int'], 'Imagick::implodeImage' => ['bool', 'radius'=>'float'], 'Imagick::importImagePixels' => ['bool', 'x'=>'int', 'y'=>'int', 'width'=>'int', 'height'=>'int', 'map'=>'string', 'storage'=>'int', 'pixels'=>'array'], 'Imagick::inverseFourierTransformImage' => ['bool', 'complement'=>'Imagick', 'magnitude'=>'bool'], 'Imagick::key' => ['int|string'], 'Imagick::labelImage' => ['bool', 'label'=>'string'], 'Imagick::levelImage' => ['bool', 'blackpoint'=>'float', 'gamma'=>'float', 'whitepoint'=>'float', 'channel='=>'int'], 'Imagick::linearStretchImage' => ['bool', 'blackpoint'=>'float', 'whitepoint'=>'float'], 'Imagick::liquidRescaleImage' => ['bool', 'width'=>'int', 'height'=>'int', 'delta_x'=>'float', 'rigidity'=>'float'], 'Imagick::listRegistry' => ['array'], 'Imagick::localContrastImage' => ['bool', 'radius'=>'float', 'strength'=>'float'], 'Imagick::magnifyImage' => ['bool'], 'Imagick::mapImage' => ['bool', 'map'=>'imagick', 'dither'=>'bool'], 'Imagick::matteFloodfillImage' => ['bool', 'alpha'=>'float', 'fuzz'=>'float', 'bordercolor'=>'mixed', 'x'=>'int', 'y'=>'int'], 'Imagick::medianFilterImage' => ['bool', 'radius'=>'float'], 'Imagick::mergeImageLayers' => ['Imagick', 'layer_method'=>'int'], 'Imagick::minifyImage' => ['bool'], 'Imagick::modulateImage' => ['bool', 'brightness'=>'float', 'saturation'=>'float', 'hue'=>'float'], 'Imagick::montageImage' => ['Imagick', 'draw'=>'imagickdraw', 'tile_geometry'=>'string', 'thumbnail_geometry'=>'string', 'mode'=>'int', 'frame'=>'string'], 'Imagick::morphImages' => ['Imagick', 'number_frames'=>'int'], 'Imagick::morphology' => ['bool', 'morphologyMethod'=>'int', 'iterations'=>'int', 'ImagickKernel'=>'ImagickKernel', 'channel='=>'int'], 'Imagick::mosaicImages' => ['Imagick'], 'Imagick::motionBlurImage' => ['bool', 'radius'=>'float', 'sigma'=>'float', 'angle'=>'float', 'channel='=>'int'], 'Imagick::negateImage' => ['bool', 'gray'=>'bool', 'channel='=>'int'], 'Imagick::newImage' => ['bool', 'cols'=>'int', 'rows'=>'int', 'background'=>'mixed', 'format='=>'string'], 'Imagick::newPseudoImage' => ['bool', 'columns'=>'int', 'rows'=>'int', 'pseudostring'=>'string'], 'Imagick::next' => ['void'], 'Imagick::nextImage' => ['bool'], 'Imagick::normalizeImage' => ['bool', 'channel='=>'int'], 'Imagick::oilPaintImage' => ['bool', 'radius'=>'float'], 'Imagick::opaquePaintImage' => ['bool', 'target'=>'mixed', 'fill'=>'mixed', 'fuzz'=>'float', 'invert'=>'bool', 'channel='=>'int'], 'Imagick::optimizeImageLayers' => ['bool'], 'Imagick::orderedPosterizeImage' => ['bool', 'threshold_map'=>'string', 'channel='=>'int'], 'Imagick::paintFloodfillImage' => ['bool', 'fill'=>'mixed', 'fuzz'=>'float', 'bordercolor'=>'mixed', 'x'=>'int', 'y'=>'int', 'channel='=>'int'], 'Imagick::paintOpaqueImage' => ['bool', 'target'=>'mixed', 'fill'=>'mixed', 'fuzz'=>'float', 'channel='=>'int'], 'Imagick::paintTransparentImage' => ['bool', 'target'=>'mixed', 'alpha'=>'float', 'fuzz'=>'float'], 'Imagick::pingImage' => ['bool', 'filename'=>'string'], 'Imagick::pingImageBlob' => ['bool', 'image'=>'string'], 'Imagick::pingImageFile' => ['bool', 'filehandle'=>'resource', 'filename='=>'string'], 'Imagick::polaroidImage' => ['bool', 'properties'=>'imagickdraw', 'angle'=>'float'], 'Imagick::posterizeImage' => ['bool', 'levels'=>'int', 'dither'=>'bool'], 'Imagick::previewImages' => ['bool', 'preview'=>'int'], 'Imagick::previousImage' => ['bool'], 'Imagick::profileImage' => ['bool', 'name'=>'string', 'profile'=>'?string'], 'Imagick::quantizeImage' => ['bool', 'numbercolors'=>'int', 'colorspace'=>'int', 'treedepth'=>'int', 'dither'=>'bool', 'measureerror'=>'bool'], 'Imagick::quantizeImages' => ['bool', 'numbercolors'=>'int', 'colorspace'=>'int', 'treedepth'=>'int', 'dither'=>'bool', 'measureerror'=>'bool'], 'Imagick::queryFontMetrics' => ['array{characterWidth:float,characterHeight:float,ascender:float,descender:float,textWidth:float,textHeight:float,maxHorizontalAdvance:float,boundingBox:array{x1:float,x2:float,y1:float,y2:float},originX:float,originY:float}', 'properties'=>'imagickdraw', 'text'=>'string', 'multiline='=>'bool'], 'Imagick::queryFonts' => ['list', 'pattern='=>'string'], 'Imagick::queryFormats' => ['list', 'pattern='=>'string'], 'Imagick::radialBlurImage' => ['bool', 'angle'=>'float', 'channel='=>'int'], 'Imagick::raiseImage' => ['bool', 'width'=>'int', 'height'=>'int', 'x'=>'int', 'y'=>'int', 'raise'=>'bool'], 'Imagick::randomThresholdImage' => ['bool', 'low'=>'float', 'high'=>'float', 'channel='=>'int'], 'Imagick::readImage' => ['bool', 'filename'=>'string'], 'Imagick::readImageBlob' => ['bool', 'image'=>'string', 'filename='=>'string'], 'Imagick::readImageFile' => ['bool', 'filehandle'=>'resource', 'filename='=>'string'], 'Imagick::readImages' => ['Imagick', 'filenames'=>'string'], 'Imagick::recolorImage' => ['bool', 'matrix'=>'array'], 'Imagick::reduceNoiseImage' => ['bool', 'radius'=>'float'], 'Imagick::remapImage' => ['bool', 'replacement'=>'imagick', 'dither'=>'int'], 'Imagick::removeImage' => ['bool'], 'Imagick::removeImageProfile' => ['string', 'name'=>'string'], 'Imagick::render' => ['bool'], 'Imagick::resampleImage' => ['bool', 'x_resolution'=>'float', 'y_resolution'=>'float', 'filter'=>'int', 'blur'=>'float'], 'Imagick::resetImagePage' => ['bool', 'page'=>'string'], 'Imagick::resetIterator' => [''], 'Imagick::resizeImage' => ['bool', 'columns'=>'int', 'rows'=>'int', 'filter'=>'int', 'blur'=>'float', 'bestfit='=>'bool'], 'Imagick::rewind' => ['void'], 'Imagick::rollImage' => ['bool', 'x'=>'int', 'y'=>'int'], 'Imagick::rotateImage' => ['bool', 'background'=>'mixed', 'degrees'=>'float'], 'Imagick::rotationalBlurImage' => ['bool', 'float'=>'string', 'channel='=>'int'], 'Imagick::roundCorners' => ['bool', 'x_rounding'=>'float', 'y_rounding'=>'float', 'stroke_width='=>'float', 'displace='=>'float', 'size_correction='=>'float'], 'Imagick::roundCornersImage' => ['bool', 'x_rounding'=>'', 'y_rounding'=>'', 'stroke_width='=>'', 'displace='=>'', 'size_correction='=>''], 'Imagick::sampleImage' => ['bool', 'columns'=>'int', 'rows'=>'int'], 'Imagick::scaleImage' => ['bool', 'cols'=>'int', 'rows'=>'int', 'bestfit='=>'bool', 'legacy='=>'bool'], 'Imagick::segmentImage' => ['bool', 'colorspace'=>'int', 'cluster_threshold'=>'float', 'smooth_threshold'=>'float', 'verbose='=>'bool'], 'Imagick::selectiveBlurImage' => ['bool', 'radius'=>'float', 'sigma'=>'float', 'threshold'=>'float', 'channel='=>'int'], 'Imagick::separateImageChannel' => ['bool', 'channel'=>'int'], 'Imagick::sepiaToneImage' => ['bool', 'threshold'=>'float'], 'Imagick::setAntiAlias' => ['int', 'antialias'=>'bool'], 'Imagick::setBackgroundColor' => ['bool', 'background'=>'mixed'], 'Imagick::setColorspace' => ['bool', 'colorspace'=>'int'], 'Imagick::setCompression' => ['bool', 'compression'=>'int'], 'Imagick::setCompressionQuality' => ['bool', 'quality'=>'int'], 'Imagick::setFilename' => ['bool', 'filename'=>'string'], 'Imagick::setFirstIterator' => ['bool'], 'Imagick::setFont' => ['bool', 'font'=>'string'], 'Imagick::setFormat' => ['bool', 'format'=>'string'], 'Imagick::setGravity' => ['bool', 'gravity'=>'int'], 'Imagick::setImage' => ['bool', 'replace'=>'imagick'], 'Imagick::setImageAlpha' => ['bool', 'alpha'=>'float'], 'Imagick::setImageAlphaChannel' => ['bool', 'mode'=>'int'], 'Imagick::setImageArtifact' => ['bool', 'artifact'=>'string', 'value'=>'string'], 'Imagick::setImageAttribute' => ['bool', 'key'=>'string', 'value'=>'string'], 'Imagick::setImageBackgroundColor' => ['bool', 'background'=>'mixed'], 'Imagick::setImageBias' => ['bool', 'bias'=>'float'], 'Imagick::setImageBiasQuantum' => ['void', 'bias'=>'string'], 'Imagick::setImageBluePrimary' => ['bool', 'x'=>'float', 'y'=>'float'], 'Imagick::setImageBorderColor' => ['bool', 'border'=>'mixed'], 'Imagick::setImageChannelDepth' => ['bool', 'channel'=>'int', 'depth'=>'int'], 'Imagick::setImageChannelMask' => ['', 'channel'=>'int'], 'Imagick::setImageClipMask' => ['bool', 'clip_mask'=>'imagick'], 'Imagick::setImageColormapColor' => ['bool', 'index'=>'int', 'color'=>'imagickpixel'], 'Imagick::setImageColorspace' => ['bool', 'colorspace'=>'int'], 'Imagick::setImageCompose' => ['bool', 'compose'=>'int'], 'Imagick::setImageCompression' => ['bool', 'compression'=>'int'], 'Imagick::setImageCompressionQuality' => ['bool', 'quality'=>'int'], 'Imagick::setImageDelay' => ['bool', 'delay'=>'int'], 'Imagick::setImageDepth' => ['bool', 'depth'=>'int'], 'Imagick::setImageDispose' => ['bool', 'dispose'=>'int'], 'Imagick::setImageExtent' => ['bool', 'columns'=>'int', 'rows'=>'int'], 'Imagick::setImageFilename' => ['bool', 'filename'=>'string'], 'Imagick::setImageFormat' => ['bool', 'format'=>'string'], 'Imagick::setImageGamma' => ['bool', 'gamma'=>'float'], 'Imagick::setImageGravity' => ['bool', 'gravity'=>'int'], 'Imagick::setImageGreenPrimary' => ['bool', 'x'=>'float', 'y'=>'float'], 'Imagick::setImageIndex' => ['bool', 'index'=>'int'], 'Imagick::setImageInterlaceScheme' => ['bool', 'interlace_scheme'=>'int'], 'Imagick::setImageInterpolateMethod' => ['bool', 'method'=>'int'], 'Imagick::setImageIterations' => ['bool', 'iterations'=>'int'], 'Imagick::setImageMatte' => ['bool', 'matte'=>'bool'], 'Imagick::setImageMatteColor' => ['bool', 'matte'=>'mixed'], 'Imagick::setImageOpacity' => ['bool', 'opacity'=>'float'], 'Imagick::setImageOrientation' => ['bool', 'orientation'=>'int'], 'Imagick::setImagePage' => ['bool', 'width'=>'int', 'height'=>'int', 'x'=>'int', 'y'=>'int'], 'Imagick::setImageProfile' => ['bool', 'name'=>'string', 'profile'=>'string'], 'Imagick::setImageProgressMonitor' => ['', 'filename'=>''], 'Imagick::setImageProperty' => ['bool', 'name'=>'string', 'value'=>'string'], 'Imagick::setImageRedPrimary' => ['bool', 'x'=>'float', 'y'=>'float'], 'Imagick::setImageRenderingIntent' => ['bool', 'rendering_intent'=>'int'], 'Imagick::setImageResolution' => ['bool', 'x_resolution'=>'float', 'y_resolution'=>'float'], 'Imagick::setImageScene' => ['bool', 'scene'=>'int'], 'Imagick::setImageTicksPerSecond' => ['bool', 'ticks_per_second'=>'int'], 'Imagick::setImageType' => ['bool', 'image_type'=>'int'], 'Imagick::setImageUnits' => ['bool', 'units'=>'int'], 'Imagick::setImageVirtualPixelMethod' => ['bool', 'method'=>'int'], 'Imagick::setImageWhitePoint' => ['bool', 'x'=>'float', 'y'=>'float'], 'Imagick::setInterlaceScheme' => ['bool', 'interlace_scheme'=>'int'], 'Imagick::setIteratorIndex' => ['bool', 'index'=>'int'], 'Imagick::setLastIterator' => ['bool'], 'Imagick::setOption' => ['bool', 'key'=>'string', 'value'=>'string'], 'Imagick::setPage' => ['bool', 'width'=>'int', 'height'=>'int', 'x'=>'int', 'y'=>'int'], 'Imagick::setPointSize' => ['bool', 'point_size'=>'float'], 'Imagick::setProgressMonitor' => ['bool', 'callback'=>'callable'], 'Imagick::setRegistry' => ['bool', 'key'=>'string', 'value'=>'string'], 'Imagick::setResolution' => ['bool', 'x_resolution'=>'float', 'y_resolution'=>'float'], 'Imagick::setResourceLimit' => ['bool', 'type'=>'int', 'limit'=>'int'], 'Imagick::setSamplingFactors' => ['bool', 'factors'=>'array'], 'Imagick::setSize' => ['bool', 'columns'=>'int', 'rows'=>'int'], 'Imagick::setSizeOffset' => ['bool', 'columns'=>'int', 'rows'=>'int', 'offset'=>'int'], 'Imagick::setType' => ['bool', 'image_type'=>'int'], 'Imagick::shadeImage' => ['bool', 'gray'=>'bool', 'azimuth'=>'float', 'elevation'=>'float'], 'Imagick::shadowImage' => ['bool', 'opacity'=>'float', 'sigma'=>'float', 'x'=>'int', 'y'=>'int'], 'Imagick::sharpenImage' => ['bool', 'radius'=>'float', 'sigma'=>'float', 'channel='=>'int'], 'Imagick::shaveImage' => ['bool', 'columns'=>'int', 'rows'=>'int'], 'Imagick::shearImage' => ['bool', 'background'=>'mixed', 'x_shear'=>'float', 'y_shear'=>'float'], 'Imagick::sigmoidalContrastImage' => ['bool', 'sharpen'=>'bool', 'alpha'=>'float', 'beta'=>'float', 'channel='=>'int'], 'Imagick::similarityImage' => ['Imagick', 'imagick'=>'Imagick', '&bestMatch'=>'array', '&similarity'=>'float', 'similarity_threshold'=>'float', 'metric'=>'int'], 'Imagick::sketchImage' => ['bool', 'radius'=>'float', 'sigma'=>'float', 'angle'=>'float'], 'Imagick::smushImages' => ['Imagick', 'stack'=>'bool', 'offset'=>'int'], 'Imagick::solarizeImage' => ['bool', 'threshold'=>'0|positive-int'], 'Imagick::sparseColorImage' => ['bool', 'sparse_method'=>'int', 'arguments'=>'array', 'channel='=>'int'], 'Imagick::spliceImage' => ['bool', 'width'=>'int', 'height'=>'int', 'x'=>'int', 'y'=>'int'], 'Imagick::spreadImage' => ['bool', 'radius'=>'float'], 'Imagick::statisticImage' => ['bool', 'type'=>'int', 'width'=>'int', 'height'=>'int', 'channel='=>'int'], 'Imagick::steganoImage' => ['Imagick', 'watermark_wand'=>'imagick', 'offset'=>'int'], 'Imagick::stereoImage' => ['bool', 'offset_wand'=>'imagick'], 'Imagick::stripImage' => ['bool'], 'Imagick::subImageMatch' => ['Imagick', 'Imagick'=>'Imagick', '&w_offset='=>'array', '&w_similarity='=>'float'], 'Imagick::swirlImage' => ['bool', 'degrees'=>'float'], 'Imagick::textureImage' => ['Imagick', 'texture_wand'=>'imagick'], 'Imagick::thresholdImage' => ['bool', 'threshold'=>'float', 'channel='=>'int'], 'Imagick::thumbnailImage' => ['bool', 'columns'=>'int', 'rows'=>'int', 'bestfit='=>'bool', 'fill='=>'bool', 'legacy='=>'bool'], 'Imagick::tintImage' => ['bool', 'tint'=>'mixed', 'opacity'=>'mixed'], 'Imagick::transformImage' => ['Imagick', 'crop'=>'string', 'geometry'=>'string'], 'Imagick::transformImageColorspace' => ['bool', 'colorspace'=>'int'], 'Imagick::transparentPaintImage' => ['bool', 'target'=>'mixed', 'alpha'=>'float', 'fuzz'=>'float', 'invert'=>'bool'], 'Imagick::transposeImage' => ['bool'], 'Imagick::transverseImage' => ['bool'], 'Imagick::trimImage' => ['bool', 'fuzz'=>'float'], 'Imagick::uniqueImageColors' => ['bool'], 'Imagick::unsharpMaskImage' => ['bool', 'radius'=>'float', 'sigma'=>'float', 'amount'=>'float', 'threshold'=>'float', 'channel='=>'int'], 'Imagick::valid' => ['bool'], 'Imagick::vignetteImage' => ['bool', 'blackpoint'=>'float', 'whitepoint'=>'float', 'x'=>'int', 'y'=>'int'], 'Imagick::waveImage' => ['bool', 'amplitude'=>'float', 'length'=>'float'], 'Imagick::whiteThresholdImage' => ['bool', 'threshold'=>'mixed'], 'Imagick::writeImage' => ['bool', 'filename='=>'string'], 'Imagick::writeImageFile' => ['bool', 'filehandle'=>'resource', 'format='=>'?string'], 'Imagick::writeImages' => ['bool', 'filename'=>'string', 'adjoin'=>'bool'], 'Imagick::writeImagesFile' => ['bool', 'filehandle'=>'resource', 'format='=>'?string'], 'ImagickDraw::__construct' => ['void'], 'ImagickDraw::affine' => ['bool', 'affine'=>'array'], 'ImagickDraw::annotation' => ['bool', 'x'=>'float', 'y'=>'float', 'text'=>'string'], 'ImagickDraw::arc' => ['bool', 'sx'=>'float', 'sy'=>'float', 'ex'=>'float', 'ey'=>'float', 'sd'=>'float', 'ed'=>'float'], 'ImagickDraw::bezier' => ['bool', 'coordinates'=>'array'], 'ImagickDraw::circle' => ['bool', 'ox'=>'float', 'oy'=>'float', 'px'=>'float', 'py'=>'float'], 'ImagickDraw::clear' => ['bool'], 'ImagickDraw::clone' => ['ImagickDraw'], 'ImagickDraw::color' => ['bool', 'x'=>'float', 'y'=>'float', 'paintmethod'=>'int'], 'ImagickDraw::comment' => ['bool', 'comment'=>'string'], 'ImagickDraw::composite' => ['bool', 'compose'=>'int', 'x'=>'float', 'y'=>'float', 'width'=>'float', 'height'=>'float', 'compositewand'=>'imagick'], 'ImagickDraw::destroy' => ['bool'], 'ImagickDraw::ellipse' => ['bool', 'ox'=>'float', 'oy'=>'float', 'rx'=>'float', 'ry'=>'float', 'start'=>'float', 'end'=>'float'], 'ImagickDraw::getBorderColor' => ['ImagickPixel'], 'ImagickDraw::getClipPath' => ['string'], 'ImagickDraw::getClipRule' => ['int'], 'ImagickDraw::getClipUnits' => ['int'], 'ImagickDraw::getDensity' => ['null|string'], 'ImagickDraw::getFillColor' => ['ImagickPixel'], 'ImagickDraw::getFillOpacity' => ['float'], 'ImagickDraw::getFillRule' => ['Imagick::FILLRULE_*'], 'ImagickDraw::getFont' => ['string'], 'ImagickDraw::getFontFamily' => ['string'], 'ImagickDraw::getFontResolution' => ['array'], 'ImagickDraw::getFontSize' => ['float'], 'ImagickDraw::getFontStretch' => ['Imagick::STRETCH_*'], 'ImagickDraw::getFontStyle' => ['Imagick::STYLE_*'], 'ImagickDraw::getFontWeight' => ['int'], 'ImagickDraw::getGravity' => ['Imagick::GRAVITY_*'], 'ImagickDraw::getOpacity' => ['float'], 'ImagickDraw::getStrokeAntialias' => ['bool'], 'ImagickDraw::getStrokeColor' => ['ImagickPixel'], 'ImagickDraw::getStrokeDashArray' => ['array'], 'ImagickDraw::getStrokeDashOffset' => ['float'], 'ImagickDraw::getStrokeLineCap' => ['Imagick::LINECAP_*'], 'ImagickDraw::getStrokeLineJoin' => ['Imagick::LINEJOIN_*'], 'ImagickDraw::getStrokeMiterLimit' => ['int'], 'ImagickDraw::getStrokeOpacity' => ['float'], 'ImagickDraw::getStrokeWidth' => ['float'], 'ImagickDraw::getTextAlignment' => ['Imagick::ALIGN_*'], 'ImagickDraw::getTextAntialias' => ['bool'], 'ImagickDraw::getTextDecoration' => ['Imagick::DECORATION_*'], 'ImagickDraw::getTextDirection' => ['bool'], 'ImagickDraw::getTextEncoding' => ['string'], 'ImagickDraw::getTextInterlineSpacing' => ['float'], 'ImagickDraw::getTextInterwordSpacing' => ['float'], 'ImagickDraw::getTextKerning' => ['float'], 'ImagickDraw::getTextUnderColor' => ['ImagickPixel'], 'ImagickDraw::getVectorGraphics' => ['string'], 'ImagickDraw::line' => ['bool', 'sx'=>'float', 'sy'=>'float', 'ex'=>'float', 'ey'=>'float'], 'ImagickDraw::matte' => ['bool', 'x'=>'float', 'y'=>'float', 'paintmethod'=>'int'], 'ImagickDraw::pathClose' => ['bool'], 'ImagickDraw::pathCurveToAbsolute' => ['bool', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathCurveToQuadraticBezierAbsolute' => ['bool', 'x1'=>'float', 'y1'=>'float', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathCurveToQuadraticBezierRelative' => ['bool', 'x1'=>'float', 'y1'=>'float', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute' => ['bool', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathCurveToQuadraticBezierSmoothRelative' => ['bool', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathCurveToRelative' => ['bool', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathCurveToSmoothAbsolute' => ['bool', 'x2'=>'float', 'y2'=>'float', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathCurveToSmoothRelative' => ['bool', 'x2'=>'float', 'y2'=>'float', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathEllipticArcAbsolute' => ['bool', 'rx'=>'float', 'ry'=>'float', 'x_axis_rotation'=>'float', 'large_arc_flag'=>'bool', 'sweep_flag'=>'bool', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathEllipticArcRelative' => ['bool', 'rx'=>'float', 'ry'=>'float', 'x_axis_rotation'=>'float', 'large_arc_flag'=>'bool', 'sweep_flag'=>'bool', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathFinish' => ['bool'], 'ImagickDraw::pathLineToAbsolute' => ['bool', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathLineToHorizontalAbsolute' => ['bool', 'x'=>'float'], 'ImagickDraw::pathLineToHorizontalRelative' => ['bool', 'x'=>'float'], 'ImagickDraw::pathLineToRelative' => ['bool', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathLineToVerticalAbsolute' => ['bool', 'y'=>'float'], 'ImagickDraw::pathLineToVerticalRelative' => ['bool', 'y'=>'float'], 'ImagickDraw::pathMoveToAbsolute' => ['bool', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathMoveToRelative' => ['bool', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::pathStart' => ['bool'], 'ImagickDraw::point' => ['bool', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::polygon' => ['bool', 'coordinates'=>'array'], 'ImagickDraw::polyline' => ['bool', 'coordinates'=>'array'], 'ImagickDraw::pop' => ['bool'], 'ImagickDraw::popClipPath' => ['bool'], 'ImagickDraw::popDefs' => ['bool'], 'ImagickDraw::popPattern' => ['bool'], 'ImagickDraw::push' => ['bool'], 'ImagickDraw::pushClipPath' => ['bool', 'clip_mask_id'=>'string'], 'ImagickDraw::pushDefs' => ['bool'], 'ImagickDraw::pushPattern' => ['bool', 'pattern_id'=>'string', 'x'=>'float', 'y'=>'float', 'width'=>'float', 'height'=>'float'], 'ImagickDraw::rectangle' => ['bool', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float'], 'ImagickDraw::render' => ['bool'], 'ImagickDraw::resetVectorGraphics' => ['void'], 'ImagickDraw::rotate' => ['bool', 'degrees'=>'float'], 'ImagickDraw::roundRectangle' => ['bool', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float', 'rx'=>'float', 'ry'=>'float'], 'ImagickDraw::scale' => ['bool', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::setBorderColor' => ['bool', 'color'=>'ImagickPixel|string'], 'ImagickDraw::setClipPath' => ['bool', 'clip_mask'=>'string'], 'ImagickDraw::setClipRule' => ['bool', 'fill_rule'=>'int'], 'ImagickDraw::setClipUnits' => ['bool', 'clip_units'=>'int'], 'ImagickDraw::setDensity' => ['bool', 'density_string'=>'string'], 'ImagickDraw::setFillAlpha' => ['bool', 'opacity'=>'float'], 'ImagickDraw::setFillColor' => ['bool', 'fill_pixel'=>'ImagickPixel|string'], 'ImagickDraw::setFillOpacity' => ['bool', 'fillopacity'=>'float'], 'ImagickDraw::setFillPatternURL' => ['bool', 'fill_url'=>'string'], 'ImagickDraw::setFillRule' => ['bool', 'fill_rule'=>'int'], 'ImagickDraw::setFont' => ['bool', 'font_name'=>'string'], 'ImagickDraw::setFontFamily' => ['bool', 'font_family'=>'string'], 'ImagickDraw::setFontResolution' => ['bool', 'x'=>'float', 'y'=>'float'], 'ImagickDraw::setFontSize' => ['bool', 'pointsize'=>'float'], 'ImagickDraw::setFontStretch' => ['bool', 'fontstretch'=>'int'], 'ImagickDraw::setFontStyle' => ['bool', 'style'=>'int'], 'ImagickDraw::setFontWeight' => ['bool', 'font_weight'=>'int'], 'ImagickDraw::setGravity' => ['bool', 'gravity'=>'int'], 'ImagickDraw::setOpacity' => ['void', 'opacity'=>'float'], 'ImagickDraw::setResolution' => ['void', 'x_resolution'=>'float', 'y_resolution'=>'float'], 'ImagickDraw::setStrokeAlpha' => ['bool', 'opacity'=>'float'], 'ImagickDraw::setStrokeAntialias' => ['bool', 'stroke_antialias'=>'bool'], 'ImagickDraw::setStrokeColor' => ['bool', 'stroke_pixel'=>'ImagickPixel|string'], 'ImagickDraw::setStrokeDashArray' => ['bool', 'dasharray'=>'array'], 'ImagickDraw::setStrokeDashOffset' => ['bool', 'dash_offset'=>'float'], 'ImagickDraw::setStrokeLineCap' => ['bool', 'linecap'=>'int'], 'ImagickDraw::setStrokeLineJoin' => ['bool', 'linejoin'=>'int'], 'ImagickDraw::setStrokeMiterLimit' => ['bool', 'miterlimit'=>'int'], 'ImagickDraw::setStrokeOpacity' => ['bool', 'stroke_opacity'=>'float'], 'ImagickDraw::setStrokePatternURL' => ['bool', 'stroke_url'=>'string'], 'ImagickDraw::setStrokeWidth' => ['bool', 'stroke_width'=>'float'], 'ImagickDraw::setTextAlignment' => ['bool', 'alignment'=>'int'], 'ImagickDraw::setTextAntialias' => ['bool', 'antialias'=>'bool'], 'ImagickDraw::setTextDecoration' => ['bool', 'decoration'=>'int'], 'ImagickDraw::setTextDirection' => ['bool', 'direction'=>'int'], 'ImagickDraw::setTextEncoding' => ['bool', 'encoding'=>'string'], 'ImagickDraw::setTextInterlineSpacing' => ['void', 'spacing'=>'float'], 'ImagickDraw::setTextInterwordSpacing' => ['void', 'spacing'=>'float'], 'ImagickDraw::setTextKerning' => ['void', 'kerning'=>'float'], 'ImagickDraw::setTextUnderColor' => ['bool', 'under_color'=>'ImagickPixel|string'], 'ImagickDraw::setVectorGraphics' => ['bool', 'xml'=>'string'], 'ImagickDraw::setViewbox' => ['bool', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int'], 'ImagickDraw::skewX' => ['bool', 'degrees'=>'float'], 'ImagickDraw::skewY' => ['bool', 'degrees'=>'float'], 'ImagickDraw::translate' => ['bool', 'x'=>'float', 'y'=>'float'], 'ImagickKernel::addKernel' => ['void', 'ImagickKernel'=>'ImagickKernel'], 'ImagickKernel::addUnityKernel' => ['void'], 'ImagickKernel::fromBuiltin' => ['ImagickKernel', 'kernelType'=>'int', 'kernelString'=>'string'], 'ImagickKernel::fromMatrix' => ['ImagickKernel', 'matrix'=>'array', 'origin='=>'array'], 'ImagickKernel::getMatrix' => ['list>'], 'ImagickKernel::scale' => ['void', 'scale'=>'float', 'normalizeFlag'=>'int'], 'ImagickKernel::separate' => ['array'], 'ImagickPixel::__construct' => ['void', 'color='=>'string'], 'ImagickPixel::clear' => ['bool'], 'ImagickPixel::clone' => ['void'], 'ImagickPixel::destroy' => ['bool'], 'ImagickPixel::getColor' => ['array{r: int|float, g: int|float, b: int|float, a: int|float}', 'normalized='=>'0|1|2'], 'ImagickPixel::getColorAsString' => ['string'], 'ImagickPixel::getColorCount' => ['int'], 'ImagickPixel::getColorQuantum' => ['mixed'], 'ImagickPixel::getColorValue' => ['float', 'color'=>'int'], 'ImagickPixel::getColorValueQuantum' => ['mixed'], 'ImagickPixel::getHSL' => ['array'], 'ImagickPixel::getIndex' => ['int'], 'ImagickPixel::isPixelSimilar' => ['bool', 'color'=>'ImagickPixel', 'fuzz'=>'float'], 'ImagickPixel::isPixelSimilarQuantum' => ['bool', 'color'=>'string', 'fuzz='=>'string'], 'ImagickPixel::isSimilar' => ['bool', 'color'=>'imagickpixel', 'fuzz'=>'float'], 'ImagickPixel::setColor' => ['bool', 'color'=>'string'], 'ImagickPixel::setcolorcount' => ['void', 'colorCount'=>'string'], 'ImagickPixel::setColorFromPixel' => ['bool', 'srcPixel'=>'ImagickPixel'], 'ImagickPixel::setColorValue' => ['bool', 'color'=>'int', 'value'=>'float'], 'ImagickPixel::setColorValueQuantum' => ['void', 'color'=>'int', 'value'=>'mixed'], 'ImagickPixel::setHSL' => ['bool', 'hue'=>'float', 'saturation'=>'float', 'luminosity'=>'float'], 'ImagickPixel::setIndex' => ['void', 'index'=>'int'], 'ImagickPixelIterator::__construct' => ['void', 'wand'=>'imagick'], 'ImagickPixelIterator::clear' => ['bool'], 'ImagickPixelIterator::current' => ['mixed'], 'ImagickPixelIterator::destroy' => ['bool'], 'ImagickPixelIterator::getCurrentIteratorRow' => ['array'], 'ImagickPixelIterator::getIteratorRow' => ['int'], 'ImagickPixelIterator::getNextIteratorRow' => ['array'], 'ImagickPixelIterator::getpixeliterator' => ['', 'Imagick'=>'Imagick'], 'ImagickPixelIterator::getpixelregioniterator' => ['', 'Imagick'=>'Imagick', 'x'=>'', 'y'=>'', 'columns'=>'', 'rows'=>''], 'ImagickPixelIterator::getPreviousIteratorRow' => ['array'], 'ImagickPixelIterator::key' => ['int|string'], 'ImagickPixelIterator::newPixelIterator' => ['bool', 'wand'=>'imagick'], 'ImagickPixelIterator::newPixelRegionIterator' => ['bool', 'wand'=>'imagick', 'x'=>'int', 'y'=>'int', 'columns'=>'int', 'rows'=>'int'], 'ImagickPixelIterator::next' => ['void'], 'ImagickPixelIterator::resetIterator' => ['bool'], 'ImagickPixelIterator::rewind' => ['void'], 'ImagickPixelIterator::setIteratorFirstRow' => ['bool'], 'ImagickPixelIterator::setIteratorLastRow' => ['bool'], 'ImagickPixelIterator::setIteratorRow' => ['bool', 'row'=>'int'], 'ImagickPixelIterator::syncIterator' => ['bool'], 'ImagickPixelIterator::valid' => ['bool'], 'imap_8bit' => ['string|false', 'text'=>'string'], 'imap_alerts' => ['array|false'], 'imap_append' => ['bool', 'stream_id'=>'resource', 'folder'=>'string', 'message'=>'string', 'options='=>'string', 'internal_date='=>'string'], 'imap_base64' => ['string|false', 'text'=>'string'], 'imap_binary' => ['string|false', 'text'=>'string'], 'imap_body' => ['string|false', 'stream_id'=>'resource', 'msg_no'=>'int', 'options='=>'int'], 'imap_bodystruct' => ['stdClass|false', 'stream_id'=>'resource', 'msg_no'=>'int', 'section'=>'string'], 'imap_check' => ['stdClass|false', 'stream_id'=>'resource'], 'imap_clearflag_full' => ['bool', 'stream_id'=>'resource', 'sequence'=>'string', 'flag'=>'string', 'options='=>'int'], 'imap_close' => ['bool', 'stream_id'=>'resource', 'options='=>'int'], 'imap_create' => ['bool', 'stream_id'=>'resource', 'mailbox'=>'string'], 'imap_createmailbox' => ['bool', 'stream_id'=>'resource', 'mailbox'=>'string'], 'imap_delete' => ['bool', 'stream_id'=>'resource', 'msg_no'=>'string', 'options='=>'int'], 'imap_deletemailbox' => ['bool', 'stream_id'=>'resource', 'mailbox'=>'string'], 'imap_errors' => ['array|false'], 'imap_expunge' => ['bool', 'stream_id'=>'resource'], 'imap_fetch_overview' => ['array|false', 'stream_id'=>'resource', 'sequence'=>'string', 'options='=>'int'], 'imap_fetchbody' => ['string|false', 'stream_id'=>'resource', 'msg_no'=>'int', 'section'=>'string', 'options='=>'int'], 'imap_fetchheader' => ['string|false', 'stream_id'=>'resource', 'msg_no'=>'int', 'options='=>'int'], 'imap_fetchmime' => ['string|false', 'stream_id'=>'resource', 'msg_no'=>'int', 'section'=>'string', 'options='=>'int'], 'imap_fetchstructure' => ['stdClass|false', 'stream_id'=>'resource', 'msg_no'=>'int', 'options='=>'int'], 'imap_fetchtext' => ['string|false', 'stream_id'=>'resource', 'msg_no'=>'int', 'options='=>'int'], 'imap_gc' => ['bool', 'stream_id'=>'resource', 'flags'=>'int'], 'imap_get_quota' => ['array|false', 'stream_id'=>'resource', 'qroot'=>'string'], 'imap_get_quotaroot' => ['array|false', 'stream_id'=>'resource', 'mbox'=>'string'], 'imap_getacl' => ['array|false', 'stream_id'=>'resource', 'mailbox'=>'string'], 'imap_getmailboxes' => ['array|false', 'stream_id'=>'resource', 'ref'=>'string', 'pattern'=>'string'], 'imap_getsubscribed' => ['array|false', 'stream_id'=>'resource', 'ref'=>'string', 'pattern'=>'string'], 'imap_header' => ['stdClass|false', 'stream_id'=>'resource', 'msg_no'=>'int', 'from_length='=>'int', 'subject_length='=>'int', 'default_host='=>'string'], 'imap_headerinfo' => ['stdClass|false', 'stream_id'=>'resource', 'msg_no'=>'int', 'from_length='=>'int', 'subject_length='=>'int', 'default_host='=>'string|null'], 'imap_headers' => ['array|false', 'stream_id'=>'resource'], 'imap_last_error' => ['string|false'], 'imap_list' => ['array|false', 'stream_id'=>'resource', 'ref'=>'string', 'pattern'=>'string'], 'imap_listmailbox' => ['array|false', 'stream_id'=>'resource', 'ref'=>'string', 'pattern'=>'string'], 'imap_listscan' => ['array|false', 'stream_id'=>'resource', 'ref'=>'string', 'pattern'=>'string', 'content'=>'string'], 'imap_listsubscribed' => ['array|false', 'stream_id'=>'resource', 'ref'=>'string', 'pattern'=>'string'], 'imap_lsub' => ['array|false', 'stream_id'=>'resource', 'ref'=>'string', 'pattern'=>'string'], 'imap_mail' => ['bool', 'to'=>'string', 'subject'=>'string', 'message'=>'string', 'additional_headers='=>'string', 'cc='=>'string', 'bcc='=>'string', 'rpath='=>'string'], 'imap_mail_compose' => ['string|false', 'envelope'=>'array', 'body'=>'array'], 'imap_mail_copy' => ['bool', 'stream_id'=>'resource', 'msglist'=>'string', 'mailbox'=>'string', 'options='=>'int'], 'imap_mail_move' => ['bool', 'stream_id'=>'resource', 'sequence'=>'string', 'mailbox'=>'string', 'options='=>'int'], 'imap_mailboxmsginfo' => ['stdClass|false', 'stream_id'=>'resource'], 'imap_mime_header_decode' => ['array|false', 'str'=>'string'], 'imap_msgno' => ['int|false', 'stream_id'=>'resource', 'unique_msg_id'=>'int'], 'imap_mutf7_to_utf8' => ['string|false', 'in'=>'string'], 'imap_num_msg' => ['int|false', 'stream_id'=>'resource'], 'imap_num_recent' => ['int|false', 'stream_id'=>'resource'], 'imap_open' => ['resource|false', 'mailbox'=>'string', 'user'=>'string', 'password'=>'string', 'options='=>'int', 'n_retries='=>'int', 'params='=>'array|null'], 'imap_ping' => ['bool', 'stream_id'=>'resource'], 'imap_qprint' => ['string|false', 'text'=>'string'], 'imap_rename' => ['bool', 'stream_id'=>'resource', 'old_name'=>'string', 'new_name'=>'string'], 'imap_renamemailbox' => ['bool', 'stream_id'=>'resource', 'old_name'=>'string', 'new_name'=>'string'], 'imap_reopen' => ['bool', 'stream_id'=>'resource', 'mailbox'=>'string', 'options='=>'int', 'n_retries='=>'int'], 'imap_rfc822_parse_adrlist' => ['array', 'address_string'=>'string', 'default_host'=>'string'], 'imap_rfc822_parse_headers' => ['stdClass', 'headers'=>'string', 'default_host='=>'string'], 'imap_rfc822_write_address' => ['string|false', 'mailbox'=>'?string', 'host'=>'?string', 'personal'=>'?string'], 'imap_savebody' => ['bool', 'stream_id'=>'resource', 'file'=>'string|resource', 'msg_no'=>'int', 'section='=>'string', 'options='=>'int'], 'imap_scan' => ['array|false', 'stream_id'=>'resource', 'ref'=>'string', 'pattern'=>'string', 'content'=>'string'], 'imap_scanmailbox' => ['array|false', 'stream_id'=>'resource', 'ref'=>'string', 'pattern'=>'string', 'content'=>'string'], 'imap_search' => ['array|false', 'stream_id'=>'resource', 'criteria'=>'string', 'options='=>'int', 'charset='=>'string'], 'imap_set_quota' => ['bool', 'stream_id'=>'resource', 'qroot'=>'string', 'mailbox_size'=>'int'], 'imap_setacl' => ['bool', 'stream_id'=>'resource', 'mailbox'=>'string', 'id'=>'string', 'rights'=>'string'], 'imap_setflag_full' => ['bool', 'stream_id'=>'resource', 'sequence'=>'string', 'flag'=>'string', 'options='=>'int'], 'imap_sort' => ['array|false', 'stream_id'=>'resource', 'criteria'=>'int', 'reverse'=>'int', 'options='=>'int', 'search_criteria='=>'string', 'charset='=>'string'], 'imap_status' => ['stdClass|false', 'stream_id'=>'resource', 'mailbox'=>'string', 'options'=>'int'], 'imap_subscribe' => ['bool', 'stream_id'=>'resource', 'mailbox'=>'string'], 'imap_thread' => ['array|false', 'stream_id'=>'resource', 'options='=>'int'], 'imap_timeout' => ['mixed', 'timeout_type'=>'int', 'timeout='=>'int'], 'imap_uid' => ['int|false', 'stream_id'=>'resource', 'msg_no'=>'int'], 'imap_undelete' => ['bool', 'stream_id'=>'resource', 'msg_no'=>'string', 'flags='=>'int'], 'imap_unsubscribe' => ['bool', 'stream_id'=>'resource', 'mailbox'=>'string'], 'imap_utf7_decode' => ['string|false', 'buf'=>'string'], 'imap_utf7_encode' => ['string', 'buf'=>'string'], 'imap_utf8' => ['string', 'mime_encoded_text'=>'string'], 'imap_utf8_to_mutf7' => ['string|false', 'in'=>'string'], 'implode' => ['string', 'glue'=>'string', 'pieces'=>'array'], 'implode\'1' => ['string', 'pieces'=>'array'], 'implode\'2' => ['string', 'pieces'=>'array', 'glue'=>'string'], 'import_request_variables' => ['bool', 'types'=>'string', 'prefix='=>'string'], 'in_array' => ['bool', 'needle'=>'mixed', 'haystack'=>'array', 'strict='=>'bool'], 'inclued_get_data' => ['array'], 'inet_ntop' => ['string|false', 'in_addr'=>'string'], 'inet_pton' => ['string|false', 'ip_address'=>'string'], 'InfiniteIterator::__construct' => ['void', 'iterator'=>'Iterator'], 'InfiniteIterator::next' => ['void'], 'inflate_add' => ['string|false', 'context'=>'resource', 'encoded_data'=>'string', 'flush_mode='=>'int'], 'inflate_get_read_len' => ['int|false', 'resource'=>'resource'], 'inflate_get_status' => ['int|false', 'resource'=>'resource'], 'inflate_init' => ['resource|false', 'encoding'=>'int', 'options='=>'array'], 'ingres_autocommit' => ['bool', 'link'=>'resource'], 'ingres_autocommit_state' => ['bool', 'link'=>'resource'], 'ingres_charset' => ['string', 'link'=>'resource'], 'ingres_close' => ['bool', 'link'=>'resource'], 'ingres_commit' => ['bool', 'link'=>'resource'], 'ingres_connect' => ['resource', 'database='=>'string', 'username='=>'string', 'password='=>'string', 'options='=>'array'], 'ingres_cursor' => ['string', 'result'=>'resource'], 'ingres_errno' => ['int', 'link='=>'resource'], 'ingres_error' => ['string', 'link='=>'resource'], 'ingres_errsqlstate' => ['string', 'link='=>'resource'], 'ingres_escape_string' => ['string', 'link'=>'resource', 'source_string'=>'string'], 'ingres_execute' => ['bool', 'result'=>'resource', 'params='=>'array', 'types='=>'string'], 'ingres_fetch_array' => ['array', 'result'=>'resource', 'result_type='=>'int'], 'ingres_fetch_assoc' => ['array', 'result'=>'resource'], 'ingres_fetch_object' => ['object', 'result'=>'resource', 'result_type='=>'int'], 'ingres_fetch_proc_return' => ['int', 'result'=>'resource'], 'ingres_fetch_row' => ['array', 'result'=>'resource'], 'ingres_field_length' => ['int', 'result'=>'resource', 'index'=>'int'], 'ingres_field_name' => ['string', 'result'=>'resource', 'index'=>'int'], 'ingres_field_nullable' => ['bool', 'result'=>'resource', 'index'=>'int'], 'ingres_field_precision' => ['int', 'result'=>'resource', 'index'=>'int'], 'ingres_field_scale' => ['int', 'result'=>'resource', 'index'=>'int'], 'ingres_field_type' => ['string', 'result'=>'resource', 'index'=>'int'], 'ingres_free_result' => ['bool', 'result'=>'resource'], 'ingres_next_error' => ['bool', 'link='=>'resource'], 'ingres_num_fields' => ['int', 'result'=>'resource'], 'ingres_num_rows' => ['int', 'result'=>'resource'], 'ingres_pconnect' => ['resource', 'database='=>'string', 'username='=>'string', 'password='=>'string', 'options='=>'array'], 'ingres_prepare' => ['mixed', 'link'=>'resource', 'query'=>'string'], 'ingres_query' => ['mixed', 'link'=>'resource', 'query'=>'string', 'params='=>'array', 'types='=>'string'], 'ingres_result_seek' => ['bool', 'result'=>'resource', 'position'=>'int'], 'ingres_rollback' => ['bool', 'link'=>'resource'], 'ingres_set_environment' => ['bool', 'link'=>'resource', 'options'=>'array'], 'ingres_unbuffered_query' => ['mixed', 'link'=>'resource', 'query'=>'string', 'params='=>'array', 'types='=>'string'], 'ini_alter' => ['string|false', 'varname'=>'string', 'newvalue'=>'string'], 'ini_get' => ['string|false', 'varname'=>'string'], 'ini_get_all' => ['array|false', 'extension='=>'?string', 'details='=>'bool'], 'ini_restore' => ['void', 'varname'=>'string'], 'ini_set' => ['string|false', 'varname'=>'string', 'newvalue'=>'string'], 'inotify_add_watch' => ['int<1,max>|false', 'inotify_instance'=>'resource', 'pathname'=>'string', 'mask'=>'int'], 'inotify_init' => ['resource'], 'inotify_queue_len' => ['int<0,max>', 'inotify_instance'=>'resource'], 'inotify_read' => ['list,mask:int<0,max>,cookie:int<0,max>,name:string}>|false', 'inotify_instance'=>'resource'], 'inotify_rm_watch' => ['bool', 'inotify_instance'=>'resource', 'watch_descriptor'=>'int'], 'intdiv' => ['int', 'numerator'=>'int', 'divisor'=>'int'], 'interface_exists' => ['bool', 'classname'=>'string', 'autoload='=>'bool'], 'intl_error_name' => ['string', 'error_code'=>'int'], 'intl_get_error_code' => ['int'], 'intl_get_error_message' => ['string'], 'intl_is_failure' => ['bool', 'error_code'=>'int'], 'IntlBreakIterator::__construct' => ['void'], 'IntlBreakIterator::createCharacterInstance' => ['IntlRuleBasedBreakIterator', 'locale='=>'string'], 'IntlBreakIterator::createCodePointInstance' => ['IntlCodePointBreakIterator'], 'IntlBreakIterator::createLineInstance' => ['IntlRuleBasedBreakIterator', 'locale='=>'string'], 'IntlBreakIterator::createSentenceInstance' => ['IntlRuleBasedBreakIterator', 'locale='=>'string'], 'IntlBreakIterator::createTitleInstance' => ['IntlRuleBasedBreakIterator', 'locale='=>'string'], 'IntlBreakIterator::createWordInstance' => ['IntlRuleBasedBreakIterator', 'locale='=>'string'], 'IntlBreakIterator::current' => ['int'], 'IntlBreakIterator::first' => ['int'], 'IntlBreakIterator::following' => ['int', 'offset'=>'int'], 'IntlBreakIterator::getErrorCode' => ['int'], 'IntlBreakIterator::getErrorMessage' => ['string'], 'IntlBreakIterator::getLocale' => ['string', 'locale_type'=>'string'], 'IntlBreakIterator::getPartsIterator' => ['IntlPartsIterator', 'key_type='=>'IntlPartsIterator::KEY_*'], 'IntlBreakIterator::getText' => ['string'], 'IntlBreakIterator::isBoundary' => ['bool', 'offset'=>'int'], 'IntlBreakIterator::last' => ['int'], 'IntlBreakIterator::next' => ['int', 'offset='=>'int'], 'IntlBreakIterator::preceding' => ['int', 'offset'=>'int'], 'IntlBreakIterator::previous' => ['int'], 'IntlBreakIterator::setText' => ['bool', 'text'=>'string'], 'intlcal_add' => ['bool', 'cal'=>'IntlCalendar', 'field'=>'int', 'amount'=>'int'], 'intlcal_after' => ['bool', 'cal'=>'IntlCalendar', 'other'=>'IntlCalendar'], 'intlcal_before' => ['bool', 'cal'=>'IntlCalendar', 'other'=>'IntlCalendar'], 'intlcal_clear' => ['bool', 'cal'=>'IntlCalendar', 'field='=>'int'], 'intlcal_create_instance' => ['IntlCalendar', 'timeZone='=>'mixed', 'locale='=>'string'], 'intlcal_equals' => ['bool', 'cal'=>'IntlCalendar', 'other'=>'IntlCalendar'], 'intlcal_field_difference' => ['int', 'cal'=>'IntlCalendar', 'when'=>'float', 'field'=>'int'], 'intlcal_from_date_time' => ['IntlCalendar', 'dateTime'=>'DateTime|string'], 'intlcal_get' => ['int', 'cal'=>'IntlCalendar', 'field'=>'int'], 'intlcal_get_actual_maximum' => ['int', 'cal'=>'IntlCalendar', 'field'=>'int'], 'intlcal_get_actual_minimum' => ['int', 'cal'=>'IntlCalendar', 'field'=>'int'], 'intlcal_get_available_locales' => ['array'], 'intlcal_get_day_of_week_type' => ['int', 'cal'=>'IntlCalendar', 'dayOfWeek'=>'int'], 'intlcal_get_first_day_of_week' => ['int', 'cal'=>'IntlCalendar'], 'intlcal_get_greatest_minimum' => ['int', 'cal'=>'IntlCalendar', 'field'=>'int'], 'intlcal_get_keyword_values_for_locale' => ['Iterator|false', 'key'=>'string', 'locale'=>'string', 'commonlyUsed'=>'bool'], 'intlcal_get_least_maximum' => ['int', 'cal'=>'IntlCalendar', 'field'=>'int'], 'intlcal_get_locale' => ['string', 'cal'=>'IntlCalendar', 'localeType'=>'int'], 'intlcal_get_maximum' => ['int', 'cal'=>'IntlCalendar', 'field'=>'int'], 'intlcal_get_minimal_days_in_first_week' => ['int', 'cal'=>'IntlCalendar'], 'intlcal_get_minimum' => ['int', 'cal'=>'IntlCalendar', 'field'=>'int'], 'intlcal_get_now' => ['float'], 'intlcal_get_repeated_wall_time_option' => ['int', 'cal'=>'IntlCalendar'], 'intlcal_get_skipped_wall_time_option' => ['int', 'cal'=>'IntlCalendar'], 'intlcal_get_time' => ['float', 'cal'=>'IntlCalendar'], 'intlcal_get_time_zone' => ['IntlTimeZone|false', 'cal'=>'IntlCalendar'], 'intlcal_get_type' => ['string', 'cal'=>'IntlCalendar'], 'intlcal_get_weekend_transition' => ['int', 'cal'=>'IntlCalendar', 'dayOfWeek'=>'string'], 'intlcal_in_daylight_time' => ['bool', 'cal'=>'IntlCalendar'], 'intlcal_is_equivalent_to' => ['bool', 'cal'=>'IntlCalendar', 'other'=>'IntlCalendar'], 'intlcal_is_lenient' => ['bool', 'cal'=>'IntlCalendar'], 'intlcal_is_set' => ['bool', 'cal'=>'IntlCalendar', 'field'=>'int'], 'intlcal_is_weekend' => ['bool', 'cal'=>'IntlCalendar', 'date='=>'float'], 'intlcal_roll' => ['bool', 'cal'=>'IntlCalendar', 'field'=>'int', 'amountOrUpOrDown'=>'mixed'], 'intlcal_set' => ['bool', 'cal'=>'IntlCalendar', 'field'=>'int', 'value'=>'int'], 'intlcal_set\'1' => ['bool', 'cal'=>'IntlCalendar', 'year'=>'int', 'month'=>'int', 'dayOfMonth='=>'int', 'hour='=>'int', 'minute='=>'int', 'second='=>'int'], 'intlcal_set_first_day_of_week' => ['bool', 'cal'=>'IntlCalendar', 'dayOfWeek'=>'int'], 'intlcal_set_lenient' => ['bool', 'cal'=>'IntlCalendar', 'isLenient'=>'bool'], 'intlcal_set_repeated_wall_time_option' => ['bool', 'cal'=>'IntlCalendar', 'wallTimeOption'=>'int'], 'intlcal_set_skipped_wall_time_option' => ['bool', 'cal'=>'IntlCalendar', 'wallTimeOption'=>'int'], 'intlcal_set_time' => ['bool', 'cal'=>'IntlCalendar', 'date'=>'float'], 'intlcal_set_time_zone' => ['bool', 'cal'=>'IntlCalendar', 'timeZone'=>'mixed'], 'intlcal_to_date_time' => ['DateTime|false', 'cal'=>'IntlCalendar'], 'IntlCalendar::__construct' => ['void'], 'IntlCalendar::add' => ['bool', 'field'=>'int', 'amount'=>'int'], 'IntlCalendar::after' => ['bool', 'other'=>'IntlCalendar'], 'IntlCalendar::before' => ['bool', 'other'=>'IntlCalendar'], 'IntlCalendar::clear' => ['bool', 'field='=>'int'], 'IntlCalendar::createInstance' => ['IntlCalendar', 'timeZone='=>'mixed', 'locale='=>'string'], 'IntlCalendar::equals' => ['bool', 'other'=>'IntlCalendar'], 'IntlCalendar::fieldDifference' => ['int', 'when'=>'float', 'field'=>'int'], 'IntlCalendar::fromDateTime' => ['IntlCalendar', 'dateTime'=>'DateTime|string'], 'IntlCalendar::get' => ['int', 'field'=>'int'], 'IntlCalendar::getActualMaximum' => ['int', 'field'=>'int'], 'IntlCalendar::getActualMinimum' => ['int', 'field'=>'int'], 'IntlCalendar::getAvailableLocales' => ['array'], 'IntlCalendar::getDayOfWeekType' => ['int', 'dayOfWeek'=>'int'], 'IntlCalendar::getErrorCode' => ['int'], 'IntlCalendar::getErrorMessage' => ['string'], 'IntlCalendar::getFirstDayOfWeek' => ['int'], 'IntlCalendar::getGreatestMinimum' => ['int', 'field'=>'int'], 'IntlCalendar::getKeywordValuesForLocale' => ['Iterator', 'key'=>'string', 'locale'=>'string', 'commonlyUsed'=>'bool'], 'IntlCalendar::getLeastMaximum' => ['int', 'field'=>'int'], 'IntlCalendar::getLocale' => ['string', 'localeType'=>'int'], 'IntlCalendar::getMaximum' => ['int', 'field'=>'int'], 'IntlCalendar::getMinimalDaysInFirstWeek' => ['int'], 'IntlCalendar::getMinimum' => ['int', 'field'=>'int'], 'IntlCalendar::getNow' => ['float'], 'IntlCalendar::getRepeatedWallTimeOption' => ['int'], 'IntlCalendar::getSkippedWallTimeOption' => ['int'], 'IntlCalendar::getTime' => ['float'], 'IntlCalendar::getTimeZone' => ['IntlTimeZone'], 'IntlCalendar::getType' => ['string'], 'IntlCalendar::getWeekendTransition' => ['int', 'dayOfWeek'=>'string'], 'IntlCalendar::inDaylightTime' => ['bool'], 'IntlCalendar::isEquivalentTo' => ['bool', 'other'=>'IntlCalendar'], 'IntlCalendar::isLenient' => ['bool'], 'IntlCalendar::isSet' => ['bool', 'field'=>'int'], 'IntlCalendar::isWeekend' => ['bool', 'date='=>'float'], 'IntlCalendar::roll' => ['bool', 'field'=>'int', 'amountOrUpOrDown'=>'mixed'], 'IntlCalendar::set' => ['bool', 'field'=>'int', 'value'=>'int'], 'IntlCalendar::set\'1' => ['bool', 'year'=>'int', 'month'=>'int', 'dayOfMonth='=>'int', 'hour='=>'int', 'minute='=>'int', 'second='=>'int'], 'IntlCalendar::setFirstDayOfWeek' => ['bool', 'dayOfWeek'=>'int'], 'IntlCalendar::setLenient' => ['bool', 'isLenient'=>'string'], 'IntlCalendar::setMinimalDaysInFirstWeek' => ['bool', 'minimalDays'=>'int'], 'IntlCalendar::setRepeatedWallTimeOption' => ['bool', 'wallTimeOption'=>'int'], 'IntlCalendar::setSkippedWallTimeOption' => ['bool', 'wallTimeOption'=>'int'], 'IntlCalendar::setTime' => ['bool', 'date'=>'float'], 'IntlCalendar::setTimeZone' => ['bool', 'timeZone'=>'mixed'], 'IntlCalendar::toDateTime' => ['DateTime'], 'IntlChar::charAge' => ['array', 'char'=>'int|string'], 'IntlChar::charDigitValue' => ['int', 'codepoint'=>'mixed'], 'IntlChar::charDirection' => ['int', 'codepoint'=>'mixed'], 'IntlChar::charFromName' => ['int', 'name'=>'string', 'namechoice='=>'int'], 'IntlChar::charMirror' => ['mixed', 'codepoint'=>'mixed'], 'IntlChar::charName' => ['string', 'char'=>'int|string', 'namechoice='=>'int'], 'IntlChar::charType' => ['int', 'codepoint'=>'mixed'], 'IntlChar::chr' => ['string', 'codepoint'=>'mixed'], 'IntlChar::digit' => ['int', 'char'=>'int|string', 'radix='=>'int'], 'IntlChar::enumCharNames' => ['void', 'start'=>'mixed', 'limit'=>'mixed', 'callback'=>'callable', 'nameChoice='=>'int'], 'IntlChar::enumCharTypes' => ['void', 'cb='=>'callable'], 'IntlChar::foldCase' => ['int|string', 'char'=>'int|string', 'options='=>'int'], 'IntlChar::forDigit' => ['int', 'digit'=>'int', 'radix'=>'int'], 'IntlChar::getBidiPairedBracket' => ['mixed', 'codepoint'=>'mixed'], 'IntlChar::getBlockCode' => ['int', 'char'=>'int|string'], 'IntlChar::getCombiningClass' => ['int', 'codepoint'=>'mixed'], 'IntlChar::getFC_NFKC_Closure' => ['string', 'char'=>'int|string'], 'IntlChar::getIntPropertyMaxValue' => ['int', 'property'=>'int'], 'IntlChar::getIntPropertyMinValue' => ['int', 'property'=>'int'], 'IntlChar::getIntPropertyMxValue' => ['int', 'property'=>'int'], 'IntlChar::getIntPropertyValue' => ['int', 'char'=>'int|string', 'property'=>'int'], 'IntlChar::getNumericValue' => ['float', 'char'=>'int|string'], 'IntlChar::getPropertyEnum' => ['int', 'alias'=>'string'], 'IntlChar::getPropertyName' => ['string', 'property'=>'int', 'namechoice='=>'int'], 'IntlChar::getPropertyValueEnum' => ['int', 'property'=>'int', 'name'=>'string'], 'IntlChar::getPropertyValueName' => ['string', 'prop'=>'int', 'val'=>'int', 'namechoice='=>'int'], 'IntlChar::getUnicodeVersion' => ['array'], 'IntlChar::hasBinaryProperty' => ['bool', 'char'=>'int|string', 'property'=>'int'], 'IntlChar::isalnum' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isalpha' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isbase' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isblank' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::iscntrl' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isdefined' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isdigit' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isgraph' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isIDIgnorable' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isIDPart' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isIDStart' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isISOControl' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isJavaIDPart' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isJavaIDStart' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isJavaSpaceChar' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::islower' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isMirrored' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isprint' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::ispunct' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isspace' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::istitle' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isUAlphabetic' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isULowercase' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isupper' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isUUppercase' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isUWhiteSpace' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isWhitespace' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::isxdigit' => ['bool', 'codepoint'=>'mixed'], 'IntlChar::ord' => ['int', 'character'=>'mixed'], 'IntlChar::tolower' => ['mixed', 'codepoint'=>'mixed'], 'IntlChar::totitle' => ['mixed', 'codepoint'=>'mixed'], 'IntlChar::toupper' => ['mixed', 'codepoint'=>'mixed'], 'IntlCodePointBreakIterator::getLastCodePoint' => ['int'], 'IntlDateFormatter::__construct' => ['void', 'locale'=>'?string', 'datetype'=>'?int', 'timetype'=>'?int', 'timezone='=>'null|string|IntlTimeZone|DateTimeZone', 'calendar='=>'null|int|IntlCalendar', 'pattern='=>'string'], 'IntlDateFormatter::create' => ['IntlDateFormatter|null', 'locale'=>'?string', 'datetype'=>'?int', 'timetype'=>'?int', 'timezone='=>'null|string|IntlTimeZone|DateTimeZone', 'calendar='=>'int|IntlCalendar', 'pattern='=>'string'], 'IntlDateFormatter::format' => ['string|false', 'args'=>''], 'IntlDateFormatter::formatObject' => ['string|false', 'object'=>'object', 'format='=>'mixed', 'locale='=>'string'], 'IntlDateFormatter::getCalendar' => ['int|false'], 'IntlDateFormatter::getCalendarObject' => ['IntlCalendar|false|null'], 'IntlDateFormatter::getDateType' => ['int|false'], 'IntlDateFormatter::getErrorCode' => ['int'], 'IntlDateFormatter::getErrorMessage' => ['string'], 'IntlDateFormatter::getLocale' => ['string|false'], 'IntlDateFormatter::getPattern' => ['string|false'], 'IntlDateFormatter::getTimeType' => ['int|false'], 'IntlDateFormatter::getTimeZone' => ['IntlTimeZone|false'], 'IntlDateFormatter::getTimeZoneId' => ['string|false'], 'IntlDateFormatter::isLenient' => ['bool'], 'IntlDateFormatter::localtime' => ['array|false', 'text_to_parse'=>'string', '&w_parse_pos='=>'int'], 'IntlDateFormatter::parse' => ['int|float|false', 'text_to_parse'=>'string', '&w_parse_pos='=>'int'], 'IntlDateFormatter::setCalendar' => ['bool', 'calendar'=>''], 'IntlDateFormatter::setLenient' => ['void', 'lenient'=>'bool'], 'IntlDateFormatter::setPattern' => ['bool', 'pattern'=>'string'], 'IntlDateFormatter::setTimeZone' => ['bool', 'timezone'=>''], 'IntlDateFormatter::setTimeZoneId' => ['bool', 'zone'=>'string', 'fmt='=>'IntlDateFormatter'], 'IntlGregorianCalendar::getGregorianChange' => ['float'], 'IntlGregorianCalendar::isLeapYear' => ['bool', 'year'=>'int'], 'IntlGregorianCalendar::setGregorianChange' => ['bool', 'date'=>'float'], 'IntlIterator::current' => ['mixed'], 'IntlIterator::key' => ['string'], 'IntlIterator::next' => ['void'], 'IntlIterator::rewind' => ['void'], 'IntlIterator::valid' => ['bool'], 'IntlPartsIterator::current' => ['non-empty-string'], 'IntlPartsIterator::getBreakIterator' => ['IntlBreakIterator'], 'IntlRuleBasedBreakIterator::__construct' => ['void', 'rules'=>'string', 'areCompiled='=>'string'], 'IntlRuleBasedBreakIterator::createCharacterInstance' => ['IntlRuleBasedBreakIterator', 'locale'=>'string'], 'IntlRuleBasedBreakIterator::createCodePointInstance' => ['IntlCodePointBreakIterator'], 'IntlRuleBasedBreakIterator::createLineInstance' => ['IntlRuleBasedBreakIterator', 'locale'=>'string'], 'IntlRuleBasedBreakIterator::createSentenceInstance' => ['IntlRuleBasedBreakIterator', 'locale'=>'string'], 'IntlRuleBasedBreakIterator::createTitleInstance' => ['IntlRuleBasedBreakIterator', 'locale'=>'string'], 'IntlRuleBasedBreakIterator::createWordInstance' => ['IntlRuleBasedBreakIterator', 'locale'=>'string'], 'IntlRuleBasedBreakIterator::current' => ['int'], 'IntlRuleBasedBreakIterator::first' => ['int'], 'IntlRuleBasedBreakIterator::following' => ['int', 'offset'=>'int'], 'IntlRuleBasedBreakIterator::getBinaryRules' => ['string'], 'IntlRuleBasedBreakIterator::getErrorCode' => ['int'], 'IntlRuleBasedBreakIterator::getErrorMessage' => ['string'], 'IntlRuleBasedBreakIterator::getLocale' => ['string', 'locale_type'=>'string'], 'IntlRuleBasedBreakIterator::getPartsIterator' => ['IntlPartsIterator', 'key_type='=>'int'], 'IntlRuleBasedBreakIterator::getRules' => ['string'], 'IntlRuleBasedBreakIterator::getRuleStatus' => ['int'], 'IntlRuleBasedBreakIterator::getRuleStatusVec' => ['array'], 'IntlRuleBasedBreakIterator::getText' => ['string'], 'IntlRuleBasedBreakIterator::isBoundary' => ['bool', 'offset'=>'int'], 'IntlRuleBasedBreakIterator::last' => ['int'], 'IntlRuleBasedBreakIterator::next' => ['int', 'offset='=>'int'], 'IntlRuleBasedBreakIterator::preceding' => ['int', 'offset'=>'int'], 'IntlRuleBasedBreakIterator::previous' => ['int'], 'IntlRuleBasedBreakIterator::setText' => ['bool', 'text'=>'string'], 'IntlTimeZone::countEquivalentIDs' => ['int', 'zoneId'=>'string'], 'IntlTimeZone::createDefault' => ['IntlTimeZone'], 'IntlTimeZone::createEnumeration' => ['IntlIterator', 'countryOrRawOffset='=>'mixed'], 'IntlTimeZone::createTimeZone' => ['IntlTimeZone', 'zoneId'=>'string'], 'IntlTimeZone::createTimeZoneIDEnumeration' => ['IntlIterator', 'zoneType'=>'int', 'region='=>'string', 'rawOffset='=>'int'], 'IntlTimeZone::fromDateTimeZone' => ['IntlTimeZone', 'zoneId'=>'DateTimeZone'], 'IntlTimeZone::getCanonicalID' => ['string', 'zoneId'=>'string', '&w_isSystemID='=>'bool'], 'IntlTimeZone::getDisplayName' => ['string', 'isDaylight='=>'bool', 'style='=>'int', 'locale='=>'string'], 'IntlTimeZone::getDSTSavings' => ['int'], 'IntlTimeZone::getEquivalentID' => ['string', 'zoneId'=>'string', 'index'=>'int'], 'IntlTimeZone::getErrorCode' => ['int'], 'IntlTimeZone::getErrorMessage' => ['string'], 'IntlTimeZone::getGMT' => ['IntlTimeZone'], 'IntlTimeZone::getID' => ['string'], 'IntlTimeZone::getIDForWindowsID' => ['string', 'timezone'=>'string', 'region='=>'string'], 'IntlTimeZone::getOffset' => ['int', 'date'=>'float', 'local'=>'bool', '&w_rawOffset'=>'int', '&w_dstOffset'=>'int'], 'IntlTimeZone::getRawOffset' => ['int'], 'IntlTimeZone::getRegion' => ['string', 'zoneId'=>'string'], 'IntlTimeZone::getTZDataVersion' => ['string'], 'IntlTimeZone::getUnknown' => ['IntlTimeZone'], 'IntlTimeZone::getWindowsID' => ['string', 'timezone'=>'string'], 'IntlTimeZone::hasSameRules' => ['bool', 'otherTimeZone'=>'IntlTimeZone'], 'IntlTimeZone::toDateTimeZone' => ['DateTimeZone'], 'IntlTimeZone::useDaylightTime' => ['bool'], 'intltz_count_equivalent_ids' => ['int|false', 'zoneId'=>'string'], 'intltz_create_enumeration' => ['IntlIterator', 'countryOrRawOffset'=>'mixed'], 'intltz_create_time_zone' => ['IntlTimeZone', 'zoneId'=>'string'], 'intltz_from_date_time_zone' => ['IntlTimeZone', 'zoneId'=>'DateTimeZone'], 'intltz_get_canonical_id' => ['string|false', 'zoneId'=>'string', '&isSystemID'=>'bool'], 'intltz_get_display_name' => ['string|false', 'obj'=>'IntlTimeZone', 'isDaylight'=>'bool', 'style'=>'int', 'locale'=>'string'], 'intltz_get_dst_savings' => ['int', 'obj'=>'IntlTimeZone'], 'intltz_get_equivalent_id' => ['string|false', 'zoneId'=>'string', 'index'=>'int'], 'intltz_get_error_code' => ['int|false', 'obj'=>'IntlTimeZone'], 'intltz_get_error_message' => ['string|false', 'obj'=>'IntlTimeZone'], 'intltz_get_id' => ['string|false', 'obj'=>'IntlTimeZone'], 'intltz_get_offset' => ['int', 'obj'=>'IntlTimeZone', 'date'=>'float', 'local'=>'bool', '&rawOffset'=>'int', '&dstOffset'=>'int'], 'intltz_get_raw_offset' => ['int', 'obj'=>'IntlTimeZone'], 'intltz_get_tz_data_version' => ['string|false', 'obj'=>'IntlTimeZone'], 'intltz_getGMT' => ['IntlTimeZone'], 'intltz_has_same_rules' => ['bool', 'obj'=>'IntlTimeZone', 'otherTimeZone'=>'IntlTimeZone'], 'intltz_to_date_time_zone' => ['DateTimeZone|false', 'obj'=>''], 'intltz_use_daylight_time' => ['bool', 'obj'=>''], 'intlz_create_default' => ['IntlTimeZone'], 'intval' => ['int', 'var'=>'scalar|array|resource|null', 'base='=>'int'], 'InvalidArgumentException::__clone' => ['void'], 'InvalidArgumentException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?InvalidArgumentException)'], 'InvalidArgumentException::__toString' => ['string'], 'InvalidArgumentException::getCode' => ['int'], 'InvalidArgumentException::getFile' => ['string'], 'InvalidArgumentException::getLine' => ['int'], 'InvalidArgumentException::getMessage' => ['string'], 'InvalidArgumentException::getPrevious' => ['Throwable|InvalidArgumentException|null'], 'InvalidArgumentException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'InvalidArgumentException::getTraceAsString' => ['string'], 'ip2long' => ['int|false', 'ip_address'=>'string'], 'iptcembed' => ['string|bool', 'iptcdata'=>'string', 'jpeg_file_name'=>'string', 'spool='=>'int'], 'iptcparse' => ['array>|false', 'iptcdata'=>'string'], 'is_a' => ['bool', 'object_or_string'=>'object|string', 'class_name'=>'string', 'allow_string='=>'bool'], 'is_array' => ['bool', 'var'=>'mixed'], 'is_bool' => ['bool', 'var'=>'mixed'], 'is_callable' => ['bool', 'var'=>'mixed', 'syntax_only='=>'bool', '&w_callable_name='=>'string'], 'is_countable' => ['bool', 'var'=>'mixed'], 'is_dir' => ['bool', 'filename'=>'string'], 'is_double' => ['bool', 'var'=>''], 'is_executable' => ['bool', 'filename'=>'string'], 'is_file' => ['bool', 'filename'=>'string'], 'is_finite' => ['bool', 'val'=>'float'], 'is_float' => ['bool', 'var'=>'mixed'], 'is_infinite' => ['bool', 'val'=>'float'], 'is_int' => ['bool', 'var'=>'mixed'], 'is_integer' => ['bool', 'var'=>''], 'is_iterable' => ['bool', 'var'=>'mixed'], 'is_link' => ['bool', 'filename'=>'string'], 'is_long' => ['bool', 'var'=>''], 'is_nan' => ['bool', 'val'=>'float'], 'is_null' => ['bool', 'var'=>'mixed'], 'is_numeric' => ['bool', 'value'=>'mixed'], 'is_object' => ['bool', 'var'=>'mixed'], 'is_readable' => ['bool', 'filename'=>'string'], 'is_real' => ['bool', 'var'=>''], 'is_resource' => ['bool', 'var'=>'mixed'], 'is_scalar' => ['bool', 'value'=>'mixed'], 'is_soap_fault' => ['bool', 'object'=>'mixed'], 'is_string' => ['bool', 'var'=>'mixed'], 'is_subclass_of' => ['bool', 'object_or_string'=>'object|string', 'class_name'=>'string', 'allow_string='=>'bool'], 'is_tainted' => ['bool', 'string'=>'string'], 'is_uploaded_file' => ['bool', 'path'=>'string'], 'is_writable' => ['bool', 'filename'=>'string'], 'is_writeable' => ['bool', 'filename'=>'string'], 'Iterator::current' => ['mixed'], 'Iterator::key' => ['mixed'], 'Iterator::next' => ['void'], 'Iterator::rewind' => ['void'], 'Iterator::valid' => ['bool'], 'iterator_apply' => ['0|positive-int', 'iterator'=>'Traversable', 'function'=>'callable', 'params='=>'array'], 'iterator_count' => ['0|positive-int', 'iterator'=>'Traversable'], 'iterator_to_array' => ['array', 'iterator'=>'Traversable', 'use_keys='=>'bool'], 'IteratorAggregate::getIterator' => ['Traversable'], 'IteratorIterator::__construct' => ['void', 'iterator'=>'Traversable'], 'IteratorIterator::current' => ['mixed'], 'IteratorIterator::getInnerIterator' => ['Traversable'], 'IteratorIterator::key' => ['mixed'], 'IteratorIterator::next' => ['void'], 'IteratorIterator::rewind' => ['void'], 'IteratorIterator::valid' => ['bool'], 'java_last_exception_clear' => [''], 'java_last_exception_get' => ['object'], 'java_reload' => ['array', 'new_jarpath'=>'new_jarpath'], 'java_require' => ['array', 'new_classpath'=>'new_classpath'], 'java_set_encoding' => ['array', 'encoding'=>'encoding'], 'java_set_ignore_case' => ['void', 'ignore'=>'ignore'], 'java_throw_exceptions' => ['void', 'throw'=>'throw'], 'JavaException::getCause' => ['object'], 'jddayofweek' => ['mixed', 'juliandaycount'=>'int', 'mode='=>'int'], 'jdmonthname' => ['string', 'juliandaycount'=>'int', 'mode'=>'int'], 'jdtofrench' => ['string', 'juliandaycount'=>'int'], 'jdtogregorian' => ['string', 'juliandaycount'=>'int'], 'jdtojewish' => ['string', 'juliandaycount'=>'int', 'hebrew='=>'bool', 'fl='=>'int'], 'jdtojulian' => ['string', 'juliandaycount'=>'int'], 'jdtounix' => ['int|false', 'jday'=>'int'], 'jewishtojd' => ['int', 'month'=>'int', 'day'=>'int', 'year'=>'int'], 'jobqueue_license_info' => ['array'], 'join' => ['string', 'glue'=>'string', 'pieces'=>'array'], 'join\'1' => ['string', 'pieces'=>'array'], 'jpeg2wbmp' => ['bool', 'jpegname'=>'string', 'wbmpname'=>'string', 'dest_height'=>'int', 'dest_width'=>'int', 'threshold'=>'int'], 'json_decode' => ['mixed', 'json'=>'string', 'assoc='=>'bool|null', 'depth='=>'positive-int', 'options='=>'int'], 'json_encode' => ['non-empty-string|false', 'data'=>'mixed', 'options='=>'int', 'depth='=>'positive-int'], 'json_last_error' => ['JSON_ERROR_NONE|JSON_ERROR_DEPTH|JSON_ERROR_STATE_MISMATCH|JSON_ERROR_CTRL_CHAR|JSON_ERROR_SYNTAX|JSON_ERROR_UTF8|JSON_ERROR_RECURSION|JSON_ERROR_INF_OR_NAN|JSON_ERROR_UNSUPPORTED_TYPE|JSON_ERROR_INVALID_PROPERTY_NAME|JSON_ERROR_UTF16'], 'json_last_error_msg' => ['string'], 'JsonIncrementalParser::__construct' => ['void', 'depth'=>'', 'options'=>''], 'JsonIncrementalParser::get' => ['', 'options'=>''], 'JsonIncrementalParser::getError' => [''], 'JsonIncrementalParser::parse' => ['', 'json'=>''], 'JsonIncrementalParser::parseFile' => ['', 'filename'=>''], 'JsonIncrementalParser::reset' => [''], 'JsonSerializable::jsonSerialize' => ['mixed'], 'Judy::__construct' => ['void', 'judy_type'=>'int'], 'Judy::__destruct' => [''], 'Judy::byCount' => ['int', 'nth_index'=>'int'], 'Judy::count' => ['0|positive-int', 'index_start='=>'int', 'index_end='=>'int'], 'Judy::first' => ['mixed', 'index='=>'mixed'], 'Judy::firstEmpty' => ['int', 'index='=>'mixed'], 'Judy::free' => ['int'], 'Judy::getType' => ['int'], 'Judy::last' => ['void', 'index='=>'string'], 'Judy::lastEmpty' => ['int', 'index='=>'int'], 'Judy::memoryUsage' => ['int'], 'Judy::next' => ['mixed', 'index'=>'mixed'], 'Judy::nextEmpty' => ['int', 'index'=>'int'], 'Judy::offsetExists' => ['bool', 'offset'=>'mixed'], 'Judy::offsetGet' => ['mixed', 'offset'=>'mixed'], 'Judy::offsetSet' => ['bool', 'offset'=>'mixed', 'value'=>'mixed'], 'Judy::offsetUnset' => ['bool', 'offset'=>'mixed'], 'Judy::prev' => ['mixed', 'index'=>'mixed'], 'Judy::prevEmpty' => ['int', 'index'=>'mixed'], 'Judy::size' => ['void'], 'judy_type' => ['int', 'array'=>'judy'], 'judy_version' => ['string'], 'juliantojd' => ['int', 'month'=>'int', 'day'=>'int', 'year'=>'int'], 'kadm5_chpass_principal' => ['bool', 'handle'=>'resource', 'principal'=>'string', 'password'=>'string'], 'kadm5_create_principal' => ['bool', 'handle'=>'resource', 'principal'=>'string', 'password='=>'string', 'options='=>'array'], 'kadm5_delete_principal' => ['bool', 'handle'=>'resource', 'principal'=>'string'], 'kadm5_destroy' => ['bool', 'handle'=>'resource'], 'kadm5_flush' => ['bool', 'handle'=>'resource'], 'kadm5_get_policies' => ['array', 'handle'=>'resource'], 'kadm5_get_principal' => ['array', 'handle'=>'resource', 'principal'=>'string'], 'kadm5_get_principals' => ['array', 'handle'=>'resource'], 'kadm5_init_with_password' => ['resource', 'admin_server'=>'string', 'realm'=>'string', 'principal'=>'string', 'password'=>'string'], 'kadm5_modify_principal' => ['bool', 'handle'=>'resource', 'principal'=>'string', 'options'=>'array'], 'key' => ['int|string|null', 'array_arg'=>'array|object'], 'key_exists' => ['bool', 'key'=>'string|int', 'search'=>'array'], 'krsort' => ['bool', '&rw_array_arg'=>'array', 'sort_flags='=>'int'], 'ksort' => ['bool', '&rw_array_arg'=>'array', 'sort_flags='=>'int'], 'KTaglib_ID3v2_AttachedPictureFrame::getDescription' => ['string'], 'KTaglib_ID3v2_AttachedPictureFrame::getMimeType' => ['string'], 'KTaglib_ID3v2_AttachedPictureFrame::getType' => ['int'], 'KTaglib_ID3v2_AttachedPictureFrame::savePicture' => ['bool', 'filename'=>'string'], 'KTaglib_ID3v2_AttachedPictureFrame::setMimeType' => ['string', 'type'=>'string'], 'KTaglib_ID3v2_AttachedPictureFrame::setPicture' => ['', 'filename'=>'string'], 'KTaglib_ID3v2_AttachedPictureFrame::setType' => ['', 'type'=>'int'], 'KTaglib_ID3v2_Frame::__toString' => ['string'], 'KTaglib_ID3v2_Frame::getSize' => ['int'], 'KTaglib_ID3v2_Tag::addFrame' => ['bool', 'frame'=>'ktaglib_id3v2_frame'], 'KTaglib_ID3v2_Tag::getFrameList' => ['array'], 'KTaglib_MPEG_AudioProperties::getBitrate' => ['int'], 'KTaglib_MPEG_AudioProperties::getChannels' => ['int'], 'KTaglib_MPEG_AudioProperties::getLayer' => ['int'], 'KTaglib_MPEG_AudioProperties::getLength' => ['int'], 'KTaglib_MPEG_AudioProperties::getSampleBitrate' => ['int'], 'KTaglib_MPEG_AudioProperties::getVersion' => ['int'], 'KTaglib_MPEG_AudioProperties::isCopyrighted' => ['bool'], 'KTaglib_MPEG_AudioProperties::isOriginal' => ['bool'], 'KTaglib_MPEG_AudioProperties::isProtectionEnabled' => ['bool'], 'KTaglib_MPEG_File::getAudioProperties' => ['KTaglib_MPEG_File'], 'KTaglib_MPEG_File::getID3v1Tag' => ['KTaglib_ID3v1_Tag', 'create='=>'bool'], 'KTaglib_MPEG_File::getID3v2Tag' => ['KTaglib_ID3v2_Tag', 'create='=>'bool'], 'KTaglib_Tag::getAlbum' => ['string'], 'KTaglib_Tag::getArtist' => ['string'], 'KTaglib_Tag::getComment' => ['string'], 'KTaglib_Tag::getGenre' => ['string'], 'KTaglib_Tag::getTitle' => ['string'], 'KTaglib_Tag::getTrack' => ['int'], 'KTaglib_Tag::getYear' => ['int'], 'KTaglib_Tag::isEmpty' => ['bool'], 'labelcacheObj::freeCache' => ['bool'], 'labelObj::__construct' => ['void'], 'labelObj::convertToString' => ['string'], 'labelObj::deleteStyle' => ['int', 'index'=>'int'], 'labelObj::free' => ['void'], 'labelObj::getBinding' => ['string', 'labelbinding'=>'mixed'], 'labelObj::getExpressionString' => ['string'], 'labelObj::getStyle' => ['styleObj', 'index'=>'int'], 'labelObj::getTextString' => ['string'], 'labelObj::moveStyleDown' => ['int', 'index'=>'int'], 'labelObj::moveStyleUp' => ['int', 'index'=>'int'], 'labelObj::removeBinding' => ['int', 'labelbinding'=>'mixed'], 'labelObj::set' => ['int', 'property_name'=>'string', 'new_value'=>''], 'labelObj::setBinding' => ['int', 'labelbinding'=>'mixed', 'value'=>'string'], 'labelObj::setExpression' => ['int', 'expression'=>'string'], 'labelObj::setText' => ['int', 'text'=>'string'], 'labelObj::updateFromString' => ['int', 'snippet'=>'string'], 'Lapack::eigenValues' => ['array', 'a'=>'array', 'left='=>'array', 'right='=>'array'], 'Lapack::identity' => ['array', 'n'=>'int'], 'Lapack::leastSquaresByFactorisation' => ['array', 'a'=>'array', 'b'=>'array'], 'Lapack::leastSquaresBySVD' => ['array', 'a'=>'array', 'b'=>'array'], 'Lapack::pseudoInverse' => ['array', 'a'=>'array'], 'Lapack::singularValues' => ['array', 'a'=>'array'], 'Lapack::solveLinearEquation' => ['array', 'a'=>'array', 'b'=>'array'], 'layerObj::addFeature' => ['int', 'shape'=>'shapeObj'], 'layerObj::applySLD' => ['int', 'sldxml'=>'string', 'namedlayer'=>'string'], 'layerObj::applySLDURL' => ['int', 'sldurl'=>'string', 'namedlayer'=>'string'], 'layerObj::clearProcessing' => ['void'], 'layerObj::close' => ['void'], 'layerObj::convertToString' => ['string'], 'layerObj::draw' => ['int', 'image'=>'imageObj'], 'layerObj::drawQuery' => ['int', 'image'=>'imageObj'], 'layerObj::free' => ['void'], 'layerObj::generateSLD' => ['string'], 'layerObj::getClass' => ['classObj', 'classIndex'=>'int'], 'layerObj::getClassIndex' => ['int', 'shape'=>'', 'classgroup'=>'', 'numclasses'=>''], 'layerObj::getExtent' => ['rectObj'], 'layerObj::getFilterString' => ['string'], 'layerObj::getGridIntersectionCoordinates' => ['array'], 'layerObj::getItems' => ['array'], 'layerObj::getMetaData' => ['int', 'name'=>'string'], 'layerObj::getNumResults' => ['int'], 'layerObj::getProcessing' => ['array'], 'layerObj::getProjection' => ['string'], 'layerObj::getResult' => ['resultObj', 'index'=>'int'], 'layerObj::getResultsBounds' => ['rectObj'], 'layerObj::getShape' => ['shapeObj', 'result'=>'resultObj'], 'layerObj::getWMSFeatureInfoURL' => ['string', 'clickX'=>'int', 'clickY'=>'int', 'featureCount'=>'int', 'infoFormat'=>'string'], 'layerObj::isVisible' => ['bool'], 'layerObj::moveclassdown' => ['int', 'index'=>'int'], 'layerObj::moveclassup' => ['int', 'index'=>'int'], 'layerObj::ms_newLayerObj' => ['layerObj', 'map'=>'mapObj', 'layer'=>'layerObj'], 'layerObj::nextShape' => ['shapeObj'], 'layerObj::open' => ['int'], 'layerObj::queryByAttributes' => ['int', 'qitem'=>'string', 'qstring'=>'string', 'mode'=>'int'], 'layerObj::queryByFeatures' => ['int', 'slayer'=>'int'], 'layerObj::queryByPoint' => ['int', 'point'=>'pointObj', 'mode'=>'int', 'buffer'=>'float'], 'layerObj::queryByRect' => ['int', 'rect'=>'rectObj'], 'layerObj::queryByShape' => ['int', 'shape'=>'shapeObj'], 'layerObj::removeClass' => ['classObj', 'index'=>'int'], 'layerObj::removeMetaData' => ['int', 'name'=>'string'], 'layerObj::set' => ['int', 'property_name'=>'string', 'new_value'=>''], 'layerObj::setConnectionType' => ['int', 'connectiontype'=>'int', 'plugin_library'=>'string'], 'layerObj::setFilter' => ['int', 'expression'=>'string'], 'layerObj::setMetaData' => ['int', 'name'=>'string', 'value'=>'string'], 'layerObj::setProjection' => ['int', 'proj_params'=>'string'], 'layerObj::setWKTProjection' => ['int', 'proj_params'=>'string'], 'layerObj::updateFromString' => ['int', 'snippet'=>'string'], 'lcfirst' => ['string', 'str'=>'string'], 'lcg_value' => ['float'], 'lchgrp' => ['bool', 'filename'=>'string', 'group'=>'string|int'], 'lchown' => ['bool', 'filename'=>'string', 'user'=>'string|int'], 'ldap_8859_to_t61' => ['string|false', 'value'=>'string'], 'ldap_add' => ['bool', 'link_identifier'=>'resource', 'dn'=>'string', 'entry'=>'array', 'servercontrols='=>'array'], 'ldap_add_ext' => ['resource|false', 'link_identifier'=>'resource', 'dn'=>'string', 'entry'=>'array', 'servercontrols='=>'array'], 'ldap_bind' => ['bool', 'link_identifier'=>'resource', 'bind_rdn='=>'string|null', 'bind_password='=>'string|null', 'serverctrls='=>'array'], 'ldap_bind_ext' => ['resource|false', 'link_identifier'=>'resource', 'bind_rdn='=>'string|null', 'bind_password='=>'string|null', 'serverctrls='=>'array'], 'ldap_close' => ['bool', 'link_identifier'=>'resource'], 'ldap_compare' => ['bool', 'link_identifier'=>'resource', 'dn'=>'string', 'attr'=>'string', 'value'=>'string', 'servercontrols='=>'array'], 'ldap_connect' => ['resource|false', 'host='=>'string', 'port='=>'int', 'wallet='=>'string', 'wallet_passwd='=>'string', 'authmode='=>'int'], 'ldap_control_paged_result' => ['bool', 'link_identifier'=>'resource', 'pagesize'=>'int', 'iscritical='=>'bool', 'cookie='=>'string'], 'ldap_control_paged_result_response' => ['bool', 'link_identifier'=>'resource', 'result_identifier'=>'resource', '&w_cookie='=>'string', '&w_estimated='=>'int'], 'ldap_count_entries' => ['int', 'link_identifier'=>'resource', 'result'=>'resource'], 'ldap_delete' => ['bool', 'link_identifier'=>'resource', 'dn'=>'string', 'servercontrols='=>'array'], 'ldap_delete_ext' => ['resource|false', 'link_identifier'=>'resource', 'dn'=>'string', 'servercontrols='=>'array'], 'ldap_dn2ufn' => ['string|false', 'dn'=>'string'], 'ldap_err2str' => ['string', 'errno'=>'int'], 'ldap_errno' => ['int', 'link_identifier'=>'resource'], 'ldap_error' => ['string', 'link_identifier'=>'resource'], 'ldap_escape' => ['string', 'value'=>'string', 'ignore='=>'string', 'flags='=>'int'], 'ldap_exop' => ['resource|bool', 'link'=>'resource', 'reqoid'=>'string', 'reqdata='=>'string', 'serverctrls='=>'array|null', '&w_retdata='=>'string', '&w_retoid='=>'string'], 'ldap_exop_passwd' => ['string|bool', 'link'=>'resource', 'user='=>'string', 'oldpw='=>'string', 'newpw='=>'string', 'serverctrls='=>'array'], 'ldap_exop_refresh' => ['int|false', 'link'=>'resource', 'dn'=>'string', 'ttl'=>'int'], 'ldap_exop_whoami' => ['string|bool', 'link'=>'resource'], 'ldap_explode_dn' => ['array|false', 'dn'=>'string', 'with_attrib'=>'int'], 'ldap_first_attribute' => ['string|false', 'link_identifier'=>'resource', 'result_entry_identifier'=>'resource'], 'ldap_first_entry' => ['resource|false', 'link_identifier'=>'resource', 'result_identifier'=>'resource'], 'ldap_first_reference' => ['resource|false', 'link_identifier'=>'resource', 'result_identifier'=>'resource'], 'ldap_free_result' => ['bool', 'result_identifier'=>'resource'], 'ldap_get_attributes' => ['array', 'link_identifier'=>'resource', 'result_entry_identifier'=>'resource'], 'ldap_get_dn' => ['string|false', 'link_identifier'=>'resource', 'result_entry_identifier'=>'resource'], 'ldap_get_entries' => ['array|false', 'link_identifier'=>'resource', 'result_identifier'=>'resource'], 'ldap_get_option' => ['bool', 'link_identifier'=>'resource', 'option'=>'int', '&w_retval'=>'mixed'], 'ldap_get_values' => ['array|false', 'link_identifier'=>'resource', 'result_entry_identifier'=>'resource', 'attribute'=>'string'], 'ldap_get_values_len' => ['array|false', 'link_identifier'=>'resource', 'result_entry_identifier'=>'resource', 'attribute'=>'string'], 'ldap_list' => ['resource|false', 'link'=>'resource|array', 'base_dn'=>'string', 'filter'=>'string', 'attrs='=>'array', 'attrsonly='=>'int', 'sizelimit='=>'int', 'timelimit='=>'int', 'deref='=>'int', 'servercontrols='=>'array'], 'ldap_mod_add' => ['bool', 'link_identifier'=>'resource', 'dn'=>'string', 'entry'=>'array', 'servercontrols='=>'array'], 'ldap_mod_add_ext' => ['resource|false', 'link_identifier'=>'resource', 'dn'=>'string', 'entry'=>'array', 'servercontrols='=>'array'], 'ldap_mod_del' => ['bool', 'link_identifier'=>'resource', 'dn'=>'string', 'entry'=>'array', 'servercontrols='=>'array'], 'ldap_mod_del_ext' => ['resource|false', 'link_identifier'=>'resource', 'dn'=>'string', 'entry'=>'array', 'servercontrols='=>'array'], 'ldap_mod_replace' => ['bool', 'link_identifier'=>'resource', 'dn'=>'string', 'entry'=>'array', 'servercontrols='=>'array'], 'ldap_mod_replace_ext' => ['resource|false', 'link_identifier'=>'resource', 'dn'=>'string', 'entry'=>'array', 'servercontrols='=>'array'], 'ldap_modify' => ['bool', 'link_identifier'=>'resource', 'dn'=>'string', 'entry'=>'array'], 'ldap_modify_batch' => ['bool', 'link_identifier'=>'resource', 'dn'=>'string', 'modifs'=>'array', 'servercontrols='=>'array'], 'ldap_next_attribute' => ['string|false', 'link_identifier'=>'resource', 'result_entry_identifier'=>'resource'], 'ldap_next_entry' => ['resource|false', 'link_identifier'=>'resource', 'result_entry_identifier'=>'resource'], 'ldap_next_reference' => ['resource|false', 'link_identifier'=>'resource', 'reference_entry_identifier'=>'resource'], 'ldap_parse_exop' => ['bool', 'link'=>'resource', 'result'=>'resource', '&w_retdata='=>'string', '&w_retoid='=>'string'], 'ldap_parse_reference' => ['bool', 'link_identifier'=>'resource', 'reference_entry_identifier'=>'resource', 'referrals'=>'array'], 'ldap_parse_result' => ['bool', 'link_identifier'=>'resource', 'result'=>'resource', '&w_errcode'=>'int', '&w_matcheddn='=>'string', '&w_errmsg='=>'string', '&w_referrals='=>'array', '&w_serverctrls='=>'array'], 'ldap_read' => ['resource|false', 'link'=>'resource|array', 'base_dn'=>'string', 'filter'=>'string', 'attrs='=>'array', 'attrsonly='=>'int', 'sizelimit='=>'int', 'timelimit='=>'int', 'deref='=>'int', 'servercontrols='=>'array'], 'ldap_rename' => ['bool', 'link_identifier'=>'resource', 'dn'=>'string', 'newrdn'=>'string', 'newparent'=>'string', 'deleteoldrdn'=>'bool', 'servercontrols='=>'array'], 'ldap_rename_ext' => ['resource|false', 'link_identifier'=>'resource', 'dn'=>'string', 'newrdn'=>'string', 'newparent'=>'string', 'deleteoldrdn'=>'bool', 'servercontrols='=>'array'], 'ldap_sasl_bind' => ['bool', 'link_identifier'=>'resource', 'binddn='=>'string', 'password='=>'string', 'sasl_mech='=>'string', 'sasl_realm='=>'string', 'sasl_authc_id='=>'string', 'sasl_authz_id='=>'string', 'props='=>'string'], 'ldap_search' => ['resource|false', 'link_identifier'=>'resource|array', 'base_dn'=>'string', 'filter'=>'string', 'attrs='=>'array', 'attrsonly='=>'int', 'sizelimit='=>'int', 'timelimit='=>'int', 'deref='=>'int', 'servercontrols='=>'array'], 'ldap_set_option' => ['bool', 'link_identifier'=>'resource|null', 'option'=>'int', 'newval'=>'mixed'], 'ldap_set_rebind_proc' => ['bool', 'link_identifier'=>'resource', 'callback'=>'callable'], 'ldap_sort' => ['bool', 'link_identifier'=>'resource', 'result_identifier'=>'resource', 'sortfilter'=>'string'], 'ldap_start_tls' => ['bool', 'link_identifier'=>'resource'], 'ldap_t61_to_8859' => ['string|false', 'value'=>'string'], 'ldap_unbind' => ['bool', 'link_identifier'=>'resource'], 'leak' => ['', 'num_bytes'=>'int'], 'leak_variable' => ['', 'variable'=>'', 'leak_data'=>'bool'], 'legendObj::convertToString' => ['string'], 'legendObj::free' => ['void'], 'legendObj::set' => ['int', 'property_name'=>'string', 'new_value'=>''], 'legendObj::updateFromString' => ['int', 'snippet'=>'string'], 'LengthException::__clone' => ['void'], 'LengthException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?LengthException)'], 'LengthException::__toString' => ['string'], 'LengthException::getCode' => ['int'], 'LengthException::getFile' => ['string'], 'LengthException::getLine' => ['int'], 'LengthException::getMessage' => ['string'], 'LengthException::getPrevious' => ['Throwable|LengthException|null'], 'LengthException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'LengthException::getTraceAsString' => ['string'], 'levenshtein' => ['int', 'str1'=>'string', 'str2'=>'string'], 'levenshtein\'1' => ['int', 'str1'=>'string', 'str2'=>'string', 'cost_ins'=>'int', 'cost_rep'=>'int', 'cost_del'=>'int'], 'libxml_clear_errors' => ['void'], 'libxml_disable_entity_loader' => ['bool', 'disable='=>'bool'], 'libxml_get_errors' => ['array'], 'libxml_get_last_error' => ['LibXMLError|false'], 'libxml_set_external_entity_loader' => ['bool', 'resolver_function'=>'callable'], 'libxml_set_streams_context' => ['void', 'streams_context'=>'resource'], 'libxml_use_internal_errors' => ['bool', 'use_errors='=>'bool'], 'LimitIterator::__construct' => ['void', 'iterator'=>'Iterator', 'offset='=>'int', 'count='=>'int'], 'LimitIterator::current' => ['mixed'], 'LimitIterator::getInnerIterator' => ['Iterator'], 'LimitIterator::getPosition' => ['int'], 'LimitIterator::key' => ['mixed'], 'LimitIterator::next' => ['void'], 'LimitIterator::rewind' => ['void'], 'LimitIterator::seek' => ['int', 'position'=>'int'], 'LimitIterator::valid' => ['bool'], 'lineObj::__construct' => ['void'], 'lineObj::add' => ['int', 'point'=>'pointObj'], 'lineObj::addXY' => ['int', 'x'=>'float', 'y'=>'float', 'm'=>'float'], 'lineObj::addXYZ' => ['int', 'x'=>'float', 'y'=>'float', 'z'=>'float', 'm'=>'float'], 'lineObj::ms_newLineObj' => ['lineObj'], 'lineObj::point' => ['pointObj', 'i'=>'int'], 'lineObj::project' => ['int', 'in'=>'projectionObj', 'out'=>'projectionObj'], 'link' => ['bool', 'target'=>'string', 'link'=>'string'], 'linkinfo' => ['int|false', 'filename'=>'string'], 'litespeed_request_headers' => ['array'], 'litespeed_response_headers' => ['array|false'], 'Locale::acceptFromHttp' => ['non-empty-string|false', 'header'=>'string'], 'Locale::canonicalize' => ['non-empty-string|null', 'locale'=>'string'], 'Locale::composeLocale' => ['string|false', 'subtags'=>'array'], 'Locale::filterMatches' => ['bool|null', 'langtag'=>'string', 'locale'=>'string', 'canonicalize='=>'bool'], 'Locale::getAllVariants' => ['array|null', 'locale'=>'string'], 'Locale::getDefault' => ['non-empty-string'], 'Locale::getDisplayLanguage' => ['non-empty-string', 'locale'=>'string', 'displayLocale='=>'string'], 'Locale::getDisplayName' => ['non-empty-string', 'locale'=>'string', 'displayLocale='=>'string'], 'Locale::getDisplayRegion' => ['non-empty-string', 'locale'=>'string', 'displayLocale='=>'string'], 'Locale::getDisplayScript' => ['string', 'locale'=>'string', 'displayLocale='=>'string'], 'Locale::getDisplayVariant' => ['string', 'locale'=>'string', 'displayLocale='=>'string'], 'Locale::getKeywords' => ['array|null', 'locale'=>'string'], 'Locale::getPrimaryLanguage' => ['non-empty-string|null', 'locale'=>'string'], 'Locale::getRegion' => ['string|null', 'locale'=>'string'], 'Locale::getScript' => ['string|null', 'locale'=>'string'], 'Locale::lookup' => ['string|null', 'languageTag'=>'array', 'locale'=>'string', 'canonicalize='=>'bool', 'defaultLocale='=>'string'], 'Locale::parseLocale' => ['array|null', 'locale'=>'string'], 'Locale::setDefault' => ['bool', 'locale'=>'string'], 'locale_accept_from_http' => ['non-empty-string|false', 'header'=>'string'], 'locale_canonicalize' => ['non-empty-string|null', 'locale'=>'string'], 'locale_compose' => ['string|false', 'subtags'=>'array'], 'locale_filter_matches' => ['bool|null', 'langtag'=>'string', 'locale'=>'string', 'canonicalize='=>'bool'], 'locale_get_all_variants' => ['array|null', 'locale'=>'string'], 'locale_get_default' => ['non-empty-string'], 'locale_get_display_language' => ['non-empty-string', 'locale'=>'string', 'displayLocale='=>'string'], 'locale_get_display_name' => ['non-empty-string', 'locale'=>'string', 'displayLocale='=>'string'], 'locale_get_display_region' => ['non-empty-string', 'locale'=>'string', 'displayLocale='=>'string'], 'locale_get_display_script' => ['string', 'locale'=>'string', 'displayLocale='=>'string'], 'locale_get_display_variant' => ['string', 'locale'=>'string', 'displayLocale='=>'string'], 'locale_get_keywords' => ['array|null', 'locale'=>'string'], 'locale_get_primary_language' => ['non-empty-string|null', 'locale'=>'string'], 'locale_get_region' => ['string|null', 'locale'=>'string'], 'locale_get_script' => ['string|null', 'locale'=>'string'], 'locale_lookup' => ['string|null', 'langtag'=>'array', 'locale'=>'string', 'canonicalize='=>'bool', 'defaultLocale='=>'string'], 'locale_parse' => ['array|null', 'locale'=>'string'], 'locale_set_default' => ['bool', 'locale'=>'string'], 'localeconv' => ['array'], 'localtime' => ['array', 'timestamp='=>'int', 'associative_array='=>'bool'], 'log' => ['float', 'number'=>'float', 'base='=>'float'], 'log10' => ['float', 'number'=>'float'], 'log1p' => ['float', 'number'=>'float'], 'LogicException::__clone' => ['void'], 'LogicException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?LogicException)'], 'LogicException::__toString' => ['string'], 'LogicException::getCode' => ['int'], 'LogicException::getFile' => ['string'], 'LogicException::getLine' => ['int'], 'LogicException::getMessage' => ['string'], 'LogicException::getPrevious' => ['Throwable|LogicException|null'], 'LogicException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'LogicException::getTraceAsString' => ['string'], 'long2ip' => ['string|false', 'proper_address'=>'int'], 'lstat' => ['array|false', 'filename'=>'string'], 'ltrim' => ['string', 'str'=>'string', 'character_mask='=>'string'], 'Lua::__call' => ['mixed', 'lua_func'=>'callable', 'args='=>'array', 'use_self='=>'int'], 'Lua::__construct' => ['void', 'lua_script_file'=>'string'], 'Lua::assign' => ['mixed', 'name'=>'string', 'value'=>'string'], 'Lua::call' => ['mixed', 'lua_func'=>'callable', 'args='=>'array', 'use_self='=>'int'], 'Lua::eval' => ['mixed', 'statements'=>'string'], 'Lua::getVersion' => ['string'], 'Lua::include' => ['mixed', 'file'=>'string'], 'Lua::registerCallback' => ['mixed', 'name'=>'string', 'function'=>'callable'], 'LuaClosure::__invoke' => ['void', 'arg'=>'mixed', '...args='=>'mixed'], 'lzf_compress' => ['string', 'data'=>'string'], 'lzf_decompress' => ['string', 'data'=>'string'], 'lzf_optimized_for' => ['int'], 'm_checkstatus' => ['int', 'conn'=>'resource', 'identifier'=>'int'], 'm_completeauthorizations' => ['int', 'conn'=>'resource', 'array'=>'int'], 'm_connect' => ['int', 'conn'=>'resource'], 'm_connectionerror' => ['string', 'conn'=>'resource'], 'm_deletetrans' => ['bool', 'conn'=>'resource', 'identifier'=>'int'], 'm_destroyconn' => ['bool', 'conn'=>'resource'], 'm_destroyengine' => ['void'], 'm_getcell' => ['string', 'conn'=>'resource', 'identifier'=>'int', 'column'=>'string', 'row'=>'int'], 'm_getcellbynum' => ['string', 'conn'=>'resource', 'identifier'=>'int', 'column'=>'int', 'row'=>'int'], 'm_getcommadelimited' => ['string', 'conn'=>'resource', 'identifier'=>'int'], 'm_getheader' => ['string', 'conn'=>'resource', 'identifier'=>'int', 'column_num'=>'int'], 'm_initconn' => ['resource'], 'm_initengine' => ['int', 'location'=>'string'], 'm_iscommadelimited' => ['int', 'conn'=>'resource', 'identifier'=>'int'], 'm_maxconntimeout' => ['bool', 'conn'=>'resource', 'secs'=>'int'], 'm_monitor' => ['int', 'conn'=>'resource'], 'm_numcolumns' => ['int', 'conn'=>'resource', 'identifier'=>'int'], 'm_numrows' => ['int', 'conn'=>'resource', 'identifier'=>'int'], 'm_parsecommadelimited' => ['int', 'conn'=>'resource', 'identifier'=>'int'], 'm_responsekeys' => ['array', 'conn'=>'resource', 'identifier'=>'int'], 'm_responseparam' => ['string', 'conn'=>'resource', 'identifier'=>'int', 'key'=>'string'], 'm_returnstatus' => ['int', 'conn'=>'resource', 'identifier'=>'int'], 'm_setblocking' => ['int', 'conn'=>'resource', 'tf'=>'int'], 'm_setdropfile' => ['int', 'conn'=>'resource', 'directory'=>'string'], 'm_setip' => ['int', 'conn'=>'resource', 'host'=>'string', 'port'=>'int'], 'm_setssl' => ['int', 'conn'=>'resource', 'host'=>'string', 'port'=>'int'], 'm_setssl_cafile' => ['int', 'conn'=>'resource', 'cafile'=>'string'], 'm_setssl_files' => ['int', 'conn'=>'resource', 'sslkeyfile'=>'string', 'sslcertfile'=>'string'], 'm_settimeout' => ['int', 'conn'=>'resource', 'seconds'=>'int'], 'm_sslcert_gen_hash' => ['string', 'filename'=>'string'], 'm_transactionssent' => ['int', 'conn'=>'resource'], 'm_transinqueue' => ['int', 'conn'=>'resource'], 'm_transkeyval' => ['int', 'conn'=>'resource', 'identifier'=>'int', 'key'=>'string', 'value'=>'string'], 'm_transnew' => ['int', 'conn'=>'resource'], 'm_transsend' => ['int', 'conn'=>'resource', 'identifier'=>'int'], 'm_uwait' => ['int', 'microsecs'=>'int'], 'm_validateidentifier' => ['int', 'conn'=>'resource', 'tf'=>'int'], 'm_verifyconnection' => ['bool', 'conn'=>'resource', 'tf'=>'int'], 'm_verifysslcert' => ['bool', 'conn'=>'resource', 'tf'=>'int'], 'magic_quotes_runtime' => ['', 'new_setting'=>''], 'mail' => ['bool', 'to'=>'string', 'subject'=>'string', 'message'=>'string', 'additional_headers='=>'string|array|null', 'additional_parameters='=>'string'], 'mailparse_determine_best_xfer_encoding' => ['string', 'fp'=>'resource'], 'mailparse_msg_create' => ['resource'], 'mailparse_msg_extract_part' => ['void', 'mimemail'=>'resource', 'msgbody'=>'string', 'callbackfunc='=>'callable'], 'mailparse_msg_extract_part_file' => ['string', 'mimemail'=>'resource', 'filename'=>'mixed', 'callbackfunc='=>'callable'], 'mailparse_msg_extract_whole_part_file' => ['string', 'mimemail'=>'resource', 'filename'=>'string', 'callbackfunc='=>'callable'], 'mailparse_msg_free' => ['bool', 'mimemail'=>'resource'], 'mailparse_msg_get_part' => ['resource|false', 'mimemail'=>'resource', 'mimesection'=>'string'], 'mailparse_msg_get_part_data' => ['array', 'mimemail'=>'resource'], 'mailparse_msg_get_structure' => ['array', 'mimemail'=>'resource'], 'mailparse_msg_parse' => ['bool', 'mimemail'=>'resource', 'data'=>'string'], 'mailparse_msg_parse_file' => ['resource', 'filename'=>'string'], 'mailparse_rfc822_parse_addresses' => ['array', 'addresses'=>'string'], 'mailparse_stream_encode' => ['bool', 'sourcefp'=>'resource', 'destfp'=>'resource', 'encoding'=>'string'], 'mailparse_uudecode_all' => ['array', 'fp'=>'resource'], 'mapObj::__construct' => ['void', 'map_file_name'=>'string', 'new_map_path'=>'string'], 'mapObj::appendOutputFormat' => ['int', 'outputFormat'=>'outputformatObj'], 'mapObj::applyconfigoptions' => ['int'], 'mapObj::applySLD' => ['int', 'sldxml'=>'string'], 'mapObj::applySLDURL' => ['int', 'sldurl'=>'string'], 'mapObj::convertToString' => ['string'], 'mapObj::draw' => ['imageObj'], 'mapObj::drawLabelCache' => ['int', 'image'=>'imageObj'], 'mapObj::drawLegend' => ['imageObj'], 'mapObj::drawQuery' => ['imageObj'], 'mapObj::drawReferenceMap' => ['imageObj'], 'mapObj::drawScaleBar' => ['imageObj'], 'mapObj::embedLegend' => ['int', 'image'=>'imageObj'], 'mapObj::embedScalebar' => ['int', 'image'=>'imageObj'], 'mapObj::free' => ['void'], 'mapObj::generateSLD' => ['string'], 'mapObj::getAllGroupNames' => ['array'], 'mapObj::getAllLayerNames' => ['array'], 'mapObj::getColorbyIndex' => ['colorObj', 'iCloIndex'=>'int'], 'mapObj::getConfigOption' => ['string', 'key'=>'string'], 'mapObj::getLabel' => ['labelcacheMemberObj', 'index'=>'int'], 'mapObj::getLayer' => ['layerObj', 'index'=>'int'], 'mapObj::getLayerByName' => ['layerObj', 'layer_name'=>'string'], 'mapObj::getLayersDrawingOrder' => ['array'], 'mapObj::getLayersIndexByGroup' => ['array', 'groupname'=>'string'], 'mapObj::getMetaData' => ['int', 'name'=>'string'], 'mapObj::getNumSymbols' => ['int'], 'mapObj::getOutputFormat' => ['outputformatObj', 'index'=>'int'], 'mapObj::getProjection' => ['string'], 'mapObj::getSymbolByName' => ['int', 'symbol_name'=>'string'], 'mapObj::getSymbolObjectById' => ['symbolObj', 'symbolid'=>'int'], 'mapObj::loadMapContext' => ['int', 'filename'=>'string', 'unique_layer_name'=>'bool'], 'mapObj::loadOWSParameters' => ['int', 'request'=>'OwsrequestObj', 'version'=>'string'], 'mapObj::moveLayerDown' => ['int', 'layerindex'=>'int'], 'mapObj::moveLayerUp' => ['int', 'layerindex'=>'int'], 'mapObj::ms_newMapObjFromString' => ['mapObj', 'map_file_string'=>'string', 'new_map_path'=>'string'], 'mapObj::offsetExtent' => ['int', 'x'=>'float', 'y'=>'float'], 'mapObj::owsDispatch' => ['int', 'request'=>'OwsrequestObj'], 'mapObj::prepareImage' => ['imageObj'], 'mapObj::prepareQuery' => ['void'], 'mapObj::processLegendTemplate' => ['string', 'params'=>'array'], 'mapObj::processQueryTemplate' => ['string', 'params'=>'array', 'generateimages'=>'bool'], 'mapObj::processTemplate' => ['string', 'params'=>'array', 'generateimages'=>'bool'], 'mapObj::queryByFeatures' => ['int', 'slayer'=>'int'], 'mapObj::queryByIndex' => ['int', 'layerindex'=>'', 'tileindex'=>'', 'shapeindex'=>'', 'addtoquery'=>''], 'mapObj::queryByPoint' => ['int', 'point'=>'pointObj', 'mode'=>'int', 'buffer'=>'float'], 'mapObj::queryByRect' => ['int', 'rect'=>'rectObj'], 'mapObj::queryByShape' => ['int', 'shape'=>'shapeObj'], 'mapObj::removeLayer' => ['layerObj', 'nIndex'=>'int'], 'mapObj::removeMetaData' => ['int', 'name'=>'string'], 'mapObj::removeOutputFormat' => ['int', 'name'=>'string'], 'mapObj::save' => ['int', 'filename'=>'string'], 'mapObj::saveMapContext' => ['int', 'filename'=>'string'], 'mapObj::saveQuery' => ['int', 'filename'=>'string', 'results'=>'int'], 'mapObj::scaleExtent' => ['int', 'zoomfactor'=>'float', 'minscaledenom'=>'float', 'maxscaledenom'=>'float'], 'mapObj::selectOutputFormat' => ['int', 'type'=>'string'], 'mapObj::set' => ['int', 'property_name'=>'string', 'new_value'=>''], 'mapObj::setCenter' => ['int', 'center'=>'pointObj'], 'mapObj::setConfigOption' => ['int', 'key'=>'string', 'value'=>'string'], 'mapObj::setExtent' => ['void', 'minx'=>'float', 'miny'=>'float', 'maxx'=>'float', 'maxy'=>'float'], 'mapObj::setFontSet' => ['int', 'fileName'=>'string'], 'mapObj::setMetaData' => ['int', 'name'=>'string', 'value'=>'string'], 'mapObj::setProjection' => ['int', 'proj_params'=>'string', 'bSetUnitsAndExtents'=>'bool'], 'mapObj::setRotation' => ['int', 'rotation_angle'=>'float'], 'mapObj::setSize' => ['int', 'width'=>'int', 'height'=>'int'], 'mapObj::setSymbolSet' => ['int', 'fileName'=>'string'], 'mapObj::setWKTProjection' => ['int', 'proj_params'=>'string', 'bSetUnitsAndExtents'=>'bool'], 'mapObj::zoomPoint' => ['int', 'nZoomFactor'=>'int', 'oPixelPos'=>'pointObj', 'nImageWidth'=>'int', 'nImageHeight'=>'int', 'oGeorefExt'=>'rectObj'], 'mapObj::zoomRectangle' => ['int', 'oPixelExt'=>'rectObj', 'nImageWidth'=>'int', 'nImageHeight'=>'int', 'oGeorefExt'=>'rectObj'], 'mapObj::zoomScale' => ['int', 'nScaleDenom'=>'float', 'oPixelPos'=>'pointObj', 'nImageWidth'=>'int', 'nImageHeight'=>'int', 'oGeorefExt'=>'rectObj', 'oMaxGeorefExt'=>'rectObj'], 'max' => ['', '...arg1'=>'array'], 'max\'1' => ['', 'arg1'=>'', 'arg2'=>'', '...args='=>''], 'maxdb::__construct' => ['void', 'host='=>'string', 'username='=>'string', 'passwd='=>'string', 'dbname='=>'string', 'port='=>'int', 'socket='=>'string'], 'maxdb::affected_rows' => ['int', 'link'=>''], 'maxdb::auto_commit' => ['bool', 'link'=>'', 'mode'=>'bool'], 'maxdb::change_user' => ['bool', 'link'=>'', 'user'=>'string', 'password'=>'string', 'database'=>'string'], 'maxdb::character_set_name' => ['string', 'link'=>''], 'maxdb::close' => ['bool', 'link'=>''], 'maxdb::commit' => ['bool', 'link'=>''], 'maxdb::disable_reads_from_master' => ['', 'link'=>''], 'maxdb::errno' => ['int', 'link'=>''], 'maxdb::error' => ['string', 'link'=>''], 'maxdb::field_count' => ['int', 'link'=>''], 'maxdb::get_host_info' => ['string', 'link'=>''], 'maxdb::info' => ['string', 'link'=>''], 'maxdb::insert_id' => ['', 'link'=>''], 'maxdb::kill' => ['bool', 'link'=>'', 'processid'=>'int'], 'maxdb::more_results' => ['bool', 'link'=>''], 'maxdb::multi_query' => ['bool', 'link'=>'', 'query'=>'string'], 'maxdb::next_result' => ['bool', 'link'=>''], 'maxdb::num_rows' => ['int', 'result'=>''], 'maxdb::options' => ['bool', 'link'=>'', 'option'=>'int', 'value'=>''], 'maxdb::ping' => ['bool', 'link'=>''], 'maxdb::prepare' => ['maxdb_stmt', 'link'=>'', 'query'=>'string'], 'maxdb::protocol_version' => ['string', 'link'=>''], 'maxdb::query' => ['', 'link'=>'', 'query'=>'string', 'resultmode='=>'int'], 'maxdb::real_connect' => ['bool', 'link'=>'', 'hostname='=>'string', 'username='=>'string', 'passwd='=>'string', 'dbname='=>'string', 'port='=>'int', 'socket='=>'string'], 'maxdb::real_escape_string' => ['string', 'link'=>'', 'escapestr'=>'string'], 'maxdb::real_query' => ['bool', 'link'=>'', 'query'=>'string'], 'maxdb::rollback' => ['bool', 'link'=>''], 'maxdb::rpl_query_type' => ['int', 'link'=>''], 'maxdb::select_db' => ['bool', 'link'=>'', 'dbname'=>'string'], 'maxdb::send_query' => ['bool', 'link'=>'', 'query'=>'string'], 'maxdb::server_info' => ['string', 'link'=>''], 'maxdb::server_version' => ['int', 'link'=>''], 'maxdb::sqlstate' => ['string', 'link'=>''], 'maxdb::ssl_set' => ['bool', 'link'=>'', 'key'=>'string', 'cert'=>'string', 'ca'=>'string', 'capath'=>'string', 'cipher'=>'string'], 'maxdb::stat' => ['string', 'link'=>''], 'maxdb::stmt_init' => ['object', 'link'=>''], 'maxdb::store_result' => ['bool', 'link'=>''], 'maxdb::thread_id' => ['int', 'link'=>''], 'maxdb::use_result' => ['resource', 'link'=>''], 'maxdb::warning_count' => ['int', 'link'=>''], 'maxdb_affected_rows' => ['int', 'link'=>'resource'], 'maxdb_autocommit' => ['bool', 'link'=>'', 'mode'=>'bool'], 'maxdb_change_user' => ['bool', 'link'=>'', 'user'=>'string', 'password'=>'string', 'database'=>'string'], 'maxdb_character_set_name' => ['string', 'link'=>''], 'maxdb_close' => ['bool', 'link'=>''], 'maxdb_commit' => ['bool', 'link'=>''], 'maxdb_connect' => ['resource', 'host='=>'string', 'username='=>'string', 'passwd='=>'string', 'dbname='=>'string', 'port='=>'int', 'socket='=>'string'], 'maxdb_connect_errno' => ['int'], 'maxdb_connect_error' => ['string'], 'maxdb_data_seek' => ['bool', 'result'=>'', 'offset'=>'int'], 'maxdb_debug' => ['void', 'debug'=>'string'], 'maxdb_disable_reads_from_master' => ['', 'link'=>''], 'maxdb_disable_rpl_parse' => ['bool', 'link'=>'resource'], 'maxdb_dump_debug_info' => ['bool', 'link'=>'resource'], 'maxdb_embedded_connect' => ['resource', 'dbname='=>'string'], 'maxdb_enable_reads_from_master' => ['bool', 'link'=>'resource'], 'maxdb_enable_rpl_parse' => ['bool', 'link'=>'resource'], 'maxdb_errno' => ['int', 'link'=>'resource'], 'maxdb_error' => ['string', 'link'=>'resource'], 'maxdb_fetch_array' => ['', 'result'=>'', 'resulttype='=>'int'], 'maxdb_fetch_assoc' => ['array', 'result'=>''], 'maxdb_fetch_field' => ['', 'result'=>''], 'maxdb_fetch_field_direct' => ['', 'result'=>'', 'fieldnr'=>'int'], 'maxdb_fetch_fields' => ['', 'result'=>''], 'maxdb_fetch_lengths' => ['array', 'result'=>'resource'], 'maxdb_fetch_object' => ['object', 'result'=>'object'], 'maxdb_fetch_row' => ['', 'result'=>''], 'maxdb_field_count' => ['int', 'link'=>''], 'maxdb_field_seek' => ['bool', 'result'=>'', 'fieldnr'=>'int'], 'maxdb_field_tell' => ['int', 'result'=>'resource'], 'maxdb_free_result' => ['', 'result'=>''], 'maxdb_get_client_info' => ['string'], 'maxdb_get_client_version' => ['int'], 'maxdb_get_host_info' => ['string', 'link'=>'resource'], 'maxdb_get_proto_info' => ['string', 'link'=>'resource'], 'maxdb_get_server_info' => ['string', 'link'=>'resource'], 'maxdb_get_server_version' => ['int', 'link'=>'resource'], 'maxdb_info' => ['string', 'link'=>'resource'], 'maxdb_init' => ['resource'], 'maxdb_insert_id' => ['mixed', 'link'=>'resource'], 'maxdb_kill' => ['bool', 'link'=>'', 'processid'=>'int'], 'maxdb_master_query' => ['bool', 'link'=>'resource', 'query'=>'string'], 'maxdb_more_results' => ['bool', 'link'=>'resource'], 'maxdb_multi_query' => ['bool', 'link'=>'', 'query'=>'string'], 'maxdb_next_result' => ['bool', 'link'=>'resource'], 'maxdb_num_fields' => ['int', 'result'=>'resource'], 'maxdb_num_rows' => ['int', 'result'=>'resource'], 'maxdb_options' => ['bool', 'link'=>'', 'option'=>'int', 'value'=>''], 'maxdb_ping' => ['bool', 'link'=>''], 'maxdb_prepare' => ['maxdb_stmt', 'link'=>'', 'query'=>'string'], 'maxdb_query' => ['', 'link'=>'', 'query'=>'string', 'resultmode='=>'int'], 'maxdb_real_connect' => ['bool', 'link'=>'', 'hostname='=>'string', 'username='=>'string', 'passwd='=>'string', 'dbname='=>'string', 'port='=>'int', 'socket='=>'string'], 'maxdb_real_escape_string' => ['string', 'link'=>'', 'escapestr'=>'string'], 'maxdb_real_query' => ['bool', 'link'=>'', 'query'=>'string'], 'maxdb_report' => ['bool', 'flags'=>'int'], 'maxdb_result::current_field' => ['int', 'result'=>''], 'maxdb_result::data_seek' => ['bool', 'result'=>'', 'offset'=>'int'], 'maxdb_result::fetch_array' => ['', 'result'=>'', 'resulttype='=>'int'], 'maxdb_result::fetch_assoc' => ['array', 'result'=>''], 'maxdb_result::fetch_field' => ['', 'result'=>''], 'maxdb_result::fetch_field_direct' => ['', 'result'=>'', 'fieldnr'=>'int'], 'maxdb_result::fetch_fields' => ['', 'result'=>''], 'maxdb_result::fetch_object' => ['object', 'result'=>'object'], 'maxdb_result::fetch_row' => ['', 'result'=>''], 'maxdb_result::field_count' => ['int', 'result'=>''], 'maxdb_result::field_seek' => ['bool', 'result'=>'', 'fieldnr'=>'int'], 'maxdb_result::free' => ['', 'result'=>''], 'maxdb_result::lengths' => ['array', 'result'=>''], 'maxdb_rollback' => ['bool', 'link'=>''], 'maxdb_rpl_parse_enabled' => ['int', 'link'=>'resource'], 'maxdb_rpl_probe' => ['bool', 'link'=>'resource'], 'maxdb_rpl_query_type' => ['int', 'link'=>''], 'maxdb_select_db' => ['bool', 'link'=>'resource', 'dbname'=>'string'], 'maxdb_send_query' => ['bool', 'link'=>'', 'query'=>'string'], 'maxdb_server_end' => ['void'], 'maxdb_server_init' => ['bool', 'server='=>'array', 'groups='=>'array'], 'maxdb_sqlstate' => ['string', 'link'=>'resource'], 'maxdb_ssl_set' => ['bool', 'link'=>'', 'key'=>'string', 'cert'=>'string', 'ca'=>'string', 'capath'=>'string', 'cipher'=>'string'], 'maxdb_stat' => ['string', 'link'=>''], 'maxdb_stmt::affected_rows' => ['int', 'stmt'=>''], 'maxdb_stmt::bind_param' => ['bool', 'stmt'=>'', 'types'=>'string', '&...rw_var'=>''], 'maxdb_stmt::bind_param\'1' => ['bool', 'stmt'=>'', 'types'=>'string', '&rw_var'=>'array'], 'maxdb_stmt::bind_result' => ['bool', 'stmt'=>'', '&w_var1'=>'', '&...w_vars='=>''], 'maxdb_stmt::close' => ['bool', 'stmt'=>''], 'maxdb_stmt::close_long_data' => ['bool', 'stmt'=>'', 'param_nr'=>'int'], 'maxdb_stmt::data_seek' => ['bool', 'statement'=>'', 'offset'=>'int'], 'maxdb_stmt::errno' => ['int', 'stmt'=>''], 'maxdb_stmt::error' => ['string', 'stmt'=>''], 'maxdb_stmt::execute' => ['bool', 'stmt'=>''], 'maxdb_stmt::fetch' => ['bool', 'stmt'=>''], 'maxdb_stmt::free_result' => ['', 'stmt'=>''], 'maxdb_stmt::num_rows' => ['int', 'stmt'=>''], 'maxdb_stmt::param_count' => ['int', 'stmt'=>''], 'maxdb_stmt::prepare' => ['', 'stmt'=>'', 'query'=>'string'], 'maxdb_stmt::reset' => ['bool', 'stmt'=>''], 'maxdb_stmt::result_metadata' => ['resource', 'stmt'=>''], 'maxdb_stmt::send_long_data' => ['bool', 'stmt'=>'', 'param_nr'=>'int', 'data'=>'string'], 'maxdb_stmt::stmt_send_long_data' => ['bool', 'param_nr'=>'int', 'data'=>'string'], 'maxdb_stmt::store_result' => ['bool'], 'maxdb_stmt_affected_rows' => ['int', 'stmt'=>'resource'], 'maxdb_stmt_bind_param' => ['bool', 'stmt'=>'', 'types'=>'string', 'var1'=>'', '...args='=>'', 'var='=>'array'], 'maxdb_stmt_bind_result' => ['bool', 'stmt'=>'', '&w_var1'=>'', '&...w_vars='=>''], 'maxdb_stmt_close' => ['bool', 'stmt'=>''], 'maxdb_stmt_close_long_data' => ['bool', 'stmt'=>'', 'param_nr'=>'int'], 'maxdb_stmt_data_seek' => ['bool', 'statement'=>'', 'offset'=>'int'], 'maxdb_stmt_errno' => ['int', 'stmt'=>'resource'], 'maxdb_stmt_error' => ['string', 'stmt'=>'resource'], 'maxdb_stmt_execute' => ['bool', 'stmt'=>''], 'maxdb_stmt_fetch' => ['bool', 'stmt'=>''], 'maxdb_stmt_free_result' => ['', 'stmt'=>''], 'maxdb_stmt_init' => ['object', 'link'=>''], 'maxdb_stmt_num_rows' => ['int', 'stmt'=>'resource'], 'maxdb_stmt_param_count' => ['int', 'stmt'=>'resource'], 'maxdb_stmt_prepare' => ['', 'stmt'=>'', 'query'=>'string'], 'maxdb_stmt_reset' => ['bool', 'stmt'=>''], 'maxdb_stmt_result_metadata' => ['resource', 'stmt'=>''], 'maxdb_stmt_send_long_data' => ['bool', 'stmt'=>'', 'param_nr'=>'int', 'data'=>'string'], 'maxdb_stmt_sqlstate' => ['string', 'stmt'=>'resource'], 'maxdb_stmt_store_result' => ['bool', 'stmt'=>''], 'maxdb_store_result' => ['bool', 'link'=>''], 'maxdb_thread_id' => ['int', 'link'=>'resource'], 'maxdb_thread_safe' => ['bool'], 'maxdb_use_result' => ['resource', 'link'=>''], 'maxdb_warning_count' => ['int', 'link'=>'resource'], 'mb_check_encoding' => ['bool', 'var='=>'string|array', 'encoding='=>'string'], 'mb_chr' => ['string|false', 'cp'=>'int', 'encoding='=>'string'], 'mb_convert_case' => ['string', 'sourcestring'=>'string', 'mode'=>'int', 'encoding='=>'string'], 'mb_convert_encoding' => ['string|array|false', 'val'=>'string|array', 'to_encoding'=>'string', 'from_encoding='=>'mixed'], 'mb_convert_kana' => ['string', 'str'=>'string', 'option='=>'string', 'encoding='=>'string'], 'mb_convert_variables' => ['string|false', 'to_encoding'=>'string', 'from_encoding'=>'array|string', '&rw_vars'=>'string|array|object', '&...rw_vars='=>'string|array|object'], 'mb_decode_mimeheader' => ['string', 'string'=>'string'], 'mb_decode_numericentity' => ['string', 'string'=>'string', 'convmap'=>'array', 'encoding'=>'string'], 'mb_detect_encoding' => ['string|false', 'str'=>'string', 'encoding_list='=>'mixed', 'strict='=>'bool'], 'mb_detect_order' => ['bool|list', 'encoding_list='=>'mixed'], 'mb_encode_mimeheader' => ['string', 'str'=>'string', 'charset='=>'string', 'transfer_encoding='=>'string', 'linefeed='=>'string', 'indent='=>'int'], 'mb_encode_numericentity' => ['string', 'string'=>'string', 'convmap'=>'array', 'encoding='=>'string', 'is_hex='=>'bool'], 'mb_encoding_aliases' => ['list|false', 'encoding'=>'string'], 'mb_ereg' => ['int|false', 'pattern'=>'string', 'string'=>'string', '&w_registers='=>'array'], 'mb_ereg_match' => ['bool', 'pattern'=>'string', 'string'=>'string', 'option='=>'string'], 'mb_ereg_replace' => ['string|false|null', 'pattern'=>'string', 'replacement'=>'string', 'string'=>'string', 'option='=>'string'], 'mb_ereg_replace_callback' => ['string|false|null', 'pattern'=>'string', 'callback'=>'callable(array):string', 'string'=>'string', 'option='=>'string'], 'mb_ereg_search' => ['bool', 'pattern='=>'string', 'option='=>'string'], 'mb_ereg_search_getpos' => ['int'], 'mb_ereg_search_getregs' => ['array|false'], 'mb_ereg_search_init' => ['bool', 'string'=>'string', 'pattern='=>'string', 'option='=>'string'], 'mb_ereg_search_pos' => ['array|false', 'pattern='=>'string', 'option='=>'string'], 'mb_ereg_search_regs' => ['array|false', 'pattern='=>'string', 'option='=>'string'], 'mb_ereg_search_setpos' => ['bool', 'position'=>'int'], 'mb_eregi' => ['int', 'pattern'=>'string', 'string'=>'string', '&w_registers='=>'array'], 'mb_eregi_replace' => ['string|false', 'pattern'=>'string', 'replacement'=>'string', 'string'=>'string', 'option='=>'string'], 'mb_get_info' => ['mixed', 'type='=>'string'], 'mb_http_input' => ['mixed', 'type='=>'string'], 'mb_http_output' => ['string|bool', 'encoding='=>'string'], 'mb_internal_encoding' => ['string|bool', 'encoding='=>'string'], 'mb_language' => ['string|bool', 'language='=>'string'], 'mb_list_encodings' => ['non-empty-list'], 'mb_ord' => ['int|false', 'str'=>'string', 'enc='=>'string'], 'mb_output_handler' => ['string', 'contents'=>'string', 'status'=>'int'], 'mb_parse_str' => ['bool', 'encoded_string'=>'string', '&w_result='=>'array'], 'mb_preferred_mime_name' => ['string|false', 'encoding'=>'string'], 'mb_regex_encoding' => ['string|bool', 'encoding='=>'string'], 'mb_regex_set_options' => ['string', 'options='=>'string'], 'mb_scrub' => ['string', 'str'=>'string', 'enc='=>'string'], 'mb_send_mail' => ['bool', 'to'=>'string', 'subject'=>'string', 'message'=>'string', 'additional_headers='=>'string|array|null', 'additional_parameter='=>'string'], 'mb_split' => ['list|false', 'pattern'=>'string', 'string'=>'string', 'limit='=>'int'], 'mb_strcut' => ['string', 'str'=>'string', 'start'=>'int', 'length='=>'?int', 'encoding='=>'string'], 'mb_strimwidth' => ['string', 'str'=>'string', 'start'=>'int', 'width'=>'int', 'trimmarker='=>'string', 'encoding='=>'string'], 'mb_stripos' => ['0|positive-int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int', 'encoding='=>'string'], 'mb_stristr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'part='=>'bool', 'encoding='=>'string'], 'mb_strlen' => ['0|positive-int|false', 'str'=>'string', 'encoding='=>'string'], 'mb_strpos' => ['0|positive-int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int', 'encoding='=>'string'], 'mb_strrchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'part='=>'bool', 'encoding='=>'string'], 'mb_strrichr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'part='=>'bool', 'encoding='=>'string'], 'mb_strripos' => ['0|positive-int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int', 'encoding='=>'string'], 'mb_strrpos' => ['0|positive-int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int', 'encoding='=>'string'], 'mb_strstr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'part='=>'bool', 'encoding='=>'string'], 'mb_strtolower' => ['lowercase-string', 'str'=>'string', 'encoding='=>'string'], 'mb_strtoupper' => ['uppercase-string', 'str'=>'string', 'encoding='=>'string'], 'mb_strwidth' => ['0|positive-int', 'str'=>'string', 'encoding='=>'string'], 'mb_substitute_character' => ['mixed', 'substchar='=>'mixed'], 'mb_substr' => ['string', 'str'=>'string', 'start'=>'int', 'length='=>'?int', 'encoding='=>'string'], 'mb_substr_count' => ['0|positive-int', 'haystack'=>'string', 'needle'=>'string', 'encoding='=>'string'], 'mcrypt_cbc' => ['string', 'cipher'=>'string', 'key'=>'string', 'data'=>'string', 'mode'=>'int', 'iv='=>'string'], 'mcrypt_cfb' => ['string', 'cipher'=>'string', 'key'=>'string', 'data'=>'string', 'mode'=>'int', 'iv='=>'string'], 'mcrypt_create_iv' => ['string', 'size'=>'int', 'source='=>'int'], 'mcrypt_decrypt' => ['string', 'cipher'=>'string', 'key'=>'string', 'data'=>'string', 'mode'=>'string', 'iv='=>'string'], 'mcrypt_ecb' => ['string', 'cipher'=>'string', 'key'=>'string', 'data'=>'string', 'mode'=>'int', 'iv='=>'string'], 'mcrypt_enc_get_algorithms_name' => ['string', 'td'=>'resource'], 'mcrypt_enc_get_block_size' => ['int', 'td'=>'resource'], 'mcrypt_enc_get_iv_size' => ['int', 'td'=>'resource'], 'mcrypt_enc_get_key_size' => ['int', 'td'=>'resource'], 'mcrypt_enc_get_modes_name' => ['string', 'td'=>'resource'], 'mcrypt_enc_get_supported_key_sizes' => ['array', 'td'=>'resource'], 'mcrypt_enc_is_block_algorithm' => ['bool', 'td'=>'resource'], 'mcrypt_enc_is_block_algorithm_mode' => ['bool', 'td'=>'resource'], 'mcrypt_enc_is_block_mode' => ['bool', 'td'=>'resource'], 'mcrypt_enc_self_test' => ['int', 'td'=>'resource'], 'mcrypt_encrypt' => ['string', 'cipher'=>'string', 'key'=>'string', 'data'=>'string', 'mode'=>'string', 'iv='=>'string'], 'mcrypt_generic' => ['string', 'td'=>'resource', 'data'=>'string'], 'mcrypt_generic_deinit' => ['bool', 'td'=>'resource'], 'mcrypt_generic_end' => ['bool', 'td'=>'resource'], 'mcrypt_generic_init' => ['int', 'td'=>'resource', 'key'=>'string', 'iv'=>'string'], 'mcrypt_get_block_size' => ['int', 'cipher'=>'string', 'module'=>'string'], 'mcrypt_get_cipher_name' => ['string', 'cipher'=>'int|string'], 'mcrypt_get_iv_size' => ['int', 'cipher'=>'string', 'module'=>'string'], 'mcrypt_get_key_size' => ['int', 'cipher'=>'string', 'module'=>'string'], 'mcrypt_list_algorithms' => ['array', 'lib_dir='=>'string'], 'mcrypt_list_modes' => ['array', 'lib_dir='=>'string'], 'mcrypt_module_close' => ['bool', 'td'=>'resource'], 'mcrypt_module_get_algo_block_size' => ['int', 'algorithm'=>'string', 'lib_dir='=>'string'], 'mcrypt_module_get_algo_key_size' => ['int', 'algorithm'=>'string', 'lib_dir='=>'string'], 'mcrypt_module_get_supported_key_sizes' => ['array', 'algorithm'=>'string', 'lib_dir='=>'string'], 'mcrypt_module_is_block_algorithm' => ['bool', 'algorithm'=>'string', 'lib_dir='=>'string'], 'mcrypt_module_is_block_algorithm_mode' => ['bool', 'mode'=>'string', 'lib_dir='=>'string'], 'mcrypt_module_is_block_mode' => ['bool', 'mode'=>'string', 'lib_dir='=>'string'], 'mcrypt_module_open' => ['resource|false', 'cipher'=>'string', 'cipher_directory'=>'string', 'mode'=>'string', 'mode_directory'=>'string'], 'mcrypt_module_self_test' => ['bool', 'algorithm'=>'string', 'lib_dir='=>'string'], 'mcrypt_ofb' => ['string', 'cipher'=>'string', 'key'=>'string', 'data'=>'string', 'mode'=>'int', 'iv='=>'string'], 'md5' => ['non-falsy-string&lowercase-string', 'str'=>'string', 'raw_output='=>'bool'], 'md5_file' => ['(non-falsy-string&lowercase-string)|false', 'filename'=>'string', 'raw_output='=>'bool'], 'mdecrypt_generic' => ['string', 'td'=>'resource', 'data'=>'string'], 'Memcache::add' => ['bool', 'key'=>'string', 'var'=>'mixed', 'flag='=>'int', 'expire='=>'int'], 'Memcache::addServer' => ['bool', 'host'=>'string', 'port='=>'int', 'persistent='=>'bool', 'weight='=>'int', 'timeout='=>'int', 'retry_interval='=>'int', 'status='=>'bool', 'failure_callback='=>'callable', 'timeoutms='=>'int'], 'Memcache::close' => ['bool'], 'Memcache::connect' => ['bool', 'host'=>'string', 'port='=>'int', 'timeout='=>'int'], 'Memcache::decrement' => ['int', 'key'=>'string', 'value='=>'int'], 'Memcache::delete' => ['bool', 'key'=>'string', 'timeout='=>'int'], 'Memcache::flush' => ['bool'], 'Memcache::get' => ['mixed', 'key'=>'string', '&flags='=>'int'], 'Memcache::get\'1' => ['mixed[]|false', 'keys'=>'string[]', '&flags='=>'int[]'], 'Memcache::getExtendedStats' => ['array', 'type='=>'string', 'slabid='=>'int', 'limit='=>'int'], 'Memcache::getServerStatus' => ['int', 'host'=>'string', 'port='=>'int'], 'Memcache::getStats' => ['array', 'type='=>'string', 'slabid='=>'int', 'limit='=>'int'], 'Memcache::getVersion' => ['string'], 'Memcache::increment' => ['int', 'key'=>'string', 'value='=>'int'], 'Memcache::pconnect' => ['bool', 'host'=>'string', 'port='=>'int', 'timeout='=>'int'], 'Memcache::replace' => ['bool', 'key'=>'string', 'var'=>'mixed', 'flag='=>'int', 'expire='=>'int'], 'Memcache::set' => ['bool', 'key'=>'string', 'var'=>'mixed', 'flag='=>'int', 'expire='=>'int'], 'Memcache::setCompressThreshold' => ['bool', 'threshold'=>'int', 'min_savings='=>'float'], 'Memcache::setServerParams' => ['bool', 'host'=>'string', 'port='=>'int', 'timeout='=>'int', 'retry_interval='=>'int', 'status='=>'bool', 'failure_callback='=>'callable'], 'memcache_debug' => ['bool', 'on_off'=>'bool'], 'Memcached::add' => ['bool', 'key'=>'string', 'value'=>'mixed', 'expiration='=>'int'], 'Memcached::addByKey' => ['bool', 'server_key'=>'string', 'key'=>'string', 'value'=>'mixed', 'expiration='=>'int'], 'Memcached::addServer' => ['bool', 'host'=>'string', 'port'=>'int', 'weight='=>'int'], 'Memcached::addServers' => ['bool', 'servers'=>'array'], 'Memcached::append' => ['bool', 'key'=>'string', 'value'=>'string'], 'Memcached::appendByKey' => ['bool', 'server_key'=>'string', 'key'=>'string', 'value'=>'string'], 'Memcached::cas' => ['bool', 'cas_token'=>'float', 'key'=>'string', 'value'=>'mixed', 'expiration='=>'int'], 'Memcached::casByKey' => ['bool', 'cas_token'=>'float', 'server_key'=>'string', 'key'=>'string', 'value'=>'mixed', 'expiration='=>'int'], 'Memcached::decrement' => ['int|false', 'key'=>'string', 'offset='=>'int', 'initial_value='=>'int', 'expiry='=>'int'], 'Memcached::decrementByKey' => ['int|false', 'server_key'=>'string', 'key'=>'string', 'offset='=>'int', 'initial_value='=>'int', 'expiry='=>'int'], 'Memcached::delete' => ['bool', 'key'=>'string', 'time='=>'int'], 'Memcached::deleteByKey' => ['bool', 'server_key'=>'string', 'key'=>'string', 'time='=>'int'], 'Memcached::deleteMulti' => ['array', 'keys'=>'array', 'time='=>'int'], 'Memcached::deleteMultiByKey' => ['bool', 'server_key'=>'string', 'keys'=>'array', 'time='=>'int'], 'Memcached::fetch' => ['array'], 'Memcached::fetchAll' => ['array'], 'Memcached::flush' => ['bool', 'delay='=>'int'], 'Memcached::get' => ['mixed', 'key'=>'string', 'cache_cb='=>'?callable', 'flags='=>'int'], 'Memcached::getAllKeys' => ['array|false'], 'Memcached::getByKey' => ['mixed', 'server_key'=>'string', 'key'=>'string', 'value_cb='=>'?callable', 'flags='=>'int'], 'Memcached::getDelayed' => ['bool', 'keys'=>'array', 'with_cas='=>'bool', 'value_cb='=>'callable'], 'Memcached::getDelayedByKey' => ['bool', 'server_key'=>'string', 'keys'=>'array', 'with_cas='=>'bool', 'value_cb='=>'?callable'], 'Memcached::getMulti' => ['array|false', 'keys'=>'array', 'flags='=>'int'], 'Memcached::getMultiByKey' => ['array', 'server_key'=>'string', 'keys'=>'array', 'flags='=>'int'], 'Memcached::getOption' => ['mixed', 'option'=>'int'], 'Memcached::getResultCode' => ['int'], 'Memcached::getResultMessage' => ['string'], 'Memcached::getServerByKey' => ['array', 'server_key'=>'string'], 'Memcached::getServerList' => ['array'], 'Memcached::getStats' => ['array', 'type='=>'?string'], 'Memcached::getVersion' => ['array'], 'Memcached::increment' => ['int|false', 'key'=>'string', 'offset='=>'int', 'initial_value='=>'int', 'expiry='=>'int'], 'Memcached::incrementByKey' => ['int|false', 'server_key'=>'string', 'key'=>'string', 'offset='=>'int', 'initial_value='=>'int', 'expiry='=>'int'], 'Memcached::isPersistent' => ['bool'], 'Memcached::isPristine' => ['bool'], 'Memcached::prepend' => ['bool', 'key'=>'string', 'value'=>'string'], 'Memcached::prependByKey' => ['bool', 'server_key'=>'string', 'key'=>'string', 'value'=>'string'], 'Memcached::quit' => ['bool'], 'Memcached::replace' => ['bool', 'key'=>'string', 'value'=>'mixed', 'expiration='=>'int'], 'Memcached::replaceByKey' => ['bool', 'server_key'=>'string', 'key'=>'string', 'value'=>'mixed', 'expiration='=>'int'], 'Memcached::resetServerList' => ['bool'], 'Memcached::set' => ['bool', 'key'=>'string', 'value'=>'mixed', 'expiration='=>'int'], 'Memcached::setByKey' => ['bool', 'server_key'=>'string', 'key'=>'string', 'value'=>'mixed', 'expiration='=>'int'], 'Memcached::setMulti' => ['bool', 'items'=>'array', 'expiration='=>'int'], 'Memcached::setMultiByKey' => ['bool', 'server_key'=>'string', 'items'=>'array', 'expiration='=>'int'], 'Memcached::setOption' => ['bool', 'option'=>'int', 'value'=>'mixed'], 'Memcached::setOptions' => ['bool', 'options'=>'array'], 'Memcached::setSaslAuthData' => ['void', 'username'=>'string', 'password'=>'string'], 'Memcached::touch' => ['bool', 'key'=>'string', 'expiration'=>'int'], 'Memcached::touchByKey' => ['bool', 'server_key'=>'string', 'key'=>'string', 'expiration'=>'int'], 'MemcachePool::add' => ['bool', 'key'=>'string', 'var'=>'mixed', 'flag='=>'int', 'expire='=>'int'], 'MemcachePool::close' => ['bool'], 'MemcachePool::decrement' => ['int', 'key'=>'string', 'value='=>'int'], 'MemcachePool::delete' => ['bool', 'key'=>'string', 'timeout='=>'int'], 'MemcachePool::flush' => ['bool'], 'MemcachePool::get' => ['mixed', 'key'=>'string', '&flags='=>'int'], 'MemcachePool::get\'1' => ['mixed[]|false', 'keys'=>'string[]', '&flags='=>'int[]'], 'MemcachePool::getExtendedStats' => ['array', 'type='=>'string', 'slabid='=>'int', 'limit='=>'int'], 'MemcachePool::getServerStatus' => ['int', 'host'=>'string', 'port='=>'int'], 'MemcachePool::getStats' => ['array', 'type='=>'string', 'slabid='=>'int', 'limit='=>'int'], 'MemcachePool::getVersion' => ['string'], 'MemcachePool::increment' => ['int', 'key'=>'string', 'value='=>'int'], 'MemcachePool::replace' => ['bool', 'key'=>'string', 'var'=>'mixed', 'flag='=>'int', 'expire='=>'int'], 'MemcachePool::set' => ['bool', 'key'=>'string', 'var'=>'mixed', 'flag='=>'int', 'expire='=>'int'], 'MemcachePool::setCompressThreshold' => ['bool', 'threshold'=>'int', 'min_savings='=>'float'], 'MemcachePool::setServerParams' => ['bool', 'host'=>'string', 'port='=>'int', 'timeout='=>'int', 'retry_interval='=>'int', 'status='=>'bool', 'failure_callback='=>'callable'], 'memory_get_peak_usage' => ['positive-int', 'real_usage='=>'bool'], 'memory_get_usage' => ['positive-int', 'real_usage='=>'bool'], 'MessageFormatter::__construct' => ['void', 'locale'=>'string', 'pattern'=>'string'], 'MessageFormatter::create' => ['MessageFormatter', 'locale'=>'string', 'pattern'=>'string'], 'MessageFormatter::format' => ['false|string', 'args'=>'array'], 'MessageFormatter::formatMessage' => ['false|string', 'locale'=>'string', 'pattern'=>'string', 'args'=>'array'], 'MessageFormatter::getErrorCode' => ['int'], 'MessageFormatter::getErrorMessage' => ['string'], 'MessageFormatter::getLocale' => ['string'], 'MessageFormatter::getPattern' => ['string'], 'MessageFormatter::parse' => ['array', 'value'=>'string'], 'MessageFormatter::parseMessage' => ['array', 'locale'=>'string', 'pattern'=>'string', 'source'=>'string'], 'MessageFormatter::setPattern' => ['bool', 'pattern'=>'string'], 'metaphone' => ['string', 'text'=>'string', 'phones='=>'int'], 'method_exists' => ['bool', 'object'=>'object|string', 'method'=>'string'], 'mhash' => ['string|false', 'hash'=>'int', 'data'=>'string', 'key='=>'string'], 'mhash_count' => ['int'], 'mhash_get_block_size' => ['int|false', 'hash'=>'int'], 'mhash_get_hash_name' => ['string|false', 'hash'=>'int'], 'mhash_keygen_s2k' => ['string|false', 'hash'=>'int', 'input_password'=>'string', 'salt'=>'string', 'bytes'=>'int'], 'microtime' => ['mixed', 'get_as_float='=>'bool'], 'mime_content_type' => ['string|false', 'filename_or_stream'=>'string|resource'], 'min' => ['', '...arg1'=>'array'], 'min\'1' => ['', 'arg1'=>'', 'arg2'=>'', '...args='=>''], 'ming_keypress' => ['int', 'char'=>'string'], 'ming_setcubicthreshold' => ['void', 'threshold'=>'int'], 'ming_setscale' => ['void', 'scale'=>'float'], 'ming_setswfcompression' => ['void', 'level'=>'int'], 'ming_useconstants' => ['void', 'use'=>'int'], 'ming_useswfversion' => ['void', 'version'=>'int'], 'mkdir' => ['bool', 'pathname'=>'string', 'mode='=>'int', 'recursive='=>'bool', 'context='=>'resource'], 'mktime' => ['__benevolent', 'hour='=>'int', 'min='=>'int', 'sec='=>'int', 'mon='=>'int', 'day='=>'int', 'year='=>'int'], 'money_format' => ['string', 'format'=>'string', 'value'=>'float'], 'Mongo::__construct' => ['void', 'server='=>'string', 'options='=>'array', 'driver_options='=>'array'], 'Mongo::__get' => ['MongoDB', 'dbname'=>'string'], 'Mongo::__toString' => ['string'], 'Mongo::close' => ['bool'], 'Mongo::connect' => ['bool'], 'Mongo::connectUtil' => ['bool'], 'Mongo::dropDB' => ['array', 'db'=>''], 'Mongo::forceError' => ['bool'], 'Mongo::getConnections' => ['array'], 'Mongo::getHosts' => ['array'], 'Mongo::getPoolSize' => ['int'], 'Mongo::getReadPreference' => ['array'], 'Mongo::getSlave' => ['string'], 'Mongo::getSlaveOkay' => ['bool'], 'Mongo::getWriteConcern' => ['array'], 'Mongo::killCursor' => ['', 'server_hash'=>'string', 'id'=>'MongoInt64|int'], 'Mongo::lastError' => ['array|null'], 'Mongo::listDBs' => ['array'], 'Mongo::pairConnect' => ['bool'], 'Mongo::pairPersistConnect' => ['bool', 'username='=>'string', 'password='=>'string'], 'Mongo::persistConnect' => ['bool', 'username='=>'string', 'password='=>'string'], 'Mongo::poolDebug' => ['array'], 'Mongo::prevError' => ['array'], 'Mongo::resetError' => ['array'], 'Mongo::selectCollection' => ['MongoCollection', 'db'=>'string', 'collection'=>'string'], 'Mongo::selectDB' => ['MongoDB', 'name'=>'string'], 'Mongo::setPoolSize' => ['bool', 'size'=>'int'], 'Mongo::setReadPreference' => ['bool', 'readPreference'=>'string', 'tags='=>'array'], 'Mongo::setSlaveOkay' => ['bool', 'ok='=>'bool'], 'Mongo::switchSlave' => ['string'], 'MongoBinData::__construct' => ['void', 'data'=>'string', 'type='=>'int'], 'MongoBinData::__toString' => ['string'], 'MongoClient::__construct' => ['void', 'server='=>'string', 'options='=>'array', 'driver_options='=>'array'], 'MongoClient::__get' => ['MongoDB', 'dbname'=>'string'], 'MongoClient::__toString' => ['string'], 'MongoClient::close' => ['bool', 'connection='=>'bool|string'], 'MongoClient::connect' => ['bool'], 'MongoClient::dropDB' => ['array', 'db'=>'mixed'], 'MongoClient::getConnections' => ['array'], 'MongoClient::getHosts' => ['array'], 'MongoClient::getReadPreference' => ['array'], 'MongoClient::getWriteConcern' => ['array'], 'MongoClient::killCursor' => ['bool', 'server_hash'=>'string', 'id'=>'int|MongoInt64'], 'MongoClient::listDBs' => ['array'], 'MongoClient::selectCollection' => ['MongoCollection', 'db'=>'string', 'collection'=>'string'], 'MongoClient::selectDB' => ['MongoDB', 'name'=>'string'], 'MongoClient::setReadPreference' => ['bool', 'read_preference'=>'string', 'tags='=>'array'], 'MongoClient::setWriteConcern' => ['bool', 'w'=>'mixed', 'wtimeout='=>'int'], 'MongoClient::switchSlave' => ['string'], 'MongoCode::__construct' => ['void', 'code'=>'string', 'scope='=>'array'], 'MongoCode::__toString' => ['string'], 'MongoCollection::__construct' => ['void', 'db'=>'MongoDB', 'name'=>'string'], 'MongoCollection::__get' => ['MongoCollection', 'name'=>'string'], 'MongoCollection::__toString' => ['string'], 'MongoCollection::aggregate' => ['array', 'op'=>'array', 'op='=>'array', '...args='=>'array'], 'MongoCollection::aggregate\'1' => ['array', 'pipeline'=>'array', 'options='=>'array'], 'MongoCollection::aggregateCursor' => ['MongoCommandCursor', 'command'=>'array', 'options='=>'array'], 'MongoCollection::batchInsert' => ['mixed', 'a'=>'array', 'options='=>'array'], 'MongoCollection::count' => ['0|positive-int', 'query='=>'array', 'limit='=>'int', 'skip='=>'int'], 'MongoCollection::createDBRef' => ['array', 'a'=>'array'], 'MongoCollection::createIndex' => ['bool', 'keys'=>'array', 'options='=>'array'], 'MongoCollection::deleteIndex' => ['array', 'keys'=>'string|array'], 'MongoCollection::deleteIndexes' => ['array'], 'MongoCollection::distinct' => ['array', 'key'=>'string', 'query='=>'array'], 'MongoCollection::drop' => ['array'], 'MongoCollection::ensureIndex' => ['bool', 'keys'=>'array', 'options='=>'array'], 'MongoCollection::find' => ['MongoCursor', 'query='=>'array', 'fields='=>'array'], 'MongoCollection::findAndModify' => ['array', 'query'=>'array', 'update='=>'array', 'fields='=>'array', 'options='=>'array'], 'MongoCollection::findOne' => ['array|null', 'query='=>'array', 'fields='=>'array'], 'MongoCollection::getDBRef' => ['array', 'ref'=>'array'], 'MongoCollection::getIndexInfo' => ['array'], 'MongoCollection::getName' => ['string'], 'MongoCollection::getReadPreference' => ['array'], 'MongoCollection::getSlaveOkay' => ['bool'], 'MongoCollection::getWriteConcern' => ['array'], 'MongoCollection::group' => ['array', 'keys'=>'mixed', 'initial'=>'array', 'reduce'=>'mongocode', 'options='=>'array'], 'MongoCollection::insert' => ['bool|array', 'a'=>'array', 'options='=>'array'], 'MongoCollection::parallelCollectionScan' => ['MongoCommandCursor[]', 'num_cursors'=>'int'], 'MongoCollection::remove' => ['bool|array', 'criteria='=>'array', 'options='=>'array'], 'MongoCollection::save' => ['mixed', 'a'=>'array|object', 'options='=>'array'], 'MongoCollection::setReadPreference' => ['bool', 'read_preference'=>'string', 'tags='=>'array'], 'MongoCollection::setSlaveOkay' => ['bool', 'ok='=>'bool'], 'MongoCollection::setWriteConcern' => ['bool', 'w'=>'mixed', 'wtimeout='=>'int'], 'MongoCollection::toIndexString' => ['string', 'keys'=>'mixed'], 'MongoCollection::update' => ['bool', 'criteria'=>'array', 'newobj'=>'array', 'options='=>'array'], 'MongoCollection::validate' => ['array', 'scan_data='=>'bool'], 'MongoCommandCursor::__construct' => ['void', 'connection'=>'MongoClient', 'ns'=>'string', 'command'=>'array'], 'MongoCommandCursor::batchSize' => ['MongoCommandCursor', 'batchSize'=>'int'], 'MongoCommandCursor::createFromDocument' => ['MongoCommandCursor', 'connection'=>'MongoClient', 'hash'=>'string', 'document'=>'array'], 'MongoCommandCursor::current' => ['array'], 'MongoCommandCursor::dead' => ['bool'], 'MongoCommandCursor::getReadPreference' => ['array'], 'MongoCommandCursor::info' => ['array'], 'MongoCommandCursor::key' => ['int'], 'MongoCommandCursor::next' => ['void'], 'MongoCommandCursor::rewind' => ['array'], 'MongoCommandCursor::setReadPreference' => ['MongoCommandCursor', 'read_preference'=>'string', 'tags='=>'array'], 'MongoCommandCursor::timeout' => ['MongoCommandCursor', 'ms'=>'int'], 'MongoCommandCursor::valid' => ['bool'], 'MongoCursor::__construct' => ['void', 'connection'=>'MongoClient', 'ns'=>'string', 'query='=>'array', 'fields='=>'array'], 'MongoCursor::addOption' => ['MongoCursor', 'key'=>'string', 'value'=>'mixed'], 'MongoCursor::awaitData' => ['MongoCursor', 'wait='=>'bool'], 'MongoCursor::batchSize' => ['MongoCursor', 'num'=>'int'], 'MongoCursor::count' => ['0|positive-int', 'foundonly='=>'bool'], 'MongoCursor::current' => ['array'], 'MongoCursor::dead' => ['bool'], 'MongoCursor::doQuery' => ['void'], 'MongoCursor::explain' => ['array'], 'MongoCursor::fields' => ['MongoCursor', 'f'=>'array'], 'MongoCursor::getNext' => ['array'], 'MongoCursor::getReadPreference' => ['array'], 'MongoCursor::hasNext' => ['bool'], 'MongoCursor::hint' => ['MongoCursor', 'key_pattern'=>'array'], 'MongoCursor::immortal' => ['MongoCursor', 'liveforever='=>'bool'], 'MongoCursor::info' => ['array'], 'MongoCursor::key' => ['string'], 'MongoCursor::limit' => ['MongoCursor', 'num'=>'int'], 'MongoCursor::maxTimeMS' => ['MongoCursor', 'ms'=>'int'], 'MongoCursor::next' => ['array'], 'MongoCursor::partial' => ['MongoCursor', 'okay='=>'bool'], 'MongoCursor::reset' => ['void'], 'MongoCursor::rewind' => ['void'], 'MongoCursor::setFlag' => ['MongoCursor', 'flag'=>'int', 'set='=>'bool'], 'MongoCursor::setReadPreference' => ['MongoCursor', 'read_preference'=>'string', 'tags='=>'array'], 'MongoCursor::skip' => ['MongoCursor', 'num'=>'int'], 'MongoCursor::slaveOkay' => ['MongoCursor', 'okay='=>'bool'], 'MongoCursor::snapshot' => ['MongoCursor'], 'MongoCursor::sort' => ['MongoCursor', 'fields'=>'array'], 'MongoCursor::tailable' => ['MongoCursor', 'tail='=>'bool'], 'MongoCursor::timeout' => ['MongoCursor', 'ms'=>'int'], 'MongoCursor::valid' => ['bool'], 'MongoCursorException::__clone' => ['void'], 'MongoCursorException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Exception)|(?Throwable)'], 'MongoCursorException::__toString' => ['string'], 'MongoCursorException::__wakeup' => ['void'], 'MongoCursorException::getCode' => ['int'], 'MongoCursorException::getFile' => ['string'], 'MongoCursorException::getHost' => ['string'], 'MongoCursorException::getLine' => ['int'], 'MongoCursorException::getMessage' => ['string'], 'MongoCursorException::getPrevious' => ['Exception|Throwable'], 'MongoCursorException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'MongoCursorException::getTraceAsString' => ['string'], 'MongoCursorInterface::__construct' => ['void'], 'MongoCursorInterface::batchSize' => ['MongoCursorInterface', 'batchSize'=>'int'], 'MongoCursorInterface::current' => ['mixed'], 'MongoCursorInterface::dead' => ['bool'], 'MongoCursorInterface::getReadPreference' => ['array'], 'MongoCursorInterface::info' => ['array'], 'MongoCursorInterface::key' => ['int|string'], 'MongoCursorInterface::next' => ['void'], 'MongoCursorInterface::rewind' => ['void'], 'MongoCursorInterface::setReadPreference' => ['MongoCursorInterface', 'read_preference'=>'string', 'tags='=>'array'], 'MongoCursorInterface::timeout' => ['MongoCursorInterface', 'ms'=>'int'], 'MongoCursorInterface::valid' => ['bool'], 'MongoDate::__construct' => ['void', 'sec='=>'int', 'usec='=>'int'], 'MongoDate::__toString' => ['string'], 'MongoDate::toDateTime' => ['DateTime'], 'MongoDB::__construct' => ['void', 'conn'=>'MongoClient', 'name'=>'string'], 'MongoDB::__get' => ['MongoCollection', 'name'=>'string'], 'MongoDB::__toString' => ['string'], 'MongoDB::authenticate' => ['array', 'username'=>'string', 'password'=>'string'], 'MongoDB::command' => ['array', 'command'=>'array'], 'MongoDB::createCollection' => ['MongoCollection', 'name'=>'string', 'capped='=>'bool', 'size='=>'int', 'max='=>'int'], 'MongoDB::createDBRef' => ['array', 'collection'=>'string', 'a'=>''], 'MongoDB::drop' => ['array'], 'MongoDB::dropCollection' => ['array', 'coll'=>''], 'MongoDB::execute' => ['array', 'code'=>'', 'args='=>'array'], 'MongoDB::forceError' => ['bool'], 'MongoDB::getCollectionInfo' => ['array', 'options='=>'array'], 'MongoDB::getCollectionNames' => ['array', 'options='=>'array'], 'MongoDB::getDBRef' => ['array', 'ref'=>'array'], 'MongoDB::getGridFS' => ['MongoGridFS', 'prefix='=>'string'], 'MongoDB::getProfilingLevel' => ['int'], 'MongoDB::getReadPreference' => ['array'], 'MongoDB::getSlaveOkay' => ['bool'], 'MongoDB::getWriteConcern' => ['array'], 'MongoDB::lastError' => ['array'], 'MongoDB::listCollections' => ['array'], 'MongoDB::prevError' => ['array'], 'MongoDB::repair' => ['array', 'preserve_cloned_files='=>'bool', 'backup_original_files='=>'bool'], 'MongoDB::resetError' => ['array'], 'MongoDB::selectCollection' => ['MongoCollection', 'name'=>'string'], 'MongoDB::setProfilingLevel' => ['int', 'level'=>'int'], 'MongoDB::setReadPreference' => ['bool', 'read_preference'=>'string', 'tags='=>'array'], 'MongoDB::setSlaveOkay' => ['bool', 'ok='=>'bool'], 'MongoDB::setWriteConcern' => ['bool', 'w'=>'mixed', 'wtimeout='=>'int'], 'MongoDB\BSON\fromJSON' => ['string', 'json'=>'string'], 'MongoDB\BSON\fromPHP' => ['string', 'value'=>'object|array'], 'MongoDB\BSON\toCanonicalExtendedJSON' => ['string', 'bson'=>'string'], 'MongoDB\BSON\toJSON' => ['string', 'bson'=>'string'], 'MongoDB\BSON\toPHP' => ['object|array', 'bson'=>'string', 'typemap='=>'?array'], 'MongoDB\BSON\toRelaxedExtendedJSON' => ['string', 'bson'=>'string'], 'MongoDB\Driver\Monitoring\addSubscriber' => ['void', 'subscriber'=>'MongoDB\Driver\Monitoring\Subscriber'], 'MongoDB\Driver\Monitoring\removeSubscriber' => ['void', 'subscriber'=>'MongoDB\Driver\Monitoring\Subscriber'], 'MongoDB\BSON\Binary::__construct' => ['void', 'data'=>'string', 'type='=>'int'], 'MongoDB\BSON\Binary::getData' => ['string'], 'MongoDB\BSON\Binary::getType' => ['int'], 'MongoDB\BSON\Binary::__toString' => ['string'], 'MongoDB\BSON\Binary::serialize' => ['string'], 'MongoDB\BSON\Binary::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\Binary::jsonSerialize' => ['mixed'], 'MongoDB\BSON\BinaryInterface::getData' => ['string'], 'MongoDB\BSON\BinaryInterface::getType' => ['int'], 'MongoDB\BSON\BinaryInterface::__toString' => ['string'], 'MongoDB\BSON\DBPointer::__toString' => ['string'], 'MongoDB\BSON\DBPointer::serialize' => ['string'], 'MongoDB\BSON\DBPointer::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\DBPointer::jsonSerialize' => ['mixed'], 'MongoDB\BSON\Decimal128::__construct' => ['void', 'value'=>'string'], 'MongoDB\BSON\Decimal128::__toString' => ['string'], 'MongoDB\BSON\Decimal128::serialize' => ['string'], 'MongoDB\BSON\Decimal128::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\Decimal128::jsonSerialize' => ['mixed'], 'MongoDB\BSON\Decimal128Interface::__toString' => ['string'], 'MongoDB\BSON\Document::fromBSON' => ['MongoDB\BSON\Document', 'bson'=>'string'], 'MongoDB\BSON\Document::fromJSON' => ['MongoDB\BSON\Document', 'json'=>'string'], 'MongoDB\BSON\Document::fromPHP' => ['MongoDB\BSON\Document', 'value'=>'object|array'], 'MongoDB\BSON\Document::get' => ['mixed', 'key'=>'string'], 'MongoDB\BSON\Document::getIterator' => ['MongoDB\BSON\Iterator'], 'MongoDB\BSON\Document::has' => ['bool', 'key'=>'string'], 'MongoDB\BSON\Document::toPHP' => ['object|array', 'typeMap='=>'?array'], 'MongoDB\BSON\Document::toCanonicalExtendedJSON' => ['string'], 'MongoDB\BSON\Document::toRelaxedExtendedJSON' => ['string'], 'MongoDB\BSON\Document::offsetExists' => ['bool', 'offset'=>'mixed'], 'MongoDB\BSON\Document::offsetGet' => ['mixed', 'offset'=>'mixed'], 'MongoDB\BSON\Document::offsetSet' => ['void', 'offset'=>'mixed', 'value'=>'mixed'], 'MongoDB\BSON\Document::offsetUnset' => ['void', 'offset'=>'mixed'], 'MongoDB\BSON\Document::__toString' => ['string'], 'MongoDB\BSON\Document::serialize' => ['string'], 'MongoDB\BSON\Document::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\Int64::__construct' => ['void', 'value'=>'string|int'], 'MongoDB\BSON\Int64::__toString' => ['string'], 'MongoDB\BSON\Int64::serialize' => ['string'], 'MongoDB\BSON\Int64::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\Int64::jsonSerialize' => ['mixed'], 'MongoDB\BSON\Iterator::current' => ['mixed'], 'MongoDB\BSON\Iterator::key' => ['string|int'], 'MongoDB\BSON\Iterator::next' => ['void'], 'MongoDB\BSON\Iterator::rewind' => ['void'], 'MongoDB\BSON\Iterator::valid' => ['bool'], 'MongoDB\BSON\Javascript::__construct' => ['void', 'code'=>'string', 'scope='=>'object|array|null'], 'MongoDB\BSON\Javascript::getCode' => ['string'], 'MongoDB\BSON\Javascript::getScope' => ['?object'], 'MongoDB\BSON\Javascript::__toString' => ['string'], 'MongoDB\BSON\Javascript::serialize' => ['string'], 'MongoDB\BSON\Javascript::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\Javascript::jsonSerialize' => ['mixed'], 'MongoDB\BSON\JavascriptInterface::getCode' => ['string'], 'MongoDB\BSON\JavascriptInterface::getScope' => ['?object'], 'MongoDB\BSON\JavascriptInterface::__toString' => ['string'], 'MongoDB\BSON\MaxKey::serialize' => ['string'], 'MongoDB\BSON\MaxKey::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\MaxKey::jsonSerialize' => ['mixed'], 'MongoDB\BSON\MinKey::serialize' => ['string'], 'MongoDB\BSON\MinKey::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\MinKey::jsonSerialize' => ['mixed'], 'MongoDB\BSON\ObjectId::__construct' => ['void', 'id='=>'?string'], 'MongoDB\BSON\ObjectId::getTimestamp' => ['int'], 'MongoDB\BSON\ObjectId::__toString' => ['string'], 'MongoDB\BSON\ObjectId::serialize' => ['string'], 'MongoDB\BSON\ObjectId::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\ObjectId::jsonSerialize' => ['mixed'], 'MongoDB\BSON\ObjectIdInterface::getTimestamp' => ['int'], 'MongoDB\BSON\ObjectIdInterface::__toString' => ['string'], 'MongoDB\BSON\PackedArray::fromPHP' => ['MongoDB\BSON\PackedArray', 'value'=>'array'], 'MongoDB\BSON\PackedArray::get' => ['mixed', 'index'=>'int'], 'MongoDB\BSON\PackedArray::getIterator' => ['MongoDB\BSON\Iterator'], 'MongoDB\BSON\PackedArray::has' => ['bool', 'index'=>'int'], 'MongoDB\BSON\PackedArray::toPHP' => ['object|array', 'typeMap='=>'?array'], 'MongoDB\BSON\PackedArray::offsetExists' => ['bool', 'offset'=>'mixed'], 'MongoDB\BSON\PackedArray::offsetGet' => ['mixed', 'offset'=>'mixed'], 'MongoDB\BSON\PackedArray::offsetSet' => ['void', 'offset'=>'mixed', 'value'=>'mixed'], 'MongoDB\BSON\PackedArray::offsetUnset' => ['void', 'offset'=>'mixed'], 'MongoDB\BSON\PackedArray::__toString' => ['string'], 'MongoDB\BSON\PackedArray::serialize' => ['string'], 'MongoDB\BSON\PackedArray::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\Persistable::bsonSerialize' => ['stdClass|MongoDB\BSON\Document|array'], 'MongoDB\BSON\Regex::__construct' => ['void', 'pattern'=>'string', 'flags='=>'string'], 'MongoDB\BSON\Regex::getPattern' => ['string'], 'MongoDB\BSON\Regex::getFlags' => ['string'], 'MongoDB\BSON\Regex::__toString' => ['string'], 'MongoDB\BSON\Regex::serialize' => ['string'], 'MongoDB\BSON\Regex::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\Regex::jsonSerialize' => ['mixed'], 'MongoDB\BSON\RegexInterface::getPattern' => ['string'], 'MongoDB\BSON\RegexInterface::getFlags' => ['string'], 'MongoDB\BSON\RegexInterface::__toString' => ['string'], 'MongoDB\BSON\Serializable::bsonSerialize' => ['stdClass|MongoDB\BSON\Document|MongoDB\BSON\PackedArray|array'], 'MongoDB\BSON\Symbol::__toString' => ['string'], 'MongoDB\BSON\Symbol::serialize' => ['string'], 'MongoDB\BSON\Symbol::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\Symbol::jsonSerialize' => ['mixed'], 'MongoDB\BSON\Timestamp::__construct' => ['void', 'increment'=>'string|int', 'timestamp'=>'string|int'], 'MongoDB\BSON\Timestamp::getTimestamp' => ['int'], 'MongoDB\BSON\Timestamp::getIncrement' => ['int'], 'MongoDB\BSON\Timestamp::__toString' => ['string'], 'MongoDB\BSON\Timestamp::serialize' => ['string'], 'MongoDB\BSON\Timestamp::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\Timestamp::jsonSerialize' => ['mixed'], 'MongoDB\BSON\TimestampInterface::getTimestamp' => ['int'], 'MongoDB\BSON\TimestampInterface::getIncrement' => ['int'], 'MongoDB\BSON\TimestampInterface::__toString' => ['string'], 'MongoDB\BSON\UTCDateTime::__construct' => ['void', 'milliseconds='=>'DateTimeInterface|string|int|float|null'], 'MongoDB\BSON\UTCDateTime::toDateTime' => ['DateTime'], 'MongoDB\BSON\UTCDateTime::__toString' => ['string'], 'MongoDB\BSON\UTCDateTime::serialize' => ['string'], 'MongoDB\BSON\UTCDateTime::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\UTCDateTime::jsonSerialize' => ['mixed'], 'MongoDB\BSON\UTCDateTimeInterface::toDateTime' => ['DateTime'], 'MongoDB\BSON\UTCDateTimeInterface::__toString' => ['string'], 'MongoDB\BSON\Undefined::__toString' => ['string'], 'MongoDB\BSON\Undefined::serialize' => ['string'], 'MongoDB\BSON\Undefined::unserialize' => ['void', 'data'=>'string'], 'MongoDB\BSON\Undefined::jsonSerialize' => ['mixed'], 'MongoDB\BSON\Unserializable::bsonUnserialize' => ['void', 'data'=>'array'], 'MongoDB\Driver\BulkWrite::__construct' => ['void', 'options='=>'?array'], 'MongoDB\Driver\BulkWrite::count' => ['int'], 'MongoDB\Driver\BulkWrite::delete' => ['void', 'filter'=>'object|array', 'deleteOptions='=>'?array'], 'MongoDB\Driver\BulkWrite::insert' => ['mixed', 'document'=>'object|array'], 'MongoDB\Driver\BulkWrite::update' => ['void', 'filter'=>'object|array', 'newObj'=>'object|array', 'updateOptions='=>'?array'], 'MongoDB\Driver\ClientEncryption::__construct' => ['void', 'options'=>'array'], 'MongoDB\Driver\ClientEncryption::addKeyAltName' => ['?object', 'keyId'=>'MongoDB\BSON\Binary', 'keyAltName'=>'string'], 'MongoDB\Driver\ClientEncryption::createDataKey' => ['MongoDB\BSON\Binary', 'kmsProvider'=>'string', 'options='=>'?array'], 'MongoDB\Driver\ClientEncryption::decrypt' => ['mixed', 'value'=>'MongoDB\BSON\Binary'], 'MongoDB\Driver\ClientEncryption::deleteKey' => ['object', 'keyId'=>'MongoDB\BSON\Binary'], 'MongoDB\Driver\ClientEncryption::encrypt' => ['MongoDB\BSON\Binary', 'value'=>'mixed', 'options='=>'?array'], 'MongoDB\Driver\ClientEncryption::encryptExpression' => ['object', 'expr'=>'object|array', 'options='=>'?array'], 'MongoDB\Driver\ClientEncryption::getKey' => ['?object', 'keyId'=>'MongoDB\BSON\Binary'], 'MongoDB\Driver\ClientEncryption::getKeyByAltName' => ['?object', 'keyAltName'=>'string'], 'MongoDB\Driver\ClientEncryption::getKeys' => ['MongoDB\Driver\Cursor'], 'MongoDB\Driver\ClientEncryption::removeKeyAltName' => ['?object', 'keyId'=>'MongoDB\BSON\Binary', 'keyAltName'=>'string'], 'MongoDB\Driver\ClientEncryption::rewrapManyDataKey' => ['object', 'filter'=>'object|array', 'options='=>'?array'], 'MongoDB\Driver\Command::__construct' => ['void', 'document'=>'object|array', 'commandOptions='=>'?array'], 'MongoDB\Driver\Cursor::current' => ['object|array|null'], 'MongoDB\Driver\Cursor::getId' => ['MongoDB\Driver\CursorId'], 'MongoDB\Driver\Cursor::getServer' => ['MongoDB\Driver\Server'], 'MongoDB\Driver\Cursor::isDead' => ['bool'], 'MongoDB\Driver\Cursor::key' => ['?int'], 'MongoDB\Driver\Cursor::next' => ['void'], 'MongoDB\Driver\Cursor::rewind' => ['void'], 'MongoDB\Driver\Cursor::setTypeMap' => ['void', 'typemap'=>'array'], 'MongoDB\Driver\Cursor::toArray' => ['array'], 'MongoDB\Driver\Cursor::valid' => ['bool'], 'MongoDB\Driver\CursorId::__toString' => ['string'], 'MongoDB\Driver\CursorId::serialize' => ['string'], 'MongoDB\Driver\CursorId::unserialize' => ['void', 'data'=>'string'], 'MongoDB\Driver\CursorInterface::getId' => ['MongoDB\Driver\CursorId'], 'MongoDB\Driver\CursorInterface::getServer' => ['MongoDB\Driver\Server'], 'MongoDB\Driver\CursorInterface::isDead' => ['bool'], 'MongoDB\Driver\CursorInterface::setTypeMap' => ['void', 'typemap'=>'array'], 'MongoDB\Driver\CursorInterface::toArray' => ['array'], 'MongoDB\Driver\Exception\AuthenticationException::__toString' => ['string'], 'MongoDB\Driver\Exception\BulkWriteException::__toString' => ['string'], 'MongoDB\Driver\Exception\CommandException::getResultDocument' => ['object'], 'MongoDB\Driver\Exception\CommandException::__toString' => ['string'], 'MongoDB\Driver\Exception\ConnectionException::__toString' => ['string'], 'MongoDB\Driver\Exception\ConnectionTimeoutException::__toString' => ['string'], 'MongoDB\Driver\Exception\EncryptionException::__toString' => ['string'], 'MongoDB\Driver\Exception\Exception::__toString' => ['string'], 'MongoDB\Driver\Exception\ExecutionTimeoutException::__toString' => ['string'], 'MongoDB\Driver\Exception\InvalidArgumentException::__toString' => ['string'], 'MongoDB\Driver\Exception\LogicException::__toString' => ['string'], 'MongoDB\Driver\Exception\RuntimeException::hasErrorLabel' => ['bool', 'errorLabel'=>'string'], 'MongoDB\Driver\Exception\RuntimeException::__toString' => ['string'], 'MongoDB\Driver\Exception\SSLConnectionException::__toString' => ['string'], 'MongoDB\Driver\Exception\ServerException::__toString' => ['string'], 'MongoDB\Driver\Exception\UnexpectedValueException::__toString' => ['string'], 'MongoDB\Driver\Exception\WriteException::getWriteResult' => ['MongoDB\Driver\WriteResult'], 'MongoDB\Driver\Exception\WriteException::__toString' => ['string'], 'MongoDB\Driver\Manager::__construct' => ['void', 'uri='=>'?string', 'uriOptions='=>'?array', 'driverOptions='=>'?array'], 'MongoDB\Driver\Manager::addSubscriber' => ['void', 'subscriber'=>'MongoDB\Driver\Monitoring\Subscriber'], 'MongoDB\Driver\Manager::createClientEncryption' => ['MongoDB\Driver\ClientEncryption', 'options'=>'array'], 'MongoDB\Driver\Manager::executeBulkWrite' => ['MongoDB\Driver\WriteResult', 'namespace'=>'string', 'bulk'=>'MongoDB\Driver\BulkWrite', 'options='=>'MongoDB\Driver\WriteConcern|array|null'], 'MongoDB\Driver\Manager::executeCommand' => ['MongoDB\Driver\Cursor', 'db'=>'string', 'command'=>'MongoDB\Driver\Command', 'options='=>'MongoDB\Driver\ReadPreference|array|null'], 'MongoDB\Driver\Manager::executeQuery' => ['MongoDB\Driver\Cursor', 'namespace'=>'string', 'query'=>'MongoDB\Driver\Query', 'options='=>'MongoDB\Driver\ReadPreference|array|null'], 'MongoDB\Driver\Manager::executeReadCommand' => ['MongoDB\Driver\Cursor', 'db'=>'string', 'command'=>'MongoDB\Driver\Command', 'options='=>'?array'], 'MongoDB\Driver\Manager::executeReadWriteCommand' => ['MongoDB\Driver\Cursor', 'db'=>'string', 'command'=>'MongoDB\Driver\Command', 'options='=>'?array'], 'MongoDB\Driver\Manager::executeWriteCommand' => ['MongoDB\Driver\Cursor', 'db'=>'string', 'command'=>'MongoDB\Driver\Command', 'options='=>'?array'], 'MongoDB\Driver\Manager::getEncryptedFieldsMap' => ['object|array|null'], 'MongoDB\Driver\Manager::getReadConcern' => ['MongoDB\Driver\ReadConcern'], 'MongoDB\Driver\Manager::getReadPreference' => ['MongoDB\Driver\ReadPreference'], 'MongoDB\Driver\Manager::getServers' => ['array'], 'MongoDB\Driver\Manager::getWriteConcern' => ['MongoDB\Driver\WriteConcern'], 'MongoDB\Driver\Manager::removeSubscriber' => ['void', 'subscriber'=>'MongoDB\Driver\Monitoring\Subscriber'], 'MongoDB\Driver\Manager::selectServer' => ['MongoDB\Driver\Server', 'readPreference='=>'?MongoDB\Driver\ReadPreference'], 'MongoDB\Driver\Manager::startSession' => ['MongoDB\Driver\Session', 'options='=>'?array'], 'MongoDB\Driver\Monitoring\CommandFailedEvent::getCommandName' => ['string'], 'MongoDB\Driver\Monitoring\CommandFailedEvent::getDurationMicros' => ['int'], 'MongoDB\Driver\Monitoring\CommandFailedEvent::getError' => ['Exception'], 'MongoDB\Driver\Monitoring\CommandFailedEvent::getOperationId' => ['string'], 'MongoDB\Driver\Monitoring\CommandFailedEvent::getReply' => ['object'], 'MongoDB\Driver\Monitoring\CommandFailedEvent::getRequestId' => ['string'], 'MongoDB\Driver\Monitoring\CommandFailedEvent::getServer' => ['MongoDB\Driver\Server'], 'MongoDB\Driver\Monitoring\CommandFailedEvent::getServiceId' => ['?MongoDB\BSON\ObjectId'], 'MongoDB\Driver\Monitoring\CommandFailedEvent::getServerConnectionId' => ['?int'], 'MongoDB\Driver\Monitoring\CommandStartedEvent::getCommand' => ['object'], 'MongoDB\Driver\Monitoring\CommandStartedEvent::getCommandName' => ['string'], 'MongoDB\Driver\Monitoring\CommandStartedEvent::getDatabaseName' => ['string'], 'MongoDB\Driver\Monitoring\CommandStartedEvent::getOperationId' => ['string'], 'MongoDB\Driver\Monitoring\CommandStartedEvent::getRequestId' => ['string'], 'MongoDB\Driver\Monitoring\CommandStartedEvent::getServer' => ['MongoDB\Driver\Server'], 'MongoDB\Driver\Monitoring\CommandStartedEvent::getServiceId' => ['?MongoDB\BSON\ObjectId'], 'MongoDB\Driver\Monitoring\CommandStartedEvent::getServerConnectionId' => ['?int'], 'MongoDB\Driver\Monitoring\CommandSubscriber::commandStarted' => ['void', 'event'=>'MongoDB\Driver\Monitoring\CommandStartedEvent'], 'MongoDB\Driver\Monitoring\CommandSubscriber::commandSucceeded' => ['void', 'event'=>'MongoDB\Driver\Monitoring\CommandSucceededEvent'], 'MongoDB\Driver\Monitoring\CommandSubscriber::commandFailed' => ['void', 'event'=>'MongoDB\Driver\Monitoring\CommandFailedEvent'], 'MongoDB\Driver\Monitoring\CommandSucceededEvent::getCommandName' => ['string'], 'MongoDB\Driver\Monitoring\CommandSucceededEvent::getDurationMicros' => ['int'], 'MongoDB\Driver\Monitoring\CommandSucceededEvent::getOperationId' => ['string'], 'MongoDB\Driver\Monitoring\CommandSucceededEvent::getReply' => ['object'], 'MongoDB\Driver\Monitoring\CommandSucceededEvent::getRequestId' => ['string'], 'MongoDB\Driver\Monitoring\CommandSucceededEvent::getServer' => ['MongoDB\Driver\Server'], 'MongoDB\Driver\Monitoring\CommandSucceededEvent::getServiceId' => ['?MongoDB\BSON\ObjectId'], 'MongoDB\Driver\Monitoring\CommandSucceededEvent::getServerConnectionId' => ['?int'], 'MongoDB\Driver\Monitoring\LogSubscriber::log' => ['void', 'level'=>'int', 'domain'=>'string', 'message'=>'string'], 'MongoDB\Driver\Monitoring\SDAMSubscriber::serverChanged' => ['void', 'event'=>'MongoDB\Driver\Monitoring\ServerChangedEvent'], 'MongoDB\Driver\Monitoring\SDAMSubscriber::serverClosed' => ['void', 'event'=>'MongoDB\Driver\Monitoring\ServerClosedEvent'], 'MongoDB\Driver\Monitoring\SDAMSubscriber::serverOpening' => ['void', 'event'=>'MongoDB\Driver\Monitoring\ServerOpeningEvent'], 'MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatFailed' => ['void', 'event'=>'MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent'], 'MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatStarted' => ['void', 'event'=>'MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent'], 'MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatSucceeded' => ['void', 'event'=>'MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent'], 'MongoDB\Driver\Monitoring\SDAMSubscriber::topologyChanged' => ['void', 'event'=>'MongoDB\Driver\Monitoring\TopologyChangedEvent'], 'MongoDB\Driver\Monitoring\SDAMSubscriber::topologyClosed' => ['void', 'event'=>'MongoDB\Driver\Monitoring\TopologyClosedEvent'], 'MongoDB\Driver\Monitoring\SDAMSubscriber::topologyOpening' => ['void', 'event'=>'MongoDB\Driver\Monitoring\TopologyOpeningEvent'], 'MongoDB\Driver\Monitoring\ServerChangedEvent::getPort' => ['int'], 'MongoDB\Driver\Monitoring\ServerChangedEvent::getHost' => ['string'], 'MongoDB\Driver\Monitoring\ServerChangedEvent::getNewDescription' => ['MongoDB\Driver\ServerDescription'], 'MongoDB\Driver\Monitoring\ServerChangedEvent::getPreviousDescription' => ['MongoDB\Driver\ServerDescription'], 'MongoDB\Driver\Monitoring\ServerChangedEvent::getTopologyId' => ['MongoDB\BSON\ObjectId'], 'MongoDB\Driver\Monitoring\ServerClosedEvent::getPort' => ['int'], 'MongoDB\Driver\Monitoring\ServerClosedEvent::getHost' => ['string'], 'MongoDB\Driver\Monitoring\ServerClosedEvent::getTopologyId' => ['MongoDB\BSON\ObjectId'], 'MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getDurationMicros' => ['int'], 'MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getError' => ['Exception'], 'MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getPort' => ['int'], 'MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getHost' => ['string'], 'MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::isAwaited' => ['bool'], 'MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::getPort' => ['int'], 'MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::getHost' => ['string'], 'MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::isAwaited' => ['bool'], 'MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getDurationMicros' => ['int'], 'MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getReply' => ['object'], 'MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getPort' => ['int'], 'MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getHost' => ['string'], 'MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::isAwaited' => ['bool'], 'MongoDB\Driver\Monitoring\ServerOpeningEvent::getPort' => ['int'], 'MongoDB\Driver\Monitoring\ServerOpeningEvent::getHost' => ['string'], 'MongoDB\Driver\Monitoring\ServerOpeningEvent::getTopologyId' => ['MongoDB\BSON\ObjectId'], 'MongoDB\Driver\Monitoring\TopologyChangedEvent::getNewDescription' => ['MongoDB\Driver\TopologyDescription'], 'MongoDB\Driver\Monitoring\TopologyChangedEvent::getPreviousDescription' => ['MongoDB\Driver\TopologyDescription'], 'MongoDB\Driver\Monitoring\TopologyChangedEvent::getTopologyId' => ['MongoDB\BSON\ObjectId'], 'MongoDB\Driver\Monitoring\TopologyClosedEvent::getTopologyId' => ['MongoDB\BSON\ObjectId'], 'MongoDB\Driver\Monitoring\TopologyOpeningEvent::getTopologyId' => ['MongoDB\BSON\ObjectId'], 'MongoDB\Driver\Query::__construct' => ['void', 'filter'=>'object|array', 'queryOptions='=>'?array'], 'MongoDB\Driver\ReadConcern::__construct' => ['void', 'level='=>'?string'], 'MongoDB\Driver\ReadConcern::getLevel' => ['?string'], 'MongoDB\Driver\ReadConcern::isDefault' => ['bool'], 'MongoDB\Driver\ReadConcern::bsonSerialize' => ['stdClass'], 'MongoDB\Driver\ReadConcern::serialize' => ['string'], 'MongoDB\Driver\ReadConcern::unserialize' => ['void', 'data'=>'string'], 'MongoDB\Driver\ReadPreference::__construct' => ['void', 'mode'=>'string|int', 'tagSets='=>'?array', 'options='=>'?array'], 'MongoDB\Driver\ReadPreference::getHedge' => ['?object'], 'MongoDB\Driver\ReadPreference::getMaxStalenessSeconds' => ['int'], 'MongoDB\Driver\ReadPreference::getMode' => ['int'], 'MongoDB\Driver\ReadPreference::getModeString' => ['string'], 'MongoDB\Driver\ReadPreference::getTagSets' => ['array'], 'MongoDB\Driver\ReadPreference::bsonSerialize' => ['stdClass'], 'MongoDB\Driver\ReadPreference::serialize' => ['string'], 'MongoDB\Driver\ReadPreference::unserialize' => ['void', 'data'=>'string'], 'MongoDB\Driver\Server::executeBulkWrite' => ['MongoDB\Driver\WriteResult', 'namespace'=>'string', 'bulkWrite'=>'MongoDB\Driver\BulkWrite', 'options='=>'MongoDB\Driver\WriteConcern|array|null'], 'MongoDB\Driver\Server::executeCommand' => ['MongoDB\Driver\Cursor', 'db'=>'string', 'command'=>'MongoDB\Driver\Command', 'options='=>'MongoDB\Driver\ReadPreference|array|null'], 'MongoDB\Driver\Server::executeQuery' => ['MongoDB\Driver\Cursor', 'namespace'=>'string', 'query'=>'MongoDB\Driver\Query', 'options='=>'MongoDB\Driver\ReadPreference|array|null'], 'MongoDB\Driver\Server::executeReadCommand' => ['MongoDB\Driver\Cursor', 'db'=>'string', 'command'=>'MongoDB\Driver\Command', 'options='=>'?array'], 'MongoDB\Driver\Server::executeReadWriteCommand' => ['MongoDB\Driver\Cursor', 'db'=>'string', 'command'=>'MongoDB\Driver\Command', 'options='=>'?array'], 'MongoDB\Driver\Server::executeWriteCommand' => ['MongoDB\Driver\Cursor', 'db'=>'string', 'command'=>'MongoDB\Driver\Command', 'options='=>'?array'], 'MongoDB\Driver\Server::getHost' => ['string'], 'MongoDB\Driver\Server::getInfo' => ['array'], 'MongoDB\Driver\Server::getLatency' => ['?int'], 'MongoDB\Driver\Server::getPort' => ['int'], 'MongoDB\Driver\Server::getServerDescription' => ['MongoDB\Driver\ServerDescription'], 'MongoDB\Driver\Server::getTags' => ['array'], 'MongoDB\Driver\Server::getType' => ['int'], 'MongoDB\Driver\Server::isArbiter' => ['bool'], 'MongoDB\Driver\Server::isHidden' => ['bool'], 'MongoDB\Driver\Server::isPassive' => ['bool'], 'MongoDB\Driver\Server::isPrimary' => ['bool'], 'MongoDB\Driver\Server::isSecondary' => ['bool'], 'MongoDB\Driver\ServerApi::__construct' => ['void', 'version'=>'string', 'strict='=>'?bool', 'deprecationErrors='=>'?bool'], 'MongoDB\Driver\ServerApi::bsonSerialize' => ['stdClass'], 'MongoDB\Driver\ServerApi::serialize' => ['string'], 'MongoDB\Driver\ServerApi::unserialize' => ['void', 'data'=>'string'], 'MongoDB\Driver\ServerDescription::getHelloResponse' => ['array'], 'MongoDB\Driver\ServerDescription::getHost' => ['string'], 'MongoDB\Driver\ServerDescription::getLastUpdateTime' => ['int'], 'MongoDB\Driver\ServerDescription::getPort' => ['int'], 'MongoDB\Driver\ServerDescription::getRoundTripTime' => ['?int'], 'MongoDB\Driver\ServerDescription::getType' => ['string'], 'MongoDB\Driver\Session::abortTransaction' => ['void'], 'MongoDB\Driver\Session::advanceClusterTime' => ['void', 'clusterTime'=>'object|array'], 'MongoDB\Driver\Session::advanceOperationTime' => ['void', 'operationTime'=>'MongoDB\BSON\TimestampInterface'], 'MongoDB\Driver\Session::commitTransaction' => ['void'], 'MongoDB\Driver\Session::endSession' => ['void'], 'MongoDB\Driver\Session::getClusterTime' => ['?object'], 'MongoDB\Driver\Session::getLogicalSessionId' => ['object'], 'MongoDB\Driver\Session::getOperationTime' => ['?MongoDB\BSON\Timestamp'], 'MongoDB\Driver\Session::getServer' => ['?MongoDB\Driver\Server'], 'MongoDB\Driver\Session::getTransactionOptions' => ['?array'], 'MongoDB\Driver\Session::getTransactionState' => ['string'], 'MongoDB\Driver\Session::isDirty' => ['bool'], 'MongoDB\Driver\Session::isInTransaction' => ['bool'], 'MongoDB\Driver\Session::startTransaction' => ['void', 'options='=>'?array'], 'MongoDB\Driver\TopologyDescription::getServers' => ['array'], 'MongoDB\Driver\TopologyDescription::getType' => ['string'], 'MongoDB\Driver\TopologyDescription::hasReadableServer' => ['bool', 'readPreference='=>'?MongoDB\Driver\ReadPreference'], 'MongoDB\Driver\TopologyDescription::hasWritableServer' => ['bool'], 'MongoDB\Driver\WriteConcern::__construct' => ['void', 'w'=>'string|int', 'wtimeout='=>'?int', 'journal='=>'?bool'], 'MongoDB\Driver\WriteConcern::getJournal' => ['?bool'], 'MongoDB\Driver\WriteConcern::getW' => ['string|int|null'], 'MongoDB\Driver\WriteConcern::getWtimeout' => ['int'], 'MongoDB\Driver\WriteConcern::isDefault' => ['bool'], 'MongoDB\Driver\WriteConcern::bsonSerialize' => ['stdClass'], 'MongoDB\Driver\WriteConcern::serialize' => ['string'], 'MongoDB\Driver\WriteConcern::unserialize' => ['void', 'data'=>'string'], 'MongoDB\Driver\WriteConcernError::getCode' => ['int'], 'MongoDB\Driver\WriteConcernError::getInfo' => ['?object'], 'MongoDB\Driver\WriteConcernError::getMessage' => ['string'], 'MongoDB\Driver\WriteError::getCode' => ['int'], 'MongoDB\Driver\WriteError::getIndex' => ['int'], 'MongoDB\Driver\WriteError::getInfo' => ['?object'], 'MongoDB\Driver\WriteError::getMessage' => ['string'], 'MongoDB\Driver\WriteResult::getInsertedCount' => ['?int'], 'MongoDB\Driver\WriteResult::getMatchedCount' => ['?int'], 'MongoDB\Driver\WriteResult::getModifiedCount' => ['?int'], 'MongoDB\Driver\WriteResult::getDeletedCount' => ['?int'], 'MongoDB\Driver\WriteResult::getUpsertedCount' => ['?int'], 'MongoDB\Driver\WriteResult::getServer' => ['MongoDB\Driver\Server'], 'MongoDB\Driver\WriteResult::getUpsertedIds' => ['array'], 'MongoDB\Driver\WriteResult::getWriteConcernError' => ['?MongoDB\Driver\WriteConcernError'], 'MongoDB\Driver\WriteResult::getWriteErrors' => ['array'], 'MongoDB\Driver\WriteResult::getErrorReplies' => ['array'], 'MongoDB\Driver\WriteResult::isAcknowledged' => ['bool'], 'MongoDBRef::create' => ['array', 'collection'=>'string', 'id'=>'mixed', 'database='=>'string'], 'MongoDBRef::get' => ['array', 'db'=>'mongodb', 'ref'=>'array'], 'MongoDBRef::isRef' => ['bool', 'ref'=>'mixed'], 'MongoDeleteBatch::__construct' => ['void', 'collection'=>'MongoCollection', 'write_options='=>'array'], 'MongoException::__clone' => ['void'], 'MongoException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Exception)|(?Throwable)'], 'MongoException::__toString' => ['string'], 'MongoException::__wakeup' => ['void'], 'MongoException::getCode' => ['int'], 'MongoException::getFile' => ['string'], 'MongoException::getLine' => ['int'], 'MongoException::getMessage' => ['string'], 'MongoException::getPrevious' => ['Exception|Throwable'], 'MongoException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'MongoException::getTraceAsString' => ['string'], 'MongoGridFS::__construct' => ['void', 'db'=>'MongoDB', 'prefix='=>'string', 'chunks='=>'mixed'], 'MongoGridFS::__get' => ['MongoCollection', 'name'=>'string'], 'MongoGridFS::__toString' => ['string'], 'MongoGridFS::aggregate' => ['array', 'pipeline'=>'array', 'op'=>'array', 'pipelineOperators'=>'array'], 'MongoGridFS::aggregateCursor' => ['MongoCommandCursor', 'pipeline'=>'array', 'options'=>'array'], 'MongoGridFS::batchInsert' => ['mixed', 'a'=>'array', 'options='=>'array'], 'MongoGridFS::count' => ['0|positive-int', 'query='=>'stdClass|array'], 'MongoGridFS::createDBRef' => ['array', 'a'=>'array'], 'MongoGridFS::createIndex' => ['array', 'keys'=>'array', 'options='=>'array'], 'MongoGridFS::delete' => ['bool', 'id'=>'mixed'], 'MongoGridFS::deleteIndex' => ['array', 'keys'=>'array|string'], 'MongoGridFS::deleteIndexes' => ['array'], 'MongoGridFS::distinct' => ['array|bool', 'key'=>'string', 'query='=>'?array'], 'MongoGridFS::drop' => ['array'], 'MongoGridFS::ensureIndex' => ['bool', 'keys'=>'array', 'options='=>'array'], 'MongoGridFS::find' => ['MongoGridFSCursor', 'query='=>'array', 'fields='=>'array'], 'MongoGridFS::findAndModify' => ['array', 'query'=>'array', 'update='=>'?array', 'fields='=>'?array', 'options='=>'?array'], 'MongoGridFS::findOne' => ['MongoGridFSFile', 'query='=>'mixed', 'fields='=>'mixed'], 'MongoGridFS::get' => ['MongoGridFSFile', 'id'=>'mixed'], 'MongoGridFS::getDBRef' => ['array', 'ref'=>'array'], 'MongoGridFS::getIndexInfo' => ['array'], 'MongoGridFS::getName' => ['string'], 'MongoGridFS::getReadPreference' => ['array'], 'MongoGridFS::getSlaveOkay' => ['bool'], 'MongoGridFS::group' => ['array', 'keys'=>'mixed', 'initial'=>'array', 'reduce'=>'MongoCode', 'condition='=>'array'], 'MongoGridFS::insert' => ['array|bool', 'a'=>'array|object', 'options='=>'array'], 'MongoGridFS::put' => ['mixed', 'filename'=>'string', 'extra='=>'array'], 'MongoGridFS::remove' => ['bool', 'criteria='=>'array', 'options='=>'array'], 'MongoGridFS::save' => ['array|bool', 'a'=>'array|object', 'options='=>'array'], 'MongoGridFS::setReadPreference' => ['bool', 'read_preference'=>'string', 'tags'=>'array'], 'MongoGridFS::setSlaveOkay' => ['bool', 'ok='=>'bool|true'], 'MongoGridFS::storeBytes' => ['mixed', 'bytes'=>'string', 'extra='=>'array', 'options='=>'array'], 'MongoGridFS::storeFile' => ['mixed', 'filename'=>'string', 'extra='=>'array', 'options='=>'array'], 'MongoGridFS::storeUpload' => ['mixed', 'name'=>'string', 'filename='=>'string'], 'MongoGridFS::toIndexString' => ['string', 'keys'=>'mixed'], 'MongoGridFS::update' => ['bool', 'criteria'=>'array', 'newobj'=>'array', 'options='=>'array'], 'MongoGridFS::validate' => ['array', 'scan_data='=>'bool|false'], 'MongoGridFSCursor::__construct' => ['void', 'gridfs'=>'MongoGridFS', 'connection'=>'resource', 'ns'=>'string', 'query'=>'array', 'fields'=>'array'], 'MongoGridFSCursor::addOption' => ['MongoCursor', 'key'=>'string', 'value'=>'mixed'], 'MongoGridFSCursor::awaitData' => ['MongoCursor', 'wait='=>'bool|true'], 'MongoGridFSCursor::batchSize' => ['MongoCursor', 'batchSize'=>'int'], 'MongoGridFSCursor::count' => ['0|positive-int', 'all='=>'bool|false'], 'MongoGridFSCursor::current' => ['MongoGridFSFile'], 'MongoGridFSCursor::dead' => ['bool'], 'MongoGridFSCursor::doQuery' => ['void'], 'MongoGridFSCursor::explain' => ['array'], 'MongoGridFSCursor::fields' => ['MongoCursor', 'f'=>'array'], 'MongoGridFSCursor::getNext' => ['MongoGridFSFile'], 'MongoGridFSCursor::getReadPreference' => ['array'], 'MongoGridFSCursor::hasNext' => ['bool'], 'MongoGridFSCursor::hint' => ['MongoCursor', 'key_pattern'=>'mixed'], 'MongoGridFSCursor::immortal' => ['MongoCursor', 'liveForever='=>'bool|true'], 'MongoGridFSCursor::info' => ['array'], 'MongoGridFSCursor::key' => ['string'], 'MongoGridFSCursor::limit' => ['MongoCursor', 'num'=>'int'], 'MongoGridFSCursor::maxTimeMS' => ['MongoCursor', 'ms'=>'int'], 'MongoGridFSCursor::next' => ['void'], 'MongoGridFSCursor::partial' => ['MongoCursor', 'okay='=>'bool|true'], 'MongoGridFSCursor::reset' => ['void'], 'MongoGridFSCursor::rewind' => ['void'], 'MongoGridFSCursor::setFlag' => ['MongoCursor', 'flag'=>'int', 'set='=>'bool|true'], 'MongoGridFSCursor::setReadPreference' => ['MongoCursor', 'read_preference'=>'string', 'tags'=>'array'], 'MongoGridFSCursor::skip' => ['MongoCursor', 'num'=>'int'], 'MongoGridFSCursor::slaveOkay' => ['MongoCursor', 'okay='=>'bool|true'], 'MongoGridFSCursor::snapshot' => ['MongoCursor'], 'MongoGridFSCursor::sort' => ['MongoCursor', 'fields'=>'array'], 'MongoGridFSCursor::tailable' => ['MongoCursor', 'tail='=>'bool|true'], 'MongoGridFSCursor::timeout' => ['MongoCursor', 'ms'=>'int'], 'MongoGridFSCursor::valid' => ['bool'], 'MongoGridfsFile::__construct' => ['void', 'gridfs'=>'MongoGridFS', 'file'=>'array'], 'MongoGridFSFile::getBytes' => ['string'], 'MongoGridFSFile::getFilename' => ['string'], 'MongoGridFSFile::getResource' => ['resource'], 'MongoGridFSFile::getSize' => ['int'], 'MongoGridFSFile::write' => ['int', 'filename='=>'string'], 'MongoId::__construct' => ['void', 'id='=>'string|MongoId'], 'MongoId::__set_state' => ['MongoId', 'props'=>'array'], 'MongoId::__toString' => ['string'], 'MongoId::getHostname' => ['string'], 'MongoId::getInc' => ['int'], 'MongoId::getPID' => ['int'], 'MongoId::getTimestamp' => ['int'], 'MongoId::isValid' => ['bool', 'value'=>'mixed'], 'MongoInsertBatch::__construct' => ['void', 'collection'=>'MongoCollection', 'write_options='=>'array'], 'MongoInt32::__construct' => ['void', 'value'=>'string'], 'MongoInt32::__toString' => ['string'], 'MongoInt64::__construct' => ['void', 'value'=>'string'], 'MongoInt64::__toString' => ['string'], 'MongoLog::getCallback' => ['callable'], 'MongoLog::getLevel' => ['int'], 'MongoLog::getModule' => ['int'], 'MongoLog::setCallback' => ['bool', 'log_function'=>'callable'], 'MongoLog::setLevel' => ['void', 'level'=>'int'], 'MongoLog::setModule' => ['void', 'module'=>'int'], 'MongoPool::getSize' => ['int'], 'MongoPool::info' => ['array'], 'MongoPool::setSize' => ['bool', 'size'=>'int'], 'MongoRegex::__construct' => ['void', 'regex'=>'string'], 'MongoRegex::__toString' => ['string'], 'MongoResultException::__clone' => ['void'], 'MongoResultException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Exception)|(?Throwable)'], 'MongoResultException::__toString' => ['string'], 'MongoResultException::__wakeup' => ['void'], 'MongoResultException::getCode' => ['int'], 'MongoResultException::getDocument' => ['array'], 'MongoResultException::getFile' => ['string'], 'MongoResultException::getLine' => ['int'], 'MongoResultException::getMessage' => ['string'], 'MongoResultException::getPrevious' => ['Exception|Throwable'], 'MongoResultException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'MongoResultException::getTraceAsString' => ['string'], 'MongoTimestamp::__construct' => ['void', 'sec='=>'int', 'inc='=>'int'], 'MongoTimestamp::__toString' => ['string'], 'MongoUpdateBatch::__construct' => ['void', 'collection'=>'MongoCollection', 'write_options='=>'array'], 'MongoUpdateBatch::add' => ['bool', 'item'=>'array'], 'MongoUpdateBatch::execute' => ['array', 'write_options'=>'array'], 'MongoWriteBatch::__construct' => ['void', 'collection'=>'MongoCollection', 'batch_type'=>'string', 'write_options'=>'array'], 'MongoWriteBatch::add' => ['bool', 'item'=>'array'], 'MongoWriteBatch::execute' => ['array', 'write_options'=>'array'], 'MongoWriteConcernException::__clone' => ['void'], 'MongoWriteConcernException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Exception)|(?Throwable)'], 'MongoWriteConcernException::__toString' => ['string'], 'MongoWriteConcernException::__wakeup' => ['void'], 'MongoWriteConcernException::getCode' => ['int'], 'MongoWriteConcernException::getDocument' => ['array'], 'MongoWriteConcernException::getFile' => ['string'], 'MongoWriteConcernException::getLine' => ['int'], 'MongoWriteConcernException::getMessage' => ['string'], 'MongoWriteConcernException::getPrevious' => ['Exception|Throwable'], 'MongoWriteConcernException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'MongoWriteConcernException::getTraceAsString' => ['string'], 'monitor_custom_event' => ['void', 'class'=>'string', 'text'=>'string', 'severe='=>'int', 'user_data='=>'mixed'], 'monitor_httperror_event' => ['void', 'error_code'=>'int', 'url'=>'string', 'severe='=>'int'], 'monitor_license_info' => ['array'], 'monitor_pass_error' => ['void', 'errno'=>'int', 'errstr'=>'string', 'errfile'=>'string', 'errline'=>'int'], 'monitor_set_aggregation_hint' => ['void', 'hint'=>'string'], 'move_uploaded_file' => ['bool', 'path'=>'string', 'new_path'=>'string'], 'mqseries_back' => ['void', 'hconn'=>'resource', 'compcode'=>'resource', 'reason'=>'resource'], 'mqseries_begin' => ['void', 'hconn'=>'resource', 'beginoptions'=>'array', 'compcode'=>'resource', 'reason'=>'resource'], 'mqseries_close' => ['void', 'hconn'=>'resource', 'hobj'=>'resource', 'options'=>'int', 'compcode'=>'resource', 'reason'=>'resource'], 'mqseries_cmit' => ['void', 'hconn'=>'resource', 'compcode'=>'resource', 'reason'=>'resource'], 'mqseries_conn' => ['void', 'qmanagername'=>'string', 'hconn'=>'resource', 'compcode'=>'resource', 'reason'=>'resource'], 'mqseries_connx' => ['void', 'qmanagername'=>'string', 'connoptions'=>'array', 'hconn'=>'resource', 'compcode'=>'resource', 'reason'=>'resource'], 'mqseries_disc' => ['void', 'hconn'=>'resource', 'compcode'=>'resource', 'reason'=>'resource'], 'mqseries_get' => ['void', 'hconn'=>'resource', 'hobj'=>'resource', 'md'=>'array', 'gmo'=>'array', 'bufferlength'=>'int', 'msg'=>'string', 'data_length'=>'int', 'compcode'=>'resource', 'reason'=>'resource'], 'mqseries_inq' => ['void', 'hconn'=>'resource', 'hobj'=>'resource', 'selectorcount'=>'int', 'selectors'=>'array', 'intattrcount'=>'int', 'intattr'=>'resource', 'charattrlength'=>'int', 'charattr'=>'resource', 'compcode'=>'resource', 'reason'=>'resource'], 'mqseries_open' => ['void', 'hconn'=>'resource', 'objdesc'=>'array', 'option'=>'int', 'hobj'=>'resource', 'compcode'=>'resource', 'reason'=>'resource'], 'mqseries_put' => ['void', 'hconn'=>'resource', 'hobj'=>'resource', 'md'=>'array', 'pmo'=>'array', 'message'=>'string', 'compcode'=>'resource', 'reason'=>'resource'], 'mqseries_put1' => ['void', 'hconn'=>'resource', 'objdesc'=>'resource', 'msgdesc'=>'resource', 'pmo'=>'resource', 'buffer'=>'string', 'compcode'=>'resource', 'reason'=>'resource'], 'mqseries_set' => ['void', 'hconn'=>'resource', 'hobj'=>'resource', 'selectorcount'=>'int', 'selectors'=>'array', 'intattrcount'=>'int', 'intattrs'=>'array', 'charattrlength'=>'int', 'charattrs'=>'array', 'compcode'=>'resource', 'reason'=>'resource'], 'mqseries_strerror' => ['string', 'reason'=>'int'], 'ms_GetErrorObj' => ['errorObj'], 'ms_GetVersion' => ['string'], 'ms_GetVersionInt' => ['int'], 'ms_iogetStdoutBufferBytes' => ['int'], 'ms_iogetstdoutbufferstring' => ['void'], 'ms_ioinstallstdinfrombuffer' => ['void'], 'ms_ioinstallstdouttobuffer' => ['void'], 'ms_ioresethandlers' => ['void'], 'ms_iostripstdoutbuffercontentheaders' => ['void'], 'ms_iostripstdoutbuffercontenttype' => ['string'], 'ms_ResetErrorList' => ['void'], 'ms_TokenizeMap' => ['array', 'map_file_name'=>'string'], 'msession_connect' => ['bool', 'host'=>'string', 'port'=>'string'], 'msession_count' => ['int'], 'msession_create' => ['bool', 'session'=>'string', 'classname='=>'string', 'data='=>'string'], 'msession_destroy' => ['bool', 'name'=>'string'], 'msession_disconnect' => ['void'], 'msession_find' => ['array', 'name'=>'string', 'value'=>'string'], 'msession_get' => ['string', 'session'=>'string', 'name'=>'string', 'value'=>'string'], 'msession_get_array' => ['array', 'session'=>'string'], 'msession_get_data' => ['string', 'session'=>'string'], 'msession_inc' => ['string', 'session'=>'string', 'name'=>'string'], 'msession_list' => ['array'], 'msession_listvar' => ['array', 'name'=>'string'], 'msession_lock' => ['int', 'name'=>'string'], 'msession_plugin' => ['string', 'session'=>'string', 'val'=>'string', 'param='=>'string'], 'msession_randstr' => ['string', 'param'=>'int'], 'msession_set' => ['bool', 'session'=>'string', 'name'=>'string', 'value'=>'string'], 'msession_set_array' => ['void', 'session'=>'string', 'tuples'=>'array'], 'msession_set_data' => ['bool', 'session'=>'string', 'value'=>'string'], 'msession_timeout' => ['int', 'session'=>'string', 'param='=>'int'], 'msession_uniq' => ['string', 'param'=>'int', 'classname='=>'string', 'data='=>'string'], 'msession_unlock' => ['int', 'session'=>'string', 'key'=>'int'], 'msg_get_queue' => ['resource|false', 'key'=>'int', 'perms='=>'int'], 'msg_queue_exists' => ['bool', 'key'=>'int'], 'msg_receive' => ['bool', 'queue'=>'resource', 'desiredmsgtype'=>'int', '&w_msgtype'=>'int', 'maxsize'=>'int', '&w_message'=>'mixed', 'unserialize='=>'bool', 'flags='=>'int', '&w_errorcode='=>'int'], 'msg_remove_queue' => ['bool', 'queue'=>'resource'], 'msg_send' => ['bool', 'queue'=>'resource', 'msgtype'=>'int', 'message'=>'mixed', 'serialize='=>'bool', 'blocking='=>'bool', '&w_errorcode='=>'int'], 'msg_set_queue' => ['bool', 'queue'=>'resource', 'data'=>'array'], 'msg_stat_queue' => ['array|false', 'queue'=>'resource'], 'msgfmt_create' => ['MessageFormatter', 'locale'=>'string', 'pattern'=>'string'], 'msgfmt_format' => ['string|false', 'fmt'=>'messageformatter', 'args'=>'array'], 'msgfmt_format_message' => ['string|false', 'locale'=>'string', 'pattern'=>'string', 'args'=>'array'], 'msgfmt_get_error_code' => ['int', 'fmt'=>'messageformatter'], 'msgfmt_get_error_message' => ['string', 'fmt'=>'messageformatter'], 'msgfmt_get_locale' => ['string', 'formatter'=>'messageformatter'], 'msgfmt_get_pattern' => ['string|false', 'fmt'=>'messageformatter'], 'msgfmt_parse' => ['array|false', 'fmt'=>'messageformatter', 'value'=>'string'], 'msgfmt_parse_message' => ['array|false', 'locale'=>'string', 'pattern'=>'string', 'source'=>'string'], 'msgfmt_set_pattern' => ['bool', 'fmt'=>'messageformatter', 'pattern'=>'string'], 'msql_affected_rows' => ['int', 'result'=>'resource'], 'msql_close' => ['bool', 'link_identifier='=>'?resource'], 'msql_connect' => ['resource', 'hostname='=>'string'], 'msql_create_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'?resource'], 'msql_data_seek' => ['bool', 'result'=>'resource', 'row_number'=>'int'], 'msql_db_query' => ['resource', 'database'=>'string', 'query'=>'string', 'link_identifier='=>'?resource'], 'msql_drop_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'?resource'], 'msql_error' => ['string'], 'msql_fetch_array' => ['array', 'result'=>'resource', 'result_type='=>'int'], 'msql_fetch_field' => ['object', 'result'=>'resource', 'field_offset='=>'int'], 'msql_fetch_object' => ['object', 'result'=>'resource'], 'msql_fetch_row' => ['array', 'result'=>'resource'], 'msql_field_flags' => ['string', 'result'=>'resource', 'field_offset'=>'int'], 'msql_field_len' => ['int', 'result'=>'resource', 'field_offset'=>'int'], 'msql_field_name' => ['string', 'result'=>'resource', 'field_offset'=>'int'], 'msql_field_seek' => ['bool', 'result'=>'resource', 'field_offset'=>'int'], 'msql_field_table' => ['int', 'result'=>'resource', 'field_offset'=>'int'], 'msql_field_type' => ['string', 'result'=>'resource', 'field_offset'=>'int'], 'msql_free_result' => ['bool', 'result'=>'resource'], 'msql_list_dbs' => ['resource', 'link_identifier='=>'?resource'], 'msql_list_fields' => ['resource', 'database'=>'string', 'tablename'=>'string', 'link_identifier='=>'?resource'], 'msql_list_tables' => ['resource', 'database'=>'string', 'link_identifier='=>'?resource'], 'msql_num_fields' => ['int', 'result'=>'resource'], 'msql_num_rows' => ['int', 'query_identifier'=>'resource'], 'msql_pconnect' => ['resource', 'hostname='=>'string'], 'msql_query' => ['resource', 'query'=>'string', 'link_identifier='=>'?resource'], 'msql_result' => ['string', 'result'=>'resource', 'row'=>'int', 'field='=>'mixed'], 'msql_select_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'?resource'], 'mssql_bind' => ['bool', 'stmt'=>'resource', 'param_name'=>'string', 'var'=>'mixed', 'type'=>'int', 'is_output='=>'bool', 'is_null='=>'bool', 'maxlen='=>'int'], 'mssql_close' => ['bool', 'link_identifier='=>'resource'], 'mssql_connect' => ['resource', 'servername='=>'string', 'username='=>'string', 'password='=>'string', 'new_link='=>'bool'], 'mssql_data_seek' => ['bool', 'result_identifier'=>'resource', 'row_number'=>'int'], 'mssql_execute' => ['mixed', 'stmt'=>'resource', 'skip_results='=>'bool'], 'mssql_fetch_array' => ['array', 'result'=>'resource', 'result_type='=>'int'], 'mssql_fetch_assoc' => ['array', 'result_id'=>'resource'], 'mssql_fetch_batch' => ['int', 'result'=>'resource'], 'mssql_fetch_field' => ['object', 'result'=>'resource', 'field_offset='=>'int'], 'mssql_fetch_object' => ['object', 'result'=>'resource'], 'mssql_fetch_row' => ['array', 'result'=>'resource'], 'mssql_field_length' => ['int', 'result'=>'resource', 'offset='=>'int'], 'mssql_field_name' => ['string', 'result'=>'resource', 'offset='=>'int'], 'mssql_field_seek' => ['bool', 'result'=>'resource', 'field_offset'=>'int'], 'mssql_field_type' => ['string', 'result'=>'resource', 'offset='=>'int'], 'mssql_free_result' => ['bool', 'result'=>'resource'], 'mssql_free_statement' => ['bool', 'stmt'=>'resource'], 'mssql_get_last_message' => ['string'], 'mssql_guid_string' => ['string', 'binary'=>'string', 'short_format='=>'bool'], 'mssql_init' => ['resource', 'sp_name'=>'string', 'link_identifier='=>'resource'], 'mssql_min_error_severity' => ['void', 'severity'=>'int'], 'mssql_min_message_severity' => ['void', 'severity'=>'int'], 'mssql_next_result' => ['bool', 'result_id'=>'resource'], 'mssql_num_fields' => ['int', 'result'=>'resource'], 'mssql_num_rows' => ['int', 'result'=>'resource'], 'mssql_pconnect' => ['resource', 'servername='=>'string', 'username='=>'string', 'password='=>'string', 'new_link='=>'bool'], 'mssql_query' => ['mixed', 'query'=>'string', 'link_identifier='=>'resource', 'batch_size='=>'int'], 'mssql_result' => ['string', 'result'=>'resource', 'row'=>'int', 'field'=>'mixed'], 'mssql_rows_affected' => ['int', 'link_identifier'=>'resource'], 'mssql_select_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'], 'mt_getrandmax' => ['int'], 'mt_rand' => ['int', 'min'=>'int', 'max'=>'int'], 'mt_rand\'1' => ['int'], 'mt_srand' => ['void', 'seed='=>'int', 'mode='=>'int'], 'MultipleIterator::__construct' => ['void', 'flags='=>'int'], 'MultipleIterator::attachIterator' => ['void', 'iterator'=>'Iterator', 'infos='=>'string'], 'MultipleIterator::containsIterator' => ['bool', 'iterator'=>'Iterator'], 'MultipleIterator::countIterators' => ['int'], 'MultipleIterator::current' => ['array'], 'MultipleIterator::detachIterator' => ['void', 'iterator'=>'Iterator'], 'MultipleIterator::getFlags' => ['int'], 'MultipleIterator::key' => ['array'], 'MultipleIterator::next' => ['void'], 'MultipleIterator::rewind' => ['void'], 'MultipleIterator::setFlags' => ['int', 'flags'=>'int'], 'MultipleIterator::valid' => ['bool'], 'mysql_affected_rows' => ['int', 'link_identifier='=>'resource'], 'mysql_client_encoding' => ['string', 'link_identifier='=>'resource'], 'mysql_close' => ['bool', 'link_identifier='=>'resource'], 'mysql_connect' => ['resource|false', 'server='=>'string', 'username='=>'string', 'password='=>'string', 'new_link='=>'bool', 'client_flags='=>'int'], 'mysql_create_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'], 'mysql_data_seek' => ['bool', 'result'=>'resource', 'row_number'=>'int'], 'mysql_db_name' => ['string|false', 'result'=>'resource', 'row'=>'int', 'field='=>'mixed'], 'mysql_db_query' => ['resource|bool', 'database'=>'string', 'query'=>'string', 'link_identifier='=>'resource'], 'mysql_drop_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'], 'mysql_errno' => ['int', 'link_identifier='=>'resource'], 'mysql_error' => ['string', 'link_identifier='=>'resource'], 'mysql_escape_string' => ['string', 'unescaped_string'=>'string'], 'mysql_fetch_array' => ['array|false', 'result'=>'resource', 'result_type='=>'int'], 'mysql_fetch_assoc' => ['array|false', 'result'=>'resource'], 'mysql_fetch_field' => ['object', 'result'=>'resource', 'field_offset='=>'int'], 'mysql_fetch_lengths' => ['array|false', 'result'=>'resource'], 'mysql_fetch_object' => ['object|false', 'result'=>'resource', 'class_name='=>'string', 'params='=>'array'], 'mysql_fetch_row' => ['array|false', 'result'=>'resource'], 'mysql_field_flags' => ['string|false', 'result'=>'resource', 'field_offset'=>'int'], 'mysql_field_len' => ['int|false', 'result'=>'resource', 'field_offset'=>'int'], 'mysql_field_name' => ['string|false', 'result'=>'resource', 'field_offset'=>'int'], 'mysql_field_seek' => ['bool', 'result'=>'resource', 'field_offset'=>'int'], 'mysql_field_table' => ['string', 'result'=>'resource', 'field_offset'=>'int'], 'mysql_field_type' => ['string', 'result'=>'resource', 'field_offset'=>'int'], 'mysql_free_result' => ['bool', 'result'=>'resource'], 'mysql_get_client_info' => ['string'], 'mysql_get_host_info' => ['string|false', 'link_identifier='=>'resource'], 'mysql_get_proto_info' => ['int|false', 'link_identifier='=>'resource'], 'mysql_get_server_info' => ['string|false', 'link_identifier='=>'resource'], 'mysql_info' => ['string|false', 'link_identifier='=>'resource'], 'mysql_insert_id' => ['int|false', 'link_identifier='=>'resource'], 'mysql_list_dbs' => ['resource|false', 'link_identifier='=>'resource'], 'mysql_list_fields' => ['resource|false', 'database_name'=>'string', 'table_name'=>'string', 'link_identifier='=>'resource'], 'mysql_list_processes' => ['resource|false', 'link_identifier='=>'resource'], 'mysql_list_tables' => ['resource', 'database'=>'string', 'link_identifier='=>'resource'], 'mysql_num_fields' => ['int|false', 'result'=>'resource'], 'mysql_num_rows' => ['int|false', 'result'=>'resource'], 'mysql_pconnect' => ['resource|false', 'server='=>'string', 'username='=>'string', 'password='=>'string', 'client_flags='=>'int'], 'mysql_ping' => ['bool', 'link_identifier='=>'resource'], 'mysql_query' => ['resource|bool', 'query'=>'string', 'link_identifier='=>'resource'], 'mysql_real_escape_string' => ['string|false', 'unescaped_string'=>'string', 'link_identifier='=>'resource'], 'mysql_result' => ['string|false', 'result'=>'resource', 'row'=>'int', 'field='=>'mixed'], 'mysql_select_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'], 'mysql_set_charset' => ['bool', 'charset'=>'string', 'link_identifier='=>'resource'], 'mysql_stat' => ['string|null', 'link_identifier='=>'resource'], 'mysql_tablename' => ['string|false', 'result'=>'resource', 'i'=>'int'], 'mysql_thread_id' => ['int|false', 'link_identifier='=>'resource'], 'mysql_unbuffered_query' => ['resource|bool', 'query'=>'string', 'link_identifier='=>'resource'], 'mysqli::__construct' => ['void', 'host='=>'string', 'username='=>'string', 'passwd='=>'string', 'dbname='=>'string', 'port='=>'int', 'socket='=>'string'], 'mysqli::autocommit' => ['bool', 'mode'=>'bool'], 'mysqli::begin_transaction' => ['bool', 'flags='=>'int', 'name='=>'string'], 'mysqli::change_user' => ['bool', 'user'=>'string', 'password'=>'string', 'database'=>'string'], 'mysqli::character_set_name' => ['string'], 'mysqli::close' => ['bool'], 'mysqli::commit' => ['bool', 'flags='=>'int', 'name='=>'string'], 'mysqli::debug' => ['bool', 'message'=>'string'], 'mysqli::disable_reads_from_master' => ['bool'], 'mysqli::dump_debug_info' => ['bool'], 'mysqli::get_charset' => ['object'], 'mysqli::get_client_info' => ['string'], 'mysqli::get_connection_stats' => ['array|false'], 'mysqli::get_warnings' => ['mysqli_warning|false'], 'mysqli::init' => ['mysqli'], 'mysqli::kill' => ['bool', 'processid'=>'int'], 'mysqli::more_results' => ['bool'], 'mysqli::multi_query' => ['bool', 'query'=>'string'], 'mysqli::next_result' => ['bool'], 'mysqli::options' => ['bool', 'option'=>'int', 'value'=>'mixed'], 'mysqli::ping' => ['bool'], 'mysqli::poll' => ['int|false', '&w_read'=>'array', '&w_error'=>'array', '&w_reject'=>'array', 'sec'=>'int', 'usec='=>'int'], 'mysqli::prepare' => ['mysqli_stmt|false', 'query'=>'string'], 'mysqli::query' => ['bool|mysqli_result', 'query'=>'string', 'resultmode='=>'int'], 'mysqli::real_connect' => ['bool', 'host='=>'?string', 'username='=>'?string', 'passwd='=>'?string', 'dbname='=>'?string', 'port='=>'?int', 'socket='=>'?string', 'flags='=>'int'], 'mysqli::real_escape_string' => ['string', 'escapestr'=>'string'], 'mysqli::real_query' => ['bool', 'query'=>'string'], 'mysqli::reap_async_query' => ['mysqli_result|false'], 'mysqli::refresh' => ['bool', 'options'=>'int'], 'mysqli::release_savepoint' => ['bool', 'name'=>'string'], 'mysqli::rollback' => ['bool', 'flags='=>'int', 'name='=>'string'], 'mysqli::rpl_query_type' => ['int', 'query'=>'string'], 'mysqli::savepoint' => ['bool', 'name'=>'string'], 'mysqli::select_db' => ['bool', 'dbname'=>'string'], 'mysqli::send_query' => ['bool', 'query'=>'string'], 'mysqli::set_charset' => ['bool', 'charset'=>'string'], 'mysqli::set_local_infile_default' => ['void'], 'mysqli::set_local_infile_handler' => ['bool', 'read_func='=>'callable'], 'mysqli::ssl_set' => ['bool', 'key'=>'string', 'cert'=>'string', 'ca'=>'string', 'capath'=>'string', 'cipher'=>'string'], 'mysqli::stat' => ['string|false'], 'mysqli::stmt_init' => ['mysqli_stmt'], 'mysqli::store_result' => ['mysqli_result|false', 'option='=>'int'], 'mysqli::thread_safe' => ['bool'], 'mysqli::use_result' => ['mysqli_result|false'], 'mysqli_affected_rows' => ['int<-1,max>|numeric-string', 'link'=>'mysqli'], 'mysqli_autocommit' => ['bool', 'link'=>'mysqli', 'mode'=>'bool'], 'mysqli_begin_transaction' => ['bool', 'link'=>'mysqli', 'flags='=>'int', 'name='=>'string'], 'mysqli_change_user' => ['bool', 'link'=>'mysqli', 'user'=>'string', 'password'=>'string', 'database'=>'string'], 'mysqli_character_set_name' => ['string', 'link'=>'mysqli'], 'mysqli_close' => ['bool', 'link'=>'mysqli'], 'mysqli_commit' => ['bool', 'link'=>'mysqli', 'flags='=>'int', 'name='=>'string'], 'mysqli_connect' => ['mysqli|false|null', 'host='=>'string', 'username='=>'string', 'passwd='=>'string', 'dbname='=>'string', 'port='=>'int', 'socket='=>'string'], 'mysqli_connect_errno' => ['int'], 'mysqli_connect_error' => ['string|null'], 'mysqli_data_seek' => ['bool', 'result'=>'mysqli_result', 'offset'=>'int'], 'mysqli_debug' => ['bool', 'message'=>'string'], 'mysqli_disable_reads_from_master' => ['bool', 'link'=>'mysqli'], 'mysqli_disable_rpl_parse' => ['bool', 'link'=>'mysqli'], 'mysqli_driver::embedded_server_end' => ['void'], 'mysqli_driver::embedded_server_start' => ['bool', 'start'=>'int', 'arguments'=>'array', 'groups'=>'array'], 'mysqli_dump_debug_info' => ['bool', 'link'=>'mysqli'], 'mysqli_embedded_server_end' => ['void'], 'mysqli_embedded_server_start' => ['bool', 'start'=>'int', 'arguments'=>'array', 'groups'=>'array'], 'mysqli_enable_reads_from_master' => ['bool', 'link'=>'mysqli'], 'mysqli_enable_rpl_parse' => ['bool', 'link'=>'mysqli'], 'mysqli_errno' => ['int', 'link'=>'mysqli'], 'mysqli_error' => ['string|null', 'link'=>'mysqli'], 'mysqli_error_list' => ['array', 'connection'=>'mysqli'], 'mysqli_fetch_all' => ['array', 'result'=>'mysqli_result', 'resulttype='=>'int'], 'mysqli_fetch_array' => ['array|null|false', 'result'=>'mysqli_result', 'resulttype='=>'int'], 'mysqli_fetch_assoc' => ['array|null|false', 'result'=>'mysqli_result'], 'mysqli_fetch_column' => ['null|int|float|string|false', 'result' => 'mysqli_result', 'column'=>'int'], 'mysqli_fetch_field' => ['(stdClass&object{name: string, orgname: string, table: string, orgtable: string, def: string, db: string, catalog: "def", max_length: int, length: int, charsetnr: string, flags: int, type: int, decimals: int})|false', 'result'=>'mysqli_result'], 'mysqli_fetch_field_direct' => ['(stdClass&object{name: string, orgname: string, table: string, orgtable: string, def: string, db: string, catalog: "def", max_length: int, length: int, charsetnr: string, flags: int, type: int, decimals: int})|false', 'result'=>'mysqli_result', 'fieldnr'=>'int'], 'mysqli_fetch_fields' => ['list', 'result'=>'mysqli_result'], 'mysqli_fetch_lengths' => ['array|false', 'result'=>'mysqli_result'], 'mysqli_fetch_object' => ['object|false|null', 'result'=>'mysqli_result', 'class_name='=>'string', 'params='=>'?array'], 'mysqli_fetch_row' => ['array|null', 'result'=>'mysqli_result'], 'mysqli_field_count' => ['int', 'link'=>'mysqli'], 'mysqli_field_seek' => ['bool', 'result'=>'mysqli_result', 'fieldnr'=>'int'], 'mysqli_field_tell' => ['int', 'result'=>'mysqli_result'], 'mysqli_free_result' => ['void', 'link'=>'mysqli_result'], 'mysqli_get_cache_stats' => ['array'], 'mysqli_get_charset' => ['object', 'link'=>'mysqli'], 'mysqli_get_client_info' => ['string', 'link='=>'mysqli'], 'mysqli_get_client_stats' => ['array|false'], 'mysqli_get_client_version' => ['int'], 'mysqli_get_connection_stats' => ['array|false', 'link'=>'mysqli'], 'mysqli_get_host_info' => ['string', 'link'=>'mysqli'], 'mysqli_get_links_stats' => ['array'], 'mysqli_get_proto_info' => ['int', 'link'=>'mysqli'], 'mysqli_get_server_info' => ['string', 'link'=>'mysqli'], 'mysqli_get_server_version' => ['int', 'link'=>'mysqli'], 'mysqli_get_warnings' => ['mysqli_warning|false', 'link'=>'mysqli'], 'mysqli_info' => ['?string', 'link'=>'mysqli'], 'mysqli_init' => ['mysqli|false'], 'mysqli_insert_id' => ['int|string', 'link'=>'mysqli'], 'mysqli_kill' => ['bool', 'link'=>'mysqli', 'processid'=>'int'], 'mysqli_link_construct' => ['object'], 'mysqli_master_query' => ['bool', 'link'=>'mysqli', 'query'=>'string'], 'mysqli_more_results' => ['bool', 'link'=>'mysqli'], 'mysqli_multi_query' => ['bool', 'link'=>'mysqli', 'query'=>'string'], 'mysqli_next_result' => ['bool', 'link'=>'mysqli'], 'mysqli_num_fields' => ['int', 'link'=>'mysqli_result'], 'mysqli_num_rows' => ['int<0,max>|numeric-string', 'link'=>'mysqli_result'], 'mysqli_options' => ['bool', 'link'=>'mysqli', 'option'=>'int', 'value'=>'mixed'], 'mysqli_ping' => ['bool', 'link'=>'mysqli'], 'mysqli_poll' => ['int|false', 'read'=>'array', 'error'=>'array', 'reject'=>'array', 'sec'=>'int', 'usec='=>'int'], 'mysqli_prepare' => ['mysqli_stmt|false', 'link'=>'mysqli', 'query'=>'string'], 'mysqli_query' => ['mysqli_result|bool', 'link'=>'mysqli', 'query'=>'string', 'resultmode='=>'int'], 'mysqli_real_connect' => ['bool', 'link='=>'mysqli', 'host='=>'?string', 'username='=>'?string', 'passwd='=>'?string', 'dbname='=>'?string', 'port='=>'?int', 'socket='=>'?string', 'flags='=>'int'], 'mysqli_real_escape_string' => ['string', 'link'=>'mysqli', 'escapestr'=>'string'], 'mysqli_real_query' => ['bool', 'link'=>'mysqli', 'query'=>'string'], 'mysqli_reap_async_query' => ['mysqli_result|false', 'link'=>'mysqli'], 'mysqli_refresh' => ['bool', 'link'=>'mysqli', 'options'=>'int'], 'mysqli_release_savepoint' => ['bool', 'link'=>'mysqli', 'name'=>'string'], 'mysqli_report' => ['bool', 'flags'=>'int'], 'mysqli_result::__construct' => ['void', 'link'=>'mysqli', 'resultmode='=>'int'], 'mysqli_result::close' => ['void'], 'mysqli_result::data_seek' => ['bool', 'offset'=>'int'], 'mysqli_result::fetch_all' => ['array', 'resulttype='=>'int'], 'mysqli_result::fetch_array' => ['array|null|false', 'resulttype='=>'int'], 'mysqli_result::fetch_assoc' => ['array|null|false'], 'mysqli_result::fetch_column' => ['null|int|float|string|false', 'column'=>'int'], 'mysqli_result::fetch_field' => ['(stdClass&object{name: string, orgname: string, table: string, orgtable: string, def: string, db: string, catalog: "def", max_length: int, length: int, charsetnr: string, flags: int, type: int, decimals: int})|false'], 'mysqli_result::fetch_field_direct' => ['(stdClass&object{name: string, orgname: string, table: string, orgtable: string, def: string, db: string, catalog: "def", max_length: int, length: int, charsetnr: string, flags: int, type: int, decimals: int})|false', 'fieldnr'=>'int'], 'mysqli_result::fetch_fields' => ['list'], 'mysqli_result::fetch_object' => ['object|null', 'class_name='=>'string', 'params='=>'array'], 'mysqli_result::fetch_row' => ['array|null'], 'mysqli_result::field_seek' => ['bool', 'fieldnr'=>'int'], 'mysqli_result::free' => ['void'], 'mysqli_result::free_result' => ['void'], 'mysqli_rollback' => ['bool', 'link'=>'mysqli', 'flags='=>'int', 'name='=>'string'], 'mysqli_rpl_parse_enabled' => ['int', 'link'=>'mysqli'], 'mysqli_rpl_probe' => ['bool', 'link'=>'mysqli'], 'mysqli_rpl_query_type' => ['int', 'link'=>'mysqli', 'query'=>'string'], 'mysqli_savepoint' => ['bool', 'link'=>'mysqli', 'name'=>'string'], 'mysqli_savepoint_libmysql' => ['bool'], 'mysqli_select_db' => ['bool', 'link'=>'mysqli', 'dbname'=>'string'], 'mysqli_send_query' => ['bool', 'link'=>'mysqli', 'query'=>'string'], 'mysqli_set_charset' => ['bool', 'link'=>'mysqli', 'charset'=>'string'], 'mysqli_set_local_infile_default' => ['void', 'link'=>'mysqli'], 'mysqli_set_local_infile_handler' => ['bool', 'link'=>'mysqli', 'read_func'=>'callable'], 'mysqli_slave_query' => ['bool', 'link'=>'mysqli', 'query'=>'string'], 'mysqli_sqlstate' => ['string', 'link'=>'mysqli'], 'mysqli_ssl_set' => ['bool', 'link'=>'mysqli', 'key'=>'string', 'cert'=>'string', 'ca'=>'string', 'capath'=>'string', 'cipher'=>'string'], 'mysqli_stat' => ['string|false', 'link'=>'mysqli'], 'mysqli_stmt::__construct' => ['void', 'link'=>'mysqli', 'query='=>'string'], 'mysqli_stmt::attr_get' => ['false|int', 'attr'=>'int'], 'mysqli_stmt::attr_set' => ['bool', 'attr'=>'int', 'mode'=>'int'], 'mysqli_stmt::bind_param' => ['bool', 'types'=>'string', 'var1'=>'mixed', '...args='=>'mixed'], 'mysqli_stmt::bind_result' => ['bool', '&w_var1'=>'', '&...w_vars='=>''], 'mysqli_stmt::close' => ['bool'], 'mysqli_stmt::data_seek' => ['void', 'offset'=>'int'], 'mysqli_stmt::execute' => ['bool'], 'mysqli_stmt::fetch' => ['bool|null'], 'mysqli_stmt::free_result' => ['void'], 'mysqli_stmt::get_result' => ['mysqli_result|false'], 'mysqli_stmt::get_warnings' => ['mysqli_warning|false'], 'mysqli_stmt::more_results' => ['bool'], 'mysqli_stmt::next_result' => ['bool'], 'mysqli_stmt::num_rows' => ['int<0,max>|numeric-string'], 'mysqli_stmt::prepare' => ['bool', 'query'=>'string'], 'mysqli_stmt::reset' => ['bool'], 'mysqli_stmt::result_metadata' => ['mysqli_result|false'], 'mysqli_stmt::send_long_data' => ['bool', 'param_nr'=>'int', 'data'=>'string'], 'mysqli_stmt::store_result' => ['bool'], 'mysqli_stmt_affected_rows' => ['int<-1,max>|numeric-string', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_attr_get' => ['int|false', 'stmt'=>'mysqli_stmt', 'attr'=>'int'], 'mysqli_stmt_attr_set' => ['bool', 'stmt'=>'mysqli_stmt', 'attr'=>'int', 'mode'=>'int'], 'mysqli_stmt_bind_param' => ['bool', 'stmt'=>'mysqli_stmt', 'types'=>'string', 'var1'=>'mixed', '...args='=>'mixed'], 'mysqli_stmt_bind_result' => ['bool', 'stmt'=>'mysqli_stmt', '&w_var1'=>'', '&...w_vars='=>''], 'mysqli_stmt_close' => ['bool', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_data_seek' => ['void', 'stmt'=>'mysqli_stmt', 'offset'=>'int'], 'mysqli_stmt_errno' => ['int', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_error' => ['string', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_error_list' => ['list', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_execute' => ['bool', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_fetch' => ['bool|null', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_field_count' => ['0|positive-int', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_free_result' => ['void', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_get_result' => ['mysqli_result|false', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_get_warnings' => ['mysqli_warning|false', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_init' => ['mysqli_stmt|false', 'link'=>'mysqli'], 'mysqli_stmt_insert_id' => ['', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_more_results' => ['bool', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_next_result' => ['bool', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_num_rows' => ['0|positive-int', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_param_count' => ['0|positive-int', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_prepare' => ['bool', 'stmt'=>'mysqli_stmt', 'query'=>'string'], 'mysqli_stmt_reset' => ['bool', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_result_metadata' => ['mysqli_result|false', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_send_long_data' => ['bool', 'stmt'=>'mysqli_stmt', 'param_nr'=>'int', 'data'=>'string'], 'mysqli_stmt_sqlstate' => ['non-empty-string', 'stmt'=>'mysqli_stmt'], 'mysqli_stmt_store_result' => ['bool', 'stmt'=>'mysqli_stmt'], 'mysqli_store_result' => ['mysqli_result|false', 'link'=>'mysqli', 'option='=>'int'], 'mysqli_thread_id' => ['int', 'link'=>'mysqli'], 'mysqli_thread_safe' => ['bool'], 'mysqli_use_result' => ['mysqli_result|false', 'link'=>'mysqli'], 'mysqli_warning::__construct' => ['void'], 'mysqli_warning::next' => ['bool'], 'mysqli_warning_count' => ['int', 'link'=>'mysqli'], 'mysqlnd_memcache_get_config' => ['array', 'connection'=>'mixed'], 'mysqlnd_memcache_set' => ['bool', 'mysql_connection'=>'mixed', 'memcache_connection='=>'Memcached', 'pattern='=>'string', 'callback='=>'callable'], 'mysqlnd_ms_dump_servers' => ['array', 'connection'=>'mixed'], 'mysqlnd_ms_fabric_select_global' => ['array', 'connection'=>'mixed', 'table_name'=>'mixed'], 'mysqlnd_ms_fabric_select_shard' => ['array', 'connection'=>'mixed', 'table_name'=>'mixed', 'shard_key'=>'mixed'], 'mysqlnd_ms_get_last_gtid' => ['string', 'connection'=>'mixed'], 'mysqlnd_ms_get_last_used_connection' => ['array', 'connection'=>'mixed'], 'mysqlnd_ms_get_stats' => ['array'], 'mysqlnd_ms_match_wild' => ['bool', 'table_name'=>'string', 'wildcard'=>'string'], 'mysqlnd_ms_query_is_select' => ['int', 'query'=>'string'], 'mysqlnd_ms_set_qos' => ['bool', 'connection'=>'mixed', 'service_level'=>'int', 'service_level_option='=>'int', 'option_value='=>'mixed'], 'mysqlnd_ms_set_user_pick_server' => ['bool', 'function'=>'string'], 'mysqlnd_ms_xa_begin' => ['int', 'connection'=>'mixed', 'gtrid'=>'string', 'timeout='=>'int'], 'mysqlnd_ms_xa_commit' => ['int', 'connection'=>'mixed', 'gtrid'=>'string'], 'mysqlnd_ms_xa_gc' => ['int', 'connection'=>'mixed', 'gtrid='=>'string', 'ignore_max_retries='=>'bool'], 'mysqlnd_ms_xa_rollback' => ['int', 'connection'=>'mixed', 'gtrid'=>'string'], 'mysqlnd_qc_change_handler' => ['bool', 'handler'=>''], 'mysqlnd_qc_clear_cache' => ['bool'], 'mysqlnd_qc_get_available_handlers' => ['array'], 'mysqlnd_qc_get_cache_info' => ['array'], 'mysqlnd_qc_get_core_stats' => ['array'], 'mysqlnd_qc_get_handler' => ['array'], 'mysqlnd_qc_get_normalized_query_trace_log' => ['array'], 'mysqlnd_qc_get_query_trace_log' => ['array'], 'mysqlnd_qc_set_cache_condition' => ['bool', 'condition_type'=>'int', 'condition'=>'mixed', 'condition_option'=>'mixed'], 'mysqlnd_qc_set_is_select' => ['mixed', 'callback'=>'string'], 'mysqlnd_qc_set_storage_handler' => ['bool', 'handler'=>'string'], 'mysqlnd_qc_set_user_handlers' => ['bool', 'get_hash'=>'string', 'find_query_in_cache'=>'string', 'return_to_cache'=>'string', 'add_query_to_cache_if_not_exists'=>'string', 'query_is_select'=>'string', 'update_query_run_time_stats'=>'string', 'get_stats'=>'string', 'clear_cache'=>'string'], 'mysqlnd_uh_convert_to_mysqlnd' => ['resource', '&rw_mysql_connection'=>'mysqli'], 'mysqlnd_uh_set_connection_proxy' => ['bool', '&rw_connection_proxy'=>'MysqlndUhConnection', '&rw_mysqli_connection='=>'mysqli'], 'mysqlnd_uh_set_statement_proxy' => ['bool', '&rw_statement_proxy'=>'MysqlndUhStatement'], 'MysqlndUhConnection::__construct' => ['void'], 'MysqlndUhConnection::changeUser' => ['bool', 'connection'=>'mysqlnd_connection', 'user'=>'string', 'password'=>'string', 'database'=>'string', 'silent'=>'bool', 'passwd_len'=>'int'], 'MysqlndUhConnection::charsetName' => ['string', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::close' => ['bool', 'connection'=>'mysqlnd_connection', 'close_type'=>'int'], 'MysqlndUhConnection::connect' => ['bool', 'connection'=>'mysqlnd_connection', 'host'=>'string', 'use'=>'string', 'password'=>'string', 'database'=>'string', 'port'=>'int', 'socket'=>'string', 'mysql_flags'=>'int'], 'MysqlndUhConnection::endPSession' => ['bool', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::escapeString' => ['string', 'connection'=>'mysqlnd_connection', 'escape_string'=>'string'], 'MysqlndUhConnection::getAffectedRows' => ['int', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getErrorNumber' => ['int', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getErrorString' => ['string', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getFieldCount' => ['int', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getHostInformation' => ['string', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getLastInsertId' => ['int', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getLastMessage' => ['void', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getProtocolInformation' => ['string', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getServerInformation' => ['string', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getServerStatistics' => ['string', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getServerVersion' => ['int', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getSqlstate' => ['string', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getStatistics' => ['array', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getThreadId' => ['int', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::getWarningCount' => ['int', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::init' => ['bool', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::killConnection' => ['bool', 'connection'=>'mysqlnd_connection', 'pid'=>'int'], 'MysqlndUhConnection::listFields' => ['array', 'connection'=>'mysqlnd_connection', 'table'=>'string', 'achtung_wild'=>'string'], 'MysqlndUhConnection::listMethod' => ['void', 'connection'=>'mysqlnd_connection', 'query'=>'string', 'achtung_wild'=>'string', 'par1'=>'string'], 'MysqlndUhConnection::moreResults' => ['bool', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::nextResult' => ['bool', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::ping' => ['bool', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::query' => ['bool', 'connection'=>'mysqlnd_connection', 'query'=>'string'], 'MysqlndUhConnection::queryReadResultsetHeader' => ['bool', 'connection'=>'mysqlnd_connection', 'mysqlnd_stmt'=>'mysqlnd_statement'], 'MysqlndUhConnection::reapQuery' => ['bool', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::refreshServer' => ['bool', 'connection'=>'mysqlnd_connection', 'options'=>'int'], 'MysqlndUhConnection::restartPSession' => ['bool', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::selectDb' => ['bool', 'connection'=>'mysqlnd_connection', 'database'=>'string'], 'MysqlndUhConnection::sendClose' => ['bool', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::sendQuery' => ['bool', 'connection'=>'mysqlnd_connection', 'query'=>'string'], 'MysqlndUhConnection::serverDumpDebugInformation' => ['bool', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::setAutocommit' => ['bool', 'connection'=>'mysqlnd_connection', 'mode'=>'int'], 'MysqlndUhConnection::setCharset' => ['bool', 'connection'=>'mysqlnd_connection', 'charset'=>'string'], 'MysqlndUhConnection::setClientOption' => ['bool', 'connection'=>'mysqlnd_connection', 'option'=>'int', 'value'=>'int'], 'MysqlndUhConnection::setServerOption' => ['void', 'connection'=>'mysqlnd_connection', 'option'=>'int'], 'MysqlndUhConnection::shutdownServer' => ['void', 'MYSQLND_UH_RES_MYSQLND_NAME'=>'string', 'level'=>'string'], 'MysqlndUhConnection::simpleCommand' => ['bool', 'connection'=>'mysqlnd_connection', 'command'=>'int', 'arg'=>'string', 'ok_packet'=>'int', 'silent'=>'bool', 'ignore_upsert_status'=>'bool'], 'MysqlndUhConnection::simpleCommandHandleResponse' => ['bool', 'connection'=>'mysqlnd_connection', 'ok_packet'=>'int', 'silent'=>'bool', 'command'=>'int', 'ignore_upsert_status'=>'bool'], 'MysqlndUhConnection::sslSet' => ['bool', 'connection'=>'mysqlnd_connection', 'key'=>'string', 'cert'=>'string', 'ca'=>'string', 'capath'=>'string', 'cipher'=>'string'], 'MysqlndUhConnection::stmtInit' => ['resource', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::storeResult' => ['resource', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::txCommit' => ['bool', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::txRollback' => ['bool', 'connection'=>'mysqlnd_connection'], 'MysqlndUhConnection::useResult' => ['resource', 'connection'=>'mysqlnd_connection'], 'MysqlndUhPreparedStatement::__construct' => ['void'], 'MysqlndUhPreparedStatement::execute' => ['bool', 'statement'=>'mysqlnd_prepared_statement'], 'MysqlndUhPreparedStatement::prepare' => ['bool', 'statement'=>'mysqlnd_prepared_statement', 'query'=>'string'], 'natcasesort' => ['bool', '&rw_array_arg'=>'array'], 'natsort' => ['bool', '&rw_array_arg'=>'array'], 'ncurses_addch' => ['int', 'ch'=>'int'], 'ncurses_addchnstr' => ['int', 's'=>'string', 'n'=>'int'], 'ncurses_addchstr' => ['int', 's'=>'string'], 'ncurses_addnstr' => ['int', 's'=>'string', 'n'=>'int'], 'ncurses_addstr' => ['int', 'text'=>'string'], 'ncurses_assume_default_colors' => ['int', 'fg'=>'int', 'bg'=>'int'], 'ncurses_attroff' => ['int', 'attributes'=>'int'], 'ncurses_attron' => ['int', 'attributes'=>'int'], 'ncurses_attrset' => ['int', 'attributes'=>'int'], 'ncurses_baudrate' => ['int'], 'ncurses_beep' => ['int'], 'ncurses_bkgd' => ['int', 'attrchar'=>'int'], 'ncurses_bkgdset' => ['void', 'attrchar'=>'int'], 'ncurses_border' => ['int', 'left'=>'int', 'right'=>'int', 'top'=>'int', 'bottom'=>'int', 'tl_corner'=>'int', 'tr_corner'=>'int', 'bl_corner'=>'int', 'br_corner'=>'int'], 'ncurses_bottom_panel' => ['int', 'panel'=>'resource'], 'ncurses_can_change_color' => ['bool'], 'ncurses_cbreak' => ['bool'], 'ncurses_clear' => ['bool'], 'ncurses_clrtobot' => ['bool'], 'ncurses_clrtoeol' => ['bool'], 'ncurses_color_content' => ['int', 'color'=>'int', 'r'=>'int', 'g'=>'int', 'b'=>'int'], 'ncurses_color_set' => ['int', 'pair'=>'int'], 'ncurses_curs_set' => ['int', 'visibility'=>'int'], 'ncurses_def_prog_mode' => ['bool'], 'ncurses_def_shell_mode' => ['bool'], 'ncurses_define_key' => ['int', 'definition'=>'string', 'keycode'=>'int'], 'ncurses_del_panel' => ['bool', 'panel'=>'resource'], 'ncurses_delay_output' => ['int', 'milliseconds'=>'int'], 'ncurses_delch' => ['bool'], 'ncurses_deleteln' => ['bool'], 'ncurses_delwin' => ['bool', 'window'=>'resource'], 'ncurses_doupdate' => ['bool'], 'ncurses_echo' => ['bool'], 'ncurses_echochar' => ['int', 'character'=>'int'], 'ncurses_end' => ['int'], 'ncurses_erase' => ['bool'], 'ncurses_erasechar' => ['string'], 'ncurses_filter' => ['void'], 'ncurses_flash' => ['bool'], 'ncurses_flushinp' => ['bool'], 'ncurses_getch' => ['int'], 'ncurses_getmaxyx' => ['void', 'window'=>'resource', 'y'=>'int', 'x'=>'int'], 'ncurses_getmouse' => ['bool', 'mevent'=>'array'], 'ncurses_getyx' => ['void', 'window'=>'resource', 'y'=>'int', 'x'=>'int'], 'ncurses_halfdelay' => ['int', 'tenth'=>'int'], 'ncurses_has_colors' => ['bool'], 'ncurses_has_ic' => ['bool'], 'ncurses_has_il' => ['bool'], 'ncurses_has_key' => ['int', 'keycode'=>'int'], 'ncurses_hide_panel' => ['int', 'panel'=>'resource'], 'ncurses_hline' => ['int', 'charattr'=>'int', 'n'=>'int'], 'ncurses_inch' => ['string'], 'ncurses_init' => ['void'], 'ncurses_init_color' => ['int', 'color'=>'int', 'r'=>'int', 'g'=>'int', 'b'=>'int'], 'ncurses_init_pair' => ['int', 'pair'=>'int', 'fg'=>'int', 'bg'=>'int'], 'ncurses_insch' => ['int', 'character'=>'int'], 'ncurses_insdelln' => ['int', 'count'=>'int'], 'ncurses_insertln' => ['int'], 'ncurses_insstr' => ['int', 'text'=>'string'], 'ncurses_instr' => ['int', 'buffer'=>'string'], 'ncurses_isendwin' => ['bool'], 'ncurses_keyok' => ['int', 'keycode'=>'int', 'enable'=>'bool'], 'ncurses_keypad' => ['int', 'window'=>'resource', 'bf'=>'bool'], 'ncurses_killchar' => ['string'], 'ncurses_longname' => ['string'], 'ncurses_meta' => ['int', 'window'=>'resource', '_8bit'=>'bool'], 'ncurses_mouse_trafo' => ['bool', 'y'=>'int', 'x'=>'int', 'toscreen'=>'bool'], 'ncurses_mouseinterval' => ['int', 'milliseconds'=>'int'], 'ncurses_mousemask' => ['int', 'newmask'=>'int', 'oldmask'=>'int'], 'ncurses_move' => ['int', 'y'=>'int', 'x'=>'int'], 'ncurses_move_panel' => ['int', 'panel'=>'resource', 'startx'=>'int', 'starty'=>'int'], 'ncurses_mvaddch' => ['int', 'y'=>'int', 'x'=>'int', 'c'=>'int'], 'ncurses_mvaddchnstr' => ['int', 'y'=>'int', 'x'=>'int', 's'=>'string', 'n'=>'int'], 'ncurses_mvaddchstr' => ['int', 'y'=>'int', 'x'=>'int', 's'=>'string'], 'ncurses_mvaddnstr' => ['int', 'y'=>'int', 'x'=>'int', 's'=>'string', 'n'=>'int'], 'ncurses_mvaddstr' => ['int', 'y'=>'int', 'x'=>'int', 's'=>'string'], 'ncurses_mvcur' => ['int', 'old_y'=>'int', 'old_x'=>'int', 'new_y'=>'int', 'new_x'=>'int'], 'ncurses_mvdelch' => ['int', 'y'=>'int', 'x'=>'int'], 'ncurses_mvgetch' => ['int', 'y'=>'int', 'x'=>'int'], 'ncurses_mvhline' => ['int', 'y'=>'int', 'x'=>'int', 'attrchar'=>'int', 'n'=>'int'], 'ncurses_mvinch' => ['int', 'y'=>'int', 'x'=>'int'], 'ncurses_mvvline' => ['int', 'y'=>'int', 'x'=>'int', 'attrchar'=>'int', 'n'=>'int'], 'ncurses_mvwaddstr' => ['int', 'window'=>'resource', 'y'=>'int', 'x'=>'int', 'text'=>'string'], 'ncurses_napms' => ['int', 'milliseconds'=>'int'], 'ncurses_new_panel' => ['resource', 'window'=>'resource'], 'ncurses_newpad' => ['resource', 'rows'=>'int', 'cols'=>'int'], 'ncurses_newwin' => ['resource', 'rows'=>'int', 'cols'=>'int', 'y'=>'int', 'x'=>'int'], 'ncurses_nl' => ['bool'], 'ncurses_nocbreak' => ['bool'], 'ncurses_noecho' => ['bool'], 'ncurses_nonl' => ['bool'], 'ncurses_noqiflush' => ['void'], 'ncurses_noraw' => ['bool'], 'ncurses_pair_content' => ['int', 'pair'=>'int', 'f'=>'int', 'b'=>'int'], 'ncurses_panel_above' => ['resource', 'panel'=>'resource'], 'ncurses_panel_below' => ['resource', 'panel'=>'resource'], 'ncurses_panel_window' => ['resource', 'panel'=>'resource'], 'ncurses_pnoutrefresh' => ['int', 'pad'=>'resource', 'pminrow'=>'int', 'pmincol'=>'int', 'sminrow'=>'int', 'smincol'=>'int', 'smaxrow'=>'int', 'smaxcol'=>'int'], 'ncurses_prefresh' => ['int', 'pad'=>'resource', 'pminrow'=>'int', 'pmincol'=>'int', 'sminrow'=>'int', 'smincol'=>'int', 'smaxrow'=>'int', 'smaxcol'=>'int'], 'ncurses_putp' => ['int', 'text'=>'string'], 'ncurses_qiflush' => ['void'], 'ncurses_raw' => ['bool'], 'ncurses_refresh' => ['int', 'ch'=>'int'], 'ncurses_replace_panel' => ['int', 'panel'=>'resource', 'window'=>'resource'], 'ncurses_reset_prog_mode' => ['int'], 'ncurses_reset_shell_mode' => ['int'], 'ncurses_resetty' => ['bool'], 'ncurses_savetty' => ['bool'], 'ncurses_scr_dump' => ['int', 'filename'=>'string'], 'ncurses_scr_init' => ['int', 'filename'=>'string'], 'ncurses_scr_restore' => ['int', 'filename'=>'string'], 'ncurses_scr_set' => ['int', 'filename'=>'string'], 'ncurses_scrl' => ['int', 'count'=>'int'], 'ncurses_show_panel' => ['int', 'panel'=>'resource'], 'ncurses_slk_attr' => ['int'], 'ncurses_slk_attroff' => ['int', 'intarg'=>'int'], 'ncurses_slk_attron' => ['int', 'intarg'=>'int'], 'ncurses_slk_attrset' => ['int', 'intarg'=>'int'], 'ncurses_slk_clear' => ['bool'], 'ncurses_slk_color' => ['int', 'intarg'=>'int'], 'ncurses_slk_init' => ['bool', 'format'=>'int'], 'ncurses_slk_noutrefresh' => ['bool'], 'ncurses_slk_refresh' => ['int'], 'ncurses_slk_restore' => ['int'], 'ncurses_slk_set' => ['bool', 'labelnr'=>'int', 'label'=>'string', 'format'=>'int'], 'ncurses_slk_touch' => ['int'], 'ncurses_standend' => ['int'], 'ncurses_standout' => ['int'], 'ncurses_start_color' => ['int'], 'ncurses_termattrs' => ['bool'], 'ncurses_termname' => ['string'], 'ncurses_timeout' => ['void', 'millisec'=>'int'], 'ncurses_top_panel' => ['int', 'panel'=>'resource'], 'ncurses_typeahead' => ['int', 'fd'=>'int'], 'ncurses_ungetch' => ['int', 'keycode'=>'int'], 'ncurses_ungetmouse' => ['bool', 'mevent'=>'array'], 'ncurses_update_panels' => ['void'], 'ncurses_use_default_colors' => ['bool'], 'ncurses_use_env' => ['void', 'flag'=>'bool'], 'ncurses_use_extended_names' => ['int', 'flag'=>'bool'], 'ncurses_vidattr' => ['int', 'intarg'=>'int'], 'ncurses_vline' => ['int', 'charattr'=>'int', 'n'=>'int'], 'ncurses_waddch' => ['int', 'window'=>'resource', 'ch'=>'int'], 'ncurses_waddstr' => ['int', 'window'=>'resource', 'str'=>'string', 'n='=>'int'], 'ncurses_wattroff' => ['int', 'window'=>'resource', 'attrs'=>'int'], 'ncurses_wattron' => ['int', 'window'=>'resource', 'attrs'=>'int'], 'ncurses_wattrset' => ['int', 'window'=>'resource', 'attrs'=>'int'], 'ncurses_wborder' => ['int', 'window'=>'resource', 'left'=>'int', 'right'=>'int', 'top'=>'int', 'bottom'=>'int', 'tl_corner'=>'int', 'tr_corner'=>'int', 'bl_corner'=>'int', 'br_corner'=>'int'], 'ncurses_wclear' => ['int', 'window'=>'resource'], 'ncurses_wcolor_set' => ['int', 'window'=>'resource', 'color_pair'=>'int'], 'ncurses_werase' => ['int', 'window'=>'resource'], 'ncurses_wgetch' => ['int', 'window'=>'resource'], 'ncurses_whline' => ['int', 'window'=>'resource', 'charattr'=>'int', 'n'=>'int'], 'ncurses_wmouse_trafo' => ['bool', 'window'=>'resource', 'y'=>'int', 'x'=>'int', 'toscreen'=>'bool'], 'ncurses_wmove' => ['int', 'window'=>'resource', 'y'=>'int', 'x'=>'int'], 'ncurses_wnoutrefresh' => ['int', 'window'=>'resource'], 'ncurses_wrefresh' => ['int', 'window'=>'resource'], 'ncurses_wstandend' => ['int', 'window'=>'resource'], 'ncurses_wstandout' => ['int', 'window'=>'resource'], 'ncurses_wvline' => ['int', 'window'=>'resource', 'charattr'=>'int', 'n'=>'int'], 'net_get_interfaces' => ['array|false'], 'newrelic_add_custom_parameter' => ['bool', 'key'=>'string', 'value'=>''], 'newrelic_add_custom_tracer' => ['bool', 'function_name'=>'string'], 'newrelic_background_job' => ['void', 'flag='=>'bool'], 'newrelic_capture_params' => ['void', 'enable='=>'bool'], 'newrelic_custom_metric' => ['bool', 'metric_name'=>'string', 'value'=>'float'], 'newrelic_disable_autorum' => ['bool'], 'newrelic_end_of_transaction' => ['void'], 'newrelic_end_transaction' => ['bool', 'ignore='=>'bool'], 'newrelic_get_browser_timing_footer' => ['string', 'include_tags='=>'bool'], 'newrelic_get_browser_timing_header' => ['string', 'include_tags='=>'bool'], 'newrelic_ignore_apdex' => ['void'], 'newrelic_ignore_transaction' => ['void'], 'newrelic_name_transaction' => ['bool', 'name'=>'string'], 'newrelic_notice_error' => ['void', 'message'=>'string', 'exception='=>'Exception|Throwable'], 'newrelic_notice_error\'1' => ['void', 'unused_1'=>'string', 'message'=>'string', 'unused_2'=>'string', 'unused_3'=>'int', 'unused_4='=>''], 'newrelic_record_custom_event' => ['void', 'name'=>'string', 'attributes'=>'array'], 'newrelic_record_datastore_segment' => ['mixed', 'func'=>'callable', 'parameters'=>'array'], 'newrelic_set_appname' => ['bool', 'name'=>'string', 'license='=>'string', 'xmit='=>'bool'], 'newrelic_set_user_attributes' => ['bool', 'user'=>'string', 'account'=>'string', 'product'=>'string'], 'newrelic_start_transaction' => ['bool', 'appname'=>'string', 'license='=>'string'], 'newt_bell' => ['void'], 'newt_button' => ['resource', 'left'=>'int', 'top'=>'int', 'text'=>'string'], 'newt_button_bar' => ['resource', 'buttons'=>'array'], 'newt_centered_window' => ['int', 'width'=>'int', 'height'=>'int', 'title='=>'string'], 'newt_checkbox' => ['resource', 'left'=>'int', 'top'=>'int', 'text'=>'string', 'def_value'=>'string', 'seq='=>'string'], 'newt_checkbox_get_value' => ['string', 'checkbox'=>'resource'], 'newt_checkbox_set_flags' => ['void', 'checkbox'=>'resource', 'flags'=>'int', 'sense'=>'int'], 'newt_checkbox_set_value' => ['void', 'checkbox'=>'resource', 'value'=>'string'], 'newt_checkbox_tree' => ['resource', 'left'=>'int', 'top'=>'int', 'height'=>'int', 'flags='=>'int'], 'newt_checkbox_tree_add_item' => ['void', 'checkboxtree'=>'resource', 'text'=>'string', 'data'=>'mixed', 'flags'=>'int', 'index'=>'int', '...args='=>'int'], 'newt_checkbox_tree_find_item' => ['array', 'checkboxtree'=>'resource', 'data'=>'mixed'], 'newt_checkbox_tree_get_current' => ['mixed', 'checkboxtree'=>'resource'], 'newt_checkbox_tree_get_entry_value' => ['string', 'checkboxtree'=>'resource', 'data'=>'mixed'], 'newt_checkbox_tree_get_multi_selection' => ['array', 'checkboxtree'=>'resource', 'seqnum'=>'string'], 'newt_checkbox_tree_get_selection' => ['array', 'checkboxtree'=>'resource'], 'newt_checkbox_tree_multi' => ['resource', 'left'=>'int', 'top'=>'int', 'height'=>'int', 'seq'=>'string', 'flags='=>'int'], 'newt_checkbox_tree_set_current' => ['void', 'checkboxtree'=>'resource', 'data'=>'mixed'], 'newt_checkbox_tree_set_entry' => ['void', 'checkboxtree'=>'resource', 'data'=>'mixed', 'text'=>'string'], 'newt_checkbox_tree_set_entry_value' => ['void', 'checkboxtree'=>'resource', 'data'=>'mixed', 'value'=>'string'], 'newt_checkbox_tree_set_width' => ['void', 'checkbox_tree'=>'resource', 'width'=>'int'], 'newt_clear_key_buffer' => ['void'], 'newt_cls' => ['void'], 'newt_compact_button' => ['resource', 'left'=>'int', 'top'=>'int', 'text'=>'string'], 'newt_component_add_callback' => ['void', 'component'=>'resource', 'func_name'=>'mixed', 'data'=>'mixed'], 'newt_component_takes_focus' => ['void', 'component'=>'resource', 'takes_focus'=>'bool'], 'newt_create_grid' => ['resource', 'cols'=>'int', 'rows'=>'int'], 'newt_cursor_off' => ['void'], 'newt_cursor_on' => ['void'], 'newt_delay' => ['void', 'microseconds'=>'int'], 'newt_draw_form' => ['void', 'form'=>'resource'], 'newt_draw_root_text' => ['void', 'left'=>'int', 'top'=>'int', 'text'=>'string'], 'newt_entry' => ['resource', 'left'=>'int', 'top'=>'int', 'width'=>'int', 'init_value='=>'string', 'flags='=>'int'], 'newt_entry_get_value' => ['string', 'entry'=>'resource'], 'newt_entry_set' => ['void', 'entry'=>'resource', 'value'=>'string', 'cursor_at_end='=>'bool'], 'newt_entry_set_filter' => ['void', 'entry'=>'resource', 'filter'=>'callable', 'data'=>'mixed'], 'newt_entry_set_flags' => ['void', 'entry'=>'resource', 'flags'=>'int', 'sense'=>'int'], 'newt_finished' => ['int'], 'newt_form' => ['resource', 'vert_bar='=>'resource', 'help='=>'string', 'flags='=>'int'], 'newt_form_add_component' => ['void', 'form'=>'resource', 'component'=>'resource'], 'newt_form_add_components' => ['void', 'form'=>'resource', 'components'=>'array'], 'newt_form_add_hot_key' => ['void', 'form'=>'resource', 'key'=>'int'], 'newt_form_destroy' => ['void', 'form'=>'resource'], 'newt_form_get_current' => ['resource', 'form'=>'resource'], 'newt_form_run' => ['void', 'form'=>'resource', 'exit_struct'=>'array'], 'newt_form_set_background' => ['void', 'from'=>'resource', 'background'=>'int'], 'newt_form_set_height' => ['void', 'form'=>'resource', 'height'=>'int'], 'newt_form_set_size' => ['void', 'form'=>'resource'], 'newt_form_set_timer' => ['void', 'form'=>'resource', 'milliseconds'=>'int'], 'newt_form_set_width' => ['void', 'form'=>'resource', 'width'=>'int'], 'newt_form_watch_fd' => ['void', 'form'=>'resource', 'stream'=>'resource', 'flags='=>'int'], 'newt_get_screen_size' => ['void', 'cols'=>'int', 'rows'=>'int'], 'newt_grid_add_components_to_form' => ['void', 'grid'=>'resource', 'form'=>'resource', 'recurse'=>'bool'], 'newt_grid_basic_window' => ['resource', 'text'=>'resource', 'middle'=>'resource', 'buttons'=>'resource'], 'newt_grid_free' => ['void', 'grid'=>'resource', 'recurse'=>'bool'], 'newt_grid_get_size' => ['void', 'grid'=>'resource', 'width'=>'int', 'height'=>'int'], 'newt_grid_h_close_stacked' => ['resource', 'element1_type'=>'int', 'element1'=>'resource', '...args='=>'resource'], 'newt_grid_h_stacked' => ['resource', 'element1_type'=>'int', 'element1'=>'resource', '...args='=>'resource'], 'newt_grid_place' => ['void', 'grid'=>'resource', 'left'=>'int', 'top'=>'int'], 'newt_grid_set_field' => ['void', 'grid'=>'resource', 'col'=>'int', 'row'=>'int', 'type'=>'int', 'val'=>'resource', 'pad_left'=>'int', 'pad_top'=>'int', 'pad_right'=>'int', 'pad_bottom'=>'int', 'anchor'=>'int', 'flags='=>'int'], 'newt_grid_simple_window' => ['resource', 'text'=>'resource', 'middle'=>'resource', 'buttons'=>'resource'], 'newt_grid_v_close_stacked' => ['resource', 'element1_type'=>'int', 'element1'=>'resource', '...args='=>'resource'], 'newt_grid_v_stacked' => ['resource', 'element1_type'=>'int', 'element1'=>'resource', '...args='=>'resource'], 'newt_grid_wrapped_window' => ['void', 'grid'=>'resource', 'title'=>'string'], 'newt_grid_wrapped_window_at' => ['void', 'grid'=>'resource', 'title'=>'string', 'left'=>'int', 'top'=>'int'], 'newt_init' => ['int'], 'newt_label' => ['resource', 'left'=>'int', 'top'=>'int', 'text'=>'string'], 'newt_label_set_text' => ['void', 'label'=>'resource', 'text'=>'string'], 'newt_listbox' => ['resource', 'left'=>'int', 'top'=>'int', 'height'=>'int', 'flags='=>'int'], 'newt_listbox_append_entry' => ['void', 'listbox'=>'resource', 'text'=>'string', 'data'=>'mixed'], 'newt_listbox_clear' => ['void', 'listobx'=>'resource'], 'newt_listbox_clear_selection' => ['void', 'listbox'=>'resource'], 'newt_listbox_delete_entry' => ['void', 'listbox'=>'resource', 'key'=>'mixed'], 'newt_listbox_get_current' => ['string', 'listbox'=>'resource'], 'newt_listbox_get_selection' => ['array', 'listbox'=>'resource'], 'newt_listbox_insert_entry' => ['void', 'listbox'=>'resource', 'text'=>'string', 'data'=>'mixed', 'key'=>'mixed'], 'newt_listbox_item_count' => ['int', 'listbox'=>'resource'], 'newt_listbox_select_item' => ['void', 'listbox'=>'resource', 'key'=>'mixed', 'sense'=>'int'], 'newt_listbox_set_current' => ['void', 'listbox'=>'resource', 'num'=>'int'], 'newt_listbox_set_current_by_key' => ['void', 'listbox'=>'resource', 'key'=>'mixed'], 'newt_listbox_set_data' => ['void', 'listbox'=>'resource', 'num'=>'int', 'data'=>'mixed'], 'newt_listbox_set_entry' => ['void', 'listbox'=>'resource', 'num'=>'int', 'text'=>'string'], 'newt_listbox_set_width' => ['void', 'listbox'=>'resource', 'width'=>'int'], 'newt_listitem' => ['resource', 'left'=>'int', 'top'=>'int', 'text'=>'string', 'is_default'=>'bool', 'prev_item'=>'resource', 'data'=>'mixed', 'flags='=>'int'], 'newt_listitem_get_data' => ['mixed', 'item'=>'resource'], 'newt_listitem_set' => ['void', 'item'=>'resource', 'text'=>'string'], 'newt_open_window' => ['int', 'left'=>'int', 'top'=>'int', 'width'=>'int', 'height'=>'int', 'title='=>'string'], 'newt_pop_help_line' => ['void'], 'newt_pop_window' => ['void'], 'newt_push_help_line' => ['void', 'text='=>'string'], 'newt_radio_get_current' => ['resource', 'set_member'=>'resource'], 'newt_radiobutton' => ['resource', 'left'=>'int', 'top'=>'int', 'text'=>'string', 'is_default'=>'bool', 'prev_button='=>'resource'], 'newt_redraw_help_line' => ['void'], 'newt_reflow_text' => ['string', 'text'=>'string', 'width'=>'int', 'flex_down'=>'int', 'flex_up'=>'int', 'actual_width'=>'int', 'actual_height'=>'int'], 'newt_refresh' => ['void'], 'newt_resize_screen' => ['void', 'redraw='=>'bool'], 'newt_resume' => ['void'], 'newt_run_form' => ['resource', 'form'=>'resource'], 'newt_scale' => ['resource', 'left'=>'int', 'top'=>'int', 'width'=>'int', 'full_value'=>'int'], 'newt_scale_set' => ['void', 'scale'=>'resource', 'amount'=>'int'], 'newt_scrollbar_set' => ['void', 'scrollbar'=>'resource', 'where'=>'int', 'total'=>'int'], 'newt_set_help_callback' => ['void', 'function'=>'mixed'], 'newt_set_suspend_callback' => ['void', 'function'=>'callable', 'data'=>'mixed'], 'newt_suspend' => ['void'], 'newt_textbox' => ['resource', 'left'=>'int', 'top'=>'int', 'width'=>'int', 'height'=>'int', 'flags='=>'int'], 'newt_textbox_get_num_lines' => ['int', 'textbox'=>'resource'], 'newt_textbox_reflowed' => ['resource', 'left'=>'int', 'top'=>'int', 'text'=>'char', 'width'=>'int', 'flex_down'=>'int', 'flex_up'=>'int', 'flags='=>'int'], 'newt_textbox_set_height' => ['void', 'textbox'=>'resource', 'height'=>'int'], 'newt_textbox_set_text' => ['void', 'textbox'=>'resource', 'text'=>'string'], 'newt_vertical_scrollbar' => ['resource', 'left'=>'int', 'top'=>'int', 'height'=>'int', 'normal_colorset='=>'int', 'thumb_colorset='=>'int'], 'newt_wait_for_key' => ['void'], 'newt_win_choice' => ['int', 'title'=>'string', 'button1_text'=>'string', 'button2_text'=>'string', 'format'=>'string', 'args='=>'mixed', '...args='=>'mixed'], 'newt_win_entries' => ['int', 'title'=>'string', 'text'=>'string', 'suggested_width'=>'int', 'flex_down'=>'int', 'flex_up'=>'int', 'data_width'=>'int', 'items'=>'array', 'button1'=>'string', '...args='=>'string'], 'newt_win_menu' => ['int', 'title'=>'string', 'text'=>'string', 'suggestedwidth'=>'int', 'flexdown'=>'int', 'flexup'=>'int', 'maxlistheight'=>'int', 'items'=>'array', 'listitem'=>'int', 'button1='=>'string', '...args='=>'string'], 'newt_win_message' => ['void', 'title'=>'string', 'button_text'=>'string', 'format'=>'string', 'args='=>'mixed', '...args='=>'mixed'], 'newt_win_messagev' => ['void', 'title'=>'string', 'button_text'=>'string', 'format'=>'string', 'args'=>'array'], 'newt_win_ternary' => ['int', 'title'=>'string', 'button1_text'=>'string', 'button2_text'=>'string', 'button3_text'=>'string', 'format'=>'string', 'args='=>'mixed', '...args='=>'mixed'], 'next' => ['mixed', '&rw_array_arg'=>'array|object'], 'ngettext' => ['string', 'msgid1'=>'string', 'msgid2'=>'string', 'n'=>'int'], 'nl2br' => ['string', 'str'=>'string', 'is_xhtml='=>'bool'], 'nl_langinfo' => ['string|false', 'item'=>'int'], 'NoRewindIterator::__construct' => ['void', 'iterator'=>'Iterator'], 'NoRewindIterator::current' => ['mixed'], 'NoRewindIterator::getInnerIterator' => ['Iterator'], 'NoRewindIterator::key' => ['mixed'], 'NoRewindIterator::next' => ['void'], 'NoRewindIterator::rewind' => ['void'], 'NoRewindIterator::valid' => ['bool'], 'Normalizer::getRawDecomposition' => ['string|null', 'input'=>'string'], 'Normalizer::isNormalized' => ['bool', 'input'=>'string', 'form='=>'int'], 'Normalizer::normalize' => ['string|false', 'input'=>'string', 'form='=>'int'], 'normalizer_get_raw_decomposition' => ['string|null', 'input'=>'string'], 'normalizer_is_normalized' => ['bool', 'input'=>'string', 'form='=>'int'], 'normalizer_normalize' => ['string|false', 'input'=>'string', 'form='=>'int'], 'notes_body' => ['array', 'server'=>'string', 'mailbox'=>'string', 'msg_number'=>'int'], 'notes_copy_db' => ['bool', 'from_database_name'=>'string', 'to_database_name'=>'string'], 'notes_create_db' => ['bool', 'database_name'=>'string'], 'notes_create_note' => ['bool', 'database_name'=>'string', 'form_name'=>'string'], 'notes_drop_db' => ['bool', 'database_name'=>'string'], 'notes_find_note' => ['int', 'database_name'=>'string', 'name'=>'string', 'type='=>'string'], 'notes_header_info' => ['object', 'server'=>'string', 'mailbox'=>'string', 'msg_number'=>'int'], 'notes_list_msgs' => ['bool', 'db'=>'string'], 'notes_mark_read' => ['bool', 'database_name'=>'string', 'user_name'=>'string', 'note_id'=>'string'], 'notes_mark_unread' => ['bool', 'database_name'=>'string', 'user_name'=>'string', 'note_id'=>'string'], 'notes_nav_create' => ['bool', 'database_name'=>'string', 'name'=>'string'], 'notes_search' => ['array', 'database_name'=>'string', 'keywords'=>'string'], 'notes_unread' => ['array', 'database_name'=>'string', 'user_name'=>'string'], 'notes_version' => ['float', 'database_name'=>'string'], 'nsapi_request_headers' => ['array'], 'nsapi_response_headers' => ['array'], 'nsapi_virtual' => ['bool', 'uri'=>'string'], 'nthmac' => ['string', 'clent'=>'string', 'data'=>'string'], 'number_format' => ['non-empty-string', 'number'=>'float', 'num_decimal_places='=>'int', 'dec_separator='=>'string|null', 'thousands_separator='=>'string|null'], 'NumberFormatter::__construct' => ['void', 'locale'=>'string', 'style'=>'int', 'pattern='=>'string'], 'NumberFormatter::create' => ['NumberFormatter', 'locale'=>'string', 'style'=>'int', 'pattern='=>'string'], 'NumberFormatter::format' => ['string|false', 'num'=>'', 'type='=>'int'], 'NumberFormatter::formatCurrency' => ['string|false', 'num'=>'float', 'currency'=>'string'], 'NumberFormatter::getAttribute' => ['int', 'attr'=>'int'], 'NumberFormatter::getErrorCode' => ['int'], 'NumberFormatter::getErrorMessage' => ['string'], 'NumberFormatter::getLocale' => ['string', 'type='=>'int'], 'NumberFormatter::getPattern' => ['string'], 'NumberFormatter::getSymbol' => ['string', 'attr'=>'int'], 'NumberFormatter::getTextAttribute' => ['string', 'attr'=>'int'], 'NumberFormatter::parse' => ['float|false', 'str'=>'string', 'type='=>'int', '&rw_position='=>'int'], 'NumberFormatter::parseCurrency' => ['float|false', 'str'=>'string', '&w_currency'=>'string', '&rw_position='=>'int'], 'NumberFormatter::setAttribute' => ['bool', 'attr'=>'int', 'value'=>''], 'NumberFormatter::setPattern' => ['bool', 'pattern'=>'string'], 'NumberFormatter::setSymbol' => ['bool', 'attr'=>'int', 'symbol'=>'string'], 'NumberFormatter::setTextAttribute' => ['bool', 'attr'=>'int', 'value'=>'string'], 'numfmt_create' => ['NumberFormatter', 'locale'=>'string', 'style'=>'int', 'pattern='=>'string'], 'numfmt_format' => ['string|false', 'fmt'=>'numberformatter', 'value='=>'float', 'type='=>'int'], 'numfmt_format_currency' => ['string|false', 'fmt'=>'numberformatter', 'value'=>'float', 'currency'=>'string'], 'numfmt_get_attribute' => ['int|false', 'fmt'=>'numberformatter', 'attr'=>'int'], 'numfmt_get_error_code' => ['int', 'fmt'=>'numberformatter'], 'numfmt_get_error_message' => ['string', 'fmt'=>'numberformatter'], 'numfmt_get_locale' => ['string|false', 'fmt'=>'numberformatter', 'type='=>'int'], 'numfmt_get_pattern' => ['string|false', 'fmt'=>'numberformatter'], 'numfmt_get_symbol' => ['string|false', 'fmt'=>'numberformatter', 'attr'=>'int'], 'numfmt_get_text_attribute' => ['string|false', 'fmt'=>'numberformatter', 'attr'=>'int'], 'numfmt_parse' => ['float|false', 'fmt'=>'numberformatter', 'value'=>'string', 'type='=>'int', '&rw_position='=>'int'], 'numfmt_parse_currency' => ['float|false', 'fmt'=>'numberformatter', 'value'=>'string', '&w_currency'=>'string', '&rw_position='=>'int'], 'numfmt_set_attribute' => ['bool', 'fmt'=>'numberformatter', 'attr'=>'int', 'value'=>'int'], 'numfmt_set_pattern' => ['bool', 'fmt'=>'numberformatter', 'pattern'=>'string'], 'numfmt_set_symbol' => ['bool', 'fmt'=>'numberformatter', 'attr'=>'int', 'value'=>'string'], 'numfmt_set_text_attribute' => ['bool', 'fmt'=>'numberformatter', 'attr'=>'int', 'value'=>'string'], 'OAuth::__construct' => ['void', 'consumer_key'=>'string', 'consumer_secret'=>'string', 'signature_method='=>'string', 'auth_type='=>'int'], 'OAuth::__destruct' => [''], 'OAuth::disableDebug' => ['bool'], 'OAuth::disableRedirects' => ['bool'], 'OAuth::disableSSLChecks' => ['bool'], 'OAuth::enableDebug' => ['bool'], 'OAuth::enableRedirects' => ['bool'], 'OAuth::enableSSLChecks' => ['bool'], 'OAuth::fetch' => ['mixed', 'protected_resource_url'=>'string', 'extra_parameters='=>'array', 'http_method='=>'string', 'http_headers='=>'array'], 'OAuth::generateSignature' => ['string', 'http_method'=>'string', 'url'=>'string', 'extra_parameters='=>'mixed'], 'OAuth::getAccessToken' => ['array|false', 'access_token_url'=>'string', 'auth_session_handle='=>'string', 'verifier_token='=>'string'], 'OAuth::getCAPath' => ['array'], 'OAuth::getLastResponse' => ['string'], 'OAuth::getLastResponseHeaders' => ['string|false'], 'OAuth::getLastResponseInfo' => ['array'], 'OAuth::getRequestHeader' => ['string|false', 'http_method'=>'string', 'url'=>'string', 'extra_parameters='=>'mixed'], 'OAuth::getRequestToken' => ['array|false', 'request_token_url'=>'string', 'callback_url='=>'string'], 'OAuth::setAuthType' => ['bool', 'auth_type'=>'int'], 'OAuth::setCAPath' => ['mixed', 'ca_path='=>'string', 'ca_info='=>'string'], 'OAuth::setNonce' => ['mixed', 'nonce'=>'string'], 'OAuth::setRequestEngine' => ['void', 'reqengine'=>'int'], 'OAuth::setRSACertificate' => ['mixed', 'cert'=>'string'], 'OAuth::setSSLChecks' => ['bool', 'sslcheck'=>'int'], 'OAuth::setTimestamp' => ['mixed', 'timestamp'=>'string'], 'OAuth::setToken' => ['bool', 'token'=>'string', 'token_secret'=>'string'], 'OAuth::setVersion' => ['bool', 'version'=>'string'], 'oauth_get_sbs' => ['string', 'http_method'=>'string', 'uri'=>'string', 'request_parameters='=>'array'], 'oauth_urlencode' => ['string', 'uri'=>'string'], 'OAuthProvider::__construct' => ['void', 'params_array='=>'array'], 'OAuthProvider::addRequiredParameter' => ['bool', 'req_params'=>'string'], 'OAuthProvider::callconsumerHandler' => ['void'], 'OAuthProvider::callTimestampNonceHandler' => ['void'], 'OAuthProvider::calltokenHandler' => ['void'], 'OAuthProvider::checkOAuthRequest' => ['void', 'uri='=>'string', 'method='=>'string'], 'OAuthProvider::consumerHandler' => ['void', 'callback_function'=>'callable'], 'OAuthProvider::generateToken' => ['string', 'size'=>'int', 'strong='=>'bool'], 'OAuthProvider::is2LeggedEndpoint' => ['void', 'params_array'=>'mixed'], 'OAuthProvider::isRequestTokenEndpoint' => ['void', 'will_issue_request_token'=>'bool'], 'OAuthProvider::removeRequiredParameter' => ['bool', 'req_params'=>'string'], 'OAuthProvider::reportProblem' => ['string', 'oauthexception'=>'string', 'send_headers='=>'bool'], 'OAuthProvider::setParam' => ['bool', 'param_key'=>'string', 'param_val='=>'mixed'], 'OAuthProvider::setRequestTokenPath' => ['bool', 'path'=>'string'], 'OAuthProvider::timestampNonceHandler' => ['void', 'callback_function'=>'callable'], 'OAuthProvider::tokenHandler' => ['void', 'callback_function'=>'callable'], 'ob_clean' => ['bool'], 'ob_deflatehandler' => ['string', 'data'=>'string', 'mode'=>'int'], 'ob_end_clean' => ['bool'], 'ob_end_flush' => ['bool'], 'ob_etaghandler' => ['string', 'data'=>'string', 'mode'=>'int'], 'ob_flush' => ['bool'], 'ob_get_clean' => ['string|false'], 'ob_get_contents' => ['string|false'], 'ob_get_flush' => ['string|false'], 'ob_get_length' => ['int|false'], 'ob_get_level' => ['int'], 'ob_get_status' => ['array', 'full_status='=>'bool'], 'ob_gzhandler' => ['string|false', 'data'=>'string', 'flags'=>'int'], 'ob_iconv_handler' => ['string', 'contents'=>'string', 'status'=>'int'], 'ob_implicit_flush' => ['void', 'flag='=>'int'], 'ob_inflatehandler' => ['string', 'data'=>'string', 'mode'=>'int'], 'ob_list_handlers' => ['false|list'], 'ob_start' => ['bool', 'user_function='=>'string|array|callable|null', 'chunk_size='=>'int', 'flags='=>'int'], 'ob_tidyhandler' => ['string', 'input'=>'string', 'mode='=>'int'], 'OCI-Collection::append' => ['bool', 'value'=>'mixed'], 'OCI-Collection::assign' => ['bool', 'from'=>'OCI-Collection'], 'OCI-Collection::assignElem' => ['bool', 'index'=>'int', 'value'=>''], 'OCI-Collection::assignelem' => ['bool', 'index'=>'int', 'value'=>'mixed'], 'OCI-Collection::free' => ['bool'], 'OCI-Collection::getElem' => ['', 'index'=>'int'], 'OCI-Collection::getelem' => ['mixed', 'index'=>'int'], 'OCI-Collection::max' => ['int'], 'OCI-Collection::size' => ['int'], 'OCI-Collection::trim' => ['bool', 'num'=>'int'], 'OCI-Lob::append' => ['bool', 'lob_from'=>'OCI-Lob'], 'OCI-Lob::close' => ['bool'], 'OCI-Lob::eof' => ['bool'], 'OCI-Lob::erase' => ['int', 'offset='=>'int', 'length='=>'int'], 'OCI-Lob::export' => ['bool', 'filename'=>'string', 'start='=>'int', 'length='=>'int'], 'OCI-Lob::flush' => ['bool', 'flag='=>'int'], 'OCI-Lob::free' => ['bool'], 'OCI-Lob::getBuffering' => ['bool'], 'OCI-Lob::getbuffering' => ['bool'], 'OCI-Lob::import' => ['bool', 'filename'=>'string'], 'OCI-Lob::load' => ['string'], 'OCI-Lob::read' => ['string', 'length'=>'int'], 'OCI-Lob::rewind' => ['bool'], 'OCI-Lob::save' => ['bool', 'data'=>'string', 'offset='=>'int'], 'OCI-Lob::savefile' => ['bool', 'filename'=>''], 'OCI-Lob::seek' => ['bool', 'offset'=>'int', 'whence='=>'int'], 'OCI-Lob::setBuffering' => ['bool', 'on_off'=>'bool'], 'OCI-Lob::setbuffering' => ['bool', 'on_off'=>'bool'], 'OCI-Lob::size' => ['int'], 'OCI-Lob::tell' => ['int'], 'OCI-Lob::truncate' => ['bool', 'length='=>'int'], 'OCI-Lob::write' => ['int', 'data'=>'string', 'length='=>'int'], 'OCI-Lob::writeTemporary' => ['bool', 'data'=>'string', 'lob_type='=>'int'], 'OCI-Lob::writetofile' => ['bool', 'filename'=>'', 'start'=>'', 'length'=>''], 'oci_bind_array_by_name' => ['bool', 'stmt'=>'resource', 'name'=>'string', '&rw_var'=>'array', 'max_table_length'=>'int', 'max_item_length='=>'int', 'type='=>'int'], 'oci_bind_by_name' => ['bool', 'stmt'=>'resource', 'name'=>'string', '&rw_var'=>'mixed', 'maxlength='=>'int', 'type='=>'int'], 'oci_cancel' => ['bool', 'stmt'=>'resource'], 'oci_client_version' => ['string'], 'oci_close' => ['bool', 'connection'=>'resource'], 'oci_collection_append' => ['bool', 'value'=>'string'], 'oci_collection_assign' => ['bool', 'from'=>'OCI-Collection'], 'oci_collection_element_assign' => ['bool', 'index'=>'int', 'val'=>'string'], 'oci_collection_element_get' => ['string|false', 'ndx'=>'int'], 'oci_collection_max' => ['int|false'], 'oci_collection_size' => ['int|false'], 'oci_collection_trim' => ['bool', 'num'=>'int'], 'oci_commit' => ['bool', 'connection'=>'resource'], 'oci_connect' => ['resource|false', 'user'=>'string', 'pass'=>'string', 'db='=>'string', 'charset='=>'string', 'session_mode='=>'int'], 'oci_define_by_name' => ['bool', 'stmt'=>'resource', 'name'=>'string', '&w_var'=>'mixed', 'type='=>'int'], 'oci_error' => ['array|false', 'resource='=>'resource'], 'oci_execute' => ['bool', 'stmt'=>'resource', 'mode='=>'int'], 'oci_fetch' => ['bool', 'stmt'=>'resource'], 'oci_fetch_all' => ['int|false', 'stmt'=>'resource', '&w_output'=>'array', 'skip='=>'int', 'maxrows='=>'int', 'flags='=>'int'], 'oci_fetch_array' => ['array|false', 'stmt'=>'resource', 'mode='=>'int'], 'oci_fetch_assoc' => ['array|false', 'stmt'=>'resource'], 'oci_fetch_object' => ['object|false', 'stmt'=>'resource'], 'oci_fetch_row' => ['array|false', 'stmt'=>'resource'], 'oci_field_is_null' => ['bool', 'stmt'=>'resource', 'col'=>'mixed'], 'oci_field_name' => ['string|false', 'stmt'=>'resource', 'col'=>'mixed'], 'oci_field_precision' => ['int|false', 'stmt'=>'resource', 'col'=>'mixed'], 'oci_field_scale' => ['int|false', 'stmt'=>'resource', 'col'=>'mixed'], 'oci_field_size' => ['int|false', 'stmt'=>'resource', 'col'=>'mixed'], 'oci_field_type' => ['mixed', 'stmt'=>'resource', 'col'=>'mixed'], 'oci_field_type_raw' => ['int|false', 'stmt'=>'resource', 'col'=>'mixed'], 'oci_free_collection' => ['bool'], 'oci_free_cursor' => ['bool', 'stmt'=>'resource'], 'oci_free_descriptor' => ['bool'], 'oci_free_statement' => ['bool', 'stmt'=>'resource'], 'oci_get_implicit' => ['bool', 'stmt'=>''], 'oci_get_implicit_resultset' => ['resource|false', 'statement'=>'resource'], 'oci_internal_debug' => ['void', 'onoff'=>'bool'], 'oci_lob_append' => ['bool', 'lob'=>'OCI-Lob'], 'oci_lob_close' => ['bool'], 'oci_lob_copy' => ['bool', 'lob_to'=>'OCI-Lob', 'lob_from'=>'OCI-Lob', 'length='=>'int'], 'oci_lob_eof' => ['bool'], 'oci_lob_erase' => ['int|false', 'offset'=>'int', 'length'=>'int'], 'oci_lob_export' => ['bool', 'filename'=>'string', 'start'=>'int', 'length'=>'int'], 'oci_lob_flush' => ['bool', 'flag'=>'int'], 'oci_lob_import' => ['bool', 'filename'=>'string'], 'oci_lob_is_equal' => ['bool', 'lob1'=>'OCI-Lob', 'lob2'=>'OCI-Lob'], 'oci_lob_load' => ['string|false'], 'oci_lob_read' => ['string|false', 'length'=>'int'], 'oci_lob_rewind' => ['bool'], 'oci_lob_save' => ['bool', 'data'=>'string', 'offset'=>'int'], 'oci_lob_seek' => ['bool', 'offset'=>'int', 'whence'=>'int'], 'oci_lob_size' => ['int|false'], 'oci_lob_tell' => ['int|false'], 'oci_lob_truncate' => ['bool', 'length'=>'int'], 'oci_lob_write' => ['int|false', 'string'=>'string', 'length'=>'int'], 'oci_lob_write_temporary' => ['bool', 'var'=>'string', 'lob_type'=>'int'], 'oci_new_collection' => ['OCI-Collection|false', 'connection'=>'resource', 'tdo'=>'string', 'schema='=>'string'], 'oci_new_connect' => ['resource|false', 'user'=>'string', 'pass'=>'string', 'db='=>'string', 'charset='=>'string', 'session_mode='=>'int'], 'oci_new_cursor' => ['resource|false', 'connection'=>'resource'], 'oci_new_descriptor' => ['OCI-Lob|false', 'connection'=>'resource', 'type='=>'int'], 'oci_num_fields' => ['0|positive-int|false', 'stmt'=>'resource'], 'oci_num_rows' => ['0|positive-int|false', 'stmt'=>'resource'], 'oci_parse' => ['resource|false', 'connection'=>'resource', 'statement'=>'string'], 'oci_password_change' => ['bool', 'connection'=>'', 'username'=>'string', 'old_password'=>'string', 'new_password'=>'string'], 'oci_pconnect' => ['resource|false', 'user'=>'string', 'pass'=>'string', 'db='=>'string', 'charset='=>'string', 'session_mode='=>'int'], 'oci_register_taf_callback' => ['bool', 'connection'=>'resource', 'callback='=>'callable'], 'oci_result' => ['string|false', 'stmt'=>'resource', 'column'=>'mixed'], 'oci_rollback' => ['bool', 'connection'=>'resource'], 'oci_server_version' => ['string|false', 'connection'=>'resource'], 'oci_set_action' => ['bool', 'connection'=>'resource', 'value'=>'string'], 'oci_set_client_identifier' => ['bool', 'connection'=>'resource', 'value'=>'string'], 'oci_set_client_info' => ['bool', 'connection'=>'resource', 'value'=>'string'], 'oci_set_db_operation' => ['bool', 'connection'=>'resource', 'value'=>'string'], 'oci_set_edition' => ['bool', 'value'=>'string'], 'oci_set_module_name' => ['bool', 'connection'=>'resource', 'value'=>'string'], 'oci_set_prefetch' => ['bool', 'stmt'=>'resource', 'prefetch_rows'=>'int'], 'oci_statement_type' => ['string|false', 'stmt'=>'resource'], 'oci_unregister_taf_callback' => ['bool', 'connection'=>'resource'], 'ocifetchinto' => ['int|false', 'stmt'=>'', '&w_output'=>'array', 'mode='=>'int'], 'ocigetbufferinglob' => ['bool'], 'ocisetbufferinglob' => ['bool', 'flag'=>'bool'], 'octdec' => ['int|float', 'octal_number'=>'string'], 'odbc_autocommit' => ['mixed', 'connection_id'=>'resource', 'onoff='=>'bool'], 'odbc_binmode' => ['bool', 'result_id'=>'int', 'mode'=>'int'], 'odbc_close' => ['void', 'connection_id'=>'resource'], 'odbc_close_all' => ['void'], 'odbc_columnprivileges' => ['resource', 'connection_id'=>'resource', 'catalog'=>'string', 'schema'=>'string', 'table'=>'string', 'column'=>'string'], 'odbc_columns' => ['resource', 'connection_id'=>'resource', 'qualifier='=>'string', 'owner='=>'string', 'table_name='=>'string', 'column_name='=>'string'], 'odbc_commit' => ['bool', 'connection_id'=>'resource'], 'odbc_connect' => ['resource|false', 'dsn'=>'string', 'user'=>'string', 'password'=>'string', 'cursor_option='=>'int'], 'odbc_cursor' => ['string|false', 'result_id'=>'resource'], 'odbc_data_source' => ['array|false', 'connection_id'=>'resource', 'fetch_type'=>'int'], 'odbc_do' => ['resource', 'connection_id'=>'resource', 'query'=>'string', 'flags='=>'int'], 'odbc_error' => ['string', 'connection_id='=>'resource'], 'odbc_errormsg' => ['string', 'connection_id='=>'resource'], 'odbc_exec' => ['resource|false', 'connection_id'=>'resource', 'query'=>'string', 'flags='=>'int'], 'odbc_execute' => ['bool', 'result_id'=>'resource', 'parameters_array='=>'array'], 'odbc_fetch_array' => ['array|false', 'result'=>'resource', 'rownumber='=>'int'], 'odbc_fetch_into' => ['int|false', 'result_id'=>'resource', '&w_result_array'=>'array', 'rownumber='=>'int'], 'odbc_fetch_object' => ['object|false', 'result'=>'int', 'rownumber='=>'int'], 'odbc_fetch_row' => ['bool', 'result_id'=>'resource', 'row_number='=>'int'], 'odbc_field_len' => ['int|false', 'result_id'=>'resource', 'field_number'=>'int'], 'odbc_field_name' => ['string|false', 'result_id'=>'resource', 'field_number'=>'int'], 'odbc_field_num' => ['int|false', 'result_id'=>'resource', 'field_name'=>'string'], 'odbc_field_precision' => ['int|false', 'result_id'=>'resource', 'field_number'=>'int'], 'odbc_field_scale' => ['int|false', 'result_id'=>'resource', 'field_number'=>'int'], 'odbc_field_type' => ['string|false', 'result_id'=>'resource', 'field_number'=>'int'], 'odbc_foreignkeys' => ['resource', 'connection_id'=>'resource', 'pk_qualifier'=>'string', 'pk_owner'=>'string', 'pk_table'=>'string', 'fk_qualifier'=>'string', 'fk_owner'=>'string', 'fk_table'=>'string'], 'odbc_free_result' => ['bool', 'result_id'=>'resource'], 'odbc_gettypeinfo' => ['resource', 'connection_id'=>'resource', 'data_type='=>'int'], 'odbc_longreadlen' => ['bool', 'result_id'=>'resource', 'length'=>'int'], 'odbc_next_result' => ['bool', 'result_id'=>'resource'], 'odbc_num_fields' => ['int', 'result_id'=>'resource'], 'odbc_num_rows' => ['int', 'result_id'=>'resource'], 'odbc_pconnect' => ['resource', 'dsn'=>'string', 'user'=>'string', 'password'=>'string', 'cursor_option='=>'int'], 'odbc_prepare' => ['resource|false', 'connection_id'=>'resource', 'query'=>'string'], 'odbc_primarykeys' => ['resource', 'connection_id'=>'resource', 'qualifier'=>'string', 'owner'=>'string', 'table'=>'string'], 'odbc_procedurecolumns' => ['resource', 'connection_id'=>'', 'qualifier'=>'string', 'owner'=>'string', 'proc'=>'string', 'column'=>'string'], 'odbc_procedures' => ['resource', 'connection_id'=>'', 'qualifier'=>'string', 'owner'=>'string', 'name'=>'string'], 'odbc_result' => ['mixed', 'result_id'=>'resource', 'field'=>'mixed'], 'odbc_result_all' => ['int|false', 'result_id'=>'resource', 'format='=>'string'], 'odbc_rollback' => ['bool', 'connection_id'=>'resource'], 'odbc_setoption' => ['bool', 'result_id'=>'resource', 'which'=>'int', 'option'=>'int', 'value'=>'int'], 'odbc_specialcolumns' => ['resource', 'connection_id'=>'resource', 'type'=>'int', 'qualifier'=>'string', 'owner'=>'string', 'table'=>'string', 'scope'=>'int', 'nullable'=>'int'], 'odbc_statistics' => ['resource', 'connection_id'=>'resource', 'qualifier'=>'string', 'owner'=>'string', 'name'=>'string', 'unique'=>'int', 'accuracy'=>'int'], 'odbc_tableprivileges' => ['resource', 'connection_id'=>'resource', 'qualifier'=>'string', 'owner'=>'string', 'name'=>'string'], 'odbc_tables' => ['resource', 'connection_id'=>'resource', 'qualifier='=>'string', 'owner='=>'string', 'name='=>'string', 'table_types='=>'string'], 'opcache_compile_file' => ['bool', 'file'=>'string'], 'opcache_get_configuration' => ['array|false'], 'opcache_get_status' => ['array|false', 'get_scripts='=>'bool'], 'opcache_invalidate' => ['bool', 'script'=>'string', 'force='=>'bool'], 'opcache_is_script_cached' => ['bool', 'script'=>'string'], 'opcache_reset' => ['bool'], 'openal_buffer_create' => ['resource'], 'openal_buffer_data' => ['bool', 'buffer'=>'resource', 'format'=>'int', 'data'=>'string', 'freq'=>'int'], 'openal_buffer_destroy' => ['bool', 'buffer'=>'resource'], 'openal_buffer_get' => ['int', 'buffer'=>'resource', 'property'=>'int'], 'openal_buffer_loadwav' => ['bool', 'buffer'=>'resource', 'wavfile'=>'string'], 'openal_context_create' => ['resource', 'device'=>'resource'], 'openal_context_current' => ['bool', 'context'=>'resource'], 'openal_context_destroy' => ['bool', 'context'=>'resource'], 'openal_context_process' => ['bool', 'context'=>'resource'], 'openal_context_suspend' => ['bool', 'context'=>'resource'], 'openal_device_close' => ['bool', 'device'=>'resource'], 'openal_device_open' => ['resource|false', 'device_desc='=>'string'], 'openal_listener_get' => ['mixed', 'property'=>'int'], 'openal_listener_set' => ['bool', 'property'=>'int', 'setting'=>'mixed'], 'openal_source_create' => ['resource'], 'openal_source_destroy' => ['bool', 'source'=>'resource'], 'openal_source_get' => ['mixed', 'source'=>'resource', 'property'=>'int'], 'openal_source_pause' => ['bool', 'source'=>'resource'], 'openal_source_play' => ['bool', 'source'=>'resource'], 'openal_source_rewind' => ['bool', 'source'=>'resource'], 'openal_source_set' => ['bool', 'source'=>'resource', 'property'=>'int', 'setting'=>'mixed'], 'openal_source_stop' => ['bool', 'source'=>'resource'], 'openal_stream' => ['resource', 'source'=>'resource', 'format'=>'int', 'rate'=>'int'], 'opendir' => ['resource|false', 'path'=>'string', 'context='=>'resource'], 'openlog' => ['bool', 'ident'=>'string', 'option'=>'int', 'facility'=>'int'], 'openssl_cipher_iv_length' => ['int|false', 'method'=>'string'], 'openssl_csr_export' => ['bool', 'csr'=>'string|resource', '&w_out'=>'string', 'notext='=>'bool'], 'openssl_csr_export_to_file' => ['bool', 'csr'=>'string|resource', 'outfilename'=>'string', 'notext='=>'bool'], 'openssl_csr_get_public_key' => ['resource|false', 'csr'=>'string|resource', 'use_shortnames='=>'bool'], 'openssl_csr_get_subject' => ['array|false', 'csr'=>'string|resource', 'use_shortnames='=>'bool'], 'openssl_csr_new' => ['resource|false', 'dn'=>'array', '&w_privkey'=>'resource', 'configargs='=>'array', 'extraattribs='=>'array'], 'openssl_csr_sign' => ['resource|false', 'csr'=>'string|resource', 'x509'=>'string|resource|null', 'priv_key'=>'string|resource|array', 'days'=>'int', 'config_args='=>'array', 'serial='=>'int'], 'openssl_decrypt' => ['string|false', 'data'=>'string', 'method'=>'string', 'key'=>'string', 'options='=>'int', 'iv='=>'string', 'tag='=>'string', 'aad='=>'string'], 'openssl_dh_compute_key' => ['string|false', 'pub_key'=>'string', 'dh_key'=>'resource'], 'openssl_digest' => ['string|false', 'data'=>'string', 'method'=>'string', 'raw_output='=>'bool'], 'openssl_encrypt' => ['string|false', 'data'=>'string', 'method'=>'string', 'key'=>'string', 'options='=>'int', 'iv='=>'string', '&w_tag='=>'string', 'aad='=>'string', 'tag_length='=>'int'], 'openssl_error_string' => ['string|false'], 'openssl_free_key' => ['void', 'key_identifier'=>'resource'], 'openssl_get_cert_locations' => ['array'], 'openssl_get_cipher_methods' => ['list', 'aliases='=>'bool'], 'openssl_get_curve_names' => ['list|false'], 'openssl_get_md_methods' => ['list', 'aliases='=>'bool'], 'openssl_get_privatekey' => ['resource|false', 'key'=>'string', 'passphrase='=>'string'], 'openssl_get_publickey' => ['resource|false', 'cert'=>'resource|string'], 'openssl_open' => ['bool', 'sealed_data'=>'string', '&w_open_data'=>'string', 'env_key'=>'string', 'priv_key_id'=>'string|array|resource', 'method='=>'string', 'iv='=>'string'], 'openssl_pbkdf2' => ['string|false', 'password'=>'string', 'salt'=>'string', 'key_length'=>'int', 'iterations'=>'int', 'digest_algorithm'=>'string'], 'openssl_pkcs12_export' => ['bool', 'x509'=>'string|resource', '&w_out'=>'string', 'priv_key'=>'string|array|resource', 'pass'=>'string', 'args='=>'array'], 'openssl_pkcs12_export_to_file' => ['bool', 'x509'=>'string|resource', 'filename'=>'string', 'priv_key'=>'string|array|resource', 'pass'=>'string', 'args='=>'array'], 'openssl_pkcs12_read' => ['bool', 'pkcs12'=>'string', '&w_certs'=>'array', 'pass'=>'string'], 'openssl_pkcs7_decrypt' => ['bool', 'infilename'=>'string', 'outfilename'=>'string', 'recipcert'=>'string|resource', 'recipkey='=>'string|resource|array'], 'openssl_pkcs7_encrypt' => ['bool', 'infile'=>'string', 'outfile'=>'string', 'recipcerts'=>'string|resource|array', 'headers'=>'array', 'flags='=>'int', 'cipherid='=>'int'], 'openssl_pkcs7_read' => ['bool', 'infilename'=>'string', '&w_certs'=>'array'], 'openssl_pkcs7_sign' => ['bool', 'infile'=>'string', 'outfile'=>'string', 'signcert'=>'string|resource', 'privkey'=>'string|resource|array', 'headers'=>'array', 'flags='=>'int', 'extracerts='=>'string'], 'openssl_pkcs7_verify' => ['bool|int', 'filename'=>'string', 'flags'=>'int', 'outfilename='=>'string', 'cainfo='=>'array', 'extracerts='=>'string', 'content='=>'string', 'p7bfilename='=>'string'], 'openssl_pkey_derive' => ['string|false', 'pub_key'=>'resource', 'priv_key'=>'resource', 'keylen='=>'int'], 'openssl_pkey_export' => ['bool', 'key'=>'resource', '&w_out'=>'string', 'passphrase='=>'string|null', 'configargs='=>'array'], 'openssl_pkey_export_to_file' => ['bool', 'key'=>'resource|string|array', 'outfilename'=>'string', 'passphrase='=>'string|null', 'configargs='=>'array'], 'openssl_pkey_free' => ['void', 'key'=>'resource'], 'openssl_pkey_get_details' => ['array|false', 'key'=>'resource'], 'openssl_pkey_get_private' => ['resource|false', 'key'=>'string', 'passphrase='=>'string'], 'openssl_pkey_get_public' => ['resource|false', 'certificate'=>'resource|string'], 'openssl_pkey_new' => ['resource|false', 'configargs='=>'array'], 'openssl_private_decrypt' => ['bool', 'data'=>'string', '&w_decrypted'=>'string', 'key'=>'string|resource|array', 'padding='=>'int'], 'openssl_private_encrypt' => ['bool', 'data'=>'string', '&w_crypted'=>'string', 'key'=>'string|resource|array', 'padding='=>'int'], 'openssl_public_decrypt' => ['bool', 'data'=>'string', '&w_decrypted'=>'string', 'key'=>'string|resource', 'padding='=>'int'], 'openssl_public_encrypt' => ['bool', 'data'=>'string', '&w_crypted'=>'string', 'key'=>'string|resource', 'padding='=>'int'], 'openssl_random_pseudo_bytes' => ['string|false', 'length'=>'int', '&w_crypto_strong='=>'bool'], 'openssl_seal' => ['int|false', 'data'=>'string', '&w_sealed_data'=>'string', '&w_env_keys'=>'array', 'pub_key_ids'=>'array', 'method='=>'string', '&w_iv='=>'string'], 'openssl_sign' => ['bool', 'data'=>'string', '&w_signature'=>'string', 'priv_key_id'=>'resource|string', 'signature_alg='=>'int|string'], 'openssl_spki_export' => ['string|null|false', 'spkac'=>'string'], 'openssl_spki_export_challenge' => ['string|null|false', 'spkac'=>'string'], 'openssl_spki_new' => ['string|null|false', 'privkey'=>'resource', 'challenge'=>'string', 'algorithm='=>'int'], 'openssl_spki_verify' => ['bool', 'spkac'=>'string'], 'openssl_verify' => ['-1|0|1|false', 'data'=>'string', 'signature'=>'string', 'pub_key_id'=>'resource|string', 'signature_alg='=>'int|string'], 'openssl_x509_check_private_key' => ['bool', 'cert'=>'string|resource', 'key'=>'string|resource|array'], 'openssl_x509_checkpurpose' => ['bool|int', 'x509cert'=>'string|resource', 'purpose'=>'int', 'cainfo='=>'array', 'untrustedfile='=>'string'], 'openssl_x509_export' => ['bool', 'x509'=>'string|resource', '&w_output'=>'string', 'notext='=>'bool'], 'openssl_x509_export_to_file' => ['bool', 'x509'=>'string|resource', 'outfilename'=>'string', 'notext='=>'bool'], 'openssl_x509_fingerprint' => ['string|false', 'x509'=>'string|resource', 'hash_algorithm='=>'string', 'raw_output='=>'bool'], 'openssl_x509_free' => ['void', 'x509'=>'resource'], 'openssl_x509_parse' => ['array|false', 'x509cert'=>'string|resource', 'shortnames='=>'bool'], 'openssl_x509_read' => ['resource|false', 'x509certdata'=>'string|resource'], 'ord' => ['int<0, 255>', 'character'=>'string'], 'OuterIterator::getInnerIterator' => ['Iterator'], 'OutOfBoundsException::__clone' => ['void'], 'OutOfBoundsException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?OutOfBoundsException)'], 'OutOfBoundsException::__toString' => ['string'], 'OutOfBoundsException::getCode' => ['int'], 'OutOfBoundsException::getFile' => ['string'], 'OutOfBoundsException::getLine' => ['int'], 'OutOfBoundsException::getMessage' => ['string'], 'OutOfBoundsException::getPrevious' => ['Throwable|OutOfBoundsException|null'], 'OutOfBoundsException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'OutOfBoundsException::getTraceAsString' => ['string'], 'OutOfRangeException::__clone' => ['void'], 'OutOfRangeException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?OutOfRangeException)'], 'OutOfRangeException::__toString' => ['string'], 'OutOfRangeException::getCode' => ['int'], 'OutOfRangeException::getFile' => ['string'], 'OutOfRangeException::getLine' => ['int'], 'OutOfRangeException::getMessage' => ['string'], 'OutOfRangeException::getPrevious' => ['Throwable|OutOfRangeException|null'], 'OutOfRangeException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'OutOfRangeException::getTraceAsString' => ['string'], 'output_add_rewrite_var' => ['bool', 'name'=>'string', 'value'=>'string'], 'output_reset_rewrite_vars' => ['bool'], 'OverflowException::__clone' => ['void'], 'OverflowException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?OverflowException)'], 'OverflowException::__toString' => ['string'], 'OverflowException::getCode' => ['int'], 'OverflowException::getFile' => ['string'], 'OverflowException::getLine' => ['int'], 'OverflowException::getMessage' => ['string'], 'OverflowException::getPrevious' => ['Throwable|OverflowException|null'], 'OverflowException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'OverflowException::getTraceAsString' => ['string'], 'overload' => ['', 'class_name'=>'string'], 'override_function' => ['bool', 'function_name'=>'string', 'function_args'=>'string', 'function_code'=>'string'], 'pack' => ['string', 'format'=>'string', '...args='=>'mixed'], 'ParentIterator::__construct' => ['void', 'iterator'=>'RecursiveIterator'], 'ParentIterator::accept' => ['bool'], 'ParentIterator::getChildren' => ['ParentIterator'], 'ParentIterator::hasChildren' => ['bool'], 'ParentIterator::next' => ['void'], 'ParentIterator::rewind' => ['void'], 'ParentIterator::valid' => [''], 'Parle\Lexer::advance' => ['void'], 'Parle\Lexer::build' => ['void'], 'Parle\Lexer::callout' => ['void', 'id'=>'int', 'callback'=>'callable'], 'Parle\Lexer::consume' => ['void', 'data'=>'string'], 'Parle\Lexer::dump' => ['void'], 'Parle\Lexer::getToken' => ['Parle\Token'], 'Parle\Lexer::insertMacro' => ['void', 'name'=>'string', 'regex'=>'string'], 'Parle\Lexer::push' => ['void', 'regex'=>'string', 'id'=>'int'], 'Parle\Lexer::reset' => ['void', 'pos'=>'int'], 'Parle\Parser::advance' => ['void'], 'Parle\Parser::build' => ['void'], 'Parle\Parser::consume' => ['void', 'data'=>'string', 'lexer'=>'Parle\Lexer'], 'Parle\Parser::dump' => ['void'], 'Parle\Parser::errorInfo' => ['Parle\ErrorInfo'], 'Parle\Parser::left' => ['void', 'token'=>'string'], 'Parle\Parser::nonassoc' => ['void', 'token'=>'string'], 'Parle\Parser::precedence' => ['void', 'token'=>'string'], 'Parle\Parser::push' => ['int', 'name'=>'string', 'rule'=>'string'], 'Parle\Parser::reset' => ['void', 'tokenId'=>'int'], 'Parle\Parser::right' => ['void', 'token'=>'string'], 'Parle\Parser::sigil' => ['string', 'idx'=>'array'], 'Parle\Parser::token' => ['void', 'token'=>'string'], 'Parle\Parser::tokenId' => ['int', 'token'=>'string'], 'Parle\Parser::trace' => ['string'], 'Parle\Parser::validate' => ['bool', 'data'=>'string', 'lexer'=>'Parle\Lexer'], 'Parle\RLexer::advance' => ['void'], 'Parle\RLexer::build' => ['void'], 'Parle\RLexer::callout' => ['void', 'id'=>'int', 'callback'=>'callable'], 'Parle\RLexer::consume' => ['void', 'data'=>'string'], 'Parle\RLexer::dump' => ['void'], 'Parle\RLexer::getToken' => ['Parle\Token'], 'Parle\RLexer::push' => ['void', 'state'=>'string', 'regex'=>'string', 'newState'=>'string'], 'Parle\RLexer::pushState' => ['int', 'state'=>'string'], 'Parle\RLexer::reset' => ['void', 'pos'=>'int'], 'Parle\RParser::advance' => ['void'], 'Parle\RParser::build' => ['void'], 'Parle\RParser::consume' => ['void', 'data'=>'string', 'lexer'=>'Parle\Lexer'], 'Parle\RParser::dump' => ['void'], 'Parle\RParser::errorInfo' => ['Parle\ErrorInfo'], 'Parle\RParser::left' => ['void', 'token'=>'string'], 'Parle\RParser::nonassoc' => ['void', 'token'=>'string'], 'Parle\RParser::precedence' => ['void', 'token'=>'string'], 'Parle\RParser::push' => ['int', 'name'=>'string', 'rule'=>'string'], 'Parle\RParser::reset' => ['void', 'tokenId'=>'int'], 'Parle\RParser::right' => ['void', 'token'=>'string'], 'Parle\RParser::sigil' => ['string', 'idx'=>'array'], 'Parle\RParser::token' => ['void', 'token'=>'string'], 'Parle\RParser::tokenId' => ['int', 'token'=>'string'], 'Parle\RParser::trace' => ['string'], 'Parle\RParser::validate' => ['bool', 'data'=>'string', 'lexer'=>'Parle\Lexer'], 'Parle\Stack::pop' => ['void'], 'Parle\Stack::push' => ['void', 'item'=>''], 'parse_ini_file' => ['array|false', 'filename'=>'string', 'process_sections='=>'bool', 'scanner_mode='=>'int'], 'parse_ini_string' => ['array|false', 'ini_string'=>'string', 'process_sections='=>'bool', 'scanner_mode='=>'int'], 'parse_str' => ['void', 'encoded_string'=>'string', '&w_result='=>'array'], 'parse_url' => ['array|int|string|false|null', 'url'=>'string', 'url_component='=>'int'], 'ParseError::__clone' => ['void'], 'ParseError::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?ParseError)'], 'ParseError::__toString' => ['string'], 'ParseError::getCode' => ['int'], 'ParseError::getFile' => ['string'], 'ParseError::getLine' => ['int'], 'ParseError::getMessage' => ['string'], 'ParseError::getPrevious' => ['Throwable|ParseError|null'], 'ParseError::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'ParseError::getTraceAsString' => ['string'], 'parsekit_compile_file' => ['array', 'filename'=>'string', 'errors='=>'array', 'options='=>'int'], 'parsekit_compile_string' => ['array', 'phpcode'=>'string', 'errors='=>'array', 'options='=>'int'], 'parsekit_func_arginfo' => ['array', 'function'=>'mixed'], 'passthru' => ['void', 'command'=>'string', '&w_return_value='=>'int'], 'password_get_info' => ['array', 'hash'=>'string'], 'password_hash' => ['__benevolent', 'password'=>'string', 'algo'=>'string|int', 'options='=>'array'], 'password_make_salt' => ['bool', 'password'=>'string', 'hash'=>'string'], 'password_needs_rehash' => ['bool', 'hash'=>'string', 'algo'=>'int', 'options='=>'array'], 'password_verify' => ['bool', 'password'=>'string', 'hash'=>'string'], 'pathinfo' => ['array|string', 'path'=>'string', 'options='=>'int'], 'pclose' => ['int', 'fp'=>'resource'], 'pcnlt_sigwaitinfo' => ['int', 'set'=>'array', '&w_siginfo'=>'array'], 'pcntl_alarm' => ['int', 'seconds'=>'int'], 'pcntl_async_signals' => ['bool', 'on='=>'bool'], 'pcntl_errno' => ['int'], 'pcntl_exec' => ['bool', 'path'=>'string', 'args='=>'array', 'envs='=>'array'], 'pcntl_fork' => ['int'], 'pcntl_get_last_error' => ['int'], 'pcntl_getpriority' => ['int|false', 'pid='=>'int', 'process_identifier='=>'int'], 'pcntl_setpriority' => ['bool', 'priority'=>'int', 'pid='=>'int', 'process_identifier='=>'int'], 'pcntl_signal' => ['bool', 'signo'=>'int', 'handle'=>'callable|int', 'restart_syscalls='=>'bool'], 'pcntl_signal_dispatch' => ['bool'], 'pcntl_signal_get_handler' => ['int|string', 'signo'=>'int'], 'pcntl_sigprocmask' => ['bool', 'how'=>'int', 'set'=>'array', '&w_oldset='=>'array'], 'pcntl_sigtimedwait' => ['int|false', 'set'=>'array', '&w_siginfo='=>'array', 'seconds='=>'int', 'nanoseconds='=>'int'], 'pcntl_sigwaitinfo' => ['int|false', 'set'=>'array', '&w_siginfo='=>'array'], 'pcntl_strerror' => ['string', 'errno'=>'int'], 'pcntl_wait' => ['int', '&w_status'=>'int', 'options='=>'int', '&w_rusage='=>'array'], 'pcntl_waitpid' => ['int', 'pid'=>'int', '&w_status'=>'int', 'options='=>'int', '&w_rusage='=>'array'], 'pcntl_wexitstatus' => ['int|false', 'status'=>'int'], 'pcntl_wifcontinued' => ['bool', 'status'=>'int'], 'pcntl_wifexited' => ['bool', 'status'=>'int'], 'pcntl_wifsignaled' => ['bool', 'status'=>'int'], 'pcntl_wifstopped' => ['bool', 'status'=>'int'], 'pcntl_wstopsig' => ['int|false', 'status'=>'int'], 'pcntl_wtermsig' => ['int|false', 'status'=>'int'], 'PDF_activate_item' => ['bool', 'pdfdoc'=>'resource', 'id'=>'int'], 'PDF_add_launchlink' => ['bool', 'pdfdoc'=>'resource', 'llx'=>'float', 'lly'=>'float', 'urx'=>'float', 'ury'=>'float', 'filename'=>'string'], 'PDF_add_locallink' => ['bool', 'pdfdoc'=>'resource', 'lowerleftx'=>'float', 'lowerlefty'=>'float', 'upperrightx'=>'float', 'upperrighty'=>'float', 'page'=>'int', 'dest'=>'string'], 'PDF_add_nameddest' => ['bool', 'pdfdoc'=>'resource', 'name'=>'string', 'optlist'=>'string'], 'PDF_add_note' => ['bool', 'pdfdoc'=>'resource', 'llx'=>'float', 'lly'=>'float', 'urx'=>'float', 'ury'=>'float', 'contents'=>'string', 'title'=>'string', 'icon'=>'string', 'open'=>'int'], 'PDF_add_pdflink' => ['bool', 'pdfdoc'=>'resource', 'bottom_left_x'=>'float', 'bottom_left_y'=>'float', 'up_right_x'=>'float', 'up_right_y'=>'float', 'filename'=>'string', 'page'=>'int', 'dest'=>'string'], 'PDF_add_table_cell' => ['int', 'pdfdoc'=>'resource', 'table'=>'int', 'column'=>'int', 'row'=>'int', 'text'=>'string', 'optlist'=>'string'], 'PDF_add_textflow' => ['int', 'pdfdoc'=>'resource', 'textflow'=>'int', 'text'=>'string', 'optlist'=>'string'], 'PDF_add_thumbnail' => ['bool', 'pdfdoc'=>'resource', 'image'=>'int'], 'PDF_add_weblink' => ['bool', 'pdfdoc'=>'resource', 'lowerleftx'=>'float', 'lowerlefty'=>'float', 'upperrightx'=>'float', 'upperrighty'=>'float', 'url'=>'string'], 'PDF_arc' => ['bool', 'p'=>'resource', 'x'=>'float', 'y'=>'float', 'r'=>'float', 'alpha'=>'float', 'beta'=>'float'], 'PDF_arcn' => ['bool', 'p'=>'resource', 'x'=>'float', 'y'=>'float', 'r'=>'float', 'alpha'=>'float', 'beta'=>'float'], 'PDF_attach_file' => ['bool', 'pdfdoc'=>'resource', 'llx'=>'float', 'lly'=>'float', 'urx'=>'float', 'ury'=>'float', 'filename'=>'string', 'description'=>'string', 'author'=>'string', 'mimetype'=>'string', 'icon'=>'string'], 'PDF_begin_document' => ['int', 'pdfdoc'=>'resource', 'filename'=>'string', 'optlist'=>'string'], 'PDF_begin_font' => ['bool', 'pdfdoc'=>'resource', 'filename'=>'string', 'a'=>'float', 'b'=>'float', 'c'=>'float', 'd'=>'float', 'e'=>'float', 'f'=>'float', 'optlist'=>'string'], 'PDF_begin_glyph' => ['bool', 'pdfdoc'=>'resource', 'glyphname'=>'string', 'wx'=>'float', 'llx'=>'float', 'lly'=>'float', 'urx'=>'float', 'ury'=>'float'], 'PDF_begin_item' => ['int', 'pdfdoc'=>'resource', 'tag'=>'string', 'optlist'=>'string'], 'PDF_begin_layer' => ['bool', 'pdfdoc'=>'resource', 'layer'=>'int'], 'PDF_begin_page' => ['bool', 'pdfdoc'=>'resource', 'width'=>'float', 'height'=>'float'], 'PDF_begin_page_ext' => ['bool', 'pdfdoc'=>'resource', 'width'=>'float', 'height'=>'float', 'optlist'=>'string'], 'PDF_begin_pattern' => ['int', 'pdfdoc'=>'resource', 'width'=>'float', 'height'=>'float', 'xstep'=>'float', 'ystep'=>'float', 'painttype'=>'int'], 'PDF_begin_template' => ['int', 'pdfdoc'=>'resource', 'width'=>'float', 'height'=>'float'], 'PDF_begin_template_ext' => ['int', 'pdfdoc'=>'resource', 'width'=>'float', 'height'=>'float', 'optlist'=>'string'], 'PDF_circle' => ['bool', 'pdfdoc'=>'resource', 'x'=>'float', 'y'=>'float', 'r'=>'float'], 'PDF_clip' => ['bool', 'p'=>'resource'], 'PDF_close' => ['bool', 'p'=>'resource'], 'PDF_close_image' => ['bool', 'p'=>'resource', 'image'=>'int'], 'PDF_close_pdi' => ['bool', 'p'=>'resource', 'doc'=>'int'], 'PDF_close_pdi_page' => ['bool', 'p'=>'resource', 'page'=>'int'], 'PDF_closepath' => ['bool', 'p'=>'resource'], 'PDF_closepath_fill_stroke' => ['bool', 'p'=>'resource'], 'PDF_closepath_stroke' => ['bool', 'p'=>'resource'], 'PDF_concat' => ['bool', 'p'=>'resource', 'a'=>'float', 'b'=>'float', 'c'=>'float', 'd'=>'float', 'e'=>'float', 'f'=>'float'], 'PDF_continue_text' => ['bool', 'p'=>'resource', 'text'=>'string'], 'PDF_create_3dview' => ['int', 'pdfdoc'=>'resource', 'username'=>'string', 'optlist'=>'string'], 'PDF_create_action' => ['int', 'pdfdoc'=>'resource', 'type'=>'string', 'optlist'=>'string'], 'PDF_create_annotation' => ['bool', 'pdfdoc'=>'resource', 'llx'=>'float', 'lly'=>'float', 'urx'=>'float', 'ury'=>'float', 'type'=>'string', 'optlist'=>'string'], 'PDF_create_bookmark' => ['int', 'pdfdoc'=>'resource', 'text'=>'string', 'optlist'=>'string'], 'PDF_create_field' => ['bool', 'pdfdoc'=>'resource', 'llx'=>'float', 'lly'=>'float', 'urx'=>'float', 'ury'=>'float', 'name'=>'string', 'type'=>'string', 'optlist'=>'string'], 'PDF_create_fieldgroup' => ['bool', 'pdfdoc'=>'resource', 'name'=>'string', 'optlist'=>'string'], 'PDF_create_gstate' => ['int', 'pdfdoc'=>'resource', 'optlist'=>'string'], 'PDF_create_pvf' => ['bool', 'pdfdoc'=>'resource', 'filename'=>'string', 'data'=>'string', 'optlist'=>'string'], 'PDF_create_textflow' => ['int', 'pdfdoc'=>'resource', 'text'=>'string', 'optlist'=>'string'], 'PDF_curveto' => ['bool', 'p'=>'resource', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float', 'x3'=>'float', 'y3'=>'float'], 'PDF_define_layer' => ['int', 'pdfdoc'=>'resource', 'name'=>'string', 'optlist'=>'string'], 'PDF_delete' => ['bool', 'pdfdoc'=>'resource'], 'PDF_delete_pvf' => ['int', 'pdfdoc'=>'resource', 'filename'=>'string'], 'PDF_delete_table' => ['bool', 'pdfdoc'=>'resource', 'table'=>'int', 'optlist'=>'string'], 'PDF_delete_textflow' => ['bool', 'pdfdoc'=>'resource', 'textflow'=>'int'], 'PDF_encoding_set_char' => ['bool', 'pdfdoc'=>'resource', 'encoding'=>'string', 'slot'=>'int', 'glyphname'=>'string', 'uv'=>'int'], 'PDF_end_document' => ['bool', 'pdfdoc'=>'resource', 'optlist'=>'string'], 'PDF_end_font' => ['bool', 'pdfdoc'=>'resource'], 'PDF_end_glyph' => ['bool', 'pdfdoc'=>'resource'], 'PDF_end_item' => ['bool', 'pdfdoc'=>'resource', 'id'=>'int'], 'PDF_end_layer' => ['bool', 'pdfdoc'=>'resource'], 'PDF_end_page' => ['bool', 'p'=>'resource'], 'PDF_end_page_ext' => ['bool', 'pdfdoc'=>'resource', 'optlist'=>'string'], 'PDF_end_pattern' => ['bool', 'p'=>'resource'], 'PDF_end_template' => ['bool', 'p'=>'resource'], 'PDF_endpath' => ['bool', 'p'=>'resource'], 'PDF_fill' => ['bool', 'p'=>'resource'], 'PDF_fill_imageblock' => ['int', 'pdfdoc'=>'resource', 'page'=>'int', 'blockname'=>'string', 'image'=>'int', 'optlist'=>'string'], 'PDF_fill_pdfblock' => ['int', 'pdfdoc'=>'resource', 'page'=>'int', 'blockname'=>'string', 'contents'=>'int', 'optlist'=>'string'], 'PDF_fill_stroke' => ['bool', 'p'=>'resource'], 'PDF_fill_textblock' => ['int', 'pdfdoc'=>'resource', 'page'=>'int', 'blockname'=>'string', 'text'=>'string', 'optlist'=>'string'], 'PDF_findfont' => ['int', 'p'=>'resource', 'fontname'=>'string', 'encoding'=>'string', 'embed'=>'int'], 'PDF_fit_image' => ['bool', 'pdfdoc'=>'resource', 'image'=>'int', 'x'=>'float', 'y'=>'float', 'optlist'=>'string'], 'PDF_fit_pdi_page' => ['bool', 'pdfdoc'=>'resource', 'page'=>'int', 'x'=>'float', 'y'=>'float', 'optlist'=>'string'], 'PDF_fit_table' => ['string', 'pdfdoc'=>'resource', 'table'=>'int', 'llx'=>'float', 'lly'=>'float', 'urx'=>'float', 'ury'=>'float', 'optlist'=>'string'], 'PDF_fit_textflow' => ['string', 'pdfdoc'=>'resource', 'textflow'=>'int', 'llx'=>'float', 'lly'=>'float', 'urx'=>'float', 'ury'=>'float', 'optlist'=>'string'], 'PDF_fit_textline' => ['bool', 'pdfdoc'=>'resource', 'text'=>'string', 'x'=>'float', 'y'=>'float', 'optlist'=>'string'], 'PDF_get_apiname' => ['string', 'pdfdoc'=>'resource'], 'PDF_get_buffer' => ['string', 'p'=>'resource'], 'PDF_get_errmsg' => ['string', 'pdfdoc'=>'resource'], 'PDF_get_errnum' => ['int', 'pdfdoc'=>'resource'], 'PDF_get_majorversion' => ['int'], 'PDF_get_minorversion' => ['int'], 'PDF_get_parameter' => ['string', 'p'=>'resource', 'key'=>'string', 'modifier'=>'float'], 'PDF_get_pdi_parameter' => ['string', 'p'=>'resource', 'key'=>'string', 'doc'=>'int', 'page'=>'int', 'reserved'=>'int'], 'PDF_get_pdi_value' => ['float', 'p'=>'resource', 'key'=>'string', 'doc'=>'int', 'page'=>'int', 'reserved'=>'int'], 'PDF_get_value' => ['float', 'p'=>'resource', 'key'=>'string', 'modifier'=>'float'], 'PDF_info_font' => ['float', 'pdfdoc'=>'resource', 'font'=>'int', 'keyword'=>'string', 'optlist'=>'string'], 'PDF_info_matchbox' => ['float', 'pdfdoc'=>'resource', 'boxname'=>'string', 'num'=>'int', 'keyword'=>'string'], 'PDF_info_table' => ['float', 'pdfdoc'=>'resource', 'table'=>'int', 'keyword'=>'string'], 'PDF_info_textflow' => ['float', 'pdfdoc'=>'resource', 'textflow'=>'int', 'keyword'=>'string'], 'PDF_info_textline' => ['float', 'pdfdoc'=>'resource', 'text'=>'string', 'keyword'=>'string', 'optlist'=>'string'], 'PDF_initgraphics' => ['bool', 'p'=>'resource'], 'PDF_lineto' => ['bool', 'p'=>'resource', 'x'=>'float', 'y'=>'float'], 'PDF_load_3ddata' => ['int', 'pdfdoc'=>'resource', 'filename'=>'string', 'optlist'=>'string'], 'PDF_load_font' => ['int', 'pdfdoc'=>'resource', 'fontname'=>'string', 'encoding'=>'string', 'optlist'=>'string'], 'PDF_load_iccprofile' => ['int', 'pdfdoc'=>'resource', 'profilename'=>'string', 'optlist'=>'string'], 'PDF_load_image' => ['int', 'pdfdoc'=>'resource', 'imagetype'=>'string', 'filename'=>'string', 'optlist'=>'string'], 'PDF_makespotcolor' => ['int', 'p'=>'resource', 'spotname'=>'string'], 'PDF_moveto' => ['bool', 'p'=>'resource', 'x'=>'float', 'y'=>'float'], 'PDF_new' => ['resource'], 'PDF_open_ccitt' => ['int', 'pdfdoc'=>'resource', 'filename'=>'string', 'width'=>'int', 'height'=>'int', 'bitreverse'=>'int', 'k'=>'int', 'blackls1'=>'int'], 'PDF_open_file' => ['bool', 'p'=>'resource', 'filename'=>'string'], 'PDF_open_image' => ['int', 'p'=>'resource', 'imagetype'=>'string', 'source'=>'string', 'data'=>'string', 'length'=>'int', 'width'=>'int', 'height'=>'int', 'components'=>'int', 'bpc'=>'int', 'params'=>'string'], 'PDF_open_image_file' => ['int', 'p'=>'resource', 'imagetype'=>'string', 'filename'=>'string', 'stringparam'=>'string', 'intparam'=>'int'], 'PDF_open_memory_image' => ['int', 'p'=>'resource', 'image'=>'resource'], 'PDF_open_pdi' => ['int', 'pdfdoc'=>'resource', 'filename'=>'string', 'optlist'=>'string', 'len'=>'int'], 'PDF_open_pdi_document' => ['int', 'p'=>'resource', 'filename'=>'string', 'optlist'=>'string'], 'PDF_open_pdi_page' => ['int', 'p'=>'resource', 'doc'=>'int', 'pagenumber'=>'int', 'optlist'=>'string'], 'PDF_pcos_get_number' => ['float', 'p'=>'resource', 'doc'=>'int', 'path'=>'string'], 'PDF_pcos_get_stream' => ['string', 'p'=>'resource', 'doc'=>'int', 'optlist'=>'string', 'path'=>'string'], 'PDF_pcos_get_string' => ['string', 'p'=>'resource', 'doc'=>'int', 'path'=>'string'], 'PDF_place_image' => ['bool', 'pdfdoc'=>'resource', 'image'=>'int', 'x'=>'float', 'y'=>'float', 'scale'=>'float'], 'PDF_place_pdi_page' => ['bool', 'pdfdoc'=>'resource', 'page'=>'int', 'x'=>'float', 'y'=>'float', 'sx'=>'float', 'sy'=>'float'], 'PDF_process_pdi' => ['int', 'pdfdoc'=>'resource', 'doc'=>'int', 'page'=>'int', 'optlist'=>'string'], 'PDF_rect' => ['bool', 'p'=>'resource', 'x'=>'float', 'y'=>'float', 'width'=>'float', 'height'=>'float'], 'PDF_restore' => ['bool', 'p'=>'resource'], 'PDF_resume_page' => ['bool', 'pdfdoc'=>'resource', 'optlist'=>'string'], 'PDF_rotate' => ['bool', 'p'=>'resource', 'phi'=>'float'], 'PDF_save' => ['bool', 'p'=>'resource'], 'PDF_scale' => ['bool', 'p'=>'resource', 'sx'=>'float', 'sy'=>'float'], 'PDF_set_border_color' => ['bool', 'p'=>'resource', 'red'=>'float', 'green'=>'float', 'blue'=>'float'], 'PDF_set_border_dash' => ['bool', 'pdfdoc'=>'resource', 'black'=>'float', 'white'=>'float'], 'PDF_set_border_style' => ['bool', 'pdfdoc'=>'resource', 'style'=>'string', 'width'=>'float'], 'PDF_set_gstate' => ['bool', 'pdfdoc'=>'resource', 'gstate'=>'int'], 'PDF_set_info' => ['bool', 'p'=>'resource', 'key'=>'string', 'value'=>'string'], 'PDF_set_layer_dependency' => ['bool', 'pdfdoc'=>'resource', 'type'=>'string', 'optlist'=>'string'], 'PDF_set_parameter' => ['bool', 'p'=>'resource', 'key'=>'string', 'value'=>'string'], 'PDF_set_text_pos' => ['bool', 'p'=>'resource', 'x'=>'float', 'y'=>'float'], 'PDF_set_value' => ['bool', 'p'=>'resource', 'key'=>'string', 'value'=>'float'], 'PDF_setcolor' => ['bool', 'p'=>'resource', 'fstype'=>'string', 'colorspace'=>'string', 'c1'=>'float', 'c2'=>'float', 'c3'=>'float', 'c4'=>'float'], 'PDF_setdash' => ['bool', 'pdfdoc'=>'resource', 'b'=>'float', 'w'=>'float'], 'PDF_setdashpattern' => ['bool', 'pdfdoc'=>'resource', 'optlist'=>'string'], 'PDF_setflat' => ['bool', 'pdfdoc'=>'resource', 'flatness'=>'float'], 'PDF_setfont' => ['bool', 'pdfdoc'=>'resource', 'font'=>'int', 'fontsize'=>'float'], 'PDF_setgray' => ['bool', 'p'=>'resource', 'g'=>'float'], 'PDF_setgray_fill' => ['bool', 'p'=>'resource', 'g'=>'float'], 'PDF_setgray_stroke' => ['bool', 'p'=>'resource', 'g'=>'float'], 'PDF_setlinecap' => ['bool', 'p'=>'resource', 'linecap'=>'int'], 'PDF_setlinejoin' => ['bool', 'p'=>'resource', 'value'=>'int'], 'PDF_setlinewidth' => ['bool', 'p'=>'resource', 'width'=>'float'], 'PDF_setmatrix' => ['bool', 'p'=>'resource', 'a'=>'float', 'b'=>'float', 'c'=>'float', 'd'=>'float', 'e'=>'float', 'f'=>'float'], 'PDF_setmiterlimit' => ['bool', 'pdfdoc'=>'resource', 'miter'=>'float'], 'PDF_setrgbcolor' => ['bool', 'p'=>'resource', 'red'=>'float', 'green'=>'float', 'blue'=>'float'], 'PDF_setrgbcolor_fill' => ['bool', 'p'=>'resource', 'red'=>'float', 'green'=>'float', 'blue'=>'float'], 'PDF_setrgbcolor_stroke' => ['bool', 'p'=>'resource', 'red'=>'float', 'green'=>'float', 'blue'=>'float'], 'PDF_shading' => ['int', 'pdfdoc'=>'resource', 'shtype'=>'string', 'x0'=>'float', 'y0'=>'float', 'x1'=>'float', 'y1'=>'float', 'c1'=>'float', 'c2'=>'float', 'c3'=>'float', 'c4'=>'float', 'optlist'=>'string'], 'PDF_shading_pattern' => ['int', 'pdfdoc'=>'resource', 'shading'=>'int', 'optlist'=>'string'], 'PDF_shfill' => ['bool', 'pdfdoc'=>'resource', 'shading'=>'int'], 'PDF_show' => ['bool', 'pdfdoc'=>'resource', 'text'=>'string'], 'PDF_show_boxed' => ['int', 'p'=>'resource', 'text'=>'string', 'left'=>'float', 'top'=>'float', 'width'=>'float', 'height'=>'float', 'mode'=>'string', 'feature'=>'string'], 'PDF_show_xy' => ['bool', 'p'=>'resource', 'text'=>'string', 'x'=>'float', 'y'=>'float'], 'PDF_skew' => ['bool', 'p'=>'resource', 'alpha'=>'float', 'beta'=>'float'], 'PDF_stringwidth' => ['float', 'p'=>'resource', 'text'=>'string', 'font'=>'int', 'fontsize'=>'float'], 'PDF_stroke' => ['bool', 'p'=>'resource'], 'PDF_suspend_page' => ['bool', 'pdfdoc'=>'resource', 'optlist'=>'string'], 'PDF_translate' => ['bool', 'p'=>'resource', 'tx'=>'float', 'ty'=>'float'], 'PDF_utf16_to_utf8' => ['string', 'pdfdoc'=>'resource', 'utf16string'=>'string'], 'PDF_utf32_to_utf16' => ['string', 'pdfdoc'=>'resource', 'utf32string'=>'string', 'ordering'=>'string'], 'PDF_utf8_to_utf16' => ['string', 'pdfdoc'=>'resource', 'utf8string'=>'string', 'ordering'=>'string'], 'PDO::__construct' => ['void', 'dsn'=>'string', 'username='=>'?string', 'passwd='=>'?string', 'options='=>'?array'], 'PDO::__sleep' => ['list'], 'PDO::__wakeup' => ['void'], 'PDO::beginTransaction' => ['bool'], 'PDO::commit' => ['bool'], 'PDO::cubrid_schema' => ['array', 'schema_type'=>'int', 'table_name='=>'string', 'col_name='=>'string'], 'PDO::errorCode' => ['string|null'], 'PDO::errorInfo' => ['array'], 'PDO::exec' => ['int|false', 'query'=>'string'], 'PDO::getAttribute' => ['', 'attribute'=>'int'], 'PDO::getAvailableDrivers' => ['array'], 'PDO::inTransaction' => ['bool'], 'PDO::lastInsertId' => ['string|false', 'seqname='=>'string'], 'PDO::pgsqlCopyFromArray' => ['bool', 'table_name'=>'string', 'rows'=>'array', 'delimiter='=>'string', 'null_as='=>'string', 'fields='=>'string'], 'PDO::pgsqlCopyFromFile' => ['bool', 'table_name'=>'string', 'filename'=>'string', 'delimiter='=>'string', 'null_as='=>'string', 'fields='=>'string'], 'PDO::pgsqlCopyToArray' => ['array', 'table_name'=>'string', 'delimiter='=>'string', 'null_as='=>'string', 'fields='=>'string'], 'PDO::pgsqlCopyToFile' => ['bool', 'table_name'=>'string', 'filename'=>'string', 'delimiter='=>'string', 'null_as='=>'string', 'fields='=>'string'], 'PDO::pgsqlGetNotify' => ['array', 'result_type='=>'int', 'ms_timeout='=>'int'], 'PDO::pgsqlGetPid' => ['int'], 'PDO::pgsqlLOBCreate' => ['string'], 'PDO::pgsqlLOBOpen' => ['resource', 'oid'=>'string', 'mode='=>'string'], 'PDO::pgsqlLOBUnlink' => ['bool', 'oid'=>'string'], 'PDO::prepare' => ['__benevolent', 'statement'=>'string', 'options='=>'array'], 'PDO::query' => ['PDOStatement|false', 'sql'=>'string'], 'PDO::query\'1' => ['PDOStatement|false', 'sql'=>'string', 'fetch_column'=>'int', 'colno'=>'int'], 'PDO::query\'2' => ['PDOStatement|false', 'sql'=>'string', 'fetch_class'=>'int', 'classname'=>'string', 'ctorargs'=>'array'], 'PDO::query\'3' => ['PDOStatement|false', 'sql'=>'string', 'fetch_into'=>'int', 'object'=>'object'], 'PDO::quote' => ['string', 'string'=>'string', 'paramtype='=>'int'], 'PDO::rollBack' => ['bool'], 'PDO::setAttribute' => ['bool', 'attribute'=>'int', 'value'=>''], 'PDO::sqliteCreateAggregate' => ['bool', 'function_name'=>'string', 'step_func'=>'callable', 'finalize_func'=>'callable', 'num_args='=>'int'], 'PDO::sqliteCreateCollation' => ['bool', 'name'=>'string', 'callback'=>'callable'], 'PDO::sqliteCreateFunction' => ['bool', 'function_name'=>'string', 'callback'=>'callable', 'num_args='=>'int', 'flags='=>'int'], 'pdo_drivers' => ['array'], 'PDOException::getCode' => [''], 'PDOException::getFile' => [''], 'PDOException::getLine' => [''], 'PDOException::getMessage' => [''], 'PDOException::getPrevious' => [''], 'PDOException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'PDOException::getTraceAsString' => [''], 'PDOStatement::__sleep' => ['list'], 'PDOStatement::__wakeup' => ['void'], 'PDOStatement::bindColumn' => ['bool', 'column'=>'mixed', '&w_param'=>'mixed', 'type='=>'int', 'maxlen='=>'int', 'driverdata='=>'mixed'], 'PDOStatement::bindParam' => ['bool', 'parameter'=>'mixed', '&w_variable'=>'mixed', 'data_type='=>'int', 'length='=>'int', 'driver_options='=>'mixed'], 'PDOStatement::bindValue' => ['bool', 'parameter'=>'mixed', 'value'=>'mixed', 'data_type='=>'int'], 'PDOStatement::closeCursor' => ['bool'], 'PDOStatement::columnCount' => ['0|positive-int'], 'PDOStatement::debugDumpParams' => ['void'], 'PDOStatement::errorCode' => ['string|null'], 'PDOStatement::errorInfo' => ['array'], 'PDOStatement::execute' => ['bool', 'bound_input_params='=>'?array'], 'PDOStatement::fetch' => ['mixed', 'how='=>'int', 'orientation='=>'int', 'offset='=>'int'], 'PDOStatement::fetchAll' => ['array|false', 'how='=>'int', 'fetch_argument='=>'int|string|callable', 'ctor_args='=>'?array'], 'PDOStatement::fetchColumn' => ['string|null|false|int', 'column_number='=>'int'], 'PDOStatement::fetchObject' => ['mixed', 'class_name='=>'string', 'ctor_args='=>'?array'], 'PDOStatement::getAttribute' => ['mixed', 'attribute'=>'int'], 'PDOStatement::getColumnMeta' => ['array|false', 'column'=>'int'], 'PDOStatement::nextRowset' => ['bool'], 'PDOStatement::rowCount' => ['0|positive-int'], 'PDOStatement::setAttribute' => ['bool', 'attribute'=>'int', 'value'=>'mixed'], 'PDOStatement::setFetchMode' => ['bool', 'mode'=>'int'], 'PDOStatement::setFetchMode\'1' => ['bool', 'fetch_column'=>'int', 'colno'=>'int'], 'PDOStatement::setFetchMode\'2' => ['bool', 'fetch_class'=>'int', 'classname'=>'string', 'ctorargs='=>'?array'], 'PDOStatement::setFetchMode\'3' => ['bool', 'fetch_into'=>'int', 'object'=>'object'], 'pfsockopen' => ['resource|false', 'hostname'=>'string', 'port='=>'int', '&w_errno='=>'int', '&w_errstr='=>'string', 'timeout='=>'float'], 'pg_affected_rows' => ['int', 'result'=>'resource'], 'pg_cancel_query' => ['bool', 'connection'=>'resource'], 'pg_client_encoding' => ['string', 'connection='=>'resource'], 'pg_close' => ['bool', 'connection='=>'resource'], 'pg_connect' => ['resource|false', 'connection_string'=>'string', 'connect_type='=>'int'], 'pg_connect_poll' => ['int', 'connection'=>'resource'], 'pg_connection_busy' => ['bool', 'connection'=>'resource'], 'pg_connection_reset' => ['bool', 'connection'=>'resource'], 'pg_connection_status' => ['int', 'connection'=>'resource'], 'pg_consume_input' => ['bool', 'connection'=>'resource'], 'pg_convert' => ['array|false', 'db'=>'resource', 'table'=>'string', 'values'=>'array', 'options='=>'int'], 'pg_copy_from' => ['bool', 'connection'=>'resource', 'table_name'=>'string', 'rows'=>'array', 'delimiter='=>'string', 'null_as='=>'string'], 'pg_copy_to' => ['array|false', 'connection'=>'resource', 'table_name'=>'string', 'delimiter='=>'string', 'null_as='=>'string'], 'pg_dbname' => ['string', 'connection='=>'resource'], 'pg_delete' => ['mixed', 'db'=>'resource', 'table'=>'string', 'ids'=>'array', 'options='=>'int'], 'pg_end_copy' => ['bool', 'connection='=>'resource'], 'pg_escape_bytea' => ['string', 'connection'=>'resource', 'data'=>'string'], 'pg_escape_bytea\'1' => ['string', 'data'=>'string'], 'pg_escape_identifier' => ['string|false', 'connection'=>'resource', 'data'=>'string'], 'pg_escape_identifier\'1' => ['string', 'data'=>'string'], 'pg_escape_literal' => ['string|false', 'connection'=>'resource', 'data'=>'string'], 'pg_escape_literal\'1' => ['string', 'data'=>'string'], 'pg_escape_string' => ['string', 'connection'=>'resource', 'data'=>'string'], 'pg_escape_string\'1' => ['string', 'data'=>'string'], 'pg_execute' => ['resource|false', 'connection'=>'resource', 'stmtname'=>'string', 'params'=>'array'], 'pg_execute\'1' => ['resource|false', 'stmtname'=>'string', 'params'=>'array'], 'pg_fetch_all' => ['array>', 'result'=>'resource', 'result_type='=>'int'], 'pg_fetch_all_columns' => ['array|false', 'result'=>'resource', 'column_number='=>'int'], 'pg_fetch_array' => ['array|false', 'result'=>'resource', 'row='=>'?int', 'result_type='=>'int'], 'pg_fetch_assoc' => ['non-empty-array|false', 'result'=>'resource', 'row='=>'?int'], 'pg_fetch_object' => ['object|false', 'result'=>'', 'row='=>'?int', 'result_type='=>'int'], 'pg_fetch_object\'1' => ['object', 'result'=>'', 'row='=>'?int', 'class_name='=>'string', 'ctor_params='=>'array'], 'pg_fetch_result' => ['', 'result'=>'', 'field_name'=>'string|int'], 'pg_fetch_result\'1' => ['', 'result'=>'', 'row_number'=>'int', 'field_name'=>'string|int'], 'pg_fetch_row' => ['non-empty-list|false', 'result'=>'resource', 'row='=>'?int', 'result_type='=>'int'], 'pg_field_is_null' => ['int|false', 'result'=>'', 'field_name_or_number'=>'string|int'], 'pg_field_is_null\'1' => ['int', 'result'=>'', 'row'=>'int', 'field_name_or_number'=>'string|int'], 'pg_field_name' => ['string|false', 'result'=>'resource', 'field_number'=>'int'], 'pg_field_num' => ['int', 'result'=>'resource', 'field_name'=>'string'], 'pg_field_prtlen' => ['int|false', 'result'=>'', 'field_name_or_number'=>''], 'pg_field_prtlen\'1' => ['int', 'result'=>'', 'row'=>'int', 'field_name_or_number'=>'string|int'], 'pg_field_size' => ['int', 'result'=>'resource', 'field_number'=>'int'], 'pg_field_table' => ['mixed', 'result'=>'resource', 'field_number'=>'int', 'oid_only='=>'bool'], 'pg_field_type' => ['string', 'result'=>'resource', 'field_number'=>'int'], 'pg_field_type_oid' => ['int|false', 'result'=>'resource', 'field_number'=>'int'], 'pg_flush' => ['mixed', 'connection'=>'resource'], 'pg_free_result' => ['bool', 'result'=>'resource'], 'pg_get_notify' => ['array|false', 'connection'=>'resource', 'result_type='=>'int'], 'pg_get_pid' => ['int|false', 'connection'=>'resource'], 'pg_get_result' => ['resource|false', 'connection='=>'resource'], 'pg_host' => ['string', 'connection='=>'resource'], 'pg_insert' => ['mixed', 'db'=>'resource', 'table'=>'string', 'values'=>'array', 'options='=>'int'], 'pg_last_error' => ['string', 'connection='=>'resource', 'operation='=>'int'], 'pg_last_notice' => ['string', 'connection'=>'resource', 'option='=>'int'], 'pg_last_oid' => ['string|false', 'result'=>'resource'], 'pg_lo_close' => ['bool', 'large_object'=>'resource'], 'pg_lo_create' => ['int|false', 'connection='=>'resource', 'large_object_oid='=>''], 'pg_lo_export' => ['bool', 'connection'=>'resource', 'oid'=>'int', 'filename'=>'string'], 'pg_lo_export\'1' => ['bool', 'oid'=>'int', 'pathname'=>'string'], 'pg_lo_import' => ['int|false', 'connection'=>'resource', 'pathname'=>'string', 'oid'=>''], 'pg_lo_import\'1' => ['int', 'pathname'=>'string', 'oid'=>''], 'pg_lo_open' => ['resource|false', 'connection'=>'resource', 'oid'=>'int', 'mode'=>'string'], 'pg_lo_read' => ['string|false', 'large_object'=>'resource', 'len='=>'int'], 'pg_lo_read_all' => ['int', 'large_object'=>'resource'], 'pg_lo_seek' => ['bool', 'large_object'=>'resource', 'offset'=>'int', 'whence='=>'int'], 'pg_lo_tell' => ['int', 'large_object'=>'resource'], 'pg_lo_truncate' => ['bool', 'large_object'=>'resource', 'size'=>'int'], 'pg_lo_unlink' => ['bool', 'connection'=>'resource', 'oid'=>'int'], 'pg_lo_write' => ['int|false', 'large_object'=>'resource', 'data'=>'string', 'len='=>'int'], 'pg_meta_data' => ['array|false', 'db'=>'resource', 'table'=>'string', 'extended='=>'bool'], 'pg_num_fields' => ['int', 'result'=>'resource'], 'pg_num_rows' => ['int', 'result'=>'resource'], 'pg_options' => ['string', 'connection='=>'resource'], 'pg_parameter_status' => ['string|false', 'connection'=>'resource', 'param_name'=>'string'], 'pg_parameter_status\'1' => ['string|false', 'param_name'=>'string'], 'pg_pconnect' => ['resource|false', 'connection_string'=>'string', 'connect_type='=>'int'], 'pg_ping' => ['bool', 'connection='=>'resource'], 'pg_port' => ['int', 'connection='=>'resource'], 'pg_prepare' => ['resource|false', 'connection'=>'resource', 'stmtname'=>'string', 'query'=>'string'], 'pg_prepare\'1' => ['resource|false', 'stmtname'=>'string', 'query'=>'string'], 'pg_put_line' => ['bool', 'connection'=>'resource', 'data'=>'string'], 'pg_put_line\'1' => ['bool', 'data'=>'string'], 'pg_query' => ['resource|false', 'connection'=>'resource', 'query'=>'string'], 'pg_query\'1' => ['resource|false', 'query'=>'string'], 'pg_query_params' => ['resource|false', 'connection'=>'resource', 'query'=>'string', 'params'=>'array'], 'pg_query_params\'1' => ['resource|false', 'query'=>'string', 'params'=>'array'], 'pg_result_error' => ['string|false', 'result'=>'resource'], 'pg_result_error_field' => ['string|false|null', 'result'=>'resource', 'fieldcode'=>'int'], 'pg_result_seek' => ['bool', 'result'=>'resource', 'offset'=>'int'], 'pg_result_status' => ['mixed', 'result'=>'resource', 'result_type='=>'int'], 'pg_select' => ['mixed', 'db'=>'resource', 'table'=>'string', 'ids'=>'array', 'options='=>'int', 'result_type='=>'int'], 'pg_send_execute' => ['bool', 'connection'=>'resource', 'stmtname'=>'string', 'params'=>'array'], 'pg_send_prepare' => ['bool', 'connection'=>'resource', 'stmtname'=>'string', 'query'=>'string'], 'pg_send_query' => ['bool', 'connection'=>'resource', 'query'=>'string'], 'pg_send_query_params' => ['bool', 'connection'=>'resource', 'query'=>'string', 'params'=>'array'], 'pg_set_client_encoding' => ['int', 'connection'=>'resource', 'encoding'=>'string'], 'pg_set_client_encoding\'1' => ['int', 'encoding'=>'string'], 'pg_set_error_verbosity' => ['int|false', 'connection'=>'resource', 'verbosity'=>'int'], 'pg_set_error_verbosity\'1' => ['int', 'verbosity'=>'int'], 'pg_socket' => ['resource|false', 'connection'=>'resource'], 'pg_trace' => ['bool', 'filename'=>'string', 'mode='=>'string', 'connection='=>'resource'], 'pg_transaction_status' => ['int', 'connection'=>'resource'], 'pg_tty' => ['string', 'connection='=>'resource'], 'pg_tty\'1' => ['string'], 'pg_unescape_bytea' => ['string', 'data'=>'string'], 'pg_untrace' => ['bool', 'connection='=>'resource'], 'pg_untrace\'1' => ['bool'], 'pg_update' => ['mixed', 'db'=>'resource', 'table'=>'string', 'fields'=>'array', 'ids'=>'array', 'options='=>'int'], 'pg_version' => ['array', 'connection='=>'resource'], 'Phar::__construct' => ['void', 'fname'=>'string', 'flags='=>'int', 'alias='=>'string'], 'Phar::addEmptyDir' => ['', 'dirname'=>'string'], 'Phar::addFile' => ['', 'file'=>'string', 'localname='=>'string'], 'Phar::addFromString' => ['', 'localname'=>'string', 'contents'=>'string'], 'Phar::apiVersion' => ['string'], 'Phar::buildFromDirectory' => ['array', 'base_dir'=>'string', 'regex='=>'string'], 'Phar::buildFromIterator' => ['array', 'iter'=>'Iterator', 'base_directory='=>'string'], 'Phar::canCompress' => ['bool', 'method='=>'int'], 'Phar::canWrite' => ['bool'], 'Phar::compress' => ['Phar', 'compression'=>'int', 'extension='=>'string'], 'Phar::compressAllFilesBZIP2' => ['bool'], 'Phar::compressAllFilesGZ' => ['bool'], 'Phar::compressFiles' => ['', 'compression'=>'int'], 'Phar::convertToData' => ['PharData', 'format='=>'int', 'compression='=>'int', 'extension='=>'string'], 'Phar::convertToExecutable' => ['Phar', 'format='=>'int', 'compression='=>'int', 'extension='=>'string'], 'Phar::copy' => ['bool', 'oldfile'=>'string', 'newfile'=>'string'], 'Phar::count' => ['0|positive-int'], 'Phar::createDefaultStub' => ['string', 'indexfile='=>'string', 'webindexfile='=>'string'], 'Phar::decompress' => ['Phar', 'extension='=>'string'], 'Phar::decompressFiles' => ['bool'], 'Phar::delete' => ['bool', 'entry'=>'string'], 'Phar::delMetadata' => ['bool'], 'Phar::extractTo' => ['bool', 'pathto'=>'string', 'files='=>'string|array|null', 'overwrite='=>'bool'], 'Phar::getAlias' => ['string'], 'Phar::getMetadata' => ['mixed'], 'Phar::getModified' => ['bool'], 'Phar::getPath' => ['string'], 'Phar::getSignature' => ['array{hash:string, hash_type:string}'], 'Phar::getStub' => ['string'], 'Phar::getSupportedCompression' => ['array'], 'Phar::getSupportedSignatures' => ['array'], 'Phar::getVersion' => ['string'], 'Phar::hasMetadata' => ['bool'], 'Phar::interceptFileFuncs' => [''], 'Phar::isBuffering' => ['bool'], 'Phar::isCompressed' => [''], 'Phar::isFileFormat' => ['bool', 'format'=>'int'], 'Phar::isValidPharFilename' => ['bool', 'filename'=>'string', 'executable='=>'bool'], 'Phar::isWritable' => ['bool'], 'Phar::loadPhar' => ['bool', 'filename'=>'string', 'alias='=>'string'], 'Phar::mapPhar' => ['bool', 'alias='=>'string', 'dataoffset='=>'int'], 'Phar::mount' => ['void', 'pharpath'=>'string', 'externalpath'=>'string'], 'Phar::mungServer' => ['', 'munglist'=>'array'], 'Phar::offsetExists' => ['bool', 'offset'=>'string'], 'Phar::offsetGet' => ['PharFileInfo', 'offset'=>'string'], 'Phar::offsetSet' => ['', 'offset'=>'string', 'value'=>'string'], 'Phar::offsetUnset' => ['bool', 'offset'=>'string'], 'Phar::running' => ['string', 'retphar='=>'bool'], 'Phar::setAlias' => ['bool', 'alias'=>'string'], 'Phar::setDefaultStub' => ['bool', 'index='=>'string', 'webindex='=>'string'], 'Phar::setMetadata' => ['', 'metadata'=>''], 'Phar::setSignatureAlgorithm' => ['', 'sigtype'=>'int', 'privatekey='=>'string'], 'Phar::setStub' => ['bool', 'stub'=>'string', 'len='=>'int'], 'Phar::startBuffering' => [''], 'Phar::stopBuffering' => [''], 'Phar::uncompressAllFiles' => ['bool'], 'Phar::unlinkArchive' => ['bool', 'archive'=>'string'], 'Phar::webPhar' => ['', 'alias='=>'string', 'index='=>'string', 'f404='=>'string', 'mimetypes='=>'array', 'rewrites='=>'array'], 'PharData::__construct' => ['void', 'fname'=>'string', 'flags='=>'int', 'alias='=>'string', 'format='=>'int'], 'PharData::addEmptyDir' => ['bool', 'dirname'=>'string'], 'PharData::addFile' => ['', 'file'=>'string', 'localname='=>'string'], 'PharData::addFromString' => ['bool', 'localname'=>'string', 'contents'=>'string'], 'PharData::buildFromDirectory' => ['array', 'base_dir'=>'string', 'regex='=>'string'], 'PharData::buildFromIterator' => ['array', 'iter'=>'Iterator', 'base_directory='=>'string'], 'PharData::compress' => ['PharData', 'compression'=>'int', 'extension='=>'string'], 'PharData::compressFiles' => ['bool', 'compression'=>'int'], 'PharData::convertToData' => ['PharData', 'format='=>'int', 'compression='=>'int', 'extension='=>'string'], 'PharData::convertToExecutable' => ['Phar', 'format='=>'int', 'compression='=>'int', 'extension='=>'string'], 'PharData::copy' => ['bool', 'oldfile'=>'string', 'newfile'=>'string'], 'PharData::decompress' => ['PharData', 'extension='=>'string'], 'PharData::decompressFiles' => ['bool'], 'PharData::delete' => ['bool', 'entry'=>'string'], 'PharData::delMetadata' => ['bool'], 'PharData::extractTo' => ['bool', 'pathto'=>'string', 'files='=>'string|array|null', 'overwrite='=>'bool'], 'PharData::isWritable' => ['bool'], 'PharData::offsetGet' => ['PharFileInfo', 'offset'=>'string'], 'PharData::offsetSet' => ['', 'offset'=>'string', 'value'=>'string'], 'PharData::offsetUnset' => ['bool', 'offset'=>'string'], 'PharData::setAlias' => ['bool', 'alias'=>'string'], 'PharData::setDefaultStub' => ['bool', 'index='=>'string', 'webindex='=>'string'], 'PharData::setStub' => ['bool', 'stub'=>'string'], 'PharFileInfo::__construct' => ['void', 'entry'=>'string'], 'PharFileInfo::chmod' => ['void', 'permissions'=>'int'], 'PharFileInfo::compress' => ['bool', 'compression'=>'int'], 'PharFileInfo::decompress' => ['bool'], 'PharFileInfo::delMetadata' => ['bool'], 'PharFileInfo::getCompressedSize' => ['int'], 'PharFileInfo::getContent' => ['string'], 'PharFileInfo::getCRC32' => ['int'], 'PharFileInfo::getMetadata' => ['mixed'], 'PharFileInfo::getPharFlags' => ['int'], 'PharFileInfo::hasMetadata' => ['bool'], 'PharFileInfo::isCompressed' => ['bool', 'compression_type='=>'int'], 'PharFileInfo::isCompressedBZIP2' => ['bool'], 'PharFileInfo::isCompressedGZ' => ['bool'], 'PharFileInfo::isCRCChecked' => ['bool'], 'PharFileInfo::setCompressedBZIP2' => ['bool'], 'PharFileInfo::setCompressedGZ' => ['bool'], 'PharFileInfo::setMetadata' => ['void', 'metadata'=>'mixed'], 'PharFileInfo::setUncompressed' => ['bool'], 'phdfs::__construct' => ['void', 'ip'=>'string', 'port'=>'string'], 'phdfs::__destruct' => [''], 'phdfs::connect' => ['bool'], 'phdfs::copy' => ['bool', 'source_file'=>'string', 'destination_file'=>'string'], 'phdfs::create_directory' => ['bool', 'path'=>'string'], 'phdfs::delete' => ['bool', 'path'=>'string'], 'phdfs::disconnect' => ['bool'], 'phdfs::exists' => ['bool', 'path'=>'string'], 'phdfs::file_info' => ['array', 'path'=>'string'], 'phdfs::list_directory' => ['array', 'path'=>'string'], 'phdfs::read' => ['string', 'path'=>'string', 'length='=>'string'], 'phdfs::rename' => ['bool', 'old_path'=>'string', 'new_path'=>'string'], 'phdfs::tell' => ['int', 'path'=>'string'], 'phdfs::write' => ['bool', 'path'=>'string', 'buffer'=>'string', 'mode='=>'string'], 'php_check_syntax' => ['bool', 'filename'=>'string', 'error_message='=>'string'], 'php_ini_loaded_file' => ['non-empty-string|false'], 'php_ini_scanned_files' => ['string|false'], 'php_logo_guid' => ['string'], 'php_sapi_name' => ['__benevolent'], 'php_strip_whitespace' => ['string', 'file_name'=>'string'], 'php_uname' => ['string', 'mode='=>'string'], 'php_user_filter::filter' => ['int', 'in'=>'resource', 'out'=>'resource', '&rw_consumed'=>'int', 'closing'=>'bool'], 'php_user_filter::onClose' => ['void'], 'php_user_filter::onCreate' => ['bool'], 'phpcredits' => ['bool', 'flag='=>'int'], 'phpdbg_break_file' => ['', 'file'=>'string', 'line'=>'int'], 'phpdbg_break_function' => ['', 'function'=>'string'], 'phpdbg_break_method' => ['', 'class'=>'string', 'method'=>'string'], 'phpdbg_break_next' => [''], 'phpdbg_clear' => [''], 'phpdbg_color' => ['', 'element'=>'int', 'color'=>'string'], 'phpdbg_end_oplog' => ['array', 'options='=>'array'], 'phpdbg_prompt' => ['', 'prompt'=>'string'], 'phpdbg_start_oplog' => [''], 'phpinfo' => ['bool', 'what='=>'int'], 'phpversion' => ['string'], 'phpversion\'1' => ['string|false', 'extension'=>'string'], 'pht\AtomicInteger::__construct' => ['void', 'value='=>'int'], 'pht\AtomicInteger::dec' => ['void'], 'pht\AtomicInteger::get' => ['int'], 'pht\AtomicInteger::inc' => ['void'], 'pht\AtomicInteger::lock' => ['void'], 'pht\AtomicInteger::set' => ['void', 'value'=>'int'], 'pht\AtomicInteger::unlock' => ['void'], 'pht\HashTable::lock' => ['void'], 'pht\HashTable::size' => ['int'], 'pht\HashTable::unlock' => ['void'], 'pht\Queue::front' => ['mixed'], 'pht\Queue::lock' => ['void'], 'pht\Queue::pop' => ['mixed'], 'pht\Queue::push' => ['void', 'value'=>'mixed'], 'pht\Queue::size' => ['int'], 'pht\Queue::unlock' => ['void'], 'pht\Runnable::run' => ['void'], 'pht\Vector::__construct' => ['void', 'size='=>'int', 'value='=>'mixed'], 'pht\Vector::deleteAt' => ['void', 'offset'=>'int'], 'pht\Vector::insertAt' => ['void', 'value'=>'mixed', 'offset'=>'int'], 'pht\Vector::lock' => ['void'], 'pht\Vector::pop' => ['mixed'], 'pht\Vector::push' => ['void', 'value'=>'mixed'], 'pht\Vector::resize' => ['void', 'size'=>'int', 'value='=>'mixed'], 'pht\Vector::shift' => ['mixed'], 'pht\Vector::size' => ['int'], 'pht\Vector::unlock' => ['void'], 'pht\Vector::unshift' => ['void', 'value'=>'mixed'], 'pht\Vector::updateAt' => ['void', 'value'=>'mixed', 'offset'=>'int'], 'pi' => ['float'], 'png2wbmp' => ['bool', 'pngname'=>'string', 'wbmpname'=>'string', 'dest_height'=>'int', 'dest_width'=>'int', 'threshold'=>'int'], 'pointObj::__construct' => ['void'], 'pointObj::distanceToLine' => ['float', 'p1'=>'pointObj', 'p2'=>'pointObj'], 'pointObj::distanceToPoint' => ['float', 'poPoint'=>'pointObj'], 'pointObj::distanceToShape' => ['float', 'shape'=>'shapeObj'], 'pointObj::draw' => ['int', 'map'=>'mapObj', 'layer'=>'layerObj', 'img'=>'imageObj', 'class_index'=>'int', 'text'=>'string'], 'pointObj::ms_newPointObj' => ['pointObj'], 'pointObj::project' => ['int', 'in'=>'projectionObj', 'out'=>'projectionObj'], 'pointObj::setXY' => ['int', 'x'=>'float', 'y'=>'float', 'm'=>'float'], 'pointObj::setXYZ' => ['int', 'x'=>'float', 'y'=>'float', 'z'=>'float', 'm'=>'float'], 'Pool::__construct' => ['void', 'size'=>'int', 'class'=>'string', 'ctor='=>'array'], 'Pool::collect' => ['int', 'collector'=>'Callable'], 'Pool::resize' => ['void', 'size'=>'int'], 'Pool::shutdown' => ['void'], 'Pool::submit' => ['int', 'task'=>'Threaded'], 'Pool::submitTo' => ['int', 'worker'=>'int', 'task'=>'Threaded'], 'popen' => ['resource|false', 'command'=>'string', 'mode'=>'string'], 'pos' => ['mixed', 'array_arg'=>'array'], 'posix_access' => ['bool', 'file'=>'string', 'mode='=>'int'], 'posix_ctermid' => ['string|false'], 'posix_errno' => ['int'], 'posix_get_last_error' => ['int'], 'posix_getcwd' => ['string|false'], 'posix_getegid' => ['int'], 'posix_geteuid' => ['int'], 'posix_getgid' => ['int'], 'posix_getgrgid' => ['array{name: string, passwd: string, gid: int, members: list}|false', 'gid'=>'int'], 'posix_getgrnam' => ['array{name: string, passwd: string, gid: int, members: list}|false', 'groupname'=>'string'], 'posix_getgroups' => ['list|false'], 'posix_getlogin' => ['string|false'], 'posix_getpgid' => ['int|false', 'pid'=>'int'], 'posix_getpgrp' => ['int'], 'posix_getpid' => ['int'], 'posix_getppid' => ['int'], 'posix_getpwnam' => ['array|false', 'groupname'=>'string'], 'posix_getpwuid' => ['array{name: string, passwd: string, uid: int, gid: int, gecos: string, dir: string, shell: string}|false', 'uid'=>'int'], 'posix_getrlimit' => ['array|false'], 'posix_getsid' => ['int|false', 'pid'=>'int'], 'posix_getuid' => ['int'], 'posix_initgroups' => ['bool', 'name'=>'string', 'base_group_id'=>'int'], 'posix_isatty' => ['bool', 'fd'=>'resource|int'], 'posix_kill' => ['bool', 'pid'=>'int', 'sig'=>'int'], 'posix_mkfifo' => ['bool', 'pathname'=>'string', 'mode'=>'int'], 'posix_mknod' => ['bool', 'pathname'=>'string', 'mode'=>'int', 'major='=>'int', 'minor='=>'int'], 'posix_setegid' => ['bool', 'uid'=>'int'], 'posix_seteuid' => ['bool', 'uid'=>'int'], 'posix_setgid' => ['bool', 'uid'=>'int'], 'posix_setpgid' => ['bool', 'pid'=>'int', 'pgid'=>'int'], 'posix_setrlimit' => ['bool', 'resource'=>'int', 'softlimit'=>'int', 'hardlimit'=>'int'], 'posix_setsid' => ['int'], 'posix_setuid' => ['bool', 'uid'=>'int'], 'posix_strerror' => ['string', 'errno'=>'int'], 'posix_times' => ['array|false'], 'posix_ttyname' => ['string|false', 'fd'=>'resource|int'], 'posix_uname' => ['array|false'], 'Postal\Expand::expand_address' => ['string[]', 'address'=>'string', 'options='=>'array'], 'Postal\Parser::parse_address' => ['array', 'address'=>'string', 'options='=>'array'], 'pow' => ['float|int', 'base'=>'int|float', 'exponent'=>'int|float'], 'preg_filter' => ['string|array|null', 'regex'=>'string|array', 'replace'=>'string|array', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'], 'preg_grep' => ['array|false', 'regex'=>'string', 'input'=>'array', 'flags='=>'int'], 'preg_last_error' => ['int'], 'preg_match' => ['0|1|false', 'pattern'=>'string', 'subject'=>'string', '&w_subpatterns='=>'string[]', 'flags='=>'int', 'offset='=>'int'], 'preg_match_all' => ['0|positive-int|false|null', 'pattern'=>'string', 'subject'=>'string', '&w_subpatterns='=>'array', 'flags='=>'int', 'offset='=>'int'], 'preg_quote' => ['string', 'str'=>'string', 'delim_char='=>'string'], 'preg_replace' => ['string|array|null', 'regex'=>'string|array', 'replace'=>'string|array', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'], 'preg_replace_callback' => ['string|array|null', 'regex'=>'string|array', 'callback'=>'callable(array):string', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'], 'preg_replace_callback_array' => ['string|array|null', 'pattern'=>'array', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'], 'preg_split' => ['list|false', 'pattern'=>'string', 'subject'=>'string', 'limit='=>'?int', 'flags='=>'int'], 'prev' => ['mixed', '&rw_array_arg'=>'array|object'], 'print_r' => ['string|true', 'var'=>'mixed', 'return='=>'bool'], 'printf' => ['int', 'format'=>'string', '...values='=>'__stringAndStringable|int|float|null|bool'], 'proc_close' => ['int', 'process'=>'resource'], 'proc_get_status' => ['array{command: string, pid: int, running: bool, signaled: bool, stopped: bool, exitcode: int, termsig: int, stopsig: int}|false', 'process'=>'resource'], 'proc_nice' => ['bool', 'priority'=>'int'], 'proc_open' => ['resource|false', 'command'=>'string', 'descriptorspec'=>'array', '&w_pipes'=>'resource[]', 'cwd='=>'?string', 'env='=>'?array', 'other_options='=>'array'], 'proc_terminate' => ['bool', 'process'=>'resource', 'signal='=>'int'], 'projectionObj::__construct' => ['void', 'projectionString'=>'string'], 'projectionObj::getUnits' => ['int'], 'projectionObj::ms_newProjectionObj' => ['projectionObj', 'projectionString'=>'string'], 'property_exists' => ['bool', 'object_or_class'=>'object|string', 'property_name'=>'string'], 'ps_add_bookmark' => ['int', 'psdoc'=>'resource', 'text'=>'string', 'parent='=>'int', 'open='=>'int'], 'ps_add_launchlink' => ['bool', 'psdoc'=>'resource', 'llx'=>'float', 'lly'=>'float', 'urx'=>'float', 'ury'=>'float', 'filename'=>'string'], 'ps_add_locallink' => ['bool', 'psdoc'=>'resource', 'llx'=>'float', 'lly'=>'float', 'urx'=>'float', 'ury'=>'float', 'page'=>'int', 'dest'=>'string'], 'ps_add_note' => ['bool', 'psdoc'=>'resource', 'llx'=>'float', 'lly'=>'float', 'urx'=>'float', 'ury'=>'float', 'contents'=>'string', 'title'=>'string', 'icon'=>'string', 'open'=>'int'], 'ps_add_pdflink' => ['bool', 'psdoc'=>'resource', 'llx'=>'float', 'lly'=>'float', 'urx'=>'float', 'ury'=>'float', 'filename'=>'string', 'page'=>'int', 'dest'=>'string'], 'ps_add_weblink' => ['bool', 'psdoc'=>'resource', 'llx'=>'float', 'lly'=>'float', 'urx'=>'float', 'ury'=>'float', 'url'=>'string'], 'ps_arc' => ['bool', 'psdoc'=>'resource', 'x'=>'float', 'y'=>'float', 'radius'=>'float', 'alpha'=>'float', 'beta'=>'float'], 'ps_arcn' => ['bool', 'psdoc'=>'resource', 'x'=>'float', 'y'=>'float', 'radius'=>'float', 'alpha'=>'float', 'beta'=>'float'], 'ps_begin_page' => ['bool', 'psdoc'=>'resource', 'width'=>'float', 'height'=>'float'], 'ps_begin_pattern' => ['int', 'psdoc'=>'resource', 'width'=>'float', 'height'=>'float', 'xstep'=>'float', 'ystep'=>'float', 'painttype'=>'int'], 'ps_begin_template' => ['int', 'psdoc'=>'resource', 'width'=>'float', 'height'=>'float'], 'ps_circle' => ['bool', 'psdoc'=>'resource', 'x'=>'float', 'y'=>'float', 'radius'=>'float'], 'ps_clip' => ['bool', 'psdoc'=>'resource'], 'ps_close' => ['bool', 'psdoc'=>'resource'], 'ps_close_image' => ['void', 'psdoc'=>'resource', 'imageid'=>'int'], 'ps_closepath' => ['bool', 'psdoc'=>'resource'], 'ps_closepath_stroke' => ['bool', 'psdoc'=>'resource'], 'ps_continue_text' => ['bool', 'psdoc'=>'resource', 'text'=>'string'], 'ps_curveto' => ['bool', 'psdoc'=>'resource', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float', 'x3'=>'float', 'y3'=>'float'], 'ps_delete' => ['bool', 'psdoc'=>'resource'], 'ps_end_page' => ['bool', 'psdoc'=>'resource'], 'ps_end_pattern' => ['bool', 'psdoc'=>'resource'], 'ps_end_template' => ['bool', 'psdoc'=>'resource'], 'ps_fill' => ['bool', 'psdoc'=>'resource'], 'ps_fill_stroke' => ['bool', 'psdoc'=>'resource'], 'ps_findfont' => ['int', 'psdoc'=>'resource', 'fontname'=>'string', 'encoding'=>'string', 'embed='=>'bool'], 'ps_get_buffer' => ['string', 'psdoc'=>'resource'], 'ps_get_parameter' => ['string', 'psdoc'=>'resource', 'name'=>'string', 'modifier='=>'float'], 'ps_get_value' => ['float', 'psdoc'=>'resource', 'name'=>'string', 'modifier='=>'float'], 'ps_hyphenate' => ['array', 'psdoc'=>'resource', 'text'=>'string'], 'ps_include_file' => ['bool', 'psdoc'=>'resource', 'file'=>'string'], 'ps_lineto' => ['bool', 'psdoc'=>'resource', 'x'=>'float', 'y'=>'float'], 'ps_makespotcolor' => ['int', 'psdoc'=>'resource', 'name'=>'string', 'reserved='=>'int'], 'ps_moveto' => ['bool', 'psdoc'=>'resource', 'x'=>'float', 'y'=>'float'], 'ps_new' => ['resource'], 'ps_open_file' => ['bool', 'psdoc'=>'resource', 'filename='=>'string'], 'ps_open_image' => ['int', 'psdoc'=>'resource', 'type'=>'string', 'source'=>'string', 'data'=>'string', 'length'=>'int', 'width'=>'int', 'height'=>'int', 'components'=>'int', 'bpc'=>'int', 'params'=>'string'], 'ps_open_image_file' => ['int', 'psdoc'=>'resource', 'type'=>'string', 'filename'=>'string', 'stringparam='=>'string', 'intparam='=>'int'], 'ps_open_memory_image' => ['int', 'psdoc'=>'resource', 'gd'=>'int'], 'ps_place_image' => ['bool', 'psdoc'=>'resource', 'imageid'=>'int', 'x'=>'float', 'y'=>'float', 'scale'=>'float'], 'ps_rect' => ['bool', 'psdoc'=>'resource', 'x'=>'float', 'y'=>'float', 'width'=>'float', 'height'=>'float'], 'ps_restore' => ['bool', 'psdoc'=>'resource'], 'ps_rotate' => ['bool', 'psdoc'=>'resource', 'rot'=>'float'], 'ps_save' => ['bool', 'psdoc'=>'resource'], 'ps_scale' => ['bool', 'psdoc'=>'resource', 'x'=>'float', 'y'=>'float'], 'ps_set_border_color' => ['bool', 'psdoc'=>'resource', 'red'=>'float', 'green'=>'float', 'blue'=>'float'], 'ps_set_border_dash' => ['bool', 'psdoc'=>'resource', 'black'=>'float', 'white'=>'float'], 'ps_set_border_style' => ['bool', 'psdoc'=>'resource', 'style'=>'string', 'width'=>'float'], 'ps_set_info' => ['bool', 'p'=>'resource', 'key'=>'string', 'val'=>'string'], 'ps_set_parameter' => ['bool', 'psdoc'=>'resource', 'name'=>'string', 'value'=>'string'], 'ps_set_text_pos' => ['bool', 'psdoc'=>'resource', 'x'=>'float', 'y'=>'float'], 'ps_set_value' => ['bool', 'psdoc'=>'resource', 'name'=>'string', 'value'=>'float'], 'ps_setcolor' => ['bool', 'psdoc'=>'resource', 'type'=>'string', 'colorspace'=>'string', 'c1'=>'float', 'c2'=>'float', 'c3'=>'float', 'c4'=>'float'], 'ps_setdash' => ['bool', 'psdoc'=>'resource', 'on'=>'float', 'off'=>'float'], 'ps_setflat' => ['bool', 'psdoc'=>'resource', 'value'=>'float'], 'ps_setfont' => ['bool', 'psdoc'=>'resource', 'fontid'=>'int', 'size'=>'float'], 'ps_setgray' => ['bool', 'psdoc'=>'resource', 'gray'=>'float'], 'ps_setlinecap' => ['bool', 'psdoc'=>'resource', 'type'=>'int'], 'ps_setlinejoin' => ['bool', 'psdoc'=>'resource', 'type'=>'int'], 'ps_setlinewidth' => ['bool', 'psdoc'=>'resource', 'width'=>'float'], 'ps_setmiterlimit' => ['bool', 'psdoc'=>'resource', 'value'=>'float'], 'ps_setoverprintmode' => ['bool', 'psdoc'=>'resource', 'mode'=>'int'], 'ps_setpolydash' => ['bool', 'psdoc'=>'resource', 'arr'=>'float'], 'ps_shading' => ['int', 'psdoc'=>'resource', 'type'=>'string', 'x0'=>'float', 'y0'=>'float', 'x1'=>'float', 'y1'=>'float', 'c1'=>'float', 'c2'=>'float', 'c3'=>'float', 'c4'=>'float', 'optlist'=>'string'], 'ps_shading_pattern' => ['int', 'psdoc'=>'resource', 'shadingid'=>'int', 'optlist'=>'string'], 'ps_shfill' => ['bool', 'psdoc'=>'resource', 'shadingid'=>'int'], 'ps_show' => ['bool', 'psdoc'=>'resource', 'text'=>'string'], 'ps_show2' => ['bool', 'psdoc'=>'resource', 'text'=>'string', 'len'=>'int'], 'ps_show_boxed' => ['int', 'psdoc'=>'resource', 'text'=>'string', 'left'=>'float', 'bottom'=>'float', 'width'=>'float', 'height'=>'float', 'hmode'=>'string', 'feature='=>'string'], 'ps_show_xy' => ['bool', 'psdoc'=>'resource', 'text'=>'string', 'x'=>'float', 'y'=>'float'], 'ps_show_xy2' => ['bool', 'psdoc'=>'resource', 'text'=>'string', 'len'=>'int', 'xcoor'=>'float', 'ycoor'=>'float'], 'ps_string_geometry' => ['array', 'psdoc'=>'resource', 'text'=>'string', 'fontid='=>'int', 'size='=>'float'], 'ps_stringwidth' => ['float', 'psdoc'=>'resource', 'text'=>'string', 'fontid='=>'int', 'size='=>'float'], 'ps_stroke' => ['bool', 'psdoc'=>'resource'], 'ps_symbol' => ['bool', 'psdoc'=>'resource', 'ord'=>'int'], 'ps_symbol_name' => ['string', 'psdoc'=>'resource', 'ord'=>'int', 'fontid='=>'int'], 'ps_symbol_width' => ['float', 'psdoc'=>'resource', 'ord'=>'int', 'fontid='=>'int', 'size='=>'float'], 'ps_translate' => ['bool', 'psdoc'=>'resource', 'x'=>'float', 'y'=>'float'], 'pspell_add_to_personal' => ['bool', 'pspell'=>'int', 'word'=>'string'], 'pspell_add_to_session' => ['bool', 'pspell'=>'int', 'word'=>'string'], 'pspell_check' => ['bool', 'pspell'=>'int', 'word'=>'string'], 'pspell_clear_session' => ['bool', 'pspell'=>'int'], 'pspell_config_create' => ['int|false', 'language'=>'string', 'spelling='=>'string', 'jargon='=>'string', 'encoding='=>'string'], 'pspell_config_data_dir' => ['bool', 'conf'=>'int', 'directory'=>'string'], 'pspell_config_dict_dir' => ['bool', 'conf'=>'int', 'directory'=>'string'], 'pspell_config_ignore' => ['bool', 'conf'=>'int', 'ignore'=>'int'], 'pspell_config_mode' => ['bool', 'conf'=>'int', 'mode'=>'int'], 'pspell_config_personal' => ['bool', 'conf'=>'int', 'personal'=>'string'], 'pspell_config_repl' => ['bool', 'conf'=>'int', 'repl'=>'string'], 'pspell_config_runtogether' => ['bool', 'conf'=>'int', 'runtogether'=>'bool'], 'pspell_config_save_repl' => ['bool', 'conf'=>'int', 'save'=>'bool'], 'pspell_new' => ['int|false', 'language'=>'string', 'spelling='=>'string', 'jargon='=>'string', 'encoding='=>'string', 'mode='=>'int'], 'pspell_new_config' => ['int|false', 'config'=>'int'], 'pspell_new_personal' => ['int|false', 'personal'=>'string', 'language'=>'string', 'spelling='=>'string', 'jargon='=>'string', 'encoding='=>'string', 'mode='=>'int'], 'pspell_save_wordlist' => ['bool', 'pspell'=>'int'], 'pspell_store_replacement' => ['bool', 'pspell'=>'int', 'misspell'=>'string', 'correct'=>'string'], 'pspell_suggest' => ['array|false', 'pspell'=>'int', 'word'=>'string'], 'putenv' => ['bool', 'setting'=>'string'], 'px_close' => ['bool', 'pxdoc'=>'resource'], 'px_create_fp' => ['bool', 'pxdoc'=>'resource', 'file'=>'resource', 'fielddesc'=>'array'], 'px_date2string' => ['string', 'pxdoc'=>'resource', 'value'=>'int', 'format'=>'string'], 'px_delete' => ['bool', 'pxdoc'=>'resource'], 'px_delete_record' => ['bool', 'pxdoc'=>'resource', 'num'=>'int'], 'px_get_field' => ['array', 'pxdoc'=>'resource', 'fieldno'=>'int'], 'px_get_info' => ['array', 'pxdoc'=>'resource'], 'px_get_parameter' => ['string', 'pxdoc'=>'resource', 'name'=>'string'], 'px_get_record' => ['array', 'pxdoc'=>'resource', 'num'=>'int', 'mode='=>'int'], 'px_get_schema' => ['array', 'pxdoc'=>'resource', 'mode='=>'int'], 'px_get_value' => ['float', 'pxdoc'=>'resource', 'name'=>'string'], 'px_insert_record' => ['int', 'pxdoc'=>'resource', 'data'=>'array'], 'px_new' => ['resource'], 'px_numfields' => ['int', 'pxdoc'=>'resource'], 'px_numrecords' => ['int', 'pxdoc'=>'resource'], 'px_open_fp' => ['bool', 'pxdoc'=>'resource', 'file'=>'resource'], 'px_put_record' => ['bool', 'pxdoc'=>'resource', 'record'=>'array', 'recpos='=>'int'], 'px_retrieve_record' => ['array', 'pxdoc'=>'resource', 'num'=>'int', 'mode='=>'int'], 'px_set_blob_file' => ['bool', 'pxdoc'=>'resource', 'filename'=>'string'], 'px_set_parameter' => ['bool', 'pxdoc'=>'resource', 'name'=>'string', 'value'=>'string'], 'px_set_tablename' => ['void', 'pxdoc'=>'resource', 'name'=>'string'], 'px_set_targetencoding' => ['bool', 'pxdoc'=>'resource', 'encoding'=>'string'], 'px_set_value' => ['bool', 'pxdoc'=>'resource', 'name'=>'string', 'value'=>'float'], 'px_timestamp2string' => ['string', 'pxdoc'=>'resource', 'value'=>'float', 'format'=>'string'], 'px_update_record' => ['bool', 'pxdoc'=>'resource', 'data'=>'array', 'num'=>'int'], 'qdom_error' => ['string'], 'qdom_tree' => ['QDomDocument', 'doc'=>'string'], 'querymapObj::convertToString' => ['string'], 'querymapObj::free' => ['void'], 'querymapObj::set' => ['int', 'property_name'=>'string', 'new_value'=>''], 'querymapObj::updateFromString' => ['int', 'snippet'=>'string'], 'QuickHashIntHash::__construct' => ['void', 'size'=>'int', 'options='=>'int'], 'QuickHashIntHash::add' => ['bool', 'key'=>'int', 'value='=>'int'], 'QuickHashIntHash::delete' => ['bool', 'key'=>'int'], 'QuickHashIntHash::exists' => ['bool', 'key'=>'int'], 'QuickHashIntHash::get' => ['int', 'key'=>'int'], 'QuickHashIntHash::getSize' => ['int'], 'QuickHashIntHash::loadFromFile' => ['QuickHashIntHash', 'filename'=>'string', 'options='=>'int'], 'QuickHashIntHash::loadFromString' => ['QuickHashIntHash', 'contents'=>'string', 'options='=>'int'], 'QuickHashIntHash::saveToFile' => ['void', 'filename'=>'string'], 'QuickHashIntHash::saveToString' => ['string'], 'QuickHashIntHash::set' => ['bool', 'key'=>'int', 'value'=>'int'], 'QuickHashIntHash::update' => ['bool', 'key'=>'int', 'value'=>'int'], 'QuickHashIntSet::__construct' => ['void', 'size'=>'int', 'options='=>'int'], 'QuickHashIntSet::add' => ['bool', 'key'=>'int'], 'QuickHashIntSet::delete' => ['bool', 'key'=>'int'], 'QuickHashIntSet::exists' => ['bool', 'key'=>'int'], 'QuickHashIntSet::getSize' => ['int'], 'QuickHashIntSet::loadFromFile' => ['QuickHashIntSet', 'filename'=>'string', 'size='=>'int', 'options='=>'int'], 'QuickHashIntSet::loadFromString' => ['QuickHashIntSet', 'contents'=>'string', 'size='=>'int', 'options='=>'int'], 'QuickHashIntSet::saveToFile' => ['void', 'filename'=>'string'], 'QuickHashIntSet::saveToString' => ['string'], 'QuickHashIntStringHash::__construct' => ['void', 'size'=>'int', 'options='=>'int'], 'QuickHashIntStringHash::add' => ['bool', 'key'=>'int', 'value'=>'string'], 'QuickHashIntStringHash::delete' => ['bool', 'key'=>'int'], 'QuickHashIntStringHash::exists' => ['bool', 'key'=>'int'], 'QuickHashIntStringHash::get' => ['mixed', 'key'=>'int'], 'QuickHashIntStringHash::getSize' => ['int'], 'QuickHashIntStringHash::loadFromFile' => ['QuickHashIntStringHash', 'filename'=>'string', 'size='=>'int', 'options='=>'int'], 'QuickHashIntStringHash::loadFromString' => ['QuickHashIntStringHash', 'contents'=>'string', 'size='=>'int', 'options='=>'int'], 'QuickHashIntStringHash::saveToFile' => ['void', 'filename'=>'string'], 'QuickHashIntStringHash::saveToString' => ['string'], 'QuickHashIntStringHash::set' => ['int', 'key'=>'int', 'value'=>'string'], 'QuickHashIntStringHash::update' => ['bool', 'key'=>'int', 'value'=>'string'], 'QuickHashStringIntHash::__construct' => ['void', 'size'=>'int', 'options='=>'int'], 'QuickHashStringIntHash::add' => ['bool', 'key'=>'string', 'value'=>'int'], 'QuickHashStringIntHash::delete' => ['bool', 'key'=>'string'], 'QuickHashStringIntHash::exists' => ['bool', 'key'=>'string'], 'QuickHashStringIntHash::get' => ['mixed', 'key'=>'string'], 'QuickHashStringIntHash::getSize' => ['int'], 'QuickHashStringIntHash::loadFromFile' => ['QuickHashStringIntHash', 'filename'=>'string', 'size='=>'int', 'options='=>'int'], 'QuickHashStringIntHash::loadFromString' => ['QuickHashStringIntHash', 'contents'=>'string', 'size='=>'int', 'options='=>'int'], 'QuickHashStringIntHash::saveToFile' => ['void', 'filename'=>'string'], 'QuickHashStringIntHash::saveToString' => ['string'], 'QuickHashStringIntHash::set' => ['int', 'key'=>'string', 'value'=>'int'], 'QuickHashStringIntHash::update' => ['bool', 'key'=>'string', 'value'=>'int'], 'quoted_printable_decode' => ['string', 'str'=>'string'], 'quoted_printable_encode' => ['string', 'str'=>'string'], 'quotemeta' => ['string', 'str'=>'string'], 'rad2deg' => ['float', 'number'=>'float'], 'radius_acct_open' => ['resource|false'], 'radius_add_server' => ['bool', 'radius_handle'=>'resource', 'hostname'=>'string', 'port'=>'int', 'secret'=>'string', 'timeout'=>'int', 'max_tries'=>'int'], 'radius_auth_open' => ['resource|false'], 'radius_close' => ['bool', 'radius_handle'=>'resource'], 'radius_config' => ['bool', 'radius_handle'=>'resource', 'file'=>'string'], 'radius_create_request' => ['bool', 'radius_handle'=>'resource', 'type'=>'int'], 'radius_cvt_addr' => ['string', 'data'=>'string'], 'radius_cvt_int' => ['int', 'data'=>'string'], 'radius_cvt_string' => ['string', 'data'=>'string'], 'radius_demangle' => ['string', 'radius_handle'=>'resource', 'mangled'=>'string'], 'radius_demangle_mppe_key' => ['string', 'radius_handle'=>'resource', 'mangled'=>'string'], 'radius_get_attr' => ['mixed', 'radius_handle'=>'resource'], 'radius_get_tagged_attr_data' => ['string', 'data'=>'string'], 'radius_get_tagged_attr_tag' => ['int', 'data'=>'string'], 'radius_get_vendor_attr' => ['array', 'data'=>'string'], 'radius_put_addr' => ['bool', 'radius_handle'=>'resource', 'type'=>'int', 'addr'=>'string'], 'radius_put_attr' => ['bool', 'radius_handle'=>'resource', 'type'=>'int', 'value'=>'string'], 'radius_put_int' => ['bool', 'radius_handle'=>'resource', 'type'=>'int', 'value'=>'int'], 'radius_put_string' => ['bool', 'radius_handle'=>'resource', 'type'=>'int', 'value'=>'string'], 'radius_put_vendor_addr' => ['bool', 'radius_handle'=>'resource', 'vendor'=>'int', 'type'=>'int', 'addr'=>'string'], 'radius_put_vendor_attr' => ['bool', 'radius_handle'=>'resource', 'vendor'=>'int', 'type'=>'int', 'value'=>'string'], 'radius_put_vendor_int' => ['bool', 'radius_handle'=>'resource', 'vendor'=>'int', 'type'=>'int', 'value'=>'int'], 'radius_put_vendor_string' => ['bool', 'radius_handle'=>'resource', 'vendor'=>'int', 'type'=>'int', 'value'=>'string'], 'radius_request_authenticator' => ['string', 'radius_handle'=>'resource'], 'radius_salt_encrypt_attr' => ['string', 'radius_handle'=>'resource', 'data'=>'string'], 'radius_send_request' => ['int', 'radius_handle'=>'resource'], 'radius_server_secret' => ['string', 'radius_handle'=>'resource'], 'radius_strerror' => ['string', 'radius_handle'=>'resource'], 'rand' => ['int', 'min'=>'int', 'max'=>'int'], 'rand\'1' => ['int'], 'random_bytes' => ['non-empty-string', 'length'=>'positive-int'], 'random_int' => ['int', 'min'=>'int', 'max'=>'int'], 'range' => ['array', 'low'=>'int|float|string', 'high'=>'int|float|string', 'step='=>'int|float'], 'RangeException::__clone' => ['void'], 'RangeException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?RangeException)'], 'RangeException::__toString' => ['string'], 'RangeException::getCode' => ['int'], 'RangeException::getFile' => ['string'], 'RangeException::getLine' => ['int'], 'RangeException::getMessage' => ['string'], 'RangeException::getPrevious' => ['Throwable|RangeException|null'], 'RangeException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'RangeException::getTraceAsString' => ['string'], 'rar_allow_broken_set' => ['bool', 'rarfile'=>'RarArchive', 'allow_broken'=>'bool'], 'rar_broken_is' => ['bool', 'rarfile'=>'RarArchive'], 'rar_close' => ['bool', 'rarfile'=>'RarArchive'], 'rar_comment_get' => ['string|null', 'rarfile'=>'RarArchive'], 'rar_entry_get' => ['RarEntry|false', 'rarfile'=>'RarArchive', 'entryname'=>'string'], 'rar_list' => ['RarEntry[]|false', 'rarfile'=>'RarArchive'], 'rar_open' => ['RarArchive|false', 'filename'=>'string', 'password='=>'string', 'volume_callback='=>'callable'], 'rar_solid_is' => ['bool', 'rarfile'=>'RarArchive'], 'rar_wrapper_cache_stats' => ['string'], 'RarArchive::__toString' => ['string'], 'RarArchive::close' => ['bool'], 'RarArchive::getComment' => ['string|null'], 'RarArchive::getEntries' => ['RarEntry[]|false'], 'RarArchive::getEntry' => ['RarEntry|false', 'entryname'=>'string'], 'RarArchive::isBroken' => ['bool'], 'RarArchive::isSolid' => ['bool'], 'RarArchive::open' => ['RarArchive|false', 'filename'=>'string', 'password='=>'string', 'volume_callback='=>'callable'], 'RarArchive::setAllowBroken' => ['bool', 'allow_broken'=>'bool'], 'RarEntry::__toString' => ['string'], 'RarEntry::extract' => ['bool', 'dir'=>'string', 'filepath='=>'string', 'password='=>'string', 'extended_data='=>'bool'], 'RarEntry::getAttr' => ['int'], 'RarEntry::getCrc' => ['string'], 'RarEntry::getFileTime' => ['string'], 'RarEntry::getHostOs' => ['int'], 'RarEntry::getMethod' => ['int'], 'RarEntry::getName' => ['string'], 'RarEntry::getPackedSize' => ['int'], 'RarEntry::getPosition' => ['int'], 'RarEntry::getRedirTarget' => ['string|bool'], 'RarEntry::getRedirType' => ['int|false|null'], 'RarEntry::getStream' => ['resource|false', 'password='=>'string'], 'RarEntry::getUnpackedSize' => ['int'], 'RarEntry::getVersion' => ['int'], 'RarEntry::isDirectory' => ['bool'], 'RarEntry::isEncrypted' => ['bool'], 'RarEntry::isRedirectToDirectory' => ['bool|null'], 'RarException::getCode' => ['int'], 'RarException::getFile' => ['string'], 'RarException::getLine' => ['int'], 'RarException::getMessage' => ['string'], 'RarException::getPrevious' => ['Exception|Throwable'], 'RarException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'RarException::getTraceAsString' => ['string'], 'RarException::isUsingExceptions' => ['bool'], 'RarException::setUsingExceptions' => ['void', 'using_exceptions'=>'bool'], 'rawurldecode' => ['string', 'str'=>'string'], 'rawurlencode' => ['string', 'str'=>'string'], 'read_exif_data' => ['array', 'filename'=>'string|resource', 'sections_needed='=>'string', 'sub_arrays='=>'bool', 'read_thumbnail='=>'bool'], 'readdir' => ['non-empty-string|false', 'dir_handle='=>'resource'], 'readfile' => ['0|positive-int|false', 'filename'=>'string', 'use_include_path='=>'bool', 'context='=>'resource'], 'readgzfile' => ['0|positive-int|false', 'filename'=>'string', 'use_include_path='=>'int'], 'readline' => ['string|false', 'prompt='=>'?string'], 'readline_add_history' => ['bool', 'prompt'=>'string'], 'readline_callback_handler_install' => ['bool', 'prompt'=>'string', 'callback'=>'callable'], 'readline_callback_handler_remove' => ['bool'], 'readline_callback_read_char' => ['void'], 'readline_clear_history' => ['bool'], 'readline_completion_function' => ['bool', 'funcname'=>'callable'], 'readline_info' => ['mixed', 'varname='=>'string', 'newvalue='=>'string'], 'readline_list_history' => ['array'], 'readline_on_new_line' => ['void'], 'readline_read_history' => ['bool', 'filename='=>'string'], 'readline_redisplay' => ['void'], 'readline_write_history' => ['bool', 'filename='=>'string'], 'readlink' => ['string|false', 'filename'=>'string'], 'realpath' => ['non-empty-string|false', 'path'=>'string'], 'realpath_cache_get' => ['array'], 'realpath_cache_size' => ['int'], 'recode' => ['string', 'request'=>'string', 'str'=>'string'], 'recode_file' => ['bool', 'request'=>'string', 'input'=>'resource', 'output'=>'resource'], 'recode_string' => ['string', 'request'=>'string', 'str'=>'string'], 'rectObj::__construct' => ['void'], 'rectObj::draw' => ['int', 'map'=>'mapObj', 'layer'=>'layerObj', 'img'=>'imageObj', 'class_index'=>'int', 'text'=>'string'], 'rectObj::fit' => ['float', 'width'=>'int', 'height'=>'int'], 'rectObj::ms_newRectObj' => ['rectObj'], 'rectObj::project' => ['int', 'in'=>'projectionObj', 'out'=>'projectionObj'], 'rectObj::set' => ['int', 'property_name'=>'string', 'new_value'=>''], 'rectObj::setextent' => ['void', 'minx'=>'float', 'miny'=>'float', 'maxx'=>'float', 'maxy'=>'float'], 'RecursiveArrayIterator::__construct' => ['void', 'array='=>'array|object', 'flags='=>'int'], 'RecursiveArrayIterator::append' => ['void', 'value'=>'mixed'], 'RecursiveArrayIterator::asort' => ['void'], 'RecursiveArrayIterator::count' => ['0|positive-int'], 'RecursiveArrayIterator::current' => ['mixed'], 'RecursiveArrayIterator::getArrayCopy' => ['array'], 'RecursiveArrayIterator::getChildren' => ['RecursiveArrayIterator'], 'RecursiveArrayIterator::getFlags' => ['void'], 'RecursiveArrayIterator::hasChildren' => ['bool'], 'RecursiveArrayIterator::key' => ['false|int|string'], 'RecursiveArrayIterator::ksort' => ['void'], 'RecursiveArrayIterator::natcasesort' => ['void'], 'RecursiveArrayIterator::natsort' => ['void'], 'RecursiveArrayIterator::next' => ['void'], 'RecursiveArrayIterator::offsetExists' => ['void', 'index'=>'string'], 'RecursiveArrayIterator::offsetGet' => ['mixed', 'index'=>'string'], 'RecursiveArrayIterator::offsetSet' => ['void', 'index'=>'string', 'newval'=>'string'], 'RecursiveArrayIterator::offsetUnset' => ['void', 'index'=>'string'], 'RecursiveArrayIterator::rewind' => ['void'], 'RecursiveArrayIterator::seek' => ['void', 'position'=>'int'], 'RecursiveArrayIterator::serialize' => ['string'], 'RecursiveArrayIterator::setFlags' => ['void', 'flags'=>'string'], 'RecursiveArrayIterator::uasort' => ['void', 'callback'=>'callable(mixed,mixed):int'], 'RecursiveArrayIterator::uksort' => ['void', 'callback'=>'callable(array-key,array-key):int'], 'RecursiveArrayIterator::unserialize' => ['string', 'serialized'=>'string'], 'RecursiveArrayIterator::valid' => ['bool'], 'RecursiveCachingIterator::__construct' => ['void', 'iterator'=>'Iterator', 'flags'=>''], 'RecursiveCachingIterator::getChildren' => ['RecursiveCachingIterator'], 'RecursiveCachingIterator::hasChildren' => ['bool'], 'RecursiveCallbackFilterIterator::__construct' => ['void', 'iterator'=>'RecursiveIterator', 'func'=>'callable'], 'RecursiveCallbackFilterIterator::getChildren' => ['RecursiveCallbackFilterIterator'], 'RecursiveCallbackFilterIterator::hasChildren' => ['void'], 'RecursiveDirectoryIterator::__construct' => ['void', 'path'=>'string', 'flags='=>'int'], 'RecursiveDirectoryIterator::getChildren' => ['object'], 'RecursiveDirectoryIterator::getSubPath' => ['string'], 'RecursiveDirectoryIterator::getSubPathname' => ['string'], 'RecursiveDirectoryIterator::hasChildren' => ['bool', 'allow_links='=>'bool'], 'RecursiveDirectoryIterator::key' => ['string'], 'RecursiveDirectoryIterator::next' => ['void'], 'RecursiveDirectoryIterator::rewind' => ['void'], 'RecursiveFilterIterator::__construct' => ['void', 'iterator'=>'RecursiveIterator'], 'RecursiveFilterIterator::getChildren' => ['RecursiveFilterIterator'], 'RecursiveFilterIterator::hasChildren' => ['bool'], 'RecursiveIterator::getChildren' => ['RecursiveIterator'], 'RecursiveIterator::hasChildren' => ['bool'], 'RecursiveIteratorIterator::__construct' => ['void', 'iterator'=>'RecursiveIterator|IteratorAggregate', 'mode='=>'int', 'flags='=>'int'], 'RecursiveIteratorIterator::beginChildren' => ['void'], 'RecursiveIteratorIterator::beginIteration' => ['RecursiveIterator'], 'RecursiveIteratorIterator::callGetChildren' => ['RecursiveIterator'], 'RecursiveIteratorIterator::callHasChildren' => ['bool'], 'RecursiveIteratorIterator::current' => ['mixed'], 'RecursiveIteratorIterator::endChildren' => ['void'], 'RecursiveIteratorIterator::endIteration' => ['RecursiveIterator'], 'RecursiveIteratorIterator::getDepth' => ['int'], 'RecursiveIteratorIterator::getInnerIterator' => ['RecursiveIterator'], 'RecursiveIteratorIterator::getMaxDepth' => ['int|false'], 'RecursiveIteratorIterator::getSubIterator' => ['RecursiveIterator', 'level='=>'int'], 'RecursiveIteratorIterator::key' => ['mixed'], 'RecursiveIteratorIterator::next' => ['void'], 'RecursiveIteratorIterator::nextElement' => ['void'], 'RecursiveIteratorIterator::rewind' => ['void'], 'RecursiveIteratorIterator::setMaxDepth' => ['void', 'max_depth='=>'int'], 'RecursiveIteratorIterator::valid' => ['bool'], 'RecursiveRegexIterator::__construct' => ['void', 'iterator'=>'RecursiveIterator', 'regex='=>'string', 'mode='=>'int', 'flags='=>'int', 'preg_flags='=>'int'], 'RecursiveRegexIterator::getChildren' => ['RecursiveRegexIterator'], 'RecursiveRegexIterator::hasChildren' => ['bool'], 'RecursiveTreeIterator::__construct' => ['void', 'iterator'=>'RecursiveIterator|IteratorAggregate', 'flags='=>'int', 'cit_flags='=>'int', 'mode='=>'int'], 'RecursiveTreeIterator::beginChildren' => ['void'], 'RecursiveTreeIterator::beginIteration' => ['RecursiveIterator'], 'RecursiveTreeIterator::callGetChildren' => ['RecursiveIterator'], 'RecursiveTreeIterator::callHasChildren' => ['bool'], 'RecursiveTreeIterator::current' => ['string'], 'RecursiveTreeIterator::endChildren' => ['void'], 'RecursiveTreeIterator::endIteration' => ['void'], 'RecursiveTreeIterator::getEntry' => ['string'], 'RecursiveTreeIterator::getPostfix' => ['string'], 'RecursiveTreeIterator::getPrefix' => ['string'], 'RecursiveTreeIterator::key' => ['string'], 'RecursiveTreeIterator::next' => ['void'], 'RecursiveTreeIterator::nextElement' => ['void'], 'RecursiveTreeIterator::rewind' => ['void'], 'RecursiveTreeIterator::setPostfix' => ['void', 'prefix'=>'string'], 'RecursiveTreeIterator::setPrefixPart' => ['void', 'part'=>'int', 'prefix'=>'string'], 'RecursiveTreeIterator::valid' => ['bool'], 'Redis::__construct' => ['void', 'options='=>'?array{host?:string,port?:int,connectTimeout?:float,auth?:list{string|null|false,string}|list{string},ssl?:array,backoff?:array}'], 'Redis::_compress' => ['string', 'value'=>'string'], 'Redis::_uncompress' => ['string', 'value'=>'string'], 'Redis::_prefix' => ['string', 'key'=>'mixed'], 'Redis::_serialize' => ['mixed', 'value'=>'string'], 'Redis::_unserialize' => ['string', 'value'=>'mixed'], 'Redis::_pack' => ['mixed', 'value'=>'string'], 'Redis::_unpack' => ['string', 'value'=>'mixed'], 'Redis::acl' => ['mixed', 'subcmd'=>'string', '...args='=>'string'], 'Redis::append' => ['__benevolent', 'key'=>'string', 'value'=>'string'], 'Redis::auth' => ['__benevolent', 'credentials'=>'string|string[]'], 'Redis::bgrewriteaof' => ['__benevolent'], 'Redis::bgSave' => ['__benevolent'], 'Redis::bitcount' => ['__benevolent', 'key'=>'string', 'start='=>'int', 'end='=>'int', 'bybit='=>'bool'], 'Redis::bitop' => ['__benevolent', 'operation'=>'string', 'deskey'=>'string', 'srckey'=>'string', '...other_keys'=>'string'], 'Redis::bitpos' => ['__benevolent', 'key'=>'string', 'bit'=>'bool', 'start='=>'int', 'end='=>'int', 'bybit='=>'bool'], 'Redis::blmove' => ['__benevolent', 'src'=>'string', 'dst'=>'string', 'wherefrom'=>'string', 'whereto'=>'string', 'timeout'=>'float'], 'Redis::blmpop' => ['__benevolent', 'timeout'=>'float', 'keys'=>'string[]', 'from'=>'string', 'count='=>'int'], 'Redis::blPop' => ['__benevolent', 'key_or_keys'=>'string|string[]', 'timeout_or_key'=>'string|float|int', '...extra_args'=>'mixed'], 'Redis::blPop\'1' => ['array', 'key'=>'string', 'timeout_or_key'=>'int|string', '...extra_args'=>'int|string'], 'Redis::brPop' => ['__benevolent', 'key_or_keys'=>'string|string[]', 'timeout_or_key'=>'string|float|int', '...extra_args'=>'mixed'], 'Redis::brPop\'1' => ['array', 'key'=>'string', 'timeout_or_key'=>'int|string', '...extra_args'=>'int|string'], 'Redis::brpoplpush' => ['__benevolent', 'src'=>'string', 'dst'=>'string', 'timeout'=>'int|float'], 'Redis::bzPopMax' => ['__benevolent', 'key'=>'string|string[]', 'timeout_or_key'=>'string|int', '...extra_args'=>'mixed'], 'Redis::bzPopMin' => ['__benevolent', 'key'=>'string|string[]', 'timeout_or_key'=>'string|int', '...extra_args'=>'mixed'], 'Redis::bzmpop' => ['__benevolent', 'timeout'=>'float', 'keys'=>'string[]', 'from'=>'string', 'count='=>'int'], 'Redis::clearLastError' => ['bool'], 'Redis::clearTransferredBytes' => ['void'], 'Redis::client' => ['mixed', 'opt'=>'string', '...args='=>'mixed'], 'Redis::close' => ['bool'], 'Redis::command' => ['mixed', 'opt='=>'?string', '...args'=>'mixed'], 'Redis::config' => ['mixed', 'operation'=>'string', 'key_or_settings='=>'array|string[]|string|null', 'value='=>'?string'], 'Redis::connect' => ['bool', 'host'=>'string', 'port='=>'int', 'timeout='=>'float', 'persistent_id='=>'?string', 'retry_interval='=>'int', 'read_timeout='=>'float', 'context='=>'?array{auth?:list{string|null|false,string}|list{string},stream?:array}'], 'Redis::copy' => ['__benevolent', 'src'=>'string', 'dst'=>'string', 'options='=>'?array'], 'Redis::dbSize' => ['__benevolent'], 'Redis::debug' => ['__benevolent', 'key'=>'string'], 'Redis::decr' => ['__benevolent', 'key'=>'string', 'by='=>'int'], 'Redis::decrBy' => ['__benevolent', 'key'=>'string', 'value'=>'int'], 'Redis::decrByFloat' => ['float', 'key'=>'string', 'value'=>'float'], 'Redis::del' => ['__benevolent', 'key'=>'string[]|string', '...other_keys='=>'string'], 'Redis::del\'1' => ['int', 'key'=>'string[]'], 'Redis::delete' => ['__benevolent', 'key'=>'string[]|string', '...other_keys='=>'string'], 'Redis::delete\'1' => ['int', 'key'=>'string[]'], 'Redis::discard' => ['__benevolent'], 'Redis::dump' => ['__benevolent', 'key'=>'string'], 'Redis::echo' => ['__benevolent', 'str'=>'string'], 'Redis::eval' => ['mixed', 'script'=>'string', 'args='=>'array', 'num_keys='=>'int'], 'Redis::eval_ro' => ['mixed', 'script'=>'string', 'args='=>'array', 'num_keys='=>'int'], 'Redis::evalsha' => ['mixed', 'sha1'=>'string', 'args='=>'array', 'num_keys='=>'int'], 'Redis::evalsha_ro' => ['mixed', 'sha1'=>'string', 'args='=>'array', 'num_keys='=>'int'], 'Redis::evaluate' => ['mixed', 'script'=>'string', 'args='=>'array', 'numKeys='=>'int'], 'Redis::exec' => ['__benevolent'], 'Redis::exists' => ['__benevolent', 'keys'=>'string|string[]', '...other_keys='=>'string'], 'Redis::exists\'1' => ['int', '...keys'=>'string'], 'Redis::expire' => ['__benevolent', 'key'=>'string', 'timeout'=>'int', 'mode='=>'?string'], 'Redis::expireAt' => ['__benevolent', 'key'=>'string', 'timeout'=>'int', 'mode='=>'?string'], 'Redis::expiretime' => ['__benevolent', 'key'=>'string'], 'Redis::failover' => ['__benevolent', 'to='=>'?array', 'abort='=>'bool', 'timeout='=>'int'], 'Redis::fcall' => ['mixed', 'fn'=>'string', 'keys='=>'string[]', 'args='=>'array'], 'Redis::fcall_ro' => ['mixed', 'fn'=>'string', 'keys='=>'string[]', 'args='=>'array'], 'Redis::flushAll' => ['__benevolent', 'sync='=>'?bool'], 'Redis::flushDb' => ['__benevolent', 'sync='=>'?bool'], 'Redis::function' => ['__benevolent', 'operation'=>'string', '...args='=>'mixed'], 'Redis::geoadd' => ['__benevolent', 'key'=>'string', 'lng'=>'float', 'lat'=>'float', 'member'=>'string', '...other_triples_and_options='=>'mixed'], 'Redis::geodist' => ['__benevolent', 'key'=>'string', 'member'=>'string', '...other_members='=>'string'], 'Redis::geohash' => ['__benevolent|false>', 'key'=>'string', 'member'=>'string', '...other_members='=>'string'], 'Redis::geopos' => ['__benevolent|false>', 'key'=>'string', 'member'=>'string', '...other_members'=>'string'], 'Redis::georadius' => ['__benevolent>', 'key'=>'string', 'lng'=>'float', 'lat'=>'float', 'radius'=>'float', 'unit'=>'string', 'options='=>'array'], 'Redis::georadiusbymember' => ['__benevolent>', 'key'=>'string', 'lng'=>'float', 'lat'=>'float', 'radius'=>'float', 'unit'=>'string', 'options='=>'array'], 'Redis::georadiusbymember_ro' => ['__benevolent>', 'key'=>'string', 'lng'=>'float', 'lat'=>'float', 'radius'=>'float', 'unit'=>'string', 'options='=>'array'], 'Redis::geosearch' => ['__benevolent>', 'key'=>'string', 'position'=>'array|string', 'shape'=>'array|int|float', 'unit'=>'string', 'options='=>'array'], 'Redis::geosearchstore' => ['__benevolent|int|false>', 'dst'=>'string', 'src'=>'string', 'position'=>'array|string', 'shape'=>'array|int|float', 'unit'=>'string', 'options='=>'array'], 'Redis::get' => ['mixed', 'key'=>'string'], 'Redis::getAuth' => ['string|false|null'], 'Redis::getBit' => ['__benevolent', 'key'=>'string', 'idx'=>'int'], 'Redis::getEx' => ['__benevolent', 'key'=>'string', 'options'=>'?array{EX?:int,PX?:int,EXAT?:int,PXAT?:int,PERSIST?:bool}'], 'Redis::getDBNum' => ['int'], 'Redis::getDel' => ['__benevolent', 'key'=>'string'], 'Redis::getHost' => ['string'], 'Redis::getKeys' => ['array', 'pattern'=>'string'], 'Redis::getLastError' => ['?string'], 'Redis::getMode' => ['int'], 'Redis::getMultiple' => ['array', 'keys'=>'string[]'], 'Redis::getOption' => ['int', 'name'=>'int'], 'Redis::getPersistentID' => ['?string'], 'Redis::getPort' => ['int'], 'Redis::getRange' => ['__benevolent', 'key'=>'string', 'start'=>'int', 'end'=>'int'], 'Redis::getReadTimeout' => ['float'], 'Redis::getset' => ['__benevolent', 'key'=>'string', 'value'=>'mixed'], 'Redis::getTimeout' => ['float|false'], 'Redis::getTransferredBytes' => ['array'], 'Redis::hDel' => ['__benevolent', 'key'=>'string', 'field'=>'string', '...other_fields='=>'string'], 'Redis::hExists' => ['__benevolent', 'key'=>'string', 'field'=>'string'], 'Redis::hGet' => ['__benevolent', 'key'=>'string', 'member'=>'string'], 'Redis::hGetAll' => ['__benevolent', 'key'=>'string'], 'Redis::hIncrBy' => ['__benevolent', 'key'=>'string', 'field'=>'string', 'value'=>'int'], 'Redis::hIncrByFloat' => ['__benevolent', 'key'=>'string', 'field'=>'string', 'value'=>'float'], 'Redis::hKeys' => ['__benevolent', 'key'=>'string'], 'Redis::hLen' => ['__benevolent', 'key'=>'string'], 'Redis::hMget' => ['__benevolent|false>', 'key'=>'string', 'fields'=>'string[]'], 'Redis::hMset' => ['__benevolent', 'key'=>'string', 'fieldvals'=>'array'], 'Redis::hRandField' => ['__benevolent>', 'key'=>'string', 'options'=>'?array{COUNT?:int,WITHVALUES?:bool}'], 'Redis::hscan' => ['__benevolent|bool>', 'key'=>'string', '&iterator'=>'?int', 'pattern='=>'?string', 'count='=>'int'], 'Redis::hSet' => ['__benevolent', 'key'=>'string', 'member'=>'string', 'value'=>'mixed'], 'Redis::hSetNx' => ['__benevolent', 'key'=>'string', 'field'=>'string', 'value'=>'string'], 'Redis::hStrLen' => ['__benevolent', 'key'=>'string', 'field'=>'string'], 'Redis::hVals' => ['__benevolent', 'key'=>'string'], 'Redis::incr' => ['__benevolent', 'key'=>'string', 'by='=>'int'], 'Redis::incrBy' => ['__benevolent', 'key'=>'string', 'value'=>'int'], 'Redis::incrByFloat' => ['__benevolent', 'key'=>'string', 'value'=>'float'], 'Redis::info' => ['__benevolent|false>', '...sections='=>'string'], 'Redis::isConnected' => ['bool'], 'Redis::keys' => ['__benevolent|false>', 'pattern'=>'string'], 'Redis::lastSave' => ['int'], 'Redis::lcs' => ['__benevolent', 'key1'=>'string', 'key2'=>'string', 'options'=>'?array{MINMATCHLEN?:int,WITHMATCHLEN?:bool,LEN?:bool,IDX?:bool}'], 'Redis::lGet' => ['', 'key'=>'string', 'index'=>'int'], 'Redis::lGetRange' => ['', 'key'=>'string', 'start'=>'int', 'end'=>'int'], 'Redis::lindex' => ['null|string|false', 'key'=>'string', 'index'=>'int'], 'Redis::lInsert' => ['__benevolent', 'key'=>'string', 'pos'=>'int', 'pivot'=>'mixed', 'value'=>'mixed'], 'Redis::listTrim' => ['', 'key'=>'string', 'start'=>'int', 'stop'=>'int'], 'Redis::lLen' => ['__benevolent', 'key'=>'string'], 'Redis::lMove' => ['__benevolent', 'src'=>'string', 'dst'=>'string', 'wherefrom'=>'string', 'whereto'=>'string'], 'Redis::lmpop' => ['__benevolent|null|false>', 'keys'=>'string[]', 'from'=>'string', 'count='=>'int'], 'Redis::lPop' => ['__benevolent', 'key'=>'string', 'count='=>'int'], 'Redis::lPos' => ['__benevolent', 'key'=>'string', 'value'=>'mixed', 'options'=>'?array{COUNT?:int,RANK?:int,MAXLEN?:int}'], 'Redis::lPush' => ['__benevolent', 'key'=>'string', '...elements='=>'mixed'], 'Redis::lPushx' => ['__benevolent', 'key'=>'string', 'value'=>'mixed'], 'Redis::lrange' => ['__benevolent', 'key'=>'string', 'start'=>'int', 'end'=>'int'], 'Redis::lrem' => ['__benevolent', 'key'=>'string', 'value'=>'mixed', 'count='=>'int'], 'Redis::lSet' => ['__benevolent', 'key'=>'string', 'index'=>'int', 'value'=>'mixed'], 'Redis::lSize' => ['', 'key'=>'string'], 'Redis::ltrim' => ['__benevolent', 'key'=>'string', 'start'=>'int', 'end'=>'int'], 'Redis::mget' => ['__benevolent>', 'keys'=>'string[]'], 'Redis::migrate' => ['__benevolent', 'host'=>'string', 'port'=>'int', 'key'=>'string|string[]', 'dstdb'=>'int', 'timeout'=>'int', 'copy='=>'bool', 'replace='=>'bool', 'credentials='=>'mixed'], 'Redis::move' => ['__benevolent', 'key'=>'string', 'index'=>'int'], 'Redis::mset' => ['__benevolent', 'key_values'=>'array'], 'Redis::msetnx' => ['__benevolent', 'key_values'=>'array'], 'Redis::multi' => ['__benevolent', 'value='=>'int'], 'Redis::object' => ['__benevolent', 'subcommand'=>'string', 'key'=>'string'], 'Redis::open' => ['bool', 'host'=>'string', 'port='=>'int', 'timeout='=>'float', 'persistent_id='=>'?string', 'retry_interval='=>'int', 'read_timeout='=>'float', 'context='=>'?array{auth?:list{string|null|false,string}|list{string},stream?:array}'], 'Redis::pconnect' => ['bool', 'host'=>'string', 'port='=>'int', 'timeout='=>'float', 'persistent_id='=>'?string', 'retry_interval='=>'int', 'read_timeout='=>'float', 'context='=>'?array{auth?:list{string|null|false,string}|list{string},stream?:array}'], 'Redis::persist' => ['__benevolent', 'key'=>'string'], 'Redis::pexpire' => ['bool', 'key'=>'string', 'timeout'=>'int', 'mode='=>'?string'], 'Redis::pexpireAt' => ['__benevolent', 'key'=>'string', 'timestamp'=>'int', 'mode='=>'?string'], 'Redis::pexpiretime' => ['__benevolent', 'key'=>'string'], 'Redis::pfadd' => ['__benevolent', 'key'=>'string', 'elements'=>'array'], 'Redis::pfcount' => ['__benevolent', 'key_or_keys'=>'string[]|string'], 'Redis::pfmerge' => ['__benevolent', 'dst'=>'string', 'srckeys'=>'string[]'], 'Redis::ping' => ['__benevolent', 'message='=>'?string'], 'Redis::pipeline' => ['__benevolent'], 'Redis::popen' => ['bool', 'host'=>'string', 'port='=>'int', 'timeout='=>'float', 'persistent_id='=>'?string', 'retry_interval='=>'int', 'read_timeout='=>'float', 'context='=>'?array{auth?:list{string|null|false,string}|list{string},stream?:array}'], 'Redis::psetex' => ['__benevolent', 'key'=>'string', 'expire'=>'int', 'value'=>'mixed'], 'Redis::psubscribe' => ['bool', 'patterns'=>'string[]', 'cb'=>'callable'], 'Redis::pttl' => ['__benevolent', 'key'=>'string'], 'Redis::publish' => ['__benevolent', 'channel'=>'string', 'message'=>'string'], 'Redis::pubsub' => ['array|int', 'command'=>'string', 'arg'=>'array|string'], 'Redis::punsubscribe' => ['__benevolent', 'patterns='=>'string[]'], 'Redis::randomKey' => ['__benevolent'], 'Redis::rawcommand' => ['mixed', 'command'=>'string', '...args='=>'mixed'], 'Redis::rename' => ['__benevolent', 'old_name'=>'string', 'new_name'=>'string'], 'Redis::renameKey' => ['bool', 'srckey'=>'string', 'dstkey'=>'string'], 'Redis::renameNx' => ['__benevolent', 'old_name'=>'string', 'new_name'=>'string'], 'Redis::reset' => ['__benevolent'], 'Redis::resetStat' => ['bool'], 'Redis::restore' => ['__benevolent', 'key'=>'string', 'ttl'=>'int', 'value'=>'string', 'options='=>'?array{ABSTTL?:bool,REPLACE?:bool,IDLETIME?:int,FREQ?:int}'], 'Redis::role' => ['mixed'], 'Redis::rPop' => ['__benevolent|string|bool>', 'key'=>'string', 'count='=>'int'], 'Redis::rpoplpush' => ['__benevolent', 'srckey'=>'string', 'dstkey'=>'string'], 'Redis::rPush' => ['__benevolent', 'key'=>'string', '...elements='=>'mixed'], 'Redis::rPushx' => ['__benevolent', 'key'=>'string', 'value'=>'mixed'], 'Redis::sAdd' => ['__benevolent', 'key'=>'string', 'value'=>'mixed', '...other_values='=>'string'], 'Redis::sAddArray' => ['int', 'key'=>'string', 'values'=>'array'], 'Redis::save' => ['__benevolent'], 'Redis::scan' => ['array|false', '&iterator'=>'?int', 'pattern='=>'?string', 'count='=>'?int', 'type='=>'?string'], 'Redis::scard' => ['__benevolent', 'key'=>'string'], 'Redis::sContains' => ['', 'key'=>'string', 'value'=>'string'], 'Redis::script' => ['mixed', 'command'=>'string', '...args='=>'mixed'], 'Redis::sDiff' => ['__benevolent|false>', 'key'=>'string', '...other_keys='=>'string'], 'Redis::sDiffStore' => ['__benevolent', 'dst'=>'string', 'key'=>'string', '...other_keys='=>'string'], 'Redis::select' => ['__benevolent', 'db'=>'int'], 'Redis::set' => ['__benevolent', 'key'=>'string', 'value'=>'mixed', 'options='=>'array'], 'Redis::set\'1' => ['bool', 'key'=>'string', 'value'=>'mixed', 'timeout='=>'int'], 'Redis::setBit' => ['__benevolent', 'key'=>'string', 'idx'=>'int', 'value'=>'bool'], 'Redis::setex' => ['__benevolent', 'key'=>'string', 'expire'=>'int', 'value'=>'mixed'], 'Redis::setnx' => ['__benevolent', 'key'=>'string', 'value'=>'mixed'], 'Redis::setOption' => ['bool', 'option'=>'int', 'value'=>'mixed'], 'Redis::setRange' => ['__benevolent', 'key'=>'string', 'index'=>'int', 'value'=>'string'], 'Redis::setTimeout' => ['bool', 'key'=>'string', 'ttl'=>'int'], 'Redis::sGetMembers' => ['array', 'key'=>'string'], 'Redis::sInter' => ['__benevolent|false>', 'key'=>'string', '...other_keys='=>'string'], 'Redis::sintercard' => ['__benevolent', 'keys'=>'string[]', 'limit='=>'int'], 'Redis::sInterStore' => ['__benevolent', 'key'=>'string[]|string', '...other_keys='=>'string'], 'Redis::sismember' => ['__benevolent', 'key'=>'string', 'value'=>'mixed'], 'Redis::slave' => ['bool', 'host'=>'string', 'port'=>'int'], 'Redis::slave\'1' => ['bool', 'host'=>'string', 'port'=>'int'], 'Redis::slaveof' => ['__benevolent', 'host='=>'?string', 'port='=>'int'], 'Redis::slowlog' => ['mixed', 'operation'=>'string', 'length='=>'int'], 'Redis::sMembers' => ['__benevolent|false>', 'key'=>'string'], 'Redis::sMisMember' => ['__benevolent', 'key'=>'string', 'member'=>'string', '...other_members='=>'string'], 'Redis::sMove' => ['__benevolent', 'src'=>'string', 'dst'=>'string', 'value'=>'mixed'], 'Redis::sort' => ['array|int', 'key'=>'string', 'options='=>'?array{SORT?:string,ALPHA?:bool,LIMIT?:array{0:int,1:int},BY?:string,GET?:string}'], 'Redis::sort_ro' => ['array|int', 'key'=>'string', 'options='=>'?array{SORT?:string,ALPHA?:bool,LIMIT?:array{0:int,1:int},BY?:string,GET?:string}'], 'Redis::sPop' => ['__benevolent', 'key'=>'string', 'count='=>'int'], 'Redis::sRandMember' => ['__benevolent', 'key'=>'string', 'count='=>'int'], 'Redis::srem' => ['__benevolent', 'key'=>'string', 'value'=>'mixed', '...other_values='=>'mixed'], 'Redis::sRemove' => ['int', 'key'=>'string', 'member1'=>'string', '...other_members='=>'string'], 'Redis::sscan' => ['__benevolent', 'key'=>'string', '&iterator'=>'?int', 'pattern='=>'?string', 'count='=>'int'], 'Redis::ssubscribe' => ['bool', 'channels'=>'string[]', 'cb'=>'callable'], 'Redis::strlen' => ['__benevolent', 'key'=>'string'], 'Redis::subscribe' => ['bool', 'channels'=>'string[]', 'cb'=>'callable'], 'Redis::substr' => ['', 'key'=>'string', 'start'=>'int', 'end'=>'int'], 'Redis::unlink\'1' => ['int', 'key'=>'string[]'], 'Redis::sUnion' => ['__benevolent|false>', 'key'=>'string', '...other_keys='=>'string'], 'Redis::sUnionStore' => ['__benevolent', 'dst'=>'string', 'key'=>'string', '...other_keys='=>'string'], 'Redis::sunsubscribe' => ['__benevolent', 'channels'=>'string[]'], 'Redis::swapdb' => ['__benevolent', 'src'=>'int', 'dst'=>'int'], 'Redis::time' => ['__benevolent'], 'Redis::ttl' => ['__benevolent', 'key'=>'string'], 'Redis::type' => ['__benevolent', 'key'=>'string'], 'Redis::unlink' => ['__benevolent', 'key'=>'string[]|string', '...other_keys'=>'string'], 'Redis::unsubscribe' => ['__benevolent', 'channels'=>'string[]'], 'Redis::unwatch' => ['__benevolent'], 'Redis::wait' => ['int|false', 'numreplicas'=>'int', 'timeout'=>'int'], 'Redis::watch' => ['__benevolent', 'key'=>'string[]|string', '...other_keys='=>'string'], 'Redis::xack' => ['int|false', 'key'=>'string', 'group'=>'string', 'ids'=>'array'], 'Redis::xadd' => ['__benevolent', 'key'=>'string', 'id'=>'string', 'values'=>'array', 'maxlen='=>'int', 'approx='=>'bool', 'nomkstream='=>'bool'], 'Redis::xclaim' => ['__benevolent', 'key'=>'string', 'group'=>'string', 'consumer'=>'string', 'min_idle'=>'int', 'ids'=>'array', 'options='=>'array'], 'Redis::xdel' => ['__benevolent', 'key'=>'string', 'ids'=>'array'], 'Redis::xgroup' => ['mixed', 'operation'=>'string', 'key='=>'?string', 'group='=>'?string', 'id_or_consumer='=>'?string', 'mkstream='=>'bool', 'entries_read='=>'int'], 'Redis::xinfo' => ['mixed', 'operation'=>'string', 'arg1='=>'?string', 'arg2='=>'?string', 'count='=>'int'], 'Redis::xlen' => ['__benevolent', 'key'=>'string'], 'Redis::xpending' => ['__benevolent', 'key'=>'string', 'group'=>'string', 'start='=>'?string', 'end='=>'?string', 'count='=>'int', 'consumer='=>'?string'], 'Redis::xrange' => ['__benevolent', 'key'=>'string', 'start'=>'string', 'end'=>'string', 'count='=>'int'], 'Redis::xread' => ['__benevolent', 'streams'=>'array', 'count='=>'int', 'block='=>'int'], 'Redis::xreadgroup' => ['__benevolent', 'group'=>'string', 'consumer'=>'string', 'streams'=>'array', 'count='=>'int', 'block='=>'int'], 'Redis::xrevrange' => ['__benevolent', 'key'=>'string', 'end'=>'string', 'start'=>'string', 'count='=>'int'], 'Redis::xtrim' => ['__benevolent', 'key'=>'string', 'threshold'=>'string', 'approx='=>'bool', 'minid='=>'bool', 'limit='=>'int'], 'Redis::zAdd' => ['__benevolent', 'key'=>'string', 'score_or_options'=>'array|float', '...more_scores_and_mems='=>'mixed'], 'Redis::zAdd\'1' => ['int', 'key'=>'string', 'options'=>'array', 'score1'=>'float', 'value1'=>'string', 'score2='=>'float', 'value2='=>'string', 'scoreN='=>'float', 'valueN='=>'string'], 'Redis::zCard' => ['__benevolent', 'key'=>'string'], 'Redis::zCount' => ['__benevolent', 'key'=>'string', 'start'=>'string', 'end'=>'string'], 'Redis::zDelete' => ['int', 'key'=>'string', 'member'=>'string', '...other_members='=>'string'], 'Redis::zDeleteRangeByRank' => ['', 'key'=>'string', 'start'=>'int', 'end'=>'int'], 'Redis::zDeleteRangeByScore' => ['', 'key'=>'string', 'start'=>'float', 'end'=>'float'], 'Redis::zIncrBy' => ['__benevolent', 'key'=>'string', 'value'=>'float', 'member'=>'mixed'], 'Redis::zInter' => ['__benevolent', 'keys'=>'string[]', 'weights='=>'?array', 'options='=>'?array'], 'Redis::zmpop' => ['__benevolent', 'keys'=>'string[]', 'from'=>'string', 'count='=>'int'], 'Redis::zRange' => ['__benevolent', 'key'=>'string', 'start'=>'string|int', 'end'=>'string|int', 'options='=>'array|bool|null'], 'Redis::zRangeByLex' => ['__benevolent', 'key'=>'string', 'min'=>'string', 'max'=>'string', 'offset='=>'int', 'limit='=>'int'], 'Redis::zRangeByScore' => ['__benevolent', 'key'=>'string', 'start'=>'string', 'end'=>'string', 'options='=>'array'], 'Redis::zRank' => ['__benevolent', 'key'=>'string', 'member'=>'mixed'], 'Redis::zRem' => ['__benevolent', 'key'=>'string', 'member'=>'string', '...other_members='=>'string'], 'Redis::zRemove' => ['int', 'key'=>'string', 'member'=>'string', '...other_members='=>'string'], 'Redis::zRemRangeByRank' => ['__benevolent', 'key'=>'string', 'start'=>'int', 'end'=>'int'], 'Redis::zRemRangeByScore' => ['__benevolent', 'key'=>'string', 'start'=>'string', 'end'=>'string'], 'Redis::zRevRange' => ['__benevolent', 'key'=>'string', 'start'=>'int', 'end'=>'int', 'scores='=>'bool|array{withscores:bool}|null'], 'Redis::zRevRangeByLex' => ['__benevolent', 'key'=>'string', 'max'=>'string', 'min'=>'string', 'offset='=>'int', 'limit='=>'int'], 'Redis::zRevRangeByScore' => ['__benevolent', 'key'=>'string', 'max'=>'string', 'min'=>'string', 'options='=>'array|bool'], 'Redis::zRevRank' => ['__benevolent', 'key'=>'string', 'member'=>'mixed'], 'Redis::zscan' => ['__benevolent', 'key'=>'string', '&iterator'=>'?int', 'pattern='=>'?string', 'count='=>'int'], 'Redis::zScore' => ['__benevolent', 'key'=>'string', 'member'=>'mixed'], 'Redis::zSize' => ['', 'key'=>'string'], 'Redis::zUnion' => ['__benevolent', 'keys'=>'string[]', 'weights'=>'?array', 'options='=>'?array'], 'RedisArray::__construct' => ['void', 'name'=>'string'], 'RedisArray::__construct\'1' => ['void', 'hosts'=>'array', 'opts='=>'array'], 'RedisArray::_function' => ['string'], 'RedisArray::_hosts' => ['array'], 'RedisArray::_rehash' => ['', 'callable='=>'callable'], 'RedisArray::_target' => ['string', 'key'=>'string'], 'RedisCluster::__construct' => ['void', 'name'=>'string|null', 'seeds='=>'string[]|null', 'timeout='=>'int|float', 'read_timeout='=>'int|float', 'persistent='=>'bool', 'auth='=>'mixed', 'context='=>'array|null'], 'RedisCluster::_masters' => ['array'], 'RedisCluster::_prefix' => ['string', 'value'=>'mixed'], 'RedisCluster::_serialize' => ['mixed', 'value'=>'mixed'], 'RedisCluster::_unserialize' => ['mixed', 'value'=>'string'], 'RedisCluster::append' => ['int', 'key'=>'string', 'value'=>'string'], 'RedisCluster::bgrewriteaof' => ['bool', 'nodeParams'=>'string'], 'RedisCluster::bgsave' => ['bool', 'nodeParams'=>'string'], 'RedisCluster::bitCount' => ['int', 'key'=>'string'], 'RedisCluster::bitOp' => ['int', 'operation'=>'string', 'retKey'=>'string', 'key1'=>'string', 'key2'=>'string', 'key3='=>'string'], 'RedisCluster::bitpos' => ['int', 'key'=>'string', 'bit'=>'int', 'start='=>'int', 'end='=>'int'], 'RedisCluster::blPop' => ['array', 'keys'=>'array', 'timeout'=>'int'], 'RedisCluster::brPop' => ['array', 'keys'=>'array', 'timeout'=>'int'], 'RedisCluster::brpoplpush' => ['string', 'srcKey'=>'string', 'dstKey'=>'string', 'timeout'=>'int'], 'RedisCluster::clearLastError' => ['bool'], 'RedisCluster::client' => ['', 'nodeParams'=>'string', 'subCmd'=>'', 'args'=>''], 'RedisCluster::close' => [''], 'RedisCluster::cluster' => ['mixed', 'nodeParams'=>'string', 'command'=>'string', 'arguments'=>'mixed'], 'RedisCluster::command' => ['mixed'], 'RedisCluster::config' => ['array', 'nodeParams'=>'string', 'operation'=>'string', 'key'=>'string', 'value'=>'string'], 'RedisCluster::dbSize' => ['int', 'nodeParams'=>'string'], 'RedisCluster::decr' => ['int', 'key'=>'string'], 'RedisCluster::decrBy' => ['int', 'key'=>'string', 'value'=>'int'], 'RedisCluster::del' => ['int', 'key1'=>'int|string', 'key2='=>'int|string', 'key3='=>'int|string'], 'RedisCluster::discard' => [''], 'RedisCluster::dump' => ['string', 'key'=>'string'], 'RedisCluster::echo' => ['mixed', 'nodeParams'=>'string', 'msg'=>'string'], 'RedisCluster::eval' => ['mixed', 'script'=>'', 'args='=>'', 'numKeys='=>''], 'RedisCluster::evalSha' => ['mixed', 'scriptSha'=>'string', 'args='=>'array', 'numKeys='=>'int'], 'RedisCluster::exec' => ['array|void'], 'RedisCluster::exists' => ['bool', 'key'=>'string'], 'RedisCluster::expire' => ['bool', 'key'=>'string', 'ttl'=>'int'], 'RedisCluster::expireAt' => ['bool', 'key'=>'string', 'timestamp'=>'int'], 'RedisCluster::flushAll' => ['bool', 'nodeParams'=>'string'], 'RedisCluster::flushDB' => ['bool', 'nodeParams'=>'string'], 'RedisCluster::geoAdd' => ['', 'key'=>'string', 'longitude'=>'float', 'latitude'=>'float', 'member'=>'string'], 'RedisCluster::geoDist' => ['', 'key'=>'string', 'member1'=>'string', 'member2'=>'string', 'unit='=>'string'], 'RedisCluster::geohash' => ['', 'key'=>'', 'member1'=>'', 'member2='=>'mixed', 'memberN='=>'mixed'], 'RedisCluster::geopos' => ['', 'key'=>'', 'member1'=>'', 'member2='=>'mixed', 'memberN='=>'mixed'], 'RedisCluster::geoRadius' => ['', 'key'=>'string', 'longitude'=>'float', 'latitude'=>'float', 'radius'=>'float', 'radiusUnit'=>'string', 'options'=>'array'], 'RedisCluster::geoRadiusByMember' => ['', 'key'=>'string', 'member'=>'string', 'radius'=>'float', 'radiusUnit'=>'string', 'options'=>'array'], 'RedisCluster::get' => ['bool|string', 'key'=>'string'], 'RedisCluster::getBit' => ['int', 'key'=>'string', 'offset'=>'int'], 'RedisCluster::getLastError' => ['string'], 'RedisCluster::getMode' => ['int'], 'RedisCluster::getOption' => ['int', 'name'=>'int'], 'RedisCluster::getRange' => ['string', 'key'=>'string', 'start'=>'int', 'end'=>'int'], 'RedisCluster::getSet' => ['string', 'key'=>'string', 'value'=>'string'], 'RedisCluster::hDel' => ['int', 'key'=>'string', 'hashKey1'=>'string', 'hashKey2='=>'string', 'hashKeyN='=>'string'], 'RedisCluster::hExists' => ['bool', 'key'=>'string', 'hashKey'=>'string'], 'RedisCluster::hGet' => ['string', 'key'=>'string', 'hashKey'=>'string'], 'RedisCluster::hGetAll' => ['array', 'key'=>'string'], 'RedisCluster::hIncrBy' => ['int', 'key'=>'string', 'hashKey'=>'string', 'value'=>'int'], 'RedisCluster::hIncrByFloat' => ['float', 'key'=>'string', 'field'=>'string', 'increment'=>'float'], 'RedisCluster::hKeys' => ['array', 'key'=>'string'], 'RedisCluster::hLen' => ['int', 'key'=>'string'], 'RedisCluster::hMGet' => ['array', 'key'=>'string', 'hashKeys'=>'array'], 'RedisCluster::hMSet' => ['bool', 'key'=>'string', 'hashKeys'=>'array'], 'RedisCluster::hScan' => ['array', 'key'=>'string', '&iterator'=>'int', 'pattern='=>'string', 'count='=>'int'], 'RedisCluster::hSet' => ['int', 'key'=>'string', 'hashKey'=>'string', 'value'=>'string'], 'RedisCluster::hSetNx' => ['bool', 'key'=>'string', 'hashKey'=>'string', 'value'=>'string'], 'RedisCluster::hVals' => ['array', 'key'=>'string'], 'RedisCluster::incr' => ['int', 'key'=>'string'], 'RedisCluster::incrBy' => ['int', 'key'=>'string', 'value'=>'int'], 'RedisCluster::incrByFloat' => ['float', 'key'=>'string', 'increment'=>'float'], 'RedisCluster::info' => ['string', 'option='=>'string'], 'RedisCluster::keys' => ['array', 'pattern'=>'string'], 'RedisCluster::lastSave' => ['int', 'nodeParams'=>'string'], 'RedisCluster::lGet' => ['', 'key'=>'string', 'index'=>'int'], 'RedisCluster::lIndex' => ['string', 'key'=>'string', 'index'=>'int'], 'RedisCluster::lInsert' => ['int', 'key'=>'string', 'position'=>'int', 'pivot'=>'string', 'value'=>'string'], 'RedisCluster::lLen' => ['int', 'key'=>'string'], 'RedisCluster::lPop' => ['string', 'key'=>'string'], 'RedisCluster::lPush' => ['int', 'key'=>'string', 'value1'=>'string', 'value2='=>'string', 'valueN='=>'string'], 'RedisCluster::lPushx' => ['int', 'key'=>'string', 'value'=>'string'], 'RedisCluster::lRange' => ['array', 'key'=>'string', 'start'=>'int', 'end'=>'int'], 'RedisCluster::lRem' => ['int', 'key'=>'string', 'value'=>'string', 'count'=>'int'], 'RedisCluster::lSet' => ['bool', 'key'=>'string', 'index'=>'int', 'value'=>'string'], 'RedisCluster::lTrim' => ['array', 'key'=>'string', 'start'=>'int', 'stop'=>'int'], 'RedisCluster::mget' => ['array', 'array'=>'array'], 'RedisCluster::mset' => ['bool', 'array'=>'array'], 'RedisCluster::msetnx' => ['int', 'array'=>'array'], 'RedisCluster::multi' => ['Redis', 'mode='=>'int'], 'RedisCluster::object' => ['string', 'string='=>'string', 'key='=>'string'], 'RedisCluster::persist' => ['bool', 'key'=>'string'], 'RedisCluster::pExpire' => ['bool', 'key'=>'string', 'ttl'=>'int'], 'RedisCluster::pExpireAt' => ['bool', 'key'=>'string', 'timestamp'=>'int'], 'RedisCluster::pfAdd' => ['bool', 'key'=>'string', 'elements'=>'array'], 'RedisCluster::pfCount' => ['int', 'key'=>'string'], 'RedisCluster::pfMerge' => ['bool', 'destKey'=>'string', 'sourceKeys'=>'array'], 'RedisCluster::ping' => ['string', 'nodeParams'=>'string'], 'RedisCluster::psetex' => ['bool', 'key'=>'string', 'ttl'=>'int', 'value'=>'string'], 'RedisCluster::psubscribe' => ['mixed', 'patterns'=>'array', 'callback'=>'string'], 'RedisCluster::pttl' => ['int', 'key'=>'string'], 'RedisCluster::publish' => ['int', 'channel'=>'string', 'message'=>'string'], 'RedisCluster::pubsub' => ['array', 'nodeParams'=>'string', 'keyword'=>'string', '...argument='=>'string'], 'RedisCluster::punSubscribe' => ['', 'channels'=>'', 'callback'=>''], 'RedisCluster::randomKey' => ['string', 'nodeParams'=>'string'], 'RedisCluster::rawCommand' => ['mixed', 'nodeParams'=>'string', 'command'=>'string', 'arguments'=>'mixed'], 'RedisCluster::rename' => ['bool', 'srcKey'=>'string', 'dstKey'=>'string'], 'RedisCluster::renameNx' => ['bool', 'srcKey'=>'string', 'dstKey'=>'string'], 'RedisCluster::restore' => ['bool', 'key'=>'string', 'ttl'=>'int', 'value'=>'string'], 'RedisCluster::role' => ['array', 'nodeParams'=>'string'], 'RedisCluster::rPop' => ['string', 'key'=>'string'], 'RedisCluster::rpoplpush' => ['string', 'srcKey'=>'string', 'dstKey'=>'string'], 'RedisCluster::rPush' => ['int', 'key'=>'string', 'value1'=>'string', 'value2='=>'string', 'valueN='=>'string'], 'RedisCluster::rPushx' => ['int', 'key'=>'string', 'value'=>'string'], 'RedisCluster::sAdd' => ['int', 'key'=>'string', 'value1'=>'string', 'value2='=>'string', 'valueN='=>'string'], 'RedisCluster::sAddArray' => ['int', 'key'=>'string', 'valueArray'=>'array'], 'RedisCluster::save' => ['bool', 'nodeParams'=>'string'], 'RedisCluster::scan' => ['array', '&iterator'=>'int', 'pattern='=>'string', 'count='=>'int'], 'RedisCluster::sCard' => ['int', 'key'=>'string'], 'RedisCluster::script' => ['mixed', 'nodeParams'=>'string', 'command'=>'string', 'script'=>'string'], 'RedisCluster::sDiff' => ['list', 'key1'=>'string', 'key2'=>'string', '...other_keys='=>'string'], 'RedisCluster::sDiffStore' => ['int', 'dstKey'=>'string', 'key1'=>'string', '...other_keys='=>'string'], 'RedisCluster::set' => ['bool', 'key'=>'string', 'value'=>'string', 'timeout='=>'array|int'], 'RedisCluster::setBit' => ['int', 'key'=>'string', 'offset'=>'int', 'value'=>'bool|int'], 'RedisCluster::setex' => ['bool', 'key'=>'string', 'ttl'=>'int', 'value'=>'string'], 'RedisCluster::setnx' => ['bool', 'key'=>'string', 'value'=>'string'], 'RedisCluster::setOption' => ['bool', 'name'=>'int', 'value'=>'mixed'], 'RedisCluster::setRange' => ['string', 'key'=>'string', 'offset'=>'int', 'value'=>'string'], 'RedisCluster::sInter' => ['list', 'key'=>'string', '...other_keys='=>'string'], 'RedisCluster::sInterStore' => ['int', 'dstKey'=>'string', 'key'=>'string', '...other_keys='=>'string'], 'RedisCluster::sIsMember' => ['bool', 'key'=>'string', 'value'=>'string'], 'RedisCluster::slowLog' => ['', 'nodeParams'=>'string', 'command'=>'string', 'argument'=>'mixed', '...other_arguments='=>'mixed'], 'RedisCluster::sMembers' => ['list', 'key'=>'string'], 'RedisCluster::sMove' => ['bool', 'srcKey'=>'string', 'dstKey'=>'string', 'member'=>'string'], 'RedisCluster::sort' => ['array', 'key'=>'string', 'option='=>'array'], 'RedisCluster::sPop' => ['string', 'key'=>'string'], 'RedisCluster::sRandMember' => ['array|string', 'key'=>'string', 'count='=>'int'], 'RedisCluster::sRem' => ['int', 'key'=>'string', 'member1'=>'string', '...other_members='=>'string'], 'RedisCluster::sScan' => ['array', 'key'=>'string', '&iterator'=>'int', 'pattern='=>'null', 'count='=>'int'], 'RedisCluster::strlen' => ['0|positive-int', 'key'=>'string'], 'RedisCluster::subscribe' => ['mixed', 'channels'=>'array', 'callback'=>'string'], 'RedisCluster::sUnion' => ['array', 'key1'=>'string', '...other_keys='=>'string'], 'RedisCluster::sUnionStore' => ['int', 'dstKey'=>'string', 'key1'=>'string', '...other_keys='=>'string'], 'RedisCluster::time' => ['array', 'nodeParams'=>'string'], 'RedisCluster::ttl' => ['int', 'key'=>'string'], 'RedisCluster::type' => ['int', 'key'=>'string'], 'RedisCluster::unlink' => ['int', 'key'=>'string', '...other_keys='=>'string'], 'RedisCluster::unSubscribe' => ['', 'channels'=>'', '...other_channels='=>''], 'RedisCluster::unwatch' => [''], 'RedisCluster::watch' => ['void', 'key'=>'string', '...other_keys='=>'string'], 'RedisCluster::xack' => ['', 'str_key'=>'string', 'str_group'=>'string', 'arr_ids'=>'array'], 'RedisCluster::xadd' => ['', 'str_key'=>'string', 'str_id'=>'string', 'arr_fields'=>'array', 'i_maxlen='=>'', 'boo_approximate='=>''], 'RedisCluster::xclaim' => ['', 'str_key'=>'string', 'str_group'=>'string', 'str_consumer'=>'string', 'i_min_idle'=>'', 'arr_ids'=>'array', 'arr_opts='=>'array'], 'RedisCluster::xdel' => ['', 'str_key'=>'string', 'arr_ids'=>'array'], 'RedisCluster::xgroup' => ['', 'str_operation'=>'string', 'str_key='=>'string', 'str_arg1='=>'', 'str_arg2='=>'', 'str_arg3='=>''], 'RedisCluster::xinfo' => ['', 'str_cmd'=>'string', 'str_key='=>'string', 'str_group='=>'string'], 'RedisCluster::xlen' => ['', 'key'=>''], 'RedisCluster::xpending' => ['', 'str_key'=>'string', 'str_group'=>'string', 'str_start='=>'', 'str_end='=>'', 'i_count='=>'', 'str_consumer='=>'string'], 'RedisCluster::xrange' => ['', 'str_key'=>'string', 'str_start'=>'', 'str_end'=>'', 'i_count='=>''], 'RedisCluster::xread' => ['', 'arr_streams'=>'array', 'i_count='=>'', 'i_block='=>''], 'RedisCluster::xreadgroup' => ['', 'str_group'=>'string', 'str_consumer'=>'string', 'arr_streams'=>'array', 'i_count='=>'', 'i_block='=>''], 'RedisCluster::xrevrange' => ['', 'str_key'=>'string', 'str_start'=>'', 'str_end'=>'', 'i_count='=>''], 'RedisCluster::xtrim' => ['', 'str_key'=>'string', 'i_maxlen'=>'', 'boo_approximate='=>''], 'RedisCluster::zAdd' => ['int', 'key'=>'string', 'score1'=>'float', 'value1'=>'string', 'score2='=>'float', 'value2='=>'string', 'scoreN='=>'float', 'valueN='=>'string'], 'RedisCluster::zCard' => ['int', 'key'=>'string'], 'RedisCluster::zCount' => ['int', 'key'=>'string', 'start'=>'string', 'end'=>'string'], 'RedisCluster::zIncrBy' => ['float', 'key'=>'string', 'value'=>'float', 'member'=>'string'], 'RedisCluster::zInterStore' => ['int', 'Output'=>'string', 'ZSetKeys'=>'array', 'Weights='=>'?array', 'aggregateFunction='=>'string'], 'RedisCluster::zLexCount' => ['int', 'key'=>'string', 'min'=>'int', 'max'=>'int'], 'RedisCluster::zRange' => ['array', 'key'=>'string', 'start'=>'int', 'end'=>'int', 'withscores='=>'bool'], 'RedisCluster::zRangeByLex' => ['array', 'key'=>'string', 'min'=>'int', 'max'=>'int', 'offset='=>'int', 'limit='=>'int'], 'RedisCluster::zRangeByScore' => ['array', 'key'=>'string', 'start'=>'int', 'end'=>'int', 'options='=>'array'], 'RedisCluster::zRank' => ['int', 'key'=>'string', 'member'=>'string'], 'RedisCluster::zRem' => ['int', 'key'=>'string', 'member1'=>'string', '...other_members='=>'string'], 'RedisCluster::zRemRangeByLex' => ['array', 'key'=>'string', 'min'=>'int', 'max'=>'int'], 'RedisCluster::zRemRangeByRank' => ['int', 'key'=>'string', 'start'=>'int', 'end'=>'int'], 'RedisCluster::zRemRangeByScore' => ['int', 'key'=>'string', 'start'=>'float|string', 'end'=>'float|string'], 'RedisCluster::zRevRange' => ['array', 'key'=>'string', 'start'=>'int', 'end'=>'int', 'withscore='=>'bool'], 'RedisCluster::zRevRangeByLex' => ['array', 'key'=>'string', 'min'=>'int', 'max'=>'int', 'offset='=>'int', 'limit='=>'int'], 'RedisCluster::zRevRangeByScore' => ['array', 'key'=>'string', 'start'=>'int', 'end'=>'int', 'options='=>'array'], 'RedisCluster::zRevRank' => ['int', 'key'=>'string', 'member'=>'string'], 'RedisCluster::zScan' => ['array', 'key'=>'string', '&iterator'=>'int', 'pattern='=>'string', 'count='=>'int'], 'RedisCluster::zScore' => ['float', 'key'=>'string', 'member'=>'string'], 'RedisCluster::zUnionStore' => ['int', 'Output'=>'string', 'ZSetKeys'=>'array', 'Weights='=>'?array', 'aggregateFunction='=>'string'], 'Reflection::export' => ['string|null', 'r'=>'reflector', 'return='=>'bool'], 'Reflection::getModifierNames' => ['array', 'modifiers'=>'int'], 'ReflectionClass::__clone' => ['void'], 'ReflectionClass::__construct' => ['void', 'argument'=>'object|string'], 'ReflectionClass::__toString' => ['string'], 'ReflectionClass::export' => ['string|null', 'argument'=>'string|object', 'return='=>'bool'], 'ReflectionClass::getConstant' => ['mixed', 'name'=>'string'], 'ReflectionClass::getConstants' => ['array'], 'ReflectionClass::getConstructor' => ['ReflectionMethod|null'], 'ReflectionClass::getDefaultProperties' => ['array'], 'ReflectionClass::getDocComment' => ['string|false'], 'ReflectionClass::getEndLine' => ['positive-int|false'], 'ReflectionClass::getExtension' => ['ReflectionExtension|null'], 'ReflectionClass::getExtensionName' => ['string|false'], 'ReflectionClass::getFileName' => ['non-empty-string|false'], 'ReflectionClass::getInterfaceNames' => ['list'], 'ReflectionClass::getInterfaces' => ['array'], 'ReflectionClass::getMethod' => ['ReflectionMethod', 'name'=>'string'], 'ReflectionClass::getMethods' => ['list', 'filter='=>'int'], 'ReflectionClass::getModifiers' => ['int'], 'ReflectionClass::getName' => ['class-string'], 'ReflectionClass::getNamespaceName' => ['string'], 'ReflectionClass::getParentClass' => ['ReflectionClass|false'], 'ReflectionClass::getProperties' => ['list', 'filter='=>'int'], 'ReflectionClass::getProperty' => ['ReflectionProperty', 'name'=>'string'], 'ReflectionClass::getReflectionConstant' => ['ReflectionClassConstant|false', 'name'=>'string'], 'ReflectionClass::getReflectionConstants' => ['list'], 'ReflectionClass::getShortName' => ['string'], 'ReflectionClass::getStartLine' => ['positive-int|false'], 'ReflectionClass::getStaticProperties' => ['array'], 'ReflectionClass::getStaticPropertyValue' => ['mixed', 'name'=>'string', 'default='=>'mixed'], 'ReflectionClass::getTraitAliases' => ['array'], 'ReflectionClass::getTraitNames' => ['list'], 'ReflectionClass::getTraits' => ['array'], 'ReflectionClass::hasConstant' => ['bool', 'name'=>'string'], 'ReflectionClass::hasMethod' => ['bool', 'name'=>'string'], 'ReflectionClass::hasProperty' => ['bool', 'name'=>'string'], 'ReflectionClass::implementsInterface' => ['bool', 'interface_name'=>'string|ReflectionClass'], 'ReflectionClass::inNamespace' => ['bool'], 'ReflectionClass::isAbstract' => ['bool'], 'ReflectionClass::isAnonymous' => ['bool'], 'ReflectionClass::isCloneable' => ['bool'], 'ReflectionClass::isFinal' => ['bool'], 'ReflectionClass::isInstance' => ['bool', 'object'=>'object'], 'ReflectionClass::isInstantiable' => ['bool'], 'ReflectionClass::isInterface' => ['bool'], 'ReflectionClass::isInternal' => ['bool'], 'ReflectionClass::isIterable' => ['bool'], 'ReflectionClass::isIterateable' => ['bool'], 'ReflectionClass::isSubclassOf' => ['bool', 'class'=>'string|ReflectionClass'], 'ReflectionClass::isTrait' => ['bool'], 'ReflectionClass::isUserDefined' => ['bool'], 'ReflectionClass::newInstance' => ['object', 'args='=>'mixed', '...args='=>'mixed'], 'ReflectionClass::newInstanceArgs' => ['object', 'args='=>'array'], 'ReflectionClass::newInstanceWithoutConstructor' => ['object'], 'ReflectionClass::setStaticPropertyValue' => ['void', 'name'=>'string', 'value'=>'mixed'], 'ReflectionClassConstant::__construct' => ['void', 'class'=>'mixed', 'name'=>'string'], 'ReflectionClassConstant::__toString' => ['string'], 'ReflectionClassConstant::export' => ['string', 'class'=>'mixed', 'name'=>'string', 'return='=>'bool'], 'ReflectionClassConstant::getDeclaringClass' => ['ReflectionClass'], 'ReflectionClassConstant::getDocComment' => ['string|false'], 'ReflectionClassConstant::getModifiers' => ['int'], 'ReflectionClassConstant::getName' => ['string'], 'ReflectionClassConstant::getValue' => ['mixed'], 'ReflectionClassConstant::isPrivate' => ['bool'], 'ReflectionClassConstant::isProtected' => ['bool'], 'ReflectionClassConstant::isPublic' => ['bool'], 'ReflectionExtension::__clone' => ['void'], 'ReflectionExtension::__construct' => ['void', 'name'=>'string'], 'ReflectionExtension::__toString' => ['string'], 'ReflectionExtension::export' => ['string|null', 'name'=>'string', 'return='=>'bool'], 'ReflectionExtension::getClasses' => ['array'], 'ReflectionExtension::getClassNames' => ['list'], 'ReflectionExtension::getConstants' => ['array'], 'ReflectionExtension::getDependencies' => ['array'], 'ReflectionExtension::getFunctions' => ['array'], 'ReflectionExtension::getINIEntries' => ['array'], 'ReflectionExtension::getName' => ['string'], 'ReflectionExtension::getVersion' => ['string'], 'ReflectionExtension::info' => ['void'], 'ReflectionExtension::isPersistent' => ['void'], 'ReflectionExtension::isTemporary' => ['bool'], 'ReflectionFunction::__construct' => ['void', 'name'=>'string|Closure'], 'ReflectionFunction::__toString' => ['string'], 'ReflectionFunction::export' => ['string|null', 'name'=>'string', 'return='=>'bool'], 'ReflectionFunction::getClosure' => ['Closure'], 'ReflectionFunction::getClosureScopeClass' => ['ReflectionClass'], 'ReflectionFunction::getClosureThis' => ['bool'], 'ReflectionFunction::getDocComment' => ['string|false'], 'ReflectionFunction::getEndLine' => ['positive-int|false'], 'ReflectionFunction::getExtension' => ['ReflectionExtension|null'], 'ReflectionFunction::getExtensionName' => ['string|false'], 'ReflectionFunction::getFileName' => ['non-empty-string|false'], 'ReflectionFunction::getName' => ['non-empty-string'], 'ReflectionFunction::getNamespaceName' => ['string'], 'ReflectionFunction::getNumberOfParameters' => ['int'], 'ReflectionFunction::getNumberOfRequiredParameters' => ['int'], 'ReflectionFunction::getParameters' => ['list'], 'ReflectionFunction::getReturnType' => ['?ReflectionType'], 'ReflectionFunction::getShortName' => ['string'], 'ReflectionFunction::getStartLine' => ['positive-int|false'], 'ReflectionFunction::getStaticVariables' => ['array'], 'ReflectionFunction::inNamespace' => ['bool'], 'ReflectionFunction::invoke' => ['mixed', '...args='=>'mixed'], 'ReflectionFunction::invokeArgs' => ['mixed', 'args'=>'array'], 'ReflectionFunction::isClosure' => ['bool'], 'ReflectionFunction::isDeprecated' => ['bool'], 'ReflectionFunction::isDisabled' => ['bool'], 'ReflectionFunction::isGenerator' => ['bool'], 'ReflectionFunction::isInternal' => ['bool'], 'ReflectionFunction::isUserDefined' => ['bool'], 'ReflectionFunction::isVariadic' => ['bool'], 'ReflectionFunction::returnsReference' => ['bool'], 'ReflectionFunctionAbstract::__clone' => ['void'], 'ReflectionFunctionAbstract::__toString' => ['string'], 'ReflectionFunctionAbstract::getClosureScopeClass' => ['ReflectionClass|null'], 'ReflectionFunctionAbstract::getClosureThis' => ['object|null'], 'ReflectionFunctionAbstract::getDocComment' => ['string|false'], 'ReflectionFunctionAbstract::getEndLine' => ['positive-int|false'], 'ReflectionFunctionAbstract::getExtension' => ['ReflectionExtension|null'], 'ReflectionFunctionAbstract::getExtensionName' => ['string|false'], 'ReflectionFunctionAbstract::getFileName' => ['non-empty-string|false'], 'ReflectionFunctionAbstract::getName' => ['non-empty-string'], 'ReflectionFunctionAbstract::getNamespaceName' => ['string'], 'ReflectionFunctionAbstract::getNumberOfParameters' => ['int'], 'ReflectionFunctionAbstract::getNumberOfRequiredParameters' => ['int'], 'ReflectionFunctionAbstract::getParameters' => ['list'], 'ReflectionFunctionAbstract::getReturnType' => ['?ReflectionType'], 'ReflectionFunctionAbstract::getShortName' => ['string'], 'ReflectionFunctionAbstract::getStartLine' => ['positive-int|false'], 'ReflectionFunctionAbstract::getStaticVariables' => ['array'], 'ReflectionFunctionAbstract::hasReturnType' => ['bool'], 'ReflectionFunctionAbstract::inNamespace' => ['bool'], 'ReflectionFunctionAbstract::isClosure' => ['bool'], 'ReflectionFunctionAbstract::isDeprecated' => ['bool'], 'ReflectionFunctionAbstract::isGenerator' => ['bool'], 'ReflectionFunctionAbstract::isInternal' => ['bool'], 'ReflectionFunctionAbstract::isUserDefined' => ['bool'], 'ReflectionFunctionAbstract::isVariadic' => ['bool'], 'ReflectionFunctionAbstract::returnsReference' => ['bool'], 'ReflectionGenerator::__construct' => ['void', 'generator'=>'object'], 'ReflectionGenerator::getExecutingFile' => ['string'], 'ReflectionGenerator::getExecutingGenerator' => ['Generator'], 'ReflectionGenerator::getExecutingLine' => ['int'], 'ReflectionGenerator::getFunction' => ['ReflectionFunctionAbstract'], 'ReflectionGenerator::getThis' => ['object'], 'ReflectionGenerator::getTrace' => ['list\',args?:mixed[],object?:object}>', 'options'=>'int'], 'ReflectionMethod::__construct' => ['void', 'class'=>'string|object', 'name'=>'string'], 'ReflectionMethod::__construct\'1' => ['void', 'class_method'=>'string'], 'ReflectionMethod::__toString' => ['string'], 'ReflectionMethod::export' => ['string|null', 'class'=>'string', 'name'=>'string', 'return='=>'bool'], 'ReflectionMethod::getClosure' => ['Closure', 'object'=>'?object'], 'ReflectionMethod::getDeclaringClass' => ['ReflectionClass'], 'ReflectionMethod::getModifiers' => ['int'], 'ReflectionMethod::getPrototype' => ['ReflectionMethod'], 'ReflectionMethod::invoke' => ['mixed', 'object'=>'?object', '...args='=>'mixed'], 'ReflectionMethod::invokeArgs' => ['mixed', 'object'=>'?object', 'args'=>'array'], 'ReflectionMethod::isAbstract' => ['bool'], 'ReflectionMethod::isConstructor' => ['bool'], 'ReflectionMethod::isDestructor' => ['bool'], 'ReflectionMethod::isFinal' => ['bool'], 'ReflectionMethod::isPrivate' => ['bool'], 'ReflectionMethod::isProtected' => ['bool'], 'ReflectionMethod::isPublic' => ['bool'], 'ReflectionMethod::isStatic' => ['bool'], 'ReflectionMethod::setAccessible' => ['void', 'visible'=>'bool'], 'ReflectionNamedType::__toString' => ['string'], 'ReflectionNamedType::allowsNull' => ['bool'], 'ReflectionNamedType::getName' => ['string'], 'ReflectionNamedType::isBuiltin' => ['bool'], 'ReflectionObject::__construct' => ['void', 'argument'=>'object'], 'ReflectionObject::export' => ['string|null', 'argument'=>'object', 'return='=>'bool'], 'ReflectionParameter::__clone' => ['void'], 'ReflectionParameter::__construct' => ['void', 'function'=>'', 'parameter'=>''], 'ReflectionParameter::__toString' => ['string'], 'ReflectionParameter::allowsNull' => ['bool'], 'ReflectionParameter::canBePassedByValue' => ['bool'], 'ReflectionParameter::export' => ['string|null', 'function'=>'string', 'parameter'=>'string', 'return='=>'bool'], 'ReflectionParameter::getClass' => ['ReflectionClass|null'], 'ReflectionParameter::getDeclaringClass' => ['ReflectionClass|null'], 'ReflectionParameter::getDeclaringFunction' => ['ReflectionFunctionAbstract'], 'ReflectionParameter::getDefaultValue' => ['mixed'], 'ReflectionParameter::getDefaultValueConstantName' => ['?string'], 'ReflectionParameter::getName' => ['non-empty-string'], 'ReflectionParameter::getPosition' => ['int'], 'ReflectionParameter::getType' => ['ReflectionType|null'], 'ReflectionParameter::hasType' => ['bool'], 'ReflectionParameter::isArray' => ['bool'], 'ReflectionParameter::isCallable' => ['bool'], 'ReflectionParameter::isDefaultValueAvailable' => ['bool'], 'ReflectionParameter::isDefaultValueConstant' => ['bool'], 'ReflectionParameter::isOptional' => ['bool'], 'ReflectionParameter::isPassedByReference' => ['bool'], 'ReflectionParameter::isVariadic' => ['bool'], 'ReflectionProperty::__clone' => ['void'], 'ReflectionProperty::__construct' => ['void', 'class'=>'', 'name'=>'string'], 'ReflectionProperty::__toString' => ['string'], 'ReflectionProperty::export' => ['string|null', 'class'=>'mixed', 'name'=>'string', 'return='=>'bool'], 'ReflectionProperty::getDeclaringClass' => ['ReflectionClass'], 'ReflectionProperty::getDocComment' => ['string|false'], 'ReflectionProperty::getModifiers' => ['int'], 'ReflectionProperty::getName' => ['non-empty-string'], 'ReflectionProperty::getValue' => ['mixed', 'object='=>'object'], 'ReflectionProperty::isDefault' => ['bool'], 'ReflectionProperty::isPrivate' => ['bool'], 'ReflectionProperty::isProtected' => ['bool'], 'ReflectionProperty::isPublic' => ['bool'], 'ReflectionProperty::isStatic' => ['bool'], 'ReflectionProperty::setAccessible' => ['void', 'visible'=>'bool'], 'ReflectionProperty::setValue' => ['void', 'object'=>'null|object', 'value'=>''], 'ReflectionProperty::setValue\'1' => ['void', 'value'=>''], 'ReflectionType::__toString' => ['string'], 'ReflectionType::allowsNull' => ['bool'], 'ReflectionType::isBuiltin' => ['bool'], 'ReflectionZendExtension::__clone' => ['void'], 'ReflectionZendExtension::__construct' => ['void', 'name'=>'string'], 'ReflectionZendExtension::__toString' => ['string'], 'ReflectionZendExtension::export' => ['string|null', 'name'=>'string', 'return='=>'bool'], 'ReflectionZendExtension::getAuthor' => ['string'], 'ReflectionZendExtension::getCopyright' => ['string'], 'ReflectionZendExtension::getName' => ['string'], 'ReflectionZendExtension::getURL' => ['string'], 'ReflectionZendExtension::getVersion' => ['string'], 'Reflector::__toString' => ['string'], 'Reflector::export' => ['?string'], 'RegexIterator::__construct' => ['void', 'iterator'=>'Iterator', 'regex'=>'string', 'mode='=>'int', 'flags='=>'int', 'preg_flags='=>'int'], 'RegexIterator::accept' => ['bool'], 'RegexIterator::getFlags' => ['int'], 'RegexIterator::getMode' => ['int'], 'RegexIterator::getPregFlags' => ['int'], 'RegexIterator::getRegex' => ['string'], 'RegexIterator::setFlags' => ['bool', 'new_flags'=>'int'], 'RegexIterator::setMode' => ['bool', 'new_mode'=>'int'], 'RegexIterator::setPregFlags' => ['bool', 'new_flags'=>'int'], 'register_event_handler' => ['bool', 'event_handler_func'=>'event_handler_func', 'handler_register_name'=>'handler_register_name', 'event_type_mask'=>'event_type_mask'], 'register_shutdown_function' => ['void', 'function'=>'callable', '...parameter='=>'mixed'], 'register_tick_function' => ['bool', 'function'=>'callable(): void', '...args='=>'mixed'], 'rename' => ['bool', 'old_name'=>'string', 'new_name'=>'string', 'context='=>'resource'], 'rename_function' => ['bool', 'original_name'=>'string', 'new_name'=>'string'], 'reset' => ['mixed', '&rw_array'=>'array|object'], 'ResourceBundle::__construct' => ['void', 'locale'=>'string', 'bundlename'=>'string', 'fallback='=>'bool'], 'ResourceBundle::count' => ['0|positive-int'], 'ResourceBundle::create' => ['?ResourceBundle', 'locale'=>'string', 'bundlename'=>'string', 'fallback='=>'bool'], 'ResourceBundle::get' => ['', 'index'=>'string|int', 'fallback='=>'bool'], 'ResourceBundle::getErrorCode' => ['int'], 'ResourceBundle::getErrorMessage' => ['string'], 'ResourceBundle::getLocales' => ['array', 'bundlename'=>'string'], 'resourcebundle_count' => ['int', 'r'=>'resourcebundle'], 'resourcebundle_create' => ['?ResourceBundle', 'locale'=>'string', 'bundlename'=>'string', 'fallback='=>'bool'], 'resourcebundle_get' => ['', 'r'=>'resourcebundle', 'index'=>'string|int', 'fallback='=>'bool'], 'resourcebundle_get_error_code' => ['int', 'r'=>'resourcebundle'], 'resourcebundle_get_error_message' => ['string', 'r'=>'resourcebundle'], 'resourcebundle_locales' => ['array|false', 'bundlename'=>'string'], 'restore_error_handler' => ['true'], 'restore_exception_handler' => ['true'], 'restore_include_path' => ['void'], 'rewind' => ['bool', 'fp'=>'resource'], 'rewinddir' => ['null|false', 'dir_handle='=>'resource'], 'rmdir' => ['bool', 'dirname'=>'string', 'context='=>'resource'], 'round' => ['__benevolent', 'number'=>'float', 'precision='=>'int', 'mode='=>'1|2|3|4'], 'rpm_close' => ['bool', 'rpmr'=>'resource'], 'rpm_get_tag' => ['mixed', 'rpmr'=>'resource', 'tagnum'=>'int'], 'rpm_is_valid' => ['bool', 'filename'=>'string'], 'rpm_open' => ['resource|false', 'filename'=>'string'], 'rpm_version' => ['string'], 'rrd_create' => ['bool', 'filename'=>'string', 'options'=>'array'], 'rrd_error' => ['string'], 'rrd_fetch' => ['array', 'filename'=>'string', 'options'=>'array'], 'rrd_first' => ['int', 'file'=>'string', 'raaindex='=>'int'], 'rrd_graph' => ['array', 'filename'=>'string', 'options'=>'array'], 'rrd_info' => ['array', 'filename'=>'string'], 'rrd_last' => ['int', 'filename'=>'string'], 'rrd_lastupdate' => ['array', 'filename'=>'string'], 'rrd_restore' => ['bool', 'xml_file'=>'string', 'rrd_file'=>'string', 'options='=>'array'], 'rrd_tune' => ['bool', 'filename'=>'string', 'options'=>'array'], 'rrd_update' => ['bool', 'filename'=>'string', 'options'=>'array'], 'rrd_version' => ['string'], 'rrd_xport' => ['array', 'options'=>'array'], 'rrdc_disconnect' => ['void'], 'RRDCreator::__construct' => ['void', 'path'=>'string', 'starttime='=>'string', 'step='=>'int'], 'RRDCreator::addArchive' => ['void', 'description'=>'string'], 'RRDCreator::addDataSource' => ['void', 'description'=>'string'], 'RRDCreator::save' => ['bool'], 'RRDGraph::__construct' => ['void', 'path'=>'string'], 'RRDGraph::save' => ['array'], 'RRDGraph::saveVerbose' => ['array'], 'RRDGraph::setOptions' => ['void', 'options'=>'array'], 'RRDUpdater::__construct' => ['void', 'path'=>'string'], 'RRDUpdater::update' => ['bool', 'values'=>'array', 'time='=>'string'], 'rsort' => ['bool', '&rw_array_arg'=>'array', 'sort_flags='=>'int'], 'rtrim' => ['string', 'str'=>'string', 'character_mask='=>'string'], 'runkit_class_adopt' => ['bool', 'classname'=>'string', 'parentname'=>'string'], 'runkit_class_emancipate' => ['bool', 'classname'=>'string'], 'runkit_constant_add' => ['bool', 'constname'=>'string', 'value'=>'mixed'], 'runkit_constant_redefine' => ['bool', 'constname'=>'string', 'newvalue'=>'mixed'], 'runkit_constant_remove' => ['bool', 'constname'=>'string'], 'runkit_function_add' => ['bool', 'funcname'=>'string', 'arglist'=>'string', 'code'=>'string', 'doccomment='=>'?string'], 'runkit_function_add\'1' => ['bool', 'funcname'=>'string', 'closure'=>'Closure', 'doccomment='=>'?string'], 'runkit_function_copy' => ['bool', 'funcname'=>'string', 'targetname'=>'string'], 'runkit_function_redefine' => ['bool', 'funcname'=>'string', 'arglist'=>'string', 'code'=>'string', 'doccomment='=>'?string'], 'runkit_function_redefine\'1' => ['bool', 'funcname'=>'string', 'closure'=>'Closure', 'doccomment='=>'?string'], 'runkit_function_remove' => ['bool', 'funcname'=>'string'], 'runkit_function_rename' => ['bool', 'funcname'=>'string', 'newname'=>'string'], 'runkit_import' => ['bool', 'filename'=>'string', 'flags='=>'int'], 'runkit_lint' => ['bool', 'code'=>'string'], 'runkit_lint_file' => ['bool', 'filename'=>'string'], 'runkit_method_add' => ['bool', 'classname'=>'string', 'methodname'=>'string', 'args'=>'string', 'code'=>'string', 'flags='=>'int', 'doccomment='=>'?string'], 'runkit_method_add\'1' => ['bool', 'classname'=>'string', 'methodname'=>'string', 'closure'=>'Closure', 'flags='=>'int', 'doccomment='=>'?string'], 'runkit_method_copy' => ['bool', 'dclass'=>'string', 'dmethod'=>'string', 'sclass'=>'string', 'smethod='=>'string'], 'runkit_method_redefine' => ['bool', 'classname'=>'string', 'methodname'=>'string', 'args'=>'string', 'code'=>'string', 'flags='=>'int', 'doccomment='=>'?string'], 'runkit_method_redefine\'1' => ['bool', 'classname'=>'string', 'methodname'=>'string', 'closure'=>'Closure', 'flags='=>'int', 'doccomment='=>'?string'], 'runkit_method_remove' => ['bool', 'classname'=>'string', 'methodname'=>'string'], 'runkit_method_rename' => ['bool', 'classname'=>'string', 'methodname'=>'string', 'newname'=>'string'], 'runkit_return_value_used' => ['bool'], 'Runkit_Sandbox::__construct' => ['void', 'options='=>'array'], 'runkit_sandbox_output_handler' => ['mixed', 'sandbox'=>'object', 'callback='=>'mixed'], 'Runkit_Sandbox_Parent' => [''], 'Runkit_Sandbox_Parent::__construct' => ['void'], 'runkit_superglobals' => ['array'], 'RuntimeException::__clone' => ['void'], 'RuntimeException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?RuntimeException)'], 'RuntimeException::__toString' => ['string'], 'RuntimeException::getCode' => ['int'], 'RuntimeException::getFile' => ['string'], 'RuntimeException::getLine' => ['int'], 'RuntimeException::getMessage' => ['string'], 'RuntimeException::getPrevious' => ['Throwable|RuntimeException|null'], 'RuntimeException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'RuntimeException::getTraceAsString' => ['string'], 'SAMConnection::commit' => ['bool'], 'SAMConnection::connect' => ['bool', 'protocol'=>'string', 'properties='=>'array'], 'SAMConnection::disconnect' => ['bool'], 'SAMConnection::errno' => ['int'], 'SAMConnection::error' => ['string'], 'SAMConnection::isConnected' => ['bool'], 'SAMConnection::peek' => ['SAMMessage', 'target'=>'string', 'properties='=>'array'], 'SAMConnection::peekAll' => ['array', 'target'=>'string', 'properties='=>'array'], 'SAMConnection::receive' => ['SAMMessage', 'target'=>'string', 'properties='=>'array'], 'SAMConnection::remove' => ['SAMMessage', 'target'=>'string', 'properties='=>'array'], 'SAMConnection::rollback' => ['bool'], 'SAMConnection::send' => ['string', 'target'=>'string', 'msg'=>'sammessage', 'properties='=>'array'], 'SAMConnection::setDebug' => ['', 'switch'=>'bool'], 'SAMConnection::subscribe' => ['string', 'targettopic'=>'string'], 'SAMConnection::unsubscribe' => ['bool', 'subscriptionid'=>'string', 'targettopic='=>'string'], 'SAMMessage::body' => ['string'], 'SAMMessage::header' => ['object'], 'sapi_windows_cp_conv' => ['string', 'in_codepage'=>'int|string', 'out_codepage'=>'int|string', 'subject'=>'string'], 'sapi_windows_cp_get' => ['int'], 'sapi_windows_cp_is_utf8' => ['bool'], 'sapi_windows_cp_set' => ['bool', 'code_page'=>'int'], 'sapi_windows_vt100_support' => ['bool', 'stream'=>'resource', 'enable='=>'bool'], 'SCA::createDataObject' => ['SDO_DataObject', 'type_namespace_uri'=>'string', 'type_name'=>'string'], 'SCA::getService' => ['', 'target'=>'string', 'binding='=>'string', 'config='=>'array'], 'SCA_LocalProxy::createDataObject' => ['SDO_DataObject', 'type_namespace_uri'=>'string', 'type_name'=>'string'], 'SCA_SoapProxy::createDataObject' => ['SDO_DataObject', 'type_namespace_uri'=>'string', 'type_name'=>'string'], 'scalebarObj::convertToString' => ['string'], 'scalebarObj::free' => ['void'], 'scalebarObj::set' => ['int', 'property_name'=>'string', 'new_value'=>''], 'scalebarObj::setImageColor' => ['int', 'red'=>'int', 'green'=>'int', 'blue'=>'int'], 'scalebarObj::updateFromString' => ['int', 'snippet'=>'string'], 'scandir' => ['list|false', 'dir'=>'string', 'sorting_order='=>'int', 'context='=>'resource'], 'SDO_DAS_ChangeSummary::beginLogging' => [''], 'SDO_DAS_ChangeSummary::endLogging' => [''], 'SDO_DAS_ChangeSummary::getChangedDataObjects' => ['SDO_List'], 'SDO_DAS_ChangeSummary::getChangeType' => ['int', 'dataobject'=>'sdo_dataobject'], 'SDO_DAS_ChangeSummary::getOldContainer' => ['SDO_DataObject', 'data_object'=>'sdo_dataobject'], 'SDO_DAS_ChangeSummary::getOldValues' => ['SDO_List', 'data_object'=>'sdo_dataobject'], 'SDO_DAS_ChangeSummary::isLogging' => ['bool'], 'SDO_DAS_DataFactory::addPropertyToType' => ['', 'parent_type_namespace_uri'=>'string', 'parent_type_name'=>'string', 'property_name'=>'string', 'type_namespace_uri'=>'string', 'type_name'=>'string', 'options='=>'array'], 'SDO_DAS_DataFactory::addType' => ['', 'type_namespace_uri'=>'string', 'type_name'=>'string', 'options='=>'array'], 'SDO_DAS_DataFactory::getDataFactory' => ['SDO_DAS_DataFactory'], 'SDO_DAS_DataObject::getChangeSummary' => ['SDO_DAS_ChangeSummary'], 'SDO_DAS_Relational::__construct' => ['void', 'database_metadata'=>'array', 'application_root_type='=>'string', 'sdo_containment_references_metadata='=>'array'], 'SDO_DAS_Relational::applyChanges' => ['', 'database_handle'=>'pdo', 'root_data_object'=>'sdodataobject'], 'SDO_DAS_Relational::createRootDataObject' => ['SDODataObject'], 'SDO_DAS_Relational::executePreparedQuery' => ['SDODataObject', 'database_handle'=>'pdo', 'prepared_statement'=>'pdostatement', 'value_list'=>'array', 'column_specifier='=>'array'], 'SDO_DAS_Relational::executeQuery' => ['SDODataObject', 'database_handle'=>'pdo', 'sql_statement'=>'string', 'column_specifier='=>'array'], 'SDO_DAS_Setting::getListIndex' => ['int'], 'SDO_DAS_Setting::getPropertyIndex' => ['int'], 'SDO_DAS_Setting::getPropertyName' => ['string'], 'SDO_DAS_Setting::getValue' => [''], 'SDO_DAS_Setting::isSet' => ['bool'], 'SDO_DAS_XML::addTypes' => ['', 'xsd_file'=>'string'], 'SDO_DAS_XML::create' => ['SDO_DAS_XML', 'xsd_file='=>'mixed', 'key='=>'string'], 'SDO_DAS_XML::createDataObject' => ['SDO_DataObject', 'namespace_uri'=>'string', 'type_name'=>'string'], 'SDO_DAS_XML::createDocument' => ['SDO_DAS_XML_Document', 'document_element_name'=>'string', 'document_element_namespace_uri'=>'string', 'dataobject='=>'sdo_dataobject'], 'SDO_DAS_XML::loadFile' => ['SDO_XMLDocument', 'xml_file'=>'string'], 'SDO_DAS_XML::loadString' => ['SDO_DAS_XML_Document', 'xml_string'=>'string'], 'SDO_DAS_XML::saveFile' => ['', 'xdoc'=>'sdo_xmldocument', 'xml_file'=>'string', 'indent='=>'int'], 'SDO_DAS_XML::saveString' => ['string', 'xdoc'=>'sdo_xmldocument', 'indent='=>'int'], 'SDO_DAS_XML_Document::getRootDataObject' => ['SDO_DataObject'], 'SDO_DAS_XML_Document::getRootElementName' => ['string'], 'SDO_DAS_XML_Document::getRootElementURI' => ['string'], 'SDO_DAS_XML_Document::setEncoding' => ['', 'encoding'=>'string'], 'SDO_DAS_XML_Document::setXMLDeclaration' => ['', 'xmldeclatation'=>'bool'], 'SDO_DAS_XML_Document::setXMLVersion' => ['', 'xmlversion'=>'string'], 'SDO_DataFactory::create' => ['void', 'type_namespace_uri'=>'string', 'type_name'=>'string'], 'SDO_DataObject::clear' => ['void'], 'SDO_DataObject::createDataObject' => ['SDO_DataObject', 'identifier'=>''], 'SDO_DataObject::getContainer' => ['SDO_DataObject'], 'SDO_DataObject::getSequence' => ['SDO_Sequence'], 'SDO_DataObject::getTypeName' => ['string'], 'SDO_DataObject::getTypeNamespaceURI' => ['string'], 'SDO_Exception::getCause' => [''], 'SDO_List::insert' => ['void', 'value'=>'mixed', 'index='=>'int'], 'SDO_Model_Property::getContainingType' => ['SDO_Model_Type'], 'SDO_Model_Property::getDefault' => [''], 'SDO_Model_Property::getName' => ['string'], 'SDO_Model_Property::getType' => ['SDO_Model_Type'], 'SDO_Model_Property::isContainment' => ['bool'], 'SDO_Model_Property::isMany' => ['bool'], 'SDO_Model_ReflectionDataObject::__construct' => ['void', 'data_object'=>'sdo_dataobject'], 'SDO_Model_ReflectionDataObject::export' => ['mixed', 'rdo'=>'sdo_model_reflectiondataobject', 'return='=>'bool'], 'SDO_Model_ReflectionDataObject::getContainmentProperty' => ['SDO_Model_Property'], 'SDO_Model_ReflectionDataObject::getInstanceProperties' => ['array'], 'SDO_Model_ReflectionDataObject::getType' => ['SDO_Model_Type'], 'SDO_Model_Type::getBaseType' => ['SDO_Model_Type'], 'SDO_Model_Type::getName' => ['string'], 'SDO_Model_Type::getNamespaceURI' => ['string'], 'SDO_Model_Type::getProperties' => ['array'], 'SDO_Model_Type::getProperty' => ['SDO_Model_Property', 'identifier'=>''], 'SDO_Model_Type::isAbstractType' => ['bool'], 'SDO_Model_Type::isDataType' => ['bool'], 'SDO_Model_Type::isInstance' => ['bool', 'data_object'=>'sdo_dataobject'], 'SDO_Model_Type::isOpenType' => ['bool'], 'SDO_Model_Type::isSequencedType' => ['bool'], 'SDO_Sequence::getProperty' => ['SDO_Model_Property', 'sequence_index'=>'int'], 'SDO_Sequence::insert' => ['void', 'value'=>'mixed', 'sequenceindex='=>'int', 'propertyidentifier='=>'mixed'], 'SDO_Sequence::move' => ['void', 'toindex'=>'int', 'fromindex'=>'int'], 'SeekableIterator::seek' => ['void', 'position'=>'int'], 'sem_acquire' => ['bool', 'sem_identifier'=>'resource', 'nowait='=>'bool'], 'sem_get' => ['resource|false', 'key'=>'int', 'max_acquire='=>'int', 'perm='=>'int', 'auto_release='=>'int'], 'sem_release' => ['bool', 'sem_identifier'=>'resource'], 'sem_remove' => ['bool', 'sem_identifier'=>'resource'], 'Serializable::serialize' => ['string'], 'Serializable::unserialize' => ['void', 'serialized'=>'string'], 'serialize' => ['string', 'variable'=>'mixed'], 'ServerRequest::withInput' => ['ServerRequest', 'input'=>'mixed'], 'ServerRequest::withoutParams' => ['ServerRequest', 'params'=>'int|string'], 'ServerRequest::withParam' => ['ServerRequest', 'key'=>'int|string', 'val'=>'mixed'], 'ServerRequest::withParams' => ['ServerRequest', 'params'=>'mixed'], 'ServerRequest::withUrl' => ['ServerRequest', 'url'=>'array'], 'ServerResponse::addHeader' => ['void', 'label'=>'string', 'value'=>'string'], 'ServerResponse::date' => ['string', 'date'=>'string|DateTimeInterface'], 'ServerResponse::getHeader' => ['string', 'label'=>'string'], 'ServerResponse::getHeaders' => ['string[]'], 'ServerResponse::getStatus' => ['int'], 'ServerResponse::getVersion' => ['string'], 'ServerResponse::setHeader' => ['void', 'label'=>'string', 'value'=>'string'], 'ServerResponse::setStatus' => ['void', 'status'=>'int'], 'ServerResponse::setVersion' => ['void', 'version'=>'string'], 'session_abort' => ['bool'], 'session_cache_expire' => ['int|false', 'new_cache_expire='=>'int'], 'session_cache_limiter' => ['string|false', 'new_cache_limiter='=>'string'], 'session_commit' => ['bool'], 'session_create_id' => ['string|false', 'prefix='=>'string'], 'session_decode' => ['bool', 'data'=>'string'], 'session_destroy' => ['bool'], 'session_encode' => ['string|false'], 'session_gc' => ['int|false'], 'session_get_cookie_params' => ['array{lifetime:0|positive-int,path:non-falsy-string,domain:string,secure:bool,httponly:bool,samesite:string}'], 'session_id' => ['string|false', 'newid='=>'string'], 'session_is_registered' => ['bool', 'name'=>'string'], 'session_module_name' => ['string|false', 'newname='=>'string'], 'session_name' => ['non-falsy-string|false', 'newname='=>'string'], 'session_pgsql_add_error' => ['bool', 'error_level'=>'int', 'error_message='=>'string'], 'session_pgsql_get_error' => ['array', 'with_error_message='=>'bool'], 'session_pgsql_get_field' => ['string'], 'session_pgsql_reset' => ['bool'], 'session_pgsql_set_field' => ['bool', 'value'=>'string'], 'session_pgsql_status' => ['array'], 'session_regenerate_id' => ['bool', 'delete_old_session='=>'bool'], 'session_register' => ['bool', 'name'=>'mixed', '...args='=>'mixed'], 'session_register_shutdown' => ['void'], 'session_reset' => ['bool'], 'session_save_path' => ['string|false', 'newname='=>'string'], 'session_set_cookie_params' => ['bool', 'lifetime'=>'int', 'path='=>'string', 'domain='=>'?string', 'secure='=>'bool', 'httponly='=>'bool'], 'session_set_cookie_params\'1' => ['bool', 'options'=>'array{lifetime?:int,path?:string,domain?:?string,secure?:bool,httponly?:bool,samesite?:string}'], 'session_set_save_handler' => ['bool', 'open'=>'callable(string,string):bool', 'close'=>'callable():bool', 'read'=>'callable(string):string', 'write'=>'callable(string,string):bool', 'destroy'=>'callable(string):bool', 'gc'=>'callable(string):bool', 'create_sid='=>'callable():string', 'validate_sid='=>'callable(string):bool', 'update_timestamp='=>'callable(string):bool'], 'session_set_save_handler\'1' => ['bool', 'sessionhandler'=>'SessionHandlerInterface', 'register_shutdown='=>'bool'], 'session_start' => ['bool', 'options='=>'array'], 'session_status' => ['PHP_SESSION_NONE|PHP_SESSION_DISABLED|PHP_SESSION_ACTIVE'], 'session_unregister' => ['bool', 'name'=>'string'], 'session_unset' => ['bool'], 'session_write_close' => ['bool'], 'SessionHandler::close' => ['bool'], 'SessionHandler::create_sid' => ['char'], 'SessionHandler::destroy' => ['bool', 'id'=>'string'], 'SessionHandler::gc' => ['int|false', 'maxlifetime'=>'int'], 'SessionHandler::open' => ['bool', 'save_path'=>'string', 'session_name'=>'string'], 'SessionHandler::read' => ['string', 'id'=>'string'], 'SessionHandler::updateTimestamp' => ['bool', 'session_id'=>'string', 'session_data'=>'string'], 'SessionHandler::validateId' => ['bool', 'session_id'=>'string'], 'SessionHandler::write' => ['bool', 'id'=>'string', 'data'=>'string'], 'SessionHandlerInterface::close' => ['bool'], 'SessionHandlerInterface::destroy' => ['bool', 'session_id'=>'string'], 'SessionHandlerInterface::gc' => ['int|false', 'maxlifetime'=>'int'], 'SessionHandlerInterface::open' => ['bool', 'save_path'=>'string', 'name'=>'string'], 'SessionHandlerInterface::read' => ['string', 'session_id'=>'string'], 'SessionHandlerInterface::write' => ['bool', 'session_id'=>'string', 'session_data'=>'string'], 'SessionIdInterface::create_sid' => ['string'], 'SessionUpdateTimestampHandler::updateTimestamp' => ['bool', 'id'=>'string', 'data'=>'string'], 'SessionUpdateTimestampHandler::validateId' => ['char', 'id'=>'string'], 'SessionUpdateTimestampHandlerInterface::updateTimestamp' => ['bool', 'key'=>'string', 'val'=>'string'], 'SessionUpdateTimestampHandlerInterface::validateId' => ['bool', 'key'=>'string'], 'set_error_handler' => ['?callable', 'callback'=>'null|callable(int,string,string,int,array):bool', 'error_types='=>'int'], 'set_exception_handler' => ['null|callable(Throwable):void', 'exception_handler'=>'null|callable(Throwable):void'], 'set_file_buffer' => ['int', 'fp'=>'resource', 'buffer'=>'int'], 'set_include_path' => ['string|false', 'new_include_path'=>'string'], 'set_magic_quotes_runtime' => ['bool', 'new_setting'=>'bool'], 'set_time_limit' => ['bool', 'seconds'=>'int'], 'setcookie' => ['bool', 'name'=>'string', 'value='=>'string', 'expires='=>'int', 'path='=>'string', 'domain='=>'string', 'secure='=>'bool', 'httponly='=>'bool'], 'setcookie\'1' => ['bool', 'name'=>'string', 'value='=>'string', 'options='=>'array{ expires?:int, path?:string, domain?:string, secure?:bool, httponly?:bool, samesite?:\'None\'|\'Lax\'|\'Strict\'|\'none\'|\'lax\'|\'strict\'}'], 'setLeftFill' => ['void', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'a='=>'int'], 'setLine' => ['void', 'width'=>'int', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'a='=>'int'], 'setlocale' => ['string|false', 'category'=>'int', 'locale'=>'string|null', '...args='=>'string'], 'setlocale\'1' => ['string|false', 'category'=>'int', 'locale'=>'?array'], 'setrawcookie' => ['bool', 'name'=>'string', 'value='=>'string', 'expires='=>'int', 'path='=>'string', 'domain='=>'string', 'secure='=>'bool', 'httponly='=>'bool'], 'setrawcookie\'1' => ['bool', 'name'=>'string', 'value='=>'string', 'options='=>'array{ expires?:int, path?:string, domain?:string, secure?:bool, httponly?:bool, samesite?:\'None\'|\'Lax\'|\'Strict\'|\'none\'|\'lax\'|\'strict\'}'], 'setRightFill' => ['void', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'a='=>'int'], 'setthreadtitle' => ['bool', 'title'=>'string'], 'settype' => ['bool', '&rw_var'=>'mixed', 'type'=>'string'], 'sha1' => ['non-falsy-string&lowercase-string', 'str'=>'string', 'raw_output='=>'bool'], 'sha1_file' => ['(non-falsy-string&lowercase-string)|false', 'filename'=>'string', 'raw_output='=>'bool'], 'shapefileObj::__construct' => ['void', 'filename'=>'string', 'type'=>'int'], 'shapefileObj::addPoint' => ['int', 'point'=>'pointObj'], 'shapefileObj::addShape' => ['int', 'shape'=>'shapeObj'], 'shapefileObj::free' => ['void'], 'shapefileObj::getExtent' => ['rectObj', 'i'=>'int'], 'shapefileObj::getPoint' => ['shapeObj', 'i'=>'int'], 'shapefileObj::getShape' => ['shapeObj', 'i'=>'int'], 'shapefileObj::getTransformed' => ['shapeObj', 'map'=>'mapObj', 'i'=>'int'], 'shapefileObj::ms_newShapefileObj' => ['shapefileObj', 'filename'=>'string', 'type'=>'int'], 'shapeObj::__construct' => ['void', 'type'=>'int'], 'shapeObj::add' => ['int', 'line'=>'lineObj'], 'shapeObj::boundary' => ['shapeObj'], 'shapeObj::contains' => ['bool', 'point'=>'pointObj'], 'shapeObj::containsShape' => ['int', 'shape2'=>'shapeObj'], 'shapeObj::convexhull' => ['shapeObj'], 'shapeObj::crosses' => ['int', 'shape'=>'shapeObj'], 'shapeObj::difference' => ['shapeObj', 'shape'=>'shapeObj'], 'shapeObj::disjoint' => ['int', 'shape'=>'shapeObj'], 'shapeObj::draw' => ['int', 'map'=>'mapObj', 'layer'=>'layerObj', 'img'=>'imageObj'], 'shapeObj::equals' => ['int', 'shape'=>'shapeObj'], 'shapeObj::free' => ['void'], 'shapeObj::getArea' => ['float'], 'shapeObj::getCentroid' => ['pointObj'], 'shapeObj::getLabelPoint' => ['pointObj'], 'shapeObj::getLength' => ['float'], 'shapeObj::getPointUsingMeasure' => ['pointObj', 'm'=>'float'], 'shapeObj::getValue' => ['string', 'layer'=>'layerObj', 'filedname'=>'string'], 'shapeObj::intersection' => ['shapeObj', 'shape'=>'shapeObj'], 'shapeObj::intersects' => ['bool', 'shape'=>'shapeObj'], 'shapeObj::line' => ['lineObj', 'i'=>'int'], 'shapeObj::ms_shapeObjFromWkt' => ['shapeObj', 'wkt'=>'string'], 'shapeObj::overlaps' => ['int', 'shape'=>'shapeObj'], 'shapeObj::project' => ['int', 'in'=>'projectionObj', 'out'=>'projectionObj'], 'shapeObj::set' => ['int', 'property_name'=>'string', 'new_value'=>''], 'shapeObj::setBounds' => ['int'], 'shapeObj::simplify' => ['shapeObj', 'tolerance'=>'float'], 'shapeObj::symdifference' => ['shapeObj', 'shape'=>'shapeObj'], 'shapeObj::topologyPreservingSimplify' => ['shapeObj', 'tolerance'=>'float'], 'shapeObj::touches' => ['int', 'shape'=>'shapeObj'], 'shapeObj::toWkt' => ['string'], 'shapeObj::union' => ['shapeObj', 'shape'=>'shapeObj'], 'shapeObj::within' => ['int', 'shape2'=>'shapeObj'], 'shell_exec' => ['?string', 'cmd'=>'string'], 'shm_attach' => ['resource|false', 'key'=>'int', 'memsize='=>'int', 'perm='=>'int'], 'shm_detach' => ['bool', 'shm_identifier'=>'resource'], 'shm_get_var' => ['mixed', 'id'=>'resource', 'variable_key'=>'int'], 'shm_has_var' => ['bool', 'shm_identifier'=>'resource', 'variable_key'=>'int'], 'shm_put_var' => ['bool', 'shm_identifier'=>'resource', 'variable_key'=>'int', 'variable'=>'mixed'], 'shm_remove' => ['bool', 'shm_identifier'=>'resource'], 'shm_remove_var' => ['bool', 'shm_identifier'=>'resource', 'variable_key'=>'int'], 'shmop_close' => ['void', 'shmid'=>'resource'], 'shmop_delete' => ['bool', 'shmid'=>'resource'], 'shmop_open' => ['resource|false', 'key'=>'int', 'flags'=>'string', 'mode'=>'int', 'size'=>'int'], 'shmop_read' => ['string', 'shmid'=>'resource', 'start'=>'int', 'count'=>'int'], 'shmop_size' => ['int', 'shmid'=>'resource'], 'shmop_write' => ['int', 'shmid'=>'resource', 'data'=>'string', 'offset'=>'int'], 'show_source' => ['', 'file_name'=>'', 'return'=>''], 'shuffle' => ['bool', '&rw_array_arg'=>'array'], 'signeurlpaiement' => ['string', 'clent'=>'string', 'data'=>'string'], 'similar_text' => ['int', 'str1'=>'string', 'str2'=>'string', '&w_percent='=>'float'], 'simplexml_import_dom' => ['SimpleXMLElement|null', 'node'=>'DOMNode', 'class_name='=>'string'], 'simplexml_load_file' => ['SimpleXMLElement|false', 'filename'=>'string', 'class_name='=>'string', 'options='=>'int', 'ns='=>'string', 'is_prefix='=>'bool'], 'simplexml_load_string' => ['SimpleXMLElement|false', 'data'=>'string', 'class_name='=>'string', 'options='=>'int', 'ns='=>'string', 'is_prefix='=>'bool'], 'SimpleXMLElement::__construct' => ['void', 'data'=>'string', 'options='=>'int', 'data_is_url='=>'bool', 'ns='=>'string', 'is_prefix='=>'bool'], 'SimpleXMLElement::__get' => ['static', 'name'=>'string'], 'SimpleXMLElement::__toString' => ['string'], 'SimpleXMLElement::addAttribute' => ['void', 'name'=>'string', 'value='=>'string', 'ns='=>'string'], 'SimpleXMLElement::addChild' => ['__benevolent', 'name'=>'string', 'value='=>'string|null', 'ns='=>'string|null'], 'SimpleXMLElement::asXML' => ['string|bool', 'filename='=>'string'], 'SimpleXMLElement::attributes' => ['__benevolent', 'ns='=>'string', 'is_prefix='=>'bool'], 'SimpleXMLElement::children' => ['__benevolent', 'namespaceOrPrefix='=>'string|null', 'is_prefix='=>'bool'], 'SimpleXMLElement::count' => ['0|positive-int'], 'SimpleXMLElement::getDocNamespaces' => ['string[]|false', 'recursive='=>'bool', 'from_root='=>'bool'], 'SimpleXMLElement::getName' => ['string'], 'SimpleXMLElement::getNamespaces' => ['string[]', 'recursive='=>'bool'], 'SimpleXMLElement::registerXPathNamespace' => ['bool', 'prefix'=>'string', 'ns'=>'string'], 'SimpleXMLElement::xpath' => ['static[]|false|null', 'path'=>'string'], 'SimpleXMLIterator::current' => ['SimpleXMLIterator'], 'SimpleXMLIterator::getChildren' => ['SimpleXMLIterator'], 'SimpleXMLIterator::hasChildren' => ['bool'], 'SimpleXMLIterator::key' => ['string|false'], 'SimpleXMLIterator::next' => ['void'], 'SimpleXMLIterator::rewind' => ['void'], 'SimpleXMLIterator::valid' => ['bool'], 'sin' => ['float', 'number'=>'float'], 'sinh' => ['float', 'number'=>'float'], 'sizeof' => ['int', 'var'=>'Countable|array', 'mode='=>'int'], 'sleep' => ['int|false', 'seconds'=>'int'], 'snmp2_get' => ['string|false', 'host'=>'string', 'community'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'snmp2_getnext' => ['string|false', 'host'=>'string', 'community'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'snmp2_real_walk' => ['array|false', 'host'=>'string', 'community'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'snmp2_set' => ['bool', 'host'=>'string', 'community'=>'string', 'object_id'=>'string', 'type'=>'string', 'value'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'snmp2_walk' => ['array|false', 'host'=>'string', 'community'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'snmp3_get' => ['string|false', 'host'=>'string', 'sec_name'=>'string', 'sec_level'=>'string', 'auth_protocol'=>'string', 'auth_passphrase'=>'string', 'priv_protocol'=>'string', 'priv_passphrase'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'snmp3_getnext' => ['string|false', 'host'=>'string', 'sec_name'=>'string', 'sec_level'=>'string', 'auth_protocol'=>'string', 'auth_passphrase'=>'string', 'priv_protocol'=>'string', 'priv_passphrase'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'snmp3_real_walk' => ['array|false', 'host'=>'string', 'sec_name'=>'string', 'sec_level'=>'string', 'auth_protocol'=>'string', 'auth_passphrase'=>'string', 'priv_protocol'=>'string', 'priv_passphrase'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'snmp3_set' => ['bool', 'host'=>'string', 'sec_name'=>'string', 'sec_level'=>'string', 'auth_protocol'=>'string', 'auth_passphrase'=>'string', 'priv_protocol'=>'string', 'priv_passphrase'=>'string', 'object_id'=>'string', 'type'=>'string', 'value'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'snmp3_walk' => ['array|false', 'host'=>'string', 'sec_name'=>'string', 'sec_level'=>'string', 'auth_protocol'=>'string', 'auth_passphrase'=>'string', 'priv_protocol'=>'string', 'priv_passphrase'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'SNMP::__construct' => ['void', 'version'=>'int', 'hostname'=>'string', 'community'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'SNMP::close' => ['bool'], 'SNMP::get' => ['array|string|false', 'object_id'=>'string|array', 'preserve_keys='=>'bool'], 'SNMP::getErrno' => ['int'], 'SNMP::getError' => ['string'], 'SNMP::getnext' => ['string|array|false', 'object_id'=>'string|array'], 'SNMP::set' => ['bool', 'object_id'=>'string|array', 'type'=>'string|array', 'value'=>'mixed'], 'SNMP::setSecurity' => ['bool', 'sec_level'=>'string', 'auth_protocol='=>'string', 'auth_passphrase='=>'string', 'priv_protocol='=>'string', 'priv_passphrase='=>'string', 'contextname='=>'string', 'contextengineid='=>'string'], 'SNMP::walk' => ['array|false', 'object_id'=>'string', 'suffix_as_key='=>'bool', 'non_repeaters='=>'int', 'max_repetitions='=>'int'], 'snmp_get_quick_print' => ['bool'], 'snmp_get_valueretrieval' => ['int'], 'snmp_read_mib' => ['bool', 'filename'=>'string'], 'snmp_set_enum_print' => ['bool', 'enum_print'=>'int'], 'snmp_set_oid_numeric_print' => ['void', 'oid_format'=>'int'], 'snmp_set_oid_output_format' => ['bool', 'oid_format'=>'int'], 'snmp_set_quick_print' => ['bool', 'quick_print'=>'int'], 'snmp_set_valueretrieval' => ['bool', 'method='=>'int'], 'snmpget' => ['string|false', 'host'=>'string', 'community'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'snmpgetnext' => ['string|false', 'host'=>'string', 'community'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'snmprealwalk' => ['array|false', 'host'=>'string', 'community'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'snmpset' => ['bool', 'host'=>'string', 'community'=>'string', 'object_id'=>'string', 'type'=>'string', 'value'=>'mixed', 'timeout='=>'int', 'retries='=>'int'], 'snmpwalk' => ['array|false', 'host'=>'string', 'community'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'snmpwalkoid' => ['array|false', 'hostname'=>'string', 'community'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'], 'SoapClient::__call' => ['mixed', 'function_name'=>'string', 'arguments'=>'array'], 'SoapClient::__construct' => ['void', 'wsdl'=>'mixed', 'options='=>'array|null'], 'SoapClient::__doRequest' => ['string|null', 'request'=>'string', 'location'=>'string', 'action'=>'string', 'version'=>'int', 'one_way='=>'int'], 'SoapClient::__getCookies' => ['array'], 'SoapClient::__getFunctions' => ['array|null'], 'SoapClient::__getLastRequest' => ['string|null'], 'SoapClient::__getLastRequestHeaders' => ['string|null'], 'SoapClient::__getLastResponse' => ['string|null'], 'SoapClient::__getLastResponseHeaders' => ['string|null'], 'SoapClient::__getTypes' => ['array|null'], 'SoapClient::__setCookie' => ['', 'name'=>'string', 'value='=>'string'], 'SoapClient::__setLocation' => ['string|null', 'new_location='=>'string'], 'SoapClient::__setSoapHeaders' => ['bool', 'soapheaders='=>''], 'SoapClient::__soapCall' => ['mixed', 'function_name'=>'string', 'arguments'=>'array', 'options='=>'array', 'input_headers='=>'SoapHeader|array', '&w_output_headers='=>'array'], 'SoapClient::SoapClient' => ['object', 'wsdl'=>'mixed', 'options='=>'array|null'], 'SoapFault::__construct' => ['void', 'faultcode'=>'string', 'string'=>'string', 'faultactor='=>'string', 'detail='=>'mixed', 'faultname='=>'string', 'headerfault='=>'mixed'], 'SoapFault::__toString' => ['string'], 'SoapFault::SoapFault' => ['object', 'faultcode'=>'string', 'string'=>'string', 'faultactor='=>'string', 'detail='=>'string', 'faultname='=>'string', 'headerfault='=>'string'], 'SoapHeader::__construct' => ['void', 'namespace'=>'string', 'name'=>'string', 'data='=>'mixed', 'mustunderstand='=>'bool', 'actor='=>'string'], 'SoapHeader::SoapHeader' => ['object', 'namespace'=>'string', 'name'=>'string', 'data='=>'mixed', 'mustunderstand='=>'bool', 'actor='=>'string'], 'SoapParam::__construct' => ['void', 'data'=>'mixed', 'name'=>'string'], 'SoapParam::SoapParam' => ['object', 'data'=>'mixed', 'name'=>'string'], 'SoapServer::__construct' => ['void', 'wsdl'=>'?string', 'options='=>'array'], 'SoapServer::addFunction' => ['void', 'functions'=>'mixed'], 'SoapServer::addSoapHeader' => ['void', 'object'=>'soapheader'], 'SoapServer::fault' => ['void', 'code'=>'string', 'string'=>'string', 'actor='=>'string', 'details='=>'string', 'name='=>'string'], 'SoapServer::getFunctions' => ['array'], 'SoapServer::handle' => ['void', 'soap_request='=>'string'], 'SoapServer::setClass' => ['void', 'class_name'=>'string', '...args='=>'mixed'], 'SoapServer::setObject' => ['void', 'obj'=>'object'], 'SoapServer::setPersistence' => ['void', 'mode'=>'int'], 'SoapServer::SoapServer' => ['object', 'wsdl'=>'?string', 'options='=>'array'], 'SoapVar::__construct' => ['void', 'data'=>'mixed', 'encoding'=>'int', 'type_name='=>'string|null', 'type_namespace='=>'string|null', 'node_name='=>'string|null', 'node_namespace='=>'string|null'], 'SoapVar::SoapVar' => ['object', 'data'=>'mixed', 'encoding'=>'int', 'type_name='=>'string|null', 'type_namespace='=>'string|null', 'node_name='=>'string|null', 'node_namespace='=>'string|null'], 'socket_accept' => ['resource|false', 'socket'=>'resource'], 'socket_addrinfo_bind' => ['resource|null|false', 'addrinfo'=>'resource'], 'socket_addrinfo_connect' => ['resource|null|false', 'addrinfo'=>'resource'], 'socket_addrinfo_explain' => ['array', 'addrinfo'=>'resource'], 'socket_addrinfo_lookup' => ['resource[]|false', 'node'=>'string', 'service='=>'mixed', 'hints='=>'array'], 'socket_bind' => ['bool', 'socket'=>'resource', 'addr'=>'string', 'port='=>'int'], 'socket_clear_error' => ['void', 'socket='=>'resource'], 'socket_close' => ['void', 'socket'=>'resource'], 'socket_cmsg_space' => ['int', 'level'=>'int', 'type'=>'int'], 'socket_connect' => ['bool', 'socket'=>'resource', 'addr'=>'string', 'port='=>'int'], 'socket_create' => ['resource|false', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int'], 'socket_create_listen' => ['resource|false', 'port'=>'int', 'backlog='=>'int'], 'socket_create_pair' => ['bool', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int', '&w_fd'=>'resource[]'], 'socket_export_stream' => ['resource|false', 'socket'=>'resource'], 'socket_get_option' => ['mixed', 'socket'=>'resource', 'level'=>'int', 'optname'=>'int'], 'socket_getopt' => ['mixed', 'socket'=>'resource', 'level'=>'int', 'optname'=>'int'], 'socket_getpeername' => ['bool', 'socket'=>'resource', '&w_addr'=>'string', '&w_port='=>'int'], 'socket_getsockname' => ['bool', 'socket'=>'resource', '&w_addr'=>'string', '&w_port='=>'int'], 'socket_import_stream' => ['resource|false', 'stream'=>'resource'], 'socket_last_error' => ['int', 'socket='=>'resource'], 'socket_listen' => ['bool', 'socket'=>'resource', 'backlog='=>'int'], 'socket_read' => ['string|false', 'socket'=>'resource', 'length'=>'int', 'type='=>'int'], 'socket_recv' => ['int|false', 'socket'=>'resource', '&w_buf'=>'string', 'len'=>'int', 'flags'=>'int'], 'socket_recvfrom' => ['int|false', 'socket'=>'resource', '&w_buf'=>'string', 'len'=>'int', 'flags'=>'int', '&w_name'=>'string', '&w_port='=>'int'], 'socket_recvmsg' => ['int|false', 'socket'=>'resource', '&w_message'=>'string', 'flags='=>'int'], 'socket_select' => ['int|false', '&w_read_fds'=>'resource[]|null', '&w_write_fds'=>'resource[]|null', '&w_except_fds'=>'resource[]|null', 'tv_sec'=>'int|null', 'tv_usec='=>'int|null'], 'socket_send' => ['int|false', 'socket'=>'resource', 'buf'=>'string', 'len'=>'int', 'flags'=>'int'], 'socket_sendmsg' => ['int|false', 'socket'=>'resource', 'message'=>'array', 'flags'=>'int'], 'socket_sendto' => ['int|false', 'socket'=>'resource', 'buf'=>'string', 'len'=>'int', 'flags'=>'int', 'addr'=>'string', 'port='=>'int'], 'socket_set_block' => ['bool', 'socket'=>'resource'], 'socket_set_nonblock' => ['bool', 'socket'=>'resource'], 'socket_set_option' => ['bool', 'socket'=>'resource', 'level'=>'int', 'optname'=>'int', 'optval'=>'int|string|array'], 'socket_shutdown' => ['bool', 'socket'=>'resource', 'how='=>'int'], 'socket_strerror' => ['string', 'errno'=>'int'], 'socket_write' => ['int|false', 'socket'=>'resource', 'buf'=>'string', 'length='=>'int'], 'socket_wsaprotocol_info_export' => ['string|false', 'stream'=>'resource', 'target_pid'=>'int'], 'socket_wsaprotocol_info_import' => ['resource|false', 'id'=>'string'], 'socket_wsaprotocol_info_release' => ['bool', 'id'=>'string'], 'Sodium\add' => ['', '&left'=>'string', 'right'=>'string'], 'Sodium\bin2hex' => ['string', 'binary'=>'string'], 'Sodium\compare' => ['int', 'left'=>'string', 'right'=>'string'], 'Sodium\crypto_aead_aes256gcm_decrypt' => ['string', 'msg'=>'string', 'nonce'=>'string', 'key'=>'string', 'ad='=>'string'], 'Sodium\crypto_aead_aes256gcm_encrypt' => ['string', 'msg'=>'string', 'nonce'=>'string', 'key'=>'string', 'ad='=>'string'], 'Sodium\crypto_aead_aes256gcm_is_available' => ['bool'], 'Sodium\crypto_aead_chacha20poly1305_decrypt' => ['string', 'msg'=>'string', 'nonce'=>'string', 'key'=>'string', 'ad='=>'string'], 'Sodium\crypto_aead_chacha20poly1305_encrypt' => ['string', 'msg'=>'string', 'nonce'=>'string', 'key'=>'string', 'ad='=>'string'], 'Sodium\crypto_auth' => ['string', 'msg'=>'string', 'key'=>'string'], 'Sodium\crypto_auth_verify' => ['bool', 'mac'=>'string', 'msg'=>'string', 'key'=>'string'], 'Sodium\crypto_box' => ['string', 'msg'=>'string', 'nonce'=>'string', 'keypair'=>'string'], 'Sodium\crypto_box_keypair' => ['string'], 'Sodium\crypto_box_keypair_from_secretkey_and_publickey' => ['string', 'secretkey'=>'string', 'publickey'=>'string'], 'Sodium\crypto_box_open' => ['string', 'msg'=>'string', 'nonce'=>'string', 'keypair'=>'string'], 'Sodium\crypto_box_publickey' => ['string', 'keypair'=>'string'], 'Sodium\crypto_box_publickey_from_secretkey' => ['string', 'secretkey'=>'string'], 'Sodium\crypto_box_seal' => ['string', 'message'=>'string', 'publickey'=>'string'], 'Sodium\crypto_box_seal_open' => ['string', 'encrypted'=>'string', 'keypair'=>'string'], 'Sodium\crypto_box_secretkey' => ['string', 'keypair'=>'string'], 'Sodium\crypto_box_seed_keypair' => ['string', 'seed'=>'string'], 'Sodium\crypto_generichash' => ['string', 'input'=>'string', 'key='=>'string', 'length='=>'int'], 'Sodium\crypto_generichash_final' => ['string', 'state'=>'string', 'length='=>'int'], 'Sodium\crypto_generichash_init' => ['string', 'key='=>'string', 'length='=>'int'], 'Sodium\crypto_generichash_update' => ['bool', '&hashState'=>'string', 'append'=>'string'], 'Sodium\crypto_kx' => ['string', 'secretkey'=>'string', 'publickey'=>'string', 'client_publickey'=>'string', 'server_publickey'=>'string'], 'Sodium\crypto_pwhash' => ['string', 'out_len'=>'int', 'passwd'=>'string', 'salt'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'], 'Sodium\crypto_pwhash_scryptsalsa208sha256' => ['string', 'out_len'=>'int', 'passwd'=>'string', 'salt'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'], 'Sodium\crypto_pwhash_scryptsalsa208sha256_str' => ['string', 'passwd'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'], 'Sodium\crypto_pwhash_scryptsalsa208sha256_str_verify' => ['bool', 'hash'=>'string', 'passwd'=>'string'], 'Sodium\crypto_pwhash_str' => ['string', 'passwd'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'], 'Sodium\crypto_pwhash_str_verify' => ['bool', 'hash'=>'string', 'passwd'=>'string'], 'Sodium\crypto_scalarmult' => ['string', 'ecdhA'=>'string', 'ecdhB'=>'string'], 'Sodium\crypto_scalarmult_base' => ['string', 'sk'=>'string'], 'Sodium\crypto_secretbox' => ['string', 'plaintext'=>'string', 'nonce'=>'string', 'key'=>'string'], 'Sodium\crypto_secretbox_open' => ['string', 'ciphertext'=>'string', 'nonce'=>'string', 'key'=>'string'], 'Sodium\crypto_shorthash' => ['string', 'message'=>'string', 'key'=>'string'], 'Sodium\crypto_sign' => ['string', 'message'=>'string', 'secretkey'=>'string'], 'Sodium\crypto_sign_detached' => ['string', 'message'=>'string', 'secretkey'=>'string'], 'Sodium\crypto_sign_ed25519_pk_to_curve25519' => ['string', 'sign_pk'=>'string'], 'Sodium\crypto_sign_ed25519_sk_to_curve25519' => ['string', 'sign_sk'=>'string'], 'Sodium\crypto_sign_keypair' => ['string'], 'Sodium\crypto_sign_keypair_from_secretkey_and_publickey' => ['string', 'secretkey'=>'string', 'publickey'=>'string'], 'Sodium\crypto_sign_open' => ['string|false', 'signed_message'=>'string', 'publickey'=>'string'], 'Sodium\crypto_sign_publickey' => ['string', 'keypair'=>'string'], 'Sodium\crypto_sign_publickey_from_secretkey' => ['string', 'secretkey'=>'string'], 'Sodium\crypto_sign_secretkey' => ['string', 'keypair'=>'string'], 'Sodium\crypto_sign_seed_keypair' => ['string', 'seed'=>'string'], 'Sodium\crypto_sign_verify_detached' => ['bool', 'signature'=>'string', 'msg'=>'string', 'publickey'=>'string'], 'Sodium\crypto_stream' => ['string', 'length'=>'int', 'nonce'=>'string', 'key'=>'string'], 'Sodium\crypto_stream_xor' => ['string', 'plaintext'=>'string', 'nonce'=>'string', 'key'=>'string'], 'Sodium\hex2bin' => ['string', 'hex'=>'string'], 'Sodium\increment' => ['string', '&nonce'=>'string'], 'Sodium\library_version_major' => ['int'], 'Sodium\library_version_minor' => ['int'], 'Sodium\memcmp' => ['int', 'left'=>'string', 'right'=>'string'], 'Sodium\memzero' => ['', '&target'=>'string'], 'Sodium\randombytes_buf' => ['string', 'length'=>'int'], 'Sodium\randombytes_random16' => ['int|string'], 'Sodium\randombytes_uniform' => ['int', 'upperBoundNonInclusive'=>'int'], 'Sodium\version_string' => ['string'], 'sodium_add' => ['string', 'string_1'=>'string', 'string_2'=>'string'], 'sodium_base642bin' => ['string', 'base64'=>'string', 'variant'=>'int', 'ignore='=>'string'], 'sodium_bin2base64' => ['string', 'binary'=>'string', 'variant'=>'int'], 'sodium_bin2hex' => ['string', 'binary'=>'string'], 'sodium_compare' => ['int', 'string_1'=>'string', 'string_2'=>'string'], 'sodium_crypto_aead_aes256gcm_decrypt' => ['string|false', 'confidential_message'=>'string', 'public_message'=>'string', 'nonce'=>'string', 'key'=>'string'], 'sodium_crypto_aead_aes256gcm_encrypt' => ['string', 'confidential_message'=>'string', 'public_message'=>'string', 'nonce'=>'string', 'key'=>'string'], 'sodium_crypto_aead_aes256gcm_is_available' => ['bool'], 'sodium_crypto_aead_aes256gcm_keygen' => ['string'], 'sodium_crypto_aead_chacha20poly1305_decrypt' => ['string|false', 'confidential_message'=>'string', 'public_message'=>'string', 'nonce'=>'string', 'key'=>'string'], 'sodium_crypto_aead_chacha20poly1305_encrypt' => ['string', 'confidential_message'=>'string', 'public_message'=>'string', 'nonce'=>'string', 'key'=>'string'], 'sodium_crypto_aead_chacha20poly1305_ietf_decrypt' => ['string|false', 'confidential_message'=>'string', 'public_message'=>'string', 'nonce'=>'string', 'key'=>'string'], 'sodium_crypto_aead_chacha20poly1305_ietf_encrypt' => ['string', 'confidential_message'=>'string', 'public_message'=>'string', 'nonce'=>'string', 'key'=>'string'], 'sodium_crypto_aead_chacha20poly1305_ietf_keygen' => ['string'], 'sodium_crypto_aead_chacha20poly1305_keygen' => ['string'], 'sodium_crypto_aead_xchacha20poly1305_ietf_decrypt' => ['string|false', 'confidential_message'=>'string', 'public_message'=>'string', 'nonce'=>'string', 'key'=>'string'], 'sodium_crypto_aead_xchacha20poly1305_ietf_encrypt' => ['string', 'confidential_message'=>'string', 'public_message'=>'string', 'nonce'=>'string', 'key'=>'string'], 'sodium_crypto_aead_xchacha20poly1305_ietf_keygen' => ['string'], 'sodium_crypto_auth' => ['string', 'message'=>'string', 'key'=>'string'], 'sodium_crypto_auth_keygen' => ['string'], 'sodium_crypto_auth_verify' => ['bool', 'mac'=>'string', 'message'=>'string', 'key'=>'string'], 'sodium_crypto_box' => ['string', 'string'=>'string', 'nonce'=>'string', 'key'=>'string'], 'sodium_crypto_box_keypair' => ['string'], 'sodium_crypto_box_keypair_from_secretkey_and_publickey' => ['string', 'secret_key'=>'string', 'public_key'=>'string'], 'sodium_crypto_box_open' => ['string|false', 'message'=>'string', 'nonce'=>'string', 'message_keypair'=>'string'], 'sodium_crypto_box_publickey' => ['string', 'keypair'=>'string'], 'sodium_crypto_box_publickey_from_secretkey' => ['string', 'secretkey'=>'string'], 'sodium_crypto_box_seal' => ['string', 'message'=>'string', 'publickey'=>'string'], 'sodium_crypto_box_seal_open' => ['string|false', 'message'=>'string', 'recipient_keypair'=>'string'], 'sodium_crypto_box_secretkey' => ['string', 'keypair'=>'string'], 'sodium_crypto_box_seed_keypair' => ['string', 'seed'=>'string'], 'sodium_crypto_generichash' => ['non-empty-string', 'msg'=>'string', 'key='=>'?string', 'length='=>'?int'], 'sodium_crypto_generichash_final' => ['non-empty-string', 'state'=>'non-empty-string', 'length='=>'?int'], 'sodium_crypto_generichash_init' => ['non-empty-string', 'key='=>'?string', 'length='=>'?int'], 'sodium_crypto_generichash_keygen' => ['non-empty-string'], 'sodium_crypto_generichash_update' => ['bool', 'state'=>'non-empty-string', 'string'=>'string'], 'sodium_crypto_kdf_derive_from_key' => ['string', 'subkey_len'=>'int', 'subkey_id'=>'int', 'context'=>'string', 'key'=>'string'], 'sodium_crypto_kdf_keygen' => ['string'], 'sodium_crypto_kx' => ['string', 'secretkey'=>'string', 'publickey'=>'string', 'client_publickey'=>'string', 'server_publickey'=>'string'], 'sodium_crypto_kx_client_session_keys' => ['array', 'client_keypair'=>'string', 'server_key'=>'string'], 'sodium_crypto_kx_keypair' => ['string'], 'sodium_crypto_kx_publickey' => ['string', 'keypair'=>'string'], 'sodium_crypto_kx_secretkey' => ['string', 'keypair'=>'string'], 'sodium_crypto_kx_seed_keypair' => ['string', 'seed'=>'string'], 'sodium_crypto_kx_server_session_keys' => ['array', 'server_keypair'=>'string', 'client_key'=>'string'], 'sodium_crypto_pwhash' => ['string', 'length'=>'int', 'password'=>'string', 'salt'=>'string', 'opslimit'=>'int', 'memlimit'=>'int', 'alg='=>'int'], 'sodium_crypto_pwhash_scryptsalsa208sha256' => ['string', 'length'=>'int', 'password'=>'string', 'salt'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'], 'sodium_crypto_pwhash_scryptsalsa208sha256_str' => ['string', 'password'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'], 'sodium_crypto_pwhash_scryptsalsa208sha256_str_verify' => ['bool', 'hash'=>'string', 'password'=>'string'], 'sodium_crypto_pwhash_str' => ['string', 'password'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'], 'sodium_crypto_pwhash_str_needs_rehash' => ['bool', 'password'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'], 'sodium_crypto_pwhash_str_verify' => ['bool', 'hash'=>'string', 'password'=>'string'], 'sodium_crypto_scalarmult' => ['string', 'string_1'=>'string', 'string_2'=>'string'], 'sodium_crypto_scalarmult_base' => ['string', 'key'=>'string'], 'sodium_crypto_secretbox' => ['string', 'plaintext'=>'string', 'nonce'=>'string', 'key'=>'string'], 'sodium_crypto_secretbox_keygen' => ['string'], 'sodium_crypto_secretbox_open' => ['string|false', 'ciphertext'=>'string', 'nonce'=>'string', 'key'=>'string'], 'sodium_crypto_secretstream_xchacha20poly1305_init_pull' => ['string', 'header'=>'string', 'key'=>'string'], 'sodium_crypto_secretstream_xchacha20poly1305_init_push' => ['array', 'key'=>'string'], 'sodium_crypto_secretstream_xchacha20poly1305_keygen' => ['string'], 'sodium_crypto_secretstream_xchacha20poly1305_pull' => ['array|false', 'state'=>'string', 'c'=>'string', 'ad='=>'string'], 'sodium_crypto_secretstream_xchacha20poly1305_push' => ['string', 'state'=>'string', 'msg'=>'string', 'ad='=>'string', 'tag='=>'int'], 'sodium_crypto_secretstream_xchacha20poly1305_rekey' => ['void', 'state'=>'string'], 'sodium_crypto_shorthash' => ['string', 'message'=>'string', 'key'=>'string'], 'sodium_crypto_shorthash_keygen' => ['string'], 'sodium_crypto_sign' => ['non-empty-string', 'message'=>'string', 'secretkey'=>'non-empty-string'], 'sodium_crypto_sign_detached' => ['non-empty-string', 'message'=>'string', 'secretkey'=>'non-empty-string'], 'sodium_crypto_sign_ed25519_pk_to_curve25519' => ['non-empty-string', 'ed25519pk'=>'non-empty-string'], 'sodium_crypto_sign_ed25519_sk_to_curve25519' => ['non-empty-string', 'ed25519sk'=>'non-empty-string'], 'sodium_crypto_sign_keypair' => ['non-empty-string'], 'sodium_crypto_sign_keypair_from_secretkey_and_publickey' => ['non-empty-string', 'secret_key'=>'non-empty-string', 'public_key'=>'non-empty-string'], 'sodium_crypto_sign_open' => ['string|false', 'message'=>'string', 'publickey'=>'non-empty-string'], 'sodium_crypto_sign_publickey' => ['non-empty-string', 'keypair'=>'non-empty-string'], 'sodium_crypto_sign_publickey_from_secretkey' => ['non-empty-string', 'secretkey'=>'non-empty-string'], 'sodium_crypto_sign_secretkey' => ['non-empty-string', 'keypair'=>'non-empty-string'], 'sodium_crypto_sign_seed_keypair' => ['non-empty-string', 'seed'=>'non-empty-string'], 'sodium_crypto_sign_verify_detached' => ['bool', 'signature'=>'non-empty-string', 'message'=>'string', 'publickey'=>'non-empty-string'], 'sodium_crypto_stream' => ['string', 'length'=>'int', 'nonce'=>'string', 'key'=>'string'], 'sodium_crypto_stream_keygen' => ['string'], 'sodium_crypto_stream_xor' => ['string', 'message'=>'string', 'nonce'=>'string', 'key'=>'string'], 'sodium_hex2bin' => ['string', 'hex'=>'string', 'ignore='=>'string'], 'sodium_increment' => ['string', '&binary_string'=>'string'], 'sodium_library_version_major' => ['int'], 'sodium_library_version_minor' => ['int'], 'sodium_memcmp' => ['int', 'string_1'=>'string', 'string_2'=>'string'], 'sodium_memzero' => ['void', '&secret'=>'string'], 'sodium_pad' => ['string', 'unpadded'=>'string', 'length'=>'int'], 'sodium_randombytes_buf' => ['string', 'length'=>'int'], 'sodium_randombytes_random16' => ['int|string'], 'sodium_randombytes_uniform' => ['int', 'upperBoundNonInclusive'=>'int'], 'sodium_unpad' => ['string', 'padded'=>'string', 'length'=>'int'], 'sodium_version_string' => ['string'], 'solid_fetch_prev' => ['bool', 'result_id'=>''], 'solr_get_version' => ['string'], 'SolrClient::__construct' => ['void', 'clientOptions'=>'array'], 'SolrClient::__destruct' => [''], 'SolrClient::addDocument' => ['SolrUpdateResponse', 'doc'=>'solrinputdocument', 'allowdups='=>'bool', 'commitwithin='=>'int'], 'SolrClient::addDocuments' => ['SolrUpdateResponse', 'docs'=>'array', 'allowdups='=>'bool', 'commitwithin='=>'int'], 'SolrClient::commit' => ['SolrUpdateResponse', 'maxsegments='=>'int', 'waitflush='=>'bool', 'waitsearcher='=>'bool'], 'SolrClient::deleteById' => ['SolrUpdateResponse', 'id'=>'string'], 'SolrClient::deleteByIds' => ['SolrUpdateResponse', 'ids'=>'array'], 'SolrClient::deleteByQueries' => ['SolrUpdateResponse', 'queries'=>'array'], 'SolrClient::deleteByQuery' => ['SolrUpdateResponse', 'query'=>'string'], 'SolrClient::getById' => ['SolrQueryResponse', 'id'=>'string'], 'SolrClient::getByIds' => ['SolrQueryResponse', 'ids'=>'array'], 'SolrClient::getDebug' => ['string'], 'SolrClient::getOptions' => ['array'], 'SolrClient::optimize' => ['SolrUpdateResponse', 'maxsegments='=>'int', 'waitflush='=>'bool', 'waitsearcher='=>'bool'], 'SolrClient::ping' => ['SolrPingResponse'], 'SolrClient::query' => ['SolrQueryResponse', 'query'=>'solrparams'], 'SolrClient::request' => ['SolrUpdateResponse', 'raw_request'=>'string'], 'SolrClient::rollback' => ['SolrUpdateResponse'], 'SolrClient::setResponseWriter' => ['void', 'responsewriter'=>'string'], 'SolrClient::setServlet' => ['bool', 'type'=>'int', 'value'=>'string'], 'SolrClient::system' => ['void'], 'SolrClient::threads' => ['void'], 'SolrClientException::getInternalInfo' => ['array'], 'SolrCollapseFunction::__toString' => ['string'], 'SolrCollapseFunction::getField' => ['string'], 'SolrCollapseFunction::getHint' => ['string'], 'SolrCollapseFunction::getMax' => ['string'], 'SolrCollapseFunction::getMin' => ['string'], 'SolrCollapseFunction::getNullPolicy' => ['string'], 'SolrCollapseFunction::getSize' => ['int'], 'SolrCollapseFunction::setField' => ['SolrCollapseFunction', 'fieldName'=>'string'], 'SolrCollapseFunction::setHint' => ['SolrCollapseFunction', 'hint'=>'string'], 'SolrCollapseFunction::setMax' => ['SolrCollapseFunction', 'max'=>'string'], 'SolrCollapseFunction::setMin' => ['SolrCollapseFunction', 'min'=>'string'], 'SolrCollapseFunction::setNullPolicy' => ['SolrCollapseFunction', 'nullPolicy'=>'string'], 'SolrCollapseFunction::setSize' => ['SolrCollapseFunction', 'size'=>'int'], 'SolrDisMaxQuery::__construct' => ['void', 'q='=>'string'], 'SolrDisMaxQuery::addBigramPhraseField' => ['SolrDisMaxQuery', 'field'=>'string', 'boost'=>'string', 'slop='=>'string'], 'SolrDisMaxQuery::addBoostQuery' => ['SolrDisMaxQuery', 'field'=>'string', 'value'=>'string', 'boost='=>'string'], 'SolrDisMaxQuery::addExpandFilterQuery' => ['SolrQuery', 'fq'=>'string'], 'SolrDisMaxQuery::addExpandSortField' => ['SolrQuery', 'field'=>'string', 'order'=>'string'], 'SolrDisMaxQuery::addFacetDateField' => ['SolrQuery', 'dateField'=>'string'], 'SolrDisMaxQuery::addFacetDateOther' => ['SolrQuery', 'value'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::addFacetField' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::addFacetQuery' => ['SolrQuery', 'facetQuery'=>'string'], 'SolrDisMaxQuery::addField' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::addFilterQuery' => ['SolrQuery', 'fq'=>'string'], 'SolrDisMaxQuery::addGroupField' => ['SolrQuery', 'value'=>'string'], 'SolrDisMaxQuery::addGroupFunction' => ['SolrQuery', 'value'=>'string'], 'SolrDisMaxQuery::addGroupQuery' => ['SolrQuery', 'value'=>'string'], 'SolrDisMaxQuery::addGroupSortField' => ['SolrQuery', 'field'=>'string', 'order'=>'int'], 'SolrDisMaxQuery::addHighlightField' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::addMltField' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::addMltQueryField' => ['SolrQuery', 'field'=>'string', 'boost'=>'float'], 'SolrDisMaxQuery::addParam' => ['SolrParams', 'name'=>'string', 'value'=>'string'], 'SolrDisMaxQuery::addPhraseField' => ['SolrDisMaxQuery', 'field'=>'string', 'boost'=>'string', 'slop='=>'string'], 'SolrDisMaxQuery::addQueryField' => ['SolrDisMaxQuery', 'field'=>'string', 'boost='=>'string'], 'SolrDisMaxQuery::addSortField' => ['SolrQuery', 'field'=>'string', 'order='=>'int'], 'SolrDisMaxQuery::addStatsFacet' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::addStatsField' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::addTrigramPhraseField' => ['SolrDisMaxQuery', 'field'=>'string', 'boost'=>'string', 'slop='=>'string'], 'SolrDisMaxQuery::addUserField' => ['SolrDisMaxQuery', 'field'=>'string'], 'SolrDisMaxQuery::collapse' => ['SolrQuery', 'collapseFunction'=>'SolrCollapseFunction'], 'SolrDisMaxQuery::get' => ['mixed', 'param_name'=>'string'], 'SolrDisMaxQuery::getExpand' => ['bool'], 'SolrDisMaxQuery::getExpandFilterQueries' => ['array'], 'SolrDisMaxQuery::getExpandQuery' => ['array'], 'SolrDisMaxQuery::getExpandRows' => ['int'], 'SolrDisMaxQuery::getExpandSortFields' => ['array'], 'SolrDisMaxQuery::getFacet' => ['bool'], 'SolrDisMaxQuery::getFacetDateEnd' => ['string', 'field_override'=>'string'], 'SolrDisMaxQuery::getFacetDateFields' => ['array'], 'SolrDisMaxQuery::getFacetDateGap' => ['string', 'field_override'=>'string'], 'SolrDisMaxQuery::getFacetDateHardEnd' => ['string', 'field_override'=>'string'], 'SolrDisMaxQuery::getFacetDateOther' => ['string', 'field_override'=>'string'], 'SolrDisMaxQuery::getFacetDateStart' => ['string', 'field_override'=>'string'], 'SolrDisMaxQuery::getFacetFields' => ['array'], 'SolrDisMaxQuery::getFacetLimit' => ['int', 'field_override'=>'string'], 'SolrDisMaxQuery::getFacetMethod' => ['string', 'field_override'=>'string'], 'SolrDisMaxQuery::getFacetMinCount' => ['int', 'field_override'=>'string'], 'SolrDisMaxQuery::getFacetMissing' => ['string', 'field_override'=>'string'], 'SolrDisMaxQuery::getFacetOffset' => ['int', 'field_override'=>'string'], 'SolrDisMaxQuery::getFacetPrefix' => ['string', 'field_override'=>'string'], 'SolrDisMaxQuery::getFacetQueries' => ['string'], 'SolrDisMaxQuery::getFacetSort' => ['int', 'field_override'=>'string'], 'SolrDisMaxQuery::getFields' => ['string'], 'SolrDisMaxQuery::getFilterQueries' => ['string'], 'SolrDisMaxQuery::getGroup' => ['bool'], 'SolrDisMaxQuery::getGroupCachePercent' => ['int'], 'SolrDisMaxQuery::getGroupFacet' => ['bool'], 'SolrDisMaxQuery::getGroupFields' => ['array'], 'SolrDisMaxQuery::getGroupFormat' => ['string'], 'SolrDisMaxQuery::getGroupFunctions' => ['array'], 'SolrDisMaxQuery::getGroupLimit' => ['int'], 'SolrDisMaxQuery::getGroupMain' => ['bool'], 'SolrDisMaxQuery::getGroupNGroups' => ['bool'], 'SolrDisMaxQuery::getGroupOffset' => ['bool'], 'SolrDisMaxQuery::getGroupQueries' => ['array'], 'SolrDisMaxQuery::getGroupSortFields' => ['array'], 'SolrDisMaxQuery::getGroupTruncate' => ['bool'], 'SolrDisMaxQuery::getHighlight' => ['bool'], 'SolrDisMaxQuery::getHighlightAlternateField' => ['string', 'field_override'=>'string'], 'SolrDisMaxQuery::getHighlightFields' => ['array'], 'SolrDisMaxQuery::getHighlightFormatter' => ['string', 'field_override'=>'string'], 'SolrDisMaxQuery::getHighlightFragmenter' => ['string', 'field_override'=>'string'], 'SolrDisMaxQuery::getHighlightFragsize' => ['int', 'field_override'=>'string'], 'SolrDisMaxQuery::getHighlightHighlightMultiTerm' => ['bool'], 'SolrDisMaxQuery::getHighlightMaxAlternateFieldLength' => ['int', 'field_override'=>'string'], 'SolrDisMaxQuery::getHighlightMaxAnalyzedChars' => ['int'], 'SolrDisMaxQuery::getHighlightMergeContiguous' => ['bool', 'field_override'=>'string'], 'SolrDisMaxQuery::getHighlightRegexMaxAnalyzedChars' => ['int'], 'SolrDisMaxQuery::getHighlightRegexPattern' => ['string'], 'SolrDisMaxQuery::getHighlightRegexSlop' => ['float'], 'SolrDisMaxQuery::getHighlightRequireFieldMatch' => ['bool'], 'SolrDisMaxQuery::getHighlightSimplePost' => ['string', 'field_override'=>'string'], 'SolrDisMaxQuery::getHighlightSimplePre' => ['string', 'field_override'=>'string'], 'SolrDisMaxQuery::getHighlightSnippets' => ['int', 'field_override'=>'string'], 'SolrDisMaxQuery::getHighlightUsePhraseHighlighter' => ['bool'], 'SolrDisMaxQuery::getMlt' => ['bool'], 'SolrDisMaxQuery::getMltBoost' => ['bool'], 'SolrDisMaxQuery::getMltCount' => ['int'], 'SolrDisMaxQuery::getMltFields' => ['array'], 'SolrDisMaxQuery::getMltMaxNumQueryTerms' => ['int'], 'SolrDisMaxQuery::getMltMaxNumTokens' => ['int'], 'SolrDisMaxQuery::getMltMaxWordLength' => ['int'], 'SolrDisMaxQuery::getMltMinDocFrequency' => ['int'], 'SolrDisMaxQuery::getMltMinTermFrequency' => ['int'], 'SolrDisMaxQuery::getMltMinWordLength' => ['int'], 'SolrDisMaxQuery::getMltQueryFields' => ['array'], 'SolrDisMaxQuery::getParam' => ['mixed', 'param_name'=>'string'], 'SolrDisMaxQuery::getParams' => ['array'], 'SolrDisMaxQuery::getPreparedParams' => ['array'], 'SolrDisMaxQuery::getQuery' => ['string'], 'SolrDisMaxQuery::getRows' => ['int'], 'SolrDisMaxQuery::getSortFields' => ['array'], 'SolrDisMaxQuery::getStart' => ['int'], 'SolrDisMaxQuery::getStats' => ['bool'], 'SolrDisMaxQuery::getStatsFacets' => ['array'], 'SolrDisMaxQuery::getStatsFields' => ['array'], 'SolrDisMaxQuery::getTerms' => ['bool'], 'SolrDisMaxQuery::getTermsField' => ['string'], 'SolrDisMaxQuery::getTermsIncludeLowerBound' => ['bool'], 'SolrDisMaxQuery::getTermsIncludeUpperBound' => ['bool'], 'SolrDisMaxQuery::getTermsLimit' => ['int'], 'SolrDisMaxQuery::getTermsLowerBound' => ['string'], 'SolrDisMaxQuery::getTermsMaxCount' => ['int'], 'SolrDisMaxQuery::getTermsMinCount' => ['int'], 'SolrDisMaxQuery::getTermsPrefix' => ['string'], 'SolrDisMaxQuery::getTermsReturnRaw' => ['bool'], 'SolrDisMaxQuery::getTermsSort' => ['int'], 'SolrDisMaxQuery::getTermsUpperBound' => ['string'], 'SolrDisMaxQuery::getTimeAllowed' => ['int'], 'SolrDisMaxQuery::removeBigramPhraseField' => ['SolrDisMaxQuery', 'field'=>'string'], 'SolrDisMaxQuery::removeBoostQuery' => ['SolrDisMaxQuery', 'field'=>'string'], 'SolrDisMaxQuery::removeExpandFilterQuery' => ['SolrQuery', 'fq'=>'string'], 'SolrDisMaxQuery::removeExpandSortField' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::removeFacetDateField' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::removeFacetDateOther' => ['SolrQuery', 'value'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::removeFacetField' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::removeFacetQuery' => ['SolrQuery', 'value'=>'string'], 'SolrDisMaxQuery::removeField' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::removeFilterQuery' => ['SolrQuery', 'fq'=>'string'], 'SolrDisMaxQuery::removeHighlightField' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::removeMltField' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::removeMltQueryField' => ['SolrQuery', 'queryField'=>'string'], 'SolrDisMaxQuery::removePhraseField' => ['SolrDisMaxQuery', 'field'=>'string'], 'SolrDisMaxQuery::removeQueryField' => ['SolrDisMaxQuery', 'field'=>'string'], 'SolrDisMaxQuery::removeSortField' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::removeStatsFacet' => ['SolrQuery', 'value'=>'string'], 'SolrDisMaxQuery::removeStatsField' => ['SolrQuery', 'field'=>'string'], 'SolrDisMaxQuery::removeTrigramPhraseField' => ['SolrDisMaxQuery', 'field'=>'string'], 'SolrDisMaxQuery::removeUserField' => ['SolrDisMaxQuery', 'field'=>'string'], 'SolrDisMaxQuery::serialize' => ['string'], 'SolrDisMaxQuery::set' => ['SolrParams', 'name'=>'string', 'value'=>''], 'SolrDisMaxQuery::setBigramPhraseFields' => ['SolrDisMaxQuery', 'fields'=>'string'], 'SolrDisMaxQuery::setBigramPhraseSlop' => ['SolrDisMaxQuery', 'slop'=>'string'], 'SolrDisMaxQuery::setBoostFunction' => ['SolrDisMaxQuery', 'function'=>'string'], 'SolrDisMaxQuery::setBoostQuery' => ['SolrDisMaxQuery', 'q'=>'string'], 'SolrDisMaxQuery::setEchoHandler' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setEchoParams' => ['SolrQuery', 'type'=>'string'], 'SolrDisMaxQuery::setExpand' => ['SolrQuery', 'value'=>'bool'], 'SolrDisMaxQuery::setExpandQuery' => ['SolrQuery', 'q'=>'string'], 'SolrDisMaxQuery::setExpandRows' => ['SolrQuery', 'value'=>'int'], 'SolrDisMaxQuery::setExplainOther' => ['SolrQuery', 'query'=>'string'], 'SolrDisMaxQuery::setFacet' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setFacetDateEnd' => ['SolrQuery', 'value'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::setFacetDateGap' => ['SolrQuery', 'value'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::setFacetDateHardEnd' => ['SolrQuery', 'value'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::setFacetDateStart' => ['SolrQuery', 'value'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::setFacetEnumCacheMinDefaultFrequency' => ['SolrQuery', 'frequency'=>'int', 'field_override'=>'string'], 'SolrDisMaxQuery::setFacetLimit' => ['SolrQuery', 'limit'=>'int', 'field_override'=>'string'], 'SolrDisMaxQuery::setFacetMethod' => ['SolrQuery', 'method'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::setFacetMinCount' => ['SolrQuery', 'mincount'=>'int', 'field_override'=>'string'], 'SolrDisMaxQuery::setFacetMissing' => ['SolrQuery', 'flag'=>'bool', 'field_override'=>'string'], 'SolrDisMaxQuery::setFacetOffset' => ['SolrQuery', 'offset'=>'int', 'field_override'=>'string'], 'SolrDisMaxQuery::setFacetPrefix' => ['SolrQuery', 'prefix'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::setFacetSort' => ['SolrQuery', 'facetSort'=>'int', 'field_override'=>'string'], 'SolrDisMaxQuery::setGroup' => ['SolrQuery', 'value'=>'bool'], 'SolrDisMaxQuery::setGroupCachePercent' => ['SolrQuery', 'percent'=>'int'], 'SolrDisMaxQuery::setGroupFacet' => ['SolrQuery', 'value'=>'bool'], 'SolrDisMaxQuery::setGroupFormat' => ['SolrQuery', 'value'=>'string'], 'SolrDisMaxQuery::setGroupLimit' => ['SolrQuery', 'value'=>'int'], 'SolrDisMaxQuery::setGroupMain' => ['SolrQuery', 'value'=>'string'], 'SolrDisMaxQuery::setGroupNGroups' => ['SolrQuery', 'value'=>'bool'], 'SolrDisMaxQuery::setGroupOffset' => ['SolrQuery', 'value'=>'int'], 'SolrDisMaxQuery::setGroupTruncate' => ['SolrQuery', 'value'=>'bool'], 'SolrDisMaxQuery::setHighlight' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setHighlightAlternateField' => ['SolrQuery', 'field'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::setHighlightFormatter' => ['SolrQuery', 'formatter'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::setHighlightFragmenter' => ['SolrQuery', 'fragmenter'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::setHighlightFragsize' => ['SolrQuery', 'size'=>'int', 'field_override'=>'string'], 'SolrDisMaxQuery::setHighlightHighlightMultiTerm' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setHighlightMaxAlternateFieldLength' => ['SolrQuery', 'fieldLength'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::setHighlightMaxAnalyzedChars' => ['SolrQuery', 'value'=>'int'], 'SolrDisMaxQuery::setHighlightMergeContiguous' => ['SolrQuery', 'flag'=>'bool', 'field_override'=>'string'], 'SolrDisMaxQuery::setHighlightRegexMaxAnalyzedChars' => ['SolrQuery', 'maxAnalyzedChars'=>'int'], 'SolrDisMaxQuery::setHighlightRegexPattern' => ['SolrQuery', 'value'=>'string'], 'SolrDisMaxQuery::setHighlightRegexSlop' => ['SolrQuery', 'factor'=>'float'], 'SolrDisMaxQuery::setHighlightRequireFieldMatch' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setHighlightSimplePost' => ['SolrQuery', 'simplePost'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::setHighlightSimplePre' => ['SolrQuery', 'simplePre'=>'string', 'field_override'=>'string'], 'SolrDisMaxQuery::setHighlightSnippets' => ['SolrQuery', 'value'=>'int', 'field_override'=>'string'], 'SolrDisMaxQuery::setHighlightUsePhraseHighlighter' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setMinimumMatch' => ['SolrDisMaxQuery', 'value'=>'string'], 'SolrDisMaxQuery::setMlt' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setMltBoost' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setMltCount' => ['SolrQuery', 'count'=>'int'], 'SolrDisMaxQuery::setMltMaxNumQueryTerms' => ['SolrQuery', 'value'=>'int'], 'SolrDisMaxQuery::setMltMaxNumTokens' => ['SolrQuery', 'value'=>'int'], 'SolrDisMaxQuery::setMltMaxWordLength' => ['SolrQuery', 'maxWordLength'=>'int'], 'SolrDisMaxQuery::setMltMinDocFrequency' => ['SolrQuery', 'minDocFrequency'=>'int'], 'SolrDisMaxQuery::setMltMinTermFrequency' => ['SolrQuery', 'minTermFrequency'=>'int'], 'SolrDisMaxQuery::setMltMinWordLength' => ['SolrQuery', 'minWordLength'=>'int'], 'SolrDisMaxQuery::setOmitHeader' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setParam' => ['SolrParams', 'name'=>'string', 'value'=>''], 'SolrDisMaxQuery::setPhraseFields' => ['SolrDisMaxQuery', 'fields'=>'string'], 'SolrDisMaxQuery::setPhraseSlop' => ['SolrDisMaxQuery', 'slop'=>'string'], 'SolrDisMaxQuery::setQuery' => ['SolrQuery', 'query'=>'string'], 'SolrDisMaxQuery::setQueryAlt' => ['SolrDisMaxQuery', 'q'=>'string'], 'SolrDisMaxQuery::setQueryPhraseSlop' => ['SolrDisMaxQuery', 'slop'=>'string'], 'SolrDisMaxQuery::setRows' => ['SolrQuery', 'rows'=>'int'], 'SolrDisMaxQuery::setShowDebugInfo' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setStart' => ['SolrQuery', 'start'=>'int'], 'SolrDisMaxQuery::setStats' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setTerms' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setTermsField' => ['SolrQuery', 'fieldname'=>'string'], 'SolrDisMaxQuery::setTermsIncludeLowerBound' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setTermsIncludeUpperBound' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setTermsLimit' => ['SolrQuery', 'limit'=>'int'], 'SolrDisMaxQuery::setTermsLowerBound' => ['SolrQuery', 'lowerBound'=>'string'], 'SolrDisMaxQuery::setTermsMaxCount' => ['SolrQuery', 'frequency'=>'int'], 'SolrDisMaxQuery::setTermsMinCount' => ['SolrQuery', 'frequency'=>'int'], 'SolrDisMaxQuery::setTermsPrefix' => ['SolrQuery', 'prefix'=>'string'], 'SolrDisMaxQuery::setTermsReturnRaw' => ['SolrQuery', 'flag'=>'bool'], 'SolrDisMaxQuery::setTermsSort' => ['SolrQuery', 'sortType'=>'int'], 'SolrDisMaxQuery::setTermsUpperBound' => ['SolrQuery', 'upperBound'=>'string'], 'SolrDisMaxQuery::setTieBreaker' => ['SolrDisMaxQuery', 'tieBreaker'=>'string'], 'SolrDisMaxQuery::setTimeAllowed' => ['SolrQuery', 'timeAllowed'=>'int'], 'SolrDisMaxQuery::setTrigramPhraseFields' => ['SolrDisMaxQuery', 'fields'=>'string'], 'SolrDisMaxQuery::setTrigramPhraseSlop' => ['SolrDisMaxQuery', 'slop'=>'string'], 'SolrDisMaxQuery::setUserFields' => ['SolrDisMaxQuery', 'fields'=>'string'], 'SolrDisMaxQuery::toString' => ['string', 'url_encode='=>'bool|false'], 'SolrDisMaxQuery::unserialize' => ['void', 'serialized'=>'string'], 'SolrDisMaxQuery::useDisMaxQueryParser' => ['SolrDisMaxQuery'], 'SolrDisMaxQuery::useEDisMaxQueryParser' => ['SolrDisMaxQuery'], 'SolrDocument::__clone' => ['void'], 'SolrDocument::__construct' => ['void'], 'SolrDocument::__destruct' => [''], 'SolrDocument::__get' => ['SolrDocumentField', 'fieldname'=>'string'], 'SolrDocument::__isset' => ['bool', 'fieldname'=>'string'], 'SolrDocument::__set' => ['bool', 'fieldname'=>'string', 'fieldvalue'=>'string'], 'SolrDocument::__unset' => ['bool', 'fieldname'=>'string'], 'SolrDocument::addField' => ['bool', 'fieldname'=>'string', 'fieldvalue'=>'string'], 'SolrDocument::clear' => ['bool'], 'SolrDocument::current' => ['SolrDocumentField'], 'SolrDocument::deleteField' => ['bool', 'fieldname'=>'string'], 'SolrDocument::fieldExists' => ['bool', 'fieldname'=>'string'], 'SolrDocument::getChildDocuments' => ['array'], 'SolrDocument::getChildDocumentsCount' => ['int'], 'SolrDocument::getField' => ['SolrDocumentField', 'fieldname'=>'string'], 'SolrDocument::getFieldCount' => ['int'], 'SolrDocument::getFieldNames' => ['array'], 'SolrDocument::getInputDocument' => ['SolrInputDocument'], 'SolrDocument::hasChildDocuments' => ['bool'], 'SolrDocument::key' => ['string'], 'SolrDocument::merge' => ['bool', 'sourcedoc'=>'solrdocument', 'overwrite='=>'bool'], 'SolrDocument::next' => ['void'], 'SolrDocument::offsetExists' => ['bool', 'fieldname'=>'string'], 'SolrDocument::offsetGet' => ['SolrDocumentField', 'fieldname'=>'string'], 'SolrDocument::offsetSet' => ['void', 'fieldname'=>'string', 'fieldvalue'=>'string'], 'SolrDocument::offsetUnset' => ['void', 'fieldname'=>'string'], 'SolrDocument::reset' => ['bool'], 'SolrDocument::rewind' => ['void'], 'SolrDocument::serialize' => ['string'], 'SolrDocument::sort' => ['bool', 'sortorderby'=>'int', 'sortdirection='=>'int'], 'SolrDocument::toArray' => ['array'], 'SolrDocument::unserialize' => ['void', 'serialized'=>'string'], 'SolrDocument::valid' => ['bool'], 'SolrDocumentField::__construct' => ['void'], 'SolrDocumentField::__destruct' => [''], 'SolrException::__clone' => ['void'], 'SolrException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Exception)|(?Throwable)'], 'SolrException::__toString' => ['string'], 'SolrException::__wakeup' => ['void'], 'SolrException::getCode' => ['int'], 'SolrException::getFile' => ['string'], 'SolrException::getInternalInfo' => ['array'], 'SolrException::getLine' => ['int'], 'SolrException::getMessage' => ['string'], 'SolrException::getPrevious' => ['Exception|Throwable'], 'SolrException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'SolrException::getTraceAsString' => ['string'], 'SolrGenericResponse::__construct' => ['void'], 'SolrGenericResponse::__destruct' => [''], 'SolrGenericResponse::getDigestedResponse' => ['string'], 'SolrGenericResponse::getHttpStatus' => ['int'], 'SolrGenericResponse::getHttpStatusMessage' => ['string'], 'SolrGenericResponse::getRawRequest' => ['string'], 'SolrGenericResponse::getRawRequestHeaders' => ['string'], 'SolrGenericResponse::getRawResponse' => ['string'], 'SolrGenericResponse::getRawResponseHeaders' => ['string'], 'SolrGenericResponse::getRequestUrl' => ['string'], 'SolrGenericResponse::getResponse' => ['SolrObject'], 'SolrGenericResponse::setParseMode' => ['bool', 'parser_mode='=>'int'], 'SolrGenericResponse::success' => ['bool'], 'SolrIllegalArgumentException::__clone' => ['void'], 'SolrIllegalArgumentException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Exception)|(?Throwable)'], 'SolrIllegalArgumentException::__toString' => ['string'], 'SolrIllegalArgumentException::__wakeup' => ['void'], 'SolrIllegalArgumentException::getCode' => ['int'], 'SolrIllegalArgumentException::getFile' => ['string'], 'SolrIllegalArgumentException::getInternalInfo' => ['array'], 'SolrIllegalArgumentException::getLine' => ['int'], 'SolrIllegalArgumentException::getMessage' => ['string'], 'SolrIllegalArgumentException::getPrevious' => ['Exception|Throwable'], 'SolrIllegalArgumentException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'SolrIllegalArgumentException::getTraceAsString' => ['string'], 'SolrIllegalOperationException::__clone' => ['void'], 'SolrIllegalOperationException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Exception)|(?Throwable)'], 'SolrIllegalOperationException::__toString' => ['string'], 'SolrIllegalOperationException::__wakeup' => ['void'], 'SolrIllegalOperationException::getCode' => ['int'], 'SolrIllegalOperationException::getFile' => ['string'], 'SolrIllegalOperationException::getInternalInfo' => ['array'], 'SolrIllegalOperationException::getLine' => ['int'], 'SolrIllegalOperationException::getMessage' => ['string'], 'SolrIllegalOperationException::getPrevious' => ['Exception|Throwable'], 'SolrIllegalOperationException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'SolrIllegalOperationException::getTraceAsString' => ['string'], 'SolrInputDocument::__clone' => ['void'], 'SolrInputDocument::__construct' => ['void'], 'SolrInputDocument::__destruct' => [''], 'SolrInputDocument::addChildDocument' => ['void', 'child'=>'SolrInputDocument'], 'SolrInputDocument::addChildDocuments' => ['void', 'docs'=>'array'], 'SolrInputDocument::addField' => ['bool', 'fieldname'=>'string', 'fieldvalue'=>'string', 'fieldboostvalue='=>'float'], 'SolrInputDocument::clear' => ['bool'], 'SolrInputDocument::deleteField' => ['bool', 'fieldname'=>'string'], 'SolrInputDocument::fieldExists' => ['bool', 'fieldname'=>'string'], 'SolrInputDocument::getBoost' => ['float'], 'SolrInputDocument::getChildDocuments' => ['array'], 'SolrInputDocument::getChildDocumentsCount' => ['int'], 'SolrInputDocument::getField' => ['SolrDocumentField', 'fieldname'=>'string'], 'SolrInputDocument::getFieldBoost' => ['float', 'fieldname'=>'string'], 'SolrInputDocument::getFieldCount' => ['int'], 'SolrInputDocument::getFieldNames' => ['array'], 'SolrInputDocument::hasChildDocuments' => ['bool'], 'SolrInputDocument::merge' => ['bool', 'sourcedoc'=>'solrinputdocument', 'overwrite='=>'bool'], 'SolrInputDocument::reset' => ['bool'], 'SolrInputDocument::setBoost' => ['bool', 'documentboostvalue'=>'float'], 'SolrInputDocument::setFieldBoost' => ['bool', 'fieldname'=>'string', 'fieldboostvalue'=>'float'], 'SolrInputDocument::sort' => ['bool', 'sortorderby'=>'int', 'sortdirection='=>'int'], 'SolrInputDocument::toArray' => ['array'], 'SolrModifiableParams::__construct' => ['void'], 'SolrModifiableParams::__destruct' => [''], 'SolrModifiableParams::add' => ['SolrParams', 'name'=>'string', 'value'=>'string'], 'SolrModifiableParams::addParam' => ['SolrParams', 'name'=>'string', 'value'=>'string'], 'SolrModifiableParams::get' => ['mixed', 'param_name'=>'string'], 'SolrModifiableParams::getParam' => ['mixed', 'param_name'=>'string'], 'SolrModifiableParams::getParams' => ['array'], 'SolrModifiableParams::getPreparedParams' => ['array'], 'SolrModifiableParams::serialize' => ['string'], 'SolrModifiableParams::set' => ['SolrParams', 'name'=>'string', 'value'=>''], 'SolrModifiableParams::setParam' => ['SolrParams', 'name'=>'string', 'value'=>''], 'SolrModifiableParams::toString' => ['string', 'url_encode='=>'bool|false'], 'SolrModifiableParams::unserialize' => ['void', 'serialized'=>'string'], 'SolrObject::__construct' => ['void'], 'SolrObject::__destruct' => [''], 'SolrObject::getPropertyNames' => ['array'], 'SolrObject::offsetExists' => ['bool', 'property_name'=>'string'], 'SolrObject::offsetGet' => ['mixed', 'property_name'=>'string'], 'SolrObject::offsetSet' => ['void', 'property_name'=>'string', 'property_value'=>'string'], 'SolrObject::offsetUnset' => ['void', 'property_name'=>'string'], 'SolrParams::__construct' => ['void'], 'SolrParams::add' => ['SolrParams', 'name'=>'string', 'value'=>'string'], 'SolrParams::addParam' => ['SolrParams', 'name'=>'string', 'value'=>'string'], 'SolrParams::get' => ['mixed', 'param_name'=>'string'], 'SolrParams::getParam' => ['mixed', 'param_name='=>'string'], 'SolrParams::getParams' => ['array'], 'SolrParams::getPreparedParams' => ['array'], 'SolrParams::serialize' => ['string'], 'SolrParams::set' => ['void', 'name'=>'string', 'value'=>'string'], 'SolrParams::setParam' => ['SolrParams', 'name'=>'string', 'value'=>'string'], 'SolrParams::toString' => ['string', 'url_encode='=>'bool'], 'SolrParams::unserialize' => ['void', 'serialized'=>'string'], 'SolrPingResponse::__construct' => ['void'], 'SolrPingResponse::__destruct' => [''], 'SolrPingResponse::getDigestedResponse' => ['string'], 'SolrPingResponse::getHttpStatus' => ['int'], 'SolrPingResponse::getHttpStatusMessage' => ['string'], 'SolrPingResponse::getRawRequest' => ['string'], 'SolrPingResponse::getRawRequestHeaders' => ['string'], 'SolrPingResponse::getRawResponse' => ['string'], 'SolrPingResponse::getRawResponseHeaders' => ['string'], 'SolrPingResponse::getRequestUrl' => ['string'], 'SolrPingResponse::getResponse' => ['string'], 'SolrPingResponse::setParseMode' => ['bool', 'parser_mode='=>'int'], 'SolrPingResponse::success' => ['bool'], 'SolrQuery::__construct' => ['void', 'q='=>'string'], 'SolrQuery::__destruct' => [''], 'SolrQuery::add' => ['SolrParams', 'name'=>'string', 'value'=>'string'], 'SolrQuery::addExpandFilterQuery' => ['SolrQuery', 'fq'=>'string'], 'SolrQuery::addExpandSortField' => ['SolrQuery', 'field'=>'string', 'order='=>'string'], 'SolrQuery::addFacetDateField' => ['SolrQuery', 'datefield'=>'string'], 'SolrQuery::addFacetDateOther' => ['SolrQuery', 'value'=>'string', 'field_override='=>'string'], 'SolrQuery::addFacetField' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::addFacetQuery' => ['SolrQuery', 'facetquery'=>'string'], 'SolrQuery::addField' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::addFilterQuery' => ['SolrQuery', 'fq'=>'string'], 'SolrQuery::addGroupField' => ['SolrQuery', 'value'=>'string'], 'SolrQuery::addGroupFunction' => ['SolrQuery', 'value'=>'string'], 'SolrQuery::addGroupQuery' => ['SolrQuery', 'value'=>'string'], 'SolrQuery::addGroupSortField' => ['SolrQuery', 'field'=>'string', 'order='=>'int'], 'SolrQuery::addHighlightField' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::addMltField' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::addMltQueryField' => ['SolrQuery', 'field'=>'string', 'boost'=>'float'], 'SolrQuery::addParam' => ['SolrParams', 'name'=>'string', 'value'=>'string'], 'SolrQuery::addSortField' => ['SolrQuery', 'field'=>'string', 'order='=>'int'], 'SolrQuery::addStatsFacet' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::addStatsField' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::collapse' => ['SolrQuery', 'collapseFunction'=>'SolrCollapseFunction'], 'SolrQuery::get' => ['mixed', 'param_name'=>'string'], 'SolrQuery::getExpand' => ['bool'], 'SolrQuery::getExpandFilterQueries' => ['array'], 'SolrQuery::getExpandQuery' => ['array'], 'SolrQuery::getExpandRows' => ['int'], 'SolrQuery::getExpandSortFields' => ['array'], 'SolrQuery::getFacet' => ['bool'], 'SolrQuery::getFacetDateEnd' => ['string', 'field_override='=>'string'], 'SolrQuery::getFacetDateFields' => ['array'], 'SolrQuery::getFacetDateGap' => ['string', 'field_override='=>'string'], 'SolrQuery::getFacetDateHardEnd' => ['string', 'field_override='=>'string'], 'SolrQuery::getFacetDateOther' => ['?string', 'field_override='=>'string'], 'SolrQuery::getFacetDateStart' => ['string', 'field_override='=>'string'], 'SolrQuery::getFacetFields' => ['array'], 'SolrQuery::getFacetLimit' => ['int', 'field_override='=>'string'], 'SolrQuery::getFacetMethod' => ['string', 'field_override='=>'string'], 'SolrQuery::getFacetMinCount' => ['int', 'field_override='=>'string'], 'SolrQuery::getFacetMissing' => ['bool', 'field_override='=>'string'], 'SolrQuery::getFacetOffset' => ['int', 'field_override='=>'string'], 'SolrQuery::getFacetPrefix' => ['string', 'field_override='=>'string'], 'SolrQuery::getFacetQueries' => ['array'], 'SolrQuery::getFacetSort' => ['int', 'field_override='=>'string'], 'SolrQuery::getFields' => ['array'], 'SolrQuery::getFilterQueries' => ['array'], 'SolrQuery::getGroup' => ['bool'], 'SolrQuery::getGroupCachePercent' => ['int'], 'SolrQuery::getGroupFacet' => ['bool'], 'SolrQuery::getGroupFields' => ['array'], 'SolrQuery::getGroupFormat' => ['string'], 'SolrQuery::getGroupFunctions' => ['array'], 'SolrQuery::getGroupLimit' => ['int'], 'SolrQuery::getGroupMain' => ['bool'], 'SolrQuery::getGroupNGroups' => ['bool'], 'SolrQuery::getGroupOffset' => ['int'], 'SolrQuery::getGroupQueries' => ['array'], 'SolrQuery::getGroupSortFields' => ['array'], 'SolrQuery::getGroupTruncate' => ['bool'], 'SolrQuery::getHighlight' => ['bool'], 'SolrQuery::getHighlightAlternateField' => ['string', 'field_override='=>'string'], 'SolrQuery::getHighlightFields' => ['array'], 'SolrQuery::getHighlightFormatter' => ['string', 'field_override='=>'string'], 'SolrQuery::getHighlightFragmenter' => ['string', 'field_override='=>'string'], 'SolrQuery::getHighlightFragsize' => ['int', 'field_override='=>'string'], 'SolrQuery::getHighlightHighlightMultiTerm' => ['bool'], 'SolrQuery::getHighlightMaxAlternateFieldLength' => ['int', 'field_override='=>'string'], 'SolrQuery::getHighlightMaxAnalyzedChars' => ['int'], 'SolrQuery::getHighlightMergeContiguous' => ['bool', 'field_override='=>'string'], 'SolrQuery::getHighlightRegexMaxAnalyzedChars' => ['int'], 'SolrQuery::getHighlightRegexPattern' => ['string'], 'SolrQuery::getHighlightRegexSlop' => ['float'], 'SolrQuery::getHighlightRequireFieldMatch' => ['bool'], 'SolrQuery::getHighlightSimplePost' => ['string', 'field_override='=>'string'], 'SolrQuery::getHighlightSimplePre' => ['string', 'field_override='=>'string'], 'SolrQuery::getHighlightSnippets' => ['int', 'field_override='=>'string'], 'SolrQuery::getHighlightUsePhraseHighlighter' => ['bool'], 'SolrQuery::getMlt' => ['bool'], 'SolrQuery::getMltBoost' => ['bool'], 'SolrQuery::getMltCount' => ['int'], 'SolrQuery::getMltFields' => ['array'], 'SolrQuery::getMltMaxNumQueryTerms' => ['int'], 'SolrQuery::getMltMaxNumTokens' => ['int'], 'SolrQuery::getMltMaxWordLength' => ['int'], 'SolrQuery::getMltMinDocFrequency' => ['int'], 'SolrQuery::getMltMinTermFrequency' => ['int'], 'SolrQuery::getMltMinWordLength' => ['int'], 'SolrQuery::getMltQueryFields' => ['array'], 'SolrQuery::getParam' => ['mixed', 'param_name'=>'string'], 'SolrQuery::getParams' => ['array'], 'SolrQuery::getPreparedParams' => ['array'], 'SolrQuery::getQuery' => ['string'], 'SolrQuery::getRows' => ['int'], 'SolrQuery::getSortFields' => ['array'], 'SolrQuery::getStart' => ['int'], 'SolrQuery::getStats' => ['bool'], 'SolrQuery::getStatsFacets' => ['array'], 'SolrQuery::getStatsFields' => ['array'], 'SolrQuery::getTerms' => ['bool'], 'SolrQuery::getTermsField' => ['string'], 'SolrQuery::getTermsIncludeLowerBound' => ['bool'], 'SolrQuery::getTermsIncludeUpperBound' => ['bool'], 'SolrQuery::getTermsLimit' => ['int'], 'SolrQuery::getTermsLowerBound' => ['string'], 'SolrQuery::getTermsMaxCount' => ['int'], 'SolrQuery::getTermsMinCount' => ['int'], 'SolrQuery::getTermsPrefix' => ['string'], 'SolrQuery::getTermsReturnRaw' => ['bool'], 'SolrQuery::getTermsSort' => ['int'], 'SolrQuery::getTermsUpperBound' => ['string'], 'SolrQuery::getTimeAllowed' => ['int'], 'SolrQuery::removeExpandFilterQuery' => ['SolrQuery', 'fq'=>'string'], 'SolrQuery::removeExpandSortField' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::removeFacetDateField' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::removeFacetDateOther' => ['SolrQuery', 'value'=>'string', 'field_override='=>'string'], 'SolrQuery::removeFacetField' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::removeFacetQuery' => ['SolrQuery', 'value'=>'string'], 'SolrQuery::removeField' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::removeFilterQuery' => ['SolrQuery', 'fq'=>'string'], 'SolrQuery::removeHighlightField' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::removeMltField' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::removeMltQueryField' => ['SolrQuery', 'queryfield'=>'string'], 'SolrQuery::removeSortField' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::removeStatsFacet' => ['SolrQuery', 'value'=>'string'], 'SolrQuery::removeStatsField' => ['SolrQuery', 'field'=>'string'], 'SolrQuery::serialize' => ['string'], 'SolrQuery::set' => ['SolrParams', 'name'=>'string', 'value'=>''], 'SolrQuery::setEchoHandler' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setEchoParams' => ['SolrQuery', 'type'=>'string'], 'SolrQuery::setExpand' => ['SolrQuery', 'value'=>'bool'], 'SolrQuery::setExpandQuery' => ['SolrQuery', 'q'=>'string'], 'SolrQuery::setExpandRows' => ['SolrQuery', 'value'=>'int'], 'SolrQuery::setExplainOther' => ['SolrQuery', 'query'=>'string'], 'SolrQuery::setFacet' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setFacetDateEnd' => ['SolrQuery', 'value'=>'string', 'field_override='=>'string'], 'SolrQuery::setFacetDateGap' => ['SolrQuery', 'value'=>'string', 'field_override='=>'string'], 'SolrQuery::setFacetDateHardEnd' => ['SolrQuery', 'value'=>'bool', 'field_override='=>'string'], 'SolrQuery::setFacetDateStart' => ['SolrQuery', 'value'=>'string', 'field_override='=>'string'], 'SolrQuery::setFacetEnumCacheMinDefaultFrequency' => ['SolrQuery', 'frequency'=>'int', 'field_override='=>'string'], 'SolrQuery::setFacetLimit' => ['SolrQuery', 'limit'=>'int', 'field_override='=>'string'], 'SolrQuery::setFacetMethod' => ['SolrQuery', 'method'=>'string', 'field_override='=>'string'], 'SolrQuery::setFacetMinCount' => ['SolrQuery', 'mincount'=>'int', 'field_override='=>'string'], 'SolrQuery::setFacetMissing' => ['SolrQuery', 'flag'=>'bool', 'field_override='=>'string'], 'SolrQuery::setFacetOffset' => ['SolrQuery', 'offset'=>'int', 'field_override='=>'string'], 'SolrQuery::setFacetPrefix' => ['SolrQuery', 'prefix'=>'string', 'field_override='=>'string'], 'SolrQuery::setFacetSort' => ['SolrQuery', 'facetsort'=>'int', 'field_override='=>'string'], 'SolrQuery::setGroup' => ['SolrQuery', 'value'=>'bool'], 'SolrQuery::setGroupCachePercent' => ['SolrQuery', 'percent'=>'int'], 'SolrQuery::setGroupFacet' => ['SolrQuery', 'value'=>'bool'], 'SolrQuery::setGroupFormat' => ['SolrQuery', 'value'=>'string'], 'SolrQuery::setGroupLimit' => ['SolrQuery', 'value'=>'int'], 'SolrQuery::setGroupMain' => ['SolrQuery', 'value'=>'string'], 'SolrQuery::setGroupNGroups' => ['SolrQuery', 'value'=>'bool'], 'SolrQuery::setGroupOffset' => ['SolrQuery', 'value'=>'int'], 'SolrQuery::setGroupTruncate' => ['SolrQuery', 'value'=>'bool'], 'SolrQuery::setHighlight' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setHighlightAlternateField' => ['SolrQuery', 'field'=>'string', 'field_override='=>'string'], 'SolrQuery::setHighlightFormatter' => ['SolrQuery', 'formatter'=>'string', 'field_override='=>'string'], 'SolrQuery::setHighlightFragmenter' => ['SolrQuery', 'fragmenter'=>'string', 'field_override='=>'string'], 'SolrQuery::setHighlightFragsize' => ['SolrQuery', 'size'=>'int', 'field_override='=>'string'], 'SolrQuery::setHighlightHighlightMultiTerm' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setHighlightMaxAlternateFieldLength' => ['SolrQuery', 'fieldlength'=>'int', 'field_override='=>'string'], 'SolrQuery::setHighlightMaxAnalyzedChars' => ['SolrQuery', 'value'=>'int'], 'SolrQuery::setHighlightMergeContiguous' => ['SolrQuery', 'flag'=>'bool', 'field_override='=>'string'], 'SolrQuery::setHighlightRegexMaxAnalyzedChars' => ['SolrQuery', 'maxanalyzedchars'=>'int'], 'SolrQuery::setHighlightRegexPattern' => ['SolrQuery', 'value'=>'string'], 'SolrQuery::setHighlightRegexSlop' => ['SolrQuery', 'factor'=>'float'], 'SolrQuery::setHighlightRequireFieldMatch' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setHighlightSimplePost' => ['SolrQuery', 'simplepost'=>'string', 'field_override='=>'string'], 'SolrQuery::setHighlightSimplePre' => ['SolrQuery', 'simplepre'=>'string', 'field_override='=>'string'], 'SolrQuery::setHighlightSnippets' => ['SolrQuery', 'value'=>'int', 'field_override='=>'string'], 'SolrQuery::setHighlightUsePhraseHighlighter' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setMlt' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setMltBoost' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setMltCount' => ['SolrQuery', 'count'=>'int'], 'SolrQuery::setMltMaxNumQueryTerms' => ['SolrQuery', 'value'=>'int'], 'SolrQuery::setMltMaxNumTokens' => ['SolrQuery', 'value'=>'int'], 'SolrQuery::setMltMaxWordLength' => ['SolrQuery', 'maxwordlength'=>'int'], 'SolrQuery::setMltMinDocFrequency' => ['SolrQuery', 'mindocfrequency'=>'int'], 'SolrQuery::setMltMinTermFrequency' => ['SolrQuery', 'mintermfrequency'=>'int'], 'SolrQuery::setMltMinWordLength' => ['SolrQuery', 'minwordlength'=>'int'], 'SolrQuery::setOmitHeader' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setParam' => ['SolrParams', 'name'=>'string', 'value'=>''], 'SolrQuery::setQuery' => ['SolrQuery', 'query'=>'string'], 'SolrQuery::setRows' => ['SolrQuery', 'rows'=>'int'], 'SolrQuery::setShowDebugInfo' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setStart' => ['SolrQuery', 'start'=>'int'], 'SolrQuery::setStats' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setTerms' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setTermsField' => ['SolrQuery', 'fieldname'=>'string'], 'SolrQuery::setTermsIncludeLowerBound' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setTermsIncludeUpperBound' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setTermsLimit' => ['SolrQuery', 'limit'=>'int'], 'SolrQuery::setTermsLowerBound' => ['SolrQuery', 'lowerbound'=>'string'], 'SolrQuery::setTermsMaxCount' => ['SolrQuery', 'frequency'=>'int'], 'SolrQuery::setTermsMinCount' => ['SolrQuery', 'frequency'=>'int'], 'SolrQuery::setTermsPrefix' => ['SolrQuery', 'prefix'=>'string'], 'SolrQuery::setTermsReturnRaw' => ['SolrQuery', 'flag'=>'bool'], 'SolrQuery::setTermsSort' => ['SolrQuery', 'sorttype'=>'int'], 'SolrQuery::setTermsUpperBound' => ['SolrQuery', 'upperbound'=>'string'], 'SolrQuery::setTimeAllowed' => ['SolrQuery', 'timeallowed'=>'int'], 'SolrQuery::toString' => ['string', 'url_encode='=>'bool|false'], 'SolrQuery::unserialize' => ['void', 'serialized'=>'string'], 'SolrQueryResponse::__construct' => ['void'], 'SolrQueryResponse::__destruct' => [''], 'SolrQueryResponse::getDigestedResponse' => ['string'], 'SolrQueryResponse::getHttpStatus' => ['int'], 'SolrQueryResponse::getHttpStatusMessage' => ['string'], 'SolrQueryResponse::getRawRequest' => ['string'], 'SolrQueryResponse::getRawRequestHeaders' => ['string'], 'SolrQueryResponse::getRawResponse' => ['string'], 'SolrQueryResponse::getRawResponseHeaders' => ['string'], 'SolrQueryResponse::getRequestUrl' => ['string'], 'SolrQueryResponse::getResponse' => ['SolrObject'], 'SolrQueryResponse::setParseMode' => ['bool', 'parser_mode='=>'int'], 'SolrQueryResponse::success' => ['bool'], 'SolrResponse::getDigestedResponse' => ['string'], 'SolrResponse::getHttpStatus' => ['int'], 'SolrResponse::getHttpStatusMessage' => ['string'], 'SolrResponse::getRawRequest' => ['string'], 'SolrResponse::getRawRequestHeaders' => ['string'], 'SolrResponse::getRawResponse' => ['string'], 'SolrResponse::getRawResponseHeaders' => ['string'], 'SolrResponse::getRequestUrl' => ['string'], 'SolrResponse::getResponse' => ['SolrObject'], 'SolrResponse::setParseMode' => ['bool', 'parser_mode='=>'int'], 'SolrResponse::success' => ['bool'], 'SolrServerException::__clone' => ['void'], 'SolrServerException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Exception)|(?Throwable)'], 'SolrServerException::__toString' => ['string'], 'SolrServerException::__wakeup' => ['void'], 'SolrServerException::getCode' => ['int'], 'SolrServerException::getFile' => ['string'], 'SolrServerException::getInternalInfo' => ['array'], 'SolrServerException::getLine' => ['int'], 'SolrServerException::getMessage' => ['string'], 'SolrServerException::getPrevious' => ['Exception|Throwable'], 'SolrServerException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'SolrServerException::getTraceAsString' => ['string'], 'SolrUpdateResponse::__construct' => ['void'], 'SolrUpdateResponse::__destruct' => [''], 'SolrUpdateResponse::getDigestedResponse' => ['string'], 'SolrUpdateResponse::getHttpStatus' => ['int'], 'SolrUpdateResponse::getHttpStatusMessage' => ['string'], 'SolrUpdateResponse::getRawRequest' => ['string'], 'SolrUpdateResponse::getRawRequestHeaders' => ['string'], 'SolrUpdateResponse::getRawResponse' => ['string'], 'SolrUpdateResponse::getRawResponseHeaders' => ['string'], 'SolrUpdateResponse::getRequestUrl' => ['string'], 'SolrUpdateResponse::getResponse' => ['SolrObject'], 'SolrUpdateResponse::setParseMode' => ['bool', 'parser_mode='=>'int'], 'SolrUpdateResponse::success' => ['bool'], 'SolrUtils::digestXmlResponse' => ['SolrObject', 'xmlresponse'=>'string', 'parse_mode='=>'int'], 'SolrUtils::escapeQueryChars' => ['string|false', 'str'=>'string'], 'SolrUtils::getSolrVersion' => ['string'], 'SolrUtils::queryPhrase' => ['string', 'str'=>'string'], 'sort' => ['bool', '&rw_array_arg'=>'array', 'sort_flags='=>'int'], 'soundex' => ['string', 'str'=>'string'], 'SphinxClient::__construct' => ['void'], 'SphinxClient::addQuery' => ['int', 'query'=>'string', 'index='=>'string', 'comment='=>'string'], 'SphinxClient::buildExcerpts' => ['array', 'docs'=>'array', 'index'=>'string', 'words'=>'string', 'opts='=>'array'], 'SphinxClient::buildKeywords' => ['array', 'query'=>'string', 'index'=>'string', 'hits'=>'bool'], 'SphinxClient::close' => ['bool'], 'SphinxClient::escapeString' => ['string', 'string'=>'string'], 'SphinxClient::getLastError' => ['string'], 'SphinxClient::getLastWarning' => ['string'], 'SphinxClient::open' => ['bool'], 'SphinxClient::query' => ['array', 'query'=>'string', 'index='=>'string', 'comment='=>'string'], 'SphinxClient::resetFilters' => ['void'], 'SphinxClient::resetGroupBy' => ['void'], 'SphinxClient::runQueries' => ['array'], 'SphinxClient::setArrayResult' => ['bool', 'array_result'=>'bool'], 'SphinxClient::setConnectTimeout' => ['bool', 'timeout'=>'float'], 'SphinxClient::setFieldWeights' => ['bool', 'weights'=>'array'], 'SphinxClient::setFilter' => ['bool', 'attribute'=>'string', 'values'=>'array', 'exclude='=>'bool'], 'SphinxClient::setFilterFloatRange' => ['bool', 'attribute'=>'string', 'min'=>'float', 'max'=>'float', 'exclude='=>'bool'], 'SphinxClient::setFilterRange' => ['bool', 'attribute'=>'string', 'min'=>'int', 'max'=>'int', 'exclude='=>'bool'], 'SphinxClient::setGeoAnchor' => ['bool', 'attrlat'=>'string', 'attrlong'=>'string', 'latitude'=>'float', 'longitude'=>'float'], 'SphinxClient::setGroupBy' => ['bool', 'attribute'=>'string', 'func'=>'int', 'groupsort='=>'string'], 'SphinxClient::setGroupDistinct' => ['bool', 'attribute'=>'string'], 'SphinxClient::setIDRange' => ['bool', 'min'=>'int', 'max'=>'int'], 'SphinxClient::setIndexWeights' => ['bool', 'weights'=>'array'], 'SphinxClient::setLimits' => ['bool', 'offset'=>'int', 'limit'=>'int', 'max_matches='=>'int', 'cutoff='=>'int'], 'SphinxClient::setMatchMode' => ['bool', 'mode'=>'int'], 'SphinxClient::setMaxQueryTime' => ['bool', 'qtime'=>'int'], 'SphinxClient::setOverride' => ['bool', 'attribute'=>'string', 'type'=>'int', 'values'=>'array'], 'SphinxClient::setRankingMode' => ['bool', 'ranker'=>'int'], 'SphinxClient::setRetries' => ['bool', 'count'=>'int', 'delay='=>'int'], 'SphinxClient::setSelect' => ['bool', 'clause'=>'string'], 'SphinxClient::setServer' => ['bool', 'server'=>'string', 'port'=>'int'], 'SphinxClient::setSortMode' => ['bool', 'mode'=>'int', 'sortby='=>'string'], 'SphinxClient::status' => ['array'], 'SphinxClient::updateAttributes' => ['int', 'index'=>'string', 'attributes'=>'array', 'values'=>'array', 'mva='=>'bool'], 'spl_autoload' => ['void', 'class_name'=>'string', 'file_extensions='=>'string'], 'spl_autoload_call' => ['void', 'class_name'=>'string'], 'spl_autoload_extensions' => ['string', 'file_extensions='=>'string'], 'spl_autoload_functions' => ['false|list'], 'spl_autoload_register' => ['bool', 'autoload_function='=>'callable(string):void', 'throw='=>'bool', 'prepend='=>'bool'], 'spl_autoload_unregister' => ['bool', 'autoload_function'=>'mixed'], 'spl_classes' => ['array'], 'spl_object_hash' => ['string', 'obj'=>'object'], 'spl_object_id' => ['int', 'obj'=>'object'], 'SplDoublyLinkedList::add' => ['void', 'index'=>'mixed', 'newval'=>'mixed'], 'SplDoublyLinkedList::bottom' => ['mixed'], 'SplDoublyLinkedList::count' => ['0|positive-int'], 'SplDoublyLinkedList::current' => ['mixed'], 'SplDoublyLinkedList::getIteratorMode' => ['int'], 'SplDoublyLinkedList::isEmpty' => ['bool'], 'SplDoublyLinkedList::key' => ['mixed'], 'SplDoublyLinkedList::next' => ['void'], 'SplDoublyLinkedList::offsetExists' => ['bool', 'index'=>'mixed'], 'SplDoublyLinkedList::offsetGet' => ['mixed', 'index'=>'mixed'], 'SplDoublyLinkedList::offsetSet' => ['void', 'index'=>'mixed', 'newval'=>'mixed'], 'SplDoublyLinkedList::offsetUnset' => ['void', 'index'=>'mixed'], 'SplDoublyLinkedList::pop' => ['mixed'], 'SplDoublyLinkedList::prev' => ['void'], 'SplDoublyLinkedList::push' => ['void', 'value'=>'mixed'], 'SplDoublyLinkedList::rewind' => ['void'], 'SplDoublyLinkedList::serialize' => ['string'], 'SplDoublyLinkedList::setIteratorMode' => ['int', 'flags'=>'int'], 'SplDoublyLinkedList::shift' => ['mixed'], 'SplDoublyLinkedList::top' => ['mixed'], 'SplDoublyLinkedList::unserialize' => ['void', 'serialized'=>'string'], 'SplDoublyLinkedList::unshift' => ['bool', 'value'=>'mixed'], 'SplDoublyLinkedList::valid' => ['bool'], 'SplEnum::__construct' => ['void', 'initial_value='=>'mixed', 'strict='=>'bool|true'], 'SplEnum::getConstList' => ['array', 'include_default='=>'bool'], 'SplFileInfo::__construct' => ['void', 'file_name'=>'string'], 'SplFileInfo::__toString' => ['string'], 'SplFileInfo::getATime' => ['__benevolent'], 'SplFileInfo::getBasename' => ['string', 'suffix='=>'string'], 'SplFileInfo::getCTime' => ['int'], 'SplFileInfo::getExtension' => ['string'], 'SplFileInfo::getFileInfo' => ['SplFileInfo', 'class_name='=>'string'], 'SplFileInfo::getFilename' => ['string'], 'SplFileInfo::getGroup' => ['__benevolent'], 'SplFileInfo::getInode' => ['__benevolent'], 'SplFileInfo::getLinkTarget' => ['__benevolent'], 'SplFileInfo::getMTime' => ['__benevolent'], 'SplFileInfo::getOwner' => ['__benevolent'], 'SplFileInfo::getPath' => ['string'], 'SplFileInfo::getPathInfo' => ['__benevolent', 'class_name='=>'string'], 'SplFileInfo::getPathname' => ['string'], 'SplFileInfo::getPerms' => ['__benevolent'], 'SplFileInfo::getRealPath' => ['__benevolent'], 'SplFileInfo::getSize' => ['__benevolent'], 'SplFileInfo::getType' => ['__benevolent'], 'SplFileInfo::isDir' => ['bool'], 'SplFileInfo::isExecutable' => ['bool'], 'SplFileInfo::isFile' => ['bool'], 'SplFileInfo::isLink' => ['bool'], 'SplFileInfo::isReadable' => ['bool'], 'SplFileInfo::isWritable' => ['bool'], 'SplFileInfo::openFile' => ['SplFileObject', 'mode='=>'string', 'use_include_path='=>'bool', 'context='=>'resource'], 'SplFileInfo::setFileClass' => ['void', 'class_name='=>'string'], 'SplFileInfo::setInfoClass' => ['void', 'class_name='=>'string'], 'SplFileObject::__construct' => ['void', 'filename'=>'string', 'mode='=>'string', 'use_include_path='=>'bool', 'context='=>''], 'SplFileObject::__toString' => ['string'], 'SplFileObject::current' => ['string|array|false'], 'SplFileObject::eof' => ['bool'], 'SplFileObject::fflush' => ['bool'], 'SplFileObject::fgetc' => ['string|false'], // Do not believe https://www.php.net/manual/en/splfileobject.fgetcsv#refsect1-splfileobject.fgetcsv-returnvalues 'SplFileObject::fgetcsv' => ['list|array{0: null}|false|null', 'delimiter='=>'string', 'enclosure='=>'string', 'escape='=>'string'], 'SplFileObject::fgets' => ['string'], 'SplFileObject::fgetss' => ['string|false', 'allowable_tags='=>'string'], 'SplFileObject::flock' => ['bool', 'operation'=>'int', '&w_wouldblock='=>'int'], 'SplFileObject::fpassthru' => ['int'], 'SplFileObject::fputcsv' => ['int|false', 'fields'=>'array', 'delimiter='=>'string', 'enclosure='=>'string', 'escape='=>'string'], 'SplFileObject::fread' => ['string|false', 'length'=>'int'], 'SplFileObject::fscanf' => ['bool', 'format'=>'string', '&...w_vars='=>'string|int|float'], 'SplFileObject::fseek' => ['int', 'pos'=>'int', 'whence='=>'int'], 'SplFileObject::fstat' => ['array'], 'SplFileObject::ftell' => ['int|false'], 'SplFileObject::ftruncate' => ['bool', 'size'=>'int'], 'SplFileObject::fwrite' => ['int', 'str'=>'string', 'length='=>'int'], 'SplFileObject::getChildren' => ['null'], 'SplFileObject::getCsvControl' => ['array'], 'SplFileObject::getCurrentLine' => ['string'], 'SplFileObject::getFlags' => ['int'], 'SplFileObject::getMaxLineLen' => ['int'], 'SplFileObject::hasChildren' => ['false'], 'SplFileObject::key' => ['int'], 'SplFileObject::next' => ['void'], 'SplFileObject::rewind' => ['void'], 'SplFileObject::seek' => ['void', 'line_pos'=>'int'], 'SplFileObject::setCsvControl' => ['void', 'delimiter='=>'string', 'enclosure='=>'string', 'escape='=>'string'], 'SplFileObject::setFlags' => ['void', 'flags'=>'int'], 'SplFileObject::setMaxLineLen' => ['void', 'max_len'=>'int'], 'SplFileObject::valid' => ['bool'], 'SplFixedArray::__construct' => ['void', 'size='=>'int'], 'SplFixedArray::__wakeup' => ['void'], 'SplFixedArray::count' => ['0|positive-int'], 'SplFixedArray::current' => ['mixed'], 'SplFixedArray::fromArray' => ['SplFixedArray', 'data'=>'array', 'save_indexes='=>'bool'], 'SplFixedArray::getSize' => ['int'], 'SplFixedArray::key' => ['int'], 'SplFixedArray::next' => ['void'], 'SplFixedArray::offsetExists' => ['bool', 'index'=>'int'], 'SplFixedArray::offsetGet' => ['mixed', 'index'=>'int'], 'SplFixedArray::offsetSet' => ['void', 'index'=>'int', 'newval'=>'mixed'], 'SplFixedArray::offsetUnset' => ['void', 'index'=>'int'], 'SplFixedArray::rewind' => ['void'], 'SplFixedArray::setSize' => ['bool', 'size'=>'int'], 'SplFixedArray::toArray' => ['array'], 'SplFixedArray::valid' => ['bool'], 'SplHeap::compare' => ['int', 'value1'=>'mixed', 'value2'=>'mixed'], 'SplHeap::count' => ['0|positive-int'], 'SplHeap::current' => ['mixed'], 'SplHeap::extract' => ['mixed'], 'SplHeap::insert' => ['bool', 'value'=>'mixed'], 'SplHeap::isCorrupted' => ['int'], 'SplHeap::isEmpty' => ['bool'], 'SplHeap::key' => ['int'], 'SplHeap::next' => ['void'], 'SplHeap::recoverFromCorruption' => ['int'], 'SplHeap::rewind' => ['void'], 'SplHeap::top' => ['mixed'], 'SplHeap::valid' => ['bool'], 'split' => ['array', 'pattern'=>'string', 'string'=>'string', 'limit='=>'int'], 'spliti' => ['array', 'pattern'=>'string', 'string'=>'string', 'limit='=>'int'], 'SplMaxHeap::compare' => ['int', 'a'=>'mixed', 'b'=>'mixed'], 'SplMinHeap::compare' => ['int', 'a'=>'mixed', 'b'=>'mixed'], 'SplObjectStorage::addAll' => ['0|positive-int', 'os'=>'SplObjectStorage'], 'SplObjectStorage::attach' => ['void', 'obj'=>'object', 'inf='=>'mixed'], 'SplObjectStorage::contains' => ['bool', 'obj'=>'object'], 'SplObjectStorage::count' => ['0|positive-int'], 'SplObjectStorage::current' => ['object'], 'SplObjectStorage::detach' => ['void', 'obj'=>'object'], 'SplObjectStorage::getHash' => ['string', 'obj'=>'object'], 'SplObjectStorage::getInfo' => ['mixed'], 'SplObjectStorage::key' => ['int'], 'SplObjectStorage::next' => ['void'], 'SplObjectStorage::offsetExists' => ['bool', 'object'=>'object'], 'SplObjectStorage::offsetGet' => ['mixed', 'obj'=>'object'], 'SplObjectStorage::offsetSet' => ['object', 'object'=>'object', 'data='=>'mixed'], 'SplObjectStorage::offsetUnset' => ['object', 'object'=>'object'], 'SplObjectStorage::removeAll' => ['0|positive-int', 'os'=>'SplObjectStorage'], 'SplObjectStorage::removeAllExcept' => ['0|positive-int', 'os'=>'SplObjectStorage'], 'SplObjectStorage::rewind' => ['void'], 'SplObjectStorage::serialize' => ['string'], 'SplObjectStorage::setInfo' => ['void', 'inf'=>'mixed'], 'SplObjectStorage::unserialize' => ['void', 'serialized'=>'string'], 'SplObjectStorage::valid' => ['bool'], 'SplObserver::update' => ['void', 'subject'=>'SplSubject'], 'SplPriorityQueue::compare' => ['int', 'a'=>'mixed', 'b'=>'mixed'], 'SplPriorityQueue::count' => ['0|positive-int'], 'SplPriorityQueue::current' => ['mixed'], 'SplPriorityQueue::extract' => ['mixed'], 'SplPriorityQueue::getExtractFlags' => ['int'], 'SplPriorityQueue::insert' => ['bool', 'value'=>'mixed', 'priority'=>'mixed'], 'SplPriorityQueue::isEmpty' => ['bool'], 'SplPriorityQueue::key' => ['mixed'], 'SplPriorityQueue::next' => ['void'], 'SplPriorityQueue::recoverFromCorruption' => ['void'], 'SplPriorityQueue::rewind' => ['void'], 'SplPriorityQueue::setExtractFlags' => ['void', 'flags'=>'int'], 'SplPriorityQueue::top' => ['mixed'], 'SplPriorityQueue::valid' => ['bool'], 'SplQueue::dequeue' => ['mixed'], 'SplQueue::enqueue' => ['void', 'value'=>'mixed'], 'SplQueue::setIteratorMode' => ['void', 'mode'=>'int'], 'SplStack::setIteratorMode' => ['void', 'mode'=>'int'], 'SplSubject::attach' => ['void', 'observer'=>'SplObserver'], 'SplSubject::detach' => ['void', 'observer'=>'SplObserver'], 'SplSubject::notify' => ['void'], 'SplTempFileObject::__construct' => ['void', 'max_memory='=>'int'], 'SplType::__construct' => ['void', 'initial_value='=>'mixed', 'strict='=>'bool'], 'Spoofchecker::__construct' => ['void'], 'Spoofchecker::areConfusable' => ['bool', 's1'=>'string', 's2'=>'string', '&w_error='=>'string'], 'Spoofchecker::isSuspicious' => ['bool', 'text'=>'string', '&w_error='=>'string'], 'Spoofchecker::setAllowedLocales' => ['void', 'locale_list'=>'string'], 'Spoofchecker::setChecks' => ['void', 'checks'=>'long'], 'Spoofchecker::setRestrictionLevel' => ['void', 'restriction_level'=>'int'], 'sprintf' => ['string', 'format'=>'string', '...values='=>'__stringAndStringable|int|float|null|bool'], 'sql_regcase' => ['string', 'string'=>'string'], 'SQLite3::__construct' => ['void', 'filename'=>'string', 'flags='=>'int', 'encryption_key='=>'string|null'], 'SQLite3::busyTimeout' => ['bool', 'msecs'=>'int'], 'SQLite3::changes' => ['int'], 'SQLite3::close' => ['bool'], 'SQLite3::createAggregate' => ['bool', 'name'=>'string', 'step_callback'=>'callable', 'final_callback'=>'callable', 'argument_count='=>'int'], 'SQLite3::createCollation' => ['bool', 'name'=>'string', 'callback'=>'callable'], 'SQLite3::createFunction' => ['bool', 'name'=>'string', 'callback'=>'callable', 'argument_count='=>'int', 'flags='=>'int'], 'SQLite3::enableExceptions' => ['bool', 'enableexceptions='=>'bool'], 'SQLite3::escapeString' => ['string', 'value'=>'string'], 'SQLite3::exec' => ['bool', 'query'=>'string'], 'SQLite3::lastErrorCode' => ['int'], 'SQLite3::lastErrorMsg' => ['string'], 'SQLite3::lastInsertRowID' => ['int'], 'SQLite3::loadExtension' => ['bool', 'shared_library'=>'string'], 'SQLite3::open' => ['void', 'filename'=>'string', 'flags='=>'int', 'encryption_key='=>'string|null'], 'SQLite3::openBlob' => ['resource|false', 'table'=>'string', 'column'=>'string', 'rowid'=>'int', 'dbname='=>'string', 'flags='=>'int'], 'SQLite3::prepare' => ['SQLite3Stmt|false', 'query'=>'string'], 'SQLite3::query' => ['SQLite3Result|false', 'query'=>'string'], 'SQLite3::querySingle' => ['array|int|string|bool|float|null|false', 'query'=>'string', 'entire_row='=>'bool'], 'SQLite3::version' => ['array'], 'SQLite3Result::__construct' => ['void'], 'SQLite3Result::columnName' => ['string', 'column_number'=>'int'], 'SQLite3Result::columnType' => ['int', 'column_number'=>'int'], 'SQLite3Result::fetchArray' => ['array|false', 'mode='=>'int'], 'SQLite3Result::finalize' => ['bool'], 'SQLite3Result::numColumns' => ['int'], 'SQLite3Result::reset' => ['bool'], 'SQLite3Stmt::__construct' => ['void', 'dbobject'=>'sqlite3', 'statement'=>'string'], 'SQLite3Stmt::bindParam' => ['bool', 'parameter_name_or_number'=>'string|int', '&rw_parameter'=>'mixed', 'type='=>'int'], 'SQLite3Stmt::bindValue' => ['bool', 'parameter_name_or_number'=>'string|int', 'parameter'=>'mixed', 'type='=>'int'], 'SQLite3Stmt::clear' => ['bool'], 'SQLite3Stmt::close' => ['bool'], 'SQLite3Stmt::execute' => ['false|SQLite3Result'], 'SQLite3Stmt::paramCount' => ['int'], 'SQLite3Stmt::readOnly' => ['bool'], 'SQLite3Stmt::reset' => ['bool'], 'sqlite_array_query' => ['array', 'dbhandle'=>'', 'query'=>'string', 'result_type='=>'int', 'decode_binary='=>'bool'], 'sqlite_busy_timeout' => ['', 'dbhandle'=>'', 'milliseconds'=>'int'], 'sqlite_changes' => ['int', 'dbhandle'=>''], 'sqlite_close' => ['void', 'dbhandle'=>'resource'], 'sqlite_column' => ['', 'result'=>'', 'index_or_name'=>'', 'decode_binary='=>'bool'], 'sqlite_create_aggregate' => ['', 'dbhandle'=>'', 'function_name'=>'string', 'step_func'=>'callable', 'finalize_func'=>'callable', 'num_args='=>'int'], 'sqlite_create_function' => ['', 'dbhandle'=>'', 'function_name'=>'string', 'callback'=>'callable', 'num_args='=>'int'], 'sqlite_current' => ['array', 'result'=>'', 'result_type='=>'int', 'decode_binary='=>'bool'], 'sqlite_error_string' => ['string', 'error_code'=>'int'], 'sqlite_escape_string' => ['string', 'item'=>'string'], 'sqlite_exec' => ['bool', 'dbhandle'=>'', 'query'=>'string', 'error_msg='=>'string'], 'sqlite_factory' => ['SQLiteDatabase', 'filename'=>'string', 'mode='=>'int', 'error_message='=>'string'], 'sqlite_fetch_all' => ['array', 'result'=>'', 'result_type='=>'int', 'decode_binary='=>'bool'], 'sqlite_fetch_array' => ['array', 'result'=>'', 'result_type='=>'int', 'decode_binary='=>'bool'], 'sqlite_fetch_column_types' => ['array', 'table_name'=>'string', 'dbhandle'=>'', 'result_type='=>'int'], 'sqlite_fetch_object' => ['object', 'result'=>'', 'class_name='=>'string', 'ctor_params='=>'array', 'decode_binary='=>'bool'], 'sqlite_fetch_single' => ['string', 'result'=>'', 'decode_binary='=>'bool'], 'sqlite_field_name' => ['string', 'result'=>'', 'field_index'=>'int'], 'sqlite_has_more' => ['bool', 'result'=>'resource'], 'sqlite_has_prev' => ['bool', 'result'=>''], 'sqlite_key' => ['int', 'result'=>''], 'sqlite_last_error' => ['int', 'dbhandle'=>''], 'sqlite_last_insert_rowid' => ['int', 'dbhandle'=>''], 'sqlite_libencoding' => ['string'], 'sqlite_libversion' => ['string'], 'sqlite_next' => ['bool', 'result'=>''], 'sqlite_num_fields' => ['int', 'result'=>''], 'sqlite_num_rows' => ['int', 'result'=>''], 'sqlite_open' => ['resource|false', 'filename'=>'string', 'mode='=>'int', 'error_message='=>'string'], 'sqlite_popen' => ['resource|false', 'filename'=>'string', 'mode='=>'int', 'error_message='=>'string'], 'sqlite_prev' => ['bool', 'result'=>''], 'sqlite_query' => ['SQLiteResult', 'dbhandle'=>'', 'query'=>'string', 'result_type='=>'int', 'error_msg='=>'string'], 'sqlite_rewind' => ['bool', 'result'=>''], 'sqlite_seek' => ['bool', 'result'=>'', 'rownum'=>'int'], 'sqlite_single_query' => ['array', 'db'=>'', 'query'=>'string', 'first_row_only='=>'bool', 'decode_binary='=>'bool'], 'sqlite_udf_decode_binary' => ['string', 'data'=>'string'], 'sqlite_udf_encode_binary' => ['string', 'data'=>'string'], 'sqlite_unbuffered_query' => ['SQLiteUnbuffered', 'dbhandle'=>'', 'query'=>'string', 'result_type='=>'int', 'error_msg='=>'string'], 'sqlite_valid' => ['bool', 'result'=>''], 'SQLiteDatabase::arrayQuery' => ['array', 'dbhandle'=>'', 'query'=>'string', 'result_type='=>'int', 'decode_binary='=>'bool'], 'SQLiteDatabase::busyTimeout' => ['', 'dbhandle'=>'', 'milliseconds'=>'int'], 'SQLiteDatabase::changes' => ['int', 'dbhandle'=>''], 'SQLiteDatabase::createAggregate' => ['', 'dbhandle'=>'', 'function_name'=>'string', 'step_func'=>'callable', 'finalize_func'=>'callable', 'num_args='=>'int'], 'SQLiteDatabase::createFunction' => ['', 'dbhandle'=>'', 'function_name'=>'string', 'callback'=>'callable', 'num_args='=>'int'], 'SQLiteDatabase::exec' => ['bool', 'dbhandle'=>'', 'query'=>'string', 'error_msg='=>'string'], 'SQLiteDatabase::fetchColumnTypes' => ['array', 'table_name'=>'string', 'dbhandle'=>'', 'result_type='=>'int'], 'SQLiteDatabase::lastError' => ['int', 'dbhandle'=>''], 'SQLiteDatabase::lastInsertRowid' => ['int', 'dbhandle'=>''], 'SQLiteDatabase::query' => ['SQLiteResult', 'dbhandle'=>'', 'query'=>'string', 'result_type='=>'int', 'error_msg='=>'string'], 'SQLiteDatabase::queryExec' => ['bool', 'query'=>'string', '&w_error_msg='=>'string'], 'SQLiteDatabase::singleQuery' => ['array', 'db'=>'', 'query'=>'string', 'first_row_only='=>'bool', 'decode_binary='=>'bool'], 'SQLiteDatabase::unbufferedQuery' => ['SQLiteUnbuffered', 'dbhandle'=>'', 'query'=>'string', 'result_type='=>'int', 'error_msg='=>'string'], 'SQLiteResult::column' => ['', 'result'=>'', 'index_or_name'=>'', 'decode_binary='=>'bool'], 'SQLiteResult::current' => ['array', 'result'=>'', 'result_type='=>'int', 'decode_binary='=>'bool'], 'SQLiteResult::fetch' => ['array', 'result'=>'', 'result_type='=>'int', 'decode_binary='=>'bool'], 'SQLiteResult::fetchAll' => ['array', 'result'=>'', 'result_type='=>'int', 'decode_binary='=>'bool'], 'SQLiteResult::fetchObject' => ['object', 'result'=>'', 'class_name='=>'string', 'ctor_params='=>'array', 'decode_binary='=>'bool'], 'SQLiteResult::fetchSingle' => ['string', 'result'=>'', 'decode_binary='=>'bool'], 'SQLiteResult::fieldName' => ['string', 'result'=>'', 'field_index'=>'int'], 'SQLiteResult::hasPrev' => ['bool', 'result'=>''], 'SQLiteResult::key' => ['int', 'result'=>''], 'SQLiteResult::next' => ['bool', 'result'=>''], 'SQLiteResult::numFields' => ['int', 'result'=>''], 'SQLiteResult::numRows' => ['int', 'result'=>''], 'SQLiteResult::prev' => ['bool', 'result'=>''], 'SQLiteResult::rewind' => ['bool', 'result'=>''], 'SQLiteResult::seek' => ['bool', 'result'=>'', 'rownum'=>'int'], 'SQLiteResult::valid' => ['bool', 'result'=>''], 'SQLiteUnbuffered::column' => ['', 'result'=>'', 'index_or_name'=>'', 'decode_binary='=>'bool'], 'SQLiteUnbuffered::current' => ['array', 'result'=>'', 'result_type='=>'int', 'decode_binary='=>'bool'], 'SQLiteUnbuffered::fetch' => ['array', 'result'=>'', 'result_type='=>'int', 'decode_binary='=>'bool'], 'SQLiteUnbuffered::fetchAll' => ['array', 'result'=>'', 'result_type='=>'int', 'decode_binary='=>'bool'], 'SQLiteUnbuffered::fetchObject' => ['object', 'result'=>'', 'class_name='=>'string', 'ctor_params='=>'array', 'decode_binary='=>'bool'], 'SQLiteUnbuffered::fetchSingle' => ['string', 'result'=>'', 'decode_binary='=>'bool'], 'SQLiteUnbuffered::fieldName' => ['string', 'result'=>'', 'field_index'=>'int'], 'SQLiteUnbuffered::next' => ['bool', 'result'=>''], 'SQLiteUnbuffered::numFields' => ['int', 'result'=>''], 'SQLiteUnbuffered::valid' => ['bool', 'result'=>''], 'sqlsrv_begin_transaction' => ['bool', 'conn'=>'resource'], 'sqlsrv_cancel' => ['bool', 'stmt'=>'resource'], 'sqlsrv_client_info' => ['array|false', 'conn'=>'resource'], 'sqlsrv_close' => ['bool', 'conn'=>'resource'], 'sqlsrv_commit' => ['bool', 'conn'=>'resource'], 'sqlsrv_configure' => ['bool', 'setting'=>'string', 'value'=>'mixed'], 'sqlsrv_connect' => ['resource|false', 'serverName'=>'string', 'connectionInfo='=>'array'], 'sqlsrv_errors' => ['array|null', 'errorsOrWarnings='=>'int'], 'sqlsrv_execute' => ['bool', 'stmt'=>'resource'], 'sqlsrv_fetch' => ['bool|null', 'stmt'=>'resource', 'row='=>'int', 'offset='=>'int'], 'sqlsrv_fetch_array' => ['array|null|false', 'stmt'=>'resource', 'fetchType='=>'int', 'row='=>'int', 'offset='=>'int'], 'sqlsrv_fetch_object' => ['object|null|false', 'stmt'=>'resource', 'className='=>'string', 'ctorParams='=>'array', 'row='=>'int', 'offset='=>'int'], 'sqlsrv_field_metadata' => ['array|false', 'stmt'=>'resource'], 'sqlsrv_free_stmt' => ['bool', 'stmt'=>'resource'], 'sqlsrv_get_config' => ['mixed', 'setting'=>'string'], 'sqlsrv_get_field' => ['mixed', 'stmt'=>'resource', 'fieldIndex'=>'int', 'getAsType='=>'int'], 'sqlsrv_has_rows' => ['bool', 'stmt'=>'resource'], 'sqlsrv_next_result' => ['bool|null', 'stmt'=>'resource'], 'sqlsrv_num_fields' => ['int|false', 'stmt'=>'resource'], 'sqlsrv_num_rows' => ['int|false', 'stmt'=>'resource'], 'sqlsrv_prepare' => ['resource|false', 'conn'=>'resource', 'sql'=>'string', 'params='=>'array', 'options='=>'array'], 'sqlsrv_query' => ['resource|false', 'conn'=>'resource', 'sql'=>'string', 'params='=>'array', 'options='=>'array'], 'sqlsrv_rollback' => ['bool', 'conn'=>'resource'], 'sqlsrv_rows_affected' => ['int<-1,max>|false', 'stmt'=>'resource'], 'sqlsrv_send_stream_data' => ['bool', 'stmt'=>'resource'], 'sqlsrv_server_info' => ['array', 'conn'=>'resource'], 'sqrt' => ['float', 'number'=>'float'], 'srand' => ['void', 'seed='=>'int', 'mode='=>'int'], 'sscanf' => ['int|null', 'str'=>'string', 'format'=>'string', '&w_war'=>'string|int|float|null', '&...w_vars='=>'string|int|float|null'], 'sscanf\'1' => ['array|null', 'str'=>'string', 'format'=>'string'], 'ssdeep_fuzzy_compare' => ['int', 'signature1'=>'string', 'signature2'=>'string'], 'ssdeep_fuzzy_hash' => ['string', 'to_hash'=>'string'], 'ssdeep_fuzzy_hash_filename' => ['string', 'file_name'=>'string'], 'ssh2_auth_agent' => ['bool', 'session'=>'resource', 'username'=>'string'], 'ssh2_auth_hostbased_file' => ['bool', 'session'=>'resource', 'username'=>'string', 'hostname'=>'string', 'pubkeyfile'=>'string', 'privkeyfile'=>'string', 'passphrase='=>'string', 'local_username='=>'string'], 'ssh2_auth_none' => ['bool|string[]', 'session'=>'resource', 'username'=>'string'], 'ssh2_auth_password' => ['bool', 'session'=>'resource', 'username'=>'string', 'password'=>'string'], 'ssh2_auth_pubkey_file' => ['bool', 'session'=>'resource', 'username'=>'string', 'pubkeyfile'=>'string', 'privkeyfile'=>'string', 'passphrase='=>'string'], 'ssh2_connect' => ['resource|false', 'host'=>'string', 'port='=>'int', 'methods='=>'array', 'callbacks='=>'array'], 'ssh2_disconnect' => ['bool', 'session'=>'resource'], 'ssh2_exec' => ['resource|false', 'session'=>'resource', 'command'=>'string', 'pty='=>'string', 'env='=>'array', 'width='=>'int', 'height='=>'int', 'width_height_type='=>'int'], 'ssh2_fetch_stream' => ['resource|false', 'channel'=>'resource', 'streamid'=>'int'], 'ssh2_fingerprint' => ['string|false', 'session'=>'resource', 'flags='=>'int'], 'ssh2_methods_negotiated' => ['array|false', 'session'=>'resource'], 'ssh2_publickey_add' => ['bool', 'pkey'=>'resource', 'algoname'=>'string', 'blob'=>'string', 'overwrite='=>'bool', 'attributes='=>'array'], 'ssh2_publickey_init' => ['resource|false', 'session'=>'resource'], 'ssh2_publickey_list' => ['array|false', 'pkey'=>'resource'], 'ssh2_publickey_remove' => ['bool', 'pkey'=>'resource', 'algoname'=>'string', 'blob'=>'string'], 'ssh2_scp_recv' => ['bool', 'session'=>'resource', 'remote_file'=>'string', 'local_file'=>'string'], 'ssh2_scp_send' => ['bool', 'session'=>'resource', 'local_file'=>'string', 'remote_file'=>'string', 'create_mode='=>'int'], 'ssh2_sftp' => ['resource|false', 'session'=>'resource'], 'ssh2_sftp_chmod' => ['bool', 'sftp'=>'resource', 'filename'=>'string', 'mode'=>'int'], 'ssh2_sftp_lstat' => ['array|false', 'sftp'=>'resource', 'path'=>'string'], 'ssh2_sftp_mkdir' => ['bool', 'sftp'=>'resource', 'dirname'=>'string', 'mode='=>'int', 'recursive='=>'bool'], 'ssh2_sftp_readlink' => ['string|false', 'sftp'=>'resource', 'link'=>'string'], 'ssh2_sftp_realpath' => ['string|false', 'sftp'=>'resource', 'filename'=>'string'], 'ssh2_sftp_rename' => ['bool', 'sftp'=>'resource', 'from'=>'string', 'to'=>'string'], 'ssh2_sftp_rmdir' => ['bool', 'sftp'=>'resource', 'dirname'=>'string'], 'ssh2_sftp_stat' => ['array|false', 'sftp'=>'resource', 'path'=>'string'], 'ssh2_sftp_symlink' => ['bool', 'sftp'=>'resource', 'target'=>'string', 'link'=>'string'], 'ssh2_sftp_unlink' => ['bool', 'sftp'=>'resource', 'filename'=>'string'], 'ssh2_shell' => ['resource|false', 'session'=>'resource', 'term_type='=>'string', 'env='=>'array', 'width='=>'int', 'height='=>'int', 'width_height_type='=>'int'], 'ssh2_tunnel' => ['resource|false', 'session'=>'resource', 'host'=>'string', 'port'=>'int'], 'stat' => ['array|false', 'filename'=>'string'], 'stats_absolute_deviation' => ['float', 'a'=>'array'], 'stats_cdf_beta' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_cdf_binomial' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_cdf_cauchy' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_cdf_chisquare' => ['float', 'par1'=>'float', 'par2'=>'float', 'which'=>'int'], 'stats_cdf_exponential' => ['float', 'par1'=>'float', 'par2'=>'float', 'which'=>'int'], 'stats_cdf_f' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_cdf_gamma' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_cdf_laplace' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_cdf_logistic' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_cdf_negative_binomial' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_cdf_noncentral_chisquare' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_cdf_noncentral_f' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'par4'=>'float', 'which'=>'int'], 'stats_cdf_noncentral_t' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_cdf_normal' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_cdf_poisson' => ['float', 'par1'=>'float', 'par2'=>'float', 'which'=>'int'], 'stats_cdf_t' => ['float', 'par1'=>'float', 'par2'=>'float', 'which'=>'int'], 'stats_cdf_uniform' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_cdf_weibull' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_covariance' => ['float', 'a'=>'array', 'b'=>'array'], 'stats_den_uniform' => ['float', 'x'=>'float', 'a'=>'float', 'b'=>'float'], 'stats_dens_beta' => ['float', 'x'=>'float', 'a'=>'float', 'b'=>'float'], 'stats_dens_cauchy' => ['float', 'x'=>'float', 'ave'=>'float', 'stdev'=>'float'], 'stats_dens_chisquare' => ['float', 'x'=>'float', 'dfr'=>'float'], 'stats_dens_exponential' => ['float', 'x'=>'float', 'scale'=>'float'], 'stats_dens_f' => ['float', 'x'=>'float', 'dfr1'=>'float', 'dfr2'=>'float'], 'stats_dens_gamma' => ['float', 'x'=>'float', 'shape'=>'float', 'scale'=>'float'], 'stats_dens_laplace' => ['float', 'x'=>'float', 'ave'=>'float', 'stdev'=>'float'], 'stats_dens_logistic' => ['float', 'x'=>'float', 'ave'=>'float', 'stdev'=>'float'], 'stats_dens_negative_binomial' => ['float', 'x'=>'float', 'n'=>'float', 'pi'=>'float'], 'stats_dens_normal' => ['float', 'x'=>'float', 'ave'=>'float', 'stdev'=>'float'], 'stats_dens_pmf_binomial' => ['float', 'x'=>'float', 'n'=>'float', 'pi'=>'float'], 'stats_dens_pmf_hypergeometric' => ['float', 'n1'=>'float', 'n2'=>'float', 'N1'=>'float', 'N2'=>'float'], 'stats_dens_pmf_negative_binomial' => ['float', 'x'=>'float', 'n'=>'float', 'pi'=>'float'], 'stats_dens_pmf_poisson' => ['float', 'x'=>'float', 'lb'=>'float'], 'stats_dens_t' => ['float', 'x'=>'float', 'dfr'=>'float'], 'stats_dens_uniform' => ['float', 'x'=>'float', 'a'=>'float', 'b'=>'float'], 'stats_dens_weibull' => ['float', 'x'=>'float', 'a'=>'float', 'b'=>'float'], 'stats_harmonic_mean' => ['float', 'a'=>'array'], 'stats_kurtosis' => ['float', 'a'=>'array'], 'stats_rand_gen_beta' => ['float', 'a'=>'float', 'b'=>'float'], 'stats_rand_gen_chisquare' => ['float', 'df'=>'float'], 'stats_rand_gen_exponential' => ['float', 'av'=>'float'], 'stats_rand_gen_f' => ['float', 'dfn'=>'float', 'dfd'=>'float'], 'stats_rand_gen_funiform' => ['float', 'low'=>'float', 'high'=>'float'], 'stats_rand_gen_gamma' => ['float', 'a'=>'float', 'r'=>'float'], 'stats_rand_gen_ibinomial' => ['int', 'n'=>'int', 'pp'=>'float'], 'stats_rand_gen_ibinomial_negative' => ['int', 'n'=>'int', 'p'=>'float'], 'stats_rand_gen_int' => ['int'], 'stats_rand_gen_ipoisson' => ['int', 'mu'=>'float'], 'stats_rand_gen_iuniform' => ['int', 'low'=>'int', 'high'=>'int'], 'stats_rand_gen_noncenral_chisquare' => ['float', 'df'=>'float', 'xnonc'=>'float'], 'stats_rand_gen_noncentral_chisquare' => ['float', 'df'=>'float', 'xnonc'=>'float'], 'stats_rand_gen_noncentral_f' => ['float', 'dfn'=>'float', 'dfd'=>'float', 'xnonc'=>'float'], 'stats_rand_gen_noncentral_t' => ['float', 'df'=>'float', 'xnonc'=>'float'], 'stats_rand_gen_normal' => ['float', 'av'=>'float', 'sd'=>'float'], 'stats_rand_gen_t' => ['float', 'df'=>'float'], 'stats_rand_get_seeds' => ['array'], 'stats_rand_phrase_to_seeds' => ['array', 'phrase'=>'string'], 'stats_rand_ranf' => ['float'], 'stats_rand_setall' => ['void', 'iseed1'=>'int', 'iseed2'=>'int'], 'stats_skew' => ['float', 'a'=>'array'], 'stats_standard_deviation' => ['float', 'a'=>'array', 'sample='=>'bool'], 'stats_stat_binomial_coef' => ['float', 'x'=>'int', 'n'=>'int'], 'stats_stat_correlation' => ['float', 'arr1'=>'array', 'arr2'=>'array'], 'stats_stat_factorial' => ['float', 'n'=>'int'], 'stats_stat_gennch' => ['float', 'n'=>'int'], 'stats_stat_independent_t' => ['float', 'arr1'=>'array', 'arr2'=>'array'], 'stats_stat_innerproduct' => ['float', 'arr1'=>'array', 'arr2'=>'array'], 'stats_stat_noncentral_t' => ['float', 'par1'=>'float', 'par2'=>'float', 'par3'=>'float', 'which'=>'int'], 'stats_stat_paired_t' => ['float', 'arr1'=>'array', 'arr2'=>'array'], 'stats_stat_percentile' => ['float', 'df'=>'float', 'xnonc'=>'float'], 'stats_stat_powersum' => ['float', 'arr'=>'array', 'power'=>'float'], 'stats_variance' => ['float', 'a'=>'array', 'sample='=>'bool'], 'Stomp::__construct' => ['void', 'broker='=>'string', 'username='=>'string', 'password='=>'string', 'headers='=>'array'], 'Stomp::__destruct' => ['bool', 'link'=>''], 'Stomp::abort' => ['bool', 'transaction_id'=>'string', 'headers='=>'array', 'link='=>''], 'Stomp::ack' => ['bool', 'msg'=>'', 'headers='=>'array', 'link='=>''], 'Stomp::begin' => ['bool', 'transaction_id'=>'string', 'headers='=>'array', 'link='=>''], 'Stomp::commit' => ['bool', 'transaction_id'=>'string', 'headers='=>'array', 'link='=>''], 'Stomp::error' => ['string', 'link'=>''], 'Stomp::getReadTimeout' => ['array', 'link'=>''], 'Stomp::getSessionId' => ['string', 'link'=>''], 'Stomp::hasFrame' => ['bool', 'link'=>''], 'Stomp::readFrame' => ['array', 'class_name='=>'string', 'link='=>''], 'Stomp::send' => ['bool', 'destination'=>'string', 'msg'=>'', 'headers='=>'array', 'link='=>''], 'Stomp::setReadTimeout' => ['', 'seconds'=>'int', 'microseconds='=>'int', 'link='=>''], 'Stomp::subscribe' => ['bool', 'destination'=>'string', 'headers='=>'array', 'link='=>''], 'Stomp::unsubscribe' => ['bool', 'destination'=>'string', 'headers='=>'array', 'link='=>''], 'stomp_abort' => ['bool', 'transaction_id'=>'string', 'headers='=>'array', 'link='=>''], 'stomp_ack' => ['bool', 'msg'=>'', 'headers='=>'array', 'link='=>''], 'stomp_begin' => ['bool', 'transaction_id'=>'string', 'headers='=>'array', 'link='=>''], 'stomp_close' => ['bool', 'link'=>''], 'stomp_commit' => ['bool', 'transaction_id'=>'string', 'headers='=>'array', 'link='=>''], 'stomp_connect' => ['resource', 'broker='=>'string', 'username='=>'string', 'password='=>'string', 'headers='=>'array'], 'stomp_connect_error' => ['string'], 'stomp_error' => ['string', 'link'=>''], 'stomp_get_read_timeout' => ['array', 'link'=>''], 'stomp_get_session_id' => ['string', 'link'=>''], 'stomp_has_frame' => ['bool', 'link'=>''], 'stomp_read_frame' => ['array', 'class_name='=>'string', 'link='=>''], 'stomp_send' => ['bool', 'destination'=>'string', 'msg'=>'', 'headers='=>'array', 'link='=>''], 'stomp_set_read_timeout' => ['', 'seconds'=>'int', 'microseconds='=>'int', 'link='=>''], 'stomp_subscribe' => ['bool', 'destination'=>'string', 'headers='=>'array', 'link='=>''], 'stomp_unsubscribe' => ['bool', 'destination'=>'string', 'headers='=>'array', 'link='=>''], 'stomp_version' => ['string'], 'StompException::getDetails' => ['string'], 'StompFrame::__construct' => ['void', 'command='=>'string', 'headers='=>'array', 'body='=>'string'], 'str_getcsv' => ['non-empty-list', 'input'=>'string', 'delimiter='=>'string', 'enclosure='=>'string', 'escape='=>'string'], 'str_ireplace' => ['string|string[]', 'search'=>'string|array', 'replace'=>'string|array', 'subject'=>'string|array', '&w_replace_count='=>'int'], 'str_pad' => ['string', 'input'=>'string', 'pad_length'=>'int', 'pad_string='=>'string', 'pad_type='=>'int'], 'str_repeat' => ['string', 'input'=>'string', 'multiplier'=>'int'], 'str_replace' => ['string|array', 'search'=>'string|array', 'replace'=>'string|array', 'subject'=>'string|array', '&w_replace_count='=>'int'], 'str_rot13' => ['string', 'str'=>'string'], 'str_shuffle' => ['string', 'str'=>'string'], 'str_split' => ['non-empty-list|false', 'str'=>'string', 'split_length='=>'positive-int'], 'str_word_count' => ['array|int|false', 'string'=>'string', 'format='=>'int', 'charlist='=>'string'], 'strcasecmp' => ['int<-1, 1>', 'str1'=>'string', 'str2'=>'string'], 'strchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'], 'strcmp' => ['int<-1, 1>', 'str1'=>'string', 'str2'=>'string'], 'strcoll' => ['int<-1, 1>', 'str1'=>'string', 'str2'=>'string'], 'strcspn' => ['int', 'str'=>'string', 'mask'=>'string', 'start='=>'int', 'length='=>'int'], 'stream_bucket_append' => ['void', 'brigade'=>'resource', 'bucket'=>'object'], 'stream_bucket_make_writeable' => ['stdClass|null', 'brigade'=>'resource'], 'stream_bucket_new' => ['object', 'stream'=>'resource', 'buffer'=>'string'], 'stream_bucket_prepend' => ['void', 'brigade'=>'resource', 'bucket'=>'object'], 'stream_context_create' => ['resource', 'options='=>'array', 'params='=>'array'], 'stream_context_get_default' => ['resource', 'options='=>'array'], 'stream_context_get_options' => ['array', 'context'=>'resource'], 'stream_context_get_params' => ['array{notification:string, options:array}', 'context'=>'resource'], 'stream_context_set_default' => ['resource', 'options'=>'array'], 'stream_context_set_option' => ['bool', 'context'=>'', 'wrappername'=>'string', 'optionname'=>'string', 'value'=>''], 'stream_context_set_option\'1' => ['bool', 'context'=>'', 'options'=>'array'], 'stream_context_set_params' => ['bool', 'context'=>'resource', 'options'=>'array'], 'stream_copy_to_stream' => ['int|false', 'source'=>'resource', 'dest'=>'resource', 'maxlen='=>'int', 'pos='=>'int'], 'stream_encoding' => ['bool', 'stream'=>'resource', 'encoding='=>'string'], 'stream_filter_append' => ['resource|false', 'stream'=>'resource', 'filtername'=>'string', 'read_write='=>'int', 'filterparams='=>'array'], 'stream_filter_prepend' => ['resource|false', 'stream'=>'resource', 'filtername'=>'string', 'read_write='=>'int', 'filterparams='=>'array'], 'stream_filter_register' => ['bool', 'filtername'=>'string', 'classname'=>'string'], 'stream_filter_remove' => ['bool', 'stream_filter'=>'resource'], 'stream_get_contents' => ['string|false', 'source'=>'resource', 'maxlen='=>'int', 'offset='=>'int'], 'stream_get_filters' => ['list'], 'stream_get_line' => ['string|false', 'stream'=>'resource', 'maxlen'=>'int', 'ending='=>'string'], 'stream_get_meta_data' => ['array{timed_out:bool,blocked:bool,eof:bool,unread_bytes:int,stream_type:string,wrapper_type:string,wrapper_data:mixed,mode:string,seekable:bool,uri?:string,mediatype?:string,base64?:bool}', 'fp'=>'resource'], 'stream_get_transports' => ['list'], 'stream_get_wrappers' => ['list'], 'stream_is_local' => ['bool', 'stream'=>'resource|string'], 'stream_isatty' => ['bool', 'stream'=>'resource'], 'stream_notification_callback' => ['callback', 'notification_code'=>'int', 'severity'=>'int', 'message'=>'string', 'message_code'=>'int', 'bytes_transferred'=>'int', 'bytes_max'=>'int'], 'stream_resolve_include_path' => ['string|false', 'filename'=>'string'], 'stream_select' => ['int|false', '&rw_read_streams'=>'resource[]|null', '&rw_write_streams'=>'resource[]|null', '&rw_except_streams'=>'resource[]|null', 'tv_sec'=>'?int', 'tv_usec='=>'?int'], 'stream_set_blocking' => ['bool', 'socket'=>'resource', 'mode'=>'bool'], 'stream_set_chunk_size' => ['int|false', 'fp'=>'resource', 'chunk_size'=>'int'], 'stream_set_read_buffer' => ['int', 'fp'=>'resource', 'buffer'=>'int'], 'stream_set_timeout' => ['bool', 'stream'=>'resource', 'seconds'=>'int', 'microseconds='=>'int'], 'stream_set_write_buffer' => ['int', 'fp'=>'resource', 'buffer'=>'int'], 'stream_socket_accept' => ['resource|false', 'serverstream'=>'resource', 'timeout='=>'float', '&w_peername='=>'string'], 'stream_socket_client' => ['resource|false', 'remoteaddress'=>'string', '&w_errcode='=>'int', '&w_errstring='=>'string', 'timeout='=>'float', 'flags='=>'int', 'context='=>'resource'], 'stream_socket_enable_crypto' => ['0|bool', 'stream'=>'resource', 'enable'=>'bool', 'cryptokind='=>'int', 'sessionstream='=>'resource'], 'stream_socket_get_name' => ['string|false', 'stream'=>'resource', 'want_peer'=>'bool'], 'stream_socket_pair' => ['resource[]|false', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int'], 'stream_socket_recvfrom' => ['string|false', 'stream'=>'resource', 'amount'=>'int', 'flags='=>'int', '&w_remote_addr='=>'string'], 'stream_socket_sendto' => ['int|false', 'stream'=>'resource', 'data'=>'string', 'flags='=>'int', 'target_addr='=>'string'], 'stream_socket_server' => ['resource|false', 'localaddress'=>'string', '&w_errcode='=>'int', '&w_errstring='=>'string', 'flags='=>'int', 'context='=>'resource'], 'stream_socket_shutdown' => ['bool', 'stream'=>'resource', 'how'=>'int'], 'stream_supports_lock' => ['bool', 'stream'=>'resource'], 'stream_wrapper_register' => ['bool', 'protocol'=>'string', 'classname'=>'string', 'flags='=>'int'], 'stream_wrapper_restore' => ['bool', 'protocol'=>'string'], 'stream_wrapper_unregister' => ['bool', 'protocol'=>'string'], 'streamWrapper::__construct' => ['void'], 'streamWrapper::__destruct' => [''], 'streamWrapper::dir_closedir' => ['bool'], 'streamWrapper::dir_opendir' => ['bool', 'path'=>'string', 'options'=>'int'], 'streamWrapper::dir_readdir' => ['string'], 'streamWrapper::dir_rewinddir' => ['bool'], 'streamWrapper::mkdir' => ['bool', 'path'=>'string', 'mode'=>'int', 'options'=>'int'], 'streamWrapper::rename' => ['bool', 'path_from'=>'string', 'path_to'=>'string'], 'streamWrapper::rmdir' => ['bool', 'path'=>'string', 'options'=>'int'], 'streamWrapper::stream_cast' => ['resource', 'cast_as'=>'int'], 'streamWrapper::stream_close' => ['void'], 'streamWrapper::stream_eof' => ['bool'], 'streamWrapper::stream_flush' => ['bool'], 'streamWrapper::stream_lock' => ['bool', 'operation'=>'mode'], 'streamWrapper::stream_metadata' => ['bool', 'path'=>'string', 'option'=>'int', 'value'=>'mixed'], 'streamWrapper::stream_open' => ['bool', 'path'=>'string', 'mode'=>'string', 'options'=>'int', 'opened_path'=>'string'], 'streamWrapper::stream_read' => ['string', 'count'=>'int'], 'streamWrapper::stream_seek' => ['bool', 'offset'=>'int', 'whence'=>'int'], 'streamWrapper::stream_set_option' => ['bool', 'option'=>'int', 'arg1'=>'int', 'arg2'=>'int'], 'streamWrapper::stream_stat' => ['array'], 'streamWrapper::stream_tell' => ['int'], 'streamWrapper::stream_truncate' => ['bool', 'new_size'=>'int'], 'streamWrapper::stream_write' => ['int', 'data'=>'string'], 'streamWrapper::unlink' => ['bool', 'path'=>'string'], 'streamWrapper::url_stat' => ['array', 'path'=>'string', 'flags'=>'int'], 'strftime' => ['string|false', 'format'=>'string', 'timestamp='=>'int'], 'strip_tags' => ['string', 'str'=>'string', 'allowable_tags='=>'string'], 'stripcslashes' => ['string', 'str'=>'string'], 'stripos' => ['0|positive-int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'], 'stripslashes' => ['string', 'str'=>'string'], 'stristr' => ['string|false', 'haystack'=>'string', 'needle'=>'mixed', 'before_needle='=>'bool'], 'strlen' => ['0|positive-int', 'string'=>'string'], 'strnatcasecmp' => ['int<-1, 1>', 's1'=>'string', 's2'=>'string'], 'strnatcmp' => ['int<-1, 1>', 's1'=>'string', 's2'=>'string'], 'strncasecmp' => ['int<-1, 1>', 'str1'=>'string', 'str2'=>'string', 'len'=>'int'], 'strncmp' => ['int<-1, 1>', 'str1'=>'string', 'str2'=>'string', 'len'=>'int'], 'strpbrk' => ['string|false', 'haystack'=>'string', 'char_list'=>'string'], 'strpos' => ['positive-int|0|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'], 'strptime' => ['array|false', 'datestr'=>'string', 'format'=>'string'], 'strrchr' => ['string|false', 'haystack'=>'string', 'needle'=>'mixed'], 'strrev' => ['string', 'str'=>'string'], 'strripos' => ['0|positive-int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'], 'strrpos' => ['0|positive-int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'], 'strspn' => ['int', 'str'=>'string', 'mask'=>'string', 'start='=>'int', 'len='=>'int'], 'strstr' => ['string|false', 'haystack'=>'string', 'needle'=>'mixed', 'before_needle='=>'bool'], 'strtok' => ['non-empty-string|false', 'str'=>'string', 'token'=>'string'], 'strtok\'1' => ['non-empty-string|false', 'token'=>'string'], 'strtolower' => ['lowercase-string', 'str'=>'string'], 'strtotime' => ['int|false', 'time'=>'string', 'now='=>'int'], 'strtoupper' => ['uppercase-string', 'str'=>'string'], 'strtr' => ['string', 'str'=>'string', 'from'=>'string', 'to'=>'string'], 'strtr\'1' => ['string', 'str'=>'string', 'replace_pairs'=>'array'], 'strval' => ['string', 'var'=>'__stringAndStringable|int|float|bool|resource|null'], 'substr' => ['__benevolent', 'string'=>'string', 'start'=>'int', 'length='=>'int'], 'substr_compare' => ['int<-1, 1>|false', 'main_str'=>'string', 'str'=>'string', 'offset'=>'int', 'length='=>'int', 'case_sensitivity='=>'bool'], 'substr_count' => ['0|positive-int', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int', 'length='=>'int'], 'substr_replace' => ['string|array', 'str'=>'string|array', 'repl'=>'mixed', 'start'=>'mixed', 'length='=>'mixed'], 'suhosin_encrypt_cookie' => ['string', 'name'=>'string', 'value'=>'string'], 'suhosin_get_raw_cookies' => ['array'], 'SVM::__construct' => ['void'], 'svm::crossvalidate' => ['float', 'problem'=>'array', 'number_of_folds'=>'int'], 'SVM::getOptions' => ['array'], 'SVM::setOptions' => ['bool', 'params'=>'array'], 'svm::train' => ['SVMModel', 'problem'=>'array', 'weights='=>'array'], 'SVMModel::__construct' => ['void', 'filename='=>'string'], 'SVMModel::checkProbabilityModel' => ['bool'], 'SVMModel::getLabels' => ['array'], 'SVMModel::getNrClass' => ['int'], 'SVMModel::getSvmType' => ['int'], 'SVMModel::getSvrProbability' => ['float'], 'SVMModel::load' => ['bool', 'filename'=>'string'], 'SVMModel::predict' => ['float', 'data'=>'array'], 'SVMModel::predict_probability' => ['float', 'data'=>'array'], 'SVMModel::save' => ['bool', 'filename'=>'string'], 'svn_add' => ['bool', 'path'=>'string', 'recursive='=>'bool', 'force='=>'bool'], 'svn_auth_get_parameter' => ['string', 'key'=>'string'], 'svn_auth_set_parameter' => ['void', 'key'=>'string', 'value'=>'string'], 'svn_blame' => ['array', 'repository_url'=>'string', 'revision_no='=>'int'], 'svn_cat' => ['string', 'repos_url'=>'string', 'revision_no='=>'int'], 'svn_checkout' => ['bool', 'repos'=>'string', 'targetpath'=>'string', 'revision='=>'int', 'flags='=>'int'], 'svn_cleanup' => ['bool', 'workingdir'=>'string'], 'svn_client_version' => ['string'], 'svn_commit' => ['array', 'log'=>'string', 'targets'=>'array', 'dontrecurse='=>'bool'], 'svn_delete' => ['bool', 'path'=>'string', 'force='=>'bool'], 'svn_diff' => ['array', 'path1'=>'string', 'rev1'=>'int', 'path2'=>'string', 'rev2'=>'int'], 'svn_export' => ['bool', 'frompath'=>'string', 'topath'=>'string', 'working_copy='=>'bool', 'revision_no='=>'int'], 'svn_fs_abort_txn' => ['bool', 'txn'=>'resource'], 'svn_fs_apply_text' => ['resource', 'root'=>'resource', 'path'=>'string'], 'svn_fs_begin_txn2' => ['resource', 'repos'=>'resource', 'rev'=>'int'], 'svn_fs_change_node_prop' => ['bool', 'root'=>'resource', 'path'=>'string', 'name'=>'string', 'value'=>'string'], 'svn_fs_check_path' => ['int', 'fsroot'=>'resource', 'path'=>'string'], 'svn_fs_contents_changed' => ['bool', 'root1'=>'resource', 'path1'=>'string', 'root2'=>'resource', 'path2'=>'string'], 'svn_fs_copy' => ['bool', 'from_root'=>'resource', 'from_path'=>'string', 'to_root'=>'resource', 'to_path'=>'string'], 'svn_fs_delete' => ['bool', 'root'=>'resource', 'path'=>'string'], 'svn_fs_dir_entries' => ['array', 'fsroot'=>'resource', 'path'=>'string'], 'svn_fs_file_contents' => ['resource', 'fsroot'=>'resource', 'path'=>'string'], 'svn_fs_file_length' => ['int', 'fsroot'=>'resource', 'path'=>'string'], 'svn_fs_is_dir' => ['bool', 'root'=>'resource', 'path'=>'string'], 'svn_fs_is_file' => ['bool', 'root'=>'resource', 'path'=>'string'], 'svn_fs_make_dir' => ['bool', 'root'=>'resource', 'path'=>'string'], 'svn_fs_make_file' => ['bool', 'root'=>'resource', 'path'=>'string'], 'svn_fs_node_created_rev' => ['int', 'fsroot'=>'resource', 'path'=>'string'], 'svn_fs_node_prop' => ['string', 'fsroot'=>'resource', 'path'=>'string', 'propname'=>'string'], 'svn_fs_props_changed' => ['bool', 'root1'=>'resource', 'path1'=>'string', 'root2'=>'resource', 'path2'=>'string'], 'svn_fs_revision_prop' => ['string', 'fs'=>'resource', 'revnum'=>'int', 'propname'=>'string'], 'svn_fs_revision_root' => ['resource', 'fs'=>'resource', 'revnum'=>'int'], 'svn_fs_txn_root' => ['resource', 'txn'=>'resource'], 'svn_fs_youngest_rev' => ['int', 'fs'=>'resource'], 'svn_import' => ['bool', 'path'=>'string', 'url'=>'string', 'nonrecursive'=>'bool'], 'svn_log' => ['array', 'repos_url'=>'string', 'start_revision='=>'int', 'end_revision='=>'int', 'limit='=>'int', 'flags='=>'int'], 'svn_ls' => ['array', 'repos_url'=>'string', 'revision_no='=>'int', 'recurse='=>'bool', 'peg='=>'bool'], 'svn_mkdir' => ['bool', 'path'=>'string', 'log_message='=>'string'], 'svn_move' => ['mixed', 'src_path'=>'string', 'dst_path'=>'string', 'force='=>'bool|false'], 'svn_propget' => ['mixed', 'path'=>'string', 'property_name'=>'string', 'recurse='=>'bool|false', 'revision='=>'int'], 'svn_proplist' => ['mixed', 'path'=>'string', 'recurse='=>'bool|false', 'revision='=>'int'], 'svn_repos_create' => ['resource', 'path'=>'string', 'config='=>'array', 'fsconfig='=>'array'], 'svn_repos_fs' => ['resource', 'repos'=>'resource'], 'svn_repos_fs_begin_txn_for_commit' => ['resource', 'repos'=>'resource', 'rev'=>'int', 'author'=>'string', 'log_msg'=>'string'], 'svn_repos_fs_commit_txn' => ['int', 'txn'=>'resource'], 'svn_repos_hotcopy' => ['bool', 'repospath'=>'string', 'destpath'=>'string', 'cleanlogs'=>'bool'], 'svn_repos_open' => ['resource', 'path'=>'string'], 'svn_repos_recover' => ['bool', 'path'=>'string'], 'svn_revert' => ['bool', 'path'=>'string', 'recursive='=>'bool'], 'svn_status' => ['array', 'path'=>'string', 'flags='=>'int'], 'svn_update' => ['int', 'path'=>'string', 'revno='=>'int', 'recurse='=>'bool'], 'swf_actiongeturl' => ['', 'url'=>'string', 'target'=>'string'], 'swf_actiongotoframe' => ['', 'framenumber'=>'int'], 'swf_actiongotolabel' => ['', 'label'=>'string'], 'swf_actionnextframe' => [''], 'swf_actionplay' => [''], 'swf_actionprevframe' => [''], 'swf_actionsettarget' => ['', 'target'=>'string'], 'swf_actionstop' => [''], 'swf_actiontogglequality' => [''], 'swf_actionwaitforframe' => ['', 'framenumber'=>'int', 'skipcount'=>'int'], 'swf_addbuttonrecord' => ['', 'states'=>'int', 'shapeid'=>'int', 'depth'=>'int'], 'swf_addcolor' => ['', 'r'=>'float', 'g'=>'float', 'b'=>'float', 'a'=>'float'], 'swf_closefile' => ['', 'return_file='=>'int'], 'swf_definebitmap' => ['', 'objid'=>'int', 'image_name'=>'string'], 'swf_definefont' => ['', 'fontid'=>'int', 'fontname'=>'string'], 'swf_defineline' => ['', 'objid'=>'int', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float', 'width'=>'float'], 'swf_definepoly' => ['', 'objid'=>'int', 'coords'=>'array', 'npoints'=>'int', 'width'=>'float'], 'swf_definerect' => ['', 'objid'=>'int', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float', 'width'=>'float'], 'swf_definetext' => ['', 'objid'=>'int', 'str'=>'string', 'docenter'=>'int'], 'swf_endbutton' => [''], 'swf_enddoaction' => [''], 'swf_endshape' => [''], 'swf_endsymbol' => [''], 'swf_fontsize' => ['', 'size'=>'float'], 'swf_fontslant' => ['', 'slant'=>'float'], 'swf_fonttracking' => ['', 'tracking'=>'float'], 'swf_getbitmapinfo' => ['array', 'bitmapid'=>'int'], 'swf_getfontinfo' => ['array'], 'swf_getframe' => ['int'], 'swf_labelframe' => ['', 'name'=>'string'], 'swf_lookat' => ['', 'view_x'=>'float', 'view_y'=>'float', 'view_z'=>'float', 'reference_x'=>'float', 'reference_y'=>'float', 'reference_z'=>'float', 'twist'=>'float'], 'swf_modifyobject' => ['', 'depth'=>'int', 'how'=>'int'], 'swf_mulcolor' => ['', 'r'=>'float', 'g'=>'float', 'b'=>'float', 'a'=>'float'], 'swf_nextid' => ['int'], 'swf_oncondition' => ['', 'transition'=>'int'], 'swf_openfile' => ['', 'filename'=>'string', 'width'=>'float', 'height'=>'float', 'framerate'=>'float', 'r'=>'float', 'g'=>'float', 'b'=>'float'], 'swf_ortho' => ['', 'xmin'=>'float', 'xmax'=>'float', 'ymin'=>'float', 'ymax'=>'float', 'zmin'=>'float', 'zmax'=>'float'], 'swf_ortho2' => ['', 'xmin'=>'float', 'xmax'=>'float', 'ymin'=>'float', 'ymax'=>'float'], 'swf_perspective' => ['', 'fovy'=>'float', 'aspect'=>'float', 'near'=>'float', 'far'=>'float'], 'swf_placeobject' => ['', 'objid'=>'int', 'depth'=>'int'], 'swf_polarview' => ['', 'dist'=>'float', 'azimuth'=>'float', 'incidence'=>'float', 'twist'=>'float'], 'swf_popmatrix' => [''], 'swf_posround' => ['', 'round'=>'int'], 'swf_pushmatrix' => [''], 'swf_removeobject' => ['', 'depth'=>'int'], 'swf_rotate' => ['', 'angle'=>'float', 'axis'=>'string'], 'swf_scale' => ['', 'x'=>'float', 'y'=>'float', 'z'=>'float'], 'swf_setfont' => ['', 'fontid'=>'int'], 'swf_setframe' => ['', 'framenumber'=>'int'], 'swf_shapearc' => ['', 'x'=>'float', 'y'=>'float', 'r'=>'float', 'ang1'=>'float', 'ang2'=>'float'], 'swf_shapecurveto' => ['', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float'], 'swf_shapecurveto3' => ['', 'x1'=>'float', 'y1'=>'float', 'x2'=>'float', 'y2'=>'float', 'x3'=>'float', 'y3'=>'float'], 'swf_shapefillbitmapclip' => ['', 'bitmapid'=>'int'], 'swf_shapefillbitmaptile' => ['', 'bitmapid'=>'int'], 'swf_shapefilloff' => [''], 'swf_shapefillsolid' => ['', 'r'=>'float', 'g'=>'float', 'b'=>'float', 'a'=>'float'], 'swf_shapelinesolid' => ['', 'r'=>'float', 'g'=>'float', 'b'=>'float', 'a'=>'float', 'width'=>'float'], 'swf_shapelineto' => ['', 'x'=>'float', 'y'=>'float'], 'swf_shapemoveto' => ['', 'x'=>'float', 'y'=>'float'], 'swf_showframe' => [''], 'swf_startbutton' => ['', 'objid'=>'int', 'type'=>'int'], 'swf_startdoaction' => [''], 'swf_startshape' => ['', 'objid'=>'int'], 'swf_startsymbol' => ['', 'objid'=>'int'], 'swf_textwidth' => ['float', 'str'=>'string'], 'swf_translate' => ['', 'x'=>'float', 'y'=>'float', 'z'=>'float'], 'swf_viewport' => ['', 'xmin'=>'float', 'xmax'=>'float', 'ymin'=>'float', 'ymax'=>'float'], 'SWFAction::__construct' => ['void', 'script'=>'string'], 'SWFBitmap::__construct' => ['void', 'file'=>'', 'alphafile='=>''], 'SWFBitmap::getHeight' => ['float'], 'SWFBitmap::getWidth' => ['float'], 'SWFButton::__construct' => ['void'], 'SWFButton::addAction' => ['void', 'action'=>'swfaction', 'flags'=>'int'], 'SWFButton::addASound' => ['SWFSoundInstance', 'sound'=>'swfsound', 'flags'=>'int'], 'SWFButton::addShape' => ['void', 'shape'=>'swfshape', 'flags'=>'int'], 'SWFButton::setAction' => ['void', 'action'=>'swfaction'], 'SWFButton::setDown' => ['void', 'shape'=>'swfshape'], 'SWFButton::setHit' => ['void', 'shape'=>'swfshape'], 'SWFButton::setMenu' => ['void', 'flag'=>'int'], 'SWFButton::setOver' => ['void', 'shape'=>'swfshape'], 'SWFButton::setUp' => ['void', 'shape'=>'swfshape'], 'SWFDisplayItem::addAction' => ['void', 'action'=>'swfaction', 'flags'=>'int'], 'SWFDisplayItem::addColor' => ['void', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'a='=>'int'], 'SWFDisplayItem::endMask' => ['void'], 'SWFDisplayItem::getRot' => ['float'], 'SWFDisplayItem::getX' => ['float'], 'SWFDisplayItem::getXScale' => ['float'], 'SWFDisplayItem::getXSkew' => ['float'], 'SWFDisplayItem::getY' => ['float'], 'SWFDisplayItem::getYScale' => ['float'], 'SWFDisplayItem::getYSkew' => ['float'], 'SWFDisplayItem::move' => ['void', 'dx'=>'float', 'dy'=>'float'], 'SWFDisplayItem::moveTo' => ['void', 'x'=>'float', 'y'=>'float'], 'SWFDisplayItem::multColor' => ['void', 'red'=>'float', 'green'=>'float', 'blue'=>'float', 'a='=>'float'], 'SWFDisplayItem::remove' => ['void'], 'SWFDisplayItem::rotate' => ['void', 'angle'=>'float'], 'SWFDisplayItem::rotateTo' => ['void', 'angle'=>'float'], 'SWFDisplayItem::scale' => ['void', 'dx'=>'float', 'dy'=>'float'], 'SWFDisplayItem::scaleTo' => ['void', 'x'=>'float', 'y='=>'float'], 'SWFDisplayItem::setDepth' => ['void', 'depth'=>'int'], 'SWFDisplayItem::setMaskLevel' => ['void', 'level'=>'int'], 'SWFDisplayItem::setMatrix' => ['void', 'a'=>'float', 'b'=>'float', 'c'=>'float', 'd'=>'float', 'x'=>'float', 'y'=>'float'], 'SWFDisplayItem::setName' => ['void', 'name'=>'string'], 'SWFDisplayItem::setRatio' => ['void', 'ratio'=>'float'], 'SWFDisplayItem::skewX' => ['void', 'ddegrees'=>'float'], 'SWFDisplayItem::skewXTo' => ['void', 'degrees'=>'float'], 'SWFDisplayItem::skewY' => ['void', 'ddegrees'=>'float'], 'SWFDisplayItem::skewYTo' => ['void', 'degrees'=>'float'], 'SWFFill::moveTo' => ['void', 'x'=>'float', 'y'=>'float'], 'SWFFill::rotateTo' => ['void', 'angle'=>'float'], 'SWFFill::scaleTo' => ['void', 'x'=>'float', 'y='=>'float'], 'SWFFill::skewXTo' => ['void', 'x'=>'float'], 'SWFFill::skewYTo' => ['void', 'y'=>'float'], 'SWFFont::__construct' => ['void', 'filename'=>'string'], 'SWFFont::getAscent' => ['float'], 'SWFFont::getDescent' => ['float'], 'SWFFont::getLeading' => ['float'], 'SWFFont::getShape' => ['string', 'code'=>'int'], 'SWFFont::getUTF8Width' => ['float', 'string'=>'string'], 'SWFFont::getWidth' => ['float', 'string'=>'string'], 'SWFFontChar::addChars' => ['void', 'char'=>'string'], 'SWFFontChar::addUTF8Chars' => ['void', 'char'=>'string'], 'SWFGradient::__construct' => ['void'], 'SWFGradient::addEntry' => ['void', 'ratio'=>'float', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha='=>'int'], 'SWFMorph::__construct' => ['void'], 'SWFMorph::getShape1' => ['SWFShape'], 'SWFMorph::getShape2' => ['SWFShape'], 'SWFMovie::__construct' => ['void', 'version='=>'int'], 'SWFMovie::add' => ['mixed', 'instance'=>'object'], 'SWFMovie::addExport' => ['void', 'char'=>'swfcharacter', 'name'=>'string'], 'SWFMovie::addFont' => ['mixed', 'font'=>'swffont'], 'SWFMovie::importChar' => ['SWFSprite', 'libswf'=>'string', 'name'=>'string'], 'SWFMovie::importFont' => ['SWFFontChar', 'libswf'=>'string', 'name'=>'string'], 'SWFMovie::labelFrame' => ['void', 'label'=>'string'], 'SWFMovie::nextFrame' => ['void'], 'SWFMovie::output' => ['int', 'compression='=>'int'], 'SWFMovie::remove' => ['void', 'instance'=>'object'], 'SWFMovie::save' => ['int', 'filename'=>'string', 'compression='=>'int'], 'SWFMovie::saveToFile' => ['int', 'x'=>'resource', 'compression='=>'int'], 'SWFMovie::setbackground' => ['void', 'red'=>'int', 'green'=>'int', 'blue'=>'int'], 'SWFMovie::setDimension' => ['void', 'width'=>'float', 'height'=>'float'], 'SWFMovie::setFrames' => ['void', 'number'=>'int'], 'SWFMovie::setRate' => ['void', 'rate'=>'float'], 'SWFMovie::startSound' => ['SWFSoundInstance', 'sound'=>'swfsound'], 'SWFMovie::stopSound' => ['void', 'sound'=>'swfsound'], 'SWFMovie::streamMP3' => ['int', 'mp3file'=>'mixed', 'skip='=>'float'], 'SWFMovie::writeExports' => ['void'], 'SWFPrebuiltClip::__construct' => ['void', 'file'=>''], 'SWFShape::__construct' => ['void'], 'SWFShape::addFill' => ['SWFFill', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha='=>'int', 'bitmap='=>'swfbitmap', 'flags='=>'int', 'gradient='=>'swfgradient'], 'SWFShape::addFill\'1' => ['SWFFill', 'bitmap'=>'SWFBitmap', 'flags='=>'int'], 'SWFShape::addFill\'2' => ['SWFFill', 'gradient'=>'SWFGradient', 'flags='=>'int'], 'SWFShape::drawArc' => ['void', 'r'=>'float', 'startangle'=>'float', 'endangle'=>'float'], 'SWFShape::drawCircle' => ['void', 'r'=>'float'], 'SWFShape::drawCubic' => ['int', 'bx'=>'float', 'by'=>'float', 'cx'=>'float', 'cy'=>'float', 'dx'=>'float', 'dy'=>'float'], 'SWFShape::drawCubicTo' => ['int', 'bx'=>'float', 'by'=>'float', 'cx'=>'float', 'cy'=>'float', 'dx'=>'float', 'dy'=>'float'], 'SWFShape::drawCurve' => ['int', 'controldx'=>'float', 'controldy'=>'float', 'anchordx'=>'float', 'anchordy'=>'float', 'targetdx='=>'float', 'targetdy='=>'float'], 'SWFShape::drawCurveTo' => ['int', 'controlx'=>'float', 'controly'=>'float', 'anchorx'=>'float', 'anchory'=>'float', 'targetx='=>'float', 'targety='=>'float'], 'SWFShape::drawGlyph' => ['void', 'font'=>'swffont', 'character'=>'string', 'size='=>'int'], 'SWFShape::drawLine' => ['void', 'dx'=>'float', 'dy'=>'float'], 'SWFShape::drawLineTo' => ['void', 'x'=>'float', 'y'=>'float'], 'SWFShape::movePen' => ['void', 'dx'=>'float', 'dy'=>'float'], 'SWFShape::movePenTo' => ['void', 'x'=>'float', 'y'=>'float'], 'SWFShape::setLeftFill' => ['', 'fill'=>'swfgradient', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'a='=>'int'], 'SWFShape::setLine' => ['', 'shape'=>'swfshape', 'width'=>'int', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'a='=>'int'], 'SWFShape::setRightFill' => ['', 'fill'=>'swfgradient', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'a='=>'int'], 'SWFSound' => ['SWFSound', 'filename'=>'string', 'flags='=>'int'], 'SWFSound::__construct' => ['void', 'filename'=>'string', 'flags='=>'int'], 'SWFSoundInstance::loopCount' => ['void', 'point'=>'int'], 'SWFSoundInstance::loopInPoint' => ['void', 'point'=>'int'], 'SWFSoundInstance::loopOutPoint' => ['void', 'point'=>'int'], 'SWFSoundInstance::noMultiple' => ['void'], 'SWFSprite::__construct' => ['void'], 'SWFSprite::add' => ['void', 'object'=>'object'], 'SWFSprite::labelFrame' => ['void', 'label'=>'string'], 'SWFSprite::nextFrame' => ['void'], 'SWFSprite::remove' => ['void', 'object'=>'object'], 'SWFSprite::setFrames' => ['void', 'number'=>'int'], 'SWFSprite::startSound' => ['SWFSoundInstance', 'sount'=>'swfsound'], 'SWFSprite::stopSound' => ['void', 'sount'=>'swfsound'], 'SWFText::__construct' => ['void'], 'SWFText::addString' => ['void', 'string'=>'string'], 'SWFText::addUTF8String' => ['void', 'text'=>'string'], 'SWFText::getAscent' => ['float'], 'SWFText::getDescent' => ['float'], 'SWFText::getLeading' => ['float'], 'SWFText::getUTF8Width' => ['float', 'string'=>'string'], 'SWFText::getWidth' => ['float', 'string'=>'string'], 'SWFText::moveTo' => ['void', 'x'=>'float', 'y'=>'float'], 'SWFText::setColor' => ['void', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'a='=>'int'], 'SWFText::setFont' => ['void', 'font'=>'swffont'], 'SWFText::setHeight' => ['void', 'height'=>'float'], 'SWFText::setSpacing' => ['void', 'spacing'=>'float'], 'SWFTextField::__construct' => ['void', 'flags='=>'int'], 'SWFTextField::addChars' => ['void', 'chars'=>'string'], 'SWFTextField::addString' => ['void', 'string'=>'string'], 'SWFTextField::align' => ['void', 'alignement'=>'int'], 'SWFTextField::setBounds' => ['void', 'width'=>'float', 'height'=>'float'], 'SWFTextField::setColor' => ['void', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'a='=>'int'], 'SWFTextField::setFont' => ['void', 'font'=>'swffont'], 'SWFTextField::setHeight' => ['void', 'height'=>'float'], 'SWFTextField::setIndentation' => ['void', 'width'=>'float'], 'SWFTextField::setLeftMargin' => ['void', 'width'=>'float'], 'SWFTextField::setLineSpacing' => ['void', 'height'=>'float'], 'SWFTextField::setMargins' => ['void', 'left'=>'float', 'right'=>'float'], 'SWFTextField::setName' => ['void', 'name'=>'string'], 'SWFTextField::setPadding' => ['void', 'padding'=>'float'], 'SWFTextField::setRightMargin' => ['void', 'width'=>'float'], 'SWFVideoStream::__construct' => ['void', 'file='=>'string'], 'SWFVideoStream::getNumFrames' => ['int'], 'SWFVideoStream::setDimension' => ['void', 'x'=>'int', 'y'=>'int'], 'Swish::__construct' => ['void', 'index_names'=>'string'], 'Swish::getMetaList' => ['array', 'index_name'=>'string'], 'Swish::getPropertyList' => ['array', 'index_name'=>'string'], 'Swish::prepare' => ['object', 'query='=>'string'], 'Swish::query' => ['object', 'query'=>'string'], 'SwishResult::getMetaList' => ['array'], 'SwishResult::stem' => ['array', 'word'=>'string'], 'SwishResults::getParsedWords' => ['array', 'index_name'=>'string'], 'SwishResults::getRemovedStopwords' => ['array', 'index_name'=>'string'], 'SwishResults::nextResult' => ['object'], 'SwishResults::seekResult' => ['int', 'position'=>'int'], 'SwishSearch::execute' => ['object', 'query='=>'string'], 'SwishSearch::resetLimit' => [''], 'SwishSearch::setLimit' => ['', 'property'=>'string', 'low'=>'string', 'high'=>'string'], 'SwishSearch::setPhraseDelimiter' => ['', 'delimiter'=>'string'], 'SwishSearch::setSort' => ['', 'sort'=>'string'], 'SwishSearch::setStructure' => ['', 'structure'=>'int'], 'swoole_async_dns_lookup' => ['bool', 'hostname'=>'string', 'callback'=>'callable'], 'swoole_async_read' => ['bool', 'filename'=>'string', 'callback'=>'callable', 'chunk_size='=>'int', 'offset='=>'int'], 'swoole_async_readfile' => ['bool', 'filename'=>'string', 'callback'=>'string'], 'swoole_async_set' => ['void', 'settings'=>'array'], 'swoole_async_write' => ['bool', 'filename'=>'string', 'content'=>'string', 'offset='=>'int', 'callback='=>'callable'], 'swoole_async_writefile' => ['bool', 'filename'=>'string', 'content'=>'string', 'callback='=>'callable', 'flags='=>'int'], 'swoole_client_select' => ['int', 'read_array'=>'array', 'write_array'=>'array', 'error_array'=>'array', 'timeout='=>'float'], 'swoole_cpu_num' => ['int'], 'swoole_errno' => ['int'], 'swoole_event_add' => ['int', 'fd'=>'int', 'read_callback='=>'callable', 'write_callback='=>'callable', 'events='=>'int'], 'swoole_event_defer' => ['bool', 'callback'=>'callable'], 'swoole_event_del' => ['bool', 'fd'=>'int'], 'swoole_event_exit' => ['void'], 'swoole_event_set' => ['bool', 'fd'=>'int', 'read_callback='=>'callable', 'write_callback='=>'callable', 'events='=>'int'], 'swoole_event_wait' => ['void'], 'swoole_event_write' => ['bool', 'fd'=>'int', 'data'=>'string'], 'swoole_get_local_ip' => ['array'], 'swoole_last_error' => ['int'], 'swoole_load_module' => ['mixed', 'filename'=>'string'], 'swoole_select' => ['int', 'read_array'=>'array', 'write_array'=>'array', 'error_array'=>'array', 'timeout='=>'float'], 'swoole_set_process_name' => ['void', 'process_name'=>'string', 'size='=>'int'], 'swoole_strerror' => ['string', 'errno'=>'int', 'error_type='=>'int'], 'swoole_timer_after' => ['int', 'ms'=>'int', 'callback'=>'callable', 'param='=>'mixed'], 'swoole_timer_exists' => ['bool', 'timer_id'=>'int'], 'swoole_timer_tick' => ['int', 'ms'=>'int', 'callback'=>'callable', 'param='=>'mixed'], 'swoole_version' => ['string'], 'sybase_affected_rows' => ['int', 'link_identifier='=>'resource'], 'sybase_close' => ['bool', 'link_identifier='=>'resource'], 'sybase_connect' => ['resource', 'servername='=>'string', 'username='=>'string', 'password='=>'string', 'charset='=>'string', 'appname='=>'string', 'new='=>'bool'], 'sybase_data_seek' => ['bool', 'result_identifier'=>'resource', 'row_number'=>'int'], 'sybase_deadlock_retry_count' => ['void', 'retry_count'=>'int'], 'sybase_fetch_array' => ['array', 'result'=>'resource'], 'sybase_fetch_assoc' => ['array', 'result'=>'resource'], 'sybase_fetch_field' => ['object', 'result'=>'resource', 'field_offset='=>'int'], 'sybase_fetch_object' => ['object', 'result'=>'resource', 'object='=>'mixed'], 'sybase_fetch_row' => ['array|false', 'result'=>'resource'], 'sybase_field_seek' => ['bool', 'result'=>'resource', 'field_offset'=>'int'], 'sybase_free_result' => ['bool', 'result'=>'resource'], 'sybase_get_last_message' => ['string'], 'sybase_min_client_severity' => ['void', 'severity'=>'int'], 'sybase_min_error_severity' => ['void', 'severity'=>'int'], 'sybase_min_message_severity' => ['void', 'severity'=>'int'], 'sybase_min_server_severity' => ['void', 'severity'=>'int'], 'sybase_num_fields' => ['int', 'result'=>'resource'], 'sybase_num_rows' => ['int', 'result'=>'resource'], 'sybase_pconnect' => ['resource|false', 'servername='=>'string', 'username='=>'string', 'password='=>'string', 'charset='=>'string', 'appname='=>'string'], 'sybase_query' => ['mixed', 'query'=>'string', 'link_identifier='=>'resource'], 'sybase_result' => ['string', 'result'=>'resource', 'row'=>'int', 'field'=>'mixed'], 'sybase_select_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'], 'sybase_set_message_handler' => ['bool', 'handler'=>'callable', 'connection='=>'resource'], 'sybase_unbuffered_query' => ['resource|false', 'query'=>'string', 'link_identifier'=>'resource', 'store_result='=>'bool'], 'symbolObj::__construct' => ['void', 'map'=>'mapObj', 'symbolname'=>'string'], 'symbolObj::free' => ['void'], 'symbolObj::getPatternArray' => ['array'], 'symbolObj::getPointsArray' => ['array'], 'symbolObj::ms_newSymbolObj' => ['int', 'map'=>'mapObj', 'symbolname'=>'string'], 'symbolObj::set' => ['int', 'property_name'=>'string', 'new_value'=>''], 'symbolObj::setImagePath' => ['int', 'filename'=>'string'], 'symbolObj::setPattern' => ['int', 'int'=>'array'], 'symbolObj::setPoints' => ['int', 'double'=>'array'], 'symlink' => ['bool', 'target'=>'string', 'link'=>'string'], 'SyncEvent::__construct' => ['void', 'name='=>'string', 'manual='=>'bool'], 'SyncEvent::fire' => ['bool'], 'SyncEvent::reset' => ['bool'], 'SyncEvent::wait' => ['bool', 'wait='=>'int'], 'SyncMutex::__construct' => ['void', 'name='=>'string'], 'SyncMutex::lock' => ['bool', 'wait='=>'int'], 'SyncMutex::unlock' => ['bool', 'all='=>'bool'], 'SyncReaderWriter::__construct' => ['void', 'name='=>'string', 'autounlock='=>'bool'], 'SyncReaderWriter::readlock' => ['bool', 'wait='=>'int'], 'SyncReaderWriter::readunlock' => ['bool'], 'SyncReaderWriter::writelock' => ['bool', 'wait='=>'int'], 'SyncReaderWriter::writeunlock' => ['bool'], 'SyncSemaphore::__construct' => ['void', 'name='=>'string', 'initialval='=>'int', 'autounlock='=>'bool'], 'SyncSemaphore::lock' => ['bool', 'wait='=>'int'], 'SyncSemaphore::unlock' => ['bool', '&w_prevcount='=>'int'], 'SyncSharedMemory::__construct' => ['void', 'name'=>'string', 'size'=>'int'], 'SyncSharedMemory::first' => ['bool'], 'SyncSharedMemory::read' => ['', 'start='=>'int', 'length='=>'int'], 'SyncSharedMemory::size' => ['bool'], 'SyncSharedMemory::write' => ['', 'string='=>'string', 'start='=>'int'], 'sys_get_temp_dir' => ['string'], 'sys_getloadavg' => ['array|false'], 'syslog' => ['bool', 'priority'=>'int', 'message'=>'string'], 'system' => ['string|false', 'command'=>'string', '&w_return_value='=>'int'], 'taint' => ['bool', '&rw_string'=>'string', '&...w_other_strings='=>'string'], 'tan' => ['float', 'number'=>'float'], 'tanh' => ['float', 'number'=>'float'], 'tcpwrap_check' => ['bool', 'daemon'=>'string', 'address'=>'string', 'user='=>'string', 'nodns='=>'bool'], 'tempnam' => ['__benevolent', 'dir'=>'string', 'prefix'=>'string'], 'textdomain' => ['string', 'domain'=>'string'], 'Thread::__construct' => ['void'], 'Thread::chunk' => ['array', 'size'=>'int', 'preserve'=>'bool'], 'Thread::count' => ['0|positive-int'], 'Thread::getCreatorId' => ['int'], 'Thread::getCurrentThread' => ['Thread|null'], 'Thread::getCurrentThreadId' => ['int'], 'Thread::getThreadId' => ['int'], 'Thread::isJoined' => ['bool'], 'Thread::isRunning' => ['bool'], 'Thread::isStarted' => ['bool'], 'Thread::isTerminated' => ['bool'], 'Thread::join' => ['bool'], 'Thread::merge' => ['bool', 'from'=>'', 'overwrite='=>'mixed'], 'Thread::notify' => ['bool'], 'Thread::notifyOne' => ['bool'], 'Thread::offsetExists' => ['bool', 'offset'=>'mixed'], 'Thread::offsetGet' => ['mixed', 'offset'=>'mixed'], 'Thread::offsetSet' => ['void', 'offset'=>'mixed', 'value'=>'mixed'], 'Thread::offsetUnset' => ['void', 'offset'=>'mixed'], 'Thread::pop' => ['bool'], 'Thread::run' => ['void'], 'Thread::shift' => ['bool'], 'Thread::start' => ['bool', 'options='=>'int'], 'Thread::synchronized' => ['mixed', 'block'=>'Closure', '_='=>'mixed'], 'Thread::wait' => ['bool', 'timeout='=>'int'], 'Threaded::__construct' => ['void'], 'Threaded::chunk' => ['array', 'size'=>'int', 'preserve'=>'bool'], 'Threaded::count' => ['0|positive-int'], 'Threaded::extend' => ['bool', 'class'=>'string'], 'Threaded::isRunning' => ['bool'], 'Threaded::isTerminated' => ['bool'], 'Threaded::merge' => ['bool', 'from'=>'mixed', 'overwrite='=>'bool'], 'Threaded::notify' => ['bool'], 'Threaded::notifyOne' => ['bool'], 'Threaded::offsetExists' => ['bool', 'offset'=>'mixed'], 'Threaded::offsetGet' => ['mixed', 'offset'=>'mixed'], 'Threaded::offsetSet' => ['void', 'offset'=>'mixed', 'value'=>'mixed'], 'Threaded::offsetUnset' => ['void', 'offset'=>'mixed'], 'Threaded::pop' => ['bool'], 'Threaded::run' => ['void'], 'Threaded::shift' => ['mixed'], 'Threaded::synchronized' => ['mixed', 'block'=>'Closure', '...args='=>'mixed'], 'Threaded::wait' => ['bool', 'timeout='=>'int'], 'Throwable::__toString' => ['string'], 'Throwable::getCode' => ['mixed'], 'Throwable::getFile' => ['string'], 'Throwable::getLine' => ['int'], 'Throwable::getMessage' => ['string'], 'Throwable::getPrevious' => ['Throwable|null'], 'Throwable::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'Throwable::getTraceAsString' => ['string'], 'tidy::__construct' => ['void', 'filename='=>'string', 'config='=>'', 'encoding='=>'string', 'use_include_path='=>'bool'], 'tidy::body' => ['tidyNode'], 'tidy::cleanRepair' => ['bool'], 'tidy::diagnose' => ['bool'], 'tidy::getConfig' => ['array'], 'tidy::getHtmlVer' => ['int'], 'tidy::getOpt' => ['', 'option'=>'string'], 'tidy::getOptDoc' => ['string', 'optname'=>'string'], 'tidy::getRelease' => ['string'], 'tidy::getStatus' => ['int'], 'tidy::head' => ['tidyNode'], 'tidy::html' => ['tidyNode'], 'tidy::htmlver' => ['int'], 'tidy::isXhtml' => ['bool'], 'tidy::isXml' => ['bool'], 'tidy::parseFile' => ['bool', 'filename'=>'string', 'config='=>'mixed', 'encoding='=>'string', 'use_include_path='=>'bool'], 'tidy::parseString' => ['bool', 'input'=>'string', 'config='=>'mixed', 'encoding='=>'string'], 'tidy::repairFile' => ['string', 'filename'=>'string', 'config='=>'mixed', 'encoding='=>'string', 'use_include_path='=>'bool'], 'tidy::repairString' => ['string', 'data'=>'string', 'config='=>'mixed', 'encoding='=>'string'], 'tidy::root' => ['tidyNode'], 'tidy_access_count' => ['int', 'obj'=>'tidy'], 'tidy_clean_repair' => ['bool', 'obj'=>'tidy'], 'tidy_config_count' => ['int', 'obj'=>'tidy'], 'tidy_diagnose' => ['bool', 'obj'=>'tidy'], 'tidy_error_count' => ['int', 'obj'=>'tidy'], 'tidy_get_body' => ['tidyNode', 'obj'=>'tidy'], 'tidy_get_config' => ['array', 'obj'=>'tidy'], 'tidy_get_error_buffer' => ['string|false', 'obj'=>'tidy'], 'tidy_get_head' => ['tidyNode', 'obj'=>'tidy'], 'tidy_get_html' => ['tidyNode', 'obj'=>'tidy'], 'tidy_get_html_ver' => ['int', 'obj'=>'tidy'], 'tidy_get_opt_doc' => ['string|false', 'obj'=>'tidy', 'optname'=>'string'], 'tidy_get_output' => ['string', 'obj'=>'tidy'], 'tidy_get_release' => ['string'], 'tidy_get_root' => ['tidyNode', 'obj'=>'tidy'], 'tidy_get_status' => ['int', 'obj'=>'tidy'], 'tidy_getopt' => ['mixed', 'option'=>'string', 'obj'=>'tidy'], 'tidy_is_xhtml' => ['bool', 'obj'=>'tidy'], 'tidy_is_xml' => ['bool', 'obj'=>'tidy'], 'tidy_load_config' => ['void', 'filename'=>'string', 'encoding'=>'string'], 'tidy_parse_file' => ['tidy|false', 'file'=>'string', 'config_options='=>'', 'encoding='=>'string', 'use_include_path='=>'bool'], 'tidy_parse_string' => ['tidy|false', 'input'=>'string', 'config_options='=>'', 'encoding='=>'string'], 'tidy_repair_file' => ['string|false', 'filename'=>'string', 'config_file='=>'', 'encoding='=>'string', 'use_include_path='=>'bool'], 'tidy_repair_string' => ['string|false', 'data'=>'string', 'config_file='=>'', 'encoding='=>'string'], 'tidy_reset_config' => ['bool'], 'tidy_save_config' => ['bool', 'filename'=>'string'], 'tidy_set_encoding' => ['bool', 'encoding'=>'string'], 'tidy_setopt' => ['bool', 'option'=>'string', 'value'=>'mixed'], 'tidy_warning_count' => ['int', 'obj'=>'tidy'], 'tidyNode::__construct' => ['void'], 'tidyNode::getParent' => ['tidyNode'], 'tidyNode::hasChildren' => ['bool'], 'tidyNode::hasSiblings' => ['bool'], 'tidyNode::isAsp' => ['bool'], 'tidyNode::isComment' => ['bool'], 'tidyNode::isHtml' => ['bool'], 'tidyNode::isJste' => ['bool'], 'tidyNode::isPhp' => ['bool'], 'tidyNode::isText' => ['bool'], 'time' => ['positive-int'], 'time_nanosleep' => ['array{seconds:0|positive-int,nanoseconds:0|positive-int}|bool', 'seconds'=>'int', 'nanoseconds'=>'int'], 'time_sleep_until' => ['bool', 'timestamp'=>'float'], 'timezone_abbreviations_list' => ['array>'], 'timezone_identifiers_list' => ['list', 'what='=>'int', 'country='=>'?string'], 'timezone_location_get' => ['array{country_code: string, latitude: float, longitude: float, comments: string}|false', 'object'=>'DateTimeZone'], 'timezone_name_from_abbr' => ['string|false', 'abbr'=>'string', 'gmtoffset='=>'int', 'isdst='=>'int'], 'timezone_name_get' => ['string', 'object'=>'DateTimeZone'], 'timezone_offset_get' => ['int', 'object'=>'DateTimeZone', 'datetime'=>'DateTime'], 'timezone_open' => ['DateTimeZone|false', 'timezone'=>'string'], 'timezone_transitions_get' => ['list|false', 'object'=>'DateTimeZone', 'timestamp_begin='=>'int', 'timestamp_end='=>'int'], 'timezone_version_get' => ['string'], 'tmpfile' => ['__benevolent'], 'token_get_all' => ['list', 'source'=>'string', 'flags='=>'int'], 'token_name' => ['non-falsy-string', 'type'=>'int'], 'TokyoTyrant::__construct' => ['void', 'host='=>'string', 'port='=>'int', 'options='=>'array'], 'TokyoTyrant::add' => ['int|float', 'key'=>'string', 'increment'=>'float', 'type='=>'int'], 'TokyoTyrant::connect' => ['TokyoTyrant', 'host'=>'string', 'port='=>'int', 'options='=>'array'], 'TokyoTyrant::connectUri' => ['TokyoTyrant', 'uri'=>'string'], 'TokyoTyrant::copy' => ['TokyoTyrant', 'path'=>'string'], 'TokyoTyrant::ext' => ['string', 'name'=>'string', 'options'=>'int', 'key'=>'string', 'value'=>'string'], 'TokyoTyrant::fwmKeys' => ['array', 'prefix'=>'string', 'max_recs'=>'int'], 'TokyoTyrant::get' => ['array', 'keys'=>'mixed'], 'TokyoTyrant::getIterator' => ['TokyoTyrantIterator'], 'TokyoTyrant::num' => ['int'], 'TokyoTyrant::out' => ['string', 'keys'=>'mixed'], 'TokyoTyrant::put' => ['TokyoTyrant', 'keys'=>'mixed', 'value='=>'string'], 'TokyoTyrant::putCat' => ['TokyoTyrant', 'keys'=>'mixed', 'value='=>'string'], 'TokyoTyrant::putKeep' => ['TokyoTyrant', 'keys'=>'mixed', 'value='=>'string'], 'TokyoTyrant::putNr' => ['TokyoTyrant', 'keys'=>'mixed', 'value='=>'string'], 'TokyoTyrant::putShl' => ['mixed', 'key'=>'string', 'value'=>'string', 'width'=>'int'], 'TokyoTyrant::restore' => ['mixed', 'log_dir'=>'string', 'timestamp'=>'int', 'check_consistency='=>'bool'], 'TokyoTyrant::setMaster' => ['mixed', 'host'=>'string', 'port'=>'int', 'timestamp'=>'int', 'check_consistency='=>'bool'], 'TokyoTyrant::size' => ['int', 'key'=>'string'], 'TokyoTyrant::stat' => ['array'], 'TokyoTyrant::sync' => ['mixed'], 'TokyoTyrant::tune' => ['TokyoTyrant', 'timeout'=>'float', 'options='=>'int'], 'TokyoTyrant::vanish' => ['mixed'], 'TokyoTyrantIterator::__construct' => ['void', 'object'=>'mixed'], 'TokyoTyrantIterator::current' => ['mixed'], 'TokyoTyrantIterator::key' => ['mixed'], 'TokyoTyrantIterator::next' => ['mixed'], 'TokyoTyrantIterator::rewind' => ['void'], 'TokyoTyrantIterator::valid' => ['bool'], 'TokyoTyrantQuery::__construct' => ['void', 'table'=>'TokyoTyrantTable'], 'TokyoTyrantQuery::addCond' => ['mixed', 'name'=>'string', 'op'=>'int', 'expr'=>'string'], 'TokyoTyrantQuery::count' => ['0|positive-int'], 'TokyoTyrantQuery::current' => ['array'], 'TokyoTyrantQuery::hint' => ['string'], 'TokyoTyrantQuery::key' => ['string'], 'TokyoTyrantQuery::metaSearch' => ['array', 'queries'=>'array', 'type'=>'int'], 'TokyoTyrantQuery::next' => ['array'], 'TokyoTyrantQuery::out' => ['TokyoTyrantQuery'], 'TokyoTyrantQuery::rewind' => ['bool'], 'TokyoTyrantQuery::search' => ['array'], 'TokyoTyrantQuery::setLimit' => ['mixed', 'max='=>'int', 'skip='=>'int'], 'TokyoTyrantQuery::setOrder' => ['mixed', 'name'=>'string', 'type'=>'int'], 'TokyoTyrantQuery::valid' => ['bool'], 'TokyoTyrantTable::add' => ['void', 'key'=>'string', 'increment'=>'mixed', 'type='=>'string'], 'TokyoTyrantTable::genUid' => ['int'], 'TokyoTyrantTable::get' => ['array', 'keys'=>'mixed'], 'TokyoTyrantTable::getIterator' => ['TokyoTyrantIterator'], 'TokyoTyrantTable::getQuery' => ['TokyoTyrantQuery'], 'TokyoTyrantTable::out' => ['void', 'keys'=>'mixed'], 'TokyoTyrantTable::put' => ['int', 'key'=>'string', 'columns'=>'array'], 'TokyoTyrantTable::putCat' => ['void', 'key'=>'string', 'columns'=>'array'], 'TokyoTyrantTable::putKeep' => ['void', 'key'=>'string', 'columns'=>'array'], 'TokyoTyrantTable::putNr' => ['void', 'keys'=>'mixed', 'value='=>'string'], 'TokyoTyrantTable::putShl' => ['void', 'key'=>'string', 'value'=>'string', 'width'=>'int'], 'TokyoTyrantTable::setIndex' => ['mixed', 'column'=>'string', 'type'=>'int'], 'touch' => ['bool', 'filename'=>'string', 'time='=>'int', 'atime='=>'int'], 'trader_acos' => ['array', 'real'=>'array'], 'trader_ad' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'volume'=>'array'], 'trader_add' => ['array', 'real0'=>'array', 'real1'=>'array'], 'trader_adosc' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'volume'=>'array', 'fastPeriod='=>'int', 'slowPeriod='=>'int'], 'trader_adx' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'timePeriod='=>'int'], 'trader_adxr' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'timePeriod='=>'int'], 'trader_apo' => ['array', 'real'=>'array', 'fastPeriod='=>'int', 'slowPeriod='=>'int', 'mAType='=>'int'], 'trader_aroon' => ['array', 'high'=>'array', 'low'=>'array', 'timePeriod='=>'int'], 'trader_aroonosc' => ['array', 'high'=>'array', 'low'=>'array', 'timePeriod='=>'int'], 'trader_asin' => ['array', 'real'=>'array'], 'trader_atan' => ['array', 'real'=>'array'], 'trader_atr' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'timePeriod='=>'int'], 'trader_avgprice' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_bbands' => ['array', 'real'=>'array', 'timePeriod='=>'int', 'nbDevUp='=>'float', 'nbDevDn='=>'float', 'mAType='=>'int'], 'trader_beta' => ['array', 'real0'=>'array', 'real1'=>'array', 'timePeriod='=>'int'], 'trader_bop' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cci' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'timePeriod='=>'int'], 'trader_cdl2crows' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdl3blackcrows' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdl3inside' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdl3linestrike' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdl3outside' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdl3starsinsouth' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdl3whitesoldiers' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlabandonedbaby' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'penetration='=>'float'], 'trader_cdladvanceblock' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlbelthold' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlbreakaway' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlclosingmarubozu' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlconcealbabyswall' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlcounterattack' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdldarkcloudcover' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'penetration='=>'float'], 'trader_cdldoji' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdldojistar' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdldragonflydoji' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlengulfing' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdleveningdojistar' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'penetration='=>'float'], 'trader_cdleveningstar' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'penetration='=>'float'], 'trader_cdlgapsidesidewhite' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlgravestonedoji' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlhammer' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlhangingman' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlharami' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlharamicross' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlhighwave' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlhikkake' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlhikkakemod' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlhomingpigeon' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlidentical3crows' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlinneck' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlinvertedhammer' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlkicking' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlkickingbylength' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlladderbottom' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdllongleggeddoji' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdllongline' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlmarubozu' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlmatchinglow' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlmathold' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'penetration='=>'float'], 'trader_cdlmorningdojistar' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'penetration='=>'float'], 'trader_cdlmorningstar' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'penetration='=>'float'], 'trader_cdlonneck' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlpiercing' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlrickshawman' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlrisefall3methods' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlseparatinglines' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlshootingstar' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlshortline' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlspinningtop' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlstalledpattern' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlsticksandwich' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdltakuri' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdltasukigap' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlthrusting' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdltristar' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlunique3river' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlupsidegap2crows' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_cdlxsidegap3methods' => ['array', 'open'=>'array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_ceil' => ['array', 'real'=>'array'], 'trader_cmo' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_correl' => ['array', 'real0'=>'array', 'real1'=>'array', 'timePeriod='=>'int'], 'trader_cos' => ['array', 'real'=>'array'], 'trader_cosh' => ['array', 'real'=>'array'], 'trader_dema' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_div' => ['array', 'real0'=>'array', 'real1'=>'array'], 'trader_dx' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'timePeriod='=>'int'], 'trader_ema' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_errno' => ['int'], 'trader_exp' => ['array', 'real'=>'array'], 'trader_floor' => ['array', 'real'=>'array'], 'trader_get_compat' => ['int'], 'trader_get_unstable_period' => ['int', 'functionId'=>'int'], 'trader_ht_dcperiod' => ['array', 'real'=>'array'], 'trader_ht_dcphase' => ['array', 'real'=>'array'], 'trader_ht_phasor' => ['array', 'real'=>'array'], 'trader_ht_sine' => ['array', 'real'=>'array'], 'trader_ht_trendline' => ['array', 'real'=>'array'], 'trader_ht_trendmode' => ['array', 'real'=>'array'], 'trader_kama' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_linearreg' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_linearreg_angle' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_linearreg_intercept' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_linearreg_slope' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_ln' => ['array', 'real'=>'array'], 'trader_log10' => ['array', 'real'=>'array'], 'trader_ma' => ['array', 'real'=>'array', 'timePeriod='=>'int', 'mAType='=>'int'], 'trader_macd' => ['array', 'real'=>'array', 'fastPeriod='=>'int', 'slowPeriod='=>'int', 'signalPeriod='=>'int'], 'trader_macdext' => ['array', 'real'=>'array', 'fastPeriod='=>'int', 'fastMAType='=>'int', 'slowPeriod='=>'int', 'slowMAType='=>'int', 'signalPeriod='=>'int', 'signalMAType='=>'int'], 'trader_macdfix' => ['array', 'real'=>'array', 'signalPeriod='=>'int'], 'trader_mama' => ['array', 'real'=>'array', 'fastLimit='=>'float', 'slowLimit='=>'float'], 'trader_mavp' => ['array', 'real'=>'array', 'periods'=>'array', 'minPeriod='=>'int', 'maxPeriod='=>'int', 'mAType='=>'int'], 'trader_max' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_maxindex' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_medprice' => ['array', 'high'=>'array', 'low'=>'array'], 'trader_mfi' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'volume'=>'array', 'timePeriod='=>'int'], 'trader_midpoint' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_midprice' => ['array', 'high'=>'array', 'low'=>'array', 'timePeriod='=>'int'], 'trader_min' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_minindex' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_minmax' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_minmaxindex' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_minus_di' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'timePeriod='=>'int'], 'trader_minus_dm' => ['array', 'high'=>'array', 'low'=>'array', 'timePeriod='=>'int'], 'trader_mom' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_mult' => ['array', 'real0'=>'array', 'real1'=>'array'], 'trader_natr' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'timePeriod='=>'int'], 'trader_obv' => ['array', 'real'=>'array', 'volume'=>'array'], 'trader_plus_di' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'timePeriod='=>'int'], 'trader_plus_dm' => ['array', 'high'=>'array', 'low'=>'array', 'timePeriod='=>'int'], 'trader_ppo' => ['array', 'real'=>'array', 'fastPeriod='=>'int', 'slowPeriod='=>'int', 'mAType='=>'int'], 'trader_roc' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_rocp' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_rocr' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_rocr100' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_rsi' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_sar' => ['array', 'high'=>'array', 'low'=>'array', 'acceleration='=>'float', 'maximum='=>'float'], 'trader_sarext' => ['array', 'high'=>'array', 'low'=>'array', 'startValue='=>'float', 'offsetOnReverse='=>'float', 'accelerationInitLong='=>'float', 'accelerationLong='=>'float', 'accelerationMaxLong='=>'float', 'accelerationInitShort='=>'float', 'accelerationShort='=>'float', 'accelerationMaxShort='=>'float'], 'trader_set_compat' => ['void', 'compatId'=>'int'], 'trader_set_unstable_period' => ['void', 'functionId'=>'int', 'timePeriod'=>'int'], 'trader_sin' => ['array', 'real'=>'array'], 'trader_sinh' => ['array', 'real'=>'array'], 'trader_sma' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_sqrt' => ['array', 'real'=>'array'], 'trader_stddev' => ['array', 'real'=>'array', 'timePeriod='=>'int', 'nbDev='=>'float'], 'trader_stoch' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'fastK_Period='=>'int', 'slowK_Period='=>'int', 'slowK_MAType='=>'int', 'slowD_Period='=>'int', 'slowD_MAType='=>'int'], 'trader_stochf' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'fastK_Period='=>'int', 'fastD_Period='=>'int', 'fastD_MAType='=>'int'], 'trader_stochrsi' => ['array', 'real'=>'array', 'timePeriod='=>'int', 'fastK_Period='=>'int', 'fastD_Period='=>'int', 'fastD_MAType='=>'int'], 'trader_sub' => ['array', 'real0'=>'array', 'real1'=>'array'], 'trader_sum' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_t3' => ['array', 'real'=>'array', 'timePeriod='=>'int', 'vFactor='=>'float'], 'trader_tan' => ['array', 'real'=>'array'], 'trader_tanh' => ['array', 'real'=>'array'], 'trader_tema' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_trange' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_trima' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_trix' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_tsf' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trader_typprice' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_ultosc' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'timePeriod1='=>'int', 'timePeriod2='=>'int', 'timePeriod3='=>'int'], 'trader_var' => ['array', 'real'=>'array', 'timePeriod='=>'int', 'nbDev='=>'float'], 'trader_wclprice' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array'], 'trader_willr' => ['array', 'high'=>'array', 'low'=>'array', 'close'=>'array', 'timePeriod='=>'int'], 'trader_wma' => ['array', 'real'=>'array', 'timePeriod='=>'int'], 'trait_exists' => ['bool', 'traitname'=>'string', 'autoload='=>'bool'], 'Transliterator::create' => ['?Transliterator', 'id'=>'string', 'direction='=>'int'], 'Transliterator::createFromRules' => ['?Transliterator', 'rules'=>'string', 'direction='=>'int'], 'Transliterator::createInverse' => ['?Transliterator'], 'Transliterator::getErrorCode' => ['int|false'], 'Transliterator::getErrorMessage' => ['string|false'], 'Transliterator::listIDs' => ['list|false'], 'Transliterator::transliterate' => ['string|false', 'subject'=>'string', 'start='=>'int', 'end='=>'int'], 'transliterator_create' => ['?Transliterator', 'id'=>'string', 'direction='=>'int'], 'transliterator_create_from_rules' => ['?Transliterator', 'rules'=>'string', 'direction='=>'int'], 'transliterator_create_inverse' => ['?Transliterator', 'obj'=>'Transliterator'], 'transliterator_get_error_code' => ['int|false', 'obj'=>'Transliterator'], 'transliterator_get_error_message' => ['string|false', 'obj'=>'Transliterator'], 'transliterator_list_ids' => ['list|false'], 'transliterator_transliterate' => ['string|false', 'obj'=>'Transliterator|string', 'subject'=>'string', 'start='=>'int', 'end='=>'int'], 'trigger_error' => ['bool', 'message'=>'string', 'error_type='=>'int'], 'trim' => ['string', 'str'=>'string', 'character_mask='=>'string'], 'TypeError::__clone' => ['void'], 'TypeError::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?TypeError)'], 'TypeError::__toString' => ['string'], 'TypeError::getCode' => ['int'], 'TypeError::getFile' => ['string'], 'TypeError::getLine' => ['int'], 'TypeError::getMessage' => ['string'], 'TypeError::getPrevious' => ['Throwable|TypeError|null'], 'TypeError::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'TypeError::getTraceAsString' => ['string'], 'uasort' => ['bool', '&rw_array_arg'=>'array', 'callback'=>'callable(mixed,mixed):int'], 'ucfirst' => ['string', 'str'=>'string'], 'UConverter::__construct' => ['void', 'destination_encoding'=>'string', 'source_encoding='=>'string'], 'UConverter::convert' => ['string', 'str'=>'string', 'reverse='=>'bool'], 'UConverter::fromUCallback' => ['mixed', 'reason'=>'int', 'source'=>'string', 'codePoint'=>'string', '&w_error'=>'int'], 'UConverter::getAliases' => ['array', 'name='=>'string'], 'UConverter::getAvailable' => ['array'], 'UConverter::getDestinationEncoding' => ['string'], 'UConverter::getDestinationType' => ['int'], 'UConverter::getErrorCode' => ['int'], 'UConverter::getErrorMessage' => ['string'], 'UConverter::getSourceEncoding' => ['string'], 'UConverter::getSourceType' => ['int'], 'UConverter::getStandards' => ['array'], 'UConverter::getSubstChars' => ['string'], 'UConverter::reasonText' => ['string', 'reason='=>'int'], 'UConverter::setDestinationEncoding' => ['bool', 'encoding'=>'string'], 'UConverter::setSourceEncoding' => ['bool', 'encoding'=>'string'], 'UConverter::setSubstChars' => ['bool', 'chars'=>'string'], 'UConverter::toUCallback' => ['mixed', 'reason'=>'int', 'source'=>'string', 'codeUnits'=>'string', '&w_error'=>'int'], 'UConverter::transcode' => ['string', 'str'=>'string', 'toEncoding'=>'string', 'fromEncoding'=>'string', 'options='=>'array'], 'ucwords' => ['string', 'str'=>'string', 'delims='=>'string'], 'udm_add_search_limit' => ['bool', 'agent'=>'resource', 'var'=>'int', 'val'=>'string'], 'udm_alloc_agent' => ['resource', 'dbaddr'=>'string', 'dbmode='=>'string'], 'udm_alloc_agent_array' => ['resource', 'databases'=>'array'], 'udm_api_version' => ['int'], 'udm_cat_list' => ['array', 'agent'=>'resource', 'category'=>'string'], 'udm_cat_path' => ['array', 'agent'=>'resource', 'category'=>'string'], 'udm_check_charset' => ['bool', 'agent'=>'resource', 'charset'=>'string'], 'udm_check_stored' => ['int', 'agent'=>'', 'link'=>'int', 'doc_id'=>'string'], 'udm_clear_search_limits' => ['bool', 'agent'=>'resource'], 'udm_close_stored' => ['int', 'agent'=>'', 'link'=>'int'], 'udm_crc32' => ['int', 'agent'=>'resource', 'str'=>'string'], 'udm_errno' => ['int', 'agent'=>'resource'], 'udm_error' => ['string', 'agent'=>'resource'], 'udm_find' => ['resource', 'agent'=>'resource', 'query'=>'string'], 'udm_free_agent' => ['int', 'agent'=>'resource'], 'udm_free_ispell_data' => ['bool', 'agent'=>'int'], 'udm_free_res' => ['bool', 'res'=>'resource'], 'udm_get_doc_count' => ['int', 'agent'=>'resource'], 'udm_get_res_field' => ['string', 'res'=>'resource', 'row'=>'int', 'field'=>'int'], 'udm_get_res_param' => ['string', 'res'=>'resource', 'param'=>'int'], 'udm_hash32' => ['int', 'agent'=>'resource', 'str'=>'string'], 'udm_load_ispell_data' => ['bool', 'agent'=>'resource', 'var'=>'int', 'val1'=>'string', 'val2'=>'string', 'flag'=>'int'], 'udm_open_stored' => ['int', 'agent'=>'', 'storedaddr'=>'string'], 'udm_set_agent_param' => ['bool', 'agent'=>'resource', 'var'=>'int', 'val'=>'string'], 'ui\draw\text\font\fontfamilies' => ['array'], 'ui\quit' => ['void'], 'ui\run' => ['void', 'flags='=>'int'], 'uksort' => ['bool', '&rw_array_arg'=>'array', 'callback'=>'callable(array-key,array-key):int'], 'umask' => ['int', 'mask='=>'int'], 'UnderflowException::__clone' => ['void'], 'UnderflowException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?UnderflowException)'], 'UnderflowException::__toString' => ['string'], 'UnderflowException::getCode' => ['int'], 'UnderflowException::getFile' => ['string'], 'UnderflowException::getLine' => ['int'], 'UnderflowException::getMessage' => ['string'], 'UnderflowException::getPrevious' => ['Throwable|UnderflowException|null'], 'UnderflowException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'UnderflowException::getTraceAsString' => ['string'], 'UnexpectedValueException::__clone' => ['void'], 'UnexpectedValueException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Throwable)|(?UnexpectedValueException)'], 'UnexpectedValueException::__toString' => ['string'], 'UnexpectedValueException::getCode' => ['int'], 'UnexpectedValueException::getFile' => ['string'], 'UnexpectedValueException::getLine' => ['int'], 'UnexpectedValueException::getMessage' => ['string'], 'UnexpectedValueException::getPrevious' => ['Throwable|UnexpectedValueException|null'], 'UnexpectedValueException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'UnexpectedValueException::getTraceAsString' => ['string'], 'uniqid' => ['non-empty-string', 'prefix='=>'string', 'more_entropy='=>'bool'], 'unixtojd' => ['int|false', 'timestamp='=>'int'], 'unlink' => ['bool', 'filename'=>'string', 'context='=>'resource'], 'unpack' => ['array|false', 'format'=>'string', 'data'=>'string', 'offset='=>'int'], 'unregister_tick_function' => ['void', 'function_name'=>'callable'], 'unserialize' => ['mixed', 'variable_representation'=>'string', 'allowed_classes='=>'array{allowed_classes?:string[]|bool}'], 'untaint' => ['bool', '&rw_string'=>'string', '&...rw_strings='=>'string'], 'uopz_add_function' => ['bool', 'class'=>'string', 'function'=>'string', 'handler'=>'Closure', '$flags'=>'bool', '$all'=>'bool'], 'uopz_add_function\'1' => ['bool', 'function'=>'string', 'handler'=>'Closure', '$flags'=>'bool'], 'uopz_allow_exit' => ['void', 'allow'=>'bool'], 'uopz_backup' => ['void', 'class'=>'string', 'function'=>'string'], 'uopz_backup\'1' => ['void', 'function'=>'string'], 'uopz_compose' => ['void', 'name'=>'string', 'classes'=>'array', 'methods='=>'array', 'properties='=>'array', 'flags='=>'int'], 'uopz_copy' => ['Closure', 'class'=>'string', 'function'=>'string'], 'uopz_copy\'1' => ['Closure', 'function'=>'string'], 'uopz_del_function' => ['bool', 'class'=>'string', 'function'=>'string', '$all'=>'bool'], 'uopz_del_function\'1' => ['bool', 'function'=>'string'], 'uopz_delete' => ['void', 'class'=>'string', 'function'=>'string'], 'uopz_delete\'1' => ['void', 'function'=>'string'], 'uopz_extend' => ['void', 'class'=>'string', 'parent'=>'string'], 'uopz_flags' => ['int', 'class'=>'string', 'function'=>'string', 'flags='=>'int'], 'uopz_flags\'1' => ['int', 'function'=>'string', 'flags='=>'int'], 'uopz_function' => ['void', 'class'=>'string', 'function'=>'string', 'handler'=>'Closure', 'modifiers='=>'int'], 'uopz_function\'1' => ['void', 'function'=>'string', 'handler'=>'Closure', 'modifiers='=>'int'], 'uopz_get_exit_status' => ['mixed'], 'uopz_get_hook' => ['Closure', 'class'=>'string', 'function'=>'string'], 'uopz_get_hook\'1' => ['Closure', 'function'=>'string'], 'uopz_get_mock' => ['mixed', 'class'=>'string'], 'uopz_get_property' => ['mixed', 'class'=>'string', 'property'=>'string'], 'uopz_get_property\'1' => ['mixed', 'instance'=>'object', 'property'=>'string'], 'uopz_get_return' => ['mixed', 'class='=>'string', 'function='=>'string'], 'uopz_get_static' => ['array', 'class='=>'string', 'function='=>'string'], 'uopz_get_static\'1' => ['array', 'function='=>'string'], 'uopz_implement' => ['void', 'class'=>'string', 'interface'=>'string'], 'uopz_overload' => ['void', 'opcode'=>'int', 'callable'=>'Callable'], 'uopz_redefine' => ['void', 'class'=>'string', 'constant'=>'string', 'value'=>'mixed'], 'uopz_redefine\'1' => ['void', 'constant'=>'string', 'value'=>'mixed'], 'uopz_rename' => ['void', 'class'=>'string', 'function'=>'string', 'rename'=>'string'], 'uopz_rename\'1' => ['void', 'function'=>'string', 'rename'=>'string'], 'uopz_restore' => ['void', 'class'=>'string', 'function'=>'string'], 'uopz_restore\'1' => ['void', 'function'=>'string'], 'uopz_set_mock' => ['void', 'class'=>'string', 'mock'=>'object|string'], 'uopz_set_property' => ['void', 'class'=>'string', 'property'=>'string', 'value'=>'mixed'], 'uopz_set_property\'1' => ['void', 'instance'=>'object', 'property'=>'string', 'value'=>'mixed'], 'uopz_set_return' => ['bool', 'class'=>'string', 'function'=>'string', 'value'=>'mixed', 'execute='=>'bool'], 'uopz_set_return\'1' => ['bool', 'function'=>'string', 'value'=>'mixed', 'execute='=>'bool'], 'uopz_undefine' => ['void', 'class'=>'string', 'constant'=>'string'], 'uopz_undefine\'1' => ['void', 'constant'=>'string'], 'uopz_set_hook' => ['bool', 'class'=>'string', 'function'=>'string', 'hook'=>'Closure'], 'uopz_set_hook\'1' => ['bool', 'function'=>'string', 'hook'=>'Closure'], 'uopz_unset_mock' => ['void', 'class'=>'string'], 'uopz_unset_return' => ['bool', 'class='=>'string', 'function='=>'string'], 'uopz_unset_return\'1' => ['bool', 'function'=>'string'], 'urldecode' => ['string', 'str'=>'string'], 'urlencode' => ['string', 'str'=>'string'], 'use_soap_error_handler' => ['bool', 'handler='=>'bool'], 'usleep' => ['void', 'micro_seconds'=>'int'], 'usort' => ['bool', '&rw_array_arg'=>'array', 'callback'=>'callable(mixed,mixed):int'], 'utf8_decode' => ['string', 'data'=>'string'], 'utf8_encode' => ['string', 'data'=>'string'], 'V8Js::__construct' => ['void', 'object_name='=>'string', 'variables='=>'array', 'extensions='=>'array', 'report_uncaught_exceptions='=>'bool', 'snapshot_blob='=>'string'], 'V8Js::clearPendingException' => [''], 'V8Js::compileString' => ['resource', 'script'=>'', 'identifier='=>'string'], 'V8Js::createSnapshot' => ['false|string', 'embed_source'=>'string'], 'V8Js::executeScript' => ['', 'script'=>'resource', 'flags='=>'int', 'time_limit='=>'int', 'memory_limit='=>'int'], 'V8Js::executeString' => ['mixed', 'script'=>'string', 'identifier='=>'string', 'flags='=>'int'], 'V8Js::getExtensions' => ['array'], 'V8Js::getPendingException' => ['V8JsException'], 'V8Js::registerExtension' => ['bool', 'extension_name'=>'string', 'script'=>'string', 'dependencies='=>'array', 'auto_enable='=>'bool'], 'V8Js::setAverageObjectSize' => ['', 'average_object_size'=>'int'], 'V8Js::setMemoryLimit' => ['', 'limit'=>'int'], 'V8Js::setModuleLoader' => ['', 'loader'=>'callable'], 'V8Js::setModuleNormaliser' => ['', 'normaliser'=>'callable'], 'V8Js::setTimeLimit' => ['', 'limit'=>'int'], 'V8JsException::getJsFileName' => ['string'], 'V8JsException::getJsLineNumber' => ['int'], 'V8JsException::getJsSourceLine' => ['int'], 'V8JsException::getJsTrace' => ['string'], 'V8JsScriptException::__clone' => ['void'], 'V8JsScriptException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'(?Exception)|(?Throwable)'], 'V8JsScriptException::__toString' => ['string'], 'V8JsScriptException::__wakeup' => ['void'], 'V8JsScriptException::getCode' => ['int'], 'V8JsScriptException::getFile' => ['string'], 'V8JsScriptException::getJsEndColumn' => ['int'], 'V8JsScriptException::getJsFileName' => ['string'], 'V8JsScriptException::getJsLineNumber' => ['int'], 'V8JsScriptException::getJsSourceLine' => ['string'], 'V8JsScriptException::getJsStartColumn' => ['int'], 'V8JsScriptException::getJsTrace' => ['string'], 'V8JsScriptException::getLine' => ['int'], 'V8JsScriptException::getMessage' => ['string'], 'V8JsScriptException::getPrevious' => ['Exception|Throwable'], 'V8JsScriptException::getTrace' => ['list\',args?:mixed[],object?:object}>'], 'V8JsScriptException::getTraceAsString' => ['string'], 'var_dump' => ['void', 'var'=>'mixed', '...args='=>'mixed'], 'var_export' => ['string|null', 'var'=>'mixed', 'return='=>'bool'], 'VARIANT::__construct' => ['void', 'value='=>'mixed', 'type='=>'int', 'codepage='=>'int'], 'variant_abs' => ['mixed', 'left'=>'mixed'], 'variant_add' => ['mixed', 'left'=>'mixed', 'right'=>'mixed'], 'variant_and' => ['mixed', 'left'=>'mixed', 'right'=>'mixed'], 'variant_cast' => ['object', 'variant'=>'object', 'type'=>'int'], 'variant_cat' => ['mixed', 'left'=>'mixed', 'right'=>'mixed'], 'variant_cmp' => ['int', 'left'=>'mixed', 'right'=>'mixed', 'lcid='=>'int', 'flags='=>'int'], 'variant_date_from_timestamp' => ['object', 'timestamp'=>'int'], 'variant_date_to_timestamp' => ['int', 'variant'=>'object'], 'variant_div' => ['mixed', 'left'=>'mixed', 'right'=>'mixed'], 'variant_eqv' => ['mixed', 'left'=>'mixed', 'right'=>'mixed'], 'variant_fix' => ['mixed', 'left'=>'mixed'], 'variant_get_type' => ['int', 'variant'=>'object'], 'variant_idiv' => ['mixed', 'left'=>'mixed', 'right'=>'mixed'], 'variant_imp' => ['mixed', 'left'=>'mixed', 'right'=>'mixed'], 'variant_int' => ['mixed', 'left'=>'mixed'], 'variant_mod' => ['mixed', 'left'=>'mixed', 'right'=>'mixed'], 'variant_mul' => ['mixed', 'left'=>'mixed', 'right'=>'mixed'], 'variant_neg' => ['mixed', 'left'=>'mixed'], 'variant_not' => ['mixed', 'left'=>'mixed'], 'variant_or' => ['mixed', 'left'=>'mixed', 'right'=>'mixed'], 'variant_pow' => ['mixed', 'left'=>'mixed', 'right'=>'mixed'], 'variant_round' => ['mixed', 'left'=>'mixed', 'decimals'=>'int'], 'variant_set' => ['void', 'variant'=>'object', 'value'=>'mixed'], 'variant_set_type' => ['void', 'variant'=>'object', 'type'=>'int'], 'variant_sub' => ['mixed', 'left'=>'mixed', 'right'=>'mixed'], 'variant_xor' => ['mixed', 'left'=>'mixed', 'right'=>'mixed'], 'VarnishAdmin::__construct' => ['void', 'args='=>'array'], 'VarnishAdmin::auth' => ['bool'], 'VarnishAdmin::ban' => ['int', 'vcl_regex'=>'string'], 'VarnishAdmin::banUrl' => ['int', 'vcl_regex'=>'string'], 'VarnishAdmin::clearPanic' => ['int'], 'VarnishAdmin::connect' => ['bool'], 'VarnishAdmin::disconnect' => ['bool'], 'VarnishAdmin::getPanic' => ['string'], 'VarnishAdmin::getParams' => ['array'], 'VarnishAdmin::isRunning' => ['bool'], 'VarnishAdmin::setCompat' => ['void', 'compat'=>'int'], 'VarnishAdmin::setHost' => ['void', 'host'=>'string'], 'VarnishAdmin::setIdent' => ['void', 'ident'=>'string'], 'VarnishAdmin::setParam' => ['int', 'name'=>'string', 'value'=>'string|int'], 'VarnishAdmin::setPort' => ['void', 'port'=>'int'], 'VarnishAdmin::setSecret' => ['void', 'secret'=>'string'], 'VarnishAdmin::setTimeout' => ['void', 'timeout'=>'int'], 'VarnishAdmin::start' => ['int'], 'VarnishAdmin::stop' => ['int'], 'VarnishLog::__construct' => ['void', 'args='=>'array'], 'VarnishLog::getLine' => ['array'], 'VarnishLog::getTagName' => ['string', 'index'=>'int'], 'VarnishStat::__construct' => ['void', 'args='=>'array'], 'VarnishStat::getSnapshot' => ['array'], 'version_compare' => ['int', 'version1'=>'string', 'version2'=>'string'], 'version_compare\'1' => ['bool', 'version1'=>'string', 'version2'=>'string', 'operator'=>'string|null'], 'vfprintf' => ['int', 'stream'=>'resource', 'format'=>'string', 'args'=>'array<__stringAndStringable|int|float|null|bool>'], 'virtual' => ['bool', 'uri'=>'string'], 'Volatile::__construct' => ['void'], 'Volatile::chunk' => ['array', 'size'=>'int', 'preserve'=>'bool'], 'Volatile::count' => ['0|positive-int'], 'Volatile::extend' => ['bool', 'class'=>'string'], 'Volatile::isRunning' => ['bool'], 'Volatile::isTerminated' => ['bool'], 'Volatile::merge' => ['bool', 'from'=>'mixed', 'overwrite='=>'bool'], 'Volatile::notify' => ['bool'], 'Volatile::notifyOne' => ['bool'], 'Volatile::offsetExists' => ['bool', 'offset'=>'mixed'], 'Volatile::offsetGet' => ['mixed', 'offset'=>'mixed'], 'Volatile::offsetSet' => ['void', 'offset'=>'mixed', 'value'=>'mixed'], 'Volatile::offsetUnset' => ['void', 'offset'=>'mixed'], 'Volatile::pop' => ['bool'], 'Volatile::run' => ['void'], 'Volatile::shift' => ['mixed'], 'Volatile::synchronized' => ['mixed', 'block'=>'Closure', '...args='=>'mixed'], 'Volatile::wait' => ['bool', 'timeout='=>'int'], 'vpopmail_add_alias_domain' => ['bool', 'domain'=>'string', 'aliasdomain'=>'string'], 'vpopmail_add_alias_domain_ex' => ['bool', 'olddomain'=>'string', 'newdomain'=>'string'], 'vpopmail_add_domain' => ['bool', 'domain'=>'string', 'dir'=>'string', 'uid'=>'int', 'gid'=>'int'], 'vpopmail_add_domain_ex' => ['bool', 'domain'=>'string', 'passwd'=>'string', 'quota='=>'string', 'bounce='=>'string', 'apop='=>'bool'], 'vpopmail_add_user' => ['bool', 'user'=>'string', 'domain'=>'string', 'password'=>'string', 'gecos='=>'string', 'apop='=>'bool'], 'vpopmail_alias_add' => ['bool', 'user'=>'string', 'domain'=>'string', 'alias'=>'string'], 'vpopmail_alias_del' => ['bool', 'user'=>'string', 'domain'=>'string'], 'vpopmail_alias_del_domain' => ['bool', 'domain'=>'string'], 'vpopmail_alias_get' => ['array', 'alias'=>'string', 'domain'=>'string'], 'vpopmail_alias_get_all' => ['array', 'domain'=>'string'], 'vpopmail_auth_user' => ['bool', 'user'=>'string', 'domain'=>'string', 'password'=>'string', 'apop='=>'string'], 'vpopmail_del_domain' => ['bool', 'domain'=>'string'], 'vpopmail_del_domain_ex' => ['bool', 'domain'=>'string'], 'vpopmail_del_user' => ['bool', 'user'=>'string', 'domain'=>'string'], 'vpopmail_error' => ['string'], 'vpopmail_passwd' => ['bool', 'user'=>'string', 'domain'=>'string', 'password'=>'string', 'apop='=>'bool'], 'vpopmail_set_user_quota' => ['bool', 'user'=>'string', 'domain'=>'string', 'quota'=>'string'], 'vprintf' => ['int', 'format'=>'string', 'args'=>'array<__stringAndStringable|int|float|null|bool>'], 'vsprintf' => ['string', 'format'=>'string', 'args'=>'array<__stringAndStringable|int|float|null|bool>'], 'w32api_deftype' => ['bool', 'typename'=>'string', 'member1_type'=>'string', 'member1_name'=>'string', '...args='=>'string'], 'w32api_init_dtype' => ['resource', 'typename'=>'string', 'value'=>'', '...args='=>''], 'w32api_invoke_function' => ['', 'funcname'=>'string', 'argument'=>'', '...args='=>''], 'w32api_register_function' => ['bool', 'library'=>'string', 'function_name'=>'string', 'return_type'=>'string'], 'w32api_set_call_method' => ['', 'method'=>'int'], 'wddx_add_vars' => ['bool', 'packet_id'=>'resource', 'var_names'=>'mixed', '...vars='=>'mixed'], 'wddx_deserialize' => ['mixed', 'packet'=>'string'], 'wddx_packet_end' => ['string', 'packet_id'=>'resource'], 'wddx_packet_start' => ['resource', 'comment='=>'string'], 'wddx_serialize_value' => ['string', 'var'=>'mixed', 'comment='=>'string'], 'wddx_serialize_vars' => ['string', 'var_name'=>'mixed', '...vars='=>'mixed'], 'WeakMap::__construct' => ['void'], 'WeakMap::count' => ['0|positive-int'], 'WeakMap::current' => ['mixed'], 'WeakMap::key' => ['object'], 'WeakMap::next' => ['void'], 'WeakMap::offsetExists' => ['bool', 'object'=>'object'], 'WeakMap::offsetGet' => ['mixed', 'object'=>'object'], 'WeakMap::offsetSet' => ['void', 'object'=>'object', 'value'=>'mixed'], 'WeakMap::offsetUnset' => ['void', 'object'=>'object'], 'WeakMap::rewind' => ['void'], 'WeakMap::valid' => ['bool'], 'Weakref::acquire' => ['bool'], 'Weakref::get' => ['object'], 'Weakref::release' => ['bool'], 'Weakref::valid' => ['bool'], 'webObj::convertToString' => ['string'], 'webObj::free' => ['void'], 'webObj::set' => ['int', 'property_name'=>'string', 'new_value'=>''], 'webObj::updateFromString' => ['int', 'snippet'=>'string'], 'win32_continue_service' => ['int', 'servicename'=>'string', 'machine='=>'string'], 'win32_create_service' => ['mixed', 'details'=>'array', 'machine='=>'string'], 'win32_delete_service' => ['mixed', 'servicename'=>'string', 'machine='=>'string'], 'win32_get_last_control_message' => ['int'], 'win32_pause_service' => ['int', 'servicename'=>'string', 'machine='=>'string'], 'win32_ps_list_procs' => ['array'], 'win32_ps_stat_mem' => ['array'], 'win32_ps_stat_proc' => ['array', 'pid='=>'int'], 'win32_query_service_status' => ['mixed', 'servicename'=>'string', 'machine='=>'string'], 'win32_set_service_status' => ['bool', 'status'=>'int', 'checkpoint='=>'int'], 'win32_start_service' => ['int', 'servicename'=>'string', 'machine='=>'string'], 'win32_start_service_ctrl_dispatcher' => ['mixed', 'name'=>'string'], 'win32_stop_service' => ['int', 'servicename'=>'string', 'machine='=>'string'], 'wincache_fcache_fileinfo' => ['array', 'summaryonly='=>'bool'], 'wincache_fcache_meminfo' => ['array'], 'wincache_lock' => ['bool', 'key'=>'string', 'isglobal='=>'bool'], 'wincache_ocache_fileinfo' => ['array', 'summaryonly='=>'bool'], 'wincache_ocache_meminfo' => ['array'], 'wincache_refresh_if_changed' => ['bool', 'files='=>'array'], 'wincache_rplist_fileinfo' => ['array', 'summaryonly='=>'bool'], 'wincache_rplist_meminfo' => ['array'], 'wincache_scache_info' => ['array|false', 'summaryonly='=>'bool'], 'wincache_scache_meminfo' => ['array|false'], 'wincache_ucache_add' => ['bool', 'key'=>'string', 'value'=>'', 'ttl='=>'int'], 'wincache_ucache_add\'1' => ['bool', 'values'=>'array', 'unused='=>'', 'ttl='=>'int'], 'wincache_ucache_cas' => ['bool', 'key'=>'string', 'old_value'=>'int', 'new_value'=>'int'], 'wincache_ucache_clear' => ['bool'], 'wincache_ucache_dec' => ['mixed', 'key'=>'string', 'dec_by='=>'int', '&w_success='=>'bool'], 'wincache_ucache_delete' => ['bool', 'key'=>'mixed'], 'wincache_ucache_exists' => ['bool', 'key'=>'string'], 'wincache_ucache_get' => ['mixed', 'key'=>'mixed', '&w_success='=>'bool'], 'wincache_ucache_inc' => ['int|false', 'key'=>'string', 'inc_by='=>'int', '&w_success='=>'bool'], 'wincache_ucache_info' => ['array|false', 'summaryonly='=>'bool', 'key='=>'string'], 'wincache_ucache_meminfo' => ['array'], 'wincache_ucache_set' => ['bool', 'key'=>'', 'value'=>'', 'ttl='=>'int'], 'wincache_ucache_set\'1' => ['bool', 'values'=>'array', 'unused='=>'', 'ttl='=>'int'], 'wincache_unlock' => ['bool', 'key'=>'string'], 'wordwrap' => ['string', 'str'=>'string', 'width='=>'int', 'break='=>'string', 'cut='=>'bool'], 'Worker::__construct' => ['void'], 'Worker::chunk' => ['array', 'size'=>'int', 'preserve'=>'bool'], 'Worker::collect' => ['int', 'collector='=>'Callable'], 'Worker::count' => ['0|positive-int'], 'Worker::getCreatorId' => ['int'], 'Worker::getCurrentThread' => ['Thread'], 'Worker::getCurrentThreadId' => ['int'], 'Worker::getStacked' => ['int'], 'Worker::getThreadId' => ['int'], 'Worker::isJoined' => ['bool'], 'Worker::isRunning' => ['bool'], 'Worker::isShutdown' => ['bool'], 'Worker::isStarted' => ['bool'], 'Worker::isTerminated' => ['bool'], 'Worker::join' => ['bool'], 'Worker::merge' => ['bool', 'from'=>'', 'overwrite='=>'mixed'], 'Worker::notify' => ['bool'], 'Worker::notifyOne' => ['bool'], 'Worker::offsetExists' => ['bool', 'offset'=>'mixed'], 'Worker::offsetGet' => ['mixed', 'offset'=>'mixed'], 'Worker::offsetSet' => ['void', 'offset'=>'mixed', 'value'=>'mixed'], 'Worker::offsetUnset' => ['void', 'offset'=>'mixed'], 'Worker::pop' => ['bool'], 'Worker::run' => ['void'], 'Worker::shift' => ['bool'], 'Worker::shutdown' => ['bool'], 'Worker::stack' => ['int', 'work'=>'Threaded'], 'Worker::start' => ['bool', 'options='=>'int'], 'Worker::synchronized' => ['mixed', 'block'=>'Closure', '_='=>'mixed'], 'Worker::unstack' => ['Collectable|null'], 'Worker::wait' => ['bool', 'timeout='=>'int'], 'xattr_get' => ['string', 'filename'=>'string', 'name'=>'string', 'flags='=>'int'], 'xattr_list' => ['array', 'filename'=>'string', 'flags='=>'int'], 'xattr_remove' => ['bool', 'filename'=>'string', 'name'=>'string', 'flags='=>'int'], 'xattr_set' => ['bool', 'filename'=>'string', 'name'=>'string', 'value'=>'string', 'flags='=>'int'], 'xattr_supported' => ['bool', 'filename'=>'string', 'flags='=>'int'], 'xcache_asm' => ['string', 'filename'=>'string'], 'xcache_clear_cache' => ['void', 'type'=>'int', 'id='=>'int'], 'xcache_coredump' => ['string', 'op_type'=>'int'], 'xcache_count' => ['int', 'type'=>'int'], 'xcache_coverager_decode' => ['array', 'data'=>'string'], 'xcache_coverager_get' => ['array', 'clean='=>'bool|false'], 'xcache_coverager_start' => ['void', 'clean='=>'bool|true'], 'xcache_coverager_stop' => ['void', 'clean='=>'bool|false'], 'xcache_dasm_file' => ['string', 'filename'=>'string'], 'xcache_dasm_string' => ['string', 'code'=>'string'], 'xcache_dec' => ['int', 'name'=>'string', 'value='=>'int|mixed', 'ttl='=>'int'], 'xcache_decode' => ['bool', 'filename'=>'string'], 'xcache_encode' => ['string', 'filename'=>'string'], 'xcache_get' => ['mixed', 'name'=>'string'], 'xcache_get_data_type' => ['string', 'type'=>'int'], 'xcache_get_op_spec' => ['string', 'op_type'=>'int'], 'xcache_get_op_type' => ['string', 'op_type'=>'int'], 'xcache_get_opcode' => ['string', 'opcode'=>'int'], 'xcache_get_opcode_spec' => ['string', 'opcode'=>'int'], 'xcache_inc' => ['int', 'name'=>'string', 'value='=>'int|mixed', 'ttl='=>'int'], 'xcache_info' => ['array', 'type'=>'int', 'id'=>'int'], 'xcache_is_autoglobal' => ['string', 'name'=>'string'], 'xcache_isset' => ['bool', 'name'=>'string'], 'xcache_list' => ['array', 'type'=>'int', 'id'=>'int'], 'xcache_set' => ['bool', 'name'=>'string', 'value'=>'mixed', 'ttl='=>'int'], 'xcache_unset' => ['bool', 'name'=>'string'], 'xcache_unset_by_prefix' => ['bool', 'prefix'=>'string'], 'Xcom::__construct' => ['void', 'fabric_url='=>'string', 'fabric_token='=>'string', 'capability_token='=>'string'], 'Xcom::decode' => ['object', 'avro_msg'=>'string', 'json_schema'=>'string'], 'Xcom::encode' => ['string', 'data'=>'stdClass', 'avro_schema'=>'string'], 'Xcom::getDebugOutput' => ['string'], 'Xcom::getLastResponse' => ['string'], 'Xcom::getLastResponseInfo' => ['array'], 'Xcom::getOnboardingURL' => ['string', 'capability_name'=>'string', 'agreement_url'=>'string'], 'Xcom::send' => ['int', 'topic'=>'string', 'data'=>'mixed', 'json_schema='=>'string', 'http_headers='=>'array'], 'Xcom::sendAsync' => ['int', 'topic'=>'string', 'data'=>'mixed', 'json_schema='=>'string', 'http_headers='=>'array'], 'xdebug_break' => ['bool'], 'xdebug_call_class' => ['string', 'depth='=>'int'], 'xdebug_call_file' => ['string', 'depth='=>'int'], 'xdebug_call_function' => ['string', 'depth='=>'int'], 'xdebug_call_line' => ['int', 'depth='=>'int'], 'xdebug_clear_aggr_profiling_data' => ['bool'], 'xdebug_code_coverage_started' => ['bool'], 'xdebug_connect_to_client' => ['bool'], 'xdebug_debug_zval' => ['void', '...varName'=>'string'], 'xdebug_debug_zval_stdout' => ['void', '...varName'=>'string'], 'xdebug_disable' => ['void'], 'xdebug_dump_aggr_profiling_data' => ['bool'], 'xdebug_dump_superglobals' => ['void'], 'xdebug_enable' => ['void'], 'xdebug_get_code_coverage' => ['array'], 'xdebug_get_collected_errors' => ['string', 'clean='=>'bool|false'], 'xdebug_get_declared_vars' => ['array'], 'xdebug_get_formatted_function_stack' => [''], 'xdebug_get_function_count' => ['int'], 'xdebug_get_function_stack' => ['array', 'message='=>'string', 'options='=>'int'], 'xdebug_get_headers' => ['array'], 'xdebug_get_monitored_functions' => ['array'], 'xdebug_get_profiler_filename' => ['string'], 'xdebug_get_stack_depth' => ['int'], 'xdebug_get_tracefile_name' => ['string'], 'xdebug_is_debugger_active' => ['bool'], 'xdebug_is_enabled' => ['bool'], 'xdebug_memory_usage' => ['int'], 'xdebug_notify' => ['bool', 'data'=>'mixed'], 'xdebug_peak_memory_usage' => ['int'], 'xdebug_print_function_stack' => ['array', 'message='=>'string', 'options='=>'int'], 'xdebug_set_filter' => ['void', 'group'=>'int', 'list_type'=>'int', 'configuration'=>'array'], 'xdebug_start_code_coverage' => ['void', 'options='=>'int'], 'xdebug_start_error_collection' => ['void'], 'xdebug_start_function_monitor' => ['void', 'list_of_functions_to_monitor'=>'string[]'], 'xdebug_start_trace' => ['void', 'trace_file'=>'', 'options='=>'int|mixed'], 'xdebug_stop_code_coverage' => ['void', 'cleanup='=>'bool|true'], 'xdebug_stop_error_collection' => ['void'], 'xdebug_stop_function_monitor' => ['void'], 'xdebug_stop_trace' => ['void'], 'xdebug_time_index' => ['float'], 'xdebug_var_dump' => ['void', '...var'=>''], 'xdiff_file_bdiff' => ['bool', 'old_file'=>'string', 'new_file'=>'string', 'dest'=>'string'], 'xdiff_file_bdiff_size' => ['int', 'file'=>'string'], 'xdiff_file_bpatch' => ['bool', 'file'=>'string', 'patch'=>'string', 'dest'=>'string'], 'xdiff_file_diff' => ['bool', 'old_file'=>'string', 'new_file'=>'string', 'dest'=>'string', 'context='=>'int', 'minimal='=>'bool'], 'xdiff_file_diff_binary' => ['bool', 'old_file'=>'string', 'new_file'=>'string', 'dest'=>'string'], 'xdiff_file_merge3' => ['mixed', 'old_file'=>'string', 'new_file1'=>'string', 'new_file2'=>'string', 'dest'=>'string'], 'xdiff_file_patch' => ['mixed', 'file'=>'string', 'patch'=>'string', 'dest'=>'string', 'flags='=>'int'], 'xdiff_file_patch_binary' => ['bool', 'file'=>'string', 'patch'=>'string', 'dest'=>'string'], 'xdiff_file_rabdiff' => ['bool', 'old_file'=>'string', 'new_file'=>'string', 'dest'=>'string'], 'xdiff_string_bdiff' => ['string', 'old_data'=>'string', 'new_data'=>'string'], 'xdiff_string_bdiff_size' => ['int', 'patch'=>'string'], 'xdiff_string_bpatch' => ['string', 'str'=>'string', 'patch'=>'string'], 'xdiff_string_diff' => ['string', 'old_data'=>'string', 'new_data'=>'string', 'context='=>'int', 'minimal='=>'bool'], 'xdiff_string_diff_binary' => ['string', 'old_data'=>'string', 'new_data'=>'string'], 'xdiff_string_merge3' => ['mixed', 'old_data'=>'string', 'new_data1'=>'string', 'new_data2'=>'string', 'error='=>'string'], 'xdiff_string_patch' => ['string', 'str'=>'string', 'patch'=>'string', 'flags='=>'int', '&w_error='=>'string'], 'xdiff_string_patch_binary' => ['string', 'str'=>'string', 'patch'=>'string'], 'xdiff_string_rabdiff' => ['string', 'old_data'=>'string', 'new_data'=>'string'], 'xhprof_disable' => ['array'], 'xhprof_enable' => ['void', 'flags='=>'int', 'options='=>'array'], 'xhprof_sample_disable' => ['array'], 'xhprof_sample_enable' => ['void'], 'xml_error_string' => ['string', 'code'=>'int'], 'xml_get_current_byte_index' => ['int', 'parser'=>'resource'], 'xml_get_current_column_number' => ['int', 'parser'=>'resource'], 'xml_get_current_line_number' => ['int', 'parser'=>'resource'], 'xml_get_error_code' => ['int', 'parser'=>'resource'], 'xml_parse' => ['int', 'parser'=>'resource', 'data'=>'string', 'isfinal='=>'bool'], 'xml_parse_into_struct' => ['int', 'parser'=>'resource', 'data'=>'string', '&w_values'=>'array', '&w_index='=>'array'], 'xml_parser_create' => ['resource', 'encoding='=>'string'], 'xml_parser_create_ns' => ['resource', 'encoding='=>'string', 'sep='=>'string'], 'xml_parser_free' => ['bool', 'parser'=>'resource'], 'xml_parser_get_option' => ['mixed', 'parser'=>'resource', 'option'=>'int'], 'xml_parser_set_option' => ['bool', 'parser'=>'resource', 'option'=>'int', 'value'=>'mixed'], 'xml_set_character_data_handler' => ['bool', 'parser'=>'resource', 'hdl'=>'callable'], 'xml_set_default_handler' => ['bool', 'parser'=>'resource', 'hdl'=>'callable'], 'xml_set_element_handler' => ['bool', 'parser'=>'resource', 'shdl'=>'callable', 'ehdl'=>'callable'], 'xml_set_end_namespace_decl_handler' => ['bool', 'parser'=>'resource', 'hdl'=>'callable'], 'xml_set_external_entity_ref_handler' => ['bool', 'parser'=>'resource', 'hdl'=>'callable'], 'xml_set_notation_decl_handler' => ['bool', 'parser'=>'resource', 'hdl'=>'callable'], 'xml_set_object' => ['bool', 'parser'=>'resource', 'obj'=>'object'], 'xml_set_processing_instruction_handler' => ['bool', 'parser'=>'resource', 'hdl'=>'callable'], 'xml_set_start_namespace_decl_handler' => ['bool', 'parser'=>'resource', 'hdl'=>'callable'], 'xml_set_unparsed_entity_decl_handler' => ['bool', 'parser'=>'resource', 'hdl'=>'callable'], 'XMLDiff\Base::__construct' => ['void', 'nsname'=>'string'], 'XMLDiff\Base::diff' => ['mixed', 'from'=>'mixed', 'to'=>'mixed'], 'XMLDiff\Base::merge' => ['mixed', 'src'=>'mixed', 'diff'=>'mixed'], 'XMLDiff\DOM::diff' => ['DOMDocument', 'from'=>'DOMDocument', 'to'=>'DOMDocument'], 'XMLDiff\DOM::merge' => ['DOMDocument', 'src'=>'DOMDocument', 'diff'=>'DOMDocument'], 'XMLDiff\File::diff' => ['string', 'from'=>'string', 'to'=>'string'], 'XMLDiff\File::merge' => ['string', 'src'=>'string', 'diff'=>'string'], 'XMLDiff\Memory::diff' => ['string', 'from'=>'string', 'to'=>'string'], 'XMLDiff\Memory::merge' => ['string', 'src'=>'string', 'diff'=>'string'], 'XMLReader::close' => ['bool'], 'XMLReader::expand' => ['DOMNode|false', 'basenode='=>'DOMNode'], 'XMLReader::getAttribute' => ['string|null', 'name'=>'string'], 'XMLReader::getAttributeNo' => ['string|null', 'index'=>'int'], 'XMLReader::getAttributeNs' => ['string|null', 'name'=>'string', 'namespaceuri'=>'string'], 'XMLReader::getParserProperty' => ['bool', 'property'=>'int'], 'XMLReader::isValid' => ['bool'], 'XMLReader::lookupNamespace' => ['?string', 'prefix'=>'string'], 'XMLReader::moveToAttribute' => ['bool', 'name'=>'string'], 'XMLReader::moveToAttributeNo' => ['bool', 'index'=>'int'], 'XMLReader::moveToAttributeNs' => ['bool', 'localname'=>'string', 'namespaceuri'=>'string'], 'XMLReader::moveToElement' => ['bool'], 'XMLReader::moveToFirstAttribute' => ['bool'], 'XMLReader::moveToNextAttribute' => ['bool'], 'XMLReader::next' => ['bool', 'localname='=>'string'], 'XMLReader::open' => ['bool|XMLReader', 'uri'=>'string', 'encoding='=>'?string', 'options='=>'int'], 'XMLReader::read' => ['bool'], 'XMLReader::readInnerXML' => ['string'], 'XMLReader::readOuterXML' => ['string'], 'XMLReader::readString' => ['string'], 'XMLReader::setParserProperty' => ['bool', 'property'=>'int', 'value'=>'bool'], 'XMLReader::setRelaxNGSchema' => ['bool', 'filename'=>'string'], 'XMLReader::setRelaxNGSchemaSource' => ['bool', 'source'=>'string'], 'XMLReader::setSchema' => ['bool', 'filename'=>'string'], 'XMLReader::XML' => ['bool|XMLReader', 'source'=>'string', 'encoding='=>'?string', 'options='=>'int'], 'xmlrpc_decode' => ['?array', 'xml'=>'string', 'encoding='=>'string'], 'xmlrpc_decode_request' => ['?array', 'xml'=>'string', '&w_method'=>'string', 'encoding='=>'string'], 'xmlrpc_encode' => ['string', 'value'=>'mixed'], 'xmlrpc_encode_request' => ['string', 'method'=>'string', 'params'=>'mixed', 'output_options='=>'array'], 'xmlrpc_get_type' => ['string', 'value'=>'mixed'], 'xmlrpc_is_fault' => ['bool', 'arg'=>'array'], 'xmlrpc_parse_method_descriptions' => ['array', 'xml'=>'string'], 'xmlrpc_server_add_introspection_data' => ['int', 'server'=>'resource', 'desc'=>'array'], 'xmlrpc_server_call_method' => ['string', 'server'=>'resource', 'xml'=>'string', 'user_data'=>'mixed', 'output_options='=>'array'], 'xmlrpc_server_create' => ['resource'], 'xmlrpc_server_destroy' => ['int', 'server'=>'resource'], 'xmlrpc_server_register_introspection_callback' => ['bool', 'server'=>'resource', 'function'=>'string'], 'xmlrpc_server_register_method' => ['bool', 'server'=>'resource', 'method_name'=>'string', 'function'=>'string'], 'xmlrpc_set_type' => ['bool', '&rw_value'=>'string|DateTime', 'type'=>'string'], 'XMLWriter::endAttribute' => ['bool'], 'XMLWriter::endCData' => ['bool'], 'XMLWriter::endComment' => ['bool'], 'XMLWriter::endDocument' => ['bool'], 'XMLWriter::endDTD' => ['bool', 'xmlwriter='=>''], 'XMLWriter::endDTDAttlist' => ['bool'], 'XMLWriter::endDTDElement' => ['bool'], 'XMLWriter::endDTDEntity' => ['bool'], 'XMLWriter::endElement' => ['bool'], 'XMLWriter::endPI' => ['bool'], 'XMLWriter::flush' => ['', 'empty='=>'bool', 'xmlwriter='=>''], 'XMLWriter::fullEndElement' => ['bool'], 'XMLWriter::openMemory' => ['bool'], 'XMLWriter::openURI' => ['bool', 'uri'=>'string'], 'XMLWriter::outputMemory' => ['string', 'flush='=>'bool', 'xmlwriter='=>''], 'XMLWriter::setIndent' => ['bool', 'indent'=>'bool'], 'XMLWriter::setIndentString' => ['bool', 'indentstring'=>'string'], 'XMLWriter::startAttribute' => ['bool', 'name'=>'string'], 'XMLWriter::startAttributeNS' => ['bool', 'prefix'=>'string|null', 'name'=>'string', 'uri'=>'string'], 'XMLWriter::startCData' => ['bool'], 'XMLWriter::startComment' => ['bool'], 'XMLWriter::startDocument' => ['bool', 'version='=>'string', 'encoding='=>'string', 'standalone='=>'string'], 'XMLWriter::startDTD' => ['bool', 'qualifiedname'=>'string', 'publicid='=>'string', 'systemid='=>'string'], 'XMLWriter::startDTDAttlist' => ['bool', 'name'=>'string'], 'XMLWriter::startDTDElement' => ['bool', 'qualifiedname'=>'string'], 'XMLWriter::startDTDEntity' => ['bool', 'name'=>'string', 'isparam'=>'bool'], 'XMLWriter::startElement' => ['bool', 'name'=>'string'], 'XMLWriter::startElementNS' => ['bool', 'prefix'=>'string|null', 'name'=>'string', 'uri'=>'string|null'], 'XMLWriter::startPI' => ['bool', 'target'=>'string'], 'XMLWriter::text' => ['bool', 'content'=>'string'], 'XMLWriter::writeAttribute' => ['bool', 'name'=>'string', 'value'=>'string'], 'XMLWriter::writeAttributeNS' => ['bool', 'prefix'=>'string|null', 'name'=>'string', 'uri'=>'string', 'content'=>'string'], 'XMLWriter::writeCData' => ['bool', 'content'=>'string'], 'XMLWriter::writeComment' => ['bool', 'content'=>'string'], 'XMLWriter::writeDTD' => ['bool', 'name'=>'string', 'publicid='=>'string', 'systemid='=>'string', 'subset='=>'string'], 'XMLWriter::writeDTDAttlist' => ['bool', 'name'=>'string', 'content'=>'string'], 'XMLWriter::writeDTDElement' => ['bool', 'name'=>'string', 'content'=>'string'], 'XMLWriter::writeDTDEntity' => ['bool', 'name'=>'string', 'content'=>'string', 'pe'=>'bool', 'pubid'=>'string', 'sysid'=>'string', 'ndataid'=>'string'], 'XMLWriter::writeElement' => ['bool', 'name'=>'string', 'content='=>'string|null'], 'XMLWriter::writeElementNS' => ['bool', 'prefix'=>'string|null', 'name'=>'string', 'uri'=>'string', 'content='=>'string|null'], 'XMLWriter::writePI' => ['bool', 'target'=>'string', 'content'=>'string'], 'XMLWriter::writeRaw' => ['bool', 'content'=>'string'], 'xmlwriter_end_attribute' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_cdata' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_comment' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_document' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_dtd' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_dtd_attlist' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_dtd_element' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_dtd_entity' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_element' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_pi' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_flush' => ['', 'xmlwriter'=>'resource', 'empty='=>'bool'], 'xmlwriter_full_end_element' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_open_memory' => ['resource|false'], 'xmlwriter_open_uri' => ['resource|false', 'source'=>'string'], 'xmlwriter_output_memory' => ['string', 'xmlwriter'=>'resource', 'flush='=>'bool'], 'xmlwriter_set_indent' => ['bool', 'xmlwriter'=>'resource', 'indent'=>'bool'], 'xmlwriter_set_indent_string' => ['bool', 'xmlwriter'=>'resource', 'indentstring'=>'string'], 'xmlwriter_start_attribute' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string'], 'xmlwriter_start_attribute_ns' => ['bool', 'xmlwriter'=>'resource', 'prefix'=>'string|null', 'name'=>'string', 'uri'=>'string'], 'xmlwriter_start_cdata' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_start_comment' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_start_document' => ['bool', 'xmlwriter'=>'resource', 'version'=>'string', 'encoding'=>'string', 'standalone'=>'string'], 'xmlwriter_start_dtd' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'pubid'=>'string', 'sysid'=>'string'], 'xmlwriter_start_dtd_attlist' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string'], 'xmlwriter_start_dtd_element' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string'], 'xmlwriter_start_dtd_entity' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'isparam'=>'bool'], 'xmlwriter_start_element' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string'], 'xmlwriter_start_element_ns' => ['bool', 'xmlwriter'=>'resource', 'prefix'=>'string|null', 'name'=>'string', 'uri'=>'string|null'], 'xmlwriter_start_pi' => ['bool', 'xmlwriter'=>'resource', 'target'=>'string'], 'xmlwriter_text' => ['bool', 'xmlwriter'=>'resource', 'content'=>'string'], 'xmlwriter_write_attribute' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'content'=>'string'], 'xmlwriter_write_attribute_ns' => ['bool', 'xmlwriter'=>'resource', 'prefix'=>'string|null', 'name'=>'string', 'uri'=>'string', 'content'=>'string'], 'xmlwriter_write_cdata' => ['bool', 'xmlwriter'=>'resource', 'content'=>'string'], 'xmlwriter_write_comment' => ['bool', 'xmlwriter'=>'resource', 'content'=>'string'], 'xmlwriter_write_dtd' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'pubid'=>'string', 'sysid'=>'string', 'subset'=>'string'], 'xmlwriter_write_dtd_attlist' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'content'=>'string'], 'xmlwriter_write_dtd_element' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'content'=>'string'], 'xmlwriter_write_dtd_entity' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'content'=>'string', 'pe'=>'int', 'pubid'=>'string', 'sysid'=>'string', 'ndataid'=>'string'], 'xmlwriter_write_element' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'content'=>'string'], 'xmlwriter_write_element_ns' => ['bool', 'xmlwriter'=>'resource', 'prefix'=>'string|null', 'name'=>'string', 'uri'=>'string', 'content'=>'string'], 'xmlwriter_write_pi' => ['bool', 'xmlwriter'=>'resource', 'target'=>'string', 'content'=>'string'], 'xmlwriter_write_raw' => ['bool', 'xmlwriter'=>'resource', 'content'=>'string'], 'xpath_new_context' => ['XPathContext', 'dom_document'=>'DOMDocument'], 'xpath_register_ns' => ['bool', 'xpath_context'=>'xpathcontext', 'prefix'=>'string', 'uri'=>'string'], 'xpath_register_ns_auto' => ['bool', 'xpath_context'=>'xpathcontext', 'context_node='=>'object'], 'xptr_new_context' => ['XPathContext'], 'xsl_xsltprocessor_get_parameter' => ['string', 'namespace'=>'string', 'name'=>'string'], 'xsl_xsltprocessor_get_security_prefs' => ['int'], 'xsl_xsltprocessor_has_exslt_support' => ['bool'], 'xsl_xsltprocessor_register_php_functions' => ['', 'restrict'=>''], 'xsl_xsltprocessor_remove_parameter' => ['bool', 'namespace'=>'string', 'name'=>'string'], 'xsl_xsltprocessor_set_parameter' => ['bool', 'namespace'=>'string', 'name'=>'', 'value'=>'string'], 'xsl_xsltprocessor_set_profiling' => ['bool', 'filename'=>'string'], 'xsl_xsltprocessor_set_security_prefs' => ['int', 'securityprefs'=>'int'], 'xsl_xsltprocessor_transform_to_uri' => ['int', 'doc'=>'DOMDocument', 'uri'=>'string'], 'xsl_xsltprocessor_transform_to_xml' => ['string', 'doc'=>'DOMDocument'], 'xslt_backend_info' => ['string'], 'xslt_backend_name' => ['string'], 'xslt_backend_version' => ['string'], 'xslt_create' => ['resource'], 'xslt_errno' => ['int', 'xh'=>''], 'xslt_error' => ['string', 'xh'=>''], 'xslt_free' => ['', 'xh'=>''], 'xslt_getopt' => ['int', 'processor'=>''], 'xslt_process' => ['', 'xh'=>'', 'xmlcontainer'=>'string', 'xslcontainer'=>'string', 'resultcontainer='=>'string', 'arguments='=>'array', 'parameters='=>'array'], 'xslt_set_base' => ['', 'xh'=>'', 'uri'=>'string'], 'xslt_set_encoding' => ['', 'xh'=>'', 'encoding'=>'string'], 'xslt_set_error_handler' => ['', 'xh'=>'', 'handler'=>''], 'xslt_set_log' => ['', 'xh'=>'', 'log='=>''], 'xslt_set_object' => ['bool', 'processor'=>'', 'obj'=>'object'], 'xslt_set_sax_handler' => ['', 'xh'=>'', 'handlers'=>'array'], 'xslt_set_sax_handlers' => ['', 'processor'=>'', 'handlers'=>'array'], 'xslt_set_scheme_handler' => ['', 'xh'=>'', 'handlers'=>'array'], 'xslt_set_scheme_handlers' => ['', 'xh'=>'', 'handlers'=>'array'], 'xslt_setopt' => ['', 'processor'=>'', 'newmask'=>'int'], 'XSLTProcessor::getParameter' => ['string|false', 'namespaceuri'=>'string', 'localname'=>'string'], 'XsltProcessor::getSecurityPrefs' => ['int'], 'XSLTProcessor::hasExsltSupport' => ['bool'], 'XSLTProcessor::importStylesheet' => ['bool', 'stylesheet'=>'object'], 'XSLTProcessor::registerPHPFunctions' => ['void', 'restrict='=>'mixed'], 'XSLTProcessor::removeParameter' => ['bool', 'namespaceuri'=>'string', 'localname'=>'string'], 'XSLTProcessor::setParameter' => ['bool', 'namespace'=>'string', 'name'=>'string', 'value'=>'string'], 'XSLTProcessor::setParameter\'1' => ['bool', 'namespace'=>'string', 'options'=>'array'], 'XSLTProcessor::setProfiling' => ['bool', 'filename'=>'string'], 'XsltProcessor::setSecurityPrefs' => ['int', 'securityPrefs'=>'int'], 'XSLTProcessor::transformToDoc' => ['DOMDocument|false', 'doc'=>'DOMNode'], 'XSLTProcessor::transformToURI' => ['int', 'doc'=>'DOMDocument', 'uri'=>'string'], 'XSLTProcessor::transformToXML' => ['string|false|null', 'doc'=>'DOMDocument|SimpleXMLElement'], 'Yaconf::get' => ['mixed', 'name'=>'string', 'default_value='=>'mixed'], 'Yaconf::has' => ['bool', 'name'=>'string'], 'Yaf_Action_Abstract::__construct' => ['void', 'request'=>'Yaf_Request_Abstract', 'response'=>'Yaf_Response_Abstract', 'view'=>'Yaf_View_Interface', 'invokeArgs='=>'?array'], 'Yaf_Action_Abstract::display' => ['bool', 'tpl'=>'string', 'parameters='=>'?array'], 'Yaf_Action_Abstract::execute' => ['mixed', 'arg='=>'mixed', '...args='=>'mixed'], 'Yaf_Action_Abstract::forward' => ['bool', 'module'=>'string', 'controller='=>'string', 'action='=>'string', 'parameters='=>'?array'], 'Yaf_Action_Abstract::getController' => ['Yaf_Controller_Abstract'], 'Yaf_Action_Abstract::getInvokeArg' => ['mixed|null', 'name'=>'string'], 'Yaf_Action_Abstract::getInvokeArgs' => ['array'], 'Yaf_Action_Abstract::getModuleName' => ['string'], 'Yaf_Action_Abstract::getRequest' => ['Yaf_Request_Abstract'], 'Yaf_Action_Abstract::getResponse' => ['Yaf_Response_Abstract'], 'Yaf_Action_Abstract::getView' => ['Yaf_View_Interface'], 'Yaf_Action_Abstract::getViewpath' => ['string'], 'Yaf_Action_Abstract::init' => [''], 'Yaf_Action_Abstract::initView' => ['Yaf_Response_Abstract', 'options='=>'?array'], 'Yaf_Action_Abstract::redirect' => ['bool', 'url'=>'string'], 'Yaf_Action_Abstract::render' => ['string', 'tpl'=>'string', 'parameters='=>'?array'], 'Yaf_Action_Abstract::setViewpath' => ['bool', 'view_directory'=>'string'], 'Yaf_Application::__clone' => ['void'], 'Yaf_Application::__construct' => ['void', 'config'=>'mixed', 'envrion='=>'string'], 'Yaf_Application::__destruct' => ['void'], 'Yaf_Application::__sleep' => ['list'], 'Yaf_Application::__wakeup' => ['void'], 'Yaf_Application::app' => ['void'], 'Yaf_Application::bootstrap' => ['void', 'bootstrap='=>'Yaf_Bootstrap_Abstract'], 'Yaf_Application::clearLastError' => ['Yaf_Application'], 'Yaf_Application::environ' => ['void'], 'Yaf_Application::execute' => ['void', 'entry'=>'callable', '...args'=>'string'], 'Yaf_Application::getAppDirectory' => ['Yaf_Application'], 'Yaf_Application::getConfig' => ['Yaf_Config_Abstract'], 'Yaf_Application::getDispatcher' => ['Yaf_Dispatcher'], 'Yaf_Application::getLastErrorMsg' => ['string'], 'Yaf_Application::getLastErrorNo' => ['int'], 'Yaf_Application::getModules' => ['array'], 'Yaf_Application::run' => ['void'], 'Yaf_Application::setAppDirectory' => ['Yaf_Application', 'directory'=>'string'], 'Yaf_Config_Abstract::__get' => ['mixed', 'name'=>'string'], 'Yaf_Config_Abstract::__isset' => ['bool', 'name'=>'string'], 'Yaf_Config_Abstract::count' => ['0|positive-int'], 'Yaf_Config_Abstract::current' => ['mixed'], 'Yaf_Config_Abstract::get' => ['mixed', 'name'=>'?string'], 'Yaf_Config_Abstract::key' => ['int|string|null|bool'], 'Yaf_Config_Abstract::next' => ['void'], 'Yaf_Config_Abstract::offsetExists' => ['bool', 'name'=>'mixed'], 'Yaf_Config_Abstract::offsetGet' => ['mixed', 'name'=>'mixed'], 'Yaf_Config_Abstract::offsetSet' => ['void', 'name'=>'mixed', 'value'=>'mixed'], 'Yaf_Config_Abstract::offsetUnset' => ['void', 'name'=>'mixed'], 'Yaf_Config_Abstract::readonly' => ['bool'], 'Yaf_Config_Abstract::rewind' => ['void'], 'Yaf_Config_Abstract::set' => ['bool', 'name'=>'string', 'value'=>'mixed'], 'Yaf_Config_Abstract::toArray' => ['array'], 'Yaf_Config_Abstract::valid' => ['bool'], 'Yaf_Config_Ini::__construct' => ['void', 'config_file'=>'array|string', 'section='=>'?string'], 'Yaf_Config_Ini::__isset' => ['bool', 'name'=>'string'], 'Yaf_Config_Ini::__set' => ['void', 'name'=>'mixed', 'value'=>'mixed'], 'Yaf_Config_Ini::count' => ['0|positive-int'], 'Yaf_Config_Ini::current' => ['mixed'], 'Yaf_Config_Ini::get' => ['mixed', 'name='=>'?string'], 'Yaf_Config_Ini::key' => ['int|string|null|bool'], 'Yaf_Config_Ini::next' => ['void'], 'Yaf_Config_Ini::offsetExists' => ['bool', 'name'=>'mixed'], 'Yaf_Config_Ini::offsetGet' => ['mixed', 'name'=>'mixed'], 'Yaf_Config_Ini::offsetSet' => ['void', 'name'=>'mixed', 'value'=>'mixed'], 'Yaf_Config_Ini::offsetUnset' => ['void', 'name'=>'mixed'], 'Yaf_Config_Ini::readonly' => ['bool'], 'Yaf_Config_Ini::rewind' => ['void'], 'Yaf_Config_Ini::set' => ['bool', 'name'=>'string', 'value'=>'mixed'], 'Yaf_Config_Ini::toArray' => ['array'], 'Yaf_Config_Ini::valid' => ['bool'], 'Yaf_Config_Simple::__construct' => ['void', 'config_file'=>'array|string', 'section='=>'string'], 'Yaf_Config_Simple::__get' => ['void', 'name='=>'string'], 'Yaf_Config_Simple::__isset' => ['bool', 'name'=>'string'], 'Yaf_Config_Simple::__set' => ['void', 'name'=>'string', 'value'=>'mixed'], 'Yaf_Config_Simple::count' => ['0|positive-int'], 'Yaf_Config_Simple::current' => ['mixed'], 'Yaf_Config_Simple::get' => ['mixed', 'name='=>'?string'], 'Yaf_Config_Simple::key' => ['int|string|null|bool'], 'Yaf_Config_Simple::next' => ['void'], 'Yaf_Config_Simple::offsetExists' => ['bool', 'name'=>'mixed'], 'Yaf_Config_Simple::offsetGet' => ['mixed', 'name'=>'mixed'], 'Yaf_Config_Simple::offsetSet' => ['void', 'name'=>'mixed', 'value'=>'mixed'], 'Yaf_Config_Simple::offsetUnset' => ['void', 'name'=>'mixed'], 'Yaf_Config_Simple::readonly' => ['bool'], 'Yaf_Config_Simple::rewind' => ['void'], 'Yaf_Config_Simple::set' => ['bool', 'name'=>'string', 'value'=>'mixed'], 'Yaf_Config_Simple::toArray' => ['array'], 'Yaf_Config_Simple::valid' => ['bool'], 'Yaf_Controller_Abstract::__clone' => ['void'], 'Yaf_Controller_Abstract::__construct' => ['void'], 'Yaf_Controller_Abstract::display' => ['?bool', 'tpl'=>'string', 'parameters='=>'?array'], 'Yaf_Controller_Abstract::forward' => ['?bool', 'action'=>'string'], 'Yaf_Controller_Abstract::forward\'1' => ['?bool', 'controller'=>'string', 'action'=>'string'], 'Yaf_Controller_Abstract::forward\'2' => ['?bool', 'action'=>'string', 'invoke_args'=>'array'], 'Yaf_Controller_Abstract::forward\'3' => ['?bool', 'module'=>'string', 'controller'=>'string', 'action'=>'string'], 'Yaf_Controller_Abstract::forward\'4' => ['?bool', 'controller'=>'string', 'action'=>'string', 'invoke_args'=>'array'], 'Yaf_Controller_Abstract::forward\'5' => ['?bool', 'module'=>'string', 'controller'=>'string', 'action'=>'string', 'invoke_args'=>'array'], 'Yaf_Controller_Abstract::getInvokeArg' => ['?string', 'name'=>'string'], 'Yaf_Controller_Abstract::getInvokeArgs' => ['?array'], 'Yaf_Controller_Abstract::getModuleName' => ['?string'], 'Yaf_Controller_Abstract::getName' => ['?string'], 'Yaf_Controller_Abstract::getRequest' => ['?Yaf_Request_Abstract'], 'Yaf_Controller_Abstract::getResponse' => ['?Yaf_Response_Abstract'], 'Yaf_Controller_Abstract::getView' => ['?Yaf_View_Interface'], 'Yaf_Controller_Abstract::getViewpath' => ['?string'], 'Yaf_Controller_Abstract::init' => ['void'], 'Yaf_Controller_Abstract::initView' => ['?Yaf_View_Interface', 'options='=>'?array'], 'Yaf_Controller_Abstract::redirect' => ['?bool', 'url'=>'string'], 'Yaf_Controller_Abstract::render' => ['string|null|bool', 'tpl'=>'string', 'parameters='=>'?array'], 'Yaf_Controller_Abstract::setViewpath' => ['?bool', 'view_directory'=>'string'], 'Yaf_Dispatcher::__clone' => ['void'], 'Yaf_Dispatcher::__construct' => ['void'], 'Yaf_Dispatcher::__sleep' => ['list'], 'Yaf_Dispatcher::__wakeup' => ['void'], 'Yaf_Dispatcher::autoRender' => ['Yaf_Dispatcher|false|null', 'flag='=>'?bool'], 'Yaf_Dispatcher::catchException' => ['Yaf_Dispatcher|false|null', 'flag='=>'?bool'], 'Yaf_Dispatcher::disableView' => ['?Yaf_Dispatcher'], 'Yaf_Dispatcher::dispatch' => ['Yaf_Response_Abstract|false|null', 'request'=>'Yaf_Request_Abstract'], 'Yaf_Dispatcher::enableView' => ['?Yaf_Dispatcher'], 'Yaf_Dispatcher::flushInstantly' => ['Yaf_Dispatcher|false|null', 'flag='=>'?bool'], 'Yaf_Dispatcher::getApplication' => ['?Yaf_Application'], 'Yaf_Dispatcher::getDefaultAction' => ['?string'], 'Yaf_Dispatcher::getDefaultController' => ['?string'], 'Yaf_Dispatcher::getDefaultModule' => ['?string'], 'Yaf_Dispatcher::getInstance' => ['?Yaf_Dispatcher'], 'Yaf_Dispatcher::getRequest' => ['?Yaf_Request_Abstract'], 'Yaf_Dispatcher::getResponse' => ['?Yaf_Response_Abstract'], 'Yaf_Dispatcher::getRouter' => ['?Yaf_Router'], 'Yaf_Dispatcher::initView' => ['Yaf_View_Interface|null|false', 'templates_dir'=>'string', 'options='=>'?array'], 'Yaf_Dispatcher::registerPlugin' => ['Yaf_Dispatcher|false|null', 'plugin'=>'Yaf_Plugin_Abstract'], 'Yaf_Dispatcher::returnResponse' => ['Yaf_Dispatcher|false|null', 'flag='=>'bool'], 'Yaf_Dispatcher::setDefaultAction' => ['Yaf_Dispatcher|false|null', 'action'=>'string'], 'Yaf_Dispatcher::setDefaultController' => ['Yaf_Dispatcher|false|null', 'controller'=>'string'], 'Yaf_Dispatcher::setDefaultModule' => ['Yaf_Dispatcher|false|null', 'module'=>'string'], 'Yaf_Dispatcher::setErrorHandler' => ['Yaf_Dispatcher|false|null', 'callback'=>'mixed', 'error_types'=>'int'], 'Yaf_Dispatcher::setRequest' => ['?Yaf_Dispatcher', 'request'=>'Yaf_Request_Abstract'], 'Yaf_Dispatcher::setResponse' => ['?Yaf_Dispatcher', 'response'=>'Yaf_Response_Abstract'], 'Yaf_Dispatcher::setView' => ['?Yaf_Dispatcher', 'view'=>'Yaf_View_Interface'], 'Yaf_Dispatcher::throwException' => ['Yaf_Dispatcher|false|null', 'flag='=>'?bool'], 'Yaf_Exception::__construct' => ['void'], 'Yaf_Exception::getPrevious' => ['void'], 'Yaf_Loader::__clone' => ['void'], 'Yaf_Loader::__construct' => ['void'], 'Yaf_Loader::__sleep' => ['list'], 'Yaf_Loader::__wakeup' => ['void'], 'Yaf_Loader::autoload' => ['void'], 'Yaf_Loader::clearLocalNamespace' => ['void'], 'Yaf_Loader::getInstance' => ['void'], 'Yaf_Loader::getLibraryPath' => ['Yaf_Loader', 'is_global='=>'bool'], 'Yaf_Loader::getLocalNamespace' => ['void'], 'Yaf_Loader::import' => ['void'], 'Yaf_Loader::isLocalName' => ['void'], 'Yaf_Loader::registerLocalNamespace' => ['void', 'prefix'=>'mixed'], 'Yaf_Loader::setLibraryPath' => ['Yaf_Loader', 'directory'=>'string', 'is_global='=>'bool'], 'Yaf_Plugin_Abstract::dispatchLoopShutdown' => ['void', 'request'=>'Yaf_Request_Abstract', 'response'=>'Yaf_Response_Abstract'], 'Yaf_Plugin_Abstract::dispatchLoopStartup' => ['void', 'request'=>'Yaf_Request_Abstract', 'response'=>'Yaf_Response_Abstract'], 'Yaf_Plugin_Abstract::postDispatch' => ['void', 'request'=>'Yaf_Request_Abstract', 'response'=>'Yaf_Response_Abstract'], 'Yaf_Plugin_Abstract::preDispatch' => ['void', 'request'=>'Yaf_Request_Abstract', 'response'=>'Yaf_Response_Abstract'], 'Yaf_Plugin_Abstract::preResponse' => ['void', 'request'=>'Yaf_Request_Abstract', 'response'=>'Yaf_Response_Abstract'], 'Yaf_Plugin_Abstract::routerShutdown' => ['void', 'request'=>'Yaf_Request_Abstract', 'response'=>'Yaf_Response_Abstract'], 'Yaf_Plugin_Abstract::routerStartup' => ['void', 'request'=>'Yaf_Request_Abstract', 'response'=>'Yaf_Response_Abstract'], 'Yaf_Registry::__clone' => ['void'], 'Yaf_Registry::__construct' => ['void'], 'Yaf_Registry::del' => ['void', 'name'=>'string'], 'Yaf_Registry::get' => ['mixed', 'name'=>'string'], 'Yaf_Registry::has' => ['bool', 'name'=>'string'], 'Yaf_Registry::set' => ['bool', 'name'=>'string', 'value'=>'string'], 'Yaf_Request_Abstract::get' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Abstract::getActionName' => ['?string'], 'Yaf_Request_Abstract::getBaseUri' => ['?string'], 'Yaf_Request_Abstract::getCookie' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Abstract::getControllerName' => ['?string'], 'Yaf_Request_Abstract::getEnv' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Abstract::getException' => ['?Exception'], 'Yaf_Request_Abstract::getFiles' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Abstract::getLanguage' => ['?string'], 'Yaf_Request_Abstract::getMethod' => ['?string'], 'Yaf_Request_Abstract::getModuleName' => ['?string'], 'Yaf_Request_Abstract::getParam' => ['mixed', 'name'=>'string', 'default='=>'mixed'], 'Yaf_Request_Abstract::getParams' => ['?array'], 'Yaf_Request_Abstract::getPost' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Abstract::getQuery' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Abstract::getRaw' => ['?string'], 'Yaf_Request_Abstract::getRequest' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Abstract::getRequestUri' => ['?string'], 'Yaf_Request_Abstract::getServer' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Abstract::cleanParams' => ['?Yaf_Request_Abstract'], 'Yaf_Request_Abstract::isCli' => ['bool'], 'Yaf_Request_Abstract::isDelete' => ['bool'], 'Yaf_Request_Abstract::isDispatched' => ['bool'], 'Yaf_Request_Abstract::isGet' => ['bool'], 'Yaf_Request_Abstract::isHead' => ['bool'], 'Yaf_Request_Abstract::isOptions' => ['bool'], 'Yaf_Request_Abstract::isPatch' => ['bool'], 'Yaf_Request_Abstract::isPost' => ['bool'], 'Yaf_Request_Abstract::isPut' => ['bool'], 'Yaf_Request_Abstract::isRouted' => ['bool'], 'Yaf_Request_Abstract::isXmlHttpRequest' => ['bool'], 'Yaf_Request_Abstract::setActionName' => ['?Yaf_Request_Abstract', 'action'=>'string', 'format_name='=>'bool|true'], 'Yaf_Request_Abstract::setBaseUri' => ['Yaf_Request_Abstract|false', 'uir'=>'string'], 'Yaf_Request_Abstract::setControllerName' => ['?Yaf_Request_Abstract', 'controller'=>'string', 'format_name='=>'bool|true'], 'Yaf_Request_Abstract::setDispatched' => ['?Yaf_Request_Abstract', 'flag='=>'bool|true'], 'Yaf_Request_Abstract::setModuleName' => ['?Yaf_Request_Abstract', 'module'=>'string', 'format_name='=>'bool|true'], 'Yaf_Request_Abstract::setParam' => ['Yaf_Request_Abstract|false|null', 'name'=>'mixed', 'value='=>'?mixed'], 'Yaf_Request_Abstract::setRequestUri' => ['?Yaf_Request_Abstract', 'uir'=>'string'], 'Yaf_Request_Abstract::setRouted' => ['?Yaf_Request_Abstract', 'flag='=>'bool|true'], 'Yaf_Request_Http::__clone' => ['void'], 'Yaf_Request_Http::__construct' => ['void', 'requestUri='=>'?string', 'baseUri='=>'?string'], 'Yaf_Request_Http::get' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Http::getActionName' => ['?string'], 'Yaf_Request_Http::getBaseUri' => ['?string'], 'Yaf_Request_Http::getCookie' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Http::getControllerName' => ['?string'], 'Yaf_Request_Http::getEnv' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Http::getException' => ['?Exception'], 'Yaf_Request_Http::getFiles' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Http::getLanguage' => ['?string'], 'Yaf_Request_Http::getMethod' => ['?string'], 'Yaf_Request_Http::getModuleName' => ['?string'], 'Yaf_Request_Http::getParam' => ['mixed', 'name'=>'string', 'default='=>'mixed'], 'Yaf_Request_Http::getParams' => ['?array'], 'Yaf_Request_Http::getPost' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Http::getQuery' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Http::getRaw' => ['?string'], 'Yaf_Request_Http::getRequest' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Http::getRequestUri' => ['?string'], 'Yaf_Request_Http::getServer' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Http::cleanParams' => ['?Yaf_Request_Http'], 'Yaf_Request_Http::isCli' => ['bool'], 'Yaf_Request_Http::isDelete' => ['bool'], 'Yaf_Request_Http::isDispatched' => ['bool'], 'Yaf_Request_Http::isGet' => ['bool'], 'Yaf_Request_Http::isHead' => ['bool'], 'Yaf_Request_Http::isOptions' => ['bool'], 'Yaf_Request_Http::isPatch' => ['bool'], 'Yaf_Request_Http::isPost' => ['bool'], 'Yaf_Request_Http::isPut' => ['bool'], 'Yaf_Request_Http::isRouted' => ['bool'], 'Yaf_Request_Http::isXmlHttpRequest' => ['bool'], 'Yaf_Request_Http::setActionName' => ['?Yaf_Request_Http', 'action'=>'string', 'format_name='=>'bool|true'], 'Yaf_Request_Http::setBaseUri' => ['Yaf_Request_Http|false', 'uir'=>'string'], 'Yaf_Request_Http::setControllerName' => ['?Yaf_Request_Http', 'controller'=>'string', 'format_name='=>'bool|true'], 'Yaf_Request_Http::setDispatched' => ['?Yaf_Request_Http', 'flag='=>'bool|true'], 'Yaf_Request_Http::setModuleName' => ['?Yaf_Request_Http', 'module'=>'string', 'format_name='=>'bool|true'], 'Yaf_Request_Http::setParam' => ['Yaf_Request_Http|false|null', 'name'=>'mixed', 'value='=>'?mixed'], 'Yaf_Request_Http::setRequestUri' => ['?Yaf_Request_Http', 'uir'=>'string'], 'Yaf_Request_Http::setRouted' => ['?Yaf_Request_Http', 'flag='=>'bool|true'], 'Yaf_Request_Simple::__construct' => ['void', 'method='=>'?string', 'module='=>'?string', 'controller='=>'?string', 'action='=>'?string', 'params='=>'?array'], 'Yaf_Request_Simple::get' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Simple::getActionName' => ['?string'], 'Yaf_Request_Simple::getBaseUri' => ['?string'], 'Yaf_Request_Simple::getCookie' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Simple::getControllerName' => ['?string'], 'Yaf_Request_Simple::getEnv' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Simple::getException' => ['?Exception'], 'Yaf_Request_Simple::getFiles' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Simple::getLanguage' => ['?string'], 'Yaf_Request_Simple::getMethod' => ['?string'], 'Yaf_Request_Simple::getModuleName' => ['?string'], 'Yaf_Request_Simple::getParam' => ['mixed', 'name'=>'string', 'default='=>'mixed'], 'Yaf_Request_Simple::getParams' => ['?array'], 'Yaf_Request_Simple::getPost' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Simple::getQuery' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Simple::getRaw' => ['?string'], 'Yaf_Request_Simple::getRequest' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Simple::getRequestUri' => ['?string'], 'Yaf_Request_Simple::getServer' => ['mixed', 'name='=>'?string', 'default='=>'?mixed'], 'Yaf_Request_Simple::cleanParams' => ['?Yaf_Request_Simple'], 'Yaf_Request_Simple::isCli' => ['bool'], 'Yaf_Request_Simple::isDelete' => ['bool'], 'Yaf_Request_Simple::isDispatched' => ['bool'], 'Yaf_Request_Simple::isGet' => ['bool'], 'Yaf_Request_Simple::isHead' => ['bool'], 'Yaf_Request_Simple::isOptions' => ['bool'], 'Yaf_Request_Simple::isPatch' => ['bool'], 'Yaf_Request_Simple::isPost' => ['bool'], 'Yaf_Request_Simple::isPut' => ['bool'], 'Yaf_Request_Simple::isRouted' => ['bool'], 'Yaf_Request_Simple::isXmlHttpRequest' => ['bool'], 'Yaf_Request_Simple::setActionName' => ['?Yaf_Request_Simple', 'action'=>'string', 'format_name='=>'bool|true'], 'Yaf_Request_Simple::setBaseUri' => ['Yaf_Request_Simple|false', 'uir'=>'string'], 'Yaf_Request_Simple::setControllerName' => ['?Yaf_Request_Simple', 'controller'=>'string', 'format_name='=>'bool|true'], 'Yaf_Request_Simple::setDispatched' => ['?Yaf_Request_Simple', 'flag='=>'bool|true'], 'Yaf_Request_Simple::setModuleName' => ['?Yaf_Request_Simple', 'module'=>'string', 'format_name='=>'bool|true'], 'Yaf_Request_Simple::setParam' => ['Yaf_Request_Simple|bool|null', 'name'=>'mixed', 'value='=>'?mixed'], 'Yaf_Request_Simple::setRequestUri' => ['?Yaf_Request_Simple', 'uir'=>'string'], 'Yaf_Request_Simple::setRouted' => ['?Yaf_Request_Simple', 'flag='=>'bool|true'], 'Yaf_Response_Abstract::__clone' => ['void'], 'Yaf_Response_Abstract::__construct' => ['void'], 'Yaf_Response_Abstract::__destruct' => ['void'], 'Yaf_Response_Abstract::__toString' => ['string'], 'Yaf_Response_Abstract::appendBody' => ['Yaf_Response_Abstract|false|null', 'body'=>'string', 'name='=>'?string'], 'Yaf_Response_Abstract::clearBody' => ['?Yaf_Response_Abstract', 'name='=>'?string'], 'Yaf_Response_Abstract::getBody' => ['mixed', 'name='=>'string'], 'Yaf_Response_Abstract::prependBody' => ['Yaf_Response_Abstract|false|null', 'body'=>'string', 'name='=>'?string'], 'Yaf_Response_Abstract::response' => ['bool'], 'Yaf_Response_Abstract::setBody' => ['Yaf_Response_Abstract|false|null', 'body'=>'string', 'name='=>'?string'], 'Yaf_Response_Abstract::setRedirect' => ['?bool', 'url'=>'string'], 'Yaf_Response_Cli::__clone' => ['void'], 'Yaf_Response_Cli::__construct' => ['void'], 'Yaf_Response_Cli::__destruct' => ['void'], 'Yaf_Response_Cli::__toString' => ['string'], 'Yaf_Response_Cli::appendBody' => ['Yaf_Response_Cli|false|null', 'body'=>'string', 'name='=>'?string'], 'Yaf_Response_Cli::clearBody' => ['?Yaf_Response_Cli', 'name='=>'?string'], 'Yaf_Response_Cli::getBody' => ['mixed', 'name='=>'string'], 'Yaf_Response_Cli::prependBody' => ['Yaf_Response_Cli|false|null', 'body'=>'string', 'name='=>'?string'], 'Yaf_Response_Cli::response' => ['bool'], 'Yaf_Response_Cli::setBody' => ['Yaf_Response_Cli|false|null', 'body'=>'string', 'name='=>'?string'], 'Yaf_Response_Cli::setRedirect' => ['?bool', 'url'=>'string'], 'Yaf_Response_Http::__clone' => ['void'], 'Yaf_Response_Http::__construct' => ['void'], 'Yaf_Response_Http::__destruct' => ['void'], 'Yaf_Response_Http::__toString' => ['string'], 'Yaf_Response_Http::appendBody' => ['Yaf_Response_Http|false|null', 'body'=>'string', 'name='=>'?string'], 'Yaf_Response_Http::clearHeaders' => ['Yaf_Response_Http|false|null'], 'Yaf_Response_Http::clearBody' => ['?Yaf_Response_Http', 'name='=>'?string'], 'Yaf_Response_Http::getBody' => ['mixed', 'name='=>'string'], 'Yaf_Response_Http::getHeader' => ['mixed', 'name='=>'string'], 'Yaf_Response_Http::prependBody' => ['Yaf_Response_Http|false|null', 'body'=>'string', 'name='=>'?string'], 'Yaf_Response_Http::response' => ['?bool'], 'Yaf_Response_Http::setAllHeaders' => ['bool', 'headers'=>'array'], 'Yaf_Response_Http::setBody' => ['Yaf_Response_Http|false|null', 'body'=>'string', 'name='=>'?string'], 'Yaf_Response_Http::setHeader' => ['?bool', 'name'=>'string', 'value'=>'string', 'replace='=>'bool|false', 'response_code='=>'int'], 'Yaf_Response_Http::setRedirect' => ['?bool', 'url'=>'string'], 'Yaf_Route_Interface::__construct' => ['void'], 'Yaf_Route_Interface::assemble' => ['string', 'info'=>'array', 'query='=>'array'], 'Yaf_Route_Interface::route' => ['bool', 'request'=>'Yaf_Request_Abstract'], 'Yaf_Route_Map::__construct' => ['void', 'controller_prefer='=>'string', 'delimiter='=>'string'], 'Yaf_Route_Map::assemble' => ['string', 'info'=>'array', 'query='=>'array'], 'Yaf_Route_Map::route' => ['bool', 'request'=>'Yaf_Request_Abstract'], 'Yaf_Route_Regex::__construct' => ['void', 'match'=>'string', 'route'=>'array', 'map='=>'array', 'verify='=>'array', 'reverse='=>'string'], 'Yaf_Route_Regex::addConfig' => ['Yaf_Router|bool', 'config'=>'Yaf_Config_Abstract'], 'Yaf_Route_Regex::addRoute' => ['Yaf_Router|bool', 'name'=>'string', 'route'=>'Yaf_Route_Interface'], 'Yaf_Route_Regex::assemble' => ['string', 'info'=>'array', 'query='=>'array'], 'Yaf_Route_Regex::getCurrentRoute' => ['string'], 'Yaf_Route_Regex::getRoute' => ['Yaf_Route_Interface', 'name'=>'string'], 'Yaf_Route_Regex::getRoutes' => ['Yaf_Route_Interface[]'], 'Yaf_Route_Regex::route' => ['bool', 'request'=>'Yaf_Request_Abstract'], 'Yaf_Route_Rewrite::__construct' => ['void', 'match'=>'string', 'route'=>'array', 'verify='=>'array'], 'Yaf_Route_Rewrite::addConfig' => ['Yaf_Router|bool', 'config'=>'Yaf_Config_Abstract'], 'Yaf_Route_Rewrite::addRoute' => ['Yaf_Router|bool', 'name'=>'string', 'route'=>'Yaf_Route_Interface'], 'Yaf_Route_Rewrite::assemble' => ['string', 'info'=>'array', 'query='=>'array'], 'Yaf_Route_Rewrite::getCurrentRoute' => ['string'], 'Yaf_Route_Rewrite::getRoute' => ['Yaf_Route_Interface', 'name'=>'string'], 'Yaf_Route_Rewrite::getRoutes' => ['Yaf_Route_Interface[]'], 'Yaf_Route_Rewrite::route' => ['bool', 'request'=>'Yaf_Request_Abstract'], 'Yaf_Route_Simple::__construct' => ['void', 'module_name'=>'string', 'controller_name'=>'string', 'action_name'=>'string'], 'Yaf_Route_Simple::assemble' => ['string', 'info'=>'array', 'query='=>'array'], 'Yaf_Route_Simple::route' => ['bool', 'request'=>'Yaf_Request_Abstract'], 'Yaf_Route_Static::assemble' => ['string', 'info'=>'array', 'query='=>'array'], 'Yaf_Route_Static::match' => ['void', 'uri'=>'string'], 'Yaf_Route_Static::route' => ['bool', 'request'=>'Yaf_Request_Abstract'], 'Yaf_Route_Supervar::__construct' => ['void', 'supervar_name'=>'string'], 'Yaf_Route_Supervar::assemble' => ['string', 'info'=>'array', 'query='=>'array'], 'Yaf_Route_Supervar::route' => ['bool', 'request'=>'Yaf_Request_Abstract'], 'Yaf_Router::__construct' => ['void'], 'Yaf_Router::addConfig' => ['bool', 'config'=>'Yaf_Config_Abstract'], 'Yaf_Router::addRoute' => ['bool', 'name'=>'string', 'route'=>'Yaf_Route_Abstract'], 'Yaf_Router::getCurrentRoute' => ['string'], 'Yaf_Router::getRoute' => ['Yaf_Route_Interface', 'name'=>'string'], 'Yaf_Router::getRoutes' => ['mixed'], 'Yaf_Router::route' => ['bool', 'request'=>'Yaf_Request_Abstract'], 'Yaf_Session::__clone' => ['void'], 'Yaf_Session::__construct' => ['void'], 'Yaf_Session::__get' => ['void', 'name'=>'string'], 'Yaf_Session::__isset' => ['void', 'name'=>'string'], 'Yaf_Session::__set' => ['void', 'name'=>'string', 'value'=>'string'], 'Yaf_Session::__sleep' => ['list'], 'Yaf_Session::__unset' => ['void', 'name'=>'string'], 'Yaf_Session::__wakeup' => ['void'], 'Yaf_Session::count' => ['0|positive-int'], 'Yaf_Session::current' => ['void'], 'Yaf_Session::del' => ['void', 'name'=>'string'], 'Yaf_Session::get' => ['mixed', 'name'=>'string'], 'Yaf_Session::getInstance' => ['void'], 'Yaf_Session::has' => ['void', 'name'=>'string'], 'Yaf_Session::key' => ['void'], 'Yaf_Session::next' => ['void'], 'Yaf_Session::offsetExists' => ['void', 'name'=>'string'], 'Yaf_Session::offsetGet' => ['void', 'name'=>'string'], 'Yaf_Session::offsetSet' => ['void', 'name'=>'string', 'value'=>'string'], 'Yaf_Session::offsetUnset' => ['void', 'name'=>'string'], 'Yaf_Session::rewind' => ['void'], 'Yaf_Session::set' => ['Yaf_Session|bool', 'name'=>'string', 'value'=>'mixed'], 'Yaf_Session::start' => ['void'], 'Yaf_Session::valid' => ['void'], 'Yaf_View_Interface::assign' => ['Yaf_View_Interface|bool', 'name'=>'string', 'value='=>'?mixed'], 'Yaf_View_Interface::display' => ['Yaf_View_Interface|bool', 'tpl'=>'string', 'tpl_vars='=>'?array'], 'Yaf_View_Interface::getScriptPath' => ['string'], 'Yaf_View_Interface::render' => ['string|bool', 'tpl'=>'string', 'tpl_vars='=>'?array'], 'Yaf_View_Interface::setScriptPath' => ['bool', 'template_dir'=>'string'], 'Yaf_View_Simple::__construct' => ['void', 'tempalte_dir'=>'string', 'options='=>'?array'], 'Yaf_View_Simple::__get' => ['mixed', 'name='=>'?string'], 'Yaf_View_Simple::__isset' => ['bool', 'name'=>'string'], 'Yaf_View_Simple::__set' => ['void', 'name'=>'string', 'value'=>'mixed'], 'Yaf_View_Simple::assign' => ['Yaf_View_Simple|false|null', 'name='=>'?mixed', 'default='=>'?mixed'], 'Yaf_View_Simple::assignRef' => ['?Yaf_View_Simple', 'name'=>'string', '&value'=>'mixed'], 'Yaf_View_Simple::clear' => ['?Yaf_View_Simple', 'name='=>'string'], 'Yaf_View_Simple::display' => ['?bool', 'tpl'=>'string', 'tpl_vars='=>'?array'], 'Yaf_View_Simple::eval' => ['string|null|false', 'tpl_str'=>'string', 'vars='=>'?array'], 'Yaf_View_Simple::get' => ['mixed', 'name='=>'?string'], 'Yaf_View_Simple::getScriptPath' => ['?string'], 'Yaf_View_Simple::render' => ['string|null|false', 'tpl'=>'string', 'tpl_vars='=>'?array'], 'Yaf_View_Simple::setScriptPath' => ['Yaf_View_Simple|false|null', 'template_dir'=>'string'], 'yaml_emit' => ['string', 'data'=>'mixed', 'encoding='=>'int', 'linebreak='=>'int'], 'yaml_emit_file' => ['bool', 'filename'=>'string', 'data'=>'mixed', 'encoding='=>'int', 'linebreak='=>'int'], 'yaml_parse' => ['mixed', 'input'=>'string', 'pos='=>'int', '&w_ndocs='=>'int', 'callbacks='=>'array'], 'yaml_parse_file' => ['mixed', 'filename'=>'string', 'pos='=>'int', '&w_ndocs='=>'int', 'callbacks='=>'array'], 'yaml_parse_url' => ['mixed', 'url'=>'string', 'pos='=>'int', '&w_ndocs='=>'int', 'callbacks='=>'array'], 'Yar_Client::__call' => ['void', 'method'=>'string', 'parameters'=>'array'], 'Yar_Client::__construct' => ['void', 'url'=>'string'], 'Yar_Client::setOpt' => ['bool', 'name'=>'int', 'value'=>'mixed'], 'Yar_Client_Exception::getType' => ['void'], 'Yar_Concurrent_Client::call' => ['int', 'uri'=>'string', 'method'=>'string', 'parameters'=>'array', 'callback='=>'callable'], 'Yar_Concurrent_Client::loop' => ['bool', 'callback='=>'callable', 'error_callback='=>'callable'], 'Yar_Concurrent_Client::reset' => ['bool'], 'Yar_Server::__construct' => ['void', 'obj'=>'Object'], 'Yar_Server::handle' => ['bool'], 'Yar_Server_Exception::getType' => ['string'], 'yaz_addinfo' => ['string', 'id'=>'resource'], 'yaz_ccl_conf' => ['void', 'id'=>'resource', 'config'=>'array'], 'yaz_ccl_parse' => ['bool', 'id'=>'resource', 'query'=>'string', '&w_result'=>'array'], 'yaz_close' => ['bool', 'id'=>'resource'], 'yaz_connect' => ['mixed', 'zurl'=>'string', 'options='=>'mixed'], 'yaz_database' => ['bool', 'id'=>'resource', 'databases'=>'string'], 'yaz_element' => ['bool', 'id'=>'resource', 'elementset'=>'string'], 'yaz_errno' => ['int', 'id'=>'resource'], 'yaz_error' => ['string', 'id'=>'resource'], 'yaz_es' => ['void', 'id'=>'resource', 'type'=>'string', 'args'=>'array'], 'yaz_es_result' => ['array', 'id'=>'resource'], 'yaz_get_option' => ['string', 'id'=>'resource', 'name'=>'string'], 'yaz_hits' => ['int', 'id'=>'resource', 'searchresult='=>'array'], 'yaz_itemorder' => ['void', 'id'=>'resource', 'args'=>'array'], 'yaz_present' => ['bool', 'id'=>'resource'], 'yaz_range' => ['void', 'id'=>'resource', 'start'=>'int', 'number'=>'int'], 'yaz_record' => ['string', 'id'=>'resource', 'pos'=>'int', 'type'=>'string'], 'yaz_scan' => ['void', 'id'=>'resource', 'type'=>'string', 'startterm'=>'string', 'flags='=>'array'], 'yaz_scan_result' => ['array', 'id'=>'resource', 'result='=>'array'], 'yaz_schema' => ['void', 'id'=>'resource', 'schema'=>'string'], 'yaz_search' => ['bool', 'id'=>'resource', 'type'=>'string', 'query'=>'string'], 'yaz_set_option' => ['', 'id'=>'', 'name'=>'string', 'value'=>'string', 'options'=>'array'], 'yaz_sort' => ['void', 'id'=>'resource', 'criteria'=>'string'], 'yaz_syntax' => ['void', 'id'=>'resource', 'syntax'=>'string'], 'yaz_wait' => ['mixed', '&rw_options='=>'array'], 'yp_all' => ['void', 'domain'=>'string', 'map'=>'string', 'callback'=>'string'], 'yp_cat' => ['array', 'domain'=>'string', 'map'=>'string'], 'yp_err_string' => ['string', 'errorcode'=>'int'], 'yp_errno' => ['int'], 'yp_first' => ['array', 'domain'=>'string', 'map'=>'string'], 'yp_get_default_domain' => ['string'], 'yp_master' => ['string', 'domain'=>'string', 'map'=>'string'], 'yp_match' => ['string', 'domain'=>'string', 'map'=>'string', 'key'=>'string'], 'yp_next' => ['array', 'domain'=>'string', 'map'=>'string', 'key'=>'string'], 'yp_order' => ['int', 'domain'=>'string', 'map'=>'string'], 'zem_get_extension_info_by_id' => [''], 'zem_get_extension_info_by_name' => [''], 'zem_get_extensions_info' => [''], 'zem_get_license_info' => [''], 'zend_current_obfuscation_level' => ['int'], 'zend_disk_cache_clear' => ['bool', 'namespace='=>'mixed|string'], 'zend_disk_cache_delete' => ['mixed|null', 'key'=>''], 'zend_disk_cache_fetch' => ['mixed|null', 'key'=>''], 'zend_disk_cache_store' => ['bool', 'key'=>'', 'value'=>'', 'ttl='=>'int|mixed'], 'zend_get_id' => ['array', 'all_ids='=>'all_ids|false'], 'zend_is_configuration_changed' => [''], 'zend_loader_current_file' => ['string'], 'zend_loader_enabled' => ['bool'], 'zend_loader_file_encoded' => ['bool'], 'zend_loader_file_licensed' => ['array'], 'zend_loader_install_license' => ['bool', 'license_file'=>'license_file', 'override'=>'override'], 'zend_logo_guid' => ['string'], 'zend_obfuscate_class_name' => ['string', 'class_name'=>'class_name'], 'zend_obfuscate_function_name' => ['string', 'function_name'=>'function_name'], 'zend_optimizer_version' => ['string'], 'zend_runtime_obfuscate' => ['void'], 'zend_send_buffer' => ['null|false', 'buffer'=>'string', 'mime_type='=>'string', 'custom_headers='=>'string'], 'zend_send_file' => ['null|false', 'filename'=>'string', 'mime_type='=>'string', 'custom_headers='=>'string'], 'zend_set_configuration_changed' => [''], 'zend_shm_cache_clear' => ['bool', 'namespace='=>'mixed|string'], 'zend_shm_cache_delete' => ['mixed|null', 'key'=>''], 'zend_shm_cache_fetch' => ['mixed|null', 'key'=>''], 'zend_shm_cache_store' => ['bool', 'key'=>'', 'value'=>'', 'ttl='=>'int|mixed'], 'zend_thread_id' => ['int'], 'zend_version' => ['string'], 'ZendAPI_Job::addJobToQueue' => ['int', 'jobqueue_url'=>'string', 'password'=>'string'], 'ZendAPI_Job::getApplicationID' => [''], 'ZendAPI_Job::getEndTime' => [''], 'ZendAPI_Job::getGlobalVariables' => [''], 'ZendAPI_Job::getHost' => [''], 'ZendAPI_Job::getID' => [''], 'ZendAPI_Job::getInterval' => [''], 'ZendAPI_Job::getJobDependency' => [''], 'ZendAPI_Job::getJobName' => [''], 'ZendAPI_Job::getJobPriority' => [''], 'ZendAPI_Job::getJobStatus' => ['int'], 'ZendAPI_Job::getLastPerformedStatus' => ['int'], 'ZendAPI_Job::getOutput' => ['An'], 'ZendAPI_Job::getPreserved' => [''], 'ZendAPI_Job::getProperties' => ['array'], 'ZendAPI_Job::getScheduledTime' => [''], 'ZendAPI_Job::getScript' => [''], 'ZendAPI_Job::getTimeToNextRepeat' => ['int'], 'ZendAPI_Job::getUserVariables' => [''], 'ZendAPI_Job::setApplicationID' => ['', 'app_id'=>''], 'ZendAPI_Job::setGlobalVariables' => ['', 'vars'=>''], 'ZendAPI_Job::setJobDependency' => ['', 'job_id'=>''], 'ZendAPI_Job::setJobName' => ['', 'name'=>''], 'ZendAPI_Job::setJobPriority' => ['', 'priority'=>'int'], 'ZendAPI_Job::setPreserved' => ['', 'preserved'=>''], 'ZendAPI_Job::setRecurrenceData' => ['', 'interval'=>'', 'end_time='=>'mixed'], 'ZendAPI_Job::setScheduledTime' => ['', 'timestamp'=>''], 'ZendAPI_Job::setScript' => ['', 'script'=>''], 'ZendAPI_Job::setUserVariables' => ['', 'vars'=>''], 'ZendAPI_Job::ZendAPI_Job' => ['Job', 'script'=>'script'], 'ZendAPI_Queue::addJob' => ['int', '&job'=>'Job'], 'ZendAPI_Queue::getAllApplicationIDs' => ['array'], 'ZendAPI_Queue::getAllhosts' => ['array'], 'ZendAPI_Queue::getHistoricJobs' => ['array', 'status'=>'int', 'start_time'=>'', 'end_time'=>'', 'index'=>'int', 'count'=>'int', '&total'=>'int'], 'ZendAPI_Queue::getJob' => ['Job', 'job_id'=>'int'], 'ZendAPI_Queue::getJobsInQueue' => ['array', 'filter_options='=>'array', 'max_jobs='=>'int', 'with_globals_and_output='=>'bool|false'], 'ZendAPI_Queue::getLastError' => ['string'], 'ZendAPI_Queue::getNumOfJobsInQueue' => ['int', 'filter_options='=>'array'], 'ZendAPI_Queue::getStatistics' => ['array'], 'ZendAPI_Queue::isScriptExists' => ['bool', 'path'=>'string'], 'ZendAPI_Queue::isSuspend' => ['bool'], 'ZendAPI_Queue::login' => ['bool', 'password'=>'string', 'application_id='=>'int'], 'ZendAPI_Queue::removeJob' => ['bool', 'job_id'=>'array|int'], 'ZendAPI_Queue::requeueJob' => ['bool', 'job'=>'Job'], 'ZendAPI_Queue::resumeJob' => ['bool', 'job_id'=>'array|int'], 'ZendAPI_Queue::resumeQueue' => ['bool'], 'ZendAPI_Queue::setMaxHistoryTime' => ['bool'], 'ZendAPI_Queue::suspendJob' => ['bool', 'job_id'=>'array|int'], 'ZendAPI_Queue::suspendQueue' => ['bool'], 'ZendAPI_Queue::updateJob' => ['int', '&job'=>'Job'], 'ZendAPI_Queue::zendapi_queue' => ['ZendAPI_Queue', 'queue_url'=>'string'], 'zip_close' => ['void', 'zip'=>'resource'], 'zip_entry_close' => ['bool', 'zip_ent'=>'resource'], 'zip_entry_compressedsize' => ['int|false', 'zip_entry'=>'resource'], 'zip_entry_compressionmethod' => ['string|false', 'zip_entry'=>'resource'], 'zip_entry_filesize' => ['int|false', 'zip_entry'=>'resource'], 'zip_entry_name' => ['string|false', 'zip_entry'=>'resource'], 'zip_entry_open' => ['bool', 'zip_dp'=>'resource', 'zip_entry'=>'resource', 'mode='=>'string'], 'zip_entry_read' => ['string|false', 'zip_entry'=>'resource', 'len='=>'int'], 'zip_open' => ['resource|false|int', 'filename'=>'string'], 'zip_read' => ['resource|false|int', 'zip'=>'resource'], 'ZipArchive::addEmptyDir' => ['bool', 'dirname'=>'string'], 'ZipArchive::addFile' => ['bool', 'filepath'=>'string', 'entryname='=>'string', 'start='=>'int', 'length='=>'int'], 'ZipArchive::addFromString' => ['bool', 'entryname'=>'string', 'content'=>'string'], 'ZipArchive::addGlob' => ['bool', 'pattern'=>'string', 'flags='=>'int', 'options='=>'array'], 'ZipArchive::addPattern' => ['bool', 'pattern'=>'string', 'path='=>'string', 'options='=>'array'], 'ZipArchive::close' => ['bool'], 'ZipArchive::count' => ['0|positive-int'], 'ZipArchive::createEmptyDir' => ['bool', 'dirname'=>'string'], 'ZipArchive::deleteIndex' => ['bool', 'index'=>'int'], 'ZipArchive::deleteName' => ['bool', 'name'=>'string'], 'ZipArchive::extractTo' => ['bool', 'pathto'=>'string', 'files='=>'string[]|string'], 'ZipArchive::getArchiveComment' => ['string', 'flags='=>'int'], 'ZipArchive::getCommentIndex' => ['string', 'index'=>'int', 'flags='=>'int'], 'ZipArchive::getCommentName' => ['string', 'name'=>'string', 'flags='=>'int'], 'ZipArchive::getExternalAttributesIndex' => ['bool', 'index'=>'int', '&w_opsys'=>'int', '&w_attr'=>'int', 'flags='=>'int'], 'ZipArchive::getExternalAttributesName' => ['bool', 'name'=>'string', '&w_opsys'=>'int', '&w_attr'=>'int', 'flags='=>'int'], 'ZipArchive::getFromIndex' => ['string|false', 'index'=>'int', 'len='=>'int', 'flags='=>'int'], 'ZipArchive::getFromName' => ['string|false', 'entryname'=>'string', 'len='=>'int', 'flags='=>'int'], 'ZipArchive::getNameIndex' => ['string|false', 'index'=>'int', 'flags='=>'int'], 'ZipArchive::getStatusString' => ['string'], 'ZipArchive::getStream' => ['resource|false', 'entryname'=>'string'], 'ZipArchive::locateName' => ['int|false', 'filename'=>'string', 'flags='=>'int'], 'ZipArchive::open' => ['ZipArchive::ER_*|true', 'source'=>'string', 'flags='=>'int'], 'ZipArchive::renameIndex' => ['bool', 'index'=>'int', 'new_name'=>'string'], 'ZipArchive::renameName' => ['bool', 'name'=>'string', 'new_name'=>'string'], 'ZipArchive::setArchiveComment' => ['bool', 'comment'=>'string'], 'ZipArchive::setCommentIndex' => ['bool', 'index'=>'int', 'comment'=>'string'], 'ZipArchive::setCommentName' => ['bool', 'name'=>'string', 'comment'=>'string'], 'ZipArchive::setCompressionIndex' => ['bool', 'index'=>'int', 'comp_method'=>'int', 'comp_flags='=>'int'], 'ZipArchive::setCompressionName' => ['bool', 'name'=>'string', 'comp_method'=>'int', 'comp_flags='=>'int'], 'ZipArchive::setEncryptionIndex' => ['bool', 'index'=>'int', 'method'=>'string', 'password='=>'string'], 'ZipArchive::setEncryptionName' => ['bool', 'name'=>'string', 'method'=>'int', 'password='=>'string'], 'ZipArchive::setExternalAttributesIndex' => ['bool', 'index'=>'int', 'opsys'=>'int', 'attr'=>'int', 'flags='=>'int'], 'ZipArchive::setExternalAttributesName' => ['bool', 'name'=>'string', 'opsys'=>'int', 'attr'=>'int', 'flags='=>'int'], 'ZipArchive::setPassword' => ['bool', 'password'=>'string'], 'ZipArchive::statIndex' => ['array|false', 'index'=>'int', 'flags='=>'int'], 'ZipArchive::statName' => ['array|false', 'filename'=>'string', 'flags='=>'int'], 'ZipArchive::unchangeAll' => ['bool'], 'ZipArchive::unchangeArchive' => ['bool'], 'ZipArchive::unchangeIndex' => ['bool', 'index'=>'int'], 'ZipArchive::unchangeName' => ['bool', 'name'=>'string'], 'zlib_decode' => ['string|false', 'data'=>'string', 'max_decoded_len='=>'int'], 'zlib_encode' => ['string|false', 'data'=>'string', 'encoding'=>'int', 'level='=>'string|int'], 'zlib_get_coding_type' => ['string|false'], 'ZMQ::__construct' => ['void'], 'ZMQContext::__construct' => ['void', 'io_threads='=>'int', 'is_persistent='=>'bool'], 'ZMQContext::getOpt' => ['mixed', 'key'=>'string'], 'ZMQContext::getSocket' => ['ZMQSocket', 'type'=>'int', 'persistent_id='=>'string', 'on_new_socket='=>'callable'], 'ZMQContext::isPersistent' => ['bool'], 'ZMQContext::setOpt' => ['ZMQContext', 'key'=>'int', 'value'=>'mixed'], 'ZMQDevice::__construct' => ['void', 'frontend'=>'ZMQSocket', 'backend'=>'ZMQSocket', 'listener='=>'ZMQSocket'], 'ZMQDevice::getIdleTimeout' => ['ZMQDevice'], 'ZMQDevice::getTimerTimeout' => ['ZMQDevice'], 'ZMQDevice::run' => ['void'], 'ZMQDevice::setIdleCallback' => ['ZMQDevice', 'cb_func'=>'callable', 'timeout'=>'int', 'user_data='=>'mixed'], 'ZMQDevice::setIdleTimeout' => ['ZMQDevice', 'timeout'=>'int'], 'ZMQDevice::setTimerCallback' => ['ZMQDevice', 'cb_func'=>'callable', 'timeout'=>'int', 'user_data='=>'mixed'], 'ZMQDevice::setTimerTimeout' => ['ZMQDevice', 'timeout'=>'int'], 'ZMQPoll::add' => ['string', 'entry'=>'mixed', 'type'=>'int'], 'ZMQPoll::clear' => ['ZMQPoll'], 'ZMQPoll::count' => ['0|positive-int'], 'ZMQPoll::getLastErrors' => ['array'], 'ZMQPoll::poll' => ['int', '&w_readable'=>'array', '&w_writable'=>'array', 'timeout='=>'int'], 'ZMQPoll::remove' => ['bool', 'item'=>'mixed'], 'ZMQSocket::__construct' => ['void', 'context'=>'ZMQContext', 'type'=>'int', 'persistent_id='=>'string', 'on_new_socket='=>'callable'], 'ZMQSocket::bind' => ['ZMQSocket', 'dsn'=>'string', 'force='=>'bool'], 'ZMQSocket::connect' => ['ZMQSocket', 'dsn'=>'string', 'force='=>'bool'], 'ZMQSocket::disconnect' => ['ZMQSocket', 'dsn'=>'string'], 'ZMQSocket::getEndpoints' => ['array'], 'ZMQSocket::getPersistentId' => ['string'], 'ZMQSocket::getSocketType' => ['int'], 'ZMQSocket::getSockOpt' => ['mixed', 'key'=>'string'], 'ZMQSocket::isPersistent' => ['bool'], 'ZMQSocket::recv' => ['string', 'mode='=>'int'], 'ZMQSocket::recvMulti' => ['string[]', 'mode='=>'int'], 'ZMQSocket::send' => ['ZMQSocket', 'message'=>'array', 'mode='=>'int'], 'ZMQSocket::send\'1' => ['ZMQSocket', 'message'=>'string', 'mode='=>'int'], 'ZMQSocket::sendmulti' => ['ZMQSocket', 'message'=>'array', 'mode='=>'int'], 'ZMQSocket::setSockOpt' => ['ZMQSocket', 'key'=>'int', 'value'=>'mixed'], 'ZMQSocket::unbind' => ['ZMQSocket', 'dsn'=>'string'], 'Zookeeper::addAuth' => ['bool', 'scheme'=>'string', 'cert'=>'string', 'completion_cb='=>'callable'], 'Zookeeper::connect' => ['void', 'host'=>'string', 'watcher_cb='=>'callable', 'recv_timeout='=>'int'], 'Zookeeper::create' => ['string', 'path'=>'string', 'value'=>'string', 'acls'=>'array', 'flags='=>'int'], 'Zookeeper::delete' => ['bool', 'path'=>'string', 'version='=>'int'], 'Zookeeper::exists' => ['bool', 'path'=>'string', 'watcher_cb='=>'callable'], 'Zookeeper::get' => ['string', 'path'=>'string', 'watcher_cb='=>'callable', 'stat='=>'array', 'max_size='=>'int'], 'Zookeeper::getAcl' => ['array', 'path'=>'string'], 'Zookeeper::getChildren' => ['array', 'path'=>'string', 'watcher_cb='=>'callable'], 'Zookeeper::getClientId' => ['int'], 'Zookeeper::getRecvTimeout' => ['int'], 'Zookeeper::getState' => ['int'], 'Zookeeper::isRecoverable' => ['bool'], 'Zookeeper::set' => ['bool', 'path'=>'string', 'value'=>'string', 'version='=>'int', 'stat='=>'array'], 'Zookeeper::setAcl' => ['bool', 'path'=>'string', 'version'=>'int', 'acl'=>'array'], 'Zookeeper::setDebugLevel' => ['bool', 'logLevel'=>'int'], 'Zookeeper::setDeterministicConnOrder' => ['bool', 'yesOrNo'=>'bool'], 'Zookeeper::setLogStream' => ['bool', 'stream'=>'resource'], 'Zookeeper::setWatcher' => ['bool', 'watcher_cb'=>'callable'], 'zookeeper_dispatch' => ['void'], ]; ['bcadd' => ['numeric-string', 'left_operand' => 'numeric-string', 'right_operand' => 'numeric-string', 'scale=' => 'int'], 'bccomp' => ['int', 'left_operand' => 'numeric-string', 'right_operand' => 'numeric-string', 'scale=' => 'int'], 'bcdiv' => ['numeric-string|null', 'left_operand' => 'numeric-string', 'right_operand' => 'numeric-string', 'scale=' => 'int'], 'bcmod' => ['numeric-string|null', 'left_operand' => 'string', 'right_operand' => 'numeric-string', 'scale=' => 'int'], 'bcmul' => ['numeric-string', 'left_operand' => 'numeric-string', 'right_operand' => 'numeric-string', 'scale=' => 'int'], 'bcpow' => ['numeric-string', 'base' => 'numeric-string', 'exponent' => 'numeric-string', 'scale=' => 'int'], 'bcpowmod' => ['numeric-string|null', 'base' => 'numeric-string', 'exponent' => 'numeric-string', 'modulus' => 'string', 'scale=' => 'int'], 'bcsqrt' => ['numeric-string', 'operand' => 'numeric-string', 'scale=' => 'int'], 'bcsub' => ['numeric-string', 'left_operand' => 'numeric-string', 'right_operand' => 'numeric-string', 'scale=' => 'int'], 'Closure::bind' => ['Closure', 'old' => 'Closure', 'to' => '?object', 'scope=' => 'object|class-string|\'static\'|null'], 'Closure::bindTo' => ['Closure', 'new' => '?object', 'newscope=' => 'object|class-string|\'static\'|null'], 'error_log' => ['bool', 'message' => 'string', 'message_type=' => '0|1|2|3|4', 'destination=' => 'string', 'extra_headers=' => 'string'], 'SplFileObject::flock' => ['bool', 'operation' => 'int-mask', '&w_wouldblock=' => '0|1'], 'Imagick::adaptiveBlurImage' => ['bool', 'radius' => 'float', 'sigma' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::adaptiveSharpenImage' => ['bool', 'radius' => 'float', 'sigma' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::addNoiseImage' => ['bool', 'noise_type' => 'Imagick::NOISE_*', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::autoGammaImage' => ['bool', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::autoLevelImage' => ['bool', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::blurImage' => ['bool', 'radius' => 'float', 'sigma' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::brightnessContrastImage' => ['bool', 'brightness' => 'float', 'contrast' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::clampImage' => ['bool', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::combineImages' => ['Imagick', 'channeltype' => 'Imagick::CHANNEL_*'], 'Imagick::compareImageChannels' => ['array{Imagick,float}', 'image' => 'imagick', 'channeltype' => 'Imagick::CHANNEL_*', 'metrictype' => 'Imagick::METRIC_*'], 'Imagick::compareImageLayers' => ['Imagick', 'method' => 'Imagick::LAYERMETHOD_*'], 'Imagick::compareImages' => ['array{Imagick,float}', 'compare' => 'imagick', 'metric' => 'Imagick::METRIC_*'], 'Imagick::compositeImage' => ['bool', 'composite_object' => 'imagick', 'composite' => 'Imagick::COMPOSITE_*', 'x' => 'int', 'y' => 'int', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::contrastStretchImage' => ['bool', 'black_point' => 'float', 'white_point' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::convolveImage' => ['bool', 'kernel' => 'array', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::distortImage' => ['bool', 'method' => 'Imagick::DISTORTION_*', 'arguments' => 'array', 'bestfit' => 'bool'], 'Imagick::evaluateImage' => ['bool', 'op' => 'Imagick::EVALUATE_*', 'constant' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::exportImagePixels' => ['list', 'x' => 'int', 'y' => 'int', 'width' => 'int', 'height' => 'int', 'map' => 'string', 'storage' => 'Imagick::PIXEL_*'], 'Imagick::floodFillPaintImage' => ['bool', 'fill' => 'mixed', 'fuzz' => 'float', 'target' => 'mixed', 'x' => 'int', 'y' => 'int', 'invert' => 'bool', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::functionImage' => ['bool', 'function' => 'Imagick::FUNCTION_*', 'arguments' => 'array', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::fxImage' => ['Imagick', 'expression' => 'string', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::gammaImage' => ['bool', 'gamma' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::gaussianBlurImage' => ['bool', 'radius' => 'float', 'sigma' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::getImageChannelDepth' => ['int', 'channel' => 'Imagick::CHANNEL_*'], 'Imagick::getImageChannelDistortion' => ['float', 'reference' => 'imagick', 'channel' => 'Imagick::CHANNEL_*', 'metric' => 'Imagick::METRIC_*'], 'Imagick::getImageChannelDistortions' => ['float', 'reference' => 'imagick', 'metric' => 'Imagick::METRIC_*', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::getImageChannelExtrema' => ['array{minima:0|positive-int,maxima:0|positive-int}', 'channel' => 'Imagick::CHANNEL_*'], 'Imagick::getImageChannelKurtosis' => ['array{kurtosis:float,skewness:float}', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::getImageChannelMean' => ['array{mean:float,standardDeviation:float}', 'channel' => 'Imagick::CHANNEL_*'], 'Imagick::getImageChannelRange' => ['array{minima:float,maxima:float}', 'channel' => 'Imagick::CHANNEL_*'], 'Imagick::getImageDistortion' => ['float', 'reference' => 'magickwand', 'metric' => 'Imagick::METRIC_*'], 'Imagick::getResource' => ['int', 'type' => 'Imagick::RESOURCETYPE_*'], 'Imagick::getResourceLimit' => ['int', 'type' => 'Imagick::RESOURCETYPE_*'], 'Imagick::importImagePixels' => ['bool', 'x' => 'int', 'y' => 'int', 'width' => 'int', 'height' => 'int', 'map' => 'string', 'storage' => 'Imagick::PIXEL_*', 'pixels' => 'array'], 'Imagick::levelImage' => ['bool', 'blackpoint' => 'float', 'gamma' => 'float', 'whitepoint' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::mergeImageLayers' => ['Imagick', 'layer_method' => 'Imagick::LAYERMETHOD_*'], 'Imagick::montageImage' => ['Imagick', 'draw' => 'imagickdraw', 'tile_geometry' => 'string', 'thumbnail_geometry' => 'string', 'mode' => 'Imagick::MONTAGEMODE_*', 'frame' => 'string'], 'Imagick::morphology' => ['bool', 'morphologyMethod' => 'Imagick::MORPHOLOGY_*', 'iterations' => 'int', 'ImagickKernel' => 'ImagickKernel', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::motionBlurImage' => ['bool', 'radius' => 'float', 'sigma' => 'float', 'angle' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::negateImage' => ['bool', 'gray' => 'bool', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::normalizeImage' => ['bool', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::opaquePaintImage' => ['bool', 'target' => 'mixed', 'fill' => 'mixed', 'fuzz' => 'float', 'invert' => 'bool', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::orderedPosterizeImage' => ['bool', 'threshold_map' => 'string', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::paintFloodfillImage' => ['bool', 'fill' => 'mixed', 'fuzz' => 'float', 'bordercolor' => 'mixed', 'x' => 'int', 'y' => 'int', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::paintOpaqueImage' => ['bool', 'target' => 'mixed', 'fill' => 'mixed', 'fuzz' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::radialBlurImage' => ['bool', 'angle' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::randomThresholdImage' => ['bool', 'low' => 'float', 'high' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::remapImage' => ['bool', 'replacement' => 'imagick', 'dither' => 'Imagick::DITHERMETHOD_*'], 'Imagick::rotationalBlurImage' => ['bool', 'float' => 'string', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::segmentImage' => ['bool', 'colorspace' => 'Imagick::COLORSPACE_*', 'cluster_threshold' => 'float', 'smooth_threshold' => 'float', 'verbose=' => 'bool'], 'Imagick::selectiveBlurImage' => ['bool', 'radius' => 'float', 'sigma' => 'float', 'threshold' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::separateImageChannel' => ['bool', 'channel' => 'Imagick::CHANNEL_*'], 'Imagick::setColorspace' => ['bool', 'colorspace' => 'Imagick::COLORSPACE_*'], 'Imagick::setCompression' => ['bool', 'compression' => 'Imagick::COMPRESSION_*'], 'Imagick::setGravity' => ['bool', 'gravity' => 'Imagick::GRAVITY_*'], 'Imagick::setImageAlphaChannel' => ['bool', 'mode' => 'Imagick::ALPHACHANNEL_*'], 'Imagick::setImageChannelDepth' => ['bool', 'channel' => 'Imagick::CHANNEL_*', 'depth' => 'int'], 'Imagick::setImageChannelMask' => ['', 'channel' => 'Imagick::CHANNEL_*'], 'Imagick::setImageClipMask' => ['bool', 'clip_mask' => 'imagick'], 'Imagick::setImageColormapColor' => ['bool', 'index' => 'int', 'color' => 'imagickpixel'], 'Imagick::setImageColorspace' => ['bool', 'colorspace' => 'Imagick::COLORSPACE_*'], 'Imagick::setImageCompose' => ['bool', 'compose' => 'Imagick::COMPOSITE_*'], 'Imagick::setImageCompression' => ['bool', 'compression' => 'Imagick::COMPRESSION_*'], 'Imagick::setImageDispose' => ['bool', 'dispose' => 'Imagick::DISPOSE_*'], 'Imagick::setImageGravity' => ['bool', 'gravity' => 'Imagick::GRAVITY_*'], 'Imagick::setImageInterlaceScheme' => ['bool', 'interlace_scheme' => 'Imagick::INTERLACE_*'], 'Imagick::setImageInterpolateMethod' => ['bool', 'method' => 'Imagick::INTERPOLATE_*'], 'Imagick::setImageOrientation' => ['bool', 'orientation' => 'Imagick::ORIENTATION_*'], 'Imagick::setImageRenderingIntent' => ['bool', 'rendering_intent' => 'Imagick::RENDERINGINTENT_*'], 'Imagick::setImageType' => ['bool', 'image_type' => 'Imagick::IMGTYPE_*'], 'Imagick::setType' => ['bool', 'image_type' => 'Imagick::IMGTYPE_*'], 'Imagick::sharpenImage' => ['bool', 'radius' => 'float', 'sigma' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::sigmoidalContrastImage' => ['bool', 'sharpen' => 'bool', 'alpha' => 'float', 'beta' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::similarityImage' => ['Imagick', 'imagick' => 'Imagick', '&bestMatch' => 'array', '&similarity' => 'float', 'similarity_threshold' => 'float', 'metric' => 'Imagick::METRIC_*'], 'Imagick::sparseColorImage' => ['bool', 'sparse_method' => 'Imagick::SPARSECOLORMETHOD_*', 'arguments' => 'array', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::statisticImage' => ['bool', 'type' => 'Imagick::STATISTIC_*', 'width' => 'int', 'height' => 'int', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::thresholdImage' => ['bool', 'threshold' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'Imagick::transformImageColorspace' => ['bool', 'colorspace' => 'Imagick::COLORSPACE_*'], 'Imagick::unsharpMaskImage' => ['bool', 'radius' => 'float', 'sigma' => 'float', 'amount' => 'float', 'threshold' => 'float', 'channel=' => 'Imagick::CHANNEL_*'], 'ImagickDraw::color' => ['bool', 'x' => 'float', 'y' => 'float', 'paintmethod' => 'Imagick::PAINT_*'], 'ImagickDraw::composite' => ['bool', 'compose' => 'Imagick::COMPOSITE_*', 'x' => 'float', 'y' => 'float', 'width' => 'float', 'height' => 'float', 'compositewand' => 'imagick'], 'ImagickDraw::getFillRule' => ['Imagick::FILLRULE_*'], 'ImagickDraw::getFontStretch' => ['Imagick::STRETCH_*'], 'ImagickDraw::getFontStyle' => ['Imagick::STYLE_*'], 'ImagickDraw::getGravity' => ['Imagick::GRAVITY_*'], 'ImagickDraw::getStrokeLineCap' => ['Imagick::LINECAP_*'], 'ImagickDraw::getStrokeLineJoin' => ['Imagick::LINEJOIN_*'], 'ImagickDraw::getTextAlignment' => ['Imagick::ALIGN_*'], 'ImagickDraw::getTextDecoration' => ['Imagick::DECORATION_*'], 'ImagickDraw::matte' => ['bool', 'x' => 'float', 'y' => 'float', 'paintmethod' => 'Imagick::PAINT_*'], 'ImagickDraw::setClipRule' => ['bool', 'fill_rule' => 'Imagick::FILLRULE_*'], 'ImagickDraw::setFillRule' => ['bool', 'fill_rule' => 'Imagick::FILLRULE_*'], 'ImagickDraw::setFontStretch' => ['bool', 'fontstretch' => 'Imagick::STRETCH_*'], 'ImagickDraw::setFontStyle' => ['bool', 'style' => 'Imagick::STYLE_*'], 'ImagickDraw::setGravity' => ['bool', 'gravity' => 'Imagick::GRAVITY_*'], 'ImagickDraw::setStrokeLineCap' => ['bool', 'linecap' => 'Imagick::LINECAP_*'], 'ImagickDraw::setStrokeLineJoin' => ['bool', 'linejoin' => 'Imagick::LINEJOIN_*'], 'ImagickDraw::setTextAlignment' => ['bool', 'alignment' => 'Imagick::ALIGN_*'], 'ImagickDraw::setTextAntialias' => ['bool', 'antialias' => 'bool'], 'ImagickDraw::setTextDecoration' => ['bool', 'decoration' => 'Imagick::DECORATION_*'], 'ImagickKernel::fromBuiltin' => ['ImagickKernel', 'kernelType' => 'Imagick::KERNEL_*', 'kernelString' => 'string'], 'ImagickKernel::scale' => ['void', 'scale' => 'float', 'normalizeFlag' => 'Imagick::NORMALIZE_KERNEL_*'], 'imagecolorallocate' => ['int<0, max>|false', 'im' => 'resource', 'red' => 'int<0, 255>', 'green' => 'int<0, 255>', 'blue' => 'int<0, 255>'], 'imagecolorallocatealpha' => ['int<0, max>|false', 'im' => 'resource', 'red' => 'int<0, 255>', 'green' => 'int<0, 255>', 'blue' => 'int<0, 255>', 'alpha' => 'int<0, 127>'], 'imagecolorclosest' => ['int<0, max>', 'im' => 'resource', 'red' => 'int<0, 255>', 'green' => 'int<0, 255>', 'blue' => 'int<0, 255>'], 'imagecolorclosestalpha' => ['int<0, max>', 'im' => 'resource', 'red' => 'int<0, 255>', 'green' => 'int<0, 255>', 'blue' => 'int<0, 255>', 'alpha' => 'int<0, 127>'], 'imagecolorclosesthwb' => ['int<0, max>', 'im' => 'resource', 'red' => 'int<0, 255>', 'green' => 'int<0, 255>', 'blue' => 'int<0, 255>'], 'imagecolorexact' => ['int<0, max>|false', 'im' => 'resource', 'red' => 'int<0, 255>', 'green' => 'int<0, 255>', 'blue' => 'int<0, 255>'], 'imagecolorexactalpha' => ['int<0, max>|false', 'im' => 'resource', 'red' => 'int<0, 255>', 'green' => 'int<0, 255>', 'blue' => 'int<0, 255>', 'alpha' => 'int<0, 127>'], 'imagecolorresolve' => ['int<0, max>', 'im' => 'resource', 'red' => 'int<0, 255>', 'green' => 'int<0, 255>', 'blue' => 'int<0, 255>'], 'imagecolorresolvealpha' => ['int<0, max>', 'im' => 'resource', 'red' => 'int<0, 255>', 'green' => 'int<0, 255>', 'blue' => 'int<0, 255>', 'alpha' => 'int<0, 127>'], 'imagecolorset' => ['void', 'im' => 'resource', 'col' => 'int', 'red' => 'int<0, 255>', 'green' => 'int<0, 255>', 'blue' => 'int<0, 255>', 'alpha=' => 'int<0, 127>'], 'imagecreate' => ['__benevolent', 'x_size' => 'int<1, max>', 'y_size' => 'int<1, max>'], 'imagecreatetruecolor' => ['__benevolent', 'x_size' => 'int<1, max>', 'y_size' => 'int<1, max>'], 'max' => ['', '...arg1' => 'non-empty-array'], 'mb_detect_order' => ['bool|list', 'encoding_list=' => 'non-empty-list|non-falsy-string'], 'min' => ['', '...arg1' => 'non-empty-array'], 'file' => ['list|false', 'filename' => 'string', 'flags=' => 'int-mask', 'context=' => 'resource'], 'flock' => ['bool', 'fp' => 'resource', 'operation' => 'int-mask', '&w_wouldblock=' => '0|1'], 'ftp_append' => ['bool', 'ftp' => 'resource', 'remote_file' => 'string', 'local_file' => 'string', 'mode=' => 'FTP_ASCII|FTP_BINARY'], 'ftp_fget' => ['bool', 'stream' => 'resource', 'fp' => 'resource', 'remote_file' => 'string', 'mode=' => 'FTP_ASCII|FTP_BINARY', 'resumepos=' => 'int'], 'ftp_fput' => ['bool', 'stream' => 'resource', 'remote_file' => 'string', 'fp' => 'resource', 'mode=' => 'FTP_ASCII|FTP_BINARY', 'startpos=' => 'int'], 'ftp_get' => ['bool', 'stream' => 'resource', 'local_file' => 'string', 'remote_file' => 'string', 'mode=' => 'FTP_ASCII|FTP_BINARY', 'resume_pos=' => 'int'], 'ftp_nb_fget' => ['int', 'stream' => 'resource', 'fp' => 'resource', 'remote_file' => 'string', 'mode=' => 'FTP_ASCII|FTP_BINARY', 'resumepos=' => 'int'], 'ftp_nb_fput' => ['int', 'stream' => 'resource', 'remote_file' => 'string', 'fp' => 'resource', 'mode=' => 'FTP_ASCII|FTP_BINARY', 'startpos=' => 'int'], 'ftp_nb_get' => ['int|false', 'stream' => 'resource', 'local_file' => 'string', 'remote_file' => 'string', 'mode=' => 'FTP_ASCII|FTP_BINARY', 'resume_pos=' => 'int'], 'ftp_nb_put' => ['int|false', 'stream' => 'resource', 'remote_file' => 'string', 'local_file' => 'string', 'mode=' => 'FTP_ASCII|FTP_BINARY', 'startpos=' => 'int'], 'ftp_put' => ['bool', 'stream' => 'resource', 'remote_file' => 'string', 'local_file' => 'string', 'mode=' => 'FTP_ASCII|FTP_BINARY', 'startpos=' => 'int'], 'scandir' => ['list|false', 'dir' => 'string', 'sorting_order=' => 'SCANDIR_SORT_ASCENDING|SCANDIR_SORT_DESCENDING| SCANDIR_SORT_NONE', 'context=' => 'resource'], 'stream_socket_client' => ['resource|false', 'remoteaddress' => 'string', '&w_errcode=' => 'int', '&w_errstring=' => 'string', 'timeout=' => 'float', 'flags=' => 'int-mask', 'context=' => 'resource'], 'stream_socket_enable_crypto' => ['0|bool', 'stream' => 'resource', 'enable' => 'bool', 'crypto_method=' => 'STREAM_CRYPTO_METHOD_SSLv2_CLIENT|STREAM_CRYPTO_METHOD_SSLv3_CLIENT|STREAM_CRYPTO_METHOD_SSLv23_CLIENT|STREAM_CRYPTO_METHOD_ANY_CLIENT|STREAM_CRYPTO_METHOD_TLS_CLIENT|STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT|STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT|STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT|STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT|STREAM_CRYPTO_METHOD_SSLv2_SERVER|STREAM_CRYPTO_METHOD_SSLv3_SERVER|STREAM_CRYPTO_METHOD_SSLv23_SERVER|STREAM_CRYPTO_METHOD_ANY_SERVER|STREAM_CRYPTO_METHOD_TLS_SERVER|STREAM_CRYPTO_METHOD_TLSv1_0_SERVER|STREAM_CRYPTO_METHOD_TLSv1_1_SERVER|STREAM_CRYPTO_METHOD_TLSv1_2_SERVER|STREAM_CRYPTO_METHOD_TLSv1_3_SERVER', 'session_stream=' => 'resource'], 'extract' => ['0|positive-int', 'array' => 'array', 'flags=' => 'EXTR_OVERWRITE|EXTR_SKIP|EXTR_PREFIX_SAME|EXTR_PREFIX_ALL|EXTR_PREFIX_INVALID|EXTR_IF_EXISTS|EXTR_PREFIX_IF_EXISTS|EXTR_REFS', 'prefix=' => 'string|null'], 'RecursiveIteratorIterator::__construct' => ['void', 'iterator' => 'RecursiveIterator|IteratorAggregate', 'mode=' => 'RecursiveIteratorIterator::LEAVES_ONLY|RecursiveIteratorIterator::SELF_FIRST|RecursiveIteratorIterator::CHILD_FIRST', 'flags=' => '0|RecursiveIteratorIterator::CATCH_GET_CHILD'], 'Locale::composeLocale' => ['string|false', 'subtags' => 'array{language:string, script?:string, region?:string, variant?:array, private?:array, extlang?:array, variant0?:string, variant1?:string, variant2?:string, variant3?:string, variant4?:string, variant5?:string, variant6?:string, variant7?:string, variant8?:string, variant9?:string, variant10?:string, variant11?:string, variant12?:string, variant13?:string, variant14?:string, private0?:string, private1?:string, private2?:string, private3?:string, private4?:string, private5?:string, private6?:string, private7?:string, private8?:string, private9?:string, private10?:string, private11?:string, private12?:string, private13?:string, private14?:string, extlang0?:string, extlang1?:string, extlang2?:string}'], 'locale_compose' => ['string|false', 'subtags' => 'array{language:string, script?:string, region?:string, variant?:array, private?:array, extlang?:array, variant0?:string, variant1?:string, variant2?:string, variant3?:string, variant4?:string, variant5?:string, variant6?:string, variant7?:string, variant8?:string, variant9?:string, variant10?:string, variant11?:string, variant12?:string, variant13?:string, variant14?:string, private0?:string, private1?:string, private2?:string, private3?:string, private4?:string, private5?:string, private6?:string, private7?:string, private8?:string, private9?:string, private10?:string, private11?:string, private12?:string, private13?:string, private14?:string, extlang0?:string, extlang1?:string, extlang2?:string}'], 'count' => ['0|positive-int', 'var' => 'Countable|array', 'mode=' => '0|1']], 'old' => []]; [ 'array_combine' => ['associative-array', 'keys'=>'string[]|int[]', 'values'=>'array'], 'base64_decode' => ['string', 'string'=>'string', 'strict='=>'false'], 'base64_decode\'1' => ['string|false', 'string'=>'string', 'strict='=>'true'], 'bcdiv' => ['string', 'dividend'=>'string', 'divisor'=>'string', 'scale='=>'int'], 'bcmod' => ['string', 'dividend'=>'string', 'divisor'=>'string', 'scale='=>'int'], 'bcpowmod' => ['string', 'base'=>'string', 'exponent'=>'string', 'modulus'=>'string', 'scale='=>'int'], 'call_user_func_array' => ['mixed', 'function'=>'callable', 'parameters'=>'array'], 'ceil' => ['float', 'number'=>'float'], 'com_load_typelib' => ['bool', 'typelib_name'=>'string', 'case_insensitive='=>'true'], 'count_chars' => ['array|string', 'input'=>'string', 'mode='=>'int'], 'curl_init' => ['__benevolent', 'url='=>'string'], 'date_add' => ['DateTime', 'object'=>'DateTime', 'interval'=>'DateInterval'], 'date_date_set' => ['DateTime', 'object'=>'DateTime', 'year'=>'int', 'month'=>'int', 'day'=>'int'], 'date_diff' => ['DateInterval', 'obj1'=>'DateTimeInterface', 'obj2'=>'DateTimeInterface', 'absolute='=>'bool'], 'date_format' => ['string', 'object'=>'DateTimeInterface', 'format'=>'string'], 'date_isodate_set' => ['DateTime', 'object'=>'DateTime', 'year'=>'int', 'week'=>'int', 'day='=>'int|mixed'], 'date_parse' => ['array', 'date'=>'string'], 'date_sub' => ['DateTime', 'object'=>'DateTime', 'interval'=>'DateInterval'], 'date_sun_info' => ['array{sunrise: int|bool,sunset: int|bool,transit: int|bool,civil_twilight_begin: int|bool,civil_twilight_end: int|bool,nautical_twilight_begin: int|bool,nautical_twilight_end: int|bool,astronomical_twilight_begin: int|bool,astronomical_twilight_end: int|bool}', 'time'=>'int', 'latitude'=>'float', 'longitude'=>'float'], 'date_time_set' => ['DateTime', 'object'=>'DateTime', 'hour'=>'int', 'minute'=>'int', 'second='=>'int', 'microseconds='=>'int'], 'date_timestamp_set' => ['DateTime', 'object'=>'DateTime', 'unixtimestamp'=>'int'], 'date_timezone_set' => ['DateTime', 'object'=>'DateTime', 'timezone'=>'DateTimeZone'], 'explode' => ['list', 'separator'=>'non-empty-string', 'str'=>'string', 'limit='=>'int'], 'fdiv' => ['float', 'dividend'=>'float', 'divisor'=>'float'], 'floor' => ['float', 'number'=>'float'], 'forward_static_call_array' => ['mixed', 'function'=>'callable', 'parameters'=>'array'], 'get_debug_type' => ['string', 'var'=>'mixed'], 'get_resource_id' => ['int', 'res'=>'resource'], 'gmdate' => ['string', 'format'=>'string', 'timestamp='=>'int'], 'gmmktime' => ['int|false', 'hour'=>'int', 'minute='=>'int', 'second='=>'int', 'month='=>'int', 'day='=>'int', 'year='=>'int'], 'hash' => ['non-falsy-string', 'algo'=>'string', 'data'=>'string', 'raw_output='=>'bool'], 'hash_hkdf' => ['non-falsy-string', 'algo'=>'string', 'key'=>'string', 'length='=>'int', 'info='=>'string', 'salt='=>'string'], 'hash_hmac' => ['non-falsy-string', 'algo'=>'string', 'data'=>'string', 'key'=>'string', 'raw_output='=>'bool'], 'hash_pbkdf2' => ['non-falsy-string', 'algo'=>'string', 'password'=>'string', 'salt'=>'string', 'iterations'=>'int', 'length='=>'int', 'raw_output='=>'bool'], 'imageaffine' => ['false|object', 'src'=>'resource', 'affine'=>'array', 'clip='=>'array'], 'imagecreate' => ['__benevolent', 'width'=>'int', 'height'=>'int'], 'imagecreatefrombmp' => ['false|object', 'filename'=>'string'], 'imagecreatefromgd' => ['false|object', 'filename'=>'string'], 'imagecreatefromgd2' => ['false|object', 'filename'=>'string'], 'imagecreatefromgd2part' => ['false|object', 'filename'=>'string', 'srcx'=>'int', 'srcy'=>'int', 'width'=>'int', 'height'=>'int'], 'imagecreatefromgif' => ['false|object', 'filename'=>'string'], 'imagecreatefromjpeg' => ['false|object', 'filename'=>'string'], 'imagecreatefrompng' => ['false|object', 'filename'=>'string'], 'imagecreatefromstring' => ['false|object', 'image'=>'string'], 'imagecreatefromwbmp' => ['false|object', 'filename'=>'string'], 'imagecreatefromwebp' => ['false|object', 'filename'=>'string'], 'imagecreatefromxbm' => ['false|object', 'filename'=>'string'], 'imagecreatefromxpm' => ['false|object', 'filename'=>'string'], 'imagecreatetruecolor' => ['__benevolent', 'width'=>'int', 'height'=>'int'], 'imagecrop' => ['false|object', 'im'=>'resource', 'rect'=>'array'], 'imagecropauto' => ['false|object', 'im'=>'resource', 'mode'=>'int', 'threshold'=>'float', 'color'=>'int'], 'imagegetclip' => ['array', 'im'=>'resource'], 'imagegrabscreen' => ['false|object'], 'imagegrabwindow' => ['false|object', 'window_handle'=>'int', 'client_area='=>'int'], 'imagejpeg' => ['bool', 'im'=>'GdImage', 'filename='=>'string|resource|null', 'quality='=>'int'], 'imagerotate' => ['false|object', 'src_im'=>'resource', 'angle'=>'float', 'bgdcolor'=>'int', 'ignoretransparent='=>'int'], 'imagescale' => ['false|object', 'im'=>'resource', 'new_width'=>'int', 'new_height='=>'int', 'method='=>'int'], 'getenv' => ['string|false', 'varname'=>'string', 'local_only='=>'bool'], 'getenv\'1' => ['array', 'varname='=>'null', 'local_only='=>'bool'], 'ldap_set_rebind_proc' => ['bool', 'ldap'=>'resource', 'callback'=>'?callable'], 'mb_decode_numericentity' => ['string|false', 'string'=>'string', 'convmap'=>'array', 'encoding='=>'string'], 'mb_encoding_aliases' => ['list', 'encoding'=>'string'], 'mb_str_split' => ['list', 'str'=>'string', 'split_length='=>'positive-int', 'encoding='=>'string'], 'mb_strlen' => ['0|positive-int', 'str'=>'string', 'encoding='=>'string'], 'mktime' => ['int|false', 'hour'=>'int', 'minute='=>'int', 'second='=>'int', 'month='=>'int', 'day='=>'int', 'year='=>'int'], 'odbc_exec' => ['resource|false', 'connection_id'=>'resource', 'query'=>'string'], 'parse_str' => ['void', 'encoded_string'=>'string', '&w_result'=>'array'], 'password_hash' => ['non-empty-string', 'password'=>'string', 'algo'=>'string|int|null', 'options='=>'array'], 'PDOStatement::fetchAll' => ['array', 'how='=>'int', 'fetch_argument='=>'int|string|callable', 'ctor_args='=>'?array'], 'PhpToken::tokenize' => ['list', 'code'=>'string', 'flags='=>'int'], 'PhpToken::is' => ['bool', 'kind'=>'string|int|string[]|int[]'], 'PhpToken::isIgnorable' => ['bool'], 'PhpToken::getTokenName' => ['non-falsy-string'], 'preg_match_all' => ['0|positive-int|false', 'pattern'=>'string', 'subject'=>'string', '&w_subpatterns='=>'array', 'flags='=>'int', 'offset='=>'int'], 'proc_get_status' => ['array{command: string, pid: int, running: bool, signaled: bool, stopped: bool, exitcode: int, termsig: int, stopsig: int}', 'process'=>'resource'], 'set_error_handler' => ['?callable', 'callback'=>'null|callable(int,string,string,int):bool', 'error_types='=>'int'], 'socket_addrinfo_lookup' => ['AddressInfo[]', 'node'=>'string', 'service='=>'mixed', 'hints='=>'array'], 'socket_select' => ['int|false', '&w_read'=>'Socket[]|null', '&w_write'=>'Socket[]|null', '&w_except'=>'Socket[]|null', 'seconds'=>'int|null', 'microseconds='=>'int'], 'sodium_crypto_aead_chacha20poly1305_ietf_decrypt' => ['string|false', 'confidential_message'=>'string', 'public_message'=>'string', 'nonce'=>'string', 'key'=>'string'], 'spl_autoload_functions' => ['list'], 'str_contains' => ['bool', 'haystack'=>'string', 'needle'=>'string'], 'str_split' => ['non-empty-list', 'str'=>'string', 'split_length='=>'positive-int'], 'str_ends_with' => ['bool', 'haystack'=>'string', 'needle'=>'string'], 'str_starts_with' => ['bool', 'haystack'=>'string', 'needle'=>'string'], 'strchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'], 'stripos' => ['0|positive-int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'], 'stristr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'], 'strpos' => ['positive-int|0|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'], 'strrchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string'], 'strripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'], 'strrpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'], 'strstr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'], 'substr' => ['string', 'string'=>'string', 'start'=>'int', 'length='=>'int'], 'round' => ['float', 'number'=>'float', 'precision='=>'int', 'mode='=>'1|2|3|4'], 'version_compare' => ['int|bool', 'version1'=>'string', 'version2'=>'string', 'operator='=>'string|null'], 'xml_parser_create' => ['XMLParser', 'encoding='=>'string'], 'xml_parser_create_ns' => ['XMLParser', 'encoding='=>'string', 'sep='=>'string'], 'xml_parser_free' => ['bool', 'parser'=>'XMLParser'], 'xml_parser_get_option' => ['mixed|false', 'parser'=>'XMLParser', 'option'=>'int'], 'xml_parser_set_option' => ['bool', 'parser'=>'XMLParser', 'option'=>'int', 'value'=>'mixed'], 'xmlwriter_end_attribute' => ['bool', 'xmlwriter'=>'XMLWriter'], 'xmlwriter_end_cdata' => ['bool', 'xmlwriter'=>'XMLWriter'], 'xmlwriter_end_comment' => ['bool', 'xmlwriter'=>'XMLWriter'], 'xmlwriter_end_document' => ['bool', 'xmlwriter'=>'XMLWriter'], 'xmlwriter_end_dtd' => ['bool', 'xmlwriter'=>'XMLWriter'], 'xmlwriter_end_dtd_attlist' => ['bool', 'xmlwriter'=>'XMLWriter'], 'xmlwriter_end_dtd_element' => ['bool', 'xmlwriter'=>'XMLWriter'], 'xmlwriter_end_dtd_entity' => ['bool', 'xmlwriter'=>'XMLWriter'], 'xmlwriter_end_element' => ['bool', 'xmlwriter'=>'XMLWriter'], 'xmlwriter_end_pi' => ['bool', 'xmlwriter'=>'XMLWriter'], 'xmlwriter_flush' => ['mixed', 'xmlwriter'=>'XMLWriter', 'empty='=>'bool'], 'xmlwriter_full_end_element' => ['bool', 'xmlwriter'=>'XMLWriter'], 'xmlwriter_open_memory' => ['XMLWriter'], 'xmlwriter_open_uri' => ['XMLWriter', 'source'=>'string'], 'xmlwriter_output_memory' => ['string', 'xmlwriter'=>'XMLWriter', 'flush='=>'bool'], 'xmlwriter_set_indent' => ['bool', 'xmlwriter'=>'XMLWriter', 'indent'=>'bool'], 'xmlwriter_set_indent_string' => ['bool', 'xmlwriter'=>'XMLWriter', 'indentstring'=>'string'], 'xmlwriter_start_attribute' => ['bool', 'xmlwriter'=>'XMLWriter', 'name'=>'string'], 'xmlwriter_start_attribute_ns' => ['bool', 'xmlwriter'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'uri'=>'string'], 'xmlwriter_start_cdata' => ['bool', 'xmlwriter'=>'XMLWriter'], 'xmlwriter_start_comment' => ['bool', 'xmlwriter'=>'XMLWriter'], 'xmlwriter_start_document' => ['bool', 'xmlwriter'=>'XMLWriter', 'version='=>'string', 'encoding='=>'string', 'standalone='=>'string'], 'xmlwriter_start_dtd' => ['bool', 'xmlwriter'=>'XMLWriter', 'name'=>'string', 'publicid='=>'string', 'sysid='=>'string'], 'xmlwriter_start_dtd_attlist' => ['bool', 'xmlwriter'=>'XMLWriter', 'name'=>'string'], 'xmlwriter_start_dtd_element' => ['bool', 'xmlwriter'=>'XMLWriter', 'name'=>'string'], 'xmlwriter_start_dtd_entity' => ['bool', 'xmlwriter'=>'XMLWriter', 'name'=>'string', 'isparam'=>'bool'], 'xmlwriter_start_element' => ['bool', 'xmlwriter'=>'XMLWriter', 'name'=>'string'], 'xmlwriter_start_element_ns' => ['bool', 'xmlwriter'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'uri'=>'string|null'], 'xmlwriter_start_pi' => ['bool', 'xmlwriter'=>'XMLWriter', 'target'=>'string'], 'xmlwriter_text' => ['bool', 'xmlwriter'=>'XMLWriter', 'content'=>'string'], 'xmlwriter_write_attribute' => ['bool', 'xmlwriter'=>'XMLWriter', 'name'=>'string', 'content'=>'string'], 'xmlwriter_write_attribute_ns' => ['bool', 'xmlwriter'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'uri'=>'string', 'content'=>'string'], 'xmlwriter_write_cdata' => ['bool', 'xmlwriter'=>'XMLWriter', 'content'=>'string'], 'xmlwriter_write_comment' => ['bool', 'xmlwriter'=>'XMLWriter', 'content'=>'string'], 'xmlwriter_write_dtd' => ['bool', 'xmlwriter'=>'XMLWriter', 'name'=>'string', 'publicid='=>'string', 'sysid='=>'string', 'subset='=>'string'], 'xmlwriter_write_dtd_attlist' => ['bool', 'xmlwriter'=>'XMLWriter', 'name'=>'string', 'content'=>'string'], 'xmlwriter_write_dtd_element' => ['bool', 'xmlwriter'=>'XMLWriter', 'name'=>'string', 'content'=>'string'], 'xmlwriter_write_dtd_entity' => ['bool', 'xmlwriter'=>'XMLWriter', 'name'=>'string', 'content'=>'string', 'pe'=>'bool', 'publicid'=>'string', 'sysid'=>'string', 'ndataid'=>'string'], 'xmlwriter_write_element' => ['bool', 'xmlwriter'=>'XMLWriter', 'name'=>'string', 'content'=>'string'], 'xmlwriter_write_element_ns' => ['bool', 'xmlwriter'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'uri'=>'string', 'content'=>'string'], 'xmlwriter_write_pi' => ['bool', 'xmlwriter'=>'XMLWriter', 'target'=>'string', 'content'=>'string'], 'xmlwriter_write_raw' => ['bool', 'xmlwriter'=>'XMLWriter', 'content'=>'string'], ], 'old' => [ 'array_combine' => ['associative-array|false', 'keys'=>'string[]|int[]', 'values'=>'array'], 'bcdiv' => ['?string', 'dividend'=>'string', 'divisor'=>'string', 'scale='=>'int'], 'bcmod' => ['?string', 'dividend'=>'string', 'divisor'=>'string', 'scale='=>'int'], 'bcpowmod' => ['?string', 'base'=>'string', 'exponent'=>'string', 'modulus'=>'string', 'scale='=>'int'], 'ceil' => ['__benevolent', 'number'=>'float'], 'convert_cyr_string' => ['string', 'str'=>'string', 'from'=>'string', 'to'=>'string'], 'com_load_typelib' => ['bool', 'typelib_name'=>'string', 'case_insensitive='=>'bool'], 'count_chars' => ['array|false|string', 'input'=>'string', 'mode='=>'int'], 'curl_init' => ['__benevolent', 'url='=>'string'], 'date_add' => ['DateTime|false', 'object'=>'DateTime', 'interval'=>'DateInterval'], 'date_date_set' => ['DateTime|false', 'object'=>'DateTime', 'year'=>'int', 'month'=>'int', 'day'=>'int'], 'date_diff' => ['DateInterval|false', 'obj1'=>'DateTimeInterface', 'obj2'=>'DateTimeInterface', 'absolute='=>'bool'], 'date_format' => ['string|false', 'object'=>'DateTimeInterface', 'format'=>'string'], 'date_isodate_set' => ['DateTime|false', 'object'=>'DateTime', 'year'=>'int', 'week'=>'int', 'day='=>'int|mixed'], 'date_parse' => ['array|false', 'date'=>'string'], 'date_sub' => ['DateTime|false', 'object'=>'DateTime', 'interval'=>'DateInterval'], 'date_sun_info' => ['__benevolent', 'time'=>'int', 'latitude'=>'float', 'longitude'=>'float'], 'date_time_set' => ['DateTime|false', 'object'=>'DateTime', 'hour'=>'int', 'minute'=>'int', 'second='=>'int', 'microseconds='=>'int'], 'date_timestamp_set' => ['DateTime|false', 'object'=>'DateTime', 'unixtimestamp'=>'int'], 'date_timezone_set' => ['DateTime|false', 'object'=>'DateTime', 'timezone'=>'DateTimeZone'], 'each' => ['array{0:int|string,key:int|string,1:mixed,value:mixed}', '&r_arr'=>'array'], 'ezmlm_hash' => ['int', 'addr'=>'string'], 'fgetss' => ['string|false', 'fp'=>'resource', 'length='=>'0|positive-int', 'allowable_tags='=>'string'], 'floor' => ['__benevolent', 'number'=>'float'], 'get_magic_quotes_gpc' => ['false'], 'gmdate' => ['string|false', 'format'=>'string', 'timestamp='=>'int'], 'gmmktime' => ['int|false', 'hour='=>'int', 'minute='=>'int', 'second='=>'int', 'month='=>'int', 'day='=>'int', 'year='=>'int'], 'gmp_random' => ['GMP', 'limiter='=>'int'], 'gzgetss' => ['string|false', 'zp'=>'resource', 'length'=>'int', 'allowable_tags='=>'string'], 'hash' => ['non-falsy-string|false', 'algo'=>'string', 'data'=>'string', 'raw_output='=>'bool'], 'hash_hkdf' => ['non-falsy-string|false', 'algo'=>'string', 'key'=>'string', 'length='=>'int', 'info='=>'string', 'salt='=>'string'], 'hash_hmac' => ['non-falsy-string|false', 'algo'=>'string', 'data'=>'string', 'key'=>'string', 'raw_output='=>'bool'], 'hash_pbkdf2' => ['non-falsy-string|false', 'algo'=>'string', 'password'=>'string', 'salt'=>'string', 'iterations'=>'int', 'length='=>'int', 'raw_output='=>'bool'], 'hebrevc' => ['string', 'str'=>'string', 'max_chars_per_line='=>'int'], 'image2wbmp' => ['bool', 'im'=>'resource', 'filename='=>'?string', 'threshold='=>'int'], 'imageaffine' => ['resource|false', 'src'=>'resource', 'affine'=>'array', 'clip='=>'array'], 'imagecreate' => ['resource|false', 'x_size'=>'int', 'y_size'=>'int'], 'imagecreatefrombmp' => ['resource|false', 'filename'=>'string'], 'imagecreatefromgd' => ['resource|false', 'filename'=>'string'], 'imagecreatefromgd2' => ['resource|false', 'filename'=>'string'], 'imagecreatefromgd2part' => ['resource|false', 'filename'=>'string', 'srcx'=>'int', 'srcy'=>'int', 'width'=>'int', 'height'=>'int'], 'imagecreatefromgif' => ['resource|false', 'filename'=>'string'], 'imagecreatefromjpeg' => ['resource|false', 'filename'=>'string'], 'imagecreatefrompng' => ['resource|false', 'filename'=>'string'], 'imagecreatefromstring' => ['resource|false', 'image'=>'string'], 'imagecreatefromwbmp' => ['resource|false', 'filename'=>'string'], 'imagecreatefromwebp' => ['resource|false', 'filename'=>'string'], 'imagecreatefromxbm' => ['resource|false', 'filename'=>'string'], 'imagecreatefromxpm' => ['resource|false', 'filename'=>'string'], 'imagecreatetruecolor' => ['resource|false', 'x_size'=>'int', 'y_size'=>'int'], 'imagecrop' => ['resource|false', 'im'=>'resource', 'rect'=>'array'], 'imagecropauto' => ['resource|false', 'im'=>'resource', 'mode'=>'int', 'threshold'=>'float', 'color'=>'int'], 'imagegetclip' => ['array|false', 'im'=>'resource'], 'imagegrabscreen' => ['false|resource'], 'imagegrabwindow' => ['false|resource', 'window_handle'=>'int', 'client_area='=>'int'], 'imagejpeg' => ['bool', 'im'=>'resource', 'filename='=>'string|resource|null', 'quality='=>'int'], 'imagerotate' => ['resource|false', 'src_im'=>'resource', 'angle'=>'float', 'bgdcolor'=>'int', 'ignoretransparent='=>'int'], 'imagescale' => ['resource|false', 'im'=>'resource', 'new_width'=>'int', 'new_height='=>'int', 'method='=>'int'], 'imap_header' => ['stdClass|false', 'stream_id'=>'resource', 'msg_no'=>'int', 'from_length='=>'int', 'subject_length='=>'int', 'default_host='=>'string'], 'implode\'1' => ['string', 'pieces'=>'array'], 'jpeg2wbmp' => ['bool', 'jpegname'=>'string', 'wbmpname'=>'string', 'dest_height'=>'int', 'dest_width'=>'int', 'threshold'=>'int'], 'ldap_control_paged_result' => ['bool', 'link_identifier'=>'resource', 'pagesize'=>'int', 'iscritical='=>'bool', 'cookie='=>'string'], 'ldap_control_paged_result_response' => ['bool', 'link_identifier'=>'resource', 'result_identifier'=>'resource', '&w_cookie='=>'string', '&w_estimated='=>'int'], 'ldap_set_rebind_proc' => ['bool', 'link_identifier'=>'resource', 'callback'=>'callable'], 'ldap_sort' => ['bool', 'link_identifier'=>'resource', 'result_identifier'=>'resource', 'sortfilter'=>'string'], 'mb_decode_numericentity' => ['string|false', 'string'=>'string', 'convmap'=>'array', 'encoding='=>'string', 'is_hex='=>'bool'], 'mb_strlen' => ['0|positive-int', 'str'=>'string', 'encoding='=>'string'], 'mktime' => ['int|false', 'hour='=>'int', 'minute='=>'int', 'second='=>'int', 'month='=>'int', 'day='=>'int', 'year='=>'int'], 'money_format' => ['string', 'format'=>'string', 'value'=>'float'], 'odbc_exec' => ['resource|false', 'connection_id'=>'resource', 'query'=>'string', 'flags='=>'int'], 'parse_str' => ['void', 'encoded_string'=>'string', '&w_result='=>'array'], 'password_hash' => ['__benevolent', 'password'=>'string', 'algo'=>'string|int', 'options='=>'array'], 'png2wbmp' => ['bool', 'pngname'=>'string', 'wbmpname'=>'string', 'dest_height'=>'int', 'dest_width'=>'int', 'threshold'=>'int'], 'proc_get_status' => ['array{command: string, pid: int, running: bool, signaled: bool, stopped: bool, exitcode: int, termsig: int, stopsig: int}|false', 'process'=>'resource'], 'read_exif_data' => ['array', 'filename'=>'string', 'sections_needed='=>'string', 'sub_arrays='=>'bool', 'read_thumbnail='=>'bool'], 'restore_include_path' => ['void'], 'round' => ['__benevolent', 'number'=>'float', 'precision='=>'int', 'mode='=>'1|2|3|4'], 'socket_select' => ['int|false', '&w_read_fds'=>'resource[]|null', '&w_write_fds'=>'resource[]|null', '&w_except_fds'=>'resource[]|null', 'tv_sec'=>'int|null', 'tv_usec='=>'int|null'], 'sodium_crypto_aead_chacha20poly1305_ietf_decrypt' => ['?string|?false', 'confidential_message'=>'string', 'public_message'=>'string', 'nonce'=>'string', 'key'=>'string'], 'SplFileObject::fgetss' => ['string|false', 'allowable_tags='=>'string'], 'strchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int', 'before_needle='=>'bool'], 'stripos' => ['0|positive-int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'], 'stristr' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int', 'before_needle='=>'bool'], 'strpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'], 'strrchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int'], 'strripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'], 'strrpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'], 'strstr' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int', 'before_needle='=>'bool'], 'substr' => ['__benevolent', 'string'=>'string', 'start'=>'int', 'length='=>'int'], 'version_compare' => ['int|bool', 'version1'=>'string', 'version2'=>'string', 'operator='=>'string|null'], 'xml_parser_create' => ['resource', 'encoding='=>'string'], 'xml_parser_create_ns' => ['resource', 'encoding='=>'string', 'sep='=>'string'], 'xml_parser_free' => ['bool', 'parser'=>'resource'], 'xml_parser_get_option' => ['mixed|false', 'parser'=>'resource', 'option'=>'int'], 'xml_parser_set_option' => ['bool', 'parser'=>'resource', 'option'=>'int', 'value'=>'mixed'], 'xmlwriter_end_attribute' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_cdata' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_comment' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_document' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_dtd' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_dtd_attlist' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_dtd_element' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_dtd_entity' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_element' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_end_pi' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_flush' => ['mixed', 'xmlwriter'=>'resource', 'empty='=>'bool'], 'xmlwriter_full_end_element' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_open_memory' => ['resource'], 'xmlwriter_open_uri' => ['resource', 'source'=>'string'], 'xmlwriter_output_memory' => ['string', 'xmlwriter'=>'resource', 'flush='=>'bool'], 'xmlwriter_set_indent' => ['bool', 'xmlwriter'=>'resource', 'indent'=>'bool'], 'xmlwriter_set_indent_string' => ['bool', 'xmlwriter'=>'resource', 'indentstring'=>'string'], 'xmlwriter_start_attribute' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string'], 'xmlwriter_start_attribute_ns' => ['bool', 'xmlwriter'=>'resource', 'prefix'=>'string', 'name'=>'string', 'uri'=>'string'], 'xmlwriter_start_cdata' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_start_comment' => ['bool', 'xmlwriter'=>'resource'], 'xmlwriter_start_document' => ['bool', 'xmlwriter'=>'resource', 'version='=>'string', 'encoding='=>'string', 'standalone='=>'string'], 'xmlwriter_start_dtd' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'publicid='=>'string', 'sysid='=>'string'], 'xmlwriter_start_dtd_attlist' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string'], 'xmlwriter_start_dtd_element' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string'], 'xmlwriter_start_dtd_entity' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'isparam'=>'bool'], 'xmlwriter_start_element' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string'], 'xmlwriter_start_element_ns' => ['bool', 'xmlwriter'=>'resource', 'prefix'=>'string', 'name'=>'string', 'uri'=>'string|null'], 'xmlwriter_start_pi' => ['bool', 'xmlwriter'=>'resource', 'target'=>'string'], 'xmlwriter_text' => ['bool', 'xmlwriter'=>'resource', 'content'=>'string'], 'xmlwriter_write_attribute' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'content'=>'string'], 'xmlwriter_write_attribute_ns' => ['bool', 'xmlwriter'=>'resource', 'prefix'=>'string', 'name'=>'string', 'uri'=>'string', 'content'=>'string'], 'xmlwriter_write_cdata' => ['bool', 'xmlwriter'=>'resource', 'content'=>'string'], 'xmlwriter_write_comment' => ['bool', 'xmlwriter'=>'resource', 'content'=>'string'], 'xmlwriter_write_dtd' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'publicid='=>'string', 'sysid='=>'string', 'subset='=>'string'], 'xmlwriter_write_dtd_attlist' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'content'=>'string'], 'xmlwriter_write_dtd_element' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'content'=>'string'], 'xmlwriter_write_dtd_entity' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'content'=>'string', 'pe'=>'bool', 'publicid'=>'string', 'sysid'=>'string', 'ndataid'=>'string'], 'xmlwriter_write_element' => ['bool', 'xmlwriter'=>'resource', 'name'=>'string', 'content'=>'string'], 'xmlwriter_write_element_ns' => ['bool', 'xmlwriter'=>'resource', 'prefix'=>'string', 'name'=>'string', 'uri'=>'string', 'content'=>'string'], 'xmlwriter_write_pi' => ['bool', 'xmlwriter'=>'resource', 'target'=>'string', 'content'=>'string'], 'xmlwriter_write_raw' => ['bool', 'xmlwriter'=>'resource', 'content'=>'string'], ] ]; [ 'FFI::addr' => ['FFI\CData', 'ptr'=>'FFI\CData'], 'FFI::alignof' => ['int', 'ptr'=>'mixed'], 'FFI::arrayType' => ['FFI\CType', 'type'=>'string|FFI\CType', 'dims'=>'array'], 'FFI::cast' => ['FFI\CData', 'type'=>'string|FFI\CType', 'ptr'=>''], 'FFI::cdef' => ['FFI', 'code='=>'string', 'lib='=>'?string'], 'FFI::free' => ['void', 'ptr'=>'FFI\CData'], 'FFI::load' => ['FFI', 'filename'=>'string'], 'FFI::memcmp' => ['int', 'ptr1'=>'FFI\CData|string', 'ptr2'=>'FFI\CData|string', 'size'=>'int'], 'FFI::memcpy' => ['void', 'dst'=>'FFI\CData', 'src'=>'string|FFI\CData', 'size'=>'int'], 'FFI::memset' => ['void', 'ptr'=>'FFI\CData', 'ch'=>'int', 'size'=>'int'], 'FFI::new' => ['FFI\CData', 'type'=>'string|FFI\CType', 'owned='=>'bool', 'persistent='=>'bool'], 'FFI::scope' => ['FFI', 'scope_name'=>'string'], 'FFI::sizeof' => ['int', 'ptr'=>'FFI\CData|FFI\CType'], 'FFI::string' => ['string', 'ptr'=>'FFI\CData', 'size='=>'int'], 'FFI::typeof' => ['FFI\CType', 'ptr'=>'FFI\CData'], 'FFI::type' => ['FFI\CType', 'type'=>'string'], 'fread' => ['string|false', 'fp'=>'resource', 'length'=>'positive-int'], 'get_mangled_object_vars' => ['array', 'obj'=>'object'], 'mb_str_split' => ['list|false', 'str'=>'string', 'split_length='=>'int', 'encoding='=>'string'], 'password_algos' => ['list'], 'password_needs_rehash' => ['bool', 'hash'=>'string', 'algo'=>'string|null', 'options='=>'array'], 'preg_replace_callback' => ['string|array|null', 'regex'=>'string|array', 'callback'=>'callable(array):string', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int', 'flags='=>'int'], 'preg_replace_callback_array' => ['string|array|null', 'pattern'=>'array', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int', 'flags='=>'int'], 'sapi_windows_set_ctrl_handler' => ['bool', 'callable'=>'callable(int):void', 'add='=>'bool'], 'ReflectionProperty::getType' => ['?ReflectionType'], 'ReflectionProperty::hasType' => ['bool'], 'ReflectionProperty::isInitialized' => ['bool', 'object='=>'?object'], 'ReflectionReference::fromArrayElement' => ['?ReflectionReference', 'array'=>'array', 'key'=>'int|string'], 'ReflectionReference::getId' => ['string'], 'SQLite3Stmt::getSQL' => ['string', 'expanded='=>'bool'], 'strip_tags' => ['string', 'str'=>'string', 'allowable_tags='=>'string|array'], 'WeakReference::create' => ['WeakReference', 'referent'=>'object'], 'WeakReference::get' => ['?object'], 'proc_open' => ['resource|false', 'command'=>'string|list', 'descriptorspec'=>'array', '&w_pipes'=>'resource[]', 'cwd='=>'?string', 'env='=>'?array', 'other_options='=>'array'], ], 'old' => [ 'implode\'2' => ['string', 'pieces'=>'array', 'glue'=>'string'], ], ]; true as a modification to bin/functionMetadata_original.php. * 3) Contribute the #[Pure] functions without side effects to https://github.com/JetBrains/phpstorm-stubs * 4) Once the PR from 3) is merged, please update the package here and run ./bin/generate-function-metadata.php. */ return [ 'BackedEnum::from' => ['hasSideEffects' => false], 'BackedEnum::tryFrom' => ['hasSideEffects' => false], 'CURLFile::getFilename' => ['hasSideEffects' => false], 'CURLFile::getMimeType' => ['hasSideEffects' => false], 'CURLFile::getPostFilename' => ['hasSideEffects' => false], 'Cassandra\\Exception\\AlreadyExistsException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\AuthenticationException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\ConfigurationException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\DivideByZeroException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\DomainException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\ExecutionException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\InvalidArgumentException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\InvalidQueryException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\InvalidSyntaxException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\IsBootstrappingException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\LogicException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\OverloadedException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\ProtocolException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\RangeException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\ReadTimeoutException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\RuntimeException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\ServerException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\TimeoutException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\TruncateException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\UnauthorizedException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\UnavailableException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\UnpreparedException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\ValidationException::__construct' => ['hasSideEffects' => false], 'Cassandra\\Exception\\WriteTimeoutException::__construct' => ['hasSideEffects' => false], 'Closure::bind' => ['hasSideEffects' => false], 'Closure::bindTo' => ['hasSideEffects' => false], 'Collator::__construct' => ['hasSideEffects' => false], 'Collator::compare' => ['hasSideEffects' => false], 'Collator::getAttribute' => ['hasSideEffects' => false], 'Collator::getErrorCode' => ['hasSideEffects' => false], 'Collator::getErrorMessage' => ['hasSideEffects' => false], 'Collator::getLocale' => ['hasSideEffects' => false], 'Collator::getSortKey' => ['hasSideEffects' => false], 'Collator::getStrength' => ['hasSideEffects' => false], 'DateTime::add' => ['hasSideEffects' => true], 'DateTime::createFromFormat' => ['hasSideEffects' => false], 'DateTime::createFromImmutable' => ['hasSideEffects' => false], 'DateTime::diff' => ['hasSideEffects' => false], 'DateTime::format' => ['hasSideEffects' => false], 'DateTime::getLastErrors' => ['hasSideEffects' => false], 'DateTime::getOffset' => ['hasSideEffects' => false], 'DateTime::getTimestamp' => ['hasSideEffects' => false], 'DateTime::getTimezone' => ['hasSideEffects' => false], 'DateTime::modify' => ['hasSideEffects' => true], 'DateTime::setDate' => ['hasSideEffects' => true], 'DateTime::setISODate' => ['hasSideEffects' => true], 'DateTime::setTime' => ['hasSideEffects' => true], 'DateTime::setTimestamp' => ['hasSideEffects' => true], 'DateTime::setTimezone' => ['hasSideEffects' => true], 'DateTime::sub' => ['hasSideEffects' => true], 'DateTimeImmutable::add' => ['hasSideEffects' => false], 'DateTimeImmutable::createFromFormat' => ['hasSideEffects' => false], 'DateTimeImmutable::createFromMutable' => ['hasSideEffects' => false], 'DateTimeImmutable::diff' => ['hasSideEffects' => false], 'DateTimeImmutable::format' => ['hasSideEffects' => false], 'DateTimeImmutable::getLastErrors' => ['hasSideEffects' => false], 'DateTimeImmutable::getOffset' => ['hasSideEffects' => false], 'DateTimeImmutable::getTimestamp' => ['hasSideEffects' => false], 'DateTimeImmutable::getTimezone' => ['hasSideEffects' => false], 'DateTimeImmutable::modify' => ['hasSideEffects' => false], 'DateTimeImmutable::setDate' => ['hasSideEffects' => false], 'DateTimeImmutable::setISODate' => ['hasSideEffects' => false], 'DateTimeImmutable::setTime' => ['hasSideEffects' => false], 'DateTimeImmutable::setTimestamp' => ['hasSideEffects' => false], 'DateTimeImmutable::setTimezone' => ['hasSideEffects' => false], 'DateTimeImmutable::sub' => ['hasSideEffects' => false], 'Error::__construct' => ['hasSideEffects' => false], 'ErrorException::__construct' => ['hasSideEffects' => false], 'Event::__construct' => ['hasSideEffects' => false], 'EventBase::getFeatures' => ['hasSideEffects' => false], 'EventBase::getMethod' => ['hasSideEffects' => false], 'EventBase::getTimeOfDayCached' => ['hasSideEffects' => false], 'EventBase::gotExit' => ['hasSideEffects' => false], 'EventBase::gotStop' => ['hasSideEffects' => false], 'EventBuffer::__construct' => ['hasSideEffects' => false], 'EventBufferEvent::__construct' => ['hasSideEffects' => false], 'EventBufferEvent::getDnsErrorString' => ['hasSideEffects' => false], 'EventBufferEvent::getEnabled' => ['hasSideEffects' => false], 'EventBufferEvent::getInput' => ['hasSideEffects' => false], 'EventBufferEvent::getOutput' => ['hasSideEffects' => false], 'EventConfig::__construct' => ['hasSideEffects' => false], 'EventDnsBase::__construct' => ['hasSideEffects' => false], 'EventHttpConnection::__construct' => ['hasSideEffects' => false], 'EventHttpRequest::__construct' => ['hasSideEffects' => false], 'EventHttpRequest::getCommand' => ['hasSideEffects' => false], 'EventHttpRequest::getConnection' => ['hasSideEffects' => false], 'EventHttpRequest::getHost' => ['hasSideEffects' => false], 'EventHttpRequest::getInputBuffer' => ['hasSideEffects' => false], 'EventHttpRequest::getInputHeaders' => ['hasSideEffects' => false], 'EventHttpRequest::getOutputBuffer' => ['hasSideEffects' => false], 'EventHttpRequest::getOutputHeaders' => ['hasSideEffects' => false], 'EventHttpRequest::getResponseCode' => ['hasSideEffects' => false], 'EventHttpRequest::getUri' => ['hasSideEffects' => false], 'EventSslContext::__construct' => ['hasSideEffects' => false], 'Exception::__construct' => ['hasSideEffects' => false], 'Exception::getCode' => ['hasSideEffects' => false], 'Exception::getFile' => ['hasSideEffects' => false], 'Exception::getLine' => ['hasSideEffects' => false], 'Exception::getMessage' => ['hasSideEffects' => false], 'Exception::getPrevious' => ['hasSideEffects' => false], 'Exception::getTrace' => ['hasSideEffects' => false], 'Exception::getTraceAsString' => ['hasSideEffects' => false], 'Gmagick::getcopyright' => ['hasSideEffects' => false], 'Gmagick::getfilename' => ['hasSideEffects' => false], 'Gmagick::getimagebackgroundcolor' => ['hasSideEffects' => false], 'Gmagick::getimageblueprimary' => ['hasSideEffects' => false], 'Gmagick::getimagebordercolor' => ['hasSideEffects' => false], 'Gmagick::getimagechanneldepth' => ['hasSideEffects' => false], 'Gmagick::getimagecolors' => ['hasSideEffects' => false], 'Gmagick::getimagecolorspace' => ['hasSideEffects' => false], 'Gmagick::getimagecompose' => ['hasSideEffects' => false], 'Gmagick::getimagedelay' => ['hasSideEffects' => false], 'Gmagick::getimagedepth' => ['hasSideEffects' => false], 'Gmagick::getimagedispose' => ['hasSideEffects' => false], 'Gmagick::getimageextrema' => ['hasSideEffects' => false], 'Gmagick::getimagefilename' => ['hasSideEffects' => false], 'Gmagick::getimageformat' => ['hasSideEffects' => false], 'Gmagick::getimagegamma' => ['hasSideEffects' => false], 'Gmagick::getimagegreenprimary' => ['hasSideEffects' => false], 'Gmagick::getimageheight' => ['hasSideEffects' => false], 'Gmagick::getimagehistogram' => ['hasSideEffects' => false], 'Gmagick::getimageindex' => ['hasSideEffects' => false], 'Gmagick::getimageinterlacescheme' => ['hasSideEffects' => false], 'Gmagick::getimageiterations' => ['hasSideEffects' => false], 'Gmagick::getimagematte' => ['hasSideEffects' => false], 'Gmagick::getimagemattecolor' => ['hasSideEffects' => false], 'Gmagick::getimageprofile' => ['hasSideEffects' => false], 'Gmagick::getimageredprimary' => ['hasSideEffects' => false], 'Gmagick::getimagerenderingintent' => ['hasSideEffects' => false], 'Gmagick::getimageresolution' => ['hasSideEffects' => false], 'Gmagick::getimagescene' => ['hasSideEffects' => false], 'Gmagick::getimagesignature' => ['hasSideEffects' => false], 'Gmagick::getimagetype' => ['hasSideEffects' => false], 'Gmagick::getimageunits' => ['hasSideEffects' => false], 'Gmagick::getimagewhitepoint' => ['hasSideEffects' => false], 'Gmagick::getimagewidth' => ['hasSideEffects' => false], 'Gmagick::getpackagename' => ['hasSideEffects' => false], 'Gmagick::getquantumdepth' => ['hasSideEffects' => false], 'Gmagick::getreleasedate' => ['hasSideEffects' => false], 'Gmagick::getsamplingfactors' => ['hasSideEffects' => false], 'Gmagick::getsize' => ['hasSideEffects' => false], 'Gmagick::getversion' => ['hasSideEffects' => false], 'GmagickDraw::getfillcolor' => ['hasSideEffects' => false], 'GmagickDraw::getfillopacity' => ['hasSideEffects' => false], 'GmagickDraw::getfont' => ['hasSideEffects' => false], 'GmagickDraw::getfontsize' => ['hasSideEffects' => false], 'GmagickDraw::getfontstyle' => ['hasSideEffects' => false], 'GmagickDraw::getfontweight' => ['hasSideEffects' => false], 'GmagickDraw::getstrokecolor' => ['hasSideEffects' => false], 'GmagickDraw::getstrokeopacity' => ['hasSideEffects' => false], 'GmagickDraw::getstrokewidth' => ['hasSideEffects' => false], 'GmagickDraw::gettextdecoration' => ['hasSideEffects' => false], 'GmagickDraw::gettextencoding' => ['hasSideEffects' => false], 'GmagickPixel::getcolor' => ['hasSideEffects' => false], 'GmagickPixel::getcolorcount' => ['hasSideEffects' => false], 'GmagickPixel::getcolorvalue' => ['hasSideEffects' => false], 'HttpMessage::getBody' => ['hasSideEffects' => false], 'HttpMessage::getHeader' => ['hasSideEffects' => false], 'HttpMessage::getHeaders' => ['hasSideEffects' => false], 'HttpMessage::getHttpVersion' => ['hasSideEffects' => false], 'HttpMessage::getInfo' => ['hasSideEffects' => false], 'HttpMessage::getParentMessage' => ['hasSideEffects' => false], 'HttpMessage::getRequestMethod' => ['hasSideEffects' => false], 'HttpMessage::getRequestUrl' => ['hasSideEffects' => false], 'HttpMessage::getResponseCode' => ['hasSideEffects' => false], 'HttpMessage::getResponseStatus' => ['hasSideEffects' => false], 'HttpMessage::getType' => ['hasSideEffects' => false], 'HttpQueryString::get' => ['hasSideEffects' => false], 'HttpQueryString::getArray' => ['hasSideEffects' => false], 'HttpQueryString::getBool' => ['hasSideEffects' => false], 'HttpQueryString::getFloat' => ['hasSideEffects' => false], 'HttpQueryString::getInt' => ['hasSideEffects' => false], 'HttpQueryString::getObject' => ['hasSideEffects' => false], 'HttpQueryString::getString' => ['hasSideEffects' => false], 'HttpRequest::getBody' => ['hasSideEffects' => false], 'HttpRequest::getContentType' => ['hasSideEffects' => false], 'HttpRequest::getCookies' => ['hasSideEffects' => false], 'HttpRequest::getHeaders' => ['hasSideEffects' => false], 'HttpRequest::getHistory' => ['hasSideEffects' => false], 'HttpRequest::getMethod' => ['hasSideEffects' => false], 'HttpRequest::getOptions' => ['hasSideEffects' => false], 'HttpRequest::getPostFields' => ['hasSideEffects' => false], 'HttpRequest::getPostFiles' => ['hasSideEffects' => false], 'HttpRequest::getPutData' => ['hasSideEffects' => false], 'HttpRequest::getPutFile' => ['hasSideEffects' => false], 'HttpRequest::getQueryData' => ['hasSideEffects' => false], 'HttpRequest::getRawPostData' => ['hasSideEffects' => false], 'HttpRequest::getRawRequestMessage' => ['hasSideEffects' => false], 'HttpRequest::getRawResponseMessage' => ['hasSideEffects' => false], 'HttpRequest::getRequestMessage' => ['hasSideEffects' => false], 'HttpRequest::getResponseBody' => ['hasSideEffects' => false], 'HttpRequest::getResponseCode' => ['hasSideEffects' => false], 'HttpRequest::getResponseCookies' => ['hasSideEffects' => false], 'HttpRequest::getResponseData' => ['hasSideEffects' => false], 'HttpRequest::getResponseHeader' => ['hasSideEffects' => false], 'HttpRequest::getResponseInfo' => ['hasSideEffects' => false], 'HttpRequest::getResponseMessage' => ['hasSideEffects' => false], 'HttpRequest::getResponseStatus' => ['hasSideEffects' => false], 'HttpRequest::getSslOptions' => ['hasSideEffects' => false], 'HttpRequest::getUrl' => ['hasSideEffects' => false], 'HttpRequestPool::getAttachedRequests' => ['hasSideEffects' => false], 'HttpRequestPool::getFinishedRequests' => ['hasSideEffects' => false], 'Imagick::getColorspace' => ['hasSideEffects' => false], 'Imagick::getCompression' => ['hasSideEffects' => false], 'Imagick::getCompressionQuality' => ['hasSideEffects' => false], 'Imagick::getConfigureOptions' => ['hasSideEffects' => false], 'Imagick::getFeatures' => ['hasSideEffects' => false], 'Imagick::getFilename' => ['hasSideEffects' => false], 'Imagick::getFont' => ['hasSideEffects' => false], 'Imagick::getFormat' => ['hasSideEffects' => false], 'Imagick::getGravity' => ['hasSideEffects' => false], 'Imagick::getHDRIEnabled' => ['hasSideEffects' => false], 'Imagick::getImage' => ['hasSideEffects' => false], 'Imagick::getImageAlphaChannel' => ['hasSideEffects' => false], 'Imagick::getImageArtifact' => ['hasSideEffects' => false], 'Imagick::getImageAttribute' => ['hasSideEffects' => false], 'Imagick::getImageBackgroundColor' => ['hasSideEffects' => false], 'Imagick::getImageBlob' => ['hasSideEffects' => false], 'Imagick::getImageBluePrimary' => ['hasSideEffects' => false], 'Imagick::getImageBorderColor' => ['hasSideEffects' => false], 'Imagick::getImageChannelDepth' => ['hasSideEffects' => false], 'Imagick::getImageChannelDistortion' => ['hasSideEffects' => false], 'Imagick::getImageChannelDistortions' => ['hasSideEffects' => false], 'Imagick::getImageChannelExtrema' => ['hasSideEffects' => false], 'Imagick::getImageChannelKurtosis' => ['hasSideEffects' => false], 'Imagick::getImageChannelMean' => ['hasSideEffects' => false], 'Imagick::getImageChannelRange' => ['hasSideEffects' => false], 'Imagick::getImageChannelStatistics' => ['hasSideEffects' => false], 'Imagick::getImageClipMask' => ['hasSideEffects' => false], 'Imagick::getImageColormapColor' => ['hasSideEffects' => false], 'Imagick::getImageColors' => ['hasSideEffects' => false], 'Imagick::getImageColorspace' => ['hasSideEffects' => false], 'Imagick::getImageCompose' => ['hasSideEffects' => false], 'Imagick::getImageCompression' => ['hasSideEffects' => false], 'Imagick::getImageCompressionQuality' => ['hasSideEffects' => false], 'Imagick::getImageDelay' => ['hasSideEffects' => false], 'Imagick::getImageDepth' => ['hasSideEffects' => false], 'Imagick::getImageDispose' => ['hasSideEffects' => false], 'Imagick::getImageDistortion' => ['hasSideEffects' => false], 'Imagick::getImageExtrema' => ['hasSideEffects' => false], 'Imagick::getImageFilename' => ['hasSideEffects' => false], 'Imagick::getImageFormat' => ['hasSideEffects' => false], 'Imagick::getImageGamma' => ['hasSideEffects' => false], 'Imagick::getImageGeometry' => ['hasSideEffects' => false], 'Imagick::getImageGravity' => ['hasSideEffects' => false], 'Imagick::getImageGreenPrimary' => ['hasSideEffects' => false], 'Imagick::getImageHeight' => ['hasSideEffects' => false], 'Imagick::getImageHistogram' => ['hasSideEffects' => false], 'Imagick::getImageIndex' => ['hasSideEffects' => false], 'Imagick::getImageInterlaceScheme' => ['hasSideEffects' => false], 'Imagick::getImageInterpolateMethod' => ['hasSideEffects' => false], 'Imagick::getImageIterations' => ['hasSideEffects' => false], 'Imagick::getImageLength' => ['hasSideEffects' => false], 'Imagick::getImageMatte' => ['hasSideEffects' => false], 'Imagick::getImageMatteColor' => ['hasSideEffects' => false], 'Imagick::getImageMimeType' => ['hasSideEffects' => false], 'Imagick::getImageOrientation' => ['hasSideEffects' => false], 'Imagick::getImagePage' => ['hasSideEffects' => false], 'Imagick::getImagePixelColor' => ['hasSideEffects' => false], 'Imagick::getImageProfile' => ['hasSideEffects' => false], 'Imagick::getImageProfiles' => ['hasSideEffects' => false], 'Imagick::getImageProperties' => ['hasSideEffects' => false], 'Imagick::getImageProperty' => ['hasSideEffects' => false], 'Imagick::getImageRedPrimary' => ['hasSideEffects' => false], 'Imagick::getImageRegion' => ['hasSideEffects' => false], 'Imagick::getImageRenderingIntent' => ['hasSideEffects' => false], 'Imagick::getImageResolution' => ['hasSideEffects' => false], 'Imagick::getImageScene' => ['hasSideEffects' => false], 'Imagick::getImageSignature' => ['hasSideEffects' => false], 'Imagick::getImageSize' => ['hasSideEffects' => false], 'Imagick::getImageTicksPerSecond' => ['hasSideEffects' => false], 'Imagick::getImageTotalInkDensity' => ['hasSideEffects' => false], 'Imagick::getImageType' => ['hasSideEffects' => false], 'Imagick::getImageUnits' => ['hasSideEffects' => false], 'Imagick::getImageVirtualPixelMethod' => ['hasSideEffects' => false], 'Imagick::getImageWhitePoint' => ['hasSideEffects' => false], 'Imagick::getImageWidth' => ['hasSideEffects' => false], 'Imagick::getImagesBlob' => ['hasSideEffects' => false], 'Imagick::getInterlaceScheme' => ['hasSideEffects' => false], 'Imagick::getIteratorIndex' => ['hasSideEffects' => false], 'Imagick::getNumberImages' => ['hasSideEffects' => false], 'Imagick::getOption' => ['hasSideEffects' => false], 'Imagick::getPage' => ['hasSideEffects' => false], 'Imagick::getPixelIterator' => ['hasSideEffects' => false], 'Imagick::getPixelRegionIterator' => ['hasSideEffects' => false], 'Imagick::getPointSize' => ['hasSideEffects' => false], 'Imagick::getSamplingFactors' => ['hasSideEffects' => false], 'Imagick::getSize' => ['hasSideEffects' => false], 'Imagick::getSizeOffset' => ['hasSideEffects' => false], 'ImagickDraw::getBorderColor' => ['hasSideEffects' => false], 'ImagickDraw::getClipPath' => ['hasSideEffects' => false], 'ImagickDraw::getClipRule' => ['hasSideEffects' => false], 'ImagickDraw::getClipUnits' => ['hasSideEffects' => false], 'ImagickDraw::getDensity' => ['hasSideEffects' => false], 'ImagickDraw::getFillColor' => ['hasSideEffects' => false], 'ImagickDraw::getFillOpacity' => ['hasSideEffects' => false], 'ImagickDraw::getFillRule' => ['hasSideEffects' => false], 'ImagickDraw::getFont' => ['hasSideEffects' => false], 'ImagickDraw::getFontFamily' => ['hasSideEffects' => false], 'ImagickDraw::getFontResolution' => ['hasSideEffects' => false], 'ImagickDraw::getFontSize' => ['hasSideEffects' => false], 'ImagickDraw::getFontStretch' => ['hasSideEffects' => false], 'ImagickDraw::getFontStyle' => ['hasSideEffects' => false], 'ImagickDraw::getFontWeight' => ['hasSideEffects' => false], 'ImagickDraw::getGravity' => ['hasSideEffects' => false], 'ImagickDraw::getOpacity' => ['hasSideEffects' => false], 'ImagickDraw::getStrokeAntialias' => ['hasSideEffects' => false], 'ImagickDraw::getStrokeColor' => ['hasSideEffects' => false], 'ImagickDraw::getStrokeDashArray' => ['hasSideEffects' => false], 'ImagickDraw::getStrokeDashOffset' => ['hasSideEffects' => false], 'ImagickDraw::getStrokeLineCap' => ['hasSideEffects' => false], 'ImagickDraw::getStrokeLineJoin' => ['hasSideEffects' => false], 'ImagickDraw::getStrokeMiterLimit' => ['hasSideEffects' => false], 'ImagickDraw::getStrokeOpacity' => ['hasSideEffects' => false], 'ImagickDraw::getStrokeWidth' => ['hasSideEffects' => false], 'ImagickDraw::getTextAlignment' => ['hasSideEffects' => false], 'ImagickDraw::getTextAntialias' => ['hasSideEffects' => false], 'ImagickDraw::getTextDecoration' => ['hasSideEffects' => false], 'ImagickDraw::getTextDirection' => ['hasSideEffects' => false], 'ImagickDraw::getTextEncoding' => ['hasSideEffects' => false], 'ImagickDraw::getTextInterLineSpacing' => ['hasSideEffects' => false], 'ImagickDraw::getTextInterWordSpacing' => ['hasSideEffects' => false], 'ImagickDraw::getTextKerning' => ['hasSideEffects' => false], 'ImagickDraw::getTextUnderColor' => ['hasSideEffects' => false], 'ImagickDraw::getVectorGraphics' => ['hasSideEffects' => false], 'ImagickKernel::getMatrix' => ['hasSideEffects' => false], 'ImagickPixel::getColor' => ['hasSideEffects' => false], 'ImagickPixel::getColorAsString' => ['hasSideEffects' => false], 'ImagickPixel::getColorCount' => ['hasSideEffects' => false], 'ImagickPixel::getColorQuantum' => ['hasSideEffects' => false], 'ImagickPixel::getColorValue' => ['hasSideEffects' => false], 'ImagickPixel::getColorValueQuantum' => ['hasSideEffects' => false], 'ImagickPixel::getHSL' => ['hasSideEffects' => false], 'ImagickPixel::getIndex' => ['hasSideEffects' => false], 'ImagickPixelIterator::getCurrentIteratorRow' => ['hasSideEffects' => false], 'ImagickPixelIterator::getIteratorRow' => ['hasSideEffects' => false], 'ImagickPixelIterator::getNextIteratorRow' => ['hasSideEffects' => false], 'ImagickPixelIterator::getPreviousIteratorRow' => ['hasSideEffects' => false], 'IntBackedEnum::from' => ['hasSideEffects' => false], 'IntBackedEnum::tryFrom' => ['hasSideEffects' => false], 'IntlBreakIterator::current' => ['hasSideEffects' => false], 'IntlBreakIterator::getErrorCode' => ['hasSideEffects' => false], 'IntlBreakIterator::getErrorMessage' => ['hasSideEffects' => false], 'IntlBreakIterator::getIterator' => ['hasSideEffects' => false], 'IntlBreakIterator::getLocale' => ['hasSideEffects' => false], 'IntlBreakIterator::getPartsIterator' => ['hasSideEffects' => false], 'IntlBreakIterator::getText' => ['hasSideEffects' => false], 'IntlBreakIterator::isBoundary' => ['hasSideEffects' => false], 'IntlCalendar::after' => ['hasSideEffects' => false], 'IntlCalendar::before' => ['hasSideEffects' => false], 'IntlCalendar::equals' => ['hasSideEffects' => false], 'IntlCalendar::fieldDifference' => ['hasSideEffects' => false], 'IntlCalendar::get' => ['hasSideEffects' => false], 'IntlCalendar::getActualMaximum' => ['hasSideEffects' => false], 'IntlCalendar::getActualMinimum' => ['hasSideEffects' => false], 'IntlCalendar::getDayOfWeekType' => ['hasSideEffects' => false], 'IntlCalendar::getErrorCode' => ['hasSideEffects' => false], 'IntlCalendar::getErrorMessage' => ['hasSideEffects' => false], 'IntlCalendar::getFirstDayOfWeek' => ['hasSideEffects' => false], 'IntlCalendar::getGreatestMinimum' => ['hasSideEffects' => false], 'IntlCalendar::getLeastMaximum' => ['hasSideEffects' => false], 'IntlCalendar::getLocale' => ['hasSideEffects' => false], 'IntlCalendar::getMaximum' => ['hasSideEffects' => false], 'IntlCalendar::getMinimalDaysInFirstWeek' => ['hasSideEffects' => false], 'IntlCalendar::getMinimum' => ['hasSideEffects' => false], 'IntlCalendar::getRepeatedWallTimeOption' => ['hasSideEffects' => false], 'IntlCalendar::getSkippedWallTimeOption' => ['hasSideEffects' => false], 'IntlCalendar::getTime' => ['hasSideEffects' => false], 'IntlCalendar::getTimeZone' => ['hasSideEffects' => false], 'IntlCalendar::getType' => ['hasSideEffects' => false], 'IntlCalendar::getWeekendTransition' => ['hasSideEffects' => false], 'IntlCalendar::inDaylightTime' => ['hasSideEffects' => false], 'IntlCalendar::isEquivalentTo' => ['hasSideEffects' => false], 'IntlCalendar::isLenient' => ['hasSideEffects' => false], 'IntlCalendar::isWeekend' => ['hasSideEffects' => false], 'IntlCalendar::toDateTime' => ['hasSideEffects' => false], 'IntlChar::hasBinaryProperty' => ['hasSideEffects' => false], 'IntlCodePointBreakIterator::getLastCodePoint' => ['hasSideEffects' => false], 'IntlDateFormatter::__construct' => ['hasSideEffects' => false], 'IntlDateFormatter::getCalendar' => ['hasSideEffects' => false], 'IntlDateFormatter::getCalendarObject' => ['hasSideEffects' => false], 'IntlDateFormatter::getDateType' => ['hasSideEffects' => false], 'IntlDateFormatter::getErrorCode' => ['hasSideEffects' => false], 'IntlDateFormatter::getErrorMessage' => ['hasSideEffects' => false], 'IntlDateFormatter::getLocale' => ['hasSideEffects' => false], 'IntlDateFormatter::getPattern' => ['hasSideEffects' => false], 'IntlDateFormatter::getTimeType' => ['hasSideEffects' => false], 'IntlDateFormatter::getTimeZone' => ['hasSideEffects' => false], 'IntlDateFormatter::getTimeZoneId' => ['hasSideEffects' => false], 'IntlDateFormatter::isLenient' => ['hasSideEffects' => false], 'IntlGregorianCalendar::getGregorianChange' => ['hasSideEffects' => false], 'IntlGregorianCalendar::isLeapYear' => ['hasSideEffects' => false], 'IntlPartsIterator::getBreakIterator' => ['hasSideEffects' => false], 'IntlRuleBasedBreakIterator::__construct' => ['hasSideEffects' => false], 'IntlRuleBasedBreakIterator::getBinaryRules' => ['hasSideEffects' => false], 'IntlRuleBasedBreakIterator::getRuleStatus' => ['hasSideEffects' => false], 'IntlRuleBasedBreakIterator::getRuleStatusVec' => ['hasSideEffects' => false], 'IntlRuleBasedBreakIterator::getRules' => ['hasSideEffects' => false], 'IntlTimeZone::getDSTSavings' => ['hasSideEffects' => false], 'IntlTimeZone::getDisplayName' => ['hasSideEffects' => false], 'IntlTimeZone::getErrorCode' => ['hasSideEffects' => false], 'IntlTimeZone::getErrorMessage' => ['hasSideEffects' => false], 'IntlTimeZone::getID' => ['hasSideEffects' => false], 'IntlTimeZone::getRawOffset' => ['hasSideEffects' => false], 'IntlTimeZone::hasSameRules' => ['hasSideEffects' => false], 'IntlTimeZone::toDateTimeZone' => ['hasSideEffects' => false], 'JsonIncrementalParser::__construct' => ['hasSideEffects' => false], 'JsonIncrementalParser::get' => ['hasSideEffects' => false], 'JsonIncrementalParser::getError' => ['hasSideEffects' => false], 'MemcachedException::__construct' => ['hasSideEffects' => false], 'MessageFormatter::__construct' => ['hasSideEffects' => false], 'MessageFormatter::format' => ['hasSideEffects' => false], 'MessageFormatter::getErrorCode' => ['hasSideEffects' => false], 'MessageFormatter::getErrorMessage' => ['hasSideEffects' => false], 'MessageFormatter::getLocale' => ['hasSideEffects' => false], 'MessageFormatter::getPattern' => ['hasSideEffects' => false], 'MessageFormatter::parse' => ['hasSideEffects' => false], 'NumberFormatter::__construct' => ['hasSideEffects' => false], 'NumberFormatter::format' => ['hasSideEffects' => false], 'NumberFormatter::formatCurrency' => ['hasSideEffects' => false], 'NumberFormatter::getAttribute' => ['hasSideEffects' => false], 'NumberFormatter::getErrorCode' => ['hasSideEffects' => false], 'NumberFormatter::getErrorMessage' => ['hasSideEffects' => false], 'NumberFormatter::getLocale' => ['hasSideEffects' => false], 'NumberFormatter::getPattern' => ['hasSideEffects' => false], 'NumberFormatter::getSymbol' => ['hasSideEffects' => false], 'NumberFormatter::getTextAttribute' => ['hasSideEffects' => false], 'ReflectionAttribute::getArguments' => ['hasSideEffects' => false], 'ReflectionAttribute::getName' => ['hasSideEffects' => false], 'ReflectionAttribute::getTarget' => ['hasSideEffects' => false], 'ReflectionAttribute::isRepeated' => ['hasSideEffects' => false], 'ReflectionClass::getAttributes' => ['hasSideEffects' => false], 'ReflectionClass::getConstant' => ['hasSideEffects' => false], 'ReflectionClass::getConstants' => ['hasSideEffects' => false], 'ReflectionClass::getConstructor' => ['hasSideEffects' => false], 'ReflectionClass::getDefaultProperties' => ['hasSideEffects' => false], 'ReflectionClass::getDocComment' => ['hasSideEffects' => false], 'ReflectionClass::getEndLine' => ['hasSideEffects' => false], 'ReflectionClass::getExtension' => ['hasSideEffects' => false], 'ReflectionClass::getExtensionName' => ['hasSideEffects' => false], 'ReflectionClass::getFileName' => ['hasSideEffects' => false], 'ReflectionClass::getInterfaceNames' => ['hasSideEffects' => false], 'ReflectionClass::getInterfaces' => ['hasSideEffects' => false], 'ReflectionClass::getMethod' => ['hasSideEffects' => false], 'ReflectionClass::getMethods' => ['hasSideEffects' => false], 'ReflectionClass::getModifiers' => ['hasSideEffects' => false], 'ReflectionClass::getName' => ['hasSideEffects' => false], 'ReflectionClass::getNamespaceName' => ['hasSideEffects' => false], 'ReflectionClass::getParentClass' => ['hasSideEffects' => false], 'ReflectionClass::getProperties' => ['hasSideEffects' => false], 'ReflectionClass::getProperty' => ['hasSideEffects' => false], 'ReflectionClass::getReflectionConstant' => ['hasSideEffects' => false], 'ReflectionClass::getReflectionConstants' => ['hasSideEffects' => false], 'ReflectionClass::getShortName' => ['hasSideEffects' => false], 'ReflectionClass::getStartLine' => ['hasSideEffects' => false], 'ReflectionClass::getStaticProperties' => ['hasSideEffects' => false], 'ReflectionClass::getStaticPropertyValue' => ['hasSideEffects' => false], 'ReflectionClass::getTraitAliases' => ['hasSideEffects' => false], 'ReflectionClass::getTraitNames' => ['hasSideEffects' => false], 'ReflectionClass::getTraits' => ['hasSideEffects' => false], 'ReflectionClass::isAbstract' => ['hasSideEffects' => false], 'ReflectionClass::isAnonymous' => ['hasSideEffects' => false], 'ReflectionClass::isCloneable' => ['hasSideEffects' => false], 'ReflectionClass::isFinal' => ['hasSideEffects' => false], 'ReflectionClass::isInstance' => ['hasSideEffects' => false], 'ReflectionClass::isInstantiable' => ['hasSideEffects' => false], 'ReflectionClass::isInterface' => ['hasSideEffects' => false], 'ReflectionClass::isInternal' => ['hasSideEffects' => false], 'ReflectionClass::isIterable' => ['hasSideEffects' => false], 'ReflectionClass::isIterateable' => ['hasSideEffects' => false], 'ReflectionClass::isReadOnly' => ['hasSideEffects' => false], 'ReflectionClass::isSubclassOf' => ['hasSideEffects' => false], 'ReflectionClass::isTrait' => ['hasSideEffects' => false], 'ReflectionClass::isUserDefined' => ['hasSideEffects' => false], 'ReflectionClassConstant::getAttributes' => ['hasSideEffects' => false], 'ReflectionClassConstant::getDeclaringClass' => ['hasSideEffects' => false], 'ReflectionClassConstant::getDocComment' => ['hasSideEffects' => false], 'ReflectionClassConstant::getModifiers' => ['hasSideEffects' => false], 'ReflectionClassConstant::getName' => ['hasSideEffects' => false], 'ReflectionClassConstant::getValue' => ['hasSideEffects' => false], 'ReflectionClassConstant::isPrivate' => ['hasSideEffects' => false], 'ReflectionClassConstant::isProtected' => ['hasSideEffects' => false], 'ReflectionClassConstant::isPublic' => ['hasSideEffects' => false], 'ReflectionEnumBackedCase::getBackingValue' => ['hasSideEffects' => false], 'ReflectionEnumUnitCase::getEnum' => ['hasSideEffects' => false], 'ReflectionEnumUnitCase::getValue' => ['hasSideEffects' => false], 'ReflectionExtension::getClassNames' => ['hasSideEffects' => false], 'ReflectionExtension::getClasses' => ['hasSideEffects' => false], 'ReflectionExtension::getConstants' => ['hasSideEffects' => false], 'ReflectionExtension::getDependencies' => ['hasSideEffects' => false], 'ReflectionExtension::getFunctions' => ['hasSideEffects' => false], 'ReflectionExtension::getINIEntries' => ['hasSideEffects' => false], 'ReflectionExtension::getName' => ['hasSideEffects' => false], 'ReflectionExtension::getVersion' => ['hasSideEffects' => false], 'ReflectionExtension::isPersistent' => ['hasSideEffects' => false], 'ReflectionExtension::isTemporary' => ['hasSideEffects' => false], 'ReflectionFunction::getClosure' => ['hasSideEffects' => false], 'ReflectionFunction::isDisabled' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getAttributes' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getClosureCalledClass' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getClosureScopeClass' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getClosureThis' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getClosureUsedVariables' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getDocComment' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getEndLine' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getExtension' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getExtensionName' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getFileName' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getName' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getNamespaceName' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getNumberOfParameters' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getNumberOfRequiredParameters' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getParameters' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getReturnType' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getShortName' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getStartLine' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getStaticVariables' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::getTentativeReturnType' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::hasTentativeReturnType' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::isClosure' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::isDeprecated' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::isGenerator' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::isInternal' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::isStatic' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::isUserDefined' => ['hasSideEffects' => false], 'ReflectionFunctionAbstract::isVariadic' => ['hasSideEffects' => false], 'ReflectionGenerator::getExecutingFile' => ['hasSideEffects' => false], 'ReflectionGenerator::getExecutingGenerator' => ['hasSideEffects' => false], 'ReflectionGenerator::getExecutingLine' => ['hasSideEffects' => false], 'ReflectionGenerator::getFunction' => ['hasSideEffects' => false], 'ReflectionGenerator::getThis' => ['hasSideEffects' => false], 'ReflectionGenerator::getTrace' => ['hasSideEffects' => false], 'ReflectionIntersectionType::getTypes' => ['hasSideEffects' => false], 'ReflectionMethod::getClosure' => ['hasSideEffects' => false], 'ReflectionMethod::getDeclaringClass' => ['hasSideEffects' => false], 'ReflectionMethod::getModifiers' => ['hasSideEffects' => false], 'ReflectionMethod::getPrototype' => ['hasSideEffects' => false], 'ReflectionMethod::isAbstract' => ['hasSideEffects' => false], 'ReflectionMethod::isConstructor' => ['hasSideEffects' => false], 'ReflectionMethod::isDestructor' => ['hasSideEffects' => false], 'ReflectionMethod::isFinal' => ['hasSideEffects' => false], 'ReflectionMethod::isPrivate' => ['hasSideEffects' => false], 'ReflectionMethod::isProtected' => ['hasSideEffects' => false], 'ReflectionMethod::isPublic' => ['hasSideEffects' => false], 'ReflectionMethod::isStatic' => ['hasSideEffects' => false], 'ReflectionMethod::setAccessible' => ['hasSideEffects' => false], 'ReflectionNamedType::getName' => ['hasSideEffects' => false], 'ReflectionNamedType::isBuiltin' => ['hasSideEffects' => false], 'ReflectionParameter::getAttributes' => ['hasSideEffects' => false], 'ReflectionParameter::getClass' => ['hasSideEffects' => false], 'ReflectionParameter::getDeclaringClass' => ['hasSideEffects' => false], 'ReflectionParameter::getDeclaringFunction' => ['hasSideEffects' => false], 'ReflectionParameter::getDefaultValue' => ['hasSideEffects' => false], 'ReflectionParameter::getDefaultValueConstantName' => ['hasSideEffects' => false], 'ReflectionParameter::getName' => ['hasSideEffects' => false], 'ReflectionParameter::getPosition' => ['hasSideEffects' => false], 'ReflectionParameter::getType' => ['hasSideEffects' => false], 'ReflectionParameter::isArray' => ['hasSideEffects' => false], 'ReflectionParameter::isCallable' => ['hasSideEffects' => false], 'ReflectionParameter::isDefaultValueAvailable' => ['hasSideEffects' => false], 'ReflectionParameter::isDefaultValueConstant' => ['hasSideEffects' => false], 'ReflectionParameter::isOptional' => ['hasSideEffects' => false], 'ReflectionParameter::isPassedByReference' => ['hasSideEffects' => false], 'ReflectionParameter::isPromoted' => ['hasSideEffects' => false], 'ReflectionParameter::isVariadic' => ['hasSideEffects' => false], 'ReflectionProperty::getAttributes' => ['hasSideEffects' => false], 'ReflectionProperty::getDeclaringClass' => ['hasSideEffects' => false], 'ReflectionProperty::getDefaultValue' => ['hasSideEffects' => false], 'ReflectionProperty::getDocComment' => ['hasSideEffects' => false], 'ReflectionProperty::getModifiers' => ['hasSideEffects' => false], 'ReflectionProperty::getName' => ['hasSideEffects' => false], 'ReflectionProperty::getType' => ['hasSideEffects' => false], 'ReflectionProperty::getValue' => ['hasSideEffects' => false], 'ReflectionProperty::isDefault' => ['hasSideEffects' => false], 'ReflectionProperty::isInitialized' => ['hasSideEffects' => false], 'ReflectionProperty::isPrivate' => ['hasSideEffects' => false], 'ReflectionProperty::isPromoted' => ['hasSideEffects' => false], 'ReflectionProperty::isProtected' => ['hasSideEffects' => false], 'ReflectionProperty::isPublic' => ['hasSideEffects' => false], 'ReflectionProperty::isStatic' => ['hasSideEffects' => false], 'ReflectionProperty::setAccessible' => ['hasSideEffects' => false], 'ReflectionReference::getId' => ['hasSideEffects' => false], 'ReflectionType::isBuiltin' => ['hasSideEffects' => false], 'ReflectionUnionType::getTypes' => ['hasSideEffects' => false], 'ReflectionZendExtension::getAuthor' => ['hasSideEffects' => false], 'ReflectionZendExtension::getCopyright' => ['hasSideEffects' => false], 'ReflectionZendExtension::getName' => ['hasSideEffects' => false], 'ReflectionZendExtension::getURL' => ['hasSideEffects' => false], 'ReflectionZendExtension::getVersion' => ['hasSideEffects' => false], 'ResourceBundle::__construct' => ['hasSideEffects' => false], 'ResourceBundle::count' => ['hasSideEffects' => false], 'ResourceBundle::get' => ['hasSideEffects' => false], 'ResourceBundle::getErrorCode' => ['hasSideEffects' => false], 'ResourceBundle::getErrorMessage' => ['hasSideEffects' => false], 'ResourceBundle::getIterator' => ['hasSideEffects' => false], 'SQLiteException::__construct' => ['hasSideEffects' => false], 'SimpleXMLElement::__construct' => ['hasSideEffects' => false], 'SimpleXMLElement::children' => ['hasSideEffects' => false], 'SimpleXMLElement::count' => ['hasSideEffects' => false], 'SimpleXMLElement::current' => ['hasSideEffects' => false], 'SimpleXMLElement::getChildren' => ['hasSideEffects' => false], 'SimpleXMLElement::getDocNamespaces' => ['hasSideEffects' => false], 'SimpleXMLElement::getName' => ['hasSideEffects' => false], 'SimpleXMLElement::getNamespaces' => ['hasSideEffects' => false], 'SimpleXMLElement::hasChildren' => ['hasSideEffects' => false], 'SimpleXMLElement::offsetExists' => ['hasSideEffects' => false], 'SimpleXMLElement::offsetGet' => ['hasSideEffects' => false], 'SimpleXMLElement::valid' => ['hasSideEffects' => false], 'SimpleXMLIterator::count' => ['hasSideEffects' => false], 'SimpleXMLIterator::current' => ['hasSideEffects' => false], 'SimpleXMLIterator::getChildren' => ['hasSideEffects' => false], 'SimpleXMLIterator::hasChildren' => ['hasSideEffects' => false], 'SimpleXMLIterator::valid' => ['hasSideEffects' => false], 'SoapFault::__construct' => ['hasSideEffects' => false], 'SplFileObject::fflush' => ['hasSideEffects' => true], 'SplFileObject::fgetc' => ['hasSideEffects' => true], 'SplFileObject::fgetcsv' => ['hasSideEffects' => true], 'SplFileObject::fgets' => ['hasSideEffects' => true], 'SplFileObject::fgetss' => ['hasSideEffects' => true], 'SplFileObject::fpassthru' => ['hasSideEffects' => true], 'SplFileObject::fputcsv' => ['hasSideEffects' => true], 'SplFileObject::fread' => ['hasSideEffects' => true], 'SplFileObject::fscanf' => ['hasSideEffects' => true], 'SplFileObject::fseek' => ['hasSideEffects' => true], 'SplFileObject::ftruncate' => ['hasSideEffects' => true], 'SplFileObject::fwrite' => ['hasSideEffects' => true], 'Spoofchecker::__construct' => ['hasSideEffects' => false], 'StringBackedEnum::from' => ['hasSideEffects' => false], 'StringBackedEnum::tryFrom' => ['hasSideEffects' => false], 'StubTests\\CodeStyle\\BracesOneLineFixer::getDefinition' => ['hasSideEffects' => false], 'StubTests\\Parsers\\ExpectedFunctionArgumentsInfo::__toString' => ['hasSideEffects' => false], 'StubTests\\Parsers\\Visitors\\CoreStubASTVisitor::__construct' => ['hasSideEffects' => false], 'StubTests\\StubsMetaExpectedArgumentsTest::getClassMemberFqn' => ['hasSideEffects' => false], 'StubTests\\StubsParameterNamesTest::printParameters' => ['hasSideEffects' => false], 'Transliterator::createInverse' => ['hasSideEffects' => false], 'Transliterator::getErrorCode' => ['hasSideEffects' => false], 'Transliterator::getErrorMessage' => ['hasSideEffects' => false], 'Transliterator::transliterate' => ['hasSideEffects' => false], 'UConverter::__construct' => ['hasSideEffects' => false], 'UConverter::convert' => ['hasSideEffects' => false], 'UConverter::getDestinationEncoding' => ['hasSideEffects' => false], 'UConverter::getDestinationType' => ['hasSideEffects' => false], 'UConverter::getErrorCode' => ['hasSideEffects' => false], 'UConverter::getErrorMessage' => ['hasSideEffects' => false], 'UConverter::getSourceEncoding' => ['hasSideEffects' => false], 'UConverter::getSourceType' => ['hasSideEffects' => false], 'UConverter::getStandards' => ['hasSideEffects' => false], 'UConverter::getSubstChars' => ['hasSideEffects' => false], 'UConverter::reasonText' => ['hasSideEffects' => false], 'UnitEnum::cases' => ['hasSideEffects' => false], 'WeakMap::count' => ['hasSideEffects' => false], 'WeakMap::getIterator' => ['hasSideEffects' => false], 'WeakMap::offsetExists' => ['hasSideEffects' => false], 'WeakMap::offsetGet' => ['hasSideEffects' => false], 'WeakReference::create' => ['hasSideEffects' => false], 'WeakReference::get' => ['hasSideEffects' => false], 'XmlReader::next' => ['hasSideEffects' => true], 'XmlReader::read' => ['hasSideEffects' => true], 'Zookeeper::getAcl' => ['hasSideEffects' => false], 'Zookeeper::getChildren' => ['hasSideEffects' => false], 'Zookeeper::getClientId' => ['hasSideEffects' => false], 'Zookeeper::getRecvTimeout' => ['hasSideEffects' => false], 'Zookeeper::getState' => ['hasSideEffects' => false], '_' => ['hasSideEffects' => false], 'abs' => ['hasSideEffects' => false], 'acos' => ['hasSideEffects' => false], 'acosh' => ['hasSideEffects' => false], 'addcslashes' => ['hasSideEffects' => false], 'addslashes' => ['hasSideEffects' => false], 'apache_get_modules' => ['hasSideEffects' => false], 'apache_get_version' => ['hasSideEffects' => false], 'apache_getenv' => ['hasSideEffects' => false], 'apache_request_headers' => ['hasSideEffects' => false], 'array_change_key_case' => ['hasSideEffects' => false], 'array_chunk' => ['hasSideEffects' => false], 'array_column' => ['hasSideEffects' => false], 'array_combine' => ['hasSideEffects' => false], 'array_count_values' => ['hasSideEffects' => false], 'array_diff' => ['hasSideEffects' => false], 'array_diff_assoc' => ['hasSideEffects' => false], 'array_diff_key' => ['hasSideEffects' => false], 'array_diff_uassoc' => ['hasSideEffects' => false], 'array_diff_ukey' => ['hasSideEffects' => false], 'array_fill' => ['hasSideEffects' => false], 'array_fill_keys' => ['hasSideEffects' => false], 'array_flip' => ['hasSideEffects' => false], 'array_intersect' => ['hasSideEffects' => false], 'array_intersect_assoc' => ['hasSideEffects' => false], 'array_intersect_key' => ['hasSideEffects' => false], 'array_intersect_uassoc' => ['hasSideEffects' => false], 'array_intersect_ukey' => ['hasSideEffects' => false], 'array_is_list' => ['hasSideEffects' => false], 'array_key_exists' => ['hasSideEffects' => false], 'array_key_first' => ['hasSideEffects' => false], 'array_key_last' => ['hasSideEffects' => false], 'array_keys' => ['hasSideEffects' => false], 'array_merge' => ['hasSideEffects' => false], 'array_merge_recursive' => ['hasSideEffects' => false], 'array_pad' => ['hasSideEffects' => false], 'array_pop' => ['hasSideEffects' => true], 'array_product' => ['hasSideEffects' => false], 'array_push' => ['hasSideEffects' => true], 'array_rand' => ['hasSideEffects' => false], 'array_replace' => ['hasSideEffects' => false], 'array_replace_recursive' => ['hasSideEffects' => false], 'array_reverse' => ['hasSideEffects' => false], 'array_search' => ['hasSideEffects' => false], 'array_shift' => ['hasSideEffects' => true], 'array_slice' => ['hasSideEffects' => false], 'array_sum' => ['hasSideEffects' => false], 'array_udiff' => ['hasSideEffects' => false], 'array_udiff_assoc' => ['hasSideEffects' => false], 'array_udiff_uassoc' => ['hasSideEffects' => false], 'array_uintersect' => ['hasSideEffects' => false], 'array_uintersect_assoc' => ['hasSideEffects' => false], 'array_uintersect_uassoc' => ['hasSideEffects' => false], 'array_unique' => ['hasSideEffects' => false], 'array_unshift' => ['hasSideEffects' => true], 'array_values' => ['hasSideEffects' => false], 'asin' => ['hasSideEffects' => false], 'asinh' => ['hasSideEffects' => false], 'atan' => ['hasSideEffects' => false], 'atan2' => ['hasSideEffects' => false], 'atanh' => ['hasSideEffects' => false], 'base64_decode' => ['hasSideEffects' => false], 'base64_encode' => ['hasSideEffects' => false], 'base_convert' => ['hasSideEffects' => false], 'basename' => ['hasSideEffects' => false], 'bcadd' => ['hasSideEffects' => false], 'bccomp' => ['hasSideEffects' => false], 'bcdiv' => ['hasSideEffects' => false], 'bcmod' => ['hasSideEffects' => false], 'bcmul' => ['hasSideEffects' => false], 'bcpow' => ['hasSideEffects' => false], 'bcpowmod' => ['hasSideEffects' => false], 'bcsqrt' => ['hasSideEffects' => false], 'bcsub' => ['hasSideEffects' => false], 'bin2hex' => ['hasSideEffects' => false], 'bindec' => ['hasSideEffects' => false], 'boolval' => ['hasSideEffects' => false], 'bzcompress' => ['hasSideEffects' => false], 'bzdecompress' => ['hasSideEffects' => false], 'bzerrno' => ['hasSideEffects' => false], 'bzerror' => ['hasSideEffects' => false], 'bzerrstr' => ['hasSideEffects' => false], 'bzopen' => ['hasSideEffects' => false], 'ceil' => ['hasSideEffects' => false], 'checkdate' => ['hasSideEffects' => false], 'checkdnsrr' => ['hasSideEffects' => false], 'chgrp' => ['hasSideEffects' => true], 'chmod' => ['hasSideEffects' => true], 'chop' => ['hasSideEffects' => false], 'chown' => ['hasSideEffects' => true], 'chr' => ['hasSideEffects' => false], 'chunk_split' => ['hasSideEffects' => false], 'class_implements' => ['hasSideEffects' => false], 'class_parents' => ['hasSideEffects' => false], 'cli_get_process_title' => ['hasSideEffects' => false], 'collator_compare' => ['hasSideEffects' => false], 'collator_create' => ['hasSideEffects' => false], 'collator_get_attribute' => ['hasSideEffects' => false], 'collator_get_error_code' => ['hasSideEffects' => false], 'collator_get_error_message' => ['hasSideEffects' => false], 'collator_get_locale' => ['hasSideEffects' => false], 'collator_get_sort_key' => ['hasSideEffects' => false], 'collator_get_strength' => ['hasSideEffects' => false], 'compact' => ['hasSideEffects' => false], 'connection_aborted' => ['hasSideEffects' => true], 'connection_status' => ['hasSideEffects' => true], 'constant' => ['hasSideEffects' => false], 'convert_cyr_string' => ['hasSideEffects' => false], 'convert_uudecode' => ['hasSideEffects' => false], 'convert_uuencode' => ['hasSideEffects' => false], 'copy' => ['hasSideEffects' => true], 'cos' => ['hasSideEffects' => false], 'cosh' => ['hasSideEffects' => false], 'count' => ['hasSideEffects' => false], 'count_chars' => ['hasSideEffects' => false], 'crc32' => ['hasSideEffects' => false], 'crypt' => ['hasSideEffects' => false], 'ctype_alnum' => ['hasSideEffects' => false], 'ctype_alpha' => ['hasSideEffects' => false], 'ctype_cntrl' => ['hasSideEffects' => false], 'ctype_digit' => ['hasSideEffects' => false], 'ctype_graph' => ['hasSideEffects' => false], 'ctype_lower' => ['hasSideEffects' => false], 'ctype_print' => ['hasSideEffects' => false], 'ctype_punct' => ['hasSideEffects' => false], 'ctype_space' => ['hasSideEffects' => false], 'ctype_upper' => ['hasSideEffects' => false], 'ctype_xdigit' => ['hasSideEffects' => false], 'curl_copy_handle' => ['hasSideEffects' => false], 'curl_errno' => ['hasSideEffects' => false], 'curl_error' => ['hasSideEffects' => false], 'curl_escape' => ['hasSideEffects' => false], 'curl_file_create' => ['hasSideEffects' => false], 'curl_getinfo' => ['hasSideEffects' => false], 'curl_multi_errno' => ['hasSideEffects' => false], 'curl_multi_getcontent' => ['hasSideEffects' => false], 'curl_multi_info_read' => ['hasSideEffects' => false], 'curl_share_errno' => ['hasSideEffects' => false], 'curl_share_strerror' => ['hasSideEffects' => false], 'curl_strerror' => ['hasSideEffects' => false], 'curl_unescape' => ['hasSideEffects' => false], 'curl_version' => ['hasSideEffects' => false], 'current' => ['hasSideEffects' => false], 'date' => ['hasSideEffects' => false], 'date_create' => ['hasSideEffects' => false], 'date_create_from_format' => ['hasSideEffects' => false], 'date_create_immutable' => ['hasSideEffects' => false], 'date_create_immutable_from_format' => ['hasSideEffects' => false], 'date_default_timezone_get' => ['hasSideEffects' => false], 'date_diff' => ['hasSideEffects' => false], 'date_format' => ['hasSideEffects' => false], 'date_get_last_errors' => ['hasSideEffects' => false], 'date_interval_create_from_date_string' => ['hasSideEffects' => false], 'date_interval_format' => ['hasSideEffects' => false], 'date_offset_get' => ['hasSideEffects' => false], 'date_parse' => ['hasSideEffects' => false], 'date_parse_from_format' => ['hasSideEffects' => false], 'date_sun_info' => ['hasSideEffects' => false], 'date_sunrise' => ['hasSideEffects' => false], 'date_sunset' => ['hasSideEffects' => false], 'date_timestamp_get' => ['hasSideEffects' => false], 'date_timezone_get' => ['hasSideEffects' => false], 'datefmt_create' => ['hasSideEffects' => false], 'datefmt_format' => ['hasSideEffects' => false], 'datefmt_format_object' => ['hasSideEffects' => false], 'datefmt_get_calendar' => ['hasSideEffects' => false], 'datefmt_get_calendar_object' => ['hasSideEffects' => false], 'datefmt_get_datetype' => ['hasSideEffects' => false], 'datefmt_get_error_code' => ['hasSideEffects' => false], 'datefmt_get_error_message' => ['hasSideEffects' => false], 'datefmt_get_locale' => ['hasSideEffects' => false], 'datefmt_get_pattern' => ['hasSideEffects' => false], 'datefmt_get_timetype' => ['hasSideEffects' => false], 'datefmt_get_timezone' => ['hasSideEffects' => false], 'datefmt_get_timezone_id' => ['hasSideEffects' => false], 'datefmt_is_lenient' => ['hasSideEffects' => false], 'dcngettext' => ['hasSideEffects' => false], 'decbin' => ['hasSideEffects' => false], 'dechex' => ['hasSideEffects' => false], 'decoct' => ['hasSideEffects' => false], 'defined' => ['hasSideEffects' => false], 'deflate_init' => ['hasSideEffects' => false], 'deg2rad' => ['hasSideEffects' => false], 'dirname' => ['hasSideEffects' => false], 'disk_free_space' => ['hasSideEffects' => false], 'disk_total_space' => ['hasSideEffects' => false], 'diskfreespace' => ['hasSideEffects' => false], 'dngettext' => ['hasSideEffects' => false], 'doubleval' => ['hasSideEffects' => false], 'error_get_last' => ['hasSideEffects' => false], 'error_log' => ['hasSideEffects' => true], 'escapeshellarg' => ['hasSideEffects' => false], 'escapeshellcmd' => ['hasSideEffects' => false], 'exp' => ['hasSideEffects' => false], 'explode' => ['hasSideEffects' => false], 'expm1' => ['hasSideEffects' => false], 'extension_loaded' => ['hasSideEffects' => false], 'fclose' => ['hasSideEffects' => true], 'fdiv' => ['hasSideEffects' => false], 'feof' => ['hasSideEffects' => false], 'fflush' => ['hasSideEffects' => true], 'fgetc' => ['hasSideEffects' => true], 'fgetcsv' => ['hasSideEffects' => true], 'fgets' => ['hasSideEffects' => true], 'fgetss' => ['hasSideEffects' => true], 'file' => ['hasSideEffects' => false], 'file_exists' => ['hasSideEffects' => false], 'file_get_contents' => ['hasSideEffects' => true], 'file_put_contents' => ['hasSideEffects' => true], 'fileatime' => ['hasSideEffects' => false], 'filectime' => ['hasSideEffects' => false], 'filegroup' => ['hasSideEffects' => false], 'fileinode' => ['hasSideEffects' => false], 'filemtime' => ['hasSideEffects' => false], 'fileowner' => ['hasSideEffects' => false], 'fileperms' => ['hasSideEffects' => false], 'filesize' => ['hasSideEffects' => false], 'filetype' => ['hasSideEffects' => false], 'filter_has_var' => ['hasSideEffects' => false], 'filter_id' => ['hasSideEffects' => false], 'filter_input' => ['hasSideEffects' => false], 'filter_input_array' => ['hasSideEffects' => false], 'filter_list' => ['hasSideEffects' => false], 'filter_var' => ['hasSideEffects' => false], 'filter_var_array' => ['hasSideEffects' => false], 'finfo::buffer' => ['hasSideEffects' => false], 'finfo::file' => ['hasSideEffects' => false], 'floatval' => ['hasSideEffects' => false], 'flock' => ['hasSideEffects' => true], 'floor' => ['hasSideEffects' => false], 'fmod' => ['hasSideEffects' => false], 'fnmatch' => ['hasSideEffects' => false], 'fopen' => ['hasSideEffects' => true], 'fpassthru' => ['hasSideEffects' => true], 'fputcsv' => ['hasSideEffects' => true], 'fputs' => ['hasSideEffects' => true], 'fread' => ['hasSideEffects' => true], 'fscanf' => ['hasSideEffects' => true], 'fseek' => ['hasSideEffects' => true], 'fstat' => ['hasSideEffects' => false], 'ftell' => ['hasSideEffects' => false], 'ftok' => ['hasSideEffects' => false], 'ftruncate' => ['hasSideEffects' => true], 'func_get_arg' => ['hasSideEffects' => false], 'func_get_args' => ['hasSideEffects' => false], 'func_num_args' => ['hasSideEffects' => false], 'function_exists' => ['hasSideEffects' => false], 'fwrite' => ['hasSideEffects' => true], 'gc_enabled' => ['hasSideEffects' => false], 'gc_status' => ['hasSideEffects' => false], 'gd_info' => ['hasSideEffects' => false], 'geoip_continent_code_by_name' => ['hasSideEffects' => false], 'geoip_country_code3_by_name' => ['hasSideEffects' => false], 'geoip_country_code_by_name' => ['hasSideEffects' => false], 'geoip_country_name_by_name' => ['hasSideEffects' => false], 'geoip_database_info' => ['hasSideEffects' => false], 'geoip_db_avail' => ['hasSideEffects' => false], 'geoip_db_filename' => ['hasSideEffects' => false], 'geoip_db_get_all_info' => ['hasSideEffects' => false], 'geoip_id_by_name' => ['hasSideEffects' => false], 'geoip_isp_by_name' => ['hasSideEffects' => false], 'geoip_org_by_name' => ['hasSideEffects' => false], 'geoip_record_by_name' => ['hasSideEffects' => false], 'geoip_region_by_name' => ['hasSideEffects' => false], 'geoip_region_name_by_code' => ['hasSideEffects' => false], 'geoip_time_zone_by_country_and_region' => ['hasSideEffects' => false], 'get_browser' => ['hasSideEffects' => false], 'get_called_class' => ['hasSideEffects' => false], 'get_cfg_var' => ['hasSideEffects' => false], 'get_class' => ['hasSideEffects' => false], 'get_class_methods' => ['hasSideEffects' => false], 'get_class_vars' => ['hasSideEffects' => false], 'get_current_user' => ['hasSideEffects' => false], 'get_debug_type' => ['hasSideEffects' => false], 'get_declared_classes' => ['hasSideEffects' => false], 'get_declared_interfaces' => ['hasSideEffects' => false], 'get_declared_traits' => ['hasSideEffects' => false], 'get_defined_constants' => ['hasSideEffects' => false], 'get_defined_functions' => ['hasSideEffects' => false], 'get_defined_vars' => ['hasSideEffects' => false], 'get_extension_funcs' => ['hasSideEffects' => false], 'get_headers' => ['hasSideEffects' => false], 'get_html_translation_table' => ['hasSideEffects' => false], 'get_include_path' => ['hasSideEffects' => false], 'get_included_files' => ['hasSideEffects' => false], 'get_loaded_extensions' => ['hasSideEffects' => false], 'get_meta_tags' => ['hasSideEffects' => false], 'get_object_vars' => ['hasSideEffects' => false], 'get_parent_class' => ['hasSideEffects' => false], 'get_required_files' => ['hasSideEffects' => false], 'get_resource_id' => ['hasSideEffects' => false], 'get_resources' => ['hasSideEffects' => false], 'getallheaders' => ['hasSideEffects' => false], 'getcwd' => ['hasSideEffects' => false], 'getdate' => ['hasSideEffects' => false], 'getenv' => ['hasSideEffects' => false], 'gethostbyaddr' => ['hasSideEffects' => false], 'gethostbyname' => ['hasSideEffects' => false], 'gethostbynamel' => ['hasSideEffects' => false], 'gethostname' => ['hasSideEffects' => false], 'getlastmod' => ['hasSideEffects' => false], 'getmygid' => ['hasSideEffects' => false], 'getmyinode' => ['hasSideEffects' => false], 'getmypid' => ['hasSideEffects' => false], 'getmyuid' => ['hasSideEffects' => false], 'getprotobyname' => ['hasSideEffects' => false], 'getprotobynumber' => ['hasSideEffects' => false], 'getrandmax' => ['hasSideEffects' => false], 'getrusage' => ['hasSideEffects' => false], 'getservbyname' => ['hasSideEffects' => false], 'getservbyport' => ['hasSideEffects' => false], 'gettext' => ['hasSideEffects' => false], 'gettimeofday' => ['hasSideEffects' => false], 'gettype' => ['hasSideEffects' => false], 'glob' => ['hasSideEffects' => false], 'gmdate' => ['hasSideEffects' => false], 'gmmktime' => ['hasSideEffects' => false], 'gmp_abs' => ['hasSideEffects' => false], 'gmp_add' => ['hasSideEffects' => false], 'gmp_and' => ['hasSideEffects' => false], 'gmp_binomial' => ['hasSideEffects' => false], 'gmp_cmp' => ['hasSideEffects' => false], 'gmp_com' => ['hasSideEffects' => false], 'gmp_div' => ['hasSideEffects' => false], 'gmp_div_q' => ['hasSideEffects' => false], 'gmp_div_qr' => ['hasSideEffects' => false], 'gmp_div_r' => ['hasSideEffects' => false], 'gmp_divexact' => ['hasSideEffects' => false], 'gmp_export' => ['hasSideEffects' => false], 'gmp_fact' => ['hasSideEffects' => false], 'gmp_gcd' => ['hasSideEffects' => false], 'gmp_gcdext' => ['hasSideEffects' => false], 'gmp_hamdist' => ['hasSideEffects' => false], 'gmp_import' => ['hasSideEffects' => false], 'gmp_init' => ['hasSideEffects' => false], 'gmp_intval' => ['hasSideEffects' => false], 'gmp_invert' => ['hasSideEffects' => false], 'gmp_jacobi' => ['hasSideEffects' => false], 'gmp_kronecker' => ['hasSideEffects' => false], 'gmp_lcm' => ['hasSideEffects' => false], 'gmp_legendre' => ['hasSideEffects' => false], 'gmp_mod' => ['hasSideEffects' => false], 'gmp_mul' => ['hasSideEffects' => false], 'gmp_neg' => ['hasSideEffects' => false], 'gmp_nextprime' => ['hasSideEffects' => false], 'gmp_or' => ['hasSideEffects' => false], 'gmp_perfect_power' => ['hasSideEffects' => false], 'gmp_perfect_square' => ['hasSideEffects' => false], 'gmp_popcount' => ['hasSideEffects' => false], 'gmp_pow' => ['hasSideEffects' => false], 'gmp_powm' => ['hasSideEffects' => false], 'gmp_prob_prime' => ['hasSideEffects' => false], 'gmp_root' => ['hasSideEffects' => false], 'gmp_rootrem' => ['hasSideEffects' => false], 'gmp_scan0' => ['hasSideEffects' => false], 'gmp_scan1' => ['hasSideEffects' => false], 'gmp_sign' => ['hasSideEffects' => false], 'gmp_sqrt' => ['hasSideEffects' => false], 'gmp_sqrtrem' => ['hasSideEffects' => false], 'gmp_strval' => ['hasSideEffects' => false], 'gmp_sub' => ['hasSideEffects' => false], 'gmp_testbit' => ['hasSideEffects' => false], 'gmp_xor' => ['hasSideEffects' => false], 'grapheme_stripos' => ['hasSideEffects' => false], 'grapheme_stristr' => ['hasSideEffects' => false], 'grapheme_strlen' => ['hasSideEffects' => false], 'grapheme_strpos' => ['hasSideEffects' => false], 'grapheme_strripos' => ['hasSideEffects' => false], 'grapheme_strrpos' => ['hasSideEffects' => false], 'grapheme_strstr' => ['hasSideEffects' => false], 'grapheme_substr' => ['hasSideEffects' => false], 'gzcompress' => ['hasSideEffects' => false], 'gzdecode' => ['hasSideEffects' => false], 'gzdeflate' => ['hasSideEffects' => false], 'gzencode' => ['hasSideEffects' => false], 'gzinflate' => ['hasSideEffects' => false], 'gzuncompress' => ['hasSideEffects' => false], 'hash' => ['hasSideEffects' => false], 'hash_algos' => ['hasSideEffects' => false], 'hash_copy' => ['hasSideEffects' => false], 'hash_equals' => ['hasSideEffects' => false], 'hash_file' => ['hasSideEffects' => false], 'hash_hkdf' => ['hasSideEffects' => false], 'hash_hmac' => ['hasSideEffects' => false], 'hash_hmac_algos' => ['hasSideEffects' => false], 'hash_hmac_file' => ['hasSideEffects' => false], 'hash_init' => ['hasSideEffects' => false], 'hash_pbkdf2' => ['hasSideEffects' => false], 'headers_list' => ['hasSideEffects' => false], 'hebrev' => ['hasSideEffects' => false], 'hexdec' => ['hasSideEffects' => false], 'hrtime' => ['hasSideEffects' => false], 'html_entity_decode' => ['hasSideEffects' => false], 'htmlentities' => ['hasSideEffects' => false], 'htmlspecialchars' => ['hasSideEffects' => false], 'htmlspecialchars_decode' => ['hasSideEffects' => false], 'http_build_cookie' => ['hasSideEffects' => false], 'http_build_query' => ['hasSideEffects' => false], 'http_build_str' => ['hasSideEffects' => false], 'http_cache_etag' => ['hasSideEffects' => false], 'http_cache_last_modified' => ['hasSideEffects' => false], 'http_chunked_decode' => ['hasSideEffects' => false], 'http_date' => ['hasSideEffects' => false], 'http_deflate' => ['hasSideEffects' => false], 'http_get_request_body' => ['hasSideEffects' => false], 'http_get_request_body_stream' => ['hasSideEffects' => false], 'http_get_request_headers' => ['hasSideEffects' => false], 'http_inflate' => ['hasSideEffects' => false], 'http_match_etag' => ['hasSideEffects' => false], 'http_match_modified' => ['hasSideEffects' => false], 'http_match_request_header' => ['hasSideEffects' => false], 'http_parse_cookie' => ['hasSideEffects' => false], 'http_parse_headers' => ['hasSideEffects' => false], 'http_parse_message' => ['hasSideEffects' => false], 'http_parse_params' => ['hasSideEffects' => false], 'http_request_body_encode' => ['hasSideEffects' => false], 'http_request_method_exists' => ['hasSideEffects' => false], 'http_request_method_name' => ['hasSideEffects' => false], 'http_support' => ['hasSideEffects' => false], 'hypot' => ['hasSideEffects' => false], 'iconv' => ['hasSideEffects' => false], 'iconv_get_encoding' => ['hasSideEffects' => false], 'iconv_mime_decode' => ['hasSideEffects' => false], 'iconv_mime_decode_headers' => ['hasSideEffects' => false], 'iconv_mime_encode' => ['hasSideEffects' => false], 'iconv_strlen' => ['hasSideEffects' => false], 'iconv_strpos' => ['hasSideEffects' => false], 'iconv_strrpos' => ['hasSideEffects' => false], 'iconv_substr' => ['hasSideEffects' => false], 'idate' => ['hasSideEffects' => false], 'image_type_to_extension' => ['hasSideEffects' => false], 'image_type_to_mime_type' => ['hasSideEffects' => false], 'imagecolorat' => ['hasSideEffects' => false], 'imagecolorclosest' => ['hasSideEffects' => false], 'imagecolorclosestalpha' => ['hasSideEffects' => false], 'imagecolorclosesthwb' => ['hasSideEffects' => false], 'imagecolorexact' => ['hasSideEffects' => false], 'imagecolorexactalpha' => ['hasSideEffects' => false], 'imagecolorresolve' => ['hasSideEffects' => false], 'imagecolorresolvealpha' => ['hasSideEffects' => false], 'imagecolorsforindex' => ['hasSideEffects' => false], 'imagecolorstotal' => ['hasSideEffects' => false], 'imagecreate' => ['hasSideEffects' => false], 'imagecreatefromstring' => ['hasSideEffects' => false], 'imagecreatetruecolor' => ['hasSideEffects' => false], 'imagefontheight' => ['hasSideEffects' => false], 'imagefontwidth' => ['hasSideEffects' => false], 'imageftbbox' => ['hasSideEffects' => false], 'imagegetinterpolation' => ['hasSideEffects' => false], 'imagegrabscreen' => ['hasSideEffects' => false], 'imagegrabwindow' => ['hasSideEffects' => false], 'imageistruecolor' => ['hasSideEffects' => false], 'imagesx' => ['hasSideEffects' => false], 'imagesy' => ['hasSideEffects' => false], 'imagettfbbox' => ['hasSideEffects' => false], 'imagetypes' => ['hasSideEffects' => false], 'implode' => ['hasSideEffects' => false], 'in_array' => ['hasSideEffects' => false], 'inet_ntop' => ['hasSideEffects' => false], 'inet_pton' => ['hasSideEffects' => false], 'inflate_get_read_len' => ['hasSideEffects' => false], 'inflate_get_status' => ['hasSideEffects' => false], 'inflate_init' => ['hasSideEffects' => false], 'ini_get' => ['hasSideEffects' => false], 'ini_get_all' => ['hasSideEffects' => false], 'intcal_get_maximum' => ['hasSideEffects' => false], 'intdiv' => ['hasSideEffects' => false], 'intl_error_name' => ['hasSideEffects' => false], 'intl_get' => ['hasSideEffects' => false], 'intl_get_error_code' => ['hasSideEffects' => false], 'intl_get_error_message' => ['hasSideEffects' => false], 'intl_is_failure' => ['hasSideEffects' => false], 'intlcal_after' => ['hasSideEffects' => false], 'intlcal_before' => ['hasSideEffects' => false], 'intlcal_create_instance' => ['hasSideEffects' => false], 'intlcal_equals' => ['hasSideEffects' => false], 'intlcal_field_difference' => ['hasSideEffects' => false], 'intlcal_from_date_time' => ['hasSideEffects' => false], 'intlcal_get' => ['hasSideEffects' => false], 'intlcal_get_actual_maximum' => ['hasSideEffects' => false], 'intlcal_get_actual_minimum' => ['hasSideEffects' => false], 'intlcal_get_available_locales' => ['hasSideEffects' => false], 'intlcal_get_day_of_week_type' => ['hasSideEffects' => false], 'intlcal_get_error_code' => ['hasSideEffects' => false], 'intlcal_get_error_message' => ['hasSideEffects' => false], 'intlcal_get_first_day_of_week' => ['hasSideEffects' => false], 'intlcal_get_greatest_minimum' => ['hasSideEffects' => false], 'intlcal_get_keyword_values_for_locale' => ['hasSideEffects' => false], 'intlcal_get_least_maximum' => ['hasSideEffects' => false], 'intlcal_get_locale' => ['hasSideEffects' => false], 'intlcal_get_maximum' => ['hasSideEffects' => false], 'intlcal_get_minimal_days_in_first_week' => ['hasSideEffects' => false], 'intlcal_get_minimum' => ['hasSideEffects' => false], 'intlcal_get_now' => ['hasSideEffects' => false], 'intlcal_get_repeated_wall_time_option' => ['hasSideEffects' => false], 'intlcal_get_skipped_wall_time_option' => ['hasSideEffects' => false], 'intlcal_get_time' => ['hasSideEffects' => false], 'intlcal_get_time_zone' => ['hasSideEffects' => false], 'intlcal_get_type' => ['hasSideEffects' => false], 'intlcal_get_weekend_transition' => ['hasSideEffects' => false], 'intlcal_greates_minimum' => ['hasSideEffects' => false], 'intlcal_in_daylight_time' => ['hasSideEffects' => false], 'intlcal_is_equivalent_to' => ['hasSideEffects' => false], 'intlcal_is_lenient' => ['hasSideEffects' => false], 'intlcal_is_set' => ['hasSideEffects' => false], 'intlcal_is_weekend' => ['hasSideEffects' => false], 'intlcal_to_date_time' => ['hasSideEffects' => false], 'intlgregcal_create_instance' => ['hasSideEffects' => false], 'intlgregcal_get_gregorian_change' => ['hasSideEffects' => false], 'intlgregcal_is_leap_year' => ['hasSideEffects' => false], 'intltz_count_equivalent_ids' => ['hasSideEffects' => false], 'intltz_create_default' => ['hasSideEffects' => false], 'intltz_create_enumeration' => ['hasSideEffects' => false], 'intltz_create_time_zone' => ['hasSideEffects' => false], 'intltz_create_time_zone_id_enumeration' => ['hasSideEffects' => false], 'intltz_from_date_time_zone' => ['hasSideEffects' => false], 'intltz_get_canonical_id' => ['hasSideEffects' => false], 'intltz_get_display_name' => ['hasSideEffects' => false], 'intltz_get_dst_savings' => ['hasSideEffects' => false], 'intltz_get_equivalent_id' => ['hasSideEffects' => false], 'intltz_get_error_code' => ['hasSideEffects' => false], 'intltz_get_error_message' => ['hasSideEffects' => false], 'intltz_get_gmt' => ['hasSideEffects' => false], 'intltz_get_id' => ['hasSideEffects' => false], 'intltz_get_offset' => ['hasSideEffects' => false], 'intltz_get_raw_offset' => ['hasSideEffects' => false], 'intltz_get_region' => ['hasSideEffects' => false], 'intltz_get_tz_data_version' => ['hasSideEffects' => false], 'intltz_get_unknown' => ['hasSideEffects' => false], 'intltz_getgmt' => ['hasSideEffects' => false], 'intltz_has_same_rules' => ['hasSideEffects' => false], 'intltz_to_date_time_zone' => ['hasSideEffects' => false], 'intltz_use_daylight_time' => ['hasSideEffects' => false], 'intlz_create_default' => ['hasSideEffects' => false], 'intval' => ['hasSideEffects' => false], 'ip2long' => ['hasSideEffects' => false], 'iptcparse' => ['hasSideEffects' => false], 'is_a' => ['hasSideEffects' => false], 'is_array' => ['hasSideEffects' => false], 'is_bool' => ['hasSideEffects' => false], 'is_countable' => ['hasSideEffects' => false], 'is_dir' => ['hasSideEffects' => false], 'is_double' => ['hasSideEffects' => false], 'is_executable' => ['hasSideEffects' => false], 'is_file' => ['hasSideEffects' => false], 'is_finite' => ['hasSideEffects' => false], 'is_float' => ['hasSideEffects' => false], 'is_infinite' => ['hasSideEffects' => false], 'is_int' => ['hasSideEffects' => false], 'is_integer' => ['hasSideEffects' => false], 'is_iterable' => ['hasSideEffects' => false], 'is_link' => ['hasSideEffects' => false], 'is_long' => ['hasSideEffects' => false], 'is_nan' => ['hasSideEffects' => false], 'is_null' => ['hasSideEffects' => false], 'is_numeric' => ['hasSideEffects' => false], 'is_object' => ['hasSideEffects' => false], 'is_readable' => ['hasSideEffects' => false], 'is_real' => ['hasSideEffects' => false], 'is_resource' => ['hasSideEffects' => false], 'is_scalar' => ['hasSideEffects' => false], 'is_string' => ['hasSideEffects' => false], 'is_subclass_of' => ['hasSideEffects' => false], 'is_uploaded_file' => ['hasSideEffects' => false], 'is_writable' => ['hasSideEffects' => false], 'is_writeable' => ['hasSideEffects' => false], 'iterator_count' => ['hasSideEffects' => false], 'join' => ['hasSideEffects' => false], 'json_last_error' => ['hasSideEffects' => false], 'json_last_error_msg' => ['hasSideEffects' => false], 'json_validate' => ['hasSideEffects' => false], 'key' => ['hasSideEffects' => false], 'key_exists' => ['hasSideEffects' => false], 'lcfirst' => ['hasSideEffects' => false], 'lchgrp' => ['hasSideEffects' => true], 'lchown' => ['hasSideEffects' => true], 'libxml_get_errors' => ['hasSideEffects' => false], 'libxml_get_last_error' => ['hasSideEffects' => false], 'link' => ['hasSideEffects' => true], 'linkinfo' => ['hasSideEffects' => false], 'locale_accept_from_http' => ['hasSideEffects' => false], 'locale_canonicalize' => ['hasSideEffects' => false], 'locale_compose' => ['hasSideEffects' => false], 'locale_filter_matches' => ['hasSideEffects' => false], 'locale_get_all_variants' => ['hasSideEffects' => false], 'locale_get_default' => ['hasSideEffects' => false], 'locale_get_display_language' => ['hasSideEffects' => false], 'locale_get_display_name' => ['hasSideEffects' => false], 'locale_get_display_region' => ['hasSideEffects' => false], 'locale_get_display_script' => ['hasSideEffects' => false], 'locale_get_display_variant' => ['hasSideEffects' => false], 'locale_get_keywords' => ['hasSideEffects' => false], 'locale_get_primary_language' => ['hasSideEffects' => false], 'locale_get_region' => ['hasSideEffects' => false], 'locale_get_script' => ['hasSideEffects' => false], 'locale_lookup' => ['hasSideEffects' => false], 'locale_parse' => ['hasSideEffects' => false], 'localeconv' => ['hasSideEffects' => false], 'localtime' => ['hasSideEffects' => false], 'log' => ['hasSideEffects' => false], 'log10' => ['hasSideEffects' => false], 'log1p' => ['hasSideEffects' => false], 'long2ip' => ['hasSideEffects' => false], 'lstat' => ['hasSideEffects' => false], 'ltrim' => ['hasSideEffects' => false], 'max' => ['hasSideEffects' => false], 'mb_check_encoding' => ['hasSideEffects' => false], 'mb_chr' => ['hasSideEffects' => false], 'mb_convert_case' => ['hasSideEffects' => false], 'mb_convert_encoding' => ['hasSideEffects' => false], 'mb_convert_kana' => ['hasSideEffects' => false], 'mb_decode_mimeheader' => ['hasSideEffects' => false], 'mb_decode_numericentity' => ['hasSideEffects' => false], 'mb_detect_encoding' => ['hasSideEffects' => false], 'mb_encode_mimeheader' => ['hasSideEffects' => false], 'mb_encode_numericentity' => ['hasSideEffects' => false], 'mb_encoding_aliases' => ['hasSideEffects' => false], 'mb_ereg_match' => ['hasSideEffects' => false], 'mb_ereg_replace' => ['hasSideEffects' => false], 'mb_ereg_search' => ['hasSideEffects' => false], 'mb_ereg_search_getpos' => ['hasSideEffects' => false], 'mb_ereg_search_getregs' => ['hasSideEffects' => false], 'mb_ereg_search_pos' => ['hasSideEffects' => false], 'mb_ereg_search_regs' => ['hasSideEffects' => false], 'mb_ereg_search_setpos' => ['hasSideEffects' => false], 'mb_eregi_replace' => ['hasSideEffects' => false], 'mb_get_info' => ['hasSideEffects' => false], 'mb_http_input' => ['hasSideEffects' => false], 'mb_list_encodings' => ['hasSideEffects' => false], 'mb_ord' => ['hasSideEffects' => false], 'mb_output_handler' => ['hasSideEffects' => false], 'mb_preferred_mime_name' => ['hasSideEffects' => false], 'mb_scrub' => ['hasSideEffects' => false], 'mb_split' => ['hasSideEffects' => false], 'mb_str_pad' => ['hasSideEffects' => false], 'mb_str_split' => ['hasSideEffects' => false], 'mb_strcut' => ['hasSideEffects' => false], 'mb_strimwidth' => ['hasSideEffects' => false], 'mb_stripos' => ['hasSideEffects' => false], 'mb_stristr' => ['hasSideEffects' => false], 'mb_strlen' => ['hasSideEffects' => false], 'mb_strpos' => ['hasSideEffects' => false], 'mb_strrchr' => ['hasSideEffects' => false], 'mb_strrichr' => ['hasSideEffects' => false], 'mb_strripos' => ['hasSideEffects' => false], 'mb_strrpos' => ['hasSideEffects' => false], 'mb_strstr' => ['hasSideEffects' => false], 'mb_strtolower' => ['hasSideEffects' => false], 'mb_strtoupper' => ['hasSideEffects' => false], 'mb_strwidth' => ['hasSideEffects' => false], 'mb_substr' => ['hasSideEffects' => false], 'mb_substr_count' => ['hasSideEffects' => false], 'mbereg_search_setpos' => ['hasSideEffects' => false], 'md5' => ['hasSideEffects' => false], 'md5_file' => ['hasSideEffects' => false], 'memory_get_peak_usage' => ['hasSideEffects' => false], 'memory_get_usage' => ['hasSideEffects' => false], 'metaphone' => ['hasSideEffects' => false], 'method_exists' => ['hasSideEffects' => false], 'mhash' => ['hasSideEffects' => false], 'mhash_count' => ['hasSideEffects' => false], 'mhash_get_block_size' => ['hasSideEffects' => false], 'mhash_get_hash_name' => ['hasSideEffects' => false], 'mhash_keygen_s2k' => ['hasSideEffects' => false], 'microtime' => ['hasSideEffects' => false], 'min' => ['hasSideEffects' => false], 'mkdir' => ['hasSideEffects' => true], 'mktime' => ['hasSideEffects' => false], 'move_uploaded_file' => ['hasSideEffects' => true], 'msgfmt_create' => ['hasSideEffects' => false], 'msgfmt_format' => ['hasSideEffects' => false], 'msgfmt_format_message' => ['hasSideEffects' => false], 'msgfmt_get_error_code' => ['hasSideEffects' => false], 'msgfmt_get_error_message' => ['hasSideEffects' => false], 'msgfmt_get_locale' => ['hasSideEffects' => false], 'msgfmt_get_pattern' => ['hasSideEffects' => false], 'msgfmt_parse' => ['hasSideEffects' => false], 'msgfmt_parse_message' => ['hasSideEffects' => false], 'mt_getrandmax' => ['hasSideEffects' => false], 'mt_rand' => ['hasSideEffects' => true], 'net_get_interfaces' => ['hasSideEffects' => false], 'ngettext' => ['hasSideEffects' => false], 'nl2br' => ['hasSideEffects' => false], 'nl_langinfo' => ['hasSideEffects' => false], 'normalizer_get_raw_decomposition' => ['hasSideEffects' => false], 'normalizer_is_normalized' => ['hasSideEffects' => false], 'normalizer_normalize' => ['hasSideEffects' => false], 'number_format' => ['hasSideEffects' => false], 'numfmt_create' => ['hasSideEffects' => false], 'numfmt_format' => ['hasSideEffects' => false], 'numfmt_format_currency' => ['hasSideEffects' => false], 'numfmt_get_attribute' => ['hasSideEffects' => false], 'numfmt_get_error_code' => ['hasSideEffects' => false], 'numfmt_get_error_message' => ['hasSideEffects' => false], 'numfmt_get_locale' => ['hasSideEffects' => false], 'numfmt_get_pattern' => ['hasSideEffects' => false], 'numfmt_get_symbol' => ['hasSideEffects' => false], 'numfmt_get_text_attribute' => ['hasSideEffects' => false], 'numfmt_parse' => ['hasSideEffects' => false], 'ob_etaghandler' => ['hasSideEffects' => false], 'ob_get_contents' => ['hasSideEffects' => false], 'ob_iconv_handler' => ['hasSideEffects' => false], 'octdec' => ['hasSideEffects' => false], 'ord' => ['hasSideEffects' => false], 'pack' => ['hasSideEffects' => false], 'pam_auth' => ['hasSideEffects' => false], 'pam_chpass' => ['hasSideEffects' => false], 'parse_ini_file' => ['hasSideEffects' => false], 'parse_ini_string' => ['hasSideEffects' => false], 'parse_url' => ['hasSideEffects' => false], 'pathinfo' => ['hasSideEffects' => false], 'pclose' => ['hasSideEffects' => true], 'pcntl_errno' => ['hasSideEffects' => false], 'pcntl_get_last_error' => ['hasSideEffects' => false], 'pcntl_getpriority' => ['hasSideEffects' => false], 'pcntl_strerror' => ['hasSideEffects' => false], 'pcntl_wexitstatus' => ['hasSideEffects' => false], 'pcntl_wifcontinued' => ['hasSideEffects' => false], 'pcntl_wifexited' => ['hasSideEffects' => false], 'pcntl_wifsignaled' => ['hasSideEffects' => false], 'pcntl_wifstopped' => ['hasSideEffects' => false], 'pcntl_wstopsig' => ['hasSideEffects' => false], 'pcntl_wtermsig' => ['hasSideEffects' => false], 'pdo_drivers' => ['hasSideEffects' => false], 'php_ini_loaded_file' => ['hasSideEffects' => false], 'php_ini_scanned_files' => ['hasSideEffects' => false], 'php_logo_guid' => ['hasSideEffects' => false], 'php_sapi_name' => ['hasSideEffects' => false], 'php_strip_whitespace' => ['hasSideEffects' => false], 'php_uname' => ['hasSideEffects' => false], 'phpversion' => ['hasSideEffects' => false], 'pi' => ['hasSideEffects' => false], 'popen' => ['hasSideEffects' => true], 'pos' => ['hasSideEffects' => false], 'posix_ctermid' => ['hasSideEffects' => false], 'posix_errno' => ['hasSideEffects' => false], 'posix_get_last_error' => ['hasSideEffects' => false], 'posix_getcwd' => ['hasSideEffects' => false], 'posix_getegid' => ['hasSideEffects' => false], 'posix_geteuid' => ['hasSideEffects' => false], 'posix_getgid' => ['hasSideEffects' => false], 'posix_getgrgid' => ['hasSideEffects' => false], 'posix_getgrnam' => ['hasSideEffects' => false], 'posix_getgroups' => ['hasSideEffects' => false], 'posix_getlogin' => ['hasSideEffects' => false], 'posix_getpgid' => ['hasSideEffects' => false], 'posix_getpgrp' => ['hasSideEffects' => false], 'posix_getpid' => ['hasSideEffects' => false], 'posix_getppid' => ['hasSideEffects' => false], 'posix_getpwnam' => ['hasSideEffects' => false], 'posix_getpwuid' => ['hasSideEffects' => false], 'posix_getrlimit' => ['hasSideEffects' => false], 'posix_getsid' => ['hasSideEffects' => false], 'posix_getuid' => ['hasSideEffects' => false], 'posix_initgroups' => ['hasSideEffects' => false], 'posix_isatty' => ['hasSideEffects' => false], 'posix_strerror' => ['hasSideEffects' => false], 'posix_times' => ['hasSideEffects' => false], 'posix_ttyname' => ['hasSideEffects' => false], 'posix_uname' => ['hasSideEffects' => false], 'pow' => ['hasSideEffects' => false], 'preg_grep' => ['hasSideEffects' => false], 'preg_last_error' => ['hasSideEffects' => false], 'preg_last_error_msg' => ['hasSideEffects' => false], 'preg_quote' => ['hasSideEffects' => false], 'preg_split' => ['hasSideEffects' => false], 'property_exists' => ['hasSideEffects' => false], 'quoted_printable_decode' => ['hasSideEffects' => false], 'quoted_printable_encode' => ['hasSideEffects' => false], 'quotemeta' => ['hasSideEffects' => false], 'rad2deg' => ['hasSideEffects' => false], 'rand' => ['hasSideEffects' => true], 'random_bytes' => ['hasSideEffects' => true], 'random_int' => ['hasSideEffects' => true], 'range' => ['hasSideEffects' => false], 'rawurldecode' => ['hasSideEffects' => false], 'rawurlencode' => ['hasSideEffects' => false], 'readfile' => ['hasSideEffects' => true], 'readlink' => ['hasSideEffects' => false], 'realpath' => ['hasSideEffects' => false], 'realpath_cache_get' => ['hasSideEffects' => false], 'realpath_cache_size' => ['hasSideEffects' => false], 'rename' => ['hasSideEffects' => true], 'resourcebundle_count' => ['hasSideEffects' => false], 'resourcebundle_create' => ['hasSideEffects' => false], 'resourcebundle_get' => ['hasSideEffects' => false], 'resourcebundle_get_error_code' => ['hasSideEffects' => false], 'resourcebundle_get_error_message' => ['hasSideEffects' => false], 'resourcebundle_locales' => ['hasSideEffects' => false], 'rewind' => ['hasSideEffects' => true], 'rmdir' => ['hasSideEffects' => true], 'round' => ['hasSideEffects' => false], 'rtrim' => ['hasSideEffects' => false], 'sha1' => ['hasSideEffects' => false], 'sha1_file' => ['hasSideEffects' => false], 'sin' => ['hasSideEffects' => false], 'sinh' => ['hasSideEffects' => false], 'sizeof' => ['hasSideEffects' => false], 'soundex' => ['hasSideEffects' => false], 'spl_classes' => ['hasSideEffects' => false], 'spl_object_hash' => ['hasSideEffects' => false], 'sprintf' => ['hasSideEffects' => false], 'sqrt' => ['hasSideEffects' => false], 'stat' => ['hasSideEffects' => false], 'str_contains' => ['hasSideEffects' => false], 'str_decrement' => ['hasSideEffects' => false], 'str_ends_with' => ['hasSideEffects' => false], 'str_getcsv' => ['hasSideEffects' => false], 'str_increment' => ['hasSideEffects' => false], 'str_pad' => ['hasSideEffects' => false], 'str_repeat' => ['hasSideEffects' => false], 'str_rot13' => ['hasSideEffects' => false], 'str_split' => ['hasSideEffects' => false], 'str_starts_with' => ['hasSideEffects' => false], 'str_word_count' => ['hasSideEffects' => false], 'strcasecmp' => ['hasSideEffects' => false], 'strchr' => ['hasSideEffects' => false], 'strcmp' => ['hasSideEffects' => false], 'strcoll' => ['hasSideEffects' => false], 'strcspn' => ['hasSideEffects' => false], 'stream_get_filters' => ['hasSideEffects' => false], 'stream_get_transports' => ['hasSideEffects' => false], 'stream_get_wrappers' => ['hasSideEffects' => false], 'stream_is_local' => ['hasSideEffects' => false], 'stream_isatty' => ['hasSideEffects' => false], 'strip_tags' => ['hasSideEffects' => false], 'stripcslashes' => ['hasSideEffects' => false], 'stripos' => ['hasSideEffects' => false], 'stripslashes' => ['hasSideEffects' => false], 'stristr' => ['hasSideEffects' => false], 'strlen' => ['hasSideEffects' => false], 'strnatcasecmp' => ['hasSideEffects' => false], 'strnatcmp' => ['hasSideEffects' => false], 'strncasecmp' => ['hasSideEffects' => false], 'strncmp' => ['hasSideEffects' => false], 'strpbrk' => ['hasSideEffects' => false], 'strpos' => ['hasSideEffects' => false], 'strptime' => ['hasSideEffects' => false], 'strrchr' => ['hasSideEffects' => false], 'strrev' => ['hasSideEffects' => false], 'strripos' => ['hasSideEffects' => false], 'strrpos' => ['hasSideEffects' => false], 'strspn' => ['hasSideEffects' => false], 'strstr' => ['hasSideEffects' => false], 'strtolower' => ['hasSideEffects' => false], 'strtotime' => ['hasSideEffects' => false], 'strtoupper' => ['hasSideEffects' => false], 'strtr' => ['hasSideEffects' => false], 'strval' => ['hasSideEffects' => false], 'substr' => ['hasSideEffects' => false], 'substr_compare' => ['hasSideEffects' => false], 'substr_count' => ['hasSideEffects' => false], 'substr_replace' => ['hasSideEffects' => false], 'symlink' => ['hasSideEffects' => true], 'sys_getloadavg' => ['hasSideEffects' => false], 'tan' => ['hasSideEffects' => false], 'tanh' => ['hasSideEffects' => false], 'tempnam' => ['hasSideEffects' => true], 'timezone_abbreviations_list' => ['hasSideEffects' => false], 'timezone_identifiers_list' => ['hasSideEffects' => false], 'timezone_location_get' => ['hasSideEffects' => false], 'timezone_name_from_abbr' => ['hasSideEffects' => false], 'timezone_name_get' => ['hasSideEffects' => false], 'timezone_offset_get' => ['hasSideEffects' => false], 'timezone_open' => ['hasSideEffects' => false], 'timezone_transitions_get' => ['hasSideEffects' => false], 'timezone_version_get' => ['hasSideEffects' => false], 'tmpfile' => ['hasSideEffects' => true], 'token_get_all' => ['hasSideEffects' => false], 'token_name' => ['hasSideEffects' => false], 'touch' => ['hasSideEffects' => true], 'transliterator_create' => ['hasSideEffects' => false], 'transliterator_create_from_rules' => ['hasSideEffects' => false], 'transliterator_create_inverse' => ['hasSideEffects' => false], 'transliterator_get_error_code' => ['hasSideEffects' => false], 'transliterator_get_error_message' => ['hasSideEffects' => false], 'transliterator_list_ids' => ['hasSideEffects' => false], 'transliterator_transliterate' => ['hasSideEffects' => false], 'trim' => ['hasSideEffects' => false], 'ucfirst' => ['hasSideEffects' => false], 'ucwords' => ['hasSideEffects' => false], 'umask' => ['hasSideEffects' => true], 'unlink' => ['hasSideEffects' => true], 'unpack' => ['hasSideEffects' => false], 'urldecode' => ['hasSideEffects' => false], 'urlencode' => ['hasSideEffects' => false], 'utf8_decode' => ['hasSideEffects' => false], 'utf8_encode' => ['hasSideEffects' => false], 'vsprintf' => ['hasSideEffects' => false], 'wordwrap' => ['hasSideEffects' => false], 'xml_error_string' => ['hasSideEffects' => false], 'xml_get_current_byte_index' => ['hasSideEffects' => false], 'xml_get_current_column_number' => ['hasSideEffects' => false], 'xml_get_current_line_number' => ['hasSideEffects' => false], 'xml_get_error_code' => ['hasSideEffects' => false], 'xml_parser_create' => ['hasSideEffects' => false], 'xml_parser_create_ns' => ['hasSideEffects' => false], 'xml_parser_get_option' => ['hasSideEffects' => false], 'zend_version' => ['hasSideEffects' => false], 'zlib_decode' => ['hasSideEffects' => false], 'zlib_encode' => ['hasSideEffects' => false], 'zlib_get_coding_type' => ['hasSideEffects' => false], ]; ['mysqli_fetch_field' => ['(stdClass&object{name: string, orgname: string, table: string, orgtable: string, def: string, db: string, catalog: "def", max_length: 0, length: int, charsetnr: string, flags: int, type: int, decimals: int})|false', 'result' => 'mysqli_result'], 'mysqli_fetch_field_direct' => ['(stdClass&object{name: string, orgname: string, table: string, orgtable: string, def: string, db: string, catalog: "def", max_length: 0, length: int, charsetnr: string, flags: int, type: int, decimals: int})|false', 'result' => 'mysqli_result', 'fieldnr' => 'int'], 'mysqli_fetch_fields' => ['list', 'result' => 'mysqli_result'], 'mysqli_result::fetch_field' => ['(stdClass&object{name: string, orgname: string, table: string, orgtable: string, def: string, db: string, catalog: "def", max_length: 0, length: int, charsetnr: string, flags: int, type: int, decimals: int})|false'], 'mysqli_result::fetch_field_direct' => ['(stdClass&object{name: string, orgname: string, table: string, orgtable: string, def: string, db: string, catalog: "def", max_length: 0, length: int, charsetnr: string, flags: int, type: int, decimals: int})|false', 'fieldnr' => 'int'], 'mysqli_result::fetch_fields' => ['list'], 'UnitEnum::cases' => ['list']], 'old' => ['pg_escape_bytea' => ['string', 'connection' => 'resource', 'data' => 'string'], 'pg_escape_bytea\'1' => ['string', 'data' => 'string'], 'pg_escape_identifier' => ['string|false', 'connection' => 'resource', 'data' => 'string'], 'pg_escape_identifier\'1' => ['string', 'data' => 'string'], 'pg_escape_literal' => ['string|false', 'connection' => 'resource', 'data' => 'string'], 'pg_escape_literal\'1' => ['string', 'data' => 'string'], 'pg_escape_string' => ['string', 'connection' => 'resource', 'data' => 'string'], 'pg_escape_string\'1' => ['string', 'data' => 'string'], 'pg_execute' => ['resource|false', 'connection' => 'resource', 'stmtname' => 'string', 'params' => 'array'], 'pg_execute\'1' => ['resource|false', 'stmtname' => 'string', 'params' => 'array'], 'pg_fetch_object' => ['object|false', 'result' => '', 'row=' => '?int', 'result_type=' => 'int'], 'pg_fetch_object\'1' => ['object', 'result' => '', 'row=' => '?int', 'class_name=' => 'string', 'ctor_params=' => 'array'], 'pg_fetch_result' => ['', 'result' => '', 'field_name' => 'string|int'], 'pg_fetch_result\'1' => ['', 'result' => '', 'row_number' => 'int', 'field_name' => 'string|int'], 'pg_field_is_null' => ['int|false', 'result' => '', 'field_name_or_number' => 'string|int'], 'pg_field_is_null\'1' => ['int', 'result' => '', 'row' => 'int', 'field_name_or_number' => 'string|int'], 'pg_field_prtlen' => ['int|false', 'result' => '', 'field_name_or_number' => ''], 'pg_field_prtlen\'1' => ['int', 'result' => '', 'row' => 'int', 'field_name_or_number' => 'string|int'], 'pg_lo_export' => ['bool', 'connection' => 'resource', 'oid' => 'int', 'filename' => 'string'], 'pg_lo_export\'1' => ['bool', 'oid' => 'int', 'pathname' => 'string'], 'pg_lo_import' => ['int|false', 'connection' => 'resource', 'pathname' => 'string', 'oid' => ''], 'pg_lo_import\'1' => ['int', 'pathname' => 'string', 'oid' => ''], 'pg_parameter_status' => ['string|false', 'connection' => 'resource', 'param_name' => 'string'], 'pg_parameter_status\'1' => ['string|false', 'param_name' => 'string'], 'pg_prepare' => ['resource|false', 'connection' => 'resource', 'stmtname' => 'string', 'query' => 'string'], 'pg_prepare\'1' => ['resource|false', 'stmtname' => 'string', 'query' => 'string'], 'pg_put_line' => ['bool', 'connection' => 'resource', 'data' => 'string'], 'pg_put_line\'1' => ['bool', 'data' => 'string'], 'pg_query' => ['resource|false', 'connection' => 'resource', 'query' => 'string'], 'pg_query\'1' => ['resource|false', 'query' => 'string'], 'pg_query_params' => ['resource|false', 'connection' => 'resource', 'query' => 'string', 'params' => 'array'], 'pg_query_params\'1' => ['resource|false', 'query' => 'string', 'params' => 'array'], 'pg_set_client_encoding' => ['int', 'connection' => 'resource', 'encoding' => 'string'], 'pg_set_client_encoding\'1' => ['int', 'encoding' => 'string'], 'pg_set_error_verbosity' => ['int|false', 'connection' => 'resource', 'verbosity' => 'int'], 'pg_set_error_verbosity\'1' => ['int', 'verbosity' => 'int'], 'pg_tty' => ['string', 'connection=' => 'resource'], 'pg_tty\'1' => ['string'], 'pg_untrace' => ['bool', 'connection=' => 'resource'], 'pg_untrace\'1' => ['bool']]]; ['DateTime::modify' => ['static', 'modify' => 'string'], 'DateTimeImmutable::modify' => ['static', 'modify' => 'string'], 'str_decrement' => ['non-empty-string', 'string' => 'non-empty-string'], 'str_increment' => ['non-falsy-string', 'string' => 'non-empty-string'], 'gc_status' => ['array{running:bool,protected:bool,full:bool,runs:int,collected:int,threshold:int,buffer_size:int,roots:int,application_time:float,collector_time:float,destructor_time:float,free_time:float}'], 'stream_get_meta_data' => ['array{timed_out:bool,blocked:bool,eof:bool,unread_bytes:int,stream_type:string,wrapper_type:string,wrapper_data:mixed,mode:string,seekable:bool,uri:string,mediatype?:string,base64?:bool}', 'fp' => 'resource']], 'old' => []]; ['http_get_last_response_headers' => ['list|null'], 'http_clear_last_response_headers' => ['void'], 'mb_lcfirst' => ['string', 'string' => 'string', 'encoding=' => 'string'], 'mb_ucfirst' => ['string', 'string' => 'string', 'encoding=' => 'string']], 'old' => []]; > */ public function getAttributes(?string $name = null, int $flags = 0) { } } > */ public function getAttributes(?string $name = null, int $flags = 0) { } } ',args?:mixed[],object?:object}> * @throws void */ public function getTrace(); /** * @return string * @throws void */ public function getTraceAsString(); /** * @return null|Throwable * @throws void */ public function getPrevious(); /** * @return string */ public function __toString(); } class Exception implements Throwable { /** * @return string * @throws void */ final public function getMessage(): string {} /** * @return mixed * @throws void */ final public function getCode() {} /** * @return string * @throws void */ final public function getFile(): string {} /** * @return int * @throws void */ final public function getLine(): int {} /** * @return list',args?:mixed[],object?:object}> * @throws void */ final public function getTrace(): array {} /** * @return null|Throwable * @throws void */ final public function getPrevious(): ?Throwable {} /** * @return string * @throws void */ final public function getTraceAsString(): string {} } class Error implements Throwable { /** * @return string * @throws void */ final public function getMessage(): string {} /** * @return mixed * @throws void */ final public function getCode() {} /** * @return string * @throws void */ final public function getFile(): string {} /** * @return int * @throws void */ final public function getLine(): int {} /** * @return list',args?:mixed[],object?:object}> * @throws void */ final public function getTrace(): array {} /** * @return null|Throwable * @throws void */ final public function getPrevious(): ?Throwable {} /** * @return string * @throws void */ final public function getTraceAsString(): string {} } $result * @param-out array|string> $result */ function parse_str(string $string, array &$result): void {} /** * @param array $result * @param-out array|string> $result */ function mb_parse_str(string $string, array &$result): bool {} /** @param-out float $percent */ function similar_text(string $string1, string $string2, ?float &$percent = null) : int {} /** * @param mixed $output * @param mixed $result_code * * @param-out list $output * @param-out int $result_code * * @return string|false */ function exec(string $command, &$output, &$result_code) {} /** * @param mixed $result_code * @param-out int $result_code * * @return string|false */ function system(string $command, &$result_code) {} /** * @param mixed $result_code * @param-out int $result_code */ function passthru(string $command, &$result_code): ?bool {} /** * @template T * @template TArray as array * * @param TArray $array */ function shuffle(array &$array): bool { } /** * @template T * @template TArray as array * * @param TArray $array */ function sort(array &$array, int $flags = SORT_REGULAR): bool { } /** * @template T * @template TArray as array * * @param TArray $array */ function rsort(array &$array, int $flags = SORT_REGULAR): bool { } /** * @param string $string * @param-out null $string */ function sodium_memzero(string &$string): void { } /** * @param resource $stream * @param mixed $vars * @param-out string|int|float|null $vars * * @return list|int|false */ function fscanf($stream, string $format, &...$vars) {} /** * @param mixed $war * @param mixed $vars * @param-out string|int|float|null $war * @param-out string|int|float|null $vars * * @return int|array|null */ function sscanf(string $string, string $format, &$war, &...$vars) {} /** * @template TFlags as int * * @param string $pattern * @param string $subject * @param mixed $matches * @param TFlags $flags * @param-out ( * TFlags is 1 * ? array> * : (TFlags is 2 * ? list> * : (TFlags is 256|257 * ? array> * : (TFlags is 258 * ? list> * : (TFlags is 512|513 * ? array> * : (TFlags is 514 * ? list> * : (TFlags is 770 * ? list> * : (TFlags is 0 ? array> : array) * ) * ) * ) * ) * ) * ) * ) $matches * @return int|false */ function preg_match_all($pattern, $subject, &$matches = [], int $flags = 1, int $offset = 0) {} /** * @template TFlags as int-mask<0, 256, 512> * * @param string $pattern * @param string $subject * @param mixed $matches * @param TFlags $flags * @param-out ( * TFlags is 256 * ? array * : (TFlags is 512 * ? array * : (TFlags is 768 * ? array * : array * ) * ) * ) $matches * @return 1|0|false */ function preg_match($pattern, $subject, &$matches = [], int $flags = 0, int $offset = 0) {} /** * @param string|array $pattern * @param callable(array):string $callback * @param string|array $subject * @param int $count * @param-out 0|positive-int $count * @return ($subject is array ? list|null : string|null) */ function preg_replace_callback($pattern, $callback, $subject, int $limit = -1, &$count = null, int $flags = 0) {} /** * @param string|array $pattern * @param string|array $replacement * @param string|array $subject * @param int $count * @param-out 0|positive-int $count * @return ($subject is array ? list|null : string|null) */ function preg_replace($pattern, $replacement, $subject, int $limit = -1, &$count = null) {} /** * @param string|array $pattern * @param string|array $replacement * @param string|array $subject * @param int $count * @param-out 0|positive-int $count * @return ($subject is array ? list : string|null) */ function preg_filter($pattern, $replacement, $subject, int $limit = -1, &$count = null) {} /** * @param array|string $search * @param array|string $replace * @param array|string $subject * @param-out int $count * @return list|string */ function str_replace($search, $replace, $subject, ?int &$count = null) {} /** * @param array|string $search * @param array|string $replace * @param array|string $subject * @param-out int $count * @return list|string */ function str_ireplace($search, $replace, $subject, ?int &$count = null) {} /** * @template TRead of null|array * @template TWrite of null|array * @template TExcept of null|array * @param TRead $read * @param TWrite $write * @param TExcept $except * @return false|0|positive-int * @param-out (TRead is null ? null : array) $read * @param-out (TWrite is null ? null : array) $write * @param-out (TExcept is null ? null : array) $except */ function stream_select(?array &$read, ?array &$write, ?array &$except, ?int $seconds, ?int $microseconds = null) {} /** * @param resource $stream * @param-out 0|1 $would_block */ function flock($stream, int $operation, mixed &$would_block = null): bool {} /** * @param-out int $error_code * @param-out string $error_message * @return resource|false */ function fsockopen(string $hostname, int $port = -1, ?int &$error_code = null, ?string &$error_message = null, ?float $timeout = null) {} /** * @param-out string $filename * @param-out int $line */ function headers_sent(?string &$filename = null, ?int &$line = null): bool {} /** * @param-out callable-string $callable_name * @return ($value is callable ? true : false) */ function is_callable(mixed $value, bool $syntax_only = false, ?string &$callable_name = null): bool {} /** * @param float|int $num * @return ($num is float ? float : $num is int ? non-negative-int : float|non-negative-int) */ function abs($num) {} /** * @return ($categorize is true ? array> : array) */ function get_defined_constants(bool $categorize = false): array {} |numeric-string */ public $affected_rows; } class mysqli_result { /** * @var int<0,max>|numeric-string */ public $num_rows; /** * @template T of object * @param class-string $class * @param array $constructor_args * @return T|null|false */ function fetch_object(string $class = 'stdClass', array $constructor_args = []) {} } /** * @template T of object * * @param class-string $class * @param array $constructor_args * @return T|null|false */ function mysqli_fetch_object(mysqli_result $result, string $class = 'stdClass', array $constructor_args = []) {} class mysqli_stmt { /** * @var int<-1,max>|numeric-string */ public $affected_rows; /** * @var int */ public $errno; /** * @var list */ public $error_list; /** * @var string */ public $error; /** * @var 0|positive-int */ public $field_count; /** * @var int|string */ public $insert_id; /** * @var int<0,max>|numeric-string */ public $num_rows; /** * @var 0|positive-int */ public $param_count; /** * @var non-empty-string */ public $sqlstate; } * @implements ArrayAccess */ class ArrayObject implements IteratorAggregate, ArrayAccess { /** * @param array|object $input * @param int $flags * @param class-string $iterator_class */ public function __construct($input = null, $flags = 0, $iterator_class = "ArrayIterator") { } /** * @param TValue $value * @return void */ public function append($value) { } /** * @return array */ public function getArrayCopy() { } /** * @param callable(TValue, TValue): int $cmp_function * @return void */ public function uasort($cmp_function) { } /** * @param callable(TKey, TKey): int $cmp_function * @return void */ public function uksort($cmp_function) { } /** * @return ArrayIterator */ public function getIterator() { } /** * @param class-string $iterator_class * @return void */ public function setIteratorClass($iterator_class) { } } /** * @template TValue * @implements Iterator * @implements IteratorAggregate * @implements ArrayAccess */ class SplFixedArray implements Iterator, IteratorAggregate, ArrayAccess, Countable { /** * @template TInput * @param array $array * @return SplFixedArray */ public static function fromArray(array $array, bool $save_indexes = true): SplFixedArray { } /** * @return array */ public function toArray(): array { } } |null &$read * @param array|null &$write * @param array|null &$except * @param-out ($read is not null ? array : null) $read * @param-out ($write is not null ? array : null) $write * @param-out ($except is not null ? array : null) $except * @return int|false */ function socket_select(?array &$read, ?array &$write, ?array &$except, ?int $seconds, int $microseconds = 0) {} |null &$read * @param array|null &$write * @param array|null &$except * @param-out ($read is not null ? array : null) $read * @param-out ($write is not null ? array : null) $write * @param-out ($except is not null ? array : null) $except */ function socket_select(?array &$read, ?array &$write, ?array &$except, ?int $seconds, int $microseconds = 0): int|false {} * @implements \ArrayAccess */ class SplDoublyLinkedList implements \Iterator, \ArrayAccess { /** * @param int $index * @param TValue $newval * @return void */ public function add($index, $newval) {} /** * @return TValue */ public function pop () {} /** * @return TValue */ public function shift () {} /** * @param TValue $value * @return void */ public function push ($value) {} /** * @param TValue $value * @return void */ public function unshift ($value) {} /** * @return TValue */ public function top () {} /** * @return TValue */ public function bottom () {} /** * @param int $offset * @return TValue */ public function offsetGet ($offset) {} } /** * @template TValue * @extends \SplDoublyLinkedList */ class SplQueue extends \SplDoublyLinkedList { /** * @param TValue $value * @return void */ public function enqueue ($value) {} /** * @return TValue */ public function dequeue () {} } /** * @template TPriority * @template TValue * * @implements \Iterator */ class SplPriorityQueue implements \Iterator { /** * @param TPriority $priority1 * @param TPriority $priority2 * @return int */ public function compare ($priority1, $priority2) {} /** * @param TValue $value * @param TPriority $priority * @return true */ public function insert ($value, $priority) {} /** * @return TPriority|TValue|array{priority: TPriority, data: TValue} */ public function top () {} /** * @return TPriority|TValue|array{priority: TPriority, data: TValue} */ public function extract () {} /** * @return TPriority|TValue|array{priority: TPriority, data: TValue} */ public function current () {} } * @template-implements SeekableIterator * @template-implements ArrayAccess */ class SplObjectStorage implements Countable, Iterator, SeekableIterator, Serializable, ArrayAccess { /** * @param \SplObjectStorage $storage */ public function addAll(SplObjectStorage $storage): void { } /** * @param TObject $object * @param TData $data */ public function attach(object $object, $data = null): void { } /** * @param TObject $object */ public function contains(object $object): bool { } /** * @param TObject $object */ public function detach(object $object): void { } /** * @param TObject $object */ public function getHash(object $object): string { } /** * @return TData */ public function getInfo() { } /** * @param \SplObjectStorage<*, *> $storage */ public function removeAll(SplObjectStorage $storage): void { } /** * @param \SplObjectStorage<*, *> $storage */ public function removeAllExcept(SplObjectStorage $storage): void { } /** * @param TData $data */ public function setInfo($data): void { } /** * @param TObject $offset * @return TData */ public function offsetGet($offset); } */ public function getName() : string { } /** * @return T */ public function newInstance() : object { } } , g: int<0, 255>, b: int<0, 255>, a: int<0, 1>} : ($normalized is 1 ? array{r: float, g: float, b: float, a: float} : ($normalized is 2 ? array{r: int<0, 255>, g: int<0, 255>, b: int<0, 255>, a: int<0, 255>} : array{}))) */ public function getColor(int $normalized = 0): array; } > */ public function getAttributes(?string $name = null, int $flags = 0) { } } */ public function getNodeType(): string; /** * @param TNodeType $node * @return list */ public function processNode(Node $node, Scope $scope): array; } |\Countable ? true : false) */ function is_countable(mixed $value): bool { } /** * @return ($value is object ? true : false) */ function is_object(mixed $value): bool { } /** * @return ($value is scalar ? true : false) */ function is_scalar(mixed $value): bool { } /** * @return ($value is int ? true : false) */ function is_int(mixed $value): bool { } /** * @return ($value is int ? true : false) */ function is_integer(mixed $value): bool { } /** * @return ($value is int ? true : false) */ function is_long(mixed $value): bool { } /** * @phpstan-assert-if-true =resource $value * @return bool */ function is_resource(mixed $value): bool { } /** * @return ($value is array ? true : false) */ function is_array(mixed $value): bool { } /** * @return ($value is iterable ? true : false) */ function is_iterable(mixed $value): bool { } flags = $flags; } } } if (\PHP_VERSION_ID < 80100 && !class_exists('ReturnTypeWillChange', false)) { #[Attribute(Attribute::TARGET_METHOD)] final class ReturnTypeWillChange { } } if (\PHP_VERSION_ID < 80200 && !class_exists('AllowDynamicProperties', false)) { #[Attribute(Attribute::TARGET_CLASS)] final class AllowDynamicProperties { } } if (\PHP_VERSION_ID < 80200 && !class_exists('SensitiveParameter', false)) { #[Attribute(Attribute::TARGET_PARAMETER)] final class SensitiveParameter { } } */ public static function cases(): array; } } */ class ReflectionEnum extends ReflectionClass { /** * @return (T is BackedEnum ? ReflectionEnumBackedCase[] : ReflectionEnumUnitCase[]) */ public function getCases(): array {} /** * @return (T is BackedEnum ? ReflectionEnumBackedCase : ReflectionEnumUnitCase) * @throws ReflectionException */ public function getCase(string $name): ReflectionEnumUnitCase {} /** * @phpstan-assert-if-true self $this * @phpstan-assert-if-true !null $this->getBackingType() */ public function isBacked(): bool {} } */ interface IteratorAggregate extends Traversable { /** * @return Traversable */ public function getIterator(); } /** * @template-covariant TKey * @template-covariant TValue * * @extends Traversable */ interface Iterator extends Traversable { /** * @return TValue */ public function current(); /** * @return TKey */ public function key(); } /** * @template-covariant TKey * @template-covariant TValue * * @extends Iterator */ interface RecursiveIterator extends Iterator { } /** * @template-covariant TKey * @template-covariant TValue * @template TSend * @template-covariant TReturn * * @implements Iterator */ class Generator implements Iterator { /** * @return TReturn */ public function getReturn() {} /** * @param TSend $value * @return TValue */ public function send($value) {} } /** * @implements Traversable * @implements ArrayAccess * @implements Iterator * @implements RecursiveIterator */ class SimpleXMLElement implements Traversable, ArrayAccess, Iterator, RecursiveIterator { /** * @return ($filename is null ? string|false : bool) */ public function asXML(?string $filename = null) { } /** * @return ($filename is null ? string|false : bool) */ public function saveXML(?string $filename = null) { } } /** * @template-covariant TKey * @template-covariant TValue * @extends Iterator */ interface SeekableIterator extends Iterator { } /** * @template TKey of array-key * @template TValue * @implements SeekableIterator * @implements ArrayAccess */ class ArrayIterator implements SeekableIterator, ArrayAccess, Countable { /** * @param array $array * @param int $flags */ public function __construct($array = array(), $flags = 0) { } /** * @param TValue $value * @return void */ public function append($value) { } /** * @return array */ public function getArrayCopy() { } /** * @param callable(TValue, TValue): int $cmp_function * @return void */ public function uasort($cmp_function) { } /** * @param callable(TKey, TKey): int $cmp_function * @return void */ public function uksort($cmp_function) { } } /** * @template T of \RecursiveIterator|\IteratorAggregate * @mixin T */ class RecursiveIteratorIterator { /** * @param T $iterator */ public function __construct( $iterator, int $mode = RecursiveIteratorIterator::LEAVES_ONLY, int $flags = 0 ) { } } /** * @template-covariant TKey * @template-covariant TValue * * @template-extends Iterator */ interface OuterIterator extends Iterator { /** * @return Iterator */ public function getInnerIterator(); } /** * @template-covariant TKey * @template-covariant TValue * @template TIterator as Traversable * * @template-implements OuterIterator * * @mixin TIterator */ class IteratorIterator implements OuterIterator { /** * @param TIterator $iterator */ public function __construct(Traversable $iterator) {} } /** * @template-covariant TKey * @template-covariant TValue * @template TIterator as Traversable * * @template-extends IteratorIterator */ class FilterIterator extends IteratorIterator { } /** * @template-covariant TKey * @template-covariant TValue * @template TIterator as Traversable * * @extends FilterIterator */ class CallbackFilterIterator extends FilterIterator { } /** * @template-covariant TKey * @template-covariant TValue * @template TIterator as Traversable * * @extends CallbackFilterIterator * @implements RecursiveIterator */ class RecursiveCallbackFilterIterator extends CallbackFilterIterator implements RecursiveIterator { /** * @return bool */ public function hasChildren() {} /** * @return RecursiveCallbackFilterIterator */ public function getChildren() {} } /** * @template TKey of array-key * @template TValue * * @template-implements RecursiveIterator * @template-extends ArrayIterator */ class RecursiveArrayIterator extends ArrayIterator implements RecursiveIterator { /** * @return RecursiveArrayIterator */ public function getChildren() {} /** * @return bool */ public function hasChildren() {} /** * @return TValue */ public function current() {} /** * @return TKey */ public function key() {} /** * @param callable(TKey, TKey): int $cmp_function * @return void */ public function uksort($cmp_function) { } } /** * @template TKey * @template TValue * @template TIterator as Iterator * * @template-extends IteratorIterator */ class AppendIterator extends IteratorIterator { /** * @param TIterator $iterator * @return void */ public function append(Iterator $iterator) {} /** * @return ArrayIterator */ public function getArrayIterator() {} } /** * @template-covariant TKey * @template-covariant TValue * @template TIterator as Iterator * * @template-extends IteratorIterator */ class NoRewindIterator extends IteratorIterator { /** * @param TIterator $iterator */ public function __construct(Iterator $iterator) {} /** * @return TValue */ public function current() {} /** * @return TKey */ public function key() {} } /** * @template-covariant TKey * @template-covariant TValue * @template TIterator as Iterator * * @template-implements OuterIterator * @template-extends IteratorIterator */ class LimitIterator extends IteratorIterator implements OuterIterator { /** * @param TIterator $iterator */ public function __construct(Iterator $iterator, int $offset = 0, int $count = -1) {} /** * @return TValue */ public function current() {} /** * @return TKey */ public function key() {} } /** * @template-covariant TKey * @template-covariant TValue * @template TIterator as Iterator * * @template-extends IteratorIterator */ class InfiniteIterator extends IteratorIterator { /** * @param TIterator $iterator */ public function __construct(Iterator $iterator) {} /** * @return TValue */ public function current() {} /** * @return TKey */ public function key() {} } /** * @template TKey * @template TValue * @template TIterator as Iterator * * @template-implements OuterIterator * @template-implements ArrayAccess * * @template-extends IteratorIterator */ class CachingIterator extends IteratorIterator implements OuterIterator, ArrayAccess, Countable { const CALL_TOSTRING = 1 ; const CATCH_GET_CHILD = 16 ; const TOSTRING_USE_KEY = 2 ; const TOSTRING_USE_CURRENT = 4 ; const TOSTRING_USE_INNER = 8 ; const FULL_CACHE = 256 ; /** * @param TIterator $iterator * @param int-mask-of $flags */ public function __construct(Iterator $iterator, int $flags = self::CALL_TOSTRING) {} /** * @return TValue */ public function current() {} /** * @return TKey */ public function key() {} /** * @return array */ public function getCache() {} } /** * @template TKey * @template TValue * @template TIterator of Traversable * * @template-extends FilterIterator */ class RegexIterator extends FilterIterator { const MATCH = 0 ; const GET_MATCH = 1 ; const ALL_MATCHES = 2 ; const SPLIT = 3 ; const REPLACE = 4 ; const USE_KEY = 1 ; /** * @param Iterator $iterator * @param self::MATCH|self::GET_MATCH|self::ALL_MATCHES|self::SPLIT|self::REPLACE $mode */ public function __construct(Iterator $iterator, string $regex, int $mode = self::MATCH, int $flags = 0, int $preg_flags = 0) {} /** * @return TValue */ public function current() {} /** * @return TKey */ public function key() {} } /** * @template-implements Iterator */ class EmptyIterator implements Iterator { /** * @return never */ public function current() {} /** * @return never */ public function key() {} /** * @return false */ public function valid() {} } > * @implements IteratorAggregate> * @link https://php.net/manual/en/class.pdostatement.php */ class PDOStatement implements Traversable, IteratorAggregate { /** * @template T of object * @param class-string $class * @param array $ctorArgs * @return false|T */ public function fetchObject($class = \stdClass::class, array $ctorArgs = array()) {} /** * @return array{name: string, table?: string, native_type?: string, len: int, flags: array, precision: int<0, max>, pdo_type: PDO::PARAM_* }|false */ public function getColumnMeta(int $column) {} } $flags * @phpstan-assert-if-true =non-empty-string $json */ function json_validate(string $json, int $depth = 512, int $flags = 0): bool { } */ public static function create(object $referent): WeakReference {} /** @return ?T */ public function get() {} } /** * @template TKey of object * @template TValue * @implements \ArrayAccess * @implements \IteratorAggregate */ final class WeakMap implements \ArrayAccess, \Countable, \IteratorAggregate { /** * @param TKey $offset * @return TValue */ public function offsetGet($offset) {} } > */ public function getAttributes(?string $name = null, int $flags = 0) { } } $one * @param callable(TReturn, TIn): TReturn $two * @param TReturn $three * * @return TReturn */ function array_reduce( array $one, callable $two, $three = null ) {} /** * @template T of mixed * * @param array $array * @return ($array is non-empty-array ? non-empty-list : list) */ function array_values(array $array): array {} /** * @template TKey as (int|string) * @template T * @template TArray as array * * @param TArray $array * @param callable(T,T):int $callback */ function uasort(array &$array, callable $callback): bool {} /** * @template T * @template TArray as array * * @param TArray $array * @param callable(T,T):int $callback */ function usort(array &$array, callable $callback): bool {} /** * @template TKey as (int|string) * @template T * @template TArray as array * * @param TArray $array * @param callable(TKey,TKey):int $callback */ function uksort(array &$array, callable $callback): bool { } /** * @template TV of mixed * @template TK of mixed * * @param array $one * @param array $two * @param callable(TV, TV): int $three * @return array */ function array_udiff( array $one, array $two, callable $three ): array {} /** * @param array $value * @return ($value is __always-list ? true : false) */ function array_is_list(array $value): bool {} /** * @template TK of array-key * @template TV of mixed * * @param array $one * @param array $two * @param callable(TK, TK): int $three * @return array */ function array_diff_uassoc( array $one, array $two, callable $three ): array {} /** * @template TK of array-key * @template TV of mixed * * @param array $one * @param array $two * @param callable(TK, TK): int $three * @return array */ function array_diff_ukey( array $one, array $two, callable $three ): array {} /** * @template TK of array-key * @template TV of mixed * * @param array $one * @param array $two * @param callable(TK, TK): int $three * @return array */ function array_intersect_uassoc( array $one, array $two, callable $three ): array {} /** * @template TK of array-key * @template TV of mixed * * @param array $one * @param array $two * @param callable(TK, TK): int $three * * @return array */ function array_intersect_ukey( array $one, array $two, callable $three ): array {} /** * @template TK of array-key * @template TV of mixed * * @param array $one * @param array $two * @param callable(TV, TV): int $three * * @return array */ function array_udiff_assoc( array $one, array $two, callable $three ): array {} /** * @template TK of array-key * @template TV of mixed * * @param array $one * @param array $two * @param callable(TV, TV): int $three * @param callable(TK, TK): int $four * @return array */ function array_udiff_uassoc( array $one, array $two, callable $three, callable $four ): array {} /** * @template TK of array-key * @template TV of mixed * * @param array $one * @param array $two * @param callable(TV, TV): int $three * @return array */ function array_uintersect_assoc( array $one, array $two, callable $three, ): array {} /** * @template TK of array-key * @template TV of mixed * * @param array $one * @param array $two * @param callable(TV, TV): int $three * @param callable(TK, TK): int $four * @return array */ function array_uintersect_uassoc( array $one, array $two, callable $three, callable $four ): array {} /** * @template TK of array-key * @template TV of mixed * * @param array $one * @param array $two * @param callable(TV, TV): int $three * @return array */ function array_uintersect( array $one, array $two, callable $three, ): array {} * @implements \Traversable */ class DatePeriod implements \IteratorAggregate, \Traversable { /** * @return TEnd */ public function getEndDate() { } /** * @return TRecurrences */ public function getRecurrences() { } /** * @return TDate */ public function getStartDate(): DateTimeInterface { } } */ public function getElementsByTagName ($name) {} /** * @param string $namespaceURI * @param string $localName * @return DOMNodeList */ public function getElementsByTagNameNS ($namespaceURI, $localName) {} } class DOMNode { } class DOMElement extends DOMNode { /** @var DOMDocument */ public $ownerDocument; /** * @param string $name * @return DOMNodeList */ public function getElementsByTagName ($name) {} /** * @param string $namespaceURI * @param string $localName * @return DOMNodeList */ public function getElementsByTagNameNS ($namespaceURI, $localName) {} } /** * @template-covariant TNode as DOMNode * @implements Traversable * @implements IteratorAggregate */ class DOMNodeList implements Traversable, IteratorAggregate, Countable { /** * @param int $index * @return TNode|null */ public function item ($index) {} } class DOMXPath { /** * @param string $expression * @param DOMNode|null $contextNode * @param boolean $registerNodeNS * @return DOMNodeList|false */ public function query($expression, $contextNode, $registerNodeNS) {} } class DOMAttr { /** @var DOMDocument */ public $ownerDocument; } class DOMCharacterData { /** @var DOMDocument */ public $ownerDocument; } class DOMDocumentType { /** @var DOMDocument */ public $ownerDocument; } class DOMEntity { /** @var DOMDocument */ public $ownerDocument; } class DOMNotation { /** @var DOMDocument */ public $ownerDocument; } class DOMProcessingInstruction { /** @var DOMDocument */ public $ownerDocument; /** * @var string */ public $target; /** * @var string */ public $data; } /** * @property-read int $length */ class DOMNamedNodeMap { } class DOMText { /** @var string */ public $wholeText; } */ public $name; /** * @param T|class-string $argument * @throws ReflectionException */ public function __construct($argument) {} /** * @return class-string */ public function getName() : string; /** * @param mixed ...$args * * @return T */ public function newInstance(...$args) {} /** * @param array $args * * @return T */ public function newInstanceArgs(array $args) {} /** * @return T */ public function newInstanceWithoutConstructor(); /** * @return list> */ public function getAttributes(?string $name = null, int $flags = 0) { } } */ interface Collection extends IteratorAggregate, Countable, JsonSerializable { /** * @return static */ public function copy(); /** * @return array */ public function toArray(): array; } /** * @template TValue * @implements Sequence */ final class Deque implements Sequence { /** * @param iterable $values */ public function __construct(iterable $values = []) { } /** * @return Deque */ public function copy() { } /** * @template TValue2 * @param iterable $values * @return Deque */ public function merge(iterable $values): Deque { } /** * @param (callable(TValue): bool)|null $callback * @return Deque */ public function filter(?callable $callback = null): Deque { } /** * @template TNewValue * @param callable(TValue): TNewValue $callback * @return Deque */ public function map(callable $callback): Deque { } /** * @return Deque */ public function reversed(): Deque { } /** * @return Deque */ public function slice(int $offset, ?int $length = null): Deque { } } /** * @template TKey * @template TValue * @implements Collection * @implements ArrayAccess */ final class Map implements Collection, ArrayAccess { /** * @param iterable $values */ public function __construct(iterable $values = []) { } /** * @return Map */ public function copy(): Map { } /** * @param callable(TKey, TValue): TValue $callback * @return void */ public function apply(callable $callback) { } /** * @return Pair * @throws UnderflowException */ public function first(): Pair { } /** * @return Pair * @throws UnderflowException */ public function last(): Pair { } /** * @return Pair * @throws OutOfRangeException */ public function skip(int $position): Pair { } /** * @template TKey2 * @template TValue2 * @param iterable $values * @return Map */ public function merge(iterable $values): Map { } /** * @template TKey2 * @template TValue2 * @param Map $map * @return Map */ public function intersect(Map $map): Map { } /** * @template TValue2 * @param Map $map * @return Map */ public function diff(Map $map): Map { } /** * @param TKey $key */ public function hasKey($key): bool { } /** * @param TValue $value */ public function hasValue($value): bool { } /** * @param (callable(TKey, TValue): bool)|null $callback * @return Map */ public function filter(?callable $callback = null): Map { } /** * @template TDefault * @param TKey $key * @param TDefault $default * @return TValue|TDefault * @throws OutOfBoundsException */ public function get($key, $default = null) { } /** * @return Set */ public function keys(): Set { } /** * @template TNewValue * @param callable(TKey, TValue): TNewValue $callback * @return Map */ public function map(callable $callback): Map { } /** * @return Sequence> */ public function pairs(): Sequence { } /** * @param TKey $key * @param TValue $value * @return void */ public function put($key, $value) { } /** * @param iterable $values * @return void */ public function putAll(iterable $values) { } /** * @template TCarry * @param callable(TCarry, TKey, TValue): TCarry $callback * @param TCarry $initial * @return TCarry */ public function reduce(callable $callback, $initial = null) { } /** * @template TDefault * @param TKey $key * @param TDefault $default * @return TValue|TDefault * @throws \OutOfBoundsException */ public function remove($key, $default = null) { } /** * @return Map */ public function reversed(): Map { } /** * @return Map */ public function slice(int $offset, ?int $length = null): Map { } /** * @param (callable(TValue, TValue): int)|null $comparator * @return void */ public function sort(?callable $comparator = null) { } /** * @param (callable(TValue, TValue): int)|null $comparator * @return Map */ public function sorted(?callable $comparator = null): Map { } /** * @param (callable(TKey, TKey): int)|null $comparator * @return void */ public function ksort(?callable $comparator = null) { } /** * @param (callable(TKey, TKey): int)|null $comparator * @return Map */ public function ksorted(?callable $comparator = null): Map { } /** * @return array */ public function toArray(): array { } /** * @return Sequence */ public function values(): Sequence { } /** * @template TKey2 * @template TValue2 * @param Map $map * @return Map */ public function union(Map $map): Map { } /** * @template TKey2 * @template TValue2 * @param Map $map * @return Map */ public function xor(Map $map): Map { } } /** * @template-covariant TKey * @template-covariant TValue */ final class Pair implements JsonSerializable { /** * @var TKey */ public $key; /** * @var TValue */ public $value; /** * @param TKey $key * @param TValue $value */ public function __construct($key = null, $value = null) { } /** * @return Pair */ public function copy(): Pair { } } /** * @template TValue * @extends Collection * @extends ArrayAccess */ interface Sequence extends Collection, ArrayAccess { /** * @param callable(TValue): TValue $callback * @return void */ public function apply(callable $callback); /** * @param TValue ...$values */ public function contains(...$values): bool; /** * @param (callable(TValue): bool)|null $callback * @return Sequence */ public function filter(?callable $callback = null); /** * @param TValue $value * @return int|false */ public function find($value); /** * @return TValue * @throws \UnderflowException */ public function first(); /** * @return TValue * @throws \OutOfRangeException */ public function get(int $index); /** * @param TValue ...$values * @throws \OutOfRangeException * @return void */ public function insert(int $index, ...$values); /** * @param string $glue * @return string */ public function join(?string $glue = null): string; /** * @return TValue * @throws \UnderflowException */ public function last(); /** * @template TNewValue * @param callable(TValue): TNewValue $callback * @return Sequence */ public function map(callable $callback); /** * @template TValue2 * @param iterable $values * @return Sequence */ public function merge(iterable $values); /** * @return TValue * @throws \UnderflowException * @phpstan-impure */ public function pop(); /** * @param TValue ...$values * @return void */ public function push(...$values); /** * @template TCarry * @param callable(TCarry, TValue): TCarry $callback * @param TCarry $initial * @return TCarry */ public function reduce(callable $callback, $initial = null); /** * @return TValue * @throws \OutOfRangeException */ public function remove(int $index); /** * @return Sequence */ public function reversed(); /** * @param TValue $value * @throws \OutOfRangeException * @return void */ public function set(int $index, $value); /** * @return TValue * @throws \UnderflowException * @phpstan-impure */ public function shift(); /** * @return Sequence */ public function slice(int $index, ?int $length = null); /** * @param (callable(TValue, TValue): int)|null $comparator * @return void */ public function sort(?callable $comparator = null); /** * @param (callable(TValue, TValue): int)|null $comparator * @return Sequence */ public function sorted(?callable $comparator = null); /** * @param TValue ...$values * @return void */ public function unshift(...$values); } /** * @template TValue * @implements Sequence */ final class Vector implements Sequence { /** * @param iterable $values */ public function __construct(iterable $values = []) { } /** * @return Vector */ public function copy() { } /** * @return Vector */ public function reversed(): Vector { } /** * @return Vector */ public function slice(int $offset, ?int $length = null): Vector { } /** * @param (callable(TValue, TValue): int)|null $comparator * @return Vector */ public function sorted(?callable $comparator = null): Vector { } /** * @param (callable(TValue): bool)|null $callback * @return Vector */ public function filter(?callable $callback = null): Vector { } /** * @template TNewValue * @param callable(TValue): TNewValue $callback * @return Vector */ public function map(callable $callback): Vector { } /** * @template TValue2 * @param iterable $values * @return Vector */ public function merge(iterable $values): Vector { } } /** * @template TValue * @implements Collection * @implements ArrayAccess */ final class Set implements Collection, ArrayAccess { /** * @param iterable $values */ public function __construct(iterable $values = []) { } /** * @param TValue ...$values */ public function add(...$values): void { } /** * @param TValue ...$values */ public function contains(...$values): bool { } /** * @return Set */ public function copy(): Set { } /** * @template TValue2 * @param Set $set * @return Set */ public function diff(Set $set): Set { } /** * @param (callable(TValue): bool)|null $callback * @return Set */ public function filter(?callable $callback = null): Set { } /** * @return TValue * @throws \UnderflowException */ public function first() { } /** * @return TValue * @throws \OutOfRangeException */ public function get(int $index) { } /** * @template TValue2 * @param Set $set * @return Set */ public function intersect(Set $set): Set { } /** * @return TValue * @throws \UnderflowException */ public function last() { } /** * @template TNewValue * @param callable(TValue): TNewValue $callback * @return Set */ public function map(callable $callback): Set { } /** * @template TValue2 * @param iterable $values * @return Set */ public function merge(iterable $values): Set { } /** * @template TCarry * @param callable(TCarry, TValue): TCarry $callback * @param TCarry $initial * @return TCarry */ public function reduce(callable $callback, $initial = null) { } /** * @param TValue ...$values */ public function remove(...$values): void { } /** * @return Set */ public function reversed(): Set { } /** * @return Set */ public function slice(int $index, ?int $length = null): Set { } /** * @param (callable(TValue, TValue): int)|null $comparator */ public function sort(?callable $comparator = null): void { } /** * @param (callable(TValue, TValue): int)|null $comparator * @return Set */ public function sorted(?callable $comparator = null): Set { } /** * @return list */ public function toArray(): array { } /** * @template TValue2 * @param Set $set * @return Set */ public function union(Set $set): Set { } /** * @template TValue2 * @param Set $set * @return Set */ public function xor(Set $set): Set { } } /** * @template TValue * @implements Collection * @implements ArrayAccess */ final class Stack implements Collection, ArrayAccess { /** * @param iterable $values */ public function __construct(iterable $values = []) { } /** * @return Stack */ public function copy(): Stack { } /** * @return TValue * @throws UnderflowException */ public function peek() { } /** * @return TValue * @throws UnderflowException * @phpstan-impure */ public function pop() { } /** * @param TValue ...$values * @return void */ public function push(...$values): void { } /** * @return list */ public function toArray(): array { } } /** * @template TValue * @implements Collection * @implements ArrayAccess */ final class Queue implements Collection, ArrayAccess { /** * @param iterable $values */ public function __construct(iterable $values = []) { } /** * @return Queue */ public function copy(): Queue { } /** * @return TValue * @throws UnderflowException */ public function peek() { } /** * @return TValue * @throws UnderflowException * @phpstan-impure */ public function pop() { } /** * @param TValue ...$values */ public function push(...$values): void { } /** * @return list */ public function toArray(): array { } } /** * @template TValue * @implements Collection */ final class PriorityQueue implements Collection { /** * @return PriorityQueue */ public function copy(): PriorityQueue { } /** * @return TValue * @throws UnderflowException */ public function peek() { } /** * @return TValue * @throws UnderflowException * @phpstan-impure */ public function pop() { } /** * @param TValue $value */ public function push($value, int $priority): void { } /** * @return list */ public function toArray(): array { } } unregister(); $composerAutoloadFiles = $GLOBALS['__composer_autoload_files']; if (!\array_key_exists('e88992873b7765f9b5710cab95ba5dd7', $composerAutoloadFiles) || !\array_key_exists('3e76f7f02b41af8cea96018933f6b7e3', $composerAutoloadFiles) || !\array_key_exists('a4a119a56e50fbb293281d9a48007e0e', $composerAutoloadFiles) || !\array_key_exists('0e6d7bf4a5811bfa5cf40c5ccd6fae6a', $composerAutoloadFiles) || !\array_key_exists('e69f7f6ee287b969198c3c9d6777bd38', $composerAutoloadFiles) || !\array_key_exists('0d59ee240a4cd96ddbb4ff164fccea4d', $composerAutoloadFiles) || !\array_key_exists('b686b8e46447868025a15ce5d0cb2634', $composerAutoloadFiles) || !\array_key_exists('8825ede83f2f289127722d4e842cf7e8', $composerAutoloadFiles) || !\array_key_exists('23c18046f52bef3eea034657bafda50f', $composerAutoloadFiles)) { echo "Composer autoloader changed\n"; exit(1); } // empty the global variable so that unprefixed functions from user-space can be loaded $GLOBALS['__composer_autoload_files'] = [ // fix unprefixed Hoa namespace - files already loaded 'e88992873b7765f9b5710cab95ba5dd7' => \true, '3e76f7f02b41af8cea96018933f6b7e3' => \true, // vendor/symfony/polyfill-php80/bootstrap.php 'a4a119a56e50fbb293281d9a48007e0e' => \true, // vendor/symfony/polyfill-mbstring/bootstrap.php '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => \true, // vendor/symfony/polyfill-intl-normalizer/bootstrap.php 'e69f7f6ee287b969198c3c9d6777bd38' => \true, // vendor/symfony/polyfill-php73/bootstrap.php '0d59ee240a4cd96ddbb4ff164fccea4d' => \true, // vendor/symfony/polyfill-php74/bootstrap.php 'b686b8e46447868025a15ce5d0cb2634' => \true, // vendor/symfony/polyfill-intl-grapheme/bootstrap.php '8825ede83f2f289127722d4e842cf7e8' => \true, // vendor/symfony/polyfill-php81/bootstrap.php '23c18046f52bef3eea034657bafda50f' => \true, ]; $autoloaderInWorkingDirectory = $vendorDirectory . '/autoload.php'; $composerAutoloaderProjectPaths = []; /** @var array|false $autoloadFunctionsBefore */ $autoloadFunctionsBefore = \spl_autoload_functions(); if (@\is_file($autoloaderInWorkingDirectory)) { $composerAutoloaderProjectPaths[] = \dirname($autoloaderInWorkingDirectory, 2); require_once $autoloaderInWorkingDirectory; } $path = \dirname(__DIR__, 3) . '/autoload.php'; if (!\extension_loaded('phar')) { if (@\is_file($path)) { $composerAutoloaderProjectPaths[] = \dirname($path, 2); require_once $path; } } else { $pharPath = \Phar::running(\false); if ($pharPath === '') { if (@\is_file($path)) { $composerAutoloaderProjectPaths[] = \dirname($path, 2); require_once $path; } } else { $path = \dirname($pharPath, 3) . '/autoload.php'; if (@\is_file($path)) { $composerAutoloaderProjectPaths[] = \dirname($path, 2); require_once $path; } } } /** @var array|false $autoloadFunctionsAfter */ $autoloadFunctionsAfter = \spl_autoload_functions(); if ($autoloadFunctionsBefore !== \false && $autoloadFunctionsAfter !== \false) { $newAutoloadFunctions = []; foreach ($autoloadFunctionsAfter as $after) { if (\is_array($after) && \count($after) > 0) { if (\is_object($after[0]) && \get_class($after[0]) === \Composer\Autoload\ClassLoader::class) { continue; } if ($after[0] === 'PHPStan\\PharAutoloader') { continue; } } foreach ($autoloadFunctionsBefore as $before) { if ($after === $before) { continue 2; } } $newAutoloadFunctions[] = $after; } $GLOBALS['__phpstanAutoloadFunctions'] = $newAutoloadFunctions; } $devOrPharLoader->register(\true); $application = new \_PHPStan_b22655c3f\Symfony\Component\Console\Application('PHPStan - PHP Static Analysis Tool', ComposerHelper::getPhpStanVersion()); $application->setDefaultCommand('analyse'); ProgressBar::setFormatDefinition('file_download', ' [%bar%] %percent:3s%% %fileSize%'); $composerAutoloaderProjectPaths = \array_map(function (string $s) : string { return \str_replace(\DIRECTORY_SEPARATOR, '/', $s); }, $composerAutoloaderProjectPaths); $reversedComposerAutoloaderProjectPaths = \array_values(\array_unique(\array_reverse($composerAutoloaderProjectPaths))); $application->add(new AnalyseCommand($reversedComposerAutoloaderProjectPaths, $analysisStartTime)); $application->add(new WorkerCommand($reversedComposerAutoloaderProjectPaths)); $application->add(new ClearResultCacheCommand($reversedComposerAutoloaderProjectPaths)); $application->add(new FixerWorkerCommand($reversedComposerAutoloaderProjectPaths)); $application->add(new DumpParametersCommand($reversedComposerAutoloaderProjectPaths)); $application->add(new DiagnoseCommand($reversedComposerAutoloaderProjectPaths)); $application->run(); })(); The MIT License (MIT) Copyright (c) 2012 Christian Lück, Cees-Jan Kiewiet, Jan Sorgalla, Chris Boden, Igor Wiedler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. loop = $loop ?: Loop::get(); } public function connect($path) { if (\strpos($path, '://') === \false) { $path = 'unix://' . $path; } elseif (\substr($path, 0, 7) !== 'unix://') { return Promise\reject(new \InvalidArgumentException('Given URI "' . $path . '" is invalid (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22))); } $resource = @\stream_socket_client($path, $errno, $errstr, 1.0); if (!$resource) { return Promise\reject(new \RuntimeException('Unable to connect to unix domain socket "' . $path . '": ' . $errstr . SocketServer::errconst($errno), $errno)); } $connection = new Connection($resource, $this->loop); $connection->unix = \true; return Promise\resolve($connection); } } on('connection', function (ConnectionInterface $connection) { * echo 'Plaintext connection from ' . $connection->getRemoteAddress() . PHP_EOL; * $connection->write('hello there!' . PHP_EOL); * … * }); * ``` * * See also the `ServerInterface` for more details. * * @see ServerInterface * @see ConnectionInterface * @internal */ final class FdServer extends EventEmitter implements ServerInterface { private $master; private $loop; private $unix = \false; private $listening = \false; /** * Creates a socket server and starts listening on the given file descriptor * * This starts accepting new incoming connections on the given file descriptor. * See also the `connection event` documented in the `ServerInterface` * for more details. * * ```php * $socket = new React\Socket\FdServer(3); * ``` * * If the given FD is invalid or out of range, it will throw an `InvalidArgumentException`: * * ```php * // throws InvalidArgumentException * $socket = new React\Socket\FdServer(-1); * ``` * * If the given FD appears to be valid, but listening on it fails (such as * if the FD does not exist or does not refer to a socket server), it will * throw a `RuntimeException`: * * ```php * // throws RuntimeException because FD does not reference a socket server * $socket = new React\Socket\FdServer(0, $loop); * ``` * * Note that these error conditions may vary depending on your system and/or * configuration. * See the exception message and code for more details about the actual error * condition. * * @param int|string $fd FD number such as `3` or as URL in the form of `php://fd/3` * @param ?LoopInterface $loop * @throws \InvalidArgumentException if the listening address is invalid * @throws \RuntimeException if listening on this address fails (already in use etc.) */ public function __construct($fd, $loop = null) { if (\preg_match('#^php://fd/(\\d+)$#', $fd, $m)) { $fd = (int) $m[1]; } if (!\is_int($fd) || $fd < 0 || $fd >= \PHP_INT_MAX) { throw new \InvalidArgumentException('Invalid FD number given (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22)); } if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 throw new \InvalidArgumentException('_PHPStan_b22655c3f\\Argument #2 ($loop) expected null|React\\EventLoop\\LoopInterface'); } $this->loop = $loop ?: Loop::get(); $errno = 0; $errstr = ''; \set_error_handler(function ($_, $error) use(&$errno, &$errstr) { // Match errstr from PHP's warning message. // fopen(php://fd/3): Failed to open stream: Error duping file descriptor 3; possibly it doesn't exist: [9]: Bad file descriptor \preg_match('/\\[(\\d+)\\]: (.*)/', $error, $m); $errno = isset($m[1]) ? (int) $m[1] : 0; $errstr = isset($m[2]) ? $m[2] : $error; }); $this->master = \fopen('php://fd/' . $fd, 'r+'); \restore_error_handler(); if (\false === $this->master) { throw new \RuntimeException('Failed to listen on FD ' . $fd . ': ' . $errstr . SocketServer::errconst($errno), $errno); } $meta = \stream_get_meta_data($this->master); if (!isset($meta['stream_type']) || $meta['stream_type'] !== 'tcp_socket') { \fclose($this->master); $errno = \defined('SOCKET_ENOTSOCK') ? \SOCKET_ENOTSOCK : 88; $errstr = \function_exists('socket_strerror') ? \socket_strerror($errno) : 'Not a socket'; throw new \RuntimeException('Failed to listen on FD ' . $fd . ': ' . $errstr . ' (ENOTSOCK)', $errno); } // Socket should not have a peer address if this is a listening socket. // Looks like this work-around is the closest we can get because PHP doesn't expose SO_ACCEPTCONN even with ext-sockets. if (\stream_socket_get_name($this->master, \true) !== \false) { \fclose($this->master); $errno = \defined('SOCKET_EISCONN') ? \SOCKET_EISCONN : 106; $errstr = \function_exists('socket_strerror') ? \socket_strerror($errno) : 'Socket is connected'; throw new \RuntimeException('Failed to listen on FD ' . $fd . ': ' . $errstr . ' (EISCONN)', $errno); } // Assume this is a Unix domain socket (UDS) when its listening address doesn't parse as a valid URL with a port. // Looks like this work-around is the closest we can get because PHP doesn't expose SO_DOMAIN even with ext-sockets. $this->unix = \parse_url($this->getAddress(), \PHP_URL_PORT) === \false; \stream_set_blocking($this->master, \false); $this->resume(); } public function getAddress() { if (!\is_resource($this->master)) { return null; } $address = \stream_socket_get_name($this->master, \false); if ($this->unix === \true) { return 'unix://' . $address; } // check if this is an IPv6 address which includes multiple colons but no square brackets $pos = \strrpos($address, ':'); if ($pos !== \false && \strpos($address, ':') < $pos && \substr($address, 0, 1) !== '[') { $address = '[' . \substr($address, 0, $pos) . ']:' . \substr($address, $pos + 1); // @codeCoverageIgnore } return 'tcp://' . $address; } public function pause() { if (!$this->listening) { return; } $this->loop->removeReadStream($this->master); $this->listening = \false; } public function resume() { if ($this->listening || !\is_resource($this->master)) { return; } $that = $this; $this->loop->addReadStream($this->master, function ($master) use($that) { try { $newSocket = SocketServer::accept($master); } catch (\RuntimeException $e) { $that->emit('error', array($e)); return; } $that->handleConnection($newSocket); }); $this->listening = \true; } public function close() { if (!\is_resource($this->master)) { return; } $this->pause(); \fclose($this->master); $this->removeAllListeners(); } /** @internal */ public function handleConnection($socket) { $connection = new Connection($socket, $this->loop); $connection->unix = $this->unix; $this->emit('connection', array($connection)); } } connector = $connector; $this->streamEncryption = new StreamEncryption($loop ?: Loop::get(), \false); $this->context = $context; } public function connect($uri) { if (!\function_exists('stream_socket_enable_crypto')) { return Promise\reject(new \BadMethodCallException('Encryption not supported on your platform (HHVM < 3.8?)')); // @codeCoverageIgnore } if (\strpos($uri, '://') === \false) { $uri = 'tls://' . $uri; } $parts = \parse_url($uri); if (!$parts || !isset($parts['scheme']) || $parts['scheme'] !== 'tls') { return Promise\reject(new \InvalidArgumentException('Given URI "' . $uri . '" is invalid (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22))); } $context = $this->context; $encryption = $this->streamEncryption; $connected = \false; /** @var \React\Promise\PromiseInterface $promise */ $promise = $this->connector->connect(\str_replace('tls://', '', $uri))->then(function (ConnectionInterface $connection) use($context, $encryption, $uri, &$promise, &$connected) { // (unencrypted) TCP/IP connection succeeded $connected = \true; if (!$connection instanceof Connection) { $connection->close(); throw new \UnexpectedValueException('Base connector does not use internal Connection class exposing stream resource'); } // set required SSL/TLS context options foreach ($context as $name => $value) { \stream_context_set_option($connection->stream, 'ssl', $name, $value); } // try to enable encryption return $promise = $encryption->enable($connection)->then(null, function ($error) use($connection, $uri) { // establishing encryption failed => close invalid connection and return error $connection->close(); throw new \RuntimeException('Connection to ' . $uri . ' failed during TLS handshake: ' . $error->getMessage(), $error->getCode()); }); }, function (\Exception $e) use($uri) { if ($e instanceof \RuntimeException) { $message = \preg_replace('/^Connection to [^ ]+/', '', $e->getMessage()); $e = new \RuntimeException('Connection to ' . $uri . $message, $e->getCode(), $e); // avoid garbage references by replacing all closures in call stack. // what a lovely piece of code! $r = new \ReflectionProperty('Exception', 'trace'); $r->setAccessible(\true); $trace = $r->getValue($e); // Exception trace arguments are not available on some PHP 7.4 installs // @codeCoverageIgnoreStart foreach ($trace as $ti => $one) { if (isset($one['args'])) { foreach ($one['args'] as $ai => $arg) { if ($arg instanceof \Closure) { $trace[$ti]['args'][$ai] = 'Object(' . \get_class($arg) . ')'; } } } } // @codeCoverageIgnoreEnd $r->setValue($e, $trace); } throw $e; }); return new \_PHPStan_b22655c3f\React\Promise\Promise(function ($resolve, $reject) use($promise) { $promise->then($resolve, $reject); }, function ($_, $reject) use(&$promise, $uri, &$connected) { if ($connected) { $reject(new \RuntimeException('Connection to ' . $uri . ' cancelled during TLS handshake (ECONNABORTED)', \defined('SOCKET_ECONNABORTED') ? \SOCKET_ECONNABORTED : 103)); } $promise->cancel(); $promise = null; }); } } on('data', function ($chunk) { * echo $chunk; * }); * * $connection->on('end', function () { * echo 'ended'; * }); * * $connection->on('error', function (Exception $e) { * echo 'error: ' . $e->getMessage(); * }); * * $connection->on('close', function () { * echo 'closed'; * }); * * $connection->write($data); * $connection->end($data = null); * $connection->close(); * // … * ``` * * For more details, see the * [`DuplexStreamInterface`](https://github.com/reactphp/stream#duplexstreaminterface). * * @see DuplexStreamInterface * @see ServerInterface * @see ConnectorInterface */ interface ConnectionInterface extends DuplexStreamInterface { /** * Returns the full remote address (URI) where this connection has been established with * * ```php * $address = $connection->getRemoteAddress(); * echo 'Connection with ' . $address . PHP_EOL; * ``` * * If the remote address can not be determined or is unknown at this time (such as * after the connection has been closed), it MAY return a `NULL` value instead. * * Otherwise, it will return the full address (URI) as a string value, such * as `tcp://127.0.0.1:8080`, `tcp://[::1]:80`, `tls://127.0.0.1:443`, * `unix://example.sock` or `unix:///path/to/example.sock`. * Note that individual URI components are application specific and depend * on the underlying transport protocol. * * If this is a TCP/IP based connection and you only want the remote IP, you may * use something like this: * * ```php * $address = $connection->getRemoteAddress(); * $ip = trim(parse_url($address, PHP_URL_HOST), '[]'); * echo 'Connection with ' . $ip . PHP_EOL; * ``` * * @return ?string remote address (URI) or null if unknown */ public function getRemoteAddress(); /** * Returns the full local address (full URI with scheme, IP and port) where this connection has been established with * * ```php * $address = $connection->getLocalAddress(); * echo 'Connection with ' . $address . PHP_EOL; * ``` * * If the local address can not be determined or is unknown at this time (such as * after the connection has been closed), it MAY return a `NULL` value instead. * * Otherwise, it will return the full address (URI) as a string value, such * as `tcp://127.0.0.1:8080`, `tcp://[::1]:80`, `tls://127.0.0.1:443`, * `unix://example.sock` or `unix:///path/to/example.sock`. * Note that individual URI components are application specific and depend * on the underlying transport protocol. * * This method complements the [`getRemoteAddress()`](#getremoteaddress) method, * so they should not be confused. * * If your `TcpServer` instance is listening on multiple interfaces (e.g. using * the address `0.0.0.0`), you can use this method to find out which interface * actually accepted this connection (such as a public or local interface). * * If your system has multiple interfaces (e.g. a WAN and a LAN interface), * you can use this method to find out which interface was actually * used for this connection. * * @return ?string local address (URI) or null if unknown * @see self::getRemoteAddress() */ public function getLocalAddress(); } array(), 'tls' => array(), 'unix' => array()); $scheme = 'tcp'; $pos = \strpos($uri, '://'); if ($pos !== \false) { $scheme = \substr($uri, 0, $pos); } if ($scheme === 'unix') { $server = new UnixServer($uri, $loop, $context['unix']); } elseif ($scheme === 'php') { $server = new FdServer($uri, $loop); } else { if (\preg_match('#^(?:\\w+://)?\\d+$#', $uri)) { throw new \InvalidArgumentException('Invalid URI given (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22)); } $server = new TcpServer(\str_replace('tls://', '', $uri), $loop, $context['tcp']); if ($scheme === 'tls') { $server = new SecureServer($server, $loop, $context['tls']); } } $this->server = $server; $that = $this; $server->on('connection', function (ConnectionInterface $conn) use($that) { $that->emit('connection', array($conn)); }); $server->on('error', function (\Exception $error) use($that) { $that->emit('error', array($error)); }); } public function getAddress() { return $this->server->getAddress(); } public function pause() { $this->server->pause(); } public function resume() { $this->server->resume(); } public function close() { $this->server->close(); } /** * [internal] Internal helper method to accept new connection from given server socket * * @param resource $socket server socket to accept connection from * @return resource new client socket if any * @throws \RuntimeException if accepting fails * @internal */ public static function accept($socket) { $errno = 0; $errstr = ''; \set_error_handler(function ($_, $error) use(&$errno, &$errstr) { // Match errstr from PHP's warning message. // stream_socket_accept(): accept failed: Connection timed out $errstr = \preg_replace('#.*: #', '', $error); $errno = SocketServer::errno($errstr); }); $newSocket = \stream_socket_accept($socket, 0); \restore_error_handler(); if (\false === $newSocket) { throw new \RuntimeException('Unable to accept new connection: ' . $errstr . self::errconst($errno), $errno); } return $newSocket; } /** * [Internal] Returns errno value for given errstr * * The errno and errstr values describes the type of error that has been * encountered. This method tries to look up the given errstr and find a * matching errno value which can be useful to provide more context to error * messages. It goes through the list of known errno constants when either * `ext-sockets`, `ext-posix` or `ext-pcntl` is available to find an errno * matching the given errstr. * * @param string $errstr * @return int errno value (e.g. value of `SOCKET_ECONNREFUSED`) or 0 if not found * @internal * @copyright Copyright (c) 2023 Christian Lück, taken from https://github.com/clue/errno with permission * @codeCoverageIgnore */ public static function errno($errstr) { // PHP defines the required `strerror()` function through either `ext-sockets`, `ext-posix` or `ext-pcntl` $strerror = \function_exists('socket_strerror') ? 'socket_strerror' : (\function_exists('posix_strerror') ? 'posix_strerror' : (\function_exists('pcntl_strerror') ? 'pcntl_strerror' : null)); if ($strerror !== null) { \assert(\is_string($strerror) && \is_callable($strerror)); // PHP defines most useful errno constants like `ECONNREFUSED` through constants in `ext-sockets` like `SOCKET_ECONNREFUSED` // PHP also defines a hand full of errno constants like `EMFILE` through constants in `ext-pcntl` like `PCNTL_EMFILE` // go through list of all defined constants like `SOCKET_E*` and `PCNTL_E*` and see if they match the given `$errstr` foreach (\get_defined_constants(\false) as $name => $value) { if (\is_int($value) && (\strpos($name, 'SOCKET_E') === 0 || \strpos($name, 'PCNTL_E') === 0) && $strerror($value) === $errstr) { return $value; } } // if we reach this, no matching errno constant could be found (unlikely when `ext-sockets` is available) // go through list of all possible errno values from 1 to `MAX_ERRNO` and see if they match the given `$errstr` for ($errno = 1, $max = \defined('_PHPStan_b22655c3f\\MAX_ERRNO') ? \_PHPStan_b22655c3f\MAX_ERRNO : 4095; $errno <= $max; ++$errno) { if ($strerror($errno) === $errstr) { return $errno; } } } // if we reach this, no matching errno value could be found (unlikely when either `ext-sockets`, `ext-posix` or `ext-pcntl` is available) return 0; } /** * [Internal] Returns errno constant name for given errno value * * The errno value describes the type of error that has been encountered. * This method tries to look up the given errno value and find a matching * errno constant name which can be useful to provide more context and more * descriptive error messages. It goes through the list of known errno * constants when either `ext-sockets` or `ext-pcntl` is available to find * the matching errno constant name. * * Because this method is used to append more context to error messages, the * constant name will be prefixed with a space and put between parenthesis * when found. * * @param int $errno * @return string e.g. ` (ECONNREFUSED)` or empty string if no matching const for the given errno could be found * @internal * @copyright Copyright (c) 2023 Christian Lück, taken from https://github.com/clue/errno with permission * @codeCoverageIgnore */ public static function errconst($errno) { // PHP defines most useful errno constants like `ECONNREFUSED` through constants in `ext-sockets` like `SOCKET_ECONNREFUSED` // PHP also defines a hand full of errno constants like `EMFILE` through constants in `ext-pcntl` like `PCNTL_EMFILE` // go through list of all defined constants like `SOCKET_E*` and `PCNTL_E*` and see if they match the given `$errno` foreach (\get_defined_constants(\false) as $name => $value) { if ($value === $errno && (\strpos($name, 'SOCKET_E') === 0 || \strpos($name, 'PCNTL_E') === 0)) { return ' (' . \substr($name, \strpos($name, '_') + 1) . ')'; } } // if we reach this, no matching errno constant could be found (unlikely when `ext-sockets` is available) return ''; } } connector = $connector; $this->timeout = $timeout; $this->loop = $loop ?: Loop::get(); } public function connect($uri) { $promise = $this->connector->connect($uri); $loop = $this->loop; $time = $this->timeout; return new Promise(function ($resolve, $reject) use($loop, $time, $promise, $uri) { $timer = null; $promise = $promise->then(function ($v) use(&$timer, $loop, $resolve) { if ($timer) { $loop->cancelTimer($timer); } $timer = \false; $resolve($v); }, function ($v) use(&$timer, $loop, $reject) { if ($timer) { $loop->cancelTimer($timer); } $timer = \false; $reject($v); }); // promise already resolved => no need to start timer if ($timer === \false) { return; } // start timeout timer which will cancel the pending promise $timer = $loop->addTimer($time, function () use($time, &$promise, $reject, $uri) { $reject(new \RuntimeException('Connection to ' . $uri . ' timed out after ' . $time . ' seconds (ETIMEDOUT)', \defined('SOCKET_ETIMEDOUT') ? \SOCKET_ETIMEDOUT : 110)); // Cancel pending connection to clean up any underlying resources and references. // Avoid garbage references in call stack by passing pending promise by reference. \assert(\method_exists($promise, 'cancel')); $promise->cancel(); $promise = null; }); }, function () use(&$promise) { // Cancelling this promise will cancel the pending connection, thus triggering the rejection logic above. // Avoid garbage references in call stack by passing pending promise by reference. \assert(\method_exists($promise, 'cancel')); $promise->cancel(); $promise = null; }); } } \false, Message::TYPE_AAAA => \false); public $resolverPromises = array(); public $connectionPromises = array(); public $connectQueue = array(); public $nextAttemptTimer; public $parts; public $ipsCount = 0; public $failureCount = 0; public $resolve; public $reject; public $lastErrorFamily; public $lastError6; public $lastError4; public function __construct(LoopInterface $loop, ConnectorInterface $connector, ResolverInterface $resolver, $uri, $host, $parts) { $this->loop = $loop; $this->connector = $connector; $this->resolver = $resolver; $this->uri = $uri; $this->host = $host; $this->parts = $parts; } public function connect() { $that = $this; return new Promise\Promise(function ($resolve, $reject) use($that) { $lookupResolve = function ($type) use($that, $resolve, $reject) { return function (array $ips) use($that, $type, $resolve, $reject) { unset($that->resolverPromises[$type]); $that->resolved[$type] = \true; $that->mixIpsIntoConnectQueue($ips); // start next connection attempt if not already awaiting next if ($that->nextAttemptTimer === null && $that->connectQueue) { $that->check($resolve, $reject); } }; }; $that->resolverPromises[Message::TYPE_AAAA] = $that->resolve(Message::TYPE_AAAA, $reject)->then($lookupResolve(Message::TYPE_AAAA)); $that->resolverPromises[Message::TYPE_A] = $that->resolve(Message::TYPE_A, $reject)->then(function (array $ips) use($that) { // happy path: IPv6 has resolved already (or could not resolve), continue with IPv4 addresses if ($that->resolved[Message::TYPE_AAAA] === \true || !$ips) { return $ips; } // Otherwise delay processing IPv4 lookup until short timer passes or IPv6 resolves in the meantime $deferred = new Promise\Deferred(function () use(&$ips) { // discard all IPv4 addresses if cancelled $ips = array(); }); $timer = $that->loop->addTimer($that::RESOLUTION_DELAY, function () use($deferred, $ips) { $deferred->resolve($ips); }); $that->resolverPromises[Message::TYPE_AAAA]->then(function () use($that, $timer, $deferred, &$ips) { $that->loop->cancelTimer($timer); $deferred->resolve($ips); }); return $deferred->promise(); })->then($lookupResolve(Message::TYPE_A)); }, function ($_, $reject) use($that) { $reject(new \RuntimeException('Connection to ' . $that->uri . ' cancelled' . (!$that->connectionPromises ? ' during DNS lookup' : '') . ' (ECONNABORTED)', \defined('SOCKET_ECONNABORTED') ? \SOCKET_ECONNABORTED : 103)); $_ = $reject = null; $that->cleanUp(); }); } /** * @internal * @param int $type DNS query type * @param callable $reject * @return \React\Promise\PromiseInterface Returns a promise that * always resolves with a list of IP addresses on success or an empty * list on error. */ public function resolve($type, $reject) { $that = $this; return $that->resolver->resolveAll($that->host, $type)->then(null, function (\Exception $e) use($type, $reject, $that) { unset($that->resolverPromises[$type]); $that->resolved[$type] = \true; if ($type === Message::TYPE_A) { $that->lastError4 = $e->getMessage(); $that->lastErrorFamily = 4; } else { $that->lastError6 = $e->getMessage(); $that->lastErrorFamily = 6; } // cancel next attempt timer when there are no more IPs to connect to anymore if ($that->nextAttemptTimer !== null && !$that->connectQueue) { $that->loop->cancelTimer($that->nextAttemptTimer); $that->nextAttemptTimer = null; } if ($that->hasBeenResolved() && $that->ipsCount === 0) { $reject(new \RuntimeException($that->error(), 0, $e)); } // Exception already handled above, so don't throw an unhandled rejection here return array(); }); } /** * @internal */ public function check($resolve, $reject) { $ip = \array_shift($this->connectQueue); // start connection attempt and remember array position to later unset again $this->connectionPromises[] = $this->attemptConnection($ip); \end($this->connectionPromises); $index = \key($this->connectionPromises); $that = $this; $that->connectionPromises[$index]->then(function ($connection) use($that, $index, $resolve) { unset($that->connectionPromises[$index]); $that->cleanUp(); $resolve($connection); }, function (\Exception $e) use($that, $index, $ip, $resolve, $reject) { unset($that->connectionPromises[$index]); $that->failureCount++; $message = \preg_replace('/^(Connection to [^ ]+)[&?]hostname=[^ &]+/', '$1', $e->getMessage()); if (\strpos($ip, ':') === \false) { $that->lastError4 = $message; $that->lastErrorFamily = 4; } else { $that->lastError6 = $message; $that->lastErrorFamily = 6; } // start next connection attempt immediately on error if ($that->connectQueue) { if ($that->nextAttemptTimer !== null) { $that->loop->cancelTimer($that->nextAttemptTimer); $that->nextAttemptTimer = null; } $that->check($resolve, $reject); } if ($that->hasBeenResolved() === \false) { return; } if ($that->ipsCount === $that->failureCount) { $that->cleanUp(); $reject(new \RuntimeException($that->error(), $e->getCode(), $e)); } }); // Allow next connection attempt in 100ms: https://tools.ietf.org/html/rfc8305#section-5 // Only start timer when more IPs are queued or when DNS query is still pending (might add more IPs) if ($this->nextAttemptTimer === null && (\count($this->connectQueue) > 0 || $this->resolved[Message::TYPE_A] === \false || $this->resolved[Message::TYPE_AAAA] === \false)) { $this->nextAttemptTimer = $this->loop->addTimer(self::CONNECTION_ATTEMPT_DELAY, function () use($that, $resolve, $reject) { $that->nextAttemptTimer = null; if ($that->connectQueue) { $that->check($resolve, $reject); } }); } } /** * @internal */ public function attemptConnection($ip) { $uri = Connector::uri($this->parts, $this->host, $ip); return $this->connector->connect($uri); } /** * @internal */ public function cleanUp() { // clear list of outstanding IPs to avoid creating new connections $this->connectQueue = array(); // cancel pending connection attempts foreach ($this->connectionPromises as $connectionPromise) { if ($connectionPromise instanceof PromiseInterface && \method_exists($connectionPromise, 'cancel')) { $connectionPromise->cancel(); } } // cancel pending DNS resolution (cancel IPv4 first in case it is awaiting IPv6 resolution delay) foreach (\array_reverse($this->resolverPromises) as $resolverPromise) { if ($resolverPromise instanceof PromiseInterface && \method_exists($resolverPromise, 'cancel')) { $resolverPromise->cancel(); } } if ($this->nextAttemptTimer instanceof TimerInterface) { $this->loop->cancelTimer($this->nextAttemptTimer); $this->nextAttemptTimer = null; } } /** * @internal */ public function hasBeenResolved() { foreach ($this->resolved as $typeHasBeenResolved) { if ($typeHasBeenResolved === \false) { return \false; } } return \true; } /** * Mixes an array of IP addresses into the connect queue in such a way they alternate when attempting to connect. * The goal behind it is first attempt to connect to IPv6, then to IPv4, then to IPv6 again until one of those * attempts succeeds. * * @link https://tools.ietf.org/html/rfc8305#section-4 * * @internal */ public function mixIpsIntoConnectQueue(array $ips) { \shuffle($ips); $this->ipsCount += \count($ips); $connectQueueStash = $this->connectQueue; $this->connectQueue = array(); while (\count($connectQueueStash) > 0 || \count($ips) > 0) { if (\count($ips) > 0) { $this->connectQueue[] = \array_shift($ips); } if (\count($connectQueueStash) > 0) { $this->connectQueue[] = \array_shift($connectQueueStash); } } } /** * @internal * @return string */ public function error() { if ($this->lastError4 === $this->lastError6) { $message = $this->lastError6; } elseif ($this->lastErrorFamily === 6) { $message = 'Last error for IPv6: ' . $this->lastError6 . '. Previous error for IPv4: ' . $this->lastError4; } else { $message = 'Last error for IPv4: ' . $this->lastError4 . '. Previous error for IPv6: ' . $this->lastError6; } if ($this->hasBeenResolved() && $this->ipsCount === 0) { if ($this->lastError6 === $this->lastError4) { $message = ' during DNS lookup: ' . $this->lastError6; } else { $message = ' during DNS lookup. ' . $message; } } else { $message = ': ' . $message; } return 'Connection to ' . $this->uri . ' failed' . $message; } } connect('localhost:80'); * ``` */ class FixedUriConnector implements ConnectorInterface { private $uri; private $connector; /** * @param string $uri * @param ConnectorInterface $connector */ public function __construct($uri, ConnectorInterface $connector) { $this->uri = $uri; $this->connector = $connector; } public function connect($_) { return $this->connector->connect($this->uri); } } on('connection', function (React\Socket\ConnectionInterface $connection) { * $connection->write('hello there!' . PHP_EOL); * … * }); * ``` * * See also the `ServerInterface` for more details. * * @see ServerInterface * @see ConnectionInterface */ class LimitingServer extends EventEmitter implements ServerInterface { private $connections = array(); private $server; private $limit; private $pauseOnLimit = \false; private $autoPaused = \false; private $manuPaused = \false; /** * Instantiates a new LimitingServer. * * You have to pass a maximum number of open connections to ensure * the server will automatically reject (close) connections once this limit * is exceeded. In this case, it will emit an `error` event to inform about * this and no `connection` event will be emitted. * * ```php * $server = new React\Socket\LimitingServer($server, 100); * $server->on('connection', function (React\Socket\ConnectionInterface $connection) { * $connection->write('hello there!' . PHP_EOL); * … * }); * ``` * * You MAY pass a `null` limit in order to put no limit on the number of * open connections and keep accepting new connection until you run out of * operating system resources (such as open file handles). This may be * useful if you do not want to take care of applying a limit but still want * to use the `getConnections()` method. * * You can optionally configure the server to pause accepting new * connections once the connection limit is reached. In this case, it will * pause the underlying server and no longer process any new connections at * all, thus also no longer closing any excessive connections. * The underlying operating system is responsible for keeping a backlog of * pending connections until its limit is reached, at which point it will * start rejecting further connections. * Once the server is below the connection limit, it will continue consuming * connections from the backlog and will process any outstanding data on * each connection. * This mode may be useful for some protocols that are designed to wait for * a response message (such as HTTP), but may be less useful for other * protocols that demand immediate responses (such as a "welcome" message in * an interactive chat). * * ```php * $server = new React\Socket\LimitingServer($server, 100, true); * $server->on('connection', function (React\Socket\ConnectionInterface $connection) { * $connection->write('hello there!' . PHP_EOL); * … * }); * ``` * * @param ServerInterface $server * @param int|null $connectionLimit * @param bool $pauseOnLimit */ public function __construct(ServerInterface $server, $connectionLimit, $pauseOnLimit = \false) { $this->server = $server; $this->limit = $connectionLimit; if ($connectionLimit !== null) { $this->pauseOnLimit = $pauseOnLimit; } $this->server->on('connection', array($this, 'handleConnection')); $this->server->on('error', array($this, 'handleError')); } /** * Returns an array with all currently active connections * * ```php * foreach ($server->getConnection() as $connection) { * $connection->write('Hi!'); * } * ``` * * @return ConnectionInterface[] */ public function getConnections() { return $this->connections; } public function getAddress() { return $this->server->getAddress(); } public function pause() { if (!$this->manuPaused) { $this->manuPaused = \true; if (!$this->autoPaused) { $this->server->pause(); } } } public function resume() { if ($this->manuPaused) { $this->manuPaused = \false; if (!$this->autoPaused) { $this->server->resume(); } } } public function close() { $this->server->close(); } /** @internal */ public function handleConnection(ConnectionInterface $connection) { // close connection if limit exceeded if ($this->limit !== null && \count($this->connections) >= $this->limit) { $this->handleError(new \OverflowException('Connection closed because server reached connection limit')); $connection->close(); return; } $this->connections[] = $connection; $that = $this; $connection->on('close', function () use($that, $connection) { $that->handleDisconnection($connection); }); // pause accepting new connections if limit exceeded if ($this->pauseOnLimit && !$this->autoPaused && \count($this->connections) >= $this->limit) { $this->autoPaused = \true; if (!$this->manuPaused) { $this->server->pause(); } } $this->emit('connection', array($connection)); } /** @internal */ public function handleDisconnection(ConnectionInterface $connection) { unset($this->connections[\array_search($connection, $this->connections)]); // continue accepting new connection if below limit if ($this->autoPaused && \count($this->connections) < $this->limit) { $this->autoPaused = \false; if (!$this->manuPaused) { $this->server->resume(); } } } /** @internal */ public function handleError(\Exception $error) { $this->emit('error', array($error)); } } on('connection', function (React\Socket\ConnectionInterface $connection) { * echo 'Secure connection from' . $connection->getRemoteAddress() . PHP_EOL; * * $connection->write('hello there!' . PHP_EOL); * … * }); * ``` * * Whenever a client fails to perform a successful TLS handshake, it will emit an * `error` event and then close the underlying TCP/IP connection: * * ```php * $server->on('error', function (Exception $e) { * echo 'Error' . $e->getMessage() . PHP_EOL; * }); * ``` * * See also the `ServerInterface` for more details. * * Note that the `SecureServer` class is a concrete implementation for TLS sockets. * If you want to typehint in your higher-level protocol implementation, you SHOULD * use the generic `ServerInterface` instead. * * @see ServerInterface * @see ConnectionInterface */ final class SecureServer extends EventEmitter implements ServerInterface { private $tcp; private $encryption; private $context; /** * Creates a secure TLS server and starts waiting for incoming connections * * It does so by wrapping a `TcpServer` instance which waits for plaintext * TCP/IP connections and then performs a TLS handshake for each connection. * It thus requires valid [TLS context options], * which in its most basic form may look something like this if you're using a * PEM encoded certificate file: * * ```php * $server = new React\Socket\TcpServer(8000); * $server = new React\Socket\SecureServer($server, null, array( * 'local_cert' => 'server.pem' * )); * ``` * * Note that the certificate file will not be loaded on instantiation but when an * incoming connection initializes its TLS context. * This implies that any invalid certificate file paths or contents will only cause * an `error` event at a later time. * * If your private key is encrypted with a passphrase, you have to specify it * like this: * * ```php * $server = new React\Socket\TcpServer(8000); * $server = new React\Socket\SecureServer($server, null, array( * 'local_cert' => 'server.pem', * 'passphrase' => 'secret' * )); * ``` * * Note that available [TLS context options], * their defaults and effects of changing these may vary depending on your system * and/or PHP version. * Passing unknown context options has no effect. * * This class takes an optional `LoopInterface|null $loop` parameter that can be used to * pass the event loop instance to use for this object. You can use a `null` value * here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). * This value SHOULD NOT be given unless you're sure you want to explicitly use a * given event loop instance. * * Advanced usage: Despite allowing any `ServerInterface` as first parameter, * you SHOULD pass a `TcpServer` instance as first parameter, unless you * know what you're doing. * Internally, the `SecureServer` has to set the required TLS context options on * the underlying stream resources. * These resources are not exposed through any of the interfaces defined in this * package, but only through the internal `Connection` class. * The `TcpServer` class is guaranteed to emit connections that implement * the `ConnectionInterface` and uses the internal `Connection` class in order to * expose these underlying resources. * If you use a custom `ServerInterface` and its `connection` event does not * meet this requirement, the `SecureServer` will emit an `error` event and * then close the underlying connection. * * @param ServerInterface|TcpServer $tcp * @param ?LoopInterface $loop * @param array $context * @throws BadMethodCallException for legacy HHVM < 3.8 due to lack of support * @see TcpServer * @link https://www.php.net/manual/en/context.ssl.php for TLS context options */ public function __construct(ServerInterface $tcp, $loop = null, array $context = array()) { if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 throw new \InvalidArgumentException('_PHPStan_b22655c3f\\Argument #2 ($loop) expected null|React\\EventLoop\\LoopInterface'); } if (!\function_exists('stream_socket_enable_crypto')) { throw new \BadMethodCallException('Encryption not supported on your platform (HHVM < 3.8?)'); // @codeCoverageIgnore } // default to empty passphrase to suppress blocking passphrase prompt $context += array('passphrase' => ''); $this->tcp = $tcp; $this->encryption = new StreamEncryption($loop ?: Loop::get()); $this->context = $context; $that = $this; $this->tcp->on('connection', function ($connection) use($that) { $that->handleConnection($connection); }); $this->tcp->on('error', function ($error) use($that) { $that->emit('error', array($error)); }); } public function getAddress() { $address = $this->tcp->getAddress(); if ($address === null) { return null; } return \str_replace('tcp://', 'tls://', $address); } public function pause() { $this->tcp->pause(); } public function resume() { $this->tcp->resume(); } public function close() { return $this->tcp->close(); } /** @internal */ public function handleConnection(ConnectionInterface $connection) { if (!$connection instanceof Connection) { $this->emit('error', array(new \UnexpectedValueException('Base server does not use internal Connection class exposing stream resource'))); $connection->close(); return; } foreach ($this->context as $name => $value) { \stream_context_set_option($connection->stream, 'ssl', $name, $value); } // get remote address before starting TLS handshake in case connection closes during handshake $remote = $connection->getRemoteAddress(); $that = $this; $this->encryption->enable($connection)->then(function ($conn) use($that) { $that->emit('connection', array($conn)); }, function ($error) use($that, $connection, $remote) { $error = new \RuntimeException('Connection from ' . $remote . ' failed during TLS handshake: ' . $error->getMessage(), $error->getCode()); $that->emit('error', array($error)); $connection->close(); }); } } loop = $loop ?: Loop::get(); $this->connector = $connector; $this->resolver = $resolver; } public function connect($uri) { $original = $uri; if (\strpos($uri, '://') === \false) { $uri = 'tcp://' . $uri; $parts = \parse_url($uri); if (isset($parts['scheme'])) { unset($parts['scheme']); } } else { $parts = \parse_url($uri); } if (!$parts || !isset($parts['host'])) { return Promise\reject(new \InvalidArgumentException('Given URI "' . $original . '" is invalid (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22))); } $host = \trim($parts['host'], '[]'); // skip DNS lookup / URI manipulation if this URI already contains an IP if (@\inet_pton($host) !== \false) { return $this->connector->connect($original); } $builder = new HappyEyeBallsConnectionBuilder($this->loop, $this->connector, $this->resolver, $uri, $host, $parts); return $builder->connect(); } } connector = $connector; $this->resolver = $resolver; } public function connect($uri) { $original = $uri; if (\strpos($uri, '://') === \false) { $uri = 'tcp://' . $uri; $parts = \parse_url($uri); if (isset($parts['scheme'])) { unset($parts['scheme']); } } else { $parts = \parse_url($uri); } if (!$parts || !isset($parts['host'])) { return Promise\reject(new \InvalidArgumentException('Given URI "' . $original . '" is invalid (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22))); } $host = \trim($parts['host'], '[]'); $connector = $this->connector; // skip DNS lookup / URI manipulation if this URI already contains an IP if (@\inet_pton($host) !== \false) { return $connector->connect($original); } $promise = $this->resolver->resolve($host); $resolved = null; return new Promise\Promise(function ($resolve, $reject) use(&$promise, &$resolved, $uri, $connector, $host, $parts) { // resolve/reject with result of DNS lookup $promise->then(function ($ip) use(&$promise, &$resolved, $uri, $connector, $host, $parts) { $resolved = $ip; return $promise = $connector->connect(Connector::uri($parts, $host, $ip))->then(null, function (\Exception $e) use($uri) { if ($e instanceof \RuntimeException) { $message = \preg_replace('/^(Connection to [^ ]+)[&?]hostname=[^ &]+/', '$1', $e->getMessage()); $e = new \RuntimeException('Connection to ' . $uri . ' failed: ' . $message, $e->getCode(), $e); // avoid garbage references by replacing all closures in call stack. // what a lovely piece of code! $r = new \ReflectionProperty('Exception', 'trace'); $r->setAccessible(\true); $trace = $r->getValue($e); // Exception trace arguments are not available on some PHP 7.4 installs // @codeCoverageIgnoreStart foreach ($trace as $ti => $one) { if (isset($one['args'])) { foreach ($one['args'] as $ai => $arg) { if ($arg instanceof \Closure) { $trace[$ti]['args'][$ai] = 'Object(' . \get_class($arg) . ')'; } } } } // @codeCoverageIgnoreEnd $r->setValue($e, $trace); } throw $e; }); }, function ($e) use($uri, $reject) { $reject(new \RuntimeException('Connection to ' . $uri . ' failed during DNS lookup: ' . $e->getMessage(), 0, $e)); })->then($resolve, $reject); }, function ($_, $reject) use(&$promise, &$resolved, $uri) { // cancellation should reject connection attempt // reject DNS resolution with custom reason, otherwise rely on connection cancellation below if ($resolved === null) { $reject(new \RuntimeException('Connection to ' . $uri . ' cancelled during DNS lookup (ECONNABORTED)', \defined('SOCKET_ECONNABORTED') ? \SOCKET_ECONNABORTED : 103)); } // (try to) cancel pending DNS lookup / connection attempt if ($promise instanceof PromiseInterface && \method_exists($promise, 'cancel')) { // overwrite callback arguments for PHP7+ only, so they do not show // up in the Exception trace and do not cause a possible cyclic reference. $_ = $reject = null; $promise->cancel(); $promise = null; } }); } } \true, 'tls' => \true, 'unix' => \true, 'dns' => \true, 'timeout' => \true, 'happy_eyeballs' => \true); if ($context['timeout'] === \true) { $context['timeout'] = (float) \ini_get("default_socket_timeout"); } if ($context['tcp'] instanceof ConnectorInterface) { $tcp = $context['tcp']; } else { $tcp = new TcpConnector($loop, \is_array($context['tcp']) ? $context['tcp'] : array()); } if ($context['dns'] !== \false) { if ($context['dns'] instanceof ResolverInterface) { $resolver = $context['dns']; } else { if ($context['dns'] !== \true) { $config = $context['dns']; } else { // try to load nameservers from system config or default to Google's public DNS $config = DnsConfig::loadSystemConfigBlocking(); if (!$config->nameservers) { $config->nameservers[] = '8.8.8.8'; // @codeCoverageIgnore } } $factory = new DnsFactory(); $resolver = $factory->createCached($config, $loop); } if ($context['happy_eyeballs'] === \true) { $tcp = new HappyEyeBallsConnector($loop, $tcp, $resolver); } else { $tcp = new DnsConnector($tcp, $resolver); } } if ($context['tcp'] !== \false) { $context['tcp'] = $tcp; if ($context['timeout'] !== \false) { $context['tcp'] = new TimeoutConnector($context['tcp'], $context['timeout'], $loop); } $this->connectors['tcp'] = $context['tcp']; } if ($context['tls'] !== \false) { if (!$context['tls'] instanceof ConnectorInterface) { $context['tls'] = new SecureConnector($tcp, $loop, \is_array($context['tls']) ? $context['tls'] : array()); } if ($context['timeout'] !== \false) { $context['tls'] = new TimeoutConnector($context['tls'], $context['timeout'], $loop); } $this->connectors['tls'] = $context['tls']; } if ($context['unix'] !== \false) { if (!$context['unix'] instanceof ConnectorInterface) { $context['unix'] = new UnixConnector($loop); } $this->connectors['unix'] = $context['unix']; } } public function connect($uri) { $scheme = 'tcp'; if (\strpos($uri, '://') !== \false) { $scheme = (string) \substr($uri, 0, \strpos($uri, '://')); } if (!isset($this->connectors[$scheme])) { return \_PHPStan_b22655c3f\React\Promise\reject(new \RuntimeException('No connector available for URI scheme "' . $scheme . '" (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22))); } return $this->connectors[$scheme]->connect($uri); } /** * [internal] Builds on URI from the given URI parts and ip address with original hostname as query * * @param array $parts * @param string $host * @param string $ip * @return string * @internal */ public static function uri(array $parts, $host, $ip) { $uri = ''; // prepend original scheme if known if (isset($parts['scheme'])) { $uri .= $parts['scheme'] . '://'; } if (\strpos($ip, ':') !== \false) { // enclose IPv6 addresses in square brackets before appending port $uri .= '[' . $ip . ']'; } else { $uri .= $ip; } // append original port if known if (isset($parts['port'])) { $uri .= ':' . $parts['port']; } // append orignal path if known if (isset($parts['path'])) { $uri .= $parts['path']; } // append original query if known if (isset($parts['query'])) { $uri .= '?' . $parts['query']; } // append original hostname as query if resolved via DNS and if // destination URI does not contain "hostname" query param already $args = array(); \parse_str(isset($parts['query']) ? $parts['query'] : '', $args); if ($host !== $ip && !isset($args['hostname'])) { $uri .= (isset($parts['query']) ? '&' : '?') . 'hostname=' . \rawurlencode($host); } // append original fragment if known if (isset($parts['fragment'])) { $uri .= '#' . $parts['fragment']; } return $uri; } } on('connection', function (React\Socket\ConnectionInterface $connection) { * echo 'Plaintext connection from ' . $connection->getRemoteAddress() . PHP_EOL; * $connection->write('hello there!' . PHP_EOL); * … * }); * ``` * * See also the `ServerInterface` for more details. * * @see ServerInterface * @see ConnectionInterface */ final class TcpServer extends EventEmitter implements ServerInterface { private $master; private $loop; private $listening = \false; /** * Creates a plaintext TCP/IP socket server and starts listening on the given address * * This starts accepting new incoming connections on the given address. * See also the `connection event` documented in the `ServerInterface` * for more details. * * ```php * $server = new React\Socket\TcpServer(8080); * ``` * * As above, the `$uri` parameter can consist of only a port, in which case the * server will default to listening on the localhost address `127.0.0.1`, * which means it will not be reachable from outside of this system. * * In order to use a random port assignment, you can use the port `0`: * * ```php * $server = new React\Socket\TcpServer(0); * $address = $server->getAddress(); * ``` * * In order to change the host the socket is listening on, you can provide an IP * address through the first parameter provided to the constructor, optionally * preceded by the `tcp://` scheme: * * ```php * $server = new React\Socket\TcpServer('192.168.0.1:8080'); * ``` * * If you want to listen on an IPv6 address, you MUST enclose the host in square * brackets: * * ```php * $server = new React\Socket\TcpServer('[::1]:8080'); * ``` * * If the given URI is invalid, does not contain a port, any other scheme or if it * contains a hostname, it will throw an `InvalidArgumentException`: * * ```php * // throws InvalidArgumentException due to missing port * $server = new React\Socket\TcpServer('127.0.0.1'); * ``` * * If the given URI appears to be valid, but listening on it fails (such as if port * is already in use or port below 1024 may require root access etc.), it will * throw a `RuntimeException`: * * ```php * $first = new React\Socket\TcpServer(8080); * * // throws RuntimeException because port is already in use * $second = new React\Socket\TcpServer(8080); * ``` * * Note that these error conditions may vary depending on your system and/or * configuration. * See the exception message and code for more details about the actual error * condition. * * This class takes an optional `LoopInterface|null $loop` parameter that can be used to * pass the event loop instance to use for this object. You can use a `null` value * here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). * This value SHOULD NOT be given unless you're sure you want to explicitly use a * given event loop instance. * * Optionally, you can specify [socket context options](https://www.php.net/manual/en/context.socket.php) * for the underlying stream socket resource like this: * * ```php * $server = new React\Socket\TcpServer('[::1]:8080', null, array( * 'backlog' => 200, * 'so_reuseport' => true, * 'ipv6_v6only' => true * )); * ``` * * Note that available [socket context options](https://www.php.net/manual/en/context.socket.php), * their defaults and effects of changing these may vary depending on your system * and/or PHP version. * Passing unknown context options has no effect. * The `backlog` context option defaults to `511` unless given explicitly. * * @param string|int $uri * @param ?LoopInterface $loop * @param array $context * @throws InvalidArgumentException if the listening address is invalid * @throws RuntimeException if listening on this address fails (already in use etc.) */ public function __construct($uri, $loop = null, array $context = array()) { if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 throw new \InvalidArgumentException('_PHPStan_b22655c3f\\Argument #2 ($loop) expected null|React\\EventLoop\\LoopInterface'); } $this->loop = $loop ?: Loop::get(); // a single port has been given => assume localhost if ((string) (int) $uri === (string) $uri) { $uri = '127.0.0.1:' . $uri; } // assume default scheme if none has been given if (\strpos($uri, '://') === \false) { $uri = 'tcp://' . $uri; } // parse_url() does not accept null ports (random port assignment) => manually remove if (\substr($uri, -2) === ':0') { $parts = \parse_url(\substr($uri, 0, -2)); if ($parts) { $parts['port'] = 0; } } else { $parts = \parse_url($uri); } // ensure URI contains TCP scheme, host and port if (!$parts || !isset($parts['scheme'], $parts['host'], $parts['port']) || $parts['scheme'] !== 'tcp') { throw new \InvalidArgumentException('Invalid URI "' . $uri . '" given (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22)); } if (@\inet_pton(\trim($parts['host'], '[]')) === \false) { throw new \InvalidArgumentException('Given URI "' . $uri . '" does not contain a valid host IP (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22)); } $this->master = @\stream_socket_server($uri, $errno, $errstr, \STREAM_SERVER_BIND | \STREAM_SERVER_LISTEN, \stream_context_create(array('socket' => $context + array('backlog' => 511)))); if (\false === $this->master) { if ($errno === 0) { // PHP does not seem to report errno, so match errno from errstr // @link https://3v4l.org/3qOBl $errno = SocketServer::errno($errstr); } throw new \RuntimeException('Failed to listen on "' . $uri . '": ' . $errstr . SocketServer::errconst($errno), $errno); } \stream_set_blocking($this->master, \false); $this->resume(); } public function getAddress() { if (!\is_resource($this->master)) { return null; } $address = \stream_socket_get_name($this->master, \false); // check if this is an IPv6 address which includes multiple colons but no square brackets $pos = \strrpos($address, ':'); if ($pos !== \false && \strpos($address, ':') < $pos && \substr($address, 0, 1) !== '[') { $address = '[' . \substr($address, 0, $pos) . ']:' . \substr($address, $pos + 1); // @codeCoverageIgnore } return 'tcp://' . $address; } public function pause() { if (!$this->listening) { return; } $this->loop->removeReadStream($this->master); $this->listening = \false; } public function resume() { if ($this->listening || !\is_resource($this->master)) { return; } $that = $this; $this->loop->addReadStream($this->master, function ($master) use($that) { try { $newSocket = SocketServer::accept($master); } catch (\RuntimeException $e) { $that->emit('error', array($e)); return; } $that->handleConnection($newSocket); }); $this->listening = \true; } public function close() { if (!\is_resource($this->master)) { return; } $this->pause(); \fclose($this->master); $this->removeAllListeners(); } /** @internal */ public function handleConnection($socket) { $this->emit('connection', array(new Connection($socket, $this->loop))); } } $context); } // apply default options if not explicitly given $context += array('tcp' => array(), 'tls' => array(), 'unix' => array()); $scheme = 'tcp'; $pos = \strpos($uri, '://'); if ($pos !== \false) { $scheme = \substr($uri, 0, $pos); } if ($scheme === 'unix') { $server = new UnixServer($uri, $loop, $context['unix']); } else { $server = new TcpServer(\str_replace('tls://', '', $uri), $loop, $context['tcp']); if ($scheme === 'tls') { $server = new SecureServer($server, $loop, $context['tls']); } } $this->server = $server; $that = $this; $server->on('connection', function (ConnectionInterface $conn) use($that) { $that->emit('connection', array($conn)); }); $server->on('error', function (Exception $error) use($that) { $that->emit('error', array($error)); }); } public function getAddress() { return $this->server->getAddress(); } public function pause() { $this->server->pause(); } public function resume() { $this->server->resume(); } public function close() { $this->server->close(); } } connect('google.com:443')->then( * function (React\Socket\ConnectionInterface $connection) { * // connection successfully established * }, * function (Exception $error) { * // failed to connect due to $error * } * ); * ``` * * The returned Promise MUST be implemented in such a way that it can be * cancelled when it is still pending. Cancelling a pending promise MUST * reject its value with an Exception. It SHOULD clean up any underlying * resources and references as applicable. * * ```php * $promise = $connector->connect($uri); * * $promise->cancel(); * ``` * * @param string $uri * @return \React\Promise\PromiseInterface * Resolves with a `ConnectionInterface` on success or rejects with an `Exception` on error. * @see ConnectionInterface */ public function connect($uri); } loop = $loop ?: Loop::get(); if (\strpos($path, '://') === \false) { $path = 'unix://' . $path; } elseif (\substr($path, 0, 7) !== 'unix://') { throw new \InvalidArgumentException('Given URI "' . $path . '" is invalid (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22)); } $errno = 0; $errstr = ''; \set_error_handler(function ($_, $error) use(&$errno, &$errstr) { // PHP does not seem to report errno/errstr for Unix domain sockets (UDS) right now. // This only applies to UDS server sockets, see also https://3v4l.org/NAhpr. // Parse PHP warning message containing unknown error, HHVM reports proper info at least. if (\preg_match('/\\(([^\\)]+)\\)|\\[(\\d+)\\]: (.*)/', $error, $match)) { $errstr = isset($match[3]) ? $match['3'] : $match[1]; $errno = isset($match[2]) ? (int) $match[2] : 0; } }); $this->master = \stream_socket_server($path, $errno, $errstr, \STREAM_SERVER_BIND | \STREAM_SERVER_LISTEN, \stream_context_create(array('socket' => $context))); \restore_error_handler(); if (\false === $this->master) { throw new \RuntimeException('Failed to listen on Unix domain socket "' . $path . '": ' . $errstr . SocketServer::errconst($errno), $errno); } \stream_set_blocking($this->master, 0); $this->resume(); } public function getAddress() { if (!\is_resource($this->master)) { return null; } return 'unix://' . \stream_socket_get_name($this->master, \false); } public function pause() { if (!$this->listening) { return; } $this->loop->removeReadStream($this->master); $this->listening = \false; } public function resume() { if ($this->listening || !\is_resource($this->master)) { return; } $that = $this; $this->loop->addReadStream($this->master, function ($master) use($that) { try { $newSocket = SocketServer::accept($master); } catch (\RuntimeException $e) { $that->emit('error', array($e)); return; } $that->handleConnection($newSocket); }); $this->listening = \true; } public function close() { if (!\is_resource($this->master)) { return; } $this->pause(); \fclose($this->master); $this->removeAllListeners(); } /** @internal */ public function handleConnection($socket) { $connection = new Connection($socket, $this->loop); $connection->unix = \true; $this->emit('connection', array($connection)); } } loop = $loop ?: Loop::get(); $this->context = $context; } public function connect($uri) { if (\strpos($uri, '://') === \false) { $uri = 'tcp://' . $uri; } $parts = \parse_url($uri); if (!$parts || !isset($parts['scheme'], $parts['host'], $parts['port']) || $parts['scheme'] !== 'tcp') { return Promise\reject(new \InvalidArgumentException('Given URI "' . $uri . '" is invalid (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22))); } $ip = \trim($parts['host'], '[]'); if (@\inet_pton($ip) === \false) { return Promise\reject(new \InvalidArgumentException('Given URI "' . $uri . '" does not contain a valid host IP (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : (\defined('PCNTL_EINVAL') ? \PCNTL_EINVAL : 22))); } // use context given in constructor $context = array('socket' => $this->context); // parse arguments from query component of URI $args = array(); if (isset($parts['query'])) { \parse_str($parts['query'], $args); } // If an original hostname has been given, use this for TLS setup. // This can happen due to layers of nested connectors, such as a // DnsConnector reporting its original hostname. // These context options are here in case TLS is enabled later on this stream. // If TLS is not enabled later, this doesn't hurt either. if (isset($args['hostname'])) { $context['ssl'] = array('SNI_enabled' => \true, 'peer_name' => $args['hostname']); // Legacy PHP < 5.6 ignores peer_name and requires legacy context options instead. // The SNI_server_name context option has to be set here during construction, // as legacy PHP ignores any values set later. // @codeCoverageIgnoreStart if (\PHP_VERSION_ID < 50600) { $context['ssl'] += array('SNI_server_name' => $args['hostname'], 'CN_match' => $args['hostname']); } // @codeCoverageIgnoreEnd } // latest versions of PHP no longer accept any other URI components and // HHVM fails to parse URIs with a query but no path, so let's simplify our URI here $remote = 'tcp://' . $parts['host'] . ':' . $parts['port']; $stream = @\stream_socket_client($remote, $errno, $errstr, 0, \STREAM_CLIENT_CONNECT | \STREAM_CLIENT_ASYNC_CONNECT, \stream_context_create($context)); if (\false === $stream) { return Promise\reject(new \RuntimeException('Connection to ' . $uri . ' failed: ' . $errstr . SocketServer::errconst($errno), $errno)); } // wait for connection $loop = $this->loop; return new Promise\Promise(function ($resolve, $reject) use($loop, $stream, $uri) { $loop->addWriteStream($stream, function ($stream) use($loop, $resolve, $reject, $uri) { $loop->removeWriteStream($stream); // The following hack looks like the only way to // detect connection refused errors with PHP's stream sockets. if (\false === \stream_socket_get_name($stream, \true)) { // If we reach this point, we know the connection is dead, but we don't know the underlying error condition. // @codeCoverageIgnoreStart if (\function_exists('socket_import_stream')) { // actual socket errno and errstr can be retrieved with ext-sockets on PHP 5.4+ $socket = \socket_import_stream($stream); $errno = \socket_get_option($socket, \SOL_SOCKET, \SO_ERROR); $errstr = \socket_strerror($errno); } elseif (\PHP_OS === 'Linux') { // Linux reports socket errno and errstr again when trying to write to the dead socket. // Suppress error reporting to get error message below and close dead socket before rejecting. // This is only known to work on Linux, Mac and Windows are known to not support this. $errno = 0; $errstr = ''; \set_error_handler(function ($_, $error) use(&$errno, &$errstr) { // Match errstr from PHP's warning message. // fwrite(): send of 1 bytes failed with errno=111 Connection refused \preg_match('/errno=(\\d+) (.+)/', $error, $m); $errno = isset($m[1]) ? (int) $m[1] : 0; $errstr = isset($m[2]) ? $m[2] : $error; }); \fwrite($stream, \PHP_EOL); \restore_error_handler(); } else { // Not on Linux and ext-sockets not available? Too bad. $errno = \defined('SOCKET_ECONNREFUSED') ? \SOCKET_ECONNREFUSED : 111; $errstr = 'Connection refused?'; } // @codeCoverageIgnoreEnd \fclose($stream); $reject(new \RuntimeException('Connection to ' . $uri . ' failed: ' . $errstr . SocketServer::errconst($errno), $errno)); } else { $resolve(new Connection($stream, $loop)); } }); }, function () use($loop, $stream, $uri) { $loop->removeWriteStream($stream); \fclose($stream); // @codeCoverageIgnoreStart // legacy PHP 5.3 sometimes requires a second close call (see tests) if (\PHP_VERSION_ID < 50400 && \is_resource($stream)) { \fclose($stream); } // @codeCoverageIgnoreEnd throw new \RuntimeException('Connection to ' . $uri . ' cancelled during TCP/IP handshake (ECONNABORTED)', \defined('SOCKET_ECONNABORTED') ? \SOCKET_ECONNABORTED : 103); }); } } = 70300 && \PHP_VERSION_ID < 70303; // PHP < 7.1.4 (and PHP < 7.0.18) suffers from a bug when writing big // chunks of data over TLS streams at once. // We try to work around this by limiting the write chunk size to 8192 // bytes for older PHP versions only. // This is only a work-around and has a noticable performance penalty on // affected versions. Please update your PHP version. // This applies to all streams because TLS may be enabled later on. // See https://github.com/reactphp/socket/issues/105 $limitWriteChunks = \PHP_VERSION_ID < 70018 || \PHP_VERSION_ID >= 70100 && \PHP_VERSION_ID < 70104; $this->input = new DuplexResourceStream($resource, $loop, $clearCompleteBuffer ? -1 : null, new WritableResourceStream($resource, $loop, null, $limitWriteChunks ? 8192 : null)); $this->stream = $resource; Util::forwardEvents($this->input, $this, array('data', 'end', 'error', 'close', 'pipe', 'drain')); $this->input->on('close', array($this, 'close')); } public function isReadable() { return $this->input->isReadable(); } public function isWritable() { return $this->input->isWritable(); } public function pause() { $this->input->pause(); } public function resume() { $this->input->resume(); } public function pipe(WritableStreamInterface $dest, array $options = array()) { return $this->input->pipe($dest, $options); } public function write($data) { return $this->input->write($data); } public function end($data = null) { $this->input->end($data); } public function close() { $this->input->close(); $this->handleClose(); $this->removeAllListeners(); } public function handleClose() { if (!\is_resource($this->stream)) { return; } // Try to cleanly shut down socket and ignore any errors in case other // side already closed. Underlying Stream implementation will take care // of closing stream resource, so we otherwise keep this open here. @\stream_socket_shutdown($this->stream, \STREAM_SHUT_RDWR); } public function getRemoteAddress() { if (!\is_resource($this->stream)) { return null; } return $this->parseAddress(\stream_socket_get_name($this->stream, \true)); } public function getLocalAddress() { if (!\is_resource($this->stream)) { return null; } return $this->parseAddress(\stream_socket_get_name($this->stream, \false)); } private function parseAddress($address) { if ($address === \false) { return null; } if ($this->unix) { // remove trailing colon from address for HHVM < 3.19: https://3v4l.org/5C1lo // note that technically ":" is a valid address, so keep this in place otherwise if (\substr($address, -1) === ':' && \defined('_PHPStan_b22655c3f\\HHVM_VERSION_ID') && \_PHPStan_b22655c3f\HHVM_VERSION_ID < 31900) { $address = (string) \substr($address, 0, -1); // @codeCoverageIgnore } // work around unknown addresses should return null value: https://3v4l.org/5C1lo and https://bugs.php.net/bug.php?id=74556 // PHP uses "\0" string and HHVM uses empty string (colon removed above) if ($address === '' || $address[0] === "\x00") { return null; // @codeCoverageIgnore } return 'unix://' . $address; } // check if this is an IPv6 address which includes multiple colons but no square brackets $pos = \strrpos($address, ':'); if ($pos !== \false && \strpos($address, ':') < $pos && \substr($address, 0, 1) !== '[') { $address = '[' . \substr($address, 0, $pos) . ']:' . \substr($address, $pos + 1); // @codeCoverageIgnore } return ($this->encryptionEnabled ? 'tls' : 'tcp') . '://' . $address; } } loop = $loop; $this->server = $server; // support TLSv1.0+ by default and exclude legacy SSLv2/SSLv3. // As of PHP 7.2+ the main crypto method constant includes all TLS versions. // As of PHP 5.6+ the crypto method is a bitmask, so we explicitly include all TLS versions. // For legacy PHP < 5.6 the crypto method is a single value only and this constant includes all TLS versions. // @link https://3v4l.org/9PSST if ($server) { $this->method = \STREAM_CRYPTO_METHOD_TLS_SERVER; if (\PHP_VERSION_ID < 70200 && \PHP_VERSION_ID >= 50600) { $this->method |= \STREAM_CRYPTO_METHOD_TLSv1_0_SERVER | \STREAM_CRYPTO_METHOD_TLSv1_1_SERVER | \STREAM_CRYPTO_METHOD_TLSv1_2_SERVER; // @codeCoverageIgnore } } else { $this->method = \STREAM_CRYPTO_METHOD_TLS_CLIENT; if (\PHP_VERSION_ID < 70200 && \PHP_VERSION_ID >= 50600) { $this->method |= \STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT | \STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT | \STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; // @codeCoverageIgnore } } } /** * @param Connection $stream * @return \React\Promise\PromiseInterface */ public function enable(Connection $stream) { return $this->toggle($stream, \true); } /** * @param Connection $stream * @param bool $toggle * @return \React\Promise\PromiseInterface */ public function toggle(Connection $stream, $toggle) { // pause actual stream instance to continue operation on raw stream socket $stream->pause(); // TODO: add write() event to make sure we're not sending any excessive data // cancelling this leaves this stream in an inconsistent state… $deferred = new Deferred(function () { throw new \RuntimeException(); }); // get actual stream socket from stream instance $socket = $stream->stream; // get crypto method from context options or use global setting from constructor $method = $this->method; $context = \stream_context_get_options($socket); if (isset($context['ssl']['crypto_method'])) { $method = $context['ssl']['crypto_method']; } $that = $this; $toggleCrypto = function () use($socket, $deferred, $toggle, $method, $that) { $that->toggleCrypto($socket, $deferred, $toggle, $method); }; $this->loop->addReadStream($socket, $toggleCrypto); if (!$this->server) { $toggleCrypto(); } $loop = $this->loop; return $deferred->promise()->then(function () use($stream, $socket, $loop, $toggle) { $loop->removeReadStream($socket); $stream->encryptionEnabled = $toggle; $stream->resume(); return $stream; }, function ($error) use($stream, $socket, $loop) { $loop->removeReadStream($socket); $stream->resume(); throw $error; }); } /** * @internal * @param resource $socket * @param Deferred $deferred * @param bool $toggle * @param int $method * @return void */ public function toggleCrypto($socket, Deferred $deferred, $toggle, $method) { $error = null; \set_error_handler(function ($_, $errstr) use(&$error) { $error = \str_replace(array("\r", "\n"), ' ', $errstr); // remove useless function name from error message if (($pos = \strpos($error, "): ")) !== \false) { $error = \substr($error, $pos + 3); } }); $result = \stream_socket_enable_crypto($socket, $toggle, $method); \restore_error_handler(); if (\true === $result) { $deferred->resolve(null); } else { if (\false === $result) { // overwrite callback arguments for PHP7+ only, so they do not show // up in the Exception trace and do not cause a possible cyclic reference. $d = $deferred; $deferred = null; if (\feof($socket) || $error === null) { // EOF or failed without error => connection closed during handshake $d->reject(new \UnexpectedValueException('Connection lost during TLS handshake (ECONNRESET)', \defined('SOCKET_ECONNRESET') ? \SOCKET_ECONNRESET : 104)); } else { // handshake failed with error message $d->reject(new \UnexpectedValueException($error)); } } else { // need more data, will retry } } } } on('connection', function (React\Socket\ConnectionInterface $connection) { * echo 'new connection' . PHP_EOL; * }); * ``` * * See also the `ConnectionInterface` for more details about handling the * incoming connection. * * error event: * The `error` event will be emitted whenever there's an error accepting a new * connection from a client. * * ```php * $socket->on('error', function (Exception $e) { * echo 'error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * Note that this is not a fatal error event, i.e. the server keeps listening for * new connections even after this event. * * @see ConnectionInterface */ interface ServerInterface extends EventEmitterInterface { /** * Returns the full address (URI) this server is currently listening on * * ```php * $address = $socket->getAddress(); * echo 'Server listening on ' . $address . PHP_EOL; * ``` * * If the address can not be determined or is unknown at this time (such as * after the socket has been closed), it MAY return a `NULL` value instead. * * Otherwise, it will return the full address (URI) as a string value, such * as `tcp://127.0.0.1:8080`, `tcp://[::1]:80` or `tls://127.0.0.1:443`. * Note that individual URI components are application specific and depend * on the underlying transport protocol. * * If this is a TCP/IP based server and you only want the local port, you may * use something like this: * * ```php * $address = $socket->getAddress(); * $port = parse_url($address, PHP_URL_PORT); * echo 'Server listening on port ' . $port . PHP_EOL; * ``` * * @return ?string the full listening address (URI) or NULL if it is unknown (not applicable to this server socket or already closed) */ public function getAddress(); /** * Pauses accepting new incoming connections. * * Removes the socket resource from the EventLoop and thus stop accepting * new connections. Note that the listening socket stays active and is not * closed. * * This means that new incoming connections will stay pending in the * operating system backlog until its configurable backlog is filled. * Once the backlog is filled, the operating system may reject further * incoming connections until the backlog is drained again by resuming * to accept new connections. * * Once the server is paused, no futher `connection` events SHOULD * be emitted. * * ```php * $socket->pause(); * * $socket->on('connection', assertShouldNeverCalled()); * ``` * * This method is advisory-only, though generally not recommended, the * server MAY continue emitting `connection` events. * * Unless otherwise noted, a successfully opened server SHOULD NOT start * in paused state. * * You can continue processing events by calling `resume()` again. * * Note that both methods can be called any number of times, in particular * calling `pause()` more than once SHOULD NOT have any effect. * Similarly, calling this after `close()` is a NO-OP. * * @see self::resume() * @return void */ public function pause(); /** * Resumes accepting new incoming connections. * * Re-attach the socket resource to the EventLoop after a previous `pause()`. * * ```php * $socket->pause(); * * Loop::addTimer(1.0, function () use ($socket) { * $socket->resume(); * }); * ``` * * Note that both methods can be called any number of times, in particular * calling `resume()` without a prior `pause()` SHOULD NOT have any effect. * Similarly, calling this after `close()` is a NO-OP. * * @see self::pause() * @return void */ public function resume(); /** * Shuts down this listening socket * * This will stop listening for new incoming connections on this socket. * * Calling this method more than once on the same instance is a NO-OP. * * @return void */ public function close(); } The MIT License (MIT) Copyright (c) 2012 Jan Sorgalla, Christian Lück, Cees-Jan Kiewiet, Chris Boden Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |T $promiseOrValue * @return PromiseInterface */ function resolve($promiseOrValue) : PromiseInterface { if ($promiseOrValue instanceof PromiseInterface) { return $promiseOrValue; } if (\is_object($promiseOrValue) && \method_exists($promiseOrValue, 'then')) { $canceller = null; if (\method_exists($promiseOrValue, 'cancel')) { $canceller = [$promiseOrValue, 'cancel']; \assert(\is_callable($canceller)); } /** @var Promise */ return new Promise(function (callable $resolve, callable $reject) use($promiseOrValue) : void { $promiseOrValue->then($resolve, $reject); }, $canceller); } return new FulfilledPromise($promiseOrValue); } /** * Creates a rejected promise for the supplied `$reason`. * * If `$reason` is a value, it will be the rejection value of the * returned promise. * * If `$reason` is a promise, its completion value will be the rejected * value of the returned promise. * * This can be useful in situations where you need to reject a promise without * throwing an exception. For example, it allows you to propagate a rejection with * the value of another promise. * * @return PromiseInterface */ function reject(\Throwable $reason) : PromiseInterface { return new RejectedPromise($reason); } /** * Returns a promise that will resolve only once all the items in * `$promisesOrValues` have resolved. The resolution value of the returned promise * will be an array containing the resolution values of each of the items in * `$promisesOrValues`. * * @template T * @param iterable|T> $promisesOrValues * @return PromiseInterface> */ function all(iterable $promisesOrValues) : PromiseInterface { $cancellationQueue = new Internal\CancellationQueue(); /** @var Promise> */ return new Promise(function (callable $resolve, callable $reject) use($promisesOrValues, $cancellationQueue) : void { $toResolve = 0; /** @var bool */ $continue = \true; $values = []; foreach ($promisesOrValues as $i => $promiseOrValue) { $cancellationQueue->enqueue($promiseOrValue); $values[$i] = null; ++$toResolve; resolve($promiseOrValue)->then(function ($value) use($i, &$values, &$toResolve, &$continue, $resolve) : void { $values[$i] = $value; if (0 === --$toResolve && !$continue) { $resolve($values); } }, function (\Throwable $reason) use(&$continue, $reject) : void { $continue = \false; $reject($reason); }); if (!$continue && !\is_array($promisesOrValues)) { break; } } $continue = \false; if ($toResolve === 0) { $resolve($values); } }, $cancellationQueue); } /** * Initiates a competitive race that allows one winner. Returns a promise which is * resolved in the same way the first settled promise resolves. * * The returned promise will become **infinitely pending** if `$promisesOrValues` * contains 0 items. * * @template T * @param iterable|T> $promisesOrValues * @return PromiseInterface */ function race(iterable $promisesOrValues) : PromiseInterface { $cancellationQueue = new Internal\CancellationQueue(); /** @var Promise */ return new Promise(function (callable $resolve, callable $reject) use($promisesOrValues, $cancellationQueue) : void { $continue = \true; foreach ($promisesOrValues as $promiseOrValue) { $cancellationQueue->enqueue($promiseOrValue); resolve($promiseOrValue)->then($resolve, $reject)->finally(function () use(&$continue) : void { $continue = \false; }); if (!$continue && !\is_array($promisesOrValues)) { break; } } }, $cancellationQueue); } /** * Returns a promise that will resolve when any one of the items in * `$promisesOrValues` resolves. The resolution value of the returned promise * will be the resolution value of the triggering item. * * The returned promise will only reject if *all* items in `$promisesOrValues` are * rejected. The rejection value will be an array of all rejection reasons. * * The returned promise will also reject with a `React\Promise\Exception\LengthException` * if `$promisesOrValues` contains 0 items. * * @template T * @param iterable|T> $promisesOrValues * @return PromiseInterface */ function any(iterable $promisesOrValues) : PromiseInterface { $cancellationQueue = new Internal\CancellationQueue(); /** @var Promise */ return new Promise(function (callable $resolve, callable $reject) use($promisesOrValues, $cancellationQueue) : void { $toReject = 0; $continue = \true; $reasons = []; foreach ($promisesOrValues as $i => $promiseOrValue) { $cancellationQueue->enqueue($promiseOrValue); ++$toReject; resolve($promiseOrValue)->then(function ($value) use($resolve, &$continue) : void { $continue = \false; $resolve($value); }, function (\Throwable $reason) use($i, &$reasons, &$toReject, $reject, &$continue) : void { $reasons[$i] = $reason; if (0 === --$toReject && !$continue) { $reject(new CompositeException($reasons, 'All promises rejected.')); } }); if (!$continue && !\is_array($promisesOrValues)) { break; } } $continue = \false; if ($toReject === 0 && !$reasons) { $reject(new Exception\LengthException('Must contain at least 1 item but contains only 0 items.')); } elseif ($toReject === 0) { $reject(new CompositeException($reasons, 'All promises rejected.')); } }, $cancellationQueue); } /** * Sets the global rejection handler for unhandled promise rejections. * * Note that rejected promises should always be handled similar to how any * exceptions should always be caught in a `try` + `catch` block. If you remove * the last reference to a rejected promise that has not been handled, it will * report an unhandled promise rejection. See also the [`reject()` function](#reject) * for more details. * * The `?callable $callback` argument MUST be a valid callback function that * accepts a single `Throwable` argument or a `null` value to restore the * default promise rejection handler. The return value of the callback function * will be ignored and has no effect, so you SHOULD return a `void` value. The * callback function MUST NOT throw or the program will be terminated with a * fatal error. * * The function returns the previous rejection handler or `null` if using the * default promise rejection handler. * * The default promise rejection handler will log an error message plus its * stack trace: * * ```php * // Unhandled promise rejection with RuntimeException: Unhandled in example.php:2 * React\Promise\reject(new RuntimeException('Unhandled')); * ``` * * The promise rejection handler may be used to use customize the log message or * write to custom log targets. As a rule of thumb, this function should only be * used as a last resort and promise rejections are best handled with either the * [`then()` method](#promiseinterfacethen), the * [`catch()` method](#promiseinterfacecatch), or the * [`finally()` method](#promiseinterfacefinally). * See also the [`reject()` function](#reject) for more details. * * @param callable(\Throwable):void|null $callback * @return callable(\Throwable):void|null */ function set_rejection_handler(?callable $callback) : ?callable { static $current = null; $previous = $current; $current = $callback; return $previous; } /** * @internal */ function _checkTypehint(callable $callback, \Throwable $reason) : bool { if (\is_array($callback)) { $callbackReflection = new \ReflectionMethod($callback[0], $callback[1]); } elseif (\is_object($callback) && !$callback instanceof \Closure) { $callbackReflection = new \ReflectionMethod($callback, '__invoke'); } else { \assert($callback instanceof \Closure || \is_string($callback)); $callbackReflection = new \ReflectionFunction($callback); } $parameters = $callbackReflection->getParameters(); if (!isset($parameters[0])) { return \true; } $expectedException = $parameters[0]; // Extract the type of the argument and handle different possibilities $type = $expectedException->getType(); $isTypeUnion = \true; $types = []; switch (\true) { case $type === null: break; case $type instanceof \ReflectionNamedType: $types = [$type]; break; case $type instanceof \ReflectionIntersectionType: $isTypeUnion = \false; case $type instanceof \ReflectionUnionType: $types = $type->getTypes(); break; default: throw new \LogicException('Unexpected return value of ReflectionParameter::getType'); } // If there is no type restriction, it matches if (empty($types)) { return \true; } foreach ($types as $type) { if ($type instanceof \ReflectionIntersectionType) { foreach ($type->getTypes() as $typeToMatch) { \assert($typeToMatch instanceof \ReflectionNamedType); $name = $typeToMatch->getName(); if (!($matches = !$typeToMatch->isBuiltin() && $reason instanceof $name)) { break; } } \assert(isset($matches)); } else { \assert($type instanceof \ReflectionNamedType); $name = $type->getName(); $matches = !$type->isBuiltin() && $reason instanceof $name; } // If we look for a single match (union), we can return early on match // If we look for a full match (intersection), we can return early on mismatch if ($matches) { if ($isTypeUnion) { return \true; } } else { if (!$isTypeUnion) { return \false; } } } // If we look for a single match (union) and did not return early, we matched no type and are false // If we look for a full match (intersection) and did not return early, we matched all types and are true return $isTypeUnion ? \false : \true; } */ final class Promise implements PromiseInterface { /** @var (callable(callable(T):void,callable(\Throwable):void):void)|null */ private $canceller; /** @var ?PromiseInterface */ private $result; /** @var list):void> */ private $handlers = []; /** @var int */ private $requiredCancelRequests = 0; /** @var bool */ private $cancelled = \false; /** * @param callable(callable(T):void,callable(\Throwable):void):void $resolver * @param (callable(callable(T):void,callable(\Throwable):void):void)|null $canceller */ public function __construct(callable $resolver, ?callable $canceller = null) { $this->canceller = $canceller; // Explicitly overwrite arguments with null values before invoking // resolver function. This ensure that these arguments do not show up // in the stack trace in PHP 7+ only. $cb = $resolver; $resolver = $canceller = null; $this->call($cb); } public function then(?callable $onFulfilled = null, ?callable $onRejected = null) : PromiseInterface { if (null !== $this->result) { return $this->result->then($onFulfilled, $onRejected); } if (null === $this->canceller) { return new static($this->resolver($onFulfilled, $onRejected)); } // This promise has a canceller, so we create a new child promise which // has a canceller that invokes the parent canceller if all other // followers are also cancelled. We keep a reference to this promise // instance for the static canceller function and clear this to avoid // keeping a cyclic reference between parent and follower. $parent = $this; ++$parent->requiredCancelRequests; return new static($this->resolver($onFulfilled, $onRejected), static function () use(&$parent) : void { \assert($parent instanceof self); --$parent->requiredCancelRequests; if ($parent->requiredCancelRequests <= 0) { $parent->cancel(); } $parent = null; }); } /** * @template TThrowable of \Throwable * @template TRejected * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected * @return PromiseInterface */ public function catch(callable $onRejected) : PromiseInterface { return $this->then(null, static function (\Throwable $reason) use($onRejected) { if (!_checkTypehint($onRejected, $reason)) { return new RejectedPromise($reason); } /** * @var callable(\Throwable):(PromiseInterface|TRejected) $onRejected */ return $onRejected($reason); }); } public function finally(callable $onFulfilledOrRejected) : PromiseInterface { return $this->then(static function ($value) use($onFulfilledOrRejected) : PromiseInterface { return resolve($onFulfilledOrRejected())->then(function () use($value) { return $value; }); }, static function (\Throwable $reason) use($onFulfilledOrRejected) : PromiseInterface { return resolve($onFulfilledOrRejected())->then(function () use($reason) : RejectedPromise { return new RejectedPromise($reason); }); }); } public function cancel() : void { $this->cancelled = \true; $canceller = $this->canceller; $this->canceller = null; $parentCanceller = null; if (null !== $this->result) { // Forward cancellation to rejected promise to avoid reporting unhandled rejection if ($this->result instanceof RejectedPromise) { $this->result->cancel(); } // Go up the promise chain and reach the top most promise which is // itself not following another promise $root = $this->unwrap($this->result); // Return if the root promise is already resolved or a // FulfilledPromise or RejectedPromise if (!$root instanceof self || null !== $root->result) { return; } $root->requiredCancelRequests--; if ($root->requiredCancelRequests <= 0) { $parentCanceller = [$root, 'cancel']; } } if (null !== $canceller) { $this->call($canceller); } // For BC, we call the parent canceller after our own canceller if ($parentCanceller) { $parentCanceller(); } } /** * @deprecated 3.0.0 Use `catch()` instead * @see self::catch() */ public function otherwise(callable $onRejected) : PromiseInterface { return $this->catch($onRejected); } /** * @deprecated 3.0.0 Use `finally()` instead * @see self::finally() */ public function always(callable $onFulfilledOrRejected) : PromiseInterface { return $this->finally($onFulfilledOrRejected); } private function resolver(?callable $onFulfilled = null, ?callable $onRejected = null) : callable { return function (callable $resolve, callable $reject) use($onFulfilled, $onRejected) : void { $this->handlers[] = static function (PromiseInterface $promise) use($onFulfilled, $onRejected, $resolve, $reject) : void { $promise = $promise->then($onFulfilled, $onRejected); if ($promise instanceof self && $promise->result === null) { $promise->handlers[] = static function (PromiseInterface $promise) use($resolve, $reject) : void { $promise->then($resolve, $reject); }; } else { $promise->then($resolve, $reject); } }; }; } private function reject(\Throwable $reason) : void { if (null !== $this->result) { return; } $this->settle(reject($reason)); } /** * @param PromiseInterface $result */ private function settle(PromiseInterface $result) : void { $result = $this->unwrap($result); if ($result === $this) { $result = new RejectedPromise(new \LogicException('Cannot resolve a promise with itself.')); } if ($result instanceof self) { $result->requiredCancelRequests++; } else { // Unset canceller only when not following a pending promise $this->canceller = null; } $handlers = $this->handlers; $this->handlers = []; $this->result = $result; foreach ($handlers as $handler) { $handler($result); } // Forward cancellation to rejected promise to avoid reporting unhandled rejection if ($this->cancelled && $result instanceof RejectedPromise) { $result->cancel(); } } /** * @param PromiseInterface $promise * @return PromiseInterface */ private function unwrap(PromiseInterface $promise) : PromiseInterface { while ($promise instanceof self && null !== $promise->result) { /** @var PromiseInterface $promise */ $promise = $promise->result; } return $promise; } /** * @param callable(callable(mixed):void,callable(\Throwable):void):void $cb */ private function call(callable $cb) : void { // Explicitly overwrite argument with null value. This ensure that this // argument does not show up in the stack trace in PHP 7+ only. $callback = $cb; $cb = null; // Use reflection to inspect number of arguments expected by this callback. // We did some careful benchmarking here: Using reflection to avoid unneeded // function arguments is actually faster than blindly passing them. // Also, this helps avoiding unnecessary function arguments in the call stack // if the callback creates an Exception (creating garbage cycles). if (\is_array($callback)) { $ref = new \ReflectionMethod($callback[0], $callback[1]); } elseif (\is_object($callback) && !$callback instanceof \Closure) { $ref = new \ReflectionMethod($callback, '__invoke'); } else { \assert($callback instanceof \Closure || \is_string($callback)); $ref = new \ReflectionFunction($callback); } $args = $ref->getNumberOfParameters(); try { if ($args === 0) { $callback(); } else { // Keep references to this promise instance for the static resolve/reject functions. // By using static callbacks that are not bound to this instance // and passing the target promise instance by reference, we can // still execute its resolving logic and still clear this // reference when settling the promise. This helps avoiding // garbage cycles if any callback creates an Exception. // These assumptions are covered by the test suite, so if you ever feel like // refactoring this, go ahead, any alternative suggestions are welcome! $target =& $this; $callback(static function ($value) use(&$target) : void { if ($target !== null) { $target->settle(resolve($value)); $target = null; } }, static function (\Throwable $reason) use(&$target) : void { if ($target !== null) { $target->reject($reason); $target = null; } }); } } catch (\Throwable $e) { $target = null; $this->reject($e); } } } */ final class FulfilledPromise implements PromiseInterface { /** @var T */ private $value; /** * @param T $value * @throws \InvalidArgumentException */ public function __construct($value = null) { if ($value instanceof PromiseInterface) { throw new \InvalidArgumentException('You cannot create React\\Promise\\FulfilledPromise with a promise. Use React\\Promise\\resolve($promiseOrValue) instead.'); } $this->value = $value; } /** * @template TFulfilled * @param ?(callable((T is void ? null : T)): (PromiseInterface|TFulfilled)) $onFulfilled * @return PromiseInterface<($onFulfilled is null ? T : TFulfilled)> */ public function then(?callable $onFulfilled = null, ?callable $onRejected = null) : PromiseInterface { if (null === $onFulfilled) { return $this; } try { /** * @var PromiseInterface|T $result */ $result = $onFulfilled($this->value); return resolve($result); } catch (\Throwable $exception) { return new RejectedPromise($exception); } } public function catch(callable $onRejected) : PromiseInterface { return $this; } public function finally(callable $onFulfilledOrRejected) : PromiseInterface { return $this->then(function ($value) use($onFulfilledOrRejected) : PromiseInterface { return resolve($onFulfilledOrRejected())->then(function () use($value) { return $value; }); }); } public function cancel() : void { } /** * @deprecated 3.0.0 Use `catch()` instead * @see self::catch() */ public function otherwise(callable $onRejected) : PromiseInterface { return $this->catch($onRejected); } /** * @deprecated 3.0.0 Use `finally()` instead * @see self::finally() */ public function always(callable $onFulfilledOrRejected) : PromiseInterface { return $this->finally($onFulfilledOrRejected); } } started) { return; } $this->started = \true; $this->drain(); } /** * @param mixed $cancellable */ public function enqueue($cancellable) : void { if (!\is_object($cancellable) || !\method_exists($cancellable, 'then') || !\method_exists($cancellable, 'cancel')) { return; } $length = \array_push($this->queue, $cancellable); if ($this->started && 1 === $length) { $this->drain(); } } private function drain() : void { for ($i = \key($this->queue); isset($this->queue[$i]); $i++) { $cancellable = $this->queue[$i]; \assert(\method_exists($cancellable, 'cancel')); $exception = null; try { $cancellable->cancel(); } catch (\Throwable $exception) { } unset($this->queue[$i]); if ($exception) { throw $exception; } } $this->queue = []; } } */ final class RejectedPromise implements PromiseInterface { /** @var \Throwable */ private $reason; /** @var bool */ private $handled = \false; /** * @param \Throwable $reason */ public function __construct(\Throwable $reason) { $this->reason = $reason; } /** @throws void */ public function __destruct() { if ($this->handled) { return; } $handler = set_rejection_handler(null); if ($handler === null) { $message = 'Unhandled promise rejection with ' . $this->reason; \error_log($message); return; } try { $handler($this->reason); } catch (\Throwable $e) { \preg_match('/^([^:\\s]++)(.*+)$/sm', (string) $e, $match); \assert(isset($match[1], $match[2])); $message = 'Fatal error: Uncaught ' . $match[1] . ' from unhandled promise rejection handler' . $match[2]; \error_log($message); exit(255); } } /** * @template TRejected * @param ?callable $onFulfilled * @param ?(callable(\Throwable): (PromiseInterface|TRejected)) $onRejected * @return PromiseInterface<($onRejected is null ? never : TRejected)> */ public function then(?callable $onFulfilled = null, ?callable $onRejected = null) : PromiseInterface { if (null === $onRejected) { return $this; } $this->handled = \true; try { return resolve($onRejected($this->reason)); } catch (\Throwable $exception) { return new RejectedPromise($exception); } } /** * @template TThrowable of \Throwable * @template TRejected * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected * @return PromiseInterface */ public function catch(callable $onRejected) : PromiseInterface { if (!_checkTypehint($onRejected, $this->reason)) { return $this; } /** * @var callable(\Throwable):(PromiseInterface|TRejected) $onRejected */ return $this->then(null, $onRejected); } public function finally(callable $onFulfilledOrRejected) : PromiseInterface { return $this->then(null, function (\Throwable $reason) use($onFulfilledOrRejected) : PromiseInterface { return resolve($onFulfilledOrRejected())->then(function () use($reason) : PromiseInterface { return new RejectedPromise($reason); }); }); } public function cancel() : void { $this->handled = \true; } /** * @deprecated 3.0.0 Use `catch()` instead * @see self::catch() */ public function otherwise(callable $onRejected) : PromiseInterface { return $this->catch($onRejected); } /** * @deprecated 3.0.0 Use `always()` instead * @see self::always() */ public function always(callable $onFulfilledOrRejected) : PromiseInterface { return $this->finally($onFulfilledOrRejected); } } */ private $promise; /** @var callable(T):void */ private $resolveCallback; /** @var callable(\Throwable):void */ private $rejectCallback; /** * @param (callable(callable(T):void,callable(\Throwable):void):void)|null $canceller */ public function __construct(?callable $canceller = null) { $this->promise = new Promise(function ($resolve, $reject) : void { $this->resolveCallback = $resolve; $this->rejectCallback = $reject; }, $canceller); } /** * @return PromiseInterface */ public function promise() : PromiseInterface { return $this->promise; } /** * @param T $value */ public function resolve($value) : void { ($this->resolveCallback)($value); } public function reject(\Throwable $reason) : void { ($this->rejectCallback)($reason); } } throwables = $throwables; } /** * @return \Throwable[] */ public function getThrowables() : array { return $this->throwables; } } |TFulfilled)) $onFulfilled * @param ?(callable(\Throwable): (PromiseInterface|TRejected)) $onRejected * @return PromiseInterface<($onRejected is null ? ($onFulfilled is null ? T : TFulfilled) : ($onFulfilled is null ? T|TRejected : TFulfilled|TRejected))> */ public function then(?callable $onFulfilled = null, ?callable $onRejected = null) : PromiseInterface; /** * Registers a rejection handler for promise. It is a shortcut for: * * ```php * $promise->then(null, $onRejected); * ``` * * Additionally, you can type hint the `$reason` argument of `$onRejected` to catch * only specific errors. * * @template TThrowable of \Throwable * @template TRejected * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected * @return PromiseInterface */ public function catch(callable $onRejected) : PromiseInterface; /** * Allows you to execute "cleanup" type tasks in a promise chain. * * It arranges for `$onFulfilledOrRejected` to be called, with no arguments, * when the promise is either fulfilled or rejected. * * * If `$promise` fulfills, and `$onFulfilledOrRejected` returns successfully, * `$newPromise` will fulfill with the same value as `$promise`. * * If `$promise` fulfills, and `$onFulfilledOrRejected` throws or returns a * rejected promise, `$newPromise` will reject with the thrown exception or * rejected promise's reason. * * If `$promise` rejects, and `$onFulfilledOrRejected` returns successfully, * `$newPromise` will reject with the same reason as `$promise`. * * If `$promise` rejects, and `$onFulfilledOrRejected` throws or returns a * rejected promise, `$newPromise` will reject with the thrown exception or * rejected promise's reason. * * `finally()` behaves similarly to the synchronous finally statement. When combined * with `catch()`, `finally()` allows you to write code that is similar to the familiar * synchronous catch/finally pair. * * Consider the following synchronous code: * * ```php * try { * return doSomething(); * } catch(\Exception $e) { * return handleError($e); * } finally { * cleanup(); * } * ``` * * Similar asynchronous code (with `doSomething()` that returns a promise) can be * written: * * ```php * return doSomething() * ->catch('handleError') * ->finally('cleanup'); * ``` * * @param callable(): (void|PromiseInterface) $onFulfilledOrRejected * @return PromiseInterface */ public function finally(callable $onFulfilledOrRejected) : PromiseInterface; /** * The `cancel()` method notifies the creator of the promise that there is no * further interest in the results of the operation. * * Once a promise is settled (either fulfilled or rejected), calling `cancel()` on * a promise has no effect. * * @return void */ public function cancel() : void; /** * [Deprecated] Registers a rejection handler for a promise. * * This method continues to exist only for BC reasons and to ease upgrading * between versions. It is an alias for: * * ```php * $promise->catch($onRejected); * ``` * * @template TThrowable of \Throwable * @template TRejected * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected * @return PromiseInterface * @deprecated 3.0.0 Use catch() instead * @see self::catch() */ public function otherwise(callable $onRejected) : PromiseInterface; /** * [Deprecated] Allows you to execute "cleanup" type tasks in a promise chain. * * This method continues to exist only for BC reasons and to ease upgrading * between versions. It is an alias for: * * ```php * $promise->finally($onFulfilledOrRejected); * ``` * * @param callable(): (void|PromiseInterface) $onFulfilledOrRejected * @return PromiseInterface * @deprecated 3.0.0 Use finally() instead * @see self::finally() */ public function always(callable $onFulfilledOrRejected) : PromiseInterface; } The MIT License (MIT) Copyright (c) 2012 Christian Lück, Cees-Jan Kiewiet, Jan Sorgalla, Chris Boden, Igor Wiedler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. id = self::generateId(); $request->rd = \true; $request->questions[] = $query; return $request; } /** * Creates a new response message for the given query with the given answer records * * @param Query $query * @param Record[] $answers * @return self */ public static function createResponseWithAnswersForQuery(Query $query, array $answers) { $response = new Message(); $response->id = self::generateId(); $response->qr = \true; $response->rd = \true; $response->questions[] = $query; foreach ($answers as $record) { $response->answers[] = $record; } return $response; } /** * generates a random 16 bit message ID * * This uses a CSPRNG so that an outside attacker that is sending spoofed * DNS response messages can not guess the message ID to avoid possible * cache poisoning attacks. * * The `random_int()` function is only available on PHP 7+ or when * https://github.com/paragonie/random_compat is installed. As such, using * the latest supported PHP version is highly recommended. This currently * falls back to a less secure random number generator on older PHP versions * in the hope that this system is properly protected against outside * attackers, for example by using one of the common local DNS proxy stubs. * * @return int * @see self::getId() * @codeCoverageIgnore */ private static function generateId() { if (\function_exists('random_int')) { return \random_int(0, 0xffff); } return \mt_rand(0, 0xffff); } /** * The 16 bit message ID * * The response message ID has to match the request message ID. This allows * the receiver to verify this is the correct response message. An outside * attacker may try to inject fake responses by "guessing" the message ID, * so this should use a proper CSPRNG to avoid possible cache poisoning. * * @var int 16 bit message ID * @see self::generateId() */ public $id = 0; /** * @var bool Query/Response flag, query=false or response=true */ public $qr = \false; /** * @var int specifies the kind of query (4 bit), see self::OPCODE_* constants * @see self::OPCODE_QUERY */ public $opcode = self::OPCODE_QUERY; /** * * @var bool Authoritative Answer */ public $aa = \false; /** * @var bool TrunCation */ public $tc = \false; /** * @var bool Recursion Desired */ public $rd = \false; /** * @var bool Recursion Available */ public $ra = \false; /** * @var int response code (4 bit), see self::RCODE_* constants * @see self::RCODE_OK */ public $rcode = Message::RCODE_OK; /** * An array of Query objects * * ```php * $questions = array( * new Query( * 'reactphp.org', * Message::TYPE_A, * Message::CLASS_IN * ) * ); * ``` * * @var Query[] */ public $questions = array(); /** * @var Record[] */ public $answers = array(); /** * @var Record[] */ public $authority = array(); /** * @var Record[] */ public $additional = array(); } name = $name; $this->type = $type; $this->class = $class; $this->ttl = $ttl; $this->data = $data; } } executor = $executor; $this->retries = $retries; } public function query(Query $query) { return $this->tryQuery($query, $this->retries); } public function tryQuery(Query $query, $retries) { $deferred = new Deferred(function () use(&$promise) { if ($promise instanceof PromiseInterface && \method_exists($promise, 'cancel')) { $promise->cancel(); } }); $success = function ($value) use($deferred, &$errorback) { $errorback = null; $deferred->resolve($value); }; $executor = $this->executor; $errorback = function ($e) use($deferred, &$promise, $query, $success, &$errorback, &$retries, $executor) { if (!$e instanceof TimeoutException) { $errorback = null; $deferred->reject($e); } elseif ($retries <= 0) { $errorback = null; $deferred->reject($e = new \RuntimeException('DNS query for ' . $query->describe() . ' failed: too many retries', 0, $e)); // avoid garbage references by replacing all closures in call stack. // what a lovely piece of code! $r = new \ReflectionProperty('Exception', 'trace'); $r->setAccessible(\true); $trace = $r->getValue($e); // Exception trace arguments are not available on some PHP 7.4 installs // @codeCoverageIgnoreStart foreach ($trace as $ti => $one) { if (isset($one['args'])) { foreach ($one['args'] as $ai => $arg) { if ($arg instanceof \Closure) { $trace[$ti]['args'][$ai] = 'Object(' . \get_class($arg) . ')'; } } } } // @codeCoverageIgnoreEnd $r->setValue($e, $trace); } else { --$retries; $promise = $executor->query($query)->then($success, $errorback); } }; $promise = $this->executor->query($query)->then($success, $errorback); return $deferred->promise(); } } query( * new Query($name, Message::TYPE_AAAA, Message::CLASS_IN) * )->then(function (Message $message) { * foreach ($message->answers as $answer) { * echo 'IPv6: ' . $answer->data . PHP_EOL; * } * }, 'printf'); * ``` * * See also the [fourth example](examples). * * Note that this executor does not implement a timeout, so you will very likely * want to use this in combination with a `TimeoutExecutor` like this: * * ```php * $executor = new TimeoutExecutor( * new UdpTransportExecutor($nameserver), * 3.0 * ); * ``` * * Also note that this executor uses an unreliable UDP transport and that it * does not implement any retry logic, so you will likely want to use this in * combination with a `RetryExecutor` like this: * * ```php * $executor = new RetryExecutor( * new TimeoutExecutor( * new UdpTransportExecutor($nameserver), * 3.0 * ) * ); * ``` * * Note that this executor is entirely async and as such allows you to execute * any number of queries concurrently. You should probably limit the number of * concurrent queries in your application or you're very likely going to face * rate limitations and bans on the resolver end. For many common applications, * you may want to avoid sending the same query multiple times when the first * one is still pending, so you will likely want to use this in combination with * a `CoopExecutor` like this: * * ```php * $executor = new CoopExecutor( * new RetryExecutor( * new TimeoutExecutor( * new UdpTransportExecutor($nameserver), * 3.0 * ) * ) * ); * ``` * * > Internally, this class uses PHP's UDP sockets and does not take advantage * of [react/datagram](https://github.com/reactphp/datagram) purely for * organizational reasons to avoid a cyclic dependency between the two * packages. Higher-level components should take advantage of the Datagram * component instead of reimplementing this socket logic from scratch. */ final class UdpTransportExecutor implements ExecutorInterface { private $nameserver; private $loop; private $parser; private $dumper; /** * maximum UDP packet size to send and receive * * @var int */ private $maxPacketSize = 512; /** * @param string $nameserver * @param ?LoopInterface $loop */ public function __construct($nameserver, $loop = null) { if (\strpos($nameserver, '[') === \false && \substr_count($nameserver, ':') >= 2 && \strpos($nameserver, '://') === \false) { // several colons, but not enclosed in square brackets => enclose IPv6 address in square brackets $nameserver = '[' . $nameserver . ']'; } $parts = \parse_url((\strpos($nameserver, '://') === \false ? 'udp://' : '') . $nameserver); if (!isset($parts['scheme'], $parts['host']) || $parts['scheme'] !== 'udp' || @\inet_pton(\trim($parts['host'], '[]')) === \false) { throw new \InvalidArgumentException('Invalid nameserver address given'); } if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 throw new \InvalidArgumentException('_PHPStan_b22655c3f\\Argument #2 ($loop) expected null|React\\EventLoop\\LoopInterface'); } $this->nameserver = 'udp://' . $parts['host'] . ':' . (isset($parts['port']) ? $parts['port'] : 53); $this->loop = $loop ?: Loop::get(); $this->parser = new Parser(); $this->dumper = new BinaryDumper(); } public function query(Query $query) { $request = Message::createRequestForQuery($query); $queryData = $this->dumper->toBinary($request); if (isset($queryData[$this->maxPacketSize])) { return \_PHPStan_b22655c3f\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Query too large for UDP transport', \defined('SOCKET_EMSGSIZE') ? \SOCKET_EMSGSIZE : 90)); } // UDP connections are instant, so try connection without a loop or timeout $errno = 0; $errstr = ''; $socket = @\stream_socket_client($this->nameserver, $errno, $errstr, 0); if ($socket === \false) { return \_PHPStan_b22655c3f\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Unable to connect to DNS server ' . $this->nameserver . ' (' . $errstr . ')', $errno)); } // set socket to non-blocking and immediately try to send (fill write buffer) \stream_set_blocking($socket, \false); \set_error_handler(function ($_, $error) use(&$errno, &$errstr) { // Write may potentially fail, but most common errors are already caught by connection check above. // Among others, macOS is known to report here when trying to send to broadcast address. // This can also be reproduced by writing data exceeding `stream_set_chunk_size()` to a server refusing UDP data. // fwrite(): send of 8192 bytes failed with errno=111 Connection refused \preg_match('/errno=(\\d+) (.+)/', $error, $m); $errno = isset($m[1]) ? (int) $m[1] : 0; $errstr = isset($m[2]) ? $m[2] : $error; }); $written = \fwrite($socket, $queryData); \restore_error_handler(); if ($written !== \strlen($queryData)) { return \_PHPStan_b22655c3f\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Unable to send query to DNS server ' . $this->nameserver . ' (' . $errstr . ')', $errno)); } $loop = $this->loop; $deferred = new Deferred(function () use($loop, $socket, $query) { // cancellation should remove socket from loop and close socket $loop->removeReadStream($socket); \fclose($socket); throw new CancellationException('DNS query for ' . $query->describe() . ' has been cancelled'); }); $max = $this->maxPacketSize; $parser = $this->parser; $nameserver = $this->nameserver; $loop->addReadStream($socket, function ($socket) use($loop, $deferred, $query, $parser, $request, $max, $nameserver) { // try to read a single data packet from the DNS server // ignoring any errors, this is uses UDP packets and not a stream of data $data = @\fread($socket, $max); if ($data === \false) { return; } try { $response = $parser->parseMessage($data); } catch (\Exception $e) { // ignore and await next if we received an invalid message from remote server // this may as well be a fake response from an attacker (possible DOS) return; } // ignore and await next if we received an unexpected response ID // this may as well be a fake response from an attacker (possible cache poisoning) if ($response->id !== $request->id) { return; } // we only react to the first valid message, so remove socket from loop and close $loop->removeReadStream($socket); \fclose($socket); if ($response->tc) { $deferred->reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: The DNS server ' . $nameserver . ' returned a truncated result for a UDP query', \defined('SOCKET_EMSGSIZE') ? \SOCKET_EMSGSIZE : 90)); return; } $deferred->resolve($response); }); return $deferred->promise(); } } executor = $executor; $this->loop = $loop ?: Loop::get(); $this->timeout = $timeout; } public function query(Query $query) { $promise = $this->executor->query($query); $loop = $this->loop; $time = $this->timeout; return new Promise(function ($resolve, $reject) use($loop, $time, $promise, $query) { $timer = null; $promise = $promise->then(function ($v) use(&$timer, $loop, $resolve) { if ($timer) { $loop->cancelTimer($timer); } $timer = \false; $resolve($v); }, function ($v) use(&$timer, $loop, $reject) { if ($timer) { $loop->cancelTimer($timer); } $timer = \false; $reject($v); }); // promise already resolved => no need to start timer if ($timer === \false) { return; } // start timeout timer which will cancel the pending promise $timer = $loop->addTimer($time, function () use($time, &$promise, $reject, $query) { $reject(new TimeoutException('DNS query for ' . $query->describe() . ' timed out')); // Cancel pending query to clean up any underlying resources and references. // Avoid garbage references in call stack by passing pending promise by reference. \assert(\method_exists($promise, 'cancel')); $promise->cancel(); $promise = null; }); }, function () use(&$promise) { // Cancelling this promise will cancel the pending query, thus triggering the rejection logic above. // Avoid garbage references in call stack by passing pending promise by reference. \assert(\method_exists($promise, 'cancel')); $promise->cancel(); $promise = null; }); } } executor = $executor; $this->cache = $cache; } public function query(Query $query) { $id = $query->name . ':' . $query->type . ':' . $query->class; $cache = $this->cache; $that = $this; $executor = $this->executor; $pending = $cache->get($id); return new Promise(function ($resolve, $reject) use($query, $id, $cache, $executor, &$pending, $that) { $pending->then(function ($message) use($query, $id, $cache, $executor, &$pending, $that) { // return cached response message on cache hit if ($message !== null) { return $message; } // perform DNS lookup if not already cached return $pending = $executor->query($query)->then(function (Message $message) use($cache, $id, $that) { // DNS response message received => store in cache when not truncated and return if (!$message->tc) { $cache->set($id, $message, $that->ttl($message)); } return $message; }); })->then($resolve, function ($e) use($reject, &$pending) { $reject($e); $pending = null; }); }, function ($_, $reject) use(&$pending, $query) { $reject(new \RuntimeException('DNS query for ' . $query->describe() . ' has been cancelled')); $pending->cancel(); $pending = null; }); } /** * @param Message $message * @return int * @internal */ public function ttl(Message $message) { // select TTL from answers (should all be the same), use smallest value if available // @link https://tools.ietf.org/html/rfc2181#section-5.2 $ttl = null; foreach ($message->answers as $answer) { if ($ttl === null || $answer->ttl < $ttl) { $ttl = $answer->ttl; } } if ($ttl === null) { $ttl = self::TTL; } return $ttl; } } executor = $base; } public function query(Query $query) { $key = $this->serializeQueryToIdentity($query); if (isset($this->pending[$key])) { // same query is already pending, so use shared reference to pending query $promise = $this->pending[$key]; ++$this->counts[$key]; } else { // no such query pending, so start new query and keep reference until it's fulfilled or rejected $promise = $this->executor->query($query); $this->pending[$key] = $promise; $this->counts[$key] = 1; $pending =& $this->pending; $counts =& $this->counts; $promise->then(function () use($key, &$pending, &$counts) { unset($pending[$key], $counts[$key]); }, function () use($key, &$pending, &$counts) { unset($pending[$key], $counts[$key]); }); } // Return a child promise awaiting the pending query. // Cancelling this child promise should only cancel the pending query // when no other child promise is awaiting the same query. $pending =& $this->pending; $counts =& $this->counts; return new Promise(function ($resolve, $reject) use($promise) { $promise->then($resolve, $reject); }, function () use(&$promise, $key, $query, &$pending, &$counts) { if (--$counts[$key] < 1) { unset($pending[$key], $counts[$key]); $promise->cancel(); $promise = null; } throw new \RuntimeException('DNS query for ' . $query->describe() . ' has been cancelled'); }); } private function serializeQueryToIdentity(Query $query) { return \sprintf('%s:%s:%s', $query->name, $query->type, $query->class); } } query( * new Query($name, Message::TYPE_AAAA, Message::CLASS_IN) * )->then(function (Message $message) { * foreach ($message->answers as $answer) { * echo 'IPv6: ' . $answer->data . PHP_EOL; * } * }, 'printf'); * ``` * * Note that this executor only implements the logic to select the correct * transport for the given DNS query. Implementing the correct transport logic, * implementing timeouts and any retry logic is left up to the given executors, * see also [`UdpTransportExecutor`](#udptransportexecutor) and * [`TcpTransportExecutor`](#tcptransportexecutor) for more details. * * Note that this executor is entirely async and as such allows you to execute * any number of queries concurrently. You should probably limit the number of * concurrent queries in your application or you're very likely going to face * rate limitations and bans on the resolver end. For many common applications, * you may want to avoid sending the same query multiple times when the first * one is still pending, so you will likely want to use this in combination with * a `CoopExecutor` like this: * * ```php * $executor = new CoopExecutor( * new SelectiveTransportExecutor( * $datagramExecutor, * $streamExecutor * ) * ); * ``` */ class SelectiveTransportExecutor implements ExecutorInterface { private $datagramExecutor; private $streamExecutor; public function __construct(ExecutorInterface $datagramExecutor, ExecutorInterface $streamExecutor) { $this->datagramExecutor = $datagramExecutor; $this->streamExecutor = $streamExecutor; } public function query(Query $query) { $stream = $this->streamExecutor; $pending = $this->datagramExecutor->query($query); return new Promise(function ($resolve, $reject) use(&$pending, $stream, $query) { $pending->then($resolve, function ($e) use(&$pending, $stream, $query, $resolve, $reject) { if ($e->getCode() === (\defined('SOCKET_EMSGSIZE') ? \SOCKET_EMSGSIZE : 90)) { $pending = $stream->query($query)->then($resolve, $reject); } else { $reject($e); } }); }, function () use(&$pending) { $pending->cancel(); $pending = null; }); } } executor = $executor; $this->fallback = $fallback; } public function query(Query $query) { $cancelled = \false; $fallback = $this->fallback; $promise = $this->executor->query($query); return new Promise(function ($resolve, $reject) use(&$promise, $fallback, $query, &$cancelled) { $promise->then($resolve, function (\Exception $e1) use($fallback, $query, $resolve, $reject, &$cancelled, &$promise) { // reject if primary resolution rejected due to cancellation if ($cancelled) { $reject($e1); return; } // start fallback query if primary query rejected $promise = $fallback->query($query)->then($resolve, function (\Exception $e2) use($e1, $reject) { $append = $e2->getMessage(); if (($pos = \strpos($append, ':')) !== \false) { $append = \substr($append, $pos + 2); } // reject with combined error message if both queries fail $reject(new \RuntimeException($e1->getMessage() . '. ' . $append)); }); }); }, function () use(&$promise, &$cancelled) { // cancel pending query (primary or fallback) $cancelled = \true; $promise->cancel(); }); } } hosts = $hosts; $this->fallback = $fallback; } public function query(Query $query) { if ($query->class === Message::CLASS_IN && ($query->type === Message::TYPE_A || $query->type === Message::TYPE_AAAA)) { // forward lookup for type A or AAAA $records = array(); $expectsColon = $query->type === Message::TYPE_AAAA; foreach ($this->hosts->getIpsForHost($query->name) as $ip) { // ensure this is an IPv4/IPV6 address according to query type if ((\strpos($ip, ':') !== \false) === $expectsColon) { $records[] = new Record($query->name, $query->type, $query->class, 0, $ip); } } if ($records) { return Promise\resolve(Message::createResponseWithAnswersForQuery($query, $records)); } } elseif ($query->class === Message::CLASS_IN && $query->type === Message::TYPE_PTR) { // reverse lookup: extract IPv4 or IPv6 from special `.arpa` domain $ip = $this->getIpFromHost($query->name); if ($ip !== null) { $records = array(); foreach ($this->hosts->getHostsForIp($ip) as $host) { $records[] = new Record($query->name, $query->type, $query->class, 0, $host); } if ($records) { return Promise\resolve(Message::createResponseWithAnswersForQuery($query, $records)); } } } return $this->fallback->query($query); } private function getIpFromHost($host) { if (\substr($host, -13) === '.in-addr.arpa') { // IPv4: read as IP and reverse bytes $ip = @\inet_pton(\substr($host, 0, -13)); if ($ip === \false || isset($ip[4])) { return null; } return \inet_ntop(\strrev($ip)); } elseif (\substr($host, -9) === '.ip6.arpa') { // IPv6: replace dots, reverse nibbles and interpret as hexadecimal string $ip = @\inet_ntop(\pack('H*', \strrev(\str_replace('.', '', \substr($host, 0, -9))))); if ($ip === \false) { return null; } return $ip; } else { return null; } } } name = $name; $this->type = $type; $this->class = $class; } /** * Describes the hostname and query type/class for this query * * The output format is supposed to be human readable and is subject to change. * The format is inspired by RFC 3597 when handling unkown types/classes. * * @return string "example.com (A)" or "example.com (CLASS0 TYPE1234)" * @link https://tools.ietf.org/html/rfc3597 */ public function describe() { $class = $this->class !== Message::CLASS_IN ? 'CLASS' . $this->class . ' ' : ''; $type = 'TYPE' . $this->type; $ref = new \ReflectionClass('_PHPStan_b22655c3f\\React\\Dns\\Model\\Message'); foreach ($ref->getConstants() as $name => $value) { if ($value === $this->type && \strpos($name, 'TYPE_') === 0) { $type = \substr($name, 5); break; } } return $this->name . ' (' . $class . $type . ')'; } } query($query)->then( * function (React\Dns\Model\Message $response) { * // response message successfully received * var_dump($response->rcode, $response->answers); * }, * function (Exception $error) { * // failed to query due to $error * } * ); * ``` * * The returned Promise MUST be implemented in such a way that it can be * cancelled when it is still pending. Cancelling a pending promise MUST * reject its value with an Exception. It SHOULD clean up any underlying * resources and references as applicable. * * ```php * $promise = $executor->query($query); * * $promise->cancel(); * ``` * * @param Query $query * @return \React\Promise\PromiseInterface<\React\Dns\Model\Message> * resolves with response message on success or rejects with an Exception on error */ public function query(Query $query); } query( * new Query($name, Message::TYPE_AAAA, Message::CLASS_IN) * )->then(function (Message $message) { * foreach ($message->answers as $answer) { * echo 'IPv6: ' . $answer->data . PHP_EOL; * } * }, 'printf'); * ``` * * See also [example #92](examples). * * Note that this executor does not implement a timeout, so you will very likely * want to use this in combination with a `TimeoutExecutor` like this: * * ```php * $executor = new TimeoutExecutor( * new TcpTransportExecutor($nameserver), * 3.0 * ); * ``` * * Unlike the `UdpTransportExecutor`, this class uses a reliable TCP/IP * transport, so you do not necessarily have to implement any retry logic. * * Note that this executor is entirely async and as such allows you to execute * queries concurrently. The first query will establish a TCP/IP socket * connection to the DNS server which will be kept open for a short period. * Additional queries will automatically reuse this existing socket connection * to the DNS server, will pipeline multiple requests over this single * connection and will keep an idle connection open for a short period. The * initial TCP/IP connection overhead may incur a slight delay if you only send * occasional queries – when sending a larger number of concurrent queries over * an existing connection, it becomes increasingly more efficient and avoids * creating many concurrent sockets like the UDP-based executor. You may still * want to limit the number of (concurrent) queries in your application or you * may be facing rate limitations and bans on the resolver end. For many common * applications, you may want to avoid sending the same query multiple times * when the first one is still pending, so you will likely want to use this in * combination with a `CoopExecutor` like this: * * ```php * $executor = new CoopExecutor( * new TimeoutExecutor( * new TcpTransportExecutor($nameserver), * 3.0 * ) * ); * ``` * * > Internally, this class uses PHP's TCP/IP sockets and does not take advantage * of [react/socket](https://github.com/reactphp/socket) purely for * organizational reasons to avoid a cyclic dependency between the two * packages. Higher-level components should take advantage of the Socket * component instead of reimplementing this socket logic from scratch. */ class TcpTransportExecutor implements ExecutorInterface { private $nameserver; private $loop; private $parser; private $dumper; /** * @var ?resource */ private $socket; /** * @var Deferred[] */ private $pending = array(); /** * @var string[] */ private $names = array(); /** * Maximum idle time when socket is current unused (i.e. no pending queries outstanding) * * If a new query is to be sent during the idle period, we can reuse the * existing socket without having to wait for a new socket connection. * This uses a rather small, hard-coded value to not keep any unneeded * sockets open and to not keep the loop busy longer than needed. * * A future implementation may take advantage of `edns-tcp-keepalive` to keep * the socket open for longer periods. This will likely require explicit * configuration because this may consume additional resources and also keep * the loop busy for longer than expected in some applications. * * @var float * @link https://tools.ietf.org/html/rfc7766#section-6.2.1 * @link https://tools.ietf.org/html/rfc7828 */ private $idlePeriod = 0.001; /** * @var ?\React\EventLoop\TimerInterface */ private $idleTimer; private $writeBuffer = ''; private $writePending = \false; private $readBuffer = ''; private $readPending = \false; /** @var string */ private $readChunk = 0xffff; /** * @param string $nameserver * @param ?LoopInterface $loop */ public function __construct($nameserver, $loop = null) { if (\strpos($nameserver, '[') === \false && \substr_count($nameserver, ':') >= 2 && \strpos($nameserver, '://') === \false) { // several colons, but not enclosed in square brackets => enclose IPv6 address in square brackets $nameserver = '[' . $nameserver . ']'; } $parts = \parse_url((\strpos($nameserver, '://') === \false ? 'tcp://' : '') . $nameserver); if (!isset($parts['scheme'], $parts['host']) || $parts['scheme'] !== 'tcp' || @\inet_pton(\trim($parts['host'], '[]')) === \false) { throw new \InvalidArgumentException('Invalid nameserver address given'); } if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 throw new \InvalidArgumentException('_PHPStan_b22655c3f\\Argument #2 ($loop) expected null|React\\EventLoop\\LoopInterface'); } $this->nameserver = 'tcp://' . $parts['host'] . ':' . (isset($parts['port']) ? $parts['port'] : 53); $this->loop = $loop ?: Loop::get(); $this->parser = new Parser(); $this->dumper = new BinaryDumper(); } public function query(Query $query) { $request = Message::createRequestForQuery($query); // keep shuffing message ID to avoid using the same message ID for two pending queries at the same time while (isset($this->pending[$request->id])) { $request->id = \mt_rand(0, 0xffff); // @codeCoverageIgnore } $queryData = $this->dumper->toBinary($request); $length = \strlen($queryData); if ($length > 0xffff) { return \_PHPStan_b22655c3f\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Query too large for TCP transport')); } $queryData = \pack('n', $length) . $queryData; if ($this->socket === null) { // create async TCP/IP connection (may take a while) $socket = @\stream_socket_client($this->nameserver, $errno, $errstr, 0, \STREAM_CLIENT_CONNECT | \STREAM_CLIENT_ASYNC_CONNECT); if ($socket === \false) { return \_PHPStan_b22655c3f\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Unable to connect to DNS server ' . $this->nameserver . ' (' . $errstr . ')', $errno)); } // set socket to non-blocking and wait for it to become writable (connection success/rejected) \stream_set_blocking($socket, \false); if (\function_exists('stream_set_chunk_size')) { \stream_set_chunk_size($socket, $this->readChunk); // @codeCoverageIgnore } $this->socket = $socket; } if ($this->idleTimer !== null) { $this->loop->cancelTimer($this->idleTimer); $this->idleTimer = null; } // wait for socket to become writable to actually write out data $this->writeBuffer .= $queryData; if (!$this->writePending) { $this->writePending = \true; $this->loop->addWriteStream($this->socket, array($this, 'handleWritable')); } $names =& $this->names; $that = $this; $deferred = new Deferred(function () use($that, &$names, $request) { // remove from list of pending names, but remember pending query $name = $names[$request->id]; unset($names[$request->id]); $that->checkIdle(); throw new CancellationException('DNS query for ' . $name . ' has been cancelled'); }); $this->pending[$request->id] = $deferred; $this->names[$request->id] = $query->describe(); return $deferred->promise(); } /** * @internal */ public function handleWritable() { if ($this->readPending === \false) { $name = @\stream_socket_get_name($this->socket, \true); if ($name === \false) { // Connection failed? Check socket error if available for underlying errno/errstr. // @codeCoverageIgnoreStart if (\function_exists('socket_import_stream')) { $socket = \socket_import_stream($this->socket); $errno = \socket_get_option($socket, \SOL_SOCKET, \SO_ERROR); $errstr = \socket_strerror($errno); } else { $errno = \defined('SOCKET_ECONNREFUSED') ? \SOCKET_ECONNREFUSED : 111; $errstr = 'Connection refused'; } // @codeCoverageIgnoreEnd $this->closeError('Unable to connect to DNS server ' . $this->nameserver . ' (' . $errstr . ')', $errno); return; } $this->readPending = \true; $this->loop->addReadStream($this->socket, array($this, 'handleRead')); } $errno = 0; $errstr = ''; \set_error_handler(function ($_, $error) use(&$errno, &$errstr) { // Match errstr from PHP's warning message. // fwrite(): Send of 327712 bytes failed with errno=32 Broken pipe \preg_match('/errno=(\\d+) (.+)/', $error, $m); $errno = isset($m[1]) ? (int) $m[1] : 0; $errstr = isset($m[2]) ? $m[2] : $error; }); $written = \fwrite($this->socket, $this->writeBuffer); \restore_error_handler(); if ($written === \false || $written === 0) { $this->closeError('Unable to send query to DNS server ' . $this->nameserver . ' (' . $errstr . ')', $errno); return; } if (isset($this->writeBuffer[$written])) { $this->writeBuffer = \substr($this->writeBuffer, $written); } else { $this->loop->removeWriteStream($this->socket); $this->writePending = \false; $this->writeBuffer = ''; } } /** * @internal */ public function handleRead() { // read one chunk of data from the DNS server // any error is fatal, this is a stream of TCP/IP data $chunk = @\fread($this->socket, $this->readChunk); if ($chunk === \false || $chunk === '') { $this->closeError('Connection to DNS server ' . $this->nameserver . ' lost'); return; } // reassemble complete message by concatenating all chunks. $this->readBuffer .= $chunk; // response message header contains at least 12 bytes while (isset($this->readBuffer[11])) { // read response message length from first 2 bytes and ensure we have length + data in buffer list(, $length) = \unpack('n', $this->readBuffer); if (!isset($this->readBuffer[$length + 1])) { return; } $data = \substr($this->readBuffer, 2, $length); $this->readBuffer = (string) \substr($this->readBuffer, $length + 2); try { $response = $this->parser->parseMessage($data); } catch (\Exception $e) { // reject all pending queries if we received an invalid message from remote server $this->closeError('Invalid message received from DNS server ' . $this->nameserver); return; } // reject all pending queries if we received an unexpected response ID or truncated response if (!isset($this->pending[$response->id]) || $response->tc) { $this->closeError('Invalid response message received from DNS server ' . $this->nameserver); return; } $deferred = $this->pending[$response->id]; unset($this->pending[$response->id], $this->names[$response->id]); $deferred->resolve($response); $this->checkIdle(); } } /** * @internal * @param string $reason * @param int $code */ public function closeError($reason, $code = 0) { $this->readBuffer = ''; if ($this->readPending) { $this->loop->removeReadStream($this->socket); $this->readPending = \false; } $this->writeBuffer = ''; if ($this->writePending) { $this->loop->removeWriteStream($this->socket); $this->writePending = \false; } if ($this->idleTimer !== null) { $this->loop->cancelTimer($this->idleTimer); $this->idleTimer = null; } @\fclose($this->socket); $this->socket = null; foreach ($this->names as $id => $name) { $this->pending[$id]->reject(new \RuntimeException('DNS query for ' . $name . ' failed: ' . $reason, $code)); } $this->pending = $this->names = array(); } /** * @internal */ public function checkIdle() { if ($this->idleTimer === null && !$this->names) { $that = $this; $this->idleTimer = $this->loop->addTimer($this->idlePeriod, function () use($that) { $that->closeError('Idle timeout'); }); } } } parse($data, 0); if ($message === null) { throw new InvalidArgumentException('Unable to parse binary message'); } return $message; } /** * @param string $data * @param int $consumed * @return ?Message */ private function parse($data, $consumed) { if (!isset($data[12 - 1])) { return null; } list($id, $fields, $qdCount, $anCount, $nsCount, $arCount) = \array_values(\unpack('n*', \substr($data, 0, 12))); $message = new Message(); $message->id = $id; $message->rcode = $fields & 0xf; $message->ra = ($fields >> 7 & 1) === 1; $message->rd = ($fields >> 8 & 1) === 1; $message->tc = ($fields >> 9 & 1) === 1; $message->aa = ($fields >> 10 & 1) === 1; $message->opcode = $fields >> 11 & 0xf; $message->qr = ($fields >> 15 & 1) === 1; $consumed += 12; // parse all questions for ($i = $qdCount; $i > 0; --$i) { list($question, $consumed) = $this->parseQuestion($data, $consumed); if ($question === null) { return null; } else { $message->questions[] = $question; } } // parse all answer records for ($i = $anCount; $i > 0; --$i) { list($record, $consumed) = $this->parseRecord($data, $consumed); if ($record === null) { return null; } else { $message->answers[] = $record; } } // parse all authority records for ($i = $nsCount; $i > 0; --$i) { list($record, $consumed) = $this->parseRecord($data, $consumed); if ($record === null) { return null; } else { $message->authority[] = $record; } } // parse all additional records for ($i = $arCount; $i > 0; --$i) { list($record, $consumed) = $this->parseRecord($data, $consumed); if ($record === null) { return null; } else { $message->additional[] = $record; } } return $message; } /** * @param string $data * @param int $consumed * @return array */ private function parseQuestion($data, $consumed) { list($labels, $consumed) = $this->readLabels($data, $consumed); if ($labels === null || !isset($data[$consumed + 4 - 1])) { return array(null, null); } list($type, $class) = \array_values(\unpack('n*', \substr($data, $consumed, 4))); $consumed += 4; return array(new Query(\implode('.', $labels), $type, $class), $consumed); } /** * @param string $data * @param int $consumed * @return array An array with a parsed Record on success or array with null if data is invalid/incomplete */ private function parseRecord($data, $consumed) { list($name, $consumed) = $this->readDomain($data, $consumed); if ($name === null || !isset($data[$consumed + 10 - 1])) { return array(null, null); } list($type, $class) = \array_values(\unpack('n*', \substr($data, $consumed, 4))); $consumed += 4; list($ttl) = \array_values(\unpack('N', \substr($data, $consumed, 4))); $consumed += 4; // TTL is a UINT32 that must not have most significant bit set for BC reasons if ($ttl < 0 || $ttl >= 1 << 31) { $ttl = 0; } list($rdLength) = \array_values(\unpack('n', \substr($data, $consumed, 2))); $consumed += 2; if (!isset($data[$consumed + $rdLength - 1])) { return array(null, null); } $rdata = null; $expected = $consumed + $rdLength; if (Message::TYPE_A === $type) { if ($rdLength === 4) { $rdata = \inet_ntop(\substr($data, $consumed, $rdLength)); $consumed += $rdLength; } } elseif (Message::TYPE_AAAA === $type) { if ($rdLength === 16) { $rdata = \inet_ntop(\substr($data, $consumed, $rdLength)); $consumed += $rdLength; } } elseif (Message::TYPE_CNAME === $type || Message::TYPE_PTR === $type || Message::TYPE_NS === $type) { list($rdata, $consumed) = $this->readDomain($data, $consumed); } elseif (Message::TYPE_TXT === $type || Message::TYPE_SPF === $type) { $rdata = array(); while ($consumed < $expected) { $len = \ord($data[$consumed]); $rdata[] = (string) \substr($data, $consumed + 1, $len); $consumed += $len + 1; } } elseif (Message::TYPE_MX === $type) { if ($rdLength > 2) { list($priority) = \array_values(\unpack('n', \substr($data, $consumed, 2))); list($target, $consumed) = $this->readDomain($data, $consumed + 2); $rdata = array('priority' => $priority, 'target' => $target); } } elseif (Message::TYPE_SRV === $type) { if ($rdLength > 6) { list($priority, $weight, $port) = \array_values(\unpack('n*', \substr($data, $consumed, 6))); list($target, $consumed) = $this->readDomain($data, $consumed + 6); $rdata = array('priority' => $priority, 'weight' => $weight, 'port' => $port, 'target' => $target); } } elseif (Message::TYPE_SSHFP === $type) { if ($rdLength > 2) { list($algorithm, $hash) = \array_values(\unpack('C*', \substr($data, $consumed, 2))); $fingerprint = \bin2hex(\substr($data, $consumed + 2, $rdLength - 2)); $consumed += $rdLength; $rdata = array('algorithm' => $algorithm, 'type' => $hash, 'fingerprint' => $fingerprint); } } elseif (Message::TYPE_SOA === $type) { list($mname, $consumed) = $this->readDomain($data, $consumed); list($rname, $consumed) = $this->readDomain($data, $consumed); if ($mname !== null && $rname !== null && isset($data[$consumed + 20 - 1])) { list($serial, $refresh, $retry, $expire, $minimum) = \array_values(\unpack('N*', \substr($data, $consumed, 20))); $consumed += 20; $rdata = array('mname' => $mname, 'rname' => $rname, 'serial' => $serial, 'refresh' => $refresh, 'retry' => $retry, 'expire' => $expire, 'minimum' => $minimum); } } elseif (Message::TYPE_OPT === $type) { $rdata = array(); while (isset($data[$consumed + 4 - 1])) { list($code, $length) = \array_values(\unpack('n*', \substr($data, $consumed, 4))); $value = (string) \substr($data, $consumed + 4, $length); if ($code === Message::OPT_TCP_KEEPALIVE && $value === '') { $value = null; } elseif ($code === Message::OPT_TCP_KEEPALIVE && $length === 2) { list($value) = \array_values(\unpack('n', $value)); $value = \round($value * 0.1, 1); } elseif ($code === Message::OPT_TCP_KEEPALIVE) { break; } $rdata[$code] = $value; $consumed += 4 + $length; } } elseif (Message::TYPE_CAA === $type) { if ($rdLength > 3) { list($flag, $tagLength) = \array_values(\unpack('C*', \substr($data, $consumed, 2))); if ($tagLength > 0 && $rdLength - 2 - $tagLength > 0) { $tag = \substr($data, $consumed + 2, $tagLength); $value = \substr($data, $consumed + 2 + $tagLength, $rdLength - 2 - $tagLength); $consumed += $rdLength; $rdata = array('flag' => $flag, 'tag' => $tag, 'value' => $value); } } } else { // unknown types simply parse rdata as an opaque binary string $rdata = \substr($data, $consumed, $rdLength); $consumed += $rdLength; } // ensure parsing record data consumes expact number of bytes indicated in record length if ($consumed !== $expected || $rdata === null) { return array(null, null); } return array(new Record($name, $type, $class, $ttl, $rdata), $consumed); } private function readDomain($data, $consumed) { list($labels, $consumed) = $this->readLabels($data, $consumed); if ($labels === null) { return array(null, null); } // use escaped notation for each label part, then join using dots return array(\implode('.', \array_map(function ($label) { return \addcslashes($label, "\x00.. ."); }, $labels)), $consumed); } /** * @param string $data * @param int $consumed * @param int $compressionDepth maximum depth for compressed labels to avoid unreasonable recursion * @return array */ private function readLabels($data, $consumed, $compressionDepth = 127) { $labels = array(); while (\true) { if (!isset($data[$consumed])) { return array(null, null); } $length = \ord($data[$consumed]); // end of labels reached if ($length === 0) { $consumed += 1; break; } // first two bits set? this is a compressed label (14 bit pointer offset) if (($length & 0xc0) === 0xc0 && isset($data[$consumed + 1]) && $compressionDepth) { $offset = ($length & ~0xc0) << 8 | \ord($data[$consumed + 1]); if ($offset >= $consumed) { return array(null, null); } $consumed += 2; list($newLabels) = $this->readLabels($data, $offset, $compressionDepth - 1); if ($newLabels === null) { return array(null, null); } $labels = \array_merge($labels, $newLabels); break; } // length MUST be 0-63 (6 bits only) and data has to be large enough if ($length & 0xc0 || !isset($data[$consumed + $length - 1])) { return array(null, null); } $labels[] = \substr($data, $consumed + 1, $length); $consumed += $length + 1; } return array($labels, $consumed); } } headerToBinary($message); $data .= $this->questionToBinary($message->questions); $data .= $this->recordsToBinary($message->answers); $data .= $this->recordsToBinary($message->authority); $data .= $this->recordsToBinary($message->additional); return $data; } /** * @param Message $message * @return string */ private function headerToBinary(Message $message) { $data = ''; $data .= \pack('n', $message->id); $flags = 0x0; $flags = $flags << 1 | ($message->qr ? 1 : 0); $flags = $flags << 4 | $message->opcode; $flags = $flags << 1 | ($message->aa ? 1 : 0); $flags = $flags << 1 | ($message->tc ? 1 : 0); $flags = $flags << 1 | ($message->rd ? 1 : 0); $flags = $flags << 1 | ($message->ra ? 1 : 0); $flags = $flags << 3 | 0; // skip unused zero bit $flags = $flags << 4 | $message->rcode; $data .= \pack('n', $flags); $data .= \pack('n', \count($message->questions)); $data .= \pack('n', \count($message->answers)); $data .= \pack('n', \count($message->authority)); $data .= \pack('n', \count($message->additional)); return $data; } /** * @param Query[] $questions * @return string */ private function questionToBinary(array $questions) { $data = ''; foreach ($questions as $question) { $data .= $this->domainNameToBinary($question->name); $data .= \pack('n*', $question->type, $question->class); } return $data; } /** * @param Record[] $records * @return string */ private function recordsToBinary(array $records) { $data = ''; foreach ($records as $record) { /* @var $record Record */ switch ($record->type) { case Message::TYPE_A: case Message::TYPE_AAAA: $binary = \inet_pton($record->data); break; case Message::TYPE_CNAME: case Message::TYPE_NS: case Message::TYPE_PTR: $binary = $this->domainNameToBinary($record->data); break; case Message::TYPE_TXT: case Message::TYPE_SPF: $binary = $this->textsToBinary($record->data); break; case Message::TYPE_MX: $binary = \pack('n', $record->data['priority']); $binary .= $this->domainNameToBinary($record->data['target']); break; case Message::TYPE_SRV: $binary = \pack('n*', $record->data['priority'], $record->data['weight'], $record->data['port']); $binary .= $this->domainNameToBinary($record->data['target']); break; case Message::TYPE_SOA: $binary = $this->domainNameToBinary($record->data['mname']); $binary .= $this->domainNameToBinary($record->data['rname']); $binary .= \pack('N*', $record->data['serial'], $record->data['refresh'], $record->data['retry'], $record->data['expire'], $record->data['minimum']); break; case Message::TYPE_CAA: $binary = \pack('C*', $record->data['flag'], \strlen($record->data['tag'])); $binary .= $record->data['tag']; $binary .= $record->data['value']; break; case Message::TYPE_SSHFP: $binary = \pack('CCH*', $record->data['algorithm'], $record->data['type'], $record->data['fingerprint']); break; case Message::TYPE_OPT: $binary = ''; foreach ($record->data as $opt => $value) { if ($opt === Message::OPT_TCP_KEEPALIVE && $value !== null) { $value = \pack('n', \round($value * 10)); } $binary .= \pack('n*', $opt, \strlen((string) $value)) . $value; } break; default: // RDATA is already stored as binary value for unknown record types $binary = $record->data; } $data .= $this->domainNameToBinary($record->name); $data .= \pack('nnNn', $record->type, $record->class, $record->ttl, \strlen($binary)); $data .= $binary; } return $data; } /** * @param string[] $texts * @return string */ private function textsToBinary(array $texts) { $data = ''; foreach ($texts as $text) { $data .= \chr(\strlen($text)) . $text; } return $data; } /** * @param string $host * @return string */ private function domainNameToBinary($host) { if ($host === '') { return "\x00"; } // break up domain name at each dot that is not preceeded by a backslash (escaped notation) return $this->textsToBinary(\array_map('stripcslashes', \preg_split('/(?decorateHostsFileExecutor($this->createExecutor($config, $loop ?: Loop::get())); return new Resolver($executor); } /** * Creates a cached DNS resolver instance for the given DNS config and cache * * As of v1.7.0 it's recommended to pass a `Config` object instead of a * single nameserver address. If the given config contains more than one DNS * nameserver, all DNS nameservers will be used in order. The primary DNS * server will always be used first before falling back to the secondary or * tertiary DNS server. * * @param Config|string $config DNS Config object (recommended) or single nameserver address * @param ?LoopInterface $loop * @param ?CacheInterface $cache * @return \React\Dns\Resolver\ResolverInterface * @throws \InvalidArgumentException for invalid DNS server address * @throws \UnderflowException when given DNS Config object has an empty list of nameservers */ public function createCached($config, $loop = null, $cache = null) { if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 throw new \InvalidArgumentException('_PHPStan_b22655c3f\\Argument #2 ($loop) expected null|React\\EventLoop\\LoopInterface'); } if ($cache !== null && !$cache instanceof CacheInterface) { // manual type check to support legacy PHP < 7.1 throw new \InvalidArgumentException('_PHPStan_b22655c3f\\Argument #3 ($cache) expected null|React\\Cache\\CacheInterface'); } // default to keeping maximum of 256 responses in cache unless explicitly given if (!$cache instanceof CacheInterface) { $cache = new ArrayCache(256); } $executor = $this->createExecutor($config, $loop ?: Loop::get()); $executor = new CachingExecutor($executor, $cache); $executor = $this->decorateHostsFileExecutor($executor); return new Resolver($executor); } /** * Tries to load the hosts file and decorates the given executor on success * * @param ExecutorInterface $executor * @return ExecutorInterface * @codeCoverageIgnore */ private function decorateHostsFileExecutor(ExecutorInterface $executor) { try { $executor = new HostsFileExecutor(HostsFile::loadFromPathBlocking(), $executor); } catch (\RuntimeException $e) { // ignore this file if it can not be loaded } // Windows does not store localhost in hosts file by default but handles this internally // To compensate for this, we explicitly use hard-coded defaults for localhost if (\DIRECTORY_SEPARATOR === '\\') { $executor = new HostsFileExecutor(new HostsFile("127.0.0.1 localhost\n::1 localhost"), $executor); } return $executor; } /** * @param Config|string $nameserver * @param LoopInterface $loop * @return CoopExecutor * @throws \InvalidArgumentException for invalid DNS server address * @throws \UnderflowException when given DNS Config object has an empty list of nameservers */ private function createExecutor($nameserver, LoopInterface $loop) { if ($nameserver instanceof Config) { if (!$nameserver->nameservers) { throw new \UnderflowException('Empty config with no DNS servers'); } // Hard-coded to check up to 3 DNS servers to match default limits in place in most systems (see MAXNS config). // Note to future self: Recursion isn't too hard, but how deep do we really want to go? $primary = \reset($nameserver->nameservers); $secondary = \next($nameserver->nameservers); $tertiary = \next($nameserver->nameservers); if ($tertiary !== \false) { // 3 DNS servers given => nest first with fallback for second and third return new CoopExecutor(new RetryExecutor(new FallbackExecutor($this->createSingleExecutor($primary, $loop), new FallbackExecutor($this->createSingleExecutor($secondary, $loop), $this->createSingleExecutor($tertiary, $loop))))); } elseif ($secondary !== \false) { // 2 DNS servers given => fallback from first to second return new CoopExecutor(new RetryExecutor(new FallbackExecutor($this->createSingleExecutor($primary, $loop), $this->createSingleExecutor($secondary, $loop)))); } else { // 1 DNS server given => use single executor $nameserver = $primary; } } return new CoopExecutor(new RetryExecutor($this->createSingleExecutor($nameserver, $loop))); } /** * @param string $nameserver * @param LoopInterface $loop * @return ExecutorInterface * @throws \InvalidArgumentException for invalid DNS server address */ private function createSingleExecutor($nameserver, LoopInterface $loop) { $parts = \parse_url($nameserver); if (isset($parts['scheme']) && $parts['scheme'] === 'tcp') { $executor = $this->createTcpExecutor($nameserver, $loop); } elseif (isset($parts['scheme']) && $parts['scheme'] === 'udp') { $executor = $this->createUdpExecutor($nameserver, $loop); } else { $executor = new SelectiveTransportExecutor($this->createUdpExecutor($nameserver, $loop), $this->createTcpExecutor($nameserver, $loop)); } return $executor; } /** * @param string $nameserver * @param LoopInterface $loop * @return TimeoutExecutor * @throws \InvalidArgumentException for invalid DNS server address */ private function createTcpExecutor($nameserver, LoopInterface $loop) { return new TimeoutExecutor(new TcpTransportExecutor($nameserver, $loop), 5.0, $loop); } /** * @param string $nameserver * @param LoopInterface $loop * @return TimeoutExecutor * @throws \InvalidArgumentException for invalid DNS server address */ private function createUdpExecutor($nameserver, LoopInterface $loop) { return new TimeoutExecutor(new UdpTransportExecutor($nameserver, $loop), 5.0, $loop); } } executor = $executor; } public function resolve($domain) { return $this->resolveAll($domain, Message::TYPE_A)->then(function (array $ips) { return $ips[\array_rand($ips)]; }); } public function resolveAll($domain, $type) { $query = new Query($domain, $type, Message::CLASS_IN); $that = $this; return $this->executor->query($query)->then(function (Message $response) use($query, $that) { return $that->extractValues($query, $response); }); } /** * [Internal] extract all resource record values from response for this query * * @param Query $query * @param Message $response * @return array * @throws RecordNotFoundException when response indicates an error or contains no data * @internal */ public function extractValues(Query $query, Message $response) { // reject if response code indicates this is an error response message $code = $response->rcode; if ($code !== Message::RCODE_OK) { switch ($code) { case Message::RCODE_FORMAT_ERROR: $message = 'Format Error'; break; case Message::RCODE_SERVER_FAILURE: $message = 'Server Failure'; break; case Message::RCODE_NAME_ERROR: $message = 'Non-Existent Domain / NXDOMAIN'; break; case Message::RCODE_NOT_IMPLEMENTED: $message = 'Not Implemented'; break; case Message::RCODE_REFUSED: $message = 'Refused'; break; default: $message = 'Unknown error response code ' . $code; } throw new RecordNotFoundException('DNS query for ' . $query->describe() . ' returned an error response (' . $message . ')', $code); } $answers = $response->answers; $addresses = $this->valuesByNameAndType($answers, $query->name, $query->type); // reject if we did not receive a valid answer (domain is valid, but no record for this type could be found) if (0 === \count($addresses)) { throw new RecordNotFoundException('DNS query for ' . $query->describe() . ' did not return a valid answer (NOERROR / NODATA)'); } return \array_values($addresses); } /** * @param \React\Dns\Model\Record[] $answers * @param string $name * @param int $type * @return array */ private function valuesByNameAndType(array $answers, $name, $type) { // return all record values for this name and type (if any) $named = $this->filterByName($answers, $name); $records = $this->filterByType($named, $type); if ($records) { return $this->mapRecordData($records); } // no matching records found? check if there are any matching CNAMEs instead $cnameRecords = $this->filterByType($named, Message::TYPE_CNAME); if ($cnameRecords) { $cnames = $this->mapRecordData($cnameRecords); foreach ($cnames as $cname) { $records = \array_merge($records, $this->valuesByNameAndType($answers, $cname, $type)); } } return $records; } private function filterByName(array $answers, $name) { return $this->filterByField($answers, 'name', $name); } private function filterByType(array $answers, $type) { return $this->filterByField($answers, 'type', $type); } private function filterByField(array $answers, $field, $value) { $value = \strtolower($value); return \array_filter($answers, function ($answer) use($field, $value) { return $value === \strtolower($answer->{$field}); }); } private function mapRecordData(array $records) { return \array_map(function ($record) { return $record->data; }, $records); } } resolve('reactphp.org')->then(function ($ip) { * echo 'IP for reactphp.org is ' . $ip . PHP_EOL; * }); * ``` * * This is one of the main methods in this package. It sends a DNS query * for the given $domain name to your DNS server and returns a single IP * address on success. * * If the DNS server sends a DNS response message that contains more than * one IP address for this query, it will randomly pick one of the IP * addresses from the response. If you want the full list of IP addresses * or want to send a different type of query, you should use the * [`resolveAll()`](#resolveall) method instead. * * If the DNS server sends a DNS response message that indicates an error * code, this method will reject with a `RecordNotFoundException`. Its * message and code can be used to check for the response code. * * If the DNS communication fails and the server does not respond with a * valid response message, this message will reject with an `Exception`. * * Pending DNS queries can be cancelled by cancelling its pending promise like so: * * ```php * $promise = $resolver->resolve('reactphp.org'); * * $promise->cancel(); * ``` * * @param string $domain * @return \React\Promise\PromiseInterface * resolves with a single IP address on success or rejects with an Exception on error. */ public function resolve($domain); /** * Resolves all record values for the given $domain name and query $type. * * ```php * $resolver->resolveAll('reactphp.org', Message::TYPE_A)->then(function ($ips) { * echo 'IPv4 addresses for reactphp.org ' . implode(', ', $ips) . PHP_EOL; * }); * * $resolver->resolveAll('reactphp.org', Message::TYPE_AAAA)->then(function ($ips) { * echo 'IPv6 addresses for reactphp.org ' . implode(', ', $ips) . PHP_EOL; * }); * ``` * * This is one of the main methods in this package. It sends a DNS query * for the given $domain name to your DNS server and returns a list with all * record values on success. * * If the DNS server sends a DNS response message that contains one or more * records for this query, it will return a list with all record values * from the response. You can use the `Message::TYPE_*` constants to control * which type of query will be sent. Note that this method always returns a * list of record values, but each record value type depends on the query * type. For example, it returns the IPv4 addresses for type `A` queries, * the IPv6 addresses for type `AAAA` queries, the hostname for type `NS`, * `CNAME` and `PTR` queries and structured data for other queries. See also * the `Record` documentation for more details. * * If the DNS server sends a DNS response message that indicates an error * code, this method will reject with a `RecordNotFoundException`. Its * message and code can be used to check for the response code. * * If the DNS communication fails and the server does not respond with a * valid response message, this message will reject with an `Exception`. * * Pending DNS queries can be cancelled by cancelling its pending promise like so: * * ```php * $promise = $resolver->resolveAll('reactphp.org', Message::TYPE_AAAA); * * $promise->cancel(); * ``` * * @param string $domain * @return \React\Promise\PromiseInterface * Resolves with all record values on success or rejects with an Exception on error. */ public function resolveAll($domain, $type); } contents = $contents; } /** * Returns all IPs for the given hostname * * @param string $name * @return string[] */ public function getIpsForHost($name) { $name = \strtolower($name); $ips = array(); foreach (\preg_split('/\\r?\\n/', $this->contents) as $line) { $parts = \preg_split('/\\s+/', $line); $ip = \array_shift($parts); if ($parts && \array_search($name, $parts) !== \false) { // remove IPv6 zone ID (`fe80::1%lo0` => `fe80:1`) if (\strpos($ip, ':') !== \false && ($pos = \strpos($ip, '%')) !== \false) { $ip = \substr($ip, 0, $pos); } if (@\inet_pton($ip) !== \false) { $ips[] = $ip; } } } return $ips; } /** * Returns all hostnames for the given IPv4 or IPv6 address * * @param string $ip * @return string[] */ public function getHostsForIp($ip) { // check binary representation of IP to avoid string case and short notation $ip = @\inet_pton($ip); if ($ip === \false) { return array(); } $names = array(); foreach (\preg_split('/\\r?\\n/', $this->contents) as $line) { $parts = \preg_split('/\\s+/', $line, -1, \PREG_SPLIT_NO_EMPTY); $addr = (string) \array_shift($parts); // remove IPv6 zone ID (`fe80::1%lo0` => `fe80:1`) if (\strpos($addr, ':') !== \false && ($pos = \strpos($addr, '%')) !== \false) { $addr = \substr($addr, 0, $pos); } if (@\inet_pton($addr) === $ip) { foreach ($parts as $part) { $names[] = $part; } } } return $names; } } `fe80:1`) if (\strpos($ip, ':') !== \false && ($pos = \strpos($ip, '%')) !== \false) { $ip = \substr($ip, 0, $pos); } if (@\inet_pton($ip) !== \false) { $config->nameservers[] = $ip; } } return $config; } /** * Loads the DNS configurations from Windows's WMIC (from the given command or default command) * * Note that this method blocks while loading the given command and should * thus be used with care! While this should be relatively fast for normal * WMIC commands, it remains unknown if this may block under certain * circumstances. In particular, this method should only be executed before * the loop starts, not while it is running. * * Note that this method will only try to execute the given command try to * parse its output, irrespective of whether this command exists. In * particular, this command is only available on Windows. Currently, this * will only parse valid nameserver entries from the command output and will * ignore all other output without complaining. * * Note that the previous section implies that this may return an empty * `Config` object if no valid nameserver entries can be found. * * @param ?string $command (advanced) should not be given (NULL) unless you know what you're doing * @return self * @link https://ss64.com/nt/wmic.html */ public static function loadWmicBlocking($command = null) { $contents = \shell_exec($command === null ? 'wmic NICCONFIG get "DNSServerSearchOrder" /format:CSV' : $command); \preg_match_all('/(?<=[{;,"])([\\da-f.:]{4,})(?=[};,"])/i', $contents, $matches); $config = new self(); $config->nameservers = $matches[1]; return $config; } public $nameservers = array(); } The MIT License (MIT) Copyright (c) 2012 Christian Lück, Cees-Jan Kiewiet, Jan Sorgalla, Chris Boden, Igor Wiedler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. get('foo') * ->then('var_dump'); * ``` * * This example fetches the value of the key `foo` and passes it to the * `var_dump` function. You can use any of the composition provided by * [promises](https://github.com/reactphp/promise). * * @param string $key * @param mixed $default Default value to return for cache miss or null if not given. * @return PromiseInterface */ public function get($key, $default = null); /** * Stores an item in the cache. * * This method will resolve with `true` on success or `false` when an error * occurs. If the cache implementation has to go over the network to store * it, it may take a while. * * The optional `$ttl` parameter sets the maximum time-to-live in seconds * for this cache item. If this parameter is omitted (or `null`), the item * will stay in the cache for as long as the underlying implementation * supports. Trying to access an expired cache item results in a cache miss, * see also [`get()`](#get). * * ```php * $cache->set('foo', 'bar', 60); * ``` * * This example eventually sets the value of the key `foo` to `bar`. If it * already exists, it is overridden. * * This interface does not enforce any particular TTL resolution, so special * care may have to be taken if you rely on very high precision with * millisecond accuracy or below. Cache implementations SHOULD work on a * best effort basis and SHOULD provide at least second accuracy unless * otherwise noted. Many existing cache implementations are known to provide * microsecond or millisecond accuracy, but it's generally not recommended * to rely on this high precision. * * This interface suggests that cache implementations SHOULD use a monotonic * time source if available. Given that a monotonic time source is only * available as of PHP 7.3 by default, cache implementations MAY fall back * to using wall-clock time. * While this does not affect many common use cases, this is an important * distinction for programs that rely on a high time precision or on systems * that are subject to discontinuous time adjustments (time jumps). * This means that if you store a cache item with a TTL of 30s and then * adjust your system time forward by 20s, the cache item SHOULD still * expire in 30s. * * @param string $key * @param mixed $value * @param ?float $ttl * @return PromiseInterface Returns a promise which resolves to `true` on success or `false` on error */ public function set($key, $value, $ttl = null); /** * Deletes an item from the cache. * * This method will resolve with `true` on success or `false` when an error * occurs. When no item for `$key` is found in the cache, it also resolves * to `true`. If the cache implementation has to go over the network to * delete it, it may take a while. * * ```php * $cache->delete('foo'); * ``` * * This example eventually deletes the key `foo` from the cache. As with * `set()`, this may not happen instantly and a promise is returned to * provide guarantees whether or not the item has been removed from cache. * * @param string $key * @return PromiseInterface Returns a promise which resolves to `true` on success or `false` on error */ public function delete($key); /** * Retrieves multiple cache items by their unique keys. * * This method will resolve with an array of cached values on success or with the * given `$default` value when an item can not be found or when an error occurs. * Similarly, an expired cache item (once the time-to-live is expired) is * considered a cache miss. * * ```php * $cache->getMultiple(array('name', 'age'))->then(function (array $values) { * $name = $values['name'] ?? 'User'; * $age = $values['age'] ?? 'n/a'; * * echo $name . ' is ' . $age . PHP_EOL; * }); * ``` * * This example fetches the cache items for the `name` and `age` keys and * prints some example output. You can use any of the composition provided * by [promises](https://github.com/reactphp/promise). * * @param string[] $keys A list of keys that can obtained in a single operation. * @param mixed $default Default value to return for keys that do not exist. * @return PromiseInterface Returns a promise which resolves to an `array` of cached values */ public function getMultiple(array $keys, $default = null); /** * Persists a set of key => value pairs in the cache, with an optional TTL. * * This method will resolve with `true` on success or `false` when an error * occurs. If the cache implementation has to go over the network to store * it, it may take a while. * * The optional `$ttl` parameter sets the maximum time-to-live in seconds * for these cache items. If this parameter is omitted (or `null`), these items * will stay in the cache for as long as the underlying implementation * supports. Trying to access an expired cache items results in a cache miss, * see also [`get()`](#get). * * ```php * $cache->setMultiple(array('foo' => 1, 'bar' => 2), 60); * ``` * * This example eventually sets the list of values - the key `foo` to 1 value * and the key `bar` to 2. If some of the keys already exist, they are overridden. * * @param array $values A list of key => value pairs for a multiple-set operation. * @param ?float $ttl Optional. The TTL value of this item. * @return PromiseInterface Returns a promise which resolves to `true` on success or `false` on error */ public function setMultiple(array $values, $ttl = null); /** * Deletes multiple cache items in a single operation. * * @param string[] $keys A list of string-based keys to be deleted. * @return PromiseInterface Returns a promise which resolves to `true` on success or `false` on error */ public function deleteMultiple(array $keys); /** * Wipes clean the entire cache. * * @return PromiseInterface Returns a promise which resolves to `true` on success or `false` on error */ public function clear(); /** * Determines whether an item is present in the cache. * * This method will resolve with `true` on success or `false` when no item can be found * or when an error occurs. Similarly, an expired cache item (once the time-to-live * is expired) is considered a cache miss. * * ```php * $cache * ->has('foo') * ->then('var_dump'); * ``` * * This example checks if the value of the key `foo` is set in the cache and passes * the result to the `var_dump` function. You can use any of the composition provided by * [promises](https://github.com/reactphp/promise). * * NOTE: It is recommended that has() is only to be used for cache warming type purposes * and not to be used within your live applications operations for get/set, as this method * is subject to a race condition where your has() will return true and immediately after, * another script can remove it making the state of your app out of date. * * @param string $key The cache item key. * @return PromiseInterface Returns a promise which resolves to `true` on success or `false` on error */ public function has($key); } set('foo', 'bar'); * ``` * * Its constructor accepts an optional `?int $limit` parameter to limit the * maximum number of entries to store in the LRU cache. If you add more * entries to this instance, it will automatically take care of removing * the one that was least recently used (LRU). * * For example, this snippet will overwrite the first value and only store * the last two entries: * * ```php * $cache = new ArrayCache(2); * * $cache->set('foo', '1'); * $cache->set('bar', '2'); * $cache->set('baz', '3'); * ``` * * This cache implementation is known to rely on wall-clock time to schedule * future cache expiration times when using any version before PHP 7.3, * because a monotonic time source is only available as of PHP 7.3 (`hrtime()`). * While this does not affect many common use cases, this is an important * distinction for programs that rely on a high time precision or on systems * that are subject to discontinuous time adjustments (time jumps). * This means that if you store a cache item with a TTL of 30s on PHP < 7.3 * and then adjust your system time forward by 20s, the cache item may * expire in 10s. See also [`set()`](#set) for more details. * * @param int|null $limit maximum number of entries to store in the LRU cache */ public function __construct($limit = null) { $this->limit = $limit; // prefer high-resolution timer, available as of PHP 7.3+ $this->supportsHighResolution = \function_exists('hrtime'); } public function get($key, $default = null) { // delete key if it is already expired => below will detect this as a cache miss if (isset($this->expires[$key]) && $this->now() - $this->expires[$key] > 0) { unset($this->data[$key], $this->expires[$key]); } if (!\array_key_exists($key, $this->data)) { return Promise\resolve($default); } // remove and append to end of array to keep track of LRU info $value = $this->data[$key]; unset($this->data[$key]); $this->data[$key] = $value; return Promise\resolve($value); } public function set($key, $value, $ttl = null) { // unset before setting to ensure this entry will be added to end of array (LRU info) unset($this->data[$key]); $this->data[$key] = $value; // sort expiration times if TTL is given (first will expire first) unset($this->expires[$key]); if ($ttl !== null) { $this->expires[$key] = $this->now() + $ttl; \asort($this->expires); } // ensure size limit is not exceeded or remove first entry from array if ($this->limit !== null && \count($this->data) > $this->limit) { // first try to check if there's any expired entry // expiration times are sorted, so we can simply look at the first one \reset($this->expires); $key = \key($this->expires); // check to see if the first in the list of expiring keys is already expired // if the first key is not expired, we have to overwrite by using LRU info if ($key === null || $this->now() - $this->expires[$key] < 0) { \reset($this->data); $key = \key($this->data); } unset($this->data[$key], $this->expires[$key]); } return Promise\resolve(\true); } public function delete($key) { unset($this->data[$key], $this->expires[$key]); return Promise\resolve(\true); } public function getMultiple(array $keys, $default = null) { $values = array(); foreach ($keys as $key) { $values[$key] = $this->get($key, $default); } return Promise\all($values); } public function setMultiple(array $values, $ttl = null) { foreach ($values as $key => $value) { $this->set($key, $value, $ttl); } return Promise\resolve(\true); } public function deleteMultiple(array $keys) { foreach ($keys as $key) { unset($this->data[$key], $this->expires[$key]); } return Promise\resolve(\true); } public function clear() { $this->data = array(); $this->expires = array(); return Promise\resolve(\true); } public function has($key) { // delete key if it is already expired if (isset($this->expires[$key]) && $this->now() - $this->expires[$key] > 0) { unset($this->data[$key], $this->expires[$key]); } if (!\array_key_exists($key, $this->data)) { return Promise\resolve(\false); } // remove and append to end of array to keep track of LRU info $value = $this->data[$key]; unset($this->data[$key]); $this->data[$key] = $value; return Promise\resolve(\true); } /** * @return float */ private function now() { return $this->supportsHighResolution ? \hrtime(\true) * 1.0E-9 : \microtime(\true); } } The MIT License (MIT) Copyright (c) 2012 Christian Lück, Cees-Jan Kiewiet, Jan Sorgalla, Chris Boden, Igor Wiedler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Note that higher-level implementations of this interface may choose to * define additional events with dedicated semantics not defined as part of * this low-level stream specification. Conformance with these event semantics * is out of scope for this interface, so you may also have to refer to the * documentation of such a higher-level implementation. * * @see ReadableStreamInterface * @see WritableStreamInterface */ interface DuplexStreamInterface extends ReadableStreamInterface, WritableStreamInterface { } NO-OP if (!$source->isReadable()) { return $dest; } // destination not writable => just pause() source if (!$dest->isWritable()) { $source->pause(); return $dest; } $dest->emit('pipe', array($source)); // forward all source data events as $dest->write() $source->on('data', $dataer = function ($data) use($source, $dest) { $feedMore = $dest->write($data); if (\false === $feedMore) { $source->pause(); } }); $dest->on('close', function () use($source, $dataer) { $source->removeListener('data', $dataer); $source->pause(); }); // forward destination drain as $source->resume() $dest->on('drain', $drainer = function () use($source) { $source->resume(); }); $source->on('close', function () use($dest, $drainer) { $dest->removeListener('drain', $drainer); }); // forward end event from source as $dest->end() $end = isset($options['end']) ? $options['end'] : \true; if ($end) { $source->on('end', $ender = function () use($dest) { $dest->end(); }); $dest->on('close', function () use($source, $ender) { $source->removeListener('end', $ender); }); } return $dest; } public static function forwardEvents($source, $target, array $events) { foreach ($events as $event) { $source->on($event, function () use($event, $target) { $target->emit($event, \func_get_args()); }); } } } isLegacyPipe($stream)) { \stream_set_read_buffer($stream, 0); } $this->stream = $stream; $this->loop = $loop ?: Loop::get(); $this->bufferSize = $readChunkSize === null ? 65536 : (int) $readChunkSize; $this->resume(); } public function isReadable() { return !$this->closed; } public function pause() { if ($this->listening) { $this->loop->removeReadStream($this->stream); $this->listening = \false; } } public function resume() { if (!$this->listening && !$this->closed) { $this->loop->addReadStream($this->stream, array($this, 'handleData')); $this->listening = \true; } } public function pipe(WritableStreamInterface $dest, array $options = array()) { return Util::pipe($this, $dest, $options); } public function close() { if ($this->closed) { return; } $this->closed = \true; $this->emit('close'); $this->pause(); $this->removeAllListeners(); if (\is_resource($this->stream)) { \fclose($this->stream); } } /** @internal */ public function handleData() { $error = null; \set_error_handler(function ($errno, $errstr, $errfile, $errline) use(&$error) { $error = new \ErrorException($errstr, 0, $errno, $errfile, $errline); }); $data = \stream_get_contents($this->stream, $this->bufferSize); \restore_error_handler(); if ($error !== null) { $this->emit('error', array(new \RuntimeException('Unable to read from stream: ' . $error->getMessage(), 0, $error))); $this->close(); return; } if ($data !== '') { $this->emit('data', array($data)); } elseif (\feof($this->stream)) { // no data read => we reached the end and close the stream $this->emit('end'); $this->close(); } } /** * Returns whether this is a pipe resource in a legacy environment * * This works around a legacy PHP bug (#61019) that was fixed in PHP 5.4.28+ * and PHP 5.5.12+ and newer. * * @param resource $resource * @return bool * @link https://github.com/reactphp/child-process/issues/40 * * @codeCoverageIgnore */ private function isLegacyPipe($resource) { if (\PHP_VERSION_ID < 50428 || \PHP_VERSION_ID >= 50500 && \PHP_VERSION_ID < 50512) { $meta = \stream_get_meta_data($resource); if (isset($meta['stream_type']) && $meta['stream_type'] === 'STDIO') { return \true; } } return \false; } } on('data', function ($data) { * echo $data; * }); * ``` * * This event MAY be emitted any number of times, which may be zero times if * this stream does not send any data at all. * It SHOULD not be emitted after an `end` or `close` event. * * The given `$data` argument may be of mixed type, but it's usually * recommended it SHOULD be a `string` value or MAY use a type that allows * representation as a `string` for maximum compatibility. * * Many common streams (such as a TCP/IP connection or a file-based stream) * will emit the raw (binary) payload data that is received over the wire as * chunks of `string` values. * * Due to the stream-based nature of this, the sender may send any number * of chunks with varying sizes. There are no guarantees that these chunks * will be received with the exact same framing the sender intended to send. * In other words, many lower-level protocols (such as TCP/IP) transfer the * data in chunks that may be anywhere between single-byte values to several * dozens of kilobytes. You may want to apply a higher-level protocol to * these low-level data chunks in order to achieve proper message framing. * * end event: * The `end` event will be emitted once the source stream has successfully * reached the end of the stream (EOF). * * ```php * $stream->on('end', function () { * echo 'END'; * }); * ``` * * This event SHOULD be emitted once or never at all, depending on whether * a successful end was detected. * It SHOULD NOT be emitted after a previous `end` or `close` event. * It MUST NOT be emitted if the stream closes due to a non-successful * end, such as after a previous `error` event. * * After the stream is ended, it MUST switch to non-readable mode, * see also `isReadable()`. * * This event will only be emitted if the *end* was reached successfully, * not if the stream was interrupted by an unrecoverable error or explicitly * closed. Not all streams know this concept of a "successful end". * Many use-cases involve detecting when the stream closes (terminates) * instead, in this case you should use the `close` event. * After the stream emits an `end` event, it SHOULD usually be followed by a * `close` event. * * Many common streams (such as a TCP/IP connection or a file-based stream) * will emit this event if either the remote side closes the connection or * a file handle was successfully read until reaching its end (EOF). * * Note that this event should not be confused with the `end()` method. * This event defines a successful end *reading* from a source stream, while * the `end()` method defines *writing* a successful end to a destination * stream. * * error event: * The `error` event will be emitted once a fatal error occurs, usually while * trying to read from this stream. * The event receives a single `Exception` argument for the error instance. * * ```php * $stream->on('error', function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * This event SHOULD be emitted once the stream detects a fatal error, such * as a fatal transmission error or after an unexpected `data` or premature * `end` event. * It SHOULD NOT be emitted after a previous `error`, `end` or `close` event. * It MUST NOT be emitted if this is not a fatal error condition, such as * a temporary network issue that did not cause any data to be lost. * * After the stream errors, it MUST close the stream and SHOULD thus be * followed by a `close` event and then switch to non-readable mode, see * also `close()` and `isReadable()`. * * Many common streams (such as a TCP/IP connection or a file-based stream) * only deal with data transmission and do not make assumption about data * boundaries (such as unexpected `data` or premature `end` events). * In other words, many lower-level protocols (such as TCP/IP) may choose * to only emit this for a fatal transmission error once and will then * close (terminate) the stream in response. * * If this stream is a `DuplexStreamInterface`, you should also notice * how the writable side of the stream also implements an `error` event. * In other words, an error may occur while either reading or writing the * stream which should result in the same error processing. * * close event: * The `close` event will be emitted once the stream closes (terminates). * * ```php * $stream->on('close', function () { * echo 'CLOSED'; * }); * ``` * * This event SHOULD be emitted once or never at all, depending on whether * the stream ever terminates. * It SHOULD NOT be emitted after a previous `close` event. * * After the stream is closed, it MUST switch to non-readable mode, * see also `isReadable()`. * * Unlike the `end` event, this event SHOULD be emitted whenever the stream * closes, irrespective of whether this happens implicitly due to an * unrecoverable error or explicitly when either side closes the stream. * If you only want to detect a *successful* end, you should use the `end` * event instead. * * Many common streams (such as a TCP/IP connection or a file-based stream) * will likely choose to emit this event after reading a *successful* `end` * event or after a fatal transmission `error` event. * * If this stream is a `DuplexStreamInterface`, you should also notice * how the writable side of the stream also implements a `close` event. * In other words, after receiving this event, the stream MUST switch into * non-writable AND non-readable mode, see also `isWritable()`. * Note that this event should not be confused with the `end` event. * * The event callback functions MUST be a valid `callable` that obeys strict * parameter definitions and MUST accept event parameters exactly as documented. * The event callback functions MUST NOT throw an `Exception`. * The return value of the event callback functions will be ignored and has no * effect, so for performance reasons you're recommended to not return any * excessive data structures. * * Every implementation of this interface MUST follow these event semantics in * order to be considered a well-behaving stream. * * > Note that higher-level implementations of this interface may choose to * define additional events with dedicated semantics not defined as part of * this low-level stream specification. Conformance with these event semantics * is out of scope for this interface, so you may also have to refer to the * documentation of such a higher-level implementation. * * @see EventEmitterInterface */ interface ReadableStreamInterface extends EventEmitterInterface { /** * Checks whether this stream is in a readable state (not closed already). * * This method can be used to check if the stream still accepts incoming * data events or if it is ended or closed already. * Once the stream is non-readable, no further `data` or `end` events SHOULD * be emitted. * * ```php * assert($stream->isReadable() === false); * * $stream->on('data', assertNeverCalled()); * $stream->on('end', assertNeverCalled()); * ``` * * A successfully opened stream always MUST start in readable mode. * * Once the stream ends or closes, it MUST switch to non-readable mode. * This can happen any time, explicitly through `close()` or * implicitly due to a remote close or an unrecoverable transmission error. * Once a stream has switched to non-readable mode, it MUST NOT transition * back to readable mode. * * If this stream is a `DuplexStreamInterface`, you should also notice * how the writable side of the stream also implements an `isWritable()` * method. Unless this is a half-open duplex stream, they SHOULD usually * have the same return value. * * @return bool */ public function isReadable(); /** * Pauses reading incoming data events. * * Removes the data source file descriptor from the event loop. This * allows you to throttle incoming data. * * Unless otherwise noted, a successfully opened stream SHOULD NOT start * in paused state. * * Once the stream is paused, no futher `data` or `end` events SHOULD * be emitted. * * ```php * $stream->pause(); * * $stream->on('data', assertShouldNeverCalled()); * $stream->on('end', assertShouldNeverCalled()); * ``` * * This method is advisory-only, though generally not recommended, the * stream MAY continue emitting `data` events. * * You can continue processing events by calling `resume()` again. * * Note that both methods can be called any number of times, in particular * calling `pause()` more than once SHOULD NOT have any effect. * * @see self::resume() * @return void */ public function pause(); /** * Resumes reading incoming data events. * * Re-attach the data source after a previous `pause()`. * * ```php * $stream->pause(); * * Loop::addTimer(1.0, function () use ($stream) { * $stream->resume(); * }); * ``` * * Note that both methods can be called any number of times, in particular * calling `resume()` without a prior `pause()` SHOULD NOT have any effect. * * @see self::pause() * @return void */ public function resume(); /** * Pipes all the data from this readable source into the given writable destination. * * Automatically sends all incoming data to the destination. * Automatically throttles the source based on what the destination can handle. * * ```php * $source->pipe($dest); * ``` * * Similarly, you can also pipe an instance implementing `DuplexStreamInterface` * into itself in order to write back all the data that is received. * This may be a useful feature for a TCP/IP echo service: * * ```php * $connection->pipe($connection); * ``` * * This method returns the destination stream as-is, which can be used to * set up chains of piped streams: * * ```php * $source->pipe($decodeGzip)->pipe($filterBadWords)->pipe($dest); * ``` * * By default, this will call `end()` on the destination stream once the * source stream emits an `end` event. This can be disabled like this: * * ```php * $source->pipe($dest, array('end' => false)); * ``` * * Note that this only applies to the `end` event. * If an `error` or explicit `close` event happens on the source stream, * you'll have to manually close the destination stream: * * ```php * $source->pipe($dest); * $source->on('close', function () use ($dest) { * $dest->end('BYE!'); * }); * ``` * * If the source stream is not readable (closed state), then this is a NO-OP. * * ```php * $source->close(); * $source->pipe($dest); // NO-OP * ``` * * If the destinantion stream is not writable (closed state), then this will simply * throttle (pause) the source stream: * * ```php * $dest->close(); * $source->pipe($dest); // calls $source->pause() * ``` * * Similarly, if the destination stream is closed while the pipe is still * active, it will also throttle (pause) the source stream: * * ```php * $source->pipe($dest); * $dest->close(); // calls $source->pause() * ``` * * Once the pipe is set up successfully, the destination stream MUST emit * a `pipe` event with this source stream an event argument. * * @param WritableStreamInterface $dest * @param array $options * @return WritableStreamInterface $dest stream as-is */ public function pipe(WritableStreamInterface $dest, array $options = array()); /** * Closes the stream (forcefully). * * This method can be used to (forcefully) close the stream. * * ```php * $stream->close(); * ``` * * Once the stream is closed, it SHOULD emit a `close` event. * Note that this event SHOULD NOT be emitted more than once, in particular * if this method is called multiple times. * * After calling this method, the stream MUST switch into a non-readable * mode, see also `isReadable()`. * This means that no further `data` or `end` events SHOULD be emitted. * * ```php * $stream->close(); * assert($stream->isReadable() === false); * * $stream->on('data', assertNeverCalled()); * $stream->on('end', assertNeverCalled()); * ``` * * If this stream is a `DuplexStreamInterface`, you should also notice * how the writable side of the stream also implements a `close()` method. * In other words, after calling this method, the stream MUST switch into * non-writable AND non-readable mode, see also `isWritable()`. * Note that this method should not be confused with the `end()` method. * * @return void * @see WritableStreamInterface::close() */ public function close(); } isLegacyPipe($stream)) { \stream_set_read_buffer($stream, 0); } if ($buffer === null) { $buffer = new WritableResourceStream($stream, $loop); } $this->stream = $stream; $this->loop = $loop ?: Loop::get(); $this->bufferSize = $readChunkSize === null ? 65536 : (int) $readChunkSize; $this->buffer = $buffer; $that = $this; $this->buffer->on('error', function ($error) use($that) { $that->emit('error', array($error)); }); $this->buffer->on('close', array($this, 'close')); $this->buffer->on('drain', function () use($that) { $that->emit('drain'); }); $this->resume(); } public function isReadable() { return $this->readable; } public function isWritable() { return $this->writable; } public function pause() { if ($this->listening) { $this->loop->removeReadStream($this->stream); $this->listening = \false; } } public function resume() { if (!$this->listening && $this->readable) { $this->loop->addReadStream($this->stream, array($this, 'handleData')); $this->listening = \true; } } public function write($data) { if (!$this->writable) { return \false; } return $this->buffer->write($data); } public function close() { if (!$this->writable && !$this->closing) { return; } $this->closing = \false; $this->readable = \false; $this->writable = \false; $this->emit('close'); $this->pause(); $this->buffer->close(); $this->removeAllListeners(); if (\is_resource($this->stream)) { \fclose($this->stream); } } public function end($data = null) { if (!$this->writable) { return; } $this->closing = \true; $this->readable = \false; $this->writable = \false; $this->pause(); $this->buffer->end($data); } public function pipe(WritableStreamInterface $dest, array $options = array()) { return Util::pipe($this, $dest, $options); } /** @internal */ public function handleData($stream) { $error = null; \set_error_handler(function ($errno, $errstr, $errfile, $errline) use(&$error) { $error = new \ErrorException($errstr, 0, $errno, $errfile, $errline); }); $data = \stream_get_contents($stream, $this->bufferSize); \restore_error_handler(); if ($error !== null) { $this->emit('error', array(new \RuntimeException('Unable to read from stream: ' . $error->getMessage(), 0, $error))); $this->close(); return; } if ($data !== '') { $this->emit('data', array($data)); } elseif (\feof($this->stream)) { // no data read => we reached the end and close the stream $this->emit('end'); $this->close(); } } /** * Returns whether this is a pipe resource in a legacy environment * * This works around a legacy PHP bug (#61019) that was fixed in PHP 5.4.28+ * and PHP 5.5.12+ and newer. * * @param resource $resource * @return bool * @link https://github.com/reactphp/child-process/issues/40 * * @codeCoverageIgnore */ private function isLegacyPipe($resource) { if (\PHP_VERSION_ID < 50428 || \PHP_VERSION_ID >= 50500 && \PHP_VERSION_ID < 50512) { $meta = \stream_get_meta_data($resource); if (isset($meta['stream_type']) && $meta['stream_type'] === 'STDIO') { return \true; } } return \false; } } on('drain', function () use ($stream) { * echo 'Stream is now ready to accept more data'; * }); * ``` * * This event SHOULD be emitted once every time the buffer became full * previously and is now ready to accept more data. * In other words, this event MAY be emitted any number of times, which may * be zero times if the buffer never became full in the first place. * This event SHOULD NOT be emitted if the buffer has not become full * previously. * * This event is mostly used internally, see also `write()` for more details. * * pipe event: * The `pipe` event will be emitted whenever a readable stream is `pipe()`d * into this stream. * The event receives a single `ReadableStreamInterface` argument for the * source stream. * * ```php * $stream->on('pipe', function (ReadableStreamInterface $source) use ($stream) { * echo 'Now receiving piped data'; * * // explicitly close target if source emits an error * $source->on('error', function () use ($stream) { * $stream->close(); * }); * }); * * $source->pipe($stream); * ``` * * This event MUST be emitted once for each readable stream that is * successfully piped into this destination stream. * In other words, this event MAY be emitted any number of times, which may * be zero times if no stream is ever piped into this stream. * This event MUST NOT be emitted if either the source is not readable * (closed already) or this destination is not writable (closed already). * * This event is mostly used internally, see also `pipe()` for more details. * * error event: * The `error` event will be emitted once a fatal error occurs, usually while * trying to write to this stream. * The event receives a single `Exception` argument for the error instance. * * ```php * $stream->on('error', function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * This event SHOULD be emitted once the stream detects a fatal error, such * as a fatal transmission error. * It SHOULD NOT be emitted after a previous `error` or `close` event. * It MUST NOT be emitted if this is not a fatal error condition, such as * a temporary network issue that did not cause any data to be lost. * * After the stream errors, it MUST close the stream and SHOULD thus be * followed by a `close` event and then switch to non-writable mode, see * also `close()` and `isWritable()`. * * Many common streams (such as a TCP/IP connection or a file-based stream) * only deal with data transmission and may choose * to only emit this for a fatal transmission error once and will then * close (terminate) the stream in response. * * If this stream is a `DuplexStreamInterface`, you should also notice * how the readable side of the stream also implements an `error` event. * In other words, an error may occur while either reading or writing the * stream which should result in the same error processing. * * close event: * The `close` event will be emitted once the stream closes (terminates). * * ```php * $stream->on('close', function () { * echo 'CLOSED'; * }); * ``` * * This event SHOULD be emitted once or never at all, depending on whether * the stream ever terminates. * It SHOULD NOT be emitted after a previous `close` event. * * After the stream is closed, it MUST switch to non-writable mode, * see also `isWritable()`. * * This event SHOULD be emitted whenever the stream closes, irrespective of * whether this happens implicitly due to an unrecoverable error or * explicitly when either side closes the stream. * * Many common streams (such as a TCP/IP connection or a file-based stream) * will likely choose to emit this event after flushing the buffer from * the `end()` method, after receiving a *successful* `end` event or after * a fatal transmission `error` event. * * If this stream is a `DuplexStreamInterface`, you should also notice * how the readable side of the stream also implements a `close` event. * In other words, after receiving this event, the stream MUST switch into * non-writable AND non-readable mode, see also `isReadable()`. * Note that this event should not be confused with the `end` event. * * The event callback functions MUST be a valid `callable` that obeys strict * parameter definitions and MUST accept event parameters exactly as documented. * The event callback functions MUST NOT throw an `Exception`. * The return value of the event callback functions will be ignored and has no * effect, so for performance reasons you're recommended to not return any * excessive data structures. * * Every implementation of this interface MUST follow these event semantics in * order to be considered a well-behaving stream. * * > Note that higher-level implementations of this interface may choose to * define additional events with dedicated semantics not defined as part of * this low-level stream specification. Conformance with these event semantics * is out of scope for this interface, so you may also have to refer to the * documentation of such a higher-level implementation. * * @see EventEmitterInterface * @see DuplexStreamInterface */ interface WritableStreamInterface extends EventEmitterInterface { /** * Checks whether this stream is in a writable state (not closed already). * * This method can be used to check if the stream still accepts writing * any data or if it is ended or closed already. * Writing any data to a non-writable stream is a NO-OP: * * ```php * assert($stream->isWritable() === false); * * $stream->write('end'); // NO-OP * $stream->end('end'); // NO-OP * ``` * * A successfully opened stream always MUST start in writable mode. * * Once the stream ends or closes, it MUST switch to non-writable mode. * This can happen any time, explicitly through `end()` or `close()` or * implicitly due to a remote close or an unrecoverable transmission error. * Once a stream has switched to non-writable mode, it MUST NOT transition * back to writable mode. * * If this stream is a `DuplexStreamInterface`, you should also notice * how the readable side of the stream also implements an `isReadable()` * method. Unless this is a half-open duplex stream, they SHOULD usually * have the same return value. * * @return bool */ public function isWritable(); /** * Write some data into the stream. * * A successful write MUST be confirmed with a boolean `true`, which means * that either the data was written (flushed) immediately or is buffered and * scheduled for a future write. Note that this interface gives you no * control over explicitly flushing the buffered data, as finding the * appropriate time for this is beyond the scope of this interface and left * up to the implementation of this interface. * * Many common streams (such as a TCP/IP connection or file-based stream) * may choose to buffer all given data and schedule a future flush by using * an underlying EventLoop to check when the resource is actually writable. * * If a stream cannot handle writing (or flushing) the data, it SHOULD emit * an `error` event and MAY `close()` the stream if it can not recover from * this error. * * If the internal buffer is full after adding `$data`, then `write()` * SHOULD return `false`, indicating that the caller should stop sending * data until the buffer drains. * The stream SHOULD send a `drain` event once the buffer is ready to accept * more data. * * Similarly, if the stream is not writable (already in a closed state) * it MUST NOT process the given `$data` and SHOULD return `false`, * indicating that the caller should stop sending data. * * The given `$data` argument MAY be of mixed type, but it's usually * recommended it SHOULD be a `string` value or MAY use a type that allows * representation as a `string` for maximum compatibility. * * Many common streams (such as a TCP/IP connection or a file-based stream) * will only accept the raw (binary) payload data that is transferred over * the wire as chunks of `string` values. * * Due to the stream-based nature of this, the sender may send any number * of chunks with varying sizes. There are no guarantees that these chunks * will be received with the exact same framing the sender intended to send. * In other words, many lower-level protocols (such as TCP/IP) transfer the * data in chunks that may be anywhere between single-byte values to several * dozens of kilobytes. You may want to apply a higher-level protocol to * these low-level data chunks in order to achieve proper message framing. * * @param mixed|string $data * @return bool */ public function write($data); /** * Successfully ends the stream (after optionally sending some final data). * * This method can be used to successfully end the stream, i.e. close * the stream after sending out all data that is currently buffered. * * ```php * $stream->write('hello'); * $stream->write('world'); * $stream->end(); * ``` * * If there's no data currently buffered and nothing to be flushed, then * this method MAY `close()` the stream immediately. * * If there's still data in the buffer that needs to be flushed first, then * this method SHOULD try to write out this data and only then `close()` * the stream. * Once the stream is closed, it SHOULD emit a `close` event. * * Note that this interface gives you no control over explicitly flushing * the buffered data, as finding the appropriate time for this is beyond the * scope of this interface and left up to the implementation of this * interface. * * Many common streams (such as a TCP/IP connection or file-based stream) * may choose to buffer all given data and schedule a future flush by using * an underlying EventLoop to check when the resource is actually writable. * * You can optionally pass some final data that is written to the stream * before ending the stream. If a non-`null` value is given as `$data`, then * this method will behave just like calling `write($data)` before ending * with no data. * * ```php * // shorter version * $stream->end('bye'); * * // same as longer version * $stream->write('bye'); * $stream->end(); * ``` * * After calling this method, the stream MUST switch into a non-writable * mode, see also `isWritable()`. * This means that no further writes are possible, so any additional * `write()` or `end()` calls have no effect. * * ```php * $stream->end(); * assert($stream->isWritable() === false); * * $stream->write('nope'); // NO-OP * $stream->end(); // NO-OP * ``` * * If this stream is a `DuplexStreamInterface`, calling this method SHOULD * also end its readable side, unless the stream supports half-open mode. * In other words, after calling this method, these streams SHOULD switch * into non-writable AND non-readable mode, see also `isReadable()`. * This implies that in this case, the stream SHOULD NOT emit any `data` * or `end` events anymore. * Streams MAY choose to use the `pause()` method logic for this, but * special care may have to be taken to ensure a following call to the * `resume()` method SHOULD NOT continue emitting readable events. * * Note that this method should not be confused with the `close()` method. * * @param mixed|string|null $data * @return void */ public function end($data = null); /** * Closes the stream (forcefully). * * This method can be used to forcefully close the stream, i.e. close * the stream without waiting for any buffered data to be flushed. * If there's still data in the buffer, this data SHOULD be discarded. * * ```php * $stream->close(); * ``` * * Once the stream is closed, it SHOULD emit a `close` event. * Note that this event SHOULD NOT be emitted more than once, in particular * if this method is called multiple times. * * After calling this method, the stream MUST switch into a non-writable * mode, see also `isWritable()`. * This means that no further writes are possible, so any additional * `write()` or `end()` calls have no effect. * * ```php * $stream->close(); * assert($stream->isWritable() === false); * * $stream->write('nope'); // NO-OP * $stream->end(); // NO-OP * ``` * * Note that this method should not be confused with the `end()` method. * Unlike the `end()` method, this method does not take care of any existing * buffers and simply discards any buffer contents. * Likewise, this method may also be called after calling `end()` on a * stream in order to stop waiting for the stream to flush its final data. * * ```php * $stream->end(); * Loop::addTimer(1.0, function () use ($stream) { * $stream->close(); * }); * ``` * * If this stream is a `DuplexStreamInterface`, you should also notice * how the readable side of the stream also implements a `close()` method. * In other words, after calling this method, the stream MUST switch into * non-writable AND non-readable mode, see also `isReadable()`. * * @return void * @see ReadableStreamInterface::close() */ public function close(); } stream = $stream; $this->loop = $loop ?: Loop::get(); $this->softLimit = $writeBufferSoftLimit === null ? 65536 : (int) $writeBufferSoftLimit; $this->writeChunkSize = $writeChunkSize === null ? -1 : (int) $writeChunkSize; } public function isWritable() { return $this->writable; } public function write($data) { if (!$this->writable) { return \false; } $this->data .= $data; if (!$this->listening && $this->data !== '') { $this->listening = \true; $this->loop->addWriteStream($this->stream, array($this, 'handleWrite')); } return !isset($this->data[$this->softLimit - 1]); } public function end($data = null) { if (null !== $data) { $this->write($data); } $this->writable = \false; // close immediately if buffer is already empty // otherwise wait for buffer to flush first if ($this->data === '') { $this->close(); } } public function close() { if ($this->closed) { return; } if ($this->listening) { $this->listening = \false; $this->loop->removeWriteStream($this->stream); } $this->closed = \true; $this->writable = \false; $this->data = ''; $this->emit('close'); $this->removeAllListeners(); if (\is_resource($this->stream)) { \fclose($this->stream); } } /** @internal */ public function handleWrite() { $error = null; \set_error_handler(function ($_, $errstr) use(&$error) { $error = $errstr; }); if ($this->writeChunkSize === -1) { $sent = \fwrite($this->stream, $this->data); } else { $sent = \fwrite($this->stream, $this->data, $this->writeChunkSize); } \restore_error_handler(); // Only report errors if *nothing* could be sent and an error has been raised. // Ignore non-fatal warnings if *some* data could be sent. // Any hard (permanent) error will fail to send any data at all. // Sending excessive amounts of data will only flush *some* data and then // report a temporary error (EAGAIN) which we do not raise here in order // to keep the stream open for further tries to write. // Should this turn out to be a permanent error later, it will eventually // send *nothing* and we can detect this. if (($sent === 0 || $sent === \false) && $error !== null) { $this->emit('error', array(new \RuntimeException('Unable to write to stream: ' . $error))); $this->close(); return; } $exceeded = isset($this->data[$this->softLimit - 1]); $this->data = (string) \substr($this->data, $sent); // buffer has been above limit and is now below limit if ($exceeded && !isset($this->data[$this->softLimit - 1])) { $this->emit('drain'); } // buffer is now completely empty => stop trying to write if ($this->data === '') { // stop waiting for resource to be writable if ($this->listening) { $this->loop->removeWriteStream($this->stream); $this->listening = \false; } // buffer is end()ing and now completely empty => close buffer if (!$this->writable) { $this->close(); } } } } on('data', $this->expectCallableOnceWith('hello')); * * $through->write('hello'); * ``` * * Similarly, the [`end()` method](#end) will end the stream and emit an * [`end` event](#end-event) and then [`close()`](#close-1) the stream. * The [`close()` method](#close-1) will close the stream and emit a * [`close` event](#close-event). * Accordingly, this is can also be used in a [`pipe()`](#pipe) context like this: * * ```php * $through = new ThroughStream(); * $source->pipe($through)->pipe($dest); * ``` * * Optionally, its constructor accepts any callable function which will then be * used to *filter* any data written to it. This function receives a single data * argument as passed to the writable side and must return the data as it will be * passed to its readable end: * * ```php * $through = new ThroughStream('strtoupper'); * $source->pipe($through)->pipe($dest); * ``` * * Note that this class makes no assumptions about any data types. This can be * used to convert data, for example for transforming any structured data into * a newline-delimited JSON (NDJSON) stream like this: * * ```php * $through = new ThroughStream(function ($data) { * return json_encode($data) . PHP_EOL; * }); * $through->on('data', $this->expectCallableOnceWith("[2, true]\n")); * * $through->write(array(2, true)); * ``` * * The callback function is allowed to throw an `Exception`. In this case, * the stream will emit an `error` event and then [`close()`](#close-1) the stream. * * ```php * $through = new ThroughStream(function ($data) { * if (!is_string($data)) { * throw new \UnexpectedValueException('Only strings allowed'); * } * return $data; * }); * $through->on('error', $this->expectCallableOnce())); * $through->on('close', $this->expectCallableOnce())); * $through->on('data', $this->expectCallableNever())); * * $through->write(2); * ``` * * @see WritableStreamInterface::write() * @see WritableStreamInterface::end() * @see DuplexStreamInterface::close() * @see WritableStreamInterface::pipe() */ final class ThroughStream extends EventEmitter implements DuplexStreamInterface { private $readable = \true; private $writable = \true; private $closed = \false; private $paused = \false; private $drain = \false; private $callback; public function __construct($callback = null) { if ($callback !== null && !\is_callable($callback)) { throw new InvalidArgumentException('Invalid transformation callback given'); } $this->callback = $callback; } public function pause() { // only allow pause if still readable, false otherwise $this->paused = $this->readable; } public function resume() { $this->paused = \false; // emit drain event if previous write was paused (throttled) if ($this->drain) { $this->drain = \false; $this->emit('drain'); } } public function pipe(WritableStreamInterface $dest, array $options = array()) { return Util::pipe($this, $dest, $options); } public function isReadable() { return $this->readable; } public function isWritable() { return $this->writable; } public function write($data) { if (!$this->writable) { return \false; } if ($this->callback !== null) { try { $data = \call_user_func($this->callback, $data); } catch (\Exception $e) { $this->emit('error', array($e)); $this->close(); return \false; } } $this->emit('data', array($data)); // emit drain event on next resume if currently paused (throttled) if ($this->paused) { $this->drain = \true; } // continue writing if still writable and not paused (throttled), false otherwise return $this->writable && !$this->paused; } public function end($data = null) { if (!$this->writable) { return; } if (null !== $data) { $this->write($data); // return if write() already caused the stream to close if (!$this->writable) { return; } } $this->readable = \false; $this->writable = \false; $this->paused = \false; $this->drain = \false; $this->emit('end'); $this->close(); } public function close() { if ($this->closed) { return; } $this->readable = \false; $this->writable = \false; $this->paused = \false; $this->drain = \false; $this->closed = \true; $this->callback = null; $this->emit('close'); $this->removeAllListeners(); } } readable = $readable; $this->writable = $writable; if (!$readable->isReadable() || !$writable->isWritable()) { $this->close(); return; } Util::forwardEvents($this->readable, $this, array('data', 'end', 'error')); Util::forwardEvents($this->writable, $this, array('drain', 'error', 'pipe')); $this->readable->on('close', array($this, 'close')); $this->writable->on('close', array($this, 'close')); } public function isReadable() { return $this->readable->isReadable(); } public function pause() { $this->readable->pause(); } public function resume() { if (!$this->writable->isWritable()) { return; } $this->readable->resume(); } public function pipe(WritableStreamInterface $dest, array $options = array()) { return Util::pipe($this, $dest, $options); } public function isWritable() { return $this->writable->isWritable(); } public function write($data) { return $this->writable->write($data); } public function end($data = null) { $this->readable->pause(); $this->writable->end($data); } public function close() { if ($this->closed) { return; } $this->closed = \true; $this->readable->close(); $this->writable->close(); $this->emit('close'); $this->removeAllListeners(); } } The MIT License (MIT) Copyright (c) 2012 Christian Lück, Cees-Jan Kiewiet, Jan Sorgalla, Chris Boden, Igor Wiedler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. futureTick(function () use(&$hasRun) { $hasRun = \true; }); $stopped =& self::$stopped; \register_shutdown_function(function () use($loop, &$hasRun, &$stopped) { // Don't run if we're coming from a fatal error (uncaught exception). $error = \error_get_last(); if ((isset($error['type']) ? $error['type'] : 0) & (\E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR | \E_USER_ERROR | \E_RECOVERABLE_ERROR)) { return; } if (!$hasRun && !$stopped) { $loop->run(); } }); // @codeCoverageIgnoreEnd return self::$instance; } /** * Internal undocumented method, behavior might change or throw in the * future. Use with caution and at your own risk. * * @internal * @return void */ public static function set(LoopInterface $loop) { self::$instance = $loop; } /** * [Advanced] Register a listener to be notified when a stream is ready to read. * * @param resource $stream * @param callable $listener * @return void * @throws \Exception * @see LoopInterface::addReadStream() */ public static function addReadStream($stream, $listener) { // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) if (self::$instance === null) { self::get(); } self::$instance->addReadStream($stream, $listener); } /** * [Advanced] Register a listener to be notified when a stream is ready to write. * * @param resource $stream * @param callable $listener * @return void * @throws \Exception * @see LoopInterface::addWriteStream() */ public static function addWriteStream($stream, $listener) { // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) if (self::$instance === null) { self::get(); } self::$instance->addWriteStream($stream, $listener); } /** * Remove the read event listener for the given stream. * * @param resource $stream * @return void * @see LoopInterface::removeReadStream() */ public static function removeReadStream($stream) { if (self::$instance !== null) { self::$instance->removeReadStream($stream); } } /** * Remove the write event listener for the given stream. * * @param resource $stream * @return void * @see LoopInterface::removeWriteStream() */ public static function removeWriteStream($stream) { if (self::$instance !== null) { self::$instance->removeWriteStream($stream); } } /** * Enqueue a callback to be invoked once after the given interval. * * @param float $interval * @param callable $callback * @return TimerInterface * @see LoopInterface::addTimer() */ public static function addTimer($interval, $callback) { // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) if (self::$instance === null) { self::get(); } return self::$instance->addTimer($interval, $callback); } /** * Enqueue a callback to be invoked repeatedly after the given interval. * * @param float $interval * @param callable $callback * @return TimerInterface * @see LoopInterface::addPeriodicTimer() */ public static function addPeriodicTimer($interval, $callback) { // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) if (self::$instance === null) { self::get(); } return self::$instance->addPeriodicTimer($interval, $callback); } /** * Cancel a pending timer. * * @param TimerInterface $timer * @return void * @see LoopInterface::cancelTimer() */ public static function cancelTimer(TimerInterface $timer) { if (self::$instance !== null) { self::$instance->cancelTimer($timer); } } /** * Schedule a callback to be invoked on a future tick of the event loop. * * @param callable $listener * @return void * @see LoopInterface::futureTick() */ public static function futureTick($listener) { // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) if (self::$instance === null) { self::get(); } self::$instance->futureTick($listener); } /** * Register a listener to be notified when a signal has been caught by this process. * * @param int $signal * @param callable $listener * @return void * @see LoopInterface::addSignal() */ public static function addSignal($signal, $listener) { // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) if (self::$instance === null) { self::get(); } self::$instance->addSignal($signal, $listener); } /** * Removes a previously added signal listener. * * @param int $signal * @param callable $listener * @return void * @see LoopInterface::removeSignal() */ public static function removeSignal($signal, $listener) { if (self::$instance !== null) { self::$instance->removeSignal($signal, $listener); } } /** * Run the event loop until there are no more tasks to perform. * * @return void * @see LoopInterface::run() */ public static function run() { // create loop instance on demand (legacy PHP < 7 doesn't like ternaries in method calls) if (self::$instance === null) { self::get(); } self::$instance->run(); } /** * Instruct a running event loop to stop. * * @return void * @see LoopInterface::stop() */ public static function stop() { self::$stopped = \true; if (self::$instance !== null) { self::$instance->stop(); } } } futureTickQueue = new FutureTickQueue(); $this->timers = new Timers(); $this->pcntl = \function_exists('pcntl_signal') && \function_exists('pcntl_signal_dispatch'); $this->pcntlPoll = $this->pcntl && !\function_exists('pcntl_async_signals'); $this->signals = new SignalsHandler(); // prefer async signals if available (PHP 7.1+) or fall back to dispatching on each tick if ($this->pcntl && !$this->pcntlPoll) { \pcntl_async_signals(\true); } } public function addReadStream($stream, $listener) { $key = (int) $stream; if (!isset($this->readStreams[$key])) { $this->readStreams[$key] = $stream; $this->readListeners[$key] = $listener; } } public function addWriteStream($stream, $listener) { $key = (int) $stream; if (!isset($this->writeStreams[$key])) { $this->writeStreams[$key] = $stream; $this->writeListeners[$key] = $listener; } } public function removeReadStream($stream) { $key = (int) $stream; unset($this->readStreams[$key], $this->readListeners[$key]); } public function removeWriteStream($stream) { $key = (int) $stream; unset($this->writeStreams[$key], $this->writeListeners[$key]); } public function addTimer($interval, $callback) { $timer = new Timer($interval, $callback, \false); $this->timers->add($timer); return $timer; } public function addPeriodicTimer($interval, $callback) { $timer = new Timer($interval, $callback, \true); $this->timers->add($timer); return $timer; } public function cancelTimer(TimerInterface $timer) { $this->timers->cancel($timer); } public function futureTick($listener) { $this->futureTickQueue->add($listener); } public function addSignal($signal, $listener) { if ($this->pcntl === \false) { throw new \BadMethodCallException('Event loop feature "signals" isn\'t supported by the "StreamSelectLoop"'); } $first = $this->signals->count($signal) === 0; $this->signals->add($signal, $listener); if ($first) { \pcntl_signal($signal, array($this->signals, 'call')); } } public function removeSignal($signal, $listener) { if (!$this->signals->count($signal)) { return; } $this->signals->remove($signal, $listener); if ($this->signals->count($signal) === 0) { \pcntl_signal($signal, \SIG_DFL); } } public function run() { $this->running = \true; while ($this->running) { $this->futureTickQueue->tick(); $this->timers->tick(); // Future-tick queue has pending callbacks ... if (!$this->running || !$this->futureTickQueue->isEmpty()) { $timeout = 0; // There is a pending timer, only block until it is due ... } elseif ($scheduledAt = $this->timers->getFirst()) { $timeout = $scheduledAt - $this->timers->getTime(); if ($timeout < 0) { $timeout = 0; } else { // Convert float seconds to int microseconds. // Ensure we do not exceed maximum integer size, which may // cause the loop to tick once every ~35min on 32bit systems. $timeout *= self::MICROSECONDS_PER_SECOND; $timeout = $timeout > \PHP_INT_MAX ? \PHP_INT_MAX : (int) $timeout; } // The only possible event is stream or signal activity, so wait forever ... } elseif ($this->readStreams || $this->writeStreams || !$this->signals->isEmpty()) { $timeout = null; // There's nothing left to do ... } else { break; } $this->waitForStreamActivity($timeout); } } public function stop() { $this->running = \false; } /** * Wait/check for stream activity, or until the next timer is due. * * @param integer|null $timeout Activity timeout in microseconds, or null to wait forever. */ private function waitForStreamActivity($timeout) { $read = $this->readStreams; $write = $this->writeStreams; $available = $this->streamSelect($read, $write, $timeout); if ($this->pcntlPoll) { \pcntl_signal_dispatch(); } if (\false === $available) { // if a system call has been interrupted, // we cannot rely on it's outcome return; } foreach ($read as $stream) { $key = (int) $stream; if (isset($this->readListeners[$key])) { \call_user_func($this->readListeners[$key], $stream); } } foreach ($write as $stream) { $key = (int) $stream; if (isset($this->writeListeners[$key])) { \call_user_func($this->writeListeners[$key], $stream); } } } /** * Emulate a stream_select() implementation that does not break when passed * empty stream arrays. * * @param array $read An array of read streams to select upon. * @param array $write An array of write streams to select upon. * @param int|null $timeout Activity timeout in microseconds, or null to wait forever. * * @return int|false The total number of streams that are ready for read/write. * Can return false if stream_select() is interrupted by a signal. */ private function streamSelect(array &$read, array &$write, $timeout) { if ($read || $write) { // We do not usually use or expose the `exceptfds` parameter passed to the underlying `select`. // However, Windows does not report failed connection attempts in `writefds` passed to `select` like most other platforms. // Instead, it uses `writefds` only for successful connection attempts and `exceptfds` for failed connection attempts. // We work around this by adding all sockets that look like a pending connection attempt to `exceptfds` automatically on Windows and merge it back later. // This ensures the public API matches other loop implementations across all platforms (see also test suite or rather test matrix). // Lacking better APIs, every write-only socket that has not yet read any data is assumed to be in a pending connection attempt state. // @link https://docs.microsoft.com/de-de/windows/win32/api/winsock2/nf-winsock2-select $except = null; if (\DIRECTORY_SEPARATOR === '\\') { $except = array(); foreach ($write as $key => $socket) { if (!isset($read[$key]) && @\ftell($socket) === 0) { $except[$key] = $socket; } } } /** @var ?callable $previous */ $previous = \set_error_handler(function ($errno, $errstr) use(&$previous) { // suppress warnings that occur when `stream_select()` is interrupted by a signal // PHP defines `EINTR` through `ext-sockets` or `ext-pcntl`, otherwise use common default (Linux & Mac) $eintr = \defined('SOCKET_EINTR') ? \SOCKET_EINTR : (\defined('PCNTL_EINTR') ? \PCNTL_EINTR : 4); if ($errno === \E_WARNING && \strpos($errstr, '[' . $eintr . ']: ') !== \false) { return; } // forward any other error to registered error handler or print warning return $previous !== null ? \call_user_func_array($previous, \func_get_args()) : \false; }); try { $ret = \stream_select($read, $write, $except, $timeout === null ? null : 0, $timeout); \restore_error_handler(); } catch (\Throwable $e) { // @codeCoverageIgnoreStart \restore_error_handler(); throw $e; } catch (\Exception $e) { \restore_error_handler(); throw $e; } // @codeCoverageIgnoreEnd if ($except) { $write = \array_merge($write, $except); } return $ret; } if ($timeout > 0) { \usleep($timeout); } elseif ($timeout === null) { // wait forever (we only reach this if we're only awaiting signals) // this may be interrupted and return earlier when a signal is received \sleep(\PHP_INT_MAX); } return 0; } } addReadStream($stream, function ($stream) use ($name) { * echo $name . ' said: ' . fread($stream); * }); * ``` * * See also [example #11](examples). * * You can invoke [`removeReadStream()`](#removereadstream) to remove the * read event listener for this stream. * * The execution order of listeners when multiple streams become ready at * the same time is not guaranteed. * * @param resource $stream The PHP stream resource to check. * @param callable $listener Invoked when the stream is ready. * @throws \Exception if the given resource type is not supported by this loop implementation * @see self::removeReadStream() */ public function addReadStream($stream, $listener); /** * [Advanced] Register a listener to be notified when a stream is ready to write. * * Note that this low-level API is considered advanced usage. * Most use cases should probably use the higher-level * [writable Stream API](https://github.com/reactphp/stream#writablestreaminterface) * instead. * * The first parameter MUST be a valid stream resource that supports * checking whether it is ready to write by this loop implementation. * A single stream resource MUST NOT be added more than once. * Instead, either call [`removeWriteStream()`](#removewritestream) first or * react to this event with a single listener and then dispatch from this * listener. This method MAY throw an `Exception` if the given resource type * is not supported by this loop implementation. * * The second parameter MUST be a listener callback function that accepts * the stream resource as its only parameter. * If you don't use the stream resource inside your listener callback function * you MAY use a function which has no parameters at all. * * The listener callback function MUST NOT throw an `Exception`. * The return value of the listener callback function will be ignored and has * no effect, so for performance reasons you're recommended to not return * any excessive data structures. * * If you want to access any variables within your callback function, you * can bind arbitrary data to a callback closure like this: * * ```php * $loop->addWriteStream($stream, function ($stream) use ($name) { * fwrite($stream, 'Hello ' . $name); * }); * ``` * * See also [example #12](examples). * * You can invoke [`removeWriteStream()`](#removewritestream) to remove the * write event listener for this stream. * * The execution order of listeners when multiple streams become ready at * the same time is not guaranteed. * * Some event loop implementations are known to only trigger the listener if * the stream *becomes* readable (edge-triggered) and may not trigger if the * stream has already been readable from the beginning. * This also implies that a stream may not be recognized as readable when data * is still left in PHP's internal stream buffers. * As such, it's recommended to use `stream_set_read_buffer($stream, 0);` * to disable PHP's internal read buffer in this case. * * @param resource $stream The PHP stream resource to check. * @param callable $listener Invoked when the stream is ready. * @throws \Exception if the given resource type is not supported by this loop implementation * @see self::removeWriteStream() */ public function addWriteStream($stream, $listener); /** * Remove the read event listener for the given stream. * * Removing a stream from the loop that has already been removed or trying * to remove a stream that was never added or is invalid has no effect. * * @param resource $stream The PHP stream resource. */ public function removeReadStream($stream); /** * Remove the write event listener for the given stream. * * Removing a stream from the loop that has already been removed or trying * to remove a stream that was never added or is invalid has no effect. * * @param resource $stream The PHP stream resource. */ public function removeWriteStream($stream); /** * Enqueue a callback to be invoked once after the given interval. * * The second parameter MUST be a timer callback function that accepts * the timer instance as its only parameter. * If you don't use the timer instance inside your timer callback function * you MAY use a function which has no parameters at all. * * The timer callback function MUST NOT throw an `Exception`. * The return value of the timer callback function will be ignored and has * no effect, so for performance reasons you're recommended to not return * any excessive data structures. * * This method returns a timer instance. The same timer instance will also be * passed into the timer callback function as described above. * You can invoke [`cancelTimer`](#canceltimer) to cancel a pending timer. * Unlike [`addPeriodicTimer()`](#addperiodictimer), this method will ensure * the callback will be invoked only once after the given interval. * * ```php * $loop->addTimer(0.8, function () { * echo 'world!' . PHP_EOL; * }); * * $loop->addTimer(0.3, function () { * echo 'hello '; * }); * ``` * * See also [example #1](examples). * * If you want to access any variables within your callback function, you * can bind arbitrary data to a callback closure like this: * * ```php * function hello($name, LoopInterface $loop) * { * $loop->addTimer(1.0, function () use ($name) { * echo "hello $name\n"; * }); * } * * hello('Tester', $loop); * ``` * * This interface does not enforce any particular timer resolution, so * special care may have to be taken if you rely on very high precision with * millisecond accuracy or below. Event loop implementations SHOULD work on * a best effort basis and SHOULD provide at least millisecond accuracy * unless otherwise noted. Many existing event loop implementations are * known to provide microsecond accuracy, but it's generally not recommended * to rely on this high precision. * * Similarly, the execution order of timers scheduled to execute at the * same time (within its possible accuracy) is not guaranteed. * * This interface suggests that event loop implementations SHOULD use a * monotonic time source if available. Given that a monotonic time source is * only available as of PHP 7.3 by default, event loop implementations MAY * fall back to using wall-clock time. * While this does not affect many common use cases, this is an important * distinction for programs that rely on a high time precision or on systems * that are subject to discontinuous time adjustments (time jumps). * This means that if you schedule a timer to trigger in 30s and then adjust * your system time forward by 20s, the timer SHOULD still trigger in 30s. * See also [event loop implementations](#loop-implementations) for more details. * * @param int|float $interval The number of seconds to wait before execution. * @param callable $callback The callback to invoke. * * @return TimerInterface */ public function addTimer($interval, $callback); /** * Enqueue a callback to be invoked repeatedly after the given interval. * * The second parameter MUST be a timer callback function that accepts * the timer instance as its only parameter. * If you don't use the timer instance inside your timer callback function * you MAY use a function which has no parameters at all. * * The timer callback function MUST NOT throw an `Exception`. * The return value of the timer callback function will be ignored and has * no effect, so for performance reasons you're recommended to not return * any excessive data structures. * * This method returns a timer instance. The same timer instance will also be * passed into the timer callback function as described above. * Unlike [`addTimer()`](#addtimer), this method will ensure the callback * will be invoked infinitely after the given interval or until you invoke * [`cancelTimer`](#canceltimer). * * ```php * $timer = $loop->addPeriodicTimer(0.1, function () { * echo 'tick!' . PHP_EOL; * }); * * $loop->addTimer(1.0, function () use ($loop, $timer) { * $loop->cancelTimer($timer); * echo 'Done' . PHP_EOL; * }); * ``` * * See also [example #2](examples). * * If you want to limit the number of executions, you can bind * arbitrary data to a callback closure like this: * * ```php * function hello($name, LoopInterface $loop) * { * $n = 3; * $loop->addPeriodicTimer(1.0, function ($timer) use ($name, $loop, &$n) { * if ($n > 0) { * --$n; * echo "hello $name\n"; * } else { * $loop->cancelTimer($timer); * } * }); * } * * hello('Tester', $loop); * ``` * * This interface does not enforce any particular timer resolution, so * special care may have to be taken if you rely on very high precision with * millisecond accuracy or below. Event loop implementations SHOULD work on * a best effort basis and SHOULD provide at least millisecond accuracy * unless otherwise noted. Many existing event loop implementations are * known to provide microsecond accuracy, but it's generally not recommended * to rely on this high precision. * * Similarly, the execution order of timers scheduled to execute at the * same time (within its possible accuracy) is not guaranteed. * * This interface suggests that event loop implementations SHOULD use a * monotonic time source if available. Given that a monotonic time source is * only available as of PHP 7.3 by default, event loop implementations MAY * fall back to using wall-clock time. * While this does not affect many common use cases, this is an important * distinction for programs that rely on a high time precision or on systems * that are subject to discontinuous time adjustments (time jumps). * This means that if you schedule a timer to trigger in 30s and then adjust * your system time forward by 20s, the timer SHOULD still trigger in 30s. * See also [event loop implementations](#loop-implementations) for more details. * * Additionally, periodic timers may be subject to timer drift due to * re-scheduling after each invocation. As such, it's generally not * recommended to rely on this for high precision intervals with millisecond * accuracy or below. * * @param int|float $interval The number of seconds to wait before execution. * @param callable $callback The callback to invoke. * * @return TimerInterface */ public function addPeriodicTimer($interval, $callback); /** * Cancel a pending timer. * * See also [`addPeriodicTimer()`](#addperiodictimer) and [example #2](examples). * * Calling this method on a timer instance that has not been added to this * loop instance or on a timer that has already been cancelled has no effect. * * @param TimerInterface $timer The timer to cancel. * * @return void */ public function cancelTimer(TimerInterface $timer); /** * Schedule a callback to be invoked on a future tick of the event loop. * * This works very much similar to timers with an interval of zero seconds, * but does not require the overhead of scheduling a timer queue. * * The tick callback function MUST be able to accept zero parameters. * * The tick callback function MUST NOT throw an `Exception`. * The return value of the tick callback function will be ignored and has * no effect, so for performance reasons you're recommended to not return * any excessive data structures. * * If you want to access any variables within your callback function, you * can bind arbitrary data to a callback closure like this: * * ```php * function hello($name, LoopInterface $loop) * { * $loop->futureTick(function () use ($name) { * echo "hello $name\n"; * }); * } * * hello('Tester', $loop); * ``` * * Unlike timers, tick callbacks are guaranteed to be executed in the order * they are enqueued. * Also, once a callback is enqueued, there's no way to cancel this operation. * * This is often used to break down bigger tasks into smaller steps (a form * of cooperative multitasking). * * ```php * $loop->futureTick(function () { * echo 'b'; * }); * $loop->futureTick(function () { * echo 'c'; * }); * echo 'a'; * ``` * * See also [example #3](examples). * * @param callable $listener The callback to invoke. * * @return void */ public function futureTick($listener); /** * Register a listener to be notified when a signal has been caught by this process. * * This is useful to catch user interrupt signals or shutdown signals from * tools like `supervisor` or `systemd`. * * The second parameter MUST be a listener callback function that accepts * the signal as its only parameter. * If you don't use the signal inside your listener callback function * you MAY use a function which has no parameters at all. * * The listener callback function MUST NOT throw an `Exception`. * The return value of the listener callback function will be ignored and has * no effect, so for performance reasons you're recommended to not return * any excessive data structures. * * ```php * $loop->addSignal(SIGINT, function (int $signal) { * echo 'Caught user interrupt signal' . PHP_EOL; * }); * ``` * * See also [example #4](examples). * * Signaling is only available on Unix-like platforms, Windows isn't * supported due to operating system limitations. * This method may throw a `BadMethodCallException` if signals aren't * supported on this platform, for example when required extensions are * missing. * * **Note: A listener can only be added once to the same signal, any * attempts to add it more than once will be ignored.** * * @param int $signal * @param callable $listener * * @throws \BadMethodCallException when signals aren't supported on this * platform, for example when required extensions are missing. * * @return void */ public function addSignal($signal, $listener); /** * Removes a previously added signal listener. * * ```php * $loop->removeSignal(SIGINT, $listener); * ``` * * Any attempts to remove listeners that aren't registered will be ignored. * * @param int $signal * @param callable $listener * * @return void */ public function removeSignal($signal, $listener); /** * Run the event loop until there are no more tasks to perform. * * For many applications, this method is the only directly visible * invocation on the event loop. * As a rule of thumb, it is usually recommended to attach everything to the * same loop instance and then run the loop once at the bottom end of the * application. * * ```php * $loop->run(); * ``` * * This method will keep the loop running until there are no more tasks * to perform. In other words: This method will block until the last * timer, stream and/or signal has been removed. * * Likewise, it is imperative to ensure the application actually invokes * this method once. Adding listeners to the loop and missing to actually * run it will result in the application exiting without actually waiting * for any of the attached listeners. * * This method MUST NOT be called while the loop is already running. * This method MAY be called more than once after it has explicitly been * [`stop()`ped](#stop) or after it automatically stopped because it * previously did no longer have anything to do. * * @return void */ public function run(); /** * Instruct a running event loop to stop. * * This method is considered advanced usage and should be used with care. * As a rule of thumb, it is usually recommended to let the loop stop * only automatically when it no longer has anything to do. * * This method can be used to explicitly instruct the event loop to stop: * * ```php * $loop->addTimer(3.0, function () use ($loop) { * $loop->stop(); * }); * ``` * * Calling this method on a loop instance that is not currently running or * on a loop instance that has already been stopped has no effect. * * @return void */ public function stop(); } uv = \uv_loop_new(); $this->futureTickQueue = new FutureTickQueue(); $this->timers = new SplObjectStorage(); $this->streamListener = $this->createStreamListener(); $this->signals = new SignalsHandler(); } /** * Returns the underlying ext-uv event loop. (Internal ReactPHP use only.) * * @internal * * @return resource */ public function getUvLoop() { return $this->uv; } /** * {@inheritdoc} */ public function addReadStream($stream, $listener) { if (isset($this->readStreams[(int) $stream])) { return; } $this->readStreams[(int) $stream] = $listener; $this->addStream($stream); } /** * {@inheritdoc} */ public function addWriteStream($stream, $listener) { if (isset($this->writeStreams[(int) $stream])) { return; } $this->writeStreams[(int) $stream] = $listener; $this->addStream($stream); } /** * {@inheritdoc} */ public function removeReadStream($stream) { if (!isset($this->streamEvents[(int) $stream])) { return; } unset($this->readStreams[(int) $stream]); $this->removeStream($stream); } /** * {@inheritdoc} */ public function removeWriteStream($stream) { if (!isset($this->streamEvents[(int) $stream])) { return; } unset($this->writeStreams[(int) $stream]); $this->removeStream($stream); } /** * {@inheritdoc} */ public function addTimer($interval, $callback) { $timer = new Timer($interval, $callback, \false); $that = $this; $timers = $this->timers; $callback = function () use($timer, $timers, $that) { \call_user_func($timer->getCallback(), $timer); if ($timers->contains($timer)) { $that->cancelTimer($timer); } }; $event = \uv_timer_init($this->uv); $this->timers->attach($timer, $event); \uv_timer_start($event, $this->convertFloatSecondsToMilliseconds($interval), 0, $callback); return $timer; } /** * {@inheritdoc} */ public function addPeriodicTimer($interval, $callback) { $timer = new Timer($interval, $callback, \true); $callback = function () use($timer) { \call_user_func($timer->getCallback(), $timer); }; $interval = $this->convertFloatSecondsToMilliseconds($interval); $event = \uv_timer_init($this->uv); $this->timers->attach($timer, $event); \uv_timer_start($event, $interval, (int) $interval === 0 ? 1 : $interval, $callback); return $timer; } /** * {@inheritdoc} */ public function cancelTimer(TimerInterface $timer) { if (isset($this->timers[$timer])) { @\uv_timer_stop($this->timers[$timer]); $this->timers->detach($timer); } } /** * {@inheritdoc} */ public function futureTick($listener) { $this->futureTickQueue->add($listener); } public function addSignal($signal, $listener) { $this->signals->add($signal, $listener); if (!isset($this->signalEvents[$signal])) { $signals = $this->signals; $this->signalEvents[$signal] = \_PHPStan_b22655c3f\uv_signal_init($this->uv); \_PHPStan_b22655c3f\uv_signal_start($this->signalEvents[$signal], function () use($signals, $signal) { $signals->call($signal); }, $signal); } } public function removeSignal($signal, $listener) { $this->signals->remove($signal, $listener); if (isset($this->signalEvents[$signal]) && $this->signals->count($signal) === 0) { \uv_signal_stop($this->signalEvents[$signal]); unset($this->signalEvents[$signal]); } } /** * {@inheritdoc} */ public function run() { $this->running = \true; while ($this->running) { $this->futureTickQueue->tick(); $hasPendingCallbacks = !$this->futureTickQueue->isEmpty(); $wasJustStopped = !$this->running; $nothingLeftToDo = !$this->readStreams && !$this->writeStreams && !$this->timers->count() && $this->signals->isEmpty(); // Use UV::RUN_ONCE when there are only I/O events active in the loop and block until one of those triggers, // otherwise use UV::RUN_NOWAIT. // @link http://docs.libuv.org/en/v1.x/loop.html#c.uv_run $flags = \UV::RUN_ONCE; if ($wasJustStopped || $hasPendingCallbacks) { $flags = \UV::RUN_NOWAIT; } elseif ($nothingLeftToDo) { break; } \uv_run($this->uv, $flags); } } /** * {@inheritdoc} */ public function stop() { $this->running = \false; } private function addStream($stream) { if (!isset($this->streamEvents[(int) $stream])) { $this->streamEvents[(int) $stream] = \_PHPStan_b22655c3f\uv_poll_init_socket($this->uv, $stream); } if ($this->streamEvents[(int) $stream] !== \false) { $this->pollStream($stream); } } private function removeStream($stream) { if (!isset($this->streamEvents[(int) $stream])) { return; } if (!isset($this->readStreams[(int) $stream]) && !isset($this->writeStreams[(int) $stream])) { \uv_poll_stop($this->streamEvents[(int) $stream]); \uv_close($this->streamEvents[(int) $stream]); unset($this->streamEvents[(int) $stream]); return; } $this->pollStream($stream); } private function pollStream($stream) { if (!isset($this->streamEvents[(int) $stream])) { return; } $flags = 0; if (isset($this->readStreams[(int) $stream])) { $flags |= \UV::READABLE; } if (isset($this->writeStreams[(int) $stream])) { $flags |= \UV::WRITABLE; } \uv_poll_start($this->streamEvents[(int) $stream], $flags, $this->streamListener); } /** * Create a stream listener * * @return callable Returns a callback */ private function createStreamListener() { $callback = function ($event, $status, $events, $stream) { // libuv automatically stops polling on error, re-enable polling to match other loop implementations if ($status !== 0) { $this->pollStream($stream); // libuv may report no events on error, but this should still invoke stream listeners to report closed connections // re-enable both readable and writable, correct listeners will be checked below anyway if ($events === 0) { $events = \UV::READABLE | \UV::WRITABLE; } } if (isset($this->readStreams[(int) $stream]) && $events & \UV::READABLE) { \call_user_func($this->readStreams[(int) $stream], $stream); } if (isset($this->writeStreams[(int) $stream]) && $events & \UV::WRITABLE) { \call_user_func($this->writeStreams[(int) $stream], $stream); } }; return $callback; } /** * @param float $interval * @return int */ private function convertFloatSecondsToMilliseconds($interval) { if ($interval < 0) { return 0; } $maxValue = (int) (\PHP_INT_MAX / 1000); $intInterval = (int) $interval; if ($intInterval <= 0 && $interval > 1 || $intInterval >= $maxValue) { throw new \InvalidArgumentException("Interval overflow, value must be lower than '{$maxValue}', but '{$interval}' passed."); } return (int) \floor($interval * 1000); } } interval = (float) $interval; $this->callback = $callback; $this->periodic = (bool) $periodic; } public function getInterval() { return $this->interval; } public function getCallback() { return $this->callback; } public function isPeriodic() { return $this->periodic; } } useHighResolution = \function_exists('hrtime'); } public function updateTime() { return $this->time = $this->useHighResolution ? \hrtime(\true) * 1.0E-9 : \microtime(\true); } public function getTime() { return $this->time ?: $this->updateTime(); } public function add(TimerInterface $timer) { $id = \PHP_VERSION_ID < 70200 ? \spl_object_hash($timer) : \spl_object_id($timer); $this->timers[$id] = $timer; $this->schedule[$id] = $timer->getInterval() + $this->updateTime(); $this->sorted = \false; } public function contains(TimerInterface $timer) { $id = \PHP_VERSION_ID < 70200 ? \spl_object_hash($timer) : \spl_object_id($timer); return isset($this->timers[$id]); } public function cancel(TimerInterface $timer) { $id = \PHP_VERSION_ID < 70200 ? \spl_object_hash($timer) : \spl_object_id($timer); unset($this->timers[$id], $this->schedule[$id]); } public function getFirst() { // ensure timers are sorted to simply accessing next (first) one if (!$this->sorted) { $this->sorted = \true; \asort($this->schedule); } return \reset($this->schedule); } public function isEmpty() { return \count($this->timers) === 0; } public function tick() { // hot path: skip timers if nothing is scheduled if (!$this->schedule) { return; } // ensure timers are sorted so we can execute in order if (!$this->sorted) { $this->sorted = \true; \asort($this->schedule); } $time = $this->updateTime(); foreach ($this->schedule as $id => $scheduled) { // schedule is ordered, so loop until first timer that is not scheduled for execution now if ($scheduled >= $time) { break; } // skip any timers that are removed while we process the current schedule if (!isset($this->schedule[$id]) || $this->schedule[$id] !== $scheduled) { continue; } $timer = $this->timers[$id]; \call_user_func($timer->getCallback(), $timer); // re-schedule if this is a periodic timer and it has not been cancelled explicitly already if ($timer->isPeriodic() && isset($this->timers[$id])) { $this->schedule[$id] = $timer->getInterval() + $time; $this->sorted = \false; } else { unset($this->timers[$id], $this->schedule[$id]); } } } } loop = new EvLoop(); $this->futureTickQueue = new FutureTickQueue(); $this->timers = new SplObjectStorage(); $this->signals = new SignalsHandler(); } public function addReadStream($stream, $listener) { $key = (int) $stream; if (isset($this->readStreams[$key])) { return; } $callback = $this->getStreamListenerClosure($stream, $listener); $event = $this->loop->io($stream, Ev::READ, $callback); $this->readStreams[$key] = $event; } /** * @param resource $stream * @param callable $listener * * @return \Closure */ private function getStreamListenerClosure($stream, $listener) { return function () use($stream, $listener) { \call_user_func($listener, $stream); }; } public function addWriteStream($stream, $listener) { $key = (int) $stream; if (isset($this->writeStreams[$key])) { return; } $callback = $this->getStreamListenerClosure($stream, $listener); $event = $this->loop->io($stream, Ev::WRITE, $callback); $this->writeStreams[$key] = $event; } public function removeReadStream($stream) { $key = (int) $stream; if (!isset($this->readStreams[$key])) { return; } $this->readStreams[$key]->stop(); unset($this->readStreams[$key]); } public function removeWriteStream($stream) { $key = (int) $stream; if (!isset($this->writeStreams[$key])) { return; } $this->writeStreams[$key]->stop(); unset($this->writeStreams[$key]); } public function addTimer($interval, $callback) { $timer = new Timer($interval, $callback, \false); $that = $this; $timers = $this->timers; $callback = function () use($timer, $timers, $that) { \call_user_func($timer->getCallback(), $timer); if ($timers->contains($timer)) { $that->cancelTimer($timer); } }; $event = $this->loop->timer($timer->getInterval(), 0.0, $callback); $this->timers->attach($timer, $event); return $timer; } public function addPeriodicTimer($interval, $callback) { $timer = new Timer($interval, $callback, \true); $callback = function () use($timer) { \call_user_func($timer->getCallback(), $timer); }; $event = $this->loop->timer($timer->getInterval(), $timer->getInterval(), $callback); $this->timers->attach($timer, $event); return $timer; } public function cancelTimer(TimerInterface $timer) { if (!isset($this->timers[$timer])) { return; } $event = $this->timers[$timer]; $event->stop(); $this->timers->detach($timer); } public function futureTick($listener) { $this->futureTickQueue->add($listener); } public function run() { $this->running = \true; while ($this->running) { $this->futureTickQueue->tick(); $hasPendingCallbacks = !$this->futureTickQueue->isEmpty(); $wasJustStopped = !$this->running; $nothingLeftToDo = !$this->readStreams && !$this->writeStreams && !$this->timers->count() && $this->signals->isEmpty(); $flags = Ev::RUN_ONCE; if ($wasJustStopped || $hasPendingCallbacks) { $flags |= Ev::RUN_NOWAIT; } elseif ($nothingLeftToDo) { break; } $this->loop->run($flags); } } public function stop() { $this->running = \false; } public function __destruct() { /** @var TimerInterface $timer */ foreach ($this->timers as $timer) { $this->cancelTimer($timer); } foreach ($this->readStreams as $key => $stream) { $this->removeReadStream($key); } foreach ($this->writeStreams as $key => $stream) { $this->removeWriteStream($key); } } public function addSignal($signal, $listener) { $this->signals->add($signal, $listener); if (!isset($this->signalEvents[$signal])) { $this->signalEvents[$signal] = $this->loop->signal($signal, function () use($signal) { $this->signals->call($signal); }); } } public function removeSignal($signal, $listener) { $this->signals->remove($signal, $listener); if (isset($this->signalEvents[$signal])) { $this->signalEvents[$signal]->stop(); unset($this->signalEvents[$signal]); } } } queue = new SplQueue(); } /** * Add a callback to be invoked on a future tick of the event loop. * * Callbacks are guaranteed to be executed in the order they are enqueued. * * @param callable $listener The callback to invoke. */ public function add($listener) { $this->queue->enqueue($listener); } /** * Flush the callback queue. */ public function tick() { // Only invoke as many callbacks as were on the queue when tick() was called. $count = $this->queue->count(); while ($count--) { \call_user_func($this->queue->dequeue()); } } /** * Check if the next tick queue is empty. * * @return boolean */ public function isEmpty() { return $this->queue->isEmpty(); } } loop = new EventLoop(); $this->futureTickQueue = new FutureTickQueue(); $this->timerEvents = new SplObjectStorage(); $this->signals = new SignalsHandler(); } public function addReadStream($stream, $listener) { if (isset($this->readEvents[(int) $stream])) { return; } $callback = function () use($stream, $listener) { \call_user_func($listener, $stream); }; $event = new IOEvent($callback, $stream, IOEvent::READ); $this->loop->add($event); $this->readEvents[(int) $stream] = $event; } public function addWriteStream($stream, $listener) { if (isset($this->writeEvents[(int) $stream])) { return; } $callback = function () use($stream, $listener) { \call_user_func($listener, $stream); }; $event = new IOEvent($callback, $stream, IOEvent::WRITE); $this->loop->add($event); $this->writeEvents[(int) $stream] = $event; } public function removeReadStream($stream) { $key = (int) $stream; if (isset($this->readEvents[$key])) { $this->readEvents[$key]->stop(); $this->loop->remove($this->readEvents[$key]); unset($this->readEvents[$key]); } } public function removeWriteStream($stream) { $key = (int) $stream; if (isset($this->writeEvents[$key])) { $this->writeEvents[$key]->stop(); $this->loop->remove($this->writeEvents[$key]); unset($this->writeEvents[$key]); } } public function addTimer($interval, $callback) { $timer = new Timer($interval, $callback, \false); $that = $this; $timers = $this->timerEvents; $callback = function () use($timer, $timers, $that) { \call_user_func($timer->getCallback(), $timer); if ($timers->contains($timer)) { $that->cancelTimer($timer); } }; $event = new TimerEvent($callback, $timer->getInterval()); $this->timerEvents->attach($timer, $event); $this->loop->add($event); return $timer; } public function addPeriodicTimer($interval, $callback) { $timer = new Timer($interval, $callback, \true); $callback = function () use($timer) { \call_user_func($timer->getCallback(), $timer); }; $event = new TimerEvent($callback, $timer->getInterval(), $timer->getInterval()); $this->timerEvents->attach($timer, $event); $this->loop->add($event); return $timer; } public function cancelTimer(TimerInterface $timer) { if (isset($this->timerEvents[$timer])) { $this->loop->remove($this->timerEvents[$timer]); $this->timerEvents->detach($timer); } } public function futureTick($listener) { $this->futureTickQueue->add($listener); } public function addSignal($signal, $listener) { $this->signals->add($signal, $listener); if (!isset($this->signalEvents[$signal])) { $signals = $this->signals; $this->signalEvents[$signal] = new SignalEvent(function () use($signals, $signal) { $signals->call($signal); }, $signal); $this->loop->add($this->signalEvents[$signal]); } } public function removeSignal($signal, $listener) { $this->signals->remove($signal, $listener); if (isset($this->signalEvents[$signal]) && $this->signals->count($signal) === 0) { $this->signalEvents[$signal]->stop(); $this->loop->remove($this->signalEvents[$signal]); unset($this->signalEvents[$signal]); } } public function run() { $this->running = \true; while ($this->running) { $this->futureTickQueue->tick(); $flags = EventLoop::RUN_ONCE; if (!$this->running || !$this->futureTickQueue->isEmpty()) { $flags |= EventLoop::RUN_NOWAIT; } elseif (!$this->readEvents && !$this->writeEvents && !$this->timerEvents->count() && $this->signals->isEmpty()) { break; } $this->loop->run($flags); } } public function stop() { $this->running = \false; } } eventBase = \event_base_new(); $this->futureTickQueue = new FutureTickQueue(); $this->timerEvents = new SplObjectStorage(); $this->signals = new SignalsHandler(); $this->createTimerCallback(); $this->createStreamCallback(); } public function addReadStream($stream, $listener) { $key = (int) $stream; if (isset($this->readListeners[$key])) { return; } $event = \event_new(); \event_set($event, $stream, \EV_PERSIST | \EV_READ, $this->streamCallback); \event_base_set($event, $this->eventBase); \event_add($event); $this->readEvents[$key] = $event; $this->readListeners[$key] = $listener; } public function addWriteStream($stream, $listener) { $key = (int) $stream; if (isset($this->writeListeners[$key])) { return; } $event = \event_new(); \event_set($event, $stream, \EV_PERSIST | \EV_WRITE, $this->streamCallback); \event_base_set($event, $this->eventBase); \event_add($event); $this->writeEvents[$key] = $event; $this->writeListeners[$key] = $listener; } public function removeReadStream($stream) { $key = (int) $stream; if (isset($this->readListeners[$key])) { $event = $this->readEvents[$key]; \event_del($event); \event_free($event); unset($this->readEvents[$key], $this->readListeners[$key]); } } public function removeWriteStream($stream) { $key = (int) $stream; if (isset($this->writeListeners[$key])) { $event = $this->writeEvents[$key]; \event_del($event); \event_free($event); unset($this->writeEvents[$key], $this->writeListeners[$key]); } } public function addTimer($interval, $callback) { $timer = new Timer($interval, $callback, \false); $this->scheduleTimer($timer); return $timer; } public function addPeriodicTimer($interval, $callback) { $timer = new Timer($interval, $callback, \true); $this->scheduleTimer($timer); return $timer; } public function cancelTimer(TimerInterface $timer) { if ($this->timerEvents->contains($timer)) { $event = $this->timerEvents[$timer]; \event_del($event); \event_free($event); $this->timerEvents->detach($timer); } } public function futureTick($listener) { $this->futureTickQueue->add($listener); } public function addSignal($signal, $listener) { $this->signals->add($signal, $listener); if (!isset($this->signalEvents[$signal])) { $this->signalEvents[$signal] = \event_new(); \event_set($this->signalEvents[$signal], $signal, \EV_PERSIST | \EV_SIGNAL, array($this->signals, 'call')); \event_base_set($this->signalEvents[$signal], $this->eventBase); \event_add($this->signalEvents[$signal]); } } public function removeSignal($signal, $listener) { $this->signals->remove($signal, $listener); if (isset($this->signalEvents[$signal]) && $this->signals->count($signal) === 0) { \event_del($this->signalEvents[$signal]); \event_free($this->signalEvents[$signal]); unset($this->signalEvents[$signal]); } } public function run() { $this->running = \true; while ($this->running) { $this->futureTickQueue->tick(); $flags = \EVLOOP_ONCE; if (!$this->running || !$this->futureTickQueue->isEmpty()) { $flags |= \EVLOOP_NONBLOCK; } elseif (!$this->readEvents && !$this->writeEvents && !$this->timerEvents->count() && $this->signals->isEmpty()) { break; } \event_base_loop($this->eventBase, $flags); } } public function stop() { $this->running = \false; } /** * Schedule a timer for execution. * * @param TimerInterface $timer */ private function scheduleTimer(TimerInterface $timer) { $this->timerEvents[$timer] = $event = \event_timer_new(); \event_timer_set($event, $this->timerCallback, $timer); \event_base_set($event, $this->eventBase); \event_add($event, $timer->getInterval() * self::MICROSECONDS_PER_SECOND); } /** * Create a callback used as the target of timer events. * * A reference is kept to the callback for the lifetime of the loop * to prevent "Cannot destroy active lambda function" fatal error from * the event extension. */ private function createTimerCallback() { $that = $this; $timers = $this->timerEvents; $this->timerCallback = function ($_, $__, $timer) use($timers, $that) { \call_user_func($timer->getCallback(), $timer); // Timer already cancelled ... if (!$timers->contains($timer)) { return; } // Reschedule periodic timers ... if ($timer->isPeriodic()) { \event_add($timers[$timer], $timer->getInterval() * ExtLibeventLoop::MICROSECONDS_PER_SECOND); // Clean-up one shot timers ... } else { $that->cancelTimer($timer); } }; } /** * Create a callback used as the target of stream events. * * A reference is kept to the callback for the lifetime of the loop * to prevent "Cannot destroy active lambda function" fatal error from * the event extension. */ private function createStreamCallback() { $read =& $this->readListeners; $write =& $this->writeListeners; $this->streamCallback = function ($stream, $flags) use(&$read, &$write) { $key = (int) $stream; if (\EV_READ === (\EV_READ & $flags) && isset($read[$key])) { \call_user_func($read[$key], $stream); } if (\EV_WRITE === (\EV_WRITE & $flags) && isset($write[$key])) { \call_user_func($write[$key], $stream); } }; } } signals[$signal])) { $this->signals[$signal] = array(); } if (\in_array($listener, $this->signals[$signal])) { return; } $this->signals[$signal][] = $listener; } public function remove($signal, $listener) { if (!isset($this->signals[$signal])) { return; } $index = \array_search($listener, $this->signals[$signal], \true); unset($this->signals[$signal][$index]); if (isset($this->signals[$signal]) && \count($this->signals[$signal]) === 0) { unset($this->signals[$signal]); } } public function call($signal) { if (!isset($this->signals[$signal])) { return; } foreach ($this->signals[$signal] as $listener) { \call_user_func($listener, $signal); } } public function count($signal) { if (!isset($this->signals[$signal])) { return 0; } return \count($this->signals[$signal]); } public function isEmpty() { return !$this->signals; } } requireFeatures(\EventConfig::FEATURE_FDS); } $this->eventBase = new EventBase($config); $this->futureTickQueue = new FutureTickQueue(); $this->timerEvents = new SplObjectStorage(); $this->signals = new SignalsHandler(); $this->createTimerCallback(); $this->createStreamCallback(); } public function __destruct() { // explicitly clear all references to Event objects to prevent SEGFAULTs on Windows foreach ($this->timerEvents as $timer) { $this->timerEvents->detach($timer); } $this->readEvents = array(); $this->writeEvents = array(); } public function addReadStream($stream, $listener) { $key = (int) $stream; if (isset($this->readListeners[$key])) { return; } $event = new Event($this->eventBase, $stream, Event::PERSIST | Event::READ, $this->streamCallback); $event->add(); $this->readEvents[$key] = $event; $this->readListeners[$key] = $listener; // ext-event does not increase refcount on stream resources for PHP 7+ // manually keep track of stream resource to prevent premature garbage collection if (\PHP_VERSION_ID >= 70000) { $this->readRefs[$key] = $stream; } } public function addWriteStream($stream, $listener) { $key = (int) $stream; if (isset($this->writeListeners[$key])) { return; } $event = new Event($this->eventBase, $stream, Event::PERSIST | Event::WRITE, $this->streamCallback); $event->add(); $this->writeEvents[$key] = $event; $this->writeListeners[$key] = $listener; // ext-event does not increase refcount on stream resources for PHP 7+ // manually keep track of stream resource to prevent premature garbage collection if (\PHP_VERSION_ID >= 70000) { $this->writeRefs[$key] = $stream; } } public function removeReadStream($stream) { $key = (int) $stream; if (isset($this->readEvents[$key])) { $this->readEvents[$key]->free(); unset($this->readEvents[$key], $this->readListeners[$key], $this->readRefs[$key]); } } public function removeWriteStream($stream) { $key = (int) $stream; if (isset($this->writeEvents[$key])) { $this->writeEvents[$key]->free(); unset($this->writeEvents[$key], $this->writeListeners[$key], $this->writeRefs[$key]); } } public function addTimer($interval, $callback) { $timer = new Timer($interval, $callback, \false); $this->scheduleTimer($timer); return $timer; } public function addPeriodicTimer($interval, $callback) { $timer = new Timer($interval, $callback, \true); $this->scheduleTimer($timer); return $timer; } public function cancelTimer(TimerInterface $timer) { if ($this->timerEvents->contains($timer)) { $this->timerEvents[$timer]->free(); $this->timerEvents->detach($timer); } } public function futureTick($listener) { $this->futureTickQueue->add($listener); } public function addSignal($signal, $listener) { $this->signals->add($signal, $listener); if (!isset($this->signalEvents[$signal])) { $this->signalEvents[$signal] = Event::signal($this->eventBase, $signal, array($this->signals, 'call')); $this->signalEvents[$signal]->add(); } } public function removeSignal($signal, $listener) { $this->signals->remove($signal, $listener); if (isset($this->signalEvents[$signal]) && $this->signals->count($signal) === 0) { $this->signalEvents[$signal]->free(); unset($this->signalEvents[$signal]); } } public function run() { $this->running = \true; while ($this->running) { $this->futureTickQueue->tick(); $flags = EventBase::LOOP_ONCE; if (!$this->running || !$this->futureTickQueue->isEmpty()) { $flags |= EventBase::LOOP_NONBLOCK; } elseif (!$this->readEvents && !$this->writeEvents && !$this->timerEvents->count() && $this->signals->isEmpty()) { break; } $this->eventBase->loop($flags); } } public function stop() { $this->running = \false; } /** * Schedule a timer for execution. * * @param TimerInterface $timer */ private function scheduleTimer(TimerInterface $timer) { $flags = Event::TIMEOUT; if ($timer->isPeriodic()) { $flags |= Event::PERSIST; } $event = new Event($this->eventBase, -1, $flags, $this->timerCallback, $timer); $this->timerEvents[$timer] = $event; $event->add($timer->getInterval()); } /** * Create a callback used as the target of timer events. * * A reference is kept to the callback for the lifetime of the loop * to prevent "Cannot destroy active lambda function" fatal error from * the event extension. */ private function createTimerCallback() { $timers = $this->timerEvents; $this->timerCallback = function ($_, $__, $timer) use($timers) { \call_user_func($timer->getCallback(), $timer); if (!$timer->isPeriodic() && $timers->contains($timer)) { $this->cancelTimer($timer); } }; } /** * Create a callback used as the target of stream events. * * A reference is kept to the callback for the lifetime of the loop * to prevent "Cannot destroy active lambda function" fatal error from * the event extension. */ private function createStreamCallback() { $read =& $this->readListeners; $write =& $this->writeListeners; $this->streamCallback = function ($stream, $flags) use(&$read, &$write) { $key = (int) $stream; if (Event::READ === (Event::READ & $flags) && isset($read[$key])) { \call_user_func($read[$key], $stream); } if (Event::WRITE === (Event::WRITE & $flags) && isset($write[$key])) { \call_user_func($write[$key], $stream); } }; } } The MIT License (MIT) Copyright (c) 2012 Christian Lück, Cees-Jan Kiewiet, Jan Sorgalla, Chris Boden, Igor Wiedler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. start(); * * $process->on('exit', function ($code, $term) { * if ($term === null) { * echo 'exit with code ' . $code . PHP_EOL; * } else { * echo 'terminated with signal ' . $term . PHP_EOL; * } * }); * ``` * * Note that `$code` is `null` if the process has terminated, but the exit * code could not be determined. * Similarly, `$term` is `null` unless the process has terminated in response to * an uncaught signal sent to it. * This is not a limitation of this project, but actual how exit codes and signals * are exposed on POSIX systems, for more details see also * [here](https://unix.stackexchange.com/questions/99112/default-exit-code-when-process-is-terminated). * * It's also worth noting that process termination depends on all file descriptors * being closed beforehand. * This means that all [process pipes](#stream-properties) will emit a `close` * event before the `exit` event and that no more `data` events will arrive after * the `exit` event. * Accordingly, if either of these pipes is in a paused state (`pause()` method * or internally due to a `pipe()` call), this detection may not trigger. */ class Process extends EventEmitter { /** * @var WritableStreamInterface|null|DuplexStreamInterface|ReadableStreamInterface */ public $stdin; /** * @var ReadableStreamInterface|null|DuplexStreamInterface|WritableStreamInterface */ public $stdout; /** * @var ReadableStreamInterface|null|DuplexStreamInterface|WritableStreamInterface */ public $stderr; /** * Array with all process pipes (once started) * * Unless explicitly configured otherwise during construction, the following * standard I/O pipes will be assigned by default: * - 0: STDIN (`WritableStreamInterface`) * - 1: STDOUT (`ReadableStreamInterface`) * - 2: STDERR (`ReadableStreamInterface`) * * @var array */ public $pipes = array(); private $cmd; private $cwd; private $env; private $fds; private $process; private $status; private $exitCode; private $fallbackExitCode; private $stopSignal; private $termSignal; /** * Constructor. * * @param string $cmd Command line to run * @param null|string $cwd Current working directory or null to inherit * @param null|array $env Environment variables or null to inherit * @param null|array $fds File descriptors to allocate for this process (or null = default STDIO streams) * @throws \LogicException On windows or when proc_open() is not installed */ public function __construct($cmd, $cwd = null, $env = null, $fds = null) { if ($env !== null && !\is_array($env)) { // manual type check to support legacy PHP < 7.1 throw new \InvalidArgumentException('Argument #3 ($env) expected null|array'); } if ($fds !== null && !\is_array($fds)) { // manual type check to support legacy PHP < 7.1 throw new \InvalidArgumentException('Argument #4 ($fds) expected null|array'); } if (!\function_exists('proc_open')) { throw new \LogicException('The Process class relies on proc_open(), which is not available on your PHP installation.'); } $this->cmd = $cmd; $this->cwd = $cwd; if (null !== $env) { $this->env = array(); foreach ($env as $key => $value) { $this->env[(string) $key] = (string) $value; } } if ($fds === null) { $fds = array( array('pipe', 'r'), // stdin array('pipe', 'w'), // stdout array('pipe', 'w'), ); } if (\DIRECTORY_SEPARATOR === '\\') { foreach ($fds as $fd) { if (isset($fd[0]) && $fd[0] === 'pipe') { throw new \LogicException('Process pipes are not supported on Windows due to their blocking nature on Windows'); } } } $this->fds = $fds; } /** * Start the process. * * After the process is started, the standard I/O streams will be constructed * and available via public properties. * * This method takes an optional `LoopInterface|null $loop` parameter that can be used to * pass the event loop instance to use for this process. You can use a `null` value * here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). * This value SHOULD NOT be given unless you're sure you want to explicitly use a * given event loop instance. * * @param ?LoopInterface $loop Loop interface for stream construction * @param float $interval Interval to periodically monitor process state (seconds) * @throws \RuntimeException If the process is already running or fails to start */ public function start($loop = null, $interval = 0.1) { if ($loop !== null && !$loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1 throw new \InvalidArgumentException('_PHPStan_b22655c3f\\Argument #1 ($loop) expected null|React\\EventLoop\\LoopInterface'); } if ($this->isRunning()) { throw new \RuntimeException('Process is already running'); } $loop = $loop ?: Loop::get(); $cmd = $this->cmd; $fdSpec = $this->fds; // on Windows, we do not launch the given command line in a shell (cmd.exe) by default and omit any error dialogs // the cmd.exe shell can explicitly be given as part of the command as detailed in both documentation and tests $options = array(); if (\DIRECTORY_SEPARATOR === '\\') { $options['bypass_shell'] = \true; $options['suppress_errors'] = \true; } $errstr = ''; \set_error_handler(function ($_, $error) use(&$errstr) { // Match errstr from PHP's warning message. // proc_open(/dev/does-not-exist): Failed to open stream: No such file or directory $errstr = $error; }); $pipes = array(); $this->process = @\proc_open($cmd, $fdSpec, $pipes, $this->cwd, $this->env, $options); \restore_error_handler(); if (!\is_resource($this->process)) { throw new \RuntimeException('Unable to launch a new process: ' . $errstr); } // count open process pipes and await close event for each to drain buffers before detecting exit $that = $this; $closeCount = 0; $streamCloseHandler = function () use(&$closeCount, $loop, $interval, $that) { $closeCount--; if ($closeCount > 0) { return; } // process already closed => report immediately if (!$that->isRunning()) { $that->close(); $that->emit('exit', array($that->getExitCode(), $that->getTermSignal())); return; } // close not detected immediately => check regularly $loop->addPeriodicTimer($interval, function ($timer) use($that, $loop) { if (!$that->isRunning()) { $loop->cancelTimer($timer); $that->close(); $that->emit('exit', array($that->getExitCode(), $that->getTermSignal())); } }); }; foreach ($pipes as $n => $fd) { // use open mode from stream meta data or fall back to pipe open mode for legacy HHVM $meta = \stream_get_meta_data($fd); $mode = $meta['mode'] === '' ? $this->fds[$n][1] === 'r' ? 'w' : 'r' : $meta['mode']; if ($mode === 'r+') { $stream = new DuplexResourceStream($fd, $loop); $stream->on('close', $streamCloseHandler); $closeCount++; } elseif ($mode === 'w') { $stream = new WritableResourceStream($fd, $loop); } else { $stream = new ReadableResourceStream($fd, $loop); $stream->on('close', $streamCloseHandler); $closeCount++; } $this->pipes[$n] = $stream; } $this->stdin = isset($this->pipes[0]) ? $this->pipes[0] : null; $this->stdout = isset($this->pipes[1]) ? $this->pipes[1] : null; $this->stderr = isset($this->pipes[2]) ? $this->pipes[2] : null; // immediately start checking for process exit when started without any I/O pipes if (!$closeCount) { $streamCloseHandler(); } } /** * Close the process. * * This method should only be invoked via the periodic timer that monitors * the process state. */ public function close() { if ($this->process === null) { return; } foreach ($this->pipes as $pipe) { $pipe->close(); } $exitCode = \proc_close($this->process); $this->process = null; if ($this->exitCode === null && $exitCode !== -1) { $this->exitCode = $exitCode; } if ($this->exitCode === null && $this->status['exitcode'] !== -1) { $this->exitCode = $this->status['exitcode']; } if ($this->exitCode === null && $this->fallbackExitCode !== null) { $this->exitCode = $this->fallbackExitCode; $this->fallbackExitCode = null; } } /** * Terminate the process with an optional signal. * * @param int $signal Optional signal (default: SIGTERM) * @return bool Whether the signal was sent successfully */ public function terminate($signal = null) { if ($this->process === null) { return \false; } if ($signal !== null) { return \proc_terminate($this->process, $signal); } return \proc_terminate($this->process); } /** * Get the command string used to launch the process. * * @return string */ public function getCommand() { return $this->cmd; } /** * Get the exit code returned by the process. * * This value is only meaningful if isRunning() has returned false. Null * will be returned if the process is still running. * * Null may also be returned if the process has terminated, but the exit * code could not be determined. * * @return int|null */ public function getExitCode() { return $this->exitCode; } /** * Get the process ID. * * @return int|null */ public function getPid() { $status = $this->getCachedStatus(); return $status !== null ? $status['pid'] : null; } /** * Get the signal that caused the process to stop its execution. * * This value is only meaningful if isStopped() has returned true. Null will * be returned if the process was never stopped. * * @return int|null */ public function getStopSignal() { return $this->stopSignal; } /** * Get the signal that caused the process to terminate its execution. * * This value is only meaningful if isTerminated() has returned true. Null * will be returned if the process was never terminated. * * @return int|null */ public function getTermSignal() { return $this->termSignal; } /** * Return whether the process is still running. * * @return bool */ public function isRunning() { if ($this->process === null) { return \false; } $status = $this->getFreshStatus(); return $status !== null ? $status['running'] : \false; } /** * Return whether the process has been stopped by a signal. * * @return bool */ public function isStopped() { $status = $this->getFreshStatus(); return $status !== null ? $status['stopped'] : \false; } /** * Return whether the process has been terminated by an uncaught signal. * * @return bool */ public function isTerminated() { $status = $this->getFreshStatus(); return $status !== null ? $status['signaled'] : \false; } /** * Return the cached process status. * * @return array */ private function getCachedStatus() { if ($this->status === null) { $this->updateStatus(); } return $this->status; } /** * Return the updated process status. * * @return array */ private function getFreshStatus() { $this->updateStatus(); return $this->status; } /** * Update the process status, stop/term signals, and exit code. * * Stop/term signals are only updated if the process is currently stopped or * signaled, respectively. Otherwise, signal values will remain as-is so the * corresponding getter methods may be used at a later point in time. */ private function updateStatus() { if ($this->process === null) { return; } $this->status = \proc_get_status($this->process); if ($this->status === \false) { throw new \UnexpectedValueException('proc_get_status() failed'); } if ($this->status['stopped']) { $this->stopSignal = $this->status['stopsig']; } if ($this->status['signaled']) { $this->termSignal = $this->status['termsig']; } if (!$this->status['running'] && -1 !== $this->status['exitcode']) { $this->exitCode = $this->status['exitcode']; } } } Copyright (c) 2012 Christian Lück, Cees-Jan Kiewiet, Jan Sorgalla, Chris Boden, Igor Wiedler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. getMessage(); * } * ``` * * @template T * @param PromiseInterface $promise * @return T returns whatever the promise resolves to * @throws \Exception when the promise is rejected with an `Exception` * @throws \Throwable when the promise is rejected with a `Throwable` * @throws \UnexpectedValueException when the promise is rejected with an unexpected value (Promise API v1 or v2 only) */ function await(PromiseInterface $promise) { $wait = \true; $resolved = null; $exception = null; $rejected = \false; /** @var bool $loopStarted */ $loopStarted = \false; $promise->then(function ($c) use(&$resolved, &$wait, &$loopStarted) { $resolved = $c; $wait = \false; if ($loopStarted) { Loop::stop(); } }, function ($error) use(&$exception, &$rejected, &$wait, &$loopStarted) { $exception = $error; $rejected = \true; $wait = \false; if ($loopStarted) { Loop::stop(); } }); // Explicitly overwrite argument with null value. This ensure that this // argument does not show up in the stack trace in PHP 7+ only. $promise = null; while ($wait) { $loopStarted = \true; Loop::run(); } if ($rejected) { // promise is rejected with an unexpected value (Promise API v1 or v2 only) if (!$exception instanceof \Throwable) { $exception = new \UnexpectedValueException('Promise rejected with unexpected value of type ' . (\is_object($exception) ? \get_class($exception) : \gettype($exception))); } throw $exception; } /** @var T $resolved */ return $resolved; } /** * Delay program execution for duration given in `$seconds`. * * ```php * React\Async\delay($seconds); * ``` * * This function will only return after the given number of `$seconds` have * elapsed. If there are no other events attached to this loop, it will behave * similar to PHP's [`sleep()` function](https://www.php.net/manual/en/function.sleep.php). * * ```php * echo 'a'; * React\Async\delay(1.0); * echo 'b'; * * // prints "a" at t=0.0s * // prints "b" at t=1.0s * ``` * * Unlike PHP's [`sleep()` function](https://www.php.net/manual/en/function.sleep.php), * this function may not necessarily halt execution of the entire process thread. * Instead, it allows the event loop to run any other events attached to the * same loop until the delay returns: * * ```php * echo 'a'; * Loop::addTimer(1.0, function () { * echo 'b'; * }); * React\Async\delay(3.0); * echo 'c'; * * // prints "a" at t=0.0s * // prints "b" at t=1.0s * // prints "c" at t=3.0s * ``` * * This behavior is especially useful if you want to delay the program execution * of a particular routine, such as when building a simple polling or retry * mechanism: * * ```php * try { * something(); * } catch (Throwable $e) { * // in case of error, retry after a short delay * React\Async\delay(1.0); * something(); * } * ``` * * Because this function only returns after some time has passed, it can be * considered *blocking* from the perspective of the calling code. While the * delay is running, this function will assume control over the event loop. * Internally, it will `run()` the [default loop](https://github.com/reactphp/event-loop#loop) * until the delay returns and then calls `stop()` to terminate execution of the * loop. This means this function is more suited for short-lived promise executions * when using promise-based APIs is not feasible. For long-running applications, * using promise-based APIs by leveraging chained `then()` calls is usually preferable. * * Internally, the `$seconds` argument will be used as a timer for the loop so that * it keeps running until this timer triggers. This implies that if you pass a * really small (or negative) value, it will still start a timer and will thus * trigger at the earliest possible time in the future. * * @param float $seconds * @return void * @uses await() */ function delay(float $seconds) : void { await(new Promise(function (callable $resolve) use($seconds) : void { Loop::addTimer($seconds, function () use($resolve) : void { $resolve(null); }); })); } /** * Execute a Generator-based coroutine to "await" promises. * * ```php * React\Async\coroutine(function () { * $browser = new React\Http\Browser(); * * try { * $response = yield $browser->get('https://example.com/'); * assert($response instanceof Psr\Http\Message\ResponseInterface); * echo $response->getBody(); * } catch (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * } * }); * ``` * * Using Generator-based coroutines is an alternative to directly using the * underlying promise APIs. For many use cases, this makes using promise-based * APIs much simpler, as it resembles a synchronous code flow more closely. * The above example performs the equivalent of directly using the promise APIs: * * ```php * $browser = new React\Http\Browser(); * * $browser->get('https://example.com/')->then(function (Psr\Http\Message\ResponseInterface $response) { * echo $response->getBody(); * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * The `yield` keyword can be used to "await" a promise resolution. Internally, * it will turn the entire given `$function` into a [`Generator`](https://www.php.net/manual/en/class.generator.php). * This allows the execution to be interrupted and resumed at the same place * when the promise is fulfilled. The `yield` statement returns whatever the * promise is fulfilled with. If the promise is rejected, it will throw an * `Exception` or `Throwable`. * * The `coroutine()` function will always return a Proimise which will be * fulfilled with whatever your `$function` returns. Likewise, it will return * a promise that will be rejected if you throw an `Exception` or `Throwable` * from your `$function`. This allows you easily create Promise-based functions: * * ```php * $promise = React\Async\coroutine(function () { * $browser = new React\Http\Browser(); * $urls = [ * 'https://example.com/alice', * 'https://example.com/bob' * ]; * * $bytes = 0; * foreach ($urls as $url) { * $response = yield $browser->get($url); * assert($response instanceof Psr\Http\Message\ResponseInterface); * $bytes += $response->getBody()->getSize(); * } * return $bytes; * }); * * $promise->then(function (int $bytes) { * echo 'Total size: ' . $bytes . PHP_EOL; * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * The previous example uses a `yield` statement inside a loop to highlight how * this vastly simplifies consuming asynchronous operations. At the same time, * this naive example does not leverage concurrent execution, as it will * essentially "await" between each operation. In order to take advantage of * concurrent execution within the given `$function`, you can "await" multiple * promises by using a single `yield` together with Promise-based primitives * like this: * * ```php * $promise = React\Async\coroutine(function () { * $browser = new React\Http\Browser(); * $urls = [ * 'https://example.com/alice', * 'https://example.com/bob' * ]; * * $promises = []; * foreach ($urls as $url) { * $promises[] = $browser->get($url); * } * * try { * $responses = yield React\Promise\all($promises); * } catch (Exception $e) { * foreach ($promises as $promise) { * $promise->cancel(); * } * throw $e; * } * * $bytes = 0; * foreach ($responses as $response) { * assert($response instanceof Psr\Http\Message\ResponseInterface); * $bytes += $response->getBody()->getSize(); * } * return $bytes; * }); * * $promise->then(function (int $bytes) { * echo 'Total size: ' . $bytes . PHP_EOL; * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * @template T * @template TYield * @template A1 (any number of function arguments, see https://github.com/phpstan/phpstan/issues/8214) * @template A2 * @template A3 * @template A4 * @template A5 * @param callable(A1, A2, A3, A4, A5):(\Generator, TYield, PromiseInterface|T>|PromiseInterface|T) $function * @param mixed ...$args Optional list of additional arguments that will be passed to the given `$function` as is * @return PromiseInterface * @since 3.0.0 */ function coroutine(callable $function, ...$args) : PromiseInterface { try { $generator = $function(...$args); } catch (\Throwable $e) { return reject($e); } if (!$generator instanceof \Generator) { return resolve($generator); } $promise = null; $deferred = new Deferred(function () use(&$promise) { /** @var ?PromiseInterface $promise */ if ($promise instanceof PromiseInterface && \method_exists($promise, 'cancel')) { $promise->cancel(); } $promise = null; }); /** @var callable $next */ $next = function () use($deferred, $generator, &$next, &$promise) { try { if (!$generator->valid()) { $next = null; $deferred->resolve($generator->getReturn()); return; } } catch (\Throwable $e) { $next = null; $deferred->reject($e); return; } $promise = $generator->current(); if (!$promise instanceof PromiseInterface) { $next = null; $deferred->reject(new \UnexpectedValueException('Expected coroutine to yield ' . PromiseInterface::class . ', but got ' . (\is_object($promise) ? \get_class($promise) : \gettype($promise)))); return; } /** @var PromiseInterface $promise */ \assert($next instanceof \Closure); $promise->then(function ($value) use($generator, $next) { $generator->send($value); $next(); }, function (\Throwable $reason) use($generator, $next) { $generator->throw($reason); $next(); })->then(null, function (\Throwable $reason) use($deferred, &$next) { $next = null; $deferred->reject($reason); }); }; $next(); return $deferred->promise(); } /** * @template T * @param iterable|T)> $tasks * @return PromiseInterface> */ function parallel(iterable $tasks) : PromiseInterface { /** @var array> $pending */ $pending = []; $deferred = new Deferred(function () use(&$pending) { foreach ($pending as $promise) { if ($promise instanceof PromiseInterface && \method_exists($promise, 'cancel')) { $promise->cancel(); } } $pending = []; }); $results = []; $continue = \true; $taskErrback = function ($error) use(&$pending, $deferred, &$continue) { $continue = \false; $deferred->reject($error); foreach ($pending as $promise) { if ($promise instanceof PromiseInterface && \method_exists($promise, 'cancel')) { $promise->cancel(); } } $pending = []; }; foreach ($tasks as $i => $task) { $taskCallback = function ($result) use(&$results, &$pending, &$continue, $i, $deferred) { $results[$i] = $result; unset($pending[$i]); if (!$pending && !$continue) { $deferred->resolve($results); } }; $promise = \call_user_func($task); \assert($promise instanceof PromiseInterface); $pending[$i] = $promise; $promise->then($taskCallback, $taskErrback); if (!$continue) { break; } } $continue = \false; if (!$pending) { $deferred->resolve($results); } return $deferred->promise(); } /** * @template T * @param iterable|T)> $tasks * @return PromiseInterface> */ function series(iterable $tasks) : PromiseInterface { $pending = null; $deferred = new Deferred(function () use(&$pending) { /** @var ?PromiseInterface $pending */ if ($pending instanceof PromiseInterface && \method_exists($pending, 'cancel')) { $pending->cancel(); } $pending = null; }); $results = []; if ($tasks instanceof \IteratorAggregate) { $tasks = $tasks->getIterator(); \assert($tasks instanceof \Iterator); } $taskCallback = function ($result) use(&$results, &$next) { $results[] = $result; /** @var \Closure $next */ $next(); }; $next = function () use(&$tasks, $taskCallback, $deferred, &$results, &$pending) { if ($tasks instanceof \Iterator ? !$tasks->valid() : !$tasks) { $deferred->resolve($results); return; } if ($tasks instanceof \Iterator) { $task = $tasks->current(); $tasks->next(); } else { \assert(\is_array($tasks)); $task = \array_shift($tasks); } \assert(\is_callable($task)); $promise = \call_user_func($task); \assert($promise instanceof PromiseInterface); $pending = $promise; $promise->then($taskCallback, array($deferred, 'reject')); }; $next(); return $deferred->promise(); } /** * @template T * @param iterable<(callable():(PromiseInterface|T))|(callable(mixed):(PromiseInterface|T))> $tasks * @return PromiseInterface<($tasks is non-empty-array|\Traversable ? T : null)> */ function waterfall(iterable $tasks) : PromiseInterface { $pending = null; $deferred = new Deferred(function () use(&$pending) { /** @var ?PromiseInterface $pending */ if ($pending instanceof PromiseInterface && \method_exists($pending, 'cancel')) { $pending->cancel(); } $pending = null; }); if ($tasks instanceof \IteratorAggregate) { $tasks = $tasks->getIterator(); \assert($tasks instanceof \Iterator); } /** @var callable $next */ $next = function ($value = null) use(&$tasks, &$next, $deferred, &$pending) { if ($tasks instanceof \Iterator ? !$tasks->valid() : !$tasks) { $deferred->resolve($value); return; } if ($tasks instanceof \Iterator) { $task = $tasks->current(); $tasks->next(); } else { \assert(\is_array($tasks)); $task = \array_shift($tasks); } \assert(\is_callable($task)); $promise = \call_user_func_array($task, \func_get_args()); \assert($promise instanceof PromiseInterface); $pending = $promise; $promise->then($next, array($deferred, 'reject')); }; $next(); return $deferred->promise(); } sizeLimit = IniUtil::iniSizeToBytes($sizeLimit); } public function __invoke(ServerRequestInterface $request, $next) { $body = $request->getBody(); $size = $body->getSize(); // happy path: skip if body is known to be empty (or is already buffered) if ($size === 0 || !$body instanceof ReadableStreamInterface || !$body->isReadable()) { // replace with empty body if body is streaming (or buffered size exceeds limit) if ($body instanceof ReadableStreamInterface || $size > $this->sizeLimit) { $request = $request->withBody(new BufferedBody('')); } return $next($request); } // request body of known size exceeding limit $sizeLimit = $this->sizeLimit; if ($size > $this->sizeLimit) { $sizeLimit = 0; } /** @var ?\Closure $closer */ $closer = null; return new Promise(function ($resolve, $reject) use($body, &$closer, $sizeLimit, $request, $next) { // buffer request body data in memory, discard but keep buffering if limit is reached $buffer = ''; $bufferer = null; $body->on('data', $bufferer = function ($data) use(&$buffer, $sizeLimit, $body, &$bufferer) { $buffer .= $data; // On buffer overflow keep the request body stream in, // but ignore the contents and wait for the close event // before passing the request on to the next middleware. if (isset($buffer[$sizeLimit])) { \assert($bufferer instanceof \Closure); $body->removeListener('data', $bufferer); $bufferer = null; $buffer = ''; } }); // call $next with current buffer and resolve or reject with its results $body->on('close', $closer = function () use(&$buffer, $request, $resolve, $reject, $next) { try { // resolve with result of next handler $resolve($next($request->withBody(new BufferedBody($buffer)))); } catch (\Exception $e) { $reject($e); } catch (\Throwable $e) { // @codeCoverageIgnoreStart // reject Errors just like Exceptions (PHP 7+) $reject($e); // @codeCoverageIgnoreEnd } }); // reject buffering if body emits error $body->on('error', function (\Exception $e) use($reject, $body, $closer) { // remove close handler to avoid resolving, then close and reject \assert($closer instanceof \Closure); $body->removeListener('close', $closer); $body->close(); $reject(new \RuntimeException('Error while buffering request body: ' . $e->getMessage(), $e->getCode(), $e)); }); }, function () use($body, &$closer) { // cancelled buffering: remove close handler to avoid resolving, then close and reject \assert($closer instanceof \Closure); $body->removeListener('close', $closer); $body->close(); throw new \RuntimeException('Cancelled buffering request body'); }); } } limit = $limit; } public function __invoke(ServerRequestInterface $request, $next) { // happy path: simply invoke next request handler if we're below limit if ($this->pending < $this->limit) { ++$this->pending; try { $response = $next($request); } catch (\Exception $e) { $this->processQueue(); throw $e; } catch (\Throwable $e) { // @codeCoverageIgnoreStart // handle Errors just like Exceptions (PHP 7+ only) $this->processQueue(); throw $e; // @codeCoverageIgnoreEnd } // happy path: if next request handler returned immediately, // we can simply try to invoke the next queued request if ($response instanceof ResponseInterface) { $this->processQueue(); return $response; } // if the next handler returns a pending promise, we have to // await its resolution before invoking next queued request return $this->await(Promise\resolve($response)); } // if we reach this point, then this request will need to be queued // check if the body is streaming, in which case we need to buffer everything $body = $request->getBody(); if ($body instanceof ReadableStreamInterface) { // pause actual body to stop emitting data until the handler is called $size = $body->getSize(); $body = new PauseBufferStream($body); $body->pauseImplicit(); // replace with buffering body to ensure any readable events will be buffered $request = $request->withBody(new HttpBodyStream($body, $size)); } // get next queue position $queue =& $this->queue; $queue[] = null; \end($queue); $id = \key($queue); $deferred = new Deferred(function ($_, $reject) use(&$queue, $id) { // queued promise cancelled before its next handler is invoked // remove from queue and reject explicitly unset($queue[$id]); $reject(new \RuntimeException('Cancelled queued next handler')); }); // queue request and process queue if pending does not exceed limit $queue[$id] = $deferred; $pending =& $this->pending; $that = $this; return $deferred->promise()->then(function () use($request, $next, $body, &$pending, $that) { // invoke next request handler ++$pending; try { $response = $next($request); } catch (\Exception $e) { $that->processQueue(); throw $e; } catch (\Throwable $e) { // @codeCoverageIgnoreStart // handle Errors just like Exceptions (PHP 7+ only) $that->processQueue(); throw $e; // @codeCoverageIgnoreEnd } // resume readable stream and replay buffered events if ($body instanceof PauseBufferStream) { $body->resumeImplicit(); } // if the next handler returns a pending promise, we have to // await its resolution before invoking next queued request return $that->await(Promise\resolve($response)); }); } /** * @internal * @param PromiseInterface $promise * @return PromiseInterface */ public function await(PromiseInterface $promise) { $that = $this; return $promise->then(function ($response) use($that) { $that->processQueue(); return $response; }, function ($error) use($that) { $that->processQueue(); return Promise\reject($error); }); } /** * @internal */ public function processQueue() { // skip if we're still above concurrency limit or there's no queued request waiting if (--$this->pending >= $this->limit || !$this->queue) { return; } $first = \reset($this->queue); unset($this->queue[\key($this->queue)]); $first->resolve(null); } } multipart = new MultipartParser($uploadMaxFilesize, $maxFileUploads); } public function __invoke(ServerRequestInterface $request, $next) { $type = \strtolower($request->getHeaderLine('Content-Type')); list($type) = \explode(';', $type); if ($type === 'application/x-www-form-urlencoded') { return $next($this->parseFormUrlencoded($request)); } if ($type === 'multipart/form-data') { return $next($this->multipart->parse($request)); } return $next($request); } private function parseFormUrlencoded(ServerRequestInterface $request) { // parse string into array structure // ignore warnings due to excessive data structures (max_input_vars and max_input_nesting_level) $ret = array(); @\parse_str((string) $request->getBody(), $ret); return $request->withParsedBody($ret); } } getBody(); * assert($body instanceof Psr\Http\Message\StreamInterface); * assert($body instanceof React\Stream\ReadableStreamInterface); * * return new React\Promise\Promise(function ($resolve) use ($body) { * $bytes = 0; * $body->on('data', function ($chunk) use (&$bytes) { * $bytes += \count($chunk); * }); * $body->on('close', function () use (&$bytes, $resolve) { * $resolve(new React\Http\Response( * 200, * [], * "Received $bytes bytes\n" * )); * }); * }); * } * ); * ``` * * See also [streaming incoming request](../../README.md#streaming-incoming-request) * for more details. * * Additionally, this middleware can be used in combination with the * [`LimitConcurrentRequestsMiddleware`](#limitconcurrentrequestsmiddleware) and * [`RequestBodyBufferMiddleware`](#requestbodybuffermiddleware) (see below) * to explicitly configure the total number of requests that can be handled at * once: * * ```php * $http = new React\Http\HttpServer( * new React\Http\Middleware\StreamingRequestMiddleware(), * new React\Http\Middleware\LimitConcurrentRequestsMiddleware(100), // 100 concurrent buffering handlers * new React\Http\Middleware\RequestBodyBufferMiddleware(2 * 1024 * 1024), // 2 MiB per request * new React\Http\Middleware\RequestBodyParserMiddleware(), * $handler * ); * ``` * * > Internally, this class is used as a "marker" to not trigger the default * request buffering behavior in the `HttpServer`. It does not implement any logic * on its own. */ final class StreamingRequestMiddleware { public function __invoke(ServerRequestInterface $request, $next) { return $next($request); } } Internally, this implementation builds on top of a base class which is * considered an implementation detail that may change in the future. * * @see RequestInterface */ final class Request extends AbstractRequest implements RequestInterface { /** * @param string $method HTTP method for the request. * @param string|UriInterface $url URL for the request. * @param array $headers Headers for the message. * @param string|ReadableStreamInterface|StreamInterface $body Message body. * @param string $version HTTP protocol version. * @throws \InvalidArgumentException for an invalid URL or body */ public function __construct($method, $url, array $headers = array(), $body = '', $version = '1.1') { if (\is_string($body)) { $body = new BufferedBody($body); } elseif ($body instanceof ReadableStreamInterface && !$body instanceof StreamInterface) { $body = new ReadableBodyStream($body); } elseif (!$body instanceof StreamInterface) { throw new \InvalidArgumentException('Invalid request body given'); } parent::__construct($method, $url, $headers, $body, $version); } } getStatusCode() . ' (' . $response->getReasonPhrase() . ')'; } if ($code === null) { $code = $response->getStatusCode(); } parent::__construct($message, $code, $previous); $this->response = $response; } /** * Access its underlying response object. * * @return ResponseInterface */ public function getResponse() { return $this->response; } } Internally, this implementation builds on top of a base class which is * considered an implementation detail that may change in the future. * * @see ServerRequestInterface */ final class ServerRequest extends AbstractRequest implements ServerRequestInterface { private $attributes = array(); private $serverParams; private $fileParams = array(); private $cookies = array(); private $queryParams = array(); private $parsedBody; /** * @param string $method HTTP method for the request. * @param string|UriInterface $url URL for the request. * @param array $headers Headers for the message. * @param string|ReadableStreamInterface|StreamInterface $body Message body. * @param string $version HTTP protocol version. * @param array $serverParams server-side parameters * @throws \InvalidArgumentException for an invalid URL or body */ public function __construct($method, $url, array $headers = array(), $body = '', $version = '1.1', $serverParams = array()) { if (\is_string($body)) { $body = new BufferedBody($body); } elseif ($body instanceof ReadableStreamInterface && !$body instanceof StreamInterface) { $temp = new self($method, '', $headers); $size = (int) $temp->getHeaderLine('Content-Length'); if (\strtolower($temp->getHeaderLine('Transfer-Encoding')) === 'chunked') { $size = null; } $body = new HttpBodyStream($body, $size); } elseif (!$body instanceof StreamInterface) { throw new \InvalidArgumentException('Invalid server request body given'); } parent::__construct($method, $url, $headers, $body, $version); $this->serverParams = $serverParams; $query = $this->getUri()->getQuery(); if ($query !== '') { \parse_str($query, $this->queryParams); } // Multiple cookie headers are not allowed according // to https://tools.ietf.org/html/rfc6265#section-5.4 $cookieHeaders = $this->getHeader("Cookie"); if (\count($cookieHeaders) === 1) { $this->cookies = $this->parseCookie($cookieHeaders[0]); } } public function getServerParams() { return $this->serverParams; } public function getCookieParams() { return $this->cookies; } public function withCookieParams(array $cookies) { $new = clone $this; $new->cookies = $cookies; return $new; } public function getQueryParams() { return $this->queryParams; } public function withQueryParams(array $query) { $new = clone $this; $new->queryParams = $query; return $new; } public function getUploadedFiles() { return $this->fileParams; } public function withUploadedFiles(array $uploadedFiles) { $new = clone $this; $new->fileParams = $uploadedFiles; return $new; } public function getParsedBody() { return $this->parsedBody; } public function withParsedBody($data) { $new = clone $this; $new->parsedBody = $data; return $new; } public function getAttributes() { return $this->attributes; } public function getAttribute($name, $default = null) { if (!\array_key_exists($name, $this->attributes)) { return $default; } return $this->attributes[$name]; } public function withAttribute($name, $value) { $new = clone $this; $new->attributes[$name] = $value; return $new; } public function withoutAttribute($name) { $new = clone $this; unset($new->attributes[$name]); return $new; } /** * @param string $cookie * @return array */ private function parseCookie($cookie) { $cookieArray = \explode(';', $cookie); $result = array(); foreach ($cookieArray as $pair) { $pair = \trim($pair); $nameValuePair = \explode('=', $pair, 2); if (\count($nameValuePair) === 2) { $key = $nameValuePair[0]; $value = \urldecode($nameValuePair[1]); $result[$key] = $value; } } return $result; } /** * [Internal] Parse incoming HTTP protocol message * * @internal * @param string $message * @param array $serverParams * @return self * @throws \InvalidArgumentException if given $message is not a valid HTTP request message */ public static function parseMessage($message, array $serverParams) { // parse request line like "GET /path HTTP/1.1" $start = array(); if (!\preg_match('#^(?[^ ]+) (?[^ ]+) HTTP/(?\\d\\.\\d)#m', $message, $start)) { throw new \InvalidArgumentException('Unable to parse invalid request-line'); } // only support HTTP/1.1 and HTTP/1.0 requests if ($start['version'] !== '1.1' && $start['version'] !== '1.0') { throw new \InvalidArgumentException('Received request with invalid protocol version', Response::STATUS_VERSION_NOT_SUPPORTED); } // check number of valid header fields matches number of lines + request line $matches = array(); $n = \preg_match_all(self::REGEX_HEADERS, $message, $matches, \PREG_SET_ORDER); if (\substr_count($message, "\n") !== $n + 1) { throw new \InvalidArgumentException('Unable to parse invalid request header fields'); } // format all header fields into associative array $host = null; $headers = array(); foreach ($matches as $match) { $headers[$match[1]][] = $match[2]; // match `Host` request header if ($host === null && \strtolower($match[1]) === 'host') { $host = $match[2]; } } // scheme is `http` unless TLS is used $scheme = isset($serverParams['HTTPS']) ? 'https://' : 'http://'; // default host if unset comes from local socket address or defaults to localhost $hasHost = $host !== null; if ($host === null) { $host = isset($serverParams['SERVER_ADDR'], $serverParams['SERVER_PORT']) ? $serverParams['SERVER_ADDR'] . ':' . $serverParams['SERVER_PORT'] : '127.0.0.1'; } if ($start['method'] === 'OPTIONS' && $start['target'] === '*') { // support asterisk-form for `OPTIONS *` request line only $uri = $scheme . $host; } elseif ($start['method'] === 'CONNECT') { $parts = \parse_url('tcp://' . $start['target']); // check this is a valid authority-form request-target (host:port) if (!isset($parts['scheme'], $parts['host'], $parts['port']) || \count($parts) !== 3) { throw new \InvalidArgumentException('CONNECT method MUST use authority-form request target'); } $uri = $scheme . $start['target']; } else { // support absolute-form or origin-form for proxy requests if ($start['target'][0] === '/') { $uri = $scheme . $host . $start['target']; } else { // ensure absolute-form request-target contains a valid URI $parts = \parse_url($start['target']); // make sure value contains valid host component (IP or hostname), but no fragment if (!isset($parts['scheme'], $parts['host']) || $parts['scheme'] !== 'http' || isset($parts['fragment'])) { throw new \InvalidArgumentException('Invalid absolute-form request-target'); } $uri = $start['target']; } } $request = new self($start['method'], $uri, $headers, '', $start['version'], $serverParams); // only assign request target if it is not in origin-form (happy path for most normal requests) if ($start['target'][0] !== '/') { $request = $request->withRequestTarget($start['target']); } if ($hasHost) { // Optional Host request header value MUST be valid (host and optional port) $parts = \parse_url('http://' . $request->getHeaderLine('Host')); // make sure value contains valid host component (IP or hostname) if (!$parts || !isset($parts['scheme'], $parts['host'])) { $parts = \false; } // make sure value does not contain any other URI component if (\is_array($parts)) { unset($parts['scheme'], $parts['host'], $parts['port']); } if ($parts === \false || $parts) { throw new \InvalidArgumentException('Invalid Host header value'); } } elseif (!$hasHost && $start['version'] === '1.1' && $start['method'] !== 'CONNECT') { // require Host request header for HTTP/1.1 (except for CONNECT method) throw new \InvalidArgumentException('Missing required Host request header'); } elseif (!$hasHost) { // remove default Host request header for HTTP/1.0 when not explicitly given $request = $request->withoutHeader('Host'); } // ensure message boundaries are valid according to Content-Length and Transfer-Encoding request headers if ($request->hasHeader('Transfer-Encoding')) { if (\strtolower($request->getHeaderLine('Transfer-Encoding')) !== 'chunked') { throw new \InvalidArgumentException('Only chunked-encoding is allowed for Transfer-Encoding', Response::STATUS_NOT_IMPLEMENTED); } // Transfer-Encoding: chunked and Content-Length header MUST NOT be used at the same time // as per https://tools.ietf.org/html/rfc7230#section-3.3.3 if ($request->hasHeader('Content-Length')) { throw new \InvalidArgumentException('Using both `Transfer-Encoding: chunked` and `Content-Length` is not allowed', Response::STATUS_BAD_REQUEST); } } elseif ($request->hasHeader('Content-Length')) { $string = $request->getHeaderLine('Content-Length'); if ((string) (int) $string !== $string) { // Content-Length value is not an integer or not a single integer throw new \InvalidArgumentException('The value of `Content-Length` is not valid', Response::STATUS_BAD_REQUEST); } } return $request; } } scheme = \strtolower($parts['scheme']); } if (isset($parts['user']) || isset($parts['pass'])) { $this->userInfo = $this->encode(isset($parts['user']) ? $parts['user'] : '', \PHP_URL_USER) . (isset($parts['pass']) ? ':' . $this->encode($parts['pass'], \PHP_URL_PASS) : ''); } if (isset($parts['host'])) { $this->host = \strtolower($parts['host']); } if (isset($parts['port']) && !($parts['port'] === 80 && $this->scheme === 'http' || $parts['port'] === 443 && $this->scheme === 'https')) { $this->port = $parts['port']; } if (isset($parts['path'])) { $this->path = $this->encode($parts['path'], \PHP_URL_PATH); } if (isset($parts['query'])) { $this->query = $this->encode($parts['query'], \PHP_URL_QUERY); } if (isset($parts['fragment'])) { $this->fragment = $this->encode($parts['fragment'], \PHP_URL_FRAGMENT); } } public function getScheme() { return $this->scheme; } public function getAuthority() { if ($this->host === '') { return ''; } return ($this->userInfo !== '' ? $this->userInfo . '@' : '') . $this->host . ($this->port !== null ? ':' . $this->port : ''); } public function getUserInfo() { return $this->userInfo; } public function getHost() { return $this->host; } public function getPort() { return $this->port; } public function getPath() { return $this->path; } public function getQuery() { return $this->query; } public function getFragment() { return $this->fragment; } public function withScheme($scheme) { $scheme = \strtolower($scheme); if ($scheme === $this->scheme) { return $this; } if (!\preg_match('#^[a-z]*$#', $scheme)) { throw new \InvalidArgumentException('Invalid URI scheme given'); } $new = clone $this; $new->scheme = $scheme; if ($this->port === 80 && $scheme === 'http' || $this->port === 443 && $scheme === 'https') { $new->port = null; } return $new; } public function withUserInfo($user, $password = null) { $userInfo = $this->encode($user, \PHP_URL_USER) . ($password !== null ? ':' . $this->encode($password, \PHP_URL_PASS) : ''); if ($userInfo === $this->userInfo) { return $this; } $new = clone $this; $new->userInfo = $userInfo; return $new; } public function withHost($host) { $host = \strtolower($host); if ($host === $this->host) { return $this; } if (\preg_match('#[\\s_%+]#', $host) || $host !== '' && \parse_url('http://' . $host, \PHP_URL_HOST) !== $host) { throw new \InvalidArgumentException('Invalid URI host given'); } $new = clone $this; $new->host = $host; return $new; } public function withPort($port) { $port = $port === null ? null : (int) $port; if ($port === 80 && $this->scheme === 'http' || $port === 443 && $this->scheme === 'https') { $port = null; } if ($port === $this->port) { return $this; } if ($port !== null && ($port < 1 || $port > 0xffff)) { throw new \InvalidArgumentException('Invalid URI port given'); } $new = clone $this; $new->port = $port; return $new; } public function withPath($path) { $path = $this->encode($path, \PHP_URL_PATH); if ($path === $this->path) { return $this; } $new = clone $this; $new->path = $path; return $new; } public function withQuery($query) { $query = $this->encode($query, \PHP_URL_QUERY); if ($query === $this->query) { return $this; } $new = clone $this; $new->query = $query; return $new; } public function withFragment($fragment) { $fragment = $this->encode($fragment, \PHP_URL_FRAGMENT); if ($fragment === $this->fragment) { return $this; } $new = clone $this; $new->fragment = $fragment; return $new; } public function __toString() { $uri = ''; if ($this->scheme !== '') { $uri .= $this->scheme . ':'; } $authority = $this->getAuthority(); if ($authority !== '') { $uri .= '//' . $authority; } if ($authority !== '' && isset($this->path[0]) && $this->path[0] !== '/') { $uri .= '/' . $this->path; } elseif ($authority === '' && isset($this->path[0]) && $this->path[0] === '/') { $uri .= '/' . \ltrim($this->path, '/'); } else { $uri .= $this->path; } if ($this->query !== '') { $uri .= '?' . $this->query; } if ($this->fragment !== '') { $uri .= '#' . $this->fragment; } return $uri; } /** * @param string $part * @param int $component * @return string */ private function encode($part, $component) { return \preg_replace_callback('/(?:[^a-z0-9_\\-\\.~!\\$&\'\\(\\)\\*\\+,;=' . ($component === \PHP_URL_PATH ? ':@\\/' : ($component === \PHP_URL_QUERY || $component === \PHP_URL_FRAGMENT ? ':@\\/\\?' : '')) . '%]++|%(?![a-f0-9]{2}))/i', function (array $match) { return \rawurlencode($match[0]); }, $part); } /** * [Internal] Resolve URI relative to base URI and return new absolute URI * * @internal * @param UriInterface $base * @param UriInterface $rel * @return UriInterface * @throws void */ public static function resolve(UriInterface $base, UriInterface $rel) { if ($rel->getScheme() !== '') { return $rel->getPath() === '' ? $rel : $rel->withPath(self::removeDotSegments($rel->getPath())); } $reset = \false; $new = $base; if ($rel->getAuthority() !== '') { $reset = \true; $userInfo = \explode(':', $rel->getUserInfo(), 2); $new = $base->withUserInfo($userInfo[0], isset($userInfo[1]) ? $userInfo[1] : null)->withHost($rel->getHost())->withPort($rel->getPort()); } if ($reset && $rel->getPath() === '') { $new = $new->withPath(''); } elseif (($path = $rel->getPath()) !== '') { $start = ''; if ($path === '' || $path[0] !== '/') { $start = $base->getPath(); if (\substr($start, -1) !== '/') { $start .= '/../'; } } $reset = \true; $new = $new->withPath(self::removeDotSegments($start . $path)); } if ($reset || $rel->getQuery() !== '') { $reset = \true; $new = $new->withQuery($rel->getQuery()); } if ($reset || $rel->getFragment() !== '') { $new = $new->withFragment($rel->getFragment()); } return $new; } /** * @param string $path * @return string */ private static function removeDotSegments($path) { $segments = array(); foreach (\explode('/', $path) as $segment) { if ($segment === '..') { \array_pop($segments); } elseif ($segment !== '.' && $segment !== '') { $segments[] = $segment; } } return '/' . \implode('/', $segments) . ($path !== '/' && \substr($path, -1) === '/' ? '/' : ''); } } 'text/html' * ), * "Hello world!\n" * ); * ``` * * This class implements the * [PSR-7 `ResponseInterface`](https://www.php-fig.org/psr/psr-7/#33-psrhttpmessageresponseinterface) * which in turn extends the * [PSR-7 `MessageInterface`](https://www.php-fig.org/psr/psr-7/#31-psrhttpmessagemessageinterface). * * On top of this, this class implements the * [PSR-7 Message Util `StatusCodeInterface`](https://github.com/php-fig/http-message-util/blob/master/src/StatusCodeInterface.php) * which means that most common HTTP status codes are available as class * constants with the `STATUS_*` prefix. For instance, the `200 OK` and * `404 Not Found` status codes can used as `Response::STATUS_OK` and * `Response::STATUS_NOT_FOUND` respectively. * * > Internally, this implementation builds on top a base class which is * considered an implementation detail that may change in the future. * * @see \Psr\Http\Message\ResponseInterface */ final class Response extends AbstractMessage implements ResponseInterface, StatusCodeInterface { /** * Create an HTML response * * ```php * $html = << * * Hello wörld! * * * HTML; * * $response = React\Http\Message\Response::html($html); * ``` * * This is a convenient shortcut method that returns the equivalent of this: * * ``` * $response = new React\Http\Message\Response( * React\Http\Message\Response::STATUS_OK, * [ * 'Content-Type' => 'text/html; charset=utf-8' * ], * $html * ); * ``` * * This method always returns a response with a `200 OK` status code and * the appropriate `Content-Type` response header for the given HTTP source * string encoded in UTF-8 (Unicode). It's generally recommended to end the * given plaintext string with a trailing newline. * * If you want to use a different status code or custom HTTP response * headers, you can manipulate the returned response object using the * provided PSR-7 methods or directly instantiate a custom HTTP response * object using the `Response` constructor: * * ```php * $response = React\Http\Message\Response::html( * "

Error

\n

Invalid user name given.

\n" * )->withStatus(React\Http\Message\Response::STATUS_BAD_REQUEST); * ``` * * @param string $html * @return self */ public static function html($html) { return new self(self::STATUS_OK, array('Content-Type' => 'text/html; charset=utf-8'), $html); } /** * Create a JSON response * * ```php * $response = React\Http\Message\Response::json(['name' => 'Alice']); * ``` * * This is a convenient shortcut method that returns the equivalent of this: * * ``` * $response = new React\Http\Message\Response( * React\Http\Message\Response::STATUS_OK, * [ * 'Content-Type' => 'application/json' * ], * json_encode( * ['name' => 'Alice'], * JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRESERVE_ZERO_FRACTION * ) . "\n" * ); * ``` * * This method always returns a response with a `200 OK` status code and * the appropriate `Content-Type` response header for the given structured * data encoded as a JSON text. * * The given structured data will be encoded as a JSON text. Any `string` * values in the data must be encoded in UTF-8 (Unicode). If the encoding * fails, this method will throw an `InvalidArgumentException`. * * By default, the given structured data will be encoded with the flags as * shown above. This includes pretty printing (PHP 5.4+) and preserving * zero fractions for `float` values (PHP 5.6.6+) to ease debugging. It is * assumed any additional data overhead is usually compensated by using HTTP * response compression. * * If you want to use a different status code or custom HTTP response * headers, you can manipulate the returned response object using the * provided PSR-7 methods or directly instantiate a custom HTTP response * object using the `Response` constructor: * * ```php * $response = React\Http\Message\Response::json( * ['error' => 'Invalid user name given'] * )->withStatus(React\Http\Message\Response::STATUS_BAD_REQUEST); * ``` * * @param mixed $data * @return self * @throws \InvalidArgumentException when encoding fails */ public static function json($data) { $json = @\json_encode($data, (\defined('JSON_PRETTY_PRINT') ? \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE : 0) | (\defined('JSON_PRESERVE_ZERO_FRACTION') ? \JSON_PRESERVE_ZERO_FRACTION : 0)); // throw on error, now `false` but used to be `(string) "null"` before PHP 5.5 if ($json === \false || \PHP_VERSION_ID < 50500 && \json_last_error() !== \JSON_ERROR_NONE) { throw new \InvalidArgumentException('Unable to encode given data as JSON' . (\function_exists('json_last_error_msg') ? ': ' . \json_last_error_msg() : ''), \json_last_error()); } return new self(self::STATUS_OK, array('Content-Type' => 'application/json'), $json . "\n"); } /** * Create a plaintext response * * ```php * $response = React\Http\Message\Response::plaintext("Hello wörld!\n"); * ``` * * This is a convenient shortcut method that returns the equivalent of this: * * ``` * $response = new React\Http\Message\Response( * React\Http\Message\Response::STATUS_OK, * [ * 'Content-Type' => 'text/plain; charset=utf-8' * ], * "Hello wörld!\n" * ); * ``` * * This method always returns a response with a `200 OK` status code and * the appropriate `Content-Type` response header for the given plaintext * string encoded in UTF-8 (Unicode). It's generally recommended to end the * given plaintext string with a trailing newline. * * If you want to use a different status code or custom HTTP response * headers, you can manipulate the returned response object using the * provided PSR-7 methods or directly instantiate a custom HTTP response * object using the `Response` constructor: * * ```php * $response = React\Http\Message\Response::plaintext( * "Error: Invalid user name given.\n" * )->withStatus(React\Http\Message\Response::STATUS_BAD_REQUEST); * ``` * * @param string $text * @return self */ public static function plaintext($text) { return new self(self::STATUS_OK, array('Content-Type' => 'text/plain; charset=utf-8'), $text); } /** * Create an XML response * * ```php * $xml = << * * Hello wörld! * * * XML; * * $response = React\Http\Message\Response::xml($xml); * ``` * * This is a convenient shortcut method that returns the equivalent of this: * * ``` * $response = new React\Http\Message\Response( * React\Http\Message\Response::STATUS_OK, * [ * 'Content-Type' => 'application/xml' * ], * $xml * ); * ``` * * This method always returns a response with a `200 OK` status code and * the appropriate `Content-Type` response header for the given XML source * string. It's generally recommended to use UTF-8 (Unicode) and specify * this as part of the leading XML declaration and to end the given XML * source string with a trailing newline. * * If you want to use a different status code or custom HTTP response * headers, you can manipulate the returned response object using the * provided PSR-7 methods or directly instantiate a custom HTTP response * object using the `Response` constructor: * * ```php * $response = React\Http\Message\Response::xml( * "Invalid user name given.\n" * )->withStatus(React\Http\Message\Response::STATUS_BAD_REQUEST); * ``` * * @param string $xml * @return self */ public static function xml($xml) { return new self(self::STATUS_OK, array('Content-Type' => 'application/xml'), $xml); } /** * @var bool * @see self::$phrasesMap */ private static $phrasesInitialized = \false; /** * Map of standard HTTP status codes to standard reason phrases. * * This map will be fully populated with all standard reason phrases on * first access. By default, it only contains a subset of HTTP status codes * that have a custom mapping to reason phrases (such as those with dashes * and all caps words). See `self::STATUS_*` for all possible status code * constants. * * @var array * @see self::STATUS_* * @see self::getReasonPhraseForStatusCode() */ private static $phrasesMap = array(200 => 'OK', 203 => 'Non-Authoritative Information', 207 => 'Multi-Status', 226 => 'IM Used', 414 => 'URI Too Large', 418 => 'I\'m a teapot', 505 => 'HTTP Version Not Supported'); /** @var int */ private $statusCode; /** @var string */ private $reasonPhrase; /** * @param int $status HTTP status code (e.g. 200/404), see `self::STATUS_*` constants * @param array $headers additional response headers * @param string|ReadableStreamInterface|StreamInterface $body response body * @param string $version HTTP protocol version (e.g. 1.1/1.0) * @param ?string $reason custom HTTP response phrase * @throws \InvalidArgumentException for an invalid body */ public function __construct($status = self::STATUS_OK, array $headers = array(), $body = '', $version = '1.1', $reason = null) { if (\is_string($body)) { $body = new BufferedBody($body); } elseif ($body instanceof ReadableStreamInterface && !$body instanceof StreamInterface) { $body = new HttpBodyStream($body, null); } elseif (!$body instanceof StreamInterface) { throw new \InvalidArgumentException('Invalid response body given'); } parent::__construct($version, $headers, $body); $this->statusCode = (int) $status; $this->reasonPhrase = $reason !== '' && $reason !== null ? (string) $reason : self::getReasonPhraseForStatusCode($status); } public function getStatusCode() { return $this->statusCode; } public function withStatus($code, $reasonPhrase = '') { if ((string) $reasonPhrase === '') { $reasonPhrase = self::getReasonPhraseForStatusCode($code); } if ($this->statusCode === (int) $code && $this->reasonPhrase === (string) $reasonPhrase) { return $this; } $response = clone $this; $response->statusCode = (int) $code; $response->reasonPhrase = (string) $reasonPhrase; return $response; } public function getReasonPhrase() { return $this->reasonPhrase; } /** * @param int $code * @return string default reason phrase for given status code or empty string if unknown */ private static function getReasonPhraseForStatusCode($code) { if (!self::$phrasesInitialized) { self::$phrasesInitialized = \true; // map all `self::STATUS_` constants from status code to reason phrase // e.g. `self::STATUS_NOT_FOUND = 404` will be mapped to `404 Not Found` $ref = new \ReflectionClass(__CLASS__); foreach ($ref->getConstants() as $name => $value) { if (!isset(self::$phrasesMap[$value]) && \strpos($name, 'STATUS_') === 0) { self::$phrasesMap[$value] = \ucwords(\strtolower(\str_replace('_', ' ', \substr($name, 7)))); } } } return isset(self::$phrasesMap[$code]) ? self::$phrasesMap[$code] : ''; } /** * [Internal] Parse incoming HTTP protocol message * * @internal * @param string $message * @return self * @throws \InvalidArgumentException if given $message is not a valid HTTP response message */ public static function parseMessage($message) { $start = array(); if (!\preg_match('#^HTTP/(?\\d\\.\\d) (?\\d{3})(?: (?[^\\r\\n]*+))?[\\r]?+\\n#m', $message, $start)) { throw new \InvalidArgumentException('Unable to parse invalid status-line'); } // only support HTTP/1.1 and HTTP/1.0 requests if ($start['version'] !== '1.1' && $start['version'] !== '1.0') { throw new \InvalidArgumentException('Received response with invalid protocol version'); } // check number of valid header fields matches number of lines + status line $matches = array(); $n = \preg_match_all(self::REGEX_HEADERS, $message, $matches, \PREG_SET_ORDER); if (\substr_count($message, "\n") !== $n + 1) { throw new \InvalidArgumentException('Unable to parse invalid response header fields'); } // format all header fields into associative array $headers = array(); foreach ($matches as $match) { $headers[$match[1]][] = $match[2]; } return new self((int) $start['status'], $headers, '', $start['version'], isset($start['reason']) ? $start['reason'] : ''); } } connectionManager = $connectionManager; } /** @return ClientRequestStream */ public function request(RequestInterface $request) { return new ClientRequestStream($this->connectionManager, $request); } } $headers * @param StreamInterface $body * @param string unknown $protocolVersion */ protected function __construct($method, $uri, array $headers, StreamInterface $body, $protocolVersion) { if (\is_string($uri)) { $uri = new Uri($uri); } elseif (!$uri instanceof UriInterface) { throw new \InvalidArgumentException('_PHPStan_b22655c3f\\Argument #2 ($uri) expected string|Psr\\Http\\Message\\UriInterface'); } // assign default `Host` request header from URI unless already given explicitly $host = $uri->getHost(); if ($host !== '') { foreach ($headers as $name => $value) { if (\strtolower($name) === 'host' && $value !== array()) { $host = ''; break; } } if ($host !== '') { $port = $uri->getPort(); if ($port !== null && (!($port === 80 && $uri->getScheme() === 'http') || !($port === 443 && $uri->getScheme() === 'https'))) { $host .= ':' . $port; } $headers = array('Host' => $host) + $headers; } } parent::__construct($protocolVersion, $headers, $body); $this->method = $method; $this->uri = $uri; } public function getRequestTarget() { if ($this->requestTarget !== null) { return $this->requestTarget; } $target = $this->uri->getPath(); if ($target === '') { $target = '/'; } if (($query = $this->uri->getQuery()) !== '') { $target .= '?' . $query; } return $target; } public function withRequestTarget($requestTarget) { if ((string) $requestTarget === $this->requestTarget) { return $this; } $request = clone $this; $request->requestTarget = (string) $requestTarget; return $request; } public function getMethod() { return $this->method; } public function withMethod($method) { if ((string) $method === $this->method) { return $this; } $request = clone $this; $request->method = (string) $method; return $request; } public function getUri() { return $this->uri; } public function withUri(UriInterface $uri, $preserveHost = \false) { if ($uri === $this->uri) { return $this; } $request = clone $this; $request->uri = $uri; $host = $uri->getHost(); $port = $uri->getPort(); if ($port !== null && $host !== '' && (!($port === 80 && $uri->getScheme() === 'http') || !($port === 443 && $uri->getScheme() === 'https'))) { $host .= ':' . $port; } // update `Host` request header if URI contains a new host and `$preserveHost` is false if ($host !== '' && (!$preserveHost || $request->getHeaderLine('Host') === '')) { // first remove all headers before assigning `Host` header to ensure it always comes first foreach (\array_keys($request->getHeaders()) as $name) { $request = $request->withoutHeader($name); } // add `Host` header first, then all other original headers $request = $request->withHeader('Host', $host); foreach ($this->withoutHeader('Host')->getHeaders() as $name => $value) { $request = $request->withHeader($name, $value); } } return $request; } } sender = $sender; $this->loop = $loop; } /** * @param array $options * @return self returns new instance, without modifying existing instance */ public function withOptions(array $options) { $transaction = clone $this; foreach ($options as $name => $value) { if (\property_exists($transaction, $name)) { // restore default value if null is given if ($value === null) { $default = new self($this->sender, $this->loop); $value = $default->{$name}; } $transaction->{$name} = $value; } } return $transaction; } public function send(RequestInterface $request) { $state = new ClientRequestState(); $deferred = new Deferred(function () use($state) { if ($state->pending !== null) { $state->pending->cancel(); $state->pending = null; } }); // use timeout from options or default to PHP's default_socket_timeout (60) $timeout = (float) ($this->timeout !== null ? $this->timeout : \ini_get("default_socket_timeout")); $loop = $this->loop; $this->next($request, $deferred, $state)->then(function (ResponseInterface $response) use($state, $deferred, $loop, &$timeout) { if ($state->timeout !== null) { $loop->cancelTimer($state->timeout); $state->timeout = null; } $timeout = -1; $deferred->resolve($response); }, function ($e) use($state, $deferred, $loop, &$timeout) { if ($state->timeout !== null) { $loop->cancelTimer($state->timeout); $state->timeout = null; } $timeout = -1; $deferred->reject($e); }); if ($timeout < 0) { return $deferred->promise(); } $body = $request->getBody(); if ($body instanceof ReadableStreamInterface && $body->isReadable()) { $that = $this; $body->on('close', function () use($that, $deferred, $state, &$timeout) { if ($timeout >= 0) { $that->applyTimeout($deferred, $state, $timeout); } }); } else { $this->applyTimeout($deferred, $state, $timeout); } return $deferred->promise(); } /** * @internal * @param number $timeout * @return void */ public function applyTimeout(Deferred $deferred, ClientRequestState $state, $timeout) { $state->timeout = $this->loop->addTimer($timeout, function () use($timeout, $deferred, $state) { $deferred->reject(new \RuntimeException('Request timed out after ' . $timeout . ' seconds')); if ($state->pending !== null) { $state->pending->cancel(); $state->pending = null; } }); } private function next(RequestInterface $request, Deferred $deferred, ClientRequestState $state) { $this->progress('request', array($request)); $that = $this; ++$state->numRequests; $promise = $this->sender->send($request); if (!$this->streaming) { $promise = $promise->then(function ($response) use($deferred, $state, $that) { return $that->bufferResponse($response, $deferred, $state); }); } $state->pending = $promise; return $promise->then(function (ResponseInterface $response) use($request, $that, $deferred, $state) { return $that->onResponse($response, $request, $deferred, $state); }); } /** * @internal * @return PromiseInterface Promise */ public function bufferResponse(ResponseInterface $response, Deferred $deferred, ClientRequestState $state) { $body = $response->getBody(); $size = $body->getSize(); if ($size !== null && $size > $this->maximumSize) { $body->close(); return \_PHPStan_b22655c3f\React\Promise\reject(new \OverflowException('Response body size of ' . $size . ' bytes exceeds maximum of ' . $this->maximumSize . ' bytes', \defined('SOCKET_EMSGSIZE') ? \SOCKET_EMSGSIZE : 90)); } // body is not streaming => already buffered if (!$body instanceof ReadableStreamInterface) { return \_PHPStan_b22655c3f\React\Promise\resolve($response); } /** @var ?\Closure $closer */ $closer = null; $maximumSize = $this->maximumSize; return $state->pending = new Promise(function ($resolve, $reject) use($body, $maximumSize, $response, &$closer) { // resolve with current buffer when stream closes successfully $buffer = ''; $body->on('close', $closer = function () use(&$buffer, $response, $maximumSize, $resolve, $reject) { $resolve($response->withBody(new BufferedBody($buffer))); }); // buffer response body data in memory $body->on('data', function ($data) use(&$buffer, $maximumSize, $body, $closer, $reject) { $buffer .= $data; // close stream and reject promise if limit is exceeded if (isset($buffer[$maximumSize])) { $buffer = ''; \assert($closer instanceof \Closure); $body->removeListener('close', $closer); $body->close(); $reject(new \OverflowException('Response body size exceeds maximum of ' . $maximumSize . ' bytes', \defined('SOCKET_EMSGSIZE') ? \SOCKET_EMSGSIZE : 90)); } }); // reject buffering if body emits error $body->on('error', function (\Exception $e) use($reject) { $reject(new \RuntimeException('Error while buffering response body: ' . $e->getMessage(), $e->getCode(), $e)); }); }, function () use($body, &$closer) { // cancelled buffering: remove close handler to avoid resolving, then close and reject \assert($closer instanceof \Closure); $body->removeListener('close', $closer); $body->close(); throw new \RuntimeException('Cancelled buffering response body'); }); } /** * @internal * @throws ResponseException * @return ResponseInterface|PromiseInterface */ public function onResponse(ResponseInterface $response, RequestInterface $request, Deferred $deferred, ClientRequestState $state) { $this->progress('response', array($response, $request)); // follow 3xx (Redirection) response status codes if Location header is present and not explicitly disabled // @link https://tools.ietf.org/html/rfc7231#section-6.4 if ($this->followRedirects && ($response->getStatusCode() >= 300 && $response->getStatusCode() < 400) && $response->hasHeader('Location')) { return $this->onResponseRedirect($response, $request, $deferred, $state); } // only status codes 200-399 are considered to be valid, reject otherwise if ($this->obeySuccessCode && ($response->getStatusCode() < 200 || $response->getStatusCode() >= 400)) { throw new ResponseException($response); } // resolve our initial promise return $response; } /** * @param ResponseInterface $response * @param RequestInterface $request * @param Deferred $deferred * @param ClientRequestState $state * @return PromiseInterface * @throws \RuntimeException */ private function onResponseRedirect(ResponseInterface $response, RequestInterface $request, Deferred $deferred, ClientRequestState $state) { // resolve location relative to last request URI $location = Uri::resolve($request->getUri(), new Uri($response->getHeaderLine('Location'))); $request = $this->makeRedirectRequest($request, $location, $response->getStatusCode()); $this->progress('redirect', array($request)); if ($state->numRequests >= $this->maxRedirects) { throw new \RuntimeException('Maximum number of redirects (' . $this->maxRedirects . ') exceeded'); } return $this->next($request, $deferred, $state); } /** * @param RequestInterface $request * @param UriInterface $location * @param int $statusCode * @return RequestInterface * @throws \RuntimeException */ private function makeRedirectRequest(RequestInterface $request, UriInterface $location, $statusCode) { // Remove authorization if changing hostnames (but not if just changing ports or protocols). $originalHost = $request->getUri()->getHost(); if ($location->getHost() !== $originalHost) { $request = $request->withoutHeader('Authorization'); } $request = $request->withoutHeader('Host')->withUri($location); if ($statusCode === Response::STATUS_TEMPORARY_REDIRECT || $statusCode === Response::STATUS_PERMANENT_REDIRECT) { if ($request->getBody() instanceof ReadableStreamInterface) { throw new \RuntimeException('Unable to redirect request with streaming body'); } } else { $request = $request->withMethod($request->getMethod() === 'HEAD' ? 'HEAD' : 'GET')->withoutHeader('Content-Type')->withoutHeader('Content-Length')->withBody(new BufferedBody('')); } return $request; } private function progress($name, array $args = array()) { return; echo $name; foreach ($args as $arg) { echo ' '; if ($arg instanceof ResponseInterface) { echo 'HTTP/' . $arg->getProtocolVersion() . ' ' . $arg->getStatusCode() . ' ' . $arg->getReasonPhrase(); } elseif ($arg instanceof RequestInterface) { echo $arg->getMethod() . ' ' . $arg->getRequestTarget() . ' HTTP/' . $arg->getProtocolVersion(); } else { echo $arg; } } echo \PHP_EOL; } } input = $input; $this->size = $size; $this->input->on('data', array($this, 'handleData')); $this->input->on('end', array($this, 'handleEnd')); $this->input->on('error', array($this, 'handleError')); $this->input->on('close', array($this, 'close')); } public function isReadable() { return !$this->closed && $this->input->isReadable(); } public function pause() { $this->input->pause(); } public function resume() { $this->input->resume(); } public function pipe(WritableStreamInterface $dest, array $options = array()) { Util::pipe($this, $dest, $options); return $dest; } public function close() { if ($this->closed) { return; } $this->closed = \true; $this->input->close(); $this->emit('close'); $this->removeAllListeners(); } public function getSize() { return $this->size; } /** @ignore */ public function __toString() { return ''; } /** @ignore */ public function detach() { return null; } /** @ignore */ public function tell() { throw new \BadMethodCallException(); } /** @ignore */ public function eof() { throw new \BadMethodCallException(); } /** @ignore */ public function isSeekable() { return \false; } /** @ignore */ public function seek($offset, $whence = \SEEK_SET) { throw new \BadMethodCallException(); } /** @ignore */ public function rewind() { throw new \BadMethodCallException(); } /** @ignore */ public function isWritable() { return \false; } /** @ignore */ public function write($string) { throw new \BadMethodCallException(); } /** @ignore */ public function read($length) { throw new \BadMethodCallException(); } /** @ignore */ public function getContents() { return ''; } /** @ignore */ public function getMetadata($key = null) { return null; } /** @internal */ public function handleData($data) { $this->emit('data', array($data)); } /** @internal */ public function handleError(\Exception $e) { $this->emit('error', array($e)); $this->close(); } /** @internal */ public function handleEnd() { if (!$this->closed) { $this->emit('end'); $this->close(); } } } middleware = \array_values($middleware); } /** * @param ServerRequestInterface $request * @return ResponseInterface|PromiseInterface * @throws \Exception */ public function __invoke(ServerRequestInterface $request) { if (empty($this->middleware)) { throw new \RuntimeException('No middleware to run'); } return $this->call($request, 0); } /** @internal */ public function call(ServerRequestInterface $request, $position) { // final request handler will be invoked without a next handler if (!isset($this->middleware[$position + 1])) { $handler = $this->middleware[$position]; return $handler($request); } $that = $this; $next = function (ServerRequestInterface $request) use($that, $position) { return $that->call($request, $position + 1); }; // invoke middleware request handler with next handler $handler = $this->middleware[$position]; return $handler($request, $next); } } connector = $connector; $this->loop = $loop; } /** * @return PromiseInterface */ public function connect(UriInterface $uri) { $scheme = $uri->getScheme(); if ($scheme !== 'https' && $scheme !== 'http') { return \_PHPStan_b22655c3f\React\Promise\reject(new \InvalidArgumentException('Invalid request URL given')); } $port = $uri->getPort(); if ($port === null) { $port = $scheme === 'https' ? 443 : 80; } $uri = ($scheme === 'https' ? 'tls://' : '') . $uri->getHost() . ':' . $port; // Reuse idle connection for same URI if available foreach ($this->idleConnections as $id => $connection) { if ($this->idleUris[$id] === $uri) { \assert($this->idleStreamHandlers[$id] instanceof \Closure); $connection->removeListener('close', $this->idleStreamHandlers[$id]); $connection->removeListener('data', $this->idleStreamHandlers[$id]); $connection->removeListener('error', $this->idleStreamHandlers[$id]); \assert($this->idleTimers[$id] instanceof TimerInterface); $this->loop->cancelTimer($this->idleTimers[$id]); unset($this->idleUris[$id], $this->idleConnections[$id], $this->idleTimers[$id], $this->idleStreamHandlers[$id]); return \_PHPStan_b22655c3f\React\Promise\resolve($connection); } } // Create new connection if no idle connection to same URI is available return $this->connector->connect($uri); } /** * Hands back an idle connection to the connection manager for possible future reuse. * * @return void */ public function keepAlive(UriInterface $uri, ConnectionInterface $connection) { $scheme = $uri->getScheme(); \assert($scheme === 'https' || $scheme === 'http'); $port = $uri->getPort(); if ($port === null) { $port = $scheme === 'https' ? 443 : 80; } $this->idleUris[] = ($scheme === 'https' ? 'tls://' : '') . $uri->getHost() . ':' . $port; $this->idleConnections[] = $connection; $that = $this; $cleanUp = function () use($connection, $that) { // call public method to support legacy PHP 5.3 $that->cleanUpConnection($connection); }; // clean up and close connection when maximum time to keep-alive idle connection has passed $this->idleTimers[] = $this->loop->addTimer($this->maximumTimeToKeepAliveIdleConnection, $cleanUp); // clean up and close connection when unexpected close/data/error event happens during idle time $this->idleStreamHandlers[] = $cleanUp; $connection->on('close', $cleanUp); $connection->on('data', $cleanUp); $connection->on('error', $cleanUp); } /** * @internal * @return void */ public function cleanUpConnection(ConnectionInterface $connection) { $id = \array_search($connection, $this->idleConnections, \true); if ($id === \false) { return; } \assert(\is_int($id)); \assert($this->idleTimers[$id] instanceof TimerInterface); $this->loop->cancelTimer($this->idleTimers[$id]); unset($this->idleUris[$id], $this->idleConnections[$id], $this->idleTimers[$id], $this->idleStreamHandlers[$id]); $connection->close(); } } loop = $loop; } /** @return float */ public function now() { if ($this->now === null) { $this->now = \microtime(\true); // remember clock for current loop tick only and update on next tick $now =& $this->now; $this->loop->futureTick(function () use(&$now) { \assert($now !== null); $now = null; }); } return $this->now; } } connectionManager = $connectionManager; $this->request = $request; } public function isWritable() { return self::STATE_END > $this->state && !$this->ended; } private function writeHead() { $this->state = self::STATE_WRITING_HEAD; $expected = 0; $headers = "{$this->request->getMethod()} {$this->request->getRequestTarget()} HTTP/{$this->request->getProtocolVersion()}\r\n"; foreach ($this->request->getHeaders() as $name => $values) { if (\strpos($name, ':') !== \false) { $expected = -1; break; } foreach ($values as $value) { $headers .= "{$name}: {$value}\r\n"; ++$expected; } } /** @var array $m legacy PHP 5.3 only */ if (!\preg_match('#^\\S+ \\S+ HTTP/1\\.[01]\\r\\n#m', $headers) || \substr_count($headers, "\n") !== $expected + 1 || (\PHP_VERSION_ID >= 50400 ? \preg_match_all(AbstractMessage::REGEX_HEADERS, $headers) : \preg_match_all(AbstractMessage::REGEX_HEADERS, $headers, $m)) !== $expected) { $this->closeError(new \InvalidArgumentException('Unable to send request with invalid request headers')); return; } $connectionRef =& $this->connection; $stateRef =& $this->state; $pendingWrites =& $this->pendingWrites; $that = $this; $promise = $this->connectionManager->connect($this->request->getUri()); $promise->then(function (ConnectionInterface $connection) use($headers, &$connectionRef, &$stateRef, &$pendingWrites, $that) { $connectionRef = $connection; \assert($connectionRef instanceof ConnectionInterface); $connection->on('drain', array($that, 'handleDrain')); $connection->on('data', array($that, 'handleData')); $connection->on('end', array($that, 'handleEnd')); $connection->on('error', array($that, 'handleError')); $connection->on('close', array($that, 'close')); $more = $connection->write($headers . "\r\n" . $pendingWrites); \assert($stateRef === ClientRequestStream::STATE_WRITING_HEAD); $stateRef = ClientRequestStream::STATE_HEAD_WRITTEN; // clear pending writes if non-empty if ($pendingWrites !== '') { $pendingWrites = ''; if ($more) { $that->emit('drain'); } } }, array($this, 'closeError')); $this->on('close', function () use($promise) { $promise->cancel(); }); } public function write($data) { if (!$this->isWritable()) { return \false; } // write directly to connection stream if already available if (self::STATE_HEAD_WRITTEN <= $this->state) { return $this->connection->write($data); } // otherwise buffer and try to establish connection $this->pendingWrites .= $data; if (self::STATE_WRITING_HEAD > $this->state) { $this->writeHead(); } return \false; } public function end($data = null) { if (!$this->isWritable()) { return; } if (null !== $data) { $this->write($data); } else { if (self::STATE_WRITING_HEAD > $this->state) { $this->writeHead(); } } $this->ended = \true; } /** @internal */ public function handleDrain() { $this->emit('drain'); } /** @internal */ public function handleData($data) { $this->buffer .= $data; // buffer until double CRLF (or double LF for compatibility with legacy servers) $eom = \strpos($this->buffer, "\r\n\r\n"); $eomLegacy = \strpos($this->buffer, "\n\n"); if ($eom !== \false || $eomLegacy !== \false) { try { if ($eom !== \false && ($eomLegacy === \false || $eom < $eomLegacy)) { $response = Response::parseMessage(\substr($this->buffer, 0, $eom + 2)); $bodyChunk = (string) \substr($this->buffer, $eom + 4); } else { $response = Response::parseMessage(\substr($this->buffer, 0, $eomLegacy + 1)); $bodyChunk = (string) \substr($this->buffer, $eomLegacy + 2); } } catch (\InvalidArgumentException $exception) { $this->closeError($exception); return; } // response headers successfully received => remove listeners for connection events $connection = $this->connection; \assert($connection instanceof ConnectionInterface); $connection->removeListener('drain', array($this, 'handleDrain')); $connection->removeListener('data', array($this, 'handleData')); $connection->removeListener('end', array($this, 'handleEnd')); $connection->removeListener('error', array($this, 'handleError')); $connection->removeListener('close', array($this, 'close')); $this->connection = null; $this->buffer = ''; // take control over connection handling and check if we can reuse the connection once response body closes $that = $this; $request = $this->request; $connectionManager = $this->connectionManager; $successfulEndReceived = \false; $input = $body = new CloseProtectionStream($connection); $input->on('close', function () use($connection, $that, $connectionManager, $request, $response, &$successfulEndReceived) { // only reuse connection after successful response and both request and response allow keep alive if ($successfulEndReceived && $connection->isReadable() && $that->hasMessageKeepAliveEnabled($response) && $that->hasMessageKeepAliveEnabled($request)) { $connectionManager->keepAlive($request->getUri(), $connection); } else { $connection->close(); } $that->close(); }); // determine length of response body $length = null; $code = $response->getStatusCode(); if ($this->request->getMethod() === 'HEAD' || $code >= 100 && $code < 200 || $code == Response::STATUS_NO_CONTENT || $code == Response::STATUS_NOT_MODIFIED) { $length = 0; } elseif (\strtolower($response->getHeaderLine('Transfer-Encoding')) === 'chunked') { $body = new ChunkedDecoder($body); } elseif ($response->hasHeader('Content-Length')) { $length = (int) $response->getHeaderLine('Content-Length'); } $response = $response->withBody($body = new ReadableBodyStream($body, $length)); $body->on('end', function () use(&$successfulEndReceived) { $successfulEndReceived = \true; }); // emit response with streaming response body (see `Sender`) $this->emit('response', array($response, $body)); // re-emit HTTP response body to trigger body parsing if parts of it are buffered if ($bodyChunk !== '') { $input->handleData($bodyChunk); } elseif ($length === 0) { $input->handleEnd(); } } } /** @internal */ public function handleEnd() { $this->closeError(new \RuntimeException("Connection ended before receiving response")); } /** @internal */ public function handleError(\Exception $error) { $this->closeError(new \RuntimeException("An error occurred in the underlying stream", 0, $error)); } /** @internal */ public function closeError(\Exception $error) { if (self::STATE_END <= $this->state) { return; } $this->emit('error', array($error)); $this->close(); } public function close() { if (self::STATE_END <= $this->state) { return; } $this->state = self::STATE_END; $this->pendingWrites = ''; $this->buffer = ''; if ($this->connection instanceof ConnectionInterface) { $this->connection->close(); $this->connection = null; } $this->emit('close'); $this->removeAllListeners(); } /** * @internal * @return bool * @link https://www.rfc-editor.org/rfc/rfc9112#section-9.3 * @link https://www.rfc-editor.org/rfc/rfc7230#section-6.1 */ public function hasMessageKeepAliveEnabled(MessageInterface $message) { // @link https://www.rfc-editor.org/rfc/rfc9110#section-7.6.1 $connectionOptions = \array_map('trim', \explode(',', \strtolower($message->getHeaderLine('Connection')))); if (\in_array('close', $connectionOptions, \true)) { return \false; } if ($message->getProtocolVersion() === '1.1') { return \true; } if (\in_array('keep-alive', $connectionOptions, \true)) { return \true; } return \false; } } input = $input; $this->size = $size; $that = $this; $pos =& $this->position; $input->on('data', function ($data) use($that, &$pos, $size) { $that->emit('data', array($data)); $pos += \strlen($data); if ($size !== null && $pos >= $size) { $that->handleEnd(); } }); $input->on('error', function ($error) use($that) { $that->emit('error', array($error)); $that->close(); }); $input->on('end', array($that, 'handleEnd')); $input->on('close', array($that, 'close')); } public function close() { if (!$this->closed) { $this->closed = \true; $this->input->close(); $this->emit('close'); $this->removeAllListeners(); } } public function isReadable() { return $this->input->isReadable(); } public function pause() { $this->input->pause(); } public function resume() { $this->input->resume(); } public function pipe(WritableStreamInterface $dest, array $options = array()) { Util::pipe($this, $dest, $options); return $dest; } public function eof() { return !$this->isReadable(); } public function __toString() { return ''; } public function detach() { throw new \BadMethodCallException(); } public function getSize() { return $this->size; } public function tell() { throw new \BadMethodCallException(); } public function isSeekable() { return \false; } public function seek($offset, $whence = \SEEK_SET) { throw new \BadMethodCallException(); } public function rewind() { throw new \BadMethodCallException(); } public function isWritable() { return \false; } public function write($string) { throw new \BadMethodCallException(); } public function read($length) { throw new \BadMethodCallException(); } public function getContents() { throw new \BadMethodCallException(); } public function getMetadata($key = null) { return $key === null ? array() : null; } /** @internal */ public function handleEnd() { if ($this->position !== $this->size && $this->size !== null) { $this->emit('error', array(new \UnderflowException('Unexpected end of response body after ' . $this->position . '/' . $this->size . ' bytes'))); } else { $this->emit('end'); } $this->close(); } } input = $input; $this->input->on('data', array($this, 'handleData')); $this->input->on('end', array($this, 'handleEnd')); $this->input->on('error', array($this, 'handleError')); $this->input->on('close', array($this, 'close')); } public function isReadable() { return !$this->closed && $this->input->isReadable(); } public function pause() { $this->input->pause(); } public function resume() { $this->input->resume(); } public function pipe(WritableStreamInterface $dest, array $options = array()) { return Util::pipe($this, $dest, $options); } public function close() { if ($this->closed) { return; } $this->closed = \true; $this->input->close(); $this->emit('close'); $this->removeAllListeners(); } /** @internal */ public function handleData($data) { if ($data !== '') { $this->emit('data', array(\dechex(\strlen($data)) . "\r\n" . $data . "\r\n")); } } /** @internal */ public function handleError(\Exception $e) { $this->emit('error', array($e)); $this->close(); } /** @internal */ public function handleEnd() { $this->emit('data', array("0\r\n\r\n")); if (!$this->closed) { $this->emit('end'); $this->close(); } } } > */ private $connectionParams = array(); public function __construct(Clock $clock) { $this->clock = $clock; } public function handle(ConnectionInterface $conn) { $buffer = ''; $maxSize = $this->maxSize; $that = $this; $conn->on('data', $fn = function ($data) use(&$buffer, &$fn, $conn, $maxSize, $that) { // append chunk of data to buffer and look for end of request headers $buffer .= $data; $endOfHeader = \strpos($buffer, "\r\n\r\n"); // reject request if buffer size is exceeded if ($endOfHeader > $maxSize || $endOfHeader === \false && isset($buffer[$maxSize])) { $conn->removeListener('data', $fn); $fn = null; $that->emit('error', array(new \OverflowException("Maximum header size of {$maxSize} exceeded.", Response::STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE), $conn)); return; } // ignore incomplete requests if ($endOfHeader === \false) { return; } // request headers received => try to parse request $conn->removeListener('data', $fn); $fn = null; try { $request = $that->parseRequest((string) \substr($buffer, 0, $endOfHeader + 2), $conn); } catch (Exception $exception) { $buffer = ''; $that->emit('error', array($exception, $conn)); return; } $contentLength = 0; if ($request->hasHeader('Transfer-Encoding')) { $contentLength = null; } elseif ($request->hasHeader('Content-Length')) { $contentLength = (int) $request->getHeaderLine('Content-Length'); } if ($contentLength === 0) { // happy path: request body is known to be empty $stream = new EmptyBodyStream(); $request = $request->withBody($stream); } else { // otherwise body is present => delimit using Content-Length or ChunkedDecoder $stream = new CloseProtectionStream($conn); if ($contentLength !== null) { $stream = new LengthLimitedStream($stream, $contentLength); } else { $stream = new ChunkedDecoder($stream); } $request = $request->withBody(new HttpBodyStream($stream, $contentLength)); } $bodyBuffer = isset($buffer[$endOfHeader + 4]) ? \substr($buffer, $endOfHeader + 4) : ''; $buffer = ''; $that->emit('headers', array($request, $conn)); if ($bodyBuffer !== '') { $conn->emit('data', array($bodyBuffer)); } // happy path: request body is known to be empty => immediately end stream if ($contentLength === 0) { $stream->emit('end'); $stream->close(); } }); } /** * @param string $headers buffer string containing request headers only * @param ConnectionInterface $connection * @return ServerRequestInterface * @throws \InvalidArgumentException * @internal */ public function parseRequest($headers, ConnectionInterface $connection) { // reuse same connection params for all server params for this connection $cid = \PHP_VERSION_ID < 70200 ? \spl_object_hash($connection) : \spl_object_id($connection); if (isset($this->connectionParams[$cid])) { $serverParams = $this->connectionParams[$cid]; } else { // assign new server params for new connection $serverParams = array(); // scheme is `http` unless TLS is used $localSocketUri = $connection->getLocalAddress(); $localParts = $localSocketUri === null ? array() : \parse_url($localSocketUri); if (isset($localParts['scheme']) && $localParts['scheme'] === 'tls') { $serverParams['HTTPS'] = 'on'; } // apply SERVER_ADDR and SERVER_PORT if server address is known // address should always be known, even for Unix domain sockets (UDS) // but skip UDS as it doesn't have a concept of host/port. if ($localSocketUri !== null && isset($localParts['host'], $localParts['port'])) { $serverParams['SERVER_ADDR'] = $localParts['host']; $serverParams['SERVER_PORT'] = $localParts['port']; } // apply REMOTE_ADDR and REMOTE_PORT if source address is known // address should always be known, unless this is over Unix domain sockets (UDS) $remoteSocketUri = $connection->getRemoteAddress(); if ($remoteSocketUri !== null) { $remoteAddress = \parse_url($remoteSocketUri); $serverParams['REMOTE_ADDR'] = $remoteAddress['host']; $serverParams['REMOTE_PORT'] = $remoteAddress['port']; } // remember server params for all requests from this connection, reset on connection close $this->connectionParams[$cid] = $serverParams; $params =& $this->connectionParams; $connection->on('close', function () use(&$params, $cid) { \assert(\is_array($params)); unset($params[$cid]); }); } // create new obj implementing ServerRequestInterface by preserving all // previous properties and restoring original request-target $serverParams['REQUEST_TIME'] = (int) ($now = $this->clock->now()); $serverParams['REQUEST_TIME_FLOAT'] = $now; return ServerRequest::parseMessage($headers, $serverParams); } } input = $input; $this->input->on('data', array($this, 'handleData')); $this->input->on('end', array($this, 'handleEnd')); $this->input->on('error', array($this, 'handleError')); $this->input->on('close', array($this, 'handleClose')); } /** * pause and remember this was not explicitly from user control * * @internal */ public function pauseImplicit() { $this->pause(); $this->implicit = \true; } /** * resume only if this was previously paused implicitly and not explicitly from user control * * @internal */ public function resumeImplicit() { if ($this->implicit) { $this->resume(); } } public function isReadable() { return !$this->closed; } public function pause() { if ($this->closed) { return; } $this->input->pause(); $this->paused = \true; $this->implicit = \false; } public function resume() { if ($this->closed) { return; } $this->paused = \false; $this->implicit = \false; if ($this->dataPaused !== '') { $this->emit('data', array($this->dataPaused)); $this->dataPaused = ''; } if ($this->errorPaused) { $this->emit('error', array($this->errorPaused)); return $this->close(); } if ($this->endPaused) { $this->endPaused = \false; $this->emit('end'); return $this->close(); } if ($this->closePaused) { $this->closePaused = \false; return $this->close(); } $this->input->resume(); } public function pipe(WritableStreamInterface $dest, array $options = array()) { Util::pipe($this, $dest, $options); return $dest; } public function close() { if ($this->closed) { return; } $this->closed = \true; $this->dataPaused = ''; $this->endPaused = $this->closePaused = \false; $this->errorPaused = null; $this->input->close(); $this->emit('close'); $this->removeAllListeners(); } /** @internal */ public function handleData($data) { if ($this->paused) { $this->dataPaused .= $data; return; } $this->emit('data', array($data)); } /** @internal */ public function handleError(\Exception $e) { if ($this->paused) { $this->errorPaused = $e; return; } $this->emit('error', array($e)); $this->close(); } /** @internal */ public function handleEnd() { if ($this->paused) { $this->endPaused = \true; return; } if (!$this->closed) { $this->emit('end'); $this->close(); } } /** @internal */ public function handleClose() { if ($this->paused) { $this->closePaused = \true; return; } $this->close(); } } buffer = $buffer; } public function __toString() { if ($this->closed) { return ''; } $this->seek(0); return $this->getContents(); } public function close() { $this->buffer = ''; $this->position = 0; $this->closed = \true; } public function detach() { $this->close(); return null; } public function getSize() { return $this->closed ? null : \strlen($this->buffer); } public function tell() { if ($this->closed) { throw new \RuntimeException('Unable to tell position of closed stream'); } return $this->position; } public function eof() { return $this->position >= \strlen($this->buffer); } public function isSeekable() { return !$this->closed; } public function seek($offset, $whence = \SEEK_SET) { if ($this->closed) { throw new \RuntimeException('Unable to seek on closed stream'); } $old = $this->position; if ($whence === \SEEK_SET) { $this->position = $offset; } elseif ($whence === \SEEK_CUR) { $this->position += $offset; } elseif ($whence === \SEEK_END) { $this->position = \strlen($this->buffer) + $offset; } else { throw new \InvalidArgumentException('Invalid seek mode given'); } if (!\is_int($this->position) || $this->position < 0) { $this->position = $old; throw new \RuntimeException('Unable to seek to position'); } } public function rewind() { $this->seek(0); } public function isWritable() { return !$this->closed; } public function write($string) { if ($this->closed) { throw new \RuntimeException('Unable to write to closed stream'); } if ($string === '') { return 0; } if ($this->position > 0 && !isset($this->buffer[$this->position - 1])) { $this->buffer = \str_pad($this->buffer, $this->position, "\x00"); } $len = \strlen($string); $this->buffer = \substr($this->buffer, 0, $this->position) . $string . \substr($this->buffer, $this->position + $len); $this->position += $len; return $len; } public function isReadable() { return !$this->closed; } public function read($length) { if ($this->closed) { throw new \RuntimeException('Unable to read from closed stream'); } if ($length < 1) { throw new \InvalidArgumentException('Invalid read length given'); } if ($this->position + $length > \strlen($this->buffer)) { $length = \strlen($this->buffer) - $this->position; } if (!isset($this->buffer[$this->position])) { return ''; } $pos = $this->position; $this->position += $length; return \substr($this->buffer, $pos, $length); } public function getContents() { if ($this->closed) { throw new \RuntimeException('Unable to read from closed stream'); } if (!isset($this->buffer[$this->position])) { return ''; } $pos = $this->position; $this->position = \strlen($this->buffer); return \substr($this->buffer, $pos); } public function getMetadata($key = null) { return $key === null ? array() : null; } } input = $input; $this->input->on('data', array($this, 'handleData')); $this->input->on('end', array($this, 'handleEnd')); $this->input->on('error', array($this, 'handleError')); $this->input->on('close', array($this, 'close')); } public function isReadable() { return !$this->closed && $this->input->isReadable(); } public function pause() { if ($this->closed) { return; } $this->paused = \true; $this->input->pause(); } public function resume() { if ($this->closed) { return; } $this->paused = \false; $this->input->resume(); } public function pipe(WritableStreamInterface $dest, array $options = array()) { Util::pipe($this, $dest, $options); return $dest; } public function close() { if ($this->closed) { return; } $this->closed = \true; // stop listening for incoming events $this->input->removeListener('data', array($this, 'handleData')); $this->input->removeListener('error', array($this, 'handleError')); $this->input->removeListener('end', array($this, 'handleEnd')); $this->input->removeListener('close', array($this, 'close')); // resume the stream to ensure we discard everything from incoming connection if ($this->paused) { $this->paused = \false; $this->input->resume(); } $this->emit('close'); $this->removeAllListeners(); } /** @internal */ public function handleData($data) { $this->emit('data', array($data)); } /** @internal */ public function handleEnd() { $this->emit('end'); $this->close(); } /** @internal */ public function handleError(\Exception $e) { $this->emit('error', array($e)); } } stream = $stream; $this->size = $size; if (!\is_int($error) || !\in_array($error, array(\UPLOAD_ERR_OK, \UPLOAD_ERR_INI_SIZE, \UPLOAD_ERR_FORM_SIZE, \UPLOAD_ERR_PARTIAL, \UPLOAD_ERR_NO_FILE, \UPLOAD_ERR_NO_TMP_DIR, \UPLOAD_ERR_CANT_WRITE, \UPLOAD_ERR_EXTENSION))) { throw new InvalidArgumentException('Invalid error code, must be an UPLOAD_ERR_* constant'); } $this->error = $error; $this->filename = $filename; $this->mediaType = $mediaType; } /** * {@inheritdoc} */ public function getStream() { if ($this->error !== \UPLOAD_ERR_OK) { throw new RuntimeException('Cannot retrieve stream due to upload error'); } return $this->stream; } /** * {@inheritdoc} */ public function moveTo($targetPath) { throw new RuntimeException('Not implemented'); } /** * {@inheritdoc} */ public function getSize() { return $this->size; } /** * {@inheritdoc} */ public function getError() { return $this->error; } /** * {@inheritdoc} */ public function getClientFilename() { return $this->filename; } /** * {@inheritdoc} */ public function getClientMediaType() { return $this->mediaType; } } stream = $stream; $this->maxLength = $maxLength; $this->stream->on('data', array($this, 'handleData')); $this->stream->on('end', array($this, 'handleEnd')); $this->stream->on('error', array($this, 'handleError')); $this->stream->on('close', array($this, 'close')); } public function isReadable() { return !$this->closed && $this->stream->isReadable(); } public function pause() { $this->stream->pause(); } public function resume() { $this->stream->resume(); } public function pipe(WritableStreamInterface $dest, array $options = array()) { Util::pipe($this, $dest, $options); return $dest; } public function close() { if ($this->closed) { return; } $this->closed = \true; $this->stream->close(); $this->emit('close'); $this->removeAllListeners(); } /** @internal */ public function handleData($data) { if ($this->transferredLength + \strlen($data) > $this->maxLength) { // Only emit data until the value of 'Content-Length' is reached, the rest will be ignored $data = (string) \substr($data, 0, $this->maxLength - $this->transferredLength); } if ($data !== '') { $this->transferredLength += \strlen($data); $this->emit('data', array($data)); } if ($this->transferredLength === $this->maxLength) { // 'Content-Length' reached, stream will end $this->emit('end'); $this->close(); $this->stream->removeListener('data', array($this, 'handleData')); } } /** @internal */ public function handleError(\Exception $e) { $this->emit('error', array($e)); $this->close(); } /** @internal */ public function handleEnd() { if (!$this->closed) { $this->handleError(new \Exception('Unexpected end event')); } } } input = $input; $this->input->on('data', array($this, 'handleData')); $this->input->on('end', array($this, 'handleEnd')); $this->input->on('error', array($this, 'handleError')); $this->input->on('close', array($this, 'close')); } public function isReadable() { return !$this->closed && $this->input->isReadable(); } public function pause() { $this->input->pause(); } public function resume() { $this->input->resume(); } public function pipe(WritableStreamInterface $dest, array $options = array()) { Util::pipe($this, $dest, $options); return $dest; } public function close() { if ($this->closed) { return; } $this->buffer = ''; $this->closed = \true; $this->input->close(); $this->emit('close'); $this->removeAllListeners(); } /** @internal */ public function handleEnd() { if (!$this->closed) { $this->handleError(new Exception('Unexpected end event')); } } /** @internal */ public function handleError(Exception $e) { $this->emit('error', array($e)); $this->close(); } /** @internal */ public function handleData($data) { $this->buffer .= $data; while ($this->buffer !== '') { if (!$this->headerCompleted) { $positionCrlf = \strpos($this->buffer, static::CRLF); if ($positionCrlf === \false) { // Header shouldn't be bigger than 1024 bytes if (isset($this->buffer[static::MAX_CHUNK_HEADER_SIZE])) { $this->handleError(new Exception('Chunk header size inclusive extension bigger than' . static::MAX_CHUNK_HEADER_SIZE . ' bytes')); } return; } $header = \strtolower((string) \substr($this->buffer, 0, $positionCrlf)); $hexValue = $header; if (\strpos($header, ';') !== \false) { $array = \explode(';', $header); $hexValue = $array[0]; } if ($hexValue !== '') { $hexValue = \ltrim(\trim($hexValue), "0"); if ($hexValue === '') { $hexValue = "0"; } } $this->chunkSize = @\hexdec($hexValue); if (!\is_int($this->chunkSize) || \dechex($this->chunkSize) !== $hexValue) { $this->handleError(new Exception($hexValue . ' is not a valid hexadecimal number')); return; } $this->buffer = (string) \substr($this->buffer, $positionCrlf + 2); $this->headerCompleted = \true; if ($this->buffer === '') { return; } } $chunk = (string) \substr($this->buffer, 0, $this->chunkSize - $this->transferredSize); if ($chunk !== '') { $this->transferredSize += \strlen($chunk); $this->emit('data', array($chunk)); $this->buffer = (string) \substr($this->buffer, \strlen($chunk)); } $positionCrlf = \strpos($this->buffer, static::CRLF); if ($positionCrlf === 0) { if ($this->chunkSize === 0) { $this->emit('end'); $this->close(); return; } $this->chunkSize = 0; $this->headerCompleted = \false; $this->transferredSize = 0; $this->buffer = (string) \substr($this->buffer, 2); } elseif ($this->chunkSize === 0) { // end chunk received, skip all trailer data $this->buffer = (string) \substr($this->buffer, $positionCrlf); } if ($positionCrlf !== 0 && $this->chunkSize !== 0 && $this->chunkSize === $this->transferredSize && \strlen($this->buffer) > 2) { // the first 2 characters are not CRLF, send error event $this->handleError(new Exception('Chunk does not end with a CRLF')); return; } if ($positionCrlf !== 0 && \strlen($this->buffer) < 2) { // No CRLF found, wait for additional data which could be a CRLF return; } } } } 'text/plain' * ), * "Hello World!\n" * ); * }); * ``` * * Each incoming HTTP request message is always represented by the * [PSR-7 `ServerRequestInterface`](https://www.php-fig.org/psr/psr-7/#321-psrhttpmessageserverrequestinterface), * see also following [request](#request) chapter for more details. * Each outgoing HTTP response message is always represented by the * [PSR-7 `ResponseInterface`](https://www.php-fig.org/psr/psr-7/#33-psrhttpmessageresponseinterface), * see also following [response](#response) chapter for more details. * * In order to process any connections, the server needs to be attached to an * instance of `React\Socket\ServerInterface` through the [`listen()`](#listen) method * as described in the following chapter. In its most simple form, you can attach * this to a [`React\Socket\SocketServer`](https://github.com/reactphp/socket#socketserver) * in order to start a plaintext HTTP server like this: * * ```php * $server = new StreamingServer($loop, $handler); * * $socket = new React\Socket\SocketServer('0.0.0.0:8080', array(), $loop); * $server->listen($socket); * ``` * * See also the [`listen()`](#listen) method and the [first example](examples) for more details. * * The `StreamingServer` class is considered advanced usage and unless you know * what you're doing, you're recommended to use the [`HttpServer`](#httpserver) class * instead. The `StreamingServer` class is specifically designed to help with * more advanced use cases where you want to have full control over consuming * the incoming HTTP request body and concurrency settings. * * In particular, this class does not buffer and parse the incoming HTTP request * in memory. It will invoke the request handler function once the HTTP request * headers have been received, i.e. before receiving the potentially much larger * HTTP request body. This means the [request](#request) passed to your request * handler function may not be fully compatible with PSR-7. See also * [streaming request](#streaming-request) below for more details. * * @see \React\Http\HttpServer * @see \React\Http\Message\Response * @see self::listen() * @internal */ final class StreamingServer extends EventEmitter { private $callback; private $parser; /** @var Clock */ private $clock; /** * Creates an HTTP server that invokes the given callback for each incoming HTTP request * * In order to process any connections, the server needs to be attached to an * instance of `React\Socket\ServerInterface` which emits underlying streaming * connections in order to then parse incoming data as HTTP. * See also [listen()](#listen) for more details. * * @param LoopInterface $loop * @param callable $requestHandler * @see self::listen() */ public function __construct(LoopInterface $loop, $requestHandler) { if (!\is_callable($requestHandler)) { throw new \InvalidArgumentException('Invalid request handler given'); } $this->callback = $requestHandler; $this->clock = new Clock($loop); $this->parser = new RequestHeaderParser($this->clock); $that = $this; $this->parser->on('headers', function (ServerRequestInterface $request, ConnectionInterface $conn) use($that) { $that->handleRequest($conn, $request); }); $this->parser->on('error', function (\Exception $e, ConnectionInterface $conn) use($that) { $that->emit('error', array($e)); // parsing failed => assume dummy request and send appropriate error $that->writeError($conn, $e->getCode() !== 0 ? $e->getCode() : Response::STATUS_BAD_REQUEST, new ServerRequest('GET', '/')); }); } /** * Starts listening for HTTP requests on the given socket server instance * * @param ServerInterface $socket * @see \React\Http\HttpServer::listen() */ public function listen(ServerInterface $socket) { $socket->on('connection', array($this->parser, 'handle')); } /** @internal */ public function handleRequest(ConnectionInterface $conn, ServerRequestInterface $request) { if ($request->getProtocolVersion() !== '1.0' && '100-continue' === \strtolower($request->getHeaderLine('Expect'))) { $conn->write("HTTP/1.1 100 Continue\r\n\r\n"); } // execute request handler callback $callback = $this->callback; try { $response = $callback($request); } catch (\Exception $error) { // request handler callback throws an Exception $response = Promise\reject($error); } catch (\Throwable $error) { // @codeCoverageIgnoreStart // request handler callback throws a PHP7+ Error $response = Promise\reject($error); // @codeCoverageIgnoreEnd } // cancel pending promise once connection closes $connectionOnCloseResponseCancelerHandler = function () { }; if ($response instanceof PromiseInterface && \method_exists($response, 'cancel')) { $connectionOnCloseResponseCanceler = function () use($response) { $response->cancel(); }; $connectionOnCloseResponseCancelerHandler = function () use($connectionOnCloseResponseCanceler, $conn) { if ($connectionOnCloseResponseCanceler !== null) { $conn->removeListener('close', $connectionOnCloseResponseCanceler); } }; $conn->on('close', $connectionOnCloseResponseCanceler); } // happy path: response returned, handle and return immediately if ($response instanceof ResponseInterface) { return $this->handleResponse($conn, $request, $response); } // did not return a promise? this is an error, convert into one for rejection below. if (!$response instanceof PromiseInterface) { $response = Promise\resolve($response); } $that = $this; $response->then(function ($response) use($that, $conn, $request) { if (!$response instanceof ResponseInterface) { $message = 'The response callback is expected to resolve with an object implementing Psr\\Http\\Message\\ResponseInterface, but resolved with "%s" instead.'; $message = \sprintf($message, \is_object($response) ? \get_class($response) : \gettype($response)); $exception = new \RuntimeException($message); $that->emit('error', array($exception)); return $that->writeError($conn, Response::STATUS_INTERNAL_SERVER_ERROR, $request); } $that->handleResponse($conn, $request, $response); }, function ($error) use($that, $conn, $request) { $message = 'The response callback is expected to resolve with an object implementing Psr\\Http\\Message\\ResponseInterface, but rejected with "%s" instead.'; $message = \sprintf($message, \is_object($error) ? \get_class($error) : \gettype($error)); $previous = null; if ($error instanceof \Throwable || $error instanceof \Exception) { $previous = $error; } $exception = new \RuntimeException($message, 0, $previous); $that->emit('error', array($exception)); return $that->writeError($conn, Response::STATUS_INTERNAL_SERVER_ERROR, $request); })->then($connectionOnCloseResponseCancelerHandler, $connectionOnCloseResponseCancelerHandler); } /** @internal */ public function writeError(ConnectionInterface $conn, $code, ServerRequestInterface $request) { $response = new Response($code, array('Content-Type' => 'text/plain', 'Connection' => 'close'), 'Error ' . $code); // append reason phrase to response body if known $reason = $response->getReasonPhrase(); if ($reason !== '') { $body = $response->getBody(); $body->seek(0, \SEEK_END); $body->write(': ' . $reason); } $this->handleResponse($conn, $request, $response); } /** @internal */ public function handleResponse(ConnectionInterface $connection, ServerRequestInterface $request, ResponseInterface $response) { // return early and close response body if connection is already closed $body = $response->getBody(); if (!$connection->isWritable()) { $body->close(); return; } $code = $response->getStatusCode(); $method = $request->getMethod(); // assign HTTP protocol version from request automatically $version = $request->getProtocolVersion(); $response = $response->withProtocolVersion($version); // assign default "Server" header automatically if (!$response->hasHeader('Server')) { $response = $response->withHeader('Server', 'ReactPHP/1'); } elseif ($response->getHeaderLine('Server') === '') { $response = $response->withoutHeader('Server'); } // assign default "Date" header from current time automatically if (!$response->hasHeader('Date')) { // IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT $response = $response->withHeader('Date', \gmdate('D, d M Y H:i:s', (int) $this->clock->now()) . ' GMT'); } elseif ($response->getHeaderLine('Date') === '') { $response = $response->withoutHeader('Date'); } // assign "Content-Length" header automatically $chunked = \false; if ($method === 'CONNECT' && $code >= 200 && $code < 300 || $code >= 100 && $code < 200 || $code === Response::STATUS_NO_CONTENT) { // 2xx response to CONNECT and 1xx and 204 MUST NOT include Content-Length or Transfer-Encoding header $response = $response->withoutHeader('Content-Length'); } elseif ($method === 'HEAD' && $response->hasHeader('Content-Length')) { // HEAD Request: preserve explicit Content-Length } elseif ($code === Response::STATUS_NOT_MODIFIED && ($response->hasHeader('Content-Length') || $body->getSize() === 0)) { // 304 Not Modified: preserve explicit Content-Length and preserve missing header if body is empty } elseif ($body->getSize() !== null) { // assign Content-Length header when using a "normal" buffered body string $response = $response->withHeader('Content-Length', (string) $body->getSize()); } elseif (!$response->hasHeader('Content-Length') && $version === '1.1') { // assign chunked transfer-encoding if no 'content-length' is given for HTTP/1.1 responses $chunked = \true; } // assign "Transfer-Encoding" header automatically if ($chunked) { $response = $response->withHeader('Transfer-Encoding', 'chunked'); } else { // remove any Transfer-Encoding headers unless automatically enabled above $response = $response->withoutHeader('Transfer-Encoding'); } // assign "Connection" header automatically $persist = \false; if ($code === Response::STATUS_SWITCHING_PROTOCOLS) { // 101 (Switching Protocols) response uses Connection: upgrade header // This implies that this stream now uses another protocol and we // may not persist this connection for additional requests. $response = $response->withHeader('Connection', 'upgrade'); } elseif (\strtolower($request->getHeaderLine('Connection')) === 'close' || \strtolower($response->getHeaderLine('Connection')) === 'close') { // obey explicit "Connection: close" request header or response header if present $response = $response->withHeader('Connection', 'close'); } elseif ($version === '1.1') { // HTTP/1.1 assumes persistent connection support by default, so we don't need to inform client $persist = \true; } elseif (\strtolower($request->getHeaderLine('Connection')) === 'keep-alive') { // obey explicit "Connection: keep-alive" request header and inform client $persist = \true; $response = $response->withHeader('Connection', 'keep-alive'); } else { // remove any Connection headers unless automatically enabled above $response = $response->withoutHeader('Connection'); } // 101 (Switching Protocols) response (for Upgrade request) forwards upgraded data through duplex stream // 2xx (Successful) response to CONNECT forwards tunneled application data through duplex stream if (($code === Response::STATUS_SWITCHING_PROTOCOLS || $method === 'CONNECT' && $code >= 200 && $code < 300) && $body instanceof HttpBodyStream && $body->input instanceof WritableStreamInterface) { if ($request->getBody()->isReadable()) { // request is still streaming => wait for request close before forwarding following data from connection $request->getBody()->on('close', function () use($connection, $body) { if ($body->input->isWritable()) { $connection->pipe($body->input); $connection->resume(); } }); } elseif ($body->input->isWritable()) { // request already closed => forward following data from connection $connection->pipe($body->input); $connection->resume(); } } // build HTTP response header by appending status line and header fields $expected = 0; $headers = "HTTP/" . $version . " " . $code . " " . $response->getReasonPhrase() . "\r\n"; foreach ($response->getHeaders() as $name => $values) { if (\strpos($name, ':') !== \false) { $expected = -1; break; } foreach ($values as $value) { $headers .= $name . ": " . $value . "\r\n"; ++$expected; } } /** @var array $m legacy PHP 5.3 only */ if ($code < 100 || $code > 999 || \substr_count($headers, "\n") !== $expected + 1 || (\PHP_VERSION_ID >= 50400 ? \preg_match_all(AbstractMessage::REGEX_HEADERS, $headers) : \preg_match_all(AbstractMessage::REGEX_HEADERS, $headers, $m)) !== $expected) { $this->emit('error', array(new \InvalidArgumentException('Unable to send response with invalid response headers'))); $this->writeError($connection, Response::STATUS_INTERNAL_SERVER_ERROR, $request); return; } // response to HEAD and 1xx, 204 and 304 responses MUST NOT include a body // exclude status 101 (Switching Protocols) here for Upgrade request handling above if ($method === 'HEAD' || $code >= 100 && $code < 200 && $code !== Response::STATUS_SWITCHING_PROTOCOLS || $code === Response::STATUS_NO_CONTENT || $code === Response::STATUS_NOT_MODIFIED) { $body->close(); $body = ''; } // this is a non-streaming response body or the body stream already closed? if (!$body instanceof ReadableStreamInterface || !$body->isReadable()) { // add final chunk if a streaming body is already closed and uses `Transfer-Encoding: chunked` if ($body instanceof ReadableStreamInterface && $chunked) { $body = "0\r\n\r\n"; } // write response headers and body $connection->write($headers . "\r\n" . $body); // either wait for next request over persistent connection or end connection if ($persist) { $this->parser->handle($connection); } else { $connection->end(); } return; } $connection->write($headers . "\r\n"); if ($chunked) { $body = new ChunkedEncoder($body); } // Close response stream once connection closes. // Note that this TCP/IP close detection may take some time, // in particular this may only fire on a later read/write attempt. $connection->on('close', array($body, 'close')); // write streaming body and then wait for next request over persistent connection if ($persist) { $body->pipe($connection, array('end' => \false)); $parser = $this->parser; $body->on('end', function () use($connection, $parser, $body) { $connection->removeListener('close', array($body, 'close')); $parser->handle($connection); }); } else { $body->pipe($connection); } } } closed; } public function pause() { // NOOP } public function resume() { // NOOP } public function pipe(WritableStreamInterface $dest, array $options = array()) { Util::pipe($this, $dest, $options); return $dest; } public function close() { if ($this->closed) { return; } $this->closed = \true; $this->emit('close'); $this->removeAllListeners(); } public function getSize() { return 0; } /** @ignore */ public function __toString() { return ''; } /** @ignore */ public function detach() { return null; } /** @ignore */ public function tell() { throw new \BadMethodCallException(); } /** @ignore */ public function eof() { throw new \BadMethodCallException(); } /** @ignore */ public function isSeekable() { return \false; } /** @ignore */ public function seek($offset, $whence = \SEEK_SET) { throw new \BadMethodCallException(); } /** @ignore */ public function rewind() { throw new \BadMethodCallException(); } /** @ignore */ public function isWritable() { return \false; } /** @ignore */ public function write($string) { throw new \BadMethodCallException(); } /** @ignore */ public function read($length) { throw new \BadMethodCallException(); } /** @ignore */ public function getContents() { return ''; } /** @ignore */ public function getMetadata($key = null) { return $key === null ? array() : null; } } http = $http; } /** * * @internal * @param RequestInterface $request * @return PromiseInterface Promise */ public function send(RequestInterface $request) { // support HTTP/1.1 and HTTP/1.0 only, ensured by `Browser` already \assert(\in_array($request->getProtocolVersion(), array('1.0', '1.1'), \true)); $body = $request->getBody(); $size = $body->getSize(); if ($size !== null && $size !== 0) { // automatically assign a "Content-Length" request header if the body size is known and non-empty $request = $request->withHeader('Content-Length', (string) $size); } elseif ($size === 0 && \in_array($request->getMethod(), array('POST', 'PUT', 'PATCH'))) { // only assign a "Content-Length: 0" request header if the body is expected for certain methods $request = $request->withHeader('Content-Length', '0'); } elseif ($body instanceof ReadableStreamInterface && $size !== 0 && $body->isReadable() && !$request->hasHeader('Content-Length')) { // use "Transfer-Encoding: chunked" when this is a streaming body and body size is unknown $request = $request->withHeader('Transfer-Encoding', 'chunked'); } else { // do not use chunked encoding if size is known or if this is an empty request body $size = 0; } // automatically add `Authorization: Basic …` request header if URL includes `user:pass@host` if ($request->getUri()->getUserInfo() !== '' && !$request->hasHeader('Authorization')) { $request = $request->withHeader('Authorization', 'Basic ' . \base64_encode($request->getUri()->getUserInfo())); } $requestStream = $this->http->request($request); $deferred = new Deferred(function ($_, $reject) use($requestStream) { // close request stream if request is cancelled $reject(new \RuntimeException('Request cancelled')); $requestStream->close(); }); $requestStream->on('error', function ($error) use($deferred) { $deferred->reject($error); }); $requestStream->on('response', function (ResponseInterface $response) use($deferred, $request) { $deferred->resolve($response); }); if ($body instanceof ReadableStreamInterface) { if ($body->isReadable()) { // length unknown => apply chunked transfer-encoding if ($size === null) { $body = new ChunkedEncoder($body); } // pipe body into request stream // add dummy write to immediately start request even if body does not emit any data yet $body->pipe($requestStream); $requestStream->write(''); $body->on('close', $close = function () use($deferred, $requestStream) { $deferred->reject(new \RuntimeException('Request failed because request body closed unexpectedly')); $requestStream->close(); }); $body->on('error', function ($e) use($deferred, $requestStream, $close, $body) { $body->removeListener('close', $close); $deferred->reject(new \RuntimeException('Request failed because request body reported an error', 0, $e)); $requestStream->close(); }); $body->on('end', function () use($close, $body) { $body->removeListener('close', $close); }); } else { // stream is not readable => end request without body $requestStream->end(); } } else { // body is fully buffered => write as one chunk $requestStream->end((string) $body); } return $deferred->promise(); } } maxInputVars = (int) $var; } $var = \ini_get('max_input_nesting_level'); if ($var !== \false) { $this->maxInputNestingLevel = (int) $var; } if ($uploadMaxFilesize === null) { $uploadMaxFilesize = \ini_get('upload_max_filesize'); } $this->uploadMaxFilesize = IniUtil::iniSizeToBytes($uploadMaxFilesize); $this->maxFileUploads = $maxFileUploads === null ? \ini_get('file_uploads') === '' ? 0 : (int) \ini_get('max_file_uploads') : (int) $maxFileUploads; $this->maxMultipartBodyParts = $this->maxInputVars + $this->maxFileUploads; } public function parse(ServerRequestInterface $request) { $contentType = $request->getHeaderLine('content-type'); if (!\preg_match('/boundary="?(.*?)"?$/', $contentType, $matches)) { return $request; } $this->request = $request; $this->parseBody('--' . $matches[1], (string) $request->getBody()); $request = $this->request; $this->request = null; $this->multipartBodyPartCount = 0; $this->cursor = 0; $this->postCount = 0; $this->filesCount = 0; $this->emptyCount = 0; $this->maxFileSize = null; return $request; } private function parseBody($boundary, $buffer) { $len = \strlen($boundary); // ignore everything before initial boundary (SHOULD be empty) $this->cursor = \strpos($buffer, $boundary . "\r\n"); while ($this->cursor !== \false) { // search following boundary (preceded by newline) // ignore last if not followed by boundary (SHOULD end with "--") $this->cursor += $len + 2; $end = \strpos($buffer, "\r\n" . $boundary, $this->cursor); if ($end === \false) { break; } // parse one part and continue searching for next $this->parsePart(\substr($buffer, $this->cursor, $end - $this->cursor)); $this->cursor = $end; if (++$this->multipartBodyPartCount > $this->maxMultipartBodyParts) { break; } } } private function parsePart($chunk) { $pos = \strpos($chunk, "\r\n\r\n"); if ($pos === \false) { return; } $headers = $this->parseHeaders((string) \substr($chunk, 0, $pos)); $body = (string) \substr($chunk, $pos + 4); if (!isset($headers['content-disposition'])) { return; } $name = $this->getParameterFromHeader($headers['content-disposition'], 'name'); if ($name === null) { return; } $filename = $this->getParameterFromHeader($headers['content-disposition'], 'filename'); if ($filename !== null) { $this->parseFile($name, $filename, isset($headers['content-type'][0]) ? $headers['content-type'][0] : null, $body); } else { $this->parsePost($name, $body); } } private function parseFile($name, $filename, $contentType, $contents) { $file = $this->parseUploadedFile($filename, $contentType, $contents); if ($file === null) { return; } $this->request = $this->request->withUploadedFiles($this->extractPost($this->request->getUploadedFiles(), $name, $file)); } private function parseUploadedFile($filename, $contentType, $contents) { $size = \strlen($contents); // no file selected (zero size and empty filename) if ($size === 0 && $filename === '') { // ignore excessive number of empty file uploads if (++$this->emptyCount + $this->filesCount > $this->maxInputVars) { return; } return new UploadedFile(new BufferedBody(''), $size, \UPLOAD_ERR_NO_FILE, $filename, $contentType); } // ignore excessive number of file uploads if (++$this->filesCount > $this->maxFileUploads) { return; } // file exceeds "upload_max_filesize" ini setting if ($size > $this->uploadMaxFilesize) { return new UploadedFile(new BufferedBody(''), $size, \UPLOAD_ERR_INI_SIZE, $filename, $contentType); } // file exceeds MAX_FILE_SIZE value if ($this->maxFileSize !== null && $size > $this->maxFileSize) { return new UploadedFile(new BufferedBody(''), $size, \UPLOAD_ERR_FORM_SIZE, $filename, $contentType); } return new UploadedFile(new BufferedBody($contents), $size, \UPLOAD_ERR_OK, $filename, $contentType); } private function parsePost($name, $value) { // ignore excessive number of post fields if (++$this->postCount > $this->maxInputVars) { return; } $this->request = $this->request->withParsedBody($this->extractPost($this->request->getParsedBody(), $name, $value)); if (\strtoupper($name) === 'MAX_FILE_SIZE') { $this->maxFileSize = (int) $value; if ($this->maxFileSize === 0) { $this->maxFileSize = null; } } } private function parseHeaders($header) { $headers = array(); foreach (\explode("\r\n", \trim($header)) as $line) { $parts = \explode(':', $line, 2); if (!isset($parts[1])) { continue; } $key = \strtolower(\trim($parts[0])); $values = \explode(';', $parts[1]); $values = \array_map('trim', $values); $headers[$key] = $values; } return $headers; } private function getParameterFromHeader(array $header, $parameter) { foreach ($header as $part) { if (\preg_match('/' . $parameter . '="?(.*?)"?$/', $part, $matches)) { return $matches[1]; } } return null; } private function extractPost($postFields, $key, $value) { $chunks = \explode('[', $key); if (\count($chunks) == 1) { $postFields[$key] = $value; return $postFields; } // ignore this key if maximum nesting level is exceeded if (isset($chunks[$this->maxInputNestingLevel])) { return $postFields; } $chunkKey = \rtrim($chunks[0], ']'); $parent =& $postFields; for ($i = 1; isset($chunks[$i]); $i++) { $previousChunkKey = $chunkKey; if ($previousChunkKey === '') { $parent[] = array(); \end($parent); $parent =& $parent[\key($parent)]; } else { if (!isset($parent[$previousChunkKey]) || !\is_array($parent[$previousChunkKey])) { $parent[$previousChunkKey] = array(); } $parent =& $parent[$previousChunkKey]; } $chunkKey = \rtrim($chunks[$i], ']'); } if ($chunkKey === '') { $parent[] = $value; } else { $parent[$chunkKey] = $value; } return $postFields; } } @,;:\\\\"\\/\\[\\]?={}\\x00-\\x20\\x7F]++):[\\x20\\x09]*+((?:[\\x20\\x09]*+[\\x21-\\x7E\\x80-\\xFF]++)*+)[\\x20\\x09]*+[\\r]?+\\n/m'; /** @var array */ private $headers = array(); /** @var array */ private $headerNamesLowerCase = array(); /** @var string */ private $protocolVersion; /** @var StreamInterface */ private $body; /** * @param string $protocolVersion * @param array $headers * @param StreamInterface $body */ protected function __construct($protocolVersion, array $headers, StreamInterface $body) { foreach ($headers as $name => $value) { if ($value !== array()) { if (\is_array($value)) { foreach ($value as &$one) { $one = (string) $one; } } else { $value = array((string) $value); } $lower = \strtolower($name); if (isset($this->headerNamesLowerCase[$lower])) { $value = \array_merge($this->headers[$this->headerNamesLowerCase[$lower]], $value); unset($this->headers[$this->headerNamesLowerCase[$lower]]); } $this->headers[$name] = $value; $this->headerNamesLowerCase[$lower] = $name; } } $this->protocolVersion = (string) $protocolVersion; $this->body = $body; } public function getProtocolVersion() { return $this->protocolVersion; } public function withProtocolVersion($version) { if ((string) $version === $this->protocolVersion) { return $this; } $message = clone $this; $message->protocolVersion = (string) $version; return $message; } public function getHeaders() { return $this->headers; } public function hasHeader($name) { return isset($this->headerNamesLowerCase[\strtolower($name)]); } public function getHeader($name) { $lower = \strtolower($name); return isset($this->headerNamesLowerCase[$lower]) ? $this->headers[$this->headerNamesLowerCase[$lower]] : array(); } public function getHeaderLine($name) { return \implode(', ', $this->getHeader($name)); } public function withHeader($name, $value) { if ($value === array()) { return $this->withoutHeader($name); } elseif (\is_array($value)) { foreach ($value as &$one) { $one = (string) $one; } } else { $value = array((string) $value); } $lower = \strtolower($name); if (isset($this->headerNamesLowerCase[$lower]) && $this->headerNamesLowerCase[$lower] === (string) $name && $this->headers[$this->headerNamesLowerCase[$lower]] === $value) { return $this; } $message = clone $this; if (isset($message->headerNamesLowerCase[$lower])) { unset($message->headers[$message->headerNamesLowerCase[$lower]]); } $message->headers[$name] = $value; $message->headerNamesLowerCase[$lower] = $name; return $message; } public function withAddedHeader($name, $value) { if ($value === array()) { return $this; } return $this->withHeader($name, \array_merge($this->getHeader($name), \is_array($value) ? $value : array($value))); } public function withoutHeader($name) { $lower = \strtolower($name); if (!isset($this->headerNamesLowerCase[$lower])) { return $this; } $message = clone $this; unset($message->headers[$message->headerNamesLowerCase[$lower]], $message->headerNamesLowerCase[$lower]); return $message; } public function getBody() { return $this->body; } public function withBody(StreamInterface $body) { if ($body === $this->body) { return $this; } $message = clone $this; $message->body = $body; return $message; } } 'ReactPHP/1'); /** * The `Browser` is responsible for sending HTTP requests to your HTTP server * and keeps track of pending incoming HTTP responses. * * ```php * $browser = new React\Http\Browser(); * ``` * * This class takes two optional arguments for more advanced usage: * * ```php * // constructor signature as of v1.5.0 * $browser = new React\Http\Browser(?ConnectorInterface $connector = null, ?LoopInterface $loop = null); * * // legacy constructor signature before v1.5.0 * $browser = new React\Http\Browser(?LoopInterface $loop = null, ?ConnectorInterface $connector = null); * ``` * * If you need custom connector settings (DNS resolution, TLS parameters, timeouts, * proxy servers etc.), you can explicitly pass a custom instance of the * [`ConnectorInterface`](https://github.com/reactphp/socket#connectorinterface): * * ```php * $connector = new React\Socket\Connector(array( * 'dns' => '127.0.0.1', * 'tcp' => array( * 'bindto' => '192.168.10.1:0' * ), * 'tls' => array( * 'verify_peer' => false, * 'verify_peer_name' => false * ) * )); * * $browser = new React\Http\Browser($connector); * ``` * * This class takes an optional `LoopInterface|null $loop` parameter that can be used to * pass the event loop instance to use for this object. You can use a `null` value * here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). * This value SHOULD NOT be given unless you're sure you want to explicitly use a * given event loop instance. * * @param null|ConnectorInterface|LoopInterface $connector * @param null|LoopInterface|ConnectorInterface $loop * @throws \InvalidArgumentException for invalid arguments */ public function __construct($connector = null, $loop = null) { // swap arguments for legacy constructor signature if (($connector instanceof LoopInterface || $connector === null) && ($loop instanceof ConnectorInterface || $loop === null)) { $swap = $loop; $loop = $connector; $connector = $swap; } if ($connector !== null && !$connector instanceof ConnectorInterface || $loop !== null && !$loop instanceof LoopInterface) { throw new \InvalidArgumentException('Expected "?ConnectorInterface $connector" and "?LoopInterface $loop" arguments'); } $loop = $loop ?: Loop::get(); $this->transaction = new Transaction(Sender::createFromLoop($loop, $connector), $loop); } /** * Sends an HTTP GET request * * ```php * $browser->get($url)->then(function (Psr\Http\Message\ResponseInterface $response) { * var_dump((string)$response->getBody()); * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * See also [GET request client example](../examples/01-client-get-request.php). * * @param string $url URL for the request. * @param array $headers * @return PromiseInterface */ public function get($url, array $headers = array()) { return $this->requestMayBeStreaming('GET', $url, $headers); } /** * Sends an HTTP POST request * * ```php * $browser->post( * $url, * [ * 'Content-Type' => 'application/json' * ], * json_encode($data) * )->then(function (Psr\Http\Message\ResponseInterface $response) { * var_dump(json_decode((string)$response->getBody())); * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * See also [POST JSON client example](../examples/04-client-post-json.php). * * This method is also commonly used to submit HTML form data: * * ```php * $data = [ * 'user' => 'Alice', * 'password' => 'secret' * ]; * * $browser->post( * $url, * [ * 'Content-Type' => 'application/x-www-form-urlencoded' * ], * http_build_query($data) * ); * ``` * * This method will automatically add a matching `Content-Length` request * header if the outgoing request body is a `string`. If you're using a * streaming request body (`ReadableStreamInterface`), it will default to * using `Transfer-Encoding: chunked` or you have to explicitly pass in a * matching `Content-Length` request header like so: * * ```php * $body = new React\Stream\ThroughStream(); * Loop::addTimer(1.0, function () use ($body) { * $body->end("hello world"); * }); * * $browser->post($url, array('Content-Length' => '11'), $body); * ``` * * @param string $url URL for the request. * @param array $headers * @param string|ReadableStreamInterface $body * @return PromiseInterface */ public function post($url, array $headers = array(), $body = '') { return $this->requestMayBeStreaming('POST', $url, $headers, $body); } /** * Sends an HTTP HEAD request * * ```php * $browser->head($url)->then(function (Psr\Http\Message\ResponseInterface $response) { * var_dump($response->getHeaders()); * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * @param string $url URL for the request. * @param array $headers * @return PromiseInterface */ public function head($url, array $headers = array()) { return $this->requestMayBeStreaming('HEAD', $url, $headers); } /** * Sends an HTTP PATCH request * * ```php * $browser->patch( * $url, * [ * 'Content-Type' => 'application/json' * ], * json_encode($data) * )->then(function (Psr\Http\Message\ResponseInterface $response) { * var_dump(json_decode((string)$response->getBody())); * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * This method will automatically add a matching `Content-Length` request * header if the outgoing request body is a `string`. If you're using a * streaming request body (`ReadableStreamInterface`), it will default to * using `Transfer-Encoding: chunked` or you have to explicitly pass in a * matching `Content-Length` request header like so: * * ```php * $body = new React\Stream\ThroughStream(); * Loop::addTimer(1.0, function () use ($body) { * $body->end("hello world"); * }); * * $browser->patch($url, array('Content-Length' => '11'), $body); * ``` * * @param string $url URL for the request. * @param array $headers * @param string|ReadableStreamInterface $body * @return PromiseInterface */ public function patch($url, array $headers = array(), $body = '') { return $this->requestMayBeStreaming('PATCH', $url, $headers, $body); } /** * Sends an HTTP PUT request * * ```php * $browser->put( * $url, * [ * 'Content-Type' => 'text/xml' * ], * $xml->asXML() * )->then(function (Psr\Http\Message\ResponseInterface $response) { * var_dump((string)$response->getBody()); * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * See also [PUT XML client example](../examples/05-client-put-xml.php). * * This method will automatically add a matching `Content-Length` request * header if the outgoing request body is a `string`. If you're using a * streaming request body (`ReadableStreamInterface`), it will default to * using `Transfer-Encoding: chunked` or you have to explicitly pass in a * matching `Content-Length` request header like so: * * ```php * $body = new React\Stream\ThroughStream(); * Loop::addTimer(1.0, function () use ($body) { * $body->end("hello world"); * }); * * $browser->put($url, array('Content-Length' => '11'), $body); * ``` * * @param string $url URL for the request. * @param array $headers * @param string|ReadableStreamInterface $body * @return PromiseInterface */ public function put($url, array $headers = array(), $body = '') { return $this->requestMayBeStreaming('PUT', $url, $headers, $body); } /** * Sends an HTTP DELETE request * * ```php * $browser->delete($url)->then(function (Psr\Http\Message\ResponseInterface $response) { * var_dump((string)$response->getBody()); * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * @param string $url URL for the request. * @param array $headers * @param string|ReadableStreamInterface $body * @return PromiseInterface */ public function delete($url, array $headers = array(), $body = '') { return $this->requestMayBeStreaming('DELETE', $url, $headers, $body); } /** * Sends an arbitrary HTTP request. * * The preferred way to send an HTTP request is by using the above * [request methods](#request-methods), for example the [`get()`](#get) * method to send an HTTP `GET` request. * * As an alternative, if you want to use a custom HTTP request method, you * can use this method: * * ```php * $browser->request('OPTIONS', $url)->then(function (Psr\Http\Message\ResponseInterface $response) { * var_dump((string)$response->getBody()); * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * This method will automatically add a matching `Content-Length` request * header if the size of the outgoing request body is known and non-empty. * For an empty request body, if will only include a `Content-Length: 0` * request header if the request method usually expects a request body (only * applies to `POST`, `PUT` and `PATCH`). * * If you're using a streaming request body (`ReadableStreamInterface`), it * will default to using `Transfer-Encoding: chunked` or you have to * explicitly pass in a matching `Content-Length` request header like so: * * ```php * $body = new React\Stream\ThroughStream(); * Loop::addTimer(1.0, function () use ($body) { * $body->end("hello world"); * }); * * $browser->request('POST', $url, array('Content-Length' => '11'), $body); * ``` * * @param string $method HTTP request method, e.g. GET/HEAD/POST etc. * @param string $url URL for the request * @param array $headers Additional request headers * @param string|ReadableStreamInterface $body HTTP request body contents * @return PromiseInterface */ public function request($method, $url, array $headers = array(), $body = '') { return $this->withOptions(array('streaming' => \false))->requestMayBeStreaming($method, $url, $headers, $body); } /** * Sends an arbitrary HTTP request and receives a streaming response without buffering the response body. * * The preferred way to send an HTTP request is by using the above * [request methods](#request-methods), for example the [`get()`](#get) * method to send an HTTP `GET` request. Each of these methods will buffer * the whole response body in memory by default. This is easy to get started * and works reasonably well for smaller responses. * * In some situations, it's a better idea to use a streaming approach, where * only small chunks have to be kept in memory. You can use this method to * send an arbitrary HTTP request and receive a streaming response. It uses * the same HTTP message API, but does not buffer the response body in * memory. It only processes the response body in small chunks as data is * received and forwards this data through [ReactPHP's Stream API](https://github.com/reactphp/stream). * This works for (any number of) responses of arbitrary sizes. * * ```php * $browser->requestStreaming('GET', $url)->then(function (Psr\Http\Message\ResponseInterface $response) { * $body = $response->getBody(); * assert($body instanceof Psr\Http\Message\StreamInterface); * assert($body instanceof React\Stream\ReadableStreamInterface); * * $body->on('data', function ($chunk) { * echo $chunk; * }); * * $body->on('error', function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * * $body->on('close', function () { * echo '[DONE]' . PHP_EOL; * }); * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * See also [`ReadableStreamInterface`](https://github.com/reactphp/stream#readablestreaminterface) * and the [streaming response](#streaming-response) for more details, * examples and possible use-cases. * * This method will automatically add a matching `Content-Length` request * header if the size of the outgoing request body is known and non-empty. * For an empty request body, if will only include a `Content-Length: 0` * request header if the request method usually expects a request body (only * applies to `POST`, `PUT` and `PATCH`). * * If you're using a streaming request body (`ReadableStreamInterface`), it * will default to using `Transfer-Encoding: chunked` or you have to * explicitly pass in a matching `Content-Length` request header like so: * * ```php * $body = new React\Stream\ThroughStream(); * Loop::addTimer(1.0, function () use ($body) { * $body->end("hello world"); * }); * * $browser->requestStreaming('POST', $url, array('Content-Length' => '11'), $body); * ``` * * @param string $method HTTP request method, e.g. GET/HEAD/POST etc. * @param string $url URL for the request * @param array $headers Additional request headers * @param string|ReadableStreamInterface $body HTTP request body contents * @return PromiseInterface */ public function requestStreaming($method, $url, $headers = array(), $body = '') { return $this->withOptions(array('streaming' => \true))->requestMayBeStreaming($method, $url, $headers, $body); } /** * Changes the maximum timeout used for waiting for pending requests. * * You can pass in the number of seconds to use as a new timeout value: * * ```php * $browser = $browser->withTimeout(10.0); * ``` * * You can pass in a bool `false` to disable any timeouts. In this case, * requests can stay pending forever: * * ```php * $browser = $browser->withTimeout(false); * ``` * * You can pass in a bool `true` to re-enable default timeout handling. This * will respects PHP's `default_socket_timeout` setting (default 60s): * * ```php * $browser = $browser->withTimeout(true); * ``` * * See also [timeouts](#timeouts) for more details about timeout handling. * * Notice that the [`Browser`](#browser) is an immutable object, i.e. this * method actually returns a *new* [`Browser`](#browser) instance with the * given timeout value applied. * * @param bool|number $timeout * @return self */ public function withTimeout($timeout) { if ($timeout === \true) { $timeout = null; } elseif ($timeout === \false) { $timeout = -1; } elseif ($timeout < 0) { $timeout = 0; } return $this->withOptions(array('timeout' => $timeout)); } /** * Changes how HTTP redirects will be followed. * * You can pass in the maximum number of redirects to follow: * * ```php * $browser = $browser->withFollowRedirects(5); * ``` * * The request will automatically be rejected when the number of redirects * is exceeded. You can pass in a `0` to reject the request for any * redirects encountered: * * ```php * $browser = $browser->withFollowRedirects(0); * * $browser->get($url)->then(function (Psr\Http\Message\ResponseInterface $response) { * // only non-redirected responses will now end up here * var_dump($response->getHeaders()); * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * You can pass in a bool `false` to disable following any redirects. In * this case, requests will resolve with the redirection response instead * of following the `Location` response header: * * ```php * $browser = $browser->withFollowRedirects(false); * * $browser->get($url)->then(function (Psr\Http\Message\ResponseInterface $response) { * // any redirects will now end up here * var_dump($response->getHeaderLine('Location')); * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * You can pass in a bool `true` to re-enable default redirect handling. * This defaults to following a maximum of 10 redirects: * * ```php * $browser = $browser->withFollowRedirects(true); * ``` * * See also [redirects](#redirects) for more details about redirect handling. * * Notice that the [`Browser`](#browser) is an immutable object, i.e. this * method actually returns a *new* [`Browser`](#browser) instance with the * given redirect setting applied. * * @param bool|int $followRedirects * @return self */ public function withFollowRedirects($followRedirects) { return $this->withOptions(array('followRedirects' => $followRedirects !== \false, 'maxRedirects' => \is_bool($followRedirects) ? null : $followRedirects)); } /** * Changes whether non-successful HTTP response status codes (4xx and 5xx) will be rejected. * * You can pass in a bool `false` to disable rejecting incoming responses * that use a 4xx or 5xx response status code. In this case, requests will * resolve with the response message indicating an error condition: * * ```php * $browser = $browser->withRejectErrorResponse(false); * * $browser->get($url)->then(function (Psr\Http\Message\ResponseInterface $response) { * // any HTTP response will now end up here * var_dump($response->getStatusCode(), $response->getReasonPhrase()); * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * You can pass in a bool `true` to re-enable default status code handling. * This defaults to rejecting any response status codes in the 4xx or 5xx * range: * * ```php * $browser = $browser->withRejectErrorResponse(true); * * $browser->get($url)->then(function (Psr\Http\Message\ResponseInterface $response) { * // any successful HTTP response will now end up here * var_dump($response->getStatusCode(), $response->getReasonPhrase()); * }, function (Exception $e) { * if ($e instanceof React\Http\Message\ResponseException) { * // any HTTP response error message will now end up here * $response = $e->getResponse(); * var_dump($response->getStatusCode(), $response->getReasonPhrase()); * } else { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * } * }); * ``` * * Notice that the [`Browser`](#browser) is an immutable object, i.e. this * method actually returns a *new* [`Browser`](#browser) instance with the * given setting applied. * * @param bool $obeySuccessCode * @return self */ public function withRejectErrorResponse($obeySuccessCode) { return $this->withOptions(array('obeySuccessCode' => $obeySuccessCode)); } /** * Changes the base URL used to resolve relative URLs to. * * If you configure a base URL, any requests to relative URLs will be * processed by first resolving this relative to the given absolute base * URL. This supports resolving relative path references (like `../` etc.). * This is particularly useful for (RESTful) API calls where all endpoints * (URLs) are located under a common base URL. * * ```php * $browser = $browser->withBase('http://api.example.com/v3/'); * * // will request http://api.example.com/v3/users * $browser->get('users')->then(…); * ``` * * You can pass in a `null` base URL to return a new instance that does not * use a base URL: * * ```php * $browser = $browser->withBase(null); * ``` * * Accordingly, any requests using relative URLs to a browser that does not * use a base URL can not be completed and will be rejected without sending * a request. * * This method will throw an `InvalidArgumentException` if the given * `$baseUrl` argument is not a valid URL. * * Notice that the [`Browser`](#browser) is an immutable object, i.e. the `withBase()` method * actually returns a *new* [`Browser`](#browser) instance with the given base URL applied. * * @param string|null $baseUrl absolute base URL * @return self * @throws InvalidArgumentException if the given $baseUrl is not a valid absolute URL * @see self::withoutBase() */ public function withBase($baseUrl) { $browser = clone $this; if ($baseUrl === null) { $browser->baseUrl = null; return $browser; } $browser->baseUrl = new Uri($baseUrl); if (!\in_array($browser->baseUrl->getScheme(), array('http', 'https')) || $browser->baseUrl->getHost() === '') { throw new \InvalidArgumentException('Base URL must be absolute'); } return $browser; } /** * Changes the HTTP protocol version that will be used for all subsequent requests. * * All the above [request methods](#request-methods) default to sending * requests as HTTP/1.1. This is the preferred HTTP protocol version which * also provides decent backwards-compatibility with legacy HTTP/1.0 * servers. As such, there should rarely be a need to explicitly change this * protocol version. * * If you want to explicitly use the legacy HTTP/1.0 protocol version, you * can use this method: * * ```php * $browser = $browser->withProtocolVersion('1.0'); * * $browser->get($url)->then(…); * ``` * * Notice that the [`Browser`](#browser) is an immutable object, i.e. this * method actually returns a *new* [`Browser`](#browser) instance with the * new protocol version applied. * * @param string $protocolVersion HTTP protocol version to use, must be one of "1.1" or "1.0" * @return self * @throws InvalidArgumentException */ public function withProtocolVersion($protocolVersion) { if (!\in_array($protocolVersion, array('1.0', '1.1'), \true)) { throw new InvalidArgumentException('Invalid HTTP protocol version, must be one of "1.1" or "1.0"'); } $browser = clone $this; $browser->protocolVersion = (string) $protocolVersion; return $browser; } /** * Changes the maximum size for buffering a response body. * * The preferred way to send an HTTP request is by using the above * [request methods](#request-methods), for example the [`get()`](#get) * method to send an HTTP `GET` request. Each of these methods will buffer * the whole response body in memory by default. This is easy to get started * and works reasonably well for smaller responses. * * By default, the response body buffer will be limited to 16 MiB. If the * response body exceeds this maximum size, the request will be rejected. * * You can pass in the maximum number of bytes to buffer: * * ```php * $browser = $browser->withResponseBuffer(1024 * 1024); * * $browser->get($url)->then(function (Psr\Http\Message\ResponseInterface $response) { * // response body will not exceed 1 MiB * var_dump($response->getHeaders(), (string) $response->getBody()); * }, function (Exception $e) { * echo 'Error: ' . $e->getMessage() . PHP_EOL; * }); * ``` * * Note that the response body buffer has to be kept in memory for each * pending request until its transfer is completed and it will only be freed * after a pending request is fulfilled. As such, increasing this maximum * buffer size to allow larger response bodies is usually not recommended. * Instead, you can use the [`requestStreaming()` method](#requeststreaming) * to receive responses with arbitrary sizes without buffering. Accordingly, * this maximum buffer size setting has no effect on streaming responses. * * Notice that the [`Browser`](#browser) is an immutable object, i.e. this * method actually returns a *new* [`Browser`](#browser) instance with the * given setting applied. * * @param int $maximumSize * @return self * @see self::requestStreaming() */ public function withResponseBuffer($maximumSize) { return $this->withOptions(array('maximumSize' => $maximumSize)); } /** * Add a request header for all following requests. * * ```php * $browser = $browser->withHeader('User-Agent', 'ACME'); * * $browser->get($url)->then(…); * ``` * * Note that the new header will overwrite any headers previously set with * the same name (case-insensitive). Following requests will use these headers * by default unless they are explicitly set for any requests. * * @param string $header * @param string $value * @return Browser */ public function withHeader($header, $value) { $browser = $this->withoutHeader($header); $browser->defaultHeaders[$header] = $value; return $browser; } /** * Remove any default request headers previously set via * the [`withHeader()` method](#withheader). * * ```php * $browser = $browser->withoutHeader('User-Agent'); * * $browser->get($url)->then(…); * ``` * * Note that this method only affects the headers which were set with the * method `withHeader(string $header, string $value): Browser` * * @param string $header * @return Browser */ public function withoutHeader($header) { $browser = clone $this; /** @var string|int $key */ foreach (\array_keys($browser->defaultHeaders) as $key) { if (\strcasecmp($key, $header) === 0) { unset($browser->defaultHeaders[$key]); break; } } return $browser; } /** * Changes the [options](#options) to use: * * The [`Browser`](#browser) class exposes several options for the handling of * HTTP transactions. These options resemble some of PHP's * [HTTP context options](http://php.net/manual/en/context.http.php) and * can be controlled via the following API (and their defaults): * * ```php * // deprecated * $newBrowser = $browser->withOptions(array( * 'timeout' => null, // see withTimeout() instead * 'followRedirects' => true, // see withFollowRedirects() instead * 'maxRedirects' => 10, // see withFollowRedirects() instead * 'obeySuccessCode' => true, // see withRejectErrorResponse() instead * 'streaming' => false, // deprecated, see requestStreaming() instead * )); * ``` * * See also [timeouts](#timeouts), [redirects](#redirects) and * [streaming](#streaming) for more details. * * Notice that the [`Browser`](#browser) is an immutable object, i.e. this * method actually returns a *new* [`Browser`](#browser) instance with the * options applied. * * @param array $options * @return self * @see self::withTimeout() * @see self::withFollowRedirects() * @see self::withRejectErrorResponse() */ private function withOptions(array $options) { $browser = clone $this; $browser->transaction = $this->transaction->withOptions($options); return $browser; } /** * @param string $method * @param string $url * @param array $headers * @param string|ReadableStreamInterface $body * @return PromiseInterface */ private function requestMayBeStreaming($method, $url, array $headers = array(), $body = '') { if ($this->baseUrl !== null) { // ensure we're actually below the base URL $url = Uri::resolve($this->baseUrl, new Uri($url)); } foreach ($this->defaultHeaders as $key => $value) { $explicitHeaderExists = \false; foreach (\array_keys($headers) as $headerKey) { if (\strcasecmp($headerKey, $key) === 0) { $explicitHeaderExists = \true; break; } } if (!$explicitHeaderExists) { $headers[$key] = $value; } } return $this->transaction->send(new Request($method, $url, $headers, $body, $this->protocolVersion)); } } 'text/plain' * ), * "Hello World!\n" * ); * }); * ``` * * Each incoming HTTP request message is always represented by the * [PSR-7 `ServerRequestInterface`](https://www.php-fig.org/psr/psr-7/#321-psrhttpmessageserverrequestinterface), * see also following [request](#server-request) chapter for more details. * * Each outgoing HTTP response message is always represented by the * [PSR-7 `ResponseInterface`](https://www.php-fig.org/psr/psr-7/#33-psrhttpmessageresponseinterface), * see also following [response](#server-response) chapter for more details. * * This class takes an optional `LoopInterface|null $loop` parameter that can be used to * pass the event loop instance to use for this object. You can use a `null` value * here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). * This value SHOULD NOT be given unless you're sure you want to explicitly use a * given event loop instance. * * In order to start listening for any incoming connections, the `HttpServer` needs * to be attached to an instance of * [`React\Socket\ServerInterface`](https://github.com/reactphp/socket#serverinterface) * through the [`listen()`](#listen) method as described in the following * chapter. In its most simple form, you can attach this to a * [`React\Socket\SocketServer`](https://github.com/reactphp/socket#socketserver) * in order to start a plaintext HTTP server like this: * * ```php * $http = new React\Http\HttpServer($handler); * * $socket = new React\Socket\SocketServer('0.0.0.0:8080'); * $http->listen($socket); * ``` * * See also the [`listen()`](#listen) method and * [hello world server example](../examples/51-server-hello-world.php) * for more details. * * By default, the `HttpServer` buffers and parses the complete incoming HTTP * request in memory. It will invoke the given request handler function when the * complete request headers and request body has been received. This means the * [request](#server-request) object passed to your request handler function will be * fully compatible with PSR-7 (http-message). This provides sane defaults for * 80% of the use cases and is the recommended way to use this library unless * you're sure you know what you're doing. * * On the other hand, buffering complete HTTP requests in memory until they can * be processed by your request handler function means that this class has to * employ a number of limits to avoid consuming too much memory. In order to * take the more advanced configuration out your hand, it respects setting from * your [`php.ini`](https://www.php.net/manual/en/ini.core.php) to apply its * default settings. This is a list of PHP settings this class respects with * their respective default values: * * ``` * memory_limit 128M * post_max_size 8M // capped at 64K * * enable_post_data_reading 1 * max_input_nesting_level 64 * max_input_vars 1000 * * file_uploads 1 * upload_max_filesize 2M * max_file_uploads 20 * ``` * * In particular, the `post_max_size` setting limits how much memory a single * HTTP request is allowed to consume while buffering its request body. This * needs to be limited because the server can process a large number of requests * concurrently, so the server may potentially consume a large amount of memory * otherwise. To support higher concurrency by default, this value is capped * at `64K`. If you assign a higher value, it will only allow `64K` by default. * If a request exceeds this limit, its request body will be ignored and it will * be processed like a request with no request body at all. See below for * explicit configuration to override this setting. * * By default, this class will try to avoid consuming more than half of your * `memory_limit` for buffering multiple concurrent HTTP requests. As such, with * the above default settings of `128M` max, it will try to consume no more than * `64M` for buffering multiple concurrent HTTP requests. As a consequence, it * will limit the concurrency to `1024` HTTP requests with the above defaults. * * It is imperative that you assign reasonable values to your PHP ini settings. * It is usually recommended to not support buffering incoming HTTP requests * with a large HTTP request body (e.g. large file uploads). If you want to * increase this buffer size, you will have to also increase the total memory * limit to allow for more concurrent requests (set `memory_limit 512M` or more) * or explicitly limit concurrency. * * In order to override the above buffering defaults, you can configure the * `HttpServer` explicitly. You can use the * [`LimitConcurrentRequestsMiddleware`](#limitconcurrentrequestsmiddleware) and * [`RequestBodyBufferMiddleware`](#requestbodybuffermiddleware) (see below) * to explicitly configure the total number of requests that can be handled at * once like this: * * ```php * $http = new React\Http\HttpServer( * new React\Http\Middleware\StreamingRequestMiddleware(), * new React\Http\Middleware\LimitConcurrentRequestsMiddleware(100), // 100 concurrent buffering handlers * new React\Http\Middleware\RequestBodyBufferMiddleware(2 * 1024 * 1024), // 2 MiB per request * new React\Http\Middleware\RequestBodyParserMiddleware(), * $handler * )); * ``` * * In this example, we allow processing up to 100 concurrent requests at once * and each request can buffer up to `2M`. This means you may have to keep a * maximum of `200M` of memory for incoming request body buffers. Accordingly, * you need to adjust the `memory_limit` ini setting to allow for these buffers * plus your actual application logic memory requirements (think `512M` or more). * * > Internally, this class automatically assigns these middleware handlers * automatically when no [`StreamingRequestMiddleware`](#streamingrequestmiddleware) * is given. Accordingly, you can use this example to override all default * settings to implement custom limits. * * As an alternative to buffering the complete request body in memory, you can * also use a streaming approach where only small chunks of data have to be kept * in memory: * * ```php * $http = new React\Http\HttpServer( * new React\Http\Middleware\StreamingRequestMiddleware(), * $handler * ); * ``` * * In this case, it will invoke the request handler function once the HTTP * request headers have been received, i.e. before receiving the potentially * much larger HTTP request body. This means the [request](#server-request) passed to * your request handler function may not be fully compatible with PSR-7. This is * specifically designed to help with more advanced use cases where you want to * have full control over consuming the incoming HTTP request body and * concurrency settings. See also [streaming incoming request](#streaming-incoming-request) * below for more details. * * > Changelog v1.5.0: This class has been renamed to `HttpServer` from the * previous `Server` class in order to avoid any ambiguities. * The previous name has been deprecated and should not be used anymore. */ final class HttpServer extends EventEmitter { /** * The maximum buffer size used for each request. * * This needs to be limited because the server can process a large number of * requests concurrently, so the server may potentially consume a large * amount of memory otherwise. * * See `RequestBodyBufferMiddleware` to override this setting. * * @internal */ const MAXIMUM_BUFFER_SIZE = 65536; // 64 KiB /** * @var StreamingServer */ private $streamingServer; /** * Creates an HTTP server that invokes the given callback for each incoming HTTP request * * In order to process any connections, the server needs to be attached to an * instance of `React\Socket\ServerInterface` which emits underlying streaming * connections in order to then parse incoming data as HTTP. * See also [listen()](#listen) for more details. * * @param callable|LoopInterface $requestHandlerOrLoop * @param callable[] ...$requestHandler * @see self::listen() */ public function __construct($requestHandlerOrLoop) { $requestHandlers = \func_get_args(); if (\reset($requestHandlers) instanceof LoopInterface) { $loop = \array_shift($requestHandlers); } else { $loop = Loop::get(); } $requestHandlersCount = \count($requestHandlers); if ($requestHandlersCount === 0 || \count(\array_filter($requestHandlers, 'is_callable')) < $requestHandlersCount) { throw new \InvalidArgumentException('Invalid request handler given'); } $streaming = \false; foreach ((array) $requestHandlers as $handler) { if ($handler instanceof StreamingRequestMiddleware) { $streaming = \true; break; } } $middleware = array(); if (!$streaming) { $maxSize = $this->getMaxRequestSize(); $concurrency = $this->getConcurrentRequestsLimit(\ini_get('memory_limit'), $maxSize); if ($concurrency !== null) { $middleware[] = new LimitConcurrentRequestsMiddleware($concurrency); } $middleware[] = new RequestBodyBufferMiddleware($maxSize); // Checking for an empty string because that is what a boolean // false is returned as by ini_get depending on the PHP version. // @link http://php.net/manual/en/ini.core.php#ini.enable-post-data-reading // @link http://php.net/manual/en/function.ini-get.php#refsect1-function.ini-get-notes // @link https://3v4l.org/qJtsa $enablePostDataReading = \ini_get('enable_post_data_reading'); if ($enablePostDataReading !== '') { $middleware[] = new RequestBodyParserMiddleware(); } } $middleware = \array_merge($middleware, $requestHandlers); /** * Filter out any configuration middleware, no need to run requests through something that isn't * doing anything with the request. */ $middleware = \array_filter($middleware, function ($handler) { return !$handler instanceof StreamingRequestMiddleware; }); $this->streamingServer = new StreamingServer($loop, new MiddlewareRunner($middleware)); $that = $this; $this->streamingServer->on('error', function ($error) use($that) { $that->emit('error', array($error)); }); } /** * Starts listening for HTTP requests on the given socket server instance * * The given [`React\Socket\ServerInterface`](https://github.com/reactphp/socket#serverinterface) * is responsible for emitting the underlying streaming connections. This * HTTP server needs to be attached to it in order to process any * connections and pase incoming streaming data as incoming HTTP request * messages. In its most common form, you can attach this to a * [`React\Socket\SocketServer`](https://github.com/reactphp/socket#socketserver) * in order to start a plaintext HTTP server like this: * * ```php * $http = new React\Http\HttpServer($handler); * * $socket = new React\Socket\SocketServer('0.0.0.0:8080'); * $http->listen($socket); * ``` * * See also [hello world server example](../examples/51-server-hello-world.php) * for more details. * * This example will start listening for HTTP requests on the alternative * HTTP port `8080` on all interfaces (publicly). As an alternative, it is * very common to use a reverse proxy and let this HTTP server listen on the * localhost (loopback) interface only by using the listen address * `127.0.0.1:8080` instead. This way, you host your application(s) on the * default HTTP port `80` and only route specific requests to this HTTP * server. * * Likewise, it's usually recommended to use a reverse proxy setup to accept * secure HTTPS requests on default HTTPS port `443` (TLS termination) and * only route plaintext requests to this HTTP server. As an alternative, you * can also accept secure HTTPS requests with this HTTP server by attaching * this to a [`React\Socket\SocketServer`](https://github.com/reactphp/socket#socketserver) * using a secure TLS listen address, a certificate file and optional * `passphrase` like this: * * ```php * $http = new React\Http\HttpServer($handler); * * $socket = new React\Socket\SocketServer('tls://0.0.0.0:8443', array( * 'tls' => array( * 'local_cert' => __DIR__ . '/localhost.pem' * ) * )); * $http->listen($socket); * ``` * * See also [hello world HTTPS example](../examples/61-server-hello-world-https.php) * for more details. * * @param ServerInterface $socket */ public function listen(ServerInterface $socket) { $this->streamingServer->listen($socket); } /** * @param string $memory_limit * @param string $post_max_size * @return ?int */ private function getConcurrentRequestsLimit($memory_limit, $post_max_size) { if ($memory_limit == -1) { return null; } $availableMemory = IniUtil::iniSizeToBytes($memory_limit) / 2; $concurrentRequests = (int) \ceil($availableMemory / IniUtil::iniSizeToBytes($post_max_size)); return $concurrentRequests; } /** * @param ?string $post_max_size * @return int */ private function getMaxRequestSize($post_max_size = null) { $maxSize = IniUtil::iniSizeToBytes($post_max_size === null ? \ini_get('post_max_size') : $post_max_size); return $maxSize === 0 || $maxSize >= self::MAXIMUM_BUFFER_SIZE ? self::MAXIMUM_BUFFER_SIZE : $maxSize; } } environment = new Env(); } public static function fromEnvironment(Env $environment) : self { $detector = new static(); $detector->environment = $environment; return $detector; } /** * Is current environment an recognized CI server? */ public function isCiDetected() : bool { $ciServer = $this->detectCurrentCiServer(); return $ciServer !== null; } /** * Detect current CI server and return instance of its settings * * @throws CiNotDetectedException */ public function detect() : CiInterface { $ciServer = $this->detectCurrentCiServer(); if ($ciServer === null) { throw new CiNotDetectedException('No CI server detected in current environment'); } return $ciServer; } /** * @return string[] */ protected function getCiServers() : array { return [Ci\AppVeyor::class, Ci\AwsCodeBuild::class, Ci\Bamboo::class, Ci\BitbucketPipelines::class, Ci\Buddy::class, Ci\Circle::class, Ci\Codeship::class, Ci\Continuousphp::class, Ci\Drone::class, Ci\GitHubActions::class, Ci\GitLab::class, Ci\Jenkins::class, Ci\TeamCity::class, Ci\Travis::class, Ci\Wercker::class]; } protected function detectCurrentCiServer() : ?CiInterface { $ciServers = $this->getCiServers(); foreach ($ciServers as $ciClass) { $callback = [$ciClass, 'isDetected']; if (\is_callable($callback)) { if ($callback($this->environment)) { return new $ciClass($this->environment); } } } return null; } } value = $value; } public static function createMaybe() : self { return self::create(self::MAYBE); } public static function createFromBoolean(bool $value) : self { return self::create($value ? self::YES : self::NO); } private static function create(int $value) : self { return self::$registry[$value] = self::$registry[$value] ?? new self($value); } /** * Return true if its known for sure that the value is true */ public function yes() : bool { return $this->value === self::YES; } /** * Return true if its not known for sure whether the value is true or false */ public function maybe() : bool { return $this->value === self::MAYBE; } /** * Return true if its known for sure that the value is false */ public function no() : bool { return $this->value === self::NO; } /** * Return string representation of the value. * "Yes" when the value is true, "No" when its false, "Maybe" when its not known for sure whether its true or false. */ public function describe() : string { static $labels = [self::NO => 'No', self::MAYBE => 'Maybe', self::YES => 'Yes']; return $labels[$this->value]; } } get($name); } } get('TRAVIS') !== \false; } public function getCiName() : string { return CiDetector::CI_TRAVIS; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createFromBoolean($this->env->getString('TRAVIS_PULL_REQUEST') !== 'false'); } public function getBuildNumber() : string { return $this->env->getString('TRAVIS_JOB_NUMBER'); } public function getBuildUrl() : string { return \sprintf('%s/%s/jobs/%s', self::TRAVIS_BASE_URL, $this->env->get('TRAVIS_REPO_SLUG'), $this->env->get('TRAVIS_JOB_ID')); } public function getGitCommit() : string { return $this->env->getString('TRAVIS_COMMIT'); } public function getGitBranch() : string { if ($this->isPullRequest()->no()) { return $this->env->getString('TRAVIS_BRANCH'); } // If the build is for PR, return name of the branch with the PR, not the target PR branch // https://github.com/travis-ci/travis-ci/issues/6652 return $this->env->getString('TRAVIS_PULL_REQUEST_BRANCH'); } public function getRepositoryName() : string { return $this->env->getString('TRAVIS_REPO_SLUG'); } public function getRepositoryUrl() : string { return ''; // unsupported } } get('TEAMCITY_VERSION') !== \false; } public function getCiName() : string { return CiDetector::CI_TEAMCITY; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createMaybe(); } public function getBuildNumber() : string { return $this->env->getString('BUILD_NUMBER'); } public function getBuildUrl() : string { return ''; // unsupported } public function getGitCommit() : string { return $this->env->getString('BUILD_VCS_NUMBER'); } public function getGitBranch() : string { return ''; // unsupported } public function getRepositoryName() : string { return ''; // unsupported } public function getRepositoryUrl() : string { return ''; // unsupported } } get('CIRCLECI') !== \false; } public function getCiName() : string { return CiDetector::CI_CIRCLE; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createFromBoolean($this->env->getString('CI_PULL_REQUEST') !== ''); } public function getBuildNumber() : string { return $this->env->getString('CIRCLE_BUILD_NUM'); } public function getBuildUrl() : string { return $this->env->getString('CIRCLE_BUILD_URL'); } public function getGitCommit() : string { return $this->env->getString('CIRCLE_SHA1'); } public function getGitBranch() : string { return $this->env->getString('CIRCLE_BRANCH'); } public function getRepositoryName() : string { return \sprintf('%s/%s', $this->env->getString('CIRCLE_PROJECT_USERNAME'), $this->env->getString('CIRCLE_PROJECT_REPONAME')); } public function getRepositoryUrl() : string { return $this->env->getString('CIRCLE_REPOSITORY_URL'); } } env = $env; } } get('CODEBUILD_CI') !== \false; } public function getCiName() : string { return CiDetector::CI_AWS_CODEBUILD; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createFromBoolean(\mb_strpos($this->env->getString('CODEBUILD_WEBHOOK_EVENT'), 'PULL_REQUEST') === 0); } public function getBuildNumber() : string { return $this->env->getString('CODEBUILD_BUILD_NUMBER'); } public function getBuildUrl() : string { return $this->env->getString('CODEBUILD_BUILD_URL'); } public function getGitCommit() : string { return $this->env->getString('CODEBUILD_RESOLVED_SOURCE_VERSION'); } public function getGitBranch() : string { $gitReference = $this->env->getString('CODEBUILD_WEBHOOK_HEAD_REF'); return \preg_replace('~^refs/heads/~', '', $gitReference) ?? ''; } public function getRepositoryName() : string { return ''; // unsupported } public function getRepositoryUrl() : string { return $this->env->getString('CODEBUILD_SOURCE_REPO_URL'); } } get('GITLAB_CI') !== \false; } public function getCiName() : string { return CiDetector::CI_GITLAB; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createFromBoolean($this->env->get('CI_MERGE_REQUEST_ID') !== \false || $this->env->get('CI_EXTERNAL_PULL_REQUEST_IID') !== \false); } public function getBuildNumber() : string { return !empty($this->env->getString('CI_JOB_ID')) ? $this->env->getString('CI_JOB_ID') : $this->env->getString('CI_BUILD_ID'); } public function getBuildUrl() : string { return $this->env->getString('CI_PROJECT_URL') . '/builds/' . $this->getBuildNumber(); } public function getGitCommit() : string { return !empty($this->env->getString('CI_COMMIT_SHA')) ? $this->env->getString('CI_COMMIT_SHA') : $this->env->getString('CI_BUILD_REF'); } public function getGitBranch() : string { return !empty($this->env->getString('CI_COMMIT_REF_NAME')) ? $this->env->getString('CI_COMMIT_REF_NAME') : $this->env->getString('CI_BUILD_REF_NAME'); } public function getRepositoryName() : string { return $this->env->getString('CI_PROJECT_PATH'); } public function getRepositoryUrl() : string { return !empty($this->env->getString('CI_REPOSITORY_URL')) ? $this->env->getString('CI_REPOSITORY_URL') : $this->env->getString('CI_BUILD_REPO'); } } get('GITHUB_ACTIONS') !== \false; } public function getCiName() : string { return CiDetector::CI_GITHUB_ACTIONS; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createFromBoolean($this->env->getString('GITHUB_EVENT_NAME') === 'pull_request'); } public function getBuildNumber() : string { return $this->env->getString('GITHUB_RUN_NUMBER'); } public function getBuildUrl() : string { return \sprintf('%s/%s/commit/%s/checks', self::GITHUB_BASE_URL, $this->env->get('GITHUB_REPOSITORY'), $this->env->get('GITHUB_SHA')); } public function getGitCommit() : string { return $this->env->getString('GITHUB_SHA'); } public function getGitBranch() : string { $prBranch = $this->env->getString('GITHUB_HEAD_REF'); if ($this->isPullRequest()->no() || empty($prBranch)) { $gitReference = $this->env->getString('GITHUB_REF'); return \preg_replace('~^refs/heads/~', '', $gitReference) ?? ''; } return $prBranch; } public function getRepositoryName() : string { return $this->env->getString('GITHUB_REPOSITORY'); } public function getRepositoryUrl() : string { return \sprintf('%s/%s', self::GITHUB_BASE_URL, $this->env->get('GITHUB_REPOSITORY')); } } get('CI') === 'drone'; } public function getCiName() : string { return CiDetector::CI_DRONE; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createFromBoolean($this->env->getString('DRONE_PULL_REQUEST') !== ''); } public function getBuildNumber() : string { return $this->env->getString('DRONE_BUILD_NUMBER'); } public function getBuildUrl() : string { return $this->env->getString('DRONE_BUILD_LINK'); } public function getGitCommit() : string { return $this->env->getString('DRONE_COMMIT_SHA'); } public function getGitBranch() : string { return $this->env->getString('DRONE_COMMIT_BRANCH'); } public function getRepositoryName() : string { return $this->env->getString('DRONE_REPO'); } public function getRepositoryUrl() : string { return $this->env->getString('DRONE_REPO_LINK'); } } get('BUDDY') !== \false; } public function getCiName() : string { return CiDetector::CI_BUDDY; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createFromBoolean($this->env->getString('BUDDY_EXECUTION_PULL_REQUEST_ID') !== ''); } public function getBuildNumber() : string { return $this->env->getString('BUDDY_EXECUTION_ID'); } public function getBuildUrl() : string { return $this->env->getString('BUDDY_EXECUTION_URL'); } public function getGitCommit() : string { return $this->env->getString('BUDDY_EXECUTION_REVISION'); } public function getGitBranch() : string { $prBranch = $this->env->getString('BUDDY_EXECUTION_PULL_REQUEST_HEAD_BRANCH'); if ($this->isPullRequest()->no() || empty($prBranch)) { return $this->env->getString('BUDDY_EXECUTION_BRANCH'); } return $prBranch; } public function getRepositoryName() : string { return $this->env->getString('BUDDY_REPO_SLUG'); } public function getRepositoryUrl() : string { return $this->env->getString('BUDDY_SCM_URL'); } } get('JENKINS_URL') !== \false; } public function getCiName() : string { return CiDetector::CI_JENKINS; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createMaybe(); } public function getBuildNumber() : string { return $this->env->getString('BUILD_NUMBER'); } public function getBuildUrl() : string { return $this->env->getString('BUILD_URL'); } public function getGitCommit() : string { return $this->env->getString('GIT_COMMIT'); } public function getGitBranch() : string { return $this->env->getString('GIT_BRANCH'); } public function getRepositoryName() : string { return ''; // unsupported } public function getRepositoryUrl() : string { return $this->env->getString('GIT_URL'); } } get('CONTINUOUSPHP') === 'continuousphp'; } public function getCiName() : string { return CiDetector::CI_CONTINUOUSPHP; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createFromBoolean($this->env->getString('CPHP_PR_ID') !== ''); } public function getBuildNumber() : string { return $this->env->getString('CPHP_BUILD_ID'); } public function getBuildUrl() : string { return $this->env->getString(''); } public function getGitCommit() : string { return $this->env->getString('CPHP_GIT_COMMIT'); } public function getGitBranch() : string { $gitReference = $this->env->getString('CPHP_GIT_REF'); return \preg_replace('~^refs/heads/~', '', $gitReference) ?? ''; } public function getRepositoryName() : string { return ''; // unsupported } public function getRepositoryUrl() : string { return $this->env->getString(''); } } get('CI_NAME') === 'codeship'; } public function getCiName() : string { return CiDetector::CI_CODESHIP; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createFromBoolean($this->env->getString('CI_PULL_REQUEST') !== 'false'); } public function getBuildNumber() : string { return $this->env->getString('CI_BUILD_NUMBER'); } public function getBuildUrl() : string { return $this->env->getString('CI_BUILD_URL'); } public function getGitCommit() : string { return $this->env->getString('COMMIT_ID'); } public function getGitBranch() : string { return $this->env->getString('CI_BRANCH'); } public function getRepositoryName() : string { return $this->env->getString('CI_REPO_NAME'); } public function getRepositoryUrl() : string { return ''; // unsupported } } get('WERCKER') === 'true'; } public function getCiName() : string { return CiDetector::CI_WERCKER; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createMaybe(); } public function getBuildNumber() : string { return $this->env->getString('WERCKER_RUN_ID'); } public function getBuildUrl() : string { return $this->env->getString('WERCKER_RUN_URL'); } public function getGitCommit() : string { return $this->env->getString('WERCKER_GIT_COMMIT'); } public function getGitBranch() : string { return $this->env->getString('WERCKER_GIT_BRANCH'); } public function getRepositoryName() : string { return $this->env->getString('WERCKER_GIT_OWNER') . '/' . $this->env->getString('WERCKER_GIT_REPOSITORY'); } public function getRepositoryUrl() : string { return ''; // unsupported } } get('APPVEYOR') === 'True'; } public function getCiName() : string { return CiDetector::CI_APPVEYOR; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createFromBoolean($this->env->getString('APPVEYOR_PULL_REQUEST_NUMBER') !== ''); } public function getBuildNumber() : string { return $this->env->getString('APPVEYOR_BUILD_NUMBER'); } public function getBuildUrl() : string { return \sprintf('%s/project/%s/%s/builds/%s', $this->env->get('APPVEYOR_URL'), $this->env->get('APPVEYOR_ACCOUNT_NAME'), $this->env->get('APPVEYOR_PROJECT_SLUG'), $this->env->get('APPVEYOR_BUILD_ID')); } public function getGitCommit() : string { return $this->env->getString('APPVEYOR_REPO_COMMIT'); } public function getGitBranch() : string { $prBranch = $this->env->getString('APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH'); if ($this->isPullRequest()->no() || empty($prBranch)) { return $this->env->getString('APPVEYOR_REPO_BRANCH'); } return $prBranch; } public function getRepositoryName() : string { return $this->env->getString('APPVEYOR_REPO_NAME'); } public function getRepositoryUrl() : string { return ''; // unsupported } } get('BITBUCKET_COMMIT') !== \false; } public function getCiName() : string { return CiDetector::CI_BITBUCKET_PIPELINES; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createFromBoolean($this->env->getString('BITBUCKET_PR_ID') !== ''); } public function getBuildNumber() : string { return $this->env->getString('BITBUCKET_BUILD_NUMBER'); } public function getBuildUrl() : string { return \sprintf('%s/addon/pipelines/home#!/results/%s', $this->env->get('BITBUCKET_GIT_HTTP_ORIGIN'), $this->env->get('BITBUCKET_BUILD_NUMBER')); } public function getGitCommit() : string { return $this->env->getString('BITBUCKET_COMMIT'); } public function getGitBranch() : string { return $this->env->getString('BITBUCKET_BRANCH'); } public function getRepositoryName() : string { return $this->env->getString('BITBUCKET_REPO_FULL_NAME'); } public function getRepositoryUrl() : string { return \sprintf('ssh://%s', $this->env->get('BITBUCKET_GIT_SSH_ORIGIN')); } } get('bamboo_buildKey') !== \false; } public function getCiName() : string { return CiDetector::CI_BAMBOO; } public function isPullRequest() : TrinaryLogic { return TrinaryLogic::createFromBoolean($this->env->get('bamboo_repository_pr_key') !== \false); } public function getBuildNumber() : string { return $this->env->getString('bamboo_buildNumber'); } public function getBuildUrl() : string { return $this->env->getString('bamboo_resultsUrl'); } public function getGitCommit() : string { return $this->env->getString('bamboo_planRepository_revision'); } public function getGitBranch() : string { $prBranch = $this->env->getString('bamboo_repository_pr_sourceBranch'); if ($this->isPullRequest()->no() || empty($prBranch)) { return $this->env->getString('bamboo_planRepository_branch'); } return $prBranch; } public function getRepositoryName() : string { return $this->env->getString('bamboo_planRepository_name'); } public function getRepositoryUrl() : string { return $this->env->getString('bamboo_planRepository_repositoryUrl'); } } MIT License Copyright (c) 2016 Ondřej Mirtes Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------- The PHP License, version 3.01 Copyright (c) 1999 - 2019 The PHP Group. All rights reserved. -------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without modification, is permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name "PHP" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact group@php.net. 4. Products derived from this software may not be called "PHP", nor may "PHP" appear in their name, without prior written permission from group@php.net. You may indicate that your software works in conjunction with PHP by saying "Foo for PHP" instead of calling it "PHP Foo" or "phpfoo" 5. The PHP Group may publish revised and/or new versions of the license from time to time. Each version will be given a distinguishing version number. Once covered code has been published under a particular version of the license, you may always continue to use it under the terms of that version. You may also choose to use such covered code under the terms of any subsequent version of the license published by the PHP Group. No one other than the PHP Group has the right to modify the terms applicable to covered code created under this License. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes PHP software, freely available from ". THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------- This software consists of voluntary contributions made by many individuals on behalf of the PHP Group. The PHP Group can be contacted via Email at group@php.net. For more information on the PHP Group and the PHP project, please see . PHP includes the Zend Engine, freely available at . */ #[\Since('8.4')] public function getHooks(): array { } #[\Since('8.4')] public function hasHook(PropertyHookType $type): bool { } #[\Since('8.4')] public function getHook(PropertyHookType $type): ?ReflectionMethod { } #[\Since('8.4')] public function isFinal(): bool { } /** * @var int * @cvalue ZEND_ACC_STATIC */ #[\Since('8.2')] #[\Until('8.4')] public const IS_STATIC = UNKNOWN; /** @cvalue ZEND_ACC_STATIC */ #[\Since('8.4')] public const int IS_STATIC = UNKNOWN; /** * @var int * @cvalue ZEND_ACC_READONLY */ #[\Since('8.2')] #[\Until('8.4')] public const IS_READONLY = UNKNOWN; /** @cvalue ZEND_ACC_READONLY */ #[\Since('8.4')] public const int IS_READONLY = UNKNOWN; /** * @var int * @cvalue ZEND_ACC_PUBLIC */ #[\Since('8.2')] #[\Until('8.4')] public const IS_PUBLIC = UNKNOWN; /** @cvalue ZEND_ACC_PUBLIC */ #[\Since('8.4')] public const int IS_PUBLIC = UNKNOWN; /** * @var int * @cvalue ZEND_ACC_PROTECTED */ #[\Since('8.2')] #[\Until('8.4')] public const IS_PROTECTED = UNKNOWN; /** @cvalue ZEND_ACC_PROTECTED */ #[\Since('8.4')] public const int IS_PROTECTED = UNKNOWN; /** * @var int * @cvalue ZEND_ACC_PRIVATE */ #[\Since('8.2')] #[\Until('8.4')] public const IS_PRIVATE = UNKNOWN; /** @cvalue ZEND_ACC_PRIVATE */ #[\Since('8.4')] public const int IS_PRIVATE = UNKNOWN; /** @cvalue ZEND_ACC_ABSTRACT */ #[\Since('8.4')] public const int IS_ABSTRACT = UNKNOWN; /** @cvalue ZEND_ACC_PROTECTED_SET */ #[\Since('8.4')] public const int IS_PROTECTED_SET = UNKNOWN; /** @cvalue ZEND_ACC_PRIVATE_SET */ #[\Since('8.4')] public const int IS_PRIVATE_SET = UNKNOWN; /** @cvalue ZEND_ACC_FINAL */ #[\Since('8.4')] public const int IS_FINAL = UNKNOWN; }|false * @refcount 1 */ #[\Since('8.1')] function ftp_mlsd(\FTP\Connection $ftp, string $directory): array|false { }|false * @refcount 1 */ #[\Since('8.1')] function ftp_nlist(\FTP\Connection $ftp, string $directory): array|false { }|null * @refcount 1 */ #[\Since('8.1')] function ftp_raw(\FTP\Connection $ftp, string $command): ?array { }|false * @refcount 1 */ #[\Since('8.1')] function ftp_rawlist(\FTP\Connection $ftp, string $directory, bool $recursive = false): array|false { }|false * @refcount 1 */ #[\Since('8.1')] function pg_fetch_array(\PgSql\Result $result, ?int $row = null, int $mode = PGSQL_BOTH): array|false { } * @refcount 1 */ #[\Since('8.1')] function pg_get_notify(\PgSql\Connection $connection, int $mode = PGSQL_ASSOC): array|false { }|false * @refcount 1 */ #[\Since('8.1')] function pg_meta_data(\PgSql\Connection $connection, string $table_name, bool $extended = false): array|false { } * @refcount 1 */ #[\Since('8.1')] function pg_fetch_all(\PgSql\Result $result, int $mode = PGSQL_ASSOC): array { }|string|false * @refcount 1 */ #[\Since('8.1')] #[\Until('8.4')] function pg_select(\PgSql\Connection $connection, string $table_name, array $conditions, int $flags = PGSQL_DML_EXEC, int $mode = PGSQL_ASSOC): array|string|false { } /** * @return array|string|false * @refcount 1 */ #[\Since('8.4')] function pg_select(\PgSql\Connection $connection, string $table_name, array $conditions = [], int $flags = PGSQL_DML_EXEC, int $mode = PGSQL_ASSOC): array|string|false { } * @refcount 1 */ #[\Since('8.4')] function pg_jit(?\PgSql\Connection $connection = null): array { } * @refcount 1 */ #[\Since('8.1')] function pg_version(?\PgSql\Connection $connection = null): array { }|false * @refcount 1 */ #[\Since('8.1')] function pg_convert(\PgSql\Connection $connection, string $table_name, array $values, int $flags = 0): array|false { }|false * @refcount 1 */ #[\Since('8.1')] function pg_fetch_row(\PgSql\Result $result, ?int $row = null, int $mode = PGSQL_NUM): array|false { }|false * @refcount 1 */ #[\Since('8.1')] function pg_fetch_assoc(\PgSql\Result $result, ?int $row = null): array|false { }|false * @refcount 1 */ #[\Since('8.1')] function pg_copy_to(\PgSql\Connection $connection, string $table_name, string $separator = "\t", string $null_as = "\\\\N"): array|false { } * @refcount 1 */ #[\Since('8.1')] function pg_fetch_all_columns(\PgSql\Result $result, int $field = 0): array { }= 58 /** * @tentative-return-type * @return void */ public function setRestrictionLevel(int $level) { } #endif #[\Since('8.4')] public function setAllowedChars(string $pattern, int $patternOptions = 0): void { } /** * @var int * @cvalue USPOOF_SINGLE_SCRIPT_CONFUSABLE */ #[\Since('8.2')] #[\Until('8.4')] public const SINGLE_SCRIPT_CONFUSABLE = UNKNOWN; /** @cvalue USPOOF_SINGLE_SCRIPT_CONFUSABLE */ #[\Since('8.4')] public const int SINGLE_SCRIPT_CONFUSABLE = UNKNOWN; /** * @var int * @cvalue USPOOF_MIXED_SCRIPT_CONFUSABLE */ #[\Since('8.2')] #[\Until('8.4')] public const MIXED_SCRIPT_CONFUSABLE = UNKNOWN; /** @cvalue USPOOF_MIXED_SCRIPT_CONFUSABLE */ #[\Since('8.4')] public const int MIXED_SCRIPT_CONFUSABLE = UNKNOWN; /** * @var int * @cvalue USPOOF_WHOLE_SCRIPT_CONFUSABLE */ #[\Since('8.2')] #[\Until('8.4')] public const WHOLE_SCRIPT_CONFUSABLE = UNKNOWN; /** @cvalue USPOOF_WHOLE_SCRIPT_CONFUSABLE */ #[\Since('8.4')] public const int WHOLE_SCRIPT_CONFUSABLE = UNKNOWN; /** * @var int * @cvalue USPOOF_ANY_CASE */ #[\Since('8.2')] #[\Until('8.4')] public const ANY_CASE = UNKNOWN; /** @cvalue USPOOF_ANY_CASE */ #[\Since('8.4')] public const int ANY_CASE = UNKNOWN; /** * @var int * @cvalue USPOOF_SINGLE_SCRIPT */ #[\Since('8.2')] #[\Until('8.4')] public const SINGLE_SCRIPT = UNKNOWN; /** @cvalue USPOOF_SINGLE_SCRIPT */ #[\Since('8.4')] public const int SINGLE_SCRIPT = UNKNOWN; /** * @var int * @cvalue USPOOF_INVISIBLE */ #[\Since('8.2')] #[\Until('8.4')] public const INVISIBLE = UNKNOWN; /** @cvalue USPOOF_INVISIBLE */ #[\Since('8.4')] public const int INVISIBLE = UNKNOWN; /** * @var int * @cvalue USPOOF_CHAR_LIMIT */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_LIMIT = UNKNOWN; /** @cvalue USPOOF_CHAR_LIMIT */ #[\Since('8.4')] public const int CHAR_LIMIT = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 58 /** * @var int * @cvalue USPOOF_ASCII */ #[\Since('8.2')] #[\Until('8.4')] public const ASCII = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 58 /** @cvalue USPOOF_ASCII */ #[\Since('8.4')] public const int ASCII = UNKNOWN; /** * @var int * @cvalue USPOOF_HIGHLY_RESTRICTIVE */ #[\Since('8.2')] #[\Until('8.4')] public const HIGHLY_RESTRICTIVE = UNKNOWN; /** @cvalue USPOOF_HIGHLY_RESTRICTIVE */ #[\Since('8.4')] public const int HIGHLY_RESTRICTIVE = UNKNOWN; /** * @var int * @cvalue USPOOF_MODERATELY_RESTRICTIVE */ #[\Since('8.2')] #[\Until('8.4')] public const MODERATELY_RESTRICTIVE = UNKNOWN; /** @cvalue USPOOF_MODERATELY_RESTRICTIVE */ #[\Since('8.4')] public const int MODERATELY_RESTRICTIVE = UNKNOWN; /** * @var int * @cvalue USPOOF_MINIMALLY_RESTRICTIVE */ #[\Since('8.2')] #[\Until('8.4')] public const MINIMALLY_RESTRICTIVE = UNKNOWN; /** @cvalue USPOOF_MINIMALLY_RESTRICTIVE */ #[\Since('8.4')] public const int MINIMALLY_RESTRICTIVE = UNKNOWN; /** * @var int * @cvalue USPOOF_UNRESTRICTIVE */ #[\Since('8.2')] #[\Until('8.4')] public const UNRESTRICTIVE = UNKNOWN; /** @cvalue USPOOF_UNRESTRICTIVE */ #[\Since('8.4')] public const int UNRESTRICTIVE = UNKNOWN; /** * @var int * @cvalue USPOOF_SINGLE_SCRIPT_RESTRICTIVE */ #[\Since('8.2')] #[\Until('8.4')] public const SINGLE_SCRIPT_RESTRICTIVE = UNKNOWN; /** @cvalue USPOOF_SINGLE_SCRIPT_RESTRICTIVE */ #[\Since('8.4')] public const int SINGLE_SCRIPT_RESTRICTIVE = UNKNOWN; /** * @var int * @cvalue USPOOF_MIXED_NUMBERS */ #[\Since('8.3')] #[\Until('8.4')] public const MIXED_NUMBERS = UNKNOWN; /** @cvalue USPOOF_MIXED_NUMBERS */ #[\Since('8.4')] public const int MIXED_NUMBERS = UNKNOWN; #endif #if U_ICU_VERSION_MAJOR_NUM >= 62 /** * @var int * @cvalue USPOOF_HIDDEN_OVERLAY */ #[\Since('8.3')] #[\Until('8.4')] public const HIDDEN_OVERLAY = UNKNOWN; #endif #if U_ICU_VERSION_MAJOR_NUM >= 62 /** @cvalue USPOOF_HIDDEN_OVERLAY */ #[\Since('8.4')] public const int HIDDEN_OVERLAY = UNKNOWN; #endif /** @cvalue USET_IGNORE_SPACE */ #[\Since('8.4')] public const int IGNORE_SPACE = UNKNOWN; /** @cvalue USET_CASE_INSENSITIVE */ #[\Since('8.4')] public const int CASE_INSENSITIVE = UNKNOWN; /** @cvalue USET_ADD_CASE_MAPPINGS */ #[\Since('8.4')] public const int ADD_CASE_MAPPINGS = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 73 /** @cvalue USET_SIMPLE_CASE_INSENSITIVE */ #[\Since('8.4')] public const int SIMPLE_CASE_INSENSITIVE = UNKNOWN; }= 52 function intltz_get_windows_id(string $timezoneId): string|false { }= 53 /** * @var int * @cvalue UNUM_CURRENCY_ACCOUNTING */ #[\Since('8.2')] #[\Until('8.4')] public const CURRENCY_ACCOUNTING = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 53 /** @cvalue UNUM_CURRENCY_ACCOUNTING */ #[\Since('8.4')] public const int CURRENCY_ACCOUNTING = UNKNOWN; #endif /** * @var int * @cvalue UNUM_DEFAULT */ #[\Since('8.2')] #[\Until('8.4')] public const DEFAULT_STYLE = UNKNOWN; #endif /** @cvalue UNUM_DEFAULT */ #[\Since('8.4')] public const int DEFAULT_STYLE = UNKNOWN; /* UNumberFormatRoundingMode */ /** * @var int * @cvalue UNUM_ROUND_CEILING */ #[\Since('8.2')] #[\Until('8.4')] public const ROUND_CEILING = UNKNOWN; /* UNumberFormatRoundingMode */ /** @cvalue UNUM_ROUND_CEILING */ #[\Since('8.4')] public const int ROUND_CEILING = UNKNOWN; /** * @var int * @cvalue UNUM_ROUND_FLOOR */ #[\Since('8.2')] #[\Until('8.4')] public const ROUND_FLOOR = UNKNOWN; /** @cvalue UNUM_ROUND_FLOOR */ #[\Since('8.4')] public const int ROUND_FLOOR = UNKNOWN; /** * @var int * @cvalue UNUM_ROUND_DOWN */ #[\Since('8.2')] #[\Until('8.4')] public const ROUND_DOWN = UNKNOWN; /** @cvalue UNUM_ROUND_DOWN */ #[\Since('8.4')] public const int ROUND_DOWN = UNKNOWN; /** * @var int * @cvalue UNUM_ROUND_UP */ #[\Since('8.2')] #[\Until('8.4')] public const ROUND_UP = UNKNOWN; /** @cvalue UNUM_ROUND_UP */ #[\Since('8.4')] public const int ROUND_UP = UNKNOWN; /** @cvalue UNUM_ROUND_DOWN */ #[\Since('8.4')] public const int ROUND_TOWARD_ZERO = UNKNOWN; /** @cvalue UNUM_ROUND_UP */ #[\Since('8.4')] public const int ROUND_AWAY_FROM_ZERO = UNKNOWN; /** * @var int * @cvalue UNUM_ROUND_HALFEVEN */ #[\Since('8.2')] #[\Until('8.4')] public const ROUND_HALFEVEN = UNKNOWN; /** @cvalue UNUM_ROUND_HALFEVEN */ #[\Since('8.4')] public const int ROUND_HALFEVEN = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 69 /** @cvalue UNUM_ROUND_HALF_ODD */ #[\Since('8.4')] public const int ROUND_HALFODD = UNKNOWN; /** * @var int * @cvalue UNUM_ROUND_HALFDOWN */ #[\Since('8.2')] #[\Until('8.4')] public const ROUND_HALFDOWN = UNKNOWN; #endif /** @cvalue UNUM_ROUND_HALFDOWN */ #[\Since('8.4')] public const int ROUND_HALFDOWN = UNKNOWN; /** * @var int * @cvalue UNUM_ROUND_HALFUP */ #[\Since('8.2')] #[\Until('8.4')] public const ROUND_HALFUP = UNKNOWN; /** @cvalue UNUM_ROUND_HALFUP */ #[\Since('8.4')] public const int ROUND_HALFUP = UNKNOWN; /* UNumberFormatPadPosition */ /** * @var int * @cvalue UNUM_PAD_BEFORE_PREFIX */ #[\Since('8.2')] #[\Until('8.4')] public const PAD_BEFORE_PREFIX = UNKNOWN; /* UNumberFormatPadPosition */ /** @cvalue UNUM_PAD_BEFORE_PREFIX */ #[\Since('8.4')] public const int PAD_BEFORE_PREFIX = UNKNOWN; /** * @var int * @cvalue UNUM_PAD_AFTER_PREFIX */ #[\Since('8.2')] #[\Until('8.4')] public const PAD_AFTER_PREFIX = UNKNOWN; /** @cvalue UNUM_PAD_AFTER_PREFIX */ #[\Since('8.4')] public const int PAD_AFTER_PREFIX = UNKNOWN; /** * @var int * @cvalue UNUM_PAD_BEFORE_SUFFIX */ #[\Since('8.2')] #[\Until('8.4')] public const PAD_BEFORE_SUFFIX = UNKNOWN; /** @cvalue UNUM_PAD_BEFORE_SUFFIX */ #[\Since('8.4')] public const int PAD_BEFORE_SUFFIX = UNKNOWN; /** * @var int * @cvalue UNUM_PAD_AFTER_SUFFIX */ #[\Since('8.2')] #[\Until('8.4')] public const PAD_AFTER_SUFFIX = UNKNOWN; /** @cvalue UNUM_PAD_AFTER_SUFFIX */ #[\Since('8.4')] public const int PAD_AFTER_SUFFIX = UNKNOWN; /* UNumberFormatAttribute */ /** * @var int * @cvalue UNUM_PARSE_INT_ONLY */ #[\Since('8.2')] #[\Until('8.4')] public const PARSE_INT_ONLY = UNKNOWN; /* UNumberFormatAttribute */ /** @cvalue UNUM_PARSE_INT_ONLY */ #[\Since('8.4')] public const int PARSE_INT_ONLY = UNKNOWN; /** * @var int * @cvalue UNUM_GROUPING_USED */ #[\Since('8.2')] #[\Until('8.4')] public const GROUPING_USED = UNKNOWN; /** @cvalue UNUM_GROUPING_USED */ #[\Since('8.4')] public const int GROUPING_USED = UNKNOWN; /** * @var int * @cvalue UNUM_DECIMAL_ALWAYS_SHOWN */ #[\Since('8.2')] #[\Until('8.4')] public const DECIMAL_ALWAYS_SHOWN = UNKNOWN; /** @cvalue UNUM_DECIMAL_ALWAYS_SHOWN */ #[\Since('8.4')] public const int DECIMAL_ALWAYS_SHOWN = UNKNOWN; /** * @var int * @cvalue UNUM_MAX_INTEGER_DIGITS */ #[\Since('8.2')] #[\Until('8.4')] public const MAX_INTEGER_DIGITS = UNKNOWN; /** @cvalue UNUM_MAX_INTEGER_DIGITS */ #[\Since('8.4')] public const int MAX_INTEGER_DIGITS = UNKNOWN; /** * @var int * @cvalue UNUM_MIN_INTEGER_DIGITS */ #[\Since('8.2')] #[\Until('8.4')] public const MIN_INTEGER_DIGITS = UNKNOWN; /** @cvalue UNUM_MIN_INTEGER_DIGITS */ #[\Since('8.4')] public const int MIN_INTEGER_DIGITS = UNKNOWN; /** * @var int * @cvalue UNUM_INTEGER_DIGITS */ #[\Since('8.2')] #[\Until('8.4')] public const INTEGER_DIGITS = UNKNOWN; /** @cvalue UNUM_INTEGER_DIGITS */ #[\Since('8.4')] public const int INTEGER_DIGITS = UNKNOWN; /** * @var int * @cvalue UNUM_MAX_FRACTION_DIGITS */ #[\Since('8.2')] #[\Until('8.4')] public const MAX_FRACTION_DIGITS = UNKNOWN; /** @cvalue UNUM_MAX_FRACTION_DIGITS */ #[\Since('8.4')] public const int MAX_FRACTION_DIGITS = UNKNOWN; /** * @var int * @cvalue UNUM_MIN_FRACTION_DIGITS */ #[\Since('8.2')] #[\Until('8.4')] public const MIN_FRACTION_DIGITS = UNKNOWN; /** @cvalue UNUM_MIN_FRACTION_DIGITS */ #[\Since('8.4')] public const int MIN_FRACTION_DIGITS = UNKNOWN; /** * @var int * @cvalue UNUM_FRACTION_DIGITS */ #[\Since('8.2')] #[\Until('8.4')] public const FRACTION_DIGITS = UNKNOWN; /** @cvalue UNUM_FRACTION_DIGITS */ #[\Since('8.4')] public const int FRACTION_DIGITS = UNKNOWN; /** * @var int * @cvalue UNUM_MULTIPLIER */ #[\Since('8.2')] #[\Until('8.4')] public const MULTIPLIER = UNKNOWN; /** @cvalue UNUM_MULTIPLIER */ #[\Since('8.4')] public const int MULTIPLIER = UNKNOWN; /** * @var int * @cvalue UNUM_GROUPING_SIZE */ #[\Since('8.2')] #[\Until('8.4')] public const GROUPING_SIZE = UNKNOWN; /** @cvalue UNUM_GROUPING_SIZE */ #[\Since('8.4')] public const int GROUPING_SIZE = UNKNOWN; /** * @var int * @cvalue UNUM_ROUNDING_MODE */ #[\Since('8.2')] #[\Until('8.4')] public const ROUNDING_MODE = UNKNOWN; /** @cvalue UNUM_ROUNDING_MODE */ #[\Since('8.4')] public const int ROUNDING_MODE = UNKNOWN; /** * @var int * @cvalue UNUM_ROUNDING_INCREMENT */ #[\Since('8.2')] #[\Until('8.4')] public const ROUNDING_INCREMENT = UNKNOWN; /** @cvalue UNUM_ROUNDING_INCREMENT */ #[\Since('8.4')] public const int ROUNDING_INCREMENT = UNKNOWN; /** * @var int * @cvalue UNUM_FORMAT_WIDTH */ #[\Since('8.2')] #[\Until('8.4')] public const FORMAT_WIDTH = UNKNOWN; /** @cvalue UNUM_FORMAT_WIDTH */ #[\Since('8.4')] public const int FORMAT_WIDTH = UNKNOWN; /** * @var int * @cvalue UNUM_PADDING_POSITION */ #[\Since('8.2')] #[\Until('8.4')] public const PADDING_POSITION = UNKNOWN; /** @cvalue UNUM_PADDING_POSITION */ #[\Since('8.4')] public const int PADDING_POSITION = UNKNOWN; /** * @var int * @cvalue UNUM_SECONDARY_GROUPING_SIZE */ #[\Since('8.2')] #[\Until('8.4')] public const SECONDARY_GROUPING_SIZE = UNKNOWN; /** @cvalue UNUM_SECONDARY_GROUPING_SIZE */ #[\Since('8.4')] public const int SECONDARY_GROUPING_SIZE = UNKNOWN; /** * @var int * @cvalue UNUM_SIGNIFICANT_DIGITS_USED */ #[\Since('8.2')] #[\Until('8.4')] public const SIGNIFICANT_DIGITS_USED = UNKNOWN; /** @cvalue UNUM_SIGNIFICANT_DIGITS_USED */ #[\Since('8.4')] public const int SIGNIFICANT_DIGITS_USED = UNKNOWN; /** * @var int * @cvalue UNUM_MIN_SIGNIFICANT_DIGITS */ #[\Since('8.2')] #[\Until('8.4')] public const MIN_SIGNIFICANT_DIGITS = UNKNOWN; /** @cvalue UNUM_MIN_SIGNIFICANT_DIGITS */ #[\Since('8.4')] public const int MIN_SIGNIFICANT_DIGITS = UNKNOWN; /** * @var int * @cvalue UNUM_MAX_SIGNIFICANT_DIGITS */ #[\Since('8.2')] #[\Until('8.4')] public const MAX_SIGNIFICANT_DIGITS = UNKNOWN; /** @cvalue UNUM_MAX_SIGNIFICANT_DIGITS */ #[\Since('8.4')] public const int MAX_SIGNIFICANT_DIGITS = UNKNOWN; /** * @var int * @cvalue UNUM_LENIENT_PARSE */ #[\Since('8.2')] #[\Until('8.4')] public const LENIENT_PARSE = UNKNOWN; /** @cvalue UNUM_LENIENT_PARSE */ #[\Since('8.4')] public const int LENIENT_PARSE = UNKNOWN; /* UNumberFormatTextAttribute */ /** * @var int * @cvalue UNUM_POSITIVE_PREFIX */ #[\Since('8.2')] #[\Until('8.4')] public const POSITIVE_PREFIX = UNKNOWN; /* UNumberFormatTextAttribute */ /** @cvalue UNUM_POSITIVE_PREFIX */ #[\Since('8.4')] public const int POSITIVE_PREFIX = UNKNOWN; /** * @var int * @cvalue UNUM_POSITIVE_SUFFIX */ #[\Since('8.2')] #[\Until('8.4')] public const POSITIVE_SUFFIX = UNKNOWN; /** @cvalue UNUM_POSITIVE_SUFFIX */ #[\Since('8.4')] public const int POSITIVE_SUFFIX = UNKNOWN; /** * @var int * @cvalue UNUM_NEGATIVE_PREFIX */ #[\Since('8.2')] #[\Until('8.4')] public const NEGATIVE_PREFIX = UNKNOWN; /** @cvalue UNUM_NEGATIVE_PREFIX */ #[\Since('8.4')] public const int NEGATIVE_PREFIX = UNKNOWN; /** * @var int * @cvalue UNUM_NEGATIVE_SUFFIX */ #[\Since('8.2')] #[\Until('8.4')] public const NEGATIVE_SUFFIX = UNKNOWN; /** @cvalue UNUM_NEGATIVE_SUFFIX */ #[\Since('8.4')] public const int NEGATIVE_SUFFIX = UNKNOWN; /** * @var int * @cvalue UNUM_PADDING_CHARACTER */ #[\Since('8.2')] #[\Until('8.4')] public const PADDING_CHARACTER = UNKNOWN; /** @cvalue UNUM_PADDING_CHARACTER */ #[\Since('8.4')] public const int PADDING_CHARACTER = UNKNOWN; /** * @var int * @cvalue UNUM_CURRENCY_CODE */ #[\Since('8.2')] #[\Until('8.4')] public const CURRENCY_CODE = UNKNOWN; /** @cvalue UNUM_CURRENCY_CODE */ #[\Since('8.4')] public const int CURRENCY_CODE = UNKNOWN; /** * @var int * @cvalue UNUM_DEFAULT_RULESET */ #[\Since('8.2')] #[\Until('8.4')] public const DEFAULT_RULESET = UNKNOWN; /** @cvalue UNUM_DEFAULT_RULESET */ #[\Since('8.4')] public const int DEFAULT_RULESET = UNKNOWN; /** * @var int * @cvalue UNUM_PUBLIC_RULESETS */ #[\Since('8.2')] #[\Until('8.4')] public const PUBLIC_RULESETS = UNKNOWN; /** @cvalue UNUM_PUBLIC_RULESETS */ #[\Since('8.4')] public const int PUBLIC_RULESETS = UNKNOWN; /* UNumberFormatSymbol */ /** * @var int * @cvalue UNUM_DECIMAL_SEPARATOR_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const DECIMAL_SEPARATOR_SYMBOL = UNKNOWN; /* UNumberFormatSymbol */ /** @cvalue UNUM_DECIMAL_SEPARATOR_SYMBOL */ #[\Since('8.4')] public const int DECIMAL_SEPARATOR_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_GROUPING_SEPARATOR_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const GROUPING_SEPARATOR_SYMBOL = UNKNOWN; /** @cvalue UNUM_GROUPING_SEPARATOR_SYMBOL */ #[\Since('8.4')] public const int GROUPING_SEPARATOR_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_PATTERN_SEPARATOR_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const PATTERN_SEPARATOR_SYMBOL = UNKNOWN; /** @cvalue UNUM_PATTERN_SEPARATOR_SYMBOL */ #[\Since('8.4')] public const int PATTERN_SEPARATOR_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_PERCENT_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const PERCENT_SYMBOL = UNKNOWN; /** @cvalue UNUM_PERCENT_SYMBOL */ #[\Since('8.4')] public const int PERCENT_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_ZERO_DIGIT_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const ZERO_DIGIT_SYMBOL = UNKNOWN; /** @cvalue UNUM_ZERO_DIGIT_SYMBOL */ #[\Since('8.4')] public const int ZERO_DIGIT_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_DIGIT_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const DIGIT_SYMBOL = UNKNOWN; /** @cvalue UNUM_DIGIT_SYMBOL */ #[\Since('8.4')] public const int DIGIT_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_MINUS_SIGN_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const MINUS_SIGN_SYMBOL = UNKNOWN; /** @cvalue UNUM_MINUS_SIGN_SYMBOL */ #[\Since('8.4')] public const int MINUS_SIGN_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_PLUS_SIGN_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const PLUS_SIGN_SYMBOL = UNKNOWN; /** @cvalue UNUM_PLUS_SIGN_SYMBOL */ #[\Since('8.4')] public const int PLUS_SIGN_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_CURRENCY_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const CURRENCY_SYMBOL = UNKNOWN; /** @cvalue UNUM_CURRENCY_SYMBOL */ #[\Since('8.4')] public const int CURRENCY_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_INTL_CURRENCY_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const INTL_CURRENCY_SYMBOL = UNKNOWN; /** @cvalue UNUM_INTL_CURRENCY_SYMBOL */ #[\Since('8.4')] public const int INTL_CURRENCY_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_MONETARY_SEPARATOR_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const MONETARY_SEPARATOR_SYMBOL = UNKNOWN; /** @cvalue UNUM_MONETARY_SEPARATOR_SYMBOL */ #[\Since('8.4')] public const int MONETARY_SEPARATOR_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_EXPONENTIAL_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const EXPONENTIAL_SYMBOL = UNKNOWN; /** @cvalue UNUM_EXPONENTIAL_SYMBOL */ #[\Since('8.4')] public const int EXPONENTIAL_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_PERMILL_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const PERMILL_SYMBOL = UNKNOWN; /** @cvalue UNUM_PERMILL_SYMBOL */ #[\Since('8.4')] public const int PERMILL_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_PAD_ESCAPE_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const PAD_ESCAPE_SYMBOL = UNKNOWN; /** @cvalue UNUM_PAD_ESCAPE_SYMBOL */ #[\Since('8.4')] public const int PAD_ESCAPE_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_INFINITY_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const INFINITY_SYMBOL = UNKNOWN; /** @cvalue UNUM_INFINITY_SYMBOL */ #[\Since('8.4')] public const int INFINITY_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_NAN_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const NAN_SYMBOL = UNKNOWN; /** @cvalue UNUM_NAN_SYMBOL */ #[\Since('8.4')] public const int NAN_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_SIGNIFICANT_DIGIT_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const SIGNIFICANT_DIGIT_SYMBOL = UNKNOWN; /** @cvalue UNUM_SIGNIFICANT_DIGIT_SYMBOL */ #[\Since('8.4')] public const int SIGNIFICANT_DIGIT_SYMBOL = UNKNOWN; /** * @var int * @cvalue UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const MONETARY_GROUPING_SEPARATOR_SYMBOL = UNKNOWN; /** @cvalue UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL */ #[\Since('8.4')] public const int MONETARY_GROUPING_SEPARATOR_SYMBOL = UNKNOWN; /** * @var int * @cvalue FORMAT_TYPE_DEFAULT */ #[\Since('8.2')] #[\Until('8.4')] public const TYPE_DEFAULT = UNKNOWN; /** @cvalue FORMAT_TYPE_DEFAULT */ #[\Since('8.4')] public const int TYPE_DEFAULT = UNKNOWN; /** * @var int * @cvalue FORMAT_TYPE_INT32 */ #[\Since('8.2')] #[\Until('8.4')] public const TYPE_INT32 = UNKNOWN; /** @cvalue FORMAT_TYPE_INT32 */ #[\Since('8.4')] public const int TYPE_INT32 = UNKNOWN; /** * @var int * @cvalue FORMAT_TYPE_INT64 */ #[\Since('8.2')] #[\Until('8.4')] public const TYPE_INT64 = UNKNOWN; /** @cvalue FORMAT_TYPE_INT64 */ #[\Since('8.4')] public const int TYPE_INT64 = UNKNOWN; /** * @var int * @cvalue FORMAT_TYPE_DOUBLE */ #[\Since('8.2')] #[\Until('8.4')] public const TYPE_DOUBLE = UNKNOWN; /** @cvalue FORMAT_TYPE_DOUBLE */ #[\Since('8.4')] public const int TYPE_DOUBLE = UNKNOWN; /** * @var int * @deprecated * @cvalue FORMAT_TYPE_CURRENCY */ #[\Since('8.3')] #[\Until('8.4')] public const TYPE_CURRENCY = UNKNOWN; /** * @cvalue FORMAT_TYPE_CURRENCY */ #[\Deprecated(since: '8.3')] #[\Since('8.4')] public const int TYPE_CURRENCY = UNKNOWN; }= 56 /** * @tentative-return-type * @alias normalizer_get_raw_decomposition * @return (string | null) */ public static function getRawDecomposition(string $string, int $form = Normalizer::FORM_C) { } /** * @var int * @cvalue NORMALIZER_FORM_D */ #[\Since('8.2')] #[\Until('8.4')] public const FORM_D = UNKNOWN; /** @cvalue NORMALIZER_FORM_D */ #[\Since('8.4')] public const int FORM_D = UNKNOWN; /** * @var int * @cvalue NORMALIZER_NFD */ #[\Since('8.2')] #[\Until('8.4')] public const NFD = UNKNOWN; /** @cvalue NORMALIZER_NFD */ #[\Since('8.4')] public const int NFD = UNKNOWN; /** * @var int * @cvalue NORMALIZER_FORM_KD */ #[\Since('8.2')] #[\Until('8.4')] public const FORM_KD = UNKNOWN; /** @cvalue NORMALIZER_FORM_KD */ #[\Since('8.4')] public const int FORM_KD = UNKNOWN; /** * @var int * @cvalue NORMALIZER_NFKD */ #[\Since('8.2')] #[\Until('8.4')] public const NFKD = UNKNOWN; /** @cvalue NORMALIZER_NFKD */ #[\Since('8.4')] public const int NFKD = UNKNOWN; /** * @var int * @cvalue NORMALIZER_FORM_C */ #[\Since('8.2')] #[\Until('8.4')] public const FORM_C = UNKNOWN; /** @cvalue NORMALIZER_FORM_C */ #[\Since('8.4')] public const int FORM_C = UNKNOWN; /** * @var int * @cvalue NORMALIZER_NFC */ #[\Since('8.2')] #[\Until('8.4')] public const NFC = UNKNOWN; /** @cvalue NORMALIZER_NFC */ #[\Since('8.4')] public const int NFC = UNKNOWN; /** * @var int * @cvalue NORMALIZER_FORM_KC */ #[\Since('8.2')] #[\Until('8.4')] public const FORM_KC = UNKNOWN; /** @cvalue NORMALIZER_FORM_KC */ #[\Since('8.4')] public const int FORM_KC = UNKNOWN; /** * @var int * @cvalue NORMALIZER_NFKC */ #[\Since('8.2')] #[\Until('8.4')] public const NFKC = UNKNOWN; /** @cvalue NORMALIZER_NFKC */ #[\Since('8.4')] public const int NFKC = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 56 /** * @var int * @cvalue NORMALIZER_FORM_KC_CF */ #[\Since('8.2')] #[\Until('8.4')] public const FORM_KC_CF = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 56 /** @cvalue NORMALIZER_FORM_KC_CF */ #[\Since('8.4')] public const int FORM_KC_CF = UNKNOWN; /** * @var int * @cvalue NORMALIZER_NFKC_CF */ #[\Since('8.2')] #[\Until('8.4')] public const NFKC_CF = UNKNOWN; /** @cvalue NORMALIZER_NFKC_CF */ #[\Since('8.4')] public const int NFKC_CF = UNKNOWN; }= 74 #[\Since('8.4')] function intltz_get_iana_id(string $timezoneId): string|false { }= 56 function normalizer_get_raw_decomposition(string $string, int $form = Normalizer::FORM_C): ?string { }= 52 /** * @tentative-return-type * @return (int | string | null) */ public static function getBidiPairedBracket(int|string $codepoint) { } #endif /** * @tentative-return-type * @return (int | null) */ public static function getBlockCode(int|string $codepoint) { } /** * @tentative-return-type * @return (int | null) */ public static function getCombiningClass(int|string $codepoint) { } /** * @tentative-return-type * @return (string | false | null) */ public static function getFC_NFKC_Closure(int|string $codepoint) { } /** * @tentative-return-type * @return int */ public static function getIntPropertyMaxValue(int $property) { } /** * @tentative-return-type * @return int */ public static function getIntPropertyMinValue(int $property) { } /** * @tentative-return-type * @return (int | null) */ public static function getIntPropertyValue(int|string $codepoint, int $property) { } /** * @tentative-return-type * @return (float | null) */ public static function getNumericValue(int|string $codepoint) { } /** * @tentative-return-type * @return int */ public static function getPropertyEnum(string $alias) { } /** * @tentative-return-type * @return (string | false) */ public static function getPropertyName(int $property, int $type = IntlChar::LONG_PROPERTY_NAME) { } /** * @tentative-return-type * @return int */ public static function getPropertyValueEnum(int $property, string $name) { } /** * @tentative-return-type * @return (string | false) */ public static function getPropertyValueName(int $property, int $value, int $type = IntlChar::LONG_PROPERTY_NAME) { } /** * @tentative-return-type * @return array */ public static function getUnicodeVersion() { } /** * @tentative-return-type * @return (bool | null) */ public static function isalnum(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isalpha(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isbase(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isblank(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function iscntrl(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isdefined(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isdigit(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isgraph(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isIDIgnorable(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isIDPart(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isIDStart(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isISOControl(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isJavaIDPart(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isJavaIDStart(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isJavaSpaceChar(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function islower(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isMirrored(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isprint(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function ispunct(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isspace(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function istitle(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isUAlphabetic(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isULowercase(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isupper(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isUUppercase(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isUWhiteSpace(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isWhitespace(int|string $codepoint) { } /** * @tentative-return-type * @return (bool | null) */ public static function isxdigit(int|string $codepoint) { } /** * @tentative-return-type * @return (int | null) */ public static function ord(int|string $character) { } /** * @tentative-return-type * @return (int | string | null) */ public static function tolower(int|string $codepoint) { } /** * @tentative-return-type * @return (int | string | null) */ public static function totitle(int|string $codepoint) { } /** * @tentative-return-type * @return (int | string | null) */ public static function toupper(int|string $codepoint) { } /** * @var string * @cvalue U_UNICODE_VERSION */ #[\Since('8.2')] #[\Until('8.4')] public const UNICODE_VERSION = UNKNOWN; /** @cvalue U_UNICODE_VERSION */ #[\Since('8.4')] public const string UNICODE_VERSION = UNKNOWN; /** * @var int * @cvalue UCHAR_MIN_VALUE */ #[\Since('8.2')] #[\Until('8.4')] public const CODEPOINT_MIN = UNKNOWN; /** @cvalue UCHAR_MIN_VALUE */ #[\Since('8.4')] public const int CODEPOINT_MIN = UNKNOWN; /** * @var int * @cvalue UCHAR_MAX_VALUE */ #[\Since('8.2')] #[\Until('8.4')] public const CODEPOINT_MAX = UNKNOWN; /** @cvalue UCHAR_MAX_VALUE */ #[\Since('8.4')] public const int CODEPOINT_MAX = UNKNOWN; /** * @var float * @cvalue U_NO_NUMERIC_VALUE */ #[\Since('8.2')] #[\Until('8.4')] public const NO_NUMERIC_VALUE = UNKNOWN; /** @cvalue U_NO_NUMERIC_VALUE */ #[\Since('8.4')] public const float NO_NUMERIC_VALUE = UNKNOWN; /** * @var int * @cvalue UCHAR_ALPHABETIC */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_ALPHABETIC = UNKNOWN; /** @cvalue UCHAR_ALPHABETIC */ #[\Since('8.4')] public const int PROPERTY_ALPHABETIC = UNKNOWN; /** * @var int * @cvalue UCHAR_BINARY_START */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_BINARY_START = UNKNOWN; /** @cvalue UCHAR_BINARY_START */ #[\Since('8.4')] public const int PROPERTY_BINARY_START = UNKNOWN; /** * @var int * @cvalue UCHAR_ASCII_HEX_DIGIT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_ASCII_HEX_DIGIT = UNKNOWN; /** @cvalue UCHAR_ASCII_HEX_DIGIT */ #[\Since('8.4')] public const int PROPERTY_ASCII_HEX_DIGIT = UNKNOWN; /** * @var int * @cvalue UCHAR_BIDI_CONTROL */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_BIDI_CONTROL = UNKNOWN; /** @cvalue UCHAR_BIDI_CONTROL */ #[\Since('8.4')] public const int PROPERTY_BIDI_CONTROL = UNKNOWN; /** * @var int * @cvalue UCHAR_BIDI_MIRRORED */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_BIDI_MIRRORED = UNKNOWN; /** @cvalue UCHAR_BIDI_MIRRORED */ #[\Since('8.4')] public const int PROPERTY_BIDI_MIRRORED = UNKNOWN; /** * @var int * @cvalue UCHAR_DASH */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_DASH = UNKNOWN; /** @cvalue UCHAR_DASH */ #[\Since('8.4')] public const int PROPERTY_DASH = UNKNOWN; /** * @var int * @cvalue UCHAR_DEFAULT_IGNORABLE_CODE_POINT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_DEFAULT_IGNORABLE_CODE_POINT = UNKNOWN; /** @cvalue UCHAR_DEFAULT_IGNORABLE_CODE_POINT */ #[\Since('8.4')] public const int PROPERTY_DEFAULT_IGNORABLE_CODE_POINT = UNKNOWN; /** * @var int * @cvalue UCHAR_DEPRECATED */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_DEPRECATED = UNKNOWN; /** @cvalue UCHAR_DEPRECATED */ #[\Since('8.4')] public const int PROPERTY_DEPRECATED = UNKNOWN; /** * @var int * @cvalue UCHAR_DIACRITIC */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_DIACRITIC = UNKNOWN; /** @cvalue UCHAR_DIACRITIC */ #[\Since('8.4')] public const int PROPERTY_DIACRITIC = UNKNOWN; /** * @var int * @cvalue UCHAR_EXTENDER */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_EXTENDER = UNKNOWN; /** @cvalue UCHAR_EXTENDER */ #[\Since('8.4')] public const int PROPERTY_EXTENDER = UNKNOWN; /** * @var int * @cvalue UCHAR_FULL_COMPOSITION_EXCLUSION */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_FULL_COMPOSITION_EXCLUSION = UNKNOWN; /** @cvalue UCHAR_FULL_COMPOSITION_EXCLUSION */ #[\Since('8.4')] public const int PROPERTY_FULL_COMPOSITION_EXCLUSION = UNKNOWN; /** * @var int * @cvalue UCHAR_GRAPHEME_BASE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_GRAPHEME_BASE = UNKNOWN; /** @cvalue UCHAR_GRAPHEME_BASE */ #[\Since('8.4')] public const int PROPERTY_GRAPHEME_BASE = UNKNOWN; /** * @var int * @cvalue UCHAR_GRAPHEME_EXTEND */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_GRAPHEME_EXTEND = UNKNOWN; /** @cvalue UCHAR_GRAPHEME_EXTEND */ #[\Since('8.4')] public const int PROPERTY_GRAPHEME_EXTEND = UNKNOWN; /** * @var int * @cvalue UCHAR_GRAPHEME_LINK */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_GRAPHEME_LINK = UNKNOWN; /** @cvalue UCHAR_GRAPHEME_LINK */ #[\Since('8.4')] public const int PROPERTY_GRAPHEME_LINK = UNKNOWN; /** * @var int * @cvalue UCHAR_HEX_DIGIT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_HEX_DIGIT = UNKNOWN; /** @cvalue UCHAR_HEX_DIGIT */ #[\Since('8.4')] public const int PROPERTY_HEX_DIGIT = UNKNOWN; /** * @var int * @cvalue UCHAR_HYPHEN */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_HYPHEN = UNKNOWN; /** @cvalue UCHAR_HYPHEN */ #[\Since('8.4')] public const int PROPERTY_HYPHEN = UNKNOWN; /** * @var int * @cvalue UCHAR_ID_CONTINUE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_ID_CONTINUE = UNKNOWN; /** @cvalue UCHAR_ID_CONTINUE */ #[\Since('8.4')] public const int PROPERTY_ID_CONTINUE = UNKNOWN; /** * @var int * @cvalue UCHAR_ID_START */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_ID_START = UNKNOWN; /** @cvalue UCHAR_ID_START */ #[\Since('8.4')] public const int PROPERTY_ID_START = UNKNOWN; /** * @var int * @cvalue UCHAR_IDEOGRAPHIC */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_IDEOGRAPHIC = UNKNOWN; /** @cvalue UCHAR_IDEOGRAPHIC */ #[\Since('8.4')] public const int PROPERTY_IDEOGRAPHIC = UNKNOWN; /** * @var int * @cvalue UCHAR_IDS_BINARY_OPERATOR */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_IDS_BINARY_OPERATOR = UNKNOWN; /** @cvalue UCHAR_IDS_BINARY_OPERATOR */ #[\Since('8.4')] public const int PROPERTY_IDS_BINARY_OPERATOR = UNKNOWN; /** * @var int * @cvalue UCHAR_IDS_TRINARY_OPERATOR */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_IDS_TRINARY_OPERATOR = UNKNOWN; /** @cvalue UCHAR_IDS_TRINARY_OPERATOR */ #[\Since('8.4')] public const int PROPERTY_IDS_TRINARY_OPERATOR = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 74 /** @cvalue UCHAR_IDS_UNARY_OPERATOR */ #[\Since('8.4')] public const int PROPERTY_IDS_UNARY_OPERATOR = UNKNOWN; /** @cvalue UCHAR_ID_COMPAT_MATH_START */ #[\Since('8.4')] public const int PROPERTY_ID_COMPAT_MATH_START = UNKNOWN; /** @cvalue UCHAR_ID_COMPAT_MATH_CONTINUE */ #[\Since('8.4')] public const int PROPERTY_ID_COMPAT_MATH_CONTINUE = UNKNOWN; /** * @var int * @cvalue UCHAR_JOIN_CONTROL */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_JOIN_CONTROL = UNKNOWN; #endif /** @cvalue UCHAR_JOIN_CONTROL */ #[\Since('8.4')] public const int PROPERTY_JOIN_CONTROL = UNKNOWN; /** * @var int * @cvalue UCHAR_LOGICAL_ORDER_EXCEPTION */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_LOGICAL_ORDER_EXCEPTION = UNKNOWN; /** @cvalue UCHAR_LOGICAL_ORDER_EXCEPTION */ #[\Since('8.4')] public const int PROPERTY_LOGICAL_ORDER_EXCEPTION = UNKNOWN; /** * @var int * @cvalue UCHAR_LOWERCASE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_LOWERCASE = UNKNOWN; /** @cvalue UCHAR_LOWERCASE */ #[\Since('8.4')] public const int PROPERTY_LOWERCASE = UNKNOWN; /** * @var int * @cvalue UCHAR_MATH */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_MATH = UNKNOWN; /** @cvalue UCHAR_MATH */ #[\Since('8.4')] public const int PROPERTY_MATH = UNKNOWN; /** * @var int * @cvalue UCHAR_NONCHARACTER_CODE_POINT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_NONCHARACTER_CODE_POINT = UNKNOWN; /** @cvalue UCHAR_NONCHARACTER_CODE_POINT */ #[\Since('8.4')] public const int PROPERTY_NONCHARACTER_CODE_POINT = UNKNOWN; /** * @var int * @cvalue UCHAR_QUOTATION_MARK */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_QUOTATION_MARK = UNKNOWN; /** @cvalue UCHAR_QUOTATION_MARK */ #[\Since('8.4')] public const int PROPERTY_QUOTATION_MARK = UNKNOWN; /** * @var int * @cvalue UCHAR_RADICAL */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_RADICAL = UNKNOWN; /** @cvalue UCHAR_RADICAL */ #[\Since('8.4')] public const int PROPERTY_RADICAL = UNKNOWN; /** * @var int * @cvalue UCHAR_SOFT_DOTTED */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_SOFT_DOTTED = UNKNOWN; /** @cvalue UCHAR_SOFT_DOTTED */ #[\Since('8.4')] public const int PROPERTY_SOFT_DOTTED = UNKNOWN; /** * @var int * @cvalue UCHAR_TERMINAL_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_TERMINAL_PUNCTUATION = UNKNOWN; /** @cvalue UCHAR_TERMINAL_PUNCTUATION */ #[\Since('8.4')] public const int PROPERTY_TERMINAL_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue UCHAR_UNIFIED_IDEOGRAPH */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_UNIFIED_IDEOGRAPH = UNKNOWN; /** @cvalue UCHAR_UNIFIED_IDEOGRAPH */ #[\Since('8.4')] public const int PROPERTY_UNIFIED_IDEOGRAPH = UNKNOWN; /** * @var int * @cvalue UCHAR_UPPERCASE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_UPPERCASE = UNKNOWN; /** @cvalue UCHAR_UPPERCASE */ #[\Since('8.4')] public const int PROPERTY_UPPERCASE = UNKNOWN; /** * @var int * @cvalue UCHAR_WHITE_SPACE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_WHITE_SPACE = UNKNOWN; /** @cvalue UCHAR_WHITE_SPACE */ #[\Since('8.4')] public const int PROPERTY_WHITE_SPACE = UNKNOWN; /** * @var int * @cvalue UCHAR_XID_CONTINUE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_XID_CONTINUE = UNKNOWN; /** @cvalue UCHAR_XID_CONTINUE */ #[\Since('8.4')] public const int PROPERTY_XID_CONTINUE = UNKNOWN; /** * @var int * @cvalue UCHAR_XID_START */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_XID_START = UNKNOWN; /** @cvalue UCHAR_XID_START */ #[\Since('8.4')] public const int PROPERTY_XID_START = UNKNOWN; /** * @var int * @cvalue UCHAR_CASE_SENSITIVE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_CASE_SENSITIVE = UNKNOWN; /** @cvalue UCHAR_CASE_SENSITIVE */ #[\Since('8.4')] public const int PROPERTY_CASE_SENSITIVE = UNKNOWN; /** * @var int * @cvalue UCHAR_S_TERM */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_S_TERM = UNKNOWN; /** @cvalue UCHAR_S_TERM */ #[\Since('8.4')] public const int PROPERTY_S_TERM = UNKNOWN; /** * @var int * @cvalue UCHAR_VARIATION_SELECTOR */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_VARIATION_SELECTOR = UNKNOWN; /** @cvalue UCHAR_VARIATION_SELECTOR */ #[\Since('8.4')] public const int PROPERTY_VARIATION_SELECTOR = UNKNOWN; /** * @var int * @cvalue UCHAR_NFD_INERT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_NFD_INERT = UNKNOWN; /** @cvalue UCHAR_NFD_INERT */ #[\Since('8.4')] public const int PROPERTY_NFD_INERT = UNKNOWN; /** * @var int * @cvalue UCHAR_NFKD_INERT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_NFKD_INERT = UNKNOWN; /** @cvalue UCHAR_NFKD_INERT */ #[\Since('8.4')] public const int PROPERTY_NFKD_INERT = UNKNOWN; /** * @var int * @cvalue UCHAR_NFC_INERT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_NFC_INERT = UNKNOWN; /** @cvalue UCHAR_NFC_INERT */ #[\Since('8.4')] public const int PROPERTY_NFC_INERT = UNKNOWN; /** * @var int * @cvalue UCHAR_NFKC_INERT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_NFKC_INERT = UNKNOWN; /** @cvalue UCHAR_NFKC_INERT */ #[\Since('8.4')] public const int PROPERTY_NFKC_INERT = UNKNOWN; /** * @var int * @cvalue UCHAR_SEGMENT_STARTER */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_SEGMENT_STARTER = UNKNOWN; /** @cvalue UCHAR_SEGMENT_STARTER */ #[\Since('8.4')] public const int PROPERTY_SEGMENT_STARTER = UNKNOWN; /** * @var int * @cvalue UCHAR_PATTERN_SYNTAX */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_PATTERN_SYNTAX = UNKNOWN; /** @cvalue UCHAR_PATTERN_SYNTAX */ #[\Since('8.4')] public const int PROPERTY_PATTERN_SYNTAX = UNKNOWN; /** * @var int * @cvalue UCHAR_PATTERN_WHITE_SPACE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_PATTERN_WHITE_SPACE = UNKNOWN; /** @cvalue UCHAR_PATTERN_WHITE_SPACE */ #[\Since('8.4')] public const int PROPERTY_PATTERN_WHITE_SPACE = UNKNOWN; /** * @var int * @cvalue UCHAR_POSIX_ALNUM */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_POSIX_ALNUM = UNKNOWN; /** @cvalue UCHAR_POSIX_ALNUM */ #[\Since('8.4')] public const int PROPERTY_POSIX_ALNUM = UNKNOWN; /** * @var int * @cvalue UCHAR_POSIX_BLANK */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_POSIX_BLANK = UNKNOWN; /** @cvalue UCHAR_POSIX_BLANK */ #[\Since('8.4')] public const int PROPERTY_POSIX_BLANK = UNKNOWN; /** * @var int * @cvalue UCHAR_POSIX_GRAPH */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_POSIX_GRAPH = UNKNOWN; /** @cvalue UCHAR_POSIX_GRAPH */ #[\Since('8.4')] public const int PROPERTY_POSIX_GRAPH = UNKNOWN; /** * @var int * @cvalue UCHAR_POSIX_PRINT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_POSIX_PRINT = UNKNOWN; /** @cvalue UCHAR_POSIX_PRINT */ #[\Since('8.4')] public const int PROPERTY_POSIX_PRINT = UNKNOWN; /** * @var int * @cvalue UCHAR_POSIX_XDIGIT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_POSIX_XDIGIT = UNKNOWN; /** @cvalue UCHAR_POSIX_XDIGIT */ #[\Since('8.4')] public const int PROPERTY_POSIX_XDIGIT = UNKNOWN; /** * @var int * @cvalue UCHAR_CASED */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_CASED = UNKNOWN; /** @cvalue UCHAR_CASED */ #[\Since('8.4')] public const int PROPERTY_CASED = UNKNOWN; /** * @var int * @cvalue UCHAR_CASE_IGNORABLE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_CASE_IGNORABLE = UNKNOWN; /** @cvalue UCHAR_CASE_IGNORABLE */ #[\Since('8.4')] public const int PROPERTY_CASE_IGNORABLE = UNKNOWN; /** * @var int * @cvalue UCHAR_CHANGES_WHEN_LOWERCASED */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_CHANGES_WHEN_LOWERCASED = UNKNOWN; /** @cvalue UCHAR_CHANGES_WHEN_LOWERCASED */ #[\Since('8.4')] public const int PROPERTY_CHANGES_WHEN_LOWERCASED = UNKNOWN; /** * @var int * @cvalue UCHAR_CHANGES_WHEN_UPPERCASED */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_CHANGES_WHEN_UPPERCASED = UNKNOWN; /** @cvalue UCHAR_CHANGES_WHEN_UPPERCASED */ #[\Since('8.4')] public const int PROPERTY_CHANGES_WHEN_UPPERCASED = UNKNOWN; /** * @var int * @cvalue UCHAR_CHANGES_WHEN_TITLECASED */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_CHANGES_WHEN_TITLECASED = UNKNOWN; /** @cvalue UCHAR_CHANGES_WHEN_TITLECASED */ #[\Since('8.4')] public const int PROPERTY_CHANGES_WHEN_TITLECASED = UNKNOWN; /** * @var int * @cvalue UCHAR_CHANGES_WHEN_CASEFOLDED */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_CHANGES_WHEN_CASEFOLDED = UNKNOWN; /** @cvalue UCHAR_CHANGES_WHEN_CASEFOLDED */ #[\Since('8.4')] public const int PROPERTY_CHANGES_WHEN_CASEFOLDED = UNKNOWN; /** * @var int * @cvalue UCHAR_CHANGES_WHEN_CASEMAPPED */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_CHANGES_WHEN_CASEMAPPED = UNKNOWN; /** @cvalue UCHAR_CHANGES_WHEN_CASEMAPPED */ #[\Since('8.4')] public const int PROPERTY_CHANGES_WHEN_CASEMAPPED = UNKNOWN; /** * @var int * @cvalue UCHAR_CHANGES_WHEN_NFKC_CASEFOLDED */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED = UNKNOWN; /** @cvalue UCHAR_CHANGES_WHEN_NFKC_CASEFOLDED */ #[\Since('8.4')] public const int PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED = UNKNOWN; /** * @var int * @cvalue UCHAR_BINARY_LIMIT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_BINARY_LIMIT = UNKNOWN; /** @cvalue UCHAR_BINARY_LIMIT */ #[\Since('8.4')] public const int PROPERTY_BINARY_LIMIT = UNKNOWN; /** * @var int * @cvalue UCHAR_BIDI_CLASS */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_BIDI_CLASS = UNKNOWN; /** @cvalue UCHAR_BIDI_CLASS */ #[\Since('8.4')] public const int PROPERTY_BIDI_CLASS = UNKNOWN; /** * @var int * @cvalue UCHAR_INT_START */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_INT_START = UNKNOWN; /** @cvalue UCHAR_INT_START */ #[\Since('8.4')] public const int PROPERTY_INT_START = UNKNOWN; /** * @var int * @cvalue UCHAR_BLOCK */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_BLOCK = UNKNOWN; /** @cvalue UCHAR_BLOCK */ #[\Since('8.4')] public const int PROPERTY_BLOCK = UNKNOWN; /** * @var int * @cvalue UCHAR_CANONICAL_COMBINING_CLASS */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_CANONICAL_COMBINING_CLASS = UNKNOWN; /** @cvalue UCHAR_CANONICAL_COMBINING_CLASS */ #[\Since('8.4')] public const int PROPERTY_CANONICAL_COMBINING_CLASS = UNKNOWN; /** * @var int * @cvalue UCHAR_DECOMPOSITION_TYPE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_DECOMPOSITION_TYPE = UNKNOWN; /** @cvalue UCHAR_DECOMPOSITION_TYPE */ #[\Since('8.4')] public const int PROPERTY_DECOMPOSITION_TYPE = UNKNOWN; /** * @var int * @cvalue UCHAR_EAST_ASIAN_WIDTH */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_EAST_ASIAN_WIDTH = UNKNOWN; /** @cvalue UCHAR_EAST_ASIAN_WIDTH */ #[\Since('8.4')] public const int PROPERTY_EAST_ASIAN_WIDTH = UNKNOWN; /** * @var int * @cvalue UCHAR_GENERAL_CATEGORY */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_GENERAL_CATEGORY = UNKNOWN; /** @cvalue UCHAR_GENERAL_CATEGORY */ #[\Since('8.4')] public const int PROPERTY_GENERAL_CATEGORY = UNKNOWN; /** * @var int * @cvalue UCHAR_JOINING_GROUP */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_JOINING_GROUP = UNKNOWN; /** @cvalue UCHAR_JOINING_GROUP */ #[\Since('8.4')] public const int PROPERTY_JOINING_GROUP = UNKNOWN; /** * @var int * @cvalue UCHAR_JOINING_TYPE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_JOINING_TYPE = UNKNOWN; /** @cvalue UCHAR_JOINING_TYPE */ #[\Since('8.4')] public const int PROPERTY_JOINING_TYPE = UNKNOWN; /** * @var int * @cvalue UCHAR_LINE_BREAK */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_LINE_BREAK = UNKNOWN; /** @cvalue UCHAR_LINE_BREAK */ #[\Since('8.4')] public const int PROPERTY_LINE_BREAK = UNKNOWN; /** * @var int * @cvalue UCHAR_NUMERIC_TYPE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_NUMERIC_TYPE = UNKNOWN; /** @cvalue UCHAR_NUMERIC_TYPE */ #[\Since('8.4')] public const int PROPERTY_NUMERIC_TYPE = UNKNOWN; /** * @var int * @cvalue UCHAR_SCRIPT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_SCRIPT = UNKNOWN; /** @cvalue UCHAR_SCRIPT */ #[\Since('8.4')] public const int PROPERTY_SCRIPT = UNKNOWN; /** * @var int * @cvalue UCHAR_HANGUL_SYLLABLE_TYPE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_HANGUL_SYLLABLE_TYPE = UNKNOWN; /** @cvalue UCHAR_HANGUL_SYLLABLE_TYPE */ #[\Since('8.4')] public const int PROPERTY_HANGUL_SYLLABLE_TYPE = UNKNOWN; /** * @var int * @cvalue UCHAR_NFD_QUICK_CHECK */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_NFD_QUICK_CHECK = UNKNOWN; /** @cvalue UCHAR_NFD_QUICK_CHECK */ #[\Since('8.4')] public const int PROPERTY_NFD_QUICK_CHECK = UNKNOWN; /** * @var int * @cvalue UCHAR_NFKD_QUICK_CHECK */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_NFKD_QUICK_CHECK = UNKNOWN; /** @cvalue UCHAR_NFKD_QUICK_CHECK */ #[\Since('8.4')] public const int PROPERTY_NFKD_QUICK_CHECK = UNKNOWN; /** * @var int * @cvalue UCHAR_NFC_QUICK_CHECK */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_NFC_QUICK_CHECK = UNKNOWN; /** @cvalue UCHAR_NFC_QUICK_CHECK */ #[\Since('8.4')] public const int PROPERTY_NFC_QUICK_CHECK = UNKNOWN; /** * @var int * @cvalue UCHAR_NFKC_QUICK_CHECK */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_NFKC_QUICK_CHECK = UNKNOWN; /** @cvalue UCHAR_NFKC_QUICK_CHECK */ #[\Since('8.4')] public const int PROPERTY_NFKC_QUICK_CHECK = UNKNOWN; /** * @var int * @cvalue UCHAR_LEAD_CANONICAL_COMBINING_CLASS */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_LEAD_CANONICAL_COMBINING_CLASS = UNKNOWN; /** @cvalue UCHAR_LEAD_CANONICAL_COMBINING_CLASS */ #[\Since('8.4')] public const int PROPERTY_LEAD_CANONICAL_COMBINING_CLASS = UNKNOWN; /** * @var int * @cvalue UCHAR_TRAIL_CANONICAL_COMBINING_CLASS */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS = UNKNOWN; /** @cvalue UCHAR_TRAIL_CANONICAL_COMBINING_CLASS */ #[\Since('8.4')] public const int PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS = UNKNOWN; /** * @var int * @cvalue UCHAR_GRAPHEME_CLUSTER_BREAK */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_GRAPHEME_CLUSTER_BREAK = UNKNOWN; /** @cvalue UCHAR_GRAPHEME_CLUSTER_BREAK */ #[\Since('8.4')] public const int PROPERTY_GRAPHEME_CLUSTER_BREAK = UNKNOWN; /** * @var int * @cvalue UCHAR_SENTENCE_BREAK */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_SENTENCE_BREAK = UNKNOWN; /** @cvalue UCHAR_SENTENCE_BREAK */ #[\Since('8.4')] public const int PROPERTY_SENTENCE_BREAK = UNKNOWN; /** * @var int * @cvalue UCHAR_WORD_BREAK */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_WORD_BREAK = UNKNOWN; /** @cvalue UCHAR_WORD_BREAK */ #[\Since('8.4')] public const int PROPERTY_WORD_BREAK = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 52 /** * @var int * @cvalue UCHAR_BIDI_PAIRED_BRACKET_TYPE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_BIDI_PAIRED_BRACKET_TYPE = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 52 /** @cvalue UCHAR_BIDI_PAIRED_BRACKET_TYPE */ #[\Since('8.4')] public const int PROPERTY_BIDI_PAIRED_BRACKET_TYPE = UNKNOWN; #endif /** * @var int * @cvalue UCHAR_INT_LIMIT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_INT_LIMIT = UNKNOWN; #endif /** @cvalue UCHAR_INT_LIMIT */ #[\Since('8.4')] public const int PROPERTY_INT_LIMIT = UNKNOWN; /** * @var int * @cvalue UCHAR_GENERAL_CATEGORY_MASK */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_GENERAL_CATEGORY_MASK = UNKNOWN; /** @cvalue UCHAR_GENERAL_CATEGORY_MASK */ #[\Since('8.4')] public const int PROPERTY_GENERAL_CATEGORY_MASK = UNKNOWN; /** * @var int * @cvalue UCHAR_MASK_START */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_MASK_START = UNKNOWN; /** @cvalue UCHAR_MASK_START */ #[\Since('8.4')] public const int PROPERTY_MASK_START = UNKNOWN; /** * @var int * @cvalue UCHAR_MASK_LIMIT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_MASK_LIMIT = UNKNOWN; /** @cvalue UCHAR_MASK_LIMIT */ #[\Since('8.4')] public const int PROPERTY_MASK_LIMIT = UNKNOWN; /** * @var int * @cvalue UCHAR_NUMERIC_VALUE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_NUMERIC_VALUE = UNKNOWN; /** @cvalue UCHAR_NUMERIC_VALUE */ #[\Since('8.4')] public const int PROPERTY_NUMERIC_VALUE = UNKNOWN; /** * @var int * @cvalue UCHAR_DOUBLE_START */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_DOUBLE_START = UNKNOWN; /** @cvalue UCHAR_DOUBLE_START */ #[\Since('8.4')] public const int PROPERTY_DOUBLE_START = UNKNOWN; /** * @var int * @cvalue UCHAR_DOUBLE_LIMIT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_DOUBLE_LIMIT = UNKNOWN; /** @cvalue UCHAR_DOUBLE_LIMIT */ #[\Since('8.4')] public const int PROPERTY_DOUBLE_LIMIT = UNKNOWN; /** * @var int * @cvalue UCHAR_AGE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_AGE = UNKNOWN; /** @cvalue UCHAR_AGE */ #[\Since('8.4')] public const int PROPERTY_AGE = UNKNOWN; /** * @var int * @cvalue UCHAR_STRING_START */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_STRING_START = UNKNOWN; /** @cvalue UCHAR_STRING_START */ #[\Since('8.4')] public const int PROPERTY_STRING_START = UNKNOWN; /** * @var int * @cvalue UCHAR_BIDI_MIRRORING_GLYPH */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_BIDI_MIRRORING_GLYPH = UNKNOWN; /** @cvalue UCHAR_BIDI_MIRRORING_GLYPH */ #[\Since('8.4')] public const int PROPERTY_BIDI_MIRRORING_GLYPH = UNKNOWN; /** * @var int * @cvalue UCHAR_CASE_FOLDING */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_CASE_FOLDING = UNKNOWN; /** @cvalue UCHAR_CASE_FOLDING */ #[\Since('8.4')] public const int PROPERTY_CASE_FOLDING = UNKNOWN; /** * @var int * @cvalue UCHAR_ISO_COMMENT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_ISO_COMMENT = UNKNOWN; /** @cvalue UCHAR_ISO_COMMENT */ #[\Since('8.4')] public const int PROPERTY_ISO_COMMENT = UNKNOWN; /** * @var int * @cvalue UCHAR_LOWERCASE_MAPPING */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_LOWERCASE_MAPPING = UNKNOWN; /** @cvalue UCHAR_LOWERCASE_MAPPING */ #[\Since('8.4')] public const int PROPERTY_LOWERCASE_MAPPING = UNKNOWN; /** * @var int * @cvalue UCHAR_NAME */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_NAME = UNKNOWN; /** @cvalue UCHAR_NAME */ #[\Since('8.4')] public const int PROPERTY_NAME = UNKNOWN; /** * @var int * @cvalue UCHAR_SIMPLE_CASE_FOLDING */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_SIMPLE_CASE_FOLDING = UNKNOWN; /** @cvalue UCHAR_SIMPLE_CASE_FOLDING */ #[\Since('8.4')] public const int PROPERTY_SIMPLE_CASE_FOLDING = UNKNOWN; /** * @var int * @cvalue UCHAR_SIMPLE_LOWERCASE_MAPPING */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_SIMPLE_LOWERCASE_MAPPING = UNKNOWN; /** @cvalue UCHAR_SIMPLE_LOWERCASE_MAPPING */ #[\Since('8.4')] public const int PROPERTY_SIMPLE_LOWERCASE_MAPPING = UNKNOWN; /** * @var int * @cvalue UCHAR_SIMPLE_TITLECASE_MAPPING */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_SIMPLE_TITLECASE_MAPPING = UNKNOWN; /** @cvalue UCHAR_SIMPLE_TITLECASE_MAPPING */ #[\Since('8.4')] public const int PROPERTY_SIMPLE_TITLECASE_MAPPING = UNKNOWN; /** * @var int * @cvalue UCHAR_SIMPLE_UPPERCASE_MAPPING */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_SIMPLE_UPPERCASE_MAPPING = UNKNOWN; /** @cvalue UCHAR_SIMPLE_UPPERCASE_MAPPING */ #[\Since('8.4')] public const int PROPERTY_SIMPLE_UPPERCASE_MAPPING = UNKNOWN; /** * @var int * @cvalue UCHAR_TITLECASE_MAPPING */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_TITLECASE_MAPPING = UNKNOWN; /** @cvalue UCHAR_TITLECASE_MAPPING */ #[\Since('8.4')] public const int PROPERTY_TITLECASE_MAPPING = UNKNOWN; /** * @var int * @cvalue UCHAR_UNICODE_1_NAME */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_UNICODE_1_NAME = UNKNOWN; /** @cvalue UCHAR_UNICODE_1_NAME */ #[\Since('8.4')] public const int PROPERTY_UNICODE_1_NAME = UNKNOWN; /** * @var int * @cvalue UCHAR_UPPERCASE_MAPPING */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_UPPERCASE_MAPPING = UNKNOWN; /** @cvalue UCHAR_UPPERCASE_MAPPING */ #[\Since('8.4')] public const int PROPERTY_UPPERCASE_MAPPING = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 52 /** * @var int * @cvalue UCHAR_BIDI_PAIRED_BRACKET */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_BIDI_PAIRED_BRACKET = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 52 /** @cvalue UCHAR_BIDI_PAIRED_BRACKET */ #[\Since('8.4')] public const int PROPERTY_BIDI_PAIRED_BRACKET = UNKNOWN; #endif /** * @var int * @cvalue UCHAR_STRING_LIMIT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_STRING_LIMIT = UNKNOWN; #endif /** @cvalue UCHAR_STRING_LIMIT */ #[\Since('8.4')] public const int PROPERTY_STRING_LIMIT = UNKNOWN; /** * @var int * @cvalue UCHAR_SCRIPT_EXTENSIONS */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_SCRIPT_EXTENSIONS = UNKNOWN; /** @cvalue UCHAR_SCRIPT_EXTENSIONS */ #[\Since('8.4')] public const int PROPERTY_SCRIPT_EXTENSIONS = UNKNOWN; /** * @var int * @cvalue UCHAR_OTHER_PROPERTY_START */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_OTHER_PROPERTY_START = UNKNOWN; /** @cvalue UCHAR_OTHER_PROPERTY_START */ #[\Since('8.4')] public const int PROPERTY_OTHER_PROPERTY_START = UNKNOWN; /** * @var int * @cvalue UCHAR_OTHER_PROPERTY_LIMIT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_OTHER_PROPERTY_LIMIT = UNKNOWN; /** @cvalue UCHAR_OTHER_PROPERTY_LIMIT */ #[\Since('8.4')] public const int PROPERTY_OTHER_PROPERTY_LIMIT = UNKNOWN; /** * @var int * @cvalue UCHAR_INVALID_CODE */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_INVALID_CODE = UNKNOWN; /** @cvalue UCHAR_INVALID_CODE */ #[\Since('8.4')] public const int PROPERTY_INVALID_CODE = UNKNOWN; /** * @var int * @cvalue U_UNASSIGNED */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_UNASSIGNED = UNKNOWN; /** @cvalue U_UNASSIGNED */ #[\Since('8.4')] public const int CHAR_CATEGORY_UNASSIGNED = UNKNOWN; /** * @var int * @cvalue U_GENERAL_OTHER_TYPES */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_GENERAL_OTHER_TYPES = UNKNOWN; /** @cvalue U_GENERAL_OTHER_TYPES */ #[\Since('8.4')] public const int CHAR_CATEGORY_GENERAL_OTHER_TYPES = UNKNOWN; /** * @var int * @cvalue U_UPPERCASE_LETTER */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_UPPERCASE_LETTER = UNKNOWN; /** @cvalue U_UPPERCASE_LETTER */ #[\Since('8.4')] public const int CHAR_CATEGORY_UPPERCASE_LETTER = UNKNOWN; /** * @var int * @cvalue U_LOWERCASE_LETTER */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_LOWERCASE_LETTER = UNKNOWN; /** @cvalue U_LOWERCASE_LETTER */ #[\Since('8.4')] public const int CHAR_CATEGORY_LOWERCASE_LETTER = UNKNOWN; /** * @var int * @cvalue U_TITLECASE_LETTER */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_TITLECASE_LETTER = UNKNOWN; /** @cvalue U_TITLECASE_LETTER */ #[\Since('8.4')] public const int CHAR_CATEGORY_TITLECASE_LETTER = UNKNOWN; /** * @var int * @cvalue U_MODIFIER_LETTER */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_MODIFIER_LETTER = UNKNOWN; /** @cvalue U_MODIFIER_LETTER */ #[\Since('8.4')] public const int CHAR_CATEGORY_MODIFIER_LETTER = UNKNOWN; /** * @var int * @cvalue U_OTHER_LETTER */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_OTHER_LETTER = UNKNOWN; /** @cvalue U_OTHER_LETTER */ #[\Since('8.4')] public const int CHAR_CATEGORY_OTHER_LETTER = UNKNOWN; /** * @var int * @cvalue U_NON_SPACING_MARK */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_NON_SPACING_MARK = UNKNOWN; /** @cvalue U_NON_SPACING_MARK */ #[\Since('8.4')] public const int CHAR_CATEGORY_NON_SPACING_MARK = UNKNOWN; /** * @var int * @cvalue U_ENCLOSING_MARK */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_ENCLOSING_MARK = UNKNOWN; /** @cvalue U_ENCLOSING_MARK */ #[\Since('8.4')] public const int CHAR_CATEGORY_ENCLOSING_MARK = UNKNOWN; /** * @var int * @cvalue U_COMBINING_SPACING_MARK */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_COMBINING_SPACING_MARK = UNKNOWN; /** @cvalue U_COMBINING_SPACING_MARK */ #[\Since('8.4')] public const int CHAR_CATEGORY_COMBINING_SPACING_MARK = UNKNOWN; /** * @var int * @cvalue U_DECIMAL_DIGIT_NUMBER */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER = UNKNOWN; /** @cvalue U_DECIMAL_DIGIT_NUMBER */ #[\Since('8.4')] public const int CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER = UNKNOWN; /** * @var int * @cvalue U_LETTER_NUMBER */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_LETTER_NUMBER = UNKNOWN; /** @cvalue U_LETTER_NUMBER */ #[\Since('8.4')] public const int CHAR_CATEGORY_LETTER_NUMBER = UNKNOWN; /** * @var int * @cvalue U_OTHER_NUMBER */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_OTHER_NUMBER = UNKNOWN; /** @cvalue U_OTHER_NUMBER */ #[\Since('8.4')] public const int CHAR_CATEGORY_OTHER_NUMBER = UNKNOWN; /** * @var int * @cvalue U_SPACE_SEPARATOR */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_SPACE_SEPARATOR = UNKNOWN; /** @cvalue U_SPACE_SEPARATOR */ #[\Since('8.4')] public const int CHAR_CATEGORY_SPACE_SEPARATOR = UNKNOWN; /** * @var int * @cvalue U_LINE_SEPARATOR */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_LINE_SEPARATOR = UNKNOWN; /** @cvalue U_LINE_SEPARATOR */ #[\Since('8.4')] public const int CHAR_CATEGORY_LINE_SEPARATOR = UNKNOWN; /** * @var int * @cvalue U_PARAGRAPH_SEPARATOR */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_PARAGRAPH_SEPARATOR = UNKNOWN; /** @cvalue U_PARAGRAPH_SEPARATOR */ #[\Since('8.4')] public const int CHAR_CATEGORY_PARAGRAPH_SEPARATOR = UNKNOWN; /** * @var int * @cvalue U_CONTROL_CHAR */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_CONTROL_CHAR = UNKNOWN; /** @cvalue U_CONTROL_CHAR */ #[\Since('8.4')] public const int CHAR_CATEGORY_CONTROL_CHAR = UNKNOWN; /** * @var int * @cvalue U_FORMAT_CHAR */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_FORMAT_CHAR = UNKNOWN; /** @cvalue U_FORMAT_CHAR */ #[\Since('8.4')] public const int CHAR_CATEGORY_FORMAT_CHAR = UNKNOWN; /** * @var int * @cvalue U_PRIVATE_USE_CHAR */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_PRIVATE_USE_CHAR = UNKNOWN; /** @cvalue U_PRIVATE_USE_CHAR */ #[\Since('8.4')] public const int CHAR_CATEGORY_PRIVATE_USE_CHAR = UNKNOWN; /** * @var int * @cvalue U_SURROGATE */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_SURROGATE = UNKNOWN; /** @cvalue U_SURROGATE */ #[\Since('8.4')] public const int CHAR_CATEGORY_SURROGATE = UNKNOWN; /** * @var int * @cvalue U_DASH_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_DASH_PUNCTUATION = UNKNOWN; /** @cvalue U_DASH_PUNCTUATION */ #[\Since('8.4')] public const int CHAR_CATEGORY_DASH_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue U_START_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_START_PUNCTUATION = UNKNOWN; /** @cvalue U_START_PUNCTUATION */ #[\Since('8.4')] public const int CHAR_CATEGORY_START_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue U_END_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_END_PUNCTUATION = UNKNOWN; /** @cvalue U_END_PUNCTUATION */ #[\Since('8.4')] public const int CHAR_CATEGORY_END_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue U_CONNECTOR_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_CONNECTOR_PUNCTUATION = UNKNOWN; /** @cvalue U_CONNECTOR_PUNCTUATION */ #[\Since('8.4')] public const int CHAR_CATEGORY_CONNECTOR_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue U_OTHER_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_OTHER_PUNCTUATION = UNKNOWN; /** @cvalue U_OTHER_PUNCTUATION */ #[\Since('8.4')] public const int CHAR_CATEGORY_OTHER_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue U_MATH_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_MATH_SYMBOL = UNKNOWN; /** @cvalue U_MATH_SYMBOL */ #[\Since('8.4')] public const int CHAR_CATEGORY_MATH_SYMBOL = UNKNOWN; /** * @var int * @cvalue U_CURRENCY_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_CURRENCY_SYMBOL = UNKNOWN; /** @cvalue U_CURRENCY_SYMBOL */ #[\Since('8.4')] public const int CHAR_CATEGORY_CURRENCY_SYMBOL = UNKNOWN; /** * @var int * @cvalue U_MODIFIER_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_MODIFIER_SYMBOL = UNKNOWN; /** @cvalue U_MODIFIER_SYMBOL */ #[\Since('8.4')] public const int CHAR_CATEGORY_MODIFIER_SYMBOL = UNKNOWN; /** * @var int * @cvalue U_OTHER_SYMBOL */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_OTHER_SYMBOL = UNKNOWN; /** @cvalue U_OTHER_SYMBOL */ #[\Since('8.4')] public const int CHAR_CATEGORY_OTHER_SYMBOL = UNKNOWN; /** * @var int * @cvalue U_INITIAL_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_INITIAL_PUNCTUATION = UNKNOWN; /** @cvalue U_INITIAL_PUNCTUATION */ #[\Since('8.4')] public const int CHAR_CATEGORY_INITIAL_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue U_FINAL_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_FINAL_PUNCTUATION = UNKNOWN; /** @cvalue U_FINAL_PUNCTUATION */ #[\Since('8.4')] public const int CHAR_CATEGORY_FINAL_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue U_CHAR_CATEGORY_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_CATEGORY_CHAR_CATEGORY_COUNT = UNKNOWN; /** @cvalue U_CHAR_CATEGORY_COUNT */ #[\Since('8.4')] public const int CHAR_CATEGORY_CHAR_CATEGORY_COUNT = UNKNOWN; /** * @var int * @cvalue U_LEFT_TO_RIGHT */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_LEFT_TO_RIGHT = UNKNOWN; /** @cvalue U_LEFT_TO_RIGHT */ #[\Since('8.4')] public const int CHAR_DIRECTION_LEFT_TO_RIGHT = UNKNOWN; /** * @var int * @cvalue U_RIGHT_TO_LEFT */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_RIGHT_TO_LEFT = UNKNOWN; /** @cvalue U_RIGHT_TO_LEFT */ #[\Since('8.4')] public const int CHAR_DIRECTION_RIGHT_TO_LEFT = UNKNOWN; /** * @var int * @cvalue U_EUROPEAN_NUMBER */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_EUROPEAN_NUMBER = UNKNOWN; /** @cvalue U_EUROPEAN_NUMBER */ #[\Since('8.4')] public const int CHAR_DIRECTION_EUROPEAN_NUMBER = UNKNOWN; /** * @var int * @cvalue U_EUROPEAN_NUMBER_SEPARATOR */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR = UNKNOWN; /** @cvalue U_EUROPEAN_NUMBER_SEPARATOR */ #[\Since('8.4')] public const int CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR = UNKNOWN; /** * @var int * @cvalue U_EUROPEAN_NUMBER_TERMINATOR */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR = UNKNOWN; /** @cvalue U_EUROPEAN_NUMBER_TERMINATOR */ #[\Since('8.4')] public const int CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR = UNKNOWN; /** * @var int * @cvalue U_ARABIC_NUMBER */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_ARABIC_NUMBER = UNKNOWN; /** @cvalue U_ARABIC_NUMBER */ #[\Since('8.4')] public const int CHAR_DIRECTION_ARABIC_NUMBER = UNKNOWN; /** * @var int * @cvalue U_COMMON_NUMBER_SEPARATOR */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR = UNKNOWN; /** @cvalue U_COMMON_NUMBER_SEPARATOR */ #[\Since('8.4')] public const int CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR = UNKNOWN; /** * @var int * @cvalue U_BLOCK_SEPARATOR */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_BLOCK_SEPARATOR = UNKNOWN; /** @cvalue U_BLOCK_SEPARATOR */ #[\Since('8.4')] public const int CHAR_DIRECTION_BLOCK_SEPARATOR = UNKNOWN; /** * @var int * @cvalue U_SEGMENT_SEPARATOR */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_SEGMENT_SEPARATOR = UNKNOWN; /** @cvalue U_SEGMENT_SEPARATOR */ #[\Since('8.4')] public const int CHAR_DIRECTION_SEGMENT_SEPARATOR = UNKNOWN; /** * @var int * @cvalue U_WHITE_SPACE_NEUTRAL */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_WHITE_SPACE_NEUTRAL = UNKNOWN; /** @cvalue U_WHITE_SPACE_NEUTRAL */ #[\Since('8.4')] public const int CHAR_DIRECTION_WHITE_SPACE_NEUTRAL = UNKNOWN; /** * @var int * @cvalue U_OTHER_NEUTRAL */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_OTHER_NEUTRAL = UNKNOWN; /** @cvalue U_OTHER_NEUTRAL */ #[\Since('8.4')] public const int CHAR_DIRECTION_OTHER_NEUTRAL = UNKNOWN; /** * @var int * @cvalue U_LEFT_TO_RIGHT_EMBEDDING */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING = UNKNOWN; /** @cvalue U_LEFT_TO_RIGHT_EMBEDDING */ #[\Since('8.4')] public const int CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING = UNKNOWN; /** * @var int * @cvalue U_LEFT_TO_RIGHT_OVERRIDE */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE = UNKNOWN; /** @cvalue U_LEFT_TO_RIGHT_OVERRIDE */ #[\Since('8.4')] public const int CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE = UNKNOWN; /** * @var int * @cvalue U_RIGHT_TO_LEFT_ARABIC */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC = UNKNOWN; /** @cvalue U_RIGHT_TO_LEFT_ARABIC */ #[\Since('8.4')] public const int CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC = UNKNOWN; /** * @var int * @cvalue U_RIGHT_TO_LEFT_EMBEDDING */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING = UNKNOWN; /** @cvalue U_RIGHT_TO_LEFT_EMBEDDING */ #[\Since('8.4')] public const int CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING = UNKNOWN; /** * @var int * @cvalue U_RIGHT_TO_LEFT_OVERRIDE */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE = UNKNOWN; /** @cvalue U_RIGHT_TO_LEFT_OVERRIDE */ #[\Since('8.4')] public const int CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE = UNKNOWN; /** * @var int * @cvalue U_POP_DIRECTIONAL_FORMAT */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT = UNKNOWN; /** @cvalue U_POP_DIRECTIONAL_FORMAT */ #[\Since('8.4')] public const int CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT = UNKNOWN; /** * @var int * @cvalue U_DIR_NON_SPACING_MARK */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_DIR_NON_SPACING_MARK = UNKNOWN; /** @cvalue U_DIR_NON_SPACING_MARK */ #[\Since('8.4')] public const int CHAR_DIRECTION_DIR_NON_SPACING_MARK = UNKNOWN; /** * @var int * @cvalue U_BOUNDARY_NEUTRAL */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_BOUNDARY_NEUTRAL = UNKNOWN; /** @cvalue U_BOUNDARY_NEUTRAL */ #[\Since('8.4')] public const int CHAR_DIRECTION_BOUNDARY_NEUTRAL = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 52 /** * @var int * @cvalue U_FIRST_STRONG_ISOLATE */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_FIRST_STRONG_ISOLATE = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 52 /** @cvalue U_FIRST_STRONG_ISOLATE */ #[\Since('8.4')] public const int CHAR_DIRECTION_FIRST_STRONG_ISOLATE = UNKNOWN; /** * @var int * @cvalue U_LEFT_TO_RIGHT_ISOLATE */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE = UNKNOWN; /** @cvalue U_LEFT_TO_RIGHT_ISOLATE */ #[\Since('8.4')] public const int CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE = UNKNOWN; /** * @var int * @cvalue U_RIGHT_TO_LEFT_ISOLATE */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE = UNKNOWN; /** @cvalue U_RIGHT_TO_LEFT_ISOLATE */ #[\Since('8.4')] public const int CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE = UNKNOWN; /** * @var int * @cvalue U_POP_DIRECTIONAL_ISOLATE */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE = UNKNOWN; /** @cvalue U_POP_DIRECTIONAL_ISOLATE */ #[\Since('8.4')] public const int CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE = UNKNOWN; #endif /** * @var int * @cvalue U_CHAR_DIRECTION_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_DIRECTION_CHAR_DIRECTION_COUNT = UNKNOWN; #endif /** @cvalue U_CHAR_DIRECTION_COUNT */ #[\Since('8.4')] public const int CHAR_DIRECTION_CHAR_DIRECTION_COUNT = UNKNOWN; /** * @var int * @cvalue UBLOCK_NO_BLOCK */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_NO_BLOCK = UNKNOWN; /** @cvalue UBLOCK_NO_BLOCK */ #[\Since('8.4')] public const int BLOCK_CODE_NO_BLOCK = UNKNOWN; /** * @var int * @cvalue UBLOCK_BASIC_LATIN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BASIC_LATIN = UNKNOWN; /** @cvalue UBLOCK_BASIC_LATIN */ #[\Since('8.4')] public const int BLOCK_CODE_BASIC_LATIN = UNKNOWN; /** * @var int * @cvalue UBLOCK_LATIN_1_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LATIN_1_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_LATIN_1_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_LATIN_1_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_LATIN_EXTENDED_A */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LATIN_EXTENDED_A = UNKNOWN; /** @cvalue UBLOCK_LATIN_EXTENDED_A */ #[\Since('8.4')] public const int BLOCK_CODE_LATIN_EXTENDED_A = UNKNOWN; /** * @var int * @cvalue UBLOCK_LATIN_EXTENDED_B */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LATIN_EXTENDED_B = UNKNOWN; /** @cvalue UBLOCK_LATIN_EXTENDED_B */ #[\Since('8.4')] public const int BLOCK_CODE_LATIN_EXTENDED_B = UNKNOWN; /** * @var int * @cvalue UBLOCK_IPA_EXTENSIONS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_IPA_EXTENSIONS = UNKNOWN; /** @cvalue UBLOCK_IPA_EXTENSIONS */ #[\Since('8.4')] public const int BLOCK_CODE_IPA_EXTENSIONS = UNKNOWN; /** * @var int * @cvalue UBLOCK_SPACING_MODIFIER_LETTERS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SPACING_MODIFIER_LETTERS = UNKNOWN; /** @cvalue UBLOCK_SPACING_MODIFIER_LETTERS */ #[\Since('8.4')] public const int BLOCK_CODE_SPACING_MODIFIER_LETTERS = UNKNOWN; /** * @var int * @cvalue UBLOCK_COMBINING_DIACRITICAL_MARKS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_COMBINING_DIACRITICAL_MARKS = UNKNOWN; /** @cvalue UBLOCK_COMBINING_DIACRITICAL_MARKS */ #[\Since('8.4')] public const int BLOCK_CODE_COMBINING_DIACRITICAL_MARKS = UNKNOWN; /** * @var int * @cvalue UBLOCK_GREEK */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_GREEK = UNKNOWN; /** @cvalue UBLOCK_GREEK */ #[\Since('8.4')] public const int BLOCK_CODE_GREEK = UNKNOWN; /** * @var int * @cvalue UBLOCK_CYRILLIC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CYRILLIC = UNKNOWN; /** @cvalue UBLOCK_CYRILLIC */ #[\Since('8.4')] public const int BLOCK_CODE_CYRILLIC = UNKNOWN; /** * @var int * @cvalue UBLOCK_ARMENIAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ARMENIAN = UNKNOWN; /** @cvalue UBLOCK_ARMENIAN */ #[\Since('8.4')] public const int BLOCK_CODE_ARMENIAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_HEBREW */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_HEBREW = UNKNOWN; /** @cvalue UBLOCK_HEBREW */ #[\Since('8.4')] public const int BLOCK_CODE_HEBREW = UNKNOWN; /** * @var int * @cvalue UBLOCK_ARABIC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ARABIC = UNKNOWN; /** @cvalue UBLOCK_ARABIC */ #[\Since('8.4')] public const int BLOCK_CODE_ARABIC = UNKNOWN; /** * @var int * @cvalue UBLOCK_SYRIAC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SYRIAC = UNKNOWN; /** @cvalue UBLOCK_SYRIAC */ #[\Since('8.4')] public const int BLOCK_CODE_SYRIAC = UNKNOWN; /** * @var int * @cvalue UBLOCK_THAANA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_THAANA = UNKNOWN; /** @cvalue UBLOCK_THAANA */ #[\Since('8.4')] public const int BLOCK_CODE_THAANA = UNKNOWN; /** * @var int * @cvalue UBLOCK_DEVANAGARI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_DEVANAGARI = UNKNOWN; /** @cvalue UBLOCK_DEVANAGARI */ #[\Since('8.4')] public const int BLOCK_CODE_DEVANAGARI = UNKNOWN; /** * @var int * @cvalue UBLOCK_BENGALI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BENGALI = UNKNOWN; /** @cvalue UBLOCK_BENGALI */ #[\Since('8.4')] public const int BLOCK_CODE_BENGALI = UNKNOWN; /** * @var int * @cvalue UBLOCK_GURMUKHI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_GURMUKHI = UNKNOWN; /** @cvalue UBLOCK_GURMUKHI */ #[\Since('8.4')] public const int BLOCK_CODE_GURMUKHI = UNKNOWN; /** * @var int * @cvalue UBLOCK_GUJARATI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_GUJARATI = UNKNOWN; /** @cvalue UBLOCK_GUJARATI */ #[\Since('8.4')] public const int BLOCK_CODE_GUJARATI = UNKNOWN; /** * @var int * @cvalue UBLOCK_ORIYA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ORIYA = UNKNOWN; /** @cvalue UBLOCK_ORIYA */ #[\Since('8.4')] public const int BLOCK_CODE_ORIYA = UNKNOWN; /** * @var int * @cvalue UBLOCK_TAMIL */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TAMIL = UNKNOWN; /** @cvalue UBLOCK_TAMIL */ #[\Since('8.4')] public const int BLOCK_CODE_TAMIL = UNKNOWN; /** * @var int * @cvalue UBLOCK_TELUGU */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TELUGU = UNKNOWN; /** @cvalue UBLOCK_TELUGU */ #[\Since('8.4')] public const int BLOCK_CODE_TELUGU = UNKNOWN; /** * @var int * @cvalue UBLOCK_KANNADA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_KANNADA = UNKNOWN; /** @cvalue UBLOCK_KANNADA */ #[\Since('8.4')] public const int BLOCK_CODE_KANNADA = UNKNOWN; /** * @var int * @cvalue UBLOCK_MALAYALAM */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MALAYALAM = UNKNOWN; /** @cvalue UBLOCK_MALAYALAM */ #[\Since('8.4')] public const int BLOCK_CODE_MALAYALAM = UNKNOWN; /** * @var int * @cvalue UBLOCK_SINHALA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SINHALA = UNKNOWN; /** @cvalue UBLOCK_SINHALA */ #[\Since('8.4')] public const int BLOCK_CODE_SINHALA = UNKNOWN; /** * @var int * @cvalue UBLOCK_THAI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_THAI = UNKNOWN; /** @cvalue UBLOCK_THAI */ #[\Since('8.4')] public const int BLOCK_CODE_THAI = UNKNOWN; /** * @var int * @cvalue UBLOCK_LAO */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LAO = UNKNOWN; /** @cvalue UBLOCK_LAO */ #[\Since('8.4')] public const int BLOCK_CODE_LAO = UNKNOWN; /** * @var int * @cvalue UBLOCK_TIBETAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TIBETAN = UNKNOWN; /** @cvalue UBLOCK_TIBETAN */ #[\Since('8.4')] public const int BLOCK_CODE_TIBETAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_MYANMAR */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MYANMAR = UNKNOWN; /** @cvalue UBLOCK_MYANMAR */ #[\Since('8.4')] public const int BLOCK_CODE_MYANMAR = UNKNOWN; /** * @var int * @cvalue UBLOCK_GEORGIAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_GEORGIAN = UNKNOWN; /** @cvalue UBLOCK_GEORGIAN */ #[\Since('8.4')] public const int BLOCK_CODE_GEORGIAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_HANGUL_JAMO */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_HANGUL_JAMO = UNKNOWN; /** @cvalue UBLOCK_HANGUL_JAMO */ #[\Since('8.4')] public const int BLOCK_CODE_HANGUL_JAMO = UNKNOWN; /** * @var int * @cvalue UBLOCK_ETHIOPIC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ETHIOPIC = UNKNOWN; /** @cvalue UBLOCK_ETHIOPIC */ #[\Since('8.4')] public const int BLOCK_CODE_ETHIOPIC = UNKNOWN; /** * @var int * @cvalue UBLOCK_CHEROKEE */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CHEROKEE = UNKNOWN; /** @cvalue UBLOCK_CHEROKEE */ #[\Since('8.4')] public const int BLOCK_CODE_CHEROKEE = UNKNOWN; /** * @var int * @cvalue UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS = UNKNOWN; /** @cvalue UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS */ #[\Since('8.4')] public const int BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS = UNKNOWN; /** * @var int * @cvalue UBLOCK_OGHAM */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_OGHAM = UNKNOWN; /** @cvalue UBLOCK_OGHAM */ #[\Since('8.4')] public const int BLOCK_CODE_OGHAM = UNKNOWN; /** * @var int * @cvalue UBLOCK_RUNIC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_RUNIC = UNKNOWN; /** @cvalue UBLOCK_RUNIC */ #[\Since('8.4')] public const int BLOCK_CODE_RUNIC = UNKNOWN; /** * @var int * @cvalue UBLOCK_KHMER */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_KHMER = UNKNOWN; /** @cvalue UBLOCK_KHMER */ #[\Since('8.4')] public const int BLOCK_CODE_KHMER = UNKNOWN; /** * @var int * @cvalue UBLOCK_MONGOLIAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MONGOLIAN = UNKNOWN; /** @cvalue UBLOCK_MONGOLIAN */ #[\Since('8.4')] public const int BLOCK_CODE_MONGOLIAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_LATIN_EXTENDED_ADDITIONAL */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL = UNKNOWN; /** @cvalue UBLOCK_LATIN_EXTENDED_ADDITIONAL */ #[\Since('8.4')] public const int BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL = UNKNOWN; /** * @var int * @cvalue UBLOCK_GREEK_EXTENDED */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_GREEK_EXTENDED = UNKNOWN; /** @cvalue UBLOCK_GREEK_EXTENDED */ #[\Since('8.4')] public const int BLOCK_CODE_GREEK_EXTENDED = UNKNOWN; /** * @var int * @cvalue UBLOCK_GENERAL_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_GENERAL_PUNCTUATION = UNKNOWN; /** @cvalue UBLOCK_GENERAL_PUNCTUATION */ #[\Since('8.4')] public const int BLOCK_CODE_GENERAL_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue UBLOCK_SUPERSCRIPTS_AND_SUBSCRIPTS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS = UNKNOWN; /** @cvalue UBLOCK_SUPERSCRIPTS_AND_SUBSCRIPTS */ #[\Since('8.4')] public const int BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS = UNKNOWN; /** * @var int * @cvalue UBLOCK_CURRENCY_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CURRENCY_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_CURRENCY_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_CURRENCY_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_COMBINING_MARKS_FOR_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_COMBINING_MARKS_FOR_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_LETTERLIKE_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LETTERLIKE_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_LETTERLIKE_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_LETTERLIKE_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_NUMBER_FORMS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_NUMBER_FORMS = UNKNOWN; /** @cvalue UBLOCK_NUMBER_FORMS */ #[\Since('8.4')] public const int BLOCK_CODE_NUMBER_FORMS = UNKNOWN; /** * @var int * @cvalue UBLOCK_ARROWS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ARROWS = UNKNOWN; /** @cvalue UBLOCK_ARROWS */ #[\Since('8.4')] public const int BLOCK_CODE_ARROWS = UNKNOWN; /** * @var int * @cvalue UBLOCK_MATHEMATICAL_OPERATORS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MATHEMATICAL_OPERATORS = UNKNOWN; /** @cvalue UBLOCK_MATHEMATICAL_OPERATORS */ #[\Since('8.4')] public const int BLOCK_CODE_MATHEMATICAL_OPERATORS = UNKNOWN; /** * @var int * @cvalue UBLOCK_MISCELLANEOUS_TECHNICAL */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MISCELLANEOUS_TECHNICAL = UNKNOWN; /** @cvalue UBLOCK_MISCELLANEOUS_TECHNICAL */ #[\Since('8.4')] public const int BLOCK_CODE_MISCELLANEOUS_TECHNICAL = UNKNOWN; /** * @var int * @cvalue UBLOCK_CONTROL_PICTURES */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CONTROL_PICTURES = UNKNOWN; /** @cvalue UBLOCK_CONTROL_PICTURES */ #[\Since('8.4')] public const int BLOCK_CODE_CONTROL_PICTURES = UNKNOWN; /** * @var int * @cvalue UBLOCK_OPTICAL_CHARACTER_RECOGNITION */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION = UNKNOWN; /** @cvalue UBLOCK_OPTICAL_CHARACTER_RECOGNITION */ #[\Since('8.4')] public const int BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION = UNKNOWN; /** * @var int * @cvalue UBLOCK_ENCLOSED_ALPHANUMERICS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ENCLOSED_ALPHANUMERICS = UNKNOWN; /** @cvalue UBLOCK_ENCLOSED_ALPHANUMERICS */ #[\Since('8.4')] public const int BLOCK_CODE_ENCLOSED_ALPHANUMERICS = UNKNOWN; /** * @var int * @cvalue UBLOCK_BOX_DRAWING */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BOX_DRAWING = UNKNOWN; /** @cvalue UBLOCK_BOX_DRAWING */ #[\Since('8.4')] public const int BLOCK_CODE_BOX_DRAWING = UNKNOWN; /** * @var int * @cvalue UBLOCK_BLOCK_ELEMENTS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BLOCK_ELEMENTS = UNKNOWN; /** @cvalue UBLOCK_BLOCK_ELEMENTS */ #[\Since('8.4')] public const int BLOCK_CODE_BLOCK_ELEMENTS = UNKNOWN; /** * @var int * @cvalue UBLOCK_GEOMETRIC_SHAPES */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_GEOMETRIC_SHAPES = UNKNOWN; /** @cvalue UBLOCK_GEOMETRIC_SHAPES */ #[\Since('8.4')] public const int BLOCK_CODE_GEOMETRIC_SHAPES = UNKNOWN; /** * @var int * @cvalue UBLOCK_MISCELLANEOUS_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MISCELLANEOUS_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_MISCELLANEOUS_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_MISCELLANEOUS_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_DINGBATS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_DINGBATS = UNKNOWN; /** @cvalue UBLOCK_DINGBATS */ #[\Since('8.4')] public const int BLOCK_CODE_DINGBATS = UNKNOWN; /** * @var int * @cvalue UBLOCK_BRAILLE_PATTERNS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BRAILLE_PATTERNS = UNKNOWN; /** @cvalue UBLOCK_BRAILLE_PATTERNS */ #[\Since('8.4')] public const int BLOCK_CODE_BRAILLE_PATTERNS = UNKNOWN; /** * @var int * @cvalue UBLOCK_CJK_RADICALS_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CJK_RADICALS_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_CJK_RADICALS_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_CJK_RADICALS_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_KANGXI_RADICALS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_KANGXI_RADICALS = UNKNOWN; /** @cvalue UBLOCK_KANGXI_RADICALS */ #[\Since('8.4')] public const int BLOCK_CODE_KANGXI_RADICALS = UNKNOWN; /** * @var int * @cvalue UBLOCK_IDEOGRAPHIC_DESCRIPTION_CHARACTERS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS = UNKNOWN; /** @cvalue UBLOCK_IDEOGRAPHIC_DESCRIPTION_CHARACTERS */ #[\Since('8.4')] public const int BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS = UNKNOWN; /** * @var int * @cvalue UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION = UNKNOWN; /** @cvalue UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION */ #[\Since('8.4')] public const int BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue UBLOCK_HIRAGANA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_HIRAGANA = UNKNOWN; /** @cvalue UBLOCK_HIRAGANA */ #[\Since('8.4')] public const int BLOCK_CODE_HIRAGANA = UNKNOWN; /** * @var int * @cvalue UBLOCK_KATAKANA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_KATAKANA = UNKNOWN; /** @cvalue UBLOCK_KATAKANA */ #[\Since('8.4')] public const int BLOCK_CODE_KATAKANA = UNKNOWN; /** * @var int * @cvalue UBLOCK_BOPOMOFO */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BOPOMOFO = UNKNOWN; /** @cvalue UBLOCK_BOPOMOFO */ #[\Since('8.4')] public const int BLOCK_CODE_BOPOMOFO = UNKNOWN; /** * @var int * @cvalue UBLOCK_HANGUL_COMPATIBILITY_JAMO */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO = UNKNOWN; /** @cvalue UBLOCK_HANGUL_COMPATIBILITY_JAMO */ #[\Since('8.4')] public const int BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO = UNKNOWN; /** * @var int * @cvalue UBLOCK_KANBUN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_KANBUN = UNKNOWN; /** @cvalue UBLOCK_KANBUN */ #[\Since('8.4')] public const int BLOCK_CODE_KANBUN = UNKNOWN; /** * @var int * @cvalue UBLOCK_BOPOMOFO_EXTENDED */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BOPOMOFO_EXTENDED = UNKNOWN; /** @cvalue UBLOCK_BOPOMOFO_EXTENDED */ #[\Since('8.4')] public const int BLOCK_CODE_BOPOMOFO_EXTENDED = UNKNOWN; /** * @var int * @cvalue UBLOCK_ENCLOSED_CJK_LETTERS_AND_MONTHS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS = UNKNOWN; /** @cvalue UBLOCK_ENCLOSED_CJK_LETTERS_AND_MONTHS */ #[\Since('8.4')] public const int BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS = UNKNOWN; /** * @var int * @cvalue UBLOCK_CJK_COMPATIBILITY */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CJK_COMPATIBILITY = UNKNOWN; /** @cvalue UBLOCK_CJK_COMPATIBILITY */ #[\Since('8.4')] public const int BLOCK_CODE_CJK_COMPATIBILITY = UNKNOWN; /** * @var int * @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A = UNKNOWN; /** @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A */ #[\Since('8.4')] public const int BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A = UNKNOWN; /** * @var int * @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS = UNKNOWN; /** @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS */ #[\Since('8.4')] public const int BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS = UNKNOWN; /** * @var int * @cvalue UBLOCK_YI_SYLLABLES */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_YI_SYLLABLES = UNKNOWN; /** @cvalue UBLOCK_YI_SYLLABLES */ #[\Since('8.4')] public const int BLOCK_CODE_YI_SYLLABLES = UNKNOWN; /** * @var int * @cvalue UBLOCK_YI_RADICALS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_YI_RADICALS = UNKNOWN; /** @cvalue UBLOCK_YI_RADICALS */ #[\Since('8.4')] public const int BLOCK_CODE_YI_RADICALS = UNKNOWN; /** * @var int * @cvalue UBLOCK_HANGUL_SYLLABLES */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_HANGUL_SYLLABLES = UNKNOWN; /** @cvalue UBLOCK_HANGUL_SYLLABLES */ #[\Since('8.4')] public const int BLOCK_CODE_HANGUL_SYLLABLES = UNKNOWN; /** * @var int * @cvalue UBLOCK_HIGH_SURROGATES */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_HIGH_SURROGATES = UNKNOWN; /** @cvalue UBLOCK_HIGH_SURROGATES */ #[\Since('8.4')] public const int BLOCK_CODE_HIGH_SURROGATES = UNKNOWN; /** * @var int * @cvalue UBLOCK_HIGH_PRIVATE_USE_SURROGATES */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES = UNKNOWN; /** @cvalue UBLOCK_HIGH_PRIVATE_USE_SURROGATES */ #[\Since('8.4')] public const int BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES = UNKNOWN; /** * @var int * @cvalue UBLOCK_LOW_SURROGATES */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LOW_SURROGATES = UNKNOWN; /** @cvalue UBLOCK_LOW_SURROGATES */ #[\Since('8.4')] public const int BLOCK_CODE_LOW_SURROGATES = UNKNOWN; /** * @var int * @cvalue UBLOCK_PRIVATE_USE_AREA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_PRIVATE_USE_AREA = UNKNOWN; /** @cvalue UBLOCK_PRIVATE_USE_AREA */ #[\Since('8.4')] public const int BLOCK_CODE_PRIVATE_USE_AREA = UNKNOWN; /** * @var int * @cvalue UBLOCK_PRIVATE_USE */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_PRIVATE_USE = UNKNOWN; /** @cvalue UBLOCK_PRIVATE_USE */ #[\Since('8.4')] public const int BLOCK_CODE_PRIVATE_USE = UNKNOWN; /** * @var int * @cvalue UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS = UNKNOWN; /** @cvalue UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS */ #[\Since('8.4')] public const int BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS = UNKNOWN; /** * @var int * @cvalue UBLOCK_ALPHABETIC_PRESENTATION_FORMS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS = UNKNOWN; /** @cvalue UBLOCK_ALPHABETIC_PRESENTATION_FORMS */ #[\Since('8.4')] public const int BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS = UNKNOWN; /** * @var int * @cvalue UBLOCK_ARABIC_PRESENTATION_FORMS_A */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A = UNKNOWN; /** @cvalue UBLOCK_ARABIC_PRESENTATION_FORMS_A */ #[\Since('8.4')] public const int BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A = UNKNOWN; /** * @var int * @cvalue UBLOCK_COMBINING_HALF_MARKS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_COMBINING_HALF_MARKS = UNKNOWN; /** @cvalue UBLOCK_COMBINING_HALF_MARKS */ #[\Since('8.4')] public const int BLOCK_CODE_COMBINING_HALF_MARKS = UNKNOWN; /** * @var int * @cvalue UBLOCK_CJK_COMPATIBILITY_FORMS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CJK_COMPATIBILITY_FORMS = UNKNOWN; /** @cvalue UBLOCK_CJK_COMPATIBILITY_FORMS */ #[\Since('8.4')] public const int BLOCK_CODE_CJK_COMPATIBILITY_FORMS = UNKNOWN; /** * @var int * @cvalue UBLOCK_SMALL_FORM_VARIANTS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SMALL_FORM_VARIANTS = UNKNOWN; /** @cvalue UBLOCK_SMALL_FORM_VARIANTS */ #[\Since('8.4')] public const int BLOCK_CODE_SMALL_FORM_VARIANTS = UNKNOWN; /** * @var int * @cvalue UBLOCK_ARABIC_PRESENTATION_FORMS_B */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B = UNKNOWN; /** @cvalue UBLOCK_ARABIC_PRESENTATION_FORMS_B */ #[\Since('8.4')] public const int BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B = UNKNOWN; /** * @var int * @cvalue UBLOCK_SPECIALS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SPECIALS = UNKNOWN; /** @cvalue UBLOCK_SPECIALS */ #[\Since('8.4')] public const int BLOCK_CODE_SPECIALS = UNKNOWN; /** * @var int * @cvalue UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS = UNKNOWN; /** @cvalue UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS */ #[\Since('8.4')] public const int BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS = UNKNOWN; /** * @var int * @cvalue UBLOCK_OLD_ITALIC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_OLD_ITALIC = UNKNOWN; /** @cvalue UBLOCK_OLD_ITALIC */ #[\Since('8.4')] public const int BLOCK_CODE_OLD_ITALIC = UNKNOWN; /** * @var int * @cvalue UBLOCK_GOTHIC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_GOTHIC = UNKNOWN; /** @cvalue UBLOCK_GOTHIC */ #[\Since('8.4')] public const int BLOCK_CODE_GOTHIC = UNKNOWN; /** * @var int * @cvalue UBLOCK_DESERET */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_DESERET = UNKNOWN; /** @cvalue UBLOCK_DESERET */ #[\Since('8.4')] public const int BLOCK_CODE_DESERET = UNKNOWN; /** * @var int * @cvalue UBLOCK_BYZANTINE_MUSICAL_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_BYZANTINE_MUSICAL_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_MUSICAL_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MUSICAL_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_MUSICAL_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_MUSICAL_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_MATHEMATICAL_ALPHANUMERIC_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_MATHEMATICAL_ALPHANUMERIC_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B = UNKNOWN; /** @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B */ #[\Since('8.4')] public const int BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B = UNKNOWN; /** * @var int * @cvalue UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_TAGS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TAGS = UNKNOWN; /** @cvalue UBLOCK_TAGS */ #[\Since('8.4')] public const int BLOCK_CODE_TAGS = UNKNOWN; /** * @var int * @cvalue UBLOCK_CYRILLIC_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CYRILLIC_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_CYRILLIC_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_CYRILLIC_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_CYRILLIC_SUPPLEMENTARY */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CYRILLIC_SUPPLEMENTARY = UNKNOWN; /** @cvalue UBLOCK_CYRILLIC_SUPPLEMENTARY */ #[\Since('8.4')] public const int BLOCK_CODE_CYRILLIC_SUPPLEMENTARY = UNKNOWN; /** * @var int * @cvalue UBLOCK_TAGALOG */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TAGALOG = UNKNOWN; /** @cvalue UBLOCK_TAGALOG */ #[\Since('8.4')] public const int BLOCK_CODE_TAGALOG = UNKNOWN; /** * @var int * @cvalue UBLOCK_HANUNOO */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_HANUNOO = UNKNOWN; /** @cvalue UBLOCK_HANUNOO */ #[\Since('8.4')] public const int BLOCK_CODE_HANUNOO = UNKNOWN; /** * @var int * @cvalue UBLOCK_BUHID */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BUHID = UNKNOWN; /** @cvalue UBLOCK_BUHID */ #[\Since('8.4')] public const int BLOCK_CODE_BUHID = UNKNOWN; /** * @var int * @cvalue UBLOCK_TAGBANWA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TAGBANWA = UNKNOWN; /** @cvalue UBLOCK_TAGBANWA */ #[\Since('8.4')] public const int BLOCK_CODE_TAGBANWA = UNKNOWN; /** * @var int * @cvalue UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A = UNKNOWN; /** @cvalue UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A */ #[\Since('8.4')] public const int BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A = UNKNOWN; /** * @var int * @cvalue UBLOCK_SUPPLEMENTAL_ARROWS_A */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SUPPLEMENTAL_ARROWS_A = UNKNOWN; /** @cvalue UBLOCK_SUPPLEMENTAL_ARROWS_A */ #[\Since('8.4')] public const int BLOCK_CODE_SUPPLEMENTAL_ARROWS_A = UNKNOWN; /** * @var int * @cvalue UBLOCK_SUPPLEMENTAL_ARROWS_B */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SUPPLEMENTAL_ARROWS_B = UNKNOWN; /** @cvalue UBLOCK_SUPPLEMENTAL_ARROWS_B */ #[\Since('8.4')] public const int BLOCK_CODE_SUPPLEMENTAL_ARROWS_B = UNKNOWN; /** * @var int * @cvalue UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B = UNKNOWN; /** @cvalue UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B */ #[\Since('8.4')] public const int BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B = UNKNOWN; /** * @var int * @cvalue UBLOCK_SUPPLEMENTAL_MATHEMATICAL_OPERATORS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS = UNKNOWN; /** @cvalue UBLOCK_SUPPLEMENTAL_MATHEMATICAL_OPERATORS */ #[\Since('8.4')] public const int BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS = UNKNOWN; /** * @var int * @cvalue UBLOCK_KATAKANA_PHONETIC_EXTENSIONS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS = UNKNOWN; /** @cvalue UBLOCK_KATAKANA_PHONETIC_EXTENSIONS */ #[\Since('8.4')] public const int BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS = UNKNOWN; /** * @var int * @cvalue UBLOCK_VARIATION_SELECTORS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_VARIATION_SELECTORS = UNKNOWN; /** @cvalue UBLOCK_VARIATION_SELECTORS */ #[\Since('8.4')] public const int BLOCK_CODE_VARIATION_SELECTORS = UNKNOWN; /** * @var int * @cvalue UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_A */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A = UNKNOWN; /** @cvalue UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_A */ #[\Since('8.4')] public const int BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A = UNKNOWN; /** * @var int * @cvalue UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_B */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B = UNKNOWN; /** @cvalue UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_B */ #[\Since('8.4')] public const int BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B = UNKNOWN; /** * @var int * @cvalue UBLOCK_LIMBU */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LIMBU = UNKNOWN; /** @cvalue UBLOCK_LIMBU */ #[\Since('8.4')] public const int BLOCK_CODE_LIMBU = UNKNOWN; /** * @var int * @cvalue UBLOCK_TAI_LE */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TAI_LE = UNKNOWN; /** @cvalue UBLOCK_TAI_LE */ #[\Since('8.4')] public const int BLOCK_CODE_TAI_LE = UNKNOWN; /** * @var int * @cvalue UBLOCK_KHMER_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_KHMER_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_KHMER_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_KHMER_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_PHONETIC_EXTENSIONS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_PHONETIC_EXTENSIONS = UNKNOWN; /** @cvalue UBLOCK_PHONETIC_EXTENSIONS */ #[\Since('8.4')] public const int BLOCK_CODE_PHONETIC_EXTENSIONS = UNKNOWN; /** * @var int * @cvalue UBLOCK_MISCELLANEOUS_SYMBOLS_AND_ARROWS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS = UNKNOWN; /** @cvalue UBLOCK_MISCELLANEOUS_SYMBOLS_AND_ARROWS */ #[\Since('8.4')] public const int BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS = UNKNOWN; /** * @var int * @cvalue UBLOCK_YIJING_HEXAGRAM_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_YIJING_HEXAGRAM_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_LINEAR_B_SYLLABARY */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LINEAR_B_SYLLABARY = UNKNOWN; /** @cvalue UBLOCK_LINEAR_B_SYLLABARY */ #[\Since('8.4')] public const int BLOCK_CODE_LINEAR_B_SYLLABARY = UNKNOWN; /** * @var int * @cvalue UBLOCK_LINEAR_B_IDEOGRAMS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LINEAR_B_IDEOGRAMS = UNKNOWN; /** @cvalue UBLOCK_LINEAR_B_IDEOGRAMS */ #[\Since('8.4')] public const int BLOCK_CODE_LINEAR_B_IDEOGRAMS = UNKNOWN; /** * @var int * @cvalue UBLOCK_AEGEAN_NUMBERS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_AEGEAN_NUMBERS = UNKNOWN; /** @cvalue UBLOCK_AEGEAN_NUMBERS */ #[\Since('8.4')] public const int BLOCK_CODE_AEGEAN_NUMBERS = UNKNOWN; /** * @var int * @cvalue UBLOCK_UGARITIC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_UGARITIC = UNKNOWN; /** @cvalue UBLOCK_UGARITIC */ #[\Since('8.4')] public const int BLOCK_CODE_UGARITIC = UNKNOWN; /** * @var int * @cvalue UBLOCK_SHAVIAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SHAVIAN = UNKNOWN; /** @cvalue UBLOCK_SHAVIAN */ #[\Since('8.4')] public const int BLOCK_CODE_SHAVIAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_OSMANYA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_OSMANYA = UNKNOWN; /** @cvalue UBLOCK_OSMANYA */ #[\Since('8.4')] public const int BLOCK_CODE_OSMANYA = UNKNOWN; /** * @var int * @cvalue UBLOCK_CYPRIOT_SYLLABARY */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CYPRIOT_SYLLABARY = UNKNOWN; /** @cvalue UBLOCK_CYPRIOT_SYLLABARY */ #[\Since('8.4')] public const int BLOCK_CODE_CYPRIOT_SYLLABARY = UNKNOWN; /** * @var int * @cvalue UBLOCK_TAI_XUAN_JING_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TAI_XUAN_JING_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_TAI_XUAN_JING_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_TAI_XUAN_JING_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_VARIATION_SELECTORS_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_VARIATION_SELECTORS_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_ANCIENT_GREEK_MUSICAL_NOTATION */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION = UNKNOWN; /** @cvalue UBLOCK_ANCIENT_GREEK_MUSICAL_NOTATION */ #[\Since('8.4')] public const int BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION = UNKNOWN; /** * @var int * @cvalue UBLOCK_ANCIENT_GREEK_NUMBERS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ANCIENT_GREEK_NUMBERS = UNKNOWN; /** @cvalue UBLOCK_ANCIENT_GREEK_NUMBERS */ #[\Since('8.4')] public const int BLOCK_CODE_ANCIENT_GREEK_NUMBERS = UNKNOWN; /** * @var int * @cvalue UBLOCK_ARABIC_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ARABIC_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_ARABIC_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_ARABIC_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_BUGINESE */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BUGINESE = UNKNOWN; /** @cvalue UBLOCK_BUGINESE */ #[\Since('8.4')] public const int BLOCK_CODE_BUGINESE = UNKNOWN; /** * @var int * @cvalue UBLOCK_CJK_STROKES */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CJK_STROKES = UNKNOWN; /** @cvalue UBLOCK_CJK_STROKES */ #[\Since('8.4')] public const int BLOCK_CODE_CJK_STROKES = UNKNOWN; /** * @var int * @cvalue UBLOCK_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_COPTIC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_COPTIC = UNKNOWN; /** @cvalue UBLOCK_COPTIC */ #[\Since('8.4')] public const int BLOCK_CODE_COPTIC = UNKNOWN; /** * @var int * @cvalue UBLOCK_ETHIOPIC_EXTENDED */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ETHIOPIC_EXTENDED = UNKNOWN; /** @cvalue UBLOCK_ETHIOPIC_EXTENDED */ #[\Since('8.4')] public const int BLOCK_CODE_ETHIOPIC_EXTENDED = UNKNOWN; /** * @var int * @cvalue UBLOCK_ETHIOPIC_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ETHIOPIC_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_ETHIOPIC_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_ETHIOPIC_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_GEORGIAN_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_GEORGIAN_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_GEORGIAN_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_GEORGIAN_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_GLAGOLITIC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_GLAGOLITIC = UNKNOWN; /** @cvalue UBLOCK_GLAGOLITIC */ #[\Since('8.4')] public const int BLOCK_CODE_GLAGOLITIC = UNKNOWN; /** * @var int * @cvalue UBLOCK_KHAROSHTHI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_KHAROSHTHI = UNKNOWN; /** @cvalue UBLOCK_KHAROSHTHI */ #[\Since('8.4')] public const int BLOCK_CODE_KHAROSHTHI = UNKNOWN; /** * @var int * @cvalue UBLOCK_MODIFIER_TONE_LETTERS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MODIFIER_TONE_LETTERS = UNKNOWN; /** @cvalue UBLOCK_MODIFIER_TONE_LETTERS */ #[\Since('8.4')] public const int BLOCK_CODE_MODIFIER_TONE_LETTERS = UNKNOWN; /** * @var int * @cvalue UBLOCK_NEW_TAI_LUE */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_NEW_TAI_LUE = UNKNOWN; /** @cvalue UBLOCK_NEW_TAI_LUE */ #[\Since('8.4')] public const int BLOCK_CODE_NEW_TAI_LUE = UNKNOWN; /** * @var int * @cvalue UBLOCK_OLD_PERSIAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_OLD_PERSIAN = UNKNOWN; /** @cvalue UBLOCK_OLD_PERSIAN */ #[\Since('8.4')] public const int BLOCK_CODE_OLD_PERSIAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_PHONETIC_EXTENSIONS_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_PHONETIC_EXTENSIONS_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_SUPPLEMENTAL_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION = UNKNOWN; /** @cvalue UBLOCK_SUPPLEMENTAL_PUNCTUATION */ #[\Since('8.4')] public const int BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue UBLOCK_SYLOTI_NAGRI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SYLOTI_NAGRI = UNKNOWN; /** @cvalue UBLOCK_SYLOTI_NAGRI */ #[\Since('8.4')] public const int BLOCK_CODE_SYLOTI_NAGRI = UNKNOWN; /** * @var int * @cvalue UBLOCK_TIFINAGH */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TIFINAGH = UNKNOWN; /** @cvalue UBLOCK_TIFINAGH */ #[\Since('8.4')] public const int BLOCK_CODE_TIFINAGH = UNKNOWN; /** * @var int * @cvalue UBLOCK_VERTICAL_FORMS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_VERTICAL_FORMS = UNKNOWN; /** @cvalue UBLOCK_VERTICAL_FORMS */ #[\Since('8.4')] public const int BLOCK_CODE_VERTICAL_FORMS = UNKNOWN; /** * @var int * @cvalue UBLOCK_NKO */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_NKO = UNKNOWN; /** @cvalue UBLOCK_NKO */ #[\Since('8.4')] public const int BLOCK_CODE_NKO = UNKNOWN; /** * @var int * @cvalue UBLOCK_BALINESE */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BALINESE = UNKNOWN; /** @cvalue UBLOCK_BALINESE */ #[\Since('8.4')] public const int BLOCK_CODE_BALINESE = UNKNOWN; /** * @var int * @cvalue UBLOCK_LATIN_EXTENDED_C */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LATIN_EXTENDED_C = UNKNOWN; /** @cvalue UBLOCK_LATIN_EXTENDED_C */ #[\Since('8.4')] public const int BLOCK_CODE_LATIN_EXTENDED_C = UNKNOWN; /** * @var int * @cvalue UBLOCK_LATIN_EXTENDED_D */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LATIN_EXTENDED_D = UNKNOWN; /** @cvalue UBLOCK_LATIN_EXTENDED_D */ #[\Since('8.4')] public const int BLOCK_CODE_LATIN_EXTENDED_D = UNKNOWN; /** * @var int * @cvalue UBLOCK_PHAGS_PA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_PHAGS_PA = UNKNOWN; /** @cvalue UBLOCK_PHAGS_PA */ #[\Since('8.4')] public const int BLOCK_CODE_PHAGS_PA = UNKNOWN; /** * @var int * @cvalue UBLOCK_PHOENICIAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_PHOENICIAN = UNKNOWN; /** @cvalue UBLOCK_PHOENICIAN */ #[\Since('8.4')] public const int BLOCK_CODE_PHOENICIAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_CUNEIFORM */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CUNEIFORM = UNKNOWN; /** @cvalue UBLOCK_CUNEIFORM */ #[\Since('8.4')] public const int BLOCK_CODE_CUNEIFORM = UNKNOWN; /** * @var int * @cvalue UBLOCK_CUNEIFORM_NUMBERS_AND_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION = UNKNOWN; /** @cvalue UBLOCK_CUNEIFORM_NUMBERS_AND_PUNCTUATION */ #[\Since('8.4')] public const int BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue UBLOCK_COUNTING_ROD_NUMERALS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_COUNTING_ROD_NUMERALS = UNKNOWN; /** @cvalue UBLOCK_COUNTING_ROD_NUMERALS */ #[\Since('8.4')] public const int BLOCK_CODE_COUNTING_ROD_NUMERALS = UNKNOWN; /** * @var int * @cvalue UBLOCK_SUNDANESE */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SUNDANESE = UNKNOWN; /** @cvalue UBLOCK_SUNDANESE */ #[\Since('8.4')] public const int BLOCK_CODE_SUNDANESE = UNKNOWN; /** * @var int * @cvalue UBLOCK_LEPCHA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LEPCHA = UNKNOWN; /** @cvalue UBLOCK_LEPCHA */ #[\Since('8.4')] public const int BLOCK_CODE_LEPCHA = UNKNOWN; /** * @var int * @cvalue UBLOCK_OL_CHIKI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_OL_CHIKI = UNKNOWN; /** @cvalue UBLOCK_OL_CHIKI */ #[\Since('8.4')] public const int BLOCK_CODE_OL_CHIKI = UNKNOWN; /** * @var int * @cvalue UBLOCK_CYRILLIC_EXTENDED_A */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CYRILLIC_EXTENDED_A = UNKNOWN; /** @cvalue UBLOCK_CYRILLIC_EXTENDED_A */ #[\Since('8.4')] public const int BLOCK_CODE_CYRILLIC_EXTENDED_A = UNKNOWN; /** * @var int * @cvalue UBLOCK_VAI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_VAI = UNKNOWN; /** @cvalue UBLOCK_VAI */ #[\Since('8.4')] public const int BLOCK_CODE_VAI = UNKNOWN; /** * @var int * @cvalue UBLOCK_CYRILLIC_EXTENDED_B */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CYRILLIC_EXTENDED_B = UNKNOWN; /** @cvalue UBLOCK_CYRILLIC_EXTENDED_B */ #[\Since('8.4')] public const int BLOCK_CODE_CYRILLIC_EXTENDED_B = UNKNOWN; /** * @var int * @cvalue UBLOCK_SAURASHTRA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SAURASHTRA = UNKNOWN; /** @cvalue UBLOCK_SAURASHTRA */ #[\Since('8.4')] public const int BLOCK_CODE_SAURASHTRA = UNKNOWN; /** * @var int * @cvalue UBLOCK_KAYAH_LI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_KAYAH_LI = UNKNOWN; /** @cvalue UBLOCK_KAYAH_LI */ #[\Since('8.4')] public const int BLOCK_CODE_KAYAH_LI = UNKNOWN; /** * @var int * @cvalue UBLOCK_REJANG */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_REJANG = UNKNOWN; /** @cvalue UBLOCK_REJANG */ #[\Since('8.4')] public const int BLOCK_CODE_REJANG = UNKNOWN; /** * @var int * @cvalue UBLOCK_CHAM */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CHAM = UNKNOWN; /** @cvalue UBLOCK_CHAM */ #[\Since('8.4')] public const int BLOCK_CODE_CHAM = UNKNOWN; /** * @var int * @cvalue UBLOCK_ANCIENT_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ANCIENT_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_ANCIENT_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_ANCIENT_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_PHAISTOS_DISC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_PHAISTOS_DISC = UNKNOWN; /** @cvalue UBLOCK_PHAISTOS_DISC */ #[\Since('8.4')] public const int BLOCK_CODE_PHAISTOS_DISC = UNKNOWN; /** * @var int * @cvalue UBLOCK_LYCIAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LYCIAN = UNKNOWN; /** @cvalue UBLOCK_LYCIAN */ #[\Since('8.4')] public const int BLOCK_CODE_LYCIAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_CARIAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CARIAN = UNKNOWN; /** @cvalue UBLOCK_CARIAN */ #[\Since('8.4')] public const int BLOCK_CODE_CARIAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_LYDIAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LYDIAN = UNKNOWN; /** @cvalue UBLOCK_LYDIAN */ #[\Since('8.4')] public const int BLOCK_CODE_LYDIAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_MAHJONG_TILES */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MAHJONG_TILES = UNKNOWN; /** @cvalue UBLOCK_MAHJONG_TILES */ #[\Since('8.4')] public const int BLOCK_CODE_MAHJONG_TILES = UNKNOWN; /** * @var int * @cvalue UBLOCK_DOMINO_TILES */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_DOMINO_TILES = UNKNOWN; /** @cvalue UBLOCK_DOMINO_TILES */ #[\Since('8.4')] public const int BLOCK_CODE_DOMINO_TILES = UNKNOWN; /** * @var int * @cvalue UBLOCK_SAMARITAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SAMARITAN = UNKNOWN; /** @cvalue UBLOCK_SAMARITAN */ #[\Since('8.4')] public const int BLOCK_CODE_SAMARITAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED = UNKNOWN; /** @cvalue UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED */ #[\Since('8.4')] public const int BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED = UNKNOWN; /** * @var int * @cvalue UBLOCK_TAI_THAM */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TAI_THAM = UNKNOWN; /** @cvalue UBLOCK_TAI_THAM */ #[\Since('8.4')] public const int BLOCK_CODE_TAI_THAM = UNKNOWN; /** * @var int * @cvalue UBLOCK_VEDIC_EXTENSIONS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_VEDIC_EXTENSIONS = UNKNOWN; /** @cvalue UBLOCK_VEDIC_EXTENSIONS */ #[\Since('8.4')] public const int BLOCK_CODE_VEDIC_EXTENSIONS = UNKNOWN; /** * @var int * @cvalue UBLOCK_LISU */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LISU = UNKNOWN; /** @cvalue UBLOCK_LISU */ #[\Since('8.4')] public const int BLOCK_CODE_LISU = UNKNOWN; /** * @var int * @cvalue UBLOCK_BAMUM */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BAMUM = UNKNOWN; /** @cvalue UBLOCK_BAMUM */ #[\Since('8.4')] public const int BLOCK_CODE_BAMUM = UNKNOWN; /** * @var int * @cvalue UBLOCK_COMMON_INDIC_NUMBER_FORMS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS = UNKNOWN; /** @cvalue UBLOCK_COMMON_INDIC_NUMBER_FORMS */ #[\Since('8.4')] public const int BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS = UNKNOWN; /** * @var int * @cvalue UBLOCK_DEVANAGARI_EXTENDED */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_DEVANAGARI_EXTENDED = UNKNOWN; /** @cvalue UBLOCK_DEVANAGARI_EXTENDED */ #[\Since('8.4')] public const int BLOCK_CODE_DEVANAGARI_EXTENDED = UNKNOWN; /** * @var int * @cvalue UBLOCK_HANGUL_JAMO_EXTENDED_A */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_HANGUL_JAMO_EXTENDED_A = UNKNOWN; /** @cvalue UBLOCK_HANGUL_JAMO_EXTENDED_A */ #[\Since('8.4')] public const int BLOCK_CODE_HANGUL_JAMO_EXTENDED_A = UNKNOWN; /** * @var int * @cvalue UBLOCK_JAVANESE */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_JAVANESE = UNKNOWN; /** @cvalue UBLOCK_JAVANESE */ #[\Since('8.4')] public const int BLOCK_CODE_JAVANESE = UNKNOWN; /** * @var int * @cvalue UBLOCK_MYANMAR_EXTENDED_A */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MYANMAR_EXTENDED_A = UNKNOWN; /** @cvalue UBLOCK_MYANMAR_EXTENDED_A */ #[\Since('8.4')] public const int BLOCK_CODE_MYANMAR_EXTENDED_A = UNKNOWN; /** * @var int * @cvalue UBLOCK_TAI_VIET */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TAI_VIET = UNKNOWN; /** @cvalue UBLOCK_TAI_VIET */ #[\Since('8.4')] public const int BLOCK_CODE_TAI_VIET = UNKNOWN; /** * @var int * @cvalue UBLOCK_MEETEI_MAYEK */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MEETEI_MAYEK = UNKNOWN; /** @cvalue UBLOCK_MEETEI_MAYEK */ #[\Since('8.4')] public const int BLOCK_CODE_MEETEI_MAYEK = UNKNOWN; /** * @var int * @cvalue UBLOCK_HANGUL_JAMO_EXTENDED_B */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_HANGUL_JAMO_EXTENDED_B = UNKNOWN; /** @cvalue UBLOCK_HANGUL_JAMO_EXTENDED_B */ #[\Since('8.4')] public const int BLOCK_CODE_HANGUL_JAMO_EXTENDED_B = UNKNOWN; /** * @var int * @cvalue UBLOCK_IMPERIAL_ARAMAIC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_IMPERIAL_ARAMAIC = UNKNOWN; /** @cvalue UBLOCK_IMPERIAL_ARAMAIC */ #[\Since('8.4')] public const int BLOCK_CODE_IMPERIAL_ARAMAIC = UNKNOWN; /** * @var int * @cvalue UBLOCK_OLD_SOUTH_ARABIAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_OLD_SOUTH_ARABIAN = UNKNOWN; /** @cvalue UBLOCK_OLD_SOUTH_ARABIAN */ #[\Since('8.4')] public const int BLOCK_CODE_OLD_SOUTH_ARABIAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_AVESTAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_AVESTAN = UNKNOWN; /** @cvalue UBLOCK_AVESTAN */ #[\Since('8.4')] public const int BLOCK_CODE_AVESTAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_INSCRIPTIONAL_PARTHIAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_INSCRIPTIONAL_PARTHIAN = UNKNOWN; /** @cvalue UBLOCK_INSCRIPTIONAL_PARTHIAN */ #[\Since('8.4')] public const int BLOCK_CODE_INSCRIPTIONAL_PARTHIAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_INSCRIPTIONAL_PAHLAVI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_INSCRIPTIONAL_PAHLAVI = UNKNOWN; /** @cvalue UBLOCK_INSCRIPTIONAL_PAHLAVI */ #[\Since('8.4')] public const int BLOCK_CODE_INSCRIPTIONAL_PAHLAVI = UNKNOWN; /** * @var int * @cvalue UBLOCK_OLD_TURKIC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_OLD_TURKIC = UNKNOWN; /** @cvalue UBLOCK_OLD_TURKIC */ #[\Since('8.4')] public const int BLOCK_CODE_OLD_TURKIC = UNKNOWN; /** * @var int * @cvalue UBLOCK_RUMI_NUMERAL_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_RUMI_NUMERAL_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_RUMI_NUMERAL_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_RUMI_NUMERAL_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_KAITHI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_KAITHI = UNKNOWN; /** @cvalue UBLOCK_KAITHI */ #[\Since('8.4')] public const int BLOCK_CODE_KAITHI = UNKNOWN; /** * @var int * @cvalue UBLOCK_EGYPTIAN_HIEROGLYPHS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_EGYPTIAN_HIEROGLYPHS = UNKNOWN; /** @cvalue UBLOCK_EGYPTIAN_HIEROGLYPHS */ #[\Since('8.4')] public const int BLOCK_CODE_EGYPTIAN_HIEROGLYPHS = UNKNOWN; /** * @var int * @cvalue UBLOCK_ENCLOSED_ALPHANUMERIC_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_ENCLOSED_ALPHANUMERIC_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C = UNKNOWN; /** @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C */ #[\Since('8.4')] public const int BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C = UNKNOWN; /** * @var int * @cvalue UBLOCK_MANDAIC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MANDAIC = UNKNOWN; /** @cvalue UBLOCK_MANDAIC */ #[\Since('8.4')] public const int BLOCK_CODE_MANDAIC = UNKNOWN; /** * @var int * @cvalue UBLOCK_BATAK */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BATAK = UNKNOWN; /** @cvalue UBLOCK_BATAK */ #[\Since('8.4')] public const int BLOCK_CODE_BATAK = UNKNOWN; /** * @var int * @cvalue UBLOCK_ETHIOPIC_EXTENDED_A */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ETHIOPIC_EXTENDED_A = UNKNOWN; /** @cvalue UBLOCK_ETHIOPIC_EXTENDED_A */ #[\Since('8.4')] public const int BLOCK_CODE_ETHIOPIC_EXTENDED_A = UNKNOWN; /** * @var int * @cvalue UBLOCK_BRAHMI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BRAHMI = UNKNOWN; /** @cvalue UBLOCK_BRAHMI */ #[\Since('8.4')] public const int BLOCK_CODE_BRAHMI = UNKNOWN; /** * @var int * @cvalue UBLOCK_BAMUM_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BAMUM_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_BAMUM_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_BAMUM_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_KANA_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_KANA_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_KANA_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_KANA_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_PLAYING_CARDS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_PLAYING_CARDS = UNKNOWN; /** @cvalue UBLOCK_PLAYING_CARDS */ #[\Since('8.4')] public const int BLOCK_CODE_PLAYING_CARDS = UNKNOWN; /** * @var int * @cvalue UBLOCK_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS = UNKNOWN; /** @cvalue UBLOCK_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS */ #[\Since('8.4')] public const int BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS = UNKNOWN; /** * @var int * @cvalue UBLOCK_EMOTICONS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_EMOTICONS = UNKNOWN; /** @cvalue UBLOCK_EMOTICONS */ #[\Since('8.4')] public const int BLOCK_CODE_EMOTICONS = UNKNOWN; /** * @var int * @cvalue UBLOCK_TRANSPORT_AND_MAP_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_TRANSPORT_AND_MAP_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_ALCHEMICAL_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ALCHEMICAL_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_ALCHEMICAL_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_ALCHEMICAL_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D = UNKNOWN; /** @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D */ #[\Since('8.4')] public const int BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D = UNKNOWN; /** * @var int * @cvalue UBLOCK_ARABIC_EXTENDED_A */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ARABIC_EXTENDED_A = UNKNOWN; /** @cvalue UBLOCK_ARABIC_EXTENDED_A */ #[\Since('8.4')] public const int BLOCK_CODE_ARABIC_EXTENDED_A = UNKNOWN; /** * @var int * @cvalue UBLOCK_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS = UNKNOWN; /** @cvalue UBLOCK_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS */ #[\Since('8.4')] public const int BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_CHAKMA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CHAKMA = UNKNOWN; /** @cvalue UBLOCK_CHAKMA */ #[\Since('8.4')] public const int BLOCK_CODE_CHAKMA = UNKNOWN; /** * @var int * @cvalue UBLOCK_MEETEI_MAYEK_EXTENSIONS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS = UNKNOWN; /** @cvalue UBLOCK_MEETEI_MAYEK_EXTENSIONS */ #[\Since('8.4')] public const int BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS = UNKNOWN; /** * @var int * @cvalue UBLOCK_MEROITIC_CURSIVE */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MEROITIC_CURSIVE = UNKNOWN; /** @cvalue UBLOCK_MEROITIC_CURSIVE */ #[\Since('8.4')] public const int BLOCK_CODE_MEROITIC_CURSIVE = UNKNOWN; /** * @var int * @cvalue UBLOCK_MEROITIC_HIEROGLYPHS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MEROITIC_HIEROGLYPHS = UNKNOWN; /** @cvalue UBLOCK_MEROITIC_HIEROGLYPHS */ #[\Since('8.4')] public const int BLOCK_CODE_MEROITIC_HIEROGLYPHS = UNKNOWN; /** * @var int * @cvalue UBLOCK_MIAO */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MIAO = UNKNOWN; /** @cvalue UBLOCK_MIAO */ #[\Since('8.4')] public const int BLOCK_CODE_MIAO = UNKNOWN; /** * @var int * @cvalue UBLOCK_SHARADA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SHARADA = UNKNOWN; /** @cvalue UBLOCK_SHARADA */ #[\Since('8.4')] public const int BLOCK_CODE_SHARADA = UNKNOWN; /** * @var int * @cvalue UBLOCK_SORA_SOMPENG */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SORA_SOMPENG = UNKNOWN; /** @cvalue UBLOCK_SORA_SOMPENG */ #[\Since('8.4')] public const int BLOCK_CODE_SORA_SOMPENG = UNKNOWN; /** * @var int * @cvalue UBLOCK_SUNDANESE_SUPPLEMENT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SUNDANESE_SUPPLEMENT = UNKNOWN; /** @cvalue UBLOCK_SUNDANESE_SUPPLEMENT */ #[\Since('8.4')] public const int BLOCK_CODE_SUNDANESE_SUPPLEMENT = UNKNOWN; /** * @var int * @cvalue UBLOCK_TAKRI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TAKRI = UNKNOWN; /** @cvalue UBLOCK_TAKRI */ #[\Since('8.4')] public const int BLOCK_CODE_TAKRI = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 54 /** * @var int * @cvalue UBLOCK_BASSA_VAH */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_BASSA_VAH = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 54 /** @cvalue UBLOCK_BASSA_VAH */ #[\Since('8.4')] public const int BLOCK_CODE_BASSA_VAH = UNKNOWN; /** * @var int * @cvalue UBLOCK_CAUCASIAN_ALBANIAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_CAUCASIAN_ALBANIAN = UNKNOWN; /** @cvalue UBLOCK_CAUCASIAN_ALBANIAN */ #[\Since('8.4')] public const int BLOCK_CODE_CAUCASIAN_ALBANIAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_COPTIC_EPACT_NUMBERS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_COPTIC_EPACT_NUMBERS = UNKNOWN; /** @cvalue UBLOCK_COPTIC_EPACT_NUMBERS */ #[\Since('8.4')] public const int BLOCK_CODE_COPTIC_EPACT_NUMBERS = UNKNOWN; /** * @var int * @cvalue UBLOCK_COMBINING_DIACRITICAL_MARKS_EXTENDED */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED = UNKNOWN; /** @cvalue UBLOCK_COMBINING_DIACRITICAL_MARKS_EXTENDED */ #[\Since('8.4')] public const int BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED = UNKNOWN; /** * @var int * @cvalue UBLOCK_DUPLOYAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_DUPLOYAN = UNKNOWN; /** @cvalue UBLOCK_DUPLOYAN */ #[\Since('8.4')] public const int BLOCK_CODE_DUPLOYAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_ELBASAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ELBASAN = UNKNOWN; /** @cvalue UBLOCK_ELBASAN */ #[\Since('8.4')] public const int BLOCK_CODE_ELBASAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_GEOMETRIC_SHAPES_EXTENDED */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED = UNKNOWN; /** @cvalue UBLOCK_GEOMETRIC_SHAPES_EXTENDED */ #[\Since('8.4')] public const int BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED = UNKNOWN; /** * @var int * @cvalue UBLOCK_GRANTHA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_GRANTHA = UNKNOWN; /** @cvalue UBLOCK_GRANTHA */ #[\Since('8.4')] public const int BLOCK_CODE_GRANTHA = UNKNOWN; /** * @var int * @cvalue UBLOCK_KHOJKI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_KHOJKI = UNKNOWN; /** @cvalue UBLOCK_KHOJKI */ #[\Since('8.4')] public const int BLOCK_CODE_KHOJKI = UNKNOWN; /** * @var int * @cvalue UBLOCK_KHUDAWADI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_KHUDAWADI = UNKNOWN; /** @cvalue UBLOCK_KHUDAWADI */ #[\Since('8.4')] public const int BLOCK_CODE_KHUDAWADI = UNKNOWN; /** * @var int * @cvalue UBLOCK_LATIN_EXTENDED_E */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LATIN_EXTENDED_E = UNKNOWN; /** @cvalue UBLOCK_LATIN_EXTENDED_E */ #[\Since('8.4')] public const int BLOCK_CODE_LATIN_EXTENDED_E = UNKNOWN; /** * @var int * @cvalue UBLOCK_LINEAR_A */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_LINEAR_A = UNKNOWN; /** @cvalue UBLOCK_LINEAR_A */ #[\Since('8.4')] public const int BLOCK_CODE_LINEAR_A = UNKNOWN; /** * @var int * @cvalue UBLOCK_MAHAJANI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MAHAJANI = UNKNOWN; /** @cvalue UBLOCK_MAHAJANI */ #[\Since('8.4')] public const int BLOCK_CODE_MAHAJANI = UNKNOWN; /** * @var int * @cvalue UBLOCK_MANICHAEAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MANICHAEAN = UNKNOWN; /** @cvalue UBLOCK_MANICHAEAN */ #[\Since('8.4')] public const int BLOCK_CODE_MANICHAEAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_MENDE_KIKAKUI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MENDE_KIKAKUI = UNKNOWN; /** @cvalue UBLOCK_MENDE_KIKAKUI */ #[\Since('8.4')] public const int BLOCK_CODE_MENDE_KIKAKUI = UNKNOWN; /** * @var int * @cvalue UBLOCK_MODI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MODI = UNKNOWN; /** @cvalue UBLOCK_MODI */ #[\Since('8.4')] public const int BLOCK_CODE_MODI = UNKNOWN; /** * @var int * @cvalue UBLOCK_MRO */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MRO = UNKNOWN; /** @cvalue UBLOCK_MRO */ #[\Since('8.4')] public const int BLOCK_CODE_MRO = UNKNOWN; /** * @var int * @cvalue UBLOCK_MYANMAR_EXTENDED_B */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_MYANMAR_EXTENDED_B = UNKNOWN; /** @cvalue UBLOCK_MYANMAR_EXTENDED_B */ #[\Since('8.4')] public const int BLOCK_CODE_MYANMAR_EXTENDED_B = UNKNOWN; /** * @var int * @cvalue UBLOCK_NABATAEAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_NABATAEAN = UNKNOWN; /** @cvalue UBLOCK_NABATAEAN */ #[\Since('8.4')] public const int BLOCK_CODE_NABATAEAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_OLD_NORTH_ARABIAN */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_OLD_NORTH_ARABIAN = UNKNOWN; /** @cvalue UBLOCK_OLD_NORTH_ARABIAN */ #[\Since('8.4')] public const int BLOCK_CODE_OLD_NORTH_ARABIAN = UNKNOWN; /** * @var int * @cvalue UBLOCK_OLD_PERMIC */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_OLD_PERMIC = UNKNOWN; /** @cvalue UBLOCK_OLD_PERMIC */ #[\Since('8.4')] public const int BLOCK_CODE_OLD_PERMIC = UNKNOWN; /** * @var int * @cvalue UBLOCK_ORNAMENTAL_DINGBATS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_ORNAMENTAL_DINGBATS = UNKNOWN; /** @cvalue UBLOCK_ORNAMENTAL_DINGBATS */ #[\Since('8.4')] public const int BLOCK_CODE_ORNAMENTAL_DINGBATS = UNKNOWN; /** * @var int * @cvalue UBLOCK_PAHAWH_HMONG */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_PAHAWH_HMONG = UNKNOWN; /** @cvalue UBLOCK_PAHAWH_HMONG */ #[\Since('8.4')] public const int BLOCK_CODE_PAHAWH_HMONG = UNKNOWN; /** * @var int * @cvalue UBLOCK_PALMYRENE */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_PALMYRENE = UNKNOWN; /** @cvalue UBLOCK_PALMYRENE */ #[\Since('8.4')] public const int BLOCK_CODE_PALMYRENE = UNKNOWN; /** * @var int * @cvalue UBLOCK_PAU_CIN_HAU */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_PAU_CIN_HAU = UNKNOWN; /** @cvalue UBLOCK_PAU_CIN_HAU */ #[\Since('8.4')] public const int BLOCK_CODE_PAU_CIN_HAU = UNKNOWN; /** * @var int * @cvalue UBLOCK_PSALTER_PAHLAVI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_PSALTER_PAHLAVI = UNKNOWN; /** @cvalue UBLOCK_PSALTER_PAHLAVI */ #[\Since('8.4')] public const int BLOCK_CODE_PSALTER_PAHLAVI = UNKNOWN; /** * @var int * @cvalue UBLOCK_SHORTHAND_FORMAT_CONTROLS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS = UNKNOWN; /** @cvalue UBLOCK_SHORTHAND_FORMAT_CONTROLS */ #[\Since('8.4')] public const int BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS = UNKNOWN; /** * @var int * @cvalue UBLOCK_SIDDHAM */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SIDDHAM = UNKNOWN; /** @cvalue UBLOCK_SIDDHAM */ #[\Since('8.4')] public const int BLOCK_CODE_SIDDHAM = UNKNOWN; /** * @var int * @cvalue UBLOCK_SINHALA_ARCHAIC_NUMBERS */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS = UNKNOWN; /** @cvalue UBLOCK_SINHALA_ARCHAIC_NUMBERS */ #[\Since('8.4')] public const int BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS = UNKNOWN; /** * @var int * @cvalue UBLOCK_SUPPLEMENTAL_ARROWS_C */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_SUPPLEMENTAL_ARROWS_C = UNKNOWN; /** @cvalue UBLOCK_SUPPLEMENTAL_ARROWS_C */ #[\Since('8.4')] public const int BLOCK_CODE_SUPPLEMENTAL_ARROWS_C = UNKNOWN; /** * @var int * @cvalue UBLOCK_TIRHUTA */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_TIRHUTA = UNKNOWN; /** @cvalue UBLOCK_TIRHUTA */ #[\Since('8.4')] public const int BLOCK_CODE_TIRHUTA = UNKNOWN; /** * @var int * @cvalue UBLOCK_WARANG_CITI */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_WARANG_CITI = UNKNOWN; /** @cvalue UBLOCK_WARANG_CITI */ #[\Since('8.4')] public const int BLOCK_CODE_WARANG_CITI = UNKNOWN; #endif /** * @var int * @cvalue UBLOCK_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_COUNT = UNKNOWN; #endif /** @cvalue UBLOCK_COUNT */ #[\Since('8.4')] public const int BLOCK_CODE_COUNT = UNKNOWN; /** * @var int * @cvalue UBLOCK_INVALID_CODE */ #[\Since('8.2')] #[\Until('8.4')] public const BLOCK_CODE_INVALID_CODE = UNKNOWN; /** @cvalue UBLOCK_INVALID_CODE */ #[\Since('8.4')] public const int BLOCK_CODE_INVALID_CODE = UNKNOWN; /* UBidiPairedBracketType - http://icu-project.org/apiref/icu4c/uchar_8h.html#af954219aa1df452657ec355221c6703d */ #if U_ICU_VERSION_MAJOR_NUM >= 52 /** * @var int * @cvalue U_BPT_NONE */ #[\Since('8.2')] #[\Until('8.4')] public const BPT_NONE = UNKNOWN; /* UBidiPairedBracketType - http://icu-project.org/apiref/icu4c/uchar_8h.html#af954219aa1df452657ec355221c6703d */ #if U_ICU_VERSION_MAJOR_NUM >= 52 /** @cvalue U_BPT_NONE */ #[\Since('8.4')] public const int BPT_NONE = UNKNOWN; /** * @var int * @cvalue U_BPT_OPEN */ #[\Since('8.2')] #[\Until('8.4')] public const BPT_OPEN = UNKNOWN; /** @cvalue U_BPT_OPEN */ #[\Since('8.4')] public const int BPT_OPEN = UNKNOWN; /** * @var int * @cvalue U_BPT_CLOSE */ #[\Since('8.2')] #[\Until('8.4')] public const BPT_CLOSE = UNKNOWN; /** @cvalue U_BPT_CLOSE */ #[\Since('8.4')] public const int BPT_CLOSE = UNKNOWN; /** * @var int * @cvalue U_BPT_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const BPT_COUNT = UNKNOWN; /** @cvalue U_BPT_COUNT */ #[\Since('8.4')] public const int BPT_COUNT = UNKNOWN; #endif /* UEastAsianWidth - http://icu-project.org/apiref/icu4c/uchar_8h.html#a95cc2ca2f9cfd6d0c63eee2c65951333 */ /** * @var int * @cvalue U_EA_NEUTRAL */ #[\Since('8.2')] #[\Until('8.4')] public const EA_NEUTRAL = UNKNOWN; #endif /* UEastAsianWidth - http://icu-project.org/apiref/icu4c/uchar_8h.html#a95cc2ca2f9cfd6d0c63eee2c65951333 */ /** @cvalue U_EA_NEUTRAL */ #[\Since('8.4')] public const int EA_NEUTRAL = UNKNOWN; /** * @var int * @cvalue U_EA_AMBIGUOUS */ #[\Since('8.2')] #[\Until('8.4')] public const EA_AMBIGUOUS = UNKNOWN; /** @cvalue U_EA_AMBIGUOUS */ #[\Since('8.4')] public const int EA_AMBIGUOUS = UNKNOWN; /** * @var int * @cvalue U_EA_HALFWIDTH */ #[\Since('8.2')] #[\Until('8.4')] public const EA_HALFWIDTH = UNKNOWN; /** @cvalue U_EA_HALFWIDTH */ #[\Since('8.4')] public const int EA_HALFWIDTH = UNKNOWN; /** * @var int * @cvalue U_EA_FULLWIDTH */ #[\Since('8.2')] #[\Until('8.4')] public const EA_FULLWIDTH = UNKNOWN; /** @cvalue U_EA_FULLWIDTH */ #[\Since('8.4')] public const int EA_FULLWIDTH = UNKNOWN; /** * @var int * @cvalue U_EA_NARROW */ #[\Since('8.2')] #[\Until('8.4')] public const EA_NARROW = UNKNOWN; /** @cvalue U_EA_NARROW */ #[\Since('8.4')] public const int EA_NARROW = UNKNOWN; /** * @var int * @cvalue U_EA_WIDE */ #[\Since('8.2')] #[\Until('8.4')] public const EA_WIDE = UNKNOWN; /** @cvalue U_EA_WIDE */ #[\Since('8.4')] public const int EA_WIDE = UNKNOWN; /** * @var int * @cvalue U_EA_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const EA_COUNT = UNKNOWN; /** @cvalue U_EA_COUNT */ #[\Since('8.4')] public const int EA_COUNT = UNKNOWN; /* UCharNameChoice - http://icu-project.org/apiref/icu4c/uchar_8h.html#a2ba37edcca62eff48226e8096035addf */ /** * @var int * @cvalue U_UNICODE_CHAR_NAME */ #[\Since('8.2')] #[\Until('8.4')] public const UNICODE_CHAR_NAME = UNKNOWN; /* UCharNameChoice - http://icu-project.org/apiref/icu4c/uchar_8h.html#a2ba37edcca62eff48226e8096035addf */ /** @cvalue U_UNICODE_CHAR_NAME */ #[\Since('8.4')] public const int UNICODE_CHAR_NAME = UNKNOWN; /** * @var int * @cvalue U_UNICODE_10_CHAR_NAME */ #[\Since('8.2')] #[\Until('8.4')] public const UNICODE_10_CHAR_NAME = UNKNOWN; /** @cvalue U_UNICODE_10_CHAR_NAME */ #[\Since('8.4')] public const int UNICODE_10_CHAR_NAME = UNKNOWN; /** * @var int * @cvalue U_EXTENDED_CHAR_NAME */ #[\Since('8.2')] #[\Until('8.4')] public const EXTENDED_CHAR_NAME = UNKNOWN; /** @cvalue U_EXTENDED_CHAR_NAME */ #[\Since('8.4')] public const int EXTENDED_CHAR_NAME = UNKNOWN; /** * @var int * @cvalue U_CHAR_NAME_ALIAS */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_NAME_ALIAS = UNKNOWN; /** @cvalue U_CHAR_NAME_ALIAS */ #[\Since('8.4')] public const int CHAR_NAME_ALIAS = UNKNOWN; /** * @var int * @cvalue U_CHAR_NAME_CHOICE_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const CHAR_NAME_CHOICE_COUNT = UNKNOWN; /** @cvalue U_CHAR_NAME_CHOICE_COUNT */ #[\Since('8.4')] public const int CHAR_NAME_CHOICE_COUNT = UNKNOWN; /* UPropertyNameChoice - http://icu-project.org/apiref/icu4c/uchar_8h.html#a5056494c7d5a2c7185f3c464f48fe5d1 */ /** * @var int * @cvalue U_SHORT_PROPERTY_NAME */ #[\Since('8.2')] #[\Until('8.4')] public const SHORT_PROPERTY_NAME = UNKNOWN; /* UPropertyNameChoice - http://icu-project.org/apiref/icu4c/uchar_8h.html#a5056494c7d5a2c7185f3c464f48fe5d1 */ /** @cvalue U_SHORT_PROPERTY_NAME */ #[\Since('8.4')] public const int SHORT_PROPERTY_NAME = UNKNOWN; /** * @var int * @cvalue U_LONG_PROPERTY_NAME */ #[\Since('8.2')] #[\Until('8.4')] public const LONG_PROPERTY_NAME = UNKNOWN; /** @cvalue U_LONG_PROPERTY_NAME */ #[\Since('8.4')] public const int LONG_PROPERTY_NAME = UNKNOWN; /** * @var int * @cvalue U_PROPERTY_NAME_CHOICE_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const PROPERTY_NAME_CHOICE_COUNT = UNKNOWN; /** @cvalue U_PROPERTY_NAME_CHOICE_COUNT */ #[\Since('8.4')] public const int PROPERTY_NAME_CHOICE_COUNT = UNKNOWN; /* UDecompositionType - http://icu-project.org/apiref/icu4c/uchar_8h.html#ae2c56994fcf28062c7e77beb671533f5 */ /** * @var int * @cvalue U_DT_NONE */ #[\Since('8.2')] #[\Until('8.4')] public const DT_NONE = UNKNOWN; /* UDecompositionType - http://icu-project.org/apiref/icu4c/uchar_8h.html#ae2c56994fcf28062c7e77beb671533f5 */ /** @cvalue U_DT_NONE */ #[\Since('8.4')] public const int DT_NONE = UNKNOWN; /** * @var int * @cvalue U_DT_CANONICAL */ #[\Since('8.2')] #[\Until('8.4')] public const DT_CANONICAL = UNKNOWN; /** @cvalue U_DT_CANONICAL */ #[\Since('8.4')] public const int DT_CANONICAL = UNKNOWN; /** * @var int * @cvalue U_DT_COMPAT */ #[\Since('8.2')] #[\Until('8.4')] public const DT_COMPAT = UNKNOWN; /** @cvalue U_DT_COMPAT */ #[\Since('8.4')] public const int DT_COMPAT = UNKNOWN; /** * @var int * @cvalue U_DT_CIRCLE */ #[\Since('8.2')] #[\Until('8.4')] public const DT_CIRCLE = UNKNOWN; /** @cvalue U_DT_CIRCLE */ #[\Since('8.4')] public const int DT_CIRCLE = UNKNOWN; /** * @var int * @cvalue U_DT_FINAL */ #[\Since('8.2')] #[\Until('8.4')] public const DT_FINAL = UNKNOWN; /** @cvalue U_DT_FINAL */ #[\Since('8.4')] public const int DT_FINAL = UNKNOWN; /** * @var int * @cvalue U_DT_FONT */ #[\Since('8.2')] #[\Until('8.4')] public const DT_FONT = UNKNOWN; /** @cvalue U_DT_FONT */ #[\Since('8.4')] public const int DT_FONT = UNKNOWN; /** * @var int * @cvalue U_DT_FRACTION */ #[\Since('8.2')] #[\Until('8.4')] public const DT_FRACTION = UNKNOWN; /** @cvalue U_DT_FRACTION */ #[\Since('8.4')] public const int DT_FRACTION = UNKNOWN; /** * @var int * @cvalue U_DT_INITIAL */ #[\Since('8.2')] #[\Until('8.4')] public const DT_INITIAL = UNKNOWN; /** @cvalue U_DT_INITIAL */ #[\Since('8.4')] public const int DT_INITIAL = UNKNOWN; /** * @var int * @cvalue U_DT_ISOLATED */ #[\Since('8.2')] #[\Until('8.4')] public const DT_ISOLATED = UNKNOWN; /** @cvalue U_DT_ISOLATED */ #[\Since('8.4')] public const int DT_ISOLATED = UNKNOWN; /** * @var int * @cvalue U_DT_MEDIAL */ #[\Since('8.2')] #[\Until('8.4')] public const DT_MEDIAL = UNKNOWN; /** @cvalue U_DT_MEDIAL */ #[\Since('8.4')] public const int DT_MEDIAL = UNKNOWN; /** * @var int * @cvalue U_DT_NARROW */ #[\Since('8.2')] #[\Until('8.4')] public const DT_NARROW = UNKNOWN; /** @cvalue U_DT_NARROW */ #[\Since('8.4')] public const int DT_NARROW = UNKNOWN; /** * @var int * @cvalue U_DT_NOBREAK */ #[\Since('8.2')] #[\Until('8.4')] public const DT_NOBREAK = UNKNOWN; /** @cvalue U_DT_NOBREAK */ #[\Since('8.4')] public const int DT_NOBREAK = UNKNOWN; /** * @var int * @cvalue U_DT_SMALL */ #[\Since('8.2')] #[\Until('8.4')] public const DT_SMALL = UNKNOWN; /** @cvalue U_DT_SMALL */ #[\Since('8.4')] public const int DT_SMALL = UNKNOWN; /** * @var int * @cvalue U_DT_SQUARE */ #[\Since('8.2')] #[\Until('8.4')] public const DT_SQUARE = UNKNOWN; /** @cvalue U_DT_SQUARE */ #[\Since('8.4')] public const int DT_SQUARE = UNKNOWN; /** * @var int * @cvalue U_DT_SUB */ #[\Since('8.2')] #[\Until('8.4')] public const DT_SUB = UNKNOWN; /** @cvalue U_DT_SUB */ #[\Since('8.4')] public const int DT_SUB = UNKNOWN; /** * @var int * @cvalue U_DT_SUPER */ #[\Since('8.2')] #[\Until('8.4')] public const DT_SUPER = UNKNOWN; /** @cvalue U_DT_SUPER */ #[\Since('8.4')] public const int DT_SUPER = UNKNOWN; /** * @var int * @cvalue U_DT_VERTICAL */ #[\Since('8.2')] #[\Until('8.4')] public const DT_VERTICAL = UNKNOWN; /** @cvalue U_DT_VERTICAL */ #[\Since('8.4')] public const int DT_VERTICAL = UNKNOWN; /** * @var int * @cvalue U_DT_WIDE */ #[\Since('8.2')] #[\Until('8.4')] public const DT_WIDE = UNKNOWN; /** @cvalue U_DT_WIDE */ #[\Since('8.4')] public const int DT_WIDE = UNKNOWN; /** * @var int * @cvalue U_DT_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const DT_COUNT = UNKNOWN; /** @cvalue U_DT_COUNT */ #[\Since('8.4')] public const int DT_COUNT = UNKNOWN; /* UJoiningType - http://icu-project.org/apiref/icu4c/uchar_8h.html#a3ce1ce20e7f3b8534eb3490ad3aba3dd */ /** * @var int * @cvalue U_JT_NON_JOINING */ #[\Since('8.2')] #[\Until('8.4')] public const JT_NON_JOINING = UNKNOWN; /* UJoiningType - http://icu-project.org/apiref/icu4c/uchar_8h.html#a3ce1ce20e7f3b8534eb3490ad3aba3dd */ /** @cvalue U_JT_NON_JOINING */ #[\Since('8.4')] public const int JT_NON_JOINING = UNKNOWN; /** * @var int * @cvalue U_JT_JOIN_CAUSING */ #[\Since('8.2')] #[\Until('8.4')] public const JT_JOIN_CAUSING = UNKNOWN; /** @cvalue U_JT_JOIN_CAUSING */ #[\Since('8.4')] public const int JT_JOIN_CAUSING = UNKNOWN; /** * @var int * @cvalue U_JT_DUAL_JOINING */ #[\Since('8.2')] #[\Until('8.4')] public const JT_DUAL_JOINING = UNKNOWN; /** @cvalue U_JT_DUAL_JOINING */ #[\Since('8.4')] public const int JT_DUAL_JOINING = UNKNOWN; /** * @var int * @cvalue U_JT_LEFT_JOINING */ #[\Since('8.2')] #[\Until('8.4')] public const JT_LEFT_JOINING = UNKNOWN; /** @cvalue U_JT_LEFT_JOINING */ #[\Since('8.4')] public const int JT_LEFT_JOINING = UNKNOWN; /** * @var int * @cvalue U_JT_RIGHT_JOINING */ #[\Since('8.2')] #[\Until('8.4')] public const JT_RIGHT_JOINING = UNKNOWN; /** @cvalue U_JT_RIGHT_JOINING */ #[\Since('8.4')] public const int JT_RIGHT_JOINING = UNKNOWN; /** * @var int * @cvalue U_JT_TRANSPARENT */ #[\Since('8.2')] #[\Until('8.4')] public const JT_TRANSPARENT = UNKNOWN; /** @cvalue U_JT_TRANSPARENT */ #[\Since('8.4')] public const int JT_TRANSPARENT = UNKNOWN; /** * @var int * @cvalue U_JT_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const JT_COUNT = UNKNOWN; /** @cvalue U_JT_COUNT */ #[\Since('8.4')] public const int JT_COUNT = UNKNOWN; /* UJoiningGroup - http://icu-project.org/apiref/icu4c/uchar_8h.html#a7887844ec0872e6e9a283e0825fcae65 */ /** * @var int * @cvalue U_JG_NO_JOINING_GROUP */ #[\Since('8.2')] #[\Until('8.4')] public const JG_NO_JOINING_GROUP = UNKNOWN; /* UJoiningGroup - http://icu-project.org/apiref/icu4c/uchar_8h.html#a7887844ec0872e6e9a283e0825fcae65 */ /** @cvalue U_JG_NO_JOINING_GROUP */ #[\Since('8.4')] public const int JG_NO_JOINING_GROUP = UNKNOWN; /** * @var int * @cvalue U_JG_AIN */ #[\Since('8.2')] #[\Until('8.4')] public const JG_AIN = UNKNOWN; /** @cvalue U_JG_AIN */ #[\Since('8.4')] public const int JG_AIN = UNKNOWN; /** * @var int * @cvalue U_JG_ALAPH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_ALAPH = UNKNOWN; /** @cvalue U_JG_ALAPH */ #[\Since('8.4')] public const int JG_ALAPH = UNKNOWN; /** * @var int * @cvalue U_JG_ALEF */ #[\Since('8.2')] #[\Until('8.4')] public const JG_ALEF = UNKNOWN; /** @cvalue U_JG_ALEF */ #[\Since('8.4')] public const int JG_ALEF = UNKNOWN; /** * @var int * @cvalue U_JG_BEH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_BEH = UNKNOWN; /** @cvalue U_JG_BEH */ #[\Since('8.4')] public const int JG_BEH = UNKNOWN; /** * @var int * @cvalue U_JG_BETH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_BETH = UNKNOWN; /** @cvalue U_JG_BETH */ #[\Since('8.4')] public const int JG_BETH = UNKNOWN; /** * @var int * @cvalue U_JG_DAL */ #[\Since('8.2')] #[\Until('8.4')] public const JG_DAL = UNKNOWN; /** @cvalue U_JG_DAL */ #[\Since('8.4')] public const int JG_DAL = UNKNOWN; /** * @var int * @cvalue U_JG_DALATH_RISH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_DALATH_RISH = UNKNOWN; /** @cvalue U_JG_DALATH_RISH */ #[\Since('8.4')] public const int JG_DALATH_RISH = UNKNOWN; /** * @var int * @cvalue U_JG_E */ #[\Since('8.2')] #[\Until('8.4')] public const JG_E = UNKNOWN; /** @cvalue U_JG_E */ #[\Since('8.4')] public const int JG_E = UNKNOWN; /** * @var int * @cvalue U_JG_FEH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_FEH = UNKNOWN; /** @cvalue U_JG_FEH */ #[\Since('8.4')] public const int JG_FEH = UNKNOWN; /** * @var int * @cvalue U_JG_FINAL_SEMKATH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_FINAL_SEMKATH = UNKNOWN; /** @cvalue U_JG_FINAL_SEMKATH */ #[\Since('8.4')] public const int JG_FINAL_SEMKATH = UNKNOWN; /** * @var int * @cvalue U_JG_GAF */ #[\Since('8.2')] #[\Until('8.4')] public const JG_GAF = UNKNOWN; /** @cvalue U_JG_GAF */ #[\Since('8.4')] public const int JG_GAF = UNKNOWN; /** * @var int * @cvalue U_JG_GAMAL */ #[\Since('8.2')] #[\Until('8.4')] public const JG_GAMAL = UNKNOWN; /** @cvalue U_JG_GAMAL */ #[\Since('8.4')] public const int JG_GAMAL = UNKNOWN; /** * @var int * @cvalue U_JG_HAH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_HAH = UNKNOWN; /** @cvalue U_JG_HAH */ #[\Since('8.4')] public const int JG_HAH = UNKNOWN; /** * @var int * @cvalue U_JG_TEH_MARBUTA_GOAL */ #[\Since('8.2')] #[\Until('8.4')] public const JG_TEH_MARBUTA_GOAL = UNKNOWN; /** @cvalue U_JG_TEH_MARBUTA_GOAL */ #[\Since('8.4')] public const int JG_TEH_MARBUTA_GOAL = UNKNOWN; /** * @var int * @cvalue U_JG_HAMZA_ON_HEH_GOAL */ #[\Since('8.2')] #[\Until('8.4')] public const JG_HAMZA_ON_HEH_GOAL = UNKNOWN; /** @cvalue U_JG_HAMZA_ON_HEH_GOAL */ #[\Since('8.4')] public const int JG_HAMZA_ON_HEH_GOAL = UNKNOWN; /** * @var int * @cvalue U_JG_HE */ #[\Since('8.2')] #[\Until('8.4')] public const JG_HE = UNKNOWN; /** @cvalue U_JG_HE */ #[\Since('8.4')] public const int JG_HE = UNKNOWN; /** * @var int * @cvalue U_JG_HEH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_HEH = UNKNOWN; /** @cvalue U_JG_HEH */ #[\Since('8.4')] public const int JG_HEH = UNKNOWN; /** * @var int * @cvalue U_JG_HEH_GOAL */ #[\Since('8.2')] #[\Until('8.4')] public const JG_HEH_GOAL = UNKNOWN; /** @cvalue U_JG_HEH_GOAL */ #[\Since('8.4')] public const int JG_HEH_GOAL = UNKNOWN; /** * @var int * @cvalue U_JG_HETH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_HETH = UNKNOWN; /** @cvalue U_JG_HETH */ #[\Since('8.4')] public const int JG_HETH = UNKNOWN; /** * @var int * @cvalue U_JG_KAF */ #[\Since('8.2')] #[\Until('8.4')] public const JG_KAF = UNKNOWN; /** @cvalue U_JG_KAF */ #[\Since('8.4')] public const int JG_KAF = UNKNOWN; /** * @var int * @cvalue U_JG_KAPH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_KAPH = UNKNOWN; /** @cvalue U_JG_KAPH */ #[\Since('8.4')] public const int JG_KAPH = UNKNOWN; /** * @var int * @cvalue U_JG_KNOTTED_HEH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_KNOTTED_HEH = UNKNOWN; /** @cvalue U_JG_KNOTTED_HEH */ #[\Since('8.4')] public const int JG_KNOTTED_HEH = UNKNOWN; /** * @var int * @cvalue U_JG_LAM */ #[\Since('8.2')] #[\Until('8.4')] public const JG_LAM = UNKNOWN; /** @cvalue U_JG_LAM */ #[\Since('8.4')] public const int JG_LAM = UNKNOWN; /** * @var int * @cvalue U_JG_LAMADH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_LAMADH = UNKNOWN; /** @cvalue U_JG_LAMADH */ #[\Since('8.4')] public const int JG_LAMADH = UNKNOWN; /** * @var int * @cvalue U_JG_MEEM */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MEEM = UNKNOWN; /** @cvalue U_JG_MEEM */ #[\Since('8.4')] public const int JG_MEEM = UNKNOWN; /** * @var int * @cvalue U_JG_MIM */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MIM = UNKNOWN; /** @cvalue U_JG_MIM */ #[\Since('8.4')] public const int JG_MIM = UNKNOWN; /** * @var int * @cvalue U_JG_NOON */ #[\Since('8.2')] #[\Until('8.4')] public const JG_NOON = UNKNOWN; /** @cvalue U_JG_NOON */ #[\Since('8.4')] public const int JG_NOON = UNKNOWN; /** * @var int * @cvalue U_JG_NUN */ #[\Since('8.2')] #[\Until('8.4')] public const JG_NUN = UNKNOWN; /** @cvalue U_JG_NUN */ #[\Since('8.4')] public const int JG_NUN = UNKNOWN; /** * @var int * @cvalue U_JG_PE */ #[\Since('8.2')] #[\Until('8.4')] public const JG_PE = UNKNOWN; /** @cvalue U_JG_PE */ #[\Since('8.4')] public const int JG_PE = UNKNOWN; /** * @var int * @cvalue U_JG_QAF */ #[\Since('8.2')] #[\Until('8.4')] public const JG_QAF = UNKNOWN; /** @cvalue U_JG_QAF */ #[\Since('8.4')] public const int JG_QAF = UNKNOWN; /** * @var int * @cvalue U_JG_QAPH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_QAPH = UNKNOWN; /** @cvalue U_JG_QAPH */ #[\Since('8.4')] public const int JG_QAPH = UNKNOWN; /** * @var int * @cvalue U_JG_REH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_REH = UNKNOWN; /** @cvalue U_JG_REH */ #[\Since('8.4')] public const int JG_REH = UNKNOWN; /** * @var int * @cvalue U_JG_REVERSED_PE */ #[\Since('8.2')] #[\Until('8.4')] public const JG_REVERSED_PE = UNKNOWN; /** @cvalue U_JG_REVERSED_PE */ #[\Since('8.4')] public const int JG_REVERSED_PE = UNKNOWN; /** * @var int * @cvalue U_JG_SAD */ #[\Since('8.2')] #[\Until('8.4')] public const JG_SAD = UNKNOWN; /** @cvalue U_JG_SAD */ #[\Since('8.4')] public const int JG_SAD = UNKNOWN; /** * @var int * @cvalue U_JG_SADHE */ #[\Since('8.2')] #[\Until('8.4')] public const JG_SADHE = UNKNOWN; /** @cvalue U_JG_SADHE */ #[\Since('8.4')] public const int JG_SADHE = UNKNOWN; /** * @var int * @cvalue U_JG_SEEN */ #[\Since('8.2')] #[\Until('8.4')] public const JG_SEEN = UNKNOWN; /** @cvalue U_JG_SEEN */ #[\Since('8.4')] public const int JG_SEEN = UNKNOWN; /** * @var int * @cvalue U_JG_SEMKATH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_SEMKATH = UNKNOWN; /** @cvalue U_JG_SEMKATH */ #[\Since('8.4')] public const int JG_SEMKATH = UNKNOWN; /** * @var int * @cvalue U_JG_SHIN */ #[\Since('8.2')] #[\Until('8.4')] public const JG_SHIN = UNKNOWN; /** @cvalue U_JG_SHIN */ #[\Since('8.4')] public const int JG_SHIN = UNKNOWN; /** * @var int * @cvalue U_JG_SWASH_KAF */ #[\Since('8.2')] #[\Until('8.4')] public const JG_SWASH_KAF = UNKNOWN; /** @cvalue U_JG_SWASH_KAF */ #[\Since('8.4')] public const int JG_SWASH_KAF = UNKNOWN; /** * @var int * @cvalue U_JG_SYRIAC_WAW */ #[\Since('8.2')] #[\Until('8.4')] public const JG_SYRIAC_WAW = UNKNOWN; /** @cvalue U_JG_SYRIAC_WAW */ #[\Since('8.4')] public const int JG_SYRIAC_WAW = UNKNOWN; /** * @var int * @cvalue U_JG_TAH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_TAH = UNKNOWN; /** @cvalue U_JG_TAH */ #[\Since('8.4')] public const int JG_TAH = UNKNOWN; /** * @var int * @cvalue U_JG_TAW */ #[\Since('8.2')] #[\Until('8.4')] public const JG_TAW = UNKNOWN; /** @cvalue U_JG_TAW */ #[\Since('8.4')] public const int JG_TAW = UNKNOWN; /** * @var int * @cvalue U_JG_TEH_MARBUTA */ #[\Since('8.2')] #[\Until('8.4')] public const JG_TEH_MARBUTA = UNKNOWN; /** @cvalue U_JG_TEH_MARBUTA */ #[\Since('8.4')] public const int JG_TEH_MARBUTA = UNKNOWN; /** * @var int * @cvalue U_JG_TETH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_TETH = UNKNOWN; /** @cvalue U_JG_TETH */ #[\Since('8.4')] public const int JG_TETH = UNKNOWN; /** * @var int * @cvalue U_JG_WAW */ #[\Since('8.2')] #[\Until('8.4')] public const JG_WAW = UNKNOWN; /** @cvalue U_JG_WAW */ #[\Since('8.4')] public const int JG_WAW = UNKNOWN; /** * @var int * @cvalue U_JG_YEH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_YEH = UNKNOWN; /** @cvalue U_JG_YEH */ #[\Since('8.4')] public const int JG_YEH = UNKNOWN; /** * @var int * @cvalue U_JG_YEH_BARREE */ #[\Since('8.2')] #[\Until('8.4')] public const JG_YEH_BARREE = UNKNOWN; /** @cvalue U_JG_YEH_BARREE */ #[\Since('8.4')] public const int JG_YEH_BARREE = UNKNOWN; /** * @var int * @cvalue U_JG_YEH_WITH_TAIL */ #[\Since('8.2')] #[\Until('8.4')] public const JG_YEH_WITH_TAIL = UNKNOWN; /** @cvalue U_JG_YEH_WITH_TAIL */ #[\Since('8.4')] public const int JG_YEH_WITH_TAIL = UNKNOWN; /** * @var int * @cvalue U_JG_YUDH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_YUDH = UNKNOWN; /** @cvalue U_JG_YUDH */ #[\Since('8.4')] public const int JG_YUDH = UNKNOWN; /** * @var int * @cvalue U_JG_YUDH_HE */ #[\Since('8.2')] #[\Until('8.4')] public const JG_YUDH_HE = UNKNOWN; /** @cvalue U_JG_YUDH_HE */ #[\Since('8.4')] public const int JG_YUDH_HE = UNKNOWN; /** * @var int * @cvalue U_JG_ZAIN */ #[\Since('8.2')] #[\Until('8.4')] public const JG_ZAIN = UNKNOWN; /** @cvalue U_JG_ZAIN */ #[\Since('8.4')] public const int JG_ZAIN = UNKNOWN; /** * @var int * @cvalue U_JG_FE */ #[\Since('8.2')] #[\Until('8.4')] public const JG_FE = UNKNOWN; /** @cvalue U_JG_FE */ #[\Since('8.4')] public const int JG_FE = UNKNOWN; /** * @var int * @cvalue U_JG_KHAPH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_KHAPH = UNKNOWN; /** @cvalue U_JG_KHAPH */ #[\Since('8.4')] public const int JG_KHAPH = UNKNOWN; /** * @var int * @cvalue U_JG_ZHAIN */ #[\Since('8.2')] #[\Until('8.4')] public const JG_ZHAIN = UNKNOWN; /** @cvalue U_JG_ZHAIN */ #[\Since('8.4')] public const int JG_ZHAIN = UNKNOWN; /** * @var int * @cvalue U_JG_BURUSHASKI_YEH_BARREE */ #[\Since('8.2')] #[\Until('8.4')] public const JG_BURUSHASKI_YEH_BARREE = UNKNOWN; /** @cvalue U_JG_BURUSHASKI_YEH_BARREE */ #[\Since('8.4')] public const int JG_BURUSHASKI_YEH_BARREE = UNKNOWN; /** * @var int * @cvalue U_JG_FARSI_YEH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_FARSI_YEH = UNKNOWN; /** @cvalue U_JG_FARSI_YEH */ #[\Since('8.4')] public const int JG_FARSI_YEH = UNKNOWN; /** * @var int * @cvalue U_JG_NYA */ #[\Since('8.2')] #[\Until('8.4')] public const JG_NYA = UNKNOWN; /** @cvalue U_JG_NYA */ #[\Since('8.4')] public const int JG_NYA = UNKNOWN; /** * @var int * @cvalue U_JG_ROHINGYA_YEH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_ROHINGYA_YEH = UNKNOWN; /** @cvalue U_JG_ROHINGYA_YEH */ #[\Since('8.4')] public const int JG_ROHINGYA_YEH = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 54 /** * @var int * @cvalue U_JG_MANICHAEAN_ALEPH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_ALEPH = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 54 /** @cvalue U_JG_MANICHAEAN_ALEPH */ #[\Since('8.4')] public const int JG_MANICHAEAN_ALEPH = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_AYIN */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_AYIN = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_AYIN */ #[\Since('8.4')] public const int JG_MANICHAEAN_AYIN = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_BETH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_BETH = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_BETH */ #[\Since('8.4')] public const int JG_MANICHAEAN_BETH = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_DALETH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_DALETH = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_DALETH */ #[\Since('8.4')] public const int JG_MANICHAEAN_DALETH = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_DHAMEDH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_DHAMEDH = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_DHAMEDH */ #[\Since('8.4')] public const int JG_MANICHAEAN_DHAMEDH = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_FIVE */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_FIVE = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_FIVE */ #[\Since('8.4')] public const int JG_MANICHAEAN_FIVE = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_GIMEL */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_GIMEL = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_GIMEL */ #[\Since('8.4')] public const int JG_MANICHAEAN_GIMEL = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_HETH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_HETH = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_HETH */ #[\Since('8.4')] public const int JG_MANICHAEAN_HETH = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_HUNDRED */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_HUNDRED = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_HUNDRED */ #[\Since('8.4')] public const int JG_MANICHAEAN_HUNDRED = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_KAPH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_KAPH = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_KAPH */ #[\Since('8.4')] public const int JG_MANICHAEAN_KAPH = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_LAMEDH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_LAMEDH = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_LAMEDH */ #[\Since('8.4')] public const int JG_MANICHAEAN_LAMEDH = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_MEM */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_MEM = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_MEM */ #[\Since('8.4')] public const int JG_MANICHAEAN_MEM = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_NUN */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_NUN = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_NUN */ #[\Since('8.4')] public const int JG_MANICHAEAN_NUN = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_ONE */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_ONE = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_ONE */ #[\Since('8.4')] public const int JG_MANICHAEAN_ONE = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_PE */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_PE = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_PE */ #[\Since('8.4')] public const int JG_MANICHAEAN_PE = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_QOPH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_QOPH = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_QOPH */ #[\Since('8.4')] public const int JG_MANICHAEAN_QOPH = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_RESH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_RESH = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_RESH */ #[\Since('8.4')] public const int JG_MANICHAEAN_RESH = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_SADHE */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_SADHE = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_SADHE */ #[\Since('8.4')] public const int JG_MANICHAEAN_SADHE = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_SAMEKH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_SAMEKH = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_SAMEKH */ #[\Since('8.4')] public const int JG_MANICHAEAN_SAMEKH = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_TAW */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_TAW = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_TAW */ #[\Since('8.4')] public const int JG_MANICHAEAN_TAW = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_TEN */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_TEN = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_TEN */ #[\Since('8.4')] public const int JG_MANICHAEAN_TEN = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_TETH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_TETH = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_TETH */ #[\Since('8.4')] public const int JG_MANICHAEAN_TETH = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_THAMEDH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_THAMEDH = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_THAMEDH */ #[\Since('8.4')] public const int JG_MANICHAEAN_THAMEDH = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_TWENTY */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_TWENTY = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_TWENTY */ #[\Since('8.4')] public const int JG_MANICHAEAN_TWENTY = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_WAW */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_WAW = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_WAW */ #[\Since('8.4')] public const int JG_MANICHAEAN_WAW = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_YODH */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_YODH = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_YODH */ #[\Since('8.4')] public const int JG_MANICHAEAN_YODH = UNKNOWN; /** * @var int * @cvalue U_JG_MANICHAEAN_ZAYIN */ #[\Since('8.2')] #[\Until('8.4')] public const JG_MANICHAEAN_ZAYIN = UNKNOWN; /** @cvalue U_JG_MANICHAEAN_ZAYIN */ #[\Since('8.4')] public const int JG_MANICHAEAN_ZAYIN = UNKNOWN; /** * @var int * @cvalue U_JG_STRAIGHT_WAW */ #[\Since('8.2')] #[\Until('8.4')] public const JG_STRAIGHT_WAW = UNKNOWN; /** @cvalue U_JG_STRAIGHT_WAW */ #[\Since('8.4')] public const int JG_STRAIGHT_WAW = UNKNOWN; #endif /** * @var int * @cvalue U_JG_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const JG_COUNT = UNKNOWN; #endif /** @cvalue U_JG_COUNT */ #[\Since('8.4')] public const int JG_COUNT = UNKNOWN; /* UGraphemeClusterBreak - http://icu-project.org/apiref/icu4c/uchar_8h.html#abb9bae7d2a1c80ce342be4647661fde1 */ /** * @var int * @cvalue U_GCB_OTHER */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_OTHER = UNKNOWN; /* UGraphemeClusterBreak - http://icu-project.org/apiref/icu4c/uchar_8h.html#abb9bae7d2a1c80ce342be4647661fde1 */ /** @cvalue U_GCB_OTHER */ #[\Since('8.4')] public const int GCB_OTHER = UNKNOWN; /** * @var int * @cvalue U_GCB_CONTROL */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_CONTROL = UNKNOWN; /** @cvalue U_GCB_CONTROL */ #[\Since('8.4')] public const int GCB_CONTROL = UNKNOWN; /** * @var int * @cvalue U_GCB_CR */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_CR = UNKNOWN; /** @cvalue U_GCB_CR */ #[\Since('8.4')] public const int GCB_CR = UNKNOWN; /** * @var int * @cvalue U_GCB_EXTEND */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_EXTEND = UNKNOWN; /** @cvalue U_GCB_EXTEND */ #[\Since('8.4')] public const int GCB_EXTEND = UNKNOWN; /** * @var int * @cvalue U_GCB_L */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_L = UNKNOWN; /** @cvalue U_GCB_L */ #[\Since('8.4')] public const int GCB_L = UNKNOWN; /** * @var int * @cvalue U_GCB_LF */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_LF = UNKNOWN; /** @cvalue U_GCB_LF */ #[\Since('8.4')] public const int GCB_LF = UNKNOWN; /** * @var int * @cvalue U_GCB_LV */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_LV = UNKNOWN; /** @cvalue U_GCB_LV */ #[\Since('8.4')] public const int GCB_LV = UNKNOWN; /** * @var int * @cvalue U_GCB_LVT */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_LVT = UNKNOWN; /** @cvalue U_GCB_LVT */ #[\Since('8.4')] public const int GCB_LVT = UNKNOWN; /** * @var int * @cvalue U_GCB_T */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_T = UNKNOWN; /** @cvalue U_GCB_T */ #[\Since('8.4')] public const int GCB_T = UNKNOWN; /** * @var int * @cvalue U_GCB_V */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_V = UNKNOWN; /** @cvalue U_GCB_V */ #[\Since('8.4')] public const int GCB_V = UNKNOWN; /** * @var int * @cvalue U_GCB_SPACING_MARK */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_SPACING_MARK = UNKNOWN; /** @cvalue U_GCB_SPACING_MARK */ #[\Since('8.4')] public const int GCB_SPACING_MARK = UNKNOWN; /** * @var int * @cvalue U_GCB_PREPEND */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_PREPEND = UNKNOWN; /** @cvalue U_GCB_PREPEND */ #[\Since('8.4')] public const int GCB_PREPEND = UNKNOWN; /** * @var int * @cvalue U_GCB_REGIONAL_INDICATOR */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_REGIONAL_INDICATOR = UNKNOWN; /** @cvalue U_GCB_REGIONAL_INDICATOR */ #[\Since('8.4')] public const int GCB_REGIONAL_INDICATOR = UNKNOWN; /** * @var int * @cvalue U_GCB_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const GCB_COUNT = UNKNOWN; /** @cvalue U_GCB_COUNT */ #[\Since('8.4')] public const int GCB_COUNT = UNKNOWN; /* UWordBreakValues - http://icu-project.org/apiref/icu4c/uchar_8h.html#af70ee907368e663f8dd4b90c7196e15c */ /** * @var int * @cvalue U_WB_OTHER */ #[\Since('8.2')] #[\Until('8.4')] public const WB_OTHER = UNKNOWN; /* UWordBreakValues - http://icu-project.org/apiref/icu4c/uchar_8h.html#af70ee907368e663f8dd4b90c7196e15c */ /** @cvalue U_WB_OTHER */ #[\Since('8.4')] public const int WB_OTHER = UNKNOWN; /** * @var int * @cvalue U_WB_ALETTER */ #[\Since('8.2')] #[\Until('8.4')] public const WB_ALETTER = UNKNOWN; /** @cvalue U_WB_ALETTER */ #[\Since('8.4')] public const int WB_ALETTER = UNKNOWN; /** * @var int * @cvalue U_WB_FORMAT */ #[\Since('8.2')] #[\Until('8.4')] public const WB_FORMAT = UNKNOWN; /** @cvalue U_WB_FORMAT */ #[\Since('8.4')] public const int WB_FORMAT = UNKNOWN; /** * @var int * @cvalue U_WB_KATAKANA */ #[\Since('8.2')] #[\Until('8.4')] public const WB_KATAKANA = UNKNOWN; /** @cvalue U_WB_KATAKANA */ #[\Since('8.4')] public const int WB_KATAKANA = UNKNOWN; /** * @var int * @cvalue U_WB_MIDLETTER */ #[\Since('8.2')] #[\Until('8.4')] public const WB_MIDLETTER = UNKNOWN; /** @cvalue U_WB_MIDLETTER */ #[\Since('8.4')] public const int WB_MIDLETTER = UNKNOWN; /** * @var int * @cvalue U_WB_MIDNUM */ #[\Since('8.2')] #[\Until('8.4')] public const WB_MIDNUM = UNKNOWN; /** @cvalue U_WB_MIDNUM */ #[\Since('8.4')] public const int WB_MIDNUM = UNKNOWN; /** * @var int * @cvalue U_WB_NUMERIC */ #[\Since('8.2')] #[\Until('8.4')] public const WB_NUMERIC = UNKNOWN; /** @cvalue U_WB_NUMERIC */ #[\Since('8.4')] public const int WB_NUMERIC = UNKNOWN; /** * @var int * @cvalue U_WB_EXTENDNUMLET */ #[\Since('8.2')] #[\Until('8.4')] public const WB_EXTENDNUMLET = UNKNOWN; /** @cvalue U_WB_EXTENDNUMLET */ #[\Since('8.4')] public const int WB_EXTENDNUMLET = UNKNOWN; /** * @var int * @cvalue U_WB_CR */ #[\Since('8.2')] #[\Until('8.4')] public const WB_CR = UNKNOWN; /** @cvalue U_WB_CR */ #[\Since('8.4')] public const int WB_CR = UNKNOWN; /** * @var int * @cvalue U_WB_EXTEND */ #[\Since('8.2')] #[\Until('8.4')] public const WB_EXTEND = UNKNOWN; /** @cvalue U_WB_EXTEND */ #[\Since('8.4')] public const int WB_EXTEND = UNKNOWN; /** * @var int * @cvalue U_WB_LF */ #[\Since('8.2')] #[\Until('8.4')] public const WB_LF = UNKNOWN; /** @cvalue U_WB_LF */ #[\Since('8.4')] public const int WB_LF = UNKNOWN; /** * @var int * @cvalue U_WB_MIDNUMLET */ #[\Since('8.2')] #[\Until('8.4')] public const WB_MIDNUMLET = UNKNOWN; /** @cvalue U_WB_MIDNUMLET */ #[\Since('8.4')] public const int WB_MIDNUMLET = UNKNOWN; /** * @var int * @cvalue U_WB_NEWLINE */ #[\Since('8.2')] #[\Until('8.4')] public const WB_NEWLINE = UNKNOWN; /** @cvalue U_WB_NEWLINE */ #[\Since('8.4')] public const int WB_NEWLINE = UNKNOWN; /** * @var int * @cvalue U_WB_REGIONAL_INDICATOR */ #[\Since('8.2')] #[\Until('8.4')] public const WB_REGIONAL_INDICATOR = UNKNOWN; /** @cvalue U_WB_REGIONAL_INDICATOR */ #[\Since('8.4')] public const int WB_REGIONAL_INDICATOR = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 52 /** * @var int * @cvalue U_WB_HEBREW_LETTER */ #[\Since('8.2')] #[\Until('8.4')] public const WB_HEBREW_LETTER = UNKNOWN; #if U_ICU_VERSION_MAJOR_NUM >= 52 /** @cvalue U_WB_HEBREW_LETTER */ #[\Since('8.4')] public const int WB_HEBREW_LETTER = UNKNOWN; /** * @var int * @cvalue U_WB_SINGLE_QUOTE */ #[\Since('8.2')] #[\Until('8.4')] public const WB_SINGLE_QUOTE = UNKNOWN; /** @cvalue U_WB_SINGLE_QUOTE */ #[\Since('8.4')] public const int WB_SINGLE_QUOTE = UNKNOWN; /** * @var int * @cvalue U_WB_DOUBLE_QUOTE */ #[\Since('8.2')] #[\Until('8.4')] public const WB_DOUBLE_QUOTE = UNKNOWN; /** @cvalue U_WB_DOUBLE_QUOTE */ #[\Since('8.4')] public const int WB_DOUBLE_QUOTE = UNKNOWN; #endif /** * @var int * @cvalue U_WB_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const WB_COUNT = UNKNOWN; #endif /** @cvalue U_WB_COUNT */ #[\Since('8.4')] public const int WB_COUNT = UNKNOWN; /* USentenceBreak - http://icu-project.org/apiref/icu4c/uchar_8h.html#a89e9e463c3bae1d2d46b1dbb6f90de0f */ /** * @var int * @cvalue U_SB_OTHER */ #[\Since('8.2')] #[\Until('8.4')] public const SB_OTHER = UNKNOWN; /* USentenceBreak - http://icu-project.org/apiref/icu4c/uchar_8h.html#a89e9e463c3bae1d2d46b1dbb6f90de0f */ /** @cvalue U_SB_OTHER */ #[\Since('8.4')] public const int SB_OTHER = UNKNOWN; /** * @var int * @cvalue U_SB_ATERM */ #[\Since('8.2')] #[\Until('8.4')] public const SB_ATERM = UNKNOWN; /** @cvalue U_SB_ATERM */ #[\Since('8.4')] public const int SB_ATERM = UNKNOWN; /** * @var int * @cvalue U_SB_CLOSE */ #[\Since('8.2')] #[\Until('8.4')] public const SB_CLOSE = UNKNOWN; /** @cvalue U_SB_CLOSE */ #[\Since('8.4')] public const int SB_CLOSE = UNKNOWN; /** * @var int * @cvalue U_SB_FORMAT */ #[\Since('8.2')] #[\Until('8.4')] public const SB_FORMAT = UNKNOWN; /** @cvalue U_SB_FORMAT */ #[\Since('8.4')] public const int SB_FORMAT = UNKNOWN; /** * @var int * @cvalue U_SB_LOWER */ #[\Since('8.2')] #[\Until('8.4')] public const SB_LOWER = UNKNOWN; /** @cvalue U_SB_LOWER */ #[\Since('8.4')] public const int SB_LOWER = UNKNOWN; /** * @var int * @cvalue U_SB_NUMERIC */ #[\Since('8.2')] #[\Until('8.4')] public const SB_NUMERIC = UNKNOWN; /** @cvalue U_SB_NUMERIC */ #[\Since('8.4')] public const int SB_NUMERIC = UNKNOWN; /** * @var int * @cvalue U_SB_OLETTER */ #[\Since('8.2')] #[\Until('8.4')] public const SB_OLETTER = UNKNOWN; /** @cvalue U_SB_OLETTER */ #[\Since('8.4')] public const int SB_OLETTER = UNKNOWN; /** * @var int * @cvalue U_SB_SEP */ #[\Since('8.2')] #[\Until('8.4')] public const SB_SEP = UNKNOWN; /** @cvalue U_SB_SEP */ #[\Since('8.4')] public const int SB_SEP = UNKNOWN; /** * @var int * @cvalue U_SB_SP */ #[\Since('8.2')] #[\Until('8.4')] public const SB_SP = UNKNOWN; /** @cvalue U_SB_SP */ #[\Since('8.4')] public const int SB_SP = UNKNOWN; /** * @var int * @cvalue U_SB_STERM */ #[\Since('8.2')] #[\Until('8.4')] public const SB_STERM = UNKNOWN; /** @cvalue U_SB_STERM */ #[\Since('8.4')] public const int SB_STERM = UNKNOWN; /** * @var int * @cvalue U_SB_UPPER */ #[\Since('8.2')] #[\Until('8.4')] public const SB_UPPER = UNKNOWN; /** @cvalue U_SB_UPPER */ #[\Since('8.4')] public const int SB_UPPER = UNKNOWN; /** * @var int * @cvalue U_SB_CR */ #[\Since('8.2')] #[\Until('8.4')] public const SB_CR = UNKNOWN; /** @cvalue U_SB_CR */ #[\Since('8.4')] public const int SB_CR = UNKNOWN; /** * @var int * @cvalue U_SB_EXTEND */ #[\Since('8.2')] #[\Until('8.4')] public const SB_EXTEND = UNKNOWN; /** @cvalue U_SB_EXTEND */ #[\Since('8.4')] public const int SB_EXTEND = UNKNOWN; /** * @var int * @cvalue U_SB_LF */ #[\Since('8.2')] #[\Until('8.4')] public const SB_LF = UNKNOWN; /** @cvalue U_SB_LF */ #[\Since('8.4')] public const int SB_LF = UNKNOWN; /** * @var int * @cvalue U_SB_SCONTINUE */ #[\Since('8.2')] #[\Until('8.4')] public const SB_SCONTINUE = UNKNOWN; /** @cvalue U_SB_SCONTINUE */ #[\Since('8.4')] public const int SB_SCONTINUE = UNKNOWN; /** * @var int * @cvalue U_SB_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const SB_COUNT = UNKNOWN; /** @cvalue U_SB_COUNT */ #[\Since('8.4')] public const int SB_COUNT = UNKNOWN; /* ULineBreak - http://icu-project.org/apiref/icu4c/uchar_8h.html#a5d1abdf05be22cb9599f804a8506277c */ /** * @var int * @cvalue U_LB_UNKNOWN */ #[\Since('8.2')] #[\Until('8.4')] public const LB_UNKNOWN = UNKNOWN; /* ULineBreak - http://icu-project.org/apiref/icu4c/uchar_8h.html#a5d1abdf05be22cb9599f804a8506277c */ /** @cvalue U_LB_UNKNOWN */ #[\Since('8.4')] public const int LB_UNKNOWN = UNKNOWN; /** * @var int * @cvalue U_LB_AMBIGUOUS */ #[\Since('8.2')] #[\Until('8.4')] public const LB_AMBIGUOUS = UNKNOWN; /** @cvalue U_LB_AMBIGUOUS */ #[\Since('8.4')] public const int LB_AMBIGUOUS = UNKNOWN; /** * @var int * @cvalue U_LB_ALPHABETIC */ #[\Since('8.2')] #[\Until('8.4')] public const LB_ALPHABETIC = UNKNOWN; /** @cvalue U_LB_ALPHABETIC */ #[\Since('8.4')] public const int LB_ALPHABETIC = UNKNOWN; /** * @var int * @cvalue U_LB_BREAK_BOTH */ #[\Since('8.2')] #[\Until('8.4')] public const LB_BREAK_BOTH = UNKNOWN; /** @cvalue U_LB_BREAK_BOTH */ #[\Since('8.4')] public const int LB_BREAK_BOTH = UNKNOWN; /** * @var int * @cvalue U_LB_BREAK_AFTER */ #[\Since('8.2')] #[\Until('8.4')] public const LB_BREAK_AFTER = UNKNOWN; /** @cvalue U_LB_BREAK_AFTER */ #[\Since('8.4')] public const int LB_BREAK_AFTER = UNKNOWN; /** * @var int * @cvalue U_LB_BREAK_BEFORE */ #[\Since('8.2')] #[\Until('8.4')] public const LB_BREAK_BEFORE = UNKNOWN; /** @cvalue U_LB_BREAK_BEFORE */ #[\Since('8.4')] public const int LB_BREAK_BEFORE = UNKNOWN; /** * @var int * @cvalue U_LB_MANDATORY_BREAK */ #[\Since('8.2')] #[\Until('8.4')] public const LB_MANDATORY_BREAK = UNKNOWN; /** @cvalue U_LB_MANDATORY_BREAK */ #[\Since('8.4')] public const int LB_MANDATORY_BREAK = UNKNOWN; /** * @var int * @cvalue U_LB_CONTINGENT_BREAK */ #[\Since('8.2')] #[\Until('8.4')] public const LB_CONTINGENT_BREAK = UNKNOWN; /** @cvalue U_LB_CONTINGENT_BREAK */ #[\Since('8.4')] public const int LB_CONTINGENT_BREAK = UNKNOWN; /** * @var int * @cvalue U_LB_CLOSE_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const LB_CLOSE_PUNCTUATION = UNKNOWN; /** @cvalue U_LB_CLOSE_PUNCTUATION */ #[\Since('8.4')] public const int LB_CLOSE_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue U_LB_COMBINING_MARK */ #[\Since('8.2')] #[\Until('8.4')] public const LB_COMBINING_MARK = UNKNOWN; /** @cvalue U_LB_COMBINING_MARK */ #[\Since('8.4')] public const int LB_COMBINING_MARK = UNKNOWN; /** * @var int * @cvalue U_LB_CARRIAGE_RETURN */ #[\Since('8.2')] #[\Until('8.4')] public const LB_CARRIAGE_RETURN = UNKNOWN; /** @cvalue U_LB_CARRIAGE_RETURN */ #[\Since('8.4')] public const int LB_CARRIAGE_RETURN = UNKNOWN; /** * @var int * @cvalue U_LB_EXCLAMATION */ #[\Since('8.2')] #[\Until('8.4')] public const LB_EXCLAMATION = UNKNOWN; /** @cvalue U_LB_EXCLAMATION */ #[\Since('8.4')] public const int LB_EXCLAMATION = UNKNOWN; /** * @var int * @cvalue U_LB_GLUE */ #[\Since('8.2')] #[\Until('8.4')] public const LB_GLUE = UNKNOWN; /** @cvalue U_LB_GLUE */ #[\Since('8.4')] public const int LB_GLUE = UNKNOWN; /** * @var int * @cvalue U_LB_HYPHEN */ #[\Since('8.2')] #[\Until('8.4')] public const LB_HYPHEN = UNKNOWN; /** @cvalue U_LB_HYPHEN */ #[\Since('8.4')] public const int LB_HYPHEN = UNKNOWN; /** * @var int * @cvalue U_LB_IDEOGRAPHIC */ #[\Since('8.2')] #[\Until('8.4')] public const LB_IDEOGRAPHIC = UNKNOWN; /** @cvalue U_LB_IDEOGRAPHIC */ #[\Since('8.4')] public const int LB_IDEOGRAPHIC = UNKNOWN; /** * @var int * @cvalue U_LB_INSEPARABLE */ #[\Since('8.2')] #[\Until('8.4')] public const LB_INSEPARABLE = UNKNOWN; /** @cvalue U_LB_INSEPARABLE */ #[\Since('8.4')] public const int LB_INSEPARABLE = UNKNOWN; /** * @var int * @cvalue U_LB_INSEPERABLE */ #[\Since('8.2')] #[\Until('8.4')] public const LB_INSEPERABLE = UNKNOWN; /** @cvalue U_LB_INSEPERABLE */ #[\Since('8.4')] public const int LB_INSEPERABLE = UNKNOWN; /** * @var int * @cvalue U_LB_INFIX_NUMERIC */ #[\Since('8.2')] #[\Until('8.4')] public const LB_INFIX_NUMERIC = UNKNOWN; /** @cvalue U_LB_INFIX_NUMERIC */ #[\Since('8.4')] public const int LB_INFIX_NUMERIC = UNKNOWN; /** * @var int * @cvalue U_LB_LINE_FEED */ #[\Since('8.2')] #[\Until('8.4')] public const LB_LINE_FEED = UNKNOWN; /** @cvalue U_LB_LINE_FEED */ #[\Since('8.4')] public const int LB_LINE_FEED = UNKNOWN; /** * @var int * @cvalue U_LB_NONSTARTER */ #[\Since('8.2')] #[\Until('8.4')] public const LB_NONSTARTER = UNKNOWN; /** @cvalue U_LB_NONSTARTER */ #[\Since('8.4')] public const int LB_NONSTARTER = UNKNOWN; /** * @var int * @cvalue U_LB_NUMERIC */ #[\Since('8.2')] #[\Until('8.4')] public const LB_NUMERIC = UNKNOWN; /** @cvalue U_LB_NUMERIC */ #[\Since('8.4')] public const int LB_NUMERIC = UNKNOWN; /** * @var int * @cvalue U_LB_OPEN_PUNCTUATION */ #[\Since('8.2')] #[\Until('8.4')] public const LB_OPEN_PUNCTUATION = UNKNOWN; /** @cvalue U_LB_OPEN_PUNCTUATION */ #[\Since('8.4')] public const int LB_OPEN_PUNCTUATION = UNKNOWN; /** * @var int * @cvalue U_LB_POSTFIX_NUMERIC */ #[\Since('8.2')] #[\Until('8.4')] public const LB_POSTFIX_NUMERIC = UNKNOWN; /** @cvalue U_LB_POSTFIX_NUMERIC */ #[\Since('8.4')] public const int LB_POSTFIX_NUMERIC = UNKNOWN; /** * @var int * @cvalue U_LB_PREFIX_NUMERIC */ #[\Since('8.2')] #[\Until('8.4')] public const LB_PREFIX_NUMERIC = UNKNOWN; /** @cvalue U_LB_PREFIX_NUMERIC */ #[\Since('8.4')] public const int LB_PREFIX_NUMERIC = UNKNOWN; /** * @var int * @cvalue U_LB_QUOTATION */ #[\Since('8.2')] #[\Until('8.4')] public const LB_QUOTATION = UNKNOWN; /** @cvalue U_LB_QUOTATION */ #[\Since('8.4')] public const int LB_QUOTATION = UNKNOWN; /** * @var int * @cvalue U_LB_COMPLEX_CONTEXT */ #[\Since('8.2')] #[\Until('8.4')] public const LB_COMPLEX_CONTEXT = UNKNOWN; /** @cvalue U_LB_COMPLEX_CONTEXT */ #[\Since('8.4')] public const int LB_COMPLEX_CONTEXT = UNKNOWN; /** * @var int * @cvalue U_LB_SURROGATE */ #[\Since('8.2')] #[\Until('8.4')] public const LB_SURROGATE = UNKNOWN; /** @cvalue U_LB_SURROGATE */ #[\Since('8.4')] public const int LB_SURROGATE = UNKNOWN; /** * @var int * @cvalue U_LB_SPACE */ #[\Since('8.2')] #[\Until('8.4')] public const LB_SPACE = UNKNOWN; /** @cvalue U_LB_SPACE */ #[\Since('8.4')] public const int LB_SPACE = UNKNOWN; /** * @var int * @cvalue U_LB_BREAK_SYMBOLS */ #[\Since('8.2')] #[\Until('8.4')] public const LB_BREAK_SYMBOLS = UNKNOWN; /** @cvalue U_LB_BREAK_SYMBOLS */ #[\Since('8.4')] public const int LB_BREAK_SYMBOLS = UNKNOWN; /** * @var int * @cvalue U_LB_ZWSPACE */ #[\Since('8.2')] #[\Until('8.4')] public const LB_ZWSPACE = UNKNOWN; /** @cvalue U_LB_ZWSPACE */ #[\Since('8.4')] public const int LB_ZWSPACE = UNKNOWN; /** * @var int * @cvalue U_LB_NEXT_LINE */ #[\Since('8.2')] #[\Until('8.4')] public const LB_NEXT_LINE = UNKNOWN; /** @cvalue U_LB_NEXT_LINE */ #[\Since('8.4')] public const int LB_NEXT_LINE = UNKNOWN; /** * @var int * @cvalue U_LB_WORD_JOINER */ #[\Since('8.2')] #[\Until('8.4')] public const LB_WORD_JOINER = UNKNOWN; /** @cvalue U_LB_WORD_JOINER */ #[\Since('8.4')] public const int LB_WORD_JOINER = UNKNOWN; /** * @var int * @cvalue U_LB_H2 */ #[\Since('8.2')] #[\Until('8.4')] public const LB_H2 = UNKNOWN; /** @cvalue U_LB_H2 */ #[\Since('8.4')] public const int LB_H2 = UNKNOWN; /** * @var int * @cvalue U_LB_H3 */ #[\Since('8.2')] #[\Until('8.4')] public const LB_H3 = UNKNOWN; /** @cvalue U_LB_H3 */ #[\Since('8.4')] public const int LB_H3 = UNKNOWN; /** * @var int * @cvalue U_LB_JL */ #[\Since('8.2')] #[\Until('8.4')] public const LB_JL = UNKNOWN; /** @cvalue U_LB_JL */ #[\Since('8.4')] public const int LB_JL = UNKNOWN; /** * @var int * @cvalue U_LB_JT */ #[\Since('8.2')] #[\Until('8.4')] public const LB_JT = UNKNOWN; /** @cvalue U_LB_JT */ #[\Since('8.4')] public const int LB_JT = UNKNOWN; /** * @var int * @cvalue U_LB_JV */ #[\Since('8.2')] #[\Until('8.4')] public const LB_JV = UNKNOWN; /** @cvalue U_LB_JV */ #[\Since('8.4')] public const int LB_JV = UNKNOWN; /** * @var int * @cvalue U_LB_CLOSE_PARENTHESIS */ #[\Since('8.2')] #[\Until('8.4')] public const LB_CLOSE_PARENTHESIS = UNKNOWN; /** @cvalue U_LB_CLOSE_PARENTHESIS */ #[\Since('8.4')] public const int LB_CLOSE_PARENTHESIS = UNKNOWN; /** * @var int * @cvalue U_LB_CONDITIONAL_JAPANESE_STARTER */ #[\Since('8.2')] #[\Until('8.4')] public const LB_CONDITIONAL_JAPANESE_STARTER = UNKNOWN; /** @cvalue U_LB_CONDITIONAL_JAPANESE_STARTER */ #[\Since('8.4')] public const int LB_CONDITIONAL_JAPANESE_STARTER = UNKNOWN; /** * @var int * @cvalue U_LB_HEBREW_LETTER */ #[\Since('8.2')] #[\Until('8.4')] public const LB_HEBREW_LETTER = UNKNOWN; /** @cvalue U_LB_HEBREW_LETTER */ #[\Since('8.4')] public const int LB_HEBREW_LETTER = UNKNOWN; /** * @var int * @cvalue U_LB_REGIONAL_INDICATOR */ #[\Since('8.2')] #[\Until('8.4')] public const LB_REGIONAL_INDICATOR = UNKNOWN; /** @cvalue U_LB_REGIONAL_INDICATOR */ #[\Since('8.4')] public const int LB_REGIONAL_INDICATOR = UNKNOWN; /** * @var int * @cvalue U_LB_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const LB_COUNT = UNKNOWN; /** @cvalue U_LB_COUNT */ #[\Since('8.4')] public const int LB_COUNT = UNKNOWN; /* UNumericType - http://icu-project.org/apiref/icu4c/uchar_8h.html#adec3e7a6ae3a00274c019b3b2ddaecbe */ /** * @var int * @cvalue U_NT_NONE */ #[\Since('8.2')] #[\Until('8.4')] public const NT_NONE = UNKNOWN; /* UNumericType - http://icu-project.org/apiref/icu4c/uchar_8h.html#adec3e7a6ae3a00274c019b3b2ddaecbe */ /** @cvalue U_NT_NONE */ #[\Since('8.4')] public const int NT_NONE = UNKNOWN; /** * @var int * @cvalue U_NT_DECIMAL */ #[\Since('8.2')] #[\Until('8.4')] public const NT_DECIMAL = UNKNOWN; /** @cvalue U_NT_DECIMAL */ #[\Since('8.4')] public const int NT_DECIMAL = UNKNOWN; /** * @var int * @cvalue U_NT_DIGIT */ #[\Since('8.2')] #[\Until('8.4')] public const NT_DIGIT = UNKNOWN; /** @cvalue U_NT_DIGIT */ #[\Since('8.4')] public const int NT_DIGIT = UNKNOWN; /** * @var int * @cvalue U_NT_NUMERIC */ #[\Since('8.2')] #[\Until('8.4')] public const NT_NUMERIC = UNKNOWN; /** @cvalue U_NT_NUMERIC */ #[\Since('8.4')] public const int NT_NUMERIC = UNKNOWN; /** * @var int * @cvalue U_NT_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const NT_COUNT = UNKNOWN; /** @cvalue U_NT_COUNT */ #[\Since('8.4')] public const int NT_COUNT = UNKNOWN; /* UHangulSyllableType - http://icu-project.org/apiref/icu4c/uchar_8h.html#a7cb09027c37ad73571cf541caf002c8f */ /** * @var int * @cvalue U_HST_NOT_APPLICABLE */ #[\Since('8.2')] #[\Until('8.4')] public const HST_NOT_APPLICABLE = UNKNOWN; /* UHangulSyllableType - http://icu-project.org/apiref/icu4c/uchar_8h.html#a7cb09027c37ad73571cf541caf002c8f */ /** @cvalue U_HST_NOT_APPLICABLE */ #[\Since('8.4')] public const int HST_NOT_APPLICABLE = UNKNOWN; /** * @var int * @cvalue U_HST_LEADING_JAMO */ #[\Since('8.2')] #[\Until('8.4')] public const HST_LEADING_JAMO = UNKNOWN; /** @cvalue U_HST_LEADING_JAMO */ #[\Since('8.4')] public const int HST_LEADING_JAMO = UNKNOWN; /** * @var int * @cvalue U_HST_VOWEL_JAMO */ #[\Since('8.2')] #[\Until('8.4')] public const HST_VOWEL_JAMO = UNKNOWN; /** @cvalue U_HST_VOWEL_JAMO */ #[\Since('8.4')] public const int HST_VOWEL_JAMO = UNKNOWN; /** * @var int * @cvalue U_HST_TRAILING_JAMO */ #[\Since('8.2')] #[\Until('8.4')] public const HST_TRAILING_JAMO = UNKNOWN; /** @cvalue U_HST_TRAILING_JAMO */ #[\Since('8.4')] public const int HST_TRAILING_JAMO = UNKNOWN; /** * @var int * @cvalue U_HST_LV_SYLLABLE */ #[\Since('8.2')] #[\Until('8.4')] public const HST_LV_SYLLABLE = UNKNOWN; /** @cvalue U_HST_LV_SYLLABLE */ #[\Since('8.4')] public const int HST_LV_SYLLABLE = UNKNOWN; /** * @var int * @cvalue U_HST_LVT_SYLLABLE */ #[\Since('8.2')] #[\Until('8.4')] public const HST_LVT_SYLLABLE = UNKNOWN; /** @cvalue U_HST_LVT_SYLLABLE */ #[\Since('8.4')] public const int HST_LVT_SYLLABLE = UNKNOWN; /** * @var int * @cvalue U_HST_COUNT */ #[\Since('8.2')] #[\Until('8.4')] public const HST_COUNT = UNKNOWN; /** @cvalue U_HST_COUNT */ #[\Since('8.4')] public const int HST_COUNT = UNKNOWN; /* StringOptions - http://icu-project.org/apiref/icu4c/stringoptions_8h.html */ /** * @var int * @cvalue U_FOLD_CASE_DEFAULT */ #[\Since('8.2')] #[\Until('8.4')] public const FOLD_CASE_DEFAULT = UNKNOWN; /* StringOptions - http://icu-project.org/apiref/icu4c/stringoptions_8h.html */ /** @cvalue U_FOLD_CASE_DEFAULT */ #[\Since('8.4')] public const int FOLD_CASE_DEFAULT = UNKNOWN; /** * @var int * @cvalue U_FOLD_CASE_EXCLUDE_SPECIAL_I */ #[\Since('8.2')] #[\Until('8.4')] public const FOLD_CASE_EXCLUDE_SPECIAL_I = UNKNOWN; /** @cvalue U_FOLD_CASE_EXCLUDE_SPECIAL_I */ #[\Since('8.4')] public const int FOLD_CASE_EXCLUDE_SPECIAL_I = UNKNOWN; }= 74 /** * @alias intltz_get_iana_id */ #[\Since('8.4')] public static function getIanaID(string $timezoneId): string|false { } /** * @tentative-return-type * @alias intltz_get_id * @return (string | false) */ public function getID() { } /** * @param int $rawOffset * @param int $dstOffset * @tentative-return-type * @alias intltz_get_offset * @return bool */ public function getOffset(float $timestamp, bool $local, &$rawOffset, &$dstOffset) { } /** * @tentative-return-type * @alias intltz_get_raw_offset * @return int */ public function getRawOffset() { } /** * @tentative-return-type * @alias intltz_get_region * @return (string | false) */ public static function getRegion(string $timezoneId) { } /** * @tentative-return-type * @alias intltz_get_tz_data_version * @return (string | false) */ public static function getTZDataVersion() { } /** * @tentative-return-type * @alias intltz_get_unknown * @return IntlTimeZone */ public static function getUnknown() { } #if U_ICU_VERSION_MAJOR_NUM >= 52 /** * @tentative-return-type * @alias intltz_get_windows_id * @return (string | false) */ public static function getWindowsID(string $timezoneId) { } /** * @tentative-return-type * @alias intltz_get_id_for_windows_id * @return (string | false) */ public static function getIDForWindowsID(string $timezoneId, ?string $region = null) { } #endif /** * @tentative-return-type * @alias intltz_has_same_rules * @return bool */ public function hasSameRules(IntlTimeZone $other) { } /** * @tentative-return-type * @alias intltz_to_date_time_zone * @return (DateTimeZone | false) */ public function toDateTimeZone() { } /** * @tentative-return-type * @alias intltz_use_daylight_time * @return bool */ public function useDaylightTime() { } /** * @var int * @cvalue TimeZone::SHORT */ #[\Since('8.2')] #[\Until('8.4')] public const DISPLAY_SHORT = UNKNOWN; /** @cvalue TimeZone::SHORT */ #[\Since('8.4')] public const int DISPLAY_SHORT = UNKNOWN; /** * @var int * @cvalue TimeZone::LONG */ #[\Since('8.2')] #[\Until('8.4')] public const DISPLAY_LONG = UNKNOWN; /** @cvalue TimeZone::LONG */ #[\Since('8.4')] public const int DISPLAY_LONG = UNKNOWN; /** * @var int * @cvalue TimeZone::SHORT_GENERIC */ #[\Since('8.2')] #[\Until('8.4')] public const DISPLAY_SHORT_GENERIC = UNKNOWN; /** @cvalue TimeZone::SHORT_GENERIC */ #[\Since('8.4')] public const int DISPLAY_SHORT_GENERIC = UNKNOWN; /** * @var int * @cvalue TimeZone::LONG_GENERIC */ #[\Since('8.2')] #[\Until('8.4')] public const DISPLAY_LONG_GENERIC = UNKNOWN; /** @cvalue TimeZone::LONG_GENERIC */ #[\Since('8.4')] public const int DISPLAY_LONG_GENERIC = UNKNOWN; /** * @var int * @cvalue TimeZone::SHORT_GMT */ #[\Since('8.2')] #[\Until('8.4')] public const DISPLAY_SHORT_GMT = UNKNOWN; /** @cvalue TimeZone::SHORT_GMT */ #[\Since('8.4')] public const int DISPLAY_SHORT_GMT = UNKNOWN; /** * @var int * @cvalue TimeZone::LONG_GMT */ #[\Since('8.2')] #[\Until('8.4')] public const DISPLAY_LONG_GMT = UNKNOWN; /** @cvalue TimeZone::LONG_GMT */ #[\Since('8.4')] public const int DISPLAY_LONG_GMT = UNKNOWN; /** * @var int * @cvalue TimeZone::SHORT_COMMONLY_USED */ #[\Since('8.2')] #[\Until('8.4')] public const DISPLAY_SHORT_COMMONLY_USED = UNKNOWN; /** @cvalue TimeZone::SHORT_COMMONLY_USED */ #[\Since('8.4')] public const int DISPLAY_SHORT_COMMONLY_USED = UNKNOWN; /** * @var int * @cvalue TimeZone::GENERIC_LOCATION */ #[\Since('8.2')] #[\Until('8.4')] public const DISPLAY_GENERIC_LOCATION = UNKNOWN; /** @cvalue TimeZone::GENERIC_LOCATION */ #[\Since('8.4')] public const int DISPLAY_GENERIC_LOCATION = UNKNOWN; /** * @var int * @cvalue UCAL_ZONE_TYPE_ANY */ #[\Since('8.2')] #[\Until('8.4')] public const TYPE_ANY = UNKNOWN; /** @cvalue UCAL_ZONE_TYPE_ANY */ #[\Since('8.4')] public const int TYPE_ANY = UNKNOWN; /** * @var int * @cvalue UCAL_ZONE_TYPE_CANONICAL */ #[\Since('8.2')] #[\Until('8.4')] public const TYPE_CANONICAL = UNKNOWN; /** @cvalue UCAL_ZONE_TYPE_CANONICAL */ #[\Since('8.4')] public const int TYPE_CANONICAL = UNKNOWN; /** * @var int * @cvalue UCAL_ZONE_TYPE_CANONICAL_LOCATION */ #[\Since('8.2')] #[\Until('8.4')] public const TYPE_CANONICAL_LOCATION = UNKNOWN; /** @cvalue UCAL_ZONE_TYPE_CANONICAL_LOCATION */ #[\Since('8.4')] public const int TYPE_CANONICAL_LOCATION = UNKNOWN; } 50605 || defined(PDO_USE_MYSQLND) /** @cvalue PDO_MYSQL_ATTR_SERVER_PUBLIC_KEY */ public const int ATTR_SERVER_PUBLIC_KEY = UNKNOWN; #endif /** @cvalue PDO_MYSQL_ATTR_MULTI_STATEMENTS */ public const int ATTR_MULTI_STATEMENTS = UNKNOWN; #ifdef PDO_USE_MYSQLND /** @cvalue PDO_MYSQL_ATTR_SSL_VERIFY_SERVER_CERT */ public const int ATTR_SSL_VERIFY_SERVER_CERT = UNKNOWN; #endif #if MYSQL_VERSION_ID >= 80021 || defined(PDO_USE_MYSQLND) /** @cvalue PDO_MYSQL_ATTR_LOCAL_INFILE_DIRECTORY */ public const int ATTR_LOCAL_INFILE_DIRECTORY = UNKNOWN; #endif public function getWarningCount(): int { } } * @refcount 1 */ #[\Since('8.1')] function get_html_translation_table(int $table = HTML_SPECIALCHARS, int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, string $encoding = "UTF-8"): array { } * @refcount 1 */ #[\Since('8.4')] function request_parse_body(?array $options = null): array { }|string|int|false|null * @refcount 1 */ #[\Since('8.2')] function mb_get_info(string $type = "all"): array|string|int|false|null { }|false * @refcount 1 */ #[\Since('8.3')] function posix_getrlimit(?int $resource = null): array|false { } * @refcount 1 */ #[\Since('8.1')] function ldap_get_attributes(\LDAP\Connection $ldap, \LDAP\ResultEntry $entry): array { }|false * @refcount 1 * @alias ldap_get_values_len */ #[\Since('8.1')] function ldap_get_values(\LDAP\Connection $ldap, \LDAP\ResultEntry $entry, string $attribute): array|false { } 2000) || defined(HAVE_ORALDAP) /** @param resource $ldap */ #[\Until('8.1')] function ldap_rename($ldap, string $dn, string $new_rdn, string $new_parent, bool $delete_old_rdn, ?array $controls = null): bool { } #if (LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP) #[\Since('8.1')] function ldap_rename(\LDAP\Connection $ldap, string $dn, string $new_rdn, string $new_parent, bool $delete_old_rdn, ?array $controls = null): bool { }|false * @refcount 1 */ #[\Since('8.1')] function ldap_get_entries(\LDAP\Connection $ldap, \LDAP\Result $result): array|false { }|false * @refcount 1 */ #[\Since('8.1')] function ldap_get_values_len(\LDAP\Connection $ldap, \LDAP\ResultEntry $entry, string $attribute): array|false { } * @refcount 1 */ #[\Since('8.1')] function bzerror($bz): array { }|false * @refcount 1 */ #[\Since('8.1')] function pspell_suggest(\PSpell\Dictionary $dictionary, string $word): array|false { } 9 || (SODIUM_LIBRARY_VERSION_MAJOR == 9 && SODIUM_LIBRARY_VERSION_MINOR >= 6) function sodium_crypto_pwhash_str_needs_rehash(string $password, int $opslimit, int $memlimit): bool { }= 3006011 /** * @tentative-return-type * @return bool */ public function backup(SQLite3 $destination, string $sourceDatabase = "main", string $destinationDatabase = "main") { } #endif /** * @tentative-return-type * @return string */ public static function escapeString(string $string) { } /** * @tentative-return-type * @return (SQLite3Stmt | false) */ public function prepare(string $query) { } /** * @tentative-return-type * @return bool */ public function exec(string $query) { } /** * @tentative-return-type * @return (SQLite3Result | false) */ public function query(string $query) { } /** * @tentative-return-type * @return mixed */ public function querySingle(string $query, bool $entireRow = false) { } /** * @tentative-return-type * @return bool */ public function createFunction(string $name, callable $callback, int $argCount = -1, int $flags = 0) { } /** * @tentative-return-type * @return bool */ public function createAggregate(string $name, callable $stepCallback, callable $finalCallback, int $argCount = -1) { } /** * @tentative-return-type * @return bool */ public function createCollation(string $name, callable $callback) { } /** @return resource|false */ public function openBlob(string $table, string $column, int $rowid, string $database = "main", int $flags = SQLITE3_OPEN_READONLY) { } /** * @tentative-return-type * @return bool */ public function enableExceptions(bool $enable = false) { } /** * @tentative-return-type * @return bool */ public function enableExtendedResultCodes(bool $enable = true) { } /** * @tentative-return-type * @return bool */ public function setAuthorizer(?callable $callback) { } /** * @var int * @cvalue SQLITE_OK * @link sqlite3.class.constants.ok */ #[\Since('8.2')] #[\Until('8.4')] public const OK = UNKNOWN; /** @cvalue SQLITE_OK */ #[\Since('8.4')] public const int OK = UNKNOWN; /* Constants for authorizer return */ /** * @var int * @cvalue SQLITE_DENY * @link sqlite3.class.constants.deny */ #[\Since('8.2')] #[\Until('8.4')] public const DENY = UNKNOWN; /* Constants for authorizer return */ /** @cvalue SQLITE_DENY */ #[\Since('8.4')] public const int DENY = UNKNOWN; /** * @var int * @cvalue SQLITE_IGNORE * @link sqlite3.class.constants.ignore */ #[\Since('8.2')] #[\Until('8.4')] public const IGNORE = UNKNOWN; /** @cvalue SQLITE_IGNORE */ #[\Since('8.4')] public const int IGNORE = UNKNOWN; /* Constants for authorizer actions */ /** * @var int * @cvalue SQLITE_CREATE_INDEX * @link sqlite3.class.constants.create-index */ #[\Since('8.2')] #[\Until('8.4')] public const CREATE_INDEX = UNKNOWN; /* Constants for authorizer actions */ /** @cvalue SQLITE_CREATE_INDEX */ #[\Since('8.4')] public const int CREATE_INDEX = UNKNOWN; /** * @var int * @cvalue SQLITE_CREATE_TABLE * @link sqlite3.class.constants.create-table */ #[\Since('8.2')] #[\Until('8.4')] public const CREATE_TABLE = UNKNOWN; /** @cvalue SQLITE_CREATE_TABLE */ #[\Since('8.4')] public const int CREATE_TABLE = UNKNOWN; /** * @var int * @cvalue SQLITE_CREATE_TEMP_INDEX * @link sqlite3.class.constants.create-temp-index */ #[\Since('8.2')] #[\Until('8.4')] public const CREATE_TEMP_INDEX = UNKNOWN; /** @cvalue SQLITE_CREATE_TEMP_INDEX */ #[\Since('8.4')] public const int CREATE_TEMP_INDEX = UNKNOWN; /** * @var int * @cvalue SQLITE_CREATE_TEMP_TABLE * @link sqlite3.class.constants.create-temp-table */ #[\Since('8.2')] #[\Until('8.4')] public const CREATE_TEMP_TABLE = UNKNOWN; /** @cvalue SQLITE_CREATE_TEMP_TABLE */ #[\Since('8.4')] public const int CREATE_TEMP_TABLE = UNKNOWN; /** * @var int * @cvalue SQLITE_CREATE_TEMP_TRIGGER * @link sqlite3.class.constants.create-temp-trigger */ #[\Since('8.2')] #[\Until('8.4')] public const CREATE_TEMP_TRIGGER = UNKNOWN; /** @cvalue SQLITE_CREATE_TEMP_TRIGGER */ #[\Since('8.4')] public const int CREATE_TEMP_TRIGGER = UNKNOWN; /** * @var int * @cvalue SQLITE_CREATE_TEMP_VIEW * @link sqlite3.class.constants.create-temp-view */ #[\Since('8.2')] #[\Until('8.4')] public const CREATE_TEMP_VIEW = UNKNOWN; /** @cvalue SQLITE_CREATE_TEMP_VIEW */ #[\Since('8.4')] public const int CREATE_TEMP_VIEW = UNKNOWN; /** * @var int * @cvalue SQLITE_CREATE_TRIGGER * @link sqlite3.class.constants.create-trigger */ #[\Since('8.2')] #[\Until('8.4')] public const CREATE_TRIGGER = UNKNOWN; /** @cvalue SQLITE_CREATE_TRIGGER */ #[\Since('8.4')] public const int CREATE_TRIGGER = UNKNOWN; /** * @var int * @cvalue SQLITE_CREATE_VIEW * @link sqlite3.class.constants.create-view */ #[\Since('8.2')] #[\Until('8.4')] public const CREATE_VIEW = UNKNOWN; /** @cvalue SQLITE_CREATE_VIEW */ #[\Since('8.4')] public const int CREATE_VIEW = UNKNOWN; /** * @var int * @cvalue SQLITE_DELETE * @link sqlite3.class.constants.delete */ #[\Since('8.2')] #[\Until('8.4')] public const DELETE = UNKNOWN; /** @cvalue SQLITE_DELETE */ #[\Since('8.4')] public const int DELETE = UNKNOWN; /** * @var int * @cvalue SQLITE_DROP_INDEX * @link sqlite3.class.constants.drop-index */ #[\Since('8.2')] #[\Until('8.4')] public const DROP_INDEX = UNKNOWN; /** @cvalue SQLITE_DROP_INDEX */ #[\Since('8.4')] public const int DROP_INDEX = UNKNOWN; /** * @var int * @cvalue SQLITE_DROP_TABLE * @link sqlite3.class.constants.drop-table */ #[\Since('8.2')] #[\Until('8.4')] public const DROP_TABLE = UNKNOWN; /** @cvalue SQLITE_DROP_TABLE */ #[\Since('8.4')] public const int DROP_TABLE = UNKNOWN; /** * @var int * @cvalue SQLITE_DROP_TEMP_INDEX * @link sqlite3.class.constants.drop-temp-index */ #[\Since('8.2')] #[\Until('8.4')] public const DROP_TEMP_INDEX = UNKNOWN; /** @cvalue SQLITE_DROP_TEMP_INDEX */ #[\Since('8.4')] public const int DROP_TEMP_INDEX = UNKNOWN; /** * @var int * @cvalue SQLITE_DROP_TEMP_TABLE * @link sqlite3.class.constants.drop-temp-table */ #[\Since('8.2')] #[\Until('8.4')] public const DROP_TEMP_TABLE = UNKNOWN; /** @cvalue SQLITE_DROP_TEMP_TABLE */ #[\Since('8.4')] public const int DROP_TEMP_TABLE = UNKNOWN; /** * @var int * @cvalue SQLITE_DROP_TEMP_TRIGGER * @link sqlite3.class.constants.drop-temp-trigger */ #[\Since('8.2')] #[\Until('8.4')] public const DROP_TEMP_TRIGGER = UNKNOWN; /** @cvalue SQLITE_DROP_TEMP_TRIGGER */ #[\Since('8.4')] public const int DROP_TEMP_TRIGGER = UNKNOWN; /** * @var int * @cvalue SQLITE_DROP_TEMP_VIEW * @link sqlite3.class.constants.drop-temp-view */ #[\Since('8.2')] #[\Until('8.4')] public const DROP_TEMP_VIEW = UNKNOWN; /** @cvalue SQLITE_DROP_TEMP_VIEW */ #[\Since('8.4')] public const int DROP_TEMP_VIEW = UNKNOWN; /** * @var int * @cvalue SQLITE_DROP_TRIGGER * @link sqlite3.class.constants.drop-trigger */ #[\Since('8.2')] #[\Until('8.4')] public const DROP_TRIGGER = UNKNOWN; /** @cvalue SQLITE_DROP_TRIGGER */ #[\Since('8.4')] public const int DROP_TRIGGER = UNKNOWN; /** * @var int * @cvalue SQLITE_DROP_VIEW * @link sqlite3.class.constants.drop-view */ #[\Since('8.2')] #[\Until('8.4')] public const DROP_VIEW = UNKNOWN; /** @cvalue SQLITE_DROP_VIEW */ #[\Since('8.4')] public const int DROP_VIEW = UNKNOWN; /** * @var int * @cvalue SQLITE_INSERT * @link sqlite3.class.constants.insert */ #[\Since('8.2')] #[\Until('8.4')] public const INSERT = UNKNOWN; /** @cvalue SQLITE_INSERT */ #[\Since('8.4')] public const int INSERT = UNKNOWN; /** * @var int * @cvalue SQLITE_PRAGMA * @link sqlite3.class.constants.pragma */ #[\Since('8.2')] #[\Until('8.4')] public const PRAGMA = UNKNOWN; /** @cvalue SQLITE_PRAGMA */ #[\Since('8.4')] public const int PRAGMA = UNKNOWN; /** * @var int * @cvalue SQLITE_READ * @link sqlite3.class.constants.read */ #[\Since('8.2')] #[\Until('8.4')] public const READ = UNKNOWN; /** @cvalue SQLITE_READ */ #[\Since('8.4')] public const int READ = UNKNOWN; /** * @var int * @cvalue SQLITE_SELECT * @link sqlite3.class.constants.select */ #[\Since('8.2')] #[\Until('8.4')] public const SELECT = UNKNOWN; /** @cvalue SQLITE_SELECT */ #[\Since('8.4')] public const int SELECT = UNKNOWN; /** * @var int * @cvalue SQLITE_TRANSACTION * @link sqlite3.class.constants.transaction */ #[\Since('8.2')] #[\Until('8.4')] public const TRANSACTION = UNKNOWN; /** @cvalue SQLITE_TRANSACTION */ #[\Since('8.4')] public const int TRANSACTION = UNKNOWN; /** * @var int * @cvalue SQLITE_UPDATE * @link sqlite3.class.constants.update */ #[\Since('8.2')] #[\Until('8.4')] public const UPDATE = UNKNOWN; /** @cvalue SQLITE_UPDATE */ #[\Since('8.4')] public const int UPDATE = UNKNOWN; /** * @var int * @cvalue SQLITE_ATTACH * @link sqlite3.class.constants.attach */ #[\Since('8.2')] #[\Until('8.4')] public const ATTACH = UNKNOWN; /** @cvalue SQLITE_ATTACH */ #[\Since('8.4')] public const int ATTACH = UNKNOWN; /** * @var int * @cvalue SQLITE_DETACH * @link sqlite3.class.constants.detach */ #[\Since('8.2')] #[\Until('8.4')] public const DETACH = UNKNOWN; /** @cvalue SQLITE_DETACH */ #[\Since('8.4')] public const int DETACH = UNKNOWN; /** * @var int * @cvalue SQLITE_ALTER_TABLE * @link sqlite3.class.constants.alter-table */ #[\Since('8.2')] #[\Until('8.4')] public const ALTER_TABLE = UNKNOWN; /** @cvalue SQLITE_ALTER_TABLE */ #[\Since('8.4')] public const int ALTER_TABLE = UNKNOWN; /** * @var int * @cvalue SQLITE_REINDEX * @link sqlite3.class.constants.reindex */ #[\Since('8.2')] #[\Until('8.4')] public const REINDEX = UNKNOWN; /** @cvalue SQLITE_REINDEX */ #[\Since('8.4')] public const int REINDEX = UNKNOWN; /** * @var int * @cvalue SQLITE_ANALYZE * @link sqlite3.class.constants.analyze */ #[\Since('8.2')] #[\Until('8.4')] public const ANALYZE = UNKNOWN; /** @cvalue SQLITE_ANALYZE */ #[\Since('8.4')] public const int ANALYZE = UNKNOWN; /** * @var int * @cvalue SQLITE_CREATE_VTABLE * @link sqlite3.class.constants.create-vtable */ #[\Since('8.2')] #[\Until('8.4')] public const CREATE_VTABLE = UNKNOWN; /** @cvalue SQLITE_CREATE_VTABLE */ #[\Since('8.4')] public const int CREATE_VTABLE = UNKNOWN; /** * @var int * @cvalue SQLITE_DROP_VTABLE * @link sqlite3.class.constants.drop-vtable */ #[\Since('8.2')] #[\Until('8.4')] public const DROP_VTABLE = UNKNOWN; /** @cvalue SQLITE_DROP_VTABLE */ #[\Since('8.4')] public const int DROP_VTABLE = UNKNOWN; /** * @var int * @cvalue SQLITE_FUNCTION * @link sqlite3.class.constants.function */ #[\Since('8.2')] #[\Until('8.4')] public const FUNCTION = UNKNOWN; /** @cvalue SQLITE_FUNCTION */ #[\Since('8.4')] public const int FUNCTION = UNKNOWN; /** * @var int * @cvalue SQLITE_SAVEPOINT * @link sqlite3.class.constants.savepoint */ #[\Since('8.2')] #[\Until('8.4')] public const SAVEPOINT = UNKNOWN; /** @cvalue SQLITE_SAVEPOINT */ #[\Since('8.4')] public const int SAVEPOINT = UNKNOWN; /** * @var int * @cvalue SQLITE_COPY * @link sqlite3.class.constants.copy */ #[\Since('8.2')] #[\Until('8.4')] public const COPY = UNKNOWN; /** @cvalue SQLITE_COPY */ #[\Since('8.4')] public const int COPY = UNKNOWN; #ifdef SQLITE_RECURSIVE /** * @var int * @cvalue SQLITE_RECURSIVE * @link sqlite3.class.constants.recursive */ #[\Since('8.2')] #[\Until('8.4')] public const RECURSIVE = UNKNOWN; #ifdef SQLITE_RECURSIVE /** @cvalue SQLITE_RECURSIVE */ #[\Since('8.4')] public const int RECURSIVE = UNKNOWN; }= 0x073E00 /* Available since 7.62.0 */ #[\Since('8.2')] function curl_upkeep(\CurlHandle $handle): bool { }= 0x070f04 /* 7.15.4 */ function curl_escape(\CurlHandle $handle, string $string): string|false { }= 0x071200 /* 7.18.0 */ function curl_pause(\CurlHandle $handle, int $flags): int { } */ public function getInScopeNamespaces(): array { } /** @return list */ public function getDescendantNamespaces(): array { } public function rename(?string $namespaceURI, string $qualifiedName): void { } } */ public $classes; /** @var array */ public $functions; public function __construct(int $phpVersionId) { $classes = ['addressinfo' => 'stubs/ext/sockets/AddressInfo.stub', 'appenditerator' => 'stubs/ext/spl/AppendIterator.stub', 'argumentcounterror' => 'stubs/Zend/ArgumentCountError.stub', 'arithmeticerror' => 'stubs/Zend/ArithmeticError.stub', 'arrayaccess' => 'stubs/Zend/ArrayAccess.stub', 'arrayiterator' => 'stubs/ext/spl/ArrayIterator.stub', 'arrayobject' => 'stubs/ext/spl/ArrayObject.stub', 'attribute' => 'stubs/Zend/Attribute.stub', 'cachingiterator' => 'stubs/ext/spl/CachingIterator.stub', 'callbackfilteriterator' => 'stubs/ext/spl/CallbackFilterIterator.stub', 'closedgeneratorexception' => 'stubs/Zend/ClosedGeneratorException.stub', 'closure' => 'stubs/Zend/Closure.stub', 'collator' => 'stubs/ext/intl/collator/Collator.stub', 'com' => 'stubs/ext/com_dotnet/com.stub', 'com_exception' => 'stubs/ext/com_dotnet/com_exception.stub', 'compersisthelper' => 'stubs/ext/com_dotnet/COMPersistHelper.stub', 'compileerror' => 'stubs/Zend/CompileError.stub', 'countable' => 'stubs/Zend/Countable.stub', 'curlfile' => 'stubs/ext/curl/CURLFile.stub', 'curlhandle' => 'stubs/ext/curl/CurlHandle.stub', 'curlmultihandle' => 'stubs/ext/curl/CurlMultiHandle.stub', 'curlsharehandle' => 'stubs/ext/curl/CurlShareHandle.stub', 'dateinterval' => 'stubs/ext/date/DateInterval.stub', 'dateperiod' => 'stubs/ext/date/DatePeriod.stub', 'datetime' => 'stubs/ext/date/DateTime.stub', 'datetimeimmutable' => 'stubs/ext/date/DateTimeImmutable.stub', 'datetimeinterface' => 'stubs/ext/date/DateTimeInterface.stub', 'datetimezone' => 'stubs/ext/date/DateTimeZone.stub', 'deflatecontext' => 'stubs/ext/zlib/DeflateContext.stub', 'directory' => 'stubs/ext/standard/Directory.stub', 'directoryiterator' => 'stubs/ext/spl/DirectoryIterator.stub', 'divisionbyzeroerror' => 'stubs/Zend/DivisionByZeroError.stub', 'domattr' => 'stubs/ext/dom/DOMAttr.stub', 'domcdatasection' => 'stubs/ext/dom/DOMCdataSection.stub', 'domcharacterdata' => 'stubs/ext/dom/DOMCharacterData.stub', 'domchildnode' => 'stubs/ext/dom/DOMChildNode.stub', 'domcomment' => 'stubs/ext/dom/DOMComment.stub', 'domdocument' => 'stubs/ext/dom/DOMDocument.stub', 'domdocumentfragment' => 'stubs/ext/dom/DOMDocumentFragment.stub', 'domdocumenttype' => 'stubs/ext/dom/DOMDocumentType.stub', 'domelement' => 'stubs/ext/dom/DOMElement.stub', 'domentity' => 'stubs/ext/dom/DOMEntity.stub', 'domentityreference' => 'stubs/ext/dom/DOMEntityReference.stub', 'domexception' => 'stubs/ext/dom/DOMException.stub', 'domimplementation' => 'stubs/ext/dom/DOMImplementation.stub', 'domnamednodemap' => 'stubs/ext/dom/DOMNamedNodeMap.stub', 'domnamespacenode' => 'stubs/ext/dom/DOMNameSpaceNode.stub', 'domnode' => 'stubs/ext/dom/DOMNode.stub', 'domnodelist' => 'stubs/ext/dom/DOMNodeList.stub', 'domnotation' => 'stubs/ext/dom/DOMNotation.stub', 'domparentnode' => 'stubs/ext/dom/DOMParentNode.stub', 'domprocessinginstruction' => 'stubs/ext/dom/DOMProcessingInstruction.stub', 'domtext' => 'stubs/ext/dom/DOMText.stub', 'domxpath' => 'stubs/ext/dom/DOMXPath.stub', 'dotnet' => 'stubs/ext/com_dotnet/dotnet.stub', 'emptyiterator' => 'stubs/ext/spl/EmptyIterator.stub', 'enchantbroker' => 'stubs/ext/enchant/EnchantBroker.stub', 'enchantdictionary' => 'stubs/ext/enchant/EnchantDictionary.stub', 'error' => 'stubs/Zend/Error.stub', 'errorexception' => 'stubs/Zend/ErrorException.stub', 'exception' => 'stubs/Zend/Exception.stub', 'ffi' => 'stubs/ext/ffi/FFI.stub', 'ffi\\cdata' => 'stubs/ext/ffi/FFI/CData.stub', 'ffi\\ctype' => 'stubs/ext/ffi/FFI/CType.stub', 'ffi\\exception' => 'stubs/ext/ffi/FFI/Exception.stub', 'ffi\\parserexception' => 'stubs/ext/ffi/FFI/ParserException.stub', 'filesystemiterator' => 'stubs/ext/spl/FilesystemIterator.stub', 'filteriterator' => 'stubs/ext/spl/FilterIterator.stub', 'finfo' => 'stubs/ext/fileinfo/finfo.stub', 'gdimage' => 'stubs/ext/gd/GdImage.stub', 'generator' => 'stubs/Zend/Generator.stub', 'globiterator' => 'stubs/ext/spl/GlobIterator.stub', 'gmp' => 'stubs/ext/gmp/GMP.stub', 'hashcontext' => 'stubs/ext/hash/HashContext.stub', 'infiniteiterator' => 'stubs/ext/spl/InfiniteIterator.stub', 'inflatecontext' => 'stubs/ext/zlib/InflateContext.stub', 'internaliterator' => 'stubs/Zend/InternalIterator.stub', 'intlbreakiterator' => 'stubs/ext/intl/breakiterator/IntlBreakIterator.stub', 'intlcalendar' => 'stubs/ext/intl/calendar/IntlCalendar.stub', 'intlchar' => 'stubs/ext/intl/uchar/IntlChar.stub', 'intlcodepointbreakiterator' => 'stubs/ext/intl/breakiterator/IntlCodePointBreakIterator.stub', 'intldateformatter' => 'stubs/ext/intl/dateformat/IntlDateFormatter.stub', 'intlexception' => 'stubs/ext/intl/IntlException.stub', 'intlgregoriancalendar' => 'stubs/ext/intl/calendar/IntlGregorianCalendar.stub', 'intliterator' => 'stubs/ext/intl/common/IntlIterator.stub', 'intlpartsiterator' => 'stubs/ext/intl/breakiterator/IntlPartsIterator.stub', 'intlrulebasedbreakiterator' => 'stubs/ext/intl/breakiterator/IntlRuleBasedBreakIterator.stub', 'intltimezone' => 'stubs/ext/intl/timezone/IntlTimeZone.stub', 'iterator' => 'stubs/Zend/Iterator.stub', 'iteratoraggregate' => 'stubs/Zend/IteratorAggregate.stub', 'iteratoriterator' => 'stubs/ext/spl/IteratorIterator.stub', 'jsonexception' => 'stubs/ext/json/JsonException.stub', 'jsonserializable' => 'stubs/ext/json/JsonSerializable.stub', 'libxmlerror' => 'stubs/ext/libxml/LibXMLError.stub', 'limititerator' => 'stubs/ext/spl/LimitIterator.stub', 'locale' => 'stubs/ext/intl/locale/Locale.stub', 'messageformatter' => 'stubs/ext/intl/msgformat/MessageFormatter.stub', 'multipleiterator' => 'stubs/ext/spl/MultipleIterator.stub', 'mysqli' => 'stubs/ext/mysqli/mysqli.stub', 'mysqli_driver' => 'stubs/ext/mysqli/mysqli_driver.stub', 'mysqli_result' => 'stubs/ext/mysqli/mysqli_result.stub', 'mysqli_sql_exception' => 'stubs/ext/mysqli/mysqli_sql_exception.stub', 'mysqli_stmt' => 'stubs/ext/mysqli/mysqli_stmt.stub', 'mysqli_warning' => 'stubs/ext/mysqli/mysqli_warning.stub', 'norewinditerator' => 'stubs/ext/spl/NoRewindIterator.stub', 'normalizer' => 'stubs/ext/intl/normalizer/Normalizer.stub', 'numberformatter' => 'stubs/ext/intl/formatter/NumberFormatter.stub', 'ocicollection' => 'stubs/ext/oci8/OCICollection.stub', 'ocilob' => 'stubs/ext/oci8/OCILob.stub', 'opensslasymmetrickey' => 'stubs/ext/openssl/OpenSSLAsymmetricKey.stub', 'opensslcertificate' => 'stubs/ext/openssl/OpenSSLCertificate.stub', 'opensslcertificatesigningrequest' => 'stubs/ext/openssl/OpenSSLCertificateSigningRequest.stub', 'outeriterator' => 'stubs/ext/spl/OuterIterator.stub', 'parentiterator' => 'stubs/ext/spl/ParentIterator.stub', 'parseerror' => 'stubs/Zend/ParseError.stub', 'pdo' => 'stubs/ext/pdo/PDO.stub', 'pdo_pgsql_ext' => 'stubs/ext/pdo_pgsql/PDO_PGSql_Ext.stub', 'pdo_sqlite_ext' => 'stubs/ext/pdo_sqlite/PDO_SQLite_Ext.stub', 'pdoexception' => 'stubs/ext/pdo/PDOException.stub', 'pdorow' => 'stubs/ext/pdo/PDORow.stub', 'pdostatement' => 'stubs/ext/pdo/PDOStatement.stub', 'phar' => 'stubs/ext/phar/Phar.stub', 'phardata' => 'stubs/ext/phar/PharData.stub', 'pharexception' => 'stubs/ext/phar/PharException.stub', 'pharfileinfo' => 'stubs/ext/phar/PharFileInfo.stub', 'php_user_filter' => 'stubs/ext/standard/php_user_filter.stub', 'phptoken' => 'stubs/ext/tokenizer/PhpToken.stub', 'recursivearrayiterator' => 'stubs/ext/spl/RecursiveArrayIterator.stub', 'recursivecachingiterator' => 'stubs/ext/spl/RecursiveCachingIterator.stub', 'recursivecallbackfilteriterator' => 'stubs/ext/spl/RecursiveCallbackFilterIterator.stub', 'recursivedirectoryiterator' => 'stubs/ext/spl/RecursiveDirectoryIterator.stub', 'recursivefilteriterator' => 'stubs/ext/spl/RecursiveFilterIterator.stub', 'recursiveiterator' => 'stubs/ext/spl/RecursiveIterator.stub', 'recursiveiteratoriterator' => 'stubs/ext/spl/RecursiveIteratorIterator.stub', 'recursiveregexiterator' => 'stubs/ext/spl/RecursiveRegexIterator.stub', 'recursivetreeiterator' => 'stubs/ext/spl/RecursiveTreeIterator.stub', 'reflection' => 'stubs/ext/reflection/Reflection.stub', 'reflectionattribute' => 'stubs/ext/reflection/ReflectionAttribute.stub', 'reflectionclass' => 'stubs/ext/reflection/ReflectionClass.stub', 'reflectionclassconstant' => 'stubs/ext/reflection/ReflectionClassConstant.stub', 'reflectionexception' => 'stubs/ext/reflection/ReflectionException.stub', 'reflectionextension' => 'stubs/ext/reflection/ReflectionExtension.stub', 'reflectionfunction' => 'stubs/ext/reflection/ReflectionFunction.stub', 'reflectionfunctionabstract' => 'stubs/ext/reflection/ReflectionFunctionAbstract.stub', 'reflectiongenerator' => 'stubs/ext/reflection/ReflectionGenerator.stub', 'reflectionmethod' => 'stubs/ext/reflection/ReflectionMethod.stub', 'reflectionnamedtype' => 'stubs/ext/reflection/ReflectionNamedType.stub', 'reflectionobject' => 'stubs/ext/reflection/ReflectionObject.stub', 'reflectionparameter' => 'stubs/ext/reflection/ReflectionParameter.stub', 'reflectionproperty' => 'stubs/ext/reflection/ReflectionProperty.stub', 'reflectionreference' => 'stubs/ext/reflection/ReflectionReference.stub', 'reflectiontype' => 'stubs/ext/reflection/ReflectionType.stub', 'reflectionuniontype' => 'stubs/ext/reflection/ReflectionUnionType.stub', 'reflectionzendextension' => 'stubs/ext/reflection/ReflectionZendExtension.stub', 'reflector' => 'stubs/ext/reflection/Reflector.stub', 'regexiterator' => 'stubs/ext/spl/RegexIterator.stub', 'resourcebundle' => 'stubs/ext/intl/resourcebundle/ResourceBundle.stub', 'seekableiterator' => 'stubs/ext/spl/SeekableIterator.stub', 'serializable' => 'stubs/Zend/Serializable.stub', 'sessionhandler' => 'stubs/ext/session/SessionHandler.stub', 'sessionhandlerinterface' => 'stubs/ext/session/SessionHandlerInterface.stub', 'sessionidinterface' => 'stubs/ext/session/SessionIdInterface.stub', 'sessionupdatetimestamphandlerinterface' => 'stubs/ext/session/SessionUpdateTimestampHandlerInterface.stub', 'shmop' => 'stubs/ext/shmop/Shmop.stub', 'simplexmlelement' => 'stubs/ext/simplexml/SimpleXMLElement.stub', 'simplexmliterator' => 'stubs/ext/simplexml/SimpleXMLIterator.stub', 'snmp' => 'stubs/ext/snmp/SNMP.stub', 'snmpexception' => 'stubs/ext/snmp/SNMPException.stub', 'soapclient' => 'stubs/ext/soap/SoapClient.stub', 'soapfault' => 'stubs/ext/soap/SoapFault.stub', 'soapheader' => 'stubs/ext/soap/SoapHeader.stub', 'soapparam' => 'stubs/ext/soap/SoapParam.stub', 'soapserver' => 'stubs/ext/soap/SoapServer.stub', 'soapvar' => 'stubs/ext/soap/SoapVar.stub', 'socket' => 'stubs/ext/sockets/Socket.stub', 'sodiumexception' => 'stubs/ext/sodium/SodiumException.stub', 'spldoublylinkedlist' => 'stubs/ext/spl/SplDoublyLinkedList.stub', 'splfileinfo' => 'stubs/ext/spl/SplFileInfo.stub', 'splfileobject' => 'stubs/ext/spl/SplFileObject.stub', 'splfixedarray' => 'stubs/ext/spl/SplFixedArray.stub', 'splheap' => 'stubs/ext/spl/SplHeap.stub', 'splmaxheap' => 'stubs/ext/spl/SplMaxHeap.stub', 'splminheap' => 'stubs/ext/spl/SplMinHeap.stub', 'splobjectstorage' => 'stubs/ext/spl/SplObjectStorage.stub', 'splobserver' => 'stubs/ext/spl/SplObserver.stub', 'splpriorityqueue' => 'stubs/ext/spl/SplPriorityQueue.stub', 'splqueue' => 'stubs/ext/spl/SplQueue.stub', 'splstack' => 'stubs/ext/spl/SplStack.stub', 'splsubject' => 'stubs/ext/spl/SplSubject.stub', 'spltempfileobject' => 'stubs/ext/spl/SplTempFileObject.stub', 'spoofchecker' => 'stubs/ext/intl/spoofchecker/Spoofchecker.stub', 'sqlite3' => 'stubs/ext/sqlite3/SQLite3.stub', 'sqlite3result' => 'stubs/ext/sqlite3/SQLite3Result.stub', 'sqlite3stmt' => 'stubs/ext/sqlite3/SQLite3Stmt.stub', 'stringable' => 'stubs/Zend/Stringable.stub', 'sysvmessagequeue' => 'stubs/ext/sysvmsg/SysvMessageQueue.stub', 'sysvsemaphore' => 'stubs/ext/sysvsem/SysvSemaphore.stub', 'sysvsharedmemory' => 'stubs/ext/sysvshm/SysvSharedMemory.stub', 'throwable' => 'stubs/Zend/Throwable.stub', 'tidy' => 'stubs/ext/tidy/tidy.stub', 'tidynode' => 'stubs/ext/tidy/tidyNode.stub', 'transliterator' => 'stubs/ext/intl/transliterator/Transliterator.stub', 'traversable' => 'stubs/Zend/Traversable.stub', 'typeerror' => 'stubs/Zend/TypeError.stub', 'uconverter' => 'stubs/ext/intl/converter/UConverter.stub', 'unhandledmatcherror' => 'stubs/Zend/UnhandledMatchError.stub', 'valueerror' => 'stubs/Zend/ValueError.stub', 'variant' => 'stubs/ext/com_dotnet/variant.stub', 'weakmap' => 'stubs/Zend/WeakMap.stub', 'weakreference' => 'stubs/Zend/WeakReference.stub', 'xmlparser' => 'stubs/ext/xml/XMLParser.stub', 'xmlreader' => 'stubs/ext/xmlreader/XMLReader.stub', 'xmlwriter' => 'stubs/ext/xmlwriter/XMLWriter.stub', 'xsltprocessor' => 'stubs/ext/xsl/XSLTProcessor.stub', 'ziparchive' => 'stubs/ext/zip/ZipArchive.stub']; $functions = ['_' => 'stubs/ext/gettext/_.stub', 'abs' => 'stubs/ext/standard/abs.stub', 'acos' => 'stubs/ext/standard/acos.stub', 'acosh' => 'stubs/ext/standard/acosh.stub', 'addcslashes' => 'stubs/ext/standard/addcslashes.stub', 'addslashes' => 'stubs/ext/standard/addslashes.stub', 'apache_child_terminate' => 'stubs/sapi/cgi/apache_child_terminate.stub', 'apache_get_modules' => 'stubs/sapi/apache2handler/apache_get_modules.stub', 'apache_get_version' => 'stubs/sapi/apache2handler/apache_get_version.stub', 'apache_getenv' => 'stubs/sapi/apache2handler/apache_getenv.stub', 'apache_lookup_uri' => 'stubs/sapi/apache2handler/apache_lookup_uri.stub', 'apache_note' => 'stubs/sapi/apache2handler/apache_note.stub', 'apache_request_headers' => 'stubs/sapi/apache2handler/apache_request_headers.stub', 'apache_response_headers' => 'stubs/sapi/apache2handler/apache_response_headers.stub', 'apache_setenv' => 'stubs/sapi/apache2handler/apache_setenv.stub', 'array_change_key_case' => 'stubs/ext/standard/array_change_key_case.stub', 'array_chunk' => 'stubs/ext/standard/array_chunk.stub', 'array_column' => 'stubs/ext/standard/array_column.stub', 'array_combine' => 'stubs/ext/standard/array_combine.stub', 'array_count_values' => 'stubs/ext/standard/array_count_values.stub', 'array_diff' => 'stubs/ext/standard/array_diff.stub', 'array_diff_assoc' => 'stubs/ext/standard/array_diff_assoc.stub', 'array_diff_key' => 'stubs/ext/standard/array_diff_key.stub', 'array_diff_uassoc' => 'stubs/ext/standard/array_diff_uassoc.stub', 'array_diff_ukey' => 'stubs/ext/standard/array_diff_ukey.stub', 'array_fill' => 'stubs/ext/standard/array_fill.stub', 'array_fill_keys' => 'stubs/ext/standard/array_fill_keys.stub', 'array_filter' => 'stubs/ext/standard/array_filter.stub', 'array_flip' => 'stubs/ext/standard/array_flip.stub', 'array_intersect' => 'stubs/ext/standard/array_intersect.stub', 'array_intersect_assoc' => 'stubs/ext/standard/array_intersect_assoc.stub', 'array_intersect_key' => 'stubs/ext/standard/array_intersect_key.stub', 'array_intersect_uassoc' => 'stubs/ext/standard/array_intersect_uassoc.stub', 'array_intersect_ukey' => 'stubs/ext/standard/array_intersect_ukey.stub', 'array_key_exists' => 'stubs/ext/standard/array_key_exists.stub', 'array_key_first' => 'stubs/ext/standard/array_key_first.stub', 'array_key_last' => 'stubs/ext/standard/array_key_last.stub', 'array_keys' => 'stubs/ext/standard/array_keys.stub', 'array_map' => 'stubs/ext/standard/array_map.stub', 'array_merge' => 'stubs/ext/standard/array_merge.stub', 'array_merge_recursive' => 'stubs/ext/standard/array_merge_recursive.stub', 'array_multisort' => 'stubs/ext/standard/array_multisort.stub', 'array_pad' => 'stubs/ext/standard/array_pad.stub', 'array_pop' => 'stubs/ext/standard/array_pop.stub', 'array_product' => 'stubs/ext/standard/array_product.stub', 'array_push' => 'stubs/ext/standard/array_push.stub', 'array_rand' => 'stubs/ext/standard/array_rand.stub', 'array_reduce' => 'stubs/ext/standard/array_reduce.stub', 'array_replace' => 'stubs/ext/standard/array_replace.stub', 'array_replace_recursive' => 'stubs/ext/standard/array_replace_recursive.stub', 'array_reverse' => 'stubs/ext/standard/array_reverse.stub', 'array_search' => 'stubs/ext/standard/array_search.stub', 'array_shift' => 'stubs/ext/standard/array_shift.stub', 'array_slice' => 'stubs/ext/standard/array_slice.stub', 'array_splice' => 'stubs/ext/standard/array_splice.stub', 'array_sum' => 'stubs/ext/standard/array_sum.stub', 'array_udiff' => 'stubs/ext/standard/array_udiff.stub', 'array_udiff_assoc' => 'stubs/ext/standard/array_udiff_assoc.stub', 'array_udiff_uassoc' => 'stubs/ext/standard/array_udiff_uassoc.stub', 'array_uintersect' => 'stubs/ext/standard/array_uintersect.stub', 'array_uintersect_assoc' => 'stubs/ext/standard/array_uintersect_assoc.stub', 'array_uintersect_uassoc' => 'stubs/ext/standard/array_uintersect_uassoc.stub', 'array_unique' => 'stubs/ext/standard/array_unique.stub', 'array_unshift' => 'stubs/ext/standard/array_unshift.stub', 'array_values' => 'stubs/ext/standard/array_values.stub', 'array_walk' => 'stubs/ext/standard/array_walk.stub', 'array_walk_recursive' => 'stubs/ext/standard/array_walk_recursive.stub', 'arsort' => 'stubs/ext/standard/arsort.stub', 'asin' => 'stubs/ext/standard/asin.stub', 'asinh' => 'stubs/ext/standard/asinh.stub', 'asort' => 'stubs/ext/standard/asort.stub', 'assert' => 'stubs/ext/standard/assert.stub', 'assert_options' => 'stubs/ext/standard/assert_options.stub', 'atan' => 'stubs/ext/standard/atan.stub', 'atan2' => 'stubs/ext/standard/atan2.stub', 'atanh' => 'stubs/ext/standard/atanh.stub', 'base64_decode' => 'stubs/ext/standard/base64_decode.stub', 'base64_encode' => 'stubs/ext/standard/base64_encode.stub', 'base_convert' => 'stubs/ext/standard/base_convert.stub', 'basename' => 'stubs/ext/standard/basename.stub', 'bcadd' => 'stubs/ext/bcmath/bcadd.stub', 'bccomp' => 'stubs/ext/bcmath/bccomp.stub', 'bcdiv' => 'stubs/ext/bcmath/bcdiv.stub', 'bcmod' => 'stubs/ext/bcmath/bcmod.stub', 'bcmul' => 'stubs/ext/bcmath/bcmul.stub', 'bcpow' => 'stubs/ext/bcmath/bcpow.stub', 'bcpowmod' => 'stubs/ext/bcmath/bcpowmod.stub', 'bcscale' => 'stubs/ext/bcmath/bcscale.stub', 'bcsqrt' => 'stubs/ext/bcmath/bcsqrt.stub', 'bcsub' => 'stubs/ext/bcmath/bcsub.stub', 'bin2hex' => 'stubs/ext/standard/bin2hex.stub', 'bind_textdomain_codeset' => 'stubs/ext/gettext/bind_textdomain_codeset.stub', 'bindec' => 'stubs/ext/standard/bindec.stub', 'bindtextdomain' => 'stubs/ext/gettext/bindtextdomain.stub', 'boolval' => 'stubs/ext/standard/boolval.stub', 'bzclose' => 'stubs/ext/bz2/bzclose.stub', 'bzcompress' => 'stubs/ext/bz2/bzcompress.stub', 'bzdecompress' => 'stubs/ext/bz2/bzdecompress.stub', 'bzerrno' => 'stubs/ext/bz2/bzerrno.stub', 'bzerror' => 'stubs/ext/bz2/bzerror.stub', 'bzerrstr' => 'stubs/ext/bz2/bzerrstr.stub', 'bzflush' => 'stubs/ext/bz2/bzflush.stub', 'bzopen' => 'stubs/ext/bz2/bzopen.stub', 'bzread' => 'stubs/ext/bz2/bzread.stub', 'bzwrite' => 'stubs/ext/bz2/bzwrite.stub', 'cal_days_in_month' => 'stubs/ext/calendar/cal_days_in_month.stub', 'cal_from_jd' => 'stubs/ext/calendar/cal_from_jd.stub', 'cal_info' => 'stubs/ext/calendar/cal_info.stub', 'cal_to_jd' => 'stubs/ext/calendar/cal_to_jd.stub', 'call_user_func' => 'stubs/ext/standard/call_user_func.stub', 'call_user_func_array' => 'stubs/ext/standard/call_user_func_array.stub', 'ceil' => 'stubs/ext/standard/ceil.stub', 'chdir' => 'stubs/ext/standard/chdir.stub', 'checkdate' => 'stubs/ext/date/checkdate.stub', 'checkdnsrr' => 'stubs/ext/standard/checkdnsrr.stub', 'chgrp' => 'stubs/ext/standard/chgrp.stub', 'chmod' => 'stubs/ext/standard/chmod.stub', 'chop' => 'stubs/ext/standard/chop.stub', 'chown' => 'stubs/ext/standard/chown.stub', 'chr' => 'stubs/ext/standard/chr.stub', 'chroot' => 'stubs/ext/standard/chroot.stub', 'chunk_split' => 'stubs/ext/standard/chunk_split.stub', 'class_alias' => 'stubs/Zend/class_alias.stub', 'class_exists' => 'stubs/Zend/class_exists.stub', 'class_implements' => 'stubs/ext/spl/class_implements.stub', 'class_parents' => 'stubs/ext/spl/class_parents.stub', 'class_uses' => 'stubs/ext/spl/class_uses.stub', 'clearstatcache' => 'stubs/ext/standard/clearstatcache.stub', 'cli_get_process_title' => 'stubs/sapi/cli/cli_get_process_title.stub', 'cli_set_process_title' => 'stubs/sapi/cli/cli_set_process_title.stub', 'closedir' => 'stubs/ext/standard/closedir.stub', 'closelog' => 'stubs/ext/standard/closelog.stub', 'collator_asort' => 'stubs/ext/intl/collator_asort.stub', 'collator_compare' => 'stubs/ext/intl/collator_compare.stub', 'collator_create' => 'stubs/ext/intl/collator_create.stub', 'collator_get_attribute' => 'stubs/ext/intl/collator_get_attribute.stub', 'collator_get_error_code' => 'stubs/ext/intl/collator_get_error_code.stub', 'collator_get_error_message' => 'stubs/ext/intl/collator_get_error_message.stub', 'collator_get_locale' => 'stubs/ext/intl/collator_get_locale.stub', 'collator_get_sort_key' => 'stubs/ext/intl/collator_get_sort_key.stub', 'collator_get_strength' => 'stubs/ext/intl/collator_get_strength.stub', 'collator_set_attribute' => 'stubs/ext/intl/collator_set_attribute.stub', 'collator_set_strength' => 'stubs/ext/intl/collator_set_strength.stub', 'collator_sort' => 'stubs/ext/intl/collator_sort.stub', 'collator_sort_with_sort_keys' => 'stubs/ext/intl/collator_sort_with_sort_keys.stub', 'com_create_guid' => 'stubs/ext/com_dotnet/com_create_guid.stub', 'com_event_sink' => 'stubs/ext/com_dotnet/com_event_sink.stub', 'com_get_active_object' => 'stubs/ext/com_dotnet/com_get_active_object.stub', 'com_load_typelib' => 'stubs/ext/com_dotnet/com_load_typelib.stub', 'com_message_pump' => 'stubs/ext/com_dotnet/com_message_pump.stub', 'com_print_typeinfo' => 'stubs/ext/com_dotnet/com_print_typeinfo.stub', 'compact' => 'stubs/ext/standard/compact.stub', 'config_get_hash' => 'stubs/ext/standard/config_get_hash.stub', 'connection_aborted' => 'stubs/ext/standard/connection_aborted.stub', 'connection_status' => 'stubs/ext/standard/connection_status.stub', 'constant' => 'stubs/ext/standard/constant.stub', 'convert_uudecode' => 'stubs/ext/standard/convert_uudecode.stub', 'convert_uuencode' => 'stubs/ext/standard/convert_uuencode.stub', 'copy' => 'stubs/ext/standard/copy.stub', 'cos' => 'stubs/ext/standard/cos.stub', 'cosh' => 'stubs/ext/standard/cosh.stub', 'count' => 'stubs/ext/standard/count.stub', 'count_chars' => 'stubs/ext/standard/count_chars.stub', 'crc32' => 'stubs/ext/standard/crc32.stub', 'crypt' => 'stubs/ext/standard/crypt.stub', 'ctype_alnum' => 'stubs/ext/ctype/ctype_alnum.stub', 'ctype_alpha' => 'stubs/ext/ctype/ctype_alpha.stub', 'ctype_cntrl' => 'stubs/ext/ctype/ctype_cntrl.stub', 'ctype_digit' => 'stubs/ext/ctype/ctype_digit.stub', 'ctype_graph' => 'stubs/ext/ctype/ctype_graph.stub', 'ctype_lower' => 'stubs/ext/ctype/ctype_lower.stub', 'ctype_print' => 'stubs/ext/ctype/ctype_print.stub', 'ctype_punct' => 'stubs/ext/ctype/ctype_punct.stub', 'ctype_space' => 'stubs/ext/ctype/ctype_space.stub', 'ctype_upper' => 'stubs/ext/ctype/ctype_upper.stub', 'ctype_xdigit' => 'stubs/ext/ctype/ctype_xdigit.stub', 'curl_close' => 'stubs/ext/curl/curl_close.stub', 'curl_copy_handle' => 'stubs/ext/curl/curl_copy_handle.stub', 'curl_errno' => 'stubs/ext/curl/curl_errno.stub', 'curl_error' => 'stubs/ext/curl/curl_error.stub', 'curl_escape' => 'stubs/ext/curl/curl_escape.stub', 'curl_exec' => 'stubs/ext/curl/curl_exec.stub', 'curl_file_create' => 'stubs/ext/curl/curl_file_create.stub', 'curl_getinfo' => 'stubs/ext/curl/curl_getinfo.stub', 'curl_init' => 'stubs/ext/curl/curl_init.stub', 'curl_multi_add_handle' => 'stubs/ext/curl/curl_multi_add_handle.stub', 'curl_multi_close' => 'stubs/ext/curl/curl_multi_close.stub', 'curl_multi_errno' => 'stubs/ext/curl/curl_multi_errno.stub', 'curl_multi_exec' => 'stubs/ext/curl/curl_multi_exec.stub', 'curl_multi_getcontent' => 'stubs/ext/curl/curl_multi_getcontent.stub', 'curl_multi_info_read' => 'stubs/ext/curl/curl_multi_info_read.stub', 'curl_multi_init' => 'stubs/ext/curl/curl_multi_init.stub', 'curl_multi_remove_handle' => 'stubs/ext/curl/curl_multi_remove_handle.stub', 'curl_multi_select' => 'stubs/ext/curl/curl_multi_select.stub', 'curl_multi_setopt' => 'stubs/ext/curl/curl_multi_setopt.stub', 'curl_multi_strerror' => 'stubs/ext/curl/curl_multi_strerror.stub', 'curl_pause' => 'stubs/ext/curl/curl_pause.stub', 'curl_reset' => 'stubs/ext/curl/curl_reset.stub', 'curl_setopt' => 'stubs/ext/curl/curl_setopt.stub', 'curl_setopt_array' => 'stubs/ext/curl/curl_setopt_array.stub', 'curl_share_close' => 'stubs/ext/curl/curl_share_close.stub', 'curl_share_errno' => 'stubs/ext/curl/curl_share_errno.stub', 'curl_share_init' => 'stubs/ext/curl/curl_share_init.stub', 'curl_share_setopt' => 'stubs/ext/curl/curl_share_setopt.stub', 'curl_share_strerror' => 'stubs/ext/curl/curl_share_strerror.stub', 'curl_strerror' => 'stubs/ext/curl/curl_strerror.stub', 'curl_unescape' => 'stubs/ext/curl/curl_unescape.stub', 'curl_version' => 'stubs/ext/curl/curl_version.stub', 'current' => 'stubs/ext/standard/current.stub', 'date' => 'stubs/ext/date/date.stub', 'date_add' => 'stubs/ext/date/date_add.stub', 'date_create' => 'stubs/ext/date/date_create.stub', 'date_create_from_format' => 'stubs/ext/date/date_create_from_format.stub', 'date_create_immutable' => 'stubs/ext/date/date_create_immutable.stub', 'date_create_immutable_from_format' => 'stubs/ext/date/date_create_immutable_from_format.stub', 'date_date_set' => 'stubs/ext/date/date_date_set.stub', 'date_default_timezone_get' => 'stubs/ext/date/date_default_timezone_get.stub', 'date_default_timezone_set' => 'stubs/ext/date/date_default_timezone_set.stub', 'date_diff' => 'stubs/ext/date/date_diff.stub', 'date_format' => 'stubs/ext/date/date_format.stub', 'date_get_last_errors' => 'stubs/ext/date/date_get_last_errors.stub', 'date_interval_create_from_date_string' => 'stubs/ext/date/date_interval_create_from_date_string.stub', 'date_interval_format' => 'stubs/ext/date/date_interval_format.stub', 'date_isodate_set' => 'stubs/ext/date/date_isodate_set.stub', 'date_modify' => 'stubs/ext/date/date_modify.stub', 'date_offset_get' => 'stubs/ext/date/date_offset_get.stub', 'date_parse' => 'stubs/ext/date/date_parse.stub', 'date_parse_from_format' => 'stubs/ext/date/date_parse_from_format.stub', 'date_sub' => 'stubs/ext/date/date_sub.stub', 'date_sun_info' => 'stubs/ext/date/date_sun_info.stub', 'date_sunrise' => 'stubs/ext/date/date_sunrise.stub', 'date_sunset' => 'stubs/ext/date/date_sunset.stub', 'date_time_set' => 'stubs/ext/date/date_time_set.stub', 'date_timestamp_get' => 'stubs/ext/date/date_timestamp_get.stub', 'date_timestamp_set' => 'stubs/ext/date/date_timestamp_set.stub', 'date_timezone_get' => 'stubs/ext/date/date_timezone_get.stub', 'date_timezone_set' => 'stubs/ext/date/date_timezone_set.stub', 'datefmt_create' => 'stubs/ext/intl/datefmt_create.stub', 'datefmt_format' => 'stubs/ext/intl/datefmt_format.stub', 'datefmt_format_object' => 'stubs/ext/intl/datefmt_format_object.stub', 'datefmt_get_calendar' => 'stubs/ext/intl/datefmt_get_calendar.stub', 'datefmt_get_calendar_object' => 'stubs/ext/intl/datefmt_get_calendar_object.stub', 'datefmt_get_datetype' => 'stubs/ext/intl/datefmt_get_datetype.stub', 'datefmt_get_error_code' => 'stubs/ext/intl/datefmt_get_error_code.stub', 'datefmt_get_error_message' => 'stubs/ext/intl/datefmt_get_error_message.stub', 'datefmt_get_locale' => 'stubs/ext/intl/datefmt_get_locale.stub', 'datefmt_get_pattern' => 'stubs/ext/intl/datefmt_get_pattern.stub', 'datefmt_get_timetype' => 'stubs/ext/intl/datefmt_get_timetype.stub', 'datefmt_get_timezone' => 'stubs/ext/intl/datefmt_get_timezone.stub', 'datefmt_get_timezone_id' => 'stubs/ext/intl/datefmt_get_timezone_id.stub', 'datefmt_is_lenient' => 'stubs/ext/intl/datefmt_is_lenient.stub', 'datefmt_localtime' => 'stubs/ext/intl/datefmt_localtime.stub', 'datefmt_parse' => 'stubs/ext/intl/datefmt_parse.stub', 'datefmt_set_calendar' => 'stubs/ext/intl/datefmt_set_calendar.stub', 'datefmt_set_lenient' => 'stubs/ext/intl/datefmt_set_lenient.stub', 'datefmt_set_pattern' => 'stubs/ext/intl/datefmt_set_pattern.stub', 'datefmt_set_timezone' => 'stubs/ext/intl/datefmt_set_timezone.stub', 'dba_close' => 'stubs/ext/dba/dba_close.stub', 'dba_delete' => 'stubs/ext/dba/dba_delete.stub', 'dba_exists' => 'stubs/ext/dba/dba_exists.stub', 'dba_fetch' => 'stubs/ext/dba/dba_fetch.stub', 'dba_firstkey' => 'stubs/ext/dba/dba_firstkey.stub', 'dba_handlers' => 'stubs/ext/dba/dba_handlers.stub', 'dba_insert' => 'stubs/ext/dba/dba_insert.stub', 'dba_key_split' => 'stubs/ext/dba/dba_key_split.stub', 'dba_list' => 'stubs/ext/dba/dba_list.stub', 'dba_nextkey' => 'stubs/ext/dba/dba_nextkey.stub', 'dba_open' => 'stubs/ext/dba/dba_open.stub', 'dba_optimize' => 'stubs/ext/dba/dba_optimize.stub', 'dba_popen' => 'stubs/ext/dba/dba_popen.stub', 'dba_replace' => 'stubs/ext/dba/dba_replace.stub', 'dba_sync' => 'stubs/ext/dba/dba_sync.stub', 'dcgettext' => 'stubs/ext/gettext/dcgettext.stub', 'dcngettext' => 'stubs/ext/gettext/dcngettext.stub', 'debug_backtrace' => 'stubs/Zend/debug_backtrace.stub', 'debug_print_backtrace' => 'stubs/Zend/debug_print_backtrace.stub', 'debug_zval_dump' => 'stubs/ext/standard/debug_zval_dump.stub', 'decbin' => 'stubs/ext/standard/decbin.stub', 'dechex' => 'stubs/ext/standard/dechex.stub', 'decoct' => 'stubs/ext/standard/decoct.stub', 'define' => 'stubs/Zend/define.stub', 'defined' => 'stubs/Zend/defined.stub', 'deflate_add' => 'stubs/ext/zlib/deflate_add.stub', 'deflate_init' => 'stubs/ext/zlib/deflate_init.stub', 'deg2rad' => 'stubs/ext/standard/deg2rad.stub', 'dgettext' => 'stubs/ext/gettext/dgettext.stub', 'dir' => 'stubs/ext/standard/dir.stub', 'dirname' => 'stubs/ext/standard/dirname.stub', 'disk_free_space' => 'stubs/ext/standard/disk_free_space.stub', 'disk_total_space' => 'stubs/ext/standard/disk_total_space.stub', 'diskfreespace' => 'stubs/ext/standard/diskfreespace.stub', 'dl' => 'stubs/ext/standard/dl.stub', 'dngettext' => 'stubs/ext/gettext/dngettext.stub', 'dns_check_record' => 'stubs/ext/standard/dns_check_record.stub', 'dns_get_mx' => 'stubs/ext/standard/dns_get_mx.stub', 'dns_get_record' => 'stubs/ext/standard/dns_get_record.stub', 'dom_import_simplexml' => 'stubs/ext/dom/dom_import_simplexml.stub', 'doubleval' => 'stubs/ext/standard/doubleval.stub', 'easter_date' => 'stubs/ext/calendar/easter_date.stub', 'easter_days' => 'stubs/ext/calendar/easter_days.stub', 'enchant_broker_describe' => 'stubs/ext/enchant/enchant_broker_describe.stub', 'enchant_broker_dict_exists' => 'stubs/ext/enchant/enchant_broker_dict_exists.stub', 'enchant_broker_free' => 'stubs/ext/enchant/enchant_broker_free.stub', 'enchant_broker_free_dict' => 'stubs/ext/enchant/enchant_broker_free_dict.stub', 'enchant_broker_get_dict_path' => 'stubs/ext/enchant/enchant_broker_get_dict_path.stub', 'enchant_broker_get_error' => 'stubs/ext/enchant/enchant_broker_get_error.stub', 'enchant_broker_init' => 'stubs/ext/enchant/enchant_broker_init.stub', 'enchant_broker_list_dicts' => 'stubs/ext/enchant/enchant_broker_list_dicts.stub', 'enchant_broker_request_dict' => 'stubs/ext/enchant/enchant_broker_request_dict.stub', 'enchant_broker_request_pwl_dict' => 'stubs/ext/enchant/enchant_broker_request_pwl_dict.stub', 'enchant_broker_set_dict_path' => 'stubs/ext/enchant/enchant_broker_set_dict_path.stub', 'enchant_broker_set_ordering' => 'stubs/ext/enchant/enchant_broker_set_ordering.stub', 'enchant_dict_add' => 'stubs/ext/enchant/enchant_dict_add.stub', 'enchant_dict_add_to_personal' => 'stubs/ext/enchant/enchant_dict_add_to_personal.stub', 'enchant_dict_add_to_session' => 'stubs/ext/enchant/enchant_dict_add_to_session.stub', 'enchant_dict_check' => 'stubs/ext/enchant/enchant_dict_check.stub', 'enchant_dict_describe' => 'stubs/ext/enchant/enchant_dict_describe.stub', 'enchant_dict_get_error' => 'stubs/ext/enchant/enchant_dict_get_error.stub', 'enchant_dict_is_added' => 'stubs/ext/enchant/enchant_dict_is_added.stub', 'enchant_dict_is_in_session' => 'stubs/ext/enchant/enchant_dict_is_in_session.stub', 'enchant_dict_quick_check' => 'stubs/ext/enchant/enchant_dict_quick_check.stub', 'enchant_dict_store_replacement' => 'stubs/ext/enchant/enchant_dict_store_replacement.stub', 'enchant_dict_suggest' => 'stubs/ext/enchant/enchant_dict_suggest.stub', 'end' => 'stubs/ext/standard/end.stub', 'error_clear_last' => 'stubs/ext/standard/error_clear_last.stub', 'error_get_last' => 'stubs/ext/standard/error_get_last.stub', 'error_log' => 'stubs/ext/standard/error_log.stub', 'error_reporting' => 'stubs/Zend/error_reporting.stub', 'escapeshellarg' => 'stubs/ext/standard/escapeshellarg.stub', 'escapeshellcmd' => 'stubs/ext/standard/escapeshellcmd.stub', 'exec' => 'stubs/ext/standard/exec.stub', 'exif_imagetype' => 'stubs/ext/exif/exif_imagetype.stub', 'exif_read_data' => 'stubs/ext/exif/exif_read_data.stub', 'exif_tagname' => 'stubs/ext/exif/exif_tagname.stub', 'exif_thumbnail' => 'stubs/ext/exif/exif_thumbnail.stub', 'exp' => 'stubs/ext/standard/exp.stub', 'explode' => 'stubs/ext/standard/explode.stub', 'expm1' => 'stubs/ext/standard/expm1.stub', 'extension_loaded' => 'stubs/Zend/extension_loaded.stub', 'extract' => 'stubs/ext/standard/extract.stub', 'fastcgi_finish_request' => 'stubs/sapi/fpm/fpm/fastcgi_finish_request.stub', 'fclose' => 'stubs/ext/standard/fclose.stub', 'fdiv' => 'stubs/ext/standard/fdiv.stub', 'feof' => 'stubs/ext/standard/feof.stub', 'fflush' => 'stubs/ext/standard/fflush.stub', 'fgetc' => 'stubs/ext/standard/fgetc.stub', 'fgetcsv' => 'stubs/ext/standard/fgetcsv.stub', 'fgets' => 'stubs/ext/standard/fgets.stub', 'file' => 'stubs/ext/standard/file.stub', 'file_exists' => 'stubs/ext/standard/file_exists.stub', 'file_get_contents' => 'stubs/ext/standard/file_get_contents.stub', 'file_put_contents' => 'stubs/ext/standard/file_put_contents.stub', 'fileatime' => 'stubs/ext/standard/fileatime.stub', 'filectime' => 'stubs/ext/standard/filectime.stub', 'filegroup' => 'stubs/ext/standard/filegroup.stub', 'fileinode' => 'stubs/ext/standard/fileinode.stub', 'filemtime' => 'stubs/ext/standard/filemtime.stub', 'fileowner' => 'stubs/ext/standard/fileowner.stub', 'fileperms' => 'stubs/ext/standard/fileperms.stub', 'filesize' => 'stubs/ext/standard/filesize.stub', 'filetype' => 'stubs/ext/standard/filetype.stub', 'filter_has_var' => 'stubs/ext/filter/filter_has_var.stub', 'filter_id' => 'stubs/ext/filter/filter_id.stub', 'filter_input' => 'stubs/ext/filter/filter_input.stub', 'filter_input_array' => 'stubs/ext/filter/filter_input_array.stub', 'filter_list' => 'stubs/ext/filter/filter_list.stub', 'filter_var' => 'stubs/ext/filter/filter_var.stub', 'filter_var_array' => 'stubs/ext/filter/filter_var_array.stub', 'finfo_buffer' => 'stubs/ext/fileinfo/finfo_buffer.stub', 'finfo_close' => 'stubs/ext/fileinfo/finfo_close.stub', 'finfo_file' => 'stubs/ext/fileinfo/finfo_file.stub', 'finfo_open' => 'stubs/ext/fileinfo/finfo_open.stub', 'finfo_set_flags' => 'stubs/ext/fileinfo/finfo_set_flags.stub', 'floatval' => 'stubs/ext/standard/floatval.stub', 'flock' => 'stubs/ext/standard/flock.stub', 'floor' => 'stubs/ext/standard/floor.stub', 'flush' => 'stubs/ext/standard/flush.stub', 'fmod' => 'stubs/ext/standard/fmod.stub', 'fnmatch' => 'stubs/ext/standard/fnmatch.stub', 'fopen' => 'stubs/ext/standard/fopen.stub', 'forward_static_call' => 'stubs/ext/standard/forward_static_call.stub', 'forward_static_call_array' => 'stubs/ext/standard/forward_static_call_array.stub', 'fpassthru' => 'stubs/ext/standard/fpassthru.stub', 'fpm_get_status' => 'stubs/sapi/fpm/fpm/fpm_get_status.stub', 'fprintf' => 'stubs/ext/standard/fprintf.stub', 'fputcsv' => 'stubs/ext/standard/fputcsv.stub', 'fputs' => 'stubs/ext/standard/fputs.stub', 'fread' => 'stubs/ext/standard/fread.stub', 'frenchtojd' => 'stubs/ext/calendar/frenchtojd.stub', 'fscanf' => 'stubs/ext/standard/fscanf.stub', 'fseek' => 'stubs/ext/standard/fseek.stub', 'fsockopen' => 'stubs/ext/standard/fsockopen.stub', 'fstat' => 'stubs/ext/standard/fstat.stub', 'ftell' => 'stubs/ext/standard/ftell.stub', 'ftok' => 'stubs/ext/standard/ftok.stub', 'ftp_alloc' => 'stubs/ext/ftp/ftp_alloc.stub', 'ftp_append' => 'stubs/ext/ftp/ftp_append.stub', 'ftp_cdup' => 'stubs/ext/ftp/ftp_cdup.stub', 'ftp_chdir' => 'stubs/ext/ftp/ftp_chdir.stub', 'ftp_chmod' => 'stubs/ext/ftp/ftp_chmod.stub', 'ftp_close' => 'stubs/ext/ftp/ftp_close.stub', 'ftp_connect' => 'stubs/ext/ftp/ftp_connect.stub', 'ftp_delete' => 'stubs/ext/ftp/ftp_delete.stub', 'ftp_exec' => 'stubs/ext/ftp/ftp_exec.stub', 'ftp_fget' => 'stubs/ext/ftp/ftp_fget.stub', 'ftp_fput' => 'stubs/ext/ftp/ftp_fput.stub', 'ftp_get' => 'stubs/ext/ftp/ftp_get.stub', 'ftp_get_option' => 'stubs/ext/ftp/ftp_get_option.stub', 'ftp_login' => 'stubs/ext/ftp/ftp_login.stub', 'ftp_mdtm' => 'stubs/ext/ftp/ftp_mdtm.stub', 'ftp_mkdir' => 'stubs/ext/ftp/ftp_mkdir.stub', 'ftp_mlsd' => 'stubs/ext/ftp/ftp_mlsd.stub', 'ftp_nb_continue' => 'stubs/ext/ftp/ftp_nb_continue.stub', 'ftp_nb_fget' => 'stubs/ext/ftp/ftp_nb_fget.stub', 'ftp_nb_fput' => 'stubs/ext/ftp/ftp_nb_fput.stub', 'ftp_nb_get' => 'stubs/ext/ftp/ftp_nb_get.stub', 'ftp_nb_put' => 'stubs/ext/ftp/ftp_nb_put.stub', 'ftp_nlist' => 'stubs/ext/ftp/ftp_nlist.stub', 'ftp_pasv' => 'stubs/ext/ftp/ftp_pasv.stub', 'ftp_put' => 'stubs/ext/ftp/ftp_put.stub', 'ftp_pwd' => 'stubs/ext/ftp/ftp_pwd.stub', 'ftp_quit' => 'stubs/ext/ftp/ftp_quit.stub', 'ftp_raw' => 'stubs/ext/ftp/ftp_raw.stub', 'ftp_rawlist' => 'stubs/ext/ftp/ftp_rawlist.stub', 'ftp_rename' => 'stubs/ext/ftp/ftp_rename.stub', 'ftp_rmdir' => 'stubs/ext/ftp/ftp_rmdir.stub', 'ftp_set_option' => 'stubs/ext/ftp/ftp_set_option.stub', 'ftp_site' => 'stubs/ext/ftp/ftp_site.stub', 'ftp_size' => 'stubs/ext/ftp/ftp_size.stub', 'ftp_ssl_connect' => 'stubs/ext/ftp/ftp_ssl_connect.stub', 'ftp_systype' => 'stubs/ext/ftp/ftp_systype.stub', 'ftruncate' => 'stubs/ext/standard/ftruncate.stub', 'func_get_arg' => 'stubs/Zend/func_get_arg.stub', 'func_get_args' => 'stubs/Zend/func_get_args.stub', 'func_num_args' => 'stubs/Zend/func_num_args.stub', 'function_exists' => 'stubs/Zend/function_exists.stub', 'fwrite' => 'stubs/ext/standard/fwrite.stub', 'gc_collect_cycles' => 'stubs/Zend/gc_collect_cycles.stub', 'gc_disable' => 'stubs/Zend/gc_disable.stub', 'gc_enable' => 'stubs/Zend/gc_enable.stub', 'gc_enabled' => 'stubs/Zend/gc_enabled.stub', 'gc_mem_caches' => 'stubs/Zend/gc_mem_caches.stub', 'gc_status' => 'stubs/Zend/gc_status.stub', 'gd_info' => 'stubs/ext/gd/gd_info.stub', 'get_browser' => 'stubs/ext/standard/get_browser.stub', 'get_called_class' => 'stubs/Zend/get_called_class.stub', 'get_cfg_var' => 'stubs/ext/standard/get_cfg_var.stub', 'get_class' => 'stubs/Zend/get_class.stub', 'get_class_methods' => 'stubs/Zend/get_class_methods.stub', 'get_class_vars' => 'stubs/Zend/get_class_vars.stub', 'get_current_user' => 'stubs/ext/standard/get_current_user.stub', 'get_debug_type' => 'stubs/ext/standard/get_debug_type.stub', 'get_declared_classes' => 'stubs/Zend/get_declared_classes.stub', 'get_declared_interfaces' => 'stubs/Zend/get_declared_interfaces.stub', 'get_declared_traits' => 'stubs/Zend/get_declared_traits.stub', 'get_defined_constants' => 'stubs/Zend/get_defined_constants.stub', 'get_defined_functions' => 'stubs/Zend/get_defined_functions.stub', 'get_defined_vars' => 'stubs/Zend/get_defined_vars.stub', 'get_extension_funcs' => 'stubs/Zend/get_extension_funcs.stub', 'get_headers' => 'stubs/ext/standard/get_headers.stub', 'get_html_translation_table' => 'stubs/ext/standard/get_html_translation_table.stub', 'get_include_path' => 'stubs/ext/standard/get_include_path.stub', 'get_included_files' => 'stubs/Zend/get_included_files.stub', 'get_loaded_extensions' => 'stubs/Zend/get_loaded_extensions.stub', 'get_mangled_object_vars' => 'stubs/Zend/get_mangled_object_vars.stub', 'get_meta_tags' => 'stubs/ext/standard/get_meta_tags.stub', 'get_object_vars' => 'stubs/Zend/get_object_vars.stub', 'get_parent_class' => 'stubs/Zend/get_parent_class.stub', 'get_required_files' => 'stubs/Zend/get_required_files.stub', 'get_resource_id' => 'stubs/Zend/get_resource_id.stub', 'get_resource_type' => 'stubs/Zend/get_resource_type.stub', 'get_resources' => 'stubs/Zend/get_resources.stub', 'getallheaders' => 'stubs/sapi/apache2handler/getallheaders.stub', 'getcwd' => 'stubs/ext/standard/getcwd.stub', 'getdate' => 'stubs/ext/date/getdate.stub', 'getenv' => 'stubs/ext/standard/getenv.stub', 'gethostbyaddr' => 'stubs/ext/standard/gethostbyaddr.stub', 'gethostbyname' => 'stubs/ext/standard/gethostbyname.stub', 'gethostbynamel' => 'stubs/ext/standard/gethostbynamel.stub', 'gethostname' => 'stubs/ext/standard/gethostname.stub', 'getimagesize' => 'stubs/ext/standard/getimagesize.stub', 'getimagesizefromstring' => 'stubs/ext/standard/getimagesizefromstring.stub', 'getlastmod' => 'stubs/ext/standard/getlastmod.stub', 'getmxrr' => 'stubs/ext/standard/getmxrr.stub', 'getmygid' => 'stubs/ext/standard/getmygid.stub', 'getmyinode' => 'stubs/ext/standard/getmyinode.stub', 'getmypid' => 'stubs/ext/standard/getmypid.stub', 'getmyuid' => 'stubs/ext/standard/getmyuid.stub', 'getopt' => 'stubs/ext/standard/getopt.stub', 'getprotobyname' => 'stubs/ext/standard/getprotobyname.stub', 'getprotobynumber' => 'stubs/ext/standard/getprotobynumber.stub', 'getrandmax' => 'stubs/ext/standard/getrandmax.stub', 'getrusage' => 'stubs/ext/standard/getrusage.stub', 'getservbyname' => 'stubs/ext/standard/getservbyname.stub', 'getservbyport' => 'stubs/ext/standard/getservbyport.stub', 'gettext' => 'stubs/ext/gettext/gettext.stub', 'gettimeofday' => 'stubs/ext/standard/gettimeofday.stub', 'gettype' => 'stubs/ext/standard/gettype.stub', 'glob' => 'stubs/ext/standard/glob.stub', 'gmdate' => 'stubs/ext/date/gmdate.stub', 'gmmktime' => 'stubs/ext/date/gmmktime.stub', 'gmp_abs' => 'stubs/ext/gmp/gmp_abs.stub', 'gmp_add' => 'stubs/ext/gmp/gmp_add.stub', 'gmp_and' => 'stubs/ext/gmp/gmp_and.stub', 'gmp_binomial' => 'stubs/ext/gmp/gmp_binomial.stub', 'gmp_clrbit' => 'stubs/ext/gmp/gmp_clrbit.stub', 'gmp_cmp' => 'stubs/ext/gmp/gmp_cmp.stub', 'gmp_com' => 'stubs/ext/gmp/gmp_com.stub', 'gmp_div' => 'stubs/ext/gmp/gmp_div.stub', 'gmp_div_q' => 'stubs/ext/gmp/gmp_div_q.stub', 'gmp_div_qr' => 'stubs/ext/gmp/gmp_div_qr.stub', 'gmp_div_r' => 'stubs/ext/gmp/gmp_div_r.stub', 'gmp_divexact' => 'stubs/ext/gmp/gmp_divexact.stub', 'gmp_export' => 'stubs/ext/gmp/gmp_export.stub', 'gmp_fact' => 'stubs/ext/gmp/gmp_fact.stub', 'gmp_gcd' => 'stubs/ext/gmp/gmp_gcd.stub', 'gmp_gcdext' => 'stubs/ext/gmp/gmp_gcdext.stub', 'gmp_hamdist' => 'stubs/ext/gmp/gmp_hamdist.stub', 'gmp_import' => 'stubs/ext/gmp/gmp_import.stub', 'gmp_init' => 'stubs/ext/gmp/gmp_init.stub', 'gmp_intval' => 'stubs/ext/gmp/gmp_intval.stub', 'gmp_invert' => 'stubs/ext/gmp/gmp_invert.stub', 'gmp_jacobi' => 'stubs/ext/gmp/gmp_jacobi.stub', 'gmp_kronecker' => 'stubs/ext/gmp/gmp_kronecker.stub', 'gmp_lcm' => 'stubs/ext/gmp/gmp_lcm.stub', 'gmp_legendre' => 'stubs/ext/gmp/gmp_legendre.stub', 'gmp_mod' => 'stubs/ext/gmp/gmp_mod.stub', 'gmp_mul' => 'stubs/ext/gmp/gmp_mul.stub', 'gmp_neg' => 'stubs/ext/gmp/gmp_neg.stub', 'gmp_nextprime' => 'stubs/ext/gmp/gmp_nextprime.stub', 'gmp_or' => 'stubs/ext/gmp/gmp_or.stub', 'gmp_perfect_power' => 'stubs/ext/gmp/gmp_perfect_power.stub', 'gmp_perfect_square' => 'stubs/ext/gmp/gmp_perfect_square.stub', 'gmp_popcount' => 'stubs/ext/gmp/gmp_popcount.stub', 'gmp_pow' => 'stubs/ext/gmp/gmp_pow.stub', 'gmp_powm' => 'stubs/ext/gmp/gmp_powm.stub', 'gmp_prob_prime' => 'stubs/ext/gmp/gmp_prob_prime.stub', 'gmp_random_bits' => 'stubs/ext/gmp/gmp_random_bits.stub', 'gmp_random_range' => 'stubs/ext/gmp/gmp_random_range.stub', 'gmp_random_seed' => 'stubs/ext/gmp/gmp_random_seed.stub', 'gmp_root' => 'stubs/ext/gmp/gmp_root.stub', 'gmp_rootrem' => 'stubs/ext/gmp/gmp_rootrem.stub', 'gmp_scan0' => 'stubs/ext/gmp/gmp_scan0.stub', 'gmp_scan1' => 'stubs/ext/gmp/gmp_scan1.stub', 'gmp_setbit' => 'stubs/ext/gmp/gmp_setbit.stub', 'gmp_sign' => 'stubs/ext/gmp/gmp_sign.stub', 'gmp_sqrt' => 'stubs/ext/gmp/gmp_sqrt.stub', 'gmp_sqrtrem' => 'stubs/ext/gmp/gmp_sqrtrem.stub', 'gmp_strval' => 'stubs/ext/gmp/gmp_strval.stub', 'gmp_sub' => 'stubs/ext/gmp/gmp_sub.stub', 'gmp_testbit' => 'stubs/ext/gmp/gmp_testbit.stub', 'gmp_xor' => 'stubs/ext/gmp/gmp_xor.stub', 'gmstrftime' => 'stubs/ext/date/gmstrftime.stub', 'grapheme_extract' => 'stubs/ext/intl/grapheme_extract.stub', 'grapheme_stripos' => 'stubs/ext/intl/grapheme_stripos.stub', 'grapheme_stristr' => 'stubs/ext/intl/grapheme_stristr.stub', 'grapheme_strlen' => 'stubs/ext/intl/grapheme_strlen.stub', 'grapheme_strpos' => 'stubs/ext/intl/grapheme_strpos.stub', 'grapheme_strripos' => 'stubs/ext/intl/grapheme_strripos.stub', 'grapheme_strrpos' => 'stubs/ext/intl/grapheme_strrpos.stub', 'grapheme_strstr' => 'stubs/ext/intl/grapheme_strstr.stub', 'grapheme_substr' => 'stubs/ext/intl/grapheme_substr.stub', 'gregoriantojd' => 'stubs/ext/calendar/gregoriantojd.stub', 'gzclose' => 'stubs/ext/zlib/gzclose.stub', 'gzcompress' => 'stubs/ext/zlib/gzcompress.stub', 'gzdecode' => 'stubs/ext/zlib/gzdecode.stub', 'gzdeflate' => 'stubs/ext/zlib/gzdeflate.stub', 'gzencode' => 'stubs/ext/zlib/gzencode.stub', 'gzeof' => 'stubs/ext/zlib/gzeof.stub', 'gzfile' => 'stubs/ext/zlib/gzfile.stub', 'gzgetc' => 'stubs/ext/zlib/gzgetc.stub', 'gzgets' => 'stubs/ext/zlib/gzgets.stub', 'gzinflate' => 'stubs/ext/zlib/gzinflate.stub', 'gzopen' => 'stubs/ext/zlib/gzopen.stub', 'gzpassthru' => 'stubs/ext/zlib/gzpassthru.stub', 'gzputs' => 'stubs/ext/zlib/gzputs.stub', 'gzread' => 'stubs/ext/zlib/gzread.stub', 'gzrewind' => 'stubs/ext/zlib/gzrewind.stub', 'gzseek' => 'stubs/ext/zlib/gzseek.stub', 'gztell' => 'stubs/ext/zlib/gztell.stub', 'gzuncompress' => 'stubs/ext/zlib/gzuncompress.stub', 'gzwrite' => 'stubs/ext/zlib/gzwrite.stub', 'hash' => 'stubs/ext/hash/hash.stub', 'hash_algos' => 'stubs/ext/hash/hash_algos.stub', 'hash_copy' => 'stubs/ext/hash/hash_copy.stub', 'hash_equals' => 'stubs/ext/hash/hash_equals.stub', 'hash_file' => 'stubs/ext/hash/hash_file.stub', 'hash_final' => 'stubs/ext/hash/hash_final.stub', 'hash_hkdf' => 'stubs/ext/hash/hash_hkdf.stub', 'hash_hmac' => 'stubs/ext/hash/hash_hmac.stub', 'hash_hmac_algos' => 'stubs/ext/hash/hash_hmac_algos.stub', 'hash_hmac_file' => 'stubs/ext/hash/hash_hmac_file.stub', 'hash_init' => 'stubs/ext/hash/hash_init.stub', 'hash_pbkdf2' => 'stubs/ext/hash/hash_pbkdf2.stub', 'hash_update' => 'stubs/ext/hash/hash_update.stub', 'hash_update_file' => 'stubs/ext/hash/hash_update_file.stub', 'hash_update_stream' => 'stubs/ext/hash/hash_update_stream.stub', 'header' => 'stubs/ext/standard/header.stub', 'header_register_callback' => 'stubs/ext/standard/header_register_callback.stub', 'header_remove' => 'stubs/ext/standard/header_remove.stub', 'headers_list' => 'stubs/ext/standard/headers_list.stub', 'headers_sent' => 'stubs/ext/standard/headers_sent.stub', 'hebrev' => 'stubs/ext/standard/hebrev.stub', 'hex2bin' => 'stubs/ext/standard/hex2bin.stub', 'hexdec' => 'stubs/ext/standard/hexdec.stub', 'highlight_file' => 'stubs/ext/standard/highlight_file.stub', 'highlight_string' => 'stubs/ext/standard/highlight_string.stub', 'hrtime' => 'stubs/ext/standard/hrtime.stub', 'html_entity_decode' => 'stubs/ext/standard/html_entity_decode.stub', 'htmlentities' => 'stubs/ext/standard/htmlentities.stub', 'htmlspecialchars' => 'stubs/ext/standard/htmlspecialchars.stub', 'htmlspecialchars_decode' => 'stubs/ext/standard/htmlspecialchars_decode.stub', 'http_build_query' => 'stubs/ext/standard/http_build_query.stub', 'http_response_code' => 'stubs/ext/standard/http_response_code.stub', 'hypot' => 'stubs/ext/standard/hypot.stub', 'iconv' => 'stubs/ext/iconv/iconv.stub', 'iconv_get_encoding' => 'stubs/ext/iconv/iconv_get_encoding.stub', 'iconv_mime_decode' => 'stubs/ext/iconv/iconv_mime_decode.stub', 'iconv_mime_decode_headers' => 'stubs/ext/iconv/iconv_mime_decode_headers.stub', 'iconv_mime_encode' => 'stubs/ext/iconv/iconv_mime_encode.stub', 'iconv_set_encoding' => 'stubs/ext/iconv/iconv_set_encoding.stub', 'iconv_strlen' => 'stubs/ext/iconv/iconv_strlen.stub', 'iconv_strpos' => 'stubs/ext/iconv/iconv_strpos.stub', 'iconv_strrpos' => 'stubs/ext/iconv/iconv_strrpos.stub', 'iconv_substr' => 'stubs/ext/iconv/iconv_substr.stub', 'idate' => 'stubs/ext/date/idate.stub', 'idn_to_ascii' => 'stubs/ext/intl/idn_to_ascii.stub', 'idn_to_utf8' => 'stubs/ext/intl/idn_to_utf8.stub', 'ignore_user_abort' => 'stubs/ext/standard/ignore_user_abort.stub', 'image_type_to_extension' => 'stubs/ext/standard/image_type_to_extension.stub', 'image_type_to_mime_type' => 'stubs/ext/standard/image_type_to_mime_type.stub', 'imageaffine' => 'stubs/ext/gd/imageaffine.stub', 'imageaffinematrixconcat' => 'stubs/ext/gd/imageaffinematrixconcat.stub', 'imageaffinematrixget' => 'stubs/ext/gd/imageaffinematrixget.stub', 'imagealphablending' => 'stubs/ext/gd/imagealphablending.stub', 'imageantialias' => 'stubs/ext/gd/imageantialias.stub', 'imagearc' => 'stubs/ext/gd/imagearc.stub', 'imagebmp' => 'stubs/ext/gd/imagebmp.stub', 'imagechar' => 'stubs/ext/gd/imagechar.stub', 'imagecharup' => 'stubs/ext/gd/imagecharup.stub', 'imagecolorallocate' => 'stubs/ext/gd/imagecolorallocate.stub', 'imagecolorallocatealpha' => 'stubs/ext/gd/imagecolorallocatealpha.stub', 'imagecolorat' => 'stubs/ext/gd/imagecolorat.stub', 'imagecolorclosest' => 'stubs/ext/gd/imagecolorclosest.stub', 'imagecolorclosestalpha' => 'stubs/ext/gd/imagecolorclosestalpha.stub', 'imagecolorclosesthwb' => 'stubs/ext/gd/imagecolorclosesthwb.stub', 'imagecolordeallocate' => 'stubs/ext/gd/imagecolordeallocate.stub', 'imagecolorexact' => 'stubs/ext/gd/imagecolorexact.stub', 'imagecolorexactalpha' => 'stubs/ext/gd/imagecolorexactalpha.stub', 'imagecolormatch' => 'stubs/ext/gd/imagecolormatch.stub', 'imagecolorresolve' => 'stubs/ext/gd/imagecolorresolve.stub', 'imagecolorresolvealpha' => 'stubs/ext/gd/imagecolorresolvealpha.stub', 'imagecolorset' => 'stubs/ext/gd/imagecolorset.stub', 'imagecolorsforindex' => 'stubs/ext/gd/imagecolorsforindex.stub', 'imagecolorstotal' => 'stubs/ext/gd/imagecolorstotal.stub', 'imagecolortransparent' => 'stubs/ext/gd/imagecolortransparent.stub', 'imageconvolution' => 'stubs/ext/gd/imageconvolution.stub', 'imagecopy' => 'stubs/ext/gd/imagecopy.stub', 'imagecopymerge' => 'stubs/ext/gd/imagecopymerge.stub', 'imagecopymergegray' => 'stubs/ext/gd/imagecopymergegray.stub', 'imagecopyresampled' => 'stubs/ext/gd/imagecopyresampled.stub', 'imagecopyresized' => 'stubs/ext/gd/imagecopyresized.stub', 'imagecreate' => 'stubs/ext/gd/imagecreate.stub', 'imagecreatefrombmp' => 'stubs/ext/gd/imagecreatefrombmp.stub', 'imagecreatefromgd' => 'stubs/ext/gd/imagecreatefromgd.stub', 'imagecreatefromgd2' => 'stubs/ext/gd/imagecreatefromgd2.stub', 'imagecreatefromgd2part' => 'stubs/ext/gd/imagecreatefromgd2part.stub', 'imagecreatefromgif' => 'stubs/ext/gd/imagecreatefromgif.stub', 'imagecreatefromjpeg' => 'stubs/ext/gd/imagecreatefromjpeg.stub', 'imagecreatefrompng' => 'stubs/ext/gd/imagecreatefrompng.stub', 'imagecreatefromstring' => 'stubs/ext/gd/imagecreatefromstring.stub', 'imagecreatefromtga' => 'stubs/ext/gd/imagecreatefromtga.stub', 'imagecreatefromwbmp' => 'stubs/ext/gd/imagecreatefromwbmp.stub', 'imagecreatefromwebp' => 'stubs/ext/gd/imagecreatefromwebp.stub', 'imagecreatefromxbm' => 'stubs/ext/gd/imagecreatefromxbm.stub', 'imagecreatefromxpm' => 'stubs/ext/gd/imagecreatefromxpm.stub', 'imagecreatetruecolor' => 'stubs/ext/gd/imagecreatetruecolor.stub', 'imagecrop' => 'stubs/ext/gd/imagecrop.stub', 'imagecropauto' => 'stubs/ext/gd/imagecropauto.stub', 'imagedashedline' => 'stubs/ext/gd/imagedashedline.stub', 'imagedestroy' => 'stubs/ext/gd/imagedestroy.stub', 'imageellipse' => 'stubs/ext/gd/imageellipse.stub', 'imagefill' => 'stubs/ext/gd/imagefill.stub', 'imagefilledarc' => 'stubs/ext/gd/imagefilledarc.stub', 'imagefilledellipse' => 'stubs/ext/gd/imagefilledellipse.stub', 'imagefilledpolygon' => 'stubs/ext/gd/imagefilledpolygon.stub', 'imagefilledrectangle' => 'stubs/ext/gd/imagefilledrectangle.stub', 'imagefilltoborder' => 'stubs/ext/gd/imagefilltoborder.stub', 'imagefilter' => 'stubs/ext/gd/imagefilter.stub', 'imageflip' => 'stubs/ext/gd/imageflip.stub', 'imagefontheight' => 'stubs/ext/gd/imagefontheight.stub', 'imagefontwidth' => 'stubs/ext/gd/imagefontwidth.stub', 'imageftbbox' => 'stubs/ext/gd/imageftbbox.stub', 'imagefttext' => 'stubs/ext/gd/imagefttext.stub', 'imagegammacorrect' => 'stubs/ext/gd/imagegammacorrect.stub', 'imagegd' => 'stubs/ext/gd/imagegd.stub', 'imagegd2' => 'stubs/ext/gd/imagegd2.stub', 'imagegetclip' => 'stubs/ext/gd/imagegetclip.stub', 'imagegetinterpolation' => 'stubs/ext/gd/imagegetinterpolation.stub', 'imagegif' => 'stubs/ext/gd/imagegif.stub', 'imagegrabscreen' => 'stubs/ext/gd/imagegrabscreen.stub', 'imagegrabwindow' => 'stubs/ext/gd/imagegrabwindow.stub', 'imageinterlace' => 'stubs/ext/gd/imageinterlace.stub', 'imageistruecolor' => 'stubs/ext/gd/imageistruecolor.stub', 'imagejpeg' => 'stubs/ext/gd/imagejpeg.stub', 'imagelayereffect' => 'stubs/ext/gd/imagelayereffect.stub', 'imageline' => 'stubs/ext/gd/imageline.stub', 'imageloadfont' => 'stubs/ext/gd/imageloadfont.stub', 'imageopenpolygon' => 'stubs/ext/gd/imageopenpolygon.stub', 'imagepalettecopy' => 'stubs/ext/gd/imagepalettecopy.stub', 'imagepalettetotruecolor' => 'stubs/ext/gd/imagepalettetotruecolor.stub', 'imagepng' => 'stubs/ext/gd/imagepng.stub', 'imagepolygon' => 'stubs/ext/gd/imagepolygon.stub', 'imagerectangle' => 'stubs/ext/gd/imagerectangle.stub', 'imageresolution' => 'stubs/ext/gd/imageresolution.stub', 'imagerotate' => 'stubs/ext/gd/imagerotate.stub', 'imagesavealpha' => 'stubs/ext/gd/imagesavealpha.stub', 'imagescale' => 'stubs/ext/gd/imagescale.stub', 'imagesetbrush' => 'stubs/ext/gd/imagesetbrush.stub', 'imagesetclip' => 'stubs/ext/gd/imagesetclip.stub', 'imagesetinterpolation' => 'stubs/ext/gd/imagesetinterpolation.stub', 'imagesetpixel' => 'stubs/ext/gd/imagesetpixel.stub', 'imagesetstyle' => 'stubs/ext/gd/imagesetstyle.stub', 'imagesetthickness' => 'stubs/ext/gd/imagesetthickness.stub', 'imagesettile' => 'stubs/ext/gd/imagesettile.stub', 'imagestring' => 'stubs/ext/gd/imagestring.stub', 'imagestringup' => 'stubs/ext/gd/imagestringup.stub', 'imagesx' => 'stubs/ext/gd/imagesx.stub', 'imagesy' => 'stubs/ext/gd/imagesy.stub', 'imagetruecolortopalette' => 'stubs/ext/gd/imagetruecolortopalette.stub', 'imagettfbbox' => 'stubs/ext/gd/imagettfbbox.stub', 'imagettftext' => 'stubs/ext/gd/imagettftext.stub', 'imagetypes' => 'stubs/ext/gd/imagetypes.stub', 'imagewbmp' => 'stubs/ext/gd/imagewbmp.stub', 'imagewebp' => 'stubs/ext/gd/imagewebp.stub', 'imagexbm' => 'stubs/ext/gd/imagexbm.stub', 'imap_8bit' => 'stubs/ext/imap/imap_8bit.stub', 'imap_alerts' => 'stubs/ext/imap/imap_alerts.stub', 'imap_append' => 'stubs/ext/imap/imap_append.stub', 'imap_base64' => 'stubs/ext/imap/imap_base64.stub', 'imap_binary' => 'stubs/ext/imap/imap_binary.stub', 'imap_body' => 'stubs/ext/imap/imap_body.stub', 'imap_bodystruct' => 'stubs/ext/imap/imap_bodystruct.stub', 'imap_check' => 'stubs/ext/imap/imap_check.stub', 'imap_clearflag_full' => 'stubs/ext/imap/imap_clearflag_full.stub', 'imap_close' => 'stubs/ext/imap/imap_close.stub', 'imap_create' => 'stubs/ext/imap/imap_create.stub', 'imap_createmailbox' => 'stubs/ext/imap/imap_createmailbox.stub', 'imap_delete' => 'stubs/ext/imap/imap_delete.stub', 'imap_deletemailbox' => 'stubs/ext/imap/imap_deletemailbox.stub', 'imap_errors' => 'stubs/ext/imap/imap_errors.stub', 'imap_expunge' => 'stubs/ext/imap/imap_expunge.stub', 'imap_fetch_overview' => 'stubs/ext/imap/imap_fetch_overview.stub', 'imap_fetchbody' => 'stubs/ext/imap/imap_fetchbody.stub', 'imap_fetchheader' => 'stubs/ext/imap/imap_fetchheader.stub', 'imap_fetchmime' => 'stubs/ext/imap/imap_fetchmime.stub', 'imap_fetchstructure' => 'stubs/ext/imap/imap_fetchstructure.stub', 'imap_fetchtext' => 'stubs/ext/imap/imap_fetchtext.stub', 'imap_gc' => 'stubs/ext/imap/imap_gc.stub', 'imap_get_quota' => 'stubs/ext/imap/imap_get_quota.stub', 'imap_get_quotaroot' => 'stubs/ext/imap/imap_get_quotaroot.stub', 'imap_getacl' => 'stubs/ext/imap/imap_getacl.stub', 'imap_getmailboxes' => 'stubs/ext/imap/imap_getmailboxes.stub', 'imap_getsubscribed' => 'stubs/ext/imap/imap_getsubscribed.stub', 'imap_headerinfo' => 'stubs/ext/imap/imap_headerinfo.stub', 'imap_headers' => 'stubs/ext/imap/imap_headers.stub', 'imap_last_error' => 'stubs/ext/imap/imap_last_error.stub', 'imap_list' => 'stubs/ext/imap/imap_list.stub', 'imap_listmailbox' => 'stubs/ext/imap/imap_listmailbox.stub', 'imap_listscan' => 'stubs/ext/imap/imap_listscan.stub', 'imap_listsubscribed' => 'stubs/ext/imap/imap_listsubscribed.stub', 'imap_lsub' => 'stubs/ext/imap/imap_lsub.stub', 'imap_mail' => 'stubs/ext/imap/imap_mail.stub', 'imap_mail_compose' => 'stubs/ext/imap/imap_mail_compose.stub', 'imap_mail_copy' => 'stubs/ext/imap/imap_mail_copy.stub', 'imap_mail_move' => 'stubs/ext/imap/imap_mail_move.stub', 'imap_mailboxmsginfo' => 'stubs/ext/imap/imap_mailboxmsginfo.stub', 'imap_mime_header_decode' => 'stubs/ext/imap/imap_mime_header_decode.stub', 'imap_msgno' => 'stubs/ext/imap/imap_msgno.stub', 'imap_mutf7_to_utf8' => 'stubs/ext/imap/imap_mutf7_to_utf8.stub', 'imap_num_msg' => 'stubs/ext/imap/imap_num_msg.stub', 'imap_num_recent' => 'stubs/ext/imap/imap_num_recent.stub', 'imap_open' => 'stubs/ext/imap/imap_open.stub', 'imap_ping' => 'stubs/ext/imap/imap_ping.stub', 'imap_qprint' => 'stubs/ext/imap/imap_qprint.stub', 'imap_rename' => 'stubs/ext/imap/imap_rename.stub', 'imap_renamemailbox' => 'stubs/ext/imap/imap_renamemailbox.stub', 'imap_reopen' => 'stubs/ext/imap/imap_reopen.stub', 'imap_rfc822_parse_adrlist' => 'stubs/ext/imap/imap_rfc822_parse_adrlist.stub', 'imap_rfc822_parse_headers' => 'stubs/ext/imap/imap_rfc822_parse_headers.stub', 'imap_rfc822_write_address' => 'stubs/ext/imap/imap_rfc822_write_address.stub', 'imap_savebody' => 'stubs/ext/imap/imap_savebody.stub', 'imap_scan' => 'stubs/ext/imap/imap_scan.stub', 'imap_scanmailbox' => 'stubs/ext/imap/imap_scanmailbox.stub', 'imap_search' => 'stubs/ext/imap/imap_search.stub', 'imap_set_quota' => 'stubs/ext/imap/imap_set_quota.stub', 'imap_setacl' => 'stubs/ext/imap/imap_setacl.stub', 'imap_setflag_full' => 'stubs/ext/imap/imap_setflag_full.stub', 'imap_sort' => 'stubs/ext/imap/imap_sort.stub', 'imap_status' => 'stubs/ext/imap/imap_status.stub', 'imap_subscribe' => 'stubs/ext/imap/imap_subscribe.stub', 'imap_thread' => 'stubs/ext/imap/imap_thread.stub', 'imap_timeout' => 'stubs/ext/imap/imap_timeout.stub', 'imap_uid' => 'stubs/ext/imap/imap_uid.stub', 'imap_undelete' => 'stubs/ext/imap/imap_undelete.stub', 'imap_unsubscribe' => 'stubs/ext/imap/imap_unsubscribe.stub', 'imap_utf7_decode' => 'stubs/ext/imap/imap_utf7_decode.stub', 'imap_utf7_encode' => 'stubs/ext/imap/imap_utf7_encode.stub', 'imap_utf8' => 'stubs/ext/imap/imap_utf8.stub', 'imap_utf8_to_mutf7' => 'stubs/ext/imap/imap_utf8_to_mutf7.stub', 'implode' => 'stubs/ext/standard/implode.stub', 'in_array' => 'stubs/ext/standard/in_array.stub', 'inet_ntop' => 'stubs/ext/standard/inet_ntop.stub', 'inet_pton' => 'stubs/ext/standard/inet_pton.stub', 'inflate_add' => 'stubs/ext/zlib/inflate_add.stub', 'inflate_get_read_len' => 'stubs/ext/zlib/inflate_get_read_len.stub', 'inflate_get_status' => 'stubs/ext/zlib/inflate_get_status.stub', 'inflate_init' => 'stubs/ext/zlib/inflate_init.stub', 'ini_alter' => 'stubs/ext/standard/ini_alter.stub', 'ini_get' => 'stubs/ext/standard/ini_get.stub', 'ini_get_all' => 'stubs/ext/standard/ini_get_all.stub', 'ini_restore' => 'stubs/ext/standard/ini_restore.stub', 'ini_set' => 'stubs/ext/standard/ini_set.stub', 'intdiv' => 'stubs/ext/standard/intdiv.stub', 'interface_exists' => 'stubs/Zend/interface_exists.stub', 'intl_error_name' => 'stubs/ext/intl/intl_error_name.stub', 'intl_get_error_code' => 'stubs/ext/intl/intl_get_error_code.stub', 'intl_get_error_message' => 'stubs/ext/intl/intl_get_error_message.stub', 'intl_is_failure' => 'stubs/ext/intl/intl_is_failure.stub', 'intlcal_add' => 'stubs/ext/intl/intlcal_add.stub', 'intlcal_after' => 'stubs/ext/intl/intlcal_after.stub', 'intlcal_before' => 'stubs/ext/intl/intlcal_before.stub', 'intlcal_clear' => 'stubs/ext/intl/intlcal_clear.stub', 'intlcal_create_instance' => 'stubs/ext/intl/intlcal_create_instance.stub', 'intlcal_equals' => 'stubs/ext/intl/intlcal_equals.stub', 'intlcal_field_difference' => 'stubs/ext/intl/intlcal_field_difference.stub', 'intlcal_from_date_time' => 'stubs/ext/intl/intlcal_from_date_time.stub', 'intlcal_get' => 'stubs/ext/intl/intlcal_get.stub', 'intlcal_get_actual_maximum' => 'stubs/ext/intl/intlcal_get_actual_maximum.stub', 'intlcal_get_actual_minimum' => 'stubs/ext/intl/intlcal_get_actual_minimum.stub', 'intlcal_get_available_locales' => 'stubs/ext/intl/intlcal_get_available_locales.stub', 'intlcal_get_day_of_week_type' => 'stubs/ext/intl/intlcal_get_day_of_week_type.stub', 'intlcal_get_error_code' => 'stubs/ext/intl/intlcal_get_error_code.stub', 'intlcal_get_error_message' => 'stubs/ext/intl/intlcal_get_error_message.stub', 'intlcal_get_first_day_of_week' => 'stubs/ext/intl/intlcal_get_first_day_of_week.stub', 'intlcal_get_greatest_minimum' => 'stubs/ext/intl/intlcal_get_greatest_minimum.stub', 'intlcal_get_keyword_values_for_locale' => 'stubs/ext/intl/intlcal_get_keyword_values_for_locale.stub', 'intlcal_get_least_maximum' => 'stubs/ext/intl/intlcal_get_least_maximum.stub', 'intlcal_get_locale' => 'stubs/ext/intl/intlcal_get_locale.stub', 'intlcal_get_maximum' => 'stubs/ext/intl/intlcal_get_maximum.stub', 'intlcal_get_minimal_days_in_first_week' => 'stubs/ext/intl/intlcal_get_minimal_days_in_first_week.stub', 'intlcal_get_minimum' => 'stubs/ext/intl/intlcal_get_minimum.stub', 'intlcal_get_now' => 'stubs/ext/intl/intlcal_get_now.stub', 'intlcal_get_repeated_wall_time_option' => 'stubs/ext/intl/intlcal_get_repeated_wall_time_option.stub', 'intlcal_get_skipped_wall_time_option' => 'stubs/ext/intl/intlcal_get_skipped_wall_time_option.stub', 'intlcal_get_time' => 'stubs/ext/intl/intlcal_get_time.stub', 'intlcal_get_time_zone' => 'stubs/ext/intl/intlcal_get_time_zone.stub', 'intlcal_get_type' => 'stubs/ext/intl/intlcal_get_type.stub', 'intlcal_get_weekend_transition' => 'stubs/ext/intl/intlcal_get_weekend_transition.stub', 'intlcal_in_daylight_time' => 'stubs/ext/intl/intlcal_in_daylight_time.stub', 'intlcal_is_equivalent_to' => 'stubs/ext/intl/intlcal_is_equivalent_to.stub', 'intlcal_is_lenient' => 'stubs/ext/intl/intlcal_is_lenient.stub', 'intlcal_is_set' => 'stubs/ext/intl/intlcal_is_set.stub', 'intlcal_is_weekend' => 'stubs/ext/intl/intlcal_is_weekend.stub', 'intlcal_roll' => 'stubs/ext/intl/intlcal_roll.stub', 'intlcal_set' => 'stubs/ext/intl/intlcal_set.stub', 'intlcal_set_first_day_of_week' => 'stubs/ext/intl/intlcal_set_first_day_of_week.stub', 'intlcal_set_lenient' => 'stubs/ext/intl/intlcal_set_lenient.stub', 'intlcal_set_minimal_days_in_first_week' => 'stubs/ext/intl/intlcal_set_minimal_days_in_first_week.stub', 'intlcal_set_repeated_wall_time_option' => 'stubs/ext/intl/intlcal_set_repeated_wall_time_option.stub', 'intlcal_set_skipped_wall_time_option' => 'stubs/ext/intl/intlcal_set_skipped_wall_time_option.stub', 'intlcal_set_time' => 'stubs/ext/intl/intlcal_set_time.stub', 'intlcal_set_time_zone' => 'stubs/ext/intl/intlcal_set_time_zone.stub', 'intlcal_to_date_time' => 'stubs/ext/intl/intlcal_to_date_time.stub', 'intlgregcal_create_instance' => 'stubs/ext/intl/intlgregcal_create_instance.stub', 'intlgregcal_get_gregorian_change' => 'stubs/ext/intl/intlgregcal_get_gregorian_change.stub', 'intlgregcal_is_leap_year' => 'stubs/ext/intl/intlgregcal_is_leap_year.stub', 'intlgregcal_set_gregorian_change' => 'stubs/ext/intl/intlgregcal_set_gregorian_change.stub', 'intltz_count_equivalent_ids' => 'stubs/ext/intl/intltz_count_equivalent_ids.stub', 'intltz_create_default' => 'stubs/ext/intl/intltz_create_default.stub', 'intltz_create_enumeration' => 'stubs/ext/intl/intltz_create_enumeration.stub', 'intltz_create_time_zone' => 'stubs/ext/intl/intltz_create_time_zone.stub', 'intltz_create_time_zone_id_enumeration' => 'stubs/ext/intl/intltz_create_time_zone_id_enumeration.stub', 'intltz_from_date_time_zone' => 'stubs/ext/intl/intltz_from_date_time_zone.stub', 'intltz_get_canonical_id' => 'stubs/ext/intl/intltz_get_canonical_id.stub', 'intltz_get_display_name' => 'stubs/ext/intl/intltz_get_display_name.stub', 'intltz_get_dst_savings' => 'stubs/ext/intl/intltz_get_dst_savings.stub', 'intltz_get_equivalent_id' => 'stubs/ext/intl/intltz_get_equivalent_id.stub', 'intltz_get_error_code' => 'stubs/ext/intl/intltz_get_error_code.stub', 'intltz_get_error_message' => 'stubs/ext/intl/intltz_get_error_message.stub', 'intltz_get_gmt' => 'stubs/ext/intl/intltz_get_gmt.stub', 'intltz_get_id' => 'stubs/ext/intl/intltz_get_id.stub', 'intltz_get_id_for_windows_id' => 'stubs/ext/intl/intltz_get_id_for_windows_id.stub', 'intltz_get_offset' => 'stubs/ext/intl/intltz_get_offset.stub', 'intltz_get_raw_offset' => 'stubs/ext/intl/intltz_get_raw_offset.stub', 'intltz_get_region' => 'stubs/ext/intl/intltz_get_region.stub', 'intltz_get_tz_data_version' => 'stubs/ext/intl/intltz_get_tz_data_version.stub', 'intltz_get_unknown' => 'stubs/ext/intl/intltz_get_unknown.stub', 'intltz_get_windows_id' => 'stubs/ext/intl/intltz_get_windows_id.stub', 'intltz_has_same_rules' => 'stubs/ext/intl/intltz_has_same_rules.stub', 'intltz_to_date_time_zone' => 'stubs/ext/intl/intltz_to_date_time_zone.stub', 'intltz_use_daylight_time' => 'stubs/ext/intl/intltz_use_daylight_time.stub', 'intval' => 'stubs/ext/standard/intval.stub', 'ip2long' => 'stubs/ext/standard/ip2long.stub', 'iptcembed' => 'stubs/ext/standard/iptcembed.stub', 'iptcparse' => 'stubs/ext/standard/iptcparse.stub', 'is_a' => 'stubs/Zend/is_a.stub', 'is_array' => 'stubs/ext/standard/is_array.stub', 'is_bool' => 'stubs/ext/standard/is_bool.stub', 'is_callable' => 'stubs/ext/standard/is_callable.stub', 'is_countable' => 'stubs/ext/standard/is_countable.stub', 'is_dir' => 'stubs/ext/standard/is_dir.stub', 'is_double' => 'stubs/ext/standard/is_double.stub', 'is_executable' => 'stubs/ext/standard/is_executable.stub', 'is_file' => 'stubs/ext/standard/is_file.stub', 'is_finite' => 'stubs/ext/standard/is_finite.stub', 'is_float' => 'stubs/ext/standard/is_float.stub', 'is_infinite' => 'stubs/ext/standard/is_infinite.stub', 'is_int' => 'stubs/ext/standard/is_int.stub', 'is_integer' => 'stubs/ext/standard/is_integer.stub', 'is_iterable' => 'stubs/ext/standard/is_iterable.stub', 'is_link' => 'stubs/ext/standard/is_link.stub', 'is_long' => 'stubs/ext/standard/is_long.stub', 'is_nan' => 'stubs/ext/standard/is_nan.stub', 'is_null' => 'stubs/ext/standard/is_null.stub', 'is_numeric' => 'stubs/ext/standard/is_numeric.stub', 'is_object' => 'stubs/ext/standard/is_object.stub', 'is_readable' => 'stubs/ext/standard/is_readable.stub', 'is_resource' => 'stubs/ext/standard/is_resource.stub', 'is_scalar' => 'stubs/ext/standard/is_scalar.stub', 'is_soap_fault' => 'stubs/ext/soap/is_soap_fault.stub', 'is_string' => 'stubs/ext/standard/is_string.stub', 'is_subclass_of' => 'stubs/Zend/is_subclass_of.stub', 'is_uploaded_file' => 'stubs/ext/standard/is_uploaded_file.stub', 'is_writable' => 'stubs/ext/standard/is_writable.stub', 'is_writeable' => 'stubs/ext/standard/is_writeable.stub', 'iterator_apply' => 'stubs/ext/spl/iterator_apply.stub', 'iterator_count' => 'stubs/ext/spl/iterator_count.stub', 'iterator_to_array' => 'stubs/ext/spl/iterator_to_array.stub', 'jddayofweek' => 'stubs/ext/calendar/jddayofweek.stub', 'jdmonthname' => 'stubs/ext/calendar/jdmonthname.stub', 'jdtofrench' => 'stubs/ext/calendar/jdtofrench.stub', 'jdtogregorian' => 'stubs/ext/calendar/jdtogregorian.stub', 'jdtojewish' => 'stubs/ext/calendar/jdtojewish.stub', 'jdtojulian' => 'stubs/ext/calendar/jdtojulian.stub', 'jdtounix' => 'stubs/ext/calendar/jdtounix.stub', 'jewishtojd' => 'stubs/ext/calendar/jewishtojd.stub', 'join' => 'stubs/ext/standard/join.stub', 'json_decode' => 'stubs/ext/json/json_decode.stub', 'json_encode' => 'stubs/ext/json/json_encode.stub', 'json_last_error' => 'stubs/ext/json/json_last_error.stub', 'json_last_error_msg' => 'stubs/ext/json/json_last_error_msg.stub', 'juliantojd' => 'stubs/ext/calendar/juliantojd.stub', 'key' => 'stubs/ext/standard/key.stub', 'key_exists' => 'stubs/ext/standard/key_exists.stub', 'krsort' => 'stubs/ext/standard/krsort.stub', 'ksort' => 'stubs/ext/standard/ksort.stub', 'lcfirst' => 'stubs/ext/standard/lcfirst.stub', 'lcg_value' => 'stubs/ext/standard/lcg_value.stub', 'lchgrp' => 'stubs/ext/standard/lchgrp.stub', 'lchown' => 'stubs/ext/standard/lchown.stub', 'ldap_8859_to_t61' => 'stubs/ext/ldap/ldap_8859_to_t61.stub', 'ldap_add' => 'stubs/ext/ldap/ldap_add.stub', 'ldap_add_ext' => 'stubs/ext/ldap/ldap_add_ext.stub', 'ldap_bind' => 'stubs/ext/ldap/ldap_bind.stub', 'ldap_bind_ext' => 'stubs/ext/ldap/ldap_bind_ext.stub', 'ldap_close' => 'stubs/ext/ldap/ldap_close.stub', 'ldap_compare' => 'stubs/ext/ldap/ldap_compare.stub', 'ldap_connect' => 'stubs/ext/ldap/ldap_connect.stub', 'ldap_count_entries' => 'stubs/ext/ldap/ldap_count_entries.stub', 'ldap_count_references' => 'stubs/ext/ldap/ldap_count_references.stub', 'ldap_delete' => 'stubs/ext/ldap/ldap_delete.stub', 'ldap_delete_ext' => 'stubs/ext/ldap/ldap_delete_ext.stub', 'ldap_dn2ufn' => 'stubs/ext/ldap/ldap_dn2ufn.stub', 'ldap_err2str' => 'stubs/ext/ldap/ldap_err2str.stub', 'ldap_errno' => 'stubs/ext/ldap/ldap_errno.stub', 'ldap_error' => 'stubs/ext/ldap/ldap_error.stub', 'ldap_escape' => 'stubs/ext/ldap/ldap_escape.stub', 'ldap_exop' => 'stubs/ext/ldap/ldap_exop.stub', 'ldap_exop_passwd' => 'stubs/ext/ldap/ldap_exop_passwd.stub', 'ldap_exop_refresh' => 'stubs/ext/ldap/ldap_exop_refresh.stub', 'ldap_exop_whoami' => 'stubs/ext/ldap/ldap_exop_whoami.stub', 'ldap_explode_dn' => 'stubs/ext/ldap/ldap_explode_dn.stub', 'ldap_first_attribute' => 'stubs/ext/ldap/ldap_first_attribute.stub', 'ldap_first_entry' => 'stubs/ext/ldap/ldap_first_entry.stub', 'ldap_first_reference' => 'stubs/ext/ldap/ldap_first_reference.stub', 'ldap_free_result' => 'stubs/ext/ldap/ldap_free_result.stub', 'ldap_get_attributes' => 'stubs/ext/ldap/ldap_get_attributes.stub', 'ldap_get_dn' => 'stubs/ext/ldap/ldap_get_dn.stub', 'ldap_get_entries' => 'stubs/ext/ldap/ldap_get_entries.stub', 'ldap_get_option' => 'stubs/ext/ldap/ldap_get_option.stub', 'ldap_get_values' => 'stubs/ext/ldap/ldap_get_values.stub', 'ldap_get_values_len' => 'stubs/ext/ldap/ldap_get_values_len.stub', 'ldap_list' => 'stubs/ext/ldap/ldap_list.stub', 'ldap_mod_add' => 'stubs/ext/ldap/ldap_mod_add.stub', 'ldap_mod_add_ext' => 'stubs/ext/ldap/ldap_mod_add_ext.stub', 'ldap_mod_del' => 'stubs/ext/ldap/ldap_mod_del.stub', 'ldap_mod_del_ext' => 'stubs/ext/ldap/ldap_mod_del_ext.stub', 'ldap_mod_replace' => 'stubs/ext/ldap/ldap_mod_replace.stub', 'ldap_mod_replace_ext' => 'stubs/ext/ldap/ldap_mod_replace_ext.stub', 'ldap_modify' => 'stubs/ext/ldap/ldap_modify.stub', 'ldap_modify_batch' => 'stubs/ext/ldap/ldap_modify_batch.stub', 'ldap_next_attribute' => 'stubs/ext/ldap/ldap_next_attribute.stub', 'ldap_next_entry' => 'stubs/ext/ldap/ldap_next_entry.stub', 'ldap_next_reference' => 'stubs/ext/ldap/ldap_next_reference.stub', 'ldap_parse_exop' => 'stubs/ext/ldap/ldap_parse_exop.stub', 'ldap_parse_reference' => 'stubs/ext/ldap/ldap_parse_reference.stub', 'ldap_parse_result' => 'stubs/ext/ldap/ldap_parse_result.stub', 'ldap_read' => 'stubs/ext/ldap/ldap_read.stub', 'ldap_rename' => 'stubs/ext/ldap/ldap_rename.stub', 'ldap_rename_ext' => 'stubs/ext/ldap/ldap_rename_ext.stub', 'ldap_sasl_bind' => 'stubs/ext/ldap/ldap_sasl_bind.stub', 'ldap_search' => 'stubs/ext/ldap/ldap_search.stub', 'ldap_set_option' => 'stubs/ext/ldap/ldap_set_option.stub', 'ldap_set_rebind_proc' => 'stubs/ext/ldap/ldap_set_rebind_proc.stub', 'ldap_start_tls' => 'stubs/ext/ldap/ldap_start_tls.stub', 'ldap_t61_to_8859' => 'stubs/ext/ldap/ldap_t61_to_8859.stub', 'ldap_unbind' => 'stubs/ext/ldap/ldap_unbind.stub', 'levenshtein' => 'stubs/ext/standard/levenshtein.stub', 'libxml_clear_errors' => 'stubs/ext/libxml/libxml_clear_errors.stub', 'libxml_disable_entity_loader' => 'stubs/ext/libxml/libxml_disable_entity_loader.stub', 'libxml_get_errors' => 'stubs/ext/libxml/libxml_get_errors.stub', 'libxml_get_last_error' => 'stubs/ext/libxml/libxml_get_last_error.stub', 'libxml_set_external_entity_loader' => 'stubs/ext/libxml/libxml_set_external_entity_loader.stub', 'libxml_set_streams_context' => 'stubs/ext/libxml/libxml_set_streams_context.stub', 'libxml_use_internal_errors' => 'stubs/ext/libxml/libxml_use_internal_errors.stub', 'link' => 'stubs/ext/standard/link.stub', 'linkinfo' => 'stubs/ext/standard/linkinfo.stub', 'litespeed_finish_request' => 'stubs/sapi/litespeed/litespeed_finish_request.stub', 'litespeed_request_headers' => 'stubs/sapi/litespeed/litespeed_request_headers.stub', 'litespeed_response_headers' => 'stubs/sapi/litespeed/litespeed_response_headers.stub', 'locale_accept_from_http' => 'stubs/ext/intl/locale_accept_from_http.stub', 'locale_canonicalize' => 'stubs/ext/intl/locale_canonicalize.stub', 'locale_compose' => 'stubs/ext/intl/locale_compose.stub', 'locale_filter_matches' => 'stubs/ext/intl/locale_filter_matches.stub', 'locale_get_all_variants' => 'stubs/ext/intl/locale_get_all_variants.stub', 'locale_get_default' => 'stubs/ext/intl/locale_get_default.stub', 'locale_get_display_language' => 'stubs/ext/intl/locale_get_display_language.stub', 'locale_get_display_name' => 'stubs/ext/intl/locale_get_display_name.stub', 'locale_get_display_region' => 'stubs/ext/intl/locale_get_display_region.stub', 'locale_get_display_script' => 'stubs/ext/intl/locale_get_display_script.stub', 'locale_get_display_variant' => 'stubs/ext/intl/locale_get_display_variant.stub', 'locale_get_keywords' => 'stubs/ext/intl/locale_get_keywords.stub', 'locale_get_primary_language' => 'stubs/ext/intl/locale_get_primary_language.stub', 'locale_get_region' => 'stubs/ext/intl/locale_get_region.stub', 'locale_get_script' => 'stubs/ext/intl/locale_get_script.stub', 'locale_lookup' => 'stubs/ext/intl/locale_lookup.stub', 'locale_parse' => 'stubs/ext/intl/locale_parse.stub', 'locale_set_default' => 'stubs/ext/intl/locale_set_default.stub', 'localeconv' => 'stubs/ext/standard/localeconv.stub', 'localtime' => 'stubs/ext/date/localtime.stub', 'log' => 'stubs/ext/standard/log.stub', 'log10' => 'stubs/ext/standard/log10.stub', 'log1p' => 'stubs/ext/standard/log1p.stub', 'long2ip' => 'stubs/ext/standard/long2ip.stub', 'lstat' => 'stubs/ext/standard/lstat.stub', 'ltrim' => 'stubs/ext/standard/ltrim.stub', 'mail' => 'stubs/ext/standard/mail.stub', 'max' => 'stubs/ext/standard/max.stub', 'mb_check_encoding' => 'stubs/ext/mbstring/mb_check_encoding.stub', 'mb_chr' => 'stubs/ext/mbstring/mb_chr.stub', 'mb_convert_case' => 'stubs/ext/mbstring/mb_convert_case.stub', 'mb_convert_encoding' => 'stubs/ext/mbstring/mb_convert_encoding.stub', 'mb_convert_kana' => 'stubs/ext/mbstring/mb_convert_kana.stub', 'mb_convert_variables' => 'stubs/ext/mbstring/mb_convert_variables.stub', 'mb_decode_mimeheader' => 'stubs/ext/mbstring/mb_decode_mimeheader.stub', 'mb_decode_numericentity' => 'stubs/ext/mbstring/mb_decode_numericentity.stub', 'mb_detect_encoding' => 'stubs/ext/mbstring/mb_detect_encoding.stub', 'mb_detect_order' => 'stubs/ext/mbstring/mb_detect_order.stub', 'mb_encode_mimeheader' => 'stubs/ext/mbstring/mb_encode_mimeheader.stub', 'mb_encode_numericentity' => 'stubs/ext/mbstring/mb_encode_numericentity.stub', 'mb_encoding_aliases' => 'stubs/ext/mbstring/mb_encoding_aliases.stub', 'mb_ereg' => 'stubs/ext/mbstring/mb_ereg.stub', 'mb_ereg_match' => 'stubs/ext/mbstring/mb_ereg_match.stub', 'mb_ereg_replace' => 'stubs/ext/mbstring/mb_ereg_replace.stub', 'mb_ereg_replace_callback' => 'stubs/ext/mbstring/mb_ereg_replace_callback.stub', 'mb_ereg_search' => 'stubs/ext/mbstring/mb_ereg_search.stub', 'mb_ereg_search_getpos' => 'stubs/ext/mbstring/mb_ereg_search_getpos.stub', 'mb_ereg_search_getregs' => 'stubs/ext/mbstring/mb_ereg_search_getregs.stub', 'mb_ereg_search_init' => 'stubs/ext/mbstring/mb_ereg_search_init.stub', 'mb_ereg_search_pos' => 'stubs/ext/mbstring/mb_ereg_search_pos.stub', 'mb_ereg_search_regs' => 'stubs/ext/mbstring/mb_ereg_search_regs.stub', 'mb_ereg_search_setpos' => 'stubs/ext/mbstring/mb_ereg_search_setpos.stub', 'mb_eregi' => 'stubs/ext/mbstring/mb_eregi.stub', 'mb_eregi_replace' => 'stubs/ext/mbstring/mb_eregi_replace.stub', 'mb_get_info' => 'stubs/ext/mbstring/mb_get_info.stub', 'mb_http_input' => 'stubs/ext/mbstring/mb_http_input.stub', 'mb_http_output' => 'stubs/ext/mbstring/mb_http_output.stub', 'mb_internal_encoding' => 'stubs/ext/mbstring/mb_internal_encoding.stub', 'mb_language' => 'stubs/ext/mbstring/mb_language.stub', 'mb_list_encodings' => 'stubs/ext/mbstring/mb_list_encodings.stub', 'mb_ord' => 'stubs/ext/mbstring/mb_ord.stub', 'mb_output_handler' => 'stubs/ext/mbstring/mb_output_handler.stub', 'mb_parse_str' => 'stubs/ext/mbstring/mb_parse_str.stub', 'mb_preferred_mime_name' => 'stubs/ext/mbstring/mb_preferred_mime_name.stub', 'mb_regex_encoding' => 'stubs/ext/mbstring/mb_regex_encoding.stub', 'mb_regex_set_options' => 'stubs/ext/mbstring/mb_regex_set_options.stub', 'mb_scrub' => 'stubs/ext/mbstring/mb_scrub.stub', 'mb_send_mail' => 'stubs/ext/mbstring/mb_send_mail.stub', 'mb_split' => 'stubs/ext/mbstring/mb_split.stub', 'mb_str_split' => 'stubs/ext/mbstring/mb_str_split.stub', 'mb_strcut' => 'stubs/ext/mbstring/mb_strcut.stub', 'mb_strimwidth' => 'stubs/ext/mbstring/mb_strimwidth.stub', 'mb_stripos' => 'stubs/ext/mbstring/mb_stripos.stub', 'mb_stristr' => 'stubs/ext/mbstring/mb_stristr.stub', 'mb_strlen' => 'stubs/ext/mbstring/mb_strlen.stub', 'mb_strpos' => 'stubs/ext/mbstring/mb_strpos.stub', 'mb_strrchr' => 'stubs/ext/mbstring/mb_strrchr.stub', 'mb_strrichr' => 'stubs/ext/mbstring/mb_strrichr.stub', 'mb_strripos' => 'stubs/ext/mbstring/mb_strripos.stub', 'mb_strrpos' => 'stubs/ext/mbstring/mb_strrpos.stub', 'mb_strstr' => 'stubs/ext/mbstring/mb_strstr.stub', 'mb_strtolower' => 'stubs/ext/mbstring/mb_strtolower.stub', 'mb_strtoupper' => 'stubs/ext/mbstring/mb_strtoupper.stub', 'mb_strwidth' => 'stubs/ext/mbstring/mb_strwidth.stub', 'mb_substitute_character' => 'stubs/ext/mbstring/mb_substitute_character.stub', 'mb_substr' => 'stubs/ext/mbstring/mb_substr.stub', 'mb_substr_count' => 'stubs/ext/mbstring/mb_substr_count.stub', 'md5' => 'stubs/ext/standard/md5.stub', 'md5_file' => 'stubs/ext/standard/md5_file.stub', 'memory_get_peak_usage' => 'stubs/ext/standard/memory_get_peak_usage.stub', 'memory_get_usage' => 'stubs/ext/standard/memory_get_usage.stub', 'metaphone' => 'stubs/ext/standard/metaphone.stub', 'method_exists' => 'stubs/Zend/method_exists.stub', 'mhash' => 'stubs/ext/hash/mhash.stub', 'mhash_count' => 'stubs/ext/hash/mhash_count.stub', 'mhash_get_block_size' => 'stubs/ext/hash/mhash_get_block_size.stub', 'mhash_get_hash_name' => 'stubs/ext/hash/mhash_get_hash_name.stub', 'mhash_keygen_s2k' => 'stubs/ext/hash/mhash_keygen_s2k.stub', 'microtime' => 'stubs/ext/standard/microtime.stub', 'mime_content_type' => 'stubs/ext/fileinfo/mime_content_type.stub', 'min' => 'stubs/ext/standard/min.stub', 'mkdir' => 'stubs/ext/standard/mkdir.stub', 'mktime' => 'stubs/ext/date/mktime.stub', 'move_uploaded_file' => 'stubs/ext/standard/move_uploaded_file.stub', 'msg_get_queue' => 'stubs/ext/sysvmsg/msg_get_queue.stub', 'msg_queue_exists' => 'stubs/ext/sysvmsg/msg_queue_exists.stub', 'msg_receive' => 'stubs/ext/sysvmsg/msg_receive.stub', 'msg_remove_queue' => 'stubs/ext/sysvmsg/msg_remove_queue.stub', 'msg_send' => 'stubs/ext/sysvmsg/msg_send.stub', 'msg_set_queue' => 'stubs/ext/sysvmsg/msg_set_queue.stub', 'msg_stat_queue' => 'stubs/ext/sysvmsg/msg_stat_queue.stub', 'msgfmt_create' => 'stubs/ext/intl/msgfmt_create.stub', 'msgfmt_format' => 'stubs/ext/intl/msgfmt_format.stub', 'msgfmt_format_message' => 'stubs/ext/intl/msgfmt_format_message.stub', 'msgfmt_get_error_code' => 'stubs/ext/intl/msgfmt_get_error_code.stub', 'msgfmt_get_error_message' => 'stubs/ext/intl/msgfmt_get_error_message.stub', 'msgfmt_get_locale' => 'stubs/ext/intl/msgfmt_get_locale.stub', 'msgfmt_get_pattern' => 'stubs/ext/intl/msgfmt_get_pattern.stub', 'msgfmt_parse' => 'stubs/ext/intl/msgfmt_parse.stub', 'msgfmt_parse_message' => 'stubs/ext/intl/msgfmt_parse_message.stub', 'msgfmt_set_pattern' => 'stubs/ext/intl/msgfmt_set_pattern.stub', 'mt_getrandmax' => 'stubs/ext/standard/mt_getrandmax.stub', 'mt_rand' => 'stubs/ext/standard/mt_rand.stub', 'mt_srand' => 'stubs/ext/standard/mt_srand.stub', 'mysqli_affected_rows' => 'stubs/ext/mysqli/mysqli_affected_rows.stub', 'mysqli_autocommit' => 'stubs/ext/mysqli/mysqli_autocommit.stub', 'mysqli_begin_transaction' => 'stubs/ext/mysqli/mysqli_begin_transaction.stub', 'mysqli_change_user' => 'stubs/ext/mysqli/mysqli_change_user.stub', 'mysqli_character_set_name' => 'stubs/ext/mysqli/mysqli_character_set_name.stub', 'mysqli_close' => 'stubs/ext/mysqli/mysqli_close.stub', 'mysqli_commit' => 'stubs/ext/mysqli/mysqli_commit.stub', 'mysqli_connect' => 'stubs/ext/mysqli/mysqli_connect.stub', 'mysqli_connect_errno' => 'stubs/ext/mysqli/mysqli_connect_errno.stub', 'mysqli_connect_error' => 'stubs/ext/mysqli/mysqli_connect_error.stub', 'mysqli_data_seek' => 'stubs/ext/mysqli/mysqli_data_seek.stub', 'mysqli_debug' => 'stubs/ext/mysqli/mysqli_debug.stub', 'mysqli_dump_debug_info' => 'stubs/ext/mysqli/mysqli_dump_debug_info.stub', 'mysqli_errno' => 'stubs/ext/mysqli/mysqli_errno.stub', 'mysqli_error' => 'stubs/ext/mysqli/mysqli_error.stub', 'mysqli_error_list' => 'stubs/ext/mysqli/mysqli_error_list.stub', 'mysqli_escape_string' => 'stubs/ext/mysqli/mysqli_escape_string.stub', 'mysqli_execute' => 'stubs/ext/mysqli/mysqli_execute.stub', 'mysqli_fetch_all' => 'stubs/ext/mysqli/mysqli_fetch_all.stub', 'mysqli_fetch_array' => 'stubs/ext/mysqli/mysqli_fetch_array.stub', 'mysqli_fetch_assoc' => 'stubs/ext/mysqli/mysqli_fetch_assoc.stub', 'mysqli_fetch_field' => 'stubs/ext/mysqli/mysqli_fetch_field.stub', 'mysqli_fetch_field_direct' => 'stubs/ext/mysqli/mysqli_fetch_field_direct.stub', 'mysqli_fetch_fields' => 'stubs/ext/mysqli/mysqli_fetch_fields.stub', 'mysqli_fetch_lengths' => 'stubs/ext/mysqli/mysqli_fetch_lengths.stub', 'mysqli_fetch_object' => 'stubs/ext/mysqli/mysqli_fetch_object.stub', 'mysqli_fetch_row' => 'stubs/ext/mysqli/mysqli_fetch_row.stub', 'mysqli_field_count' => 'stubs/ext/mysqli/mysqli_field_count.stub', 'mysqli_field_seek' => 'stubs/ext/mysqli/mysqli_field_seek.stub', 'mysqli_field_tell' => 'stubs/ext/mysqli/mysqli_field_tell.stub', 'mysqli_free_result' => 'stubs/ext/mysqli/mysqli_free_result.stub', 'mysqli_get_charset' => 'stubs/ext/mysqli/mysqli_get_charset.stub', 'mysqli_get_client_info' => 'stubs/ext/mysqli/mysqli_get_client_info.stub', 'mysqli_get_client_stats' => 'stubs/ext/mysqli/mysqli_get_client_stats.stub', 'mysqli_get_client_version' => 'stubs/ext/mysqli/mysqli_get_client_version.stub', 'mysqli_get_connection_stats' => 'stubs/ext/mysqli/mysqli_get_connection_stats.stub', 'mysqli_get_host_info' => 'stubs/ext/mysqli/mysqli_get_host_info.stub', 'mysqli_get_links_stats' => 'stubs/ext/mysqli/mysqli_get_links_stats.stub', 'mysqli_get_proto_info' => 'stubs/ext/mysqli/mysqli_get_proto_info.stub', 'mysqli_get_server_info' => 'stubs/ext/mysqli/mysqli_get_server_info.stub', 'mysqli_get_server_version' => 'stubs/ext/mysqli/mysqli_get_server_version.stub', 'mysqli_get_warnings' => 'stubs/ext/mysqli/mysqli_get_warnings.stub', 'mysqli_info' => 'stubs/ext/mysqli/mysqli_info.stub', 'mysqli_init' => 'stubs/ext/mysqli/mysqli_init.stub', 'mysqli_insert_id' => 'stubs/ext/mysqli/mysqli_insert_id.stub', 'mysqli_kill' => 'stubs/ext/mysqli/mysqli_kill.stub', 'mysqli_more_results' => 'stubs/ext/mysqli/mysqli_more_results.stub', 'mysqli_multi_query' => 'stubs/ext/mysqli/mysqli_multi_query.stub', 'mysqli_next_result' => 'stubs/ext/mysqli/mysqli_next_result.stub', 'mysqli_num_fields' => 'stubs/ext/mysqli/mysqli_num_fields.stub', 'mysqli_num_rows' => 'stubs/ext/mysqli/mysqli_num_rows.stub', 'mysqli_options' => 'stubs/ext/mysqli/mysqli_options.stub', 'mysqli_ping' => 'stubs/ext/mysqli/mysqli_ping.stub', 'mysqli_poll' => 'stubs/ext/mysqli/mysqli_poll.stub', 'mysqli_prepare' => 'stubs/ext/mysqli/mysqli_prepare.stub', 'mysqli_query' => 'stubs/ext/mysqli/mysqli_query.stub', 'mysqli_real_connect' => 'stubs/ext/mysqli/mysqli_real_connect.stub', 'mysqli_real_escape_string' => 'stubs/ext/mysqli/mysqli_real_escape_string.stub', 'mysqli_real_query' => 'stubs/ext/mysqli/mysqli_real_query.stub', 'mysqli_reap_async_query' => 'stubs/ext/mysqli/mysqli_reap_async_query.stub', 'mysqli_refresh' => 'stubs/ext/mysqli/mysqli_refresh.stub', 'mysqli_release_savepoint' => 'stubs/ext/mysqli/mysqli_release_savepoint.stub', 'mysqli_report' => 'stubs/ext/mysqli/mysqli_report.stub', 'mysqli_rollback' => 'stubs/ext/mysqli/mysqli_rollback.stub', 'mysqli_savepoint' => 'stubs/ext/mysqli/mysqli_savepoint.stub', 'mysqli_select_db' => 'stubs/ext/mysqli/mysqli_select_db.stub', 'mysqli_set_charset' => 'stubs/ext/mysqli/mysqli_set_charset.stub', 'mysqli_set_opt' => 'stubs/ext/mysqli/mysqli_set_opt.stub', 'mysqli_sqlstate' => 'stubs/ext/mysqli/mysqli_sqlstate.stub', 'mysqli_ssl_set' => 'stubs/ext/mysqli/mysqli_ssl_set.stub', 'mysqli_stat' => 'stubs/ext/mysqli/mysqli_stat.stub', 'mysqli_stmt_affected_rows' => 'stubs/ext/mysqli/mysqli_stmt_affected_rows.stub', 'mysqli_stmt_attr_get' => 'stubs/ext/mysqli/mysqli_stmt_attr_get.stub', 'mysqli_stmt_attr_set' => 'stubs/ext/mysqli/mysqli_stmt_attr_set.stub', 'mysqli_stmt_bind_param' => 'stubs/ext/mysqli/mysqli_stmt_bind_param.stub', 'mysqli_stmt_bind_result' => 'stubs/ext/mysqli/mysqli_stmt_bind_result.stub', 'mysqli_stmt_close' => 'stubs/ext/mysqli/mysqli_stmt_close.stub', 'mysqli_stmt_data_seek' => 'stubs/ext/mysqli/mysqli_stmt_data_seek.stub', 'mysqli_stmt_errno' => 'stubs/ext/mysqli/mysqli_stmt_errno.stub', 'mysqli_stmt_error' => 'stubs/ext/mysqli/mysqli_stmt_error.stub', 'mysqli_stmt_error_list' => 'stubs/ext/mysqli/mysqli_stmt_error_list.stub', 'mysqli_stmt_execute' => 'stubs/ext/mysqli/mysqli_stmt_execute.stub', 'mysqli_stmt_fetch' => 'stubs/ext/mysqli/mysqli_stmt_fetch.stub', 'mysqli_stmt_field_count' => 'stubs/ext/mysqli/mysqli_stmt_field_count.stub', 'mysqli_stmt_free_result' => 'stubs/ext/mysqli/mysqli_stmt_free_result.stub', 'mysqli_stmt_get_result' => 'stubs/ext/mysqli/mysqli_stmt_get_result.stub', 'mysqli_stmt_get_warnings' => 'stubs/ext/mysqli/mysqli_stmt_get_warnings.stub', 'mysqli_stmt_init' => 'stubs/ext/mysqli/mysqli_stmt_init.stub', 'mysqli_stmt_insert_id' => 'stubs/ext/mysqli/mysqli_stmt_insert_id.stub', 'mysqli_stmt_more_results' => 'stubs/ext/mysqli/mysqli_stmt_more_results.stub', 'mysqli_stmt_next_result' => 'stubs/ext/mysqli/mysqli_stmt_next_result.stub', 'mysqli_stmt_num_rows' => 'stubs/ext/mysqli/mysqli_stmt_num_rows.stub', 'mysqli_stmt_param_count' => 'stubs/ext/mysqli/mysqli_stmt_param_count.stub', 'mysqli_stmt_prepare' => 'stubs/ext/mysqli/mysqli_stmt_prepare.stub', 'mysqli_stmt_reset' => 'stubs/ext/mysqli/mysqli_stmt_reset.stub', 'mysqli_stmt_result_metadata' => 'stubs/ext/mysqli/mysqli_stmt_result_metadata.stub', 'mysqli_stmt_send_long_data' => 'stubs/ext/mysqli/mysqli_stmt_send_long_data.stub', 'mysqli_stmt_sqlstate' => 'stubs/ext/mysqli/mysqli_stmt_sqlstate.stub', 'mysqli_stmt_store_result' => 'stubs/ext/mysqli/mysqli_stmt_store_result.stub', 'mysqli_store_result' => 'stubs/ext/mysqli/mysqli_store_result.stub', 'mysqli_thread_id' => 'stubs/ext/mysqli/mysqli_thread_id.stub', 'mysqli_thread_safe' => 'stubs/ext/mysqli/mysqli_thread_safe.stub', 'mysqli_use_result' => 'stubs/ext/mysqli/mysqli_use_result.stub', 'mysqli_warning_count' => 'stubs/ext/mysqli/mysqli_warning_count.stub', 'natcasesort' => 'stubs/ext/standard/natcasesort.stub', 'natsort' => 'stubs/ext/standard/natsort.stub', 'net_get_interfaces' => 'stubs/ext/standard/net_get_interfaces.stub', 'next' => 'stubs/ext/standard/next.stub', 'ngettext' => 'stubs/ext/gettext/ngettext.stub', 'nl2br' => 'stubs/ext/standard/nl2br.stub', 'nl_langinfo' => 'stubs/ext/standard/nl_langinfo.stub', 'normalizer_get_raw_decomposition' => 'stubs/ext/intl/normalizer_get_raw_decomposition.stub', 'normalizer_is_normalized' => 'stubs/ext/intl/normalizer_is_normalized.stub', 'normalizer_normalize' => 'stubs/ext/intl/normalizer_normalize.stub', 'number_format' => 'stubs/ext/standard/number_format.stub', 'numfmt_create' => 'stubs/ext/intl/numfmt_create.stub', 'numfmt_format' => 'stubs/ext/intl/numfmt_format.stub', 'numfmt_format_currency' => 'stubs/ext/intl/numfmt_format_currency.stub', 'numfmt_get_attribute' => 'stubs/ext/intl/numfmt_get_attribute.stub', 'numfmt_get_error_code' => 'stubs/ext/intl/numfmt_get_error_code.stub', 'numfmt_get_error_message' => 'stubs/ext/intl/numfmt_get_error_message.stub', 'numfmt_get_locale' => 'stubs/ext/intl/numfmt_get_locale.stub', 'numfmt_get_pattern' => 'stubs/ext/intl/numfmt_get_pattern.stub', 'numfmt_get_symbol' => 'stubs/ext/intl/numfmt_get_symbol.stub', 'numfmt_get_text_attribute' => 'stubs/ext/intl/numfmt_get_text_attribute.stub', 'numfmt_parse' => 'stubs/ext/intl/numfmt_parse.stub', 'numfmt_parse_currency' => 'stubs/ext/intl/numfmt_parse_currency.stub', 'numfmt_set_attribute' => 'stubs/ext/intl/numfmt_set_attribute.stub', 'numfmt_set_pattern' => 'stubs/ext/intl/numfmt_set_pattern.stub', 'numfmt_set_symbol' => 'stubs/ext/intl/numfmt_set_symbol.stub', 'numfmt_set_text_attribute' => 'stubs/ext/intl/numfmt_set_text_attribute.stub', 'ob_clean' => 'stubs/ext/standard/ob_clean.stub', 'ob_end_clean' => 'stubs/ext/standard/ob_end_clean.stub', 'ob_end_flush' => 'stubs/ext/standard/ob_end_flush.stub', 'ob_flush' => 'stubs/ext/standard/ob_flush.stub', 'ob_get_clean' => 'stubs/ext/standard/ob_get_clean.stub', 'ob_get_contents' => 'stubs/ext/standard/ob_get_contents.stub', 'ob_get_flush' => 'stubs/ext/standard/ob_get_flush.stub', 'ob_get_length' => 'stubs/ext/standard/ob_get_length.stub', 'ob_get_level' => 'stubs/ext/standard/ob_get_level.stub', 'ob_get_status' => 'stubs/ext/standard/ob_get_status.stub', 'ob_gzhandler' => 'stubs/ext/zlib/ob_gzhandler.stub', 'ob_implicit_flush' => 'stubs/ext/standard/ob_implicit_flush.stub', 'ob_list_handlers' => 'stubs/ext/standard/ob_list_handlers.stub', 'ob_start' => 'stubs/ext/standard/ob_start.stub', 'oci_bind_array_by_name' => 'stubs/ext/oci8/oci_bind_array_by_name.stub', 'oci_bind_by_name' => 'stubs/ext/oci8/oci_bind_by_name.stub', 'oci_cancel' => 'stubs/ext/oci8/oci_cancel.stub', 'oci_client_version' => 'stubs/ext/oci8/oci_client_version.stub', 'oci_close' => 'stubs/ext/oci8/oci_close.stub', 'oci_collection_append' => 'stubs/ext/oci8/oci_collection_append.stub', 'oci_collection_assign' => 'stubs/ext/oci8/oci_collection_assign.stub', 'oci_collection_element_assign' => 'stubs/ext/oci8/oci_collection_element_assign.stub', 'oci_collection_element_get' => 'stubs/ext/oci8/oci_collection_element_get.stub', 'oci_collection_max' => 'stubs/ext/oci8/oci_collection_max.stub', 'oci_collection_size' => 'stubs/ext/oci8/oci_collection_size.stub', 'oci_collection_trim' => 'stubs/ext/oci8/oci_collection_trim.stub', 'oci_commit' => 'stubs/ext/oci8/oci_commit.stub', 'oci_connect' => 'stubs/ext/oci8/oci_connect.stub', 'oci_define_by_name' => 'stubs/ext/oci8/oci_define_by_name.stub', 'oci_error' => 'stubs/ext/oci8/oci_error.stub', 'oci_execute' => 'stubs/ext/oci8/oci_execute.stub', 'oci_fetch' => 'stubs/ext/oci8/oci_fetch.stub', 'oci_fetch_all' => 'stubs/ext/oci8/oci_fetch_all.stub', 'oci_fetch_array' => 'stubs/ext/oci8/oci_fetch_array.stub', 'oci_fetch_assoc' => 'stubs/ext/oci8/oci_fetch_assoc.stub', 'oci_fetch_object' => 'stubs/ext/oci8/oci_fetch_object.stub', 'oci_fetch_row' => 'stubs/ext/oci8/oci_fetch_row.stub', 'oci_field_is_null' => 'stubs/ext/oci8/oci_field_is_null.stub', 'oci_field_name' => 'stubs/ext/oci8/oci_field_name.stub', 'oci_field_precision' => 'stubs/ext/oci8/oci_field_precision.stub', 'oci_field_scale' => 'stubs/ext/oci8/oci_field_scale.stub', 'oci_field_size' => 'stubs/ext/oci8/oci_field_size.stub', 'oci_field_type' => 'stubs/ext/oci8/oci_field_type.stub', 'oci_field_type_raw' => 'stubs/ext/oci8/oci_field_type_raw.stub', 'oci_free_collection' => 'stubs/ext/oci8/oci_free_collection.stub', 'oci_free_cursor' => 'stubs/ext/oci8/oci_free_cursor.stub', 'oci_free_descriptor' => 'stubs/ext/oci8/oci_free_descriptor.stub', 'oci_free_statement' => 'stubs/ext/oci8/oci_free_statement.stub', 'oci_get_implicit_resultset' => 'stubs/ext/oci8/oci_get_implicit_resultset.stub', 'oci_lob_append' => 'stubs/ext/oci8/oci_lob_append.stub', 'oci_lob_copy' => 'stubs/ext/oci8/oci_lob_copy.stub', 'oci_lob_eof' => 'stubs/ext/oci8/oci_lob_eof.stub', 'oci_lob_erase' => 'stubs/ext/oci8/oci_lob_erase.stub', 'oci_lob_export' => 'stubs/ext/oci8/oci_lob_export.stub', 'oci_lob_flush' => 'stubs/ext/oci8/oci_lob_flush.stub', 'oci_lob_import' => 'stubs/ext/oci8/oci_lob_import.stub', 'oci_lob_is_equal' => 'stubs/ext/oci8/oci_lob_is_equal.stub', 'oci_lob_load' => 'stubs/ext/oci8/oci_lob_load.stub', 'oci_lob_read' => 'stubs/ext/oci8/oci_lob_read.stub', 'oci_lob_rewind' => 'stubs/ext/oci8/oci_lob_rewind.stub', 'oci_lob_save' => 'stubs/ext/oci8/oci_lob_save.stub', 'oci_lob_seek' => 'stubs/ext/oci8/oci_lob_seek.stub', 'oci_lob_size' => 'stubs/ext/oci8/oci_lob_size.stub', 'oci_lob_tell' => 'stubs/ext/oci8/oci_lob_tell.stub', 'oci_lob_truncate' => 'stubs/ext/oci8/oci_lob_truncate.stub', 'oci_lob_write' => 'stubs/ext/oci8/oci_lob_write.stub', 'oci_new_collection' => 'stubs/ext/oci8/oci_new_collection.stub', 'oci_new_connect' => 'stubs/ext/oci8/oci_new_connect.stub', 'oci_new_cursor' => 'stubs/ext/oci8/oci_new_cursor.stub', 'oci_new_descriptor' => 'stubs/ext/oci8/oci_new_descriptor.stub', 'oci_num_fields' => 'stubs/ext/oci8/oci_num_fields.stub', 'oci_num_rows' => 'stubs/ext/oci8/oci_num_rows.stub', 'oci_parse' => 'stubs/ext/oci8/oci_parse.stub', 'oci_password_change' => 'stubs/ext/oci8/oci_password_change.stub', 'oci_pconnect' => 'stubs/ext/oci8/oci_pconnect.stub', 'oci_register_taf_callback' => 'stubs/ext/oci8/oci_register_taf_callback.stub', 'oci_result' => 'stubs/ext/oci8/oci_result.stub', 'oci_rollback' => 'stubs/ext/oci8/oci_rollback.stub', 'oci_server_version' => 'stubs/ext/oci8/oci_server_version.stub', 'oci_set_action' => 'stubs/ext/oci8/oci_set_action.stub', 'oci_set_call_timeout' => 'stubs/ext/oci8/oci_set_call_timeout.stub', 'oci_set_client_identifier' => 'stubs/ext/oci8/oci_set_client_identifier.stub', 'oci_set_client_info' => 'stubs/ext/oci8/oci_set_client_info.stub', 'oci_set_db_operation' => 'stubs/ext/oci8/oci_set_db_operation.stub', 'oci_set_edition' => 'stubs/ext/oci8/oci_set_edition.stub', 'oci_set_module_name' => 'stubs/ext/oci8/oci_set_module_name.stub', 'oci_set_prefetch' => 'stubs/ext/oci8/oci_set_prefetch.stub', 'oci_statement_type' => 'stubs/ext/oci8/oci_statement_type.stub', 'oci_unregister_taf_callback' => 'stubs/ext/oci8/oci_unregister_taf_callback.stub', 'ocibindbyname' => 'stubs/ext/oci8/ocibindbyname.stub', 'ocicancel' => 'stubs/ext/oci8/ocicancel.stub', 'ocicollappend' => 'stubs/ext/oci8/ocicollappend.stub', 'ocicollassignelem' => 'stubs/ext/oci8/ocicollassignelem.stub', 'ocicollgetelem' => 'stubs/ext/oci8/ocicollgetelem.stub', 'ocicollmax' => 'stubs/ext/oci8/ocicollmax.stub', 'ocicollsize' => 'stubs/ext/oci8/ocicollsize.stub', 'ocicolltrim' => 'stubs/ext/oci8/ocicolltrim.stub', 'ocicolumnisnull' => 'stubs/ext/oci8/ocicolumnisnull.stub', 'ocicolumnname' => 'stubs/ext/oci8/ocicolumnname.stub', 'ocicolumnprecision' => 'stubs/ext/oci8/ocicolumnprecision.stub', 'ocicolumnscale' => 'stubs/ext/oci8/ocicolumnscale.stub', 'ocicolumnsize' => 'stubs/ext/oci8/ocicolumnsize.stub', 'ocicolumntype' => 'stubs/ext/oci8/ocicolumntype.stub', 'ocicolumntyperaw' => 'stubs/ext/oci8/ocicolumntyperaw.stub', 'ocicommit' => 'stubs/ext/oci8/ocicommit.stub', 'ocidefinebyname' => 'stubs/ext/oci8/ocidefinebyname.stub', 'ocierror' => 'stubs/ext/oci8/ocierror.stub', 'ociexecute' => 'stubs/ext/oci8/ociexecute.stub', 'ocifetch' => 'stubs/ext/oci8/ocifetch.stub', 'ocifetchinto' => 'stubs/ext/oci8/ocifetchinto.stub', 'ocifetchstatement' => 'stubs/ext/oci8/ocifetchstatement.stub', 'ocifreecollection' => 'stubs/ext/oci8/ocifreecollection.stub', 'ocifreecursor' => 'stubs/ext/oci8/ocifreecursor.stub', 'ocifreedesc' => 'stubs/ext/oci8/ocifreedesc.stub', 'ocifreestatement' => 'stubs/ext/oci8/ocifreestatement.stub', 'ocigetbufferinglob' => 'stubs/ext/oci8/ocigetbufferinglob.stub', 'ociloadlob' => 'stubs/ext/oci8/ociloadlob.stub', 'ocilogoff' => 'stubs/ext/oci8/ocilogoff.stub', 'ocilogon' => 'stubs/ext/oci8/ocilogon.stub', 'ocinewcollection' => 'stubs/ext/oci8/ocinewcollection.stub', 'ocinewcursor' => 'stubs/ext/oci8/ocinewcursor.stub', 'ocinewdescriptor' => 'stubs/ext/oci8/ocinewdescriptor.stub', 'ocinlogon' => 'stubs/ext/oci8/ocinlogon.stub', 'ocinumcols' => 'stubs/ext/oci8/ocinumcols.stub', 'ociparse' => 'stubs/ext/oci8/ociparse.stub', 'ocipasswordchange' => 'stubs/ext/oci8/ocipasswordchange.stub', 'ociplogon' => 'stubs/ext/oci8/ociplogon.stub', 'ociresult' => 'stubs/ext/oci8/ociresult.stub', 'ocirollback' => 'stubs/ext/oci8/ocirollback.stub', 'ocirowcount' => 'stubs/ext/oci8/ocirowcount.stub', 'ocisavelob' => 'stubs/ext/oci8/ocisavelob.stub', 'ocisavelobfile' => 'stubs/ext/oci8/ocisavelobfile.stub', 'ociserverversion' => 'stubs/ext/oci8/ociserverversion.stub', 'ocisetbufferinglob' => 'stubs/ext/oci8/ocisetbufferinglob.stub', 'ocisetprefetch' => 'stubs/ext/oci8/ocisetprefetch.stub', 'ocistatementtype' => 'stubs/ext/oci8/ocistatementtype.stub', 'ociwritelobtofile' => 'stubs/ext/oci8/ociwritelobtofile.stub', 'octdec' => 'stubs/ext/standard/octdec.stub', 'odbc_autocommit' => 'stubs/ext/odbc/odbc_autocommit.stub', 'odbc_binmode' => 'stubs/ext/odbc/odbc_binmode.stub', 'odbc_close' => 'stubs/ext/odbc/odbc_close.stub', 'odbc_close_all' => 'stubs/ext/odbc/odbc_close_all.stub', 'odbc_columnprivileges' => 'stubs/ext/odbc/odbc_columnprivileges.stub', 'odbc_columns' => 'stubs/ext/odbc/odbc_columns.stub', 'odbc_commit' => 'stubs/ext/odbc/odbc_commit.stub', 'odbc_connect' => 'stubs/ext/odbc/odbc_connect.stub', 'odbc_cursor' => 'stubs/ext/odbc/odbc_cursor.stub', 'odbc_data_source' => 'stubs/ext/odbc/odbc_data_source.stub', 'odbc_do' => 'stubs/ext/odbc/odbc_do.stub', 'odbc_error' => 'stubs/ext/odbc/odbc_error.stub', 'odbc_errormsg' => 'stubs/ext/odbc/odbc_errormsg.stub', 'odbc_exec' => 'stubs/ext/odbc/odbc_exec.stub', 'odbc_execute' => 'stubs/ext/odbc/odbc_execute.stub', 'odbc_fetch_array' => 'stubs/ext/odbc/odbc_fetch_array.stub', 'odbc_fetch_into' => 'stubs/ext/odbc/odbc_fetch_into.stub', 'odbc_fetch_object' => 'stubs/ext/odbc/odbc_fetch_object.stub', 'odbc_fetch_row' => 'stubs/ext/odbc/odbc_fetch_row.stub', 'odbc_field_len' => 'stubs/ext/odbc/odbc_field_len.stub', 'odbc_field_name' => 'stubs/ext/odbc/odbc_field_name.stub', 'odbc_field_num' => 'stubs/ext/odbc/odbc_field_num.stub', 'odbc_field_precision' => 'stubs/ext/odbc/odbc_field_precision.stub', 'odbc_field_scale' => 'stubs/ext/odbc/odbc_field_scale.stub', 'odbc_field_type' => 'stubs/ext/odbc/odbc_field_type.stub', 'odbc_foreignkeys' => 'stubs/ext/odbc/odbc_foreignkeys.stub', 'odbc_free_result' => 'stubs/ext/odbc/odbc_free_result.stub', 'odbc_gettypeinfo' => 'stubs/ext/odbc/odbc_gettypeinfo.stub', 'odbc_longreadlen' => 'stubs/ext/odbc/odbc_longreadlen.stub', 'odbc_next_result' => 'stubs/ext/odbc/odbc_next_result.stub', 'odbc_num_fields' => 'stubs/ext/odbc/odbc_num_fields.stub', 'odbc_num_rows' => 'stubs/ext/odbc/odbc_num_rows.stub', 'odbc_pconnect' => 'stubs/ext/odbc/odbc_pconnect.stub', 'odbc_prepare' => 'stubs/ext/odbc/odbc_prepare.stub', 'odbc_primarykeys' => 'stubs/ext/odbc/odbc_primarykeys.stub', 'odbc_procedurecolumns' => 'stubs/ext/odbc/odbc_procedurecolumns.stub', 'odbc_procedures' => 'stubs/ext/odbc/odbc_procedures.stub', 'odbc_result' => 'stubs/ext/odbc/odbc_result.stub', 'odbc_result_all' => 'stubs/ext/odbc/odbc_result_all.stub', 'odbc_rollback' => 'stubs/ext/odbc/odbc_rollback.stub', 'odbc_setoption' => 'stubs/ext/odbc/odbc_setoption.stub', 'odbc_specialcolumns' => 'stubs/ext/odbc/odbc_specialcolumns.stub', 'odbc_statistics' => 'stubs/ext/odbc/odbc_statistics.stub', 'odbc_tableprivileges' => 'stubs/ext/odbc/odbc_tableprivileges.stub', 'odbc_tables' => 'stubs/ext/odbc/odbc_tables.stub', 'opcache_compile_file' => 'stubs/ext/opcache/opcache_compile_file.stub', 'opcache_get_configuration' => 'stubs/ext/opcache/opcache_get_configuration.stub', 'opcache_get_status' => 'stubs/ext/opcache/opcache_get_status.stub', 'opcache_invalidate' => 'stubs/ext/opcache/opcache_invalidate.stub', 'opcache_is_script_cached' => 'stubs/ext/opcache/opcache_is_script_cached.stub', 'opcache_reset' => 'stubs/ext/opcache/opcache_reset.stub', 'opendir' => 'stubs/ext/standard/opendir.stub', 'openlog' => 'stubs/ext/standard/openlog.stub', 'openssl_cipher_iv_length' => 'stubs/ext/openssl/openssl_cipher_iv_length.stub', 'openssl_cms_decrypt' => 'stubs/ext/openssl/openssl_cms_decrypt.stub', 'openssl_cms_encrypt' => 'stubs/ext/openssl/openssl_cms_encrypt.stub', 'openssl_cms_read' => 'stubs/ext/openssl/openssl_cms_read.stub', 'openssl_cms_sign' => 'stubs/ext/openssl/openssl_cms_sign.stub', 'openssl_cms_verify' => 'stubs/ext/openssl/openssl_cms_verify.stub', 'openssl_csr_export' => 'stubs/ext/openssl/openssl_csr_export.stub', 'openssl_csr_export_to_file' => 'stubs/ext/openssl/openssl_csr_export_to_file.stub', 'openssl_csr_get_public_key' => 'stubs/ext/openssl/openssl_csr_get_public_key.stub', 'openssl_csr_get_subject' => 'stubs/ext/openssl/openssl_csr_get_subject.stub', 'openssl_csr_new' => 'stubs/ext/openssl/openssl_csr_new.stub', 'openssl_csr_sign' => 'stubs/ext/openssl/openssl_csr_sign.stub', 'openssl_decrypt' => 'stubs/ext/openssl/openssl_decrypt.stub', 'openssl_dh_compute_key' => 'stubs/ext/openssl/openssl_dh_compute_key.stub', 'openssl_digest' => 'stubs/ext/openssl/openssl_digest.stub', 'openssl_encrypt' => 'stubs/ext/openssl/openssl_encrypt.stub', 'openssl_error_string' => 'stubs/ext/openssl/openssl_error_string.stub', 'openssl_free_key' => 'stubs/ext/openssl/openssl_free_key.stub', 'openssl_get_cert_locations' => 'stubs/ext/openssl/openssl_get_cert_locations.stub', 'openssl_get_cipher_methods' => 'stubs/ext/openssl/openssl_get_cipher_methods.stub', 'openssl_get_curve_names' => 'stubs/ext/openssl/openssl_get_curve_names.stub', 'openssl_get_md_methods' => 'stubs/ext/openssl/openssl_get_md_methods.stub', 'openssl_get_privatekey' => 'stubs/ext/openssl/openssl_get_privatekey.stub', 'openssl_get_publickey' => 'stubs/ext/openssl/openssl_get_publickey.stub', 'openssl_open' => 'stubs/ext/openssl/openssl_open.stub', 'openssl_pbkdf2' => 'stubs/ext/openssl/openssl_pbkdf2.stub', 'openssl_pkcs12_export' => 'stubs/ext/openssl/openssl_pkcs12_export.stub', 'openssl_pkcs12_export_to_file' => 'stubs/ext/openssl/openssl_pkcs12_export_to_file.stub', 'openssl_pkcs12_read' => 'stubs/ext/openssl/openssl_pkcs12_read.stub', 'openssl_pkcs7_decrypt' => 'stubs/ext/openssl/openssl_pkcs7_decrypt.stub', 'openssl_pkcs7_encrypt' => 'stubs/ext/openssl/openssl_pkcs7_encrypt.stub', 'openssl_pkcs7_read' => 'stubs/ext/openssl/openssl_pkcs7_read.stub', 'openssl_pkcs7_sign' => 'stubs/ext/openssl/openssl_pkcs7_sign.stub', 'openssl_pkcs7_verify' => 'stubs/ext/openssl/openssl_pkcs7_verify.stub', 'openssl_pkey_derive' => 'stubs/ext/openssl/openssl_pkey_derive.stub', 'openssl_pkey_export' => 'stubs/ext/openssl/openssl_pkey_export.stub', 'openssl_pkey_export_to_file' => 'stubs/ext/openssl/openssl_pkey_export_to_file.stub', 'openssl_pkey_free' => 'stubs/ext/openssl/openssl_pkey_free.stub', 'openssl_pkey_get_details' => 'stubs/ext/openssl/openssl_pkey_get_details.stub', 'openssl_pkey_get_private' => 'stubs/ext/openssl/openssl_pkey_get_private.stub', 'openssl_pkey_get_public' => 'stubs/ext/openssl/openssl_pkey_get_public.stub', 'openssl_pkey_new' => 'stubs/ext/openssl/openssl_pkey_new.stub', 'openssl_private_decrypt' => 'stubs/ext/openssl/openssl_private_decrypt.stub', 'openssl_private_encrypt' => 'stubs/ext/openssl/openssl_private_encrypt.stub', 'openssl_public_decrypt' => 'stubs/ext/openssl/openssl_public_decrypt.stub', 'openssl_public_encrypt' => 'stubs/ext/openssl/openssl_public_encrypt.stub', 'openssl_random_pseudo_bytes' => 'stubs/ext/openssl/openssl_random_pseudo_bytes.stub', 'openssl_seal' => 'stubs/ext/openssl/openssl_seal.stub', 'openssl_sign' => 'stubs/ext/openssl/openssl_sign.stub', 'openssl_spki_export' => 'stubs/ext/openssl/openssl_spki_export.stub', 'openssl_spki_export_challenge' => 'stubs/ext/openssl/openssl_spki_export_challenge.stub', 'openssl_spki_new' => 'stubs/ext/openssl/openssl_spki_new.stub', 'openssl_spki_verify' => 'stubs/ext/openssl/openssl_spki_verify.stub', 'openssl_verify' => 'stubs/ext/openssl/openssl_verify.stub', 'openssl_x509_check_private_key' => 'stubs/ext/openssl/openssl_x509_check_private_key.stub', 'openssl_x509_checkpurpose' => 'stubs/ext/openssl/openssl_x509_checkpurpose.stub', 'openssl_x509_export' => 'stubs/ext/openssl/openssl_x509_export.stub', 'openssl_x509_export_to_file' => 'stubs/ext/openssl/openssl_x509_export_to_file.stub', 'openssl_x509_fingerprint' => 'stubs/ext/openssl/openssl_x509_fingerprint.stub', 'openssl_x509_free' => 'stubs/ext/openssl/openssl_x509_free.stub', 'openssl_x509_parse' => 'stubs/ext/openssl/openssl_x509_parse.stub', 'openssl_x509_read' => 'stubs/ext/openssl/openssl_x509_read.stub', 'openssl_x509_verify' => 'stubs/ext/openssl/openssl_x509_verify.stub', 'ord' => 'stubs/ext/standard/ord.stub', 'output_add_rewrite_var' => 'stubs/ext/standard/output_add_rewrite_var.stub', 'output_reset_rewrite_vars' => 'stubs/ext/standard/output_reset_rewrite_vars.stub', 'pack' => 'stubs/ext/standard/pack.stub', 'parse_ini_file' => 'stubs/ext/standard/parse_ini_file.stub', 'parse_ini_string' => 'stubs/ext/standard/parse_ini_string.stub', 'parse_str' => 'stubs/ext/standard/parse_str.stub', 'parse_url' => 'stubs/ext/standard/parse_url.stub', 'passthru' => 'stubs/ext/standard/passthru.stub', 'password_algos' => 'stubs/ext/standard/password_algos.stub', 'password_get_info' => 'stubs/ext/standard/password_get_info.stub', 'password_hash' => 'stubs/ext/standard/password_hash.stub', 'password_needs_rehash' => 'stubs/ext/standard/password_needs_rehash.stub', 'password_verify' => 'stubs/ext/standard/password_verify.stub', 'pathinfo' => 'stubs/ext/standard/pathinfo.stub', 'pclose' => 'stubs/ext/standard/pclose.stub', 'pcntl_alarm' => 'stubs/ext/pcntl/pcntl_alarm.stub', 'pcntl_async_signals' => 'stubs/ext/pcntl/pcntl_async_signals.stub', 'pcntl_errno' => 'stubs/ext/pcntl/pcntl_errno.stub', 'pcntl_exec' => 'stubs/ext/pcntl/pcntl_exec.stub', 'pcntl_fork' => 'stubs/ext/pcntl/pcntl_fork.stub', 'pcntl_get_last_error' => 'stubs/ext/pcntl/pcntl_get_last_error.stub', 'pcntl_getpriority' => 'stubs/ext/pcntl/pcntl_getpriority.stub', 'pcntl_setpriority' => 'stubs/ext/pcntl/pcntl_setpriority.stub', 'pcntl_signal' => 'stubs/ext/pcntl/pcntl_signal.stub', 'pcntl_signal_dispatch' => 'stubs/ext/pcntl/pcntl_signal_dispatch.stub', 'pcntl_signal_get_handler' => 'stubs/ext/pcntl/pcntl_signal_get_handler.stub', 'pcntl_sigprocmask' => 'stubs/ext/pcntl/pcntl_sigprocmask.stub', 'pcntl_sigtimedwait' => 'stubs/ext/pcntl/pcntl_sigtimedwait.stub', 'pcntl_sigwaitinfo' => 'stubs/ext/pcntl/pcntl_sigwaitinfo.stub', 'pcntl_strerror' => 'stubs/ext/pcntl/pcntl_strerror.stub', 'pcntl_unshare' => 'stubs/ext/pcntl/pcntl_unshare.stub', 'pcntl_wait' => 'stubs/ext/pcntl/pcntl_wait.stub', 'pcntl_waitpid' => 'stubs/ext/pcntl/pcntl_waitpid.stub', 'pcntl_wexitstatus' => 'stubs/ext/pcntl/pcntl_wexitstatus.stub', 'pcntl_wifcontinued' => 'stubs/ext/pcntl/pcntl_wifcontinued.stub', 'pcntl_wifexited' => 'stubs/ext/pcntl/pcntl_wifexited.stub', 'pcntl_wifsignaled' => 'stubs/ext/pcntl/pcntl_wifsignaled.stub', 'pcntl_wifstopped' => 'stubs/ext/pcntl/pcntl_wifstopped.stub', 'pcntl_wstopsig' => 'stubs/ext/pcntl/pcntl_wstopsig.stub', 'pcntl_wtermsig' => 'stubs/ext/pcntl/pcntl_wtermsig.stub', 'pdo_drivers' => 'stubs/ext/pdo/pdo_drivers.stub', 'pfsockopen' => 'stubs/ext/standard/pfsockopen.stub', 'pg_affected_rows' => 'stubs/ext/pgsql/pg_affected_rows.stub', 'pg_cancel_query' => 'stubs/ext/pgsql/pg_cancel_query.stub', 'pg_client_encoding' => 'stubs/ext/pgsql/pg_client_encoding.stub', 'pg_clientencoding' => 'stubs/ext/pgsql/pg_clientencoding.stub', 'pg_close' => 'stubs/ext/pgsql/pg_close.stub', 'pg_cmdtuples' => 'stubs/ext/pgsql/pg_cmdtuples.stub', 'pg_connect' => 'stubs/ext/pgsql/pg_connect.stub', 'pg_connect_poll' => 'stubs/ext/pgsql/pg_connect_poll.stub', 'pg_connection_busy' => 'stubs/ext/pgsql/pg_connection_busy.stub', 'pg_connection_reset' => 'stubs/ext/pgsql/pg_connection_reset.stub', 'pg_connection_status' => 'stubs/ext/pgsql/pg_connection_status.stub', 'pg_consume_input' => 'stubs/ext/pgsql/pg_consume_input.stub', 'pg_convert' => 'stubs/ext/pgsql/pg_convert.stub', 'pg_copy_from' => 'stubs/ext/pgsql/pg_copy_from.stub', 'pg_copy_to' => 'stubs/ext/pgsql/pg_copy_to.stub', 'pg_dbname' => 'stubs/ext/pgsql/pg_dbname.stub', 'pg_delete' => 'stubs/ext/pgsql/pg_delete.stub', 'pg_end_copy' => 'stubs/ext/pgsql/pg_end_copy.stub', 'pg_errormessage' => 'stubs/ext/pgsql/pg_errormessage.stub', 'pg_escape_bytea' => 'stubs/ext/pgsql/pg_escape_bytea.stub', 'pg_escape_identifier' => 'stubs/ext/pgsql/pg_escape_identifier.stub', 'pg_escape_literal' => 'stubs/ext/pgsql/pg_escape_literal.stub', 'pg_escape_string' => 'stubs/ext/pgsql/pg_escape_string.stub', 'pg_exec' => 'stubs/ext/pgsql/pg_exec.stub', 'pg_execute' => 'stubs/ext/pgsql/pg_execute.stub', 'pg_fetch_all' => 'stubs/ext/pgsql/pg_fetch_all.stub', 'pg_fetch_all_columns' => 'stubs/ext/pgsql/pg_fetch_all_columns.stub', 'pg_fetch_array' => 'stubs/ext/pgsql/pg_fetch_array.stub', 'pg_fetch_assoc' => 'stubs/ext/pgsql/pg_fetch_assoc.stub', 'pg_fetch_object' => 'stubs/ext/pgsql/pg_fetch_object.stub', 'pg_fetch_result' => 'stubs/ext/pgsql/pg_fetch_result.stub', 'pg_fetch_row' => 'stubs/ext/pgsql/pg_fetch_row.stub', 'pg_field_is_null' => 'stubs/ext/pgsql/pg_field_is_null.stub', 'pg_field_name' => 'stubs/ext/pgsql/pg_field_name.stub', 'pg_field_num' => 'stubs/ext/pgsql/pg_field_num.stub', 'pg_field_prtlen' => 'stubs/ext/pgsql/pg_field_prtlen.stub', 'pg_field_size' => 'stubs/ext/pgsql/pg_field_size.stub', 'pg_field_table' => 'stubs/ext/pgsql/pg_field_table.stub', 'pg_field_type' => 'stubs/ext/pgsql/pg_field_type.stub', 'pg_field_type_oid' => 'stubs/ext/pgsql/pg_field_type_oid.stub', 'pg_fieldisnull' => 'stubs/ext/pgsql/pg_fieldisnull.stub', 'pg_fieldname' => 'stubs/ext/pgsql/pg_fieldname.stub', 'pg_fieldnum' => 'stubs/ext/pgsql/pg_fieldnum.stub', 'pg_fieldprtlen' => 'stubs/ext/pgsql/pg_fieldprtlen.stub', 'pg_fieldsize' => 'stubs/ext/pgsql/pg_fieldsize.stub', 'pg_fieldtype' => 'stubs/ext/pgsql/pg_fieldtype.stub', 'pg_flush' => 'stubs/ext/pgsql/pg_flush.stub', 'pg_free_result' => 'stubs/ext/pgsql/pg_free_result.stub', 'pg_freeresult' => 'stubs/ext/pgsql/pg_freeresult.stub', 'pg_get_notify' => 'stubs/ext/pgsql/pg_get_notify.stub', 'pg_get_pid' => 'stubs/ext/pgsql/pg_get_pid.stub', 'pg_get_result' => 'stubs/ext/pgsql/pg_get_result.stub', 'pg_getlastoid' => 'stubs/ext/pgsql/pg_getlastoid.stub', 'pg_host' => 'stubs/ext/pgsql/pg_host.stub', 'pg_insert' => 'stubs/ext/pgsql/pg_insert.stub', 'pg_last_error' => 'stubs/ext/pgsql/pg_last_error.stub', 'pg_last_notice' => 'stubs/ext/pgsql/pg_last_notice.stub', 'pg_last_oid' => 'stubs/ext/pgsql/pg_last_oid.stub', 'pg_lo_close' => 'stubs/ext/pgsql/pg_lo_close.stub', 'pg_lo_create' => 'stubs/ext/pgsql/pg_lo_create.stub', 'pg_lo_export' => 'stubs/ext/pgsql/pg_lo_export.stub', 'pg_lo_import' => 'stubs/ext/pgsql/pg_lo_import.stub', 'pg_lo_open' => 'stubs/ext/pgsql/pg_lo_open.stub', 'pg_lo_read' => 'stubs/ext/pgsql/pg_lo_read.stub', 'pg_lo_read_all' => 'stubs/ext/pgsql/pg_lo_read_all.stub', 'pg_lo_seek' => 'stubs/ext/pgsql/pg_lo_seek.stub', 'pg_lo_tell' => 'stubs/ext/pgsql/pg_lo_tell.stub', 'pg_lo_truncate' => 'stubs/ext/pgsql/pg_lo_truncate.stub', 'pg_lo_unlink' => 'stubs/ext/pgsql/pg_lo_unlink.stub', 'pg_lo_write' => 'stubs/ext/pgsql/pg_lo_write.stub', 'pg_loclose' => 'stubs/ext/pgsql/pg_loclose.stub', 'pg_locreate' => 'stubs/ext/pgsql/pg_locreate.stub', 'pg_loexport' => 'stubs/ext/pgsql/pg_loexport.stub', 'pg_loimport' => 'stubs/ext/pgsql/pg_loimport.stub', 'pg_loopen' => 'stubs/ext/pgsql/pg_loopen.stub', 'pg_loread' => 'stubs/ext/pgsql/pg_loread.stub', 'pg_loreadall' => 'stubs/ext/pgsql/pg_loreadall.stub', 'pg_lounlink' => 'stubs/ext/pgsql/pg_lounlink.stub', 'pg_lowrite' => 'stubs/ext/pgsql/pg_lowrite.stub', 'pg_meta_data' => 'stubs/ext/pgsql/pg_meta_data.stub', 'pg_num_fields' => 'stubs/ext/pgsql/pg_num_fields.stub', 'pg_num_rows' => 'stubs/ext/pgsql/pg_num_rows.stub', 'pg_numfields' => 'stubs/ext/pgsql/pg_numfields.stub', 'pg_numrows' => 'stubs/ext/pgsql/pg_numrows.stub', 'pg_options' => 'stubs/ext/pgsql/pg_options.stub', 'pg_parameter_status' => 'stubs/ext/pgsql/pg_parameter_status.stub', 'pg_pconnect' => 'stubs/ext/pgsql/pg_pconnect.stub', 'pg_ping' => 'stubs/ext/pgsql/pg_ping.stub', 'pg_port' => 'stubs/ext/pgsql/pg_port.stub', 'pg_prepare' => 'stubs/ext/pgsql/pg_prepare.stub', 'pg_put_line' => 'stubs/ext/pgsql/pg_put_line.stub', 'pg_query' => 'stubs/ext/pgsql/pg_query.stub', 'pg_query_params' => 'stubs/ext/pgsql/pg_query_params.stub', 'pg_result' => 'stubs/ext/pgsql/pg_result.stub', 'pg_result_error' => 'stubs/ext/pgsql/pg_result_error.stub', 'pg_result_error_field' => 'stubs/ext/pgsql/pg_result_error_field.stub', 'pg_result_seek' => 'stubs/ext/pgsql/pg_result_seek.stub', 'pg_result_status' => 'stubs/ext/pgsql/pg_result_status.stub', 'pg_select' => 'stubs/ext/pgsql/pg_select.stub', 'pg_send_execute' => 'stubs/ext/pgsql/pg_send_execute.stub', 'pg_send_prepare' => 'stubs/ext/pgsql/pg_send_prepare.stub', 'pg_send_query' => 'stubs/ext/pgsql/pg_send_query.stub', 'pg_send_query_params' => 'stubs/ext/pgsql/pg_send_query_params.stub', 'pg_set_client_encoding' => 'stubs/ext/pgsql/pg_set_client_encoding.stub', 'pg_set_error_verbosity' => 'stubs/ext/pgsql/pg_set_error_verbosity.stub', 'pg_setclientencoding' => 'stubs/ext/pgsql/pg_setclientencoding.stub', 'pg_socket' => 'stubs/ext/pgsql/pg_socket.stub', 'pg_trace' => 'stubs/ext/pgsql/pg_trace.stub', 'pg_transaction_status' => 'stubs/ext/pgsql/pg_transaction_status.stub', 'pg_tty' => 'stubs/ext/pgsql/pg_tty.stub', 'pg_unescape_bytea' => 'stubs/ext/pgsql/pg_unescape_bytea.stub', 'pg_untrace' => 'stubs/ext/pgsql/pg_untrace.stub', 'pg_update' => 'stubs/ext/pgsql/pg_update.stub', 'pg_version' => 'stubs/ext/pgsql/pg_version.stub', 'php_ini_loaded_file' => 'stubs/ext/standard/php_ini_loaded_file.stub', 'php_ini_scanned_files' => 'stubs/ext/standard/php_ini_scanned_files.stub', 'php_sapi_name' => 'stubs/ext/standard/php_sapi_name.stub', 'php_strip_whitespace' => 'stubs/ext/standard/php_strip_whitespace.stub', 'php_uname' => 'stubs/ext/standard/php_uname.stub', 'phpcredits' => 'stubs/ext/standard/phpcredits.stub', 'phpdbg_break_file' => 'stubs/sapi/phpdbg/phpdbg_break_file.stub', 'phpdbg_break_function' => 'stubs/sapi/phpdbg/phpdbg_break_function.stub', 'phpdbg_break_method' => 'stubs/sapi/phpdbg/phpdbg_break_method.stub', 'phpdbg_break_next' => 'stubs/sapi/phpdbg/phpdbg_break_next.stub', 'phpdbg_clear' => 'stubs/sapi/phpdbg/phpdbg_clear.stub', 'phpdbg_color' => 'stubs/sapi/phpdbg/phpdbg_color.stub', 'phpdbg_end_oplog' => 'stubs/sapi/phpdbg/phpdbg_end_oplog.stub', 'phpdbg_exec' => 'stubs/sapi/phpdbg/phpdbg_exec.stub', 'phpdbg_get_executable' => 'stubs/sapi/phpdbg/phpdbg_get_executable.stub', 'phpdbg_prompt' => 'stubs/sapi/phpdbg/phpdbg_prompt.stub', 'phpdbg_start_oplog' => 'stubs/sapi/phpdbg/phpdbg_start_oplog.stub', 'phpinfo' => 'stubs/ext/standard/phpinfo.stub', 'phpversion' => 'stubs/ext/standard/phpversion.stub', 'pi' => 'stubs/ext/standard/pi.stub', 'popen' => 'stubs/ext/standard/popen.stub', 'pos' => 'stubs/ext/standard/pos.stub', 'posix_access' => 'stubs/ext/posix/posix_access.stub', 'posix_ctermid' => 'stubs/ext/posix/posix_ctermid.stub', 'posix_errno' => 'stubs/ext/posix/posix_errno.stub', 'posix_get_last_error' => 'stubs/ext/posix/posix_get_last_error.stub', 'posix_getcwd' => 'stubs/ext/posix/posix_getcwd.stub', 'posix_getegid' => 'stubs/ext/posix/posix_getegid.stub', 'posix_geteuid' => 'stubs/ext/posix/posix_geteuid.stub', 'posix_getgid' => 'stubs/ext/posix/posix_getgid.stub', 'posix_getgrgid' => 'stubs/ext/posix/posix_getgrgid.stub', 'posix_getgrnam' => 'stubs/ext/posix/posix_getgrnam.stub', 'posix_getgroups' => 'stubs/ext/posix/posix_getgroups.stub', 'posix_getlogin' => 'stubs/ext/posix/posix_getlogin.stub', 'posix_getpgid' => 'stubs/ext/posix/posix_getpgid.stub', 'posix_getpgrp' => 'stubs/ext/posix/posix_getpgrp.stub', 'posix_getpid' => 'stubs/ext/posix/posix_getpid.stub', 'posix_getppid' => 'stubs/ext/posix/posix_getppid.stub', 'posix_getpwnam' => 'stubs/ext/posix/posix_getpwnam.stub', 'posix_getpwuid' => 'stubs/ext/posix/posix_getpwuid.stub', 'posix_getrlimit' => 'stubs/ext/posix/posix_getrlimit.stub', 'posix_getsid' => 'stubs/ext/posix/posix_getsid.stub', 'posix_getuid' => 'stubs/ext/posix/posix_getuid.stub', 'posix_initgroups' => 'stubs/ext/posix/posix_initgroups.stub', 'posix_isatty' => 'stubs/ext/posix/posix_isatty.stub', 'posix_kill' => 'stubs/ext/posix/posix_kill.stub', 'posix_mkfifo' => 'stubs/ext/posix/posix_mkfifo.stub', 'posix_mknod' => 'stubs/ext/posix/posix_mknod.stub', 'posix_setegid' => 'stubs/ext/posix/posix_setegid.stub', 'posix_seteuid' => 'stubs/ext/posix/posix_seteuid.stub', 'posix_setgid' => 'stubs/ext/posix/posix_setgid.stub', 'posix_setpgid' => 'stubs/ext/posix/posix_setpgid.stub', 'posix_setrlimit' => 'stubs/ext/posix/posix_setrlimit.stub', 'posix_setsid' => 'stubs/ext/posix/posix_setsid.stub', 'posix_setuid' => 'stubs/ext/posix/posix_setuid.stub', 'posix_strerror' => 'stubs/ext/posix/posix_strerror.stub', 'posix_times' => 'stubs/ext/posix/posix_times.stub', 'posix_ttyname' => 'stubs/ext/posix/posix_ttyname.stub', 'posix_uname' => 'stubs/ext/posix/posix_uname.stub', 'pow' => 'stubs/ext/standard/pow.stub', 'preg_filter' => 'stubs/ext/pcre/preg_filter.stub', 'preg_grep' => 'stubs/ext/pcre/preg_grep.stub', 'preg_last_error' => 'stubs/ext/pcre/preg_last_error.stub', 'preg_last_error_msg' => 'stubs/ext/pcre/preg_last_error_msg.stub', 'preg_match' => 'stubs/ext/pcre/preg_match.stub', 'preg_match_all' => 'stubs/ext/pcre/preg_match_all.stub', 'preg_quote' => 'stubs/ext/pcre/preg_quote.stub', 'preg_replace' => 'stubs/ext/pcre/preg_replace.stub', 'preg_replace_callback' => 'stubs/ext/pcre/preg_replace_callback.stub', 'preg_replace_callback_array' => 'stubs/ext/pcre/preg_replace_callback_array.stub', 'preg_split' => 'stubs/ext/pcre/preg_split.stub', 'prev' => 'stubs/ext/standard/prev.stub', 'print_r' => 'stubs/ext/standard/print_r.stub', 'printf' => 'stubs/ext/standard/printf.stub', 'proc_close' => 'stubs/ext/standard/proc_close.stub', 'proc_get_status' => 'stubs/ext/standard/proc_get_status.stub', 'proc_nice' => 'stubs/ext/standard/proc_nice.stub', 'proc_open' => 'stubs/ext/standard/proc_open.stub', 'proc_terminate' => 'stubs/ext/standard/proc_terminate.stub', 'property_exists' => 'stubs/Zend/property_exists.stub', 'pspell_add_to_personal' => 'stubs/ext/pspell/pspell_add_to_personal.stub', 'pspell_add_to_session' => 'stubs/ext/pspell/pspell_add_to_session.stub', 'pspell_check' => 'stubs/ext/pspell/pspell_check.stub', 'pspell_clear_session' => 'stubs/ext/pspell/pspell_clear_session.stub', 'pspell_config_create' => 'stubs/ext/pspell/pspell_config_create.stub', 'pspell_config_data_dir' => 'stubs/ext/pspell/pspell_config_data_dir.stub', 'pspell_config_dict_dir' => 'stubs/ext/pspell/pspell_config_dict_dir.stub', 'pspell_config_ignore' => 'stubs/ext/pspell/pspell_config_ignore.stub', 'pspell_config_mode' => 'stubs/ext/pspell/pspell_config_mode.stub', 'pspell_config_personal' => 'stubs/ext/pspell/pspell_config_personal.stub', 'pspell_config_repl' => 'stubs/ext/pspell/pspell_config_repl.stub', 'pspell_config_runtogether' => 'stubs/ext/pspell/pspell_config_runtogether.stub', 'pspell_config_save_repl' => 'stubs/ext/pspell/pspell_config_save_repl.stub', 'pspell_new' => 'stubs/ext/pspell/pspell_new.stub', 'pspell_new_config' => 'stubs/ext/pspell/pspell_new_config.stub', 'pspell_new_personal' => 'stubs/ext/pspell/pspell_new_personal.stub', 'pspell_save_wordlist' => 'stubs/ext/pspell/pspell_save_wordlist.stub', 'pspell_store_replacement' => 'stubs/ext/pspell/pspell_store_replacement.stub', 'pspell_suggest' => 'stubs/ext/pspell/pspell_suggest.stub', 'putenv' => 'stubs/ext/standard/putenv.stub', 'quoted_printable_decode' => 'stubs/ext/standard/quoted_printable_decode.stub', 'quoted_printable_encode' => 'stubs/ext/standard/quoted_printable_encode.stub', 'quotemeta' => 'stubs/ext/standard/quotemeta.stub', 'rad2deg' => 'stubs/ext/standard/rad2deg.stub', 'rand' => 'stubs/ext/standard/rand.stub', 'random_bytes' => 'stubs/ext/standard/random_bytes.stub', 'random_int' => 'stubs/ext/standard/random_int.stub', 'range' => 'stubs/ext/standard/range.stub', 'rawurldecode' => 'stubs/ext/standard/rawurldecode.stub', 'rawurlencode' => 'stubs/ext/standard/rawurlencode.stub', 'readdir' => 'stubs/ext/standard/readdir.stub', 'readfile' => 'stubs/ext/standard/readfile.stub', 'readgzfile' => 'stubs/ext/zlib/readgzfile.stub', 'readline' => 'stubs/ext/readline/readline.stub', 'readline_add_history' => 'stubs/ext/readline/readline_add_history.stub', 'readline_callback_handler_install' => 'stubs/ext/readline/readline_callback_handler_install.stub', 'readline_callback_handler_remove' => 'stubs/ext/readline/readline_callback_handler_remove.stub', 'readline_callback_read_char' => 'stubs/ext/readline/readline_callback_read_char.stub', 'readline_clear_history' => 'stubs/ext/readline/readline_clear_history.stub', 'readline_completion_function' => 'stubs/ext/readline/readline_completion_function.stub', 'readline_info' => 'stubs/ext/readline/readline_info.stub', 'readline_list_history' => 'stubs/ext/readline/readline_list_history.stub', 'readline_on_new_line' => 'stubs/ext/readline/readline_on_new_line.stub', 'readline_read_history' => 'stubs/ext/readline/readline_read_history.stub', 'readline_redisplay' => 'stubs/ext/readline/readline_redisplay.stub', 'readline_write_history' => 'stubs/ext/readline/readline_write_history.stub', 'readlink' => 'stubs/ext/standard/readlink.stub', 'realpath' => 'stubs/ext/standard/realpath.stub', 'realpath_cache_get' => 'stubs/ext/standard/realpath_cache_get.stub', 'realpath_cache_size' => 'stubs/ext/standard/realpath_cache_size.stub', 'register_shutdown_function' => 'stubs/ext/standard/register_shutdown_function.stub', 'register_tick_function' => 'stubs/ext/standard/register_tick_function.stub', 'rename' => 'stubs/ext/standard/rename.stub', 'reset' => 'stubs/ext/standard/reset.stub', 'resourcebundle_count' => 'stubs/ext/intl/resourcebundle_count.stub', 'resourcebundle_create' => 'stubs/ext/intl/resourcebundle_create.stub', 'resourcebundle_get' => 'stubs/ext/intl/resourcebundle_get.stub', 'resourcebundle_get_error_code' => 'stubs/ext/intl/resourcebundle_get_error_code.stub', 'resourcebundle_get_error_message' => 'stubs/ext/intl/resourcebundle_get_error_message.stub', 'resourcebundle_locales' => 'stubs/ext/intl/resourcebundle_locales.stub', 'restore_error_handler' => 'stubs/Zend/restore_error_handler.stub', 'restore_exception_handler' => 'stubs/Zend/restore_exception_handler.stub', 'rewind' => 'stubs/ext/standard/rewind.stub', 'rewinddir' => 'stubs/ext/standard/rewinddir.stub', 'rmdir' => 'stubs/ext/standard/rmdir.stub', 'round' => 'stubs/ext/standard/round.stub', 'rsort' => 'stubs/ext/standard/rsort.stub', 'rtrim' => 'stubs/ext/standard/rtrim.stub', 'sapi_windows_cp_conv' => 'stubs/ext/standard/sapi_windows_cp_conv.stub', 'sapi_windows_cp_get' => 'stubs/ext/standard/sapi_windows_cp_get.stub', 'sapi_windows_cp_is_utf8' => 'stubs/ext/standard/sapi_windows_cp_is_utf8.stub', 'sapi_windows_cp_set' => 'stubs/ext/standard/sapi_windows_cp_set.stub', 'sapi_windows_generate_ctrl_event' => 'stubs/ext/standard/sapi_windows_generate_ctrl_event.stub', 'sapi_windows_set_ctrl_handler' => 'stubs/ext/standard/sapi_windows_set_ctrl_handler.stub', 'sapi_windows_vt100_support' => 'stubs/ext/standard/sapi_windows_vt100_support.stub', 'scandir' => 'stubs/ext/standard/scandir.stub', 'sem_acquire' => 'stubs/ext/sysvsem/sem_acquire.stub', 'sem_get' => 'stubs/ext/sysvsem/sem_get.stub', 'sem_release' => 'stubs/ext/sysvsem/sem_release.stub', 'sem_remove' => 'stubs/ext/sysvsem/sem_remove.stub', 'serialize' => 'stubs/ext/standard/serialize.stub', 'session_abort' => 'stubs/ext/session/session_abort.stub', 'session_cache_expire' => 'stubs/ext/session/session_cache_expire.stub', 'session_cache_limiter' => 'stubs/ext/session/session_cache_limiter.stub', 'session_commit' => 'stubs/ext/session/session_commit.stub', 'session_create_id' => 'stubs/ext/session/session_create_id.stub', 'session_decode' => 'stubs/ext/session/session_decode.stub', 'session_destroy' => 'stubs/ext/session/session_destroy.stub', 'session_encode' => 'stubs/ext/session/session_encode.stub', 'session_gc' => 'stubs/ext/session/session_gc.stub', 'session_get_cookie_params' => 'stubs/ext/session/session_get_cookie_params.stub', 'session_id' => 'stubs/ext/session/session_id.stub', 'session_module_name' => 'stubs/ext/session/session_module_name.stub', 'session_name' => 'stubs/ext/session/session_name.stub', 'session_regenerate_id' => 'stubs/ext/session/session_regenerate_id.stub', 'session_register_shutdown' => 'stubs/ext/session/session_register_shutdown.stub', 'session_reset' => 'stubs/ext/session/session_reset.stub', 'session_save_path' => 'stubs/ext/session/session_save_path.stub', 'session_set_cookie_params' => 'stubs/ext/session/session_set_cookie_params.stub', 'session_set_save_handler' => 'stubs/ext/session/session_set_save_handler.stub', 'session_start' => 'stubs/ext/session/session_start.stub', 'session_status' => 'stubs/ext/session/session_status.stub', 'session_unset' => 'stubs/ext/session/session_unset.stub', 'session_write_close' => 'stubs/ext/session/session_write_close.stub', 'set_error_handler' => 'stubs/Zend/set_error_handler.stub', 'set_exception_handler' => 'stubs/Zend/set_exception_handler.stub', 'set_file_buffer' => 'stubs/ext/standard/set_file_buffer.stub', 'set_include_path' => 'stubs/ext/standard/set_include_path.stub', 'set_time_limit' => 'stubs/ext/standard/set_time_limit.stub', 'setcookie' => 'stubs/ext/standard/setcookie.stub', 'setlocale' => 'stubs/ext/standard/setlocale.stub', 'setrawcookie' => 'stubs/ext/standard/setrawcookie.stub', 'settype' => 'stubs/ext/standard/settype.stub', 'sha1' => 'stubs/ext/standard/sha1.stub', 'sha1_file' => 'stubs/ext/standard/sha1_file.stub', 'shell_exec' => 'stubs/ext/standard/shell_exec.stub', 'shm_attach' => 'stubs/ext/sysvshm/shm_attach.stub', 'shm_detach' => 'stubs/ext/sysvshm/shm_detach.stub', 'shm_get_var' => 'stubs/ext/sysvshm/shm_get_var.stub', 'shm_has_var' => 'stubs/ext/sysvshm/shm_has_var.stub', 'shm_put_var' => 'stubs/ext/sysvshm/shm_put_var.stub', 'shm_remove' => 'stubs/ext/sysvshm/shm_remove.stub', 'shm_remove_var' => 'stubs/ext/sysvshm/shm_remove_var.stub', 'shmop_close' => 'stubs/ext/shmop/shmop_close.stub', 'shmop_delete' => 'stubs/ext/shmop/shmop_delete.stub', 'shmop_open' => 'stubs/ext/shmop/shmop_open.stub', 'shmop_read' => 'stubs/ext/shmop/shmop_read.stub', 'shmop_size' => 'stubs/ext/shmop/shmop_size.stub', 'shmop_write' => 'stubs/ext/shmop/shmop_write.stub', 'show_source' => 'stubs/ext/standard/show_source.stub', 'shuffle' => 'stubs/ext/standard/shuffle.stub', 'similar_text' => 'stubs/ext/standard/similar_text.stub', 'simplexml_import_dom' => 'stubs/ext/simplexml/simplexml_import_dom.stub', 'simplexml_load_file' => 'stubs/ext/simplexml/simplexml_load_file.stub', 'simplexml_load_string' => 'stubs/ext/simplexml/simplexml_load_string.stub', 'sin' => 'stubs/ext/standard/sin.stub', 'sinh' => 'stubs/ext/standard/sinh.stub', 'sizeof' => 'stubs/ext/standard/sizeof.stub', 'sleep' => 'stubs/ext/standard/sleep.stub', 'snmp2_get' => 'stubs/ext/snmp/snmp2_get.stub', 'snmp2_getnext' => 'stubs/ext/snmp/snmp2_getnext.stub', 'snmp2_real_walk' => 'stubs/ext/snmp/snmp2_real_walk.stub', 'snmp2_set' => 'stubs/ext/snmp/snmp2_set.stub', 'snmp2_walk' => 'stubs/ext/snmp/snmp2_walk.stub', 'snmp3_get' => 'stubs/ext/snmp/snmp3_get.stub', 'snmp3_getnext' => 'stubs/ext/snmp/snmp3_getnext.stub', 'snmp3_real_walk' => 'stubs/ext/snmp/snmp3_real_walk.stub', 'snmp3_set' => 'stubs/ext/snmp/snmp3_set.stub', 'snmp3_walk' => 'stubs/ext/snmp/snmp3_walk.stub', 'snmp_get_quick_print' => 'stubs/ext/snmp/snmp_get_quick_print.stub', 'snmp_get_valueretrieval' => 'stubs/ext/snmp/snmp_get_valueretrieval.stub', 'snmp_read_mib' => 'stubs/ext/snmp/snmp_read_mib.stub', 'snmp_set_enum_print' => 'stubs/ext/snmp/snmp_set_enum_print.stub', 'snmp_set_oid_numeric_print' => 'stubs/ext/snmp/snmp_set_oid_numeric_print.stub', 'snmp_set_oid_output_format' => 'stubs/ext/snmp/snmp_set_oid_output_format.stub', 'snmp_set_quick_print' => 'stubs/ext/snmp/snmp_set_quick_print.stub', 'snmp_set_valueretrieval' => 'stubs/ext/snmp/snmp_set_valueretrieval.stub', 'snmpget' => 'stubs/ext/snmp/snmpget.stub', 'snmpgetnext' => 'stubs/ext/snmp/snmpgetnext.stub', 'snmprealwalk' => 'stubs/ext/snmp/snmprealwalk.stub', 'snmpset' => 'stubs/ext/snmp/snmpset.stub', 'snmpwalk' => 'stubs/ext/snmp/snmpwalk.stub', 'snmpwalkoid' => 'stubs/ext/snmp/snmpwalkoid.stub', 'socket_accept' => 'stubs/ext/sockets/socket_accept.stub', 'socket_addrinfo_bind' => 'stubs/ext/sockets/socket_addrinfo_bind.stub', 'socket_addrinfo_connect' => 'stubs/ext/sockets/socket_addrinfo_connect.stub', 'socket_addrinfo_explain' => 'stubs/ext/sockets/socket_addrinfo_explain.stub', 'socket_addrinfo_lookup' => 'stubs/ext/sockets/socket_addrinfo_lookup.stub', 'socket_bind' => 'stubs/ext/sockets/socket_bind.stub', 'socket_clear_error' => 'stubs/ext/sockets/socket_clear_error.stub', 'socket_close' => 'stubs/ext/sockets/socket_close.stub', 'socket_cmsg_space' => 'stubs/ext/sockets/socket_cmsg_space.stub', 'socket_connect' => 'stubs/ext/sockets/socket_connect.stub', 'socket_create' => 'stubs/ext/sockets/socket_create.stub', 'socket_create_listen' => 'stubs/ext/sockets/socket_create_listen.stub', 'socket_create_pair' => 'stubs/ext/sockets/socket_create_pair.stub', 'socket_export_stream' => 'stubs/ext/sockets/socket_export_stream.stub', 'socket_get_option' => 'stubs/ext/sockets/socket_get_option.stub', 'socket_get_status' => 'stubs/ext/standard/socket_get_status.stub', 'socket_getopt' => 'stubs/ext/sockets/socket_getopt.stub', 'socket_getpeername' => 'stubs/ext/sockets/socket_getpeername.stub', 'socket_getsockname' => 'stubs/ext/sockets/socket_getsockname.stub', 'socket_import_stream' => 'stubs/ext/sockets/socket_import_stream.stub', 'socket_last_error' => 'stubs/ext/sockets/socket_last_error.stub', 'socket_listen' => 'stubs/ext/sockets/socket_listen.stub', 'socket_read' => 'stubs/ext/sockets/socket_read.stub', 'socket_recv' => 'stubs/ext/sockets/socket_recv.stub', 'socket_recvfrom' => 'stubs/ext/sockets/socket_recvfrom.stub', 'socket_recvmsg' => 'stubs/ext/sockets/socket_recvmsg.stub', 'socket_select' => 'stubs/ext/sockets/socket_select.stub', 'socket_send' => 'stubs/ext/sockets/socket_send.stub', 'socket_sendmsg' => 'stubs/ext/sockets/socket_sendmsg.stub', 'socket_sendto' => 'stubs/ext/sockets/socket_sendto.stub', 'socket_set_block' => 'stubs/ext/sockets/socket_set_block.stub', 'socket_set_blocking' => 'stubs/ext/standard/socket_set_blocking.stub', 'socket_set_nonblock' => 'stubs/ext/sockets/socket_set_nonblock.stub', 'socket_set_option' => 'stubs/ext/sockets/socket_set_option.stub', 'socket_set_timeout' => 'stubs/ext/standard/socket_set_timeout.stub', 'socket_setopt' => 'stubs/ext/sockets/socket_setopt.stub', 'socket_shutdown' => 'stubs/ext/sockets/socket_shutdown.stub', 'socket_strerror' => 'stubs/ext/sockets/socket_strerror.stub', 'socket_write' => 'stubs/ext/sockets/socket_write.stub', 'socket_wsaprotocol_info_export' => 'stubs/ext/sockets/socket_wsaprotocol_info_export.stub', 'socket_wsaprotocol_info_import' => 'stubs/ext/sockets/socket_wsaprotocol_info_import.stub', 'socket_wsaprotocol_info_release' => 'stubs/ext/sockets/socket_wsaprotocol_info_release.stub', 'sodium_add' => 'stubs/ext/sodium/sodium_add.stub', 'sodium_base642bin' => 'stubs/ext/sodium/sodium_base642bin.stub', 'sodium_bin2base64' => 'stubs/ext/sodium/sodium_bin2base64.stub', 'sodium_bin2hex' => 'stubs/ext/sodium/sodium_bin2hex.stub', 'sodium_compare' => 'stubs/ext/sodium/sodium_compare.stub', 'sodium_crypto_aead_aes256gcm_decrypt' => 'stubs/ext/sodium/sodium_crypto_aead_aes256gcm_decrypt.stub', 'sodium_crypto_aead_aes256gcm_encrypt' => 'stubs/ext/sodium/sodium_crypto_aead_aes256gcm_encrypt.stub', 'sodium_crypto_aead_aes256gcm_is_available' => 'stubs/ext/sodium/sodium_crypto_aead_aes256gcm_is_available.stub', 'sodium_crypto_aead_aes256gcm_keygen' => 'stubs/ext/sodium/sodium_crypto_aead_aes256gcm_keygen.stub', 'sodium_crypto_aead_chacha20poly1305_decrypt' => 'stubs/ext/sodium/sodium_crypto_aead_chacha20poly1305_decrypt.stub', 'sodium_crypto_aead_chacha20poly1305_encrypt' => 'stubs/ext/sodium/sodium_crypto_aead_chacha20poly1305_encrypt.stub', 'sodium_crypto_aead_chacha20poly1305_ietf_decrypt' => 'stubs/ext/sodium/sodium_crypto_aead_chacha20poly1305_ietf_decrypt.stub', 'sodium_crypto_aead_chacha20poly1305_ietf_encrypt' => 'stubs/ext/sodium/sodium_crypto_aead_chacha20poly1305_ietf_encrypt.stub', 'sodium_crypto_aead_chacha20poly1305_ietf_keygen' => 'stubs/ext/sodium/sodium_crypto_aead_chacha20poly1305_ietf_keygen.stub', 'sodium_crypto_aead_chacha20poly1305_keygen' => 'stubs/ext/sodium/sodium_crypto_aead_chacha20poly1305_keygen.stub', 'sodium_crypto_aead_xchacha20poly1305_ietf_decrypt' => 'stubs/ext/sodium/sodium_crypto_aead_xchacha20poly1305_ietf_decrypt.stub', 'sodium_crypto_aead_xchacha20poly1305_ietf_encrypt' => 'stubs/ext/sodium/sodium_crypto_aead_xchacha20poly1305_ietf_encrypt.stub', 'sodium_crypto_aead_xchacha20poly1305_ietf_keygen' => 'stubs/ext/sodium/sodium_crypto_aead_xchacha20poly1305_ietf_keygen.stub', 'sodium_crypto_auth' => 'stubs/ext/sodium/sodium_crypto_auth.stub', 'sodium_crypto_auth_keygen' => 'stubs/ext/sodium/sodium_crypto_auth_keygen.stub', 'sodium_crypto_auth_verify' => 'stubs/ext/sodium/sodium_crypto_auth_verify.stub', 'sodium_crypto_box' => 'stubs/ext/sodium/sodium_crypto_box.stub', 'sodium_crypto_box_keypair' => 'stubs/ext/sodium/sodium_crypto_box_keypair.stub', 'sodium_crypto_box_keypair_from_secretkey_and_publickey' => 'stubs/ext/sodium/sodium_crypto_box_keypair_from_secretkey_and_publickey.stub', 'sodium_crypto_box_open' => 'stubs/ext/sodium/sodium_crypto_box_open.stub', 'sodium_crypto_box_publickey' => 'stubs/ext/sodium/sodium_crypto_box_publickey.stub', 'sodium_crypto_box_publickey_from_secretkey' => 'stubs/ext/sodium/sodium_crypto_box_publickey_from_secretkey.stub', 'sodium_crypto_box_seal' => 'stubs/ext/sodium/sodium_crypto_box_seal.stub', 'sodium_crypto_box_seal_open' => 'stubs/ext/sodium/sodium_crypto_box_seal_open.stub', 'sodium_crypto_box_secretkey' => 'stubs/ext/sodium/sodium_crypto_box_secretkey.stub', 'sodium_crypto_box_seed_keypair' => 'stubs/ext/sodium/sodium_crypto_box_seed_keypair.stub', 'sodium_crypto_generichash' => 'stubs/ext/sodium/sodium_crypto_generichash.stub', 'sodium_crypto_generichash_final' => 'stubs/ext/sodium/sodium_crypto_generichash_final.stub', 'sodium_crypto_generichash_init' => 'stubs/ext/sodium/sodium_crypto_generichash_init.stub', 'sodium_crypto_generichash_keygen' => 'stubs/ext/sodium/sodium_crypto_generichash_keygen.stub', 'sodium_crypto_generichash_update' => 'stubs/ext/sodium/sodium_crypto_generichash_update.stub', 'sodium_crypto_kdf_derive_from_key' => 'stubs/ext/sodium/sodium_crypto_kdf_derive_from_key.stub', 'sodium_crypto_kdf_keygen' => 'stubs/ext/sodium/sodium_crypto_kdf_keygen.stub', 'sodium_crypto_kx_client_session_keys' => 'stubs/ext/sodium/sodium_crypto_kx_client_session_keys.stub', 'sodium_crypto_kx_keypair' => 'stubs/ext/sodium/sodium_crypto_kx_keypair.stub', 'sodium_crypto_kx_publickey' => 'stubs/ext/sodium/sodium_crypto_kx_publickey.stub', 'sodium_crypto_kx_secretkey' => 'stubs/ext/sodium/sodium_crypto_kx_secretkey.stub', 'sodium_crypto_kx_seed_keypair' => 'stubs/ext/sodium/sodium_crypto_kx_seed_keypair.stub', 'sodium_crypto_kx_server_session_keys' => 'stubs/ext/sodium/sodium_crypto_kx_server_session_keys.stub', 'sodium_crypto_pwhash' => 'stubs/ext/sodium/sodium_crypto_pwhash.stub', 'sodium_crypto_pwhash_scryptsalsa208sha256' => 'stubs/ext/sodium/sodium_crypto_pwhash_scryptsalsa208sha256.stub', 'sodium_crypto_pwhash_scryptsalsa208sha256_str' => 'stubs/ext/sodium/sodium_crypto_pwhash_scryptsalsa208sha256_str.stub', 'sodium_crypto_pwhash_scryptsalsa208sha256_str_verify' => 'stubs/ext/sodium/sodium_crypto_pwhash_scryptsalsa208sha256_str_verify.stub', 'sodium_crypto_pwhash_str' => 'stubs/ext/sodium/sodium_crypto_pwhash_str.stub', 'sodium_crypto_pwhash_str_needs_rehash' => 'stubs/ext/sodium/sodium_crypto_pwhash_str_needs_rehash.stub', 'sodium_crypto_pwhash_str_verify' => 'stubs/ext/sodium/sodium_crypto_pwhash_str_verify.stub', 'sodium_crypto_scalarmult' => 'stubs/ext/sodium/sodium_crypto_scalarmult.stub', 'sodium_crypto_scalarmult_base' => 'stubs/ext/sodium/sodium_crypto_scalarmult_base.stub', 'sodium_crypto_secretbox' => 'stubs/ext/sodium/sodium_crypto_secretbox.stub', 'sodium_crypto_secretbox_keygen' => 'stubs/ext/sodium/sodium_crypto_secretbox_keygen.stub', 'sodium_crypto_secretbox_open' => 'stubs/ext/sodium/sodium_crypto_secretbox_open.stub', 'sodium_crypto_secretstream_xchacha20poly1305_init_pull' => 'stubs/ext/sodium/sodium_crypto_secretstream_xchacha20poly1305_init_pull.stub', 'sodium_crypto_secretstream_xchacha20poly1305_init_push' => 'stubs/ext/sodium/sodium_crypto_secretstream_xchacha20poly1305_init_push.stub', 'sodium_crypto_secretstream_xchacha20poly1305_keygen' => 'stubs/ext/sodium/sodium_crypto_secretstream_xchacha20poly1305_keygen.stub', 'sodium_crypto_secretstream_xchacha20poly1305_pull' => 'stubs/ext/sodium/sodium_crypto_secretstream_xchacha20poly1305_pull.stub', 'sodium_crypto_secretstream_xchacha20poly1305_push' => 'stubs/ext/sodium/sodium_crypto_secretstream_xchacha20poly1305_push.stub', 'sodium_crypto_secretstream_xchacha20poly1305_rekey' => 'stubs/ext/sodium/sodium_crypto_secretstream_xchacha20poly1305_rekey.stub', 'sodium_crypto_shorthash' => 'stubs/ext/sodium/sodium_crypto_shorthash.stub', 'sodium_crypto_shorthash_keygen' => 'stubs/ext/sodium/sodium_crypto_shorthash_keygen.stub', 'sodium_crypto_sign' => 'stubs/ext/sodium/sodium_crypto_sign.stub', 'sodium_crypto_sign_detached' => 'stubs/ext/sodium/sodium_crypto_sign_detached.stub', 'sodium_crypto_sign_ed25519_pk_to_curve25519' => 'stubs/ext/sodium/sodium_crypto_sign_ed25519_pk_to_curve25519.stub', 'sodium_crypto_sign_ed25519_sk_to_curve25519' => 'stubs/ext/sodium/sodium_crypto_sign_ed25519_sk_to_curve25519.stub', 'sodium_crypto_sign_keypair' => 'stubs/ext/sodium/sodium_crypto_sign_keypair.stub', 'sodium_crypto_sign_keypair_from_secretkey_and_publickey' => 'stubs/ext/sodium/sodium_crypto_sign_keypair_from_secretkey_and_publickey.stub', 'sodium_crypto_sign_open' => 'stubs/ext/sodium/sodium_crypto_sign_open.stub', 'sodium_crypto_sign_publickey' => 'stubs/ext/sodium/sodium_crypto_sign_publickey.stub', 'sodium_crypto_sign_publickey_from_secretkey' => 'stubs/ext/sodium/sodium_crypto_sign_publickey_from_secretkey.stub', 'sodium_crypto_sign_secretkey' => 'stubs/ext/sodium/sodium_crypto_sign_secretkey.stub', 'sodium_crypto_sign_seed_keypair' => 'stubs/ext/sodium/sodium_crypto_sign_seed_keypair.stub', 'sodium_crypto_sign_verify_detached' => 'stubs/ext/sodium/sodium_crypto_sign_verify_detached.stub', 'sodium_crypto_stream' => 'stubs/ext/sodium/sodium_crypto_stream.stub', 'sodium_crypto_stream_keygen' => 'stubs/ext/sodium/sodium_crypto_stream_keygen.stub', 'sodium_crypto_stream_xor' => 'stubs/ext/sodium/sodium_crypto_stream_xor.stub', 'sodium_hex2bin' => 'stubs/ext/sodium/sodium_hex2bin.stub', 'sodium_increment' => 'stubs/ext/sodium/sodium_increment.stub', 'sodium_memcmp' => 'stubs/ext/sodium/sodium_memcmp.stub', 'sodium_memzero' => 'stubs/ext/sodium/sodium_memzero.stub', 'sodium_pad' => 'stubs/ext/sodium/sodium_pad.stub', 'sodium_unpad' => 'stubs/ext/sodium/sodium_unpad.stub', 'sort' => 'stubs/ext/standard/sort.stub', 'soundex' => 'stubs/ext/standard/soundex.stub', 'spl_autoload' => 'stubs/ext/spl/spl_autoload.stub', 'spl_autoload_call' => 'stubs/ext/spl/spl_autoload_call.stub', 'spl_autoload_extensions' => 'stubs/ext/spl/spl_autoload_extensions.stub', 'spl_autoload_functions' => 'stubs/ext/spl/spl_autoload_functions.stub', 'spl_autoload_register' => 'stubs/ext/spl/spl_autoload_register.stub', 'spl_autoload_unregister' => 'stubs/ext/spl/spl_autoload_unregister.stub', 'spl_classes' => 'stubs/ext/spl/spl_classes.stub', 'spl_object_hash' => 'stubs/ext/spl/spl_object_hash.stub', 'spl_object_id' => 'stubs/ext/spl/spl_object_id.stub', 'sprintf' => 'stubs/ext/standard/sprintf.stub', 'sqrt' => 'stubs/ext/standard/sqrt.stub', 'srand' => 'stubs/ext/standard/srand.stub', 'sscanf' => 'stubs/ext/standard/sscanf.stub', 'stat' => 'stubs/ext/standard/stat.stub', 'str_contains' => 'stubs/ext/standard/str_contains.stub', 'str_ends_with' => 'stubs/ext/standard/str_ends_with.stub', 'str_getcsv' => 'stubs/ext/standard/str_getcsv.stub', 'str_ireplace' => 'stubs/ext/standard/str_ireplace.stub', 'str_pad' => 'stubs/ext/standard/str_pad.stub', 'str_repeat' => 'stubs/ext/standard/str_repeat.stub', 'str_replace' => 'stubs/ext/standard/str_replace.stub', 'str_rot13' => 'stubs/ext/standard/str_rot13.stub', 'str_shuffle' => 'stubs/ext/standard/str_shuffle.stub', 'str_split' => 'stubs/ext/standard/str_split.stub', 'str_starts_with' => 'stubs/ext/standard/str_starts_with.stub', 'str_word_count' => 'stubs/ext/standard/str_word_count.stub', 'strcasecmp' => 'stubs/Zend/strcasecmp.stub', 'strchr' => 'stubs/ext/standard/strchr.stub', 'strcmp' => 'stubs/Zend/strcmp.stub', 'strcoll' => 'stubs/ext/standard/strcoll.stub', 'strcspn' => 'stubs/ext/standard/strcspn.stub', 'stream_bucket_append' => 'stubs/ext/standard/stream_bucket_append.stub', 'stream_bucket_make_writeable' => 'stubs/ext/standard/stream_bucket_make_writeable.stub', 'stream_bucket_new' => 'stubs/ext/standard/stream_bucket_new.stub', 'stream_bucket_prepend' => 'stubs/ext/standard/stream_bucket_prepend.stub', 'stream_context_create' => 'stubs/ext/standard/stream_context_create.stub', 'stream_context_get_default' => 'stubs/ext/standard/stream_context_get_default.stub', 'stream_context_get_options' => 'stubs/ext/standard/stream_context_get_options.stub', 'stream_context_get_params' => 'stubs/ext/standard/stream_context_get_params.stub', 'stream_context_set_default' => 'stubs/ext/standard/stream_context_set_default.stub', 'stream_context_set_option' => 'stubs/ext/standard/stream_context_set_option.stub', 'stream_context_set_params' => 'stubs/ext/standard/stream_context_set_params.stub', 'stream_copy_to_stream' => 'stubs/ext/standard/stream_copy_to_stream.stub', 'stream_filter_append' => 'stubs/ext/standard/stream_filter_append.stub', 'stream_filter_prepend' => 'stubs/ext/standard/stream_filter_prepend.stub', 'stream_filter_register' => 'stubs/ext/standard/stream_filter_register.stub', 'stream_filter_remove' => 'stubs/ext/standard/stream_filter_remove.stub', 'stream_get_contents' => 'stubs/ext/standard/stream_get_contents.stub', 'stream_get_filters' => 'stubs/ext/standard/stream_get_filters.stub', 'stream_get_line' => 'stubs/ext/standard/stream_get_line.stub', 'stream_get_meta_data' => 'stubs/ext/standard/stream_get_meta_data.stub', 'stream_get_transports' => 'stubs/ext/standard/stream_get_transports.stub', 'stream_get_wrappers' => 'stubs/ext/standard/stream_get_wrappers.stub', 'stream_is_local' => 'stubs/ext/standard/stream_is_local.stub', 'stream_isatty' => 'stubs/ext/standard/stream_isatty.stub', 'stream_register_wrapper' => 'stubs/ext/standard/stream_register_wrapper.stub', 'stream_resolve_include_path' => 'stubs/ext/standard/stream_resolve_include_path.stub', 'stream_select' => 'stubs/ext/standard/stream_select.stub', 'stream_set_blocking' => 'stubs/ext/standard/stream_set_blocking.stub', 'stream_set_chunk_size' => 'stubs/ext/standard/stream_set_chunk_size.stub', 'stream_set_read_buffer' => 'stubs/ext/standard/stream_set_read_buffer.stub', 'stream_set_timeout' => 'stubs/ext/standard/stream_set_timeout.stub', 'stream_set_write_buffer' => 'stubs/ext/standard/stream_set_write_buffer.stub', 'stream_socket_accept' => 'stubs/ext/standard/stream_socket_accept.stub', 'stream_socket_client' => 'stubs/ext/standard/stream_socket_client.stub', 'stream_socket_enable_crypto' => 'stubs/ext/standard/stream_socket_enable_crypto.stub', 'stream_socket_get_name' => 'stubs/ext/standard/stream_socket_get_name.stub', 'stream_socket_pair' => 'stubs/ext/standard/stream_socket_pair.stub', 'stream_socket_recvfrom' => 'stubs/ext/standard/stream_socket_recvfrom.stub', 'stream_socket_sendto' => 'stubs/ext/standard/stream_socket_sendto.stub', 'stream_socket_server' => 'stubs/ext/standard/stream_socket_server.stub', 'stream_socket_shutdown' => 'stubs/ext/standard/stream_socket_shutdown.stub', 'stream_supports_lock' => 'stubs/ext/standard/stream_supports_lock.stub', 'stream_wrapper_register' => 'stubs/ext/standard/stream_wrapper_register.stub', 'stream_wrapper_restore' => 'stubs/ext/standard/stream_wrapper_restore.stub', 'stream_wrapper_unregister' => 'stubs/ext/standard/stream_wrapper_unregister.stub', 'strftime' => 'stubs/ext/date/strftime.stub', 'strip_tags' => 'stubs/ext/standard/strip_tags.stub', 'stripcslashes' => 'stubs/ext/standard/stripcslashes.stub', 'stripos' => 'stubs/ext/standard/stripos.stub', 'stripslashes' => 'stubs/ext/standard/stripslashes.stub', 'stristr' => 'stubs/ext/standard/stristr.stub', 'strlen' => 'stubs/Zend/strlen.stub', 'strnatcasecmp' => 'stubs/ext/standard/strnatcasecmp.stub', 'strnatcmp' => 'stubs/ext/standard/strnatcmp.stub', 'strncasecmp' => 'stubs/Zend/strncasecmp.stub', 'strncmp' => 'stubs/Zend/strncmp.stub', 'strpbrk' => 'stubs/ext/standard/strpbrk.stub', 'strpos' => 'stubs/ext/standard/strpos.stub', 'strptime' => 'stubs/ext/standard/strptime.stub', 'strrchr' => 'stubs/ext/standard/strrchr.stub', 'strrev' => 'stubs/ext/standard/strrev.stub', 'strripos' => 'stubs/ext/standard/strripos.stub', 'strrpos' => 'stubs/ext/standard/strrpos.stub', 'strspn' => 'stubs/ext/standard/strspn.stub', 'strstr' => 'stubs/ext/standard/strstr.stub', 'strtok' => 'stubs/ext/standard/strtok.stub', 'strtolower' => 'stubs/ext/standard/strtolower.stub', 'strtotime' => 'stubs/ext/date/strtotime.stub', 'strtoupper' => 'stubs/ext/standard/strtoupper.stub', 'strtr' => 'stubs/ext/standard/strtr.stub', 'strval' => 'stubs/ext/standard/strval.stub', 'substr' => 'stubs/ext/standard/substr.stub', 'substr_compare' => 'stubs/ext/standard/substr_compare.stub', 'substr_count' => 'stubs/ext/standard/substr_count.stub', 'substr_replace' => 'stubs/ext/standard/substr_replace.stub', 'symlink' => 'stubs/ext/standard/symlink.stub', 'sys_get_temp_dir' => 'stubs/ext/standard/sys_get_temp_dir.stub', 'sys_getloadavg' => 'stubs/ext/standard/sys_getloadavg.stub', 'syslog' => 'stubs/ext/standard/syslog.stub', 'system' => 'stubs/ext/standard/system.stub', 'tan' => 'stubs/ext/standard/tan.stub', 'tanh' => 'stubs/ext/standard/tanh.stub', 'tempnam' => 'stubs/ext/standard/tempnam.stub', 'textdomain' => 'stubs/ext/gettext/textdomain.stub', 'tidy_access_count' => 'stubs/ext/tidy/tidy_access_count.stub', 'tidy_clean_repair' => 'stubs/ext/tidy/tidy_clean_repair.stub', 'tidy_config_count' => 'stubs/ext/tidy/tidy_config_count.stub', 'tidy_diagnose' => 'stubs/ext/tidy/tidy_diagnose.stub', 'tidy_error_count' => 'stubs/ext/tidy/tidy_error_count.stub', 'tidy_get_body' => 'stubs/ext/tidy/tidy_get_body.stub', 'tidy_get_config' => 'stubs/ext/tidy/tidy_get_config.stub', 'tidy_get_error_buffer' => 'stubs/ext/tidy/tidy_get_error_buffer.stub', 'tidy_get_head' => 'stubs/ext/tidy/tidy_get_head.stub', 'tidy_get_html' => 'stubs/ext/tidy/tidy_get_html.stub', 'tidy_get_html_ver' => 'stubs/ext/tidy/tidy_get_html_ver.stub', 'tidy_get_opt_doc' => 'stubs/ext/tidy/tidy_get_opt_doc.stub', 'tidy_get_output' => 'stubs/ext/tidy/tidy_get_output.stub', 'tidy_get_release' => 'stubs/ext/tidy/tidy_get_release.stub', 'tidy_get_root' => 'stubs/ext/tidy/tidy_get_root.stub', 'tidy_get_status' => 'stubs/ext/tidy/tidy_get_status.stub', 'tidy_getopt' => 'stubs/ext/tidy/tidy_getopt.stub', 'tidy_is_xhtml' => 'stubs/ext/tidy/tidy_is_xhtml.stub', 'tidy_is_xml' => 'stubs/ext/tidy/tidy_is_xml.stub', 'tidy_parse_file' => 'stubs/ext/tidy/tidy_parse_file.stub', 'tidy_parse_string' => 'stubs/ext/tidy/tidy_parse_string.stub', 'tidy_repair_file' => 'stubs/ext/tidy/tidy_repair_file.stub', 'tidy_repair_string' => 'stubs/ext/tidy/tidy_repair_string.stub', 'tidy_warning_count' => 'stubs/ext/tidy/tidy_warning_count.stub', 'time' => 'stubs/ext/date/time.stub', 'time_nanosleep' => 'stubs/ext/standard/time_nanosleep.stub', 'time_sleep_until' => 'stubs/ext/standard/time_sleep_until.stub', 'timezone_abbreviations_list' => 'stubs/ext/date/timezone_abbreviations_list.stub', 'timezone_identifiers_list' => 'stubs/ext/date/timezone_identifiers_list.stub', 'timezone_location_get' => 'stubs/ext/date/timezone_location_get.stub', 'timezone_name_from_abbr' => 'stubs/ext/date/timezone_name_from_abbr.stub', 'timezone_name_get' => 'stubs/ext/date/timezone_name_get.stub', 'timezone_offset_get' => 'stubs/ext/date/timezone_offset_get.stub', 'timezone_open' => 'stubs/ext/date/timezone_open.stub', 'timezone_transitions_get' => 'stubs/ext/date/timezone_transitions_get.stub', 'timezone_version_get' => 'stubs/ext/date/timezone_version_get.stub', 'tmpfile' => 'stubs/ext/standard/tmpfile.stub', 'token_get_all' => 'stubs/ext/tokenizer/token_get_all.stub', 'token_name' => 'stubs/ext/tokenizer/token_name.stub', 'touch' => 'stubs/ext/standard/touch.stub', 'trait_exists' => 'stubs/Zend/trait_exists.stub', 'transliterator_create' => 'stubs/ext/intl/transliterator_create.stub', 'transliterator_create_from_rules' => 'stubs/ext/intl/transliterator_create_from_rules.stub', 'transliterator_create_inverse' => 'stubs/ext/intl/transliterator_create_inverse.stub', 'transliterator_get_error_code' => 'stubs/ext/intl/transliterator_get_error_code.stub', 'transliterator_get_error_message' => 'stubs/ext/intl/transliterator_get_error_message.stub', 'transliterator_list_ids' => 'stubs/ext/intl/transliterator_list_ids.stub', 'transliterator_transliterate' => 'stubs/ext/intl/transliterator_transliterate.stub', 'trigger_error' => 'stubs/Zend/trigger_error.stub', 'trim' => 'stubs/ext/standard/trim.stub', 'uasort' => 'stubs/ext/standard/uasort.stub', 'ucfirst' => 'stubs/ext/standard/ucfirst.stub', 'ucwords' => 'stubs/ext/standard/ucwords.stub', 'uksort' => 'stubs/ext/standard/uksort.stub', 'umask' => 'stubs/ext/standard/umask.stub', 'uniqid' => 'stubs/ext/standard/uniqid.stub', 'unixtojd' => 'stubs/ext/calendar/unixtojd.stub', 'unlink' => 'stubs/ext/standard/unlink.stub', 'unpack' => 'stubs/ext/standard/unpack.stub', 'unregister_tick_function' => 'stubs/ext/standard/unregister_tick_function.stub', 'unserialize' => 'stubs/ext/standard/unserialize.stub', 'urldecode' => 'stubs/ext/standard/urldecode.stub', 'urlencode' => 'stubs/ext/standard/urlencode.stub', 'use_soap_error_handler' => 'stubs/ext/soap/use_soap_error_handler.stub', 'user_error' => 'stubs/Zend/user_error.stub', 'usleep' => 'stubs/ext/standard/usleep.stub', 'usort' => 'stubs/ext/standard/usort.stub', 'utf8_decode' => 'stubs/ext/standard/utf8_decode.stub', 'utf8_encode' => 'stubs/ext/standard/utf8_encode.stub', 'var_dump' => 'stubs/ext/standard/var_dump.stub', 'var_export' => 'stubs/ext/standard/var_export.stub', 'variant_abs' => 'stubs/ext/com_dotnet/variant_abs.stub', 'variant_add' => 'stubs/ext/com_dotnet/variant_add.stub', 'variant_and' => 'stubs/ext/com_dotnet/variant_and.stub', 'variant_cast' => 'stubs/ext/com_dotnet/variant_cast.stub', 'variant_cat' => 'stubs/ext/com_dotnet/variant_cat.stub', 'variant_cmp' => 'stubs/ext/com_dotnet/variant_cmp.stub', 'variant_date_from_timestamp' => 'stubs/ext/com_dotnet/variant_date_from_timestamp.stub', 'variant_date_to_timestamp' => 'stubs/ext/com_dotnet/variant_date_to_timestamp.stub', 'variant_div' => 'stubs/ext/com_dotnet/variant_div.stub', 'variant_eqv' => 'stubs/ext/com_dotnet/variant_eqv.stub', 'variant_fix' => 'stubs/ext/com_dotnet/variant_fix.stub', 'variant_get_type' => 'stubs/ext/com_dotnet/variant_get_type.stub', 'variant_idiv' => 'stubs/ext/com_dotnet/variant_idiv.stub', 'variant_imp' => 'stubs/ext/com_dotnet/variant_imp.stub', 'variant_int' => 'stubs/ext/com_dotnet/variant_int.stub', 'variant_mod' => 'stubs/ext/com_dotnet/variant_mod.stub', 'variant_mul' => 'stubs/ext/com_dotnet/variant_mul.stub', 'variant_neg' => 'stubs/ext/com_dotnet/variant_neg.stub', 'variant_not' => 'stubs/ext/com_dotnet/variant_not.stub', 'variant_or' => 'stubs/ext/com_dotnet/variant_or.stub', 'variant_pow' => 'stubs/ext/com_dotnet/variant_pow.stub', 'variant_round' => 'stubs/ext/com_dotnet/variant_round.stub', 'variant_set' => 'stubs/ext/com_dotnet/variant_set.stub', 'variant_set_type' => 'stubs/ext/com_dotnet/variant_set_type.stub', 'variant_sub' => 'stubs/ext/com_dotnet/variant_sub.stub', 'variant_xor' => 'stubs/ext/com_dotnet/variant_xor.stub', 'version_compare' => 'stubs/ext/standard/version_compare.stub', 'vfprintf' => 'stubs/ext/standard/vfprintf.stub', 'virtual' => 'stubs/sapi/apache2handler/virtual.stub', 'vprintf' => 'stubs/ext/standard/vprintf.stub', 'vsprintf' => 'stubs/ext/standard/vsprintf.stub', 'wordwrap' => 'stubs/ext/standard/wordwrap.stub', 'xml_error_string' => 'stubs/ext/xml/xml_error_string.stub', 'xml_get_current_byte_index' => 'stubs/ext/xml/xml_get_current_byte_index.stub', 'xml_get_current_column_number' => 'stubs/ext/xml/xml_get_current_column_number.stub', 'xml_get_current_line_number' => 'stubs/ext/xml/xml_get_current_line_number.stub', 'xml_get_error_code' => 'stubs/ext/xml/xml_get_error_code.stub', 'xml_parse' => 'stubs/ext/xml/xml_parse.stub', 'xml_parse_into_struct' => 'stubs/ext/xml/xml_parse_into_struct.stub', 'xml_parser_create' => 'stubs/ext/xml/xml_parser_create.stub', 'xml_parser_create_ns' => 'stubs/ext/xml/xml_parser_create_ns.stub', 'xml_parser_free' => 'stubs/ext/xml/xml_parser_free.stub', 'xml_parser_get_option' => 'stubs/ext/xml/xml_parser_get_option.stub', 'xml_parser_set_option' => 'stubs/ext/xml/xml_parser_set_option.stub', 'xml_set_character_data_handler' => 'stubs/ext/xml/xml_set_character_data_handler.stub', 'xml_set_default_handler' => 'stubs/ext/xml/xml_set_default_handler.stub', 'xml_set_element_handler' => 'stubs/ext/xml/xml_set_element_handler.stub', 'xml_set_end_namespace_decl_handler' => 'stubs/ext/xml/xml_set_end_namespace_decl_handler.stub', 'xml_set_external_entity_ref_handler' => 'stubs/ext/xml/xml_set_external_entity_ref_handler.stub', 'xml_set_notation_decl_handler' => 'stubs/ext/xml/xml_set_notation_decl_handler.stub', 'xml_set_object' => 'stubs/ext/xml/xml_set_object.stub', 'xml_set_processing_instruction_handler' => 'stubs/ext/xml/xml_set_processing_instruction_handler.stub', 'xml_set_start_namespace_decl_handler' => 'stubs/ext/xml/xml_set_start_namespace_decl_handler.stub', 'xml_set_unparsed_entity_decl_handler' => 'stubs/ext/xml/xml_set_unparsed_entity_decl_handler.stub', 'xmlwriter_end_attribute' => 'stubs/ext/xmlwriter/xmlwriter_end_attribute.stub', 'xmlwriter_end_cdata' => 'stubs/ext/xmlwriter/xmlwriter_end_cdata.stub', 'xmlwriter_end_comment' => 'stubs/ext/xmlwriter/xmlwriter_end_comment.stub', 'xmlwriter_end_document' => 'stubs/ext/xmlwriter/xmlwriter_end_document.stub', 'xmlwriter_end_dtd' => 'stubs/ext/xmlwriter/xmlwriter_end_dtd.stub', 'xmlwriter_end_dtd_attlist' => 'stubs/ext/xmlwriter/xmlwriter_end_dtd_attlist.stub', 'xmlwriter_end_dtd_element' => 'stubs/ext/xmlwriter/xmlwriter_end_dtd_element.stub', 'xmlwriter_end_dtd_entity' => 'stubs/ext/xmlwriter/xmlwriter_end_dtd_entity.stub', 'xmlwriter_end_element' => 'stubs/ext/xmlwriter/xmlwriter_end_element.stub', 'xmlwriter_end_pi' => 'stubs/ext/xmlwriter/xmlwriter_end_pi.stub', 'xmlwriter_flush' => 'stubs/ext/xmlwriter/xmlwriter_flush.stub', 'xmlwriter_full_end_element' => 'stubs/ext/xmlwriter/xmlwriter_full_end_element.stub', 'xmlwriter_open_memory' => 'stubs/ext/xmlwriter/xmlwriter_open_memory.stub', 'xmlwriter_open_uri' => 'stubs/ext/xmlwriter/xmlwriter_open_uri.stub', 'xmlwriter_output_memory' => 'stubs/ext/xmlwriter/xmlwriter_output_memory.stub', 'xmlwriter_set_indent' => 'stubs/ext/xmlwriter/xmlwriter_set_indent.stub', 'xmlwriter_set_indent_string' => 'stubs/ext/xmlwriter/xmlwriter_set_indent_string.stub', 'xmlwriter_start_attribute' => 'stubs/ext/xmlwriter/xmlwriter_start_attribute.stub', 'xmlwriter_start_attribute_ns' => 'stubs/ext/xmlwriter/xmlwriter_start_attribute_ns.stub', 'xmlwriter_start_cdata' => 'stubs/ext/xmlwriter/xmlwriter_start_cdata.stub', 'xmlwriter_start_comment' => 'stubs/ext/xmlwriter/xmlwriter_start_comment.stub', 'xmlwriter_start_document' => 'stubs/ext/xmlwriter/xmlwriter_start_document.stub', 'xmlwriter_start_dtd' => 'stubs/ext/xmlwriter/xmlwriter_start_dtd.stub', 'xmlwriter_start_dtd_attlist' => 'stubs/ext/xmlwriter/xmlwriter_start_dtd_attlist.stub', 'xmlwriter_start_dtd_element' => 'stubs/ext/xmlwriter/xmlwriter_start_dtd_element.stub', 'xmlwriter_start_dtd_entity' => 'stubs/ext/xmlwriter/xmlwriter_start_dtd_entity.stub', 'xmlwriter_start_element' => 'stubs/ext/xmlwriter/xmlwriter_start_element.stub', 'xmlwriter_start_element_ns' => 'stubs/ext/xmlwriter/xmlwriter_start_element_ns.stub', 'xmlwriter_start_pi' => 'stubs/ext/xmlwriter/xmlwriter_start_pi.stub', 'xmlwriter_text' => 'stubs/ext/xmlwriter/xmlwriter_text.stub', 'xmlwriter_write_attribute' => 'stubs/ext/xmlwriter/xmlwriter_write_attribute.stub', 'xmlwriter_write_attribute_ns' => 'stubs/ext/xmlwriter/xmlwriter_write_attribute_ns.stub', 'xmlwriter_write_cdata' => 'stubs/ext/xmlwriter/xmlwriter_write_cdata.stub', 'xmlwriter_write_comment' => 'stubs/ext/xmlwriter/xmlwriter_write_comment.stub', 'xmlwriter_write_dtd' => 'stubs/ext/xmlwriter/xmlwriter_write_dtd.stub', 'xmlwriter_write_dtd_attlist' => 'stubs/ext/xmlwriter/xmlwriter_write_dtd_attlist.stub', 'xmlwriter_write_dtd_element' => 'stubs/ext/xmlwriter/xmlwriter_write_dtd_element.stub', 'xmlwriter_write_dtd_entity' => 'stubs/ext/xmlwriter/xmlwriter_write_dtd_entity.stub', 'xmlwriter_write_element' => 'stubs/ext/xmlwriter/xmlwriter_write_element.stub', 'xmlwriter_write_element_ns' => 'stubs/ext/xmlwriter/xmlwriter_write_element_ns.stub', 'xmlwriter_write_pi' => 'stubs/ext/xmlwriter/xmlwriter_write_pi.stub', 'xmlwriter_write_raw' => 'stubs/ext/xmlwriter/xmlwriter_write_raw.stub', 'zend_thread_id' => 'stubs/Zend/zend_thread_id.stub', 'zend_version' => 'stubs/Zend/zend_version.stub', 'zip_close' => 'stubs/ext/zip/zip_close.stub', 'zip_entry_close' => 'stubs/ext/zip/zip_entry_close.stub', 'zip_entry_compressedsize' => 'stubs/ext/zip/zip_entry_compressedsize.stub', 'zip_entry_compressionmethod' => 'stubs/ext/zip/zip_entry_compressionmethod.stub', 'zip_entry_filesize' => 'stubs/ext/zip/zip_entry_filesize.stub', 'zip_entry_name' => 'stubs/ext/zip/zip_entry_name.stub', 'zip_entry_open' => 'stubs/ext/zip/zip_entry_open.stub', 'zip_entry_read' => 'stubs/ext/zip/zip_entry_read.stub', 'zip_open' => 'stubs/ext/zip/zip_open.stub', 'zip_read' => 'stubs/ext/zip/zip_read.stub', 'zlib_decode' => 'stubs/ext/zlib/zlib_decode.stub', 'zlib_encode' => 'stubs/ext/zlib/zlib_encode.stub', 'zlib_get_coding_type' => 'stubs/ext/zlib/zlib_get_coding_type.stub']; if ($phpVersionId >= 80100) { $classes = \array_merge($classes, ['__php_incomplete_class' => 'stubs/ext/standard/__PHP_Incomplete_Class.stub', 'assertionerror' => 'stubs/ext/standard/AssertionError.stub', 'backedenum' => 'stubs/Zend/BackedEnum.stub', 'badfunctioncallexception' => 'stubs/ext/spl/BadFunctionCallException.stub', 'badmethodcallexception' => 'stubs/ext/spl/BadMethodCallException.stub', 'com_safearray_proxy' => 'stubs/ext/com_dotnet/com_safearray_proxy.stub', 'curlstringfile' => 'stubs/ext/curl/CURLStringFile.stub', 'domainexception' => 'stubs/ext/spl/DomainException.stub', 'fiber' => 'stubs/Zend/Fiber.stub', 'fibererror' => 'stubs/Zend/FiberError.stub', 'ftp\\connection' => 'stubs/ext/ftp/FTP/Connection.stub', 'gdfont' => 'stubs/ext/gd/GdFont.stub', 'imap\\connection' => 'stubs/ext/imap/IMAP/Connection.stub', 'intldatepatterngenerator' => 'stubs/ext/intl/dateformat/IntlDatePatternGenerator.stub', 'invalidargumentexception' => 'stubs/ext/spl/InvalidArgumentException.stub', 'ldap\\connection' => 'stubs/ext/ldap/LDAP/Connection.stub', 'ldap\\result' => 'stubs/ext/ldap/LDAP/Result.stub', 'ldap\\resultentry' => 'stubs/ext/ldap/LDAP/ResultEntry.stub', 'lengthexception' => 'stubs/ext/spl/LengthException.stub', 'logicexception' => 'stubs/ext/spl/LogicException.stub', 'outofboundsexception' => 'stubs/ext/spl/OutOfBoundsException.stub', 'outofrangeexception' => 'stubs/ext/spl/OutOfRangeException.stub', 'overflowexception' => 'stubs/ext/spl/OverflowException.stub', 'pgsql\\connection' => 'stubs/ext/pgsql/PgSql/Connection.stub', 'pgsql\\lob' => 'stubs/ext/pgsql/PgSql/Lob.stub', 'pgsql\\result' => 'stubs/ext/pgsql/PgSql/Result.stub', 'pspell\\config' => 'stubs/ext/pspell/PSpell/Config.stub', 'pspell\\dictionary' => 'stubs/ext/pspell/PSpell/Dictionary.stub', 'rangeexception' => 'stubs/ext/spl/RangeException.stub', 'reflectionenum' => 'stubs/ext/reflection/ReflectionEnum.stub', 'reflectionenumbackedcase' => 'stubs/ext/reflection/ReflectionEnumBackedCase.stub', 'reflectionenumunitcase' => 'stubs/ext/reflection/ReflectionEnumUnitCase.stub', 'reflectionfiber' => 'stubs/ext/reflection/ReflectionFiber.stub', 'reflectionintersectiontype' => 'stubs/ext/reflection/ReflectionIntersectionType.stub', 'returntypewillchange' => 'stubs/Zend/ReturnTypeWillChange.stub', 'runtimeexception' => 'stubs/ext/spl/RuntimeException.stub', 'stdclass' => 'stubs/Zend/stdClass.stub', 'underflowexception' => 'stubs/ext/spl/UnderflowException.stub', 'unexpectedvalueexception' => 'stubs/ext/spl/UnexpectedValueException.stub', 'unitenum' => 'stubs/Zend/UnitEnum.stub']); $functions = \array_merge($functions, ['array_is_list' => 'stubs/ext/standard/array_is_list.stub', 'enum_exists' => 'stubs/Zend/enum_exists.stub', 'fdatasync' => 'stubs/ext/standard/fdatasync.stub', 'fsync' => 'stubs/ext/standard/fsync.stub', 'imageavif' => 'stubs/ext/gd/imageavif.stub', 'imagecreatefromavif' => 'stubs/ext/gd/imagecreatefromavif.stub', 'mysqli_fetch_column' => 'stubs/ext/mysqli/mysqli_fetch_column.stub', 'pcntl_rfork' => 'stubs/ext/pcntl/pcntl_rfork.stub', 'sodium_crypto_core_ristretto255_add' => 'stubs/ext/sodium/sodium_crypto_core_ristretto255_add.stub', 'sodium_crypto_core_ristretto255_from_hash' => 'stubs/ext/sodium/sodium_crypto_core_ristretto255_from_hash.stub', 'sodium_crypto_core_ristretto255_is_valid_point' => 'stubs/ext/sodium/sodium_crypto_core_ristretto255_is_valid_point.stub', 'sodium_crypto_core_ristretto255_random' => 'stubs/ext/sodium/sodium_crypto_core_ristretto255_random.stub', 'sodium_crypto_core_ristretto255_scalar_add' => 'stubs/ext/sodium/sodium_crypto_core_ristretto255_scalar_add.stub', 'sodium_crypto_core_ristretto255_scalar_complement' => 'stubs/ext/sodium/sodium_crypto_core_ristretto255_scalar_complement.stub', 'sodium_crypto_core_ristretto255_scalar_invert' => 'stubs/ext/sodium/sodium_crypto_core_ristretto255_scalar_invert.stub', 'sodium_crypto_core_ristretto255_scalar_mul' => 'stubs/ext/sodium/sodium_crypto_core_ristretto255_scalar_mul.stub', 'sodium_crypto_core_ristretto255_scalar_negate' => 'stubs/ext/sodium/sodium_crypto_core_ristretto255_scalar_negate.stub', 'sodium_crypto_core_ristretto255_scalar_random' => 'stubs/ext/sodium/sodium_crypto_core_ristretto255_scalar_random.stub', 'sodium_crypto_core_ristretto255_scalar_reduce' => 'stubs/ext/sodium/sodium_crypto_core_ristretto255_scalar_reduce.stub', 'sodium_crypto_core_ristretto255_scalar_sub' => 'stubs/ext/sodium/sodium_crypto_core_ristretto255_scalar_sub.stub', 'sodium_crypto_core_ristretto255_sub' => 'stubs/ext/sodium/sodium_crypto_core_ristretto255_sub.stub', 'sodium_crypto_scalarmult_ristretto255' => 'stubs/ext/sodium/sodium_crypto_scalarmult_ristretto255.stub', 'sodium_crypto_scalarmult_ristretto255_base' => 'stubs/ext/sodium/sodium_crypto_scalarmult_ristretto255_base.stub', 'sodium_crypto_stream_xchacha20' => 'stubs/ext/sodium/sodium_crypto_stream_xchacha20.stub', 'sodium_crypto_stream_xchacha20_keygen' => 'stubs/ext/sodium/sodium_crypto_stream_xchacha20_keygen.stub', 'sodium_crypto_stream_xchacha20_xor' => 'stubs/ext/sodium/sodium_crypto_stream_xchacha20_xor.stub']); } if ($phpVersionId >= 80200) { $classes = \array_merge($classes, ['allowdynamicproperties' => 'stubs/Zend/AllowDynamicProperties.stub', 'random\\brokenrandomengineerror' => 'stubs/ext/random/Random/BrokenRandomEngineError.stub', 'random\\cryptosafeengine' => 'stubs/ext/random/Random/CryptoSafeEngine.stub', 'random\\engine' => 'stubs/ext/random/Random/Engine.stub', 'random\\engine\\mt19937' => 'stubs/ext/random/Random/Engine/Mt19937.stub', 'random\\engine\\pcgoneseq128xslrr64' => 'stubs/ext/random/Random/Engine/PcgOneseq128XslRr64.stub', 'random\\engine\\secure' => 'stubs/ext/random/Random/Engine/Secure.stub', 'random\\engine\\xoshiro256starstar' => 'stubs/ext/random/Random/Engine/Xoshiro256StarStar.stub', 'random\\randomerror' => 'stubs/ext/random/Random/RandomError.stub', 'random\\randomexception' => 'stubs/ext/random/Random/RandomException.stub', 'random\\randomizer' => 'stubs/ext/random/Random/Randomizer.stub', 'sensitiveparameter' => 'stubs/Zend/SensitiveParameter.stub', 'sensitiveparametervalue' => 'stubs/Zend/SensitiveParameterValue.stub']); $functions = \array_merge($functions, ['curl_upkeep' => 'stubs/ext/curl/curl_upkeep.stub', 'getrandmax' => 'stubs/ext/random/getrandmax.stub', 'imap_is_open' => 'stubs/ext/imap/imap_is_open.stub', 'ini_parse_quantity' => 'stubs/ext/standard/ini_parse_quantity.stub', 'lcg_value' => 'stubs/ext/random/lcg_value.stub', 'libxml_get_external_entity_loader' => 'stubs/ext/libxml/libxml_get_external_entity_loader.stub', 'memory_reset_peak_usage' => 'stubs/ext/standard/memory_reset_peak_usage.stub', 'mt_getrandmax' => 'stubs/ext/random/mt_getrandmax.stub', 'mt_rand' => 'stubs/ext/random/mt_rand.stub', 'mt_srand' => 'stubs/ext/random/mt_srand.stub', 'mysqli_execute_query' => 'stubs/ext/mysqli/mysqli_execute_query.stub', 'oci_set_prefetch_lob' => 'stubs/ext/oci8/oci_set_prefetch_lob.stub', 'odbc_connection_string_is_quoted' => 'stubs/ext/odbc/odbc_connection_string_is_quoted.stub', 'odbc_connection_string_quote' => 'stubs/ext/odbc/odbc_connection_string_quote.stub', 'odbc_connection_string_should_quote' => 'stubs/ext/odbc/odbc_connection_string_should_quote.stub', 'openssl_cipher_key_length' => 'stubs/ext/openssl/openssl_cipher_key_length.stub', 'pcntl_forkx' => 'stubs/ext/pcntl/pcntl_forkx.stub', 'rand' => 'stubs/ext/random/rand.stub', 'random_bytes' => 'stubs/ext/random/random_bytes.stub', 'random_int' => 'stubs/ext/random/random_int.stub', 'sodium_crypto_stream_xchacha20_xor_ic' => 'stubs/ext/sodium/sodium_crypto_stream_xchacha20_xor_ic.stub', 'srand' => 'stubs/ext/random/srand.stub']); } if ($phpVersionId >= 80300) { $classes = \array_merge($classes, ['dateerror' => 'stubs/ext/date/DateError.stub', 'dateexception' => 'stubs/ext/date/DateException.stub', 'dateinvalidoperationexception' => 'stubs/ext/date/DateInvalidOperationException.stub', 'dateinvalidtimezoneexception' => 'stubs/ext/date/DateInvalidTimeZoneException.stub', 'datemalformedintervalstringexception' => 'stubs/ext/date/DateMalformedIntervalStringException.stub', 'datemalformedperiodstringexception' => 'stubs/ext/date/DateMalformedPeriodStringException.stub', 'datemalformedstringexception' => 'stubs/ext/date/DateMalformedStringException.stub', 'dateobjecterror' => 'stubs/ext/date/DateObjectError.stub', 'daterangeerror' => 'stubs/ext/date/DateRangeError.stub', 'override' => 'stubs/Zend/Override.stub', 'sqlite3exception' => 'stubs/ext/sqlite3/SQLite3Exception.stub']); $functions = \array_merge($functions, ['json_validate' => 'stubs/ext/json/json_validate.stub', 'ldap_connect_wallet' => 'stubs/ext/ldap/ldap_connect_wallet.stub', 'ldap_exop_sync' => 'stubs/ext/ldap/ldap_exop_sync.stub', 'mb_str_pad' => 'stubs/ext/mbstring/mb_str_pad.stub', 'pg_set_error_context_visibility' => 'stubs/ext/pgsql/pg_set_error_context_visibility.stub', 'posix_eaccess' => 'stubs/ext/posix/posix_eaccess.stub', 'posix_fpathconf' => 'stubs/ext/posix/posix_fpathconf.stub', 'posix_pathconf' => 'stubs/ext/posix/posix_pathconf.stub', 'posix_sysconf' => 'stubs/ext/posix/posix_sysconf.stub', 'random\\intervalboundary' => 'stubs/ext/random/Random/IntervalBoundary.stub', 'socket_atmark' => 'stubs/ext/sockets/socket_atmark.stub', 'str_decrement' => 'stubs/ext/standard/str_decrement.stub', 'str_increment' => 'stubs/ext/standard/str_increment.stub', 'stream_context_set_options' => 'stubs/ext/standard/stream_context_set_options.stub']); } if ($phpVersionId >= 80400) { $classes = \array_merge($classes, ['bcmath\\number' => 'stubs/ext/bcmath/BcMath/Number.stub', 'dba\\connection' => 'stubs/ext/dba/Dba/Connection.stub', 'deprecated' => 'stubs/Zend/Deprecated.stub', 'dom\\attr' => 'stubs/ext/dom/Dom/Attr.stub', 'dom\\cdatasection' => 'stubs/ext/dom/Dom/CDATASection.stub', 'dom\\characterdata' => 'stubs/ext/dom/Dom/CharacterData.stub', 'dom\\childnode' => 'stubs/ext/dom/Dom/ChildNode.stub', 'dom\\comment' => 'stubs/ext/dom/Dom/Comment.stub', 'dom\\document' => 'stubs/ext/dom/Dom/Document.stub', 'dom\\documentfragment' => 'stubs/ext/dom/Dom/DocumentFragment.stub', 'dom\\documenttype' => 'stubs/ext/dom/Dom/DocumentType.stub', 'dom\\dtdnamednodemap' => 'stubs/ext/dom/Dom/DtdNamedNodeMap.stub', 'dom\\element' => 'stubs/ext/dom/Dom/Element.stub', 'dom\\entity' => 'stubs/ext/dom/Dom/Entity.stub', 'dom\\entityreference' => 'stubs/ext/dom/Dom/EntityReference.stub', 'dom\\htmlcollection' => 'stubs/ext/dom/Dom/HTMLCollection.stub', 'dom\\htmldocument' => 'stubs/ext/dom/Dom/HTMLDocument.stub', 'dom\\htmlelement' => 'stubs/ext/dom/Dom/HTMLElement.stub', 'dom\\implementation' => 'stubs/ext/dom/Dom/Implementation.stub', 'dom\\namednodemap' => 'stubs/ext/dom/Dom/NamedNodeMap.stub', 'dom\\namespaceinfo' => 'stubs/ext/dom/Dom/NamespaceInfo.stub', 'dom\\node' => 'stubs/ext/dom/Dom/Node.stub', 'dom\\nodelist' => 'stubs/ext/dom/Dom/NodeList.stub', 'dom\\notation' => 'stubs/ext/dom/Dom/Notation.stub', 'dom\\parentnode' => 'stubs/ext/dom/Dom/ParentNode.stub', 'dom\\processinginstruction' => 'stubs/ext/dom/Dom/ProcessingInstruction.stub', 'dom\\text' => 'stubs/ext/dom/Dom/Text.stub', 'dom\\tokenlist' => 'stubs/ext/dom/Dom/TokenList.stub', 'dom\\xmldocument' => 'stubs/ext/dom/Dom/XMLDocument.stub', 'dom\\xpath' => 'stubs/ext/dom/Dom/XPath.stub', 'odbc\\connection' => 'stubs/ext/odbc/Odbc/Connection.stub', 'odbc\\result' => 'stubs/ext/odbc/Odbc/Result.stub', 'pdo\\dblib' => 'stubs/ext/pdo_dblib/Pdo/Dblib.stub', 'pdo\\firebird' => 'stubs/ext/pdo_firebird/Pdo/Firebird.stub', 'pdo\\mysql' => 'stubs/ext/pdo_mysql/Pdo/Mysql.stub', 'pdo\\odbc' => 'stubs/ext/pdo_odbc/Pdo/Odbc.stub', 'pdo\\pgsql' => 'stubs/ext/pdo_pgsql/Pdo/Pgsql.stub', 'pdo\\sqlite' => 'stubs/ext/pdo_sqlite/Pdo/Sqlite.stub', 'reflectionconstant' => 'stubs/ext/reflection/ReflectionConstant.stub', 'requestparsebodyexception' => 'stubs/Zend/RequestParseBodyException.stub', 'soap\\sdl' => 'stubs/ext/soap/Soap/Sdl.stub', 'soap\\url' => 'stubs/ext/soap/Soap/Url.stub', 'streambucket' => 'stubs/ext/standard/StreamBucket.stub']); $functions = \array_merge($functions, ['array_all' => 'stubs/ext/standard/array_all.stub', 'array_any' => 'stubs/ext/standard/array_any.stub', 'array_find' => 'stubs/ext/standard/array_find.stub', 'array_find_key' => 'stubs/ext/standard/array_find_key.stub', 'bcceil' => 'stubs/ext/bcmath/bcceil.stub', 'bcdivmod' => 'stubs/ext/bcmath/bcdivmod.stub', 'bcfloor' => 'stubs/ext/bcmath/bcfloor.stub', 'bcround' => 'stubs/ext/bcmath/bcround.stub', 'dom\\adjacentposition' => 'stubs/ext/dom/Dom/AdjacentPosition.stub', 'dom\\import_simplexml' => 'stubs/ext/dom/Dom/import_simplexml.stub', 'fpow' => 'stubs/ext/standard/fpow.stub', 'grapheme_str_split' => 'stubs/ext/intl/grapheme_str_split.stub', 'http_clear_last_response_headers' => 'stubs/ext/standard/http_clear_last_response_headers.stub', 'http_get_last_response_headers' => 'stubs/ext/standard/http_get_last_response_headers.stub', 'intltz_get_iana_id' => 'stubs/ext/intl/intltz_get_iana_id.stub', 'mb_lcfirst' => 'stubs/ext/mbstring/mb_lcfirst.stub', 'mb_ltrim' => 'stubs/ext/mbstring/mb_ltrim.stub', 'mb_rtrim' => 'stubs/ext/mbstring/mb_rtrim.stub', 'mb_trim' => 'stubs/ext/mbstring/mb_trim.stub', 'mb_ucfirst' => 'stubs/ext/mbstring/mb_ucfirst.stub', 'opcache_jit_blacklist' => 'stubs/ext/opcache/opcache_jit_blacklist.stub', 'openssl_password_hash' => 'stubs/ext/openssl/openssl_password_hash.stub', 'openssl_password_verify' => 'stubs/ext/openssl/openssl_password_verify.stub', 'pcntl\\qosclass' => 'stubs/ext/pcntl/Pcntl/QosClass.stub', 'pcntl_getcpu' => 'stubs/ext/pcntl/pcntl_getcpu.stub', 'pcntl_getcpuaffinity' => 'stubs/ext/pcntl/pcntl_getcpuaffinity.stub', 'pcntl_getqos_class' => 'stubs/ext/pcntl/pcntl_getqos_class.stub', 'pcntl_setcpuaffinity' => 'stubs/ext/pcntl/pcntl_setcpuaffinity.stub', 'pcntl_setns' => 'stubs/ext/pcntl/pcntl_setns.stub', 'pcntl_setqos_class' => 'stubs/ext/pcntl/pcntl_setqos_class.stub', 'pcntl_waitid' => 'stubs/ext/pcntl/pcntl_waitid.stub', 'pg_change_password' => 'stubs/ext/pgsql/pg_change_password.stub', 'pg_jit' => 'stubs/ext/pgsql/pg_jit.stub', 'pg_put_copy_data' => 'stubs/ext/pgsql/pg_put_copy_data.stub', 'pg_put_copy_end' => 'stubs/ext/pgsql/pg_put_copy_end.stub', 'pg_result_memory_size' => 'stubs/ext/pgsql/pg_result_memory_size.stub', 'pg_set_chunked_rows_size' => 'stubs/ext/pgsql/pg_set_chunked_rows_size.stub', 'pg_socket_poll' => 'stubs/ext/pgsql/pg_socket_poll.stub', 'propertyhooktype' => 'stubs/ext/reflection/PropertyHookType.stub', 'request_parse_body' => 'stubs/ext/standard/request_parse_body.stub', 'roundingmode' => 'stubs/ext/standard/RoundingMode.stub', 'sodium_crypto_aead_aegis128l_decrypt' => 'stubs/ext/sodium/sodium_crypto_aead_aegis128l_decrypt.stub', 'sodium_crypto_aead_aegis128l_encrypt' => 'stubs/ext/sodium/sodium_crypto_aead_aegis128l_encrypt.stub', 'sodium_crypto_aead_aegis128l_keygen' => 'stubs/ext/sodium/sodium_crypto_aead_aegis128l_keygen.stub', 'sodium_crypto_aead_aegis256_decrypt' => 'stubs/ext/sodium/sodium_crypto_aead_aegis256_decrypt.stub', 'sodium_crypto_aead_aegis256_encrypt' => 'stubs/ext/sodium/sodium_crypto_aead_aegis256_encrypt.stub', 'sodium_crypto_aead_aegis256_keygen' => 'stubs/ext/sodium/sodium_crypto_aead_aegis256_keygen.stub']); } // UPDATE BELONGS HERE $this->classes = $classes; $this->functions = $functions; } } MIT License Copyright (c) 2016 Ondřej Mirtes Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.type = $type; $this->old = $old; $this->new = $new; } } isEqual = $isEqual; } /** * Calculate diff (edit script) from $old to $new. * * @param T[] $old Original array * @param T[] $new New array * * @return DiffElem[] Diff (edit script) */ public function diff(array $old, array $new) : array { [$trace, $x, $y] = $this->calculateTrace($old, $new); return $this->extractDiff($trace, $x, $y, $old, $new); } /** * Calculate diff, including "replace" operations. * * If a sequence of remove operations is followed by the same number of add operations, these * will be coalesced into replace operations. * * @param T[] $old Original array * @param T[] $new New array * * @return DiffElem[] Diff (edit script), including replace operations */ public function diffWithReplacements(array $old, array $new) : array { return $this->coalesceReplacements($this->diff($old, $new)); } /** * @param T[] $old * @param T[] $new * @return array{array>, int, int} */ private function calculateTrace(array $old, array $new) : array { $n = count($old); $m = count($new); $max = $n + $m; $v = [1 => 0]; $trace = []; for ($d = 0; $d <= $max; $d++) { $trace[] = $v; for ($k = -$d; $k <= $d; $k += 2) { if ($k === -$d || $k !== $d && $v[$k - 1] < $v[$k + 1]) { $x = $v[$k + 1]; } else { $x = $v[$k - 1] + 1; } $y = $x - $k; while ($x < $n && $y < $m && ($this->isEqual)($old[$x], $new[$y])) { $x++; $y++; } $v[$k] = $x; if ($x >= $n && $y >= $m) { return [$trace, $x, $y]; } } } throw new Exception('Should not happen'); } /** * @param array> $trace * @param T[] $old * @param T[] $new * @return DiffElem[] */ private function extractDiff(array $trace, int $x, int $y, array $old, array $new) : array { $result = []; for ($d = count($trace) - 1; $d >= 0; $d--) { $v = $trace[$d]; $k = $x - $y; if ($k === -$d || $k !== $d && $v[$k - 1] < $v[$k + 1]) { $prevK = $k + 1; } else { $prevK = $k - 1; } $prevX = $v[$prevK]; $prevY = $prevX - $prevK; while ($x > $prevX && $y > $prevY) { $result[] = new \PHPStan\PhpDocParser\Printer\DiffElem(\PHPStan\PhpDocParser\Printer\DiffElem::TYPE_KEEP, $old[$x - 1], $new[$y - 1]); $x--; $y--; } if ($d === 0) { break; } while ($x > $prevX) { $result[] = new \PHPStan\PhpDocParser\Printer\DiffElem(\PHPStan\PhpDocParser\Printer\DiffElem::TYPE_REMOVE, $old[$x - 1], null); $x--; } while ($y > $prevY) { $result[] = new \PHPStan\PhpDocParser\Printer\DiffElem(\PHPStan\PhpDocParser\Printer\DiffElem::TYPE_ADD, null, $new[$y - 1]); $y--; } } return array_reverse($result); } /** * Coalesce equal-length sequences of remove+add into a replace operation. * * @param DiffElem[] $diff * @return DiffElem[] */ private function coalesceReplacements(array $diff) : array { $newDiff = []; $c = count($diff); for ($i = 0; $i < $c; $i++) { $diffType = $diff[$i]->type; if ($diffType !== \PHPStan\PhpDocParser\Printer\DiffElem::TYPE_REMOVE) { $newDiff[] = $diff[$i]; continue; } $j = $i; while ($j < $c && $diff[$j]->type === \PHPStan\PhpDocParser\Printer\DiffElem::TYPE_REMOVE) { $j++; } $k = $j; while ($k < $c && $diff[$k]->type === \PHPStan\PhpDocParser\Printer\DiffElem::TYPE_ADD) { $k++; } if ($j - $i === $k - $j) { $len = $j - $i; for ($n = 0; $n < $len; $n++) { $newDiff[] = new \PHPStan\PhpDocParser\Printer\DiffElem(\PHPStan\PhpDocParser\Printer\DiffElem::TYPE_REPLACE, $diff[$i + $n]->old, $diff[$j + $n]->new); } } else { for (; $i < $k; $i++) { $newDiff[] = $diff[$i]; } } $i = $k - 1; } return $newDiff; } } */ private $differ; /** * Map From "{$class}->{$subNode}" to string that should be inserted * between elements of this list subnode * * @var array */ private $listInsertionMap = [PhpDocNode::class . '->children' => "\n * ", UnionTypeNode::class . '->types' => '|', IntersectionTypeNode::class . '->types' => '&', ArrayShapeNode::class . '->items' => ', ', ObjectShapeNode::class . '->items' => ', ', CallableTypeNode::class . '->parameters' => ', ', CallableTypeNode::class . '->templateTypes' => ', ', GenericTypeNode::class . '->genericTypes' => ', ', ConstExprArrayNode::class . '->items' => ', ', MethodTagValueNode::class . '->parameters' => ', ', DoctrineArray::class . '->items' => ', ', DoctrineAnnotation::class . '->arguments' => ', ']; /** * [$find, $extraLeft, $extraRight] * * @var array */ private $emptyListInsertionMap = [CallableTypeNode::class . '->parameters' => ['(', '', ''], ArrayShapeNode::class . '->items' => ['{', '', ''], ObjectShapeNode::class . '->items' => ['{', '', ''], DoctrineArray::class . '->items' => ['{', '', ''], DoctrineAnnotation::class . '->arguments' => ['(', '', '']]; /** @var array>> */ private $parenthesesMap = [CallableTypeNode::class . '->returnType' => [CallableTypeNode::class, UnionTypeNode::class, IntersectionTypeNode::class], ArrayTypeNode::class . '->type' => [CallableTypeNode::class, UnionTypeNode::class, IntersectionTypeNode::class, ConstTypeNode::class, NullableTypeNode::class], OffsetAccessTypeNode::class . '->type' => [CallableTypeNode::class, UnionTypeNode::class, IntersectionTypeNode::class, NullableTypeNode::class]]; /** @var array>> */ private $parenthesesListMap = [IntersectionTypeNode::class . '->types' => [IntersectionTypeNode::class, UnionTypeNode::class, NullableTypeNode::class], UnionTypeNode::class . '->types' => [IntersectionTypeNode::class, UnionTypeNode::class, NullableTypeNode::class]]; public function printFormatPreserving(PhpDocNode $node, PhpDocNode $originalNode, TokenIterator $originalTokens) : string { $this->differ = new \PHPStan\PhpDocParser\Printer\Differ(static function ($a, $b) { if ($a instanceof Node && $b instanceof Node) { return $a === $b->getAttribute(Attribute::ORIGINAL_NODE); } return \false; }); $tokenIndex = 0; $result = $this->printArrayFormatPreserving($node->children, $originalNode->children, $originalTokens, $tokenIndex, PhpDocNode::class, 'children'); if ($result !== null) { return $result . $originalTokens->getContentBetween($tokenIndex, $originalTokens->getTokenCount()); } return $this->print($node); } public function print(Node $node) : string { if ($node instanceof PhpDocNode) { return "/**\n *" . implode("\n *", array_map(function (PhpDocChildNode $child) : string { $s = $this->print($child); return $s === '' ? '' : ' ' . $s; }, $node->children)) . "\n */"; } if ($node instanceof PhpDocTextNode) { return $node->text; } if ($node instanceof PhpDocTagNode) { if ($node->value instanceof DoctrineTagValueNode) { return $this->print($node->value); } return trim(sprintf('%s %s', $node->name, $this->print($node->value))); } if ($node instanceof PhpDocTagValueNode) { return $this->printTagValue($node); } if ($node instanceof TypeNode) { return $this->printType($node); } if ($node instanceof ConstExprNode) { return $this->printConstExpr($node); } if ($node instanceof MethodTagValueParameterNode) { $type = $node->type !== null ? $this->print($node->type) . ' ' : ''; $isReference = $node->isReference ? '&' : ''; $isVariadic = $node->isVariadic ? '...' : ''; $default = $node->defaultValue !== null ? ' = ' . $this->print($node->defaultValue) : ''; return "{$type}{$isReference}{$isVariadic}{$node->parameterName}{$default}"; } if ($node instanceof CallableTypeParameterNode) { $type = $this->print($node->type) . ' '; $isReference = $node->isReference ? '&' : ''; $isVariadic = $node->isVariadic ? '...' : ''; $isOptional = $node->isOptional ? '=' : ''; return trim("{$type}{$isReference}{$isVariadic}{$node->parameterName}") . $isOptional; } if ($node instanceof ArrayShapeUnsealedTypeNode) { if ($node->keyType !== null) { return sprintf('<%s, %s>', $this->printType($node->keyType), $this->printType($node->valueType)); } return sprintf('<%s>', $this->printType($node->valueType)); } if ($node instanceof DoctrineAnnotation) { return (string) $node; } if ($node instanceof DoctrineArgument) { return (string) $node; } if ($node instanceof DoctrineArray) { return (string) $node; } if ($node instanceof DoctrineArrayItem) { return (string) $node; } throw new LogicException(sprintf('Unknown node type %s', get_class($node))); } private function printTagValue(PhpDocTagValueNode $node) : string { // only nodes that contain another node are handled here // the rest falls back on (string) $node if ($node instanceof AssertTagMethodValueNode) { $isNegated = $node->isNegated ? '!' : ''; $isEquality = $node->isEquality ? '=' : ''; $type = $this->printType($node->type); return trim("{$isNegated}{$isEquality}{$type} {$node->parameter}->{$node->method}() {$node->description}"); } if ($node instanceof AssertTagPropertyValueNode) { $isNegated = $node->isNegated ? '!' : ''; $isEquality = $node->isEquality ? '=' : ''; $type = $this->printType($node->type); return trim("{$isNegated}{$isEquality}{$type} {$node->parameter}->{$node->property} {$node->description}"); } if ($node instanceof AssertTagValueNode) { $isNegated = $node->isNegated ? '!' : ''; $isEquality = $node->isEquality ? '=' : ''; $type = $this->printType($node->type); return trim("{$isNegated}{$isEquality}{$type} {$node->parameter} {$node->description}"); } if ($node instanceof ExtendsTagValueNode || $node instanceof ImplementsTagValueNode) { $type = $this->printType($node->type); return trim("{$type} {$node->description}"); } if ($node instanceof MethodTagValueNode) { $static = $node->isStatic ? 'static ' : ''; $returnType = $node->returnType !== null ? $this->printType($node->returnType) . ' ' : ''; $parameters = implode(', ', array_map(function (MethodTagValueParameterNode $parameter) : string { return $this->print($parameter); }, $node->parameters)); $description = $node->description !== '' ? " {$node->description}" : ''; $templateTypes = count($node->templateTypes) > 0 ? '<' . implode(', ', array_map(function (TemplateTagValueNode $templateTag) : string { return $this->print($templateTag); }, $node->templateTypes)) . '>' : ''; return "{$static}{$returnType}{$node->methodName}{$templateTypes}({$parameters}){$description}"; } if ($node instanceof MixinTagValueNode) { $type = $this->printType($node->type); return trim("{$type} {$node->description}"); } if ($node instanceof RequireExtendsTagValueNode) { $type = $this->printType($node->type); return trim("{$type} {$node->description}"); } if ($node instanceof RequireImplementsTagValueNode) { $type = $this->printType($node->type); return trim("{$type} {$node->description}"); } if ($node instanceof ParamOutTagValueNode) { $type = $this->printType($node->type); return trim("{$type} {$node->parameterName} {$node->description}"); } if ($node instanceof ParamTagValueNode) { $reference = $node->isReference ? '&' : ''; $variadic = $node->isVariadic ? '...' : ''; $type = $this->printType($node->type); return trim("{$type} {$reference}{$variadic}{$node->parameterName} {$node->description}"); } if ($node instanceof ParamImmediatelyInvokedCallableTagValueNode) { return trim("{$node->parameterName} {$node->description}"); } if ($node instanceof ParamLaterInvokedCallableTagValueNode) { return trim("{$node->parameterName} {$node->description}"); } if ($node instanceof ParamClosureThisTagValueNode) { return trim("{$node->type} {$node->parameterName} {$node->description}"); } if ($node instanceof PureUnlessCallableIsImpureTagValueNode) { return trim("{$node->parameterName} {$node->description}"); } if ($node instanceof PropertyTagValueNode) { $type = $this->printType($node->type); return trim("{$type} {$node->propertyName} {$node->description}"); } if ($node instanceof ReturnTagValueNode) { $type = $this->printType($node->type); return trim("{$type} {$node->description}"); } if ($node instanceof SelfOutTagValueNode) { $type = $this->printType($node->type); return trim($type . ' ' . $node->description); } if ($node instanceof TemplateTagValueNode) { $upperBound = $node->bound !== null ? ' of ' . $this->printType($node->bound) : ''; $lowerBound = $node->lowerBound !== null ? ' super ' . $this->printType($node->lowerBound) : ''; $default = $node->default !== null ? ' = ' . $this->printType($node->default) : ''; return trim("{$node->name}{$upperBound}{$lowerBound}{$default} {$node->description}"); } if ($node instanceof ThrowsTagValueNode) { $type = $this->printType($node->type); return trim("{$type} {$node->description}"); } if ($node instanceof TypeAliasImportTagValueNode) { return trim("{$node->importedAlias} from " . $this->printType($node->importedFrom) . ($node->importedAs !== null ? " as {$node->importedAs}" : '')); } if ($node instanceof TypeAliasTagValueNode) { $type = $this->printType($node->type); return trim("{$node->alias} {$type}"); } if ($node instanceof UsesTagValueNode) { $type = $this->printType($node->type); return trim("{$type} {$node->description}"); } if ($node instanceof VarTagValueNode) { $type = $this->printType($node->type); return trim("{$type} " . trim("{$node->variableName} {$node->description}")); } return (string) $node; } private function printType(TypeNode $node) : string { if ($node instanceof ArrayShapeNode) { $items = array_map(function (ArrayShapeItemNode $item) : string { return $this->printType($item); }, $node->items); if (!$node->sealed) { $items[] = '...' . ($node->unsealedType === null ? '' : $this->print($node->unsealedType)); } return $node->kind . '{' . implode(', ', $items) . '}'; } if ($node instanceof ArrayShapeItemNode) { if ($node->keyName !== null) { return sprintf('%s%s: %s', $this->print($node->keyName), $node->optional ? '?' : '', $this->printType($node->valueType)); } return $this->printType($node->valueType); } if ($node instanceof ArrayTypeNode) { return $this->printOffsetAccessType($node->type) . '[]'; } if ($node instanceof CallableTypeNode) { if ($node->returnType instanceof CallableTypeNode || $node->returnType instanceof UnionTypeNode || $node->returnType instanceof IntersectionTypeNode) { $returnType = $this->wrapInParentheses($node->returnType); } else { $returnType = $this->printType($node->returnType); } $template = $node->templateTypes !== [] ? '<' . implode(', ', array_map(function (TemplateTagValueNode $templateNode) : string { return $this->print($templateNode); }, $node->templateTypes)) . '>' : ''; $parameters = implode(', ', array_map(function (CallableTypeParameterNode $parameterNode) : string { return $this->print($parameterNode); }, $node->parameters)); return "{$node->identifier}{$template}({$parameters}): {$returnType}"; } if ($node instanceof ConditionalTypeForParameterNode) { return sprintf('(%s %s %s ? %s : %s)', $node->parameterName, $node->negated ? 'is not' : 'is', $this->printType($node->targetType), $this->printType($node->if), $this->printType($node->else)); } if ($node instanceof ConditionalTypeNode) { return sprintf('(%s %s %s ? %s : %s)', $this->printType($node->subjectType), $node->negated ? 'is not' : 'is', $this->printType($node->targetType), $this->printType($node->if), $this->printType($node->else)); } if ($node instanceof ConstTypeNode) { return $this->printConstExpr($node->constExpr); } if ($node instanceof GenericTypeNode) { $genericTypes = []; foreach ($node->genericTypes as $index => $type) { $variance = $node->variances[$index] ?? GenericTypeNode::VARIANCE_INVARIANT; if ($variance === GenericTypeNode::VARIANCE_INVARIANT) { $genericTypes[] = $this->printType($type); } elseif ($variance === GenericTypeNode::VARIANCE_BIVARIANT) { $genericTypes[] = '*'; } else { $genericTypes[] = sprintf('%s %s', $variance, $this->print($type)); } } return $node->type . '<' . implode(', ', $genericTypes) . '>'; } if ($node instanceof IdentifierTypeNode) { return $node->name; } if ($node instanceof IntersectionTypeNode || $node instanceof UnionTypeNode) { $items = []; foreach ($node->types as $type) { if ($type instanceof IntersectionTypeNode || $type instanceof UnionTypeNode || $type instanceof NullableTypeNode) { $items[] = $this->wrapInParentheses($type); continue; } $items[] = $this->printType($type); } return implode($node instanceof IntersectionTypeNode ? '&' : '|', $items); } if ($node instanceof InvalidTypeNode) { return (string) $node; } if ($node instanceof NullableTypeNode) { if ($node->type instanceof IntersectionTypeNode || $node->type instanceof UnionTypeNode) { return '?(' . $this->printType($node->type) . ')'; } return '?' . $this->printType($node->type); } if ($node instanceof ObjectShapeNode) { $items = array_map(function (ObjectShapeItemNode $item) : string { return $this->printType($item); }, $node->items); return 'object{' . implode(', ', $items) . '}'; } if ($node instanceof ObjectShapeItemNode) { if ($node->keyName !== null) { return sprintf('%s%s: %s', $this->print($node->keyName), $node->optional ? '?' : '', $this->printType($node->valueType)); } return $this->printType($node->valueType); } if ($node instanceof OffsetAccessTypeNode) { return $this->printOffsetAccessType($node->type) . '[' . $this->printType($node->offset) . ']'; } if ($node instanceof ThisTypeNode) { return (string) $node; } throw new LogicException(sprintf('Unknown node type %s', get_class($node))); } private function wrapInParentheses(TypeNode $node) : string { return '(' . $this->printType($node) . ')'; } private function printOffsetAccessType(TypeNode $type) : string { if ($type instanceof CallableTypeNode || $type instanceof UnionTypeNode || $type instanceof IntersectionTypeNode || $type instanceof NullableTypeNode) { return $this->wrapInParentheses($type); } return $this->printType($type); } private function printConstExpr(ConstExprNode $node) : string { // this is fine - ConstExprNode classes do not contain nodes that need smart printer logic return (string) $node; } /** * @param Node[] $nodes * @param Node[] $originalNodes */ private function printArrayFormatPreserving(array $nodes, array $originalNodes, TokenIterator $originalTokens, int &$tokenIndex, string $parentNodeClass, string $subNodeName) : ?string { $diff = $this->differ->diffWithReplacements($originalNodes, $nodes); $mapKey = $parentNodeClass . '->' . $subNodeName; $insertStr = $this->listInsertionMap[$mapKey] ?? null; $result = ''; $beforeFirstKeepOrReplace = \true; $delayedAdd = []; $insertNewline = \false; [$isMultiline, $beforeAsteriskIndent, $afterAsteriskIndent] = $this->isMultiline($tokenIndex, $originalNodes, $originalTokens); if ($insertStr === "\n * ") { $insertStr = sprintf('%s%s*%s', $originalTokens->getDetectedNewline() ?? "\n", $beforeAsteriskIndent, $afterAsteriskIndent); } foreach ($diff as $i => $diffElem) { $diffType = $diffElem->type; $newNode = $diffElem->new; $originalNode = $diffElem->old; if ($diffType === \PHPStan\PhpDocParser\Printer\DiffElem::TYPE_KEEP || $diffType === \PHPStan\PhpDocParser\Printer\DiffElem::TYPE_REPLACE) { $beforeFirstKeepOrReplace = \false; if (!$newNode instanceof Node || !$originalNode instanceof Node) { return null; } $itemStartPos = $originalNode->getAttribute(Attribute::START_INDEX); $itemEndPos = $originalNode->getAttribute(Attribute::END_INDEX); if ($itemStartPos < 0 || $itemEndPos < 0 || $itemStartPos < $tokenIndex) { throw new LogicException(); } $result .= $originalTokens->getContentBetween($tokenIndex, $itemStartPos); if (count($delayedAdd) > 0) { foreach ($delayedAdd as $delayedAddNode) { $parenthesesNeeded = isset($this->parenthesesListMap[$mapKey]) && in_array(get_class($delayedAddNode), $this->parenthesesListMap[$mapKey], \true); if ($parenthesesNeeded) { $result .= '('; } $result .= $this->printNodeFormatPreserving($delayedAddNode, $originalTokens); if ($parenthesesNeeded) { $result .= ')'; } if ($insertNewline) { $result .= $insertStr . sprintf('%s%s*%s', $originalTokens->getDetectedNewline() ?? "\n", $beforeAsteriskIndent, $afterAsteriskIndent); } else { $result .= $insertStr; } } $delayedAdd = []; } $parenthesesNeeded = isset($this->parenthesesListMap[$mapKey]) && in_array(get_class($newNode), $this->parenthesesListMap[$mapKey], \true) && !in_array(get_class($originalNode), $this->parenthesesListMap[$mapKey], \true); $addParentheses = $parenthesesNeeded && !$originalTokens->hasParentheses($itemStartPos, $itemEndPos); if ($addParentheses) { $result .= '('; } $result .= $this->printNodeFormatPreserving($newNode, $originalTokens); if ($addParentheses) { $result .= ')'; } $tokenIndex = $itemEndPos + 1; } elseif ($diffType === \PHPStan\PhpDocParser\Printer\DiffElem::TYPE_ADD) { if ($insertStr === null) { return null; } if (!$newNode instanceof Node) { return null; } if ($insertStr === ', ' && $isMultiline) { $insertStr = ','; $insertNewline = \true; } if ($beforeFirstKeepOrReplace) { // Will be inserted at the next "replace" or "keep" element $delayedAdd[] = $newNode; continue; } $itemEndPos = $tokenIndex - 1; if ($insertNewline) { $result .= $insertStr . sprintf('%s%s*%s', $originalTokens->getDetectedNewline() ?? "\n", $beforeAsteriskIndent, $afterAsteriskIndent); } else { $result .= $insertStr; } $parenthesesNeeded = isset($this->parenthesesListMap[$mapKey]) && in_array(get_class($newNode), $this->parenthesesListMap[$mapKey], \true); if ($parenthesesNeeded) { $result .= '('; } $result .= $this->printNodeFormatPreserving($newNode, $originalTokens); if ($parenthesesNeeded) { $result .= ')'; } $tokenIndex = $itemEndPos + 1; } elseif ($diffType === \PHPStan\PhpDocParser\Printer\DiffElem::TYPE_REMOVE) { if (!$originalNode instanceof Node) { return null; } $itemStartPos = $originalNode->getAttribute(Attribute::START_INDEX); $itemEndPos = $originalNode->getAttribute(Attribute::END_INDEX); if ($itemStartPos < 0 || $itemEndPos < 0) { throw new LogicException(); } if ($i === 0) { // If we're removing from the start, keep the tokens before the node and drop those after it, // instead of the other way around. $originalTokensArray = $originalTokens->getTokens(); for ($j = $tokenIndex; $j < $itemStartPos; $j++) { if ($originalTokensArray[$j][Lexer::TYPE_OFFSET] === Lexer::TOKEN_PHPDOC_EOL) { break; } $result .= $originalTokensArray[$j][Lexer::VALUE_OFFSET]; } } $tokenIndex = $itemEndPos + 1; } } if (count($delayedAdd) > 0) { if (!isset($this->emptyListInsertionMap[$mapKey])) { return null; } [$findToken, $extraLeft, $extraRight] = $this->emptyListInsertionMap[$mapKey]; if ($findToken !== null) { $originalTokensArray = $originalTokens->getTokens(); for (; $tokenIndex < count($originalTokensArray); $tokenIndex++) { $result .= $originalTokensArray[$tokenIndex][Lexer::VALUE_OFFSET]; if ($originalTokensArray[$tokenIndex][Lexer::VALUE_OFFSET] !== $findToken) { continue; } $tokenIndex++; break; } } $first = \true; $result .= $extraLeft; foreach ($delayedAdd as $delayedAddNode) { if (!$first) { $result .= $insertStr; if ($insertNewline) { $result .= sprintf('%s%s*%s', $originalTokens->getDetectedNewline() ?? "\n", $beforeAsteriskIndent, $afterAsteriskIndent); } } $result .= $this->printNodeFormatPreserving($delayedAddNode, $originalTokens); $first = \false; } $result .= $extraRight; } return $result; } /** * @param Node[] $nodes * @return array{bool, string, string} */ private function isMultiline(int $initialIndex, array $nodes, TokenIterator $originalTokens) : array { $isMultiline = count($nodes) > 1; $pos = $initialIndex; $allText = ''; /** @var Node|null $node */ foreach ($nodes as $node) { if (!$node instanceof Node) { continue; } $endPos = $node->getAttribute(Attribute::END_INDEX) + 1; $text = $originalTokens->getContentBetween($pos, $endPos); $allText .= $text; if (strpos($text, "\n") === \false) { // We require that a newline is present between *every* item. If the formatting // is inconsistent, with only some items having newlines, we don't consider it // as multiline $isMultiline = \false; } $pos = $endPos; } $c = preg_match_all('~\\n(?[\\x09\\x20]*)\\*(?\\x20*)~', $allText, $matches, PREG_SET_ORDER); if ($c === 0) { return [$isMultiline, '', '']; } $before = ''; $after = ''; foreach ($matches as $match) { if (strlen($match['before']) > strlen($before)) { $before = $match['before']; } if (strlen($match['after']) <= strlen($after)) { continue; } $after = $match['after']; } return [$isMultiline, $before, $after]; } private function printNodeFormatPreserving(Node $node, TokenIterator $originalTokens) : string { /** @var Node|null $originalNode */ $originalNode = $node->getAttribute(Attribute::ORIGINAL_NODE); if ($originalNode === null) { return $this->print($node); } $class = get_class($node); if ($class !== get_class($originalNode)) { throw new LogicException(); } $startPos = $originalNode->getAttribute(Attribute::START_INDEX); $endPos = $originalNode->getAttribute(Attribute::END_INDEX); if ($startPos < 0 || $endPos < 0) { throw new LogicException(); } $result = ''; $pos = $startPos; $subNodeNames = array_keys(get_object_vars($node)); foreach ($subNodeNames as $subNodeName) { $subNode = $node->{$subNodeName}; $origSubNode = $originalNode->{$subNodeName}; if (!$subNode instanceof Node && $subNode !== null || !$origSubNode instanceof Node && $origSubNode !== null) { if ($subNode === $origSubNode) { // Unchanged, can reuse old code continue; } if (is_array($subNode) && is_array($origSubNode)) { // Array subnode changed, we might be able to reconstruct it $listResult = $this->printArrayFormatPreserving($subNode, $origSubNode, $originalTokens, $pos, $class, $subNodeName); if ($listResult === null) { return $this->print($node); } $result .= $listResult; continue; } return $this->print($node); } if ($origSubNode === null) { if ($subNode === null) { // Both null, nothing to do continue; } return $this->print($node); } $subStartPos = $origSubNode->getAttribute(Attribute::START_INDEX); $subEndPos = $origSubNode->getAttribute(Attribute::END_INDEX); if ($subStartPos < 0 || $subEndPos < 0) { throw new LogicException(); } if ($subEndPos < $subStartPos) { return $this->print($node); } if ($subNode === null) { return $this->print($node); } $result .= $originalTokens->getContentBetween($pos, $subStartPos); $mapKey = get_class($node) . '->' . $subNodeName; $parenthesesNeeded = isset($this->parenthesesMap[$mapKey]) && in_array(get_class($subNode), $this->parenthesesMap[$mapKey], \true); if ($subNode->getAttribute(Attribute::ORIGINAL_NODE) !== null) { $parenthesesNeeded = $parenthesesNeeded && !in_array(get_class($subNode->getAttribute(Attribute::ORIGINAL_NODE)), $this->parenthesesMap[$mapKey], \true); } $addParentheses = $parenthesesNeeded && !$originalTokens->hasParentheses($subStartPos, $subEndPos); if ($addParentheses) { $result .= '('; } $result .= $this->printNodeFormatPreserving($subNode, $originalTokens); if ($addParentheses) { $result .= ')'; } $pos = $subEndPos + 1; } return $result . $originalTokens->getContentBetween($pos, $endPos + 1); } } */ private $tokens; /** @var int */ private $index; /** @var int[] */ private $savePoints = []; /** @var list */ private $skippedTokenTypes = [Lexer::TOKEN_HORIZONTAL_WS]; /** @var string|null */ private $newline = null; /** * @param list $tokens */ public function __construct(array $tokens, int $index = 0) { $this->tokens = $tokens; $this->index = $index; $this->skipIrrelevantTokens(); } /** * @return list */ public function getTokens() : array { return $this->tokens; } public function getContentBetween(int $startPos, int $endPos) : string { if ($startPos < 0 || $endPos > count($this->tokens)) { throw new LogicException(); } $content = ''; for ($i = $startPos; $i < $endPos; $i++) { $content .= $this->tokens[$i][Lexer::VALUE_OFFSET]; } return $content; } public function getTokenCount() : int { return count($this->tokens); } public function currentTokenValue() : string { return $this->tokens[$this->index][Lexer::VALUE_OFFSET]; } public function currentTokenType() : int { return $this->tokens[$this->index][Lexer::TYPE_OFFSET]; } public function currentTokenOffset() : int { $offset = 0; for ($i = 0; $i < $this->index; $i++) { $offset += strlen($this->tokens[$i][Lexer::VALUE_OFFSET]); } return $offset; } public function currentTokenLine() : int { return $this->tokens[$this->index][Lexer::LINE_OFFSET]; } public function currentTokenIndex() : int { return $this->index; } public function endIndexOfLastRelevantToken() : int { $endIndex = $this->currentTokenIndex(); $endIndex--; while (in_array($this->tokens[$endIndex][Lexer::TYPE_OFFSET], $this->skippedTokenTypes, \true)) { if (!isset($this->tokens[$endIndex - 1])) { break; } $endIndex--; } return $endIndex; } public function isCurrentTokenValue(string $tokenValue) : bool { return $this->tokens[$this->index][Lexer::VALUE_OFFSET] === $tokenValue; } public function isCurrentTokenType(int ...$tokenType) : bool { return in_array($this->tokens[$this->index][Lexer::TYPE_OFFSET], $tokenType, \true); } public function isPrecededByHorizontalWhitespace() : bool { return ($this->tokens[$this->index - 1][Lexer::TYPE_OFFSET] ?? -1) === Lexer::TOKEN_HORIZONTAL_WS; } /** * @throws ParserException */ public function consumeTokenType(int $tokenType) : void { if ($this->tokens[$this->index][Lexer::TYPE_OFFSET] !== $tokenType) { $this->throwError($tokenType); } if ($tokenType === Lexer::TOKEN_PHPDOC_EOL) { if ($this->newline === null) { $this->detectNewline(); } } $this->index++; $this->skipIrrelevantTokens(); } /** * @throws ParserException */ public function consumeTokenValue(int $tokenType, string $tokenValue) : void { if ($this->tokens[$this->index][Lexer::TYPE_OFFSET] !== $tokenType || $this->tokens[$this->index][Lexer::VALUE_OFFSET] !== $tokenValue) { $this->throwError($tokenType, $tokenValue); } $this->index++; $this->skipIrrelevantTokens(); } /** @phpstan-impure */ public function tryConsumeTokenValue(string $tokenValue) : bool { if ($this->tokens[$this->index][Lexer::VALUE_OFFSET] !== $tokenValue) { return \false; } $this->index++; $this->skipIrrelevantTokens(); return \true; } /** @phpstan-impure */ public function tryConsumeTokenType(int $tokenType) : bool { if ($this->tokens[$this->index][Lexer::TYPE_OFFSET] !== $tokenType) { return \false; } if ($tokenType === Lexer::TOKEN_PHPDOC_EOL) { if ($this->newline === null) { $this->detectNewline(); } } $this->index++; $this->skipIrrelevantTokens(); return \true; } private function detectNewline() : void { $value = $this->currentTokenValue(); if (substr($value, 0, 2) === "\r\n") { $this->newline = "\r\n"; } elseif (substr($value, 0, 1) === "\n") { $this->newline = "\n"; } } public function getSkippedHorizontalWhiteSpaceIfAny() : string { if ($this->index > 0 && $this->tokens[$this->index - 1][Lexer::TYPE_OFFSET] === Lexer::TOKEN_HORIZONTAL_WS) { return $this->tokens[$this->index - 1][Lexer::VALUE_OFFSET]; } return ''; } /** @phpstan-impure */ public function joinUntil(int ...$tokenType) : string { $s = ''; while (!in_array($this->tokens[$this->index][Lexer::TYPE_OFFSET], $tokenType, \true)) { $s .= $this->tokens[$this->index++][Lexer::VALUE_OFFSET]; } return $s; } public function next() : void { $this->index++; $this->skipIrrelevantTokens(); } private function skipIrrelevantTokens() : void { if (!isset($this->tokens[$this->index])) { return; } while (in_array($this->tokens[$this->index][Lexer::TYPE_OFFSET], $this->skippedTokenTypes, \true)) { if (!isset($this->tokens[$this->index + 1])) { break; } $this->index++; } } public function addEndOfLineToSkippedTokens() : void { $this->skippedTokenTypes = [Lexer::TOKEN_HORIZONTAL_WS, Lexer::TOKEN_PHPDOC_EOL]; } public function removeEndOfLineFromSkippedTokens() : void { $this->skippedTokenTypes = [Lexer::TOKEN_HORIZONTAL_WS]; } /** @phpstan-impure */ public function forwardToTheEnd() : void { $lastToken = count($this->tokens) - 1; $this->index = $lastToken; } public function pushSavePoint() : void { $this->savePoints[] = $this->index; } public function dropSavePoint() : void { array_pop($this->savePoints); } public function rollback() : void { $index = array_pop($this->savePoints); assert($index !== null); $this->index = $index; } /** * @throws ParserException */ private function throwError(int $expectedTokenType, ?string $expectedTokenValue = null) : void { throw new \PHPStan\PhpDocParser\Parser\ParserException($this->currentTokenValue(), $this->currentTokenType(), $this->currentTokenOffset(), $expectedTokenType, $expectedTokenValue, $this->currentTokenLine()); } /** * Check whether the position is directly preceded by a certain token type. * * During this check TOKEN_HORIZONTAL_WS and TOKEN_PHPDOC_EOL are skipped */ public function hasTokenImmediatelyBefore(int $pos, int $expectedTokenType) : bool { $tokens = $this->tokens; $pos--; for (; $pos >= 0; $pos--) { $token = $tokens[$pos]; $type = $token[Lexer::TYPE_OFFSET]; if ($type === $expectedTokenType) { return \true; } if (!in_array($type, [Lexer::TOKEN_HORIZONTAL_WS, Lexer::TOKEN_PHPDOC_EOL], \true)) { break; } } return \false; } /** * Check whether the position is directly followed by a certain token type. * * During this check TOKEN_HORIZONTAL_WS and TOKEN_PHPDOC_EOL are skipped */ public function hasTokenImmediatelyAfter(int $pos, int $expectedTokenType) : bool { $tokens = $this->tokens; $pos++; for ($c = count($tokens); $pos < $c; $pos++) { $token = $tokens[$pos]; $type = $token[Lexer::TYPE_OFFSET]; if ($type === $expectedTokenType) { return \true; } if (!in_array($type, [Lexer::TOKEN_HORIZONTAL_WS, Lexer::TOKEN_PHPDOC_EOL], \true)) { break; } } return \false; } public function getDetectedNewline() : ?string { return $this->newline; } /** * Whether the given position is immediately surrounded by parenthesis. */ public function hasParentheses(int $startPos, int $endPos) : bool { return $this->hasTokenImmediatelyBefore($startPos, Lexer::TOKEN_OPEN_PARENTHESES) && $this->hasTokenImmediatelyAfter($endPos, Lexer::TOKEN_CLOSE_PARENTHESES); } } currentTokenValue = $currentTokenValue; $this->currentTokenType = $currentTokenType; $this->currentOffset = $currentOffset; $this->expectedTokenType = $expectedTokenType; $this->expectedTokenValue = $expectedTokenValue; $this->currentTokenLine = $currentTokenLine; parent::__construct(sprintf('Unexpected token %s, expected %s%s at offset %d%s', $this->formatValue($currentTokenValue), Lexer::TOKEN_LABELS[$expectedTokenType], $expectedTokenValue !== null ? sprintf(' (%s)', $this->formatValue($expectedTokenValue)) : '', $currentOffset, $currentTokenLine === null ? '' : sprintf(' on line %d', $currentTokenLine))); } public function getCurrentTokenValue() : string { return $this->currentTokenValue; } public function getCurrentTokenType() : int { return $this->currentTokenType; } public function getCurrentOffset() : int { return $this->currentOffset; } public function getExpectedTokenType() : int { return $this->expectedTokenType; } public function getExpectedTokenValue() : ?string { return $this->expectedTokenValue; } public function getCurrentTokenLine() : ?int { return $this->currentTokenLine; } private function formatValue(string $value) : string { $json = json_encode($value, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_INVALID_UTF8_SUBSTITUTE); assert($json !== \false); return $json; } } typeParser = $typeParser; $this->constantExprParser = $constantExprParser; $this->doctrineConstantExprParser = $constantExprParser->toDoctrine(); $this->requireWhitespaceBeforeDescription = $requireWhitespaceBeforeDescription; $this->preserveTypeAliasesWithInvalidTypes = $preserveTypeAliasesWithInvalidTypes; $this->parseDoctrineAnnotations = $parseDoctrineAnnotations; $this->useLinesAttributes = $usedAttributes['lines'] ?? \false; $this->useIndexAttributes = $usedAttributes['indexes'] ?? \false; $this->textBetweenTagsBelongsToDescription = $textBetweenTagsBelongsToDescription; } public function parse(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\PhpDocNode { $tokens->consumeTokenType(Lexer::TOKEN_OPEN_PHPDOC); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $children = []; if ($this->parseDoctrineAnnotations) { if (!$tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_PHPDOC)) { $lastChild = $this->parseChild($tokens); $children[] = $lastChild; while (!$tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_PHPDOC)) { if ($lastChild instanceof Ast\PhpDoc\PhpDocTagNode && ($lastChild->value instanceof Doctrine\DoctrineTagValueNode || $lastChild->value instanceof Ast\PhpDoc\GenericTagValueNode)) { $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); if ($tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_PHPDOC)) { break; } $lastChild = $this->parseChild($tokens); $children[] = $lastChild; continue; } if (!$tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL)) { break; } if ($tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_PHPDOC)) { break; } $lastChild = $this->parseChild($tokens); $children[] = $lastChild; } } } else { if (!$tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_PHPDOC)) { $children[] = $this->parseChild($tokens); while ($tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL) && !$tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_PHPDOC)) { $children[] = $this->parseChild($tokens); } } } try { $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_PHPDOC); } catch (\PHPStan\PhpDocParser\Parser\ParserException $e) { $name = ''; $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); if (count($children) > 0) { $lastChild = $children[count($children) - 1]; if ($lastChild instanceof Ast\PhpDoc\PhpDocTagNode) { $name = $lastChild->name; $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); } } $tag = new Ast\PhpDoc\PhpDocTagNode($name, $this->enrichWithAttributes($tokens, new Ast\PhpDoc\InvalidTagValueNode($e->getMessage(), $e), $startLine, $startIndex)); $tokens->forwardToTheEnd(); return $this->enrichWithAttributes($tokens, new Ast\PhpDoc\PhpDocNode([$this->enrichWithAttributes($tokens, $tag, $startLine, $startIndex)]), 1, 0); } return $this->enrichWithAttributes($tokens, new Ast\PhpDoc\PhpDocNode(array_values($children)), 1, 0); } /** @phpstan-impure */ private function parseChild(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\PhpDocChildNode { if ($tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_TAG)) { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); return $this->enrichWithAttributes($tokens, $this->parseTag($tokens), $startLine, $startIndex); } if ($tokens->isCurrentTokenType(Lexer::TOKEN_DOCTRINE_TAG)) { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); $tag = $tokens->currentTokenValue(); $tokens->next(); $tagStartLine = $tokens->currentTokenLine(); $tagStartIndex = $tokens->currentTokenIndex(); return $this->enrichWithAttributes($tokens, new Ast\PhpDoc\PhpDocTagNode($tag, $this->enrichWithAttributes($tokens, $this->parseDoctrineTagValue($tokens, $tag), $tagStartLine, $tagStartIndex)), $startLine, $startIndex); } $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); $text = $this->parseText($tokens); return $this->enrichWithAttributes($tokens, $text, $startLine, $startIndex); } /** * @template T of Ast\Node * @param T $tag * @return T */ private function enrichWithAttributes(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\Node $tag, int $startLine, int $startIndex) : Ast\Node { if ($this->useLinesAttributes) { $tag->setAttribute(Ast\Attribute::START_LINE, $startLine); $tag->setAttribute(Ast\Attribute::END_LINE, $tokens->currentTokenLine()); } if ($this->useIndexAttributes) { $tag->setAttribute(Ast\Attribute::START_INDEX, $startIndex); $tag->setAttribute(Ast\Attribute::END_INDEX, $tokens->endIndexOfLastRelevantToken()); } return $tag; } private function parseText(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\PhpDocTextNode { $text = ''; $endTokens = [Lexer::TOKEN_PHPDOC_EOL, Lexer::TOKEN_CLOSE_PHPDOC, Lexer::TOKEN_END]; if ($this->textBetweenTagsBelongsToDescription) { $endTokens = [Lexer::TOKEN_CLOSE_PHPDOC, Lexer::TOKEN_END]; } $savepoint = \false; // if the next token is EOL, everything below is skipped and empty string is returned while ($this->textBetweenTagsBelongsToDescription || !$tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_EOL)) { $tmpText = $tokens->getSkippedHorizontalWhiteSpaceIfAny() . $tokens->joinUntil(Lexer::TOKEN_PHPDOC_EOL, ...$endTokens); $text .= $tmpText; // stop if we're not at EOL - meaning it's the end of PHPDoc if (!$tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_EOL, Lexer::TOKEN_CLOSE_PHPDOC)) { break; } if ($this->textBetweenTagsBelongsToDescription) { if (!$savepoint) { $tokens->pushSavePoint(); $savepoint = \true; } elseif ($tmpText !== '') { $tokens->dropSavePoint(); $tokens->pushSavePoint(); } } $tokens->pushSavePoint(); $tokens->next(); // if we're at EOL, check what's next // if next is a PHPDoc tag, EOL, or end of PHPDoc, stop if ($tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_TAG, Lexer::TOKEN_DOCTRINE_TAG, ...$endTokens)) { $tokens->rollback(); break; } // otherwise if the next is text, continue building the description string $tokens->dropSavePoint(); $text .= $tokens->getDetectedNewline() ?? "\n"; } if ($savepoint) { $tokens->rollback(); $text = rtrim($text, $tokens->getDetectedNewline() ?? "\n"); } return new Ast\PhpDoc\PhpDocTextNode(trim($text, " \t")); } private function parseOptionalDescriptionAfterDoctrineTag(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : string { $text = ''; $endTokens = [Lexer::TOKEN_PHPDOC_EOL, Lexer::TOKEN_CLOSE_PHPDOC, Lexer::TOKEN_END]; if ($this->textBetweenTagsBelongsToDescription) { $endTokens = [Lexer::TOKEN_CLOSE_PHPDOC, Lexer::TOKEN_END]; } $savepoint = \false; // if the next token is EOL, everything below is skipped and empty string is returned while ($this->textBetweenTagsBelongsToDescription || !$tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_EOL)) { $tmpText = $tokens->getSkippedHorizontalWhiteSpaceIfAny() . $tokens->joinUntil(Lexer::TOKEN_PHPDOC_TAG, Lexer::TOKEN_DOCTRINE_TAG, Lexer::TOKEN_PHPDOC_EOL, ...$endTokens); $text .= $tmpText; // stop if we're not at EOL - meaning it's the end of PHPDoc if (!$tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_EOL, Lexer::TOKEN_CLOSE_PHPDOC)) { if (!$tokens->isPrecededByHorizontalWhitespace()) { return trim($text . $this->parseText($tokens)->text, " \t"); } if ($tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_TAG)) { $tokens->pushSavePoint(); $child = $this->parseChild($tokens); if ($child instanceof Ast\PhpDoc\PhpDocTagNode) { if ($child->value instanceof Ast\PhpDoc\GenericTagValueNode || $child->value instanceof Doctrine\DoctrineTagValueNode) { $tokens->rollback(); break; } if ($child->value instanceof Ast\PhpDoc\InvalidTagValueNode) { $tokens->rollback(); $tokens->pushSavePoint(); $tokens->next(); if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_PARENTHESES)) { $tokens->rollback(); break; } $tokens->rollback(); return trim($text . $this->parseText($tokens)->text, " \t"); } } $tokens->rollback(); return trim($text . $this->parseText($tokens)->text, " \t"); } break; } if ($this->textBetweenTagsBelongsToDescription) { if (!$savepoint) { $tokens->pushSavePoint(); $savepoint = \true; } elseif ($tmpText !== '') { $tokens->dropSavePoint(); $tokens->pushSavePoint(); } } $tokens->pushSavePoint(); $tokens->next(); // if we're at EOL, check what's next // if next is a PHPDoc tag, EOL, or end of PHPDoc, stop if ($tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_TAG, Lexer::TOKEN_DOCTRINE_TAG, ...$endTokens)) { $tokens->rollback(); break; } // otherwise if the next is text, continue building the description string $tokens->dropSavePoint(); $text .= $tokens->getDetectedNewline() ?? "\n"; } if ($savepoint) { $tokens->rollback(); $text = rtrim($text, $tokens->getDetectedNewline() ?? "\n"); } return trim($text, " \t"); } public function parseTag(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\PhpDocTagNode { $tag = $tokens->currentTokenValue(); $tokens->next(); $value = $this->parseTagValue($tokens, $tag); return new Ast\PhpDoc\PhpDocTagNode($tag, $value); } public function parseTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, string $tag) : Ast\PhpDoc\PhpDocTagValueNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); try { $tokens->pushSavePoint(); switch ($tag) { case '@param': case '@phpstan-param': case '@psalm-param': case '@phan-param': $tagValue = $this->parseParamTagValue($tokens); break; case '@param-immediately-invoked-callable': case '@phpstan-param-immediately-invoked-callable': $tagValue = $this->parseParamImmediatelyInvokedCallableTagValue($tokens); break; case '@param-later-invoked-callable': case '@phpstan-param-later-invoked-callable': $tagValue = $this->parseParamLaterInvokedCallableTagValue($tokens); break; case '@param-closure-this': case '@phpstan-param-closure-this': $tagValue = $this->parseParamClosureThisTagValue($tokens); break; case '@pure-unless-callable-is-impure': case '@phpstan-pure-unless-callable-is-impure': $tagValue = $this->parsePureUnlessCallableIsImpureTagValue($tokens); break; case '@var': case '@phpstan-var': case '@psalm-var': case '@phan-var': $tagValue = $this->parseVarTagValue($tokens); break; case '@return': case '@phpstan-return': case '@psalm-return': case '@phan-return': case '@phan-real-return': $tagValue = $this->parseReturnTagValue($tokens); break; case '@throws': case '@phpstan-throws': $tagValue = $this->parseThrowsTagValue($tokens); break; case '@mixin': case '@phan-mixin': $tagValue = $this->parseMixinTagValue($tokens); break; case '@psalm-require-extends': case '@phpstan-require-extends': $tagValue = $this->parseRequireExtendsTagValue($tokens); break; case '@psalm-require-implements': case '@phpstan-require-implements': $tagValue = $this->parseRequireImplementsTagValue($tokens); break; case '@deprecated': $tagValue = $this->parseDeprecatedTagValue($tokens); break; case '@property': case '@property-read': case '@property-write': case '@phpstan-property': case '@phpstan-property-read': case '@phpstan-property-write': case '@psalm-property': case '@psalm-property-read': case '@psalm-property-write': case '@phan-property': case '@phan-property-read': case '@phan-property-write': $tagValue = $this->parsePropertyTagValue($tokens); break; case '@method': case '@phpstan-method': case '@psalm-method': case '@phan-method': $tagValue = $this->parseMethodTagValue($tokens); break; case '@template': case '@phpstan-template': case '@psalm-template': case '@phan-template': case '@template-covariant': case '@phpstan-template-covariant': case '@psalm-template-covariant': case '@template-contravariant': case '@phpstan-template-contravariant': case '@psalm-template-contravariant': $tagValue = $this->typeParser->parseTemplateTagValue($tokens, function ($tokens) { return $this->parseOptionalDescription($tokens); }); break; case '@extends': case '@phpstan-extends': case '@phan-extends': case '@phan-inherits': case '@template-extends': $tagValue = $this->parseExtendsTagValue('@extends', $tokens); break; case '@implements': case '@phpstan-implements': case '@template-implements': $tagValue = $this->parseExtendsTagValue('@implements', $tokens); break; case '@use': case '@phpstan-use': case '@template-use': $tagValue = $this->parseExtendsTagValue('@use', $tokens); break; case '@phpstan-type': case '@psalm-type': case '@phan-type': $tagValue = $this->parseTypeAliasTagValue($tokens); break; case '@phpstan-import-type': case '@psalm-import-type': $tagValue = $this->parseTypeAliasImportTagValue($tokens); break; case '@phpstan-assert': case '@phpstan-assert-if-true': case '@phpstan-assert-if-false': case '@psalm-assert': case '@psalm-assert-if-true': case '@psalm-assert-if-false': case '@phan-assert': case '@phan-assert-if-true': case '@phan-assert-if-false': $tagValue = $this->parseAssertTagValue($tokens); break; case '@phpstan-this-out': case '@phpstan-self-out': case '@psalm-this-out': case '@psalm-self-out': $tagValue = $this->parseSelfOutTagValue($tokens); break; case '@param-out': case '@phpstan-param-out': case '@psalm-param-out': $tagValue = $this->parseParamOutTagValue($tokens); break; default: if ($this->parseDoctrineAnnotations) { if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_PARENTHESES)) { $tagValue = $this->parseDoctrineTagValue($tokens, $tag); } else { $tagValue = new Ast\PhpDoc\GenericTagValueNode($this->parseOptionalDescriptionAfterDoctrineTag($tokens)); } break; } $tagValue = new Ast\PhpDoc\GenericTagValueNode($this->parseOptionalDescription($tokens)); break; } $tokens->dropSavePoint(); } catch (\PHPStan\PhpDocParser\Parser\ParserException $e) { $tokens->rollback(); $tagValue = new Ast\PhpDoc\InvalidTagValueNode($this->parseOptionalDescription($tokens), $e); } return $this->enrichWithAttributes($tokens, $tagValue, $startLine, $startIndex); } private function parseDoctrineTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, string $tag) : Ast\PhpDoc\PhpDocTagValueNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); return new Doctrine\DoctrineTagValueNode($this->enrichWithAttributes($tokens, new Doctrine\DoctrineAnnotation($tag, $this->parseDoctrineArguments($tokens, \false)), $startLine, $startIndex), $this->parseOptionalDescriptionAfterDoctrineTag($tokens)); } /** * @return list */ private function parseDoctrineArguments(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, bool $deep) : array { if (!$tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_PARENTHESES)) { return []; } if (!$deep) { $tokens->addEndOfLineToSkippedTokens(); } $arguments = []; try { $tokens->consumeTokenType(Lexer::TOKEN_OPEN_PARENTHESES); do { if ($tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_PARENTHESES)) { break; } $arguments[] = $this->parseDoctrineArgument($tokens); } while ($tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA)); } finally { if (!$deep) { $tokens->removeEndOfLineFromSkippedTokens(); } } $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_PARENTHESES); return $arguments; } private function parseDoctrineArgument(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Doctrine\DoctrineArgument { if (!$tokens->isCurrentTokenType(Lexer::TOKEN_IDENTIFIER)) { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); return $this->enrichWithAttributes($tokens, new Doctrine\DoctrineArgument(null, $this->parseDoctrineArgumentValue($tokens)), $startLine, $startIndex); } $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); try { $tokens->pushSavePoint(); $currentValue = $tokens->currentTokenValue(); $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); $key = $this->enrichWithAttributes($tokens, new IdentifierTypeNode($currentValue), $startLine, $startIndex); $tokens->consumeTokenType(Lexer::TOKEN_EQUAL); $value = $this->parseDoctrineArgumentValue($tokens); $tokens->dropSavePoint(); return $this->enrichWithAttributes($tokens, new Doctrine\DoctrineArgument($key, $value), $startLine, $startIndex); } catch (\PHPStan\PhpDocParser\Parser\ParserException $e) { $tokens->rollback(); return $this->enrichWithAttributes($tokens, new Doctrine\DoctrineArgument(null, $this->parseDoctrineArgumentValue($tokens)), $startLine, $startIndex); } } /** * @return DoctrineValueType */ private function parseDoctrineArgumentValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); if ($tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_TAG, Lexer::TOKEN_DOCTRINE_TAG)) { $name = $tokens->currentTokenValue(); $tokens->next(); return $this->enrichWithAttributes($tokens, new Doctrine\DoctrineAnnotation($name, $this->parseDoctrineArguments($tokens, \true)), $startLine, $startIndex); } if ($tokens->tryConsumeTokenType(Lexer::TOKEN_OPEN_CURLY_BRACKET)) { $items = []; do { if ($tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_CURLY_BRACKET)) { break; } $items[] = $this->parseDoctrineArrayItem($tokens); } while ($tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA)); $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_CURLY_BRACKET); return $this->enrichWithAttributes($tokens, new Doctrine\DoctrineArray($items), $startLine, $startIndex); } $currentTokenValue = $tokens->currentTokenValue(); $tokens->pushSavePoint(); // because of ConstFetchNode if ($tokens->tryConsumeTokenType(Lexer::TOKEN_IDENTIFIER)) { $identifier = $this->enrichWithAttributes($tokens, new Ast\Type\IdentifierTypeNode($currentTokenValue), $startLine, $startIndex); if (!$tokens->isCurrentTokenType(Lexer::TOKEN_DOUBLE_COLON)) { $tokens->dropSavePoint(); return $identifier; } $tokens->rollback(); // because of ConstFetchNode } else { $tokens->dropSavePoint(); // because of ConstFetchNode } $currentTokenValue = $tokens->currentTokenValue(); $currentTokenType = $tokens->currentTokenType(); $currentTokenOffset = $tokens->currentTokenOffset(); $currentTokenLine = $tokens->currentTokenLine(); try { $constExpr = $this->doctrineConstantExprParser->parse($tokens, \true); if ($constExpr instanceof Ast\ConstExpr\ConstExprArrayNode) { throw new \PHPStan\PhpDocParser\Parser\ParserException($currentTokenValue, $currentTokenType, $currentTokenOffset, Lexer::TOKEN_IDENTIFIER, null, $currentTokenLine); } return $constExpr; } catch (LogicException $e) { throw new \PHPStan\PhpDocParser\Parser\ParserException($currentTokenValue, $currentTokenType, $currentTokenOffset, Lexer::TOKEN_IDENTIFIER, null, $currentTokenLine); } } private function parseDoctrineArrayItem(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Doctrine\DoctrineArrayItem { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); try { $tokens->pushSavePoint(); $key = $this->parseDoctrineArrayKey($tokens); if (!$tokens->tryConsumeTokenType(Lexer::TOKEN_EQUAL)) { if (!$tokens->tryConsumeTokenType(Lexer::TOKEN_COLON)) { $tokens->consumeTokenType(Lexer::TOKEN_EQUAL); // will throw exception } } $value = $this->parseDoctrineArgumentValue($tokens); $tokens->dropSavePoint(); return $this->enrichWithAttributes($tokens, new Doctrine\DoctrineArrayItem($key, $value), $startLine, $startIndex); } catch (\PHPStan\PhpDocParser\Parser\ParserException $e) { $tokens->rollback(); return $this->enrichWithAttributes($tokens, new Doctrine\DoctrineArrayItem(null, $this->parseDoctrineArgumentValue($tokens)), $startLine, $startIndex); } } /** * @return ConstExprIntegerNode|ConstExprStringNode|IdentifierTypeNode|ConstFetchNode */ private function parseDoctrineArrayKey(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); if ($tokens->isCurrentTokenType(Lexer::TOKEN_INTEGER)) { $key = new Ast\ConstExpr\ConstExprIntegerNode(str_replace('_', '', $tokens->currentTokenValue())); $tokens->next(); } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_DOCTRINE_ANNOTATION_STRING)) { $key = new Ast\ConstExpr\DoctrineConstExprStringNode(Ast\ConstExpr\DoctrineConstExprStringNode::unescape($tokens->currentTokenValue())); $tokens->next(); } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_DOUBLE_QUOTED_STRING)) { $value = $tokens->currentTokenValue(); $tokens->next(); $key = $this->doctrineConstantExprParser->parseDoctrineString($value, $tokens); } else { $currentTokenValue = $tokens->currentTokenValue(); $tokens->pushSavePoint(); // because of ConstFetchNode if (!$tokens->tryConsumeTokenType(Lexer::TOKEN_IDENTIFIER)) { $tokens->dropSavePoint(); throw new \PHPStan\PhpDocParser\Parser\ParserException($tokens->currentTokenValue(), $tokens->currentTokenType(), $tokens->currentTokenOffset(), Lexer::TOKEN_IDENTIFIER, null, $tokens->currentTokenLine()); } if (!$tokens->isCurrentTokenType(Lexer::TOKEN_DOUBLE_COLON)) { $tokens->dropSavePoint(); return $this->enrichWithAttributes($tokens, new IdentifierTypeNode($currentTokenValue), $startLine, $startIndex); } $tokens->rollback(); $constExpr = $this->doctrineConstantExprParser->parse($tokens, \true); if (!$constExpr instanceof Ast\ConstExpr\ConstFetchNode) { throw new \PHPStan\PhpDocParser\Parser\ParserException($tokens->currentTokenValue(), $tokens->currentTokenType(), $tokens->currentTokenOffset(), Lexer::TOKEN_IDENTIFIER, null, $tokens->currentTokenLine()); } return $constExpr; } return $this->enrichWithAttributes($tokens, $key, $startLine, $startIndex); } /** * @return Ast\PhpDoc\ParamTagValueNode|Ast\PhpDoc\TypelessParamTagValueNode */ private function parseParamTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\PhpDocTagValueNode { if ($tokens->isCurrentTokenType(Lexer::TOKEN_REFERENCE, Lexer::TOKEN_VARIADIC, Lexer::TOKEN_VARIABLE)) { $type = null; } else { $type = $this->typeParser->parse($tokens); } $isReference = $tokens->tryConsumeTokenType(Lexer::TOKEN_REFERENCE); $isVariadic = $tokens->tryConsumeTokenType(Lexer::TOKEN_VARIADIC); $parameterName = $this->parseRequiredVariableName($tokens); $description = $this->parseOptionalDescription($tokens); if ($type !== null) { return new Ast\PhpDoc\ParamTagValueNode($type, $isVariadic, $parameterName, $description, $isReference); } return new Ast\PhpDoc\TypelessParamTagValueNode($isVariadic, $parameterName, $description, $isReference); } private function parseParamImmediatelyInvokedCallableTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\ParamImmediatelyInvokedCallableTagValueNode { $parameterName = $this->parseRequiredVariableName($tokens); $description = $this->parseOptionalDescription($tokens); return new Ast\PhpDoc\ParamImmediatelyInvokedCallableTagValueNode($parameterName, $description); } private function parseParamLaterInvokedCallableTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\ParamLaterInvokedCallableTagValueNode { $parameterName = $this->parseRequiredVariableName($tokens); $description = $this->parseOptionalDescription($tokens); return new Ast\PhpDoc\ParamLaterInvokedCallableTagValueNode($parameterName, $description); } private function parseParamClosureThisTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\ParamClosureThisTagValueNode { $type = $this->typeParser->parse($tokens); $parameterName = $this->parseRequiredVariableName($tokens); $description = $this->parseOptionalDescription($tokens); return new Ast\PhpDoc\ParamClosureThisTagValueNode($type, $parameterName, $description); } private function parsePureUnlessCallableIsImpureTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\PureUnlessCallableIsImpureTagValueNode { $parameterName = $this->parseRequiredVariableName($tokens); $description = $this->parseOptionalDescription($tokens); return new Ast\PhpDoc\PureUnlessCallableIsImpureTagValueNode($parameterName, $description); } private function parseVarTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\VarTagValueNode { $type = $this->typeParser->parse($tokens); $variableName = $this->parseOptionalVariableName($tokens); $description = $this->parseOptionalDescription($tokens, $variableName === ''); return new Ast\PhpDoc\VarTagValueNode($type, $variableName, $description); } private function parseReturnTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\ReturnTagValueNode { $type = $this->typeParser->parse($tokens); $description = $this->parseOptionalDescription($tokens, \true); return new Ast\PhpDoc\ReturnTagValueNode($type, $description); } private function parseThrowsTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\ThrowsTagValueNode { $type = $this->typeParser->parse($tokens); $description = $this->parseOptionalDescription($tokens, \true); return new Ast\PhpDoc\ThrowsTagValueNode($type, $description); } private function parseMixinTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\MixinTagValueNode { $type = $this->typeParser->parse($tokens); $description = $this->parseOptionalDescription($tokens, \true); return new Ast\PhpDoc\MixinTagValueNode($type, $description); } private function parseRequireExtendsTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\RequireExtendsTagValueNode { $type = $this->typeParser->parse($tokens); $description = $this->parseOptionalDescription($tokens, \true); return new Ast\PhpDoc\RequireExtendsTagValueNode($type, $description); } private function parseRequireImplementsTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\RequireImplementsTagValueNode { $type = $this->typeParser->parse($tokens); $description = $this->parseOptionalDescription($tokens, \true); return new Ast\PhpDoc\RequireImplementsTagValueNode($type, $description); } private function parseDeprecatedTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\DeprecatedTagValueNode { $description = $this->parseOptionalDescription($tokens); return new Ast\PhpDoc\DeprecatedTagValueNode($description); } private function parsePropertyTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\PropertyTagValueNode { $type = $this->typeParser->parse($tokens); $parameterName = $this->parseRequiredVariableName($tokens); $description = $this->parseOptionalDescription($tokens); return new Ast\PhpDoc\PropertyTagValueNode($type, $parameterName, $description); } private function parseMethodTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\MethodTagValueNode { $staticKeywordOrReturnTypeOrMethodName = $this->typeParser->parse($tokens); if ($staticKeywordOrReturnTypeOrMethodName instanceof Ast\Type\IdentifierTypeNode && $staticKeywordOrReturnTypeOrMethodName->name === 'static') { $isStatic = \true; $returnTypeOrMethodName = $this->typeParser->parse($tokens); } else { $isStatic = \false; $returnTypeOrMethodName = $staticKeywordOrReturnTypeOrMethodName; } if ($tokens->isCurrentTokenType(Lexer::TOKEN_IDENTIFIER)) { $returnType = $returnTypeOrMethodName; $methodName = $tokens->currentTokenValue(); $tokens->next(); } elseif ($returnTypeOrMethodName instanceof Ast\Type\IdentifierTypeNode) { $returnType = $isStatic ? $staticKeywordOrReturnTypeOrMethodName : null; $methodName = $returnTypeOrMethodName->name; $isStatic = \false; } else { $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); // will throw exception exit; } $templateTypes = []; if ($tokens->tryConsumeTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET)) { do { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); $templateTypes[] = $this->enrichWithAttributes($tokens, $this->typeParser->parseTemplateTagValue($tokens), $startLine, $startIndex); } while ($tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA)); $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET); } $parameters = []; $tokens->consumeTokenType(Lexer::TOKEN_OPEN_PARENTHESES); if (!$tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_PARENTHESES)) { $parameters[] = $this->parseMethodTagValueParameter($tokens); while ($tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA)) { $parameters[] = $this->parseMethodTagValueParameter($tokens); } } $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_PARENTHESES); $description = $this->parseOptionalDescription($tokens); return new Ast\PhpDoc\MethodTagValueNode($isStatic, $returnType, $methodName, $parameters, $description, $templateTypes); } private function parseMethodTagValueParameter(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\MethodTagValueParameterNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); switch ($tokens->currentTokenType()) { case Lexer::TOKEN_IDENTIFIER: case Lexer::TOKEN_OPEN_PARENTHESES: case Lexer::TOKEN_NULLABLE: $parameterType = $this->typeParser->parse($tokens); break; default: $parameterType = null; } $isReference = $tokens->tryConsumeTokenType(Lexer::TOKEN_REFERENCE); $isVariadic = $tokens->tryConsumeTokenType(Lexer::TOKEN_VARIADIC); $parameterName = $tokens->currentTokenValue(); $tokens->consumeTokenType(Lexer::TOKEN_VARIABLE); if ($tokens->tryConsumeTokenType(Lexer::TOKEN_EQUAL)) { $defaultValue = $this->constantExprParser->parse($tokens); } else { $defaultValue = null; } return $this->enrichWithAttributes($tokens, new Ast\PhpDoc\MethodTagValueParameterNode($parameterType, $isReference, $isVariadic, $parameterName, $defaultValue), $startLine, $startIndex); } private function parseExtendsTagValue(string $tagName, \PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\PhpDocTagValueNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); $baseType = new IdentifierTypeNode($tokens->currentTokenValue()); $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); $type = $this->typeParser->parseGeneric($tokens, $this->typeParser->enrichWithAttributes($tokens, $baseType, $startLine, $startIndex)); $description = $this->parseOptionalDescription($tokens); switch ($tagName) { case '@extends': return new Ast\PhpDoc\ExtendsTagValueNode($type, $description); case '@implements': return new Ast\PhpDoc\ImplementsTagValueNode($type, $description); case '@use': return new Ast\PhpDoc\UsesTagValueNode($type, $description); } throw new ShouldNotHappenException(); } private function parseTypeAliasTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\TypeAliasTagValueNode { $alias = $tokens->currentTokenValue(); $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); // support phan-type/psalm-type syntax $tokens->tryConsumeTokenType(Lexer::TOKEN_EQUAL); if ($this->preserveTypeAliasesWithInvalidTypes) { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); try { $type = $this->typeParser->parse($tokens); if (!$tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_PHPDOC)) { if (!$tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_EOL)) { throw new \PHPStan\PhpDocParser\Parser\ParserException($tokens->currentTokenValue(), $tokens->currentTokenType(), $tokens->currentTokenOffset(), Lexer::TOKEN_PHPDOC_EOL, null, $tokens->currentTokenLine()); } } return new Ast\PhpDoc\TypeAliasTagValueNode($alias, $type); } catch (\PHPStan\PhpDocParser\Parser\ParserException $e) { $this->parseOptionalDescription($tokens); return new Ast\PhpDoc\TypeAliasTagValueNode($alias, $this->enrichWithAttributes($tokens, new Ast\Type\InvalidTypeNode($e), $startLine, $startIndex)); } } $type = $this->typeParser->parse($tokens); return new Ast\PhpDoc\TypeAliasTagValueNode($alias, $type); } private function parseTypeAliasImportTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\TypeAliasImportTagValueNode { $importedAlias = $tokens->currentTokenValue(); $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); $tokens->consumeTokenValue(Lexer::TOKEN_IDENTIFIER, 'from'); $identifierStartLine = $tokens->currentTokenLine(); $identifierStartIndex = $tokens->currentTokenIndex(); $importedFrom = $tokens->currentTokenValue(); $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); $importedFromType = $this->enrichWithAttributes($tokens, new IdentifierTypeNode($importedFrom), $identifierStartLine, $identifierStartIndex); $importedAs = null; if ($tokens->tryConsumeTokenValue('as')) { $importedAs = $tokens->currentTokenValue(); $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); } return new Ast\PhpDoc\TypeAliasImportTagValueNode($importedAlias, $importedFromType, $importedAs); } /** * @return Ast\PhpDoc\AssertTagValueNode|Ast\PhpDoc\AssertTagPropertyValueNode|Ast\PhpDoc\AssertTagMethodValueNode */ private function parseAssertTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\PhpDocTagValueNode { $isNegated = $tokens->tryConsumeTokenType(Lexer::TOKEN_NEGATED); $isEquality = $tokens->tryConsumeTokenType(Lexer::TOKEN_EQUAL); $type = $this->typeParser->parse($tokens); $parameter = $this->parseAssertParameter($tokens); $description = $this->parseOptionalDescription($tokens); if (array_key_exists('method', $parameter)) { return new Ast\PhpDoc\AssertTagMethodValueNode($type, $parameter['parameter'], $parameter['method'], $isNegated, $description, $isEquality); } elseif (array_key_exists('property', $parameter)) { return new Ast\PhpDoc\AssertTagPropertyValueNode($type, $parameter['parameter'], $parameter['property'], $isNegated, $description, $isEquality); } return new Ast\PhpDoc\AssertTagValueNode($type, $parameter['parameter'], $isNegated, $description, $isEquality); } /** * @return array{parameter: string}|array{parameter: string, property: string}|array{parameter: string, method: string} */ private function parseAssertParameter(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : array { if ($tokens->isCurrentTokenType(Lexer::TOKEN_THIS_VARIABLE)) { $parameter = '$this'; $tokens->next(); } else { $parameter = $tokens->currentTokenValue(); $tokens->consumeTokenType(Lexer::TOKEN_VARIABLE); } if ($tokens->isCurrentTokenType(Lexer::TOKEN_ARROW)) { $tokens->consumeTokenType(Lexer::TOKEN_ARROW); $propertyOrMethod = $tokens->currentTokenValue(); $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); if ($tokens->tryConsumeTokenType(Lexer::TOKEN_OPEN_PARENTHESES)) { $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_PARENTHESES); return ['parameter' => $parameter, 'method' => $propertyOrMethod]; } return ['parameter' => $parameter, 'property' => $propertyOrMethod]; } return ['parameter' => $parameter]; } private function parseSelfOutTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\SelfOutTagValueNode { $type = $this->typeParser->parse($tokens); $description = $this->parseOptionalDescription($tokens); return new Ast\PhpDoc\SelfOutTagValueNode($type, $description); } private function parseParamOutTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\ParamOutTagValueNode { $type = $this->typeParser->parse($tokens); $parameterName = $this->parseRequiredVariableName($tokens); $description = $this->parseOptionalDescription($tokens); return new Ast\PhpDoc\ParamOutTagValueNode($type, $parameterName, $description); } private function parseOptionalVariableName(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : string { if ($tokens->isCurrentTokenType(Lexer::TOKEN_VARIABLE)) { $parameterName = $tokens->currentTokenValue(); $tokens->next(); } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_THIS_VARIABLE)) { $parameterName = '$this'; $tokens->next(); } else { $parameterName = ''; } return $parameterName; } private function parseRequiredVariableName(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : string { $parameterName = $tokens->currentTokenValue(); $tokens->consumeTokenType(Lexer::TOKEN_VARIABLE); return $parameterName; } private function parseOptionalDescription(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, bool $limitStartToken = \false) : string { if ($limitStartToken) { foreach (self::DISALLOWED_DESCRIPTION_START_TOKENS as $disallowedStartToken) { if (!$tokens->isCurrentTokenType($disallowedStartToken)) { continue; } $tokens->consumeTokenType(Lexer::TOKEN_OTHER); // will throw exception } if ($this->requireWhitespaceBeforeDescription && !$tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_EOL, Lexer::TOKEN_CLOSE_PHPDOC, Lexer::TOKEN_END) && !$tokens->isPrecededByHorizontalWhitespace()) { $tokens->consumeTokenType(Lexer::TOKEN_HORIZONTAL_WS); // will throw exception } } return $this->parseText($tokens)->text; } } unescapeStrings = $unescapeStrings; $this->quoteAwareConstExprString = $quoteAwareConstExprString; $this->useLinesAttributes = $usedAttributes['lines'] ?? \false; $this->useIndexAttributes = $usedAttributes['indexes'] ?? \false; $this->parseDoctrineStrings = \false; } /** * @internal */ public function toDoctrine() : self { $self = new self($this->unescapeStrings, $this->quoteAwareConstExprString, ['lines' => $this->useLinesAttributes, 'indexes' => $this->useIndexAttributes]); $self->parseDoctrineStrings = \true; return $self; } public function parse(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, bool $trimStrings = \false) : Ast\ConstExpr\ConstExprNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); if ($tokens->isCurrentTokenType(Lexer::TOKEN_FLOAT)) { $value = $tokens->currentTokenValue(); $tokens->next(); return $this->enrichWithAttributes($tokens, new Ast\ConstExpr\ConstExprFloatNode(str_replace('_', '', $value)), $startLine, $startIndex); } if ($tokens->isCurrentTokenType(Lexer::TOKEN_INTEGER)) { $value = $tokens->currentTokenValue(); $tokens->next(); return $this->enrichWithAttributes($tokens, new Ast\ConstExpr\ConstExprIntegerNode(str_replace('_', '', $value)), $startLine, $startIndex); } if ($this->parseDoctrineStrings && $tokens->isCurrentTokenType(Lexer::TOKEN_DOCTRINE_ANNOTATION_STRING)) { $value = $tokens->currentTokenValue(); $tokens->next(); return $this->enrichWithAttributes($tokens, new Ast\ConstExpr\DoctrineConstExprStringNode(Ast\ConstExpr\DoctrineConstExprStringNode::unescape($value)), $startLine, $startIndex); } if ($tokens->isCurrentTokenType(Lexer::TOKEN_SINGLE_QUOTED_STRING, Lexer::TOKEN_DOUBLE_QUOTED_STRING)) { if ($this->parseDoctrineStrings) { if ($tokens->isCurrentTokenType(Lexer::TOKEN_SINGLE_QUOTED_STRING)) { throw new \PHPStan\PhpDocParser\Parser\ParserException($tokens->currentTokenValue(), $tokens->currentTokenType(), $tokens->currentTokenOffset(), Lexer::TOKEN_DOUBLE_QUOTED_STRING, null, $tokens->currentTokenLine()); } $value = $tokens->currentTokenValue(); $tokens->next(); return $this->enrichWithAttributes($tokens, $this->parseDoctrineString($value, $tokens), $startLine, $startIndex); } $value = $tokens->currentTokenValue(); $type = $tokens->currentTokenType(); if ($trimStrings) { if ($this->unescapeStrings) { $value = \PHPStan\PhpDocParser\Parser\StringUnescaper::unescapeString($value); } else { $value = substr($value, 1, -1); } } $tokens->next(); if ($this->quoteAwareConstExprString) { return $this->enrichWithAttributes($tokens, new Ast\ConstExpr\QuoteAwareConstExprStringNode($value, $type === Lexer::TOKEN_SINGLE_QUOTED_STRING ? Ast\ConstExpr\QuoteAwareConstExprStringNode::SINGLE_QUOTED : Ast\ConstExpr\QuoteAwareConstExprStringNode::DOUBLE_QUOTED), $startLine, $startIndex); } return $this->enrichWithAttributes($tokens, new Ast\ConstExpr\ConstExprStringNode($value), $startLine, $startIndex); } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_IDENTIFIER)) { $identifier = $tokens->currentTokenValue(); $tokens->next(); switch (strtolower($identifier)) { case 'true': return $this->enrichWithAttributes($tokens, new Ast\ConstExpr\ConstExprTrueNode(), $startLine, $startIndex); case 'false': return $this->enrichWithAttributes($tokens, new Ast\ConstExpr\ConstExprFalseNode(), $startLine, $startIndex); case 'null': return $this->enrichWithAttributes($tokens, new Ast\ConstExpr\ConstExprNullNode(), $startLine, $startIndex); case 'array': $tokens->consumeTokenType(Lexer::TOKEN_OPEN_PARENTHESES); return $this->parseArray($tokens, Lexer::TOKEN_CLOSE_PARENTHESES, $startIndex); } if ($tokens->tryConsumeTokenType(Lexer::TOKEN_DOUBLE_COLON)) { $classConstantName = ''; $lastType = null; while (\true) { if ($lastType !== Lexer::TOKEN_IDENTIFIER && $tokens->currentTokenType() === Lexer::TOKEN_IDENTIFIER) { $classConstantName .= $tokens->currentTokenValue(); $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); $lastType = Lexer::TOKEN_IDENTIFIER; continue; } if ($lastType !== Lexer::TOKEN_WILDCARD && $tokens->tryConsumeTokenType(Lexer::TOKEN_WILDCARD)) { $classConstantName .= '*'; $lastType = Lexer::TOKEN_WILDCARD; if ($tokens->getSkippedHorizontalWhiteSpaceIfAny() !== '') { break; } continue; } if ($lastType === null) { // trigger parse error if nothing valid was consumed $tokens->consumeTokenType(Lexer::TOKEN_WILDCARD); } break; } return $this->enrichWithAttributes($tokens, new Ast\ConstExpr\ConstFetchNode($identifier, $classConstantName), $startLine, $startIndex); } return $this->enrichWithAttributes($tokens, new Ast\ConstExpr\ConstFetchNode('', $identifier), $startLine, $startIndex); } elseif ($tokens->tryConsumeTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { return $this->parseArray($tokens, Lexer::TOKEN_CLOSE_SQUARE_BRACKET, $startIndex); } throw new \PHPStan\PhpDocParser\Parser\ParserException($tokens->currentTokenValue(), $tokens->currentTokenType(), $tokens->currentTokenOffset(), Lexer::TOKEN_IDENTIFIER, null, $tokens->currentTokenLine()); } private function parseArray(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, int $endToken, int $startIndex) : Ast\ConstExpr\ConstExprArrayNode { $items = []; $startLine = $tokens->currentTokenLine(); if (!$tokens->tryConsumeTokenType($endToken)) { do { $items[] = $this->parseArrayItem($tokens); } while ($tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA) && !$tokens->isCurrentTokenType($endToken)); $tokens->consumeTokenType($endToken); } return $this->enrichWithAttributes($tokens, new Ast\ConstExpr\ConstExprArrayNode($items), $startLine, $startIndex); } /** * This method is supposed to be called with TokenIterator after reading TOKEN_DOUBLE_QUOTED_STRING and shifting * to the next token. */ public function parseDoctrineString(string $text, \PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\ConstExpr\DoctrineConstExprStringNode { // Because of how Lexer works, a valid Doctrine string // can consist of a sequence of TOKEN_DOUBLE_QUOTED_STRING and TOKEN_DOCTRINE_ANNOTATION_STRING while ($tokens->isCurrentTokenType(Lexer::TOKEN_DOUBLE_QUOTED_STRING, Lexer::TOKEN_DOCTRINE_ANNOTATION_STRING)) { $text .= $tokens->currentTokenValue(); $tokens->next(); } return new Ast\ConstExpr\DoctrineConstExprStringNode(Ast\ConstExpr\DoctrineConstExprStringNode::unescape($text)); } private function parseArrayItem(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\ConstExpr\ConstExprArrayItemNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); $expr = $this->parse($tokens); if ($tokens->tryConsumeTokenType(Lexer::TOKEN_DOUBLE_ARROW)) { $key = $expr; $value = $this->parse($tokens); } else { $key = null; $value = $expr; } return $this->enrichWithAttributes($tokens, new Ast\ConstExpr\ConstExprArrayItemNode($key, $value), $startLine, $startIndex); } /** * @template T of Ast\ConstExpr\ConstExprNode * @param T $node * @return T */ private function enrichWithAttributes(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\ConstExpr\ConstExprNode $node, int $startLine, int $startIndex) : Ast\ConstExpr\ConstExprNode { if ($this->useLinesAttributes) { $node->setAttribute(Ast\Attribute::START_LINE, $startLine); $node->setAttribute(Ast\Attribute::END_LINE, $tokens->currentTokenLine()); } if ($this->useIndexAttributes) { $node->setAttribute(Ast\Attribute::START_INDEX, $startIndex); $node->setAttribute(Ast\Attribute::END_INDEX, $tokens->endIndexOfLastRelevantToken()); } return $node; } } constExprParser = $constExprParser; $this->quoteAwareConstExprString = $quoteAwareConstExprString; $this->useLinesAttributes = $usedAttributes['lines'] ?? \false; $this->useIndexAttributes = $usedAttributes['indexes'] ?? \false; } /** @phpstan-impure */ public function parse(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\TypeNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); if ($tokens->isCurrentTokenType(Lexer::TOKEN_NULLABLE)) { $type = $this->parseNullable($tokens); } else { $type = $this->parseAtomic($tokens); if ($tokens->isCurrentTokenType(Lexer::TOKEN_UNION)) { $type = $this->parseUnion($tokens, $type); } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_INTERSECTION)) { $type = $this->parseIntersection($tokens, $type); } } return $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex); } /** * @internal * @template T of Ast\Node * @param T $type * @return T */ public function enrichWithAttributes(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\Node $type, int $startLine, int $startIndex) : Ast\Node { if ($this->useLinesAttributes) { $type->setAttribute(Ast\Attribute::START_LINE, $startLine); $type->setAttribute(Ast\Attribute::END_LINE, $tokens->currentTokenLine()); } if ($this->useIndexAttributes) { $type->setAttribute(Ast\Attribute::START_INDEX, $startIndex); $type->setAttribute(Ast\Attribute::END_INDEX, $tokens->endIndexOfLastRelevantToken()); } return $type; } /** @phpstan-impure */ private function subParse(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\TypeNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); if ($tokens->isCurrentTokenType(Lexer::TOKEN_NULLABLE)) { $type = $this->parseNullable($tokens); } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_VARIABLE)) { $type = $this->parseConditionalForParameter($tokens, $tokens->currentTokenValue()); } else { $type = $this->parseAtomic($tokens); if ($tokens->isCurrentTokenValue('is')) { $type = $this->parseConditional($tokens, $type); } else { $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); if ($tokens->isCurrentTokenType(Lexer::TOKEN_UNION)) { $type = $this->subParseUnion($tokens, $type); } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_INTERSECTION)) { $type = $this->subParseIntersection($tokens, $type); } } } return $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex); } /** @phpstan-impure */ private function parseAtomic(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\TypeNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); if ($tokens->tryConsumeTokenType(Lexer::TOKEN_OPEN_PARENTHESES)) { $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $type = $this->subParse($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_PARENTHESES); if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { $type = $this->tryParseArrayOrOffsetAccess($tokens, $type); } return $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex); } if ($tokens->tryConsumeTokenType(Lexer::TOKEN_THIS_VARIABLE)) { $type = $this->enrichWithAttributes($tokens, new Ast\Type\ThisTypeNode(), $startLine, $startIndex); if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { $type = $this->tryParseArrayOrOffsetAccess($tokens, $type); } return $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex); } $currentTokenValue = $tokens->currentTokenValue(); $tokens->pushSavePoint(); // because of ConstFetchNode if ($tokens->tryConsumeTokenType(Lexer::TOKEN_IDENTIFIER)) { $type = $this->enrichWithAttributes($tokens, new Ast\Type\IdentifierTypeNode($currentTokenValue), $startLine, $startIndex); if (!$tokens->isCurrentTokenType(Lexer::TOKEN_DOUBLE_COLON)) { $tokens->dropSavePoint(); // because of ConstFetchNode if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET)) { $tokens->pushSavePoint(); $isHtml = $this->isHtml($tokens); $tokens->rollback(); if ($isHtml) { return $type; } $origType = $type; $type = $this->tryParseCallable($tokens, $type, \true); if ($type === $origType) { $type = $this->parseGeneric($tokens, $type); if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { $type = $this->tryParseArrayOrOffsetAccess($tokens, $type); } } } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_PARENTHESES)) { $type = $this->tryParseCallable($tokens, $type, \false); } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { $type = $this->tryParseArrayOrOffsetAccess($tokens, $type); } elseif (in_array($type->name, [Ast\Type\ArrayShapeNode::KIND_ARRAY, Ast\Type\ArrayShapeNode::KIND_LIST, Ast\Type\ArrayShapeNode::KIND_NON_EMPTY_ARRAY, Ast\Type\ArrayShapeNode::KIND_NON_EMPTY_LIST, 'object'], \true) && $tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_CURLY_BRACKET) && !$tokens->isPrecededByHorizontalWhitespace()) { if ($type->name === 'object') { $type = $this->parseObjectShape($tokens); } else { $type = $this->parseArrayShape($tokens, $type, $type->name); } if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { $type = $this->tryParseArrayOrOffsetAccess($tokens, $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex)); } } return $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex); } else { $tokens->rollback(); // because of ConstFetchNode } } else { $tokens->dropSavePoint(); // because of ConstFetchNode } $currentTokenValue = $tokens->currentTokenValue(); $currentTokenType = $tokens->currentTokenType(); $currentTokenOffset = $tokens->currentTokenOffset(); $currentTokenLine = $tokens->currentTokenLine(); if ($this->constExprParser === null) { throw new \PHPStan\PhpDocParser\Parser\ParserException($currentTokenValue, $currentTokenType, $currentTokenOffset, Lexer::TOKEN_IDENTIFIER, null, $currentTokenLine); } try { $constExpr = $this->constExprParser->parse($tokens, \true); if ($constExpr instanceof Ast\ConstExpr\ConstExprArrayNode) { throw new \PHPStan\PhpDocParser\Parser\ParserException($currentTokenValue, $currentTokenType, $currentTokenOffset, Lexer::TOKEN_IDENTIFIER, null, $currentTokenLine); } $type = $this->enrichWithAttributes($tokens, new Ast\Type\ConstTypeNode($constExpr), $startLine, $startIndex); if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { $type = $this->tryParseArrayOrOffsetAccess($tokens, $type); } return $type; } catch (LogicException $e) { throw new \PHPStan\PhpDocParser\Parser\ParserException($currentTokenValue, $currentTokenType, $currentTokenOffset, Lexer::TOKEN_IDENTIFIER, null, $currentTokenLine); } } /** @phpstan-impure */ private function parseUnion(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\Type\TypeNode $type) : Ast\Type\TypeNode { $types = [$type]; while ($tokens->tryConsumeTokenType(Lexer::TOKEN_UNION)) { $types[] = $this->parseAtomic($tokens); } return new Ast\Type\UnionTypeNode($types); } /** @phpstan-impure */ private function subParseUnion(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\Type\TypeNode $type) : Ast\Type\TypeNode { $types = [$type]; while ($tokens->tryConsumeTokenType(Lexer::TOKEN_UNION)) { $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $types[] = $this->parseAtomic($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); } return new Ast\Type\UnionTypeNode($types); } /** @phpstan-impure */ private function parseIntersection(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\Type\TypeNode $type) : Ast\Type\TypeNode { $types = [$type]; while ($tokens->tryConsumeTokenType(Lexer::TOKEN_INTERSECTION)) { $types[] = $this->parseAtomic($tokens); } return new Ast\Type\IntersectionTypeNode($types); } /** @phpstan-impure */ private function subParseIntersection(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\Type\TypeNode $type) : Ast\Type\TypeNode { $types = [$type]; while ($tokens->tryConsumeTokenType(Lexer::TOKEN_INTERSECTION)) { $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $types[] = $this->parseAtomic($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); } return new Ast\Type\IntersectionTypeNode($types); } /** @phpstan-impure */ private function parseConditional(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\Type\TypeNode $subjectType) : Ast\Type\TypeNode { $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); $negated = \false; if ($tokens->isCurrentTokenValue('not')) { $negated = \true; $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); } $targetType = $this->parse($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $tokens->consumeTokenType(Lexer::TOKEN_NULLABLE); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $ifType = $this->parse($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $tokens->consumeTokenType(Lexer::TOKEN_COLON); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $elseType = $this->subParse($tokens); return new Ast\Type\ConditionalTypeNode($subjectType, $targetType, $ifType, $elseType, $negated); } /** @phpstan-impure */ private function parseConditionalForParameter(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, string $parameterName) : Ast\Type\TypeNode { $tokens->consumeTokenType(Lexer::TOKEN_VARIABLE); $tokens->consumeTokenValue(Lexer::TOKEN_IDENTIFIER, 'is'); $negated = \false; if ($tokens->isCurrentTokenValue('not')) { $negated = \true; $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); } $targetType = $this->parse($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $tokens->consumeTokenType(Lexer::TOKEN_NULLABLE); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $ifType = $this->parse($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $tokens->consumeTokenType(Lexer::TOKEN_COLON); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $elseType = $this->subParse($tokens); return new Ast\Type\ConditionalTypeForParameterNode($parameterName, $targetType, $ifType, $elseType, $negated); } /** @phpstan-impure */ private function parseNullable(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\TypeNode { $tokens->consumeTokenType(Lexer::TOKEN_NULLABLE); $type = $this->parseAtomic($tokens); return new Ast\Type\NullableTypeNode($type); } /** @phpstan-impure */ public function isHtml(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : bool { $tokens->consumeTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET); if (!$tokens->isCurrentTokenType(Lexer::TOKEN_IDENTIFIER)) { return \false; } $htmlTagName = $tokens->currentTokenValue(); $tokens->next(); if (!$tokens->tryConsumeTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET)) { return \false; } $endTag = ''; $endTagSearchOffset = -strlen($endTag); while (!$tokens->isCurrentTokenType(Lexer::TOKEN_END)) { if ($tokens->tryConsumeTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET) && strpos($tokens->currentTokenValue(), '/' . $htmlTagName . '>') !== \false || substr_compare($tokens->currentTokenValue(), $endTag, $endTagSearchOffset) === 0) { return \true; } $tokens->next(); } return \false; } /** @phpstan-impure */ public function parseGeneric(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\Type\IdentifierTypeNode $baseType) : Ast\Type\GenericTypeNode { $tokens->consumeTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET); $startLine = $baseType->getAttribute(Ast\Attribute::START_LINE); $startIndex = $baseType->getAttribute(Ast\Attribute::START_INDEX); $genericTypes = []; $variances = []; $isFirst = \true; while ($isFirst || $tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA)) { $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); // trailing comma case if (!$isFirst && $tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET)) { break; } $isFirst = \false; [$genericTypes[], $variances[]] = $this->parseGenericTypeArgument($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); } $type = new Ast\Type\GenericTypeNode($baseType, $genericTypes, $variances); if ($startLine !== null && $startIndex !== null) { $type = $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex); } $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET); return $type; } /** * @phpstan-impure * @return array{Ast\Type\TypeNode, Ast\Type\GenericTypeNode::VARIANCE_*} */ public function parseGenericTypeArgument(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : array { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); if ($tokens->tryConsumeTokenType(Lexer::TOKEN_WILDCARD)) { return [$this->enrichWithAttributes($tokens, new Ast\Type\IdentifierTypeNode('mixed'), $startLine, $startIndex), Ast\Type\GenericTypeNode::VARIANCE_BIVARIANT]; } if ($tokens->tryConsumeTokenValue('contravariant')) { $variance = Ast\Type\GenericTypeNode::VARIANCE_CONTRAVARIANT; } elseif ($tokens->tryConsumeTokenValue('covariant')) { $variance = Ast\Type\GenericTypeNode::VARIANCE_COVARIANT; } else { $variance = Ast\Type\GenericTypeNode::VARIANCE_INVARIANT; } $type = $this->parse($tokens); return [$type, $variance]; } /** * @throws ParserException * @param ?callable(TokenIterator): string $parseDescription */ public function parseTemplateTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, ?callable $parseDescription = null) : TemplateTagValueNode { $name = $tokens->currentTokenValue(); $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); $upperBound = $lowerBound = null; if ($tokens->tryConsumeTokenValue('of') || $tokens->tryConsumeTokenValue('as')) { $upperBound = $this->parse($tokens); } if ($tokens->tryConsumeTokenValue('super')) { $lowerBound = $this->parse($tokens); } if ($tokens->tryConsumeTokenValue('=')) { $default = $this->parse($tokens); } else { $default = null; } if ($parseDescription !== null) { $description = $parseDescription($tokens); } else { $description = ''; } if ($name === '') { throw new LogicException('Template tag name cannot be empty.'); } return new Ast\PhpDoc\TemplateTagValueNode($name, $upperBound, $description, $default, $lowerBound); } /** @phpstan-impure */ private function parseCallable(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\Type\IdentifierTypeNode $identifier, bool $hasTemplate) : Ast\Type\TypeNode { $templates = $hasTemplate ? $this->parseCallableTemplates($tokens) : []; $tokens->consumeTokenType(Lexer::TOKEN_OPEN_PARENTHESES); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $parameters = []; if (!$tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_PARENTHESES)) { $parameters[] = $this->parseCallableParameter($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); while ($tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA)) { $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); if ($tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_PARENTHESES)) { break; } $parameters[] = $this->parseCallableParameter($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); } } $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_PARENTHESES); $tokens->consumeTokenType(Lexer::TOKEN_COLON); $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); $returnType = $this->enrichWithAttributes($tokens, $this->parseCallableReturnType($tokens), $startLine, $startIndex); return new Ast\Type\CallableTypeNode($identifier, $parameters, $returnType, $templates); } /** * @return Ast\PhpDoc\TemplateTagValueNode[] * * @phpstan-impure */ private function parseCallableTemplates(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : array { $tokens->consumeTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET); $templates = []; $isFirst = \true; while ($isFirst || $tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA)) { $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); // trailing comma case if (!$isFirst && $tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET)) { break; } $isFirst = \false; $templates[] = $this->parseCallableTemplateArgument($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); } $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET); return $templates; } private function parseCallableTemplateArgument(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\TemplateTagValueNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); return $this->enrichWithAttributes($tokens, $this->parseTemplateTagValue($tokens), $startLine, $startIndex); } /** @phpstan-impure */ private function parseCallableParameter(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\CallableTypeParameterNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); $type = $this->parse($tokens); $isReference = $tokens->tryConsumeTokenType(Lexer::TOKEN_REFERENCE); $isVariadic = $tokens->tryConsumeTokenType(Lexer::TOKEN_VARIADIC); if ($tokens->isCurrentTokenType(Lexer::TOKEN_VARIABLE)) { $parameterName = $tokens->currentTokenValue(); $tokens->consumeTokenType(Lexer::TOKEN_VARIABLE); } else { $parameterName = ''; } $isOptional = $tokens->tryConsumeTokenType(Lexer::TOKEN_EQUAL); return $this->enrichWithAttributes($tokens, new Ast\Type\CallableTypeParameterNode($type, $isReference, $isVariadic, $parameterName, $isOptional), $startLine, $startIndex); } /** @phpstan-impure */ private function parseCallableReturnType(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\TypeNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); if ($tokens->isCurrentTokenType(Lexer::TOKEN_NULLABLE)) { return $this->parseNullable($tokens); } elseif ($tokens->tryConsumeTokenType(Lexer::TOKEN_OPEN_PARENTHESES)) { $type = $this->subParse($tokens); $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_PARENTHESES); if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { $type = $this->tryParseArrayOrOffsetAccess($tokens, $type); } return $type; } elseif ($tokens->tryConsumeTokenType(Lexer::TOKEN_THIS_VARIABLE)) { $type = new Ast\Type\ThisTypeNode(); if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { $type = $this->tryParseArrayOrOffsetAccess($tokens, $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex)); } return $type; } else { $currentTokenValue = $tokens->currentTokenValue(); $tokens->pushSavePoint(); // because of ConstFetchNode if ($tokens->tryConsumeTokenType(Lexer::TOKEN_IDENTIFIER)) { $type = new Ast\Type\IdentifierTypeNode($currentTokenValue); if (!$tokens->isCurrentTokenType(Lexer::TOKEN_DOUBLE_COLON)) { if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET)) { $type = $this->parseGeneric($tokens, $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex)); if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { $type = $this->tryParseArrayOrOffsetAccess($tokens, $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex)); } } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { $type = $this->tryParseArrayOrOffsetAccess($tokens, $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex)); } elseif (in_array($type->name, [Ast\Type\ArrayShapeNode::KIND_ARRAY, Ast\Type\ArrayShapeNode::KIND_LIST, Ast\Type\ArrayShapeNode::KIND_NON_EMPTY_ARRAY, Ast\Type\ArrayShapeNode::KIND_NON_EMPTY_LIST, 'object'], \true) && $tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_CURLY_BRACKET) && !$tokens->isPrecededByHorizontalWhitespace()) { if ($type->name === 'object') { $type = $this->parseObjectShape($tokens); } else { $type = $this->parseArrayShape($tokens, $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex), $type->name); } if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { $type = $this->tryParseArrayOrOffsetAccess($tokens, $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex)); } } return $type; } else { $tokens->rollback(); // because of ConstFetchNode } } else { $tokens->dropSavePoint(); // because of ConstFetchNode } } $currentTokenValue = $tokens->currentTokenValue(); $currentTokenType = $tokens->currentTokenType(); $currentTokenOffset = $tokens->currentTokenOffset(); $currentTokenLine = $tokens->currentTokenLine(); if ($this->constExprParser === null) { throw new \PHPStan\PhpDocParser\Parser\ParserException($currentTokenValue, $currentTokenType, $currentTokenOffset, Lexer::TOKEN_IDENTIFIER, null, $currentTokenLine); } try { $constExpr = $this->constExprParser->parse($tokens, \true); if ($constExpr instanceof Ast\ConstExpr\ConstExprArrayNode) { throw new \PHPStan\PhpDocParser\Parser\ParserException($currentTokenValue, $currentTokenType, $currentTokenOffset, Lexer::TOKEN_IDENTIFIER, null, $currentTokenLine); } $type = $this->enrichWithAttributes($tokens, new Ast\Type\ConstTypeNode($constExpr), $startLine, $startIndex); if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { $type = $this->tryParseArrayOrOffsetAccess($tokens, $type); } return $type; } catch (LogicException $e) { throw new \PHPStan\PhpDocParser\Parser\ParserException($currentTokenValue, $currentTokenType, $currentTokenOffset, Lexer::TOKEN_IDENTIFIER, null, $currentTokenLine); } } /** @phpstan-impure */ private function tryParseCallable(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\Type\IdentifierTypeNode $identifier, bool $hasTemplate) : Ast\Type\TypeNode { try { $tokens->pushSavePoint(); $type = $this->parseCallable($tokens, $identifier, $hasTemplate); $tokens->dropSavePoint(); } catch (\PHPStan\PhpDocParser\Parser\ParserException $e) { $tokens->rollback(); $type = $identifier; } return $type; } /** @phpstan-impure */ private function tryParseArrayOrOffsetAccess(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\Type\TypeNode $type) : Ast\Type\TypeNode { $startLine = $type->getAttribute(Ast\Attribute::START_LINE); $startIndex = $type->getAttribute(Ast\Attribute::START_INDEX); try { while ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) { $tokens->pushSavePoint(); $canBeOffsetAccessType = !$tokens->isPrecededByHorizontalWhitespace(); $tokens->consumeTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET); if ($canBeOffsetAccessType && !$tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_SQUARE_BRACKET)) { $offset = $this->parse($tokens); $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_SQUARE_BRACKET); $tokens->dropSavePoint(); $type = new Ast\Type\OffsetAccessTypeNode($type, $offset); if ($startLine !== null && $startIndex !== null) { $type = $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex); } } else { $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_SQUARE_BRACKET); $tokens->dropSavePoint(); $type = new Ast\Type\ArrayTypeNode($type); if ($startLine !== null && $startIndex !== null) { $type = $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex); } } } } catch (\PHPStan\PhpDocParser\Parser\ParserException $e) { $tokens->rollback(); } return $type; } /** * @phpstan-impure * @param Ast\Type\ArrayShapeNode::KIND_* $kind */ private function parseArrayShape(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\Type\TypeNode $type, string $kind) : Ast\Type\ArrayShapeNode { $tokens->consumeTokenType(Lexer::TOKEN_OPEN_CURLY_BRACKET); $items = []; $sealed = \true; $unsealedType = null; do { $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); if ($tokens->tryConsumeTokenType(Lexer::TOKEN_CLOSE_CURLY_BRACKET)) { return new Ast\Type\ArrayShapeNode($items, \true, $kind); } if ($tokens->tryConsumeTokenType(Lexer::TOKEN_VARIADIC)) { $sealed = \false; $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET)) { if ($kind === Ast\Type\ArrayShapeNode::KIND_ARRAY) { $unsealedType = $this->parseArrayShapeUnsealedType($tokens); } else { $unsealedType = $this->parseListShapeUnsealedType($tokens); } $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); } $tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA); break; } $items[] = $this->parseArrayShapeItem($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); } while ($tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA)); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_CURLY_BRACKET); return new Ast\Type\ArrayShapeNode($items, $sealed, $kind, $unsealedType); } /** @phpstan-impure */ private function parseArrayShapeItem(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\ArrayShapeItemNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); try { $tokens->pushSavePoint(); $key = $this->parseArrayShapeKey($tokens); $optional = $tokens->tryConsumeTokenType(Lexer::TOKEN_NULLABLE); $tokens->consumeTokenType(Lexer::TOKEN_COLON); $value = $this->parse($tokens); $tokens->dropSavePoint(); return $this->enrichWithAttributes($tokens, new Ast\Type\ArrayShapeItemNode($key, $optional, $value), $startLine, $startIndex); } catch (\PHPStan\PhpDocParser\Parser\ParserException $e) { $tokens->rollback(); $value = $this->parse($tokens); return $this->enrichWithAttributes($tokens, new Ast\Type\ArrayShapeItemNode(null, \false, $value), $startLine, $startIndex); } } /** * @phpstan-impure * @return Ast\ConstExpr\ConstExprIntegerNode|Ast\ConstExpr\ConstExprStringNode|Ast\Type\IdentifierTypeNode */ private function parseArrayShapeKey(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) { $startIndex = $tokens->currentTokenIndex(); $startLine = $tokens->currentTokenLine(); if ($tokens->isCurrentTokenType(Lexer::TOKEN_INTEGER)) { $key = new Ast\ConstExpr\ConstExprIntegerNode(str_replace('_', '', $tokens->currentTokenValue())); $tokens->next(); } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_SINGLE_QUOTED_STRING)) { if ($this->quoteAwareConstExprString) { $key = new Ast\ConstExpr\QuoteAwareConstExprStringNode(\PHPStan\PhpDocParser\Parser\StringUnescaper::unescapeString($tokens->currentTokenValue()), Ast\ConstExpr\QuoteAwareConstExprStringNode::SINGLE_QUOTED); } else { $key = new Ast\ConstExpr\ConstExprStringNode(trim($tokens->currentTokenValue(), "'")); } $tokens->next(); } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_DOUBLE_QUOTED_STRING)) { if ($this->quoteAwareConstExprString) { $key = new Ast\ConstExpr\QuoteAwareConstExprStringNode(\PHPStan\PhpDocParser\Parser\StringUnescaper::unescapeString($tokens->currentTokenValue()), Ast\ConstExpr\QuoteAwareConstExprStringNode::DOUBLE_QUOTED); } else { $key = new Ast\ConstExpr\ConstExprStringNode(trim($tokens->currentTokenValue(), '"')); } $tokens->next(); } else { $key = new Ast\Type\IdentifierTypeNode($tokens->currentTokenValue()); $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); } return $this->enrichWithAttributes($tokens, $key, $startLine, $startIndex); } /** * @phpstan-impure */ private function parseArrayShapeUnsealedType(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\ArrayShapeUnsealedTypeNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); $tokens->consumeTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $valueType = $this->parse($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $keyType = null; if ($tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA)) { $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $keyType = $valueType; $valueType = $this->parse($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); } $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET); return $this->enrichWithAttributes($tokens, new Ast\Type\ArrayShapeUnsealedTypeNode($valueType, $keyType), $startLine, $startIndex); } /** * @phpstan-impure */ private function parseListShapeUnsealedType(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\ArrayShapeUnsealedTypeNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); $tokens->consumeTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $valueType = $this->parse($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET); return $this->enrichWithAttributes($tokens, new Ast\Type\ArrayShapeUnsealedTypeNode($valueType, null), $startLine, $startIndex); } /** * @phpstan-impure */ private function parseObjectShape(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\ObjectShapeNode { $tokens->consumeTokenType(Lexer::TOKEN_OPEN_CURLY_BRACKET); $items = []; do { $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); if ($tokens->tryConsumeTokenType(Lexer::TOKEN_CLOSE_CURLY_BRACKET)) { return new Ast\Type\ObjectShapeNode($items); } $items[] = $this->parseObjectShapeItem($tokens); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); } while ($tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA)); $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL); $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_CURLY_BRACKET); return new Ast\Type\ObjectShapeNode($items); } /** @phpstan-impure */ private function parseObjectShapeItem(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\ObjectShapeItemNode { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); $key = $this->parseObjectShapeKey($tokens); $optional = $tokens->tryConsumeTokenType(Lexer::TOKEN_NULLABLE); $tokens->consumeTokenType(Lexer::TOKEN_COLON); $value = $this->parse($tokens); return $this->enrichWithAttributes($tokens, new Ast\Type\ObjectShapeItemNode($key, $optional, $value), $startLine, $startIndex); } /** * @phpstan-impure * @return Ast\ConstExpr\ConstExprStringNode|Ast\Type\IdentifierTypeNode */ private function parseObjectShapeKey(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) { $startLine = $tokens->currentTokenLine(); $startIndex = $tokens->currentTokenIndex(); if ($tokens->isCurrentTokenType(Lexer::TOKEN_SINGLE_QUOTED_STRING)) { if ($this->quoteAwareConstExprString) { $key = new Ast\ConstExpr\QuoteAwareConstExprStringNode(\PHPStan\PhpDocParser\Parser\StringUnescaper::unescapeString($tokens->currentTokenValue()), Ast\ConstExpr\QuoteAwareConstExprStringNode::SINGLE_QUOTED); } else { $key = new Ast\ConstExpr\ConstExprStringNode(trim($tokens->currentTokenValue(), "'")); } $tokens->next(); } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_DOUBLE_QUOTED_STRING)) { if ($this->quoteAwareConstExprString) { $key = new Ast\ConstExpr\QuoteAwareConstExprStringNode(\PHPStan\PhpDocParser\Parser\StringUnescaper::unescapeString($tokens->currentTokenValue()), Ast\ConstExpr\QuoteAwareConstExprStringNode::DOUBLE_QUOTED); } else { $key = new Ast\ConstExpr\ConstExprStringNode(trim($tokens->currentTokenValue(), '"')); } $tokens->next(); } else { $key = new Ast\Type\IdentifierTypeNode($tokens->currentTokenValue()); $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); } return $this->enrichWithAttributes($tokens, $key, $startLine, $startIndex); } } '\\', 'n' => "\n", 'r' => "\r", 't' => "\t", 'f' => "\f", 'v' => "\v", 'e' => "\x1b"]; public static function unescapeString(string $string) : string { $quote = $string[0]; if ($quote === '\'') { return str_replace(['\\\\', '\\\''], ['\\', '\''], substr($string, 1, -1)); } return self::parseEscapeSequences(substr($string, 1, -1), '"'); } /** * Implementation based on https://github.com/nikic/PHP-Parser/blob/b0edd4c41111042d43bb45c6c657b2e0db367d9e/lib/PhpParser/Node/Scalar/String_.php#L90-L130 */ private static function parseEscapeSequences(string $str, string $quote) : string { $str = str_replace('\\' . $quote, $quote, $str); return preg_replace_callback('~\\\\([\\\\nrtfve]|[xX][0-9a-fA-F]{1,2}|[0-7]{1,3}|u\\{([0-9a-fA-F]+)\\})~', static function ($matches) { $str = $matches[1]; if (isset(self::REPLACEMENTS[$str])) { return self::REPLACEMENTS[$str]; } if ($str[0] === 'x' || $str[0] === 'X') { return chr((int) hexdec(substr($str, 1))); } if ($str[0] === 'u') { if (!isset($matches[2])) { throw new ShouldNotHappenException(); } return self::codePointToUtf8((int) hexdec($matches[2])); } return chr((int) octdec($str)); }, $str); } /** * Implementation based on https://github.com/nikic/PHP-Parser/blob/b0edd4c41111042d43bb45c6c657b2e0db367d9e/lib/PhpParser/Node/Scalar/String_.php#L132-L154 */ private static function codePointToUtf8(int $num) : string { if ($num <= 0x7f) { return chr($num); } if ($num <= 0x7ff) { return chr(($num >> 6) + 0xc0) . chr(($num & 0x3f) + 0x80); } if ($num <= 0xffff) { return chr(($num >> 12) + 0xe0) . chr(($num >> 6 & 0x3f) + 0x80) . chr(($num & 0x3f) + 0x80); } if ($num <= 0x1fffff) { return chr(($num >> 18) + 0xf0) . chr(($num >> 12 & 0x3f) + 0x80) . chr(($num >> 6 & 0x3f) + 0x80) . chr(($num & 0x3f) + 0x80); } // Invalid UTF-8 codepoint escape sequence: Codepoint too large return "�"; } } */ private $attributes = []; /** * @param mixed $value */ public function setAttribute(string $key, $value) : void { $this->attributes[$key] = $value; } public function hasAttribute(string $key) : bool { return array_key_exists($key, $this->attributes); } /** * @return mixed */ public function getAttribute(string $key) { if ($this->hasAttribute($key)) { return $this->attributes[$key]; } return null; } } type = $type; $this->isReference = $isReference; $this->isVariadic = $isVariadic; $this->parameterName = $parameterName; $this->description = $description; } public function __toString() : string { $reference = $this->isReference ? '&' : ''; $variadic = $this->isVariadic ? '...' : ''; return trim("{$this->type} {$reference}{$variadic}{$this->parameterName} {$this->description}"); } } value = $value; $this->exceptionArgs = [$exception->getCurrentTokenValue(), $exception->getCurrentTokenType(), $exception->getCurrentOffset(), $exception->getExpectedTokenType(), $exception->getExpectedTokenValue(), $exception->getCurrentTokenLine()]; } public function __get(string $name) : ?ParserException { if ($name !== 'exception') { trigger_error(sprintf('Undefined property: %s::$%s', self::class, $name), E_USER_WARNING); return null; } return new ParserException(...$this->exceptionArgs); } public function __toString() : string { return $this->value; } } type = $type; $this->parameterName = $parameterName; $this->description = $description; } public function __toString() : string { return trim("{$this->type} {$this->parameterName} {$this->description}"); } } parameterName = $parameterName; $this->description = $description; } public function __toString() : string { return trim("{$this->parameterName} {$this->description}"); } } value = $value; } public function __toString() : string { return $this->value; } } text = $text; } public function __toString() : string { return $this->text; } } type = $type; $this->description = $description; } public function __toString() : string { return trim("{$this->type} {$this->description}"); } } type = $type; $this->parameterName = $parameterName; $this->description = $description; } public function __toString() : string { return trim("{$this->type} {$this->parameterName} {$this->description}"); } } key = $key; $this->value = $value; } public function __toString() : string { if ($this->key === null) { return (string) $this->value; } return $this->key . '=' . $this->value; } } key = $key; $this->value = $value; } public function __toString() : string { if ($this->key === null) { return (string) $this->value; } return $this->key . '=' . $this->value; } } annotation = $annotation; $this->description = $description; } public function __toString() : string { return trim("{$this->annotation} {$this->description}"); } } */ public $items; /** * @param list $items */ public function __construct(array $items) { $this->items = $items; } public function __toString() : string { $items = implode(', ', $this->items); return '{' . $items . '}'; } } */ public $arguments; /** * @param list $arguments */ public function __construct(string $name, array $arguments) { $this->name = $name; $this->arguments = $arguments; } public function __toString() : string { $arguments = implode(', ', $this->arguments); return $this->name . '(' . $arguments . ')'; } } type = $type; $this->parameter = $parameter; $this->isNegated = $isNegated; $this->isEquality = $isEquality; $this->description = $description; } public function __toString() : string { $isNegated = $this->isNegated ? '!' : ''; $isEquality = $this->isEquality ? '=' : ''; return trim("{$isNegated}{$isEquality}{$this->type} {$this->parameter} {$this->description}"); } } type = $type; $this->propertyName = $propertyName; $this->description = $description; } public function __toString() : string { return trim("{$this->type} {$this->propertyName} {$this->description}"); } } type = $type; $this->description = $description; } public function __toString() : string { return trim("{$this->type} {$this->description}"); } } type = $type; $this->isReference = $isReference; $this->isVariadic = $isVariadic; $this->parameterName = $parameterName; $this->defaultValue = $defaultValue; } public function __toString() : string { $type = $this->type !== null ? "{$this->type} " : ''; $isReference = $this->isReference ? '&' : ''; $isVariadic = $this->isVariadic ? '...' : ''; $default = $this->defaultValue !== null ? " = {$this->defaultValue}" : ''; return "{$type}{$isReference}{$isVariadic}{$this->parameterName}{$default}"; } } type = $type; $this->description = $description; } public function __toString() : string { return trim("{$this->type} {$this->description}"); } } type = $type; $this->description = $description; } public function __toString() : string { return trim($this->type . ' ' . $this->description); } } type = $type; $this->description = $description; } public function __toString() : string { return trim("{$this->type} {$this->description}"); } } isStatic = $isStatic; $this->returnType = $returnType; $this->methodName = $methodName; $this->parameters = $parameters; $this->description = $description; $this->templateTypes = $templateTypes; } public function __toString() : string { $static = $this->isStatic ? 'static ' : ''; $returnType = $this->returnType !== null ? "{$this->returnType} " : ''; $parameters = implode(', ', $this->parameters); $description = $this->description !== '' ? " {$this->description}" : ''; $templateTypes = count($this->templateTypes) > 0 ? '<' . implode(', ', $this->templateTypes) . '>' : ''; return "{$static}{$returnType}{$this->methodName}{$templateTypes}({$parameters}){$description}"; } } type = $type; $this->description = $description; } public function __toString() : string { return trim("{$this->type} {$this->description}"); } } type = $type; $this->parameter = $parameter; $this->property = $property; $this->isNegated = $isNegated; $this->isEquality = $isEquality; $this->description = $description; } public function __toString() : string { $isNegated = $this->isNegated ? '!' : ''; $isEquality = $this->isEquality ? '=' : ''; return trim("{$isNegated}{$isEquality}{$this->type} {$this->parameter}->{$this->property} {$this->description}"); } } parameterName = $parameterName; $this->description = $description; } public function __toString() : string { return trim("{$this->parameterName} {$this->description}"); } } type = $type; $this->parameter = $parameter; $this->method = $method; $this->isNegated = $isNegated; $this->isEquality = $isEquality; $this->description = $description; } public function __toString() : string { $isNegated = $this->isNegated ? '!' : ''; $isEquality = $this->isEquality ? '=' : ''; return trim("{$isNegated}{$isEquality}{$this->type} {$this->parameter}->{$this->method}() {$this->description}"); } } type = $type; $this->variableName = $variableName; $this->description = $description; } public function __toString() : string { return trim("{$this->type} " . trim("{$this->variableName} {$this->description}")); } } description = $description; } public function __toString() : string { return trim($this->description); } } name = $name; $this->value = $value; } public function __toString() : string { if ($this->value instanceof DoctrineTagValueNode) { return (string) $this->value; } return trim("{$this->name} {$this->value}"); } } type = $type; $this->description = $description; } public function __toString() : string { return trim("{$this->type} {$this->description}"); } } name = $name; $this->bound = $bound; $this->lowerBound = $lowerBound; $this->default = $default; $this->description = $description; } public function __toString() : string { $upperBound = $this->bound !== null ? " of {$this->bound}" : ''; $lowerBound = $this->lowerBound !== null ? " super {$this->lowerBound}" : ''; $default = $this->default !== null ? " = {$this->default}" : ''; return trim("{$this->name}{$upperBound}{$lowerBound}{$default} {$this->description}"); } } type = $type; $this->description = $description; } public function __toString() : string { return trim("{$this->type} {$this->description}"); } } alias = $alias; $this->type = $type; } public function __toString() : string { return trim("{$this->alias} {$this->type}"); } } isReference = $isReference; $this->isVariadic = $isVariadic; $this->parameterName = $parameterName; $this->description = $description; } public function __toString() : string { $reference = $this->isReference ? '&' : ''; $variadic = $this->isVariadic ? '...' : ''; return trim("{$reference}{$variadic}{$this->parameterName} {$this->description}"); } } importedAlias = $importedAlias; $this->importedFrom = $importedFrom; $this->importedAs = $importedAs; } public function __toString() : string { return trim("{$this->importedAlias} from {$this->importedFrom}" . ($this->importedAs !== null ? " as {$this->importedAs}" : '')); } } type = $type; $this->description = $description; } public function __toString() : string { return trim("{$this->type} {$this->description}"); } } children = $children; } /** * @return PhpDocTagNode[] */ public function getTags() : array { return array_filter($this->children, static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocChildNode $child) : bool { return $child instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode; }); } /** * @return PhpDocTagNode[] */ public function getTagsByName(string $tagName) : array { return array_filter($this->getTags(), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode $tag) use($tagName) : bool { return $tag->name === $tagName; }); } /** * @return VarTagValueNode[] */ public function getVarTagValues(string $tagName = '@var') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode; }); } /** * @return ParamTagValueNode[] */ public function getParamTagValues(string $tagName = '@param') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode; }); } /** * @return TypelessParamTagValueNode[] */ public function getTypelessParamTagValues(string $tagName = '@param') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\TypelessParamTagValueNode; }); } /** * @return ParamImmediatelyInvokedCallableTagValueNode[] */ public function getParamImmediatelyInvokedCallableTagValues(string $tagName = '@param-immediately-invoked-callable') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\ParamImmediatelyInvokedCallableTagValueNode; }); } /** * @return ParamLaterInvokedCallableTagValueNode[] */ public function getParamLaterInvokedCallableTagValues(string $tagName = '@param-later-invoked-callable') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\ParamLaterInvokedCallableTagValueNode; }); } /** * @return ParamClosureThisTagValueNode[] */ public function getParamClosureThisTagValues(string $tagName = '@param-closure-this') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\ParamClosureThisTagValueNode; }); } /** * @return PureUnlessCallableIsImpureTagValueNode[] */ public function getPureUnlessCallableIsImpureTagValues(string $tagName = '@pure-unless-callable-is-impure') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\PureUnlessCallableIsImpureTagValueNode; }); } /** * @return TemplateTagValueNode[] */ public function getTemplateTagValues(string $tagName = '@template') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\TemplateTagValueNode; }); } /** * @return ExtendsTagValueNode[] */ public function getExtendsTagValues(string $tagName = '@extends') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\ExtendsTagValueNode; }); } /** * @return ImplementsTagValueNode[] */ public function getImplementsTagValues(string $tagName = '@implements') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\ImplementsTagValueNode; }); } /** * @return UsesTagValueNode[] */ public function getUsesTagValues(string $tagName = '@use') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\UsesTagValueNode; }); } /** * @return ReturnTagValueNode[] */ public function getReturnTagValues(string $tagName = '@return') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\ReturnTagValueNode; }); } /** * @return ThrowsTagValueNode[] */ public function getThrowsTagValues(string $tagName = '@throws') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\ThrowsTagValueNode; }); } /** * @return MixinTagValueNode[] */ public function getMixinTagValues(string $tagName = '@mixin') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\MixinTagValueNode; }); } /** * @return RequireExtendsTagValueNode[] */ public function getRequireExtendsTagValues(string $tagName = '@phpstan-require-extends') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\RequireExtendsTagValueNode; }); } /** * @return RequireImplementsTagValueNode[] */ public function getRequireImplementsTagValues(string $tagName = '@phpstan-require-implements') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\RequireImplementsTagValueNode; }); } /** * @return DeprecatedTagValueNode[] */ public function getDeprecatedTagValues() : array { return array_filter(array_column($this->getTagsByName('@deprecated'), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\DeprecatedTagValueNode; }); } /** * @return PropertyTagValueNode[] */ public function getPropertyTagValues(string $tagName = '@property') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\PropertyTagValueNode; }); } /** * @return PropertyTagValueNode[] */ public function getPropertyReadTagValues(string $tagName = '@property-read') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\PropertyTagValueNode; }); } /** * @return PropertyTagValueNode[] */ public function getPropertyWriteTagValues(string $tagName = '@property-write') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\PropertyTagValueNode; }); } /** * @return MethodTagValueNode[] */ public function getMethodTagValues(string $tagName = '@method') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\MethodTagValueNode; }); } /** * @return TypeAliasTagValueNode[] */ public function getTypeAliasTagValues(string $tagName = '@phpstan-type') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\TypeAliasTagValueNode; }); } /** * @return TypeAliasImportTagValueNode[] */ public function getTypeAliasImportTagValues(string $tagName = '@phpstan-import-type') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\TypeAliasImportTagValueNode; }); } /** * @return AssertTagValueNode[] */ public function getAssertTagValues(string $tagName = '@phpstan-assert') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\AssertTagValueNode; }); } /** * @return AssertTagPropertyValueNode[] */ public function getAssertPropertyTagValues(string $tagName = '@phpstan-assert') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\AssertTagPropertyValueNode; }); } /** * @return AssertTagMethodValueNode[] */ public function getAssertMethodTagValues(string $tagName = '@phpstan-assert') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\AssertTagMethodValueNode; }); } /** * @return SelfOutTagValueNode[] */ public function getSelfOutTypeTagValues(string $tagName = '@phpstan-this-out') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\SelfOutTagValueNode; }); } /** * @return ParamOutTagValueNode[] */ public function getParamOutTypeTagValues(string $tagName = '@param-out') : array { return array_filter(array_column($this->getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool { return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\ParamOutTagValueNode; }); } public function __toString() : string { $children = array_map(static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocChildNode $child) : string { $s = (string) $child; return $s === '' ? '' : ' ' . $s; }, $this->children); return "/**\n *" . implode("\n *", $children) . "\n */"; } } parameterName = $parameterName; $this->description = $description; } public function __toString() : string { return trim("{$this->parameterName} {$this->description}"); } } type = $type; $this->genericTypes = $genericTypes; $this->variances = $variances; } public function __toString() : string { $genericTypes = []; foreach ($this->genericTypes as $index => $type) { $variance = $this->variances[$index] ?? self::VARIANCE_INVARIANT; if ($variance === self::VARIANCE_INVARIANT) { $genericTypes[] = (string) $type; } elseif ($variance === self::VARIANCE_BIVARIANT) { $genericTypes[] = '*'; } else { $genericTypes[] = sprintf('%s %s', $variance, $type); } } return $this->type . '<' . implode(', ', $genericTypes) . '>'; } } types = $types; } public function __toString() : string { return '(' . implode(' | ', array_map(static function (\PHPStan\PhpDocParser\Ast\Type\TypeNode $type) : string { if ($type instanceof \PHPStan\PhpDocParser\Ast\Type\NullableTypeNode) { return '(' . $type . ')'; } return (string) $type; }, $this->types)) . ')'; } } parameterName = $parameterName; $this->targetType = $targetType; $this->if = $if; $this->else = $else; $this->negated = $negated; } public function __toString() : string { return sprintf('(%s %s %s ? %s : %s)', $this->parameterName, $this->negated ? 'is not' : 'is', $this->targetType, $this->if, $this->else); } } items = $items; $this->sealed = $sealed; $this->kind = $kind; $this->unsealedType = $unsealedType; } public function __toString() : string { $items = $this->items; if (!$this->sealed) { $items[] = '...' . $this->unsealedType; } return $this->kind . '{' . implode(', ', $items) . '}'; } } type = $type; $this->offset = $offset; } public function __toString() : string { if ($this->type instanceof \PHPStan\PhpDocParser\Ast\Type\CallableTypeNode || $this->type instanceof \PHPStan\PhpDocParser\Ast\Type\NullableTypeNode) { return '(' . $this->type . ')[' . $this->offset . ']'; } return $this->type . '[' . $this->offset . ']'; } } keyName = $keyName; $this->optional = $optional; $this->valueType = $valueType; } public function __toString() : string { if ($this->keyName !== null) { return sprintf('%s%s: %s', (string) $this->keyName, $this->optional ? '?' : '', (string) $this->valueType); } return (string) $this->valueType; } } exceptionArgs = [$exception->getCurrentTokenValue(), $exception->getCurrentTokenType(), $exception->getCurrentOffset(), $exception->getExpectedTokenType(), $exception->getExpectedTokenValue(), $exception->getCurrentTokenLine()]; } public function getException() : ParserException { return new ParserException(...$this->exceptionArgs); } public function __toString() : string { return '*Invalid type*'; } } type = $type; $this->isReference = $isReference; $this->isVariadic = $isVariadic; $this->parameterName = $parameterName; $this->isOptional = $isOptional; } public function __toString() : string { $type = "{$this->type} "; $isReference = $this->isReference ? '&' : ''; $isVariadic = $this->isVariadic ? '...' : ''; $isOptional = $this->isOptional ? '=' : ''; return trim("{$type}{$isReference}{$isVariadic}{$this->parameterName}") . $isOptional; } } subjectType = $subjectType; $this->targetType = $targetType; $this->if = $if; $this->else = $else; $this->negated = $negated; } public function __toString() : string { return sprintf('(%s %s %s ? %s : %s)', $this->subjectType, $this->negated ? 'is not' : 'is', $this->targetType, $this->if, $this->else); } } keyName = $keyName; $this->optional = $optional; $this->valueType = $valueType; } public function __toString() : string { if ($this->keyName !== null) { return sprintf('%s%s: %s', (string) $this->keyName, $this->optional ? '?' : '', (string) $this->valueType); } return (string) $this->valueType; } } type = $type; } public function __toString() : string { return '?' . $this->type; } } type = $type; } public function __toString() : string { if ($this->type instanceof \PHPStan\PhpDocParser\Ast\Type\CallableTypeNode || $this->type instanceof \PHPStan\PhpDocParser\Ast\Type\ConstTypeNode || $this->type instanceof \PHPStan\PhpDocParser\Ast\Type\NullableTypeNode) { return '(' . $this->type . ')[]'; } return $this->type . '[]'; } } identifier = $identifier; $this->parameters = $parameters; $this->returnType = $returnType; $this->templateTypes = $templateTypes; } public function __toString() : string { $returnType = $this->returnType; if ($returnType instanceof self) { $returnType = "({$returnType})"; } $template = $this->templateTypes !== [] ? '<' . implode(', ', $this->templateTypes) . '>' : ''; $parameters = implode(', ', $this->parameters); return "{$this->identifier}{$template}({$parameters}): {$returnType}"; } } valueType = $valueType; $this->keyType = $keyType; } public function __toString() : string { if ($this->keyType !== null) { return sprintf('<%s, %s>', $this->keyType, $this->valueType); } return sprintf('<%s>', $this->valueType); } } constExpr = $constExpr; } public function __toString() : string { return $this->constExpr->__toString(); } } types = $types; } public function __toString() : string { return '(' . implode(' & ', array_map(static function (\PHPStan\PhpDocParser\Ast\Type\TypeNode $type) : string { if ($type instanceof \PHPStan\PhpDocParser\Ast\Type\NullableTypeNode) { return '(' . $type . ')'; } return (string) $type; }, $this->types)) . ')'; } } items = $items; } public function __toString() : string { $items = $this->items; return 'object{' . implode(', ', $items) . '}'; } } name = $name; } public function __toString() : string { return $this->name; } } className = $className; $this->name = $name; } public function __toString() : string { if ($this->className === '') { return $this->name; } return "{$this->className}::{$this->name}"; } } quoteType = $quoteType; } public function __toString() : string { if ($this->quoteType === self::SINGLE_QUOTED) { // from https://github.com/nikic/PHP-Parser/blob/0ffddce52d816f72d0efc4d9b02e276d3309ef01/lib/PhpParser/PrettyPrinter/Standard.php#L1007 return sprintf("'%s'", addcslashes($this->value, '\'\\')); } // from https://github.com/nikic/PHP-Parser/blob/0ffddce52d816f72d0efc4d9b02e276d3309ef01/lib/PhpParser/PrettyPrinter/Standard.php#L1010-L1040 return sprintf('"%s"', $this->escapeDoubleQuotedString()); } private function escapeDoubleQuotedString() : string { $quote = '"'; $escaped = addcslashes($this->value, "\n\r\t\f\v\$" . $quote . '\\'); // Escape control characters and non-UTF-8 characters. // Regex based on https://stackoverflow.com/a/11709412/385378. $regex = '/( [\\x00-\\x08\\x0E-\\x1F] # Control characters | [\\xC0-\\xC1] # Invalid UTF-8 Bytes | [\\xF5-\\xFF] # Invalid UTF-8 Bytes | \\xE0(?=[\\x80-\\x9F]) # Overlong encoding of prior code point | \\xF0(?=[\\x80-\\x8F]) # Overlong encoding of prior code point | [\\xC2-\\xDF](?![\\x80-\\xBF]) # Invalid UTF-8 Sequence Start | [\\xE0-\\xEF](?![\\x80-\\xBF]{2}) # Invalid UTF-8 Sequence Start | [\\xF0-\\xF4](?![\\x80-\\xBF]{3}) # Invalid UTF-8 Sequence Start | (?<=[\\x00-\\x7F\\xF5-\\xFF])[\\x80-\\xBF] # Invalid UTF-8 Sequence Middle | (?key = $key; $this->value = $value; } public function __toString() : string { if ($this->key !== null) { return sprintf('%s => %s', $this->key, $this->value); } return (string) $this->value; } } items = $items; } public function __toString() : string { return '[' . implode(', ', $this->items) . ']'; } } value = $value; } public function __toString() : string { return self::escape($this->value); } public static function unescape(string $value) : string { // from https://github.com/doctrine/annotations/blob/a9ec7af212302a75d1f92fa65d3abfbd16245a2a/lib/Doctrine/Common/Annotations/DocLexer.php#L103-L107 return str_replace('""', '"', substr($value, 1, strlen($value) - 2)); } private static function escape(string $value) : string { // from https://github.com/phpstan/phpdoc-parser/issues/205#issuecomment-1662323656 return sprintf('"%s"', str_replace('"', '""', $value)); } } value = $value; } public function __toString() : string { return $this->value; } } value = $value; } public function __toString() : string { return $this->value; } } value = $value; } public function __toString() : string { return $this->value; } } setAttribute(Attribute::ORIGINAL_NODE, $originalNode); return $node; } } $node stays as-is * * array (of Nodes) * => The return value is merged into the parent array (at the position of the $node) * * NodeTraverser::REMOVE_NODE * => $node is removed from the parent array * * NodeTraverser::DONT_TRAVERSE_CHILDREN * => Children of $node are not traversed. $node stays as-is * * NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN * => Further visitors for the current node are skipped, and its children are not * traversed. $node stays as-is. * * NodeTraverser::STOP_TRAVERSAL * => Traversal is aborted. $node stays as-is * * otherwise * => $node is set to the return value * * @param Node $node Node * * @return Node|Node[]|NodeTraverser::*|null Replacement node (or special return value) */ public function enterNode(\PHPStan\PhpDocParser\Ast\Node $node); /** * Called when leaving a node. * * Return value semantics: * * null * => $node stays as-is * * NodeTraverser::REMOVE_NODE * => $node is removed from the parent array * * NodeTraverser::STOP_TRAVERSAL * => Traversal is aborted. $node stays as-is * * array (of Nodes) * => The return value is merged into the parent array (at the position of the $node) * * otherwise * => $node is set to the return value * * @param Node $node Node * * @return Node|Node[]|NodeTraverser::REMOVE_NODE|NodeTraverser::STOP_TRAVERSAL|null Replacement node (or special return value) */ public function leaveNode(\PHPStan\PhpDocParser\Ast\Node $node); /** * Called once after traversal. * * Return value semantics: * * null: $nodes stays as-is * * otherwise: $nodes is set to the return value * * @param Node[] $nodes Array of nodes * * @return Node[]|null Array of nodes */ public function afterTraverse(array $nodes) : ?array; } Visitors */ private $visitors = []; /** @var bool Whether traversal should be stopped */ private $stopTraversal; /** * @param list $visitors */ public function __construct(array $visitors) { $this->visitors = $visitors; } /** * Traverses an array of nodes using the registered visitors. * * @param Node[] $nodes Array of nodes * * @return Node[] Traversed array of nodes */ public function traverse(array $nodes) : array { $this->stopTraversal = \false; foreach ($this->visitors as $visitor) { $return = $visitor->beforeTraverse($nodes); if ($return === null) { continue; } $nodes = $return; } $nodes = $this->traverseArray($nodes); foreach ($this->visitors as $visitor) { $return = $visitor->afterTraverse($nodes); if ($return === null) { continue; } $nodes = $return; } return $nodes; } /** * Recursively traverse a node. * * @param Node $node Node to traverse. * * @return Node Result of traversal (may be original node or new one) */ private function traverseNode(\PHPStan\PhpDocParser\Ast\Node $node) : \PHPStan\PhpDocParser\Ast\Node { $subNodeNames = array_keys(get_object_vars($node)); foreach ($subNodeNames as $name) { $subNode =& $node->{$name}; if (is_array($subNode)) { $subNode = $this->traverseArray($subNode); if ($this->stopTraversal) { break; } } elseif ($subNode instanceof \PHPStan\PhpDocParser\Ast\Node) { $traverseChildren = \true; $breakVisitorIndex = null; foreach ($this->visitors as $visitorIndex => $visitor) { $return = $visitor->enterNode($subNode); if ($return === null) { continue; } if ($return instanceof \PHPStan\PhpDocParser\Ast\Node) { $this->ensureReplacementReasonable($subNode, $return); $subNode = $return; } elseif ($return === self::DONT_TRAVERSE_CHILDREN) { $traverseChildren = \false; } elseif ($return === self::DONT_TRAVERSE_CURRENT_AND_CHILDREN) { $traverseChildren = \false; $breakVisitorIndex = $visitorIndex; break; } elseif ($return === self::STOP_TRAVERSAL) { $this->stopTraversal = \true; break 2; } else { throw new LogicException('enterNode() returned invalid value of type ' . gettype($return)); } } if ($traverseChildren) { $subNode = $this->traverseNode($subNode); if ($this->stopTraversal) { break; } } foreach ($this->visitors as $visitorIndex => $visitor) { $return = $visitor->leaveNode($subNode); if ($return !== null) { if ($return instanceof \PHPStan\PhpDocParser\Ast\Node) { $this->ensureReplacementReasonable($subNode, $return); $subNode = $return; } elseif ($return === self::STOP_TRAVERSAL) { $this->stopTraversal = \true; break 2; } elseif (is_array($return)) { throw new LogicException('leaveNode() may only return an array ' . 'if the parent structure is an array'); } else { throw new LogicException('leaveNode() returned invalid value of type ' . gettype($return)); } } if ($breakVisitorIndex === $visitorIndex) { break; } } } } return $node; } /** * Recursively traverse array (usually of nodes). * * @param mixed[] $nodes Array to traverse * * @return mixed[] Result of traversal (may be original array or changed one) */ private function traverseArray(array $nodes) : array { $doNodes = []; foreach ($nodes as $i => &$node) { if ($node instanceof \PHPStan\PhpDocParser\Ast\Node) { $traverseChildren = \true; $breakVisitorIndex = null; foreach ($this->visitors as $visitorIndex => $visitor) { $return = $visitor->enterNode($node); if ($return === null) { continue; } if ($return instanceof \PHPStan\PhpDocParser\Ast\Node) { $this->ensureReplacementReasonable($node, $return); $node = $return; } elseif (is_array($return)) { $doNodes[] = [$i, $return]; continue 2; } elseif ($return === self::REMOVE_NODE) { $doNodes[] = [$i, []]; continue 2; } elseif ($return === self::DONT_TRAVERSE_CHILDREN) { $traverseChildren = \false; } elseif ($return === self::DONT_TRAVERSE_CURRENT_AND_CHILDREN) { $traverseChildren = \false; $breakVisitorIndex = $visitorIndex; break; } elseif ($return === self::STOP_TRAVERSAL) { $this->stopTraversal = \true; break 2; } else { throw new LogicException('enterNode() returned invalid value of type ' . gettype($return)); } } if ($traverseChildren) { $node = $this->traverseNode($node); if ($this->stopTraversal) { break; } } foreach ($this->visitors as $visitorIndex => $visitor) { $return = $visitor->leaveNode($node); if ($return !== null) { if ($return instanceof \PHPStan\PhpDocParser\Ast\Node) { $this->ensureReplacementReasonable($node, $return); $node = $return; } elseif (is_array($return)) { $doNodes[] = [$i, $return]; break; } elseif ($return === self::REMOVE_NODE) { $doNodes[] = [$i, []]; break; } elseif ($return === self::STOP_TRAVERSAL) { $this->stopTraversal = \true; break 2; } else { throw new LogicException('leaveNode() returned invalid value of type ' . gettype($return)); } } if ($breakVisitorIndex === $visitorIndex) { break; } } } elseif (is_array($node)) { throw new LogicException('Invalid node structure: Contains nested arrays'); } } if (count($doNodes) > 0) { while ([$i, $replace] = array_pop($doNodes)) { array_splice($nodes, $i, 1, $replace); } } return $nodes; } private function ensureReplacementReasonable(\PHPStan\PhpDocParser\Ast\Node $old, \PHPStan\PhpDocParser\Ast\Node $new) : void { if ($old instanceof TypeNode && !$new instanceof TypeNode) { throw new LogicException(sprintf('Trying to replace TypeNode with %s', get_class($new))); } if ($old instanceof ConstExprNode && !$new instanceof ConstExprNode) { throw new LogicException(sprintf('Trying to replace ConstExprNode with %s', get_class($new))); } if ($old instanceof PhpDocChildNode && !$new instanceof PhpDocChildNode) { throw new LogicException(sprintf('Trying to replace PhpDocChildNode with %s', get_class($new))); } if ($old instanceof PhpDocTagValueNode && !$new instanceof PhpDocTagValueNode) { throw new LogicException(sprintf('Trying to replace PhpDocTagValueNode with %s', get_class($new))); } } } '\'&\'', self::TOKEN_UNION => '\'|\'', self::TOKEN_INTERSECTION => '\'&\'', self::TOKEN_NULLABLE => '\'?\'', self::TOKEN_NEGATED => '\'!\'', self::TOKEN_OPEN_PARENTHESES => '\'(\'', self::TOKEN_CLOSE_PARENTHESES => '\')\'', self::TOKEN_OPEN_ANGLE_BRACKET => '\'<\'', self::TOKEN_CLOSE_ANGLE_BRACKET => '\'>\'', self::TOKEN_OPEN_SQUARE_BRACKET => '\'[\'', self::TOKEN_CLOSE_SQUARE_BRACKET => '\']\'', self::TOKEN_OPEN_CURLY_BRACKET => '\'{\'', self::TOKEN_CLOSE_CURLY_BRACKET => '\'}\'', self::TOKEN_COMMA => '\',\'', self::TOKEN_COLON => '\':\'', self::TOKEN_VARIADIC => '\'...\'', self::TOKEN_DOUBLE_COLON => '\'::\'', self::TOKEN_DOUBLE_ARROW => '\'=>\'', self::TOKEN_ARROW => '\'->\'', self::TOKEN_EQUAL => '\'=\'', self::TOKEN_OPEN_PHPDOC => '\'/**\'', self::TOKEN_CLOSE_PHPDOC => '\'*/\'', self::TOKEN_PHPDOC_TAG => 'TOKEN_PHPDOC_TAG', self::TOKEN_DOCTRINE_TAG => 'TOKEN_DOCTRINE_TAG', self::TOKEN_PHPDOC_EOL => 'TOKEN_PHPDOC_EOL', self::TOKEN_FLOAT => 'TOKEN_FLOAT', self::TOKEN_INTEGER => 'TOKEN_INTEGER', self::TOKEN_SINGLE_QUOTED_STRING => 'TOKEN_SINGLE_QUOTED_STRING', self::TOKEN_DOUBLE_QUOTED_STRING => 'TOKEN_DOUBLE_QUOTED_STRING', self::TOKEN_DOCTRINE_ANNOTATION_STRING => 'TOKEN_DOCTRINE_ANNOTATION_STRING', self::TOKEN_IDENTIFIER => 'type', self::TOKEN_THIS_VARIABLE => '\'$this\'', self::TOKEN_VARIABLE => 'variable', self::TOKEN_HORIZONTAL_WS => 'TOKEN_HORIZONTAL_WS', self::TOKEN_OTHER => 'TOKEN_OTHER', self::TOKEN_END => 'TOKEN_END', self::TOKEN_WILDCARD => '*']; public const VALUE_OFFSET = 0; public const TYPE_OFFSET = 1; public const LINE_OFFSET = 2; /** @var bool */ private $parseDoctrineAnnotations; /** @var string|null */ private $regexp; public function __construct(bool $parseDoctrineAnnotations = \false) { $this->parseDoctrineAnnotations = $parseDoctrineAnnotations; } /** * @return list */ public function tokenize(string $s) : array { if ($this->regexp === null) { $this->regexp = $this->generateRegexp(); } preg_match_all($this->regexp, $s, $matches, PREG_SET_ORDER); $tokens = []; $line = 1; foreach ($matches as $match) { $type = (int) $match['MARK']; $tokens[] = [$match[0], $type, $line]; if ($type !== self::TOKEN_PHPDOC_EOL) { continue; } $line++; } $tokens[] = ['', self::TOKEN_END, $line]; return $tokens; } private function generateRegexp() : string { $patterns = [ self::TOKEN_HORIZONTAL_WS => '[\\x09\\x20]++', self::TOKEN_IDENTIFIER => '(?:[\\\\]?+[a-z_\\x80-\\xFF][0-9a-z_\\x80-\\xFF-]*+)++', self::TOKEN_THIS_VARIABLE => '\\$this(?![0-9a-z_\\x80-\\xFF])', self::TOKEN_VARIABLE => '\\$[a-z_\\x80-\\xFF][0-9a-z_\\x80-\\xFF]*+', // '&' followed by TOKEN_VARIADIC, TOKEN_VARIABLE, TOKEN_EQUAL, TOKEN_EQUAL or TOKEN_CLOSE_PARENTHESES self::TOKEN_REFERENCE => '&(?=\\s*+(?:[.,=)]|(?:\\$(?!this(?![0-9a-z_\\x80-\\xFF])))))', self::TOKEN_UNION => '\\|', self::TOKEN_INTERSECTION => '&', self::TOKEN_NULLABLE => '\\?', self::TOKEN_NEGATED => '!', self::TOKEN_OPEN_PARENTHESES => '\\(', self::TOKEN_CLOSE_PARENTHESES => '\\)', self::TOKEN_OPEN_ANGLE_BRACKET => '<', self::TOKEN_CLOSE_ANGLE_BRACKET => '>', self::TOKEN_OPEN_SQUARE_BRACKET => '\\[', self::TOKEN_CLOSE_SQUARE_BRACKET => '\\]', self::TOKEN_OPEN_CURLY_BRACKET => '\\{', self::TOKEN_CLOSE_CURLY_BRACKET => '\\}', self::TOKEN_COMMA => ',', self::TOKEN_VARIADIC => '\\.\\.\\.', self::TOKEN_DOUBLE_COLON => '::', self::TOKEN_DOUBLE_ARROW => '=>', self::TOKEN_ARROW => '->', self::TOKEN_EQUAL => '=', self::TOKEN_COLON => ':', self::TOKEN_OPEN_PHPDOC => '/\\*\\*(?=\\s)\\x20?+', self::TOKEN_CLOSE_PHPDOC => '\\*/', self::TOKEN_PHPDOC_TAG => '@(?:[a-z][a-z0-9-\\\\]+:)?[a-z][a-z0-9-\\\\]*+', self::TOKEN_PHPDOC_EOL => '\\r?+\\n[\\x09\\x20]*+(?:\\*(?!/)\\x20?+)?', self::TOKEN_FLOAT => '[+\\-]?(?:(?:[0-9]++(_[0-9]++)*\\.[0-9]*+(_[0-9]++)*(?:e[+\\-]?[0-9]++(_[0-9]++)*)?)|(?:[0-9]*+(_[0-9]++)*\\.[0-9]++(_[0-9]++)*(?:e[+\\-]?[0-9]++(_[0-9]++)*)?)|(?:[0-9]++(_[0-9]++)*e[+\\-]?[0-9]++(_[0-9]++)*))', self::TOKEN_INTEGER => '[+\\-]?(?:(?:0b[0-1]++(_[0-1]++)*)|(?:0o[0-7]++(_[0-7]++)*)|(?:0x[0-9a-f]++(_[0-9a-f]++)*)|(?:[0-9]++(_[0-9]++)*))', self::TOKEN_SINGLE_QUOTED_STRING => '\'(?:\\\\[^\\r\\n]|[^\'\\r\\n\\\\])*+\'', self::TOKEN_DOUBLE_QUOTED_STRING => '"(?:\\\\[^\\r\\n]|[^"\\r\\n\\\\])*+"', self::TOKEN_WILDCARD => '\\*', ]; if ($this->parseDoctrineAnnotations) { $patterns[self::TOKEN_DOCTRINE_TAG] = '@[a-z_\\\\][a-z0-9_\\:\\\\]*[a-z_][a-z0-9_]*'; $patterns[self::TOKEN_DOCTRINE_ANNOTATION_STRING] = '"(?:""|[^"])*+"'; } // anything but TOKEN_CLOSE_PHPDOC or TOKEN_HORIZONTAL_WS or TOKEN_EOL $patterns[self::TOKEN_OTHER] = '(?:(?!\\*/)[^\\s])++'; foreach ($patterns as $type => &$pattern) { $pattern = '(?:' . $pattern . ')(*MARK:' . $type . ')'; } return '~' . implode('|', $patterns) . '~Asi'; } } Copyright (c) Nils Adermann, Jordi Boggiano Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Copyright (C) 2015 Composer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Semver; use _PHPStan_b22655c3f\Composer\Semver\Constraint\Constraint; use _PHPStan_b22655c3f\Composer\Semver\Constraint\ConstraintInterface; use _PHPStan_b22655c3f\Composer\Semver\Constraint\MatchAllConstraint; use _PHPStan_b22655c3f\Composer\Semver\Constraint\MatchNoneConstraint; use _PHPStan_b22655c3f\Composer\Semver\Constraint\MultiConstraint; /** * Helper class generating intervals from constraints * * This contains utilities for: * * - compacting an existing constraint which can be used to combine several into one * by creating a MultiConstraint out of the many constraints you have. * * - checking whether one subset is a subset of another. * * Note: You should call clear to free memoization memory usage when you are done using this class */ class Intervals { /** * @phpstan-var array */ private static $intervalsCache = array(); /** * @phpstan-var array */ private static $opSortOrder = array('>=' => -3, '<' => -2, '>' => 2, '<=' => 3); /** * Clears the memoization cache once you are done * * @return void */ public static function clear() { self::$intervalsCache = array(); } /** * Checks whether $candidate is a subset of $constraint * * @return bool */ public static function isSubsetOf(ConstraintInterface $candidate, ConstraintInterface $constraint) { if ($constraint instanceof MatchAllConstraint) { return \true; } if ($candidate instanceof MatchNoneConstraint || $constraint instanceof MatchNoneConstraint) { return \false; } $intersectionIntervals = self::get(new MultiConstraint(array($candidate, $constraint), \true)); $candidateIntervals = self::get($candidate); if (\count($intersectionIntervals['numeric']) !== \count($candidateIntervals['numeric'])) { return \false; } foreach ($intersectionIntervals['numeric'] as $index => $interval) { if (!isset($candidateIntervals['numeric'][$index])) { return \false; } if ((string) $candidateIntervals['numeric'][$index]->getStart() !== (string) $interval->getStart()) { return \false; } if ((string) $candidateIntervals['numeric'][$index]->getEnd() !== (string) $interval->getEnd()) { return \false; } } if ($intersectionIntervals['branches']['exclude'] !== $candidateIntervals['branches']['exclude']) { return \false; } if (\count($intersectionIntervals['branches']['names']) !== \count($candidateIntervals['branches']['names'])) { return \false; } foreach ($intersectionIntervals['branches']['names'] as $index => $name) { if ($name !== $candidateIntervals['branches']['names'][$index]) { return \false; } } return \true; } /** * Checks whether $a and $b have any intersection, equivalent to $a->matches($b) * * @return bool */ public static function haveIntersections(ConstraintInterface $a, ConstraintInterface $b) { if ($a instanceof MatchAllConstraint || $b instanceof MatchAllConstraint) { return \true; } if ($a instanceof MatchNoneConstraint || $b instanceof MatchNoneConstraint) { return \false; } $intersectionIntervals = self::generateIntervals(new MultiConstraint(array($a, $b), \true), \true); return \count($intersectionIntervals['numeric']) > 0 || $intersectionIntervals['branches']['exclude'] || \count($intersectionIntervals['branches']['names']) > 0; } /** * Attempts to optimize a MultiConstraint * * When merging MultiConstraints together they can get very large, this will * compact it by looking at the real intervals covered by all the constraints * and then creates a new constraint containing only the smallest amount of rules * to match the same intervals. * * @return ConstraintInterface */ public static function compactConstraint(ConstraintInterface $constraint) { if (!$constraint instanceof MultiConstraint) { return $constraint; } $intervals = self::generateIntervals($constraint); $constraints = array(); $hasNumericMatchAll = \false; if (\count($intervals['numeric']) === 1 && (string) $intervals['numeric'][0]->getStart() === (string) Interval::fromZero() && (string) $intervals['numeric'][0]->getEnd() === (string) Interval::untilPositiveInfinity()) { $constraints[] = $intervals['numeric'][0]->getStart(); $hasNumericMatchAll = \true; } else { $unEqualConstraints = array(); for ($i = 0, $count = \count($intervals['numeric']); $i < $count; $i++) { $interval = $intervals['numeric'][$i]; // if current interval ends with < N and next interval begins with > N we can swap this out for != N // but this needs to happen as a conjunctive expression together with the start of the current interval // and end of next interval, so [>=M, N, [>=M, !=N, getEnd()->getOperator() === '<' && $i + 1 < $count) { $nextInterval = $intervals['numeric'][$i + 1]; if ($interval->getEnd()->getVersion() === $nextInterval->getStart()->getVersion() && $nextInterval->getStart()->getOperator() === '>') { // only add a start if we didn't already do so, can be skipped if we're looking at second // interval in [>=M, N, P, =M, !=N] already and we only want to add !=P right now if (\count($unEqualConstraints) === 0 && (string) $interval->getStart() !== (string) Interval::fromZero()) { $unEqualConstraints[] = $interval->getStart(); } $unEqualConstraints[] = new Constraint('!=', $interval->getEnd()->getVersion()); continue; } } if (\count($unEqualConstraints) > 0) { // this is where the end of the following interval of a != constraint is added as explained above if ((string) $interval->getEnd() !== (string) Interval::untilPositiveInfinity()) { $unEqualConstraints[] = $interval->getEnd(); } // count is 1 if entire constraint is just one != expression if (\count($unEqualConstraints) > 1) { $constraints[] = new MultiConstraint($unEqualConstraints, \true); } else { $constraints[] = $unEqualConstraints[0]; } $unEqualConstraints = array(); continue; } // convert back >= x - <= x intervals to == x if ($interval->getStart()->getVersion() === $interval->getEnd()->getVersion() && $interval->getStart()->getOperator() === '>=' && $interval->getEnd()->getOperator() === '<=') { $constraints[] = new Constraint('==', $interval->getStart()->getVersion()); continue; } if ((string) $interval->getStart() === (string) Interval::fromZero()) { $constraints[] = $interval->getEnd(); } elseif ((string) $interval->getEnd() === (string) Interval::untilPositiveInfinity()) { $constraints[] = $interval->getStart(); } else { $constraints[] = new MultiConstraint(array($interval->getStart(), $interval->getEnd()), \true); } } } $devConstraints = array(); if (0 === \count($intervals['branches']['names'])) { if ($intervals['branches']['exclude']) { if ($hasNumericMatchAll) { return new MatchAllConstraint(); } // otherwise constraint should contain a != operator and already cover this } } else { foreach ($intervals['branches']['names'] as $branchName) { if ($intervals['branches']['exclude']) { $devConstraints[] = new Constraint('!=', $branchName); } else { $devConstraints[] = new Constraint('==', $branchName); } } // excluded branches, e.g. != dev-foo are conjunctive with the interval, so // > 2.0 != dev-foo must return a conjunctive constraint if ($intervals['branches']['exclude']) { if (\count($constraints) > 1) { return new MultiConstraint(\array_merge(array(new MultiConstraint($constraints, \false)), $devConstraints), \true); } if (\count($constraints) === 1 && (string) $constraints[0] === (string) Interval::fromZero()) { if (\count($devConstraints) > 1) { return new MultiConstraint($devConstraints, \true); } return $devConstraints[0]; } return new MultiConstraint(\array_merge($constraints, $devConstraints), \true); } // otherwise devConstraints contains a list of == operators for branches which are disjunctive with the // rest of the constraint $constraints = \array_merge($constraints, $devConstraints); } if (\count($constraints) > 1) { return new MultiConstraint($constraints, \false); } if (\count($constraints) === 1) { return $constraints[0]; } return new MatchNoneConstraint(); } /** * Creates an array of numeric intervals and branch constraints representing a given constraint * * if the returned numeric array is empty it means the constraint matches nothing in the numeric range (0 - +inf) * if the returned branches array is empty it means no dev-* versions are matched * if a constraint matches all possible dev-* versions, branches will contain Interval::anyDev() * * @return array * @phpstan-return array{'numeric': Interval[], 'branches': array{'names': string[], 'exclude': bool}} */ public static function get(ConstraintInterface $constraint) { $key = (string) $constraint; if (!isset(self::$intervalsCache[$key])) { self::$intervalsCache[$key] = self::generateIntervals($constraint); } return self::$intervalsCache[$key]; } /** * @param bool $stopOnFirstValidInterval * * @phpstan-return array{'numeric': Interval[], 'branches': array{'names': string[], 'exclude': bool}} */ private static function generateIntervals(ConstraintInterface $constraint, $stopOnFirstValidInterval = \false) { if ($constraint instanceof MatchAllConstraint) { return array('numeric' => array(new Interval(Interval::fromZero(), Interval::untilPositiveInfinity())), 'branches' => Interval::anyDev()); } if ($constraint instanceof MatchNoneConstraint) { return array('numeric' => array(), 'branches' => array('names' => array(), 'exclude' => \false)); } if ($constraint instanceof Constraint) { return self::generateSingleConstraintIntervals($constraint); } if (!$constraint instanceof MultiConstraint) { throw new \UnexpectedValueException('The constraint passed in should be an MatchAllConstraint, Constraint or MultiConstraint instance, got ' . \get_class($constraint) . '.'); } $constraints = $constraint->getConstraints(); $numericGroups = array(); $constraintBranches = array(); foreach ($constraints as $c) { $res = self::get($c); $numericGroups[] = $res['numeric']; $constraintBranches[] = $res['branches']; } if ($constraint->isDisjunctive()) { $branches = Interval::noDev(); foreach ($constraintBranches as $b) { if ($b['exclude']) { if ($branches['exclude']) { // disjunctive constraint, so only exclude what's excluded in all constraints // !=a,!=b || !=b,!=c => !=b $branches['names'] = \array_intersect($branches['names'], $b['names']); } else { // disjunctive constraint so exclude all names which are not explicitly included in the alternative // (==b || ==c) || !=a,!=b => !=a $branches['exclude'] = \true; $branches['names'] = \array_diff($b['names'], $branches['names']); } } else { if ($branches['exclude']) { // disjunctive constraint so exclude all names which are not explicitly included in the alternative // !=a,!=b || (==b || ==c) => !=a $branches['names'] = \array_diff($branches['names'], $b['names']); } else { // disjunctive constraint, so just add all the other branches // (==a || ==b) || ==c => ==a || ==b || ==c $branches['names'] = \array_merge($branches['names'], $b['names']); } } } } else { $branches = Interval::anyDev(); foreach ($constraintBranches as $b) { if ($b['exclude']) { if ($branches['exclude']) { // conjunctive, so just add all branch names to be excluded // !=a && !=b => !=a,!=b $branches['names'] = \array_merge($branches['names'], $b['names']); } else { // conjunctive, so only keep included names which are not excluded // (==a||==c) && !=a,!=b => ==c $branches['names'] = \array_diff($branches['names'], $b['names']); } } else { if ($branches['exclude']) { // conjunctive, so only keep included names which are not excluded // !=a,!=b && (==a||==c) => ==c $branches['names'] = \array_diff($b['names'], $branches['names']); $branches['exclude'] = \false; } else { // conjunctive, so only keep names that are included in both // (==a||==b) && (==a||==c) => ==a $branches['names'] = \array_intersect($branches['names'], $b['names']); } } } } $branches['names'] = \array_unique($branches['names']); if (\count($numericGroups) === 1) { return array('numeric' => $numericGroups[0], 'branches' => $branches); } $borders = array(); foreach ($numericGroups as $group) { foreach ($group as $interval) { $borders[] = array('version' => $interval->getStart()->getVersion(), 'operator' => $interval->getStart()->getOperator(), 'side' => 'start'); $borders[] = array('version' => $interval->getEnd()->getVersion(), 'operator' => $interval->getEnd()->getOperator(), 'side' => 'end'); } } $opSortOrder = self::$opSortOrder; \usort($borders, function ($a, $b) use($opSortOrder) { $order = \version_compare($a['version'], $b['version']); if ($order === 0) { return $opSortOrder[$a['operator']] - $opSortOrder[$b['operator']]; } return $order; }); $activeIntervals = 0; $intervals = array(); $index = 0; $activationThreshold = $constraint->isConjunctive() ? \count($numericGroups) : 1; $start = null; foreach ($borders as $border) { if ($border['side'] === 'start') { $activeIntervals++; } else { $activeIntervals--; } if (!$start && $activeIntervals >= $activationThreshold) { $start = new Constraint($border['operator'], $border['version']); } elseif ($start && $activeIntervals < $activationThreshold) { // filter out invalid intervals like > x - <= x, or >= x - < x if (\version_compare($start->getVersion(), $border['version'], '=') && ($start->getOperator() === '>' && $border['operator'] === '<=' || $start->getOperator() === '>=' && $border['operator'] === '<')) { unset($intervals[$index]); } else { $intervals[$index] = new Interval($start, new Constraint($border['operator'], $border['version'])); $index++; if ($stopOnFirstValidInterval) { break; } } $start = null; } } return array('numeric' => $intervals, 'branches' => $branches); } /** * @phpstan-return array{'numeric': Interval[], 'branches': array{'names': string[], 'exclude': bool}} */ private static function generateSingleConstraintIntervals(Constraint $constraint) { $op = $constraint->getOperator(); // handle branch constraints first if (\strpos($constraint->getVersion(), 'dev-') === 0) { $intervals = array(); $branches = array('names' => array(), 'exclude' => \false); // != dev-foo means any numeric version may match, we treat >/< like != they are not really defined for branches if ($op === '!=') { $intervals[] = new Interval(Interval::fromZero(), Interval::untilPositiveInfinity()); $branches = array('names' => array($constraint->getVersion()), 'exclude' => \true); } elseif ($op === '==') { $branches['names'][] = $constraint->getVersion(); } return array('numeric' => $intervals, 'branches' => $branches); } if ($op[0] === '>') { // > & >= return array('numeric' => array(new Interval($constraint, Interval::untilPositiveInfinity())), 'branches' => Interval::noDev()); } if ($op[0] === '<') { // < & <= return array('numeric' => array(new Interval(Interval::fromZero(), $constraint)), 'branches' => Interval::noDev()); } if ($op === '!=') { // convert !=x to intervals of 0 - x - +inf + dev* return array('numeric' => array(new Interval(Interval::fromZero(), new Constraint('<', $constraint->getVersion())), new Interval(new Constraint('>', $constraint->getVersion()), Interval::untilPositiveInfinity())), 'branches' => Interval::anyDev()); } // convert ==x to an interval of >=x - <=x return array('numeric' => array(new Interval(new Constraint('>=', $constraint->getVersion()), new Constraint('<=', $constraint->getVersion()))), 'branches' => Interval::noDev()); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Semver; use _PHPStan_b22655c3f\Composer\Semver\Constraint\Constraint; class Semver { const SORT_ASC = 1; const SORT_DESC = -1; /** @var VersionParser */ private static $versionParser; /** * Determine if given version satisfies given constraints. * * @param string $version * @param string $constraints * * @return bool */ public static function satisfies($version, $constraints) { if (null === self::$versionParser) { self::$versionParser = new VersionParser(); } $versionParser = self::$versionParser; $provider = new Constraint('==', $versionParser->normalize($version)); $parsedConstraints = $versionParser->parseConstraints($constraints); return $parsedConstraints->matches($provider); } /** * Return all versions that satisfy given constraints. * * @param string[] $versions * @param string $constraints * * @return string[] */ public static function satisfiedBy(array $versions, $constraints) { $versions = \array_filter($versions, function ($version) use($constraints) { return Semver::satisfies($version, $constraints); }); return \array_values($versions); } /** * Sort given array of versions. * * @param string[] $versions * * @return string[] */ public static function sort(array $versions) { return self::usort($versions, self::SORT_ASC); } /** * Sort given array of versions in reverse. * * @param string[] $versions * * @return string[] */ public static function rsort(array $versions) { return self::usort($versions, self::SORT_DESC); } /** * @param string[] $versions * @param int $direction * * @return string[] */ private static function usort(array $versions, $direction) { if (null === self::$versionParser) { self::$versionParser = new VersionParser(); } $versionParser = self::$versionParser; $normalized = array(); // Normalize outside of usort() scope for minor performance increase. // Creates an array of arrays: [[normalized, key], ...] foreach ($versions as $key => $version) { $normalizedVersion = $versionParser->normalize($version); $normalizedVersion = $versionParser->normalizeDefaultBranch($normalizedVersion); $normalized[] = array($normalizedVersion, $key); } \usort($normalized, function (array $left, array $right) use($direction) { if ($left[0] === $right[0]) { return 0; } if (Comparator::lessThan($left[0], $right[0])) { return -$direction; } return $direction; }); // Recreate input array, using the original indexes which are now in sorted order. $sorted = array(); foreach ($normalized as $item) { $sorted[] = $versions[$item[1]]; } return $sorted; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Semver; use _PHPStan_b22655c3f\Composer\Semver\Constraint\Constraint; class Comparator { /** * Evaluates the expression: $version1 > $version2. * * @param string $version1 * @param string $version2 * * @return bool */ public static function greaterThan($version1, $version2) { return self::compare($version1, '>', $version2); } /** * Evaluates the expression: $version1 >= $version2. * * @param string $version1 * @param string $version2 * * @return bool */ public static function greaterThanOrEqualTo($version1, $version2) { return self::compare($version1, '>=', $version2); } /** * Evaluates the expression: $version1 < $version2. * * @param string $version1 * @param string $version2 * * @return bool */ public static function lessThan($version1, $version2) { return self::compare($version1, '<', $version2); } /** * Evaluates the expression: $version1 <= $version2. * * @param string $version1 * @param string $version2 * * @return bool */ public static function lessThanOrEqualTo($version1, $version2) { return self::compare($version1, '<=', $version2); } /** * Evaluates the expression: $version1 == $version2. * * @param string $version1 * @param string $version2 * * @return bool */ public static function equalTo($version1, $version2) { return self::compare($version1, '==', $version2); } /** * Evaluates the expression: $version1 != $version2. * * @param string $version1 * @param string $version2 * * @return bool */ public static function notEqualTo($version1, $version2) { return self::compare($version1, '!=', $version2); } /** * Evaluates the expression: $version1 $operator $version2. * * @param string $version1 * @param string $operator * @param string $version2 * * @return bool * * @phpstan-param Constraint::STR_OP_* $operator */ public static function compare($version1, $operator, $version2) { $constraint = new Constraint($operator, $version2); return $constraint->matchSpecific(new Constraint('==', $version1), \true); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Semver; use _PHPStan_b22655c3f\Composer\Semver\Constraint\ConstraintInterface; use _PHPStan_b22655c3f\Composer\Semver\Constraint\MatchAllConstraint; use _PHPStan_b22655c3f\Composer\Semver\Constraint\MultiConstraint; use _PHPStan_b22655c3f\Composer\Semver\Constraint\Constraint; /** * Version parser. * * @author Jordi Boggiano */ class VersionParser { /** * Regex to match pre-release data (sort of). * * Due to backwards compatibility: * - Instead of enforcing hyphen, an underscore, dot or nothing at all are also accepted. * - Only stabilities as recognized by Composer are allowed to precede a numerical identifier. * - Numerical-only pre-release identifiers are not supported, see tests. * * |--------------| * [major].[minor].[patch] -[pre-release] +[build-metadata] * * @var string */ private static $modifierRegex = '[._-]?(?:(stable|beta|b|RC|alpha|a|patch|pl|p)((?:[.-]?\\d+)*+)?)?([.-]?dev)?'; /** @var string */ private static $stabilitiesRegex = 'stable|RC|beta|alpha|dev'; /** * Returns the stability of a version. * * @param string $version * * @return string * @phpstan-return 'stable'|'RC'|'beta'|'alpha'|'dev' */ public static function parseStability($version) { $version = (string) \preg_replace('{#.+$}', '', (string) $version); if (\strpos($version, 'dev-') === 0 || '-dev' === \substr($version, -4)) { return 'dev'; } \preg_match('{' . self::$modifierRegex . '(?:\\+.*)?$}i', \strtolower($version), $match); if (!empty($match[3])) { return 'dev'; } if (!empty($match[1])) { if ('beta' === $match[1] || 'b' === $match[1]) { return 'beta'; } if ('alpha' === $match[1] || 'a' === $match[1]) { return 'alpha'; } if ('rc' === $match[1]) { return 'RC'; } } return 'stable'; } /** * @param string $stability * * @return string */ public static function normalizeStability($stability) { $stability = \strtolower((string) $stability); return $stability === 'rc' ? 'RC' : $stability; } /** * Normalizes a version string to be able to perform comparisons on it. * * @param string $version * @param ?string $fullVersion optional complete version string to give more context * * @throws \UnexpectedValueException * * @return string */ public function normalize($version, $fullVersion = null) { $version = \trim((string) $version); $origVersion = $version; if (null === $fullVersion) { $fullVersion = $version; } // strip off aliasing if (\preg_match('{^([^,\\s]++) ++as ++([^,\\s]++)$}', $version, $match)) { $version = $match[1]; } // strip off stability flag if (\preg_match('{@(?:' . self::$stabilitiesRegex . ')$}i', $version, $match)) { $version = \substr($version, 0, \strlen($version) - \strlen($match[0])); } // normalize master/trunk/default branches to dev-name for BC with 1.x as these used to be valid constraints if (\in_array($version, array('master', 'trunk', 'default'), \true)) { $version = 'dev-' . $version; } // if requirement is branch-like, use full name if (\stripos($version, 'dev-') === 0) { return 'dev-' . \substr($version, 4); } // strip off build metadata if (\preg_match('{^([^,\\s+]++)\\+[^\\s]++$}', $version, $match)) { $version = $match[1]; } // match classical versioning if (\preg_match('{^v?(\\d{1,5}+)(\\.\\d++)?(\\.\\d++)?(\\.\\d++)?' . self::$modifierRegex . '$}i', $version, $matches)) { $version = $matches[1] . (!empty($matches[2]) ? $matches[2] : '.0') . (!empty($matches[3]) ? $matches[3] : '.0') . (!empty($matches[4]) ? $matches[4] : '.0'); $index = 5; // match date(time) based versioning } elseif (\preg_match('{^v?(\\d{4}(?:[.:-]?\\d{2}){1,6}(?:[.:-]?\\d{1,3}){0,2})' . self::$modifierRegex . '$}i', $version, $matches)) { $version = (string) \preg_replace('{\\D}', '.', $matches[1]); $index = 2; } // add version modifiers if a version was matched if (isset($index)) { if (!empty($matches[$index])) { if ('stable' === $matches[$index]) { return $version; } $version .= '-' . $this->expandStability($matches[$index]) . (isset($matches[$index + 1]) && '' !== $matches[$index + 1] ? \ltrim($matches[$index + 1], '.-') : ''); } if (!empty($matches[$index + 2])) { $version .= '-dev'; } return $version; } // match dev branches if (\preg_match('{(.*?)[.-]?dev$}i', $version, $match)) { try { $normalized = $this->normalizeBranch($match[1]); // a branch ending with -dev is only valid if it is numeric // if it gets prefixed with dev- it means the branch name should // have had a dev- prefix already when passed to normalize if (\strpos($normalized, 'dev-') === \false) { return $normalized; } } catch (\Exception $e) { } } $extraMessage = ''; if (\preg_match('{ +as +' . \preg_quote($version) . '(?:@(?:' . self::$stabilitiesRegex . '))?$}', $fullVersion)) { $extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version'; } elseif (\preg_match('{^' . \preg_quote($version) . '(?:@(?:' . self::$stabilitiesRegex . '))? +as +}', $fullVersion)) { $extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-'; } throw new \UnexpectedValueException('Invalid version string "' . $origVersion . '"' . $extraMessage); } /** * Extract numeric prefix from alias, if it is in numeric format, suitable for version comparison. * * @param string $branch Branch name (e.g. 2.1.x-dev) * * @return string|false Numeric prefix if present (e.g. 2.1.) or false */ public function parseNumericAliasPrefix($branch) { if (\preg_match('{^(?P(\\d++\\.)*\\d++)(?:\\.x)?-dev$}i', (string) $branch, $matches)) { return $matches['version'] . '.'; } return \false; } /** * Normalizes a branch name to be able to perform comparisons on it. * * @param string $name * * @return string */ public function normalizeBranch($name) { $name = \trim((string) $name); if (\preg_match('{^v?(\\d++)(\\.(?:\\d++|[xX*]))?(\\.(?:\\d++|[xX*]))?(\\.(?:\\d++|[xX*]))?$}i', $name, $matches)) { $version = ''; for ($i = 1; $i < 5; ++$i) { $version .= isset($matches[$i]) ? \str_replace(array('*', 'X'), 'x', $matches[$i]) : '.x'; } return \str_replace('x', '9999999', $version) . '-dev'; } return 'dev-' . $name; } /** * Normalizes a default branch name (i.e. master on git) to 9999999-dev. * * @param string $name * * @return string * * @deprecated No need to use this anymore in theory, Composer 2 does not normalize any branch names to 9999999-dev anymore */ public function normalizeDefaultBranch($name) { if ($name === 'dev-master' || $name === 'dev-default' || $name === 'dev-trunk') { return '9999999-dev'; } return (string) $name; } /** * Parses a constraint string into MultiConstraint and/or Constraint objects. * * @param string $constraints * * @return ConstraintInterface */ public function parseConstraints($constraints) { $prettyConstraint = (string) $constraints; $orConstraints = \preg_split('{\\s*\\|\\|?\\s*}', \trim((string) $constraints)); if (\false === $orConstraints) { throw new \RuntimeException('Failed to preg_split string: ' . $constraints); } $orGroups = array(); foreach ($orConstraints as $orConstraint) { $andConstraints = \preg_split('{(?< ,]) *(? 1) { $constraintObjects = array(); foreach ($andConstraints as $andConstraint) { foreach ($this->parseConstraint($andConstraint) as $parsedAndConstraint) { $constraintObjects[] = $parsedAndConstraint; } } } else { $constraintObjects = $this->parseConstraint($andConstraints[0]); } if (1 === \count($constraintObjects)) { $constraint = $constraintObjects[0]; } else { $constraint = new MultiConstraint($constraintObjects); } $orGroups[] = $constraint; } $parsedConstraint = MultiConstraint::create($orGroups, \false); $parsedConstraint->setPrettyString($prettyConstraint); return $parsedConstraint; } /** * @param string $constraint * * @throws \UnexpectedValueException * * @return array * * @phpstan-return non-empty-array */ private function parseConstraint($constraint) { // strip off aliasing if (\preg_match('{^([^,\\s]++) ++as ++([^,\\s]++)$}', $constraint, $match)) { $constraint = $match[1]; } // strip @stability flags, and keep it for later use if (\preg_match('{^([^,\\s]*?)@(' . self::$stabilitiesRegex . ')$}i', $constraint, $match)) { $constraint = '' !== $match[1] ? $match[1] : '*'; if ($match[2] !== 'stable') { $stabilityModifier = $match[2]; } } // get rid of #refs as those are used by composer only if (\preg_match('{^(dev-[^,\\s@]+?|[^,\\s@]+?\\.x-dev)#.+$}i', $constraint, $match)) { $constraint = $match[1]; } if (\preg_match('{^(v)?[xX*](\\.[xX*])*$}i', $constraint, $match)) { if (!empty($match[1]) || !empty($match[2])) { return array(new Constraint('>=', '0.0.0.0-dev')); } return array(new MatchAllConstraint()); } $versionRegex = 'v?(\\d++)(?:\\.(\\d++))?(?:\\.(\\d++))?(?:\\.(\\d++))?(?:' . self::$modifierRegex . '|\\.([xX*][.-]?dev))(?:\\+[^\\s]+)?'; // Tilde Range // // Like wildcard constraints, unsuffixed tilde constraints say that they must be greater than the previous // version, to ensure that unstable instances of the current version are allowed. However, if a stability // suffix is added to the constraint, then a >= match on the current version is used instead. if (\preg_match('{^~>?' . $versionRegex . '$}i', $constraint, $matches)) { if (\strpos($constraint, '~>') === 0) { throw new \UnexpectedValueException('Could not parse version constraint ' . $constraint . ': ' . 'Invalid operator "~>", you probably meant to use the "~" operator'); } // Work out which position in the version we are operating at if (isset($matches[4]) && '' !== $matches[4] && null !== $matches[4]) { $position = 4; } elseif (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { $position = 3; } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { $position = 2; } else { $position = 1; } // when matching 2.x-dev or 3.0.x-dev we have to shift the second or third number, despite no second/third number matching above if (!empty($matches[8])) { $position++; } // Calculate the stability suffix $stabilitySuffix = ''; if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { $stabilitySuffix .= '-dev'; } $lowVersion = $this->normalize(\substr($constraint . $stabilitySuffix, 1)); $lowerBound = new Constraint('>=', $lowVersion); // For upper bound, we increment the position of one more significance, // but highPosition = 0 would be illegal $highPosition = \max(1, $position - 1); $highVersion = $this->manipulateVersionString($matches, $highPosition, 1) . '-dev'; $upperBound = new Constraint('<', $highVersion); return array($lowerBound, $upperBound); } // Caret Range // // Allows changes that do not modify the left-most non-zero digit in the [major, minor, patch] tuple. // In other words, this allows patch and minor updates for versions 1.0.0 and above, patch updates for // versions 0.X >=0.1.0, and no updates for versions 0.0.X if (\preg_match('{^\\^' . $versionRegex . '($)}i', $constraint, $matches)) { // Work out which position in the version we are operating at if ('0' !== $matches[1] || '' === $matches[2] || null === $matches[2]) { $position = 1; } elseif ('0' !== $matches[2] || '' === $matches[3] || null === $matches[3]) { $position = 2; } else { $position = 3; } // Calculate the stability suffix $stabilitySuffix = ''; if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { $stabilitySuffix .= '-dev'; } $lowVersion = $this->normalize(\substr($constraint . $stabilitySuffix, 1)); $lowerBound = new Constraint('>=', $lowVersion); // For upper bound, we increment the position of one more significance, // but highPosition = 0 would be illegal $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; $upperBound = new Constraint('<', $highVersion); return array($lowerBound, $upperBound); } // X Range // // Any of X, x, or * may be used to "stand in" for one of the numeric values in the [major, minor, patch] tuple. // A partial version range is treated as an X-Range, so the special character is in fact optional. if (\preg_match('{^v?(\\d++)(?:\\.(\\d++))?(?:\\.(\\d++))?(?:\\.[xX*])++$}', $constraint, $matches)) { if (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { $position = 3; } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { $position = 2; } else { $position = 1; } $lowVersion = $this->manipulateVersionString($matches, $position) . '-dev'; $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; if ($lowVersion === '0.0.0.0-dev') { return array(new Constraint('<', $highVersion)); } return array(new Constraint('>=', $lowVersion), new Constraint('<', $highVersion)); } // Hyphen Range // // Specifies an inclusive set. If a partial version is provided as the first version in the inclusive range, // then the missing pieces are replaced with zeroes. If a partial version is provided as the second version in // the inclusive range, then all versions that start with the supplied parts of the tuple are accepted, but // nothing that would be greater than the provided tuple parts. if (\preg_match('{^(?P' . $versionRegex . ') +- +(?P' . $versionRegex . ')($)}i', $constraint, $matches)) { // Calculate the stability suffix $lowStabilitySuffix = ''; if (empty($matches[6]) && empty($matches[8]) && empty($matches[9])) { $lowStabilitySuffix = '-dev'; } $lowVersion = $this->normalize($matches['from']); $lowerBound = new Constraint('>=', $lowVersion . $lowStabilitySuffix); $empty = function ($x) { return $x === 0 || $x === '0' ? \false : empty($x); }; if (!$empty($matches[12]) && !$empty($matches[13]) || !empty($matches[15]) || !empty($matches[17]) || !empty($matches[18])) { $highVersion = $this->normalize($matches['to']); $upperBound = new Constraint('<=', $highVersion); } else { $highMatch = array('', $matches[11], $matches[12], $matches[13], $matches[14]); // validate to version $this->normalize($matches['to']); $highVersion = $this->manipulateVersionString($highMatch, $empty($matches[12]) ? 1 : 2, 1) . '-dev'; $upperBound = new Constraint('<', $highVersion); } return array($lowerBound, $upperBound); } // Basic Comparators if (\preg_match('{^(<>|!=|>=?|<=?|==?)?\\s*(.*)}', $constraint, $matches)) { try { try { $version = $this->normalize($matches[2]); } catch (\UnexpectedValueException $e) { // recover from an invalid constraint like foobar-dev which should be dev-foobar // except if the constraint uses a known operator, in which case it must be a parse error if (\substr($matches[2], -4) === '-dev' && \preg_match('{^[0-9a-zA-Z-./]+$}', $matches[2])) { $version = $this->normalize('dev-' . \substr($matches[2], 0, -4)); } else { throw $e; } } $op = $matches[1] ?: '='; if ($op !== '==' && $op !== '=' && !empty($stabilityModifier) && self::parseStability($version) === 'stable') { $version .= '-' . $stabilityModifier; } elseif ('<' === $op || '>=' === $op) { if (!\preg_match('/-' . self::$modifierRegex . '$/', \strtolower($matches[2]))) { if (\strpos($matches[2], 'dev-') !== 0) { $version .= '-dev'; } } } return array(new Constraint($matches[1] ?: '=', $version)); } catch (\Exception $e) { } } $message = 'Could not parse version constraint ' . $constraint; if (isset($e)) { $message .= ': ' . $e->getMessage(); } throw new \UnexpectedValueException($message); } /** * Increment, decrement, or simply pad a version number. * * Support function for {@link parseConstraint()} * * @param array $matches Array with version parts in array indexes 1,2,3,4 * @param int $position 1,2,3,4 - which segment of the version to increment/decrement * @param int $increment * @param string $pad The string to pad version parts after $position * * @return string|null The new version * * @phpstan-param string[] $matches */ private function manipulateVersionString(array $matches, $position, $increment = 0, $pad = '0') { for ($i = 4; $i > 0; --$i) { if ($i > $position) { $matches[$i] = $pad; } elseif ($i === $position && $increment) { $matches[$i] += $increment; // If $matches[$i] was 0, carry the decrement if ($matches[$i] < 0) { $matches[$i] = $pad; --$position; // Return null on a carry overflow if ($i === 1) { return null; } } } } return $matches[1] . '.' . $matches[2] . '.' . $matches[3] . '.' . $matches[4]; } /** * Expand shorthand stability string to long version. * * @param string $stability * * @return string */ private function expandStability($stability) { $stability = \strtolower($stability); switch ($stability) { case 'a': return 'alpha'; case 'b': return 'beta'; case 'p': case 'pl': return 'patch'; case 'rc': return 'RC'; default: return $stability; } } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Semver\Constraint; class Bound { /** * @var string */ private $version; /** * @var bool */ private $isInclusive; /** * @param string $version * @param bool $isInclusive */ public function __construct($version, $isInclusive) { $this->version = $version; $this->isInclusive = $isInclusive; } /** * @return string */ public function getVersion() { return $this->version; } /** * @return bool */ public function isInclusive() { return $this->isInclusive; } /** * @return bool */ public function isZero() { return $this->getVersion() === '0.0.0.0-dev' && $this->isInclusive(); } /** * @return bool */ public function isPositiveInfinity() { return $this->getVersion() === \PHP_INT_MAX . '.0.0.0' && !$this->isInclusive(); } /** * Compares a bound to another with a given operator. * * @param Bound $other * @param string $operator * * @return bool */ public function compareTo(Bound $other, $operator) { if (!\in_array($operator, array('<', '>'), \true)) { throw new \InvalidArgumentException('Does not support any other operator other than > or <.'); } // If they are the same it doesn't matter if ($this == $other) { return \false; } $compareResult = \version_compare($this->getVersion(), $other->getVersion()); // Not the same version means we don't need to check if the bounds are inclusive or not if (0 !== $compareResult) { return ('>' === $operator ? 1 : -1) === $compareResult; } // Question we're answering here is "am I higher than $other?" return '>' === $operator ? $other->isInclusive() : !$other->isInclusive(); } public function __toString() { return \sprintf('%s [%s]', $this->getVersion(), $this->isInclusive() ? 'inclusive' : 'exclusive'); } /** * @return self */ public static function zero() { return new Bound('0.0.0.0-dev', \true); } /** * @return self */ public static function positiveInfinity() { return new Bound(\PHP_INT_MAX . '.0.0.0', \false); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Semver\Constraint; /** * DO NOT IMPLEMENT this interface. It is only meant for usage as a type hint * in libraries relying on composer/semver but creating your own constraint class * that implements this interface is not a supported use case and will cause the * composer/semver components to return unexpected results. */ interface ConstraintInterface { /** * Checks whether the given constraint intersects in any way with this constraint * * @param ConstraintInterface $provider * * @return bool */ public function matches(ConstraintInterface $provider); /** * Provides a compiled version of the constraint for the given operator * The compiled version must be a PHP expression. * Executor of compile version must provide 2 variables: * - $v = the string version to compare with * - $b = whether or not the version is a non-comparable branch (starts with "dev-") * * @see Constraint::OP_* for the list of available operators. * @example return '!$b && version_compare($v, '1.0', '>')'; * * @param int $otherOperator one Constraint::OP_* * * @return string * * @phpstan-param Constraint::OP_* $otherOperator */ public function compile($otherOperator); /** * @return Bound */ public function getUpperBound(); /** * @return Bound */ public function getLowerBound(); /** * @return string */ public function getPrettyString(); /** * @param string|null $prettyString * * @return void */ public function setPrettyString($prettyString); /** * @return string */ public function __toString(); } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Semver\Constraint; /** * Defines a conjunctive or disjunctive set of constraints. */ class MultiConstraint implements ConstraintInterface { /** * @var ConstraintInterface[] * @phpstan-var non-empty-array */ protected $constraints; /** @var string|null */ protected $prettyString; /** @var string|null */ protected $string; /** @var bool */ protected $conjunctive; /** @var Bound|null */ protected $lowerBound; /** @var Bound|null */ protected $upperBound; /** * @param ConstraintInterface[] $constraints A set of constraints * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive * * @throws \InvalidArgumentException If less than 2 constraints are passed */ public function __construct(array $constraints, $conjunctive = \true) { if (\count($constraints) < 2) { throw new \InvalidArgumentException('Must provide at least two constraints for a MultiConstraint. Use ' . 'the regular Constraint class for one constraint only or MatchAllConstraint for none. You may use ' . 'MultiConstraint::create() which optimizes and handles those cases automatically.'); } $this->constraints = $constraints; $this->conjunctive = $conjunctive; } /** * @return ConstraintInterface[] */ public function getConstraints() { return $this->constraints; } /** * @return bool */ public function isConjunctive() { return $this->conjunctive; } /** * @return bool */ public function isDisjunctive() { return !$this->conjunctive; } /** * {@inheritDoc} */ public function compile($otherOperator) { $parts = array(); foreach ($this->constraints as $constraint) { $code = $constraint->compile($otherOperator); if ($code === 'true') { if (!$this->conjunctive) { return 'true'; } } elseif ($code === 'false') { if ($this->conjunctive) { return 'false'; } } else { $parts[] = '(' . $code . ')'; } } if (!$parts) { return $this->conjunctive ? 'true' : 'false'; } return $this->conjunctive ? \implode('&&', $parts) : \implode('||', $parts); } /** * @param ConstraintInterface $provider * * @return bool */ public function matches(ConstraintInterface $provider) { if (\false === $this->conjunctive) { foreach ($this->constraints as $constraint) { if ($provider->matches($constraint)) { return \true; } } return \false; } // when matching a conjunctive and a disjunctive multi constraint we have to iterate over the disjunctive one // otherwise we'd return true if different parts of the disjunctive constraint match the conjunctive one // which would lead to incorrect results, e.g. [>1 and <2] would match [<1 or >2] although they do not intersect if ($provider instanceof MultiConstraint && $provider->isDisjunctive()) { return $provider->matches($this); } foreach ($this->constraints as $constraint) { if (!$provider->matches($constraint)) { return \false; } } return \true; } /** * {@inheritDoc} */ public function setPrettyString($prettyString) { $this->prettyString = $prettyString; } /** * {@inheritDoc} */ public function getPrettyString() { if ($this->prettyString) { return $this->prettyString; } return (string) $this; } /** * {@inheritDoc} */ public function __toString() { if ($this->string !== null) { return $this->string; } $constraints = array(); foreach ($this->constraints as $constraint) { $constraints[] = (string) $constraint; } return $this->string = '[' . \implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']'; } /** * {@inheritDoc} */ public function getLowerBound() { $this->extractBounds(); if (null === $this->lowerBound) { throw new \LogicException('extractBounds should have populated the lowerBound property'); } return $this->lowerBound; } /** * {@inheritDoc} */ public function getUpperBound() { $this->extractBounds(); if (null === $this->upperBound) { throw new \LogicException('extractBounds should have populated the upperBound property'); } return $this->upperBound; } /** * Tries to optimize the constraints as much as possible, meaning * reducing/collapsing congruent constraints etc. * Does not necessarily return a MultiConstraint instance if * things can be reduced to a simple constraint * * @param ConstraintInterface[] $constraints A set of constraints * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive * * @return ConstraintInterface */ public static function create(array $constraints, $conjunctive = \true) { if (0 === \count($constraints)) { return new MatchAllConstraint(); } if (1 === \count($constraints)) { return $constraints[0]; } $optimized = self::optimizeConstraints($constraints, $conjunctive); if ($optimized !== null) { list($constraints, $conjunctive) = $optimized; if (\count($constraints) === 1) { return $constraints[0]; } } return new self($constraints, $conjunctive); } /** * @param ConstraintInterface[] $constraints * @param bool $conjunctive * @return ?array * * @phpstan-return array{0: list, 1: bool}|null */ private static function optimizeConstraints(array $constraints, $conjunctive) { // parse the two OR groups and if they are contiguous we collapse // them into one constraint // [>= 1 < 2] || [>= 2 < 3] || [>= 3 < 4] => [>= 1 < 4] if (!$conjunctive) { $left = $constraints[0]; $mergedConstraints = array(); $optimized = \false; for ($i = 1, $l = \count($constraints); $i < $l; $i++) { $right = $constraints[$i]; if ($left instanceof self && $left->conjunctive && $right instanceof self && $right->conjunctive && \count($left->constraints) === 2 && \count($right->constraints) === 2 && ($left0 = (string) $left->constraints[0]) && $left0[0] === '>' && $left0[1] === '=' && ($left1 = (string) $left->constraints[1]) && $left1[0] === '<' && ($right0 = (string) $right->constraints[0]) && $right0[0] === '>' && $right0[1] === '=' && ($right1 = (string) $right->constraints[1]) && $right1[0] === '<' && \substr($left1, 2) === \substr($right0, 3)) { $optimized = \true; $left = new MultiConstraint(array($left->constraints[0], $right->constraints[1]), \true); } else { $mergedConstraints[] = $left; $left = $right; } } if ($optimized) { $mergedConstraints[] = $left; return array($mergedConstraints, \false); } } // TODO: Here's the place to put more optimizations return null; } /** * @return void */ private function extractBounds() { if (null !== $this->lowerBound) { return; } foreach ($this->constraints as $constraint) { if (null === $this->lowerBound || null === $this->upperBound) { $this->lowerBound = $constraint->getLowerBound(); $this->upperBound = $constraint->getUpperBound(); continue; } if ($constraint->getLowerBound()->compareTo($this->lowerBound, $this->isConjunctive() ? '>' : '<')) { $this->lowerBound = $constraint->getLowerBound(); } if ($constraint->getUpperBound()->compareTo($this->upperBound, $this->isConjunctive() ? '<' : '>')) { $this->upperBound = $constraint->getUpperBound(); } } } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Semver\Constraint; /** * Defines the absence of a constraint. * * This constraint matches everything. */ class MatchAllConstraint implements ConstraintInterface { /** @var string|null */ protected $prettyString; /** * @param ConstraintInterface $provider * * @return bool */ public function matches(ConstraintInterface $provider) { return \true; } /** * {@inheritDoc} */ public function compile($otherOperator) { return 'true'; } /** * {@inheritDoc} */ public function setPrettyString($prettyString) { $this->prettyString = $prettyString; } /** * {@inheritDoc} */ public function getPrettyString() { if ($this->prettyString) { return $this->prettyString; } return (string) $this; } /** * {@inheritDoc} */ public function __toString() { return '*'; } /** * {@inheritDoc} */ public function getUpperBound() { return Bound::positiveInfinity(); } /** * {@inheritDoc} */ public function getLowerBound() { return Bound::zero(); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Semver\Constraint; /** * Blackhole of constraints, nothing escapes it */ class MatchNoneConstraint implements ConstraintInterface { /** @var string|null */ protected $prettyString; /** * @param ConstraintInterface $provider * * @return bool */ public function matches(ConstraintInterface $provider) { return \false; } /** * {@inheritDoc} */ public function compile($otherOperator) { return 'false'; } /** * {@inheritDoc} */ public function setPrettyString($prettyString) { $this->prettyString = $prettyString; } /** * {@inheritDoc} */ public function getPrettyString() { if ($this->prettyString) { return $this->prettyString; } return (string) $this; } /** * {@inheritDoc} */ public function __toString() { return '[]'; } /** * {@inheritDoc} */ public function getUpperBound() { return new Bound('0.0.0.0-dev', \false); } /** * {@inheritDoc} */ public function getLowerBound() { return new Bound('0.0.0.0-dev', \false); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Semver\Constraint; /** * Defines a constraint. */ class Constraint implements ConstraintInterface { /* operator integer values */ const OP_EQ = 0; const OP_LT = 1; const OP_LE = 2; const OP_GT = 3; const OP_GE = 4; const OP_NE = 5; /* operator string values */ const STR_OP_EQ = '=='; const STR_OP_EQ_ALT = '='; const STR_OP_LT = '<'; const STR_OP_LE = '<='; const STR_OP_GT = '>'; const STR_OP_GE = '>='; const STR_OP_NE = '!='; const STR_OP_NE_ALT = '<>'; /** * Operator to integer translation table. * * @var array * @phpstan-var array */ private static $transOpStr = array('=' => self::OP_EQ, '==' => self::OP_EQ, '<' => self::OP_LT, '<=' => self::OP_LE, '>' => self::OP_GT, '>=' => self::OP_GE, '<>' => self::OP_NE, '!=' => self::OP_NE); /** * Integer to operator translation table. * * @var array * @phpstan-var array */ private static $transOpInt = array(self::OP_EQ => '==', self::OP_LT => '<', self::OP_LE => '<=', self::OP_GT => '>', self::OP_GE => '>=', self::OP_NE => '!='); /** * @var int * @phpstan-var self::OP_* */ protected $operator; /** @var string */ protected $version; /** @var string|null */ protected $prettyString; /** @var Bound */ protected $lowerBound; /** @var Bound */ protected $upperBound; /** * Sets operator and version to compare with. * * @param string $operator * @param string $version * * @throws \InvalidArgumentException if invalid operator is given. * * @phpstan-param self::STR_OP_* $operator */ public function __construct($operator, $version) { if (!isset(self::$transOpStr[$operator])) { throw new \InvalidArgumentException(\sprintf('Invalid operator "%s" given, expected one of: %s', $operator, \implode(', ', self::getSupportedOperators()))); } $this->operator = self::$transOpStr[$operator]; $this->version = $version; } /** * @return string */ public function getVersion() { return $this->version; } /** * @return string * * @phpstan-return self::STR_OP_* */ public function getOperator() { return self::$transOpInt[$this->operator]; } /** * @param ConstraintInterface $provider * * @return bool */ public function matches(ConstraintInterface $provider) { if ($provider instanceof self) { return $this->matchSpecific($provider); } // turn matching around to find a match return $provider->matches($this); } /** * {@inheritDoc} */ public function setPrettyString($prettyString) { $this->prettyString = $prettyString; } /** * {@inheritDoc} */ public function getPrettyString() { if ($this->prettyString) { return $this->prettyString; } return $this->__toString(); } /** * Get all supported comparison operators. * * @return array * * @phpstan-return list */ public static function getSupportedOperators() { return \array_keys(self::$transOpStr); } /** * @param string $operator * @return int * * @phpstan-param self::STR_OP_* $operator * @phpstan-return self::OP_* */ public static function getOperatorConstant($operator) { return self::$transOpStr[$operator]; } /** * @param string $a * @param string $b * @param string $operator * @param bool $compareBranches * * @throws \InvalidArgumentException if invalid operator is given. * * @return bool * * @phpstan-param self::STR_OP_* $operator */ public function versionCompare($a, $b, $operator, $compareBranches = \false) { if (!isset(self::$transOpStr[$operator])) { throw new \InvalidArgumentException(\sprintf('Invalid operator "%s" given, expected one of: %s', $operator, \implode(', ', self::getSupportedOperators()))); } $aIsBranch = \strpos($a, 'dev-') === 0; $bIsBranch = \strpos($b, 'dev-') === 0; if ($operator === '!=' && ($aIsBranch || $bIsBranch)) { return $a !== $b; } if ($aIsBranch && $bIsBranch) { return $operator === '==' && $a === $b; } // when branches are not comparable, we make sure dev branches never match anything if (!$compareBranches && ($aIsBranch || $bIsBranch)) { return \false; } return \version_compare($a, $b, $operator); } /** * {@inheritDoc} */ public function compile($otherOperator) { if (\strpos($this->version, 'dev-') === 0) { if (self::OP_EQ === $this->operator) { if (self::OP_EQ === $otherOperator) { return \sprintf('$b && $v === %s', \var_export($this->version, \true)); } if (self::OP_NE === $otherOperator) { return \sprintf('!$b || $v !== %s', \var_export($this->version, \true)); } return 'false'; } if (self::OP_NE === $this->operator) { if (self::OP_EQ === $otherOperator) { return \sprintf('!$b || $v !== %s', \var_export($this->version, \true)); } if (self::OP_NE === $otherOperator) { return 'true'; } return '!$b'; } return 'false'; } if (self::OP_EQ === $this->operator) { if (self::OP_EQ === $otherOperator) { return \sprintf('\\version_compare($v, %s, \'==\')', \var_export($this->version, \true)); } if (self::OP_NE === $otherOperator) { return \sprintf('$b || \\version_compare($v, %s, \'!=\')', \var_export($this->version, \true)); } return \sprintf('!$b && \\version_compare(%s, $v, \'%s\')', \var_export($this->version, \true), self::$transOpInt[$otherOperator]); } if (self::OP_NE === $this->operator) { if (self::OP_EQ === $otherOperator) { return \sprintf('$b || (!$b && \\version_compare($v, %s, \'!=\'))', \var_export($this->version, \true)); } if (self::OP_NE === $otherOperator) { return 'true'; } return '!$b'; } if (self::OP_LT === $this->operator || self::OP_LE === $this->operator) { if (self::OP_LT === $otherOperator || self::OP_LE === $otherOperator) { return '!$b'; } } else { // $this->operator must be self::OP_GT || self::OP_GE here if (self::OP_GT === $otherOperator || self::OP_GE === $otherOperator) { return '!$b'; } } if (self::OP_NE === $otherOperator) { return 'true'; } $codeComparison = \sprintf('\\version_compare($v, %s, \'%s\')', \var_export($this->version, \true), self::$transOpInt[$this->operator]); if ($this->operator === self::OP_LE) { if ($otherOperator === self::OP_GT) { return \sprintf('!$b && \\version_compare($v, %s, \'!=\') && ', \var_export($this->version, \true)) . $codeComparison; } } elseif ($this->operator === self::OP_GE) { if ($otherOperator === self::OP_LT) { return \sprintf('!$b && \\version_compare($v, %s, \'!=\') && ', \var_export($this->version, \true)) . $codeComparison; } } return \sprintf('!$b && %s', $codeComparison); } /** * @param Constraint $provider * @param bool $compareBranches * * @return bool */ public function matchSpecific(Constraint $provider, $compareBranches = \false) { $noEqualOp = \str_replace('=', '', self::$transOpInt[$this->operator]); $providerNoEqualOp = \str_replace('=', '', self::$transOpInt[$provider->operator]); $isEqualOp = self::OP_EQ === $this->operator; $isNonEqualOp = self::OP_NE === $this->operator; $isProviderEqualOp = self::OP_EQ === $provider->operator; $isProviderNonEqualOp = self::OP_NE === $provider->operator; // '!=' operator is match when other operator is not '==' operator or version is not match // these kinds of comparisons always have a solution if ($isNonEqualOp || $isProviderNonEqualOp) { if ($isNonEqualOp && !$isProviderNonEqualOp && !$isProviderEqualOp && \strpos($provider->version, 'dev-') === 0) { return \false; } if ($isProviderNonEqualOp && !$isNonEqualOp && !$isEqualOp && \strpos($this->version, 'dev-') === 0) { return \false; } if (!$isEqualOp && !$isProviderEqualOp) { return \true; } return $this->versionCompare($provider->version, $this->version, '!=', $compareBranches); } // an example for the condition is <= 2.0 & < 1.0 // these kinds of comparisons always have a solution if ($this->operator !== self::OP_EQ && $noEqualOp === $providerNoEqualOp) { return !(\strpos($this->version, 'dev-') === 0 || \strpos($provider->version, 'dev-') === 0); } $version1 = $isEqualOp ? $this->version : $provider->version; $version2 = $isEqualOp ? $provider->version : $this->version; $operator = $isEqualOp ? $provider->operator : $this->operator; if ($this->versionCompare($version1, $version2, self::$transOpInt[$operator], $compareBranches)) { // special case, e.g. require >= 1.0 and provide < 1.0 // 1.0 >= 1.0 but 1.0 is outside of the provided interval return !(self::$transOpInt[$provider->operator] === $providerNoEqualOp && self::$transOpInt[$this->operator] !== $noEqualOp && \version_compare($provider->version, $this->version, '==')); } return \false; } /** * @return string */ public function __toString() { return self::$transOpInt[$this->operator] . ' ' . $this->version; } /** * {@inheritDoc} */ public function getLowerBound() { $this->extractBounds(); return $this->lowerBound; } /** * {@inheritDoc} */ public function getUpperBound() { $this->extractBounds(); return $this->upperBound; } /** * @return void */ private function extractBounds() { if (null !== $this->lowerBound) { return; } // Branches if (\strpos($this->version, 'dev-') === 0) { $this->lowerBound = Bound::zero(); $this->upperBound = Bound::positiveInfinity(); return; } switch ($this->operator) { case self::OP_EQ: $this->lowerBound = new Bound($this->version, \true); $this->upperBound = new Bound($this->version, \true); break; case self::OP_LT: $this->lowerBound = Bound::zero(); $this->upperBound = new Bound($this->version, \false); break; case self::OP_LE: $this->lowerBound = Bound::zero(); $this->upperBound = new Bound($this->version, \true); break; case self::OP_GT: $this->lowerBound = new Bound($this->version, \false); $this->upperBound = Bound::positiveInfinity(); break; case self::OP_GE: $this->lowerBound = new Bound($this->version, \true); $this->upperBound = Bound::positiveInfinity(); break; case self::OP_NE: $this->lowerBound = Bound::zero(); $this->upperBound = Bound::positiveInfinity(); break; } } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Semver; use _PHPStan_b22655c3f\Composer\Semver\Constraint\Constraint; use _PHPStan_b22655c3f\Composer\Semver\Constraint\ConstraintInterface; /** * Helper class to evaluate constraint by compiling and reusing the code to evaluate */ class CompilingMatcher { /** * @var array * @phpstan-var array */ private static $compiledCheckerCache = array(); /** * @var array * @phpstan-var array */ private static $resultCache = array(); /** @var bool */ private static $enabled; /** * @phpstan-var array */ private static $transOpInt = array(Constraint::OP_EQ => Constraint::STR_OP_EQ, Constraint::OP_LT => Constraint::STR_OP_LT, Constraint::OP_LE => Constraint::STR_OP_LE, Constraint::OP_GT => Constraint::STR_OP_GT, Constraint::OP_GE => Constraint::STR_OP_GE, Constraint::OP_NE => Constraint::STR_OP_NE); /** * Clears the memoization cache once you are done * * @return void */ public static function clear() { self::$resultCache = array(); self::$compiledCheckerCache = array(); } /** * Evaluates the expression: $constraint match $operator $version * * @param ConstraintInterface $constraint * @param int $operator * @phpstan-param Constraint::OP_* $operator * @param string $version * * @return mixed */ public static function match(ConstraintInterface $constraint, $operator, $version) { $resultCacheKey = $operator . $constraint . ';' . $version; if (isset(self::$resultCache[$resultCacheKey])) { return self::$resultCache[$resultCacheKey]; } if (self::$enabled === null) { self::$enabled = !\in_array('eval', \explode(',', (string) \ini_get('disable_functions')), \true); } if (!self::$enabled) { return self::$resultCache[$resultCacheKey] = $constraint->matches(new Constraint(self::$transOpInt[$operator], $version)); } $cacheKey = $operator . $constraint; if (!isset(self::$compiledCheckerCache[$cacheKey])) { $code = $constraint->compile($operator); self::$compiledCheckerCache[$cacheKey] = $function = eval('return function($v, $b){return ' . $code . ';};'); } else { $function = self::$compiledCheckerCache[$cacheKey]; } return self::$resultCache[$resultCacheKey] = $function($version, \strpos($version, 'dev-') === 0); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Semver; use _PHPStan_b22655c3f\Composer\Semver\Constraint\Constraint; class Interval { /** @var Constraint */ private $start; /** @var Constraint */ private $end; public function __construct(Constraint $start, Constraint $end) { $this->start = $start; $this->end = $end; } /** * @return Constraint */ public function getStart() { return $this->start; } /** * @return Constraint */ public function getEnd() { return $this->end; } /** * @return Constraint */ public static function fromZero() { static $zero; if (null === $zero) { $zero = new Constraint('>=', '0.0.0.0-dev'); } return $zero; } /** * @return Constraint */ public static function untilPositiveInfinity() { static $positiveInfinity; if (null === $positiveInfinity) { $positiveInfinity = new Constraint('<', \PHP_INT_MAX . '.0.0.0'); } return $positiveInfinity; } /** * @return self */ public static function any() { return new self(self::fromZero(), self::untilPositiveInfinity()); } /** * @return array{'names': string[], 'exclude': bool} */ public static function anyDev() { // any == exclude nothing return array('names' => array(), 'exclude' => \true); } /** * @return array{'names': string[], 'exclude': bool} */ public static function noDev() { // nothing == no names included return array('names' => array(), 'exclude' => \false); } } $vendorDir . '/hoa/consistency/Prelude.php', '3e76f7f02b41af8cea96018933f6b7e3' => $vendorDir . '/hoa/protocol/Wrapper.php', 'ad155f8f1cf0d418fe49e248db8c661b' => $vendorDir . '/react/promise/src/functions_include.php', 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', 'fe1d4898277c26748a003292f432cd3b' => $vendorDir . '/jetbrains/phpstorm-stubs/PhpStormStubsMap.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', 'c4e03ecd470d2a87804979c0a8152284' => $vendorDir . '/react/async/src/functions_include.php', 'b686b8e46447868025a15ce5d0cb2634' => $vendorDir . '/symfony/polyfill-php74/bootstrap.php', '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php', '23e1affdf407e3538a1f32c140fb0401' => $baseDir . '/src/debugScope.php', '8b3b25e11e82753923d43e298a70dcd0' => $baseDir . '/src/dumpType.php', '9662279e3e75f737d93030252673bf2d' => $baseDir . '/src/autoloadFunctions.php', '1a2eab53065eff9692bac238d15cc8cb' => $baseDir . '/src/Testing/functions.php', ); array($vendorDir . '/symfony/polyfill-ctype'), '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'), '_PHPStan_b22655c3f\\Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'), '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), '_PHPStan_b22655c3f\\React\\Stream\\' => array($vendorDir . '/react/stream/src'), '_PHPStan_b22655c3f\\React\\Socket\\' => array($vendorDir . '/react/socket/src'), '_PHPStan_b22655c3f\\React\\Promise\\' => array($vendorDir . '/react/promise/src'), '_PHPStan_b22655c3f\\React\\Http\\' => array($vendorDir . '/react/http/src'), '_PHPStan_b22655c3f\\React\\EventLoop\\' => array($vendorDir . '/react/event-loop/src'), '_PHPStan_b22655c3f\\React\\Dns\\' => array($vendorDir . '/react/dns/src'), '_PHPStan_b22655c3f\\React\\ChildProcess\\' => array($vendorDir . '/react/child-process/src'), '_PHPStan_b22655c3f\\React\\Cache\\' => array($vendorDir . '/react/cache/src'), '_PHPStan_b22655c3f\\Psr\\Log\\' => array($vendorDir . '/psr/log/src'), '_PHPStan_b22655c3f\\Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'), '_PHPStan_b22655c3f\\Psr\\Container\\' => array($vendorDir . '/psr/container/src'), '_PHPStan_b22655c3f\\OndraM\\CiDetector\\' => array($vendorDir . '/ondram/ci-detector/src'), '_PHPStan_b22655c3f\\Fig\\Http\\Message\\' => array($vendorDir . '/fig/http-message-util/src'), '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\' => array($vendorDir . '/fidry/cpu-core-counter/src'), '_PHPStan_b22655c3f\\Evenement\\' => array($vendorDir . '/evenement/evenement/src'), '_PHPStan_b22655c3f\\Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'), '_PHPStan_b22655c3f\\Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'), '_PHPStan_b22655c3f\\Composer\\Pcre\\' => array($vendorDir . '/composer/pcre/src'), '_PHPStan_b22655c3f\\Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'), '_PHPStan_b22655c3f\\Clue\\React\\NDJson\\' => array($vendorDir . '/clue/ndjson-react/src'), 'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'), 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), 'Symfony\\Polyfill\\Php74\\' => array($vendorDir . '/symfony/polyfill-php74'), 'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'), 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'), 'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'), 'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'), 'PHPStan\\PhpDocParser\\' => array($vendorDir . '/phpstan/phpdoc-parser/src'), 'PHPStan\\BetterReflection\\' => array($vendorDir . '/ondrejmirtes/better-reflection/src'), 'PHPStan\\' => array($baseDir . '/src'), 'Hoa\\Zformat\\' => array($vendorDir . '/hoa/zformat'), 'Hoa\\Visitor\\' => array($vendorDir . '/hoa/visitor'), 'Hoa\\Ustring\\' => array($vendorDir . '/hoa/ustring'), 'Hoa\\Stream\\' => array($vendorDir . '/hoa/stream'), 'Hoa\\Regex\\' => array($vendorDir . '/hoa/regex'), 'Hoa\\Protocol\\' => array($vendorDir . '/hoa/protocol'), 'Hoa\\Math\\' => array($vendorDir . '/hoa/math'), 'Hoa\\Iterator\\' => array($vendorDir . '/hoa/iterator'), 'Hoa\\File\\' => array($vendorDir . '/hoa/file'), 'Hoa\\Exception\\' => array($vendorDir . '/hoa/exception'), 'Hoa\\Event\\' => array($vendorDir . '/hoa/event'), 'Hoa\\Consistency\\' => array($vendorDir . '/hoa/consistency'), 'Hoa\\Compiler\\' => array($vendorDir . '/hoa/compiler'), ); __DIR__ . '/..' . '/hoa/consistency/Prelude.php', '3e76f7f02b41af8cea96018933f6b7e3' => __DIR__ . '/..' . '/hoa/protocol/Wrapper.php', 'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php', 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', 'fe1d4898277c26748a003292f432cd3b' => __DIR__ . '/..' . '/jetbrains/phpstorm-stubs/PhpStormStubsMap.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', 'c4e03ecd470d2a87804979c0a8152284' => __DIR__ . '/..' . '/react/async/src/functions_include.php', 'b686b8e46447868025a15ce5d0cb2634' => __DIR__ . '/..' . '/symfony/polyfill-php74/bootstrap.php', '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php', '23e1affdf407e3538a1f32c140fb0401' => __DIR__ . '/../..' . '/src/debugScope.php', '8b3b25e11e82753923d43e298a70dcd0' => __DIR__ . '/../..' . '/src/dumpType.php', '9662279e3e75f737d93030252673bf2d' => __DIR__ . '/../..' . '/src/autoloadFunctions.php', '1a2eab53065eff9692bac238d15cc8cb' => __DIR__ . '/../..' . '/src/Testing/functions.php', ); public static $prefixLengthsPsr4 = array ( '_' => array ( '_PHPStan_b22655c3f\\Symfony\\Polyfill\\Ctype\\' => 42, '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\' => 45, '_PHPStan_b22655c3f\\Symfony\\Component\\String\\' => 44, '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\' => 45, '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\' => 44, '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\' => 45, '_PHPStan_b22655c3f\\React\\Stream\\' => 32, '_PHPStan_b22655c3f\\React\\Socket\\' => 32, '_PHPStan_b22655c3f\\React\\Promise\\' => 33, '_PHPStan_b22655c3f\\React\\Http\\' => 30, '_PHPStan_b22655c3f\\React\\EventLoop\\' => 35, '_PHPStan_b22655c3f\\React\\Dns\\' => 29, '_PHPStan_b22655c3f\\React\\ChildProcess\\' => 38, '_PHPStan_b22655c3f\\React\\Cache\\' => 31, '_PHPStan_b22655c3f\\Psr\\Log\\' => 27, '_PHPStan_b22655c3f\\Psr\\Http\\Message\\' => 36, '_PHPStan_b22655c3f\\Psr\\Container\\' => 33, '_PHPStan_b22655c3f\\OndraM\\CiDetector\\' => 37, '_PHPStan_b22655c3f\\Fig\\Http\\Message\\' => 36, '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\' => 40, '_PHPStan_b22655c3f\\Evenement\\' => 29, '_PHPStan_b22655c3f\\Composer\\XdebugHandler\\' => 42, '_PHPStan_b22655c3f\\Composer\\Semver\\' => 35, '_PHPStan_b22655c3f\\Composer\\Pcre\\' => 33, '_PHPStan_b22655c3f\\Composer\\CaBundle\\' => 37, '_PHPStan_b22655c3f\\Clue\\React\\NDJson\\' => 37, ), 'S' => array ( 'Symfony\\Polyfill\\Php81\\' => 23, 'Symfony\\Polyfill\\Php80\\' => 23, 'Symfony\\Polyfill\\Php74\\' => 23, 'Symfony\\Polyfill\\Php73\\' => 23, 'Symfony\\Polyfill\\Mbstring\\' => 26, 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33, 'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31, ), 'P' => array ( 'PhpParser\\' => 10, 'PHPStan\\PhpDocParser\\' => 21, 'PHPStan\\BetterReflection\\' => 25, 'PHPStan\\' => 8, ), 'H' => array ( 'Hoa\\Zformat\\' => 12, 'Hoa\\Visitor\\' => 12, 'Hoa\\Ustring\\' => 12, 'Hoa\\Stream\\' => 11, 'Hoa\\Regex\\' => 10, 'Hoa\\Protocol\\' => 13, 'Hoa\\Math\\' => 9, 'Hoa\\Iterator\\' => 13, 'Hoa\\File\\' => 9, 'Hoa\\Exception\\' => 14, 'Hoa\\Event\\' => 10, 'Hoa\\Consistency\\' => 16, 'Hoa\\Compiler\\' => 13, ), ); public static $prefixDirsPsr4 = array ( '_PHPStan_b22655c3f\\Symfony\\Polyfill\\Ctype\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', ), '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\' => array ( 0 => __DIR__ . '/..' . '/symfony/service-contracts', ), '_PHPStan_b22655c3f\\Symfony\\Component\\String\\' => array ( 0 => __DIR__ . '/..' . '/symfony/string', ), '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\' => array ( 0 => __DIR__ . '/..' . '/symfony/process', ), '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\' => array ( 0 => __DIR__ . '/..' . '/symfony/finder', ), '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\' => array ( 0 => __DIR__ . '/..' . '/symfony/console', ), '_PHPStan_b22655c3f\\React\\Stream\\' => array ( 0 => __DIR__ . '/..' . '/react/stream/src', ), '_PHPStan_b22655c3f\\React\\Socket\\' => array ( 0 => __DIR__ . '/..' . '/react/socket/src', ), '_PHPStan_b22655c3f\\React\\Promise\\' => array ( 0 => __DIR__ . '/..' . '/react/promise/src', ), '_PHPStan_b22655c3f\\React\\Http\\' => array ( 0 => __DIR__ . '/..' . '/react/http/src', ), '_PHPStan_b22655c3f\\React\\EventLoop\\' => array ( 0 => __DIR__ . '/..' . '/react/event-loop/src', ), '_PHPStan_b22655c3f\\React\\Dns\\' => array ( 0 => __DIR__ . '/..' . '/react/dns/src', ), '_PHPStan_b22655c3f\\React\\ChildProcess\\' => array ( 0 => __DIR__ . '/..' . '/react/child-process/src', ), '_PHPStan_b22655c3f\\React\\Cache\\' => array ( 0 => __DIR__ . '/..' . '/react/cache/src', ), '_PHPStan_b22655c3f\\Psr\\Log\\' => array ( 0 => __DIR__ . '/..' . '/psr/log/src', ), '_PHPStan_b22655c3f\\Psr\\Http\\Message\\' => array ( 0 => __DIR__ . '/..' . '/psr/http-message/src', ), '_PHPStan_b22655c3f\\Psr\\Container\\' => array ( 0 => __DIR__ . '/..' . '/psr/container/src', ), '_PHPStan_b22655c3f\\OndraM\\CiDetector\\' => array ( 0 => __DIR__ . '/..' . '/ondram/ci-detector/src', ), '_PHPStan_b22655c3f\\Fig\\Http\\Message\\' => array ( 0 => __DIR__ . '/..' . '/fig/http-message-util/src', ), '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\' => array ( 0 => __DIR__ . '/..' . '/fidry/cpu-core-counter/src', ), '_PHPStan_b22655c3f\\Evenement\\' => array ( 0 => __DIR__ . '/..' . '/evenement/evenement/src', ), '_PHPStan_b22655c3f\\Composer\\XdebugHandler\\' => array ( 0 => __DIR__ . '/..' . '/composer/xdebug-handler/src', ), '_PHPStan_b22655c3f\\Composer\\Semver\\' => array ( 0 => __DIR__ . '/..' . '/composer/semver/src', ), '_PHPStan_b22655c3f\\Composer\\Pcre\\' => array ( 0 => __DIR__ . '/..' . '/composer/pcre/src', ), '_PHPStan_b22655c3f\\Composer\\CaBundle\\' => array ( 0 => __DIR__ . '/..' . '/composer/ca-bundle/src', ), '_PHPStan_b22655c3f\\Clue\\React\\NDJson\\' => array ( 0 => __DIR__ . '/..' . '/clue/ndjson-react/src', ), 'Symfony\\Polyfill\\Php81\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-php81', ), 'Symfony\\Polyfill\\Php80\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', ), 'Symfony\\Polyfill\\Php74\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-php74', ), 'Symfony\\Polyfill\\Php73\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-php73', ), 'Symfony\\Polyfill\\Mbstring\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', ), 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer', ), 'Symfony\\Polyfill\\Intl\\Grapheme\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme', ), 'PhpParser\\' => array ( 0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser', ), 'PHPStan\\PhpDocParser\\' => array ( 0 => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src', ), 'PHPStan\\BetterReflection\\' => array ( 0 => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src', ), 'PHPStan\\' => array ( 0 => __DIR__ . '/../..' . '/src', ), 'Hoa\\Zformat\\' => array ( 0 => __DIR__ . '/..' . '/hoa/zformat', ), 'Hoa\\Visitor\\' => array ( 0 => __DIR__ . '/..' . '/hoa/visitor', ), 'Hoa\\Ustring\\' => array ( 0 => __DIR__ . '/..' . '/hoa/ustring', ), 'Hoa\\Stream\\' => array ( 0 => __DIR__ . '/..' . '/hoa/stream', ), 'Hoa\\Regex\\' => array ( 0 => __DIR__ . '/..' . '/hoa/regex', ), 'Hoa\\Protocol\\' => array ( 0 => __DIR__ . '/..' . '/hoa/protocol', ), 'Hoa\\Math\\' => array ( 0 => __DIR__ . '/..' . '/hoa/math', ), 'Hoa\\Iterator\\' => array ( 0 => __DIR__ . '/..' . '/hoa/iterator', ), 'Hoa\\File\\' => array ( 0 => __DIR__ . '/..' . '/hoa/file', ), 'Hoa\\Exception\\' => array ( 0 => __DIR__ . '/..' . '/hoa/exception', ), 'Hoa\\Event\\' => array ( 0 => __DIR__ . '/..' . '/hoa/event', ), 'Hoa\\Consistency\\' => array ( 0 => __DIR__ . '/..' . '/hoa/consistency', ), 'Hoa\\Compiler\\' => array ( 0 => __DIR__ . '/..' . '/hoa/compiler', ), ); public static $classMap = array ( 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', 'CURLStringFile' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 'Hoa\\Compiler\\Bin\\Pp' => __DIR__ . '/..' . '/hoa/compiler/Bin/Pp.php', 'Hoa\\Compiler\\Exception\\Exception' => __DIR__ . '/..' . '/hoa/compiler/Exception/Exception.php', 'Hoa\\Compiler\\Exception\\FinalStateHasNotBeenReached' => __DIR__ . '/..' . '/hoa/compiler/Exception/FinalStateHasNotBeenReached.php', 'Hoa\\Compiler\\Exception\\IllegalToken' => __DIR__ . '/..' . '/hoa/compiler/Exception/IllegalToken.php', 'Hoa\\Compiler\\Exception\\Lexer' => __DIR__ . '/..' . '/hoa/compiler/Exception/Lexer.php', 'Hoa\\Compiler\\Exception\\Rule' => __DIR__ . '/..' . '/hoa/compiler/Exception/Rule.php', 'Hoa\\Compiler\\Exception\\UnexpectedToken' => __DIR__ . '/..' . '/hoa/compiler/Exception/UnexpectedToken.php', 'Hoa\\Compiler\\Exception\\UnrecognizedToken' => __DIR__ . '/..' . '/hoa/compiler/Exception/UnrecognizedToken.php', 'Hoa\\Compiler\\Ll1' => __DIR__ . '/..' . '/hoa/compiler/Ll1.php', 'Hoa\\Compiler\\Llk\\Lexer' => __DIR__ . '/..' . '/hoa/compiler/Llk/Lexer.php', 'Hoa\\Compiler\\Llk\\Llk' => __DIR__ . '/..' . '/hoa/compiler/Llk/Llk.php', 'Hoa\\Compiler\\Llk\\Parser' => __DIR__ . '/..' . '/hoa/compiler/Llk/Parser.php', 'Hoa\\Compiler\\Llk\\Rule\\Analyzer' => __DIR__ . '/..' . '/hoa/compiler/Llk/Rule/Analyzer.php', 'Hoa\\Compiler\\Llk\\Rule\\Choice' => __DIR__ . '/..' . '/hoa/compiler/Llk/Rule/Choice.php', 'Hoa\\Compiler\\Llk\\Rule\\Concatenation' => __DIR__ . '/..' . '/hoa/compiler/Llk/Rule/Concatenation.php', 'Hoa\\Compiler\\Llk\\Rule\\Ekzit' => __DIR__ . '/..' . '/hoa/compiler/Llk/Rule/Ekzit.php', 'Hoa\\Compiler\\Llk\\Rule\\Entry' => __DIR__ . '/..' . '/hoa/compiler/Llk/Rule/Entry.php', 'Hoa\\Compiler\\Llk\\Rule\\Invocation' => __DIR__ . '/..' . '/hoa/compiler/Llk/Rule/Invocation.php', 'Hoa\\Compiler\\Llk\\Rule\\Repetition' => __DIR__ . '/..' . '/hoa/compiler/Llk/Rule/Repetition.php', 'Hoa\\Compiler\\Llk\\Rule\\Rule' => __DIR__ . '/..' . '/hoa/compiler/Llk/Rule/Rule.php', 'Hoa\\Compiler\\Llk\\Rule\\Token' => __DIR__ . '/..' . '/hoa/compiler/Llk/Rule/Token.php', 'Hoa\\Compiler\\Llk\\Sampler\\BoundedExhaustive' => __DIR__ . '/..' . '/hoa/compiler/Llk/Sampler/BoundedExhaustive.php', 'Hoa\\Compiler\\Llk\\Sampler\\Coverage' => __DIR__ . '/..' . '/hoa/compiler/Llk/Sampler/Coverage.php', 'Hoa\\Compiler\\Llk\\Sampler\\Exception' => __DIR__ . '/..' . '/hoa/compiler/Llk/Sampler/Exception.php', 'Hoa\\Compiler\\Llk\\Sampler\\Sampler' => __DIR__ . '/..' . '/hoa/compiler/Llk/Sampler/Sampler.php', 'Hoa\\Compiler\\Llk\\Sampler\\Uniform' => __DIR__ . '/..' . '/hoa/compiler/Llk/Sampler/Uniform.php', 'Hoa\\Compiler\\Llk\\TreeNode' => __DIR__ . '/..' . '/hoa/compiler/Llk/TreeNode.php', 'Hoa\\Compiler\\Visitor\\Dump' => __DIR__ . '/..' . '/hoa/compiler/Visitor/Dump.php', 'Hoa\\Consistency\\Autoloader' => __DIR__ . '/..' . '/hoa/consistency/Autoloader.php', 'Hoa\\Consistency\\Consistency' => __DIR__ . '/..' . '/hoa/consistency/Consistency.php', 'Hoa\\Consistency\\Exception' => __DIR__ . '/..' . '/hoa/consistency/Exception.php', 'Hoa\\Consistency\\Xcallable' => __DIR__ . '/..' . '/hoa/consistency/Xcallable.php', 'Hoa\\Event\\Bucket' => __DIR__ . '/..' . '/hoa/event/Bucket.php', 'Hoa\\Event\\Event' => __DIR__ . '/..' . '/hoa/event/Event.php', 'Hoa\\Event\\Exception' => __DIR__ . '/..' . '/hoa/event/Exception.php', 'Hoa\\Event\\Listenable' => __DIR__ . '/..' . '/hoa/event/Listenable.php', 'Hoa\\Event\\Listener' => __DIR__ . '/..' . '/hoa/event/Listener.php', 'Hoa\\Event\\Listens' => __DIR__ . '/..' . '/hoa/event/Listens.php', 'Hoa\\Event\\Source' => __DIR__ . '/..' . '/hoa/event/Source.php', 'Hoa\\Exception\\Error' => __DIR__ . '/..' . '/hoa/exception/Error.php', 'Hoa\\Exception\\Exception' => __DIR__ . '/..' . '/hoa/exception/Exception.php', 'Hoa\\Exception\\Group' => __DIR__ . '/..' . '/hoa/exception/Group.php', 'Hoa\\Exception\\Idle' => __DIR__ . '/..' . '/hoa/exception/Idle.php', 'Hoa\\File\\Directory' => __DIR__ . '/..' . '/hoa/file/Directory.php', 'Hoa\\File\\Exception\\Exception' => __DIR__ . '/..' . '/hoa/file/Exception/Exception.php', 'Hoa\\File\\Exception\\FileDoesNotExist' => __DIR__ . '/..' . '/hoa/file/Exception/FileDoesNotExist.php', 'Hoa\\File\\File' => __DIR__ . '/..' . '/hoa/file/File.php', 'Hoa\\File\\Finder' => __DIR__ . '/..' . '/hoa/file/Finder.php', 'Hoa\\File\\Generic' => __DIR__ . '/..' . '/hoa/file/Generic.php', 'Hoa\\File\\Link\\Link' => __DIR__ . '/..' . '/hoa/file/Link/Link.php', 'Hoa\\File\\Link\\Read' => __DIR__ . '/..' . '/hoa/file/Link/Read.php', 'Hoa\\File\\Link\\ReadWrite' => __DIR__ . '/..' . '/hoa/file/Link/ReadWrite.php', 'Hoa\\File\\Link\\Write' => __DIR__ . '/..' . '/hoa/file/Link/Write.php', 'Hoa\\File\\Read' => __DIR__ . '/..' . '/hoa/file/Read.php', 'Hoa\\File\\ReadWrite' => __DIR__ . '/..' . '/hoa/file/ReadWrite.php', 'Hoa\\File\\SplFileInfo' => __DIR__ . '/..' . '/hoa/file/SplFileInfo.php', 'Hoa\\File\\Temporary\\Read' => __DIR__ . '/..' . '/hoa/file/Temporary/Read.php', 'Hoa\\File\\Temporary\\ReadWrite' => __DIR__ . '/..' . '/hoa/file/Temporary/ReadWrite.php', 'Hoa\\File\\Temporary\\Temporary' => __DIR__ . '/..' . '/hoa/file/Temporary/Temporary.php', 'Hoa\\File\\Temporary\\Write' => __DIR__ . '/..' . '/hoa/file/Temporary/Write.php', 'Hoa\\File\\Watcher' => __DIR__ . '/..' . '/hoa/file/Watcher.php', 'Hoa\\File\\Write' => __DIR__ . '/..' . '/hoa/file/Write.php', 'Hoa\\Iterator\\Aggregate' => __DIR__ . '/..' . '/hoa/iterator/Aggregate.php', 'Hoa\\Iterator\\Append' => __DIR__ . '/..' . '/hoa/iterator/Append.php', 'Hoa\\Iterator\\Buffer' => __DIR__ . '/..' . '/hoa/iterator/Buffer.php', 'Hoa\\Iterator\\CallbackFilter' => __DIR__ . '/..' . '/hoa/iterator/CallbackFilter.php', 'Hoa\\Iterator\\CallbackGenerator' => __DIR__ . '/..' . '/hoa/iterator/CallbackGenerator.php', 'Hoa\\Iterator\\Counter' => __DIR__ . '/..' . '/hoa/iterator/Counter.php', 'Hoa\\Iterator\\Demultiplexer' => __DIR__ . '/..' . '/hoa/iterator/Demultiplexer.php', 'Hoa\\Iterator\\Directory' => __DIR__ . '/..' . '/hoa/iterator/Directory.php', 'Hoa\\Iterator\\Exception' => __DIR__ . '/..' . '/hoa/iterator/Exception.php', 'Hoa\\Iterator\\FileSystem' => __DIR__ . '/..' . '/hoa/iterator/FileSystem.php', 'Hoa\\Iterator\\Filter' => __DIR__ . '/..' . '/hoa/iterator/Filter.php', 'Hoa\\Iterator\\Glob' => __DIR__ . '/..' . '/hoa/iterator/Glob.php', 'Hoa\\Iterator\\Infinite' => __DIR__ . '/..' . '/hoa/iterator/Infinite.php', 'Hoa\\Iterator\\Iterator' => __DIR__ . '/..' . '/hoa/iterator/Iterator.php', 'Hoa\\Iterator\\IteratorIterator' => __DIR__ . '/..' . '/hoa/iterator/IteratorIterator.php', 'Hoa\\Iterator\\Limit' => __DIR__ . '/..' . '/hoa/iterator/Limit.php', 'Hoa\\Iterator\\Lookahead' => __DIR__ . '/..' . '/hoa/iterator/Lookahead.php', 'Hoa\\Iterator\\Lookbehind' => __DIR__ . '/..' . '/hoa/iterator/Lookbehind.php', 'Hoa\\Iterator\\Map' => __DIR__ . '/..' . '/hoa/iterator/Map.php', 'Hoa\\Iterator\\Mock' => __DIR__ . '/..' . '/hoa/iterator/Mock.php', 'Hoa\\Iterator\\Multiple' => __DIR__ . '/..' . '/hoa/iterator/Multiple.php', 'Hoa\\Iterator\\NoRewind' => __DIR__ . '/..' . '/hoa/iterator/NoRewind.php', 'Hoa\\Iterator\\Outer' => __DIR__ . '/..' . '/hoa/iterator/Outer.php', 'Hoa\\Iterator\\Recursive\\CallbackFilter' => __DIR__ . '/..' . '/hoa/iterator/Recursive/CallbackFilter.php', 'Hoa\\Iterator\\Recursive\\Directory' => __DIR__ . '/..' . '/hoa/iterator/Recursive/Directory.php', 'Hoa\\Iterator\\Recursive\\Filter' => __DIR__ . '/..' . '/hoa/iterator/Recursive/Filter.php', 'Hoa\\Iterator\\Recursive\\Iterator' => __DIR__ . '/..' . '/hoa/iterator/Recursive/Iterator.php', 'Hoa\\Iterator\\Recursive\\Map' => __DIR__ . '/..' . '/hoa/iterator/Recursive/Map.php', 'Hoa\\Iterator\\Recursive\\Mock' => __DIR__ . '/..' . '/hoa/iterator/Recursive/Mock.php', 'Hoa\\Iterator\\Recursive\\Recursive' => __DIR__ . '/..' . '/hoa/iterator/Recursive/Recursive.php', 'Hoa\\Iterator\\Recursive\\RegularExpression' => __DIR__ . '/..' . '/hoa/iterator/Recursive/RegularExpression.php', 'Hoa\\Iterator\\RegularExpression' => __DIR__ . '/..' . '/hoa/iterator/RegularExpression.php', 'Hoa\\Iterator\\Repeater' => __DIR__ . '/..' . '/hoa/iterator/Repeater.php', 'Hoa\\Iterator\\Seekable' => __DIR__ . '/..' . '/hoa/iterator/Seekable.php', 'Hoa\\Iterator\\SplFileInfo' => __DIR__ . '/..' . '/hoa/iterator/SplFileInfo.php', 'Hoa\\Math\\Bin\\Calc' => __DIR__ . '/..' . '/hoa/math/Bin/Calc.php', 'Hoa\\Math\\Combinatorics\\Combination\\CartesianProduct' => __DIR__ . '/..' . '/hoa/math/Combinatorics/Combination/CartesianProduct.php', 'Hoa\\Math\\Combinatorics\\Combination\\Combination' => __DIR__ . '/..' . '/hoa/math/Combinatorics/Combination/Combination.php', 'Hoa\\Math\\Combinatorics\\Combination\\Gamma' => __DIR__ . '/..' . '/hoa/math/Combinatorics/Combination/Gamma.php', 'Hoa\\Math\\Context' => __DIR__ . '/..' . '/hoa/math/Context.php', 'Hoa\\Math\\Exception\\AlreadyDefinedConstant' => __DIR__ . '/..' . '/hoa/math/Exception/AlreadyDefinedConstant.php', 'Hoa\\Math\\Exception\\Exception' => __DIR__ . '/..' . '/hoa/math/Exception/Exception.php', 'Hoa\\Math\\Exception\\UnknownConstant' => __DIR__ . '/..' . '/hoa/math/Exception/UnknownConstant.php', 'Hoa\\Math\\Exception\\UnknownFunction' => __DIR__ . '/..' . '/hoa/math/Exception/UnknownFunction.php', 'Hoa\\Math\\Exception\\UnknownVariable' => __DIR__ . '/..' . '/hoa/math/Exception/UnknownVariable.php', 'Hoa\\Math\\Sampler\\Random' => __DIR__ . '/..' . '/hoa/math/Sampler/Random.php', 'Hoa\\Math\\Sampler\\Sampler' => __DIR__ . '/..' . '/hoa/math/Sampler/Sampler.php', 'Hoa\\Math\\Util' => __DIR__ . '/..' . '/hoa/math/Util.php', 'Hoa\\Math\\Visitor\\Arithmetic' => __DIR__ . '/..' . '/hoa/math/Visitor/Arithmetic.php', 'Hoa\\Protocol\\Bin\\Resolve' => __DIR__ . '/..' . '/hoa/protocol/Bin/Resolve.php', 'Hoa\\Protocol\\Exception' => __DIR__ . '/..' . '/hoa/protocol/Exception.php', 'Hoa\\Protocol\\Node\\Library' => __DIR__ . '/..' . '/hoa/protocol/Node/Library.php', 'Hoa\\Protocol\\Node\\Node' => __DIR__ . '/..' . '/hoa/protocol/Node/Node.php', 'Hoa\\Protocol\\Protocol' => __DIR__ . '/..' . '/hoa/protocol/Protocol.php', 'Hoa\\Protocol\\Wrapper' => __DIR__ . '/..' . '/hoa/protocol/Wrapper.php', 'Hoa\\Regex\\Exception' => __DIR__ . '/..' . '/hoa/regex/Exception.php', 'Hoa\\Regex\\Visitor\\Isotropic' => __DIR__ . '/..' . '/hoa/regex/Visitor/Isotropic.php', 'Hoa\\Stream\\Bucket' => __DIR__ . '/..' . '/hoa/stream/Bucket.php', 'Hoa\\Stream\\Composite' => __DIR__ . '/..' . '/hoa/stream/Composite.php', 'Hoa\\Stream\\Context' => __DIR__ . '/..' . '/hoa/stream/Context.php', 'Hoa\\Stream\\Exception' => __DIR__ . '/..' . '/hoa/stream/Exception.php', 'Hoa\\Stream\\Filter\\Basic' => __DIR__ . '/..' . '/hoa/stream/Filter/Basic.php', 'Hoa\\Stream\\Filter\\Exception' => __DIR__ . '/..' . '/hoa/stream/Filter/Exception.php', 'Hoa\\Stream\\Filter\\Filter' => __DIR__ . '/..' . '/hoa/stream/Filter/Filter.php', 'Hoa\\Stream\\Filter\\LateComputed' => __DIR__ . '/..' . '/hoa/stream/Filter/LateComputed.php', 'Hoa\\Stream\\IStream\\Bufferable' => __DIR__ . '/..' . '/hoa/stream/IStream/Bufferable.php', 'Hoa\\Stream\\IStream\\In' => __DIR__ . '/..' . '/hoa/stream/IStream/In.php', 'Hoa\\Stream\\IStream\\Lockable' => __DIR__ . '/..' . '/hoa/stream/IStream/Lockable.php', 'Hoa\\Stream\\IStream\\Out' => __DIR__ . '/..' . '/hoa/stream/IStream/Out.php', 'Hoa\\Stream\\IStream\\Pathable' => __DIR__ . '/..' . '/hoa/stream/IStream/Pathable.php', 'Hoa\\Stream\\IStream\\Pointable' => __DIR__ . '/..' . '/hoa/stream/IStream/Pointable.php', 'Hoa\\Stream\\IStream\\Statable' => __DIR__ . '/..' . '/hoa/stream/IStream/Statable.php', 'Hoa\\Stream\\IStream\\Stream' => __DIR__ . '/..' . '/hoa/stream/IStream/Stream.php', 'Hoa\\Stream\\IStream\\Structural' => __DIR__ . '/..' . '/hoa/stream/IStream/Structural.php', 'Hoa\\Stream\\IStream\\Touchable' => __DIR__ . '/..' . '/hoa/stream/IStream/Touchable.php', 'Hoa\\Stream\\Stream' => __DIR__ . '/..' . '/hoa/stream/Stream.php', 'Hoa\\Stream\\Wrapper\\Exception' => __DIR__ . '/..' . '/hoa/stream/Wrapper/Exception.php', 'Hoa\\Stream\\Wrapper\\IWrapper\\File' => __DIR__ . '/..' . '/hoa/stream/Wrapper/IWrapper/File.php', 'Hoa\\Stream\\Wrapper\\IWrapper\\IWrapper' => __DIR__ . '/..' . '/hoa/stream/Wrapper/IWrapper/IWrapper.php', 'Hoa\\Stream\\Wrapper\\IWrapper\\Stream' => __DIR__ . '/..' . '/hoa/stream/Wrapper/IWrapper/Stream.php', 'Hoa\\Stream\\Wrapper\\Wrapper' => __DIR__ . '/..' . '/hoa/stream/Wrapper/Wrapper.php', 'Hoa\\Ustring\\Bin\\Fromcode' => __DIR__ . '/..' . '/hoa/ustring/Bin/Fromcode.php', 'Hoa\\Ustring\\Bin\\Tocode' => __DIR__ . '/..' . '/hoa/ustring/Bin/Tocode.php', 'Hoa\\Ustring\\Exception' => __DIR__ . '/..' . '/hoa/ustring/Exception.php', 'Hoa\\Ustring\\Search' => __DIR__ . '/..' . '/hoa/ustring/Search.php', 'Hoa\\Ustring\\Ustring' => __DIR__ . '/..' . '/hoa/ustring/Ustring.php', 'Hoa\\Visitor\\Element' => __DIR__ . '/..' . '/hoa/visitor/Element.php', 'Hoa\\Visitor\\Visit' => __DIR__ . '/..' . '/hoa/visitor/Visit.php', 'Hoa\\Zformat\\Exception' => __DIR__ . '/..' . '/hoa/zformat/Exception.php', 'Hoa\\Zformat\\Parameter' => __DIR__ . '/..' . '/hoa/zformat/Parameter.php', 'Hoa\\Zformat\\Parameterizable' => __DIR__ . '/..' . '/hoa/zformat/Parameterizable.php', 'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', 'PHPStan\\AnalysedCodeException' => __DIR__ . '/../..' . '/src/AnalysedCodeException.php', 'PHPStan\\Analyser\\Analyser' => __DIR__ . '/../..' . '/src/Analyser/Analyser.php', 'PHPStan\\Analyser\\AnalyserResult' => __DIR__ . '/../..' . '/src/Analyser/AnalyserResult.php', 'PHPStan\\Analyser\\AnalyserResultFinalizer' => __DIR__ . '/../..' . '/src/Analyser/AnalyserResultFinalizer.php', 'PHPStan\\Analyser\\ArgumentsNormalizer' => __DIR__ . '/../..' . '/src/Analyser/ArgumentsNormalizer.php', 'PHPStan\\Analyser\\ConditionalExpressionHolder' => __DIR__ . '/../..' . '/src/Analyser/ConditionalExpressionHolder.php', 'PHPStan\\Analyser\\ConstantResolver' => __DIR__ . '/../..' . '/src/Analyser/ConstantResolver.php', 'PHPStan\\Analyser\\ConstantResolverFactory' => __DIR__ . '/../..' . '/src/Analyser/ConstantResolverFactory.php', 'PHPStan\\Analyser\\DirectInternalScopeFactory' => __DIR__ . '/../..' . '/src/Analyser/DirectInternalScopeFactory.php', 'PHPStan\\Analyser\\EndStatementResult' => __DIR__ . '/../..' . '/src/Analyser/EndStatementResult.php', 'PHPStan\\Analyser\\EnsuredNonNullabilityResult' => __DIR__ . '/../..' . '/src/Analyser/EnsuredNonNullabilityResult.php', 'PHPStan\\Analyser\\EnsuredNonNullabilityResultExpression' => __DIR__ . '/../..' . '/src/Analyser/EnsuredNonNullabilityResultExpression.php', 'PHPStan\\Analyser\\Error' => __DIR__ . '/../..' . '/src/Analyser/Error.php', 'PHPStan\\Analyser\\ExpressionContext' => __DIR__ . '/../..' . '/src/Analyser/ExpressionContext.php', 'PHPStan\\Analyser\\ExpressionResult' => __DIR__ . '/../..' . '/src/Analyser/ExpressionResult.php', 'PHPStan\\Analyser\\ExpressionTypeHolder' => __DIR__ . '/../..' . '/src/Analyser/ExpressionTypeHolder.php', 'PHPStan\\Analyser\\FileAnalyser' => __DIR__ . '/../..' . '/src/Analyser/FileAnalyser.php', 'PHPStan\\Analyser\\FileAnalyserResult' => __DIR__ . '/../..' . '/src/Analyser/FileAnalyserResult.php', 'PHPStan\\Analyser\\FinalizerResult' => __DIR__ . '/../..' . '/src/Analyser/FinalizerResult.php', 'PHPStan\\Analyser\\Ignore\\IgnoreLexer' => __DIR__ . '/../..' . '/src/Analyser/Ignore/IgnoreLexer.php', 'PHPStan\\Analyser\\Ignore\\IgnoreParseException' => __DIR__ . '/../..' . '/src/Analyser/Ignore/IgnoreParseException.php', 'PHPStan\\Analyser\\Ignore\\IgnoredError' => __DIR__ . '/../..' . '/src/Analyser/Ignore/IgnoredError.php', 'PHPStan\\Analyser\\Ignore\\IgnoredErrorHelper' => __DIR__ . '/../..' . '/src/Analyser/Ignore/IgnoredErrorHelper.php', 'PHPStan\\Analyser\\Ignore\\IgnoredErrorHelperProcessedResult' => __DIR__ . '/../..' . '/src/Analyser/Ignore/IgnoredErrorHelperProcessedResult.php', 'PHPStan\\Analyser\\Ignore\\IgnoredErrorHelperResult' => __DIR__ . '/../..' . '/src/Analyser/Ignore/IgnoredErrorHelperResult.php', 'PHPStan\\Analyser\\ImpurePoint' => __DIR__ . '/../..' . '/src/Analyser/ImpurePoint.php', 'PHPStan\\Analyser\\InternalError' => __DIR__ . '/../..' . '/src/Analyser/InternalError.php', 'PHPStan\\Analyser\\InternalScopeFactory' => __DIR__ . '/../..' . '/src/Analyser/InternalScopeFactory.php', 'PHPStan\\Analyser\\LazyInternalScopeFactory' => __DIR__ . '/../..' . '/src/Analyser/LazyInternalScopeFactory.php', 'PHPStan\\Analyser\\LocalIgnoresProcessor' => __DIR__ . '/../..' . '/src/Analyser/LocalIgnoresProcessor.php', 'PHPStan\\Analyser\\LocalIgnoresProcessorResult' => __DIR__ . '/../..' . '/src/Analyser/LocalIgnoresProcessorResult.php', 'PHPStan\\Analyser\\MutatingScope' => __DIR__ . '/../..' . '/src/Analyser/MutatingScope.php', 'PHPStan\\Analyser\\NameScope' => __DIR__ . '/../..' . '/src/Analyser/NameScope.php', 'PHPStan\\Analyser\\NodeScopeResolver' => __DIR__ . '/../..' . '/src/Analyser/NodeScopeResolver.php', 'PHPStan\\Analyser\\NullsafeOperatorHelper' => __DIR__ . '/../..' . '/src/Analyser/NullsafeOperatorHelper.php', 'PHPStan\\Analyser\\OutOfClassScope' => __DIR__ . '/../..' . '/src/Analyser/OutOfClassScope.php', 'PHPStan\\Analyser\\ProcessClosureResult' => __DIR__ . '/../..' . '/src/Analyser/ProcessClosureResult.php', 'PHPStan\\Analyser\\ResultCache\\ResultCache' => __DIR__ . '/../..' . '/src/Analyser/ResultCache/ResultCache.php', 'PHPStan\\Analyser\\ResultCache\\ResultCacheClearer' => __DIR__ . '/../..' . '/src/Analyser/ResultCache/ResultCacheClearer.php', 'PHPStan\\Analyser\\ResultCache\\ResultCacheManager' => __DIR__ . '/../..' . '/src/Analyser/ResultCache/ResultCacheManager.php', 'PHPStan\\Analyser\\ResultCache\\ResultCacheManagerFactory' => __DIR__ . '/../..' . '/src/Analyser/ResultCache/ResultCacheManagerFactory.php', 'PHPStan\\Analyser\\ResultCache\\ResultCacheProcessResult' => __DIR__ . '/../..' . '/src/Analyser/ResultCache/ResultCacheProcessResult.php', 'PHPStan\\Analyser\\RicherScopeGetTypeHelper' => __DIR__ . '/../..' . '/src/Analyser/RicherScopeGetTypeHelper.php', 'PHPStan\\Analyser\\RuleErrorTransformer' => __DIR__ . '/../..' . '/src/Analyser/RuleErrorTransformer.php', 'PHPStan\\Analyser\\Scope' => __DIR__ . '/../..' . '/src/Analyser/Scope.php', 'PHPStan\\Analyser\\ScopeContext' => __DIR__ . '/../..' . '/src/Analyser/ScopeContext.php', 'PHPStan\\Analyser\\ScopeFactory' => __DIR__ . '/../..' . '/src/Analyser/ScopeFactory.php', 'PHPStan\\Analyser\\SpecifiedTypes' => __DIR__ . '/../..' . '/src/Analyser/SpecifiedTypes.php', 'PHPStan\\Analyser\\StatementContext' => __DIR__ . '/../..' . '/src/Analyser/StatementContext.php', 'PHPStan\\Analyser\\StatementExitPoint' => __DIR__ . '/../..' . '/src/Analyser/StatementExitPoint.php', 'PHPStan\\Analyser\\StatementResult' => __DIR__ . '/../..' . '/src/Analyser/StatementResult.php', 'PHPStan\\Analyser\\ThrowPoint' => __DIR__ . '/../..' . '/src/Analyser/ThrowPoint.php', 'PHPStan\\Analyser\\TypeSpecifier' => __DIR__ . '/../..' . '/src/Analyser/TypeSpecifier.php', 'PHPStan\\Analyser\\TypeSpecifierAwareExtension' => __DIR__ . '/../..' . '/src/Analyser/TypeSpecifierAwareExtension.php', 'PHPStan\\Analyser\\TypeSpecifierContext' => __DIR__ . '/../..' . '/src/Analyser/TypeSpecifierContext.php', 'PHPStan\\Analyser\\TypeSpecifierFactory' => __DIR__ . '/../..' . '/src/Analyser/TypeSpecifierFactory.php', 'PHPStan\\Analyser\\UndefinedVariableException' => __DIR__ . '/../..' . '/src/Analyser/UndefinedVariableException.php', 'PHPStan\\BetterReflection\\BetterReflection' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/BetterReflection.php', 'PHPStan\\BetterReflection\\Identifier\\Exception\\InvalidIdentifierName' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Identifier/Exception/InvalidIdentifierName.php', 'PHPStan\\BetterReflection\\Identifier\\Identifier' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Identifier/Identifier.php', 'PHPStan\\BetterReflection\\Identifier\\IdentifierType' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Identifier/IdentifierType.php', 'PHPStan\\BetterReflection\\NodeCompiler\\CompileNodeToValue' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/NodeCompiler/CompileNodeToValue.php', 'PHPStan\\BetterReflection\\NodeCompiler\\CompiledValue' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/NodeCompiler/CompiledValue.php', 'PHPStan\\BetterReflection\\NodeCompiler\\CompilerContext' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/NodeCompiler/CompilerContext.php', 'PHPStan\\BetterReflection\\NodeCompiler\\Exception\\UnableToCompileNode' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/NodeCompiler/Exception/UnableToCompileNode.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\Exception\\NotImplemented' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/Exception/NotImplemented.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\FakeReflectionAttribute' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/FakeReflectionAttribute.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionAttribute' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionAttribute.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionAttributeFactory' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionAttributeFactory.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionClass' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionClass.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionClassConstant' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionClassConstant.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionEnum' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionEnum.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionEnumBackedCase' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionEnumBackedCase.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionEnumUnitCase' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionEnumUnitCase.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionFunction' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionFunction.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionIntersectionType' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionIntersectionType.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionMethod' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionMethod.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionNamedType' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionNamedType.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionObject' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionObject.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionParameter' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionParameter.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionProperty' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionProperty.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionType' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionType.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionUnionType' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionUnionType.php', 'PHPStan\\BetterReflection\\Reflection\\Annotation\\AnnotationHelper' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Annotation/AnnotationHelper.php', 'PHPStan\\BetterReflection\\Reflection\\Attribute\\ReflectionAttributeHelper' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Attribute/ReflectionAttributeHelper.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\CircularReference' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/CircularReference.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\ClassDoesNotExist' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/ClassDoesNotExist.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\CodeLocationMissing' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/CodeLocationMissing.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\FunctionDoesNotExist' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/FunctionDoesNotExist.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\InvalidArrowFunctionBodyNode' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/InvalidArrowFunctionBodyNode.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\InvalidConstantNode' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/InvalidConstantNode.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\InvalidDefaultValueType' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/InvalidDefaultValueType.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\MethodPrototypeNotFound' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/MethodPrototypeNotFound.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\NoObjectProvided' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/NoObjectProvided.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\NoParent' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/NoParent.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\NotAnObject' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/NotAnObject.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\ObjectNotInstanceOfClass' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/ObjectNotInstanceOfClass.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\PropertyDoesNotExist' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/PropertyDoesNotExist.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\PropertyIsNotStatic' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Exception/PropertyIsNotStatic.php', 'PHPStan\\BetterReflection\\Reflection\\Reflection' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Reflection.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionAttribute' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionAttribute.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionClass' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionClass.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionClassConstant' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionClassConstant.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionConstant' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionConstant.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionEnum' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionEnum.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionEnumCase' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionEnumCase.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionFunction' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionFunction.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionFunctionAbstract' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionFunctionAbstract.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionIntersectionType' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionIntersectionType.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionMethod' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionMethod.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionNamedType' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionNamedType.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionObject' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionObject.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionParameter' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionParameter.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionProperty' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionProperty.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionType' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionType.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionUnionType' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionUnionType.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionAttributeStringCast' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionAttributeStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionClassConstantStringCast' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionClassConstantStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionClassStringCast' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionClassStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionConstantStringCast' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionConstantStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionEnumCaseStringCast' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionEnumCaseStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionFunctionStringCast' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionFunctionStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionMethodStringCast' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionMethodStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionParameterStringCast' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionParameterStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionPropertyStringCast' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionPropertyStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionTypeStringCast' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionTypeStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\Support\\AlreadyVisitedClasses' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflection/Support/AlreadyVisitedClasses.php', 'PHPStan\\BetterReflection\\Reflector\\ClassReflector' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflector/ClassReflector.php', 'PHPStan\\BetterReflection\\Reflector\\ConstantReflector' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflector/ConstantReflector.php', 'PHPStan\\BetterReflection\\Reflector\\DefaultReflector' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflector/DefaultReflector.php', 'PHPStan\\BetterReflection\\Reflector\\Exception\\IdentifierNotFound' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflector/Exception/IdentifierNotFound.php', 'PHPStan\\BetterReflection\\Reflector\\FunctionReflector' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflector/FunctionReflector.php', 'PHPStan\\BetterReflection\\Reflector\\Reflector' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Reflector/Reflector.php', 'PHPStan\\BetterReflection\\SourceLocator\\Ast\\Exception\\ParseToAstFailure' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Exception/ParseToAstFailure.php', 'PHPStan\\BetterReflection\\SourceLocator\\Ast\\FindReflectionsInTree' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Ast/FindReflectionsInTree.php', 'PHPStan\\BetterReflection\\SourceLocator\\Ast\\Locator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Locator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Ast\\Parser\\MemoizingParser' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Parser/MemoizingParser.php', 'PHPStan\\BetterReflection\\SourceLocator\\Ast\\Strategy\\AstConversionStrategy' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Strategy/AstConversionStrategy.php', 'PHPStan\\BetterReflection\\SourceLocator\\Ast\\Strategy\\NodeToReflection' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Strategy/NodeToReflection.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\EvaledAnonymousClassCannotBeLocated' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/EvaledAnonymousClassCannotBeLocated.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\EvaledClosureCannotBeLocated' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/EvaledClosureCannotBeLocated.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\FunctionUndefined' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/FunctionUndefined.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\InvalidDirectory' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/InvalidDirectory.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\InvalidFileInfo' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/InvalidFileInfo.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\InvalidFileLocation' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/InvalidFileLocation.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\NoAnonymousClassOnLine' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/NoAnonymousClassOnLine.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\NoClosureOnLine' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/NoClosureOnLine.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\NotInternalClass' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/NotInternalClass.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\TwoAnonymousClassesOnSameLine' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/TwoAnonymousClassesOnSameLine.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\TwoClosuresOnSameLine' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/TwoClosuresOnSameLine.php', 'PHPStan\\BetterReflection\\SourceLocator\\FileChecker' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/FileChecker.php', 'PHPStan\\BetterReflection\\SourceLocator\\Located\\AliasLocatedSource' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Located/AliasLocatedSource.php', 'PHPStan\\BetterReflection\\SourceLocator\\Located\\AnonymousLocatedSource' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Located/AnonymousLocatedSource.php', 'PHPStan\\BetterReflection\\SourceLocator\\Located\\EvaledLocatedSource' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Located/EvaledLocatedSource.php', 'PHPStan\\BetterReflection\\SourceLocator\\Located\\InternalLocatedSource' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Located/InternalLocatedSource.php', 'PHPStan\\BetterReflection\\SourceLocator\\Located\\LocatedSource' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Located/LocatedSource.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\AggregateSourceStubber' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/AggregateSourceStubber.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\Exception\\CouldNotFindPhpStormStubs' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/Exception/CouldNotFindPhpStormStubs.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\PhpStormStubsSourceStubber' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/PhpStormStubsSourceStubber.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\PhpStormStubs\\CachingVisitor' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/PhpStormStubs/CachingVisitor.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\ReflectionSourceStubber' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/ReflectionSourceStubber.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\SourceStubber' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/SourceStubber.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\StubData' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/StubData.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\AbstractSourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/AbstractSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\AggregateSourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/AggregateSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\AnonymousClassObjectSourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/AnonymousClassObjectSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\AutoloadSourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/AutoloadSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\AutoloadSourceLocator\\FileReadTrapStreamWrapper' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/AutoloadSourceLocator/FileReadTrapStreamWrapper.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\ClosureSourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/ClosureSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\ComposerSourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/ComposerSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\Exception\\Exception' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/Exception.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\Exception\\FailedToParseJson' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/FailedToParseJson.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\Exception\\InvalidProjectDirectory' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/InvalidProjectDirectory.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\Exception\\MissingComposerJson' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/MissingComposerJson.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\Exception\\MissingInstalledJson' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/MissingInstalledJson.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\MakeLocatorForComposerJson' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/MakeLocatorForComposerJson.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\MakeLocatorForComposerJsonAndInstalledJson' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/MakeLocatorForComposerJsonAndInstalledJson.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\MakeLocatorForInstalledJson' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/MakeLocatorForInstalledJson.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\PsrAutoloaderLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/PsrAutoloaderLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Psr\\Exception\\Exception' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/Exception/Exception.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Psr\\Exception\\InvalidPrefixMapping' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/Exception/InvalidPrefixMapping.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Psr\\Psr0Mapping' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/Psr0Mapping.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Psr\\Psr4Mapping' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/Psr4Mapping.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Psr\\PsrAutoloaderMapping' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/PsrAutoloaderMapping.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\DirectoriesSourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/DirectoriesSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\EvaledCodeSourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/EvaledCodeSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\FileIteratorSourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/FileIteratorSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\MemoizingSourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/MemoizingSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\PhpInternalSourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/PhpInternalSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\SingleFileSourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/SingleFileSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\SourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/SourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\StringSourceLocator' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/StringSourceLocator.php', 'PHPStan\\BetterReflection\\Util\\CalculateReflectionColumn' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Util/CalculateReflectionColumn.php', 'PHPStan\\BetterReflection\\Util\\ClassExistenceChecker' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Util/ClassExistenceChecker.php', 'PHPStan\\BetterReflection\\Util\\ConstantNodeChecker' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Util/ConstantNodeChecker.php', 'PHPStan\\BetterReflection\\Util\\Exception\\InvalidNodePosition' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Util/Exception/InvalidNodePosition.php', 'PHPStan\\BetterReflection\\Util\\Exception\\NoNodePosition' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Util/Exception/NoNodePosition.php', 'PHPStan\\BetterReflection\\Util\\FileHelper' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Util/FileHelper.php', 'PHPStan\\BetterReflection\\Util\\FindReflectionOnLine' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Util/FindReflectionOnLine.php', 'PHPStan\\BetterReflection\\Util\\GetLastDocComment' => __DIR__ . '/..' . '/ondrejmirtes/better-reflection/src/Util/GetLastDocComment.php', 'PHPStan\\Broker\\AnonymousClassNameHelper' => __DIR__ . '/../..' . '/src/Broker/AnonymousClassNameHelper.php', 'PHPStan\\Broker\\Broker' => __DIR__ . '/../..' . '/src/Broker/Broker.php', 'PHPStan\\Broker\\BrokerFactory' => __DIR__ . '/../..' . '/src/Broker/BrokerFactory.php', 'PHPStan\\Broker\\ClassAutoloadingException' => __DIR__ . '/../..' . '/src/Broker/ClassAutoloadingException.php', 'PHPStan\\Broker\\ClassNotFoundException' => __DIR__ . '/../..' . '/src/Broker/ClassNotFoundException.php', 'PHPStan\\Broker\\ConstantNotFoundException' => __DIR__ . '/../..' . '/src/Broker/ConstantNotFoundException.php', 'PHPStan\\Broker\\FunctionNotFoundException' => __DIR__ . '/../..' . '/src/Broker/FunctionNotFoundException.php', 'PHPStan\\Cache\\Cache' => __DIR__ . '/../..' . '/src/Cache/Cache.php', 'PHPStan\\Cache\\CacheItem' => __DIR__ . '/../..' . '/src/Cache/CacheItem.php', 'PHPStan\\Cache\\CacheStorage' => __DIR__ . '/../..' . '/src/Cache/CacheStorage.php', 'PHPStan\\Cache\\FileCacheStorage' => __DIR__ . '/../..' . '/src/Cache/FileCacheStorage.php', 'PHPStan\\Cache\\MemoryCacheStorage' => __DIR__ . '/../..' . '/src/Cache/MemoryCacheStorage.php', 'PHPStan\\Classes\\ForbiddenClassNameExtension' => __DIR__ . '/../..' . '/src/Classes/ForbiddenClassNameExtension.php', 'PHPStan\\Collectors\\CollectedData' => __DIR__ . '/../..' . '/src/Collectors/CollectedData.php', 'PHPStan\\Collectors\\Collector' => __DIR__ . '/../..' . '/src/Collectors/Collector.php', 'PHPStan\\Collectors\\Registry' => __DIR__ . '/../..' . '/src/Collectors/Registry.php', 'PHPStan\\Collectors\\RegistryFactory' => __DIR__ . '/../..' . '/src/Collectors/RegistryFactory.php', 'PHPStan\\Command\\AnalyseApplication' => __DIR__ . '/../..' . '/src/Command/AnalyseApplication.php', 'PHPStan\\Command\\AnalyseCommand' => __DIR__ . '/../..' . '/src/Command/AnalyseCommand.php', 'PHPStan\\Command\\AnalyserRunner' => __DIR__ . '/../..' . '/src/Command/AnalyserRunner.php', 'PHPStan\\Command\\AnalysisResult' => __DIR__ . '/../..' . '/src/Command/AnalysisResult.php', 'PHPStan\\Command\\ClearResultCacheCommand' => __DIR__ . '/../..' . '/src/Command/ClearResultCacheCommand.php', 'PHPStan\\Command\\CommandHelper' => __DIR__ . '/../..' . '/src/Command/CommandHelper.php', 'PHPStan\\Command\\DiagnoseCommand' => __DIR__ . '/../..' . '/src/Command/DiagnoseCommand.php', 'PHPStan\\Command\\DumpParametersCommand' => __DIR__ . '/../..' . '/src/Command/DumpParametersCommand.php', 'PHPStan\\Command\\ErrorFormatter\\BaselineNeonErrorFormatter' => __DIR__ . '/../..' . '/src/Command/ErrorFormatter/BaselineNeonErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\BaselinePhpErrorFormatter' => __DIR__ . '/../..' . '/src/Command/ErrorFormatter/BaselinePhpErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\CheckstyleErrorFormatter' => __DIR__ . '/../..' . '/src/Command/ErrorFormatter/CheckstyleErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\CiDetectedErrorFormatter' => __DIR__ . '/../..' . '/src/Command/ErrorFormatter/CiDetectedErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\ErrorFormatter' => __DIR__ . '/../..' . '/src/Command/ErrorFormatter/ErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\GithubErrorFormatter' => __DIR__ . '/../..' . '/src/Command/ErrorFormatter/GithubErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\GitlabErrorFormatter' => __DIR__ . '/../..' . '/src/Command/ErrorFormatter/GitlabErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\JsonErrorFormatter' => __DIR__ . '/../..' . '/src/Command/ErrorFormatter/JsonErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\JunitErrorFormatter' => __DIR__ . '/../..' . '/src/Command/ErrorFormatter/JunitErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\RawErrorFormatter' => __DIR__ . '/../..' . '/src/Command/ErrorFormatter/RawErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\TableErrorFormatter' => __DIR__ . '/../..' . '/src/Command/ErrorFormatter/TableErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\TeamcityErrorFormatter' => __DIR__ . '/../..' . '/src/Command/ErrorFormatter/TeamcityErrorFormatter.php', 'PHPStan\\Command\\ErrorsConsoleStyle' => __DIR__ . '/../..' . '/src/Command/ErrorsConsoleStyle.php', 'PHPStan\\Command\\FixerApplication' => __DIR__ . '/../..' . '/src/Command/FixerApplication.php', 'PHPStan\\Command\\FixerProcessException' => __DIR__ . '/../..' . '/src/Command/FixerProcessException.php', 'PHPStan\\Command\\FixerWorkerCommand' => __DIR__ . '/../..' . '/src/Command/FixerWorkerCommand.php', 'PHPStan\\Command\\IgnoredRegexValidator' => __DIR__ . '/../..' . '/src/Command/IgnoredRegexValidator.php', 'PHPStan\\Command\\IgnoredRegexValidatorResult' => __DIR__ . '/../..' . '/src/Command/IgnoredRegexValidatorResult.php', 'PHPStan\\Command\\InceptionNotSuccessfulException' => __DIR__ . '/../..' . '/src/Command/InceptionNotSuccessfulException.php', 'PHPStan\\Command\\InceptionResult' => __DIR__ . '/../..' . '/src/Command/InceptionResult.php', 'PHPStan\\Command\\Output' => __DIR__ . '/../..' . '/src/Command/Output.php', 'PHPStan\\Command\\OutputStyle' => __DIR__ . '/../..' . '/src/Command/OutputStyle.php', 'PHPStan\\Command\\Symfony\\SymfonyOutput' => __DIR__ . '/../..' . '/src/Command/Symfony/SymfonyOutput.php', 'PHPStan\\Command\\Symfony\\SymfonyStyle' => __DIR__ . '/../..' . '/src/Command/Symfony/SymfonyStyle.php', 'PHPStan\\Command\\WorkerCommand' => __DIR__ . '/../..' . '/src/Command/WorkerCommand.php', 'PHPStan\\DependencyInjection\\BleedingEdgeToggle' => __DIR__ . '/../..' . '/src/DependencyInjection/BleedingEdgeToggle.php', 'PHPStan\\DependencyInjection\\ConditionalTagsExtension' => __DIR__ . '/../..' . '/src/DependencyInjection/ConditionalTagsExtension.php', 'PHPStan\\DependencyInjection\\Configurator' => __DIR__ . '/../..' . '/src/DependencyInjection/Configurator.php', 'PHPStan\\DependencyInjection\\Container' => __DIR__ . '/../..' . '/src/DependencyInjection/Container.php', 'PHPStan\\DependencyInjection\\ContainerFactory' => __DIR__ . '/../..' . '/src/DependencyInjection/ContainerFactory.php', 'PHPStan\\DependencyInjection\\DerivativeContainerFactory' => __DIR__ . '/../..' . '/src/DependencyInjection/DerivativeContainerFactory.php', 'PHPStan\\DependencyInjection\\DuplicateIncludedFilesException' => __DIR__ . '/../..' . '/src/DependencyInjection/DuplicateIncludedFilesException.php', 'PHPStan\\DependencyInjection\\InvalidExcludePathsException' => __DIR__ . '/../..' . '/src/DependencyInjection/InvalidExcludePathsException.php', 'PHPStan\\DependencyInjection\\InvalidIgnoredErrorPatternsException' => __DIR__ . '/../..' . '/src/DependencyInjection/InvalidIgnoredErrorPatternsException.php', 'PHPStan\\DependencyInjection\\LoaderFactory' => __DIR__ . '/../..' . '/src/DependencyInjection/LoaderFactory.php', 'PHPStan\\DependencyInjection\\MemoizingContainer' => __DIR__ . '/../..' . '/src/DependencyInjection/MemoizingContainer.php', 'PHPStan\\DependencyInjection\\NeonAdapter' => __DIR__ . '/../..' . '/src/DependencyInjection/NeonAdapter.php', 'PHPStan\\DependencyInjection\\NeonLoader' => __DIR__ . '/../..' . '/src/DependencyInjection/NeonLoader.php', 'PHPStan\\DependencyInjection\\Neon\\OptionalPath' => __DIR__ . '/../..' . '/src/DependencyInjection/Neon/OptionalPath.php', 'PHPStan\\DependencyInjection\\Nette\\NetteContainer' => __DIR__ . '/../..' . '/src/DependencyInjection/Nette/NetteContainer.php', 'PHPStan\\DependencyInjection\\ParameterNotFoundException' => __DIR__ . '/../..' . '/src/DependencyInjection/ParameterNotFoundException.php', 'PHPStan\\DependencyInjection\\ParametersSchemaExtension' => __DIR__ . '/../..' . '/src/DependencyInjection/ParametersSchemaExtension.php', 'PHPStan\\DependencyInjection\\ProjectConfigHelper' => __DIR__ . '/../..' . '/src/DependencyInjection/ProjectConfigHelper.php', 'PHPStan\\DependencyInjection\\Reflection\\ClassReflectionExtensionRegistryProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Reflection/ClassReflectionExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Reflection\\LazyClassReflectionExtensionRegistryProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Reflection/LazyClassReflectionExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\RulesExtension' => __DIR__ . '/../..' . '/src/DependencyInjection/RulesExtension.php', 'PHPStan\\DependencyInjection\\Type\\DynamicReturnTypeExtensionRegistryProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Type/DynamicReturnTypeExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Type\\DynamicThrowTypeExtensionProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Type/DynamicThrowTypeExtensionProvider.php', 'PHPStan\\DependencyInjection\\Type\\ExpressionTypeResolverExtensionRegistryProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Type/ExpressionTypeResolverExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Type\\LazyDynamicReturnTypeExtensionRegistryProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Type/LazyDynamicReturnTypeExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Type\\LazyDynamicThrowTypeExtensionProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Type/LazyDynamicThrowTypeExtensionProvider.php', 'PHPStan\\DependencyInjection\\Type\\LazyExpressionTypeResolverExtensionRegistryProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Type/LazyExpressionTypeResolverExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Type\\LazyOperatorTypeSpecifyingExtensionRegistryProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Type/LazyOperatorTypeSpecifyingExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Type\\LazyParameterClosureTypeExtensionProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Type/LazyParameterClosureTypeExtensionProvider.php', 'PHPStan\\DependencyInjection\\Type\\LazyParameterOutTypeExtensionProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Type/LazyParameterOutTypeExtensionProvider.php', 'PHPStan\\DependencyInjection\\Type\\OperatorTypeSpecifyingExtensionRegistryProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Type/OperatorTypeSpecifyingExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Type\\ParameterClosureTypeExtensionProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Type/ParameterClosureTypeExtensionProvider.php', 'PHPStan\\DependencyInjection\\Type\\ParameterOutTypeExtensionProvider' => __DIR__ . '/../..' . '/src/DependencyInjection/Type/ParameterOutTypeExtensionProvider.php', 'PHPStan\\DependencyInjection\\ValidateExcludePathsExtension' => __DIR__ . '/../..' . '/src/DependencyInjection/ValidateExcludePathsExtension.php', 'PHPStan\\DependencyInjection\\ValidateIgnoredErrorsExtension' => __DIR__ . '/../..' . '/src/DependencyInjection/ValidateIgnoredErrorsExtension.php', 'PHPStan\\Dependency\\DependencyResolver' => __DIR__ . '/../..' . '/src/Dependency/DependencyResolver.php', 'PHPStan\\Dependency\\ExportedNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode.php', 'PHPStan\\Dependency\\ExportedNodeFetcher' => __DIR__ . '/../..' . '/src/Dependency/ExportedNodeFetcher.php', 'PHPStan\\Dependency\\ExportedNodeResolver' => __DIR__ . '/../..' . '/src/Dependency/ExportedNodeResolver.php', 'PHPStan\\Dependency\\ExportedNodeVisitor' => __DIR__ . '/../..' . '/src/Dependency/ExportedNodeVisitor.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedAttributeNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedAttributeNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedClassConstantNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedClassConstantNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedClassConstantsNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedClassConstantsNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedClassNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedClassNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedEnumCaseNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedEnumCaseNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedEnumNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedEnumNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedFunctionNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedFunctionNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedInterfaceNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedInterfaceNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedMethodNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedMethodNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedParameterNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedParameterNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedPhpDocNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedPhpDocNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedPropertiesNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedPropertiesNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedTraitNode' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedTraitNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedTraitUseAdaptation' => __DIR__ . '/../..' . '/src/Dependency/ExportedNode/ExportedTraitUseAdaptation.php', 'PHPStan\\Dependency\\NodeDependencies' => __DIR__ . '/../..' . '/src/Dependency/NodeDependencies.php', 'PHPStan\\Dependency\\RootExportedNode' => __DIR__ . '/../..' . '/src/Dependency/RootExportedNode.php', 'PHPStan\\Diagnose\\DiagnoseExtension' => __DIR__ . '/../..' . '/src/Diagnose/DiagnoseExtension.php', 'PHPStan\\Diagnose\\PHPStanDiagnoseExtension' => __DIR__ . '/../..' . '/src/Diagnose/PHPStanDiagnoseExtension.php', 'PHPStan\\File\\CouldNotReadFileException' => __DIR__ . '/../..' . '/src/File/CouldNotReadFileException.php', 'PHPStan\\File\\CouldNotWriteFileException' => __DIR__ . '/../..' . '/src/File/CouldNotWriteFileException.php', 'PHPStan\\File\\FileExcluder' => __DIR__ . '/../..' . '/src/File/FileExcluder.php', 'PHPStan\\File\\FileExcluderFactory' => __DIR__ . '/../..' . '/src/File/FileExcluderFactory.php', 'PHPStan\\File\\FileExcluderRawFactory' => __DIR__ . '/../..' . '/src/File/FileExcluderRawFactory.php', 'PHPStan\\File\\FileFinder' => __DIR__ . '/../..' . '/src/File/FileFinder.php', 'PHPStan\\File\\FileFinderResult' => __DIR__ . '/../..' . '/src/File/FileFinderResult.php', 'PHPStan\\File\\FileHelper' => __DIR__ . '/../..' . '/src/File/FileHelper.php', 'PHPStan\\File\\FileMonitor' => __DIR__ . '/../..' . '/src/File/FileMonitor.php', 'PHPStan\\File\\FileMonitorResult' => __DIR__ . '/../..' . '/src/File/FileMonitorResult.php', 'PHPStan\\File\\FileReader' => __DIR__ . '/../..' . '/src/File/FileReader.php', 'PHPStan\\File\\FileWriter' => __DIR__ . '/../..' . '/src/File/FileWriter.php', 'PHPStan\\File\\FuzzyRelativePathHelper' => __DIR__ . '/../..' . '/src/File/FuzzyRelativePathHelper.php', 'PHPStan\\File\\NullRelativePathHelper' => __DIR__ . '/../..' . '/src/File/NullRelativePathHelper.php', 'PHPStan\\File\\ParentDirectoryRelativePathHelper' => __DIR__ . '/../..' . '/src/File/ParentDirectoryRelativePathHelper.php', 'PHPStan\\File\\PathNotFoundException' => __DIR__ . '/../..' . '/src/File/PathNotFoundException.php', 'PHPStan\\File\\RelativePathHelper' => __DIR__ . '/../..' . '/src/File/RelativePathHelper.php', 'PHPStan\\File\\SimpleRelativePathHelper' => __DIR__ . '/../..' . '/src/File/SimpleRelativePathHelper.php', 'PHPStan\\File\\SystemAgnosticSimpleRelativePathHelper' => __DIR__ . '/../..' . '/src/File/SystemAgnosticSimpleRelativePathHelper.php', 'PHPStan\\Internal\\BytesHelper' => __DIR__ . '/../..' . '/src/Internal/BytesHelper.php', 'PHPStan\\Internal\\CombinationsHelper' => __DIR__ . '/../..' . '/src/Internal/CombinationsHelper.php', 'PHPStan\\Internal\\ComposerHelper' => __DIR__ . '/../..' . '/src/Internal/ComposerHelper.php', 'PHPStan\\Internal\\ContainerDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Internal/ContainerDynamicReturnTypeExtension.php', 'PHPStan\\Internal\\DirectoryCreator' => __DIR__ . '/../..' . '/src/Internal/DirectoryCreator.php', 'PHPStan\\Internal\\DirectoryCreatorException' => __DIR__ . '/../..' . '/src/Internal/DirectoryCreatorException.php', 'PHPStan\\Internal\\SprintfHelper' => __DIR__ . '/../..' . '/src/Internal/SprintfHelper.php', 'PHPStan\\Node\\AnonymousClassNode' => __DIR__ . '/../..' . '/src/Node/AnonymousClassNode.php', 'PHPStan\\Node\\BooleanAndNode' => __DIR__ . '/../..' . '/src/Node/BooleanAndNode.php', 'PHPStan\\Node\\BooleanOrNode' => __DIR__ . '/../..' . '/src/Node/BooleanOrNode.php', 'PHPStan\\Node\\BreaklessWhileLoopNode' => __DIR__ . '/../..' . '/src/Node/BreaklessWhileLoopNode.php', 'PHPStan\\Node\\CatchWithUnthrownExceptionNode' => __DIR__ . '/../..' . '/src/Node/CatchWithUnthrownExceptionNode.php', 'PHPStan\\Node\\ClassConstantsNode' => __DIR__ . '/../..' . '/src/Node/ClassConstantsNode.php', 'PHPStan\\Node\\ClassMethod' => __DIR__ . '/../..' . '/src/Node/ClassMethod.php', 'PHPStan\\Node\\ClassMethodsNode' => __DIR__ . '/../..' . '/src/Node/ClassMethodsNode.php', 'PHPStan\\Node\\ClassPropertiesNode' => __DIR__ . '/../..' . '/src/Node/ClassPropertiesNode.php', 'PHPStan\\Node\\ClassPropertyNode' => __DIR__ . '/../..' . '/src/Node/ClassPropertyNode.php', 'PHPStan\\Node\\ClassStatementsGatherer' => __DIR__ . '/../..' . '/src/Node/ClassStatementsGatherer.php', 'PHPStan\\Node\\ClosureReturnStatementsNode' => __DIR__ . '/../..' . '/src/Node/ClosureReturnStatementsNode.php', 'PHPStan\\Node\\CollectedDataNode' => __DIR__ . '/../..' . '/src/Node/CollectedDataNode.php', 'PHPStan\\Node\\Constant\\ClassConstantFetch' => __DIR__ . '/../..' . '/src/Node/Constant/ClassConstantFetch.php', 'PHPStan\\Node\\DoWhileLoopConditionNode' => __DIR__ . '/../..' . '/src/Node/DoWhileLoopConditionNode.php', 'PHPStan\\Node\\ExecutionEndNode' => __DIR__ . '/../..' . '/src/Node/ExecutionEndNode.php', 'PHPStan\\Node\\Expr\\AlwaysRememberedExpr' => __DIR__ . '/../..' . '/src/Node/Expr/AlwaysRememberedExpr.php', 'PHPStan\\Node\\Expr\\ExistingArrayDimFetch' => __DIR__ . '/../..' . '/src/Node/Expr/ExistingArrayDimFetch.php', 'PHPStan\\Node\\Expr\\GetIterableKeyTypeExpr' => __DIR__ . '/../..' . '/src/Node/Expr/GetIterableKeyTypeExpr.php', 'PHPStan\\Node\\Expr\\GetIterableValueTypeExpr' => __DIR__ . '/../..' . '/src/Node/Expr/GetIterableValueTypeExpr.php', 'PHPStan\\Node\\Expr\\GetOffsetValueTypeExpr' => __DIR__ . '/../..' . '/src/Node/Expr/GetOffsetValueTypeExpr.php', 'PHPStan\\Node\\Expr\\OriginalPropertyTypeExpr' => __DIR__ . '/../..' . '/src/Node/Expr/OriginalPropertyTypeExpr.php', 'PHPStan\\Node\\Expr\\ParameterVariableOriginalValueExpr' => __DIR__ . '/../..' . '/src/Node/Expr/ParameterVariableOriginalValueExpr.php', 'PHPStan\\Node\\Expr\\PropertyInitializationExpr' => __DIR__ . '/../..' . '/src/Node/Expr/PropertyInitializationExpr.php', 'PHPStan\\Node\\Expr\\SetExistingOffsetValueTypeExpr' => __DIR__ . '/../..' . '/src/Node/Expr/SetExistingOffsetValueTypeExpr.php', 'PHPStan\\Node\\Expr\\SetOffsetValueTypeExpr' => __DIR__ . '/../..' . '/src/Node/Expr/SetOffsetValueTypeExpr.php', 'PHPStan\\Node\\Expr\\TypeExpr' => __DIR__ . '/../..' . '/src/Node/Expr/TypeExpr.php', 'PHPStan\\Node\\Expr\\UnsetOffsetExpr' => __DIR__ . '/../..' . '/src/Node/Expr/UnsetOffsetExpr.php', 'PHPStan\\Node\\FileNode' => __DIR__ . '/../..' . '/src/Node/FileNode.php', 'PHPStan\\Node\\FinallyExitPointsNode' => __DIR__ . '/../..' . '/src/Node/FinallyExitPointsNode.php', 'PHPStan\\Node\\FunctionCallableNode' => __DIR__ . '/../..' . '/src/Node/FunctionCallableNode.php', 'PHPStan\\Node\\FunctionReturnStatementsNode' => __DIR__ . '/../..' . '/src/Node/FunctionReturnStatementsNode.php', 'PHPStan\\Node\\InArrowFunctionNode' => __DIR__ . '/../..' . '/src/Node/InArrowFunctionNode.php', 'PHPStan\\Node\\InClassMethodNode' => __DIR__ . '/../..' . '/src/Node/InClassMethodNode.php', 'PHPStan\\Node\\InClassNode' => __DIR__ . '/../..' . '/src/Node/InClassNode.php', 'PHPStan\\Node\\InClosureNode' => __DIR__ . '/../..' . '/src/Node/InClosureNode.php', 'PHPStan\\Node\\InForeachNode' => __DIR__ . '/../..' . '/src/Node/InForeachNode.php', 'PHPStan\\Node\\InFunctionNode' => __DIR__ . '/../..' . '/src/Node/InFunctionNode.php', 'PHPStan\\Node\\InTraitNode' => __DIR__ . '/../..' . '/src/Node/InTraitNode.php', 'PHPStan\\Node\\InstantiationCallableNode' => __DIR__ . '/../..' . '/src/Node/InstantiationCallableNode.php', 'PHPStan\\Node\\InvalidateExprNode' => __DIR__ . '/../..' . '/src/Node/InvalidateExprNode.php', 'PHPStan\\Node\\IssetExpr' => __DIR__ . '/../..' . '/src/Node/IssetExpr.php', 'PHPStan\\Node\\LiteralArrayItem' => __DIR__ . '/../..' . '/src/Node/LiteralArrayItem.php', 'PHPStan\\Node\\LiteralArrayNode' => __DIR__ . '/../..' . '/src/Node/LiteralArrayNode.php', 'PHPStan\\Node\\MatchExpressionArm' => __DIR__ . '/../..' . '/src/Node/MatchExpressionArm.php', 'PHPStan\\Node\\MatchExpressionArmBody' => __DIR__ . '/../..' . '/src/Node/MatchExpressionArmBody.php', 'PHPStan\\Node\\MatchExpressionArmCondition' => __DIR__ . '/../..' . '/src/Node/MatchExpressionArmCondition.php', 'PHPStan\\Node\\MatchExpressionNode' => __DIR__ . '/../..' . '/src/Node/MatchExpressionNode.php', 'PHPStan\\Node\\MethodCallableNode' => __DIR__ . '/../..' . '/src/Node/MethodCallableNode.php', 'PHPStan\\Node\\MethodReturnStatementsNode' => __DIR__ . '/../..' . '/src/Node/MethodReturnStatementsNode.php', 'PHPStan\\Node\\Method\\MethodCall' => __DIR__ . '/../..' . '/src/Node/Method/MethodCall.php', 'PHPStan\\Node\\NoopExpressionNode' => __DIR__ . '/../..' . '/src/Node/NoopExpressionNode.php', 'PHPStan\\Node\\Printer\\ExprPrinter' => __DIR__ . '/../..' . '/src/Node/Printer/ExprPrinter.php', 'PHPStan\\Node\\Printer\\NodeTypePrinter' => __DIR__ . '/../..' . '/src/Node/Printer/NodeTypePrinter.php', 'PHPStan\\Node\\Printer\\Printer' => __DIR__ . '/../..' . '/src/Node/Printer/Printer.php', 'PHPStan\\Node\\PropertyAssignNode' => __DIR__ . '/../..' . '/src/Node/PropertyAssignNode.php', 'PHPStan\\Node\\Property\\PropertyAssign' => __DIR__ . '/../..' . '/src/Node/Property/PropertyAssign.php', 'PHPStan\\Node\\Property\\PropertyRead' => __DIR__ . '/../..' . '/src/Node/Property/PropertyRead.php', 'PHPStan\\Node\\Property\\PropertyWrite' => __DIR__ . '/../..' . '/src/Node/Property/PropertyWrite.php', 'PHPStan\\Node\\ReturnStatement' => __DIR__ . '/../..' . '/src/Node/ReturnStatement.php', 'PHPStan\\Node\\ReturnStatementsNode' => __DIR__ . '/../..' . '/src/Node/ReturnStatementsNode.php', 'PHPStan\\Node\\StaticMethodCallableNode' => __DIR__ . '/../..' . '/src/Node/StaticMethodCallableNode.php', 'PHPStan\\Node\\UnreachableStatementNode' => __DIR__ . '/../..' . '/src/Node/UnreachableStatementNode.php', 'PHPStan\\Node\\VarTagChangedExpressionTypeNode' => __DIR__ . '/../..' . '/src/Node/VarTagChangedExpressionTypeNode.php', 'PHPStan\\Node\\VariableAssignNode' => __DIR__ . '/../..' . '/src/Node/VariableAssignNode.php', 'PHPStan\\Node\\VirtualNode' => __DIR__ . '/../..' . '/src/Node/VirtualNode.php', 'PHPStan\\Parallel\\ParallelAnalyser' => __DIR__ . '/../..' . '/src/Parallel/ParallelAnalyser.php', 'PHPStan\\Parallel\\Process' => __DIR__ . '/../..' . '/src/Parallel/Process.php', 'PHPStan\\Parallel\\ProcessPool' => __DIR__ . '/../..' . '/src/Parallel/ProcessPool.php', 'PHPStan\\Parallel\\ProcessTimedOutException' => __DIR__ . '/../..' . '/src/Parallel/ProcessTimedOutException.php', 'PHPStan\\Parallel\\Schedule' => __DIR__ . '/../..' . '/src/Parallel/Schedule.php', 'PHPStan\\Parallel\\Scheduler' => __DIR__ . '/../..' . '/src/Parallel/Scheduler.php', 'PHPStan\\Parser\\AnonymousClassVisitor' => __DIR__ . '/../..' . '/src/Parser/AnonymousClassVisitor.php', 'PHPStan\\Parser\\ArrayFilterArgVisitor' => __DIR__ . '/../..' . '/src/Parser/ArrayFilterArgVisitor.php', 'PHPStan\\Parser\\ArrayFindArgVisitor' => __DIR__ . '/../..' . '/src/Parser/ArrayFindArgVisitor.php', 'PHPStan\\Parser\\ArrayMapArgVisitor' => __DIR__ . '/../..' . '/src/Parser/ArrayMapArgVisitor.php', 'PHPStan\\Parser\\ArrayWalkArgVisitor' => __DIR__ . '/../..' . '/src/Parser/ArrayWalkArgVisitor.php', 'PHPStan\\Parser\\ArrowFunctionArgVisitor' => __DIR__ . '/../..' . '/src/Parser/ArrowFunctionArgVisitor.php', 'PHPStan\\Parser\\CachedParser' => __DIR__ . '/../..' . '/src/Parser/CachedParser.php', 'PHPStan\\Parser\\CleaningParser' => __DIR__ . '/../..' . '/src/Parser/CleaningParser.php', 'PHPStan\\Parser\\CleaningVisitor' => __DIR__ . '/../..' . '/src/Parser/CleaningVisitor.php', 'PHPStan\\Parser\\ClosureArgVisitor' => __DIR__ . '/../..' . '/src/Parser/ClosureArgVisitor.php', 'PHPStan\\Parser\\ClosureBindArgVisitor' => __DIR__ . '/../..' . '/src/Parser/ClosureBindArgVisitor.php', 'PHPStan\\Parser\\ClosureBindToVarVisitor' => __DIR__ . '/../..' . '/src/Parser/ClosureBindToVarVisitor.php', 'PHPStan\\Parser\\CurlSetOptArgVisitor' => __DIR__ . '/../..' . '/src/Parser/CurlSetOptArgVisitor.php', 'PHPStan\\Parser\\DeclarePositionVisitor' => __DIR__ . '/../..' . '/src/Parser/DeclarePositionVisitor.php', 'PHPStan\\Parser\\FunctionCallStatementFinder' => __DIR__ . '/../..' . '/src/Parser/FunctionCallStatementFinder.php', 'PHPStan\\Parser\\ImmediatelyInvokedClosureVisitor' => __DIR__ . '/../..' . '/src/Parser/ImmediatelyInvokedClosureVisitor.php', 'PHPStan\\Parser\\LastConditionVisitor' => __DIR__ . '/../..' . '/src/Parser/LastConditionVisitor.php', 'PHPStan\\Parser\\LexerFactory' => __DIR__ . '/../..' . '/src/Parser/LexerFactory.php', 'PHPStan\\Parser\\MagicConstantParamDefaultVisitor' => __DIR__ . '/../..' . '/src/Parser/MagicConstantParamDefaultVisitor.php', 'PHPStan\\Parser\\NewAssignedToPropertyVisitor' => __DIR__ . '/../..' . '/src/Parser/NewAssignedToPropertyVisitor.php', 'PHPStan\\Parser\\ParentStmtTypesVisitor' => __DIR__ . '/../..' . '/src/Parser/ParentStmtTypesVisitor.php', 'PHPStan\\Parser\\Parser' => __DIR__ . '/../..' . '/src/Parser/Parser.php', 'PHPStan\\Parser\\ParserErrorsException' => __DIR__ . '/../..' . '/src/Parser/ParserErrorsException.php', 'PHPStan\\Parser\\PathRoutingParser' => __DIR__ . '/../..' . '/src/Parser/PathRoutingParser.php', 'PHPStan\\Parser\\PhpParserDecorator' => __DIR__ . '/../..' . '/src/Parser/PhpParserDecorator.php', 'PHPStan\\Parser\\RemoveUnusedCodeByPhpVersionIdVisitor' => __DIR__ . '/../..' . '/src/Parser/RemoveUnusedCodeByPhpVersionIdVisitor.php', 'PHPStan\\Parser\\RichParser' => __DIR__ . '/../..' . '/src/Parser/RichParser.php', 'PHPStan\\Parser\\SimpleParser' => __DIR__ . '/../..' . '/src/Parser/SimpleParser.php', 'PHPStan\\Parser\\TraitCollectingVisitor' => __DIR__ . '/../..' . '/src/Parser/TraitCollectingVisitor.php', 'PHPStan\\Parser\\TryCatchTypeVisitor' => __DIR__ . '/../..' . '/src/Parser/TryCatchTypeVisitor.php', 'PHPStan\\Parser\\TypeTraverserInstanceofVisitor' => __DIR__ . '/../..' . '/src/Parser/TypeTraverserInstanceofVisitor.php', 'PHPStan\\Php8StubsMap' => __DIR__ . '/..' . '/phpstan/php-8-stubs/Php8StubsMap.php', 'PHPStan\\PhpDocParser\\Ast\\AbstractNodeVisitor' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/AbstractNodeVisitor.php', 'PHPStan\\PhpDocParser\\Ast\\Attribute' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Attribute.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprArrayItemNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprArrayItemNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprArrayNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprArrayNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprFalseNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprFalseNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprFloatNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprFloatNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprIntegerNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprIntegerNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprNullNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprNullNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprStringNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprStringNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprTrueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprTrueNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstFetchNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstFetchNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\DoctrineConstExprStringNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/DoctrineConstExprStringNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\QuoteAwareConstExprStringNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/QuoteAwareConstExprStringNode.php', 'PHPStan\\PhpDocParser\\Ast\\Node' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Node.php', 'PHPStan\\PhpDocParser\\Ast\\NodeAttributes' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/NodeAttributes.php', 'PHPStan\\PhpDocParser\\Ast\\NodeTraverser' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/NodeTraverser.php', 'PHPStan\\PhpDocParser\\Ast\\NodeVisitor' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/NodeVisitor.php', 'PHPStan\\PhpDocParser\\Ast\\NodeVisitor\\CloningVisitor' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/NodeVisitor/CloningVisitor.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\AssertTagMethodValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/AssertTagMethodValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\AssertTagPropertyValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/AssertTagPropertyValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\AssertTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/AssertTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\DeprecatedTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/DeprecatedTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\Doctrine\\DoctrineAnnotation' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineAnnotation.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\Doctrine\\DoctrineArgument' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineArgument.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\Doctrine\\DoctrineArray' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineArray.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\Doctrine\\DoctrineArrayItem' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineArrayItem.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\Doctrine\\DoctrineTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ExtendsTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ExtendsTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\GenericTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/GenericTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ImplementsTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ImplementsTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\InvalidTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/InvalidTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\MethodTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/MethodTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\MethodTagValueParameterNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/MethodTagValueParameterNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\MixinTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/MixinTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ParamClosureThisTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamClosureThisTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ParamImmediatelyInvokedCallableTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamImmediatelyInvokedCallableTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ParamLaterInvokedCallableTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamLaterInvokedCallableTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ParamOutTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamOutTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ParamTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocChildNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocChildNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocTagNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocTagNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocTextNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocTextNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PropertyTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PropertyTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PureUnlessCallableIsImpureTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PureUnlessCallableIsImpureTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\RequireExtendsTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/RequireExtendsTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\RequireImplementsTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/RequireImplementsTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ReturnTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ReturnTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\SelfOutTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/SelfOutTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\TemplateTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/TemplateTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ThrowsTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ThrowsTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\TypeAliasImportTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/TypeAliasImportTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\TypeAliasTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/TypeAliasTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\TypelessParamTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/TypelessParamTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\UsesTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/UsesTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\VarTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/VarTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayShapeItemNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeItemNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayShapeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayShapeUnsealedTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeUnsealedTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\CallableTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/CallableTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\CallableTypeParameterNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/CallableTypeParameterNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ConditionalTypeForParameterNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ConditionalTypeForParameterNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ConditionalTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ConditionalTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ConstTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ConstTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\GenericTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/GenericTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\IdentifierTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/IdentifierTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\IntersectionTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/IntersectionTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\InvalidTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/InvalidTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\NullableTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/NullableTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ObjectShapeItemNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ObjectShapeItemNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ObjectShapeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ObjectShapeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\OffsetAccessTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/OffsetAccessTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ThisTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ThisTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\TypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/TypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\UnionTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/UnionTypeNode.php', 'PHPStan\\PhpDocParser\\Lexer\\Lexer' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Lexer/Lexer.php', 'PHPStan\\PhpDocParser\\Parser\\ConstExprParser' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Parser/ConstExprParser.php', 'PHPStan\\PhpDocParser\\Parser\\ParserException' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Parser/ParserException.php', 'PHPStan\\PhpDocParser\\Parser\\PhpDocParser' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php', 'PHPStan\\PhpDocParser\\Parser\\StringUnescaper' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Parser/StringUnescaper.php', 'PHPStan\\PhpDocParser\\Parser\\TokenIterator' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Parser/TokenIterator.php', 'PHPStan\\PhpDocParser\\Parser\\TypeParser' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Parser/TypeParser.php', 'PHPStan\\PhpDocParser\\Printer\\DiffElem' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Printer/DiffElem.php', 'PHPStan\\PhpDocParser\\Printer\\Differ' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Printer/Differ.php', 'PHPStan\\PhpDocParser\\Printer\\Printer' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Printer/Printer.php', 'PHPStan\\PhpDoc\\ConstExprNodeResolver' => __DIR__ . '/../..' . '/src/PhpDoc/ConstExprNodeResolver.php', 'PHPStan\\PhpDoc\\ConstExprParserFactory' => __DIR__ . '/../..' . '/src/PhpDoc/ConstExprParserFactory.php', 'PHPStan\\PhpDoc\\CountableStubFilesExtension' => __DIR__ . '/../..' . '/src/PhpDoc/CountableStubFilesExtension.php', 'PHPStan\\PhpDoc\\DefaultStubFilesProvider' => __DIR__ . '/../..' . '/src/PhpDoc/DefaultStubFilesProvider.php', 'PHPStan\\PhpDoc\\DirectTypeNodeResolverExtensionRegistryProvider' => __DIR__ . '/../..' . '/src/PhpDoc/DirectTypeNodeResolverExtensionRegistryProvider.php', 'PHPStan\\PhpDoc\\JsonValidateStubFilesExtension' => __DIR__ . '/../..' . '/src/PhpDoc/JsonValidateStubFilesExtension.php', 'PHPStan\\PhpDoc\\LazyTypeNodeResolverExtensionRegistryProvider' => __DIR__ . '/../..' . '/src/PhpDoc/LazyTypeNodeResolverExtensionRegistryProvider.php', 'PHPStan\\PhpDoc\\NameScopeAlreadyBeingCreatedException' => __DIR__ . '/../..' . '/src/PhpDoc/NameScopeAlreadyBeingCreatedException.php', 'PHPStan\\PhpDoc\\PhpDocBlock' => __DIR__ . '/../..' . '/src/PhpDoc/PhpDocBlock.php', 'PHPStan\\PhpDoc\\PhpDocInheritanceResolver' => __DIR__ . '/../..' . '/src/PhpDoc/PhpDocInheritanceResolver.php', 'PHPStan\\PhpDoc\\PhpDocNodeResolver' => __DIR__ . '/../..' . '/src/PhpDoc/PhpDocNodeResolver.php', 'PHPStan\\PhpDoc\\PhpDocStringResolver' => __DIR__ . '/../..' . '/src/PhpDoc/PhpDocStringResolver.php', 'PHPStan\\PhpDoc\\ReflectionEnumStubFilesExtension' => __DIR__ . '/../..' . '/src/PhpDoc/ReflectionEnumStubFilesExtension.php', 'PHPStan\\PhpDoc\\ResolvedPhpDocBlock' => __DIR__ . '/../..' . '/src/PhpDoc/ResolvedPhpDocBlock.php', 'PHPStan\\PhpDoc\\SocketSelectStubFilesExtension' => __DIR__ . '/../..' . '/src/PhpDoc/SocketSelectStubFilesExtension.php', 'PHPStan\\PhpDoc\\StubFilesExtension' => __DIR__ . '/../..' . '/src/PhpDoc/StubFilesExtension.php', 'PHPStan\\PhpDoc\\StubFilesProvider' => __DIR__ . '/../..' . '/src/PhpDoc/StubFilesProvider.php', 'PHPStan\\PhpDoc\\StubPhpDocProvider' => __DIR__ . '/../..' . '/src/PhpDoc/StubPhpDocProvider.php', 'PHPStan\\PhpDoc\\StubSourceLocatorFactory' => __DIR__ . '/../..' . '/src/PhpDoc/StubSourceLocatorFactory.php', 'PHPStan\\PhpDoc\\StubValidator' => __DIR__ . '/../..' . '/src/PhpDoc/StubValidator.php', 'PHPStan\\PhpDoc\\Tag\\AssertTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/AssertTag.php', 'PHPStan\\PhpDoc\\Tag\\AssertTagParameter' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/AssertTagParameter.php', 'PHPStan\\PhpDoc\\Tag\\DeprecatedTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/DeprecatedTag.php', 'PHPStan\\PhpDoc\\Tag\\ExtendsTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/ExtendsTag.php', 'PHPStan\\PhpDoc\\Tag\\ImplementsTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/ImplementsTag.php', 'PHPStan\\PhpDoc\\Tag\\MethodTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/MethodTag.php', 'PHPStan\\PhpDoc\\Tag\\MethodTagParameter' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/MethodTagParameter.php', 'PHPStan\\PhpDoc\\Tag\\MixinTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/MixinTag.php', 'PHPStan\\PhpDoc\\Tag\\ParamClosureThisTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/ParamClosureThisTag.php', 'PHPStan\\PhpDoc\\Tag\\ParamOutTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/ParamOutTag.php', 'PHPStan\\PhpDoc\\Tag\\ParamTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/ParamTag.php', 'PHPStan\\PhpDoc\\Tag\\PropertyTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/PropertyTag.php', 'PHPStan\\PhpDoc\\Tag\\RequireExtendsTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/RequireExtendsTag.php', 'PHPStan\\PhpDoc\\Tag\\RequireImplementsTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/RequireImplementsTag.php', 'PHPStan\\PhpDoc\\Tag\\ReturnTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/ReturnTag.php', 'PHPStan\\PhpDoc\\Tag\\SelfOutTypeTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/SelfOutTypeTag.php', 'PHPStan\\PhpDoc\\Tag\\TemplateTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/TemplateTag.php', 'PHPStan\\PhpDoc\\Tag\\ThrowsTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/ThrowsTag.php', 'PHPStan\\PhpDoc\\Tag\\TypeAliasImportTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/TypeAliasImportTag.php', 'PHPStan\\PhpDoc\\Tag\\TypeAliasTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/TypeAliasTag.php', 'PHPStan\\PhpDoc\\Tag\\TypedTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/TypedTag.php', 'PHPStan\\PhpDoc\\Tag\\UsesTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/UsesTag.php', 'PHPStan\\PhpDoc\\Tag\\VarTag' => __DIR__ . '/../..' . '/src/PhpDoc/Tag/VarTag.php', 'PHPStan\\PhpDoc\\TypeNodeResolver' => __DIR__ . '/../..' . '/src/PhpDoc/TypeNodeResolver.php', 'PHPStan\\PhpDoc\\TypeNodeResolverAwareExtension' => __DIR__ . '/../..' . '/src/PhpDoc/TypeNodeResolverAwareExtension.php', 'PHPStan\\PhpDoc\\TypeNodeResolverExtension' => __DIR__ . '/../..' . '/src/PhpDoc/TypeNodeResolverExtension.php', 'PHPStan\\PhpDoc\\TypeNodeResolverExtensionAwareRegistry' => __DIR__ . '/../..' . '/src/PhpDoc/TypeNodeResolverExtensionAwareRegistry.php', 'PHPStan\\PhpDoc\\TypeNodeResolverExtensionRegistry' => __DIR__ . '/../..' . '/src/PhpDoc/TypeNodeResolverExtensionRegistry.php', 'PHPStan\\PhpDoc\\TypeNodeResolverExtensionRegistryProvider' => __DIR__ . '/../..' . '/src/PhpDoc/TypeNodeResolverExtensionRegistryProvider.php', 'PHPStan\\PhpDoc\\TypeStringResolver' => __DIR__ . '/../..' . '/src/PhpDoc/TypeStringResolver.php', 'PHPStan\\Php\\PhpVersion' => __DIR__ . '/../..' . '/src/Php/PhpVersion.php', 'PHPStan\\Php\\PhpVersionFactory' => __DIR__ . '/../..' . '/src/Php/PhpVersionFactory.php', 'PHPStan\\Php\\PhpVersionFactoryFactory' => __DIR__ . '/../..' . '/src/Php/PhpVersionFactoryFactory.php', 'PHPStan\\Process\\CpuCoreCounter' => __DIR__ . '/../..' . '/src/Process/CpuCoreCounter.php', 'PHPStan\\Process\\ProcessCanceledException' => __DIR__ . '/../..' . '/src/Process/ProcessCanceledException.php', 'PHPStan\\Process\\ProcessCrashedException' => __DIR__ . '/../..' . '/src/Process/ProcessCrashedException.php', 'PHPStan\\Process\\ProcessHelper' => __DIR__ . '/../..' . '/src/Process/ProcessHelper.php', 'PHPStan\\Process\\ProcessPromise' => __DIR__ . '/../..' . '/src/Process/ProcessPromise.php', 'PHPStan\\Reflection\\AdditionalConstructorsExtension' => __DIR__ . '/../..' . '/src/Reflection/AdditionalConstructorsExtension.php', 'PHPStan\\Reflection\\AllowedSubTypesClassReflectionExtension' => __DIR__ . '/../..' . '/src/Reflection/AllowedSubTypesClassReflectionExtension.php', 'PHPStan\\Reflection\\Annotations\\AnnotationMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/Annotations/AnnotationMethodReflection.php', 'PHPStan\\Reflection\\Annotations\\AnnotationPropertyReflection' => __DIR__ . '/../..' . '/src/Reflection/Annotations/AnnotationPropertyReflection.php', 'PHPStan\\Reflection\\Annotations\\AnnotationsMethodParameterReflection' => __DIR__ . '/../..' . '/src/Reflection/Annotations/AnnotationsMethodParameterReflection.php', 'PHPStan\\Reflection\\Annotations\\AnnotationsMethodsClassReflectionExtension' => __DIR__ . '/../..' . '/src/Reflection/Annotations/AnnotationsMethodsClassReflectionExtension.php', 'PHPStan\\Reflection\\Annotations\\AnnotationsPropertiesClassReflectionExtension' => __DIR__ . '/../..' . '/src/Reflection/Annotations/AnnotationsPropertiesClassReflectionExtension.php', 'PHPStan\\Reflection\\Assertions' => __DIR__ . '/../..' . '/src/Reflection/Assertions.php', 'PHPStan\\Reflection\\BetterReflection\\BetterReflectionProvider' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/BetterReflectionProvider.php', 'PHPStan\\Reflection\\BetterReflection\\BetterReflectionProviderFactory' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/BetterReflectionProviderFactory.php', 'PHPStan\\Reflection\\BetterReflection\\BetterReflectionSourceLocatorFactory' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/BetterReflectionSourceLocatorFactory.php', 'PHPStan\\Reflection\\BetterReflection\\Reflector\\MemoizingReflector' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/Reflector/MemoizingReflector.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\AutoloadFunctionsSourceLocator' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/AutoloadFunctionsSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\AutoloadSourceLocator' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/AutoloadSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\CachingVisitor' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/CachingVisitor.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\ComposerJsonAndInstalledJsonSourceLocatorMaker' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/ComposerJsonAndInstalledJsonSourceLocatorMaker.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\FetchedNode' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/FetchedNode.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\FetchedNodesResult' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/FetchedNodesResult.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\FileNodesFetcher' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/FileNodesFetcher.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\FileReadTrapStreamWrapper' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/FileReadTrapStreamWrapper.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\NewOptimizedDirectorySourceLocator' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/NewOptimizedDirectorySourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedDirectorySourceLocator' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/OptimizedDirectorySourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedDirectorySourceLocatorFactory' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/OptimizedDirectorySourceLocatorFactory.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedDirectorySourceLocatorRepository' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/OptimizedDirectorySourceLocatorRepository.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedPsrAutoloaderLocator' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/OptimizedPsrAutoloaderLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedPsrAutoloaderLocatorFactory' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/OptimizedPsrAutoloaderLocatorFactory.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedSingleFileSourceLocator' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/OptimizedSingleFileSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedSingleFileSourceLocatorFactory' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/OptimizedSingleFileSourceLocatorFactory.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedSingleFileSourceLocatorRepository' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/OptimizedSingleFileSourceLocatorRepository.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\PhpFileCleaner' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/PhpFileCleaner.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\PhpVersionBlacklistSourceLocator' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/PhpVersionBlacklistSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\ReflectionClassSourceLocator' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/ReflectionClassSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\RewriteClassAliasSourceLocator' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/RewriteClassAliasSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\SkipClassAliasSourceLocator' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceLocator/SkipClassAliasSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceStubber\\PhpStormStubsSourceStubberFactory' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceStubber/PhpStormStubsSourceStubberFactory.php', 'PHPStan\\Reflection\\BetterReflection\\SourceStubber\\ReflectionSourceStubberFactory' => __DIR__ . '/../..' . '/src/Reflection/BetterReflection/SourceStubber/ReflectionSourceStubberFactory.php', 'PHPStan\\Reflection\\BrokerAwareExtension' => __DIR__ . '/../..' . '/src/Reflection/BrokerAwareExtension.php', 'PHPStan\\Reflection\\CallableFunctionVariantWithPhpDocs' => __DIR__ . '/../..' . '/src/Reflection/CallableFunctionVariantWithPhpDocs.php', 'PHPStan\\Reflection\\Callables\\CallableParametersAcceptor' => __DIR__ . '/../..' . '/src/Reflection/Callables/CallableParametersAcceptor.php', 'PHPStan\\Reflection\\Callables\\FunctionCallableVariant' => __DIR__ . '/../..' . '/src/Reflection/Callables/FunctionCallableVariant.php', 'PHPStan\\Reflection\\Callables\\SimpleImpurePoint' => __DIR__ . '/../..' . '/src/Reflection/Callables/SimpleImpurePoint.php', 'PHPStan\\Reflection\\Callables\\SimpleThrowPoint' => __DIR__ . '/../..' . '/src/Reflection/Callables/SimpleThrowPoint.php', 'PHPStan\\Reflection\\ClassConstantReflection' => __DIR__ . '/../..' . '/src/Reflection/ClassConstantReflection.php', 'PHPStan\\Reflection\\ClassMemberAccessAnswerer' => __DIR__ . '/../..' . '/src/Reflection/ClassMemberAccessAnswerer.php', 'PHPStan\\Reflection\\ClassMemberReflection' => __DIR__ . '/../..' . '/src/Reflection/ClassMemberReflection.php', 'PHPStan\\Reflection\\ClassNameHelper' => __DIR__ . '/../..' . '/src/Reflection/ClassNameHelper.php', 'PHPStan\\Reflection\\ClassReflection' => __DIR__ . '/../..' . '/src/Reflection/ClassReflection.php', 'PHPStan\\Reflection\\ClassReflectionExtensionRegistry' => __DIR__ . '/../..' . '/src/Reflection/ClassReflectionExtensionRegistry.php', 'PHPStan\\Reflection\\ConstantNameHelper' => __DIR__ . '/../..' . '/src/Reflection/ConstantNameHelper.php', 'PHPStan\\Reflection\\ConstantReflection' => __DIR__ . '/../..' . '/src/Reflection/ConstantReflection.php', 'PHPStan\\Reflection\\Constant\\RuntimeConstantReflection' => __DIR__ . '/../..' . '/src/Reflection/Constant/RuntimeConstantReflection.php', 'PHPStan\\Reflection\\ConstructorsHelper' => __DIR__ . '/../..' . '/src/Reflection/ConstructorsHelper.php', 'PHPStan\\Reflection\\Dummy\\ChangedTypeMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/Dummy/ChangedTypeMethodReflection.php', 'PHPStan\\Reflection\\Dummy\\ChangedTypePropertyReflection' => __DIR__ . '/../..' . '/src/Reflection/Dummy/ChangedTypePropertyReflection.php', 'PHPStan\\Reflection\\Dummy\\DummyConstantReflection' => __DIR__ . '/../..' . '/src/Reflection/Dummy/DummyConstantReflection.php', 'PHPStan\\Reflection\\Dummy\\DummyConstructorReflection' => __DIR__ . '/../..' . '/src/Reflection/Dummy/DummyConstructorReflection.php', 'PHPStan\\Reflection\\Dummy\\DummyMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/Dummy/DummyMethodReflection.php', 'PHPStan\\Reflection\\Dummy\\DummyPropertyReflection' => __DIR__ . '/../..' . '/src/Reflection/Dummy/DummyPropertyReflection.php', 'PHPStan\\Reflection\\EnumCaseReflection' => __DIR__ . '/../..' . '/src/Reflection/EnumCaseReflection.php', 'PHPStan\\Reflection\\ExtendedMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/ExtendedMethodReflection.php', 'PHPStan\\Reflection\\ExtendedPropertyReflection' => __DIR__ . '/../..' . '/src/Reflection/ExtendedPropertyReflection.php', 'PHPStan\\Reflection\\FunctionReflection' => __DIR__ . '/../..' . '/src/Reflection/FunctionReflection.php', 'PHPStan\\Reflection\\FunctionReflectionFactory' => __DIR__ . '/../..' . '/src/Reflection/FunctionReflectionFactory.php', 'PHPStan\\Reflection\\FunctionVariant' => __DIR__ . '/../..' . '/src/Reflection/FunctionVariant.php', 'PHPStan\\Reflection\\FunctionVariantWithPhpDocs' => __DIR__ . '/../..' . '/src/Reflection/FunctionVariantWithPhpDocs.php', 'PHPStan\\Reflection\\GenericParametersAcceptorResolver' => __DIR__ . '/../..' . '/src/Reflection/GenericParametersAcceptorResolver.php', 'PHPStan\\Reflection\\GlobalConstantReflection' => __DIR__ . '/../..' . '/src/Reflection/GlobalConstantReflection.php', 'PHPStan\\Reflection\\InaccessibleMethod' => __DIR__ . '/../..' . '/src/Reflection/InaccessibleMethod.php', 'PHPStan\\Reflection\\InitializerExprContext' => __DIR__ . '/../..' . '/src/Reflection/InitializerExprContext.php', 'PHPStan\\Reflection\\InitializerExprTypeResolver' => __DIR__ . '/../..' . '/src/Reflection/InitializerExprTypeResolver.php', 'PHPStan\\Reflection\\MethodPrototypeReflection' => __DIR__ . '/../..' . '/src/Reflection/MethodPrototypeReflection.php', 'PHPStan\\Reflection\\MethodReflection' => __DIR__ . '/../..' . '/src/Reflection/MethodReflection.php', 'PHPStan\\Reflection\\MethodsClassReflectionExtension' => __DIR__ . '/../..' . '/src/Reflection/MethodsClassReflectionExtension.php', 'PHPStan\\Reflection\\MissingConstantFromReflectionException' => __DIR__ . '/../..' . '/src/Reflection/MissingConstantFromReflectionException.php', 'PHPStan\\Reflection\\MissingMethodFromReflectionException' => __DIR__ . '/../..' . '/src/Reflection/MissingMethodFromReflectionException.php', 'PHPStan\\Reflection\\MissingPropertyFromReflectionException' => __DIR__ . '/../..' . '/src/Reflection/MissingPropertyFromReflectionException.php', 'PHPStan\\Reflection\\Mixin\\MixinMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/Mixin/MixinMethodReflection.php', 'PHPStan\\Reflection\\Mixin\\MixinMethodsClassReflectionExtension' => __DIR__ . '/../..' . '/src/Reflection/Mixin/MixinMethodsClassReflectionExtension.php', 'PHPStan\\Reflection\\Mixin\\MixinPropertiesClassReflectionExtension' => __DIR__ . '/../..' . '/src/Reflection/Mixin/MixinPropertiesClassReflectionExtension.php', 'PHPStan\\Reflection\\NamespaceAnswerer' => __DIR__ . '/../..' . '/src/Reflection/NamespaceAnswerer.php', 'PHPStan\\Reflection\\Native\\NativeFunctionReflection' => __DIR__ . '/../..' . '/src/Reflection/Native/NativeFunctionReflection.php', 'PHPStan\\Reflection\\Native\\NativeMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/Native/NativeMethodReflection.php', 'PHPStan\\Reflection\\Native\\NativeParameterReflection' => __DIR__ . '/../..' . '/src/Reflection/Native/NativeParameterReflection.php', 'PHPStan\\Reflection\\Native\\NativeParameterWithPhpDocsReflection' => __DIR__ . '/../..' . '/src/Reflection/Native/NativeParameterWithPhpDocsReflection.php', 'PHPStan\\Reflection\\PHPStan\\NativeReflectionEnumReturnDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Reflection/PHPStan/NativeReflectionEnumReturnDynamicReturnTypeExtension.php', 'PHPStan\\Reflection\\ParameterReflection' => __DIR__ . '/../..' . '/src/Reflection/ParameterReflection.php', 'PHPStan\\Reflection\\ParameterReflectionWithPhpDocs' => __DIR__ . '/../..' . '/src/Reflection/ParameterReflectionWithPhpDocs.php', 'PHPStan\\Reflection\\ParametersAcceptor' => __DIR__ . '/../..' . '/src/Reflection/ParametersAcceptor.php', 'PHPStan\\Reflection\\ParametersAcceptorSelector' => __DIR__ . '/../..' . '/src/Reflection/ParametersAcceptorSelector.php', 'PHPStan\\Reflection\\ParametersAcceptorWithPhpDocs' => __DIR__ . '/../..' . '/src/Reflection/ParametersAcceptorWithPhpDocs.php', 'PHPStan\\Reflection\\PassedByReference' => __DIR__ . '/../..' . '/src/Reflection/PassedByReference.php', 'PHPStan\\Reflection\\PhpVersionStaticAccessor' => __DIR__ . '/../..' . '/src/Reflection/PhpVersionStaticAccessor.php', 'PHPStan\\Reflection\\Php\\BuiltinMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/BuiltinMethodReflection.php', 'PHPStan\\Reflection\\Php\\ClosureCallMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/ClosureCallMethodReflection.php', 'PHPStan\\Reflection\\Php\\ClosureCallUnresolvedMethodPrototypeReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/ClosureCallUnresolvedMethodPrototypeReflection.php', 'PHPStan\\Reflection\\Php\\DummyParameter' => __DIR__ . '/../..' . '/src/Reflection/Php/DummyParameter.php', 'PHPStan\\Reflection\\Php\\DummyParameterWithPhpDocs' => __DIR__ . '/../..' . '/src/Reflection/Php/DummyParameterWithPhpDocs.php', 'PHPStan\\Reflection\\Php\\EnumAllowedSubTypesClassReflectionExtension' => __DIR__ . '/../..' . '/src/Reflection/Php/EnumAllowedSubTypesClassReflectionExtension.php', 'PHPStan\\Reflection\\Php\\EnumCasesMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/EnumCasesMethodReflection.php', 'PHPStan\\Reflection\\Php\\EnumPropertyReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/EnumPropertyReflection.php', 'PHPStan\\Reflection\\Php\\EnumUnresolvedPropertyPrototypeReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/EnumUnresolvedPropertyPrototypeReflection.php', 'PHPStan\\Reflection\\Php\\ExitFunctionReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/ExitFunctionReflection.php', 'PHPStan\\Reflection\\Php\\NativeBuiltinMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/NativeBuiltinMethodReflection.php', 'PHPStan\\Reflection\\Php\\PhpClassReflectionExtension' => __DIR__ . '/../..' . '/src/Reflection/Php/PhpClassReflectionExtension.php', 'PHPStan\\Reflection\\Php\\PhpFunctionFromParserNodeReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/PhpFunctionFromParserNodeReflection.php', 'PHPStan\\Reflection\\Php\\PhpFunctionReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/PhpFunctionReflection.php', 'PHPStan\\Reflection\\Php\\PhpMethodFromParserNodeReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/PhpMethodFromParserNodeReflection.php', 'PHPStan\\Reflection\\Php\\PhpMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/PhpMethodReflection.php', 'PHPStan\\Reflection\\Php\\PhpMethodReflectionFactory' => __DIR__ . '/../..' . '/src/Reflection/Php/PhpMethodReflectionFactory.php', 'PHPStan\\Reflection\\Php\\PhpParameterFromParserNodeReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/PhpParameterFromParserNodeReflection.php', 'PHPStan\\Reflection\\Php\\PhpParameterReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/PhpParameterReflection.php', 'PHPStan\\Reflection\\Php\\PhpPropertyReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/PhpPropertyReflection.php', 'PHPStan\\Reflection\\Php\\SimpleXMLElementProperty' => __DIR__ . '/../..' . '/src/Reflection/Php/SimpleXMLElementProperty.php', 'PHPStan\\Reflection\\Php\\Soap\\SoapClientMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/Php/Soap/SoapClientMethodReflection.php', 'PHPStan\\Reflection\\Php\\Soap\\SoapClientMethodsClassReflectionExtension' => __DIR__ . '/../..' . '/src/Reflection/Php/Soap/SoapClientMethodsClassReflectionExtension.php', 'PHPStan\\Reflection\\Php\\UniversalObjectCrateProperty' => __DIR__ . '/../..' . '/src/Reflection/Php/UniversalObjectCrateProperty.php', 'PHPStan\\Reflection\\Php\\UniversalObjectCratesClassReflectionExtension' => __DIR__ . '/../..' . '/src/Reflection/Php/UniversalObjectCratesClassReflectionExtension.php', 'PHPStan\\Reflection\\PropertiesClassReflectionExtension' => __DIR__ . '/../..' . '/src/Reflection/PropertiesClassReflectionExtension.php', 'PHPStan\\Reflection\\PropertyReflection' => __DIR__ . '/../..' . '/src/Reflection/PropertyReflection.php', 'PHPStan\\Reflection\\ReflectionProvider' => __DIR__ . '/../..' . '/src/Reflection/ReflectionProvider.php', 'PHPStan\\Reflection\\ReflectionProviderStaticAccessor' => __DIR__ . '/../..' . '/src/Reflection/ReflectionProviderStaticAccessor.php', 'PHPStan\\Reflection\\ReflectionProvider\\DirectReflectionProviderProvider' => __DIR__ . '/../..' . '/src/Reflection/ReflectionProvider/DirectReflectionProviderProvider.php', 'PHPStan\\Reflection\\ReflectionProvider\\DummyReflectionProvider' => __DIR__ . '/../..' . '/src/Reflection/ReflectionProvider/DummyReflectionProvider.php', 'PHPStan\\Reflection\\ReflectionProvider\\LazyReflectionProviderProvider' => __DIR__ . '/../..' . '/src/Reflection/ReflectionProvider/LazyReflectionProviderProvider.php', 'PHPStan\\Reflection\\ReflectionProvider\\MemoizingReflectionProvider' => __DIR__ . '/../..' . '/src/Reflection/ReflectionProvider/MemoizingReflectionProvider.php', 'PHPStan\\Reflection\\ReflectionProvider\\ReflectionProviderFactory' => __DIR__ . '/../..' . '/src/Reflection/ReflectionProvider/ReflectionProviderFactory.php', 'PHPStan\\Reflection\\ReflectionProvider\\ReflectionProviderProvider' => __DIR__ . '/../..' . '/src/Reflection/ReflectionProvider/ReflectionProviderProvider.php', 'PHPStan\\Reflection\\ReflectionProvider\\SetterReflectionProviderProvider' => __DIR__ . '/../..' . '/src/Reflection/ReflectionProvider/SetterReflectionProviderProvider.php', 'PHPStan\\Reflection\\RequireExtension\\RequireExtendsMethodsClassReflectionExtension' => __DIR__ . '/../..' . '/src/Reflection/RequireExtension/RequireExtendsMethodsClassReflectionExtension.php', 'PHPStan\\Reflection\\RequireExtension\\RequireExtendsPropertiesClassReflectionExtension' => __DIR__ . '/../..' . '/src/Reflection/RequireExtension/RequireExtendsPropertiesClassReflectionExtension.php', 'PHPStan\\Reflection\\ResolvedFunctionVariant' => __DIR__ . '/../..' . '/src/Reflection/ResolvedFunctionVariant.php', 'PHPStan\\Reflection\\ResolvedFunctionVariantWithCallable' => __DIR__ . '/../..' . '/src/Reflection/ResolvedFunctionVariantWithCallable.php', 'PHPStan\\Reflection\\ResolvedFunctionVariantWithOriginal' => __DIR__ . '/../..' . '/src/Reflection/ResolvedFunctionVariantWithOriginal.php', 'PHPStan\\Reflection\\ResolvedMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/ResolvedMethodReflection.php', 'PHPStan\\Reflection\\ResolvedPropertyReflection' => __DIR__ . '/../..' . '/src/Reflection/ResolvedPropertyReflection.php', 'PHPStan\\Reflection\\SignatureMap\\FunctionSignature' => __DIR__ . '/../..' . '/src/Reflection/SignatureMap/FunctionSignature.php', 'PHPStan\\Reflection\\SignatureMap\\FunctionSignatureMapProvider' => __DIR__ . '/../..' . '/src/Reflection/SignatureMap/FunctionSignatureMapProvider.php', 'PHPStan\\Reflection\\SignatureMap\\NativeFunctionReflectionProvider' => __DIR__ . '/../..' . '/src/Reflection/SignatureMap/NativeFunctionReflectionProvider.php', 'PHPStan\\Reflection\\SignatureMap\\ParameterSignature' => __DIR__ . '/../..' . '/src/Reflection/SignatureMap/ParameterSignature.php', 'PHPStan\\Reflection\\SignatureMap\\Php8SignatureMapProvider' => __DIR__ . '/../..' . '/src/Reflection/SignatureMap/Php8SignatureMapProvider.php', 'PHPStan\\Reflection\\SignatureMap\\SignatureMapParser' => __DIR__ . '/../..' . '/src/Reflection/SignatureMap/SignatureMapParser.php', 'PHPStan\\Reflection\\SignatureMap\\SignatureMapProvider' => __DIR__ . '/../..' . '/src/Reflection/SignatureMap/SignatureMapProvider.php', 'PHPStan\\Reflection\\SignatureMap\\SignatureMapProviderFactory' => __DIR__ . '/../..' . '/src/Reflection/SignatureMap/SignatureMapProviderFactory.php', 'PHPStan\\Reflection\\TrivialParametersAcceptor' => __DIR__ . '/../..' . '/src/Reflection/TrivialParametersAcceptor.php', 'PHPStan\\Reflection\\Type\\CallbackUnresolvedMethodPrototypeReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/CallbackUnresolvedMethodPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\CallbackUnresolvedPropertyPrototypeReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/CallbackUnresolvedPropertyPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\CalledOnTypeUnresolvedMethodPrototypeReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/CalledOnTypeUnresolvedMethodPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\CalledOnTypeUnresolvedPropertyPrototypeReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/CalledOnTypeUnresolvedPropertyPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\IntersectionTypeMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/IntersectionTypeMethodReflection.php', 'PHPStan\\Reflection\\Type\\IntersectionTypePropertyReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/IntersectionTypePropertyReflection.php', 'PHPStan\\Reflection\\Type\\IntersectionTypeUnresolvedMethodPrototypeReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/IntersectionTypeUnresolvedMethodPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\IntersectionTypeUnresolvedPropertyPrototypeReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/IntersectionTypeUnresolvedPropertyPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\UnionTypeMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/UnionTypeMethodReflection.php', 'PHPStan\\Reflection\\Type\\UnionTypePropertyReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/UnionTypePropertyReflection.php', 'PHPStan\\Reflection\\Type\\UnionTypeUnresolvedMethodPrototypeReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/UnionTypeUnresolvedMethodPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\UnionTypeUnresolvedPropertyPrototypeReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/UnionTypeUnresolvedPropertyPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\UnresolvedMethodPrototypeReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/UnresolvedMethodPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\UnresolvedPropertyPrototypeReflection' => __DIR__ . '/../..' . '/src/Reflection/Type/UnresolvedPropertyPrototypeReflection.php', 'PHPStan\\Reflection\\WrappedExtendedMethodReflection' => __DIR__ . '/../..' . '/src/Reflection/WrappedExtendedMethodReflection.php', 'PHPStan\\Reflection\\WrappedExtendedPropertyReflection' => __DIR__ . '/../..' . '/src/Reflection/WrappedExtendedPropertyReflection.php', 'PHPStan\\Reflection\\WrapperPropertyReflection' => __DIR__ . '/../..' . '/src/Reflection/WrapperPropertyReflection.php', 'PHPStan\\Rules\\Api\\ApiClassConstFetchRule' => __DIR__ . '/../..' . '/src/Rules/Api/ApiClassConstFetchRule.php', 'PHPStan\\Rules\\Api\\ApiClassExtendsRule' => __DIR__ . '/../..' . '/src/Rules/Api/ApiClassExtendsRule.php', 'PHPStan\\Rules\\Api\\ApiClassImplementsRule' => __DIR__ . '/../..' . '/src/Rules/Api/ApiClassImplementsRule.php', 'PHPStan\\Rules\\Api\\ApiInstanceofRule' => __DIR__ . '/../..' . '/src/Rules/Api/ApiInstanceofRule.php', 'PHPStan\\Rules\\Api\\ApiInstanceofTypeRule' => __DIR__ . '/../..' . '/src/Rules/Api/ApiInstanceofTypeRule.php', 'PHPStan\\Rules\\Api\\ApiInstantiationRule' => __DIR__ . '/../..' . '/src/Rules/Api/ApiInstantiationRule.php', 'PHPStan\\Rules\\Api\\ApiInterfaceExtendsRule' => __DIR__ . '/../..' . '/src/Rules/Api/ApiInterfaceExtendsRule.php', 'PHPStan\\Rules\\Api\\ApiMethodCallRule' => __DIR__ . '/../..' . '/src/Rules/Api/ApiMethodCallRule.php', 'PHPStan\\Rules\\Api\\ApiRuleHelper' => __DIR__ . '/../..' . '/src/Rules/Api/ApiRuleHelper.php', 'PHPStan\\Rules\\Api\\ApiStaticCallRule' => __DIR__ . '/../..' . '/src/Rules/Api/ApiStaticCallRule.php', 'PHPStan\\Rules\\Api\\ApiTraitUseRule' => __DIR__ . '/../..' . '/src/Rules/Api/ApiTraitUseRule.php', 'PHPStan\\Rules\\Api\\BcUncoveredInterface' => __DIR__ . '/../..' . '/src/Rules/Api/BcUncoveredInterface.php', 'PHPStan\\Rules\\Api\\GetTemplateTypeRule' => __DIR__ . '/../..' . '/src/Rules/Api/GetTemplateTypeRule.php', 'PHPStan\\Rules\\Api\\NodeConnectingVisitorAttributesRule' => __DIR__ . '/../..' . '/src/Rules/Api/NodeConnectingVisitorAttributesRule.php', 'PHPStan\\Rules\\Api\\PhpStanNamespaceIn3rdPartyPackageRule' => __DIR__ . '/../..' . '/src/Rules/Api/PhpStanNamespaceIn3rdPartyPackageRule.php', 'PHPStan\\Rules\\Api\\RuntimeReflectionFunctionRule' => __DIR__ . '/../..' . '/src/Rules/Api/RuntimeReflectionFunctionRule.php', 'PHPStan\\Rules\\Api\\RuntimeReflectionInstantiationRule' => __DIR__ . '/../..' . '/src/Rules/Api/RuntimeReflectionInstantiationRule.php', 'PHPStan\\Rules\\Arrays\\AllowedArrayKeysTypes' => __DIR__ . '/../..' . '/src/Rules/Arrays/AllowedArrayKeysTypes.php', 'PHPStan\\Rules\\Arrays\\AppendedArrayItemTypeRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/AppendedArrayItemTypeRule.php', 'PHPStan\\Rules\\Arrays\\AppendedArrayKeyTypeRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/AppendedArrayKeyTypeRule.php', 'PHPStan\\Rules\\Arrays\\ArrayDestructuringRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/ArrayDestructuringRule.php', 'PHPStan\\Rules\\Arrays\\ArrayUnpackingRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/ArrayUnpackingRule.php', 'PHPStan\\Rules\\Arrays\\DeadForeachRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/DeadForeachRule.php', 'PHPStan\\Rules\\Arrays\\DuplicateKeysInLiteralArraysRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/DuplicateKeysInLiteralArraysRule.php', 'PHPStan\\Rules\\Arrays\\EmptyArrayItemRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/EmptyArrayItemRule.php', 'PHPStan\\Rules\\Arrays\\InvalidKeyInArrayDimFetchRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/InvalidKeyInArrayDimFetchRule.php', 'PHPStan\\Rules\\Arrays\\InvalidKeyInArrayItemRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/InvalidKeyInArrayItemRule.php', 'PHPStan\\Rules\\Arrays\\IterableInForeachRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/IterableInForeachRule.php', 'PHPStan\\Rules\\Arrays\\NonexistentOffsetInArrayDimFetchCheck' => __DIR__ . '/../..' . '/src/Rules/Arrays/NonexistentOffsetInArrayDimFetchCheck.php', 'PHPStan\\Rules\\Arrays\\NonexistentOffsetInArrayDimFetchRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/NonexistentOffsetInArrayDimFetchRule.php', 'PHPStan\\Rules\\Arrays\\OffsetAccessAssignOpRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/OffsetAccessAssignOpRule.php', 'PHPStan\\Rules\\Arrays\\OffsetAccessAssignmentRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/OffsetAccessAssignmentRule.php', 'PHPStan\\Rules\\Arrays\\OffsetAccessValueAssignmentRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/OffsetAccessValueAssignmentRule.php', 'PHPStan\\Rules\\Arrays\\OffsetAccessWithoutDimForReadingRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/OffsetAccessWithoutDimForReadingRule.php', 'PHPStan\\Rules\\Arrays\\UnpackIterableInArrayRule' => __DIR__ . '/../..' . '/src/Rules/Arrays/UnpackIterableInArrayRule.php', 'PHPStan\\Rules\\AttributesCheck' => __DIR__ . '/../..' . '/src/Rules/AttributesCheck.php', 'PHPStan\\Rules\\Cast\\EchoRule' => __DIR__ . '/../..' . '/src/Rules/Cast/EchoRule.php', 'PHPStan\\Rules\\Cast\\InvalidCastRule' => __DIR__ . '/../..' . '/src/Rules/Cast/InvalidCastRule.php', 'PHPStan\\Rules\\Cast\\InvalidPartOfEncapsedStringRule' => __DIR__ . '/../..' . '/src/Rules/Cast/InvalidPartOfEncapsedStringRule.php', 'PHPStan\\Rules\\Cast\\PrintRule' => __DIR__ . '/../..' . '/src/Rules/Cast/PrintRule.php', 'PHPStan\\Rules\\Cast\\UnsetCastRule' => __DIR__ . '/../..' . '/src/Rules/Cast/UnsetCastRule.php', 'PHPStan\\Rules\\ClassCaseSensitivityCheck' => __DIR__ . '/../..' . '/src/Rules/ClassCaseSensitivityCheck.php', 'PHPStan\\Rules\\ClassForbiddenNameCheck' => __DIR__ . '/../..' . '/src/Rules/ClassForbiddenNameCheck.php', 'PHPStan\\Rules\\ClassNameCheck' => __DIR__ . '/../..' . '/src/Rules/ClassNameCheck.php', 'PHPStan\\Rules\\ClassNameNodePair' => __DIR__ . '/../..' . '/src/Rules/ClassNameNodePair.php', 'PHPStan\\Rules\\Classes\\AccessPrivateConstantThroughStaticRule' => __DIR__ . '/../..' . '/src/Rules/Classes/AccessPrivateConstantThroughStaticRule.php', 'PHPStan\\Rules\\Classes\\AllowedSubTypesRule' => __DIR__ . '/../..' . '/src/Rules/Classes/AllowedSubTypesRule.php', 'PHPStan\\Rules\\Classes\\ClassAttributesRule' => __DIR__ . '/../..' . '/src/Rules/Classes/ClassAttributesRule.php', 'PHPStan\\Rules\\Classes\\ClassConstantAttributesRule' => __DIR__ . '/../..' . '/src/Rules/Classes/ClassConstantAttributesRule.php', 'PHPStan\\Rules\\Classes\\ClassConstantRule' => __DIR__ . '/../..' . '/src/Rules/Classes/ClassConstantRule.php', 'PHPStan\\Rules\\Classes\\DuplicateClassDeclarationRule' => __DIR__ . '/../..' . '/src/Rules/Classes/DuplicateClassDeclarationRule.php', 'PHPStan\\Rules\\Classes\\DuplicateDeclarationRule' => __DIR__ . '/../..' . '/src/Rules/Classes/DuplicateDeclarationRule.php', 'PHPStan\\Rules\\Classes\\EnumSanityRule' => __DIR__ . '/../..' . '/src/Rules/Classes/EnumSanityRule.php', 'PHPStan\\Rules\\Classes\\ExistingClassInClassExtendsRule' => __DIR__ . '/../..' . '/src/Rules/Classes/ExistingClassInClassExtendsRule.php', 'PHPStan\\Rules\\Classes\\ExistingClassInInstanceOfRule' => __DIR__ . '/../..' . '/src/Rules/Classes/ExistingClassInInstanceOfRule.php', 'PHPStan\\Rules\\Classes\\ExistingClassInTraitUseRule' => __DIR__ . '/../..' . '/src/Rules/Classes/ExistingClassInTraitUseRule.php', 'PHPStan\\Rules\\Classes\\ExistingClassesInClassImplementsRule' => __DIR__ . '/../..' . '/src/Rules/Classes/ExistingClassesInClassImplementsRule.php', 'PHPStan\\Rules\\Classes\\ExistingClassesInEnumImplementsRule' => __DIR__ . '/../..' . '/src/Rules/Classes/ExistingClassesInEnumImplementsRule.php', 'PHPStan\\Rules\\Classes\\ExistingClassesInInterfaceExtendsRule' => __DIR__ . '/../..' . '/src/Rules/Classes/ExistingClassesInInterfaceExtendsRule.php', 'PHPStan\\Rules\\Classes\\ImpossibleInstanceOfRule' => __DIR__ . '/../..' . '/src/Rules/Classes/ImpossibleInstanceOfRule.php', 'PHPStan\\Rules\\Classes\\InstantiationCallableRule' => __DIR__ . '/../..' . '/src/Rules/Classes/InstantiationCallableRule.php', 'PHPStan\\Rules\\Classes\\InstantiationRule' => __DIR__ . '/../..' . '/src/Rules/Classes/InstantiationRule.php', 'PHPStan\\Rules\\Classes\\InvalidPromotedPropertiesRule' => __DIR__ . '/../..' . '/src/Rules/Classes/InvalidPromotedPropertiesRule.php', 'PHPStan\\Rules\\Classes\\LocalTypeAliasesCheck' => __DIR__ . '/../..' . '/src/Rules/Classes/LocalTypeAliasesCheck.php', 'PHPStan\\Rules\\Classes\\LocalTypeAliasesRule' => __DIR__ . '/../..' . '/src/Rules/Classes/LocalTypeAliasesRule.php', 'PHPStan\\Rules\\Classes\\LocalTypeTraitAliasesRule' => __DIR__ . '/../..' . '/src/Rules/Classes/LocalTypeTraitAliasesRule.php', 'PHPStan\\Rules\\Classes\\LocalTypeTraitUseAliasesRule' => __DIR__ . '/../..' . '/src/Rules/Classes/LocalTypeTraitUseAliasesRule.php', 'PHPStan\\Rules\\Classes\\MethodTagCheck' => __DIR__ . '/../..' . '/src/Rules/Classes/MethodTagCheck.php', 'PHPStan\\Rules\\Classes\\MethodTagRule' => __DIR__ . '/../..' . '/src/Rules/Classes/MethodTagRule.php', 'PHPStan\\Rules\\Classes\\MethodTagTraitRule' => __DIR__ . '/../..' . '/src/Rules/Classes/MethodTagTraitRule.php', 'PHPStan\\Rules\\Classes\\MethodTagTraitUseRule' => __DIR__ . '/../..' . '/src/Rules/Classes/MethodTagTraitUseRule.php', 'PHPStan\\Rules\\Classes\\MixinCheck' => __DIR__ . '/../..' . '/src/Rules/Classes/MixinCheck.php', 'PHPStan\\Rules\\Classes\\MixinRule' => __DIR__ . '/../..' . '/src/Rules/Classes/MixinRule.php', 'PHPStan\\Rules\\Classes\\MixinTraitRule' => __DIR__ . '/../..' . '/src/Rules/Classes/MixinTraitRule.php', 'PHPStan\\Rules\\Classes\\MixinTraitUseRule' => __DIR__ . '/../..' . '/src/Rules/Classes/MixinTraitUseRule.php', 'PHPStan\\Rules\\Classes\\NewStaticRule' => __DIR__ . '/../..' . '/src/Rules/Classes/NewStaticRule.php', 'PHPStan\\Rules\\Classes\\NonClassAttributeClassRule' => __DIR__ . '/../..' . '/src/Rules/Classes/NonClassAttributeClassRule.php', 'PHPStan\\Rules\\Classes\\PropertyTagCheck' => __DIR__ . '/../..' . '/src/Rules/Classes/PropertyTagCheck.php', 'PHPStan\\Rules\\Classes\\PropertyTagRule' => __DIR__ . '/../..' . '/src/Rules/Classes/PropertyTagRule.php', 'PHPStan\\Rules\\Classes\\PropertyTagTraitRule' => __DIR__ . '/../..' . '/src/Rules/Classes/PropertyTagTraitRule.php', 'PHPStan\\Rules\\Classes\\PropertyTagTraitUseRule' => __DIR__ . '/../..' . '/src/Rules/Classes/PropertyTagTraitUseRule.php', 'PHPStan\\Rules\\Classes\\ReadOnlyClassRule' => __DIR__ . '/../..' . '/src/Rules/Classes/ReadOnlyClassRule.php', 'PHPStan\\Rules\\Classes\\RequireExtendsRule' => __DIR__ . '/../..' . '/src/Rules/Classes/RequireExtendsRule.php', 'PHPStan\\Rules\\Classes\\RequireImplementsRule' => __DIR__ . '/../..' . '/src/Rules/Classes/RequireImplementsRule.php', 'PHPStan\\Rules\\Classes\\TraitAttributeClassRule' => __DIR__ . '/../..' . '/src/Rules/Classes/TraitAttributeClassRule.php', 'PHPStan\\Rules\\Classes\\UnusedConstructorParametersRule' => __DIR__ . '/../..' . '/src/Rules/Classes/UnusedConstructorParametersRule.php', 'PHPStan\\Rules\\Comparison\\BooleanAndConstantConditionRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/BooleanAndConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\BooleanNotConstantConditionRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/BooleanNotConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\BooleanOrConstantConditionRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/BooleanOrConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\ConstantConditionRuleHelper' => __DIR__ . '/../..' . '/src/Rules/Comparison/ConstantConditionRuleHelper.php', 'PHPStan\\Rules\\Comparison\\ConstantLooseComparisonRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/ConstantLooseComparisonRule.php', 'PHPStan\\Rules\\Comparison\\DoWhileLoopConstantConditionRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/DoWhileLoopConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\ElseIfConstantConditionRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/ElseIfConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\IfConstantConditionRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/IfConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\ImpossibleCheckTypeFunctionCallRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/ImpossibleCheckTypeFunctionCallRule.php', 'PHPStan\\Rules\\Comparison\\ImpossibleCheckTypeHelper' => __DIR__ . '/../..' . '/src/Rules/Comparison/ImpossibleCheckTypeHelper.php', 'PHPStan\\Rules\\Comparison\\ImpossibleCheckTypeMethodCallRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/ImpossibleCheckTypeMethodCallRule.php', 'PHPStan\\Rules\\Comparison\\ImpossibleCheckTypeStaticMethodCallRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/ImpossibleCheckTypeStaticMethodCallRule.php', 'PHPStan\\Rules\\Comparison\\LogicalXorConstantConditionRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/LogicalXorConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\MatchExpressionRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/MatchExpressionRule.php', 'PHPStan\\Rules\\Comparison\\NumberComparisonOperatorsConstantConditionRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/NumberComparisonOperatorsConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\StrictComparisonOfDifferentTypesRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/StrictComparisonOfDifferentTypesRule.php', 'PHPStan\\Rules\\Comparison\\TernaryOperatorConstantConditionRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/TernaryOperatorConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\UnreachableIfBranchesRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/UnreachableIfBranchesRule.php', 'PHPStan\\Rules\\Comparison\\UnreachableTernaryElseBranchRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/UnreachableTernaryElseBranchRule.php', 'PHPStan\\Rules\\Comparison\\UsageOfVoidMatchExpressionRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/UsageOfVoidMatchExpressionRule.php', 'PHPStan\\Rules\\Comparison\\WhileLoopAlwaysFalseConditionRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/WhileLoopAlwaysFalseConditionRule.php', 'PHPStan\\Rules\\Comparison\\WhileLoopAlwaysTrueConditionRule' => __DIR__ . '/../..' . '/src/Rules/Comparison/WhileLoopAlwaysTrueConditionRule.php', 'PHPStan\\Rules\\Constants\\AlwaysUsedClassConstantsExtension' => __DIR__ . '/../..' . '/src/Rules/Constants/AlwaysUsedClassConstantsExtension.php', 'PHPStan\\Rules\\Constants\\AlwaysUsedClassConstantsExtensionProvider' => __DIR__ . '/../..' . '/src/Rules/Constants/AlwaysUsedClassConstantsExtensionProvider.php', 'PHPStan\\Rules\\Constants\\ClassAsClassConstantRule' => __DIR__ . '/../..' . '/src/Rules/Constants/ClassAsClassConstantRule.php', 'PHPStan\\Rules\\Constants\\ConstantRule' => __DIR__ . '/../..' . '/src/Rules/Constants/ConstantRule.php', 'PHPStan\\Rules\\Constants\\DynamicClassConstantFetchRule' => __DIR__ . '/../..' . '/src/Rules/Constants/DynamicClassConstantFetchRule.php', 'PHPStan\\Rules\\Constants\\FinalConstantRule' => __DIR__ . '/../..' . '/src/Rules/Constants/FinalConstantRule.php', 'PHPStan\\Rules\\Constants\\LazyAlwaysUsedClassConstantsExtensionProvider' => __DIR__ . '/../..' . '/src/Rules/Constants/LazyAlwaysUsedClassConstantsExtensionProvider.php', 'PHPStan\\Rules\\Constants\\MagicConstantContextRule' => __DIR__ . '/../..' . '/src/Rules/Constants/MagicConstantContextRule.php', 'PHPStan\\Rules\\Constants\\MissingClassConstantTypehintRule' => __DIR__ . '/../..' . '/src/Rules/Constants/MissingClassConstantTypehintRule.php', 'PHPStan\\Rules\\Constants\\NativeTypedClassConstantRule' => __DIR__ . '/../..' . '/src/Rules/Constants/NativeTypedClassConstantRule.php', 'PHPStan\\Rules\\Constants\\OverridingConstantRule' => __DIR__ . '/../..' . '/src/Rules/Constants/OverridingConstantRule.php', 'PHPStan\\Rules\\Constants\\ValueAssignedToClassConstantRule' => __DIR__ . '/../..' . '/src/Rules/Constants/ValueAssignedToClassConstantRule.php', 'PHPStan\\Rules\\DateTimeInstantiationRule' => __DIR__ . '/../..' . '/src/Rules/DateTimeInstantiationRule.php', 'PHPStan\\Rules\\DeadCode\\BetterNoopRule' => __DIR__ . '/../..' . '/src/Rules/DeadCode/BetterNoopRule.php', 'PHPStan\\Rules\\DeadCode\\CallToConstructorStatementWithoutImpurePointsRule' => __DIR__ . '/../..' . '/src/Rules/DeadCode/CallToConstructorStatementWithoutImpurePointsRule.php', 'PHPStan\\Rules\\DeadCode\\CallToFunctionStatementWithoutImpurePointsRule' => __DIR__ . '/../..' . '/src/Rules/DeadCode/CallToFunctionStatementWithoutImpurePointsRule.php', 'PHPStan\\Rules\\DeadCode\\CallToMethodStatementWithoutImpurePointsRule' => __DIR__ . '/../..' . '/src/Rules/DeadCode/CallToMethodStatementWithoutImpurePointsRule.php', 'PHPStan\\Rules\\DeadCode\\CallToStaticMethodStatementWithoutImpurePointsRule' => __DIR__ . '/../..' . '/src/Rules/DeadCode/CallToStaticMethodStatementWithoutImpurePointsRule.php', 'PHPStan\\Rules\\DeadCode\\ConstructorWithoutImpurePointsCollector' => __DIR__ . '/../..' . '/src/Rules/DeadCode/ConstructorWithoutImpurePointsCollector.php', 'PHPStan\\Rules\\DeadCode\\FunctionWithoutImpurePointsCollector' => __DIR__ . '/../..' . '/src/Rules/DeadCode/FunctionWithoutImpurePointsCollector.php', 'PHPStan\\Rules\\DeadCode\\MethodWithoutImpurePointsCollector' => __DIR__ . '/../..' . '/src/Rules/DeadCode/MethodWithoutImpurePointsCollector.php', 'PHPStan\\Rules\\DeadCode\\NoopRule' => __DIR__ . '/../..' . '/src/Rules/DeadCode/NoopRule.php', 'PHPStan\\Rules\\DeadCode\\PossiblyPureFuncCallCollector' => __DIR__ . '/../..' . '/src/Rules/DeadCode/PossiblyPureFuncCallCollector.php', 'PHPStan\\Rules\\DeadCode\\PossiblyPureMethodCallCollector' => __DIR__ . '/../..' . '/src/Rules/DeadCode/PossiblyPureMethodCallCollector.php', 'PHPStan\\Rules\\DeadCode\\PossiblyPureNewCollector' => __DIR__ . '/../..' . '/src/Rules/DeadCode/PossiblyPureNewCollector.php', 'PHPStan\\Rules\\DeadCode\\PossiblyPureStaticCallCollector' => __DIR__ . '/../..' . '/src/Rules/DeadCode/PossiblyPureStaticCallCollector.php', 'PHPStan\\Rules\\DeadCode\\UnreachableStatementRule' => __DIR__ . '/../..' . '/src/Rules/DeadCode/UnreachableStatementRule.php', 'PHPStan\\Rules\\DeadCode\\UnusedPrivateConstantRule' => __DIR__ . '/../..' . '/src/Rules/DeadCode/UnusedPrivateConstantRule.php', 'PHPStan\\Rules\\DeadCode\\UnusedPrivateMethodRule' => __DIR__ . '/../..' . '/src/Rules/DeadCode/UnusedPrivateMethodRule.php', 'PHPStan\\Rules\\DeadCode\\UnusedPrivatePropertyRule' => __DIR__ . '/../..' . '/src/Rules/DeadCode/UnusedPrivatePropertyRule.php', 'PHPStan\\Rules\\Debug\\DebugScopeRule' => __DIR__ . '/../..' . '/src/Rules/Debug/DebugScopeRule.php', 'PHPStan\\Rules\\Debug\\DumpPhpDocTypeRule' => __DIR__ . '/../..' . '/src/Rules/Debug/DumpPhpDocTypeRule.php', 'PHPStan\\Rules\\Debug\\DumpTypeRule' => __DIR__ . '/../..' . '/src/Rules/Debug/DumpTypeRule.php', 'PHPStan\\Rules\\Debug\\FileAssertRule' => __DIR__ . '/../..' . '/src/Rules/Debug/FileAssertRule.php', 'PHPStan\\Rules\\DirectRegistry' => __DIR__ . '/../..' . '/src/Rules/DirectRegistry.php', 'PHPStan\\Rules\\EnumCases\\EnumCaseAttributesRule' => __DIR__ . '/../..' . '/src/Rules/EnumCases/EnumCaseAttributesRule.php', 'PHPStan\\Rules\\Exceptions\\CatchWithUnthrownExceptionRule' => __DIR__ . '/../..' . '/src/Rules/Exceptions/CatchWithUnthrownExceptionRule.php', 'PHPStan\\Rules\\Exceptions\\CaughtExceptionExistenceRule' => __DIR__ . '/../..' . '/src/Rules/Exceptions/CaughtExceptionExistenceRule.php', 'PHPStan\\Rules\\Exceptions\\DefaultExceptionTypeResolver' => __DIR__ . '/../..' . '/src/Rules/Exceptions/DefaultExceptionTypeResolver.php', 'PHPStan\\Rules\\Exceptions\\ExceptionTypeResolver' => __DIR__ . '/../..' . '/src/Rules/Exceptions/ExceptionTypeResolver.php', 'PHPStan\\Rules\\Exceptions\\MissingCheckedExceptionInFunctionThrowsRule' => __DIR__ . '/../..' . '/src/Rules/Exceptions/MissingCheckedExceptionInFunctionThrowsRule.php', 'PHPStan\\Rules\\Exceptions\\MissingCheckedExceptionInMethodThrowsRule' => __DIR__ . '/../..' . '/src/Rules/Exceptions/MissingCheckedExceptionInMethodThrowsRule.php', 'PHPStan\\Rules\\Exceptions\\MissingCheckedExceptionInThrowsCheck' => __DIR__ . '/../..' . '/src/Rules/Exceptions/MissingCheckedExceptionInThrowsCheck.php', 'PHPStan\\Rules\\Exceptions\\NoncapturingCatchRule' => __DIR__ . '/../..' . '/src/Rules/Exceptions/NoncapturingCatchRule.php', 'PHPStan\\Rules\\Exceptions\\OverwrittenExitPointByFinallyRule' => __DIR__ . '/../..' . '/src/Rules/Exceptions/OverwrittenExitPointByFinallyRule.php', 'PHPStan\\Rules\\Exceptions\\ThrowExprTypeRule' => __DIR__ . '/../..' . '/src/Rules/Exceptions/ThrowExprTypeRule.php', 'PHPStan\\Rules\\Exceptions\\ThrowExpressionRule' => __DIR__ . '/../..' . '/src/Rules/Exceptions/ThrowExpressionRule.php', 'PHPStan\\Rules\\Exceptions\\ThrowsVoidFunctionWithExplicitThrowPointRule' => __DIR__ . '/../..' . '/src/Rules/Exceptions/ThrowsVoidFunctionWithExplicitThrowPointRule.php', 'PHPStan\\Rules\\Exceptions\\ThrowsVoidMethodWithExplicitThrowPointRule' => __DIR__ . '/../..' . '/src/Rules/Exceptions/ThrowsVoidMethodWithExplicitThrowPointRule.php', 'PHPStan\\Rules\\Exceptions\\TooWideFunctionThrowTypeRule' => __DIR__ . '/../..' . '/src/Rules/Exceptions/TooWideFunctionThrowTypeRule.php', 'PHPStan\\Rules\\Exceptions\\TooWideMethodThrowTypeRule' => __DIR__ . '/../..' . '/src/Rules/Exceptions/TooWideMethodThrowTypeRule.php', 'PHPStan\\Rules\\Exceptions\\TooWideThrowTypeCheck' => __DIR__ . '/../..' . '/src/Rules/Exceptions/TooWideThrowTypeCheck.php', 'PHPStan\\Rules\\FileRuleError' => __DIR__ . '/../..' . '/src/Rules/FileRuleError.php', 'PHPStan\\Rules\\FoundTypeResult' => __DIR__ . '/../..' . '/src/Rules/FoundTypeResult.php', 'PHPStan\\Rules\\FunctionCallParametersCheck' => __DIR__ . '/../..' . '/src/Rules/FunctionCallParametersCheck.php', 'PHPStan\\Rules\\FunctionDefinitionCheck' => __DIR__ . '/../..' . '/src/Rules/FunctionDefinitionCheck.php', 'PHPStan\\Rules\\FunctionReturnTypeCheck' => __DIR__ . '/../..' . '/src/Rules/FunctionReturnTypeCheck.php', 'PHPStan\\Rules\\Functions\\ArrayFilterRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ArrayFilterRule.php', 'PHPStan\\Rules\\Functions\\ArrayValuesRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ArrayValuesRule.php', 'PHPStan\\Rules\\Functions\\ArrowFunctionAttributesRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ArrowFunctionAttributesRule.php', 'PHPStan\\Rules\\Functions\\ArrowFunctionReturnNullsafeByRefRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ArrowFunctionReturnNullsafeByRefRule.php', 'PHPStan\\Rules\\Functions\\ArrowFunctionReturnTypeRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ArrowFunctionReturnTypeRule.php', 'PHPStan\\Rules\\Functions\\CallCallablesRule' => __DIR__ . '/../..' . '/src/Rules/Functions/CallCallablesRule.php', 'PHPStan\\Rules\\Functions\\CallToFunctionParametersRule' => __DIR__ . '/../..' . '/src/Rules/Functions/CallToFunctionParametersRule.php', 'PHPStan\\Rules\\Functions\\CallToFunctionStatementWithoutSideEffectsRule' => __DIR__ . '/../..' . '/src/Rules/Functions/CallToFunctionStatementWithoutSideEffectsRule.php', 'PHPStan\\Rules\\Functions\\CallToNonExistentFunctionRule' => __DIR__ . '/../..' . '/src/Rules/Functions/CallToNonExistentFunctionRule.php', 'PHPStan\\Rules\\Functions\\CallUserFuncRule' => __DIR__ . '/../..' . '/src/Rules/Functions/CallUserFuncRule.php', 'PHPStan\\Rules\\Functions\\ClosureAttributesRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ClosureAttributesRule.php', 'PHPStan\\Rules\\Functions\\ClosureReturnTypeRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ClosureReturnTypeRule.php', 'PHPStan\\Rules\\Functions\\DefineParametersRule' => __DIR__ . '/../..' . '/src/Rules/Functions/DefineParametersRule.php', 'PHPStan\\Rules\\Functions\\DuplicateFunctionDeclarationRule' => __DIR__ . '/../..' . '/src/Rules/Functions/DuplicateFunctionDeclarationRule.php', 'PHPStan\\Rules\\Functions\\ExistingClassesInArrowFunctionTypehintsRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ExistingClassesInArrowFunctionTypehintsRule.php', 'PHPStan\\Rules\\Functions\\ExistingClassesInClosureTypehintsRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ExistingClassesInClosureTypehintsRule.php', 'PHPStan\\Rules\\Functions\\ExistingClassesInTypehintsRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ExistingClassesInTypehintsRule.php', 'PHPStan\\Rules\\Functions\\FunctionAttributesRule' => __DIR__ . '/../..' . '/src/Rules/Functions/FunctionAttributesRule.php', 'PHPStan\\Rules\\Functions\\FunctionCallableRule' => __DIR__ . '/../..' . '/src/Rules/Functions/FunctionCallableRule.php', 'PHPStan\\Rules\\Functions\\ImplodeFunctionRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ImplodeFunctionRule.php', 'PHPStan\\Rules\\Functions\\ImplodeParameterCastableToStringRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ImplodeParameterCastableToStringRule.php', 'PHPStan\\Rules\\Functions\\IncompatibleArrowFunctionDefaultParameterTypeRule' => __DIR__ . '/../..' . '/src/Rules/Functions/IncompatibleArrowFunctionDefaultParameterTypeRule.php', 'PHPStan\\Rules\\Functions\\IncompatibleClosureDefaultParameterTypeRule' => __DIR__ . '/../..' . '/src/Rules/Functions/IncompatibleClosureDefaultParameterTypeRule.php', 'PHPStan\\Rules\\Functions\\IncompatibleDefaultParameterTypeRule' => __DIR__ . '/../..' . '/src/Rules/Functions/IncompatibleDefaultParameterTypeRule.php', 'PHPStan\\Rules\\Functions\\InnerFunctionRule' => __DIR__ . '/../..' . '/src/Rules/Functions/InnerFunctionRule.php', 'PHPStan\\Rules\\Functions\\InvalidLexicalVariablesInClosureUseRule' => __DIR__ . '/../..' . '/src/Rules/Functions/InvalidLexicalVariablesInClosureUseRule.php', 'PHPStan\\Rules\\Functions\\MissingFunctionParameterTypehintRule' => __DIR__ . '/../..' . '/src/Rules/Functions/MissingFunctionParameterTypehintRule.php', 'PHPStan\\Rules\\Functions\\MissingFunctionReturnTypehintRule' => __DIR__ . '/../..' . '/src/Rules/Functions/MissingFunctionReturnTypehintRule.php', 'PHPStan\\Rules\\Functions\\ParamAttributesRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ParamAttributesRule.php', 'PHPStan\\Rules\\Functions\\ParameterCastableToStringRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ParameterCastableToStringRule.php', 'PHPStan\\Rules\\Functions\\PrintfArrayParametersRule' => __DIR__ . '/../..' . '/src/Rules/Functions/PrintfArrayParametersRule.php', 'PHPStan\\Rules\\Functions\\PrintfHelper' => __DIR__ . '/../..' . '/src/Rules/Functions/PrintfHelper.php', 'PHPStan\\Rules\\Functions\\PrintfParametersRule' => __DIR__ . '/../..' . '/src/Rules/Functions/PrintfParametersRule.php', 'PHPStan\\Rules\\Functions\\RandomIntParametersRule' => __DIR__ . '/../..' . '/src/Rules/Functions/RandomIntParametersRule.php', 'PHPStan\\Rules\\Functions\\RedefinedParametersRule' => __DIR__ . '/../..' . '/src/Rules/Functions/RedefinedParametersRule.php', 'PHPStan\\Rules\\Functions\\ReturnNullsafeByRefRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ReturnNullsafeByRefRule.php', 'PHPStan\\Rules\\Functions\\ReturnTypeRule' => __DIR__ . '/../..' . '/src/Rules/Functions/ReturnTypeRule.php', 'PHPStan\\Rules\\Functions\\SortParameterCastableToStringRule' => __DIR__ . '/../..' . '/src/Rules/Functions/SortParameterCastableToStringRule.php', 'PHPStan\\Rules\\Functions\\UnusedClosureUsesRule' => __DIR__ . '/../..' . '/src/Rules/Functions/UnusedClosureUsesRule.php', 'PHPStan\\Rules\\Functions\\UselessFunctionReturnValueRule' => __DIR__ . '/../..' . '/src/Rules/Functions/UselessFunctionReturnValueRule.php', 'PHPStan\\Rules\\Functions\\VariadicParametersDeclarationRule' => __DIR__ . '/../..' . '/src/Rules/Functions/VariadicParametersDeclarationRule.php', 'PHPStan\\Rules\\Generators\\YieldFromTypeRule' => __DIR__ . '/../..' . '/src/Rules/Generators/YieldFromTypeRule.php', 'PHPStan\\Rules\\Generators\\YieldInGeneratorRule' => __DIR__ . '/../..' . '/src/Rules/Generators/YieldInGeneratorRule.php', 'PHPStan\\Rules\\Generators\\YieldTypeRule' => __DIR__ . '/../..' . '/src/Rules/Generators/YieldTypeRule.php', 'PHPStan\\Rules\\Generics\\ClassAncestorsRule' => __DIR__ . '/../..' . '/src/Rules/Generics/ClassAncestorsRule.php', 'PHPStan\\Rules\\Generics\\ClassTemplateTypeRule' => __DIR__ . '/../..' . '/src/Rules/Generics/ClassTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\CrossCheckInterfacesHelper' => __DIR__ . '/../..' . '/src/Rules/Generics/CrossCheckInterfacesHelper.php', 'PHPStan\\Rules\\Generics\\EnumAncestorsRule' => __DIR__ . '/../..' . '/src/Rules/Generics/EnumAncestorsRule.php', 'PHPStan\\Rules\\Generics\\EnumTemplateTypeRule' => __DIR__ . '/../..' . '/src/Rules/Generics/EnumTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\FunctionSignatureVarianceRule' => __DIR__ . '/../..' . '/src/Rules/Generics/FunctionSignatureVarianceRule.php', 'PHPStan\\Rules\\Generics\\FunctionTemplateTypeRule' => __DIR__ . '/../..' . '/src/Rules/Generics/FunctionTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\GenericAncestorsCheck' => __DIR__ . '/../..' . '/src/Rules/Generics/GenericAncestorsCheck.php', 'PHPStan\\Rules\\Generics\\GenericObjectTypeCheck' => __DIR__ . '/../..' . '/src/Rules/Generics/GenericObjectTypeCheck.php', 'PHPStan\\Rules\\Generics\\InterfaceAncestorsRule' => __DIR__ . '/../..' . '/src/Rules/Generics/InterfaceAncestorsRule.php', 'PHPStan\\Rules\\Generics\\InterfaceTemplateTypeRule' => __DIR__ . '/../..' . '/src/Rules/Generics/InterfaceTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\MethodSignatureVarianceRule' => __DIR__ . '/../..' . '/src/Rules/Generics/MethodSignatureVarianceRule.php', 'PHPStan\\Rules\\Generics\\MethodTagTemplateTypeCheck' => __DIR__ . '/../..' . '/src/Rules/Generics/MethodTagTemplateTypeCheck.php', 'PHPStan\\Rules\\Generics\\MethodTagTemplateTypeRule' => __DIR__ . '/../..' . '/src/Rules/Generics/MethodTagTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\MethodTagTemplateTypeTraitRule' => __DIR__ . '/../..' . '/src/Rules/Generics/MethodTagTemplateTypeTraitRule.php', 'PHPStan\\Rules\\Generics\\MethodTemplateTypeRule' => __DIR__ . '/../..' . '/src/Rules/Generics/MethodTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\PropertyVarianceRule' => __DIR__ . '/../..' . '/src/Rules/Generics/PropertyVarianceRule.php', 'PHPStan\\Rules\\Generics\\TemplateTypeCheck' => __DIR__ . '/../..' . '/src/Rules/Generics/TemplateTypeCheck.php', 'PHPStan\\Rules\\Generics\\TraitTemplateTypeRule' => __DIR__ . '/../..' . '/src/Rules/Generics/TraitTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\UsedTraitsRule' => __DIR__ . '/../..' . '/src/Rules/Generics/UsedTraitsRule.php', 'PHPStan\\Rules\\Generics\\VarianceCheck' => __DIR__ . '/../..' . '/src/Rules/Generics/VarianceCheck.php', 'PHPStan\\Rules\\IdentifierRuleError' => __DIR__ . '/../..' . '/src/Rules/IdentifierRuleError.php', 'PHPStan\\Rules\\Ignore\\IgnoreParseErrorRule' => __DIR__ . '/../..' . '/src/Rules/Ignore/IgnoreParseErrorRule.php', 'PHPStan\\Rules\\IssetCheck' => __DIR__ . '/../..' . '/src/Rules/IssetCheck.php', 'PHPStan\\Rules\\Keywords\\ContinueBreakInLoopRule' => __DIR__ . '/../..' . '/src/Rules/Keywords/ContinueBreakInLoopRule.php', 'PHPStan\\Rules\\Keywords\\DeclareStrictTypesRule' => __DIR__ . '/../..' . '/src/Rules/Keywords/DeclareStrictTypesRule.php', 'PHPStan\\Rules\\Keywords\\RequireFileExistsRule' => __DIR__ . '/../..' . '/src/Rules/Keywords/RequireFileExistsRule.php', 'PHPStan\\Rules\\LazyRegistry' => __DIR__ . '/../..' . '/src/Rules/LazyRegistry.php', 'PHPStan\\Rules\\LineRuleError' => __DIR__ . '/../..' . '/src/Rules/LineRuleError.php', 'PHPStan\\Rules\\MetadataRuleError' => __DIR__ . '/../..' . '/src/Rules/MetadataRuleError.php', 'PHPStan\\Rules\\Methods\\AbstractMethodInNonAbstractClassRule' => __DIR__ . '/../..' . '/src/Rules/Methods/AbstractMethodInNonAbstractClassRule.php', 'PHPStan\\Rules\\Methods\\AbstractPrivateMethodRule' => __DIR__ . '/../..' . '/src/Rules/Methods/AbstractPrivateMethodRule.php', 'PHPStan\\Rules\\Methods\\AlwaysUsedMethodExtension' => __DIR__ . '/../..' . '/src/Rules/Methods/AlwaysUsedMethodExtension.php', 'PHPStan\\Rules\\Methods\\AlwaysUsedMethodExtensionProvider' => __DIR__ . '/../..' . '/src/Rules/Methods/AlwaysUsedMethodExtensionProvider.php', 'PHPStan\\Rules\\Methods\\CallMethodsRule' => __DIR__ . '/../..' . '/src/Rules/Methods/CallMethodsRule.php', 'PHPStan\\Rules\\Methods\\CallPrivateMethodThroughStaticRule' => __DIR__ . '/../..' . '/src/Rules/Methods/CallPrivateMethodThroughStaticRule.php', 'PHPStan\\Rules\\Methods\\CallStaticMethodsRule' => __DIR__ . '/../..' . '/src/Rules/Methods/CallStaticMethodsRule.php', 'PHPStan\\Rules\\Methods\\CallToConstructorStatementWithoutSideEffectsRule' => __DIR__ . '/../..' . '/src/Rules/Methods/CallToConstructorStatementWithoutSideEffectsRule.php', 'PHPStan\\Rules\\Methods\\CallToMethodStatementWithoutSideEffectsRule' => __DIR__ . '/../..' . '/src/Rules/Methods/CallToMethodStatementWithoutSideEffectsRule.php', 'PHPStan\\Rules\\Methods\\CallToStaticMethodStatementWithoutSideEffectsRule' => __DIR__ . '/../..' . '/src/Rules/Methods/CallToStaticMethodStatementWithoutSideEffectsRule.php', 'PHPStan\\Rules\\Methods\\ConsistentConstructorRule' => __DIR__ . '/../..' . '/src/Rules/Methods/ConsistentConstructorRule.php', 'PHPStan\\Rules\\Methods\\ConstructorReturnTypeRule' => __DIR__ . '/../..' . '/src/Rules/Methods/ConstructorReturnTypeRule.php', 'PHPStan\\Rules\\Methods\\DirectAlwaysUsedMethodExtensionProvider' => __DIR__ . '/../..' . '/src/Rules/Methods/DirectAlwaysUsedMethodExtensionProvider.php', 'PHPStan\\Rules\\Methods\\ExistingClassesInTypehintsRule' => __DIR__ . '/../..' . '/src/Rules/Methods/ExistingClassesInTypehintsRule.php', 'PHPStan\\Rules\\Methods\\FinalPrivateMethodRule' => __DIR__ . '/../..' . '/src/Rules/Methods/FinalPrivateMethodRule.php', 'PHPStan\\Rules\\Methods\\IllegalConstructorMethodCallRule' => __DIR__ . '/../..' . '/src/Rules/Methods/IllegalConstructorMethodCallRule.php', 'PHPStan\\Rules\\Methods\\IllegalConstructorStaticCallRule' => __DIR__ . '/../..' . '/src/Rules/Methods/IllegalConstructorStaticCallRule.php', 'PHPStan\\Rules\\Methods\\IncompatibleDefaultParameterTypeRule' => __DIR__ . '/../..' . '/src/Rules/Methods/IncompatibleDefaultParameterTypeRule.php', 'PHPStan\\Rules\\Methods\\LazyAlwaysUsedMethodExtensionProvider' => __DIR__ . '/../..' . '/src/Rules/Methods/LazyAlwaysUsedMethodExtensionProvider.php', 'PHPStan\\Rules\\Methods\\MethodAttributesRule' => __DIR__ . '/../..' . '/src/Rules/Methods/MethodAttributesRule.php', 'PHPStan\\Rules\\Methods\\MethodCallCheck' => __DIR__ . '/../..' . '/src/Rules/Methods/MethodCallCheck.php', 'PHPStan\\Rules\\Methods\\MethodCallableRule' => __DIR__ . '/../..' . '/src/Rules/Methods/MethodCallableRule.php', 'PHPStan\\Rules\\Methods\\MethodParameterComparisonHelper' => __DIR__ . '/../..' . '/src/Rules/Methods/MethodParameterComparisonHelper.php', 'PHPStan\\Rules\\Methods\\MethodSignatureRule' => __DIR__ . '/../..' . '/src/Rules/Methods/MethodSignatureRule.php', 'PHPStan\\Rules\\Methods\\MethodVisibilityInInterfaceRule' => __DIR__ . '/../..' . '/src/Rules/Methods/MethodVisibilityInInterfaceRule.php', 'PHPStan\\Rules\\Methods\\MissingMagicSerializationMethodsRule' => __DIR__ . '/../..' . '/src/Rules/Methods/MissingMagicSerializationMethodsRule.php', 'PHPStan\\Rules\\Methods\\MissingMethodImplementationRule' => __DIR__ . '/../..' . '/src/Rules/Methods/MissingMethodImplementationRule.php', 'PHPStan\\Rules\\Methods\\MissingMethodParameterTypehintRule' => __DIR__ . '/../..' . '/src/Rules/Methods/MissingMethodParameterTypehintRule.php', 'PHPStan\\Rules\\Methods\\MissingMethodReturnTypehintRule' => __DIR__ . '/../..' . '/src/Rules/Methods/MissingMethodReturnTypehintRule.php', 'PHPStan\\Rules\\Methods\\MissingMethodSelfOutTypeRule' => __DIR__ . '/../..' . '/src/Rules/Methods/MissingMethodSelfOutTypeRule.php', 'PHPStan\\Rules\\Methods\\NullsafeMethodCallRule' => __DIR__ . '/../..' . '/src/Rules/Methods/NullsafeMethodCallRule.php', 'PHPStan\\Rules\\Methods\\OverridingMethodRule' => __DIR__ . '/../..' . '/src/Rules/Methods/OverridingMethodRule.php', 'PHPStan\\Rules\\Methods\\ReturnTypeRule' => __DIR__ . '/../..' . '/src/Rules/Methods/ReturnTypeRule.php', 'PHPStan\\Rules\\Methods\\StaticMethodCallCheck' => __DIR__ . '/../..' . '/src/Rules/Methods/StaticMethodCallCheck.php', 'PHPStan\\Rules\\Methods\\StaticMethodCallableRule' => __DIR__ . '/../..' . '/src/Rules/Methods/StaticMethodCallableRule.php', 'PHPStan\\Rules\\MissingTypehintCheck' => __DIR__ . '/../..' . '/src/Rules/MissingTypehintCheck.php', 'PHPStan\\Rules\\Missing\\MissingReturnRule' => __DIR__ . '/../..' . '/src/Rules/Missing/MissingReturnRule.php', 'PHPStan\\Rules\\Names\\UsedNamesRule' => __DIR__ . '/../..' . '/src/Rules/Names/UsedNamesRule.php', 'PHPStan\\Rules\\Namespaces\\ExistingNamesInGroupUseRule' => __DIR__ . '/../..' . '/src/Rules/Namespaces/ExistingNamesInGroupUseRule.php', 'PHPStan\\Rules\\Namespaces\\ExistingNamesInUseRule' => __DIR__ . '/../..' . '/src/Rules/Namespaces/ExistingNamesInUseRule.php', 'PHPStan\\Rules\\NonIgnorableRuleError' => __DIR__ . '/../..' . '/src/Rules/NonIgnorableRuleError.php', 'PHPStan\\Rules\\NullsafeCheck' => __DIR__ . '/../..' . '/src/Rules/NullsafeCheck.php', 'PHPStan\\Rules\\Operators\\InvalidAssignVarRule' => __DIR__ . '/../..' . '/src/Rules/Operators/InvalidAssignVarRule.php', 'PHPStan\\Rules\\Operators\\InvalidBinaryOperationRule' => __DIR__ . '/../..' . '/src/Rules/Operators/InvalidBinaryOperationRule.php', 'PHPStan\\Rules\\Operators\\InvalidComparisonOperationRule' => __DIR__ . '/../..' . '/src/Rules/Operators/InvalidComparisonOperationRule.php', 'PHPStan\\Rules\\Operators\\InvalidIncDecOperationRule' => __DIR__ . '/../..' . '/src/Rules/Operators/InvalidIncDecOperationRule.php', 'PHPStan\\Rules\\Operators\\InvalidUnaryOperationRule' => __DIR__ . '/../..' . '/src/Rules/Operators/InvalidUnaryOperationRule.php', 'PHPStan\\Rules\\ParameterCastableToStringCheck' => __DIR__ . '/../..' . '/src/Rules/ParameterCastableToStringCheck.php', 'PHPStan\\Rules\\PhpDoc\\AssertRuleHelper' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/AssertRuleHelper.php', 'PHPStan\\Rules\\PhpDoc\\ConditionalReturnTypeRuleHelper' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/ConditionalReturnTypeRuleHelper.php', 'PHPStan\\Rules\\PhpDoc\\FunctionAssertRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/FunctionAssertRule.php', 'PHPStan\\Rules\\PhpDoc\\FunctionConditionalReturnTypeRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/FunctionConditionalReturnTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\GenericCallableRuleHelper' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/GenericCallableRuleHelper.php', 'PHPStan\\Rules\\PhpDoc\\IncompatibleClassConstantPhpDocTypeRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/IncompatibleClassConstantPhpDocTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\IncompatibleParamImmediatelyInvokedCallableRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/IncompatibleParamImmediatelyInvokedCallableRule.php', 'PHPStan\\Rules\\PhpDoc\\IncompatiblePhpDocTypeRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/IncompatiblePhpDocTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\IncompatiblePropertyPhpDocTypeRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/IncompatiblePropertyPhpDocTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\IncompatibleSelfOutTypeRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/IncompatibleSelfOutTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\InvalidPHPStanDocTagRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/InvalidPHPStanDocTagRule.php', 'PHPStan\\Rules\\PhpDoc\\InvalidPhpDocTagValueRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/InvalidPhpDocTagValueRule.php', 'PHPStan\\Rules\\PhpDoc\\InvalidPhpDocVarTagTypeRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/InvalidPhpDocVarTagTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\InvalidThrowsPhpDocValueRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/InvalidThrowsPhpDocValueRule.php', 'PHPStan\\Rules\\PhpDoc\\MethodAssertRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/MethodAssertRule.php', 'PHPStan\\Rules\\PhpDoc\\MethodConditionalReturnTypeRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/MethodConditionalReturnTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\PhpDocLineHelper' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/PhpDocLineHelper.php', 'PHPStan\\Rules\\PhpDoc\\RequireExtendsCheck' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/RequireExtendsCheck.php', 'PHPStan\\Rules\\PhpDoc\\RequireExtendsDefinitionClassRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/RequireExtendsDefinitionClassRule.php', 'PHPStan\\Rules\\PhpDoc\\RequireExtendsDefinitionTraitRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/RequireExtendsDefinitionTraitRule.php', 'PHPStan\\Rules\\PhpDoc\\RequireImplementsDefinitionClassRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/RequireImplementsDefinitionClassRule.php', 'PHPStan\\Rules\\PhpDoc\\RequireImplementsDefinitionTraitRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/RequireImplementsDefinitionTraitRule.php', 'PHPStan\\Rules\\PhpDoc\\UnresolvableTypeHelper' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/UnresolvableTypeHelper.php', 'PHPStan\\Rules\\PhpDoc\\VarTagChangedExpressionTypeRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/VarTagChangedExpressionTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\VarTagTypeRuleHelper' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/VarTagTypeRuleHelper.php', 'PHPStan\\Rules\\PhpDoc\\WrongVariableNameInVarTagRule' => __DIR__ . '/../..' . '/src/Rules/PhpDoc/WrongVariableNameInVarTagRule.php', 'PHPStan\\Rules\\Playground\\FunctionNeverRule' => __DIR__ . '/../..' . '/src/Rules/Playground/FunctionNeverRule.php', 'PHPStan\\Rules\\Playground\\MethodNeverRule' => __DIR__ . '/../..' . '/src/Rules/Playground/MethodNeverRule.php', 'PHPStan\\Rules\\Playground\\NeverRuleHelper' => __DIR__ . '/../..' . '/src/Rules/Playground/NeverRuleHelper.php', 'PHPStan\\Rules\\Playground\\NoPhpCodeRule' => __DIR__ . '/../..' . '/src/Rules/Playground/NoPhpCodeRule.php', 'PHPStan\\Rules\\Playground\\NotAnalysedTraitRule' => __DIR__ . '/../..' . '/src/Rules/Playground/NotAnalysedTraitRule.php', 'PHPStan\\Rules\\Properties\\AccessPrivatePropertyThroughStaticRule' => __DIR__ . '/../..' . '/src/Rules/Properties/AccessPrivatePropertyThroughStaticRule.php', 'PHPStan\\Rules\\Properties\\AccessPropertiesInAssignRule' => __DIR__ . '/../..' . '/src/Rules/Properties/AccessPropertiesInAssignRule.php', 'PHPStan\\Rules\\Properties\\AccessPropertiesRule' => __DIR__ . '/../..' . '/src/Rules/Properties/AccessPropertiesRule.php', 'PHPStan\\Rules\\Properties\\AccessStaticPropertiesInAssignRule' => __DIR__ . '/../..' . '/src/Rules/Properties/AccessStaticPropertiesInAssignRule.php', 'PHPStan\\Rules\\Properties\\AccessStaticPropertiesRule' => __DIR__ . '/../..' . '/src/Rules/Properties/AccessStaticPropertiesRule.php', 'PHPStan\\Rules\\Properties\\DefaultValueTypesAssignedToPropertiesRule' => __DIR__ . '/../..' . '/src/Rules/Properties/DefaultValueTypesAssignedToPropertiesRule.php', 'PHPStan\\Rules\\Properties\\DirectReadWritePropertiesExtensionProvider' => __DIR__ . '/../..' . '/src/Rules/Properties/DirectReadWritePropertiesExtensionProvider.php', 'PHPStan\\Rules\\Properties\\ExistingClassesInPropertiesRule' => __DIR__ . '/../..' . '/src/Rules/Properties/ExistingClassesInPropertiesRule.php', 'PHPStan\\Rules\\Properties\\FoundPropertyReflection' => __DIR__ . '/../..' . '/src/Rules/Properties/FoundPropertyReflection.php', 'PHPStan\\Rules\\Properties\\InvalidCallablePropertyTypeRule' => __DIR__ . '/../..' . '/src/Rules/Properties/InvalidCallablePropertyTypeRule.php', 'PHPStan\\Rules\\Properties\\LazyReadWritePropertiesExtensionProvider' => __DIR__ . '/../..' . '/src/Rules/Properties/LazyReadWritePropertiesExtensionProvider.php', 'PHPStan\\Rules\\Properties\\MissingPropertyTypehintRule' => __DIR__ . '/../..' . '/src/Rules/Properties/MissingPropertyTypehintRule.php', 'PHPStan\\Rules\\Properties\\MissingReadOnlyByPhpDocPropertyAssignRule' => __DIR__ . '/../..' . '/src/Rules/Properties/MissingReadOnlyByPhpDocPropertyAssignRule.php', 'PHPStan\\Rules\\Properties\\MissingReadOnlyPropertyAssignRule' => __DIR__ . '/../..' . '/src/Rules/Properties/MissingReadOnlyPropertyAssignRule.php', 'PHPStan\\Rules\\Properties\\NullsafePropertyFetchRule' => __DIR__ . '/../..' . '/src/Rules/Properties/NullsafePropertyFetchRule.php', 'PHPStan\\Rules\\Properties\\OverridingPropertyRule' => __DIR__ . '/../..' . '/src/Rules/Properties/OverridingPropertyRule.php', 'PHPStan\\Rules\\Properties\\PropertiesInInterfaceRule' => __DIR__ . '/../..' . '/src/Rules/Properties/PropertiesInInterfaceRule.php', 'PHPStan\\Rules\\Properties\\PropertyAttributesRule' => __DIR__ . '/../..' . '/src/Rules/Properties/PropertyAttributesRule.php', 'PHPStan\\Rules\\Properties\\PropertyDescriptor' => __DIR__ . '/../..' . '/src/Rules/Properties/PropertyDescriptor.php', 'PHPStan\\Rules\\Properties\\PropertyReflectionFinder' => __DIR__ . '/../..' . '/src/Rules/Properties/PropertyReflectionFinder.php', 'PHPStan\\Rules\\Properties\\ReadOnlyByPhpDocPropertyAssignRefRule' => __DIR__ . '/../..' . '/src/Rules/Properties/ReadOnlyByPhpDocPropertyAssignRefRule.php', 'PHPStan\\Rules\\Properties\\ReadOnlyByPhpDocPropertyAssignRule' => __DIR__ . '/../..' . '/src/Rules/Properties/ReadOnlyByPhpDocPropertyAssignRule.php', 'PHPStan\\Rules\\Properties\\ReadOnlyByPhpDocPropertyRule' => __DIR__ . '/../..' . '/src/Rules/Properties/ReadOnlyByPhpDocPropertyRule.php', 'PHPStan\\Rules\\Properties\\ReadOnlyPropertyAssignRefRule' => __DIR__ . '/../..' . '/src/Rules/Properties/ReadOnlyPropertyAssignRefRule.php', 'PHPStan\\Rules\\Properties\\ReadOnlyPropertyAssignRule' => __DIR__ . '/../..' . '/src/Rules/Properties/ReadOnlyPropertyAssignRule.php', 'PHPStan\\Rules\\Properties\\ReadOnlyPropertyRule' => __DIR__ . '/../..' . '/src/Rules/Properties/ReadOnlyPropertyRule.php', 'PHPStan\\Rules\\Properties\\ReadWritePropertiesExtension' => __DIR__ . '/../..' . '/src/Rules/Properties/ReadWritePropertiesExtension.php', 'PHPStan\\Rules\\Properties\\ReadWritePropertiesExtensionProvider' => __DIR__ . '/../..' . '/src/Rules/Properties/ReadWritePropertiesExtensionProvider.php', 'PHPStan\\Rules\\Properties\\ReadingWriteOnlyPropertiesRule' => __DIR__ . '/../..' . '/src/Rules/Properties/ReadingWriteOnlyPropertiesRule.php', 'PHPStan\\Rules\\Properties\\TypesAssignedToPropertiesRule' => __DIR__ . '/../..' . '/src/Rules/Properties/TypesAssignedToPropertiesRule.php', 'PHPStan\\Rules\\Properties\\UninitializedPropertyRule' => __DIR__ . '/../..' . '/src/Rules/Properties/UninitializedPropertyRule.php', 'PHPStan\\Rules\\Properties\\WritingToReadOnlyPropertiesRule' => __DIR__ . '/../..' . '/src/Rules/Properties/WritingToReadOnlyPropertiesRule.php', 'PHPStan\\Rules\\Pure\\FunctionPurityCheck' => __DIR__ . '/../..' . '/src/Rules/Pure/FunctionPurityCheck.php', 'PHPStan\\Rules\\Pure\\PureFunctionRule' => __DIR__ . '/../..' . '/src/Rules/Pure/PureFunctionRule.php', 'PHPStan\\Rules\\Pure\\PureMethodRule' => __DIR__ . '/../..' . '/src/Rules/Pure/PureMethodRule.php', 'PHPStan\\Rules\\Regexp\\RegularExpressionPatternRule' => __DIR__ . '/../..' . '/src/Rules/Regexp/RegularExpressionPatternRule.php', 'PHPStan\\Rules\\Regexp\\RegularExpressionQuotingRule' => __DIR__ . '/../..' . '/src/Rules/Regexp/RegularExpressionQuotingRule.php', 'PHPStan\\Rules\\Registry' => __DIR__ . '/../..' . '/src/Rules/Registry.php', 'PHPStan\\Rules\\Rule' => __DIR__ . '/../..' . '/src/Rules/Rule.php', 'PHPStan\\Rules\\RuleError' => __DIR__ . '/../..' . '/src/Rules/RuleError.php', 'PHPStan\\Rules\\RuleErrorBuilder' => __DIR__ . '/../..' . '/src/Rules/RuleErrorBuilder.php', 'PHPStan\\Rules\\RuleErrors\\RuleError1' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError1.php', 'PHPStan\\Rules\\RuleErrors\\RuleError101' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError101.php', 'PHPStan\\Rules\\RuleErrors\\RuleError103' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError103.php', 'PHPStan\\Rules\\RuleErrors\\RuleError105' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError105.php', 'PHPStan\\Rules\\RuleErrors\\RuleError107' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError107.php', 'PHPStan\\Rules\\RuleErrors\\RuleError109' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError109.php', 'PHPStan\\Rules\\RuleErrors\\RuleError11' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError11.php', 'PHPStan\\Rules\\RuleErrors\\RuleError111' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError111.php', 'PHPStan\\Rules\\RuleErrors\\RuleError113' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError113.php', 'PHPStan\\Rules\\RuleErrors\\RuleError115' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError115.php', 'PHPStan\\Rules\\RuleErrors\\RuleError117' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError117.php', 'PHPStan\\Rules\\RuleErrors\\RuleError119' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError119.php', 'PHPStan\\Rules\\RuleErrors\\RuleError121' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError121.php', 'PHPStan\\Rules\\RuleErrors\\RuleError123' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError123.php', 'PHPStan\\Rules\\RuleErrors\\RuleError125' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError125.php', 'PHPStan\\Rules\\RuleErrors\\RuleError127' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError127.php', 'PHPStan\\Rules\\RuleErrors\\RuleError13' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError13.php', 'PHPStan\\Rules\\RuleErrors\\RuleError15' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError15.php', 'PHPStan\\Rules\\RuleErrors\\RuleError17' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError17.php', 'PHPStan\\Rules\\RuleErrors\\RuleError19' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError19.php', 'PHPStan\\Rules\\RuleErrors\\RuleError21' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError21.php', 'PHPStan\\Rules\\RuleErrors\\RuleError23' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError23.php', 'PHPStan\\Rules\\RuleErrors\\RuleError25' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError25.php', 'PHPStan\\Rules\\RuleErrors\\RuleError27' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError27.php', 'PHPStan\\Rules\\RuleErrors\\RuleError29' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError29.php', 'PHPStan\\Rules\\RuleErrors\\RuleError3' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError3.php', 'PHPStan\\Rules\\RuleErrors\\RuleError31' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError31.php', 'PHPStan\\Rules\\RuleErrors\\RuleError33' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError33.php', 'PHPStan\\Rules\\RuleErrors\\RuleError35' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError35.php', 'PHPStan\\Rules\\RuleErrors\\RuleError37' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError37.php', 'PHPStan\\Rules\\RuleErrors\\RuleError39' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError39.php', 'PHPStan\\Rules\\RuleErrors\\RuleError41' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError41.php', 'PHPStan\\Rules\\RuleErrors\\RuleError43' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError43.php', 'PHPStan\\Rules\\RuleErrors\\RuleError45' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError45.php', 'PHPStan\\Rules\\RuleErrors\\RuleError47' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError47.php', 'PHPStan\\Rules\\RuleErrors\\RuleError49' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError49.php', 'PHPStan\\Rules\\RuleErrors\\RuleError5' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError5.php', 'PHPStan\\Rules\\RuleErrors\\RuleError51' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError51.php', 'PHPStan\\Rules\\RuleErrors\\RuleError53' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError53.php', 'PHPStan\\Rules\\RuleErrors\\RuleError55' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError55.php', 'PHPStan\\Rules\\RuleErrors\\RuleError57' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError57.php', 'PHPStan\\Rules\\RuleErrors\\RuleError59' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError59.php', 'PHPStan\\Rules\\RuleErrors\\RuleError61' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError61.php', 'PHPStan\\Rules\\RuleErrors\\RuleError63' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError63.php', 'PHPStan\\Rules\\RuleErrors\\RuleError65' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError65.php', 'PHPStan\\Rules\\RuleErrors\\RuleError67' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError67.php', 'PHPStan\\Rules\\RuleErrors\\RuleError69' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError69.php', 'PHPStan\\Rules\\RuleErrors\\RuleError7' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError7.php', 'PHPStan\\Rules\\RuleErrors\\RuleError71' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError71.php', 'PHPStan\\Rules\\RuleErrors\\RuleError73' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError73.php', 'PHPStan\\Rules\\RuleErrors\\RuleError75' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError75.php', 'PHPStan\\Rules\\RuleErrors\\RuleError77' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError77.php', 'PHPStan\\Rules\\RuleErrors\\RuleError79' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError79.php', 'PHPStan\\Rules\\RuleErrors\\RuleError81' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError81.php', 'PHPStan\\Rules\\RuleErrors\\RuleError83' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError83.php', 'PHPStan\\Rules\\RuleErrors\\RuleError85' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError85.php', 'PHPStan\\Rules\\RuleErrors\\RuleError87' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError87.php', 'PHPStan\\Rules\\RuleErrors\\RuleError89' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError89.php', 'PHPStan\\Rules\\RuleErrors\\RuleError9' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError9.php', 'PHPStan\\Rules\\RuleErrors\\RuleError91' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError91.php', 'PHPStan\\Rules\\RuleErrors\\RuleError93' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError93.php', 'PHPStan\\Rules\\RuleErrors\\RuleError95' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError95.php', 'PHPStan\\Rules\\RuleErrors\\RuleError97' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError97.php', 'PHPStan\\Rules\\RuleErrors\\RuleError99' => __DIR__ . '/../..' . '/src/Rules/RuleErrors/RuleError99.php', 'PHPStan\\Rules\\RuleLevelHelper' => __DIR__ . '/../..' . '/src/Rules/RuleLevelHelper.php', 'PHPStan\\Rules\\RuleLevelHelperAcceptsResult' => __DIR__ . '/../..' . '/src/Rules/RuleLevelHelperAcceptsResult.php', 'PHPStan\\Rules\\TipRuleError' => __DIR__ . '/../..' . '/src/Rules/TipRuleError.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideArrowFunctionReturnTypehintRule' => __DIR__ . '/../..' . '/src/Rules/TooWideTypehints/TooWideArrowFunctionReturnTypehintRule.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideClosureReturnTypehintRule' => __DIR__ . '/../..' . '/src/Rules/TooWideTypehints/TooWideClosureReturnTypehintRule.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideFunctionParameterOutTypeRule' => __DIR__ . '/../..' . '/src/Rules/TooWideTypehints/TooWideFunctionParameterOutTypeRule.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideFunctionReturnTypehintRule' => __DIR__ . '/../..' . '/src/Rules/TooWideTypehints/TooWideFunctionReturnTypehintRule.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideMethodParameterOutTypeRule' => __DIR__ . '/../..' . '/src/Rules/TooWideTypehints/TooWideMethodParameterOutTypeRule.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideMethodReturnTypehintRule' => __DIR__ . '/../..' . '/src/Rules/TooWideTypehints/TooWideMethodReturnTypehintRule.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideParameterOutTypeCheck' => __DIR__ . '/../..' . '/src/Rules/TooWideTypehints/TooWideParameterOutTypeCheck.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWidePropertyTypeRule' => __DIR__ . '/../..' . '/src/Rules/TooWideTypehints/TooWidePropertyTypeRule.php', 'PHPStan\\Rules\\Traits\\ConflictingTraitConstantsRule' => __DIR__ . '/../..' . '/src/Rules/Traits/ConflictingTraitConstantsRule.php', 'PHPStan\\Rules\\Traits\\ConstantsInTraitsRule' => __DIR__ . '/../..' . '/src/Rules/Traits/ConstantsInTraitsRule.php', 'PHPStan\\Rules\\Traits\\NotAnalysedTraitRule' => __DIR__ . '/../..' . '/src/Rules/Traits/NotAnalysedTraitRule.php', 'PHPStan\\Rules\\Traits\\TraitDeclarationCollector' => __DIR__ . '/../..' . '/src/Rules/Traits/TraitDeclarationCollector.php', 'PHPStan\\Rules\\Traits\\TraitUseCollector' => __DIR__ . '/../..' . '/src/Rules/Traits/TraitUseCollector.php', 'PHPStan\\Rules\\Types\\InvalidTypesInUnionRule' => __DIR__ . '/../..' . '/src/Rules/Types/InvalidTypesInUnionRule.php', 'PHPStan\\Rules\\UnusedFunctionParametersCheck' => __DIR__ . '/../..' . '/src/Rules/UnusedFunctionParametersCheck.php', 'PHPStan\\Rules\\Variables\\CompactVariablesRule' => __DIR__ . '/../..' . '/src/Rules/Variables/CompactVariablesRule.php', 'PHPStan\\Rules\\Variables\\DefinedVariableRule' => __DIR__ . '/../..' . '/src/Rules/Variables/DefinedVariableRule.php', 'PHPStan\\Rules\\Variables\\EmptyRule' => __DIR__ . '/../..' . '/src/Rules/Variables/EmptyRule.php', 'PHPStan\\Rules\\Variables\\IssetRule' => __DIR__ . '/../..' . '/src/Rules/Variables/IssetRule.php', 'PHPStan\\Rules\\Variables\\NullCoalesceRule' => __DIR__ . '/../..' . '/src/Rules/Variables/NullCoalesceRule.php', 'PHPStan\\Rules\\Variables\\ParameterOutAssignedTypeRule' => __DIR__ . '/../..' . '/src/Rules/Variables/ParameterOutAssignedTypeRule.php', 'PHPStan\\Rules\\Variables\\ParameterOutExecutionEndTypeRule' => __DIR__ . '/../..' . '/src/Rules/Variables/ParameterOutExecutionEndTypeRule.php', 'PHPStan\\Rules\\Variables\\ThrowTypeRule' => __DIR__ . '/../..' . '/src/Rules/Variables/ThrowTypeRule.php', 'PHPStan\\Rules\\Variables\\UnsetRule' => __DIR__ . '/../..' . '/src/Rules/Variables/UnsetRule.php', 'PHPStan\\Rules\\Variables\\VariableCloningRule' => __DIR__ . '/../..' . '/src/Rules/Variables/VariableCloningRule.php', 'PHPStan\\Rules\\Whitespace\\FileWhitespaceRule' => __DIR__ . '/../..' . '/src/Rules/Whitespace/FileWhitespaceRule.php', 'PHPStan\\ShouldNotHappenException' => __DIR__ . '/../..' . '/src/ShouldNotHappenException.php', 'PHPStan\\Testing\\ErrorFormatterTestCase' => __DIR__ . '/../..' . '/src/Testing/ErrorFormatterTestCase.php', 'PHPStan\\Testing\\LevelsTestCase' => __DIR__ . '/../..' . '/src/Testing/LevelsTestCase.php', 'PHPStan\\Testing\\PHPStanTestCase' => __DIR__ . '/../..' . '/src/Testing/PHPStanTestCase.php', 'PHPStan\\Testing\\RuleTestCase' => __DIR__ . '/../..' . '/src/Testing/RuleTestCase.php', 'PHPStan\\Testing\\TestCaseSourceLocatorFactory' => __DIR__ . '/../..' . '/src/Testing/TestCaseSourceLocatorFactory.php', 'PHPStan\\Testing\\TypeInferenceTestCase' => __DIR__ . '/../..' . '/src/Testing/TypeInferenceTestCase.php', 'PHPStan\\TrinaryLogic' => __DIR__ . '/../..' . '/src/TrinaryLogic.php', 'PHPStan\\Type\\AcceptsResult' => __DIR__ . '/../..' . '/src/Type/AcceptsResult.php', 'PHPStan\\Type\\Accessory\\AccessoryArrayListType' => __DIR__ . '/../..' . '/src/Type/Accessory/AccessoryArrayListType.php', 'PHPStan\\Type\\Accessory\\AccessoryLiteralStringType' => __DIR__ . '/../..' . '/src/Type/Accessory/AccessoryLiteralStringType.php', 'PHPStan\\Type\\Accessory\\AccessoryLowercaseStringType' => __DIR__ . '/../..' . '/src/Type/Accessory/AccessoryLowercaseStringType.php', 'PHPStan\\Type\\Accessory\\AccessoryNonEmptyStringType' => __DIR__ . '/../..' . '/src/Type/Accessory/AccessoryNonEmptyStringType.php', 'PHPStan\\Type\\Accessory\\AccessoryNonFalsyStringType' => __DIR__ . '/../..' . '/src/Type/Accessory/AccessoryNonFalsyStringType.php', 'PHPStan\\Type\\Accessory\\AccessoryNumericStringType' => __DIR__ . '/../..' . '/src/Type/Accessory/AccessoryNumericStringType.php', 'PHPStan\\Type\\Accessory\\AccessoryType' => __DIR__ . '/../..' . '/src/Type/Accessory/AccessoryType.php', 'PHPStan\\Type\\Accessory\\AccessoryUppercaseStringType' => __DIR__ . '/../..' . '/src/Type/Accessory/AccessoryUppercaseStringType.php', 'PHPStan\\Type\\Accessory\\HasMethodType' => __DIR__ . '/../..' . '/src/Type/Accessory/HasMethodType.php', 'PHPStan\\Type\\Accessory\\HasOffsetType' => __DIR__ . '/../..' . '/src/Type/Accessory/HasOffsetType.php', 'PHPStan\\Type\\Accessory\\HasOffsetValueType' => __DIR__ . '/../..' . '/src/Type/Accessory/HasOffsetValueType.php', 'PHPStan\\Type\\Accessory\\HasPropertyType' => __DIR__ . '/../..' . '/src/Type/Accessory/HasPropertyType.php', 'PHPStan\\Type\\Accessory\\NonEmptyArrayType' => __DIR__ . '/../..' . '/src/Type/Accessory/NonEmptyArrayType.php', 'PHPStan\\Type\\Accessory\\OversizedArrayType' => __DIR__ . '/../..' . '/src/Type/Accessory/OversizedArrayType.php', 'PHPStan\\Type\\ArrayType' => __DIR__ . '/../..' . '/src/Type/ArrayType.php', 'PHPStan\\Type\\BenevolentUnionType' => __DIR__ . '/../..' . '/src/Type/BenevolentUnionType.php', 'PHPStan\\Type\\BitwiseFlagHelper' => __DIR__ . '/../..' . '/src/Type/BitwiseFlagHelper.php', 'PHPStan\\Type\\BooleanType' => __DIR__ . '/../..' . '/src/Type/BooleanType.php', 'PHPStan\\Type\\CallableType' => __DIR__ . '/../..' . '/src/Type/CallableType.php', 'PHPStan\\Type\\CallableTypeHelper' => __DIR__ . '/../..' . '/src/Type/CallableTypeHelper.php', 'PHPStan\\Type\\CircularTypeAliasDefinitionException' => __DIR__ . '/../..' . '/src/Type/CircularTypeAliasDefinitionException.php', 'PHPStan\\Type\\CircularTypeAliasErrorType' => __DIR__ . '/../..' . '/src/Type/CircularTypeAliasErrorType.php', 'PHPStan\\Type\\ClassStringType' => __DIR__ . '/../..' . '/src/Type/ClassStringType.php', 'PHPStan\\Type\\ClosureType' => __DIR__ . '/../..' . '/src/Type/ClosureType.php', 'PHPStan\\Type\\ClosureTypeFactory' => __DIR__ . '/../..' . '/src/Type/ClosureTypeFactory.php', 'PHPStan\\Type\\CompoundType' => __DIR__ . '/../..' . '/src/Type/CompoundType.php', 'PHPStan\\Type\\ConditionalType' => __DIR__ . '/../..' . '/src/Type/ConditionalType.php', 'PHPStan\\Type\\ConditionalTypeForParameter' => __DIR__ . '/../..' . '/src/Type/ConditionalTypeForParameter.php', 'PHPStan\\Type\\ConstantScalarType' => __DIR__ . '/../..' . '/src/Type/ConstantScalarType.php', 'PHPStan\\Type\\ConstantType' => __DIR__ . '/../..' . '/src/Type/ConstantType.php', 'PHPStan\\Type\\ConstantTypeHelper' => __DIR__ . '/../..' . '/src/Type/ConstantTypeHelper.php', 'PHPStan\\Type\\Constant\\ConstantArrayType' => __DIR__ . '/../..' . '/src/Type/Constant/ConstantArrayType.php', 'PHPStan\\Type\\Constant\\ConstantArrayTypeAndMethod' => __DIR__ . '/../..' . '/src/Type/Constant/ConstantArrayTypeAndMethod.php', 'PHPStan\\Type\\Constant\\ConstantArrayTypeBuilder' => __DIR__ . '/../..' . '/src/Type/Constant/ConstantArrayTypeBuilder.php', 'PHPStan\\Type\\Constant\\ConstantBooleanType' => __DIR__ . '/../..' . '/src/Type/Constant/ConstantBooleanType.php', 'PHPStan\\Type\\Constant\\ConstantFloatType' => __DIR__ . '/../..' . '/src/Type/Constant/ConstantFloatType.php', 'PHPStan\\Type\\Constant\\ConstantIntegerType' => __DIR__ . '/../..' . '/src/Type/Constant/ConstantIntegerType.php', 'PHPStan\\Type\\Constant\\ConstantScalarToBooleanTrait' => __DIR__ . '/../..' . '/src/Type/Constant/ConstantScalarToBooleanTrait.php', 'PHPStan\\Type\\Constant\\ConstantStringType' => __DIR__ . '/../..' . '/src/Type/Constant/ConstantStringType.php', 'PHPStan\\Type\\Constant\\OversizedArrayBuilder' => __DIR__ . '/../..' . '/src/Type/Constant/OversizedArrayBuilder.php', 'PHPStan\\Type\\DirectTypeAliasResolverProvider' => __DIR__ . '/../..' . '/src/Type/DirectTypeAliasResolverProvider.php', 'PHPStan\\Type\\DynamicFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/DynamicFunctionReturnTypeExtension.php', 'PHPStan\\Type\\DynamicFunctionThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/DynamicFunctionThrowTypeExtension.php', 'PHPStan\\Type\\DynamicMethodReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/DynamicMethodReturnTypeExtension.php', 'PHPStan\\Type\\DynamicMethodThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/DynamicMethodThrowTypeExtension.php', 'PHPStan\\Type\\DynamicReturnTypeExtensionRegistry' => __DIR__ . '/../..' . '/src/Type/DynamicReturnTypeExtensionRegistry.php', 'PHPStan\\Type\\DynamicStaticMethodReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/DynamicStaticMethodReturnTypeExtension.php', 'PHPStan\\Type\\DynamicStaticMethodThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/DynamicStaticMethodThrowTypeExtension.php', 'PHPStan\\Type\\Enum\\EnumCaseObjectType' => __DIR__ . '/../..' . '/src/Type/Enum/EnumCaseObjectType.php', 'PHPStan\\Type\\ErrorType' => __DIR__ . '/../..' . '/src/Type/ErrorType.php', 'PHPStan\\Type\\ExponentiateHelper' => __DIR__ . '/../..' . '/src/Type/ExponentiateHelper.php', 'PHPStan\\Type\\ExpressionTypeResolverExtension' => __DIR__ . '/../..' . '/src/Type/ExpressionTypeResolverExtension.php', 'PHPStan\\Type\\ExpressionTypeResolverExtensionRegistry' => __DIR__ . '/../..' . '/src/Type/ExpressionTypeResolverExtensionRegistry.php', 'PHPStan\\Type\\FileTypeMapper' => __DIR__ . '/../..' . '/src/Type/FileTypeMapper.php', 'PHPStan\\Type\\FloatType' => __DIR__ . '/../..' . '/src/Type/FloatType.php', 'PHPStan\\Type\\FunctionParameterClosureTypeExtension' => __DIR__ . '/../..' . '/src/Type/FunctionParameterClosureTypeExtension.php', 'PHPStan\\Type\\FunctionParameterOutTypeExtension' => __DIR__ . '/../..' . '/src/Type/FunctionParameterOutTypeExtension.php', 'PHPStan\\Type\\FunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/FunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\GeneralizePrecision' => __DIR__ . '/../..' . '/src/Type/GeneralizePrecision.php', 'PHPStan\\Type\\GenericTypeVariableResolver' => __DIR__ . '/../..' . '/src/Type/GenericTypeVariableResolver.php', 'PHPStan\\Type\\Generic\\GenericClassStringType' => __DIR__ . '/../..' . '/src/Type/Generic/GenericClassStringType.php', 'PHPStan\\Type\\Generic\\GenericObjectType' => __DIR__ . '/../..' . '/src/Type/Generic/GenericObjectType.php', 'PHPStan\\Type\\Generic\\GenericStaticType' => __DIR__ . '/../..' . '/src/Type/Generic/GenericStaticType.php', 'PHPStan\\Type\\Generic\\TemplateArrayType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateArrayType.php', 'PHPStan\\Type\\Generic\\TemplateBenevolentUnionType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateBenevolentUnionType.php', 'PHPStan\\Type\\Generic\\TemplateBooleanType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateBooleanType.php', 'PHPStan\\Type\\Generic\\TemplateConstantArrayType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateConstantArrayType.php', 'PHPStan\\Type\\Generic\\TemplateConstantIntegerType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateConstantIntegerType.php', 'PHPStan\\Type\\Generic\\TemplateConstantStringType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateConstantStringType.php', 'PHPStan\\Type\\Generic\\TemplateFloatType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateFloatType.php', 'PHPStan\\Type\\Generic\\TemplateGenericObjectType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateGenericObjectType.php', 'PHPStan\\Type\\Generic\\TemplateIntegerType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateIntegerType.php', 'PHPStan\\Type\\Generic\\TemplateIntersectionType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateIntersectionType.php', 'PHPStan\\Type\\Generic\\TemplateIterableType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateIterableType.php', 'PHPStan\\Type\\Generic\\TemplateKeyOfType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateKeyOfType.php', 'PHPStan\\Type\\Generic\\TemplateMixedType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateMixedType.php', 'PHPStan\\Type\\Generic\\TemplateObjectShapeType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateObjectShapeType.php', 'PHPStan\\Type\\Generic\\TemplateObjectType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateObjectType.php', 'PHPStan\\Type\\Generic\\TemplateObjectWithoutClassType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateObjectWithoutClassType.php', 'PHPStan\\Type\\Generic\\TemplateStrictMixedType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateStrictMixedType.php', 'PHPStan\\Type\\Generic\\TemplateStringType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateStringType.php', 'PHPStan\\Type\\Generic\\TemplateType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateType.php', 'PHPStan\\Type\\Generic\\TemplateTypeArgumentStrategy' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateTypeArgumentStrategy.php', 'PHPStan\\Type\\Generic\\TemplateTypeFactory' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateTypeFactory.php', 'PHPStan\\Type\\Generic\\TemplateTypeHelper' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateTypeHelper.php', 'PHPStan\\Type\\Generic\\TemplateTypeMap' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateTypeMap.php', 'PHPStan\\Type\\Generic\\TemplateTypeParameterStrategy' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateTypeParameterStrategy.php', 'PHPStan\\Type\\Generic\\TemplateTypeReference' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateTypeReference.php', 'PHPStan\\Type\\Generic\\TemplateTypeScope' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateTypeScope.php', 'PHPStan\\Type\\Generic\\TemplateTypeStrategy' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateTypeStrategy.php', 'PHPStan\\Type\\Generic\\TemplateTypeTrait' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateTypeTrait.php', 'PHPStan\\Type\\Generic\\TemplateTypeVariance' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateTypeVariance.php', 'PHPStan\\Type\\Generic\\TemplateTypeVarianceMap' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateTypeVarianceMap.php', 'PHPStan\\Type\\Generic\\TemplateUnionType' => __DIR__ . '/../..' . '/src/Type/Generic/TemplateUnionType.php', 'PHPStan\\Type\\Generic\\TypeProjectionHelper' => __DIR__ . '/../..' . '/src/Type/Generic/TypeProjectionHelper.php', 'PHPStan\\Type\\Helper\\GetTemplateTypeType' => __DIR__ . '/../..' . '/src/Type/Helper/GetTemplateTypeType.php', 'PHPStan\\Type\\IntegerRangeType' => __DIR__ . '/../..' . '/src/Type/IntegerRangeType.php', 'PHPStan\\Type\\IntegerType' => __DIR__ . '/../..' . '/src/Type/IntegerType.php', 'PHPStan\\Type\\IntersectionType' => __DIR__ . '/../..' . '/src/Type/IntersectionType.php', 'PHPStan\\Type\\IsSuperTypeOfResult' => __DIR__ . '/../..' . '/src/Type/IsSuperTypeOfResult.php', 'PHPStan\\Type\\IterableType' => __DIR__ . '/../..' . '/src/Type/IterableType.php', 'PHPStan\\Type\\JustNullableTypeTrait' => __DIR__ . '/../..' . '/src/Type/JustNullableTypeTrait.php', 'PHPStan\\Type\\KeyOfType' => __DIR__ . '/../..' . '/src/Type/KeyOfType.php', 'PHPStan\\Type\\LateResolvableType' => __DIR__ . '/../..' . '/src/Type/LateResolvableType.php', 'PHPStan\\Type\\LazyTypeAliasResolverProvider' => __DIR__ . '/../..' . '/src/Type/LazyTypeAliasResolverProvider.php', 'PHPStan\\Type\\LooseComparisonHelper' => __DIR__ . '/../..' . '/src/Type/LooseComparisonHelper.php', 'PHPStan\\Type\\MethodParameterClosureTypeExtension' => __DIR__ . '/../..' . '/src/Type/MethodParameterClosureTypeExtension.php', 'PHPStan\\Type\\MethodParameterOutTypeExtension' => __DIR__ . '/../..' . '/src/Type/MethodParameterOutTypeExtension.php', 'PHPStan\\Type\\MethodTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/MethodTypeSpecifyingExtension.php', 'PHPStan\\Type\\MixedType' => __DIR__ . '/../..' . '/src/Type/MixedType.php', 'PHPStan\\Type\\NeverType' => __DIR__ . '/../..' . '/src/Type/NeverType.php', 'PHPStan\\Type\\NewObjectType' => __DIR__ . '/../..' . '/src/Type/NewObjectType.php', 'PHPStan\\Type\\NonAcceptingNeverType' => __DIR__ . '/../..' . '/src/Type/NonAcceptingNeverType.php', 'PHPStan\\Type\\NonexistentParentClassType' => __DIR__ . '/../..' . '/src/Type/NonexistentParentClassType.php', 'PHPStan\\Type\\NullType' => __DIR__ . '/../..' . '/src/Type/NullType.php', 'PHPStan\\Type\\ObjectShapePropertyReflection' => __DIR__ . '/../..' . '/src/Type/ObjectShapePropertyReflection.php', 'PHPStan\\Type\\ObjectShapeType' => __DIR__ . '/../..' . '/src/Type/ObjectShapeType.php', 'PHPStan\\Type\\ObjectType' => __DIR__ . '/../..' . '/src/Type/ObjectType.php', 'PHPStan\\Type\\ObjectWithoutClassType' => __DIR__ . '/../..' . '/src/Type/ObjectWithoutClassType.php', 'PHPStan\\Type\\OffsetAccessType' => __DIR__ . '/../..' . '/src/Type/OffsetAccessType.php', 'PHPStan\\Type\\OperatorTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/OperatorTypeSpecifyingExtension.php', 'PHPStan\\Type\\OperatorTypeSpecifyingExtensionRegistry' => __DIR__ . '/../..' . '/src/Type/OperatorTypeSpecifyingExtensionRegistry.php', 'PHPStan\\Type\\ParserNodeTypeToPHPStanType' => __DIR__ . '/../..' . '/src/Type/ParserNodeTypeToPHPStanType.php', 'PHPStan\\Type\\Php\\AbsFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/AbsFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArgumentBasedFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArgumentBasedFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayChangeKeyCaseFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayChangeKeyCaseFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayChunkFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayChunkFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayColumnFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayColumnFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayCombineFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayCombineFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayCurrentDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayCurrentDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayFillFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayFillFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayFillKeysFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayFillKeysFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayFilterFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayFilterFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayFilterFunctionReturnTypeHelper' => __DIR__ . '/../..' . '/src/Type/Php/ArrayFilterFunctionReturnTypeHelper.php', 'PHPStan\\Type\\Php\\ArrayFindFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayFindFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayFindKeyFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayFindKeyFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayFlipFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayFlipFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayIntersectKeyFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayIntersectKeyFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayKeyDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayKeyDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayKeyExistsFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayKeyExistsFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\ArrayKeyFirstDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayKeyFirstDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayKeyLastDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayKeyLastDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayKeysFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayKeysFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayMapFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayMapFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayMergeFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayMergeFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayNextDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayNextDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayPointerFunctionsDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayPointerFunctionsDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayPopFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayPopFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayRandFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayRandFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayReduceFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayReduceFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayReplaceFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayReplaceFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayReverseFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayReverseFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArraySearchFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArraySearchFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArraySearchFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArraySearchFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\ArrayShiftFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayShiftFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArraySliceFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArraySliceFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArraySpliceFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArraySpliceFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArraySumFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArraySumFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayValuesFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ArrayValuesFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\AssertFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/AssertFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\AssertThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/AssertThrowTypeExtension.php', 'PHPStan\\Type\\Php\\BackedEnumFromMethodDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/BackedEnumFromMethodDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\Base64DecodeDynamicFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/Base64DecodeDynamicFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\BcMathStringOrNullReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/BcMathStringOrNullReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ClassExistsFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/ClassExistsFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\ClassImplementsFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ClassImplementsFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ClosureBindDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ClosureBindDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ClosureBindToDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ClosureBindToDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ClosureFromCallableDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ClosureFromCallableDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\CompactFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/CompactFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ConstantFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ConstantFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ConstantHelper' => __DIR__ . '/../..' . '/src/Type/Php/ConstantHelper.php', 'PHPStan\\Type\\Php\\CountFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/CountFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\CountFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/CountFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\CtypeDigitFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/CtypeDigitFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\CurlGetinfoFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/CurlGetinfoFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateFormatFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DateFormatFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateFormatMethodReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DateFormatMethodReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DateFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateFunctionReturnTypeHelper' => __DIR__ . '/../..' . '/src/Type/Php/DateFunctionReturnTypeHelper.php', 'PHPStan\\Type\\Php\\DateIntervalConstructorThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DateIntervalConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\DateIntervalDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DateIntervalDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DatePeriodConstructorReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DatePeriodConstructorReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeConstructorThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DateTimeConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeCreateDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DateTimeCreateDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DateTimeDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeModifyMethodThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DateTimeModifyMethodThrowTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeModifyReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DateTimeModifyReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeSubMethodThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DateTimeSubMethodThrowTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeZoneConstructorThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DateTimeZoneConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\DefineConstantTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/DefineConstantTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\DefinedConstantTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/DefinedConstantTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\DioStatDynamicFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DioStatDynamicFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DsMapDynamicMethodThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DsMapDynamicMethodThrowTypeExtension.php', 'PHPStan\\Type\\Php\\DsMapDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/DsMapDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ExplodeFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ExplodeFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\FilterFunctionReturnTypeHelper' => __DIR__ . '/../..' . '/src/Type/Php/FilterFunctionReturnTypeHelper.php', 'PHPStan\\Type\\Php\\FilterInputDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/FilterInputDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\FilterVarArrayDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/FilterVarArrayDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\FilterVarDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/FilterVarDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\FunctionExistsFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/FunctionExistsFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\GetCalledClassDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/GetCalledClassDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\GetClassDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/GetClassDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\GetDebugTypeFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/GetDebugTypeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\GetDefinedVarsFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/GetDefinedVarsFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\GetParentClassDynamicFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/GetParentClassDynamicFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\GettimeofdayDynamicFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/GettimeofdayDynamicFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\GettypeFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/GettypeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\HashFunctionsReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/HashFunctionsReturnTypeExtension.php', 'PHPStan\\Type\\Php\\HighlightStringDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/HighlightStringDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\HrtimeFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/HrtimeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ImplodeFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ImplodeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\InArrayFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/InArrayFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\IniGetReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/IniGetReturnTypeExtension.php', 'PHPStan\\Type\\Php\\IntdivThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/IntdivThrowTypeExtension.php', 'PHPStan\\Type\\Php\\IsAFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/IsAFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\IsAFunctionTypeSpecifyingHelper' => __DIR__ . '/../..' . '/src/Type/Php/IsAFunctionTypeSpecifyingHelper.php', 'PHPStan\\Type\\Php\\IsArrayFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/IsArrayFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\IsCallableFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/IsCallableFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\IsIterableFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/IsIterableFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\IsSubclassOfFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/IsSubclassOfFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\IteratorToArrayFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/IteratorToArrayFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\JsonThrowOnErrorDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/JsonThrowOnErrorDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\JsonThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/JsonThrowTypeExtension.php', 'PHPStan\\Type\\Php\\LtrimFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/LtrimFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\MbConvertEncodingFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/MbConvertEncodingFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\MbFunctionsReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/MbFunctionsReturnTypeExtension.php', 'PHPStan\\Type\\Php\\MbFunctionsReturnTypeExtensionTrait' => __DIR__ . '/../..' . '/src/Type/Php/MbFunctionsReturnTypeExtensionTrait.php', 'PHPStan\\Type\\Php\\MbStrlenFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/MbStrlenFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\MbSubstituteCharacterDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/MbSubstituteCharacterDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\MethodExistsTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/MethodExistsTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\MicrotimeFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/MicrotimeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\MinMaxFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/MinMaxFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\NonEmptyStringFunctionsReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php', 'PHPStan\\Type\\Php\\NumberFormatFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/NumberFormatFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\OpenSslEncryptParameterOutTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/OpenSslEncryptParameterOutTypeExtension.php', 'PHPStan\\Type\\Php\\ParseStrParameterOutTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ParseStrParameterOutTypeExtension.php', 'PHPStan\\Type\\Php\\ParseUrlFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ParseUrlFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\PathinfoFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/PathinfoFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\PowFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/PowFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\PregFilterFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/PregFilterFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\PregMatchParameterOutTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/PregMatchParameterOutTypeExtension.php', 'PHPStan\\Type\\Php\\PregMatchTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/PregMatchTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\PregReplaceCallbackClosureTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/PregReplaceCallbackClosureTypeExtension.php', 'PHPStan\\Type\\Php\\PregSplitDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/PregSplitDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\PropertyExistsTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/PropertyExistsTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\RandomIntFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/RandomIntFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\RangeFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/RangeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ReflectionClassConstructorThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ReflectionClassConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\ReflectionClassIsSubclassOfTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/ReflectionClassIsSubclassOfTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\ReflectionFunctionConstructorThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ReflectionFunctionConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\ReflectionGetAttributesMethodReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ReflectionGetAttributesMethodReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ReflectionMethodConstructorThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ReflectionMethodConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\ReflectionPropertyConstructorThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ReflectionPropertyConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\RegexArrayShapeMatcher' => __DIR__ . '/../..' . '/src/Type/Php/RegexArrayShapeMatcher.php', 'PHPStan\\Type\\Php\\ReplaceFunctionsDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ReplaceFunctionsDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\RoundFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/RoundFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\SetTypeFunctionTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/SetTypeFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\SimpleXMLElementAsXMLMethodReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/SimpleXMLElementAsXMLMethodReturnTypeExtension.php', 'PHPStan\\Type\\Php\\SimpleXMLElementClassPropertyReflectionExtension' => __DIR__ . '/../..' . '/src/Type/Php/SimpleXMLElementClassPropertyReflectionExtension.php', 'PHPStan\\Type\\Php\\SimpleXMLElementConstructorThrowTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/SimpleXMLElementConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\SimpleXMLElementXpathMethodReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/SimpleXMLElementXpathMethodReturnTypeExtension.php', 'PHPStan\\Type\\Php\\SprintfFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/SprintfFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\SscanfFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/SscanfFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StatDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/StatDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrCaseFunctionsReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/StrCaseFunctionsReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrContainingTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/Php/StrContainingTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\StrIncrementDecrementFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/StrIncrementDecrementFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrPadFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/StrPadFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrRepeatFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/StrRepeatFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrSplitFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/StrSplitFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrTokFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/StrTokFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrWordCountFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/StrWordCountFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrlenFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/StrlenFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrrevFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/StrrevFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrtotimeFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/StrtotimeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrvalFamilyFunctionReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/StrvalFamilyFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\SubstrDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/SubstrDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ThrowableReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/ThrowableReturnTypeExtension.php', 'PHPStan\\Type\\Php\\TriggerErrorDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/TriggerErrorDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\TrimFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/TrimFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\TypeSpecifyingFunctionsDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\VersionCompareFunctionDynamicReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/VersionCompareFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\XMLReaderOpenReturnTypeExtension' => __DIR__ . '/../..' . '/src/Type/Php/XMLReaderOpenReturnTypeExtension.php', 'PHPStan\\Type\\RecursionGuard' => __DIR__ . '/../..' . '/src/Type/RecursionGuard.php', 'PHPStan\\Type\\Regex\\RegexAlternation' => __DIR__ . '/../..' . '/src/Type/Regex/RegexAlternation.php', 'PHPStan\\Type\\Regex\\RegexAstWalkResult' => __DIR__ . '/../..' . '/src/Type/Regex/RegexAstWalkResult.php', 'PHPStan\\Type\\Regex\\RegexCapturingGroup' => __DIR__ . '/../..' . '/src/Type/Regex/RegexCapturingGroup.php', 'PHPStan\\Type\\Regex\\RegexExpressionHelper' => __DIR__ . '/../..' . '/src/Type/Regex/RegexExpressionHelper.php', 'PHPStan\\Type\\Regex\\RegexGroupParser' => __DIR__ . '/../..' . '/src/Type/Regex/RegexGroupParser.php', 'PHPStan\\Type\\Regex\\RegexGroupWalkResult' => __DIR__ . '/../..' . '/src/Type/Regex/RegexGroupWalkResult.php', 'PHPStan\\Type\\Regex\\RegexNonCapturingGroup' => __DIR__ . '/../..' . '/src/Type/Regex/RegexNonCapturingGroup.php', 'PHPStan\\Type\\ResourceType' => __DIR__ . '/../..' . '/src/Type/ResourceType.php', 'PHPStan\\Type\\SimultaneousTypeTraverser' => __DIR__ . '/../..' . '/src/Type/SimultaneousTypeTraverser.php', 'PHPStan\\Type\\StaticMethodParameterClosureTypeExtension' => __DIR__ . '/../..' . '/src/Type/StaticMethodParameterClosureTypeExtension.php', 'PHPStan\\Type\\StaticMethodParameterOutTypeExtension' => __DIR__ . '/../..' . '/src/Type/StaticMethodParameterOutTypeExtension.php', 'PHPStan\\Type\\StaticMethodTypeSpecifyingExtension' => __DIR__ . '/../..' . '/src/Type/StaticMethodTypeSpecifyingExtension.php', 'PHPStan\\Type\\StaticType' => __DIR__ . '/../..' . '/src/Type/StaticType.php', 'PHPStan\\Type\\StaticTypeFactory' => __DIR__ . '/../..' . '/src/Type/StaticTypeFactory.php', 'PHPStan\\Type\\StrictMixedType' => __DIR__ . '/../..' . '/src/Type/StrictMixedType.php', 'PHPStan\\Type\\StringAlwaysAcceptingObjectWithToStringType' => __DIR__ . '/../..' . '/src/Type/StringAlwaysAcceptingObjectWithToStringType.php', 'PHPStan\\Type\\StringType' => __DIR__ . '/../..' . '/src/Type/StringType.php', 'PHPStan\\Type\\SubtractableType' => __DIR__ . '/../..' . '/src/Type/SubtractableType.php', 'PHPStan\\Type\\ThisType' => __DIR__ . '/../..' . '/src/Type/ThisType.php', 'PHPStan\\Type\\Traits\\ConstantNumericComparisonTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/ConstantNumericComparisonTypeTrait.php', 'PHPStan\\Type\\Traits\\ConstantScalarTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/ConstantScalarTypeTrait.php', 'PHPStan\\Type\\Traits\\FalseyBooleanTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/FalseyBooleanTypeTrait.php', 'PHPStan\\Type\\Traits\\LateResolvableTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/LateResolvableTypeTrait.php', 'PHPStan\\Type\\Traits\\MaybeArrayTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/MaybeArrayTypeTrait.php', 'PHPStan\\Type\\Traits\\MaybeCallableTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/MaybeCallableTypeTrait.php', 'PHPStan\\Type\\Traits\\MaybeIterableTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/MaybeIterableTypeTrait.php', 'PHPStan\\Type\\Traits\\MaybeObjectTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/MaybeObjectTypeTrait.php', 'PHPStan\\Type\\Traits\\MaybeOffsetAccessibleTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/MaybeOffsetAccessibleTypeTrait.php', 'PHPStan\\Type\\Traits\\NonArrayTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/NonArrayTypeTrait.php', 'PHPStan\\Type\\Traits\\NonCallableTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/NonCallableTypeTrait.php', 'PHPStan\\Type\\Traits\\NonGeneralizableTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/NonGeneralizableTypeTrait.php', 'PHPStan\\Type\\Traits\\NonGenericTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/NonGenericTypeTrait.php', 'PHPStan\\Type\\Traits\\NonIterableTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/NonIterableTypeTrait.php', 'PHPStan\\Type\\Traits\\NonObjectTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/NonObjectTypeTrait.php', 'PHPStan\\Type\\Traits\\NonOffsetAccessibleTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/NonOffsetAccessibleTypeTrait.php', 'PHPStan\\Type\\Traits\\NonRemoveableTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/NonRemoveableTypeTrait.php', 'PHPStan\\Type\\Traits\\ObjectTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/ObjectTypeTrait.php', 'PHPStan\\Type\\Traits\\TruthyBooleanTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/TruthyBooleanTypeTrait.php', 'PHPStan\\Type\\Traits\\UndecidedBooleanTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/UndecidedBooleanTypeTrait.php', 'PHPStan\\Type\\Traits\\UndecidedComparisonCompoundTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/UndecidedComparisonCompoundTypeTrait.php', 'PHPStan\\Type\\Traits\\UndecidedComparisonTypeTrait' => __DIR__ . '/../..' . '/src/Type/Traits/UndecidedComparisonTypeTrait.php', 'PHPStan\\Type\\Type' => __DIR__ . '/../..' . '/src/Type/Type.php', 'PHPStan\\Type\\TypeAlias' => __DIR__ . '/../..' . '/src/Type/TypeAlias.php', 'PHPStan\\Type\\TypeAliasResolver' => __DIR__ . '/../..' . '/src/Type/TypeAliasResolver.php', 'PHPStan\\Type\\TypeAliasResolverProvider' => __DIR__ . '/../..' . '/src/Type/TypeAliasResolverProvider.php', 'PHPStan\\Type\\TypeCombinator' => __DIR__ . '/../..' . '/src/Type/TypeCombinator.php', 'PHPStan\\Type\\TypeResult' => __DIR__ . '/../..' . '/src/Type/TypeResult.php', 'PHPStan\\Type\\TypeTraverser' => __DIR__ . '/../..' . '/src/Type/TypeTraverser.php', 'PHPStan\\Type\\TypeUtils' => __DIR__ . '/../..' . '/src/Type/TypeUtils.php', 'PHPStan\\Type\\TypeWithClassName' => __DIR__ . '/../..' . '/src/Type/TypeWithClassName.php', 'PHPStan\\Type\\TypehintHelper' => __DIR__ . '/../..' . '/src/Type/TypehintHelper.php', 'PHPStan\\Type\\UnionType' => __DIR__ . '/../..' . '/src/Type/UnionType.php', 'PHPStan\\Type\\UnionTypeHelper' => __DIR__ . '/../..' . '/src/Type/UnionTypeHelper.php', 'PHPStan\\Type\\UsefulTypeAliasResolver' => __DIR__ . '/../..' . '/src/Type/UsefulTypeAliasResolver.php', 'PHPStan\\Type\\ValueOfType' => __DIR__ . '/../..' . '/src/Type/ValueOfType.php', 'PHPStan\\Type\\VerbosityLevel' => __DIR__ . '/../..' . '/src/Type/VerbosityLevel.php', 'PHPStan\\Type\\VoidType' => __DIR__ . '/../..' . '/src/Type/VoidType.php', 'PhpParser\\Builder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder.php', 'PhpParser\\BuilderFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php', 'PhpParser\\BuilderHelpers' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php', 'PhpParser\\Builder\\ClassConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php', 'PhpParser\\Builder\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php', 'PhpParser\\Builder\\Declaration' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php', 'PhpParser\\Builder\\EnumCase' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php', 'PhpParser\\Builder\\Enum_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Enum_.php', 'PhpParser\\Builder\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php', 'PhpParser\\Builder\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php', 'PhpParser\\Builder\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php', 'PhpParser\\Builder\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Method.php', 'PhpParser\\Builder\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php', 'PhpParser\\Builder\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Param.php', 'PhpParser\\Builder\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Property.php', 'PhpParser\\Builder\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php', 'PhpParser\\Builder\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php', 'PhpParser\\Builder\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php', 'PhpParser\\Builder\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php', 'PhpParser\\Comment' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment.php', 'PhpParser\\Comment\\Doc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php', 'PhpParser\\ConstExprEvaluationException' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php', 'PhpParser\\ConstExprEvaluator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php', 'PhpParser\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Error.php', 'PhpParser\\ErrorHandler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php', 'PhpParser\\ErrorHandler\\Collecting' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php', 'PhpParser\\ErrorHandler\\Throwing' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php', 'PhpParser\\Internal\\DiffElem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php', 'PhpParser\\Internal\\Differ' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php', 'PhpParser\\Internal\\PrintableNewAnonClassNode' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php', 'PhpParser\\Internal\\TokenStream' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php', 'PhpParser\\JsonDecoder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php', 'PhpParser\\Lexer' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer.php', 'PhpParser\\Lexer\\Emulative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php', 'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\CoaleseEqualTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\EnumTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\ExplicitOctalEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\FlexibleDocStringEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\FnTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', 'PhpParser\\NameContext' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NameContext.php', 'PhpParser\\Node' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node.php', 'PhpParser\\NodeAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php', 'PhpParser\\NodeDumper' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeDumper.php', 'PhpParser\\NodeFinder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeFinder.php', 'PhpParser\\NodeTraverser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php', 'PhpParser\\NodeTraverserInterface' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php', 'PhpParser\\NodeVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php', 'PhpParser\\NodeVisitorAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php', 'PhpParser\\NodeVisitor\\CloningVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php', 'PhpParser\\NodeVisitor\\FindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php', 'PhpParser\\NodeVisitor\\FirstFindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php', 'PhpParser\\NodeVisitor\\NameResolver' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php', 'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php', 'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php', 'PhpParser\\Node\\Arg' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Arg.php', 'PhpParser\\Node\\Attribute' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php', 'PhpParser\\Node\\AttributeGroup' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php', 'PhpParser\\Node\\ComplexType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/ComplexType.php', 'PhpParser\\Node\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Const_.php', 'PhpParser\\Node\\Expr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr.php', 'PhpParser\\Node\\Expr\\ArrayDimFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php', 'PhpParser\\Node\\Expr\\ArrayItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php', 'PhpParser\\Node\\Expr\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php', 'PhpParser\\Node\\Expr\\ArrowFunction' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php', 'PhpParser\\Node\\Expr\\Assign' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php', 'PhpParser\\Node\\Expr\\AssignOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php', 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php', 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php', 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php', 'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php', 'PhpParser\\Node\\Expr\\AssignOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php', 'PhpParser\\Node\\Expr\\AssignOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php', 'PhpParser\\Node\\Expr\\AssignOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php', 'PhpParser\\Node\\Expr\\AssignOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php', 'PhpParser\\Node\\Expr\\AssignOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php', 'PhpParser\\Node\\Expr\\AssignOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php', 'PhpParser\\Node\\Expr\\AssignOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php', 'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php', 'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php', 'PhpParser\\Node\\Expr\\AssignRef' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php', 'PhpParser\\Node\\Expr\\BinaryOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php', 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php', 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php', 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php', 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php', 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php', 'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php', 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php', 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php', 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php', 'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php', 'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php', 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php', 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php', 'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php', 'PhpParser\\Node\\Expr\\BitwiseNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php', 'PhpParser\\Node\\Expr\\BooleanNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php', 'PhpParser\\Node\\Expr\\CallLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php', 'PhpParser\\Node\\Expr\\Cast' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php', 'PhpParser\\Node\\Expr\\Cast\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php', 'PhpParser\\Node\\Expr\\Cast\\Bool_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php', 'PhpParser\\Node\\Expr\\Cast\\Double' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php', 'PhpParser\\Node\\Expr\\Cast\\Int_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php', 'PhpParser\\Node\\Expr\\Cast\\Object_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php', 'PhpParser\\Node\\Expr\\Cast\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php', 'PhpParser\\Node\\Expr\\Cast\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php', 'PhpParser\\Node\\Expr\\ClassConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php', 'PhpParser\\Node\\Expr\\Clone_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php', 'PhpParser\\Node\\Expr\\Closure' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php', 'PhpParser\\Node\\Expr\\ClosureUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php', 'PhpParser\\Node\\Expr\\ConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php', 'PhpParser\\Node\\Expr\\Empty_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php', 'PhpParser\\Node\\Expr\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php', 'PhpParser\\Node\\Expr\\ErrorSuppress' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php', 'PhpParser\\Node\\Expr\\Eval_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php', 'PhpParser\\Node\\Expr\\Exit_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php', 'PhpParser\\Node\\Expr\\FuncCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php', 'PhpParser\\Node\\Expr\\Include_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php', 'PhpParser\\Node\\Expr\\Instanceof_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php', 'PhpParser\\Node\\Expr\\Isset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php', 'PhpParser\\Node\\Expr\\List_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php', 'PhpParser\\Node\\Expr\\Match_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php', 'PhpParser\\Node\\Expr\\MethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php', 'PhpParser\\Node\\Expr\\New_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php', 'PhpParser\\Node\\Expr\\NullsafeMethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php', 'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php', 'PhpParser\\Node\\Expr\\PostDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php', 'PhpParser\\Node\\Expr\\PostInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php', 'PhpParser\\Node\\Expr\\PreDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php', 'PhpParser\\Node\\Expr\\PreInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php', 'PhpParser\\Node\\Expr\\Print_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php', 'PhpParser\\Node\\Expr\\PropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php', 'PhpParser\\Node\\Expr\\ShellExec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php', 'PhpParser\\Node\\Expr\\StaticCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php', 'PhpParser\\Node\\Expr\\StaticPropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php', 'PhpParser\\Node\\Expr\\Ternary' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php', 'PhpParser\\Node\\Expr\\Throw_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php', 'PhpParser\\Node\\Expr\\UnaryMinus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php', 'PhpParser\\Node\\Expr\\UnaryPlus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php', 'PhpParser\\Node\\Expr\\Variable' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php', 'PhpParser\\Node\\Expr\\YieldFrom' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php', 'PhpParser\\Node\\Expr\\Yield_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php', 'PhpParser\\Node\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php', 'PhpParser\\Node\\Identifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php', 'PhpParser\\Node\\IntersectionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php', 'PhpParser\\Node\\MatchArm' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php', 'PhpParser\\Node\\Name' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name.php', 'PhpParser\\Node\\Name\\FullyQualified' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php', 'PhpParser\\Node\\Name\\Relative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php', 'PhpParser\\Node\\NullableType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php', 'PhpParser\\Node\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Param.php', 'PhpParser\\Node\\Scalar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php', 'PhpParser\\Node\\Scalar\\DNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php', 'PhpParser\\Node\\Scalar\\Encapsed' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php', 'PhpParser\\Node\\Scalar\\EncapsedStringPart' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php', 'PhpParser\\Node\\Scalar\\LNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php', 'PhpParser\\Node\\Scalar\\MagicConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php', 'PhpParser\\Node\\Scalar\\MagicConst\\File' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Line' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php', 'PhpParser\\Node\\Scalar\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php', 'PhpParser\\Node\\Stmt' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php', 'PhpParser\\Node\\Stmt\\Break_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php', 'PhpParser\\Node\\Stmt\\Case_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php', 'PhpParser\\Node\\Stmt\\Catch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php', 'PhpParser\\Node\\Stmt\\ClassConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php', 'PhpParser\\Node\\Stmt\\ClassLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php', 'PhpParser\\Node\\Stmt\\ClassMethod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php', 'PhpParser\\Node\\Stmt\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php', 'PhpParser\\Node\\Stmt\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php', 'PhpParser\\Node\\Stmt\\Continue_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php', 'PhpParser\\Node\\Stmt\\DeclareDeclare' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php', 'PhpParser\\Node\\Stmt\\Declare_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php', 'PhpParser\\Node\\Stmt\\Do_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php', 'PhpParser\\Node\\Stmt\\Echo_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php', 'PhpParser\\Node\\Stmt\\ElseIf_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php', 'PhpParser\\Node\\Stmt\\Else_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php', 'PhpParser\\Node\\Stmt\\EnumCase' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php', 'PhpParser\\Node\\Stmt\\Enum_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php', 'PhpParser\\Node\\Stmt\\Expression' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php', 'PhpParser\\Node\\Stmt\\Finally_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php', 'PhpParser\\Node\\Stmt\\For_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php', 'PhpParser\\Node\\Stmt\\Foreach_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php', 'PhpParser\\Node\\Stmt\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php', 'PhpParser\\Node\\Stmt\\Global_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php', 'PhpParser\\Node\\Stmt\\Goto_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php', 'PhpParser\\Node\\Stmt\\GroupUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php', 'PhpParser\\Node\\Stmt\\HaltCompiler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php', 'PhpParser\\Node\\Stmt\\If_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php', 'PhpParser\\Node\\Stmt\\InlineHTML' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php', 'PhpParser\\Node\\Stmt\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php', 'PhpParser\\Node\\Stmt\\Label' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php', 'PhpParser\\Node\\Stmt\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php', 'PhpParser\\Node\\Stmt\\Nop' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php', 'PhpParser\\Node\\Stmt\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php', 'PhpParser\\Node\\Stmt\\PropertyProperty' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php', 'PhpParser\\Node\\Stmt\\Return_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php', 'PhpParser\\Node\\Stmt\\StaticVar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php', 'PhpParser\\Node\\Stmt\\Static_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php', 'PhpParser\\Node\\Stmt\\Switch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php', 'PhpParser\\Node\\Stmt\\Throw_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php', 'PhpParser\\Node\\Stmt\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php', 'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php', 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php', 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php', 'PhpParser\\Node\\Stmt\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php', 'PhpParser\\Node\\Stmt\\TryCatch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php', 'PhpParser\\Node\\Stmt\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php', 'PhpParser\\Node\\Stmt\\UseUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php', 'PhpParser\\Node\\Stmt\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php', 'PhpParser\\Node\\Stmt\\While_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php', 'PhpParser\\Node\\UnionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php', 'PhpParser\\Node\\VarLikeIdentifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php', 'PhpParser\\Node\\VariadicPlaceholder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php', 'PhpParser\\Parser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser.php', 'PhpParser\\ParserAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php', 'PhpParser\\ParserFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserFactory.php', 'PhpParser\\Parser\\Multiple' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Multiple.php', 'PhpParser\\Parser\\Php5' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php5.php', 'PhpParser\\Parser\\Php7' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php', 'PhpParser\\Parser\\Tokens' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Tokens.php', 'PhpParser\\PrettyPrinterAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php', 'PhpParser\\PrettyPrinter\\Standard' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php', 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', 'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/Grapheme.php', 'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Normalizer.php', 'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php', 'Symfony\\Polyfill\\Php73\\Php73' => __DIR__ . '/..' . '/symfony/polyfill-php73/Php73.php', 'Symfony\\Polyfill\\Php74\\Php74' => __DIR__ . '/..' . '/symfony/polyfill-php74/Php74.php', 'Symfony\\Polyfill\\Php80\\Php80' => __DIR__ . '/..' . '/symfony/polyfill-php80/Php80.php', 'Symfony\\Polyfill\\Php80\\PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/PhpToken.php', 'Symfony\\Polyfill\\Php81\\Php81' => __DIR__ . '/..' . '/symfony/polyfill-php81/Php81.php', 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', '_PHPStan_b22655c3f\\Clue\\React\\NDJson\\Decoder' => __DIR__ . '/..' . '/clue/ndjson-react/src/Decoder.php', '_PHPStan_b22655c3f\\Clue\\React\\NDJson\\Encoder' => __DIR__ . '/..' . '/clue/ndjson-react/src/Encoder.php', '_PHPStan_b22655c3f\\Composer\\CaBundle\\CaBundle' => __DIR__ . '/..' . '/composer/ca-bundle/src/CaBundle.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\MatchAllResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\MatchAllStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllStrictGroupsResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\MatchAllWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllWithOffsetsResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\MatchResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\MatchStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchStrictGroupsResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\MatchWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchWithOffsetsResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\PcreException' => __DIR__ . '/..' . '/composer/pcre/src/PcreException.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\Preg' => __DIR__ . '/..' . '/composer/pcre/src/Preg.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\Regex' => __DIR__ . '/..' . '/composer/pcre/src/Regex.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\ReplaceResult' => __DIR__ . '/..' . '/composer/pcre/src/ReplaceResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\UnexpectedNullMatchException' => __DIR__ . '/..' . '/composer/pcre/src/UnexpectedNullMatchException.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Comparator' => __DIR__ . '/..' . '/composer/semver/src/Comparator.php', '_PHPStan_b22655c3f\\Composer\\Semver\\CompilingMatcher' => __DIR__ . '/..' . '/composer/semver/src/CompilingMatcher.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Constraint\\Bound' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Bound.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Constraint\\Constraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Constraint.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Constraint\\ConstraintInterface' => __DIR__ . '/..' . '/composer/semver/src/Constraint/ConstraintInterface.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Constraint\\MatchAllConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchAllConstraint.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Constraint\\MatchNoneConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchNoneConstraint.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Constraint\\MultiConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MultiConstraint.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Interval' => __DIR__ . '/..' . '/composer/semver/src/Interval.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Intervals' => __DIR__ . '/..' . '/composer/semver/src/Intervals.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Semver' => __DIR__ . '/..' . '/composer/semver/src/Semver.php', '_PHPStan_b22655c3f\\Composer\\Semver\\VersionParser' => __DIR__ . '/..' . '/composer/semver/src/VersionParser.php', '_PHPStan_b22655c3f\\Composer\\XdebugHandler\\PhpConfig' => __DIR__ . '/..' . '/composer/xdebug-handler/src/PhpConfig.php', '_PHPStan_b22655c3f\\Composer\\XdebugHandler\\Process' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Process.php', '_PHPStan_b22655c3f\\Composer\\XdebugHandler\\Status' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Status.php', '_PHPStan_b22655c3f\\Composer\\XdebugHandler\\XdebugHandler' => __DIR__ . '/..' . '/composer/xdebug-handler/src/XdebugHandler.php', '_PHPStan_b22655c3f\\Evenement\\EventEmitter' => __DIR__ . '/..' . '/evenement/evenement/src/EventEmitter.php', '_PHPStan_b22655c3f\\Evenement\\EventEmitterInterface' => __DIR__ . '/..' . '/evenement/evenement/src/EventEmitterInterface.php', '_PHPStan_b22655c3f\\Evenement\\EventEmitterTrait' => __DIR__ . '/..' . '/evenement/evenement/src/EventEmitterTrait.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\CpuCoreCounter' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/CpuCoreCounter.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Diagnoser' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Diagnoser.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Executor\\ProcOpenExecutor' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Executor\\ProcessExecutor' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\CmiCmdletLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\CmiCmdletPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\EnvVariableFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\LscpuLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\LscpuPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\NProcFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NProcFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\NullCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\OnlyInPowerShellFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\OnlyOnOSFamilyFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\ProcOpenBasedFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\SkipOnOSFamilyFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\WindowsRegistryLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\WmicLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\ParallelisationResult' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/ParallelisationResult.php', '_PHPStan_b22655c3f\\Fig\\Http\\Message\\RequestMethodInterface' => __DIR__ . '/..' . '/fig/http-message-util/src/RequestMethodInterface.php', '_PHPStan_b22655c3f\\Fig\\Http\\Message\\StatusCodeInterface' => __DIR__ . '/..' . '/fig/http-message-util/src/StatusCodeInterface.php', '_PHPStan_b22655c3f\\Nette\\ArgumentOutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Bootstrap\\Configurator' => __DIR__ . '/..' . '/nette/bootstrap/src/Bootstrap/Configurator.php', '_PHPStan_b22655c3f\\Nette\\Bootstrap\\Extensions\\ConstantsExtension' => __DIR__ . '/..' . '/nette/bootstrap/src/Bootstrap/Extensions/ConstantsExtension.php', '_PHPStan_b22655c3f\\Nette\\Bootstrap\\Extensions\\PhpExtension' => __DIR__ . '/..' . '/nette/bootstrap/src/Bootstrap/Extensions/PhpExtension.php', '_PHPStan_b22655c3f\\Nette\\Bridges\\DITracy\\ContainerPanel' => __DIR__ . '/..' . '/nette/di/src/Bridges/DITracy/ContainerPanel.php', '_PHPStan_b22655c3f\\Nette\\Configurator' => __DIR__ . '/..' . '/nette/bootstrap/src/Configurator.php', '_PHPStan_b22655c3f\\Nette\\DI\\Attributes\\Inject' => __DIR__ . '/..' . '/nette/di/src/DI/Attributes/Inject.php', '_PHPStan_b22655c3f\\Nette\\DI\\Autowiring' => __DIR__ . '/..' . '/nette/di/src/DI/Autowiring.php', '_PHPStan_b22655c3f\\Nette\\DI\\Compiler' => __DIR__ . '/..' . '/nette/di/src/DI/Compiler.php', '_PHPStan_b22655c3f\\Nette\\DI\\CompilerExtension' => __DIR__ . '/..' . '/nette/di/src/DI/CompilerExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Config\\Adapter' => __DIR__ . '/..' . '/nette/di/src/DI/Config/Adapter.php', '_PHPStan_b22655c3f\\Nette\\DI\\Config\\Adapters\\NeonAdapter' => __DIR__ . '/..' . '/nette/di/src/DI/Config/Adapters/NeonAdapter.php', '_PHPStan_b22655c3f\\Nette\\DI\\Config\\Adapters\\PhpAdapter' => __DIR__ . '/..' . '/nette/di/src/DI/Config/Adapters/PhpAdapter.php', '_PHPStan_b22655c3f\\Nette\\DI\\Config\\Helpers' => __DIR__ . '/..' . '/nette/di/src/DI/Config/Helpers.php', '_PHPStan_b22655c3f\\Nette\\DI\\Config\\IAdapter' => __DIR__ . '/..' . '/nette/di/src/compatibility.php', '_PHPStan_b22655c3f\\Nette\\DI\\Config\\Loader' => __DIR__ . '/..' . '/nette/di/src/DI/Config/Loader.php', '_PHPStan_b22655c3f\\Nette\\DI\\Container' => __DIR__ . '/..' . '/nette/di/src/DI/Container.php', '_PHPStan_b22655c3f\\Nette\\DI\\ContainerBuilder' => __DIR__ . '/..' . '/nette/di/src/DI/ContainerBuilder.php', '_PHPStan_b22655c3f\\Nette\\DI\\ContainerLoader' => __DIR__ . '/..' . '/nette/di/src/DI/ContainerLoader.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\AccessorDefinition' => __DIR__ . '/..' . '/nette/di/src/DI/Definitions/AccessorDefinition.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\Definition' => __DIR__ . '/..' . '/nette/di/src/DI/Definitions/Definition.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\FactoryDefinition' => __DIR__ . '/..' . '/nette/di/src/DI/Definitions/FactoryDefinition.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\ImportedDefinition' => __DIR__ . '/..' . '/nette/di/src/DI/Definitions/ImportedDefinition.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\LocatorDefinition' => __DIR__ . '/..' . '/nette/di/src/DI/Definitions/LocatorDefinition.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\Reference' => __DIR__ . '/..' . '/nette/di/src/DI/Definitions/Reference.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\ServiceDefinition' => __DIR__ . '/..' . '/nette/di/src/DI/Definitions/ServiceDefinition.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\Statement' => __DIR__ . '/..' . '/nette/di/src/DI/Definitions/Statement.php', '_PHPStan_b22655c3f\\Nette\\DI\\DependencyChecker' => __DIR__ . '/..' . '/nette/di/src/DI/DependencyChecker.php', '_PHPStan_b22655c3f\\Nette\\DI\\DynamicParameter' => __DIR__ . '/..' . '/nette/di/src/DI/DynamicParameter.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\ConstantsExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/ConstantsExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\DIExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/DIExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\DecoratorExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/DecoratorExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\DefinitionSchema' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/DefinitionSchema.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\ExtensionsExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/ExtensionsExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\InjectExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/InjectExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\ParametersExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/ParametersExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\PhpExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/PhpExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\SearchExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/SearchExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\ServicesExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/ServicesExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Helpers' => __DIR__ . '/..' . '/nette/di/src/DI/Helpers.php', '_PHPStan_b22655c3f\\Nette\\DI\\InvalidConfigurationException' => __DIR__ . '/..' . '/nette/di/src/DI/exceptions.php', '_PHPStan_b22655c3f\\Nette\\DI\\MissingServiceException' => __DIR__ . '/..' . '/nette/di/src/DI/exceptions.php', '_PHPStan_b22655c3f\\Nette\\DI\\NotAllowedDuringResolvingException' => __DIR__ . '/..' . '/nette/di/src/DI/exceptions.php', '_PHPStan_b22655c3f\\Nette\\DI\\PhpGenerator' => __DIR__ . '/..' . '/nette/di/src/DI/PhpGenerator.php', '_PHPStan_b22655c3f\\Nette\\DI\\Resolver' => __DIR__ . '/..' . '/nette/di/src/DI/Resolver.php', '_PHPStan_b22655c3f\\Nette\\DI\\ServiceCreationException' => __DIR__ . '/..' . '/nette/di/src/DI/exceptions.php', '_PHPStan_b22655c3f\\Nette\\DI\\ServiceDefinition' => __DIR__ . '/..' . '/nette/di/src/compatibility.php', '_PHPStan_b22655c3f\\Nette\\DI\\Statement' => __DIR__ . '/..' . '/nette/di/src/compatibility.php', '_PHPStan_b22655c3f\\Nette\\DeprecatedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\DirectoryNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\FileNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\HtmlStringable' => __DIR__ . '/..' . '/nette/utils/src/HtmlStringable.php', '_PHPStan_b22655c3f\\Nette\\IOException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\InvalidArgumentException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\InvalidStateException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Iterators\\CachingIterator' => __DIR__ . '/..' . '/nette/utils/src/Iterators/CachingIterator.php', '_PHPStan_b22655c3f\\Nette\\Iterators\\Mapper' => __DIR__ . '/..' . '/nette/utils/src/Iterators/Mapper.php', '_PHPStan_b22655c3f\\Nette\\Loaders\\RobotLoader' => __DIR__ . '/..' . '/nette/robot-loader/src/RobotLoader/RobotLoader.php', '_PHPStan_b22655c3f\\Nette\\Localization\\ITranslator' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php', '_PHPStan_b22655c3f\\Nette\\Localization\\Translator' => __DIR__ . '/..' . '/nette/utils/src/Translator.php', '_PHPStan_b22655c3f\\Nette\\MemberAccessException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Decoder' => __DIR__ . '/..' . '/nette/neon/src/Neon/Decoder.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Encoder' => __DIR__ . '/..' . '/nette/neon/src/Neon/Encoder.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Entity' => __DIR__ . '/..' . '/nette/neon/src/Neon/Entity.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Exception' => __DIR__ . '/..' . '/nette/neon/src/Neon/Exception.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Lexer' => __DIR__ . '/..' . '/nette/neon/src/Neon/Lexer.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Neon' => __DIR__ . '/..' . '/nette/neon/src/Neon/Neon.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node' => __DIR__ . '/..' . '/nette/neon/src/Neon/Node.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\ArrayItemNode' => __DIR__ . '/..' . '/nette/neon/src/Neon/Node/ArrayItemNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\ArrayNode' => __DIR__ . '/..' . '/nette/neon/src/Neon/Node/ArrayNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\BlockArrayNode' => __DIR__ . '/..' . '/nette/neon/src/Neon/Node/BlockArrayNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\EntityChainNode' => __DIR__ . '/..' . '/nette/neon/src/Neon/Node/EntityChainNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\EntityNode' => __DIR__ . '/..' . '/nette/neon/src/Neon/Node/EntityNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\InlineArrayNode' => __DIR__ . '/..' . '/nette/neon/src/Neon/Node/InlineArrayNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\LiteralNode' => __DIR__ . '/..' . '/nette/neon/src/Neon/Node/LiteralNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\StringNode' => __DIR__ . '/..' . '/nette/neon/src/Neon/Node/StringNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Parser' => __DIR__ . '/..' . '/nette/neon/src/Neon/Parser.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Token' => __DIR__ . '/..' . '/nette/neon/src/Neon/Token.php', '_PHPStan_b22655c3f\\Nette\\Neon\\TokenStream' => __DIR__ . '/..' . '/nette/neon/src/Neon/TokenStream.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Traverser' => __DIR__ . '/..' . '/nette/neon/src/Neon/Traverser.php', '_PHPStan_b22655c3f\\Nette\\NotImplementedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\NotSupportedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\OutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Attribute' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Attribute.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\ClassType' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/ClassType.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Closure' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Closure.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Constant' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Constant.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Dumper' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Dumper.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\EnumCase' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/EnumCase.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Extractor' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Extractor.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Factory' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Factory.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\GlobalFunction' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/GlobalFunction.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Helpers' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Helpers.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Literal' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Literal.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Method' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Method.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Parameter' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Parameter.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\PhpFile' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/PhpFile.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\PhpLiteral' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/PhpLiteral.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\PhpNamespace' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/PhpNamespace.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Printer' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Printer.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\PromotedParameter' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/PromotedParameter.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Property' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Property.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\PsrPrinter' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/PsrPrinter.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\TraitUse' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/TraitUse.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Traits\\AttributeAware' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Traits/AttributeAware.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Traits\\CommentAware' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Traits/CommentAware.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Traits\\FunctionLike' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Traits/FunctionLike.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Traits\\NameAware' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Traits/NameAware.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Traits\\VisibilityAware' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Traits/VisibilityAware.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Type' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Type.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Context' => __DIR__ . '/..' . '/nette/schema/src/Schema/Context.php', '_PHPStan_b22655c3f\\Nette\\Schema\\DynamicParameter' => __DIR__ . '/..' . '/nette/schema/src/Schema/DynamicParameter.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Elements\\AnyOf' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/AnyOf.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Elements\\Base' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/Base.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Elements\\Structure' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/Structure.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Elements\\Type' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/Type.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Expect' => __DIR__ . '/..' . '/nette/schema/src/Schema/Expect.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Helpers' => __DIR__ . '/..' . '/nette/schema/src/Schema/Helpers.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Message' => __DIR__ . '/..' . '/nette/schema/src/Schema/Message.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Processor' => __DIR__ . '/..' . '/nette/schema/src/Schema/Processor.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Schema' => __DIR__ . '/..' . '/nette/schema/src/Schema/Schema.php', '_PHPStan_b22655c3f\\Nette\\Schema\\ValidationException' => __DIR__ . '/..' . '/nette/schema/src/Schema/ValidationException.php', '_PHPStan_b22655c3f\\Nette\\SmartObject' => __DIR__ . '/..' . '/nette/utils/src/SmartObject.php', '_PHPStan_b22655c3f\\Nette\\StaticClass' => __DIR__ . '/..' . '/nette/utils/src/StaticClass.php', '_PHPStan_b22655c3f\\Nette\\UnexpectedValueException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Utils\\ArrayHash' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayHash.php', '_PHPStan_b22655c3f\\Nette\\Utils\\ArrayList' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayList.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Arrays' => __DIR__ . '/..' . '/nette/utils/src/Utils/Arrays.php', '_PHPStan_b22655c3f\\Nette\\Utils\\AssertionException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Callback' => __DIR__ . '/..' . '/nette/utils/src/Utils/Callback.php', '_PHPStan_b22655c3f\\Nette\\Utils\\DateTime' => __DIR__ . '/..' . '/nette/utils/src/Utils/DateTime.php', '_PHPStan_b22655c3f\\Nette\\Utils\\FileSystem' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileSystem.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Finder' => __DIR__ . '/..' . '/nette/finder/src/Utils/Finder.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Floats' => __DIR__ . '/..' . '/nette/utils/src/Utils/Floats.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Helpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/Helpers.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Html' => __DIR__ . '/..' . '/nette/utils/src/Utils/Html.php', '_PHPStan_b22655c3f\\Nette\\Utils\\IHtmlString' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Image' => __DIR__ . '/..' . '/nette/utils/src/Utils/Image.php', '_PHPStan_b22655c3f\\Nette\\Utils\\ImageException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Json' => __DIR__ . '/..' . '/nette/utils/src/Utils/Json.php', '_PHPStan_b22655c3f\\Nette\\Utils\\JsonException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Utils\\ObjectHelpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectHelpers.php', '_PHPStan_b22655c3f\\Nette\\Utils\\ObjectMixin' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectMixin.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Paginator' => __DIR__ . '/..' . '/nette/utils/src/Utils/Paginator.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Random' => __DIR__ . '/..' . '/nette/utils/src/Utils/Random.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Reflection' => __DIR__ . '/..' . '/nette/utils/src/Utils/Reflection.php', '_PHPStan_b22655c3f\\Nette\\Utils\\RegexpException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Strings' => __DIR__ . '/..' . '/nette/utils/src/Utils/Strings.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Type' => __DIR__ . '/..' . '/nette/utils/src/Utils/Type.php', '_PHPStan_b22655c3f\\Nette\\Utils\\UnknownImageFileException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Validators' => __DIR__ . '/..' . '/nette/utils/src/Utils/Validators.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\CiDetector' => __DIR__ . '/..' . '/ondram/ci-detector/src/CiDetector.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\AbstractCi' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/AbstractCi.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\AppVeyor' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/AppVeyor.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\AwsCodeBuild' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/AwsCodeBuild.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Bamboo' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Bamboo.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\BitbucketPipelines' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/BitbucketPipelines.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Buddy' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Buddy.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\CiInterface' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/CiInterface.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Circle' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Circle.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Codeship' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Codeship.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Continuousphp' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Continuousphp.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Drone' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Drone.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\GitHubActions' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/GitHubActions.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\GitLab' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/GitLab.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Jenkins' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Jenkins.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\TeamCity' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/TeamCity.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Travis' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Travis.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Wercker' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Wercker.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Env' => __DIR__ . '/..' . '/ondram/ci-detector/src/Env.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Exception\\CiNotDetectedException' => __DIR__ . '/..' . '/ondram/ci-detector/src/Exception/CiNotDetectedException.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\TrinaryLogic' => __DIR__ . '/..' . '/ondram/ci-detector/src/TrinaryLogic.php', '_PHPStan_b22655c3f\\Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php', '_PHPStan_b22655c3f\\Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php', '_PHPStan_b22655c3f\\Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\MessageInterface' => __DIR__ . '/..' . '/psr/http-message/src/MessageInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\RequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/RequestInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\ResponseInterface' => __DIR__ . '/..' . '/psr/http-message/src/ResponseInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\ServerRequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/ServerRequestInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\StreamInterface' => __DIR__ . '/..' . '/psr/http-message/src/StreamInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php', '_PHPStan_b22655c3f\\Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/src/AbstractLogger.php', '_PHPStan_b22655c3f\\Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/src/InvalidArgumentException.php', '_PHPStan_b22655c3f\\Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/src/LogLevel.php', '_PHPStan_b22655c3f\\Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareInterface.php', '_PHPStan_b22655c3f\\Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareTrait.php', '_PHPStan_b22655c3f\\Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerInterface.php', '_PHPStan_b22655c3f\\Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerTrait.php', '_PHPStan_b22655c3f\\Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/src/NullLogger.php', '_PHPStan_b22655c3f\\React\\Cache\\ArrayCache' => __DIR__ . '/..' . '/react/cache/src/ArrayCache.php', '_PHPStan_b22655c3f\\React\\Cache\\CacheInterface' => __DIR__ . '/..' . '/react/cache/src/CacheInterface.php', '_PHPStan_b22655c3f\\React\\ChildProcess\\Process' => __DIR__ . '/..' . '/react/child-process/src/Process.php', '_PHPStan_b22655c3f\\React\\Dns\\BadServerException' => __DIR__ . '/..' . '/react/dns/src/BadServerException.php', '_PHPStan_b22655c3f\\React\\Dns\\Config\\Config' => __DIR__ . '/..' . '/react/dns/src/Config/Config.php', '_PHPStan_b22655c3f\\React\\Dns\\Config\\HostsFile' => __DIR__ . '/..' . '/react/dns/src/Config/HostsFile.php', '_PHPStan_b22655c3f\\React\\Dns\\Model\\Message' => __DIR__ . '/..' . '/react/dns/src/Model/Message.php', '_PHPStan_b22655c3f\\React\\Dns\\Model\\Record' => __DIR__ . '/..' . '/react/dns/src/Model/Record.php', '_PHPStan_b22655c3f\\React\\Dns\\Protocol\\BinaryDumper' => __DIR__ . '/..' . '/react/dns/src/Protocol/BinaryDumper.php', '_PHPStan_b22655c3f\\React\\Dns\\Protocol\\Parser' => __DIR__ . '/..' . '/react/dns/src/Protocol/Parser.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\CachingExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/CachingExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\CancellationException' => __DIR__ . '/..' . '/react/dns/src/Query/CancellationException.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\CoopExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/CoopExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\ExecutorInterface' => __DIR__ . '/..' . '/react/dns/src/Query/ExecutorInterface.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\FallbackExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/FallbackExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\HostsFileExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/HostsFileExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\Query' => __DIR__ . '/..' . '/react/dns/src/Query/Query.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\RetryExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/RetryExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\SelectiveTransportExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/SelectiveTransportExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\TcpTransportExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/TcpTransportExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\TimeoutException' => __DIR__ . '/..' . '/react/dns/src/Query/TimeoutException.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\TimeoutExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/TimeoutExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\UdpTransportExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/UdpTransportExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\RecordNotFoundException' => __DIR__ . '/..' . '/react/dns/src/RecordNotFoundException.php', '_PHPStan_b22655c3f\\React\\Dns\\Resolver\\Factory' => __DIR__ . '/..' . '/react/dns/src/Resolver/Factory.php', '_PHPStan_b22655c3f\\React\\Dns\\Resolver\\Resolver' => __DIR__ . '/..' . '/react/dns/src/Resolver/Resolver.php', '_PHPStan_b22655c3f\\React\\Dns\\Resolver\\ResolverInterface' => __DIR__ . '/..' . '/react/dns/src/Resolver/ResolverInterface.php', '_PHPStan_b22655c3f\\React\\EventLoop\\ExtEvLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtEvLoop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\ExtEventLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtEventLoop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\ExtLibevLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtLibevLoop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\ExtLibeventLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtLibeventLoop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\ExtUvLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtUvLoop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\Factory' => __DIR__ . '/..' . '/react/event-loop/src/Factory.php', '_PHPStan_b22655c3f\\React\\EventLoop\\Loop' => __DIR__ . '/..' . '/react/event-loop/src/Loop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\LoopInterface' => __DIR__ . '/..' . '/react/event-loop/src/LoopInterface.php', '_PHPStan_b22655c3f\\React\\EventLoop\\SignalsHandler' => __DIR__ . '/..' . '/react/event-loop/src/SignalsHandler.php', '_PHPStan_b22655c3f\\React\\EventLoop\\StreamSelectLoop' => __DIR__ . '/..' . '/react/event-loop/src/StreamSelectLoop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\Tick\\FutureTickQueue' => __DIR__ . '/..' . '/react/event-loop/src/Tick/FutureTickQueue.php', '_PHPStan_b22655c3f\\React\\EventLoop\\TimerInterface' => __DIR__ . '/..' . '/react/event-loop/src/TimerInterface.php', '_PHPStan_b22655c3f\\React\\EventLoop\\Timer\\Timer' => __DIR__ . '/..' . '/react/event-loop/src/Timer/Timer.php', '_PHPStan_b22655c3f\\React\\EventLoop\\Timer\\Timers' => __DIR__ . '/..' . '/react/event-loop/src/Timer/Timers.php', '_PHPStan_b22655c3f\\React\\Http\\Browser' => __DIR__ . '/..' . '/react/http/src/Browser.php', '_PHPStan_b22655c3f\\React\\Http\\Client\\Client' => __DIR__ . '/..' . '/react/http/src/Client/Client.php', '_PHPStan_b22655c3f\\React\\Http\\HttpServer' => __DIR__ . '/..' . '/react/http/src/HttpServer.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\AbstractMessage' => __DIR__ . '/..' . '/react/http/src/Io/AbstractMessage.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\AbstractRequest' => __DIR__ . '/..' . '/react/http/src/Io/AbstractRequest.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\BufferedBody' => __DIR__ . '/..' . '/react/http/src/Io/BufferedBody.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\ChunkedDecoder' => __DIR__ . '/..' . '/react/http/src/Io/ChunkedDecoder.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\ChunkedEncoder' => __DIR__ . '/..' . '/react/http/src/Io/ChunkedEncoder.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\ClientConnectionManager' => __DIR__ . '/..' . '/react/http/src/Io/ClientConnectionManager.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\ClientRequestState' => __DIR__ . '/..' . '/react/http/src/Io/ClientRequestState.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\ClientRequestStream' => __DIR__ . '/..' . '/react/http/src/Io/ClientRequestStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\Clock' => __DIR__ . '/..' . '/react/http/src/Io/Clock.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\CloseProtectionStream' => __DIR__ . '/..' . '/react/http/src/Io/CloseProtectionStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\EmptyBodyStream' => __DIR__ . '/..' . '/react/http/src/Io/EmptyBodyStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\HttpBodyStream' => __DIR__ . '/..' . '/react/http/src/Io/HttpBodyStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\IniUtil' => __DIR__ . '/..' . '/react/http/src/Io/IniUtil.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\LengthLimitedStream' => __DIR__ . '/..' . '/react/http/src/Io/LengthLimitedStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\MiddlewareRunner' => __DIR__ . '/..' . '/react/http/src/Io/MiddlewareRunner.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\MultipartParser' => __DIR__ . '/..' . '/react/http/src/Io/MultipartParser.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\PauseBufferStream' => __DIR__ . '/..' . '/react/http/src/Io/PauseBufferStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\ReadableBodyStream' => __DIR__ . '/..' . '/react/http/src/Io/ReadableBodyStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\RequestHeaderParser' => __DIR__ . '/..' . '/react/http/src/Io/RequestHeaderParser.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\Sender' => __DIR__ . '/..' . '/react/http/src/Io/Sender.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\StreamingServer' => __DIR__ . '/..' . '/react/http/src/Io/StreamingServer.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\Transaction' => __DIR__ . '/..' . '/react/http/src/Io/Transaction.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\UploadedFile' => __DIR__ . '/..' . '/react/http/src/Io/UploadedFile.php', '_PHPStan_b22655c3f\\React\\Http\\Message\\Request' => __DIR__ . '/..' . '/react/http/src/Message/Request.php', '_PHPStan_b22655c3f\\React\\Http\\Message\\Response' => __DIR__ . '/..' . '/react/http/src/Message/Response.php', '_PHPStan_b22655c3f\\React\\Http\\Message\\ResponseException' => __DIR__ . '/..' . '/react/http/src/Message/ResponseException.php', '_PHPStan_b22655c3f\\React\\Http\\Message\\ServerRequest' => __DIR__ . '/..' . '/react/http/src/Message/ServerRequest.php', '_PHPStan_b22655c3f\\React\\Http\\Message\\Uri' => __DIR__ . '/..' . '/react/http/src/Message/Uri.php', '_PHPStan_b22655c3f\\React\\Http\\Middleware\\LimitConcurrentRequestsMiddleware' => __DIR__ . '/..' . '/react/http/src/Middleware/LimitConcurrentRequestsMiddleware.php', '_PHPStan_b22655c3f\\React\\Http\\Middleware\\RequestBodyBufferMiddleware' => __DIR__ . '/..' . '/react/http/src/Middleware/RequestBodyBufferMiddleware.php', '_PHPStan_b22655c3f\\React\\Http\\Middleware\\RequestBodyParserMiddleware' => __DIR__ . '/..' . '/react/http/src/Middleware/RequestBodyParserMiddleware.php', '_PHPStan_b22655c3f\\React\\Http\\Middleware\\StreamingRequestMiddleware' => __DIR__ . '/..' . '/react/http/src/Middleware/StreamingRequestMiddleware.php', '_PHPStan_b22655c3f\\React\\Http\\Server' => __DIR__ . '/..' . '/react/http/src/Server.php', '_PHPStan_b22655c3f\\React\\Promise\\Deferred' => __DIR__ . '/..' . '/react/promise/src/Deferred.php', '_PHPStan_b22655c3f\\React\\Promise\\Exception\\CompositeException' => __DIR__ . '/..' . '/react/promise/src/Exception/CompositeException.php', '_PHPStan_b22655c3f\\React\\Promise\\Exception\\LengthException' => __DIR__ . '/..' . '/react/promise/src/Exception/LengthException.php', '_PHPStan_b22655c3f\\React\\Promise\\Internal\\CancellationQueue' => __DIR__ . '/..' . '/react/promise/src/Internal/CancellationQueue.php', '_PHPStan_b22655c3f\\React\\Promise\\Internal\\FulfilledPromise' => __DIR__ . '/..' . '/react/promise/src/Internal/FulfilledPromise.php', '_PHPStan_b22655c3f\\React\\Promise\\Internal\\RejectedPromise' => __DIR__ . '/..' . '/react/promise/src/Internal/RejectedPromise.php', '_PHPStan_b22655c3f\\React\\Promise\\Promise' => __DIR__ . '/..' . '/react/promise/src/Promise.php', '_PHPStan_b22655c3f\\React\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/react/promise/src/PromiseInterface.php', '_PHPStan_b22655c3f\\React\\Socket\\Connection' => __DIR__ . '/..' . '/react/socket/src/Connection.php', '_PHPStan_b22655c3f\\React\\Socket\\ConnectionInterface' => __DIR__ . '/..' . '/react/socket/src/ConnectionInterface.php', '_PHPStan_b22655c3f\\React\\Socket\\Connector' => __DIR__ . '/..' . '/react/socket/src/Connector.php', '_PHPStan_b22655c3f\\React\\Socket\\ConnectorInterface' => __DIR__ . '/..' . '/react/socket/src/ConnectorInterface.php', '_PHPStan_b22655c3f\\React\\Socket\\DnsConnector' => __DIR__ . '/..' . '/react/socket/src/DnsConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\FdServer' => __DIR__ . '/..' . '/react/socket/src/FdServer.php', '_PHPStan_b22655c3f\\React\\Socket\\FixedUriConnector' => __DIR__ . '/..' . '/react/socket/src/FixedUriConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\HappyEyeBallsConnectionBuilder' => __DIR__ . '/..' . '/react/socket/src/HappyEyeBallsConnectionBuilder.php', '_PHPStan_b22655c3f\\React\\Socket\\HappyEyeBallsConnector' => __DIR__ . '/..' . '/react/socket/src/HappyEyeBallsConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\LimitingServer' => __DIR__ . '/..' . '/react/socket/src/LimitingServer.php', '_PHPStan_b22655c3f\\React\\Socket\\SecureConnector' => __DIR__ . '/..' . '/react/socket/src/SecureConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\SecureServer' => __DIR__ . '/..' . '/react/socket/src/SecureServer.php', '_PHPStan_b22655c3f\\React\\Socket\\Server' => __DIR__ . '/..' . '/react/socket/src/Server.php', '_PHPStan_b22655c3f\\React\\Socket\\ServerInterface' => __DIR__ . '/..' . '/react/socket/src/ServerInterface.php', '_PHPStan_b22655c3f\\React\\Socket\\SocketServer' => __DIR__ . '/..' . '/react/socket/src/SocketServer.php', '_PHPStan_b22655c3f\\React\\Socket\\StreamEncryption' => __DIR__ . '/..' . '/react/socket/src/StreamEncryption.php', '_PHPStan_b22655c3f\\React\\Socket\\TcpConnector' => __DIR__ . '/..' . '/react/socket/src/TcpConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\TcpServer' => __DIR__ . '/..' . '/react/socket/src/TcpServer.php', '_PHPStan_b22655c3f\\React\\Socket\\TimeoutConnector' => __DIR__ . '/..' . '/react/socket/src/TimeoutConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\UnixConnector' => __DIR__ . '/..' . '/react/socket/src/UnixConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\UnixServer' => __DIR__ . '/..' . '/react/socket/src/UnixServer.php', '_PHPStan_b22655c3f\\React\\Stream\\CompositeStream' => __DIR__ . '/..' . '/react/stream/src/CompositeStream.php', '_PHPStan_b22655c3f\\React\\Stream\\DuplexResourceStream' => __DIR__ . '/..' . '/react/stream/src/DuplexResourceStream.php', '_PHPStan_b22655c3f\\React\\Stream\\DuplexStreamInterface' => __DIR__ . '/..' . '/react/stream/src/DuplexStreamInterface.php', '_PHPStan_b22655c3f\\React\\Stream\\ReadableResourceStream' => __DIR__ . '/..' . '/react/stream/src/ReadableResourceStream.php', '_PHPStan_b22655c3f\\React\\Stream\\ReadableStreamInterface' => __DIR__ . '/..' . '/react/stream/src/ReadableStreamInterface.php', '_PHPStan_b22655c3f\\React\\Stream\\ThroughStream' => __DIR__ . '/..' . '/react/stream/src/ThroughStream.php', '_PHPStan_b22655c3f\\React\\Stream\\Util' => __DIR__ . '/..' . '/react/stream/src/Util.php', '_PHPStan_b22655c3f\\React\\Stream\\WritableResourceStream' => __DIR__ . '/..' . '/react/stream/src/WritableResourceStream.php', '_PHPStan_b22655c3f\\React\\Stream\\WritableStreamInterface' => __DIR__ . '/..' . '/react/stream/src/WritableStreamInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Application' => __DIR__ . '/..' . '/symfony/console/Application.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Attribute\\AsCommand' => __DIR__ . '/..' . '/symfony/console/Attribute/AsCommand.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\CI\\GithubActionReporter' => __DIR__ . '/..' . '/symfony/console/CI/GithubActionReporter.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Color' => __DIR__ . '/..' . '/symfony/console/Color.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => __DIR__ . '/..' . '/symfony/console/CommandLoader/CommandLoaderInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/ContainerCommandLoader.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/FactoryCommandLoader.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\Command' => __DIR__ . '/..' . '/symfony/console/Command/Command.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\CompleteCommand' => __DIR__ . '/..' . '/symfony/console/Command/CompleteCommand.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => __DIR__ . '/..' . '/symfony/console/Command/DumpCompletionCommand.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/symfony/console/Command/HelpCommand.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\LazyCommand' => __DIR__ . '/..' . '/symfony/console/Command/LazyCommand.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\ListCommand' => __DIR__ . '/..' . '/symfony/console/Command/ListCommand.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\LockableTrait' => __DIR__ . '/..' . '/symfony/console/Command/LockableTrait.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => __DIR__ . '/..' . '/symfony/console/Command/SignalableCommandInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Completion\\CompletionInput' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionInput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionSuggestions.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/BashCompletionOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => __DIR__ . '/..' . '/symfony/console/Completion/Output/CompletionOutputInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Completion\\Suggestion' => __DIR__ . '/..' . '/symfony/console/Completion/Suggestion.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\ConsoleEvents' => __DIR__ . '/..' . '/symfony/console/ConsoleEvents.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Cursor' => __DIR__ . '/..' . '/symfony/console/Cursor.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => __DIR__ . '/..' . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => __DIR__ . '/..' . '/symfony/console/Descriptor/ApplicationDescription.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\Descriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/Descriptor.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => __DIR__ . '/..' . '/symfony/console/Descriptor/DescriptorInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/JsonDescriptor.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/MarkdownDescriptor.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/TextDescriptor.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/XmlDescriptor.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\EventListener\\ErrorListener' => __DIR__ . '/..' . '/symfony/console/EventListener/ErrorListener.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleCommandEvent.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleErrorEvent.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Event\\ConsoleEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleEvent.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Event\\ConsoleSignalEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleSignalEvent.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleTerminateEvent.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/CommandNotFoundException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/console/Exception/ExceptionInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidArgumentException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\InvalidOptionException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidOptionException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/console/Exception/LogicException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\MissingInputException' => __DIR__ . '/..' . '/symfony/console/Exception/MissingInputException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/NamespaceNotFoundException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/console/Exception/RuntimeException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatter.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatterStyle.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\OutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatter.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyle.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleStack.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DebugFormatterHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\DescriptorHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DescriptorHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\Dumper' => __DIR__ . '/..' . '/symfony/console/Helper/Dumper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\FormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/FormatterHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\Helper' => __DIR__ . '/..' . '/symfony/console/Helper/Helper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\HelperInterface' => __DIR__ . '/..' . '/symfony/console/Helper/HelperInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\HelperSet' => __DIR__ . '/..' . '/symfony/console/Helper/HelperSet.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\InputAwareHelper' => __DIR__ . '/..' . '/symfony/console/Helper/InputAwareHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\ProcessHelper' => __DIR__ . '/..' . '/symfony/console/Helper/ProcessHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\ProgressBar' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressBar.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\ProgressIndicator' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressIndicator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\QuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/QuestionHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/SymfonyQuestionHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\Table' => __DIR__ . '/..' . '/symfony/console/Helper/Table.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\TableCell' => __DIR__ . '/..' . '/symfony/console/Helper/TableCell.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\TableCellStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableCellStyle.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\InputArgument' => __DIR__ . '/..' . '/symfony/console/Input/InputArgument.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\InputAwareInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputAwareInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\InputDefinition' => __DIR__ . '/..' . '/symfony/console/Input/InputDefinition.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\InputInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\InputOption' => __DIR__ . '/..' . '/symfony/console/Input/InputOption.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\StreamableInputInterface' => __DIR__ . '/..' . '/symfony/console/Input/StreamableInputInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\StringInput' => __DIR__ . '/..' . '/symfony/console/Input/StringInput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Logger\\ConsoleLogger' => __DIR__ . '/..' . '/symfony/console/Logger/ConsoleLogger.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\BufferedOutput' => __DIR__ . '/..' . '/symfony/console/Output/BufferedOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutputInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleSectionOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\NullOutput' => __DIR__ . '/..' . '/symfony/console/Output/NullOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\Output' => __DIR__ . '/..' . '/symfony/console/Output/Output.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\OutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/OutputInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\StreamOutput' => __DIR__ . '/..' . '/symfony/console/Output/StreamOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => __DIR__ . '/..' . '/symfony/console/Output/TrimmedBufferOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Question\\ChoiceQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ChoiceQuestion.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ConfirmationQuestion.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Question\\Question' => __DIR__ . '/..' . '/symfony/console/Question/Question.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalRegistry.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\SingleCommandApplication' => __DIR__ . '/..' . '/symfony/console/SingleCommandApplication.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Style\\OutputStyle' => __DIR__ . '/..' . '/symfony/console/Style/OutputStyle.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Style\\StyleInterface' => __DIR__ . '/..' . '/symfony/console/Style/StyleInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Style\\SymfonyStyle' => __DIR__ . '/..' . '/symfony/console/Style/SymfonyStyle.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Terminal' => __DIR__ . '/..' . '/symfony/console/Terminal.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Tester\\ApplicationTester' => __DIR__ . '/..' . '/symfony/console/Tester/ApplicationTester.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Tester\\CommandCompletionTester' => __DIR__ . '/..' . '/symfony/console/Tester/CommandCompletionTester.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Tester\\CommandTester' => __DIR__ . '/..' . '/symfony/console/Tester/CommandTester.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Tester\\Constraint\\CommandIsSuccessful' => __DIR__ . '/..' . '/symfony/console/Tester/Constraint/CommandIsSuccessful.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Tester\\TesterTrait' => __DIR__ . '/..' . '/symfony/console/Tester/TesterTrait.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Comparator\\Comparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/Comparator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Comparator\\DateComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/DateComparator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Comparator\\NumberComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/NumberComparator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/symfony/finder/Exception/AccessDeniedException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => __DIR__ . '/..' . '/symfony/finder/Exception/DirectoryNotFoundException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Finder' => __DIR__ . '/..' . '/symfony/finder/Finder.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Gitignore' => __DIR__ . '/..' . '/symfony/finder/Gitignore.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Glob' => __DIR__ . '/..' . '/symfony/finder/Glob.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/CustomFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DateRangeFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FileTypeFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilecontentFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilenameFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\LazyIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/LazyIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/PathFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\SortableIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SortableIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\SplFileInfo' => __DIR__ . '/..' . '/symfony/finder/SplFileInfo.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/process/Exception/ExceptionInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/process/Exception/InvalidArgumentException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/process/Exception/LogicException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\ProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessFailedException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessSignaledException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessTimedOutException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/process/Exception/RuntimeException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\ExecutableFinder' => __DIR__ . '/..' . '/symfony/process/ExecutableFinder.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\InputStream' => __DIR__ . '/..' . '/symfony/process/InputStream.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\PhpExecutableFinder' => __DIR__ . '/..' . '/symfony/process/PhpExecutableFinder.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\PhpProcess' => __DIR__ . '/..' . '/symfony/process/PhpProcess.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Pipes\\AbstractPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/AbstractPipes.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Pipes\\PipesInterface' => __DIR__ . '/..' . '/symfony/process/Pipes/PipesInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Pipes\\UnixPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/UnixPipes.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Pipes\\WindowsPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/WindowsPipes.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Process' => __DIR__ . '/..' . '/symfony/process/Process.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\ProcessUtils' => __DIR__ . '/..' . '/symfony/process/ProcessUtils.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\AbstractString' => __DIR__ . '/..' . '/symfony/string/AbstractString.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\AbstractUnicodeString' => __DIR__ . '/..' . '/symfony/string/AbstractUnicodeString.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\ByteString' => __DIR__ . '/..' . '/symfony/string/ByteString.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\CodePointString' => __DIR__ . '/..' . '/symfony/string/CodePointString.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/string/Exception/ExceptionInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/string/Exception/InvalidArgumentException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/string/Exception/RuntimeException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Inflector\\EnglishInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/EnglishInflector.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Inflector\\FrenchInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/FrenchInflector.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Inflector\\InflectorInterface' => __DIR__ . '/..' . '/symfony/string/Inflector/InflectorInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\LazyString' => __DIR__ . '/..' . '/symfony/string/LazyString.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Slugger\\AsciiSlugger' => __DIR__ . '/..' . '/symfony/string/Slugger/AsciiSlugger.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Slugger\\SluggerInterface' => __DIR__ . '/..' . '/symfony/string/Slugger/SluggerInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\UnicodeString' => __DIR__ . '/..' . '/symfony/string/UnicodeString.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\Attribute\\Required' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/Required.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/SubscribedService.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\ResetInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ResetInterface.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\ServiceLocatorTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceLocatorTrait.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\ServiceProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceProviderInterface.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberInterface.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php', '_PHPStan_b22655c3f\\Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php', ); public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { $loader->prefixLengthsPsr4 = ComposerStaticInit07b46dce51ea41c025511b9415b3274c::$prefixLengthsPsr4; $loader->prefixDirsPsr4 = ComposerStaticInit07b46dce51ea41c025511b9415b3274c::$prefixDirsPsr4; $loader->classMap = ComposerStaticInit07b46dce51ea41c025511b9415b3274c::$classMap; }, null, ClassLoader::class); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer; use Composer\Autoload\ClassLoader; use Composer\Semver\VersionParser; /** * This class is copied in every Composer installed project and available to all * * See also https://getcomposer.org/doc/07-runtime.md#installed-versions * * To require its presence, you can require `composer-runtime-api ^2.0` * * @final */ class InstalledVersions { /** * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to * @internal */ private static $selfDir = null; /** * @var mixed[]|null * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null */ private static $installed; /** * @var bool */ private static $installedIsLocalDir; /** * @var bool|null */ private static $canGetVendors; /** * @var array[] * @psalm-var array}> */ private static $installedByVendor = array(); /** * Returns a list of all package names which are present, either by being installed, replaced or provided * * @return string[] * @psalm-return list */ public static function getInstalledPackages() { $packages = array(); foreach (self::getInstalled() as $installed) { $packages[] = array_keys($installed['versions']); } if (1 === \count($packages)) { return $packages[0]; } return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); } /** * Returns a list of all package names with a specific type e.g. 'library' * * @param string $type * @return string[] * @psalm-return list */ public static function getInstalledPackagesByType($type) { $packagesByType = array(); foreach (self::getInstalled() as $installed) { foreach ($installed['versions'] as $name => $package) { if (isset($package['type']) && $package['type'] === $type) { $packagesByType[] = $name; } } } return $packagesByType; } /** * Checks whether the given package is installed * * This also returns true if the package name is provided or replaced by another package * * @param string $packageName * @param bool $includeDevRequirements * @return bool */ public static function isInstalled($packageName, $includeDevRequirements = true) { foreach (self::getInstalled() as $installed) { if (isset($installed['versions'][$packageName])) { return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; } } return false; } /** * Checks whether the given package satisfies a version constraint * * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: * * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') * * @param VersionParser $parser Install composer/semver to have access to this class and functionality * @param string $packageName * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package * @return bool */ public static function satisfies(VersionParser $parser, $packageName, $constraint) { $constraint = $parser->parseConstraints((string) $constraint); $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); return $provided->matches($constraint); } /** * Returns a version constraint representing all the range(s) which are installed for a given package * * It is easier to use this via isInstalled() with the $constraint argument if you need to check * whether a given version of a package is installed, and not just whether it exists * * @param string $packageName * @return string Version constraint usable with composer/semver */ public static function getVersionRanges($packageName) { foreach (self::getInstalled() as $installed) { if (!isset($installed['versions'][$packageName])) { continue; } $ranges = array(); if (isset($installed['versions'][$packageName]['pretty_version'])) { $ranges[] = $installed['versions'][$packageName]['pretty_version']; } if (array_key_exists('aliases', $installed['versions'][$packageName])) { $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); } if (array_key_exists('replaced', $installed['versions'][$packageName])) { $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); } if (array_key_exists('provided', $installed['versions'][$packageName])) { $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); } return implode(' || ', $ranges); } throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } /** * @param string $packageName * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present */ public static function getVersion($packageName) { foreach (self::getInstalled() as $installed) { if (!isset($installed['versions'][$packageName])) { continue; } if (!isset($installed['versions'][$packageName]['version'])) { return null; } return $installed['versions'][$packageName]['version']; } throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } /** * @param string $packageName * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present */ public static function getPrettyVersion($packageName) { foreach (self::getInstalled() as $installed) { if (!isset($installed['versions'][$packageName])) { continue; } if (!isset($installed['versions'][$packageName]['pretty_version'])) { return null; } return $installed['versions'][$packageName]['pretty_version']; } throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } /** * @param string $packageName * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference */ public static function getReference($packageName) { foreach (self::getInstalled() as $installed) { if (!isset($installed['versions'][$packageName])) { continue; } if (!isset($installed['versions'][$packageName]['reference'])) { return null; } return $installed['versions'][$packageName]['reference']; } throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } /** * @param string $packageName * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. */ public static function getInstallPath($packageName) { foreach (self::getInstalled() as $installed) { if (!isset($installed['versions'][$packageName])) { continue; } return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; } throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } /** * @return array * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} */ public static function getRootPackage() { $installed = self::getInstalled(); return $installed[0]['root']; } /** * Returns the raw installed.php data for custom implementations * * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. * @return array[] * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} */ public static function getRawData() { @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); if (null === self::$installed) { // only require the installed.php file if this file is loaded from its dumped location, // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 if (substr(__DIR__, -8, 1) !== 'C') { self::$installed = include __DIR__ . '/installed.php'; } else { self::$installed = array(); } } return self::$installed; } /** * Returns the raw data of all installed.php which are currently loaded for custom implementations * * @return array[] * @psalm-return list}> */ public static function getAllRawData() { return self::getInstalled(); } /** * Lets you reload the static array from another file * * This is only useful for complex integrations in which a project needs to use * this class but then also needs to execute another project's autoloader in process, * and wants to ensure both projects have access to their version of installed.php. * * A typical case would be PHPUnit, where it would need to make sure it reads all * the data it needs from this class, then call reload() with * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure * the project in which it runs can then also use this class safely, without * interference between PHPUnit's dependencies and the project's dependencies. * * @param array[] $data A vendor/composer/installed.php data set * @return void * * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data */ public static function reload($data) { self::$installed = $data; self::$installedByVendor = array(); // when using reload, we disable the duplicate protection to ensure that self::$installed data is // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not, // so we have to assume it does not, and that may result in duplicate data being returned when listing // all installed packages for example self::$installedIsLocalDir = false; } /** * @return string */ private static function getSelfDir() { if (self::$selfDir === null) { self::$selfDir = strtr(__DIR__, '\\', '/'); } return self::$selfDir; } /** * @return array[] * @psalm-return list}> */ private static function getInstalled() { if (null === self::$canGetVendors) { self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); } $installed = array(); $copiedLocalDir = false; if (self::$canGetVendors) { $selfDir = self::getSelfDir(); foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { $vendorDir = strtr($vendorDir, '\\', '/'); if (isset(self::$installedByVendor[$vendorDir])) { $installed[] = self::$installedByVendor[$vendorDir]; } elseif (is_file($vendorDir.'/composer/installed.php')) { /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ $required = require $vendorDir.'/composer/installed.php'; self::$installedByVendor[$vendorDir] = $required; $installed[] = $required; if (self::$installed === null && $vendorDir.'/composer' === $selfDir) { self::$installed = $required; self::$installedIsLocalDir = true; } } if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) { $copiedLocalDir = true; } } } if (null === self::$installed) { // only require the installed.php file if this file is loaded from its dumped location, // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 if (substr(__DIR__, -8, 1) !== 'C') { /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ $required = require __DIR__ . '/installed.php'; self::$installed = $required; } else { self::$installed = array(); } } if (self::$installed !== array() && !$copiedLocalDir) { $installed[] = self::$installed; } return $installed; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Autoload; /** * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. * * $loader = new \Composer\Autoload\ClassLoader(); * * // register classes with namespaces * $loader->add('Symfony\Component', __DIR__.'/component'); * $loader->add('Symfony', __DIR__.'/framework'); * * // activate the autoloader * $loader->register(); * * // to enable searching the include path (eg. for PEAR packages) * $loader->setUseIncludePath(true); * * In this example, if you try to use a class in the Symfony\Component * namespace or one of its children (Symfony\Component\Console for instance), * the autoloader will first look for the class under the component/ * directory, and it will then fallback to the framework/ directory if not * found before giving up. * * This class is loosely based on the Symfony UniversalClassLoader. * * @author Fabien Potencier * @author Jordi Boggiano * @see https://www.php-fig.org/psr/psr-0/ * @see https://www.php-fig.org/psr/psr-4/ */ class ClassLoader { /** @var \Closure(string):void */ private static $includeFile; /** @var string|null */ private $vendorDir; // PSR-4 /** * @var array> */ private $prefixLengthsPsr4 = array(); /** * @var array> */ private $prefixDirsPsr4 = array(); /** * @var list */ private $fallbackDirsPsr4 = array(); // PSR-0 /** * List of PSR-0 prefixes * * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) * * @var array>> */ private $prefixesPsr0 = array(); /** * @var list */ private $fallbackDirsPsr0 = array(); /** @var bool */ private $useIncludePath = false; /** * @var array */ private $classMap = array(); /** @var bool */ private $classMapAuthoritative = false; /** * @var array */ private $missingClasses = array(); /** @var string|null */ private $apcuPrefix; /** * @var array */ private static $registeredLoaders = array(); /** * @param string|null $vendorDir */ public function __construct($vendorDir = null) { $this->vendorDir = $vendorDir; self::initializeIncludeClosure(); } /** * @return array> */ public function getPrefixes() { if (!empty($this->prefixesPsr0)) { return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); } return array(); } /** * @return array> */ public function getPrefixesPsr4() { return $this->prefixDirsPsr4; } /** * @return list */ public function getFallbackDirs() { return $this->fallbackDirsPsr0; } /** * @return list */ public function getFallbackDirsPsr4() { return $this->fallbackDirsPsr4; } /** * @return array Array of classname => path */ public function getClassMap() { return $this->classMap; } /** * @param array $classMap Class to filename map * * @return void */ public function addClassMap(array $classMap) { if ($this->classMap) { $this->classMap = array_merge($this->classMap, $classMap); } else { $this->classMap = $classMap; } } /** * Registers a set of PSR-0 directories for a given prefix, either * appending or prepending to the ones previously set for this prefix. * * @param string $prefix The prefix * @param list|string $paths The PSR-0 root directories * @param bool $prepend Whether to prepend the directories * * @return void */ public function add($prefix, $paths, $prepend = false) { $paths = (array) $paths; if (!$prefix) { if ($prepend) { $this->fallbackDirsPsr0 = array_merge( $paths, $this->fallbackDirsPsr0 ); } else { $this->fallbackDirsPsr0 = array_merge( $this->fallbackDirsPsr0, $paths ); } return; } $first = $prefix[0]; if (!isset($this->prefixesPsr0[$first][$prefix])) { $this->prefixesPsr0[$first][$prefix] = $paths; return; } if ($prepend) { $this->prefixesPsr0[$first][$prefix] = array_merge( $paths, $this->prefixesPsr0[$first][$prefix] ); } else { $this->prefixesPsr0[$first][$prefix] = array_merge( $this->prefixesPsr0[$first][$prefix], $paths ); } } /** * Registers a set of PSR-4 directories for a given namespace, either * appending or prepending to the ones previously set for this namespace. * * @param string $prefix The prefix/namespace, with trailing '\\' * @param list|string $paths The PSR-4 base directories * @param bool $prepend Whether to prepend the directories * * @throws \InvalidArgumentException * * @return void */ public function addPsr4($prefix, $paths, $prepend = false) { $paths = (array) $paths; if (!$prefix) { // Register directories for the root namespace. if ($prepend) { $this->fallbackDirsPsr4 = array_merge( $paths, $this->fallbackDirsPsr4 ); } else { $this->fallbackDirsPsr4 = array_merge( $this->fallbackDirsPsr4, $paths ); } } elseif (!isset($this->prefixDirsPsr4[$prefix])) { // Register directories for a new namespace. $length = strlen($prefix); if ('\\' !== $prefix[$length - 1]) { throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); } $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; $this->prefixDirsPsr4[$prefix] = $paths; } elseif ($prepend) { // Prepend directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( $paths, $this->prefixDirsPsr4[$prefix] ); } else { // Append directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( $this->prefixDirsPsr4[$prefix], $paths ); } } /** * Registers a set of PSR-0 directories for a given prefix, * replacing any others previously set for this prefix. * * @param string $prefix The prefix * @param list|string $paths The PSR-0 base directories * * @return void */ public function set($prefix, $paths) { if (!$prefix) { $this->fallbackDirsPsr0 = (array) $paths; } else { $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; } } /** * Registers a set of PSR-4 directories for a given namespace, * replacing any others previously set for this namespace. * * @param string $prefix The prefix/namespace, with trailing '\\' * @param list|string $paths The PSR-4 base directories * * @throws \InvalidArgumentException * * @return void */ public function setPsr4($prefix, $paths) { if (!$prefix) { $this->fallbackDirsPsr4 = (array) $paths; } else { $length = strlen($prefix); if ('\\' !== $prefix[$length - 1]) { throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); } $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; $this->prefixDirsPsr4[$prefix] = (array) $paths; } } /** * Turns on searching the include path for class files. * * @param bool $useIncludePath * * @return void */ public function setUseIncludePath($useIncludePath) { $this->useIncludePath = $useIncludePath; } /** * Can be used to check if the autoloader uses the include path to check * for classes. * * @return bool */ public function getUseIncludePath() { return $this->useIncludePath; } /** * Turns off searching the prefix and fallback directories for classes * that have not been registered with the class map. * * @param bool $classMapAuthoritative * * @return void */ public function setClassMapAuthoritative($classMapAuthoritative) { $this->classMapAuthoritative = $classMapAuthoritative; } /** * Should class lookup fail if not found in the current class map? * * @return bool */ public function isClassMapAuthoritative() { return $this->classMapAuthoritative; } /** * APCu prefix to use to cache found/not-found classes, if the extension is enabled. * * @param string|null $apcuPrefix * * @return void */ public function setApcuPrefix($apcuPrefix) { $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; } /** * The APCu prefix in use, or null if APCu caching is not enabled. * * @return string|null */ public function getApcuPrefix() { return $this->apcuPrefix; } /** * Registers this instance as an autoloader. * * @param bool $prepend Whether to prepend the autoloader or not * * @return void */ public function register($prepend = false) { spl_autoload_register(array($this, 'loadClass'), true, $prepend); if (null === $this->vendorDir) { return; } if ($prepend) { self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; } else { unset(self::$registeredLoaders[$this->vendorDir]); self::$registeredLoaders[$this->vendorDir] = $this; } } /** * Unregisters this instance as an autoloader. * * @return void */ public function unregister() { spl_autoload_unregister(array($this, 'loadClass')); if (null !== $this->vendorDir) { unset(self::$registeredLoaders[$this->vendorDir]); } } /** * Loads the given class or interface. * * @param string $class The name of the class * @return true|null True if loaded, null otherwise */ public function loadClass($class) { if ($file = $this->findFile($class)) { $includeFile = self::$includeFile; $includeFile($file); return true; } return null; } /** * Finds the path to the file where the class is defined. * * @param string $class The name of the class * * @return string|false The path if found, false otherwise */ public function findFile($class) { // class map lookup if (isset($this->classMap[$class])) { return $this->classMap[$class]; } if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { return false; } if (null !== $this->apcuPrefix) { $file = apcu_fetch($this->apcuPrefix.$class, $hit); if ($hit) { return $file; } } $file = $this->findFileWithExtension($class, '.php'); // Search for Hack files if we are running on HHVM if (false === $file && defined('HHVM_VERSION')) { $file = $this->findFileWithExtension($class, '.hh'); } if (null !== $this->apcuPrefix) { apcu_add($this->apcuPrefix.$class, $file); } if (false === $file) { // Remember that this class does not exist. $this->missingClasses[$class] = true; } return $file; } /** * Returns the currently registered loaders keyed by their corresponding vendor directories. * * @return array */ public static function getRegisteredLoaders() { return self::$registeredLoaders; } /** * @param string $class * @param string $ext * @return string|false */ private function findFileWithExtension($class, $ext) { // PSR-4 lookup $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; $first = $class[0]; if (isset($this->prefixLengthsPsr4[$first])) { $subPath = $class; while (false !== $lastPos = strrpos($subPath, '\\')) { $subPath = substr($subPath, 0, $lastPos); $search = $subPath . '\\'; if (isset($this->prefixDirsPsr4[$search])) { $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); foreach ($this->prefixDirsPsr4[$search] as $dir) { if (file_exists($file = $dir . $pathEnd)) { return $file; } } } } } // PSR-4 fallback dirs foreach ($this->fallbackDirsPsr4 as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { return $file; } } // PSR-0 lookup if (false !== $pos = strrpos($class, '\\')) { // namespaced class name $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); } else { // PEAR-like class name $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; } if (isset($this->prefixesPsr0[$first])) { foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { if (0 === strpos($class, $prefix)) { foreach ($dirs as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { return $file; } } } } } // PSR-0 fallback dirs foreach ($this->fallbackDirsPsr0 as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { return $file; } } // PSR-0 include paths. if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { return $file; } return false; } /** * @return void */ private static function initializeIncludeClosure() { if (self::$includeFile !== null) { return; } /** * Scope isolated include. * * Prevents access to $this/self from included files. * * @param string $file * @return void */ self::$includeFile = \Closure::bind(static function($file) { include $file; }, null, null); } } array( 'name' => 'phpstan/phpstan-src', 'pretty_version' => '1.12.32', 'version' => '1.12.32.0', 'reference' => 'b22655c3f410cd3a6a0d69650018c9ad7147dc8c', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => true, ), 'versions' => array( 'brianium/paratest' => array( 'pretty_version' => 'v6.6.3', 'version' => '6.6.3.0', 'reference' => 'f2d781bb9136cda2f5e73ee778049e80ba681cf6', 'type' => 'library', 'install_path' => __DIR__ . '/../brianium/paratest', 'aliases' => array(), 'dev_requirement' => true, ), 'clue/ndjson-react' => array( 'pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', 'type' => 'library', 'install_path' => __DIR__ . '/../clue/ndjson-react', 'aliases' => array(), 'dev_requirement' => false, ), 'composer/ca-bundle' => array( 'pretty_version' => '1.5.0', 'version' => '1.5.0.0', 'reference' => '0c5ccfcfea312b5c5a190a21ac5cef93f74baf99', 'type' => 'library', 'install_path' => __DIR__ . '/./ca-bundle', 'aliases' => array(), 'dev_requirement' => false, ), 'composer/pcre' => array( 'pretty_version' => '3.3.1', 'version' => '3.3.1.0', 'reference' => '63aaeac21d7e775ff9bc9d45021e1745c97521c4', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), 'dev_requirement' => false, ), 'composer/semver' => array( 'pretty_version' => '3.4.0', 'version' => '3.4.0.0', 'reference' => '35e8d0af4486141bc745f23a29cc2091eb624a32', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => false, ), 'composer/xdebug-handler' => array( 'pretty_version' => '3.0.5', 'version' => '3.0.5.0', 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', 'type' => 'library', 'install_path' => __DIR__ . '/./xdebug-handler', 'aliases' => array(), 'dev_requirement' => false, ), 'cweagans/composer-patches' => array( 'pretty_version' => '1.7.3', 'version' => '1.7.3.0', 'reference' => 'e190d4466fe2b103a55467dfa83fc2fecfcaf2db', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../cweagans/composer-patches', 'aliases' => array(), 'dev_requirement' => true, ), 'doctrine/instantiator' => array( 'pretty_version' => '1.4.1', 'version' => '1.4.1.0', 'reference' => '10dcfce151b967d20fde1b34ae6640712c3891bc', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/instantiator', 'aliases' => array(), 'dev_requirement' => true, ), 'evenement/evenement' => array( 'pretty_version' => 'v3.0.2', 'version' => '3.0.2.0', 'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc', 'type' => 'library', 'install_path' => __DIR__ . '/../evenement/evenement', 'aliases' => array(), 'dev_requirement' => false, ), 'fidry/cpu-core-counter' => array( 'pretty_version' => '1.2.0', 'version' => '1.2.0.0', 'reference' => '8520451a140d3f46ac33042715115e290cf5785f', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', 'aliases' => array(), 'dev_requirement' => false, ), 'fig/http-message-util' => array( 'pretty_version' => '1.1.5', 'version' => '1.1.5.0', 'reference' => '9d94dc0154230ac39e5bf89398b324a86f63f765', 'type' => 'library', 'install_path' => __DIR__ . '/../fig/http-message-util', 'aliases' => array(), 'dev_requirement' => false, ), 'grogy/php-parallel-lint' => array( 'dev_requirement' => true, 'replaced' => array( 0 => '*', ), ), 'hoa/compiler' => array( 'pretty_version' => '3.17.08.08', 'version' => '3.17.08.08', 'reference' => 'aa09caf0bf28adae6654ca6ee415ee2f522672de', 'type' => 'library', 'install_path' => __DIR__ . '/../hoa/compiler', 'aliases' => array(), 'dev_requirement' => false, ), 'hoa/consistency' => array( 'pretty_version' => '1.17.05.02', 'version' => '1.17.05.02', 'reference' => 'fd7d0adc82410507f332516faf655b6ed22e4c2f', 'type' => 'library', 'install_path' => __DIR__ . '/../hoa/consistency', 'aliases' => array(), 'dev_requirement' => false, ), 'hoa/event' => array( 'pretty_version' => '1.17.01.13', 'version' => '1.17.01.13', 'reference' => '6c0060dced212ffa3af0e34bb46624f990b29c54', 'type' => 'library', 'install_path' => __DIR__ . '/../hoa/event', 'aliases' => array(), 'dev_requirement' => false, ), 'hoa/exception' => array( 'pretty_version' => '1.17.01.16', 'version' => '1.17.01.16', 'reference' => '091727d46420a3d7468ef0595651488bfc3a458f', 'type' => 'library', 'install_path' => __DIR__ . '/../hoa/exception', 'aliases' => array(), 'dev_requirement' => false, ), 'hoa/file' => array( 'pretty_version' => '1.17.07.11', 'version' => '1.17.07.11', 'reference' => '35cb979b779bc54918d2f9a4e02ed6c7a1fa67ca', 'type' => 'library', 'install_path' => __DIR__ . '/../hoa/file', 'aliases' => array(), 'dev_requirement' => false, ), 'hoa/iterator' => array( 'pretty_version' => '2.17.01.10', 'version' => '2.17.01.10', 'reference' => 'd1120ba09cb4ccd049c86d10058ab94af245f0cc', 'type' => 'library', 'install_path' => __DIR__ . '/../hoa/iterator', 'aliases' => array(), 'dev_requirement' => false, ), 'hoa/math' => array( 'pretty_version' => '1.17.05.16', 'version' => '1.17.05.16', 'reference' => '7150785d30f5d565704912116a462e9f5bc83a0c', 'type' => 'library', 'install_path' => __DIR__ . '/../hoa/math', 'aliases' => array(), 'dev_requirement' => false, ), 'hoa/protocol' => array( 'pretty_version' => '1.17.01.14', 'version' => '1.17.01.14', 'reference' => '5c2cf972151c45f373230da170ea015deecf19e2', 'type' => 'library', 'install_path' => __DIR__ . '/../hoa/protocol', 'aliases' => array(), 'dev_requirement' => false, ), 'hoa/regex' => array( 'pretty_version' => '1.17.01.13', 'version' => '1.17.01.13', 'reference' => '7e263a61b6fb45c1d03d8e5ef77668518abd5bec', 'type' => 'library', 'install_path' => __DIR__ . '/../hoa/regex', 'aliases' => array(), 'dev_requirement' => false, ), 'hoa/stream' => array( 'pretty_version' => '1.17.02.21', 'version' => '1.17.02.21', 'reference' => '3293cfffca2de10525df51436adf88a559151d82', 'type' => 'library', 'install_path' => __DIR__ . '/../hoa/stream', 'aliases' => array(), 'dev_requirement' => false, ), 'hoa/ustring' => array( 'pretty_version' => '4.17.01.16', 'version' => '4.17.01.16', 'reference' => 'e6326e2739178799b1fe3fdd92029f9517fa17a0', 'type' => 'library', 'install_path' => __DIR__ . '/../hoa/ustring', 'aliases' => array(), 'dev_requirement' => false, ), 'hoa/visitor' => array( 'pretty_version' => '2.17.01.16', 'version' => '2.17.01.16', 'reference' => 'c18fe1cbac98ae449e0d56e87469103ba08f224a', 'type' => 'library', 'install_path' => __DIR__ . '/../hoa/visitor', 'aliases' => array(), 'dev_requirement' => false, ), 'hoa/zformat' => array( 'pretty_version' => '1.17.01.10', 'version' => '1.17.01.10', 'reference' => '522c381a2a075d4b9dbb42eb4592dd09520e4ac2', 'type' => 'library', 'install_path' => __DIR__ . '/../hoa/zformat', 'aliases' => array(), 'dev_requirement' => false, ), 'jakub-onderka/php-parallel-lint' => array( 'dev_requirement' => true, 'replaced' => array( 0 => '*', ), ), 'jean85/pretty-package-versions' => array( 'pretty_version' => '2.0.5', 'version' => '2.0.5.0', 'reference' => 'ae547e455a3d8babd07b96966b17d7fd21d9c6af', 'type' => 'library', 'install_path' => __DIR__ . '/../jean85/pretty-package-versions', 'aliases' => array(), 'dev_requirement' => true, ), 'jetbrains/phpstorm-stubs' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', 'reference' => '56f6b9e55f5885e651553843a1aaf9ec9c586c04', 'type' => 'library', 'install_path' => __DIR__ . '/../jetbrains/phpstorm-stubs', 'aliases' => array( 0 => '9999999-dev', ), 'dev_requirement' => false, ), 'myclabs/deep-copy' => array( 'pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'reference' => '14daed4296fae74d9e3201d2c4925d1acb7aa614', 'type' => 'library', 'install_path' => __DIR__ . '/../myclabs/deep-copy', 'aliases' => array(), 'dev_requirement' => true, ), 'nette/bootstrap' => array( 'pretty_version' => 'v3.1.4', 'version' => '3.1.4.0', 'reference' => '1a7965b4ee401ad0e3f673b9c016d2481afdc280', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/bootstrap', 'aliases' => array(), 'dev_requirement' => false, ), 'nette/di' => array( 'pretty_version' => 'v3.1.5', 'version' => '3.1.5.0', 'reference' => '00ea0afa643b3b4383a5cd1a322656c989ade498', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/di', 'aliases' => array(), 'dev_requirement' => false, ), 'nette/finder' => array( 'pretty_version' => 'v2.6.0', 'version' => '2.6.0.0', 'reference' => '991aefb42860abeab8e003970c3809a9d83cb932', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/finder', 'aliases' => array(), 'dev_requirement' => false, ), 'nette/neon' => array( 'pretty_version' => 'v3.3.3', 'version' => '3.3.3.0', 'reference' => '22e384da162fab42961d48eb06c06d3ad0c11b95', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/neon', 'aliases' => array(), 'dev_requirement' => false, ), 'nette/php-generator' => array( 'pretty_version' => 'v3.6.9', 'version' => '3.6.9.0', 'reference' => 'd31782f7bd2ae84ad06f863391ec3fb77ca4d0a6', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/php-generator', 'aliases' => array(), 'dev_requirement' => false, ), 'nette/robot-loader' => array( 'pretty_version' => 'v3.4.1', 'version' => '3.4.1.0', 'reference' => 'e2adc334cb958164c050f485d99c44c430f51fe2', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/robot-loader', 'aliases' => array(), 'dev_requirement' => false, ), 'nette/schema' => array( 'pretty_version' => 'v1.2.5', 'version' => '1.2.5.0', 'reference' => '0462f0166e823aad657c9224d0f849ecac1ba10a', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/schema', 'aliases' => array(), 'dev_requirement' => false, ), 'nette/utils' => array( 'pretty_version' => 'v3.2.7', 'version' => '3.2.7.0', 'reference' => '0af4e3de4df9f1543534beab255ccf459e7a2c99', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), 'dev_requirement' => false, ), 'nikic/php-parser' => array( 'pretty_version' => 'v4.19.4', 'version' => '4.19.4.0', 'reference' => '715f4d25e225bc47b293a8b997fe6ce99bf987d2', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => false, ), 'ondram/ci-detector' => array( 'pretty_version' => '3.5.1', 'version' => '3.5.1.0', 'reference' => '594e61252843b68998bddd48078c5058fe9028bd', 'type' => 'library', 'install_path' => __DIR__ . '/../ondram/ci-detector', 'aliases' => array(), 'dev_requirement' => false, ), 'ondrejmirtes/better-reflection' => array( 'pretty_version' => '6.25.0.21', 'version' => '6.25.0.21', 'reference' => 'c1bcfaa130718e4004ab8260bed4bfe96a46dc02', 'type' => 'library', 'install_path' => __DIR__ . '/../ondrejmirtes/better-reflection', 'aliases' => array(), 'dev_requirement' => false, ), 'ondrejmirtes/simple-downgrader' => array( 'pretty_version' => '1.0.2', 'version' => '1.0.2.0', 'reference' => '832aaae53dcfe358f63180494de8734244773d46', 'type' => 'library', 'install_path' => __DIR__ . '/../ondrejmirtes/simple-downgrader', 'aliases' => array(), 'dev_requirement' => true, ), 'phar-io/manifest' => array( 'pretty_version' => '2.0.3', 'version' => '2.0.3.0', 'reference' => '97803eca37d319dfa7826cc2437fc020857acb53', 'type' => 'library', 'install_path' => __DIR__ . '/../phar-io/manifest', 'aliases' => array(), 'dev_requirement' => true, ), 'phar-io/version' => array( 'pretty_version' => '3.2.1', 'version' => '3.2.1.0', 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74', 'type' => 'library', 'install_path' => __DIR__ . '/../phar-io/version', 'aliases' => array(), 'dev_requirement' => true, ), 'php-parallel-lint/php-parallel-lint' => array( 'pretty_version' => 'v1.4.0', 'version' => '1.4.0.0', 'reference' => '6db563514f27e19595a19f45a4bf757b6401194e', 'type' => 'library', 'install_path' => __DIR__ . '/../php-parallel-lint/php-parallel-lint', 'aliases' => array(), 'dev_requirement' => true, ), 'phpstan/php-8-stubs' => array( 'pretty_version' => '0.3.111', 'version' => '0.3.111.0', 'reference' => '0013252145df5d84112764d4ea57ed1c6f074018', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/php-8-stubs', 'aliases' => array(), 'dev_requirement' => false, ), 'phpstan/phpdoc-parser' => array( 'pretty_version' => '1.33.0', 'version' => '1.33.0.0', 'reference' => '82a311fd3690fb2bf7b64d5c98f912b3dd746140', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => false, ), 'phpstan/phpstan' => array( 'dev_requirement' => false, 'replaced' => array( 0 => '1.12.x', ), ), 'phpstan/phpstan-deprecation-rules' => array( 'pretty_version' => '1.2.0', 'version' => '1.2.0.0', 'reference' => 'fa8cce7720fa782899a0aa97b6a41225d1bb7b26', 'type' => 'phpstan-extension', 'install_path' => __DIR__ . '/../phpstan/phpstan-deprecation-rules', 'aliases' => array(), 'dev_requirement' => true, ), 'phpstan/phpstan-nette' => array( 'pretty_version' => '1.3.8', 'version' => '1.3.8.0', 'reference' => 'bc74b8b208b47f163fe55708fcf1a0333247fa79', 'type' => 'phpstan-extension', 'install_path' => __DIR__ . '/../phpstan/phpstan-nette', 'aliases' => array(), 'dev_requirement' => true, ), 'phpstan/phpstan-phpunit' => array( 'pretty_version' => '1.4.0', 'version' => '1.4.0.0', 'reference' => 'f3ea021866f4263f07ca3636bf22c64be9610c11', 'type' => 'phpstan-extension', 'install_path' => __DIR__ . '/../phpstan/phpstan-phpunit', 'aliases' => array(), 'dev_requirement' => true, ), 'phpstan/phpstan-src' => array( 'pretty_version' => '1.12.32', 'version' => '1.12.32.0', 'reference' => 'b22655c3f410cd3a6a0d69650018c9ad7147dc8c', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => false, ), 'phpstan/phpstan-strict-rules' => array( 'pretty_version' => '1.6.0', 'version' => '1.6.0.0', 'reference' => '363f921dd8441777d4fc137deb99beb486c77df1', 'type' => 'phpstan-extension', 'install_path' => __DIR__ . '/../phpstan/phpstan-strict-rules', 'aliases' => array(), 'dev_requirement' => true, ), 'phpunit/php-code-coverage' => array( 'pretty_version' => '9.2.30', 'version' => '9.2.30.0', 'reference' => 'ca2bd87d2f9215904682a9cb9bb37dda98e76089', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-code-coverage', 'aliases' => array(), 'dev_requirement' => true, ), 'phpunit/php-file-iterator' => array( 'pretty_version' => '3.0.6', 'version' => '3.0.6.0', 'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-file-iterator', 'aliases' => array(), 'dev_requirement' => true, ), 'phpunit/php-invoker' => array( 'pretty_version' => '3.1.1', 'version' => '3.1.1.0', 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-invoker', 'aliases' => array(), 'dev_requirement' => true, ), 'phpunit/php-text-template' => array( 'pretty_version' => '2.0.4', 'version' => '2.0.4.0', 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-text-template', 'aliases' => array(), 'dev_requirement' => true, ), 'phpunit/php-timer' => array( 'pretty_version' => '5.0.3', 'version' => '5.0.3.0', 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-timer', 'aliases' => array(), 'dev_requirement' => true, ), 'phpunit/phpunit' => array( 'pretty_version' => '9.5.23', 'version' => '9.5.23.0', 'reference' => '888556852e7e9bbeeedb9656afe46118765ade34', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/phpunit', 'aliases' => array(), 'dev_requirement' => true, ), 'psr/container' => array( 'pretty_version' => '1.1.2', 'version' => '1.1.2.0', 'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => false, ), 'psr/http-message' => array( 'pretty_version' => '1.1', 'version' => '1.1.0.0', 'reference' => 'cb6ce4845ce34a8ad9e68117c10ee90a29919eba', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-message', 'aliases' => array(), 'dev_requirement' => false, ), 'psr/log' => array( 'pretty_version' => '2.0.0', 'version' => '2.0.0.0', 'reference' => 'ef29f6d262798707a9edd554e2b82517ef3a9376', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => false, ), 'psr/log-implementation' => array( 'dev_requirement' => false, 'provided' => array( 0 => '1.0|2.0', ), ), 'react/async' => array( 'pretty_version' => 'v3.2.0', 'version' => '3.2.0.0', 'reference' => 'bc3ef672b33e95bf814fe8377731e46888ed4b54', 'type' => 'library', 'install_path' => __DIR__ . '/../react/async', 'aliases' => array(), 'dev_requirement' => false, ), 'react/cache' => array( 'pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', 'type' => 'library', 'install_path' => __DIR__ . '/../react/cache', 'aliases' => array(), 'dev_requirement' => false, ), 'react/child-process' => array( 'pretty_version' => '0.7.x-dev', 'version' => '0.7.9999999.9999999-dev', 'reference' => 'ce2654d21d2a749e0a6142d00432e65ba003a2d9', 'type' => 'library', 'install_path' => __DIR__ . '/../react/child-process', 'aliases' => array(), 'dev_requirement' => false, ), 'react/dns' => array( 'pretty_version' => 'v1.13.0', 'version' => '1.13.0.0', 'reference' => 'eb8ae001b5a455665c89c1df97f6fb682f8fb0f5', 'type' => 'library', 'install_path' => __DIR__ . '/../react/dns', 'aliases' => array(), 'dev_requirement' => false, ), 'react/event-loop' => array( 'pretty_version' => 'v1.5.0', 'version' => '1.5.0.0', 'reference' => 'bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), 'dev_requirement' => false, ), 'react/http' => array( 'pretty_version' => 'v1.10.0', 'version' => '1.10.0.0', 'reference' => '8111281ee57f22b7194f5dba225e609ba7ce4d20', 'type' => 'library', 'install_path' => __DIR__ . '/../react/http', 'aliases' => array(), 'dev_requirement' => false, ), 'react/promise' => array( 'pretty_version' => 'v3.2.0', 'version' => '3.2.0.0', 'reference' => '8a164643313c71354582dc850b42b33fa12a4b63', 'type' => 'library', 'install_path' => __DIR__ . '/../react/promise', 'aliases' => array(), 'dev_requirement' => false, ), 'react/socket' => array( 'pretty_version' => 'v1.16.0', 'version' => '1.16.0.0', 'reference' => '23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1', 'type' => 'library', 'install_path' => __DIR__ . '/../react/socket', 'aliases' => array(), 'dev_requirement' => false, ), 'react/stream' => array( 'pretty_version' => 'v1.4.0', 'version' => '1.4.0.0', 'reference' => '1e5b0acb8fe55143b5b426817155190eb6f5b18d', 'type' => 'library', 'install_path' => __DIR__ . '/../react/stream', 'aliases' => array(), 'dev_requirement' => false, ), 'sebastian/cli-parser' => array( 'pretty_version' => '1.0.1', 'version' => '1.0.1.0', 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/cli-parser', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/code-unit' => array( 'pretty_version' => '1.0.8', 'version' => '1.0.8.0', 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/code-unit', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/code-unit-reverse-lookup' => array( 'pretty_version' => '2.0.3', 'version' => '2.0.3.0', 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/comparator' => array( 'pretty_version' => '4.0.6', 'version' => '4.0.6.0', 'reference' => '55f4261989e546dc112258c7a75935a81a7ce382', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/comparator', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/complexity' => array( 'pretty_version' => '2.0.3', 'version' => '2.0.3.0', 'reference' => '25f207c40d62b8b7aa32f5ab026c53561964053a', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/complexity', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/diff' => array( 'pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/environment' => array( 'pretty_version' => '5.1.5', 'version' => '5.1.5.0', 'reference' => '830c43a844f1f8d5b7a1f6d6076b784454d8b7ed', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/environment', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/exporter' => array( 'pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => '65e8b7db476c5dd267e65eea9cab77584d3cfff9', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/exporter', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/global-state' => array( 'pretty_version' => '5.0.5', 'version' => '5.0.5.0', 'reference' => '0ca8db5a5fc9c8646244e629625ac486fa286bf2', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/global-state', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/lines-of-code' => array( 'pretty_version' => '1.0.4', 'version' => '1.0.4.0', 'reference' => 'e1e4a170560925c26d424b6a03aed157e7dcc5c5', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/lines-of-code', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/object-enumerator' => array( 'pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/object-enumerator', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/object-reflector' => array( 'pretty_version' => '2.0.4', 'version' => '2.0.4.0', 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/object-reflector', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/recursion-context' => array( 'pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/recursion-context', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/resource-operations' => array( 'pretty_version' => '3.0.3', 'version' => '3.0.3.0', 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/resource-operations', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/type' => array( 'pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => 'b233b84bc4465aff7b57cf1c4bc75c86d00d6dad', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/type', 'aliases' => array(), 'dev_requirement' => true, ), 'sebastian/version' => array( 'pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'c6c1022351a901512170118436c764e473f6de8c', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/version', 'aliases' => array(), 'dev_requirement' => true, ), 'shipmonk/composer-dependency-analyser' => array( 'pretty_version' => '1.7.0', 'version' => '1.7.0.0', 'reference' => 'bca862b2830a453734aee048eb0cdab82e5c9da3', 'type' => 'library', 'install_path' => __DIR__ . '/../shipmonk/composer-dependency-analyser', 'aliases' => array(), 'dev_requirement' => true, ), 'shipmonk/name-collision-detector' => array( 'pretty_version' => '2.1.1', 'version' => '2.1.1.0', 'reference' => 'e8c8267a9a3774450b64f4cbf0bb035108e78f07', 'type' => 'library', 'install_path' => __DIR__ . '/../shipmonk/name-collision-detector', 'aliases' => array(), 'dev_requirement' => true, ), 'symfony/console' => array( 'pretty_version' => 'v5.4.41', 'version' => '5.4.41.0', 'reference' => '6473d441a913cb997123b59ff2dbe3d1cf9e11ba', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/deprecation-contracts' => array( 'pretty_version' => 'v3.5.0', 'version' => '3.5.0.0', 'reference' => '0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/finder' => array( 'pretty_version' => 'v5.4.40', 'version' => '5.4.40.0', 'reference' => 'f51cff4687547641c7d8180d74932ab40b2205ce', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/polyfill-ctype' => array( 'pretty_version' => 'v1.31.0', 'version' => '1.31.0.0', 'reference' => 'a3cc8b044a6ea513310cbd48ef7333b384945638', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/polyfill-intl-grapheme' => array( 'pretty_version' => 'v1.31.0', 'version' => '1.31.0.0', 'reference' => 'b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/polyfill-intl-normalizer' => array( 'pretty_version' => 'v1.31.0', 'version' => '1.31.0.0', 'reference' => '3833d7255cc303546435cb650316bff708a1c75c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/polyfill-mbstring' => array( 'pretty_version' => 'v1.31.0', 'version' => '1.31.0.0', 'reference' => '85181ba99b2345b0ef10ce42ecac37612d9fd341', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/polyfill-php73' => array( 'pretty_version' => 'v1.31.0', 'version' => '1.31.0.0', 'reference' => '0f68c03565dcaaf25a890667542e8bd75fe7e5bb', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php73', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/polyfill-php74' => array( 'pretty_version' => 'v1.31.0', 'version' => '1.31.0.0', 'reference' => '9589537d05325fb5d88a20d8926823e5b827a43e', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php74', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/polyfill-php80' => array( 'pretty_version' => 'v1.31.0', 'version' => '1.31.0.0', 'reference' => '60328e362d4c2c802a54fcbf04f9d3fb892b4cf8', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php80', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/polyfill-php81' => array( 'pretty_version' => 'v1.31.0', 'version' => '1.31.0.0', 'reference' => '4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php81', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/process' => array( 'pretty_version' => 'v5.4.40', 'version' => '5.4.40.0', 'reference' => 'deedcb3bb4669cae2148bc920eafd2b16dc7c046', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/service-contracts' => array( 'pretty_version' => 'v2.5.3', 'version' => '2.5.3.0', 'reference' => 'a2329596ddc8fd568900e3fc76cba42489ecc7f3', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/string' => array( 'pretty_version' => 'v5.4.41', 'version' => '5.4.41.0', 'reference' => '065a9611e0b1fd2197a867e1fb7f2238191b7096', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), 'dev_requirement' => false, ), 'theseer/tokenizer' => array( 'pretty_version' => '1.2.1', 'version' => '1.2.1.0', 'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e', 'type' => 'library', 'install_path' => __DIR__ . '/../theseer/tokenizer', 'aliases' => array(), 'dev_requirement' => true, ), ), ); setClassMapAuthoritative(true); $loader->register(true); $filesToLoad = \Composer\Autoload\ComposerStaticInit07b46dce51ea41c025511b9415b3274c::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; require $file; } }, null, null); foreach ($filesToLoad as $fileIdentifier => $file) { $requireFile($fileIdentifier, $file); } return $loader; } } $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', 'CURLStringFile' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 'Hoa\\Compiler\\Bin\\Pp' => $vendorDir . '/hoa/compiler/Bin/Pp.php', 'Hoa\\Compiler\\Exception\\Exception' => $vendorDir . '/hoa/compiler/Exception/Exception.php', 'Hoa\\Compiler\\Exception\\FinalStateHasNotBeenReached' => $vendorDir . '/hoa/compiler/Exception/FinalStateHasNotBeenReached.php', 'Hoa\\Compiler\\Exception\\IllegalToken' => $vendorDir . '/hoa/compiler/Exception/IllegalToken.php', 'Hoa\\Compiler\\Exception\\Lexer' => $vendorDir . '/hoa/compiler/Exception/Lexer.php', 'Hoa\\Compiler\\Exception\\Rule' => $vendorDir . '/hoa/compiler/Exception/Rule.php', 'Hoa\\Compiler\\Exception\\UnexpectedToken' => $vendorDir . '/hoa/compiler/Exception/UnexpectedToken.php', 'Hoa\\Compiler\\Exception\\UnrecognizedToken' => $vendorDir . '/hoa/compiler/Exception/UnrecognizedToken.php', 'Hoa\\Compiler\\Ll1' => $vendorDir . '/hoa/compiler/Ll1.php', 'Hoa\\Compiler\\Llk\\Lexer' => $vendorDir . '/hoa/compiler/Llk/Lexer.php', 'Hoa\\Compiler\\Llk\\Llk' => $vendorDir . '/hoa/compiler/Llk/Llk.php', 'Hoa\\Compiler\\Llk\\Parser' => $vendorDir . '/hoa/compiler/Llk/Parser.php', 'Hoa\\Compiler\\Llk\\Rule\\Analyzer' => $vendorDir . '/hoa/compiler/Llk/Rule/Analyzer.php', 'Hoa\\Compiler\\Llk\\Rule\\Choice' => $vendorDir . '/hoa/compiler/Llk/Rule/Choice.php', 'Hoa\\Compiler\\Llk\\Rule\\Concatenation' => $vendorDir . '/hoa/compiler/Llk/Rule/Concatenation.php', 'Hoa\\Compiler\\Llk\\Rule\\Ekzit' => $vendorDir . '/hoa/compiler/Llk/Rule/Ekzit.php', 'Hoa\\Compiler\\Llk\\Rule\\Entry' => $vendorDir . '/hoa/compiler/Llk/Rule/Entry.php', 'Hoa\\Compiler\\Llk\\Rule\\Invocation' => $vendorDir . '/hoa/compiler/Llk/Rule/Invocation.php', 'Hoa\\Compiler\\Llk\\Rule\\Repetition' => $vendorDir . '/hoa/compiler/Llk/Rule/Repetition.php', 'Hoa\\Compiler\\Llk\\Rule\\Rule' => $vendorDir . '/hoa/compiler/Llk/Rule/Rule.php', 'Hoa\\Compiler\\Llk\\Rule\\Token' => $vendorDir . '/hoa/compiler/Llk/Rule/Token.php', 'Hoa\\Compiler\\Llk\\Sampler\\BoundedExhaustive' => $vendorDir . '/hoa/compiler/Llk/Sampler/BoundedExhaustive.php', 'Hoa\\Compiler\\Llk\\Sampler\\Coverage' => $vendorDir . '/hoa/compiler/Llk/Sampler/Coverage.php', 'Hoa\\Compiler\\Llk\\Sampler\\Exception' => $vendorDir . '/hoa/compiler/Llk/Sampler/Exception.php', 'Hoa\\Compiler\\Llk\\Sampler\\Sampler' => $vendorDir . '/hoa/compiler/Llk/Sampler/Sampler.php', 'Hoa\\Compiler\\Llk\\Sampler\\Uniform' => $vendorDir . '/hoa/compiler/Llk/Sampler/Uniform.php', 'Hoa\\Compiler\\Llk\\TreeNode' => $vendorDir . '/hoa/compiler/Llk/TreeNode.php', 'Hoa\\Compiler\\Visitor\\Dump' => $vendorDir . '/hoa/compiler/Visitor/Dump.php', 'Hoa\\Consistency\\Autoloader' => $vendorDir . '/hoa/consistency/Autoloader.php', 'Hoa\\Consistency\\Consistency' => $vendorDir . '/hoa/consistency/Consistency.php', 'Hoa\\Consistency\\Exception' => $vendorDir . '/hoa/consistency/Exception.php', 'Hoa\\Consistency\\Xcallable' => $vendorDir . '/hoa/consistency/Xcallable.php', 'Hoa\\Event\\Bucket' => $vendorDir . '/hoa/event/Bucket.php', 'Hoa\\Event\\Event' => $vendorDir . '/hoa/event/Event.php', 'Hoa\\Event\\Exception' => $vendorDir . '/hoa/event/Exception.php', 'Hoa\\Event\\Listenable' => $vendorDir . '/hoa/event/Listenable.php', 'Hoa\\Event\\Listener' => $vendorDir . '/hoa/event/Listener.php', 'Hoa\\Event\\Listens' => $vendorDir . '/hoa/event/Listens.php', 'Hoa\\Event\\Source' => $vendorDir . '/hoa/event/Source.php', 'Hoa\\Exception\\Error' => $vendorDir . '/hoa/exception/Error.php', 'Hoa\\Exception\\Exception' => $vendorDir . '/hoa/exception/Exception.php', 'Hoa\\Exception\\Group' => $vendorDir . '/hoa/exception/Group.php', 'Hoa\\Exception\\Idle' => $vendorDir . '/hoa/exception/Idle.php', 'Hoa\\File\\Directory' => $vendorDir . '/hoa/file/Directory.php', 'Hoa\\File\\Exception\\Exception' => $vendorDir . '/hoa/file/Exception/Exception.php', 'Hoa\\File\\Exception\\FileDoesNotExist' => $vendorDir . '/hoa/file/Exception/FileDoesNotExist.php', 'Hoa\\File\\File' => $vendorDir . '/hoa/file/File.php', 'Hoa\\File\\Finder' => $vendorDir . '/hoa/file/Finder.php', 'Hoa\\File\\Generic' => $vendorDir . '/hoa/file/Generic.php', 'Hoa\\File\\Link\\Link' => $vendorDir . '/hoa/file/Link/Link.php', 'Hoa\\File\\Link\\Read' => $vendorDir . '/hoa/file/Link/Read.php', 'Hoa\\File\\Link\\ReadWrite' => $vendorDir . '/hoa/file/Link/ReadWrite.php', 'Hoa\\File\\Link\\Write' => $vendorDir . '/hoa/file/Link/Write.php', 'Hoa\\File\\Read' => $vendorDir . '/hoa/file/Read.php', 'Hoa\\File\\ReadWrite' => $vendorDir . '/hoa/file/ReadWrite.php', 'Hoa\\File\\SplFileInfo' => $vendorDir . '/hoa/file/SplFileInfo.php', 'Hoa\\File\\Temporary\\Read' => $vendorDir . '/hoa/file/Temporary/Read.php', 'Hoa\\File\\Temporary\\ReadWrite' => $vendorDir . '/hoa/file/Temporary/ReadWrite.php', 'Hoa\\File\\Temporary\\Temporary' => $vendorDir . '/hoa/file/Temporary/Temporary.php', 'Hoa\\File\\Temporary\\Write' => $vendorDir . '/hoa/file/Temporary/Write.php', 'Hoa\\File\\Watcher' => $vendorDir . '/hoa/file/Watcher.php', 'Hoa\\File\\Write' => $vendorDir . '/hoa/file/Write.php', 'Hoa\\Iterator\\Aggregate' => $vendorDir . '/hoa/iterator/Aggregate.php', 'Hoa\\Iterator\\Append' => $vendorDir . '/hoa/iterator/Append.php', 'Hoa\\Iterator\\Buffer' => $vendorDir . '/hoa/iterator/Buffer.php', 'Hoa\\Iterator\\CallbackFilter' => $vendorDir . '/hoa/iterator/CallbackFilter.php', 'Hoa\\Iterator\\CallbackGenerator' => $vendorDir . '/hoa/iterator/CallbackGenerator.php', 'Hoa\\Iterator\\Counter' => $vendorDir . '/hoa/iterator/Counter.php', 'Hoa\\Iterator\\Demultiplexer' => $vendorDir . '/hoa/iterator/Demultiplexer.php', 'Hoa\\Iterator\\Directory' => $vendorDir . '/hoa/iterator/Directory.php', 'Hoa\\Iterator\\Exception' => $vendorDir . '/hoa/iterator/Exception.php', 'Hoa\\Iterator\\FileSystem' => $vendorDir . '/hoa/iterator/FileSystem.php', 'Hoa\\Iterator\\Filter' => $vendorDir . '/hoa/iterator/Filter.php', 'Hoa\\Iterator\\Glob' => $vendorDir . '/hoa/iterator/Glob.php', 'Hoa\\Iterator\\Infinite' => $vendorDir . '/hoa/iterator/Infinite.php', 'Hoa\\Iterator\\Iterator' => $vendorDir . '/hoa/iterator/Iterator.php', 'Hoa\\Iterator\\IteratorIterator' => $vendorDir . '/hoa/iterator/IteratorIterator.php', 'Hoa\\Iterator\\Limit' => $vendorDir . '/hoa/iterator/Limit.php', 'Hoa\\Iterator\\Lookahead' => $vendorDir . '/hoa/iterator/Lookahead.php', 'Hoa\\Iterator\\Lookbehind' => $vendorDir . '/hoa/iterator/Lookbehind.php', 'Hoa\\Iterator\\Map' => $vendorDir . '/hoa/iterator/Map.php', 'Hoa\\Iterator\\Mock' => $vendorDir . '/hoa/iterator/Mock.php', 'Hoa\\Iterator\\Multiple' => $vendorDir . '/hoa/iterator/Multiple.php', 'Hoa\\Iterator\\NoRewind' => $vendorDir . '/hoa/iterator/NoRewind.php', 'Hoa\\Iterator\\Outer' => $vendorDir . '/hoa/iterator/Outer.php', 'Hoa\\Iterator\\Recursive\\CallbackFilter' => $vendorDir . '/hoa/iterator/Recursive/CallbackFilter.php', 'Hoa\\Iterator\\Recursive\\Directory' => $vendorDir . '/hoa/iterator/Recursive/Directory.php', 'Hoa\\Iterator\\Recursive\\Filter' => $vendorDir . '/hoa/iterator/Recursive/Filter.php', 'Hoa\\Iterator\\Recursive\\Iterator' => $vendorDir . '/hoa/iterator/Recursive/Iterator.php', 'Hoa\\Iterator\\Recursive\\Map' => $vendorDir . '/hoa/iterator/Recursive/Map.php', 'Hoa\\Iterator\\Recursive\\Mock' => $vendorDir . '/hoa/iterator/Recursive/Mock.php', 'Hoa\\Iterator\\Recursive\\Recursive' => $vendorDir . '/hoa/iterator/Recursive/Recursive.php', 'Hoa\\Iterator\\Recursive\\RegularExpression' => $vendorDir . '/hoa/iterator/Recursive/RegularExpression.php', 'Hoa\\Iterator\\RegularExpression' => $vendorDir . '/hoa/iterator/RegularExpression.php', 'Hoa\\Iterator\\Repeater' => $vendorDir . '/hoa/iterator/Repeater.php', 'Hoa\\Iterator\\Seekable' => $vendorDir . '/hoa/iterator/Seekable.php', 'Hoa\\Iterator\\SplFileInfo' => $vendorDir . '/hoa/iterator/SplFileInfo.php', 'Hoa\\Math\\Bin\\Calc' => $vendorDir . '/hoa/math/Bin/Calc.php', 'Hoa\\Math\\Combinatorics\\Combination\\CartesianProduct' => $vendorDir . '/hoa/math/Combinatorics/Combination/CartesianProduct.php', 'Hoa\\Math\\Combinatorics\\Combination\\Combination' => $vendorDir . '/hoa/math/Combinatorics/Combination/Combination.php', 'Hoa\\Math\\Combinatorics\\Combination\\Gamma' => $vendorDir . '/hoa/math/Combinatorics/Combination/Gamma.php', 'Hoa\\Math\\Context' => $vendorDir . '/hoa/math/Context.php', 'Hoa\\Math\\Exception\\AlreadyDefinedConstant' => $vendorDir . '/hoa/math/Exception/AlreadyDefinedConstant.php', 'Hoa\\Math\\Exception\\Exception' => $vendorDir . '/hoa/math/Exception/Exception.php', 'Hoa\\Math\\Exception\\UnknownConstant' => $vendorDir . '/hoa/math/Exception/UnknownConstant.php', 'Hoa\\Math\\Exception\\UnknownFunction' => $vendorDir . '/hoa/math/Exception/UnknownFunction.php', 'Hoa\\Math\\Exception\\UnknownVariable' => $vendorDir . '/hoa/math/Exception/UnknownVariable.php', 'Hoa\\Math\\Sampler\\Random' => $vendorDir . '/hoa/math/Sampler/Random.php', 'Hoa\\Math\\Sampler\\Sampler' => $vendorDir . '/hoa/math/Sampler/Sampler.php', 'Hoa\\Math\\Util' => $vendorDir . '/hoa/math/Util.php', 'Hoa\\Math\\Visitor\\Arithmetic' => $vendorDir . '/hoa/math/Visitor/Arithmetic.php', 'Hoa\\Protocol\\Bin\\Resolve' => $vendorDir . '/hoa/protocol/Bin/Resolve.php', 'Hoa\\Protocol\\Exception' => $vendorDir . '/hoa/protocol/Exception.php', 'Hoa\\Protocol\\Node\\Library' => $vendorDir . '/hoa/protocol/Node/Library.php', 'Hoa\\Protocol\\Node\\Node' => $vendorDir . '/hoa/protocol/Node/Node.php', 'Hoa\\Protocol\\Protocol' => $vendorDir . '/hoa/protocol/Protocol.php', 'Hoa\\Protocol\\Wrapper' => $vendorDir . '/hoa/protocol/Wrapper.php', 'Hoa\\Regex\\Exception' => $vendorDir . '/hoa/regex/Exception.php', 'Hoa\\Regex\\Visitor\\Isotropic' => $vendorDir . '/hoa/regex/Visitor/Isotropic.php', 'Hoa\\Stream\\Bucket' => $vendorDir . '/hoa/stream/Bucket.php', 'Hoa\\Stream\\Composite' => $vendorDir . '/hoa/stream/Composite.php', 'Hoa\\Stream\\Context' => $vendorDir . '/hoa/stream/Context.php', 'Hoa\\Stream\\Exception' => $vendorDir . '/hoa/stream/Exception.php', 'Hoa\\Stream\\Filter\\Basic' => $vendorDir . '/hoa/stream/Filter/Basic.php', 'Hoa\\Stream\\Filter\\Exception' => $vendorDir . '/hoa/stream/Filter/Exception.php', 'Hoa\\Stream\\Filter\\Filter' => $vendorDir . '/hoa/stream/Filter/Filter.php', 'Hoa\\Stream\\Filter\\LateComputed' => $vendorDir . '/hoa/stream/Filter/LateComputed.php', 'Hoa\\Stream\\IStream\\Bufferable' => $vendorDir . '/hoa/stream/IStream/Bufferable.php', 'Hoa\\Stream\\IStream\\In' => $vendorDir . '/hoa/stream/IStream/In.php', 'Hoa\\Stream\\IStream\\Lockable' => $vendorDir . '/hoa/stream/IStream/Lockable.php', 'Hoa\\Stream\\IStream\\Out' => $vendorDir . '/hoa/stream/IStream/Out.php', 'Hoa\\Stream\\IStream\\Pathable' => $vendorDir . '/hoa/stream/IStream/Pathable.php', 'Hoa\\Stream\\IStream\\Pointable' => $vendorDir . '/hoa/stream/IStream/Pointable.php', 'Hoa\\Stream\\IStream\\Statable' => $vendorDir . '/hoa/stream/IStream/Statable.php', 'Hoa\\Stream\\IStream\\Stream' => $vendorDir . '/hoa/stream/IStream/Stream.php', 'Hoa\\Stream\\IStream\\Structural' => $vendorDir . '/hoa/stream/IStream/Structural.php', 'Hoa\\Stream\\IStream\\Touchable' => $vendorDir . '/hoa/stream/IStream/Touchable.php', 'Hoa\\Stream\\Stream' => $vendorDir . '/hoa/stream/Stream.php', 'Hoa\\Stream\\Wrapper\\Exception' => $vendorDir . '/hoa/stream/Wrapper/Exception.php', 'Hoa\\Stream\\Wrapper\\IWrapper\\File' => $vendorDir . '/hoa/stream/Wrapper/IWrapper/File.php', 'Hoa\\Stream\\Wrapper\\IWrapper\\IWrapper' => $vendorDir . '/hoa/stream/Wrapper/IWrapper/IWrapper.php', 'Hoa\\Stream\\Wrapper\\IWrapper\\Stream' => $vendorDir . '/hoa/stream/Wrapper/IWrapper/Stream.php', 'Hoa\\Stream\\Wrapper\\Wrapper' => $vendorDir . '/hoa/stream/Wrapper/Wrapper.php', 'Hoa\\Ustring\\Bin\\Fromcode' => $vendorDir . '/hoa/ustring/Bin/Fromcode.php', 'Hoa\\Ustring\\Bin\\Tocode' => $vendorDir . '/hoa/ustring/Bin/Tocode.php', 'Hoa\\Ustring\\Exception' => $vendorDir . '/hoa/ustring/Exception.php', 'Hoa\\Ustring\\Search' => $vendorDir . '/hoa/ustring/Search.php', 'Hoa\\Ustring\\Ustring' => $vendorDir . '/hoa/ustring/Ustring.php', 'Hoa\\Visitor\\Element' => $vendorDir . '/hoa/visitor/Element.php', 'Hoa\\Visitor\\Visit' => $vendorDir . '/hoa/visitor/Visit.php', 'Hoa\\Zformat\\Exception' => $vendorDir . '/hoa/zformat/Exception.php', 'Hoa\\Zformat\\Parameter' => $vendorDir . '/hoa/zformat/Parameter.php', 'Hoa\\Zformat\\Parameterizable' => $vendorDir . '/hoa/zformat/Parameterizable.php', 'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', 'PHPStan\\AnalysedCodeException' => $baseDir . '/src/AnalysedCodeException.php', 'PHPStan\\Analyser\\Analyser' => $baseDir . '/src/Analyser/Analyser.php', 'PHPStan\\Analyser\\AnalyserResult' => $baseDir . '/src/Analyser/AnalyserResult.php', 'PHPStan\\Analyser\\AnalyserResultFinalizer' => $baseDir . '/src/Analyser/AnalyserResultFinalizer.php', 'PHPStan\\Analyser\\ArgumentsNormalizer' => $baseDir . '/src/Analyser/ArgumentsNormalizer.php', 'PHPStan\\Analyser\\ConditionalExpressionHolder' => $baseDir . '/src/Analyser/ConditionalExpressionHolder.php', 'PHPStan\\Analyser\\ConstantResolver' => $baseDir . '/src/Analyser/ConstantResolver.php', 'PHPStan\\Analyser\\ConstantResolverFactory' => $baseDir . '/src/Analyser/ConstantResolverFactory.php', 'PHPStan\\Analyser\\DirectInternalScopeFactory' => $baseDir . '/src/Analyser/DirectInternalScopeFactory.php', 'PHPStan\\Analyser\\EndStatementResult' => $baseDir . '/src/Analyser/EndStatementResult.php', 'PHPStan\\Analyser\\EnsuredNonNullabilityResult' => $baseDir . '/src/Analyser/EnsuredNonNullabilityResult.php', 'PHPStan\\Analyser\\EnsuredNonNullabilityResultExpression' => $baseDir . '/src/Analyser/EnsuredNonNullabilityResultExpression.php', 'PHPStan\\Analyser\\Error' => $baseDir . '/src/Analyser/Error.php', 'PHPStan\\Analyser\\ExpressionContext' => $baseDir . '/src/Analyser/ExpressionContext.php', 'PHPStan\\Analyser\\ExpressionResult' => $baseDir . '/src/Analyser/ExpressionResult.php', 'PHPStan\\Analyser\\ExpressionTypeHolder' => $baseDir . '/src/Analyser/ExpressionTypeHolder.php', 'PHPStan\\Analyser\\FileAnalyser' => $baseDir . '/src/Analyser/FileAnalyser.php', 'PHPStan\\Analyser\\FileAnalyserResult' => $baseDir . '/src/Analyser/FileAnalyserResult.php', 'PHPStan\\Analyser\\FinalizerResult' => $baseDir . '/src/Analyser/FinalizerResult.php', 'PHPStan\\Analyser\\Ignore\\IgnoreLexer' => $baseDir . '/src/Analyser/Ignore/IgnoreLexer.php', 'PHPStan\\Analyser\\Ignore\\IgnoreParseException' => $baseDir . '/src/Analyser/Ignore/IgnoreParseException.php', 'PHPStan\\Analyser\\Ignore\\IgnoredError' => $baseDir . '/src/Analyser/Ignore/IgnoredError.php', 'PHPStan\\Analyser\\Ignore\\IgnoredErrorHelper' => $baseDir . '/src/Analyser/Ignore/IgnoredErrorHelper.php', 'PHPStan\\Analyser\\Ignore\\IgnoredErrorHelperProcessedResult' => $baseDir . '/src/Analyser/Ignore/IgnoredErrorHelperProcessedResult.php', 'PHPStan\\Analyser\\Ignore\\IgnoredErrorHelperResult' => $baseDir . '/src/Analyser/Ignore/IgnoredErrorHelperResult.php', 'PHPStan\\Analyser\\ImpurePoint' => $baseDir . '/src/Analyser/ImpurePoint.php', 'PHPStan\\Analyser\\InternalError' => $baseDir . '/src/Analyser/InternalError.php', 'PHPStan\\Analyser\\InternalScopeFactory' => $baseDir . '/src/Analyser/InternalScopeFactory.php', 'PHPStan\\Analyser\\LazyInternalScopeFactory' => $baseDir . '/src/Analyser/LazyInternalScopeFactory.php', 'PHPStan\\Analyser\\LocalIgnoresProcessor' => $baseDir . '/src/Analyser/LocalIgnoresProcessor.php', 'PHPStan\\Analyser\\LocalIgnoresProcessorResult' => $baseDir . '/src/Analyser/LocalIgnoresProcessorResult.php', 'PHPStan\\Analyser\\MutatingScope' => $baseDir . '/src/Analyser/MutatingScope.php', 'PHPStan\\Analyser\\NameScope' => $baseDir . '/src/Analyser/NameScope.php', 'PHPStan\\Analyser\\NodeScopeResolver' => $baseDir . '/src/Analyser/NodeScopeResolver.php', 'PHPStan\\Analyser\\NullsafeOperatorHelper' => $baseDir . '/src/Analyser/NullsafeOperatorHelper.php', 'PHPStan\\Analyser\\OutOfClassScope' => $baseDir . '/src/Analyser/OutOfClassScope.php', 'PHPStan\\Analyser\\ProcessClosureResult' => $baseDir . '/src/Analyser/ProcessClosureResult.php', 'PHPStan\\Analyser\\ResultCache\\ResultCache' => $baseDir . '/src/Analyser/ResultCache/ResultCache.php', 'PHPStan\\Analyser\\ResultCache\\ResultCacheClearer' => $baseDir . '/src/Analyser/ResultCache/ResultCacheClearer.php', 'PHPStan\\Analyser\\ResultCache\\ResultCacheManager' => $baseDir . '/src/Analyser/ResultCache/ResultCacheManager.php', 'PHPStan\\Analyser\\ResultCache\\ResultCacheManagerFactory' => $baseDir . '/src/Analyser/ResultCache/ResultCacheManagerFactory.php', 'PHPStan\\Analyser\\ResultCache\\ResultCacheProcessResult' => $baseDir . '/src/Analyser/ResultCache/ResultCacheProcessResult.php', 'PHPStan\\Analyser\\RicherScopeGetTypeHelper' => $baseDir . '/src/Analyser/RicherScopeGetTypeHelper.php', 'PHPStan\\Analyser\\RuleErrorTransformer' => $baseDir . '/src/Analyser/RuleErrorTransformer.php', 'PHPStan\\Analyser\\Scope' => $baseDir . '/src/Analyser/Scope.php', 'PHPStan\\Analyser\\ScopeContext' => $baseDir . '/src/Analyser/ScopeContext.php', 'PHPStan\\Analyser\\ScopeFactory' => $baseDir . '/src/Analyser/ScopeFactory.php', 'PHPStan\\Analyser\\SpecifiedTypes' => $baseDir . '/src/Analyser/SpecifiedTypes.php', 'PHPStan\\Analyser\\StatementContext' => $baseDir . '/src/Analyser/StatementContext.php', 'PHPStan\\Analyser\\StatementExitPoint' => $baseDir . '/src/Analyser/StatementExitPoint.php', 'PHPStan\\Analyser\\StatementResult' => $baseDir . '/src/Analyser/StatementResult.php', 'PHPStan\\Analyser\\ThrowPoint' => $baseDir . '/src/Analyser/ThrowPoint.php', 'PHPStan\\Analyser\\TypeSpecifier' => $baseDir . '/src/Analyser/TypeSpecifier.php', 'PHPStan\\Analyser\\TypeSpecifierAwareExtension' => $baseDir . '/src/Analyser/TypeSpecifierAwareExtension.php', 'PHPStan\\Analyser\\TypeSpecifierContext' => $baseDir . '/src/Analyser/TypeSpecifierContext.php', 'PHPStan\\Analyser\\TypeSpecifierFactory' => $baseDir . '/src/Analyser/TypeSpecifierFactory.php', 'PHPStan\\Analyser\\UndefinedVariableException' => $baseDir . '/src/Analyser/UndefinedVariableException.php', 'PHPStan\\BetterReflection\\BetterReflection' => $vendorDir . '/ondrejmirtes/better-reflection/src/BetterReflection.php', 'PHPStan\\BetterReflection\\Identifier\\Exception\\InvalidIdentifierName' => $vendorDir . '/ondrejmirtes/better-reflection/src/Identifier/Exception/InvalidIdentifierName.php', 'PHPStan\\BetterReflection\\Identifier\\Identifier' => $vendorDir . '/ondrejmirtes/better-reflection/src/Identifier/Identifier.php', 'PHPStan\\BetterReflection\\Identifier\\IdentifierType' => $vendorDir . '/ondrejmirtes/better-reflection/src/Identifier/IdentifierType.php', 'PHPStan\\BetterReflection\\NodeCompiler\\CompileNodeToValue' => $vendorDir . '/ondrejmirtes/better-reflection/src/NodeCompiler/CompileNodeToValue.php', 'PHPStan\\BetterReflection\\NodeCompiler\\CompiledValue' => $vendorDir . '/ondrejmirtes/better-reflection/src/NodeCompiler/CompiledValue.php', 'PHPStan\\BetterReflection\\NodeCompiler\\CompilerContext' => $vendorDir . '/ondrejmirtes/better-reflection/src/NodeCompiler/CompilerContext.php', 'PHPStan\\BetterReflection\\NodeCompiler\\Exception\\UnableToCompileNode' => $vendorDir . '/ondrejmirtes/better-reflection/src/NodeCompiler/Exception/UnableToCompileNode.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\Exception\\NotImplemented' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/Exception/NotImplemented.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\FakeReflectionAttribute' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/FakeReflectionAttribute.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionAttribute' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionAttribute.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionAttributeFactory' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionAttributeFactory.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionClass' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionClass.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionClassConstant' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionClassConstant.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionEnum' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionEnum.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionEnumBackedCase' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionEnumBackedCase.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionEnumUnitCase' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionEnumUnitCase.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionFunction' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionFunction.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionIntersectionType' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionIntersectionType.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionMethod' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionMethod.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionNamedType' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionNamedType.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionObject' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionObject.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionParameter' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionParameter.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionProperty' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionProperty.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionType' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionType.php', 'PHPStan\\BetterReflection\\Reflection\\Adapter\\ReflectionUnionType' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Adapter/ReflectionUnionType.php', 'PHPStan\\BetterReflection\\Reflection\\Annotation\\AnnotationHelper' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Annotation/AnnotationHelper.php', 'PHPStan\\BetterReflection\\Reflection\\Attribute\\ReflectionAttributeHelper' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Attribute/ReflectionAttributeHelper.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\CircularReference' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/CircularReference.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\ClassDoesNotExist' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/ClassDoesNotExist.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\CodeLocationMissing' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/CodeLocationMissing.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\FunctionDoesNotExist' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/FunctionDoesNotExist.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\InvalidArrowFunctionBodyNode' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/InvalidArrowFunctionBodyNode.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\InvalidConstantNode' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/InvalidConstantNode.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\InvalidDefaultValueType' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/InvalidDefaultValueType.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\MethodPrototypeNotFound' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/MethodPrototypeNotFound.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\NoObjectProvided' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/NoObjectProvided.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\NoParent' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/NoParent.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\NotAnObject' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/NotAnObject.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\ObjectNotInstanceOfClass' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/ObjectNotInstanceOfClass.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\PropertyDoesNotExist' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/PropertyDoesNotExist.php', 'PHPStan\\BetterReflection\\Reflection\\Exception\\PropertyIsNotStatic' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Exception/PropertyIsNotStatic.php', 'PHPStan\\BetterReflection\\Reflection\\Reflection' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Reflection.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionAttribute' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionAttribute.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionClass' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionClass.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionClassConstant' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionClassConstant.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionConstant' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionConstant.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionEnum' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionEnum.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionEnumCase' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionEnumCase.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionFunction' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionFunction.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionFunctionAbstract' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionFunctionAbstract.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionIntersectionType' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionIntersectionType.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionMethod' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionMethod.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionNamedType' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionNamedType.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionObject' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionObject.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionParameter' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionParameter.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionProperty' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionProperty.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionType' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionType.php', 'PHPStan\\BetterReflection\\Reflection\\ReflectionUnionType' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/ReflectionUnionType.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionAttributeStringCast' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionAttributeStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionClassConstantStringCast' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionClassConstantStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionClassStringCast' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionClassStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionConstantStringCast' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionConstantStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionEnumCaseStringCast' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionEnumCaseStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionFunctionStringCast' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionFunctionStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionMethodStringCast' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionMethodStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionParameterStringCast' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionParameterStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionPropertyStringCast' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionPropertyStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\StringCast\\ReflectionTypeStringCast' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/StringCast/ReflectionTypeStringCast.php', 'PHPStan\\BetterReflection\\Reflection\\Support\\AlreadyVisitedClasses' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflection/Support/AlreadyVisitedClasses.php', 'PHPStan\\BetterReflection\\Reflector\\ClassReflector' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflector/ClassReflector.php', 'PHPStan\\BetterReflection\\Reflector\\ConstantReflector' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflector/ConstantReflector.php', 'PHPStan\\BetterReflection\\Reflector\\DefaultReflector' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflector/DefaultReflector.php', 'PHPStan\\BetterReflection\\Reflector\\Exception\\IdentifierNotFound' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflector/Exception/IdentifierNotFound.php', 'PHPStan\\BetterReflection\\Reflector\\FunctionReflector' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflector/FunctionReflector.php', 'PHPStan\\BetterReflection\\Reflector\\Reflector' => $vendorDir . '/ondrejmirtes/better-reflection/src/Reflector/Reflector.php', 'PHPStan\\BetterReflection\\SourceLocator\\Ast\\Exception\\ParseToAstFailure' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Exception/ParseToAstFailure.php', 'PHPStan\\BetterReflection\\SourceLocator\\Ast\\FindReflectionsInTree' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Ast/FindReflectionsInTree.php', 'PHPStan\\BetterReflection\\SourceLocator\\Ast\\Locator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Locator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Ast\\Parser\\MemoizingParser' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Parser/MemoizingParser.php', 'PHPStan\\BetterReflection\\SourceLocator\\Ast\\Strategy\\AstConversionStrategy' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Strategy/AstConversionStrategy.php', 'PHPStan\\BetterReflection\\SourceLocator\\Ast\\Strategy\\NodeToReflection' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Ast/Strategy/NodeToReflection.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\EvaledAnonymousClassCannotBeLocated' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/EvaledAnonymousClassCannotBeLocated.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\EvaledClosureCannotBeLocated' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/EvaledClosureCannotBeLocated.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\FunctionUndefined' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/FunctionUndefined.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\InvalidDirectory' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/InvalidDirectory.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\InvalidFileInfo' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/InvalidFileInfo.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\InvalidFileLocation' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/InvalidFileLocation.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\NoAnonymousClassOnLine' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/NoAnonymousClassOnLine.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\NoClosureOnLine' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/NoClosureOnLine.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\NotInternalClass' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/NotInternalClass.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\TwoAnonymousClassesOnSameLine' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/TwoAnonymousClassesOnSameLine.php', 'PHPStan\\BetterReflection\\SourceLocator\\Exception\\TwoClosuresOnSameLine' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Exception/TwoClosuresOnSameLine.php', 'PHPStan\\BetterReflection\\SourceLocator\\FileChecker' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/FileChecker.php', 'PHPStan\\BetterReflection\\SourceLocator\\Located\\AliasLocatedSource' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Located/AliasLocatedSource.php', 'PHPStan\\BetterReflection\\SourceLocator\\Located\\AnonymousLocatedSource' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Located/AnonymousLocatedSource.php', 'PHPStan\\BetterReflection\\SourceLocator\\Located\\EvaledLocatedSource' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Located/EvaledLocatedSource.php', 'PHPStan\\BetterReflection\\SourceLocator\\Located\\InternalLocatedSource' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Located/InternalLocatedSource.php', 'PHPStan\\BetterReflection\\SourceLocator\\Located\\LocatedSource' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Located/LocatedSource.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\AggregateSourceStubber' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/AggregateSourceStubber.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\Exception\\CouldNotFindPhpStormStubs' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/Exception/CouldNotFindPhpStormStubs.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\PhpStormStubsSourceStubber' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/PhpStormStubsSourceStubber.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\PhpStormStubs\\CachingVisitor' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/PhpStormStubs/CachingVisitor.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\ReflectionSourceStubber' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/ReflectionSourceStubber.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\SourceStubber' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/SourceStubber.php', 'PHPStan\\BetterReflection\\SourceLocator\\SourceStubber\\StubData' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/SourceStubber/StubData.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\AbstractSourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/AbstractSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\AggregateSourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/AggregateSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\AnonymousClassObjectSourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/AnonymousClassObjectSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\AutoloadSourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/AutoloadSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\AutoloadSourceLocator\\FileReadTrapStreamWrapper' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/AutoloadSourceLocator/FileReadTrapStreamWrapper.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\ClosureSourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/ClosureSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\ComposerSourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/ComposerSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\Exception\\Exception' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/Exception.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\Exception\\FailedToParseJson' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/FailedToParseJson.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\Exception\\InvalidProjectDirectory' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/InvalidProjectDirectory.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\Exception\\MissingComposerJson' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/MissingComposerJson.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\Exception\\MissingInstalledJson' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/Exception/MissingInstalledJson.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\MakeLocatorForComposerJson' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/MakeLocatorForComposerJson.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\MakeLocatorForComposerJsonAndInstalledJson' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/MakeLocatorForComposerJsonAndInstalledJson.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Factory\\MakeLocatorForInstalledJson' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Factory/MakeLocatorForInstalledJson.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\PsrAutoloaderLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/PsrAutoloaderLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Psr\\Exception\\Exception' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/Exception/Exception.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Psr\\Exception\\InvalidPrefixMapping' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/Exception/InvalidPrefixMapping.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Psr\\Psr0Mapping' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/Psr0Mapping.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Psr\\Psr4Mapping' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/Psr4Mapping.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\Composer\\Psr\\PsrAutoloaderMapping' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/Composer/Psr/PsrAutoloaderMapping.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\DirectoriesSourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/DirectoriesSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\EvaledCodeSourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/EvaledCodeSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\FileIteratorSourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/FileIteratorSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\MemoizingSourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/MemoizingSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\PhpInternalSourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/PhpInternalSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\SingleFileSourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/SingleFileSourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\SourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/SourceLocator.php', 'PHPStan\\BetterReflection\\SourceLocator\\Type\\StringSourceLocator' => $vendorDir . '/ondrejmirtes/better-reflection/src/SourceLocator/Type/StringSourceLocator.php', 'PHPStan\\BetterReflection\\Util\\CalculateReflectionColumn' => $vendorDir . '/ondrejmirtes/better-reflection/src/Util/CalculateReflectionColumn.php', 'PHPStan\\BetterReflection\\Util\\ClassExistenceChecker' => $vendorDir . '/ondrejmirtes/better-reflection/src/Util/ClassExistenceChecker.php', 'PHPStan\\BetterReflection\\Util\\ConstantNodeChecker' => $vendorDir . '/ondrejmirtes/better-reflection/src/Util/ConstantNodeChecker.php', 'PHPStan\\BetterReflection\\Util\\Exception\\InvalidNodePosition' => $vendorDir . '/ondrejmirtes/better-reflection/src/Util/Exception/InvalidNodePosition.php', 'PHPStan\\BetterReflection\\Util\\Exception\\NoNodePosition' => $vendorDir . '/ondrejmirtes/better-reflection/src/Util/Exception/NoNodePosition.php', 'PHPStan\\BetterReflection\\Util\\FileHelper' => $vendorDir . '/ondrejmirtes/better-reflection/src/Util/FileHelper.php', 'PHPStan\\BetterReflection\\Util\\FindReflectionOnLine' => $vendorDir . '/ondrejmirtes/better-reflection/src/Util/FindReflectionOnLine.php', 'PHPStan\\BetterReflection\\Util\\GetLastDocComment' => $vendorDir . '/ondrejmirtes/better-reflection/src/Util/GetLastDocComment.php', 'PHPStan\\Broker\\AnonymousClassNameHelper' => $baseDir . '/src/Broker/AnonymousClassNameHelper.php', 'PHPStan\\Broker\\Broker' => $baseDir . '/src/Broker/Broker.php', 'PHPStan\\Broker\\BrokerFactory' => $baseDir . '/src/Broker/BrokerFactory.php', 'PHPStan\\Broker\\ClassAutoloadingException' => $baseDir . '/src/Broker/ClassAutoloadingException.php', 'PHPStan\\Broker\\ClassNotFoundException' => $baseDir . '/src/Broker/ClassNotFoundException.php', 'PHPStan\\Broker\\ConstantNotFoundException' => $baseDir . '/src/Broker/ConstantNotFoundException.php', 'PHPStan\\Broker\\FunctionNotFoundException' => $baseDir . '/src/Broker/FunctionNotFoundException.php', 'PHPStan\\Cache\\Cache' => $baseDir . '/src/Cache/Cache.php', 'PHPStan\\Cache\\CacheItem' => $baseDir . '/src/Cache/CacheItem.php', 'PHPStan\\Cache\\CacheStorage' => $baseDir . '/src/Cache/CacheStorage.php', 'PHPStan\\Cache\\FileCacheStorage' => $baseDir . '/src/Cache/FileCacheStorage.php', 'PHPStan\\Cache\\MemoryCacheStorage' => $baseDir . '/src/Cache/MemoryCacheStorage.php', 'PHPStan\\Classes\\ForbiddenClassNameExtension' => $baseDir . '/src/Classes/ForbiddenClassNameExtension.php', 'PHPStan\\Collectors\\CollectedData' => $baseDir . '/src/Collectors/CollectedData.php', 'PHPStan\\Collectors\\Collector' => $baseDir . '/src/Collectors/Collector.php', 'PHPStan\\Collectors\\Registry' => $baseDir . '/src/Collectors/Registry.php', 'PHPStan\\Collectors\\RegistryFactory' => $baseDir . '/src/Collectors/RegistryFactory.php', 'PHPStan\\Command\\AnalyseApplication' => $baseDir . '/src/Command/AnalyseApplication.php', 'PHPStan\\Command\\AnalyseCommand' => $baseDir . '/src/Command/AnalyseCommand.php', 'PHPStan\\Command\\AnalyserRunner' => $baseDir . '/src/Command/AnalyserRunner.php', 'PHPStan\\Command\\AnalysisResult' => $baseDir . '/src/Command/AnalysisResult.php', 'PHPStan\\Command\\ClearResultCacheCommand' => $baseDir . '/src/Command/ClearResultCacheCommand.php', 'PHPStan\\Command\\CommandHelper' => $baseDir . '/src/Command/CommandHelper.php', 'PHPStan\\Command\\DiagnoseCommand' => $baseDir . '/src/Command/DiagnoseCommand.php', 'PHPStan\\Command\\DumpParametersCommand' => $baseDir . '/src/Command/DumpParametersCommand.php', 'PHPStan\\Command\\ErrorFormatter\\BaselineNeonErrorFormatter' => $baseDir . '/src/Command/ErrorFormatter/BaselineNeonErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\BaselinePhpErrorFormatter' => $baseDir . '/src/Command/ErrorFormatter/BaselinePhpErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\CheckstyleErrorFormatter' => $baseDir . '/src/Command/ErrorFormatter/CheckstyleErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\CiDetectedErrorFormatter' => $baseDir . '/src/Command/ErrorFormatter/CiDetectedErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\ErrorFormatter' => $baseDir . '/src/Command/ErrorFormatter/ErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\GithubErrorFormatter' => $baseDir . '/src/Command/ErrorFormatter/GithubErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\GitlabErrorFormatter' => $baseDir . '/src/Command/ErrorFormatter/GitlabErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\JsonErrorFormatter' => $baseDir . '/src/Command/ErrorFormatter/JsonErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\JunitErrorFormatter' => $baseDir . '/src/Command/ErrorFormatter/JunitErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\RawErrorFormatter' => $baseDir . '/src/Command/ErrorFormatter/RawErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\TableErrorFormatter' => $baseDir . '/src/Command/ErrorFormatter/TableErrorFormatter.php', 'PHPStan\\Command\\ErrorFormatter\\TeamcityErrorFormatter' => $baseDir . '/src/Command/ErrorFormatter/TeamcityErrorFormatter.php', 'PHPStan\\Command\\ErrorsConsoleStyle' => $baseDir . '/src/Command/ErrorsConsoleStyle.php', 'PHPStan\\Command\\FixerApplication' => $baseDir . '/src/Command/FixerApplication.php', 'PHPStan\\Command\\FixerProcessException' => $baseDir . '/src/Command/FixerProcessException.php', 'PHPStan\\Command\\FixerWorkerCommand' => $baseDir . '/src/Command/FixerWorkerCommand.php', 'PHPStan\\Command\\IgnoredRegexValidator' => $baseDir . '/src/Command/IgnoredRegexValidator.php', 'PHPStan\\Command\\IgnoredRegexValidatorResult' => $baseDir . '/src/Command/IgnoredRegexValidatorResult.php', 'PHPStan\\Command\\InceptionNotSuccessfulException' => $baseDir . '/src/Command/InceptionNotSuccessfulException.php', 'PHPStan\\Command\\InceptionResult' => $baseDir . '/src/Command/InceptionResult.php', 'PHPStan\\Command\\Output' => $baseDir . '/src/Command/Output.php', 'PHPStan\\Command\\OutputStyle' => $baseDir . '/src/Command/OutputStyle.php', 'PHPStan\\Command\\Symfony\\SymfonyOutput' => $baseDir . '/src/Command/Symfony/SymfonyOutput.php', 'PHPStan\\Command\\Symfony\\SymfonyStyle' => $baseDir . '/src/Command/Symfony/SymfonyStyle.php', 'PHPStan\\Command\\WorkerCommand' => $baseDir . '/src/Command/WorkerCommand.php', 'PHPStan\\DependencyInjection\\BleedingEdgeToggle' => $baseDir . '/src/DependencyInjection/BleedingEdgeToggle.php', 'PHPStan\\DependencyInjection\\ConditionalTagsExtension' => $baseDir . '/src/DependencyInjection/ConditionalTagsExtension.php', 'PHPStan\\DependencyInjection\\Configurator' => $baseDir . '/src/DependencyInjection/Configurator.php', 'PHPStan\\DependencyInjection\\Container' => $baseDir . '/src/DependencyInjection/Container.php', 'PHPStan\\DependencyInjection\\ContainerFactory' => $baseDir . '/src/DependencyInjection/ContainerFactory.php', 'PHPStan\\DependencyInjection\\DerivativeContainerFactory' => $baseDir . '/src/DependencyInjection/DerivativeContainerFactory.php', 'PHPStan\\DependencyInjection\\DuplicateIncludedFilesException' => $baseDir . '/src/DependencyInjection/DuplicateIncludedFilesException.php', 'PHPStan\\DependencyInjection\\InvalidExcludePathsException' => $baseDir . '/src/DependencyInjection/InvalidExcludePathsException.php', 'PHPStan\\DependencyInjection\\InvalidIgnoredErrorPatternsException' => $baseDir . '/src/DependencyInjection/InvalidIgnoredErrorPatternsException.php', 'PHPStan\\DependencyInjection\\LoaderFactory' => $baseDir . '/src/DependencyInjection/LoaderFactory.php', 'PHPStan\\DependencyInjection\\MemoizingContainer' => $baseDir . '/src/DependencyInjection/MemoizingContainer.php', 'PHPStan\\DependencyInjection\\NeonAdapter' => $baseDir . '/src/DependencyInjection/NeonAdapter.php', 'PHPStan\\DependencyInjection\\NeonLoader' => $baseDir . '/src/DependencyInjection/NeonLoader.php', 'PHPStan\\DependencyInjection\\Neon\\OptionalPath' => $baseDir . '/src/DependencyInjection/Neon/OptionalPath.php', 'PHPStan\\DependencyInjection\\Nette\\NetteContainer' => $baseDir . '/src/DependencyInjection/Nette/NetteContainer.php', 'PHPStan\\DependencyInjection\\ParameterNotFoundException' => $baseDir . '/src/DependencyInjection/ParameterNotFoundException.php', 'PHPStan\\DependencyInjection\\ParametersSchemaExtension' => $baseDir . '/src/DependencyInjection/ParametersSchemaExtension.php', 'PHPStan\\DependencyInjection\\ProjectConfigHelper' => $baseDir . '/src/DependencyInjection/ProjectConfigHelper.php', 'PHPStan\\DependencyInjection\\Reflection\\ClassReflectionExtensionRegistryProvider' => $baseDir . '/src/DependencyInjection/Reflection/ClassReflectionExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Reflection\\LazyClassReflectionExtensionRegistryProvider' => $baseDir . '/src/DependencyInjection/Reflection/LazyClassReflectionExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\RulesExtension' => $baseDir . '/src/DependencyInjection/RulesExtension.php', 'PHPStan\\DependencyInjection\\Type\\DynamicReturnTypeExtensionRegistryProvider' => $baseDir . '/src/DependencyInjection/Type/DynamicReturnTypeExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Type\\DynamicThrowTypeExtensionProvider' => $baseDir . '/src/DependencyInjection/Type/DynamicThrowTypeExtensionProvider.php', 'PHPStan\\DependencyInjection\\Type\\ExpressionTypeResolverExtensionRegistryProvider' => $baseDir . '/src/DependencyInjection/Type/ExpressionTypeResolverExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Type\\LazyDynamicReturnTypeExtensionRegistryProvider' => $baseDir . '/src/DependencyInjection/Type/LazyDynamicReturnTypeExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Type\\LazyDynamicThrowTypeExtensionProvider' => $baseDir . '/src/DependencyInjection/Type/LazyDynamicThrowTypeExtensionProvider.php', 'PHPStan\\DependencyInjection\\Type\\LazyExpressionTypeResolverExtensionRegistryProvider' => $baseDir . '/src/DependencyInjection/Type/LazyExpressionTypeResolverExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Type\\LazyOperatorTypeSpecifyingExtensionRegistryProvider' => $baseDir . '/src/DependencyInjection/Type/LazyOperatorTypeSpecifyingExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Type\\LazyParameterClosureTypeExtensionProvider' => $baseDir . '/src/DependencyInjection/Type/LazyParameterClosureTypeExtensionProvider.php', 'PHPStan\\DependencyInjection\\Type\\LazyParameterOutTypeExtensionProvider' => $baseDir . '/src/DependencyInjection/Type/LazyParameterOutTypeExtensionProvider.php', 'PHPStan\\DependencyInjection\\Type\\OperatorTypeSpecifyingExtensionRegistryProvider' => $baseDir . '/src/DependencyInjection/Type/OperatorTypeSpecifyingExtensionRegistryProvider.php', 'PHPStan\\DependencyInjection\\Type\\ParameterClosureTypeExtensionProvider' => $baseDir . '/src/DependencyInjection/Type/ParameterClosureTypeExtensionProvider.php', 'PHPStan\\DependencyInjection\\Type\\ParameterOutTypeExtensionProvider' => $baseDir . '/src/DependencyInjection/Type/ParameterOutTypeExtensionProvider.php', 'PHPStan\\DependencyInjection\\ValidateExcludePathsExtension' => $baseDir . '/src/DependencyInjection/ValidateExcludePathsExtension.php', 'PHPStan\\DependencyInjection\\ValidateIgnoredErrorsExtension' => $baseDir . '/src/DependencyInjection/ValidateIgnoredErrorsExtension.php', 'PHPStan\\Dependency\\DependencyResolver' => $baseDir . '/src/Dependency/DependencyResolver.php', 'PHPStan\\Dependency\\ExportedNode' => $baseDir . '/src/Dependency/ExportedNode.php', 'PHPStan\\Dependency\\ExportedNodeFetcher' => $baseDir . '/src/Dependency/ExportedNodeFetcher.php', 'PHPStan\\Dependency\\ExportedNodeResolver' => $baseDir . '/src/Dependency/ExportedNodeResolver.php', 'PHPStan\\Dependency\\ExportedNodeVisitor' => $baseDir . '/src/Dependency/ExportedNodeVisitor.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedAttributeNode' => $baseDir . '/src/Dependency/ExportedNode/ExportedAttributeNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedClassConstantNode' => $baseDir . '/src/Dependency/ExportedNode/ExportedClassConstantNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedClassConstantsNode' => $baseDir . '/src/Dependency/ExportedNode/ExportedClassConstantsNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedClassNode' => $baseDir . '/src/Dependency/ExportedNode/ExportedClassNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedEnumCaseNode' => $baseDir . '/src/Dependency/ExportedNode/ExportedEnumCaseNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedEnumNode' => $baseDir . '/src/Dependency/ExportedNode/ExportedEnumNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedFunctionNode' => $baseDir . '/src/Dependency/ExportedNode/ExportedFunctionNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedInterfaceNode' => $baseDir . '/src/Dependency/ExportedNode/ExportedInterfaceNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedMethodNode' => $baseDir . '/src/Dependency/ExportedNode/ExportedMethodNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedParameterNode' => $baseDir . '/src/Dependency/ExportedNode/ExportedParameterNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedPhpDocNode' => $baseDir . '/src/Dependency/ExportedNode/ExportedPhpDocNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedPropertiesNode' => $baseDir . '/src/Dependency/ExportedNode/ExportedPropertiesNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedTraitNode' => $baseDir . '/src/Dependency/ExportedNode/ExportedTraitNode.php', 'PHPStan\\Dependency\\ExportedNode\\ExportedTraitUseAdaptation' => $baseDir . '/src/Dependency/ExportedNode/ExportedTraitUseAdaptation.php', 'PHPStan\\Dependency\\NodeDependencies' => $baseDir . '/src/Dependency/NodeDependencies.php', 'PHPStan\\Dependency\\RootExportedNode' => $baseDir . '/src/Dependency/RootExportedNode.php', 'PHPStan\\Diagnose\\DiagnoseExtension' => $baseDir . '/src/Diagnose/DiagnoseExtension.php', 'PHPStan\\Diagnose\\PHPStanDiagnoseExtension' => $baseDir . '/src/Diagnose/PHPStanDiagnoseExtension.php', 'PHPStan\\File\\CouldNotReadFileException' => $baseDir . '/src/File/CouldNotReadFileException.php', 'PHPStan\\File\\CouldNotWriteFileException' => $baseDir . '/src/File/CouldNotWriteFileException.php', 'PHPStan\\File\\FileExcluder' => $baseDir . '/src/File/FileExcluder.php', 'PHPStan\\File\\FileExcluderFactory' => $baseDir . '/src/File/FileExcluderFactory.php', 'PHPStan\\File\\FileExcluderRawFactory' => $baseDir . '/src/File/FileExcluderRawFactory.php', 'PHPStan\\File\\FileFinder' => $baseDir . '/src/File/FileFinder.php', 'PHPStan\\File\\FileFinderResult' => $baseDir . '/src/File/FileFinderResult.php', 'PHPStan\\File\\FileHelper' => $baseDir . '/src/File/FileHelper.php', 'PHPStan\\File\\FileMonitor' => $baseDir . '/src/File/FileMonitor.php', 'PHPStan\\File\\FileMonitorResult' => $baseDir . '/src/File/FileMonitorResult.php', 'PHPStan\\File\\FileReader' => $baseDir . '/src/File/FileReader.php', 'PHPStan\\File\\FileWriter' => $baseDir . '/src/File/FileWriter.php', 'PHPStan\\File\\FuzzyRelativePathHelper' => $baseDir . '/src/File/FuzzyRelativePathHelper.php', 'PHPStan\\File\\NullRelativePathHelper' => $baseDir . '/src/File/NullRelativePathHelper.php', 'PHPStan\\File\\ParentDirectoryRelativePathHelper' => $baseDir . '/src/File/ParentDirectoryRelativePathHelper.php', 'PHPStan\\File\\PathNotFoundException' => $baseDir . '/src/File/PathNotFoundException.php', 'PHPStan\\File\\RelativePathHelper' => $baseDir . '/src/File/RelativePathHelper.php', 'PHPStan\\File\\SimpleRelativePathHelper' => $baseDir . '/src/File/SimpleRelativePathHelper.php', 'PHPStan\\File\\SystemAgnosticSimpleRelativePathHelper' => $baseDir . '/src/File/SystemAgnosticSimpleRelativePathHelper.php', 'PHPStan\\Internal\\BytesHelper' => $baseDir . '/src/Internal/BytesHelper.php', 'PHPStan\\Internal\\CombinationsHelper' => $baseDir . '/src/Internal/CombinationsHelper.php', 'PHPStan\\Internal\\ComposerHelper' => $baseDir . '/src/Internal/ComposerHelper.php', 'PHPStan\\Internal\\ContainerDynamicReturnTypeExtension' => $baseDir . '/src/Internal/ContainerDynamicReturnTypeExtension.php', 'PHPStan\\Internal\\DirectoryCreator' => $baseDir . '/src/Internal/DirectoryCreator.php', 'PHPStan\\Internal\\DirectoryCreatorException' => $baseDir . '/src/Internal/DirectoryCreatorException.php', 'PHPStan\\Internal\\SprintfHelper' => $baseDir . '/src/Internal/SprintfHelper.php', 'PHPStan\\Node\\AnonymousClassNode' => $baseDir . '/src/Node/AnonymousClassNode.php', 'PHPStan\\Node\\BooleanAndNode' => $baseDir . '/src/Node/BooleanAndNode.php', 'PHPStan\\Node\\BooleanOrNode' => $baseDir . '/src/Node/BooleanOrNode.php', 'PHPStan\\Node\\BreaklessWhileLoopNode' => $baseDir . '/src/Node/BreaklessWhileLoopNode.php', 'PHPStan\\Node\\CatchWithUnthrownExceptionNode' => $baseDir . '/src/Node/CatchWithUnthrownExceptionNode.php', 'PHPStan\\Node\\ClassConstantsNode' => $baseDir . '/src/Node/ClassConstantsNode.php', 'PHPStan\\Node\\ClassMethod' => $baseDir . '/src/Node/ClassMethod.php', 'PHPStan\\Node\\ClassMethodsNode' => $baseDir . '/src/Node/ClassMethodsNode.php', 'PHPStan\\Node\\ClassPropertiesNode' => $baseDir . '/src/Node/ClassPropertiesNode.php', 'PHPStan\\Node\\ClassPropertyNode' => $baseDir . '/src/Node/ClassPropertyNode.php', 'PHPStan\\Node\\ClassStatementsGatherer' => $baseDir . '/src/Node/ClassStatementsGatherer.php', 'PHPStan\\Node\\ClosureReturnStatementsNode' => $baseDir . '/src/Node/ClosureReturnStatementsNode.php', 'PHPStan\\Node\\CollectedDataNode' => $baseDir . '/src/Node/CollectedDataNode.php', 'PHPStan\\Node\\Constant\\ClassConstantFetch' => $baseDir . '/src/Node/Constant/ClassConstantFetch.php', 'PHPStan\\Node\\DoWhileLoopConditionNode' => $baseDir . '/src/Node/DoWhileLoopConditionNode.php', 'PHPStan\\Node\\ExecutionEndNode' => $baseDir . '/src/Node/ExecutionEndNode.php', 'PHPStan\\Node\\Expr\\AlwaysRememberedExpr' => $baseDir . '/src/Node/Expr/AlwaysRememberedExpr.php', 'PHPStan\\Node\\Expr\\ExistingArrayDimFetch' => $baseDir . '/src/Node/Expr/ExistingArrayDimFetch.php', 'PHPStan\\Node\\Expr\\GetIterableKeyTypeExpr' => $baseDir . '/src/Node/Expr/GetIterableKeyTypeExpr.php', 'PHPStan\\Node\\Expr\\GetIterableValueTypeExpr' => $baseDir . '/src/Node/Expr/GetIterableValueTypeExpr.php', 'PHPStan\\Node\\Expr\\GetOffsetValueTypeExpr' => $baseDir . '/src/Node/Expr/GetOffsetValueTypeExpr.php', 'PHPStan\\Node\\Expr\\OriginalPropertyTypeExpr' => $baseDir . '/src/Node/Expr/OriginalPropertyTypeExpr.php', 'PHPStan\\Node\\Expr\\ParameterVariableOriginalValueExpr' => $baseDir . '/src/Node/Expr/ParameterVariableOriginalValueExpr.php', 'PHPStan\\Node\\Expr\\PropertyInitializationExpr' => $baseDir . '/src/Node/Expr/PropertyInitializationExpr.php', 'PHPStan\\Node\\Expr\\SetExistingOffsetValueTypeExpr' => $baseDir . '/src/Node/Expr/SetExistingOffsetValueTypeExpr.php', 'PHPStan\\Node\\Expr\\SetOffsetValueTypeExpr' => $baseDir . '/src/Node/Expr/SetOffsetValueTypeExpr.php', 'PHPStan\\Node\\Expr\\TypeExpr' => $baseDir . '/src/Node/Expr/TypeExpr.php', 'PHPStan\\Node\\Expr\\UnsetOffsetExpr' => $baseDir . '/src/Node/Expr/UnsetOffsetExpr.php', 'PHPStan\\Node\\FileNode' => $baseDir . '/src/Node/FileNode.php', 'PHPStan\\Node\\FinallyExitPointsNode' => $baseDir . '/src/Node/FinallyExitPointsNode.php', 'PHPStan\\Node\\FunctionCallableNode' => $baseDir . '/src/Node/FunctionCallableNode.php', 'PHPStan\\Node\\FunctionReturnStatementsNode' => $baseDir . '/src/Node/FunctionReturnStatementsNode.php', 'PHPStan\\Node\\InArrowFunctionNode' => $baseDir . '/src/Node/InArrowFunctionNode.php', 'PHPStan\\Node\\InClassMethodNode' => $baseDir . '/src/Node/InClassMethodNode.php', 'PHPStan\\Node\\InClassNode' => $baseDir . '/src/Node/InClassNode.php', 'PHPStan\\Node\\InClosureNode' => $baseDir . '/src/Node/InClosureNode.php', 'PHPStan\\Node\\InForeachNode' => $baseDir . '/src/Node/InForeachNode.php', 'PHPStan\\Node\\InFunctionNode' => $baseDir . '/src/Node/InFunctionNode.php', 'PHPStan\\Node\\InTraitNode' => $baseDir . '/src/Node/InTraitNode.php', 'PHPStan\\Node\\InstantiationCallableNode' => $baseDir . '/src/Node/InstantiationCallableNode.php', 'PHPStan\\Node\\InvalidateExprNode' => $baseDir . '/src/Node/InvalidateExprNode.php', 'PHPStan\\Node\\IssetExpr' => $baseDir . '/src/Node/IssetExpr.php', 'PHPStan\\Node\\LiteralArrayItem' => $baseDir . '/src/Node/LiteralArrayItem.php', 'PHPStan\\Node\\LiteralArrayNode' => $baseDir . '/src/Node/LiteralArrayNode.php', 'PHPStan\\Node\\MatchExpressionArm' => $baseDir . '/src/Node/MatchExpressionArm.php', 'PHPStan\\Node\\MatchExpressionArmBody' => $baseDir . '/src/Node/MatchExpressionArmBody.php', 'PHPStan\\Node\\MatchExpressionArmCondition' => $baseDir . '/src/Node/MatchExpressionArmCondition.php', 'PHPStan\\Node\\MatchExpressionNode' => $baseDir . '/src/Node/MatchExpressionNode.php', 'PHPStan\\Node\\MethodCallableNode' => $baseDir . '/src/Node/MethodCallableNode.php', 'PHPStan\\Node\\MethodReturnStatementsNode' => $baseDir . '/src/Node/MethodReturnStatementsNode.php', 'PHPStan\\Node\\Method\\MethodCall' => $baseDir . '/src/Node/Method/MethodCall.php', 'PHPStan\\Node\\NoopExpressionNode' => $baseDir . '/src/Node/NoopExpressionNode.php', 'PHPStan\\Node\\Printer\\ExprPrinter' => $baseDir . '/src/Node/Printer/ExprPrinter.php', 'PHPStan\\Node\\Printer\\NodeTypePrinter' => $baseDir . '/src/Node/Printer/NodeTypePrinter.php', 'PHPStan\\Node\\Printer\\Printer' => $baseDir . '/src/Node/Printer/Printer.php', 'PHPStan\\Node\\PropertyAssignNode' => $baseDir . '/src/Node/PropertyAssignNode.php', 'PHPStan\\Node\\Property\\PropertyAssign' => $baseDir . '/src/Node/Property/PropertyAssign.php', 'PHPStan\\Node\\Property\\PropertyRead' => $baseDir . '/src/Node/Property/PropertyRead.php', 'PHPStan\\Node\\Property\\PropertyWrite' => $baseDir . '/src/Node/Property/PropertyWrite.php', 'PHPStan\\Node\\ReturnStatement' => $baseDir . '/src/Node/ReturnStatement.php', 'PHPStan\\Node\\ReturnStatementsNode' => $baseDir . '/src/Node/ReturnStatementsNode.php', 'PHPStan\\Node\\StaticMethodCallableNode' => $baseDir . '/src/Node/StaticMethodCallableNode.php', 'PHPStan\\Node\\UnreachableStatementNode' => $baseDir . '/src/Node/UnreachableStatementNode.php', 'PHPStan\\Node\\VarTagChangedExpressionTypeNode' => $baseDir . '/src/Node/VarTagChangedExpressionTypeNode.php', 'PHPStan\\Node\\VariableAssignNode' => $baseDir . '/src/Node/VariableAssignNode.php', 'PHPStan\\Node\\VirtualNode' => $baseDir . '/src/Node/VirtualNode.php', 'PHPStan\\Parallel\\ParallelAnalyser' => $baseDir . '/src/Parallel/ParallelAnalyser.php', 'PHPStan\\Parallel\\Process' => $baseDir . '/src/Parallel/Process.php', 'PHPStan\\Parallel\\ProcessPool' => $baseDir . '/src/Parallel/ProcessPool.php', 'PHPStan\\Parallel\\ProcessTimedOutException' => $baseDir . '/src/Parallel/ProcessTimedOutException.php', 'PHPStan\\Parallel\\Schedule' => $baseDir . '/src/Parallel/Schedule.php', 'PHPStan\\Parallel\\Scheduler' => $baseDir . '/src/Parallel/Scheduler.php', 'PHPStan\\Parser\\AnonymousClassVisitor' => $baseDir . '/src/Parser/AnonymousClassVisitor.php', 'PHPStan\\Parser\\ArrayFilterArgVisitor' => $baseDir . '/src/Parser/ArrayFilterArgVisitor.php', 'PHPStan\\Parser\\ArrayFindArgVisitor' => $baseDir . '/src/Parser/ArrayFindArgVisitor.php', 'PHPStan\\Parser\\ArrayMapArgVisitor' => $baseDir . '/src/Parser/ArrayMapArgVisitor.php', 'PHPStan\\Parser\\ArrayWalkArgVisitor' => $baseDir . '/src/Parser/ArrayWalkArgVisitor.php', 'PHPStan\\Parser\\ArrowFunctionArgVisitor' => $baseDir . '/src/Parser/ArrowFunctionArgVisitor.php', 'PHPStan\\Parser\\CachedParser' => $baseDir . '/src/Parser/CachedParser.php', 'PHPStan\\Parser\\CleaningParser' => $baseDir . '/src/Parser/CleaningParser.php', 'PHPStan\\Parser\\CleaningVisitor' => $baseDir . '/src/Parser/CleaningVisitor.php', 'PHPStan\\Parser\\ClosureArgVisitor' => $baseDir . '/src/Parser/ClosureArgVisitor.php', 'PHPStan\\Parser\\ClosureBindArgVisitor' => $baseDir . '/src/Parser/ClosureBindArgVisitor.php', 'PHPStan\\Parser\\ClosureBindToVarVisitor' => $baseDir . '/src/Parser/ClosureBindToVarVisitor.php', 'PHPStan\\Parser\\CurlSetOptArgVisitor' => $baseDir . '/src/Parser/CurlSetOptArgVisitor.php', 'PHPStan\\Parser\\DeclarePositionVisitor' => $baseDir . '/src/Parser/DeclarePositionVisitor.php', 'PHPStan\\Parser\\FunctionCallStatementFinder' => $baseDir . '/src/Parser/FunctionCallStatementFinder.php', 'PHPStan\\Parser\\ImmediatelyInvokedClosureVisitor' => $baseDir . '/src/Parser/ImmediatelyInvokedClosureVisitor.php', 'PHPStan\\Parser\\LastConditionVisitor' => $baseDir . '/src/Parser/LastConditionVisitor.php', 'PHPStan\\Parser\\LexerFactory' => $baseDir . '/src/Parser/LexerFactory.php', 'PHPStan\\Parser\\MagicConstantParamDefaultVisitor' => $baseDir . '/src/Parser/MagicConstantParamDefaultVisitor.php', 'PHPStan\\Parser\\NewAssignedToPropertyVisitor' => $baseDir . '/src/Parser/NewAssignedToPropertyVisitor.php', 'PHPStan\\Parser\\ParentStmtTypesVisitor' => $baseDir . '/src/Parser/ParentStmtTypesVisitor.php', 'PHPStan\\Parser\\Parser' => $baseDir . '/src/Parser/Parser.php', 'PHPStan\\Parser\\ParserErrorsException' => $baseDir . '/src/Parser/ParserErrorsException.php', 'PHPStan\\Parser\\PathRoutingParser' => $baseDir . '/src/Parser/PathRoutingParser.php', 'PHPStan\\Parser\\PhpParserDecorator' => $baseDir . '/src/Parser/PhpParserDecorator.php', 'PHPStan\\Parser\\RemoveUnusedCodeByPhpVersionIdVisitor' => $baseDir . '/src/Parser/RemoveUnusedCodeByPhpVersionIdVisitor.php', 'PHPStan\\Parser\\RichParser' => $baseDir . '/src/Parser/RichParser.php', 'PHPStan\\Parser\\SimpleParser' => $baseDir . '/src/Parser/SimpleParser.php', 'PHPStan\\Parser\\TraitCollectingVisitor' => $baseDir . '/src/Parser/TraitCollectingVisitor.php', 'PHPStan\\Parser\\TryCatchTypeVisitor' => $baseDir . '/src/Parser/TryCatchTypeVisitor.php', 'PHPStan\\Parser\\TypeTraverserInstanceofVisitor' => $baseDir . '/src/Parser/TypeTraverserInstanceofVisitor.php', 'PHPStan\\Php8StubsMap' => $vendorDir . '/phpstan/php-8-stubs/Php8StubsMap.php', 'PHPStan\\PhpDocParser\\Ast\\AbstractNodeVisitor' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/AbstractNodeVisitor.php', 'PHPStan\\PhpDocParser\\Ast\\Attribute' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Attribute.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprArrayItemNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprArrayItemNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprArrayNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprArrayNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprFalseNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprFalseNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprFloatNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprFloatNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprIntegerNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprIntegerNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprNullNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprNullNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprStringNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprStringNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstExprTrueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstExprTrueNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\ConstFetchNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/ConstFetchNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\DoctrineConstExprStringNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/DoctrineConstExprStringNode.php', 'PHPStan\\PhpDocParser\\Ast\\ConstExpr\\QuoteAwareConstExprStringNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/ConstExpr/QuoteAwareConstExprStringNode.php', 'PHPStan\\PhpDocParser\\Ast\\Node' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Node.php', 'PHPStan\\PhpDocParser\\Ast\\NodeAttributes' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/NodeAttributes.php', 'PHPStan\\PhpDocParser\\Ast\\NodeTraverser' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/NodeTraverser.php', 'PHPStan\\PhpDocParser\\Ast\\NodeVisitor' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/NodeVisitor.php', 'PHPStan\\PhpDocParser\\Ast\\NodeVisitor\\CloningVisitor' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/NodeVisitor/CloningVisitor.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\AssertTagMethodValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/AssertTagMethodValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\AssertTagPropertyValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/AssertTagPropertyValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\AssertTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/AssertTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\DeprecatedTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/DeprecatedTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\Doctrine\\DoctrineAnnotation' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineAnnotation.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\Doctrine\\DoctrineArgument' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineArgument.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\Doctrine\\DoctrineArray' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineArray.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\Doctrine\\DoctrineArrayItem' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineArrayItem.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\Doctrine\\DoctrineTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/Doctrine/DoctrineTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ExtendsTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ExtendsTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\GenericTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/GenericTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ImplementsTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ImplementsTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\InvalidTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/InvalidTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\MethodTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/MethodTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\MethodTagValueParameterNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/MethodTagValueParameterNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\MixinTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/MixinTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ParamClosureThisTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamClosureThisTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ParamImmediatelyInvokedCallableTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamImmediatelyInvokedCallableTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ParamLaterInvokedCallableTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamLaterInvokedCallableTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ParamOutTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamOutTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ParamTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ParamTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocChildNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocChildNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocTagNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocTagNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocTextNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocTextNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PropertyTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PropertyTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PureUnlessCallableIsImpureTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PureUnlessCallableIsImpureTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\RequireExtendsTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/RequireExtendsTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\RequireImplementsTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/RequireImplementsTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ReturnTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ReturnTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\SelfOutTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/SelfOutTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\TemplateTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/TemplateTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ThrowsTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ThrowsTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\TypeAliasImportTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/TypeAliasImportTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\TypeAliasTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/TypeAliasTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\TypelessParamTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/TypelessParamTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\UsesTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/UsesTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\VarTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/VarTagValueNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayShapeItemNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeItemNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayShapeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayShapeUnsealedTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeUnsealedTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\CallableTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/CallableTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\CallableTypeParameterNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/CallableTypeParameterNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ConditionalTypeForParameterNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ConditionalTypeForParameterNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ConditionalTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ConditionalTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ConstTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ConstTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\GenericTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/GenericTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\IdentifierTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/IdentifierTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\IntersectionTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/IntersectionTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\InvalidTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/InvalidTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\NullableTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/NullableTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ObjectShapeItemNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ObjectShapeItemNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ObjectShapeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ObjectShapeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\OffsetAccessTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/OffsetAccessTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\ThisTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ThisTypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\TypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/TypeNode.php', 'PHPStan\\PhpDocParser\\Ast\\Type\\UnionTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/UnionTypeNode.php', 'PHPStan\\PhpDocParser\\Lexer\\Lexer' => $vendorDir . '/phpstan/phpdoc-parser/src/Lexer/Lexer.php', 'PHPStan\\PhpDocParser\\Parser\\ConstExprParser' => $vendorDir . '/phpstan/phpdoc-parser/src/Parser/ConstExprParser.php', 'PHPStan\\PhpDocParser\\Parser\\ParserException' => $vendorDir . '/phpstan/phpdoc-parser/src/Parser/ParserException.php', 'PHPStan\\PhpDocParser\\Parser\\PhpDocParser' => $vendorDir . '/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php', 'PHPStan\\PhpDocParser\\Parser\\StringUnescaper' => $vendorDir . '/phpstan/phpdoc-parser/src/Parser/StringUnescaper.php', 'PHPStan\\PhpDocParser\\Parser\\TokenIterator' => $vendorDir . '/phpstan/phpdoc-parser/src/Parser/TokenIterator.php', 'PHPStan\\PhpDocParser\\Parser\\TypeParser' => $vendorDir . '/phpstan/phpdoc-parser/src/Parser/TypeParser.php', 'PHPStan\\PhpDocParser\\Printer\\DiffElem' => $vendorDir . '/phpstan/phpdoc-parser/src/Printer/DiffElem.php', 'PHPStan\\PhpDocParser\\Printer\\Differ' => $vendorDir . '/phpstan/phpdoc-parser/src/Printer/Differ.php', 'PHPStan\\PhpDocParser\\Printer\\Printer' => $vendorDir . '/phpstan/phpdoc-parser/src/Printer/Printer.php', 'PHPStan\\PhpDoc\\ConstExprNodeResolver' => $baseDir . '/src/PhpDoc/ConstExprNodeResolver.php', 'PHPStan\\PhpDoc\\ConstExprParserFactory' => $baseDir . '/src/PhpDoc/ConstExprParserFactory.php', 'PHPStan\\PhpDoc\\CountableStubFilesExtension' => $baseDir . '/src/PhpDoc/CountableStubFilesExtension.php', 'PHPStan\\PhpDoc\\DefaultStubFilesProvider' => $baseDir . '/src/PhpDoc/DefaultStubFilesProvider.php', 'PHPStan\\PhpDoc\\DirectTypeNodeResolverExtensionRegistryProvider' => $baseDir . '/src/PhpDoc/DirectTypeNodeResolverExtensionRegistryProvider.php', 'PHPStan\\PhpDoc\\JsonValidateStubFilesExtension' => $baseDir . '/src/PhpDoc/JsonValidateStubFilesExtension.php', 'PHPStan\\PhpDoc\\LazyTypeNodeResolverExtensionRegistryProvider' => $baseDir . '/src/PhpDoc/LazyTypeNodeResolverExtensionRegistryProvider.php', 'PHPStan\\PhpDoc\\NameScopeAlreadyBeingCreatedException' => $baseDir . '/src/PhpDoc/NameScopeAlreadyBeingCreatedException.php', 'PHPStan\\PhpDoc\\PhpDocBlock' => $baseDir . '/src/PhpDoc/PhpDocBlock.php', 'PHPStan\\PhpDoc\\PhpDocInheritanceResolver' => $baseDir . '/src/PhpDoc/PhpDocInheritanceResolver.php', 'PHPStan\\PhpDoc\\PhpDocNodeResolver' => $baseDir . '/src/PhpDoc/PhpDocNodeResolver.php', 'PHPStan\\PhpDoc\\PhpDocStringResolver' => $baseDir . '/src/PhpDoc/PhpDocStringResolver.php', 'PHPStan\\PhpDoc\\ReflectionEnumStubFilesExtension' => $baseDir . '/src/PhpDoc/ReflectionEnumStubFilesExtension.php', 'PHPStan\\PhpDoc\\ResolvedPhpDocBlock' => $baseDir . '/src/PhpDoc/ResolvedPhpDocBlock.php', 'PHPStan\\PhpDoc\\SocketSelectStubFilesExtension' => $baseDir . '/src/PhpDoc/SocketSelectStubFilesExtension.php', 'PHPStan\\PhpDoc\\StubFilesExtension' => $baseDir . '/src/PhpDoc/StubFilesExtension.php', 'PHPStan\\PhpDoc\\StubFilesProvider' => $baseDir . '/src/PhpDoc/StubFilesProvider.php', 'PHPStan\\PhpDoc\\StubPhpDocProvider' => $baseDir . '/src/PhpDoc/StubPhpDocProvider.php', 'PHPStan\\PhpDoc\\StubSourceLocatorFactory' => $baseDir . '/src/PhpDoc/StubSourceLocatorFactory.php', 'PHPStan\\PhpDoc\\StubValidator' => $baseDir . '/src/PhpDoc/StubValidator.php', 'PHPStan\\PhpDoc\\Tag\\AssertTag' => $baseDir . '/src/PhpDoc/Tag/AssertTag.php', 'PHPStan\\PhpDoc\\Tag\\AssertTagParameter' => $baseDir . '/src/PhpDoc/Tag/AssertTagParameter.php', 'PHPStan\\PhpDoc\\Tag\\DeprecatedTag' => $baseDir . '/src/PhpDoc/Tag/DeprecatedTag.php', 'PHPStan\\PhpDoc\\Tag\\ExtendsTag' => $baseDir . '/src/PhpDoc/Tag/ExtendsTag.php', 'PHPStan\\PhpDoc\\Tag\\ImplementsTag' => $baseDir . '/src/PhpDoc/Tag/ImplementsTag.php', 'PHPStan\\PhpDoc\\Tag\\MethodTag' => $baseDir . '/src/PhpDoc/Tag/MethodTag.php', 'PHPStan\\PhpDoc\\Tag\\MethodTagParameter' => $baseDir . '/src/PhpDoc/Tag/MethodTagParameter.php', 'PHPStan\\PhpDoc\\Tag\\MixinTag' => $baseDir . '/src/PhpDoc/Tag/MixinTag.php', 'PHPStan\\PhpDoc\\Tag\\ParamClosureThisTag' => $baseDir . '/src/PhpDoc/Tag/ParamClosureThisTag.php', 'PHPStan\\PhpDoc\\Tag\\ParamOutTag' => $baseDir . '/src/PhpDoc/Tag/ParamOutTag.php', 'PHPStan\\PhpDoc\\Tag\\ParamTag' => $baseDir . '/src/PhpDoc/Tag/ParamTag.php', 'PHPStan\\PhpDoc\\Tag\\PropertyTag' => $baseDir . '/src/PhpDoc/Tag/PropertyTag.php', 'PHPStan\\PhpDoc\\Tag\\RequireExtendsTag' => $baseDir . '/src/PhpDoc/Tag/RequireExtendsTag.php', 'PHPStan\\PhpDoc\\Tag\\RequireImplementsTag' => $baseDir . '/src/PhpDoc/Tag/RequireImplementsTag.php', 'PHPStan\\PhpDoc\\Tag\\ReturnTag' => $baseDir . '/src/PhpDoc/Tag/ReturnTag.php', 'PHPStan\\PhpDoc\\Tag\\SelfOutTypeTag' => $baseDir . '/src/PhpDoc/Tag/SelfOutTypeTag.php', 'PHPStan\\PhpDoc\\Tag\\TemplateTag' => $baseDir . '/src/PhpDoc/Tag/TemplateTag.php', 'PHPStan\\PhpDoc\\Tag\\ThrowsTag' => $baseDir . '/src/PhpDoc/Tag/ThrowsTag.php', 'PHPStan\\PhpDoc\\Tag\\TypeAliasImportTag' => $baseDir . '/src/PhpDoc/Tag/TypeAliasImportTag.php', 'PHPStan\\PhpDoc\\Tag\\TypeAliasTag' => $baseDir . '/src/PhpDoc/Tag/TypeAliasTag.php', 'PHPStan\\PhpDoc\\Tag\\TypedTag' => $baseDir . '/src/PhpDoc/Tag/TypedTag.php', 'PHPStan\\PhpDoc\\Tag\\UsesTag' => $baseDir . '/src/PhpDoc/Tag/UsesTag.php', 'PHPStan\\PhpDoc\\Tag\\VarTag' => $baseDir . '/src/PhpDoc/Tag/VarTag.php', 'PHPStan\\PhpDoc\\TypeNodeResolver' => $baseDir . '/src/PhpDoc/TypeNodeResolver.php', 'PHPStan\\PhpDoc\\TypeNodeResolverAwareExtension' => $baseDir . '/src/PhpDoc/TypeNodeResolverAwareExtension.php', 'PHPStan\\PhpDoc\\TypeNodeResolverExtension' => $baseDir . '/src/PhpDoc/TypeNodeResolverExtension.php', 'PHPStan\\PhpDoc\\TypeNodeResolverExtensionAwareRegistry' => $baseDir . '/src/PhpDoc/TypeNodeResolverExtensionAwareRegistry.php', 'PHPStan\\PhpDoc\\TypeNodeResolverExtensionRegistry' => $baseDir . '/src/PhpDoc/TypeNodeResolverExtensionRegistry.php', 'PHPStan\\PhpDoc\\TypeNodeResolverExtensionRegistryProvider' => $baseDir . '/src/PhpDoc/TypeNodeResolverExtensionRegistryProvider.php', 'PHPStan\\PhpDoc\\TypeStringResolver' => $baseDir . '/src/PhpDoc/TypeStringResolver.php', 'PHPStan\\Php\\PhpVersion' => $baseDir . '/src/Php/PhpVersion.php', 'PHPStan\\Php\\PhpVersionFactory' => $baseDir . '/src/Php/PhpVersionFactory.php', 'PHPStan\\Php\\PhpVersionFactoryFactory' => $baseDir . '/src/Php/PhpVersionFactoryFactory.php', 'PHPStan\\Process\\CpuCoreCounter' => $baseDir . '/src/Process/CpuCoreCounter.php', 'PHPStan\\Process\\ProcessCanceledException' => $baseDir . '/src/Process/ProcessCanceledException.php', 'PHPStan\\Process\\ProcessCrashedException' => $baseDir . '/src/Process/ProcessCrashedException.php', 'PHPStan\\Process\\ProcessHelper' => $baseDir . '/src/Process/ProcessHelper.php', 'PHPStan\\Process\\ProcessPromise' => $baseDir . '/src/Process/ProcessPromise.php', 'PHPStan\\Reflection\\AdditionalConstructorsExtension' => $baseDir . '/src/Reflection/AdditionalConstructorsExtension.php', 'PHPStan\\Reflection\\AllowedSubTypesClassReflectionExtension' => $baseDir . '/src/Reflection/AllowedSubTypesClassReflectionExtension.php', 'PHPStan\\Reflection\\Annotations\\AnnotationMethodReflection' => $baseDir . '/src/Reflection/Annotations/AnnotationMethodReflection.php', 'PHPStan\\Reflection\\Annotations\\AnnotationPropertyReflection' => $baseDir . '/src/Reflection/Annotations/AnnotationPropertyReflection.php', 'PHPStan\\Reflection\\Annotations\\AnnotationsMethodParameterReflection' => $baseDir . '/src/Reflection/Annotations/AnnotationsMethodParameterReflection.php', 'PHPStan\\Reflection\\Annotations\\AnnotationsMethodsClassReflectionExtension' => $baseDir . '/src/Reflection/Annotations/AnnotationsMethodsClassReflectionExtension.php', 'PHPStan\\Reflection\\Annotations\\AnnotationsPropertiesClassReflectionExtension' => $baseDir . '/src/Reflection/Annotations/AnnotationsPropertiesClassReflectionExtension.php', 'PHPStan\\Reflection\\Assertions' => $baseDir . '/src/Reflection/Assertions.php', 'PHPStan\\Reflection\\BetterReflection\\BetterReflectionProvider' => $baseDir . '/src/Reflection/BetterReflection/BetterReflectionProvider.php', 'PHPStan\\Reflection\\BetterReflection\\BetterReflectionProviderFactory' => $baseDir . '/src/Reflection/BetterReflection/BetterReflectionProviderFactory.php', 'PHPStan\\Reflection\\BetterReflection\\BetterReflectionSourceLocatorFactory' => $baseDir . '/src/Reflection/BetterReflection/BetterReflectionSourceLocatorFactory.php', 'PHPStan\\Reflection\\BetterReflection\\Reflector\\MemoizingReflector' => $baseDir . '/src/Reflection/BetterReflection/Reflector/MemoizingReflector.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\AutoloadFunctionsSourceLocator' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/AutoloadFunctionsSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\AutoloadSourceLocator' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/AutoloadSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\CachingVisitor' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/CachingVisitor.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\ComposerJsonAndInstalledJsonSourceLocatorMaker' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/ComposerJsonAndInstalledJsonSourceLocatorMaker.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\FetchedNode' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/FetchedNode.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\FetchedNodesResult' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/FetchedNodesResult.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\FileNodesFetcher' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/FileNodesFetcher.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\FileReadTrapStreamWrapper' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/FileReadTrapStreamWrapper.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\NewOptimizedDirectorySourceLocator' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/NewOptimizedDirectorySourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedDirectorySourceLocator' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/OptimizedDirectorySourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedDirectorySourceLocatorFactory' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/OptimizedDirectorySourceLocatorFactory.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedDirectorySourceLocatorRepository' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/OptimizedDirectorySourceLocatorRepository.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedPsrAutoloaderLocator' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/OptimizedPsrAutoloaderLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedPsrAutoloaderLocatorFactory' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/OptimizedPsrAutoloaderLocatorFactory.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedSingleFileSourceLocator' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/OptimizedSingleFileSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedSingleFileSourceLocatorFactory' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/OptimizedSingleFileSourceLocatorFactory.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\OptimizedSingleFileSourceLocatorRepository' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/OptimizedSingleFileSourceLocatorRepository.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\PhpFileCleaner' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/PhpFileCleaner.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\PhpVersionBlacklistSourceLocator' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/PhpVersionBlacklistSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\ReflectionClassSourceLocator' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/ReflectionClassSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\RewriteClassAliasSourceLocator' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/RewriteClassAliasSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceLocator\\SkipClassAliasSourceLocator' => $baseDir . '/src/Reflection/BetterReflection/SourceLocator/SkipClassAliasSourceLocator.php', 'PHPStan\\Reflection\\BetterReflection\\SourceStubber\\PhpStormStubsSourceStubberFactory' => $baseDir . '/src/Reflection/BetterReflection/SourceStubber/PhpStormStubsSourceStubberFactory.php', 'PHPStan\\Reflection\\BetterReflection\\SourceStubber\\ReflectionSourceStubberFactory' => $baseDir . '/src/Reflection/BetterReflection/SourceStubber/ReflectionSourceStubberFactory.php', 'PHPStan\\Reflection\\BrokerAwareExtension' => $baseDir . '/src/Reflection/BrokerAwareExtension.php', 'PHPStan\\Reflection\\CallableFunctionVariantWithPhpDocs' => $baseDir . '/src/Reflection/CallableFunctionVariantWithPhpDocs.php', 'PHPStan\\Reflection\\Callables\\CallableParametersAcceptor' => $baseDir . '/src/Reflection/Callables/CallableParametersAcceptor.php', 'PHPStan\\Reflection\\Callables\\FunctionCallableVariant' => $baseDir . '/src/Reflection/Callables/FunctionCallableVariant.php', 'PHPStan\\Reflection\\Callables\\SimpleImpurePoint' => $baseDir . '/src/Reflection/Callables/SimpleImpurePoint.php', 'PHPStan\\Reflection\\Callables\\SimpleThrowPoint' => $baseDir . '/src/Reflection/Callables/SimpleThrowPoint.php', 'PHPStan\\Reflection\\ClassConstantReflection' => $baseDir . '/src/Reflection/ClassConstantReflection.php', 'PHPStan\\Reflection\\ClassMemberAccessAnswerer' => $baseDir . '/src/Reflection/ClassMemberAccessAnswerer.php', 'PHPStan\\Reflection\\ClassMemberReflection' => $baseDir . '/src/Reflection/ClassMemberReflection.php', 'PHPStan\\Reflection\\ClassNameHelper' => $baseDir . '/src/Reflection/ClassNameHelper.php', 'PHPStan\\Reflection\\ClassReflection' => $baseDir . '/src/Reflection/ClassReflection.php', 'PHPStan\\Reflection\\ClassReflectionExtensionRegistry' => $baseDir . '/src/Reflection/ClassReflectionExtensionRegistry.php', 'PHPStan\\Reflection\\ConstantNameHelper' => $baseDir . '/src/Reflection/ConstantNameHelper.php', 'PHPStan\\Reflection\\ConstantReflection' => $baseDir . '/src/Reflection/ConstantReflection.php', 'PHPStan\\Reflection\\Constant\\RuntimeConstantReflection' => $baseDir . '/src/Reflection/Constant/RuntimeConstantReflection.php', 'PHPStan\\Reflection\\ConstructorsHelper' => $baseDir . '/src/Reflection/ConstructorsHelper.php', 'PHPStan\\Reflection\\Dummy\\ChangedTypeMethodReflection' => $baseDir . '/src/Reflection/Dummy/ChangedTypeMethodReflection.php', 'PHPStan\\Reflection\\Dummy\\ChangedTypePropertyReflection' => $baseDir . '/src/Reflection/Dummy/ChangedTypePropertyReflection.php', 'PHPStan\\Reflection\\Dummy\\DummyConstantReflection' => $baseDir . '/src/Reflection/Dummy/DummyConstantReflection.php', 'PHPStan\\Reflection\\Dummy\\DummyConstructorReflection' => $baseDir . '/src/Reflection/Dummy/DummyConstructorReflection.php', 'PHPStan\\Reflection\\Dummy\\DummyMethodReflection' => $baseDir . '/src/Reflection/Dummy/DummyMethodReflection.php', 'PHPStan\\Reflection\\Dummy\\DummyPropertyReflection' => $baseDir . '/src/Reflection/Dummy/DummyPropertyReflection.php', 'PHPStan\\Reflection\\EnumCaseReflection' => $baseDir . '/src/Reflection/EnumCaseReflection.php', 'PHPStan\\Reflection\\ExtendedMethodReflection' => $baseDir . '/src/Reflection/ExtendedMethodReflection.php', 'PHPStan\\Reflection\\ExtendedPropertyReflection' => $baseDir . '/src/Reflection/ExtendedPropertyReflection.php', 'PHPStan\\Reflection\\FunctionReflection' => $baseDir . '/src/Reflection/FunctionReflection.php', 'PHPStan\\Reflection\\FunctionReflectionFactory' => $baseDir . '/src/Reflection/FunctionReflectionFactory.php', 'PHPStan\\Reflection\\FunctionVariant' => $baseDir . '/src/Reflection/FunctionVariant.php', 'PHPStan\\Reflection\\FunctionVariantWithPhpDocs' => $baseDir . '/src/Reflection/FunctionVariantWithPhpDocs.php', 'PHPStan\\Reflection\\GenericParametersAcceptorResolver' => $baseDir . '/src/Reflection/GenericParametersAcceptorResolver.php', 'PHPStan\\Reflection\\GlobalConstantReflection' => $baseDir . '/src/Reflection/GlobalConstantReflection.php', 'PHPStan\\Reflection\\InaccessibleMethod' => $baseDir . '/src/Reflection/InaccessibleMethod.php', 'PHPStan\\Reflection\\InitializerExprContext' => $baseDir . '/src/Reflection/InitializerExprContext.php', 'PHPStan\\Reflection\\InitializerExprTypeResolver' => $baseDir . '/src/Reflection/InitializerExprTypeResolver.php', 'PHPStan\\Reflection\\MethodPrototypeReflection' => $baseDir . '/src/Reflection/MethodPrototypeReflection.php', 'PHPStan\\Reflection\\MethodReflection' => $baseDir . '/src/Reflection/MethodReflection.php', 'PHPStan\\Reflection\\MethodsClassReflectionExtension' => $baseDir . '/src/Reflection/MethodsClassReflectionExtension.php', 'PHPStan\\Reflection\\MissingConstantFromReflectionException' => $baseDir . '/src/Reflection/MissingConstantFromReflectionException.php', 'PHPStan\\Reflection\\MissingMethodFromReflectionException' => $baseDir . '/src/Reflection/MissingMethodFromReflectionException.php', 'PHPStan\\Reflection\\MissingPropertyFromReflectionException' => $baseDir . '/src/Reflection/MissingPropertyFromReflectionException.php', 'PHPStan\\Reflection\\Mixin\\MixinMethodReflection' => $baseDir . '/src/Reflection/Mixin/MixinMethodReflection.php', 'PHPStan\\Reflection\\Mixin\\MixinMethodsClassReflectionExtension' => $baseDir . '/src/Reflection/Mixin/MixinMethodsClassReflectionExtension.php', 'PHPStan\\Reflection\\Mixin\\MixinPropertiesClassReflectionExtension' => $baseDir . '/src/Reflection/Mixin/MixinPropertiesClassReflectionExtension.php', 'PHPStan\\Reflection\\NamespaceAnswerer' => $baseDir . '/src/Reflection/NamespaceAnswerer.php', 'PHPStan\\Reflection\\Native\\NativeFunctionReflection' => $baseDir . '/src/Reflection/Native/NativeFunctionReflection.php', 'PHPStan\\Reflection\\Native\\NativeMethodReflection' => $baseDir . '/src/Reflection/Native/NativeMethodReflection.php', 'PHPStan\\Reflection\\Native\\NativeParameterReflection' => $baseDir . '/src/Reflection/Native/NativeParameterReflection.php', 'PHPStan\\Reflection\\Native\\NativeParameterWithPhpDocsReflection' => $baseDir . '/src/Reflection/Native/NativeParameterWithPhpDocsReflection.php', 'PHPStan\\Reflection\\PHPStan\\NativeReflectionEnumReturnDynamicReturnTypeExtension' => $baseDir . '/src/Reflection/PHPStan/NativeReflectionEnumReturnDynamicReturnTypeExtension.php', 'PHPStan\\Reflection\\ParameterReflection' => $baseDir . '/src/Reflection/ParameterReflection.php', 'PHPStan\\Reflection\\ParameterReflectionWithPhpDocs' => $baseDir . '/src/Reflection/ParameterReflectionWithPhpDocs.php', 'PHPStan\\Reflection\\ParametersAcceptor' => $baseDir . '/src/Reflection/ParametersAcceptor.php', 'PHPStan\\Reflection\\ParametersAcceptorSelector' => $baseDir . '/src/Reflection/ParametersAcceptorSelector.php', 'PHPStan\\Reflection\\ParametersAcceptorWithPhpDocs' => $baseDir . '/src/Reflection/ParametersAcceptorWithPhpDocs.php', 'PHPStan\\Reflection\\PassedByReference' => $baseDir . '/src/Reflection/PassedByReference.php', 'PHPStan\\Reflection\\PhpVersionStaticAccessor' => $baseDir . '/src/Reflection/PhpVersionStaticAccessor.php', 'PHPStan\\Reflection\\Php\\BuiltinMethodReflection' => $baseDir . '/src/Reflection/Php/BuiltinMethodReflection.php', 'PHPStan\\Reflection\\Php\\ClosureCallMethodReflection' => $baseDir . '/src/Reflection/Php/ClosureCallMethodReflection.php', 'PHPStan\\Reflection\\Php\\ClosureCallUnresolvedMethodPrototypeReflection' => $baseDir . '/src/Reflection/Php/ClosureCallUnresolvedMethodPrototypeReflection.php', 'PHPStan\\Reflection\\Php\\DummyParameter' => $baseDir . '/src/Reflection/Php/DummyParameter.php', 'PHPStan\\Reflection\\Php\\DummyParameterWithPhpDocs' => $baseDir . '/src/Reflection/Php/DummyParameterWithPhpDocs.php', 'PHPStan\\Reflection\\Php\\EnumAllowedSubTypesClassReflectionExtension' => $baseDir . '/src/Reflection/Php/EnumAllowedSubTypesClassReflectionExtension.php', 'PHPStan\\Reflection\\Php\\EnumCasesMethodReflection' => $baseDir . '/src/Reflection/Php/EnumCasesMethodReflection.php', 'PHPStan\\Reflection\\Php\\EnumPropertyReflection' => $baseDir . '/src/Reflection/Php/EnumPropertyReflection.php', 'PHPStan\\Reflection\\Php\\EnumUnresolvedPropertyPrototypeReflection' => $baseDir . '/src/Reflection/Php/EnumUnresolvedPropertyPrototypeReflection.php', 'PHPStan\\Reflection\\Php\\ExitFunctionReflection' => $baseDir . '/src/Reflection/Php/ExitFunctionReflection.php', 'PHPStan\\Reflection\\Php\\NativeBuiltinMethodReflection' => $baseDir . '/src/Reflection/Php/NativeBuiltinMethodReflection.php', 'PHPStan\\Reflection\\Php\\PhpClassReflectionExtension' => $baseDir . '/src/Reflection/Php/PhpClassReflectionExtension.php', 'PHPStan\\Reflection\\Php\\PhpFunctionFromParserNodeReflection' => $baseDir . '/src/Reflection/Php/PhpFunctionFromParserNodeReflection.php', 'PHPStan\\Reflection\\Php\\PhpFunctionReflection' => $baseDir . '/src/Reflection/Php/PhpFunctionReflection.php', 'PHPStan\\Reflection\\Php\\PhpMethodFromParserNodeReflection' => $baseDir . '/src/Reflection/Php/PhpMethodFromParserNodeReflection.php', 'PHPStan\\Reflection\\Php\\PhpMethodReflection' => $baseDir . '/src/Reflection/Php/PhpMethodReflection.php', 'PHPStan\\Reflection\\Php\\PhpMethodReflectionFactory' => $baseDir . '/src/Reflection/Php/PhpMethodReflectionFactory.php', 'PHPStan\\Reflection\\Php\\PhpParameterFromParserNodeReflection' => $baseDir . '/src/Reflection/Php/PhpParameterFromParserNodeReflection.php', 'PHPStan\\Reflection\\Php\\PhpParameterReflection' => $baseDir . '/src/Reflection/Php/PhpParameterReflection.php', 'PHPStan\\Reflection\\Php\\PhpPropertyReflection' => $baseDir . '/src/Reflection/Php/PhpPropertyReflection.php', 'PHPStan\\Reflection\\Php\\SimpleXMLElementProperty' => $baseDir . '/src/Reflection/Php/SimpleXMLElementProperty.php', 'PHPStan\\Reflection\\Php\\Soap\\SoapClientMethodReflection' => $baseDir . '/src/Reflection/Php/Soap/SoapClientMethodReflection.php', 'PHPStan\\Reflection\\Php\\Soap\\SoapClientMethodsClassReflectionExtension' => $baseDir . '/src/Reflection/Php/Soap/SoapClientMethodsClassReflectionExtension.php', 'PHPStan\\Reflection\\Php\\UniversalObjectCrateProperty' => $baseDir . '/src/Reflection/Php/UniversalObjectCrateProperty.php', 'PHPStan\\Reflection\\Php\\UniversalObjectCratesClassReflectionExtension' => $baseDir . '/src/Reflection/Php/UniversalObjectCratesClassReflectionExtension.php', 'PHPStan\\Reflection\\PropertiesClassReflectionExtension' => $baseDir . '/src/Reflection/PropertiesClassReflectionExtension.php', 'PHPStan\\Reflection\\PropertyReflection' => $baseDir . '/src/Reflection/PropertyReflection.php', 'PHPStan\\Reflection\\ReflectionProvider' => $baseDir . '/src/Reflection/ReflectionProvider.php', 'PHPStan\\Reflection\\ReflectionProviderStaticAccessor' => $baseDir . '/src/Reflection/ReflectionProviderStaticAccessor.php', 'PHPStan\\Reflection\\ReflectionProvider\\DirectReflectionProviderProvider' => $baseDir . '/src/Reflection/ReflectionProvider/DirectReflectionProviderProvider.php', 'PHPStan\\Reflection\\ReflectionProvider\\DummyReflectionProvider' => $baseDir . '/src/Reflection/ReflectionProvider/DummyReflectionProvider.php', 'PHPStan\\Reflection\\ReflectionProvider\\LazyReflectionProviderProvider' => $baseDir . '/src/Reflection/ReflectionProvider/LazyReflectionProviderProvider.php', 'PHPStan\\Reflection\\ReflectionProvider\\MemoizingReflectionProvider' => $baseDir . '/src/Reflection/ReflectionProvider/MemoizingReflectionProvider.php', 'PHPStan\\Reflection\\ReflectionProvider\\ReflectionProviderFactory' => $baseDir . '/src/Reflection/ReflectionProvider/ReflectionProviderFactory.php', 'PHPStan\\Reflection\\ReflectionProvider\\ReflectionProviderProvider' => $baseDir . '/src/Reflection/ReflectionProvider/ReflectionProviderProvider.php', 'PHPStan\\Reflection\\ReflectionProvider\\SetterReflectionProviderProvider' => $baseDir . '/src/Reflection/ReflectionProvider/SetterReflectionProviderProvider.php', 'PHPStan\\Reflection\\RequireExtension\\RequireExtendsMethodsClassReflectionExtension' => $baseDir . '/src/Reflection/RequireExtension/RequireExtendsMethodsClassReflectionExtension.php', 'PHPStan\\Reflection\\RequireExtension\\RequireExtendsPropertiesClassReflectionExtension' => $baseDir . '/src/Reflection/RequireExtension/RequireExtendsPropertiesClassReflectionExtension.php', 'PHPStan\\Reflection\\ResolvedFunctionVariant' => $baseDir . '/src/Reflection/ResolvedFunctionVariant.php', 'PHPStan\\Reflection\\ResolvedFunctionVariantWithCallable' => $baseDir . '/src/Reflection/ResolvedFunctionVariantWithCallable.php', 'PHPStan\\Reflection\\ResolvedFunctionVariantWithOriginal' => $baseDir . '/src/Reflection/ResolvedFunctionVariantWithOriginal.php', 'PHPStan\\Reflection\\ResolvedMethodReflection' => $baseDir . '/src/Reflection/ResolvedMethodReflection.php', 'PHPStan\\Reflection\\ResolvedPropertyReflection' => $baseDir . '/src/Reflection/ResolvedPropertyReflection.php', 'PHPStan\\Reflection\\SignatureMap\\FunctionSignature' => $baseDir . '/src/Reflection/SignatureMap/FunctionSignature.php', 'PHPStan\\Reflection\\SignatureMap\\FunctionSignatureMapProvider' => $baseDir . '/src/Reflection/SignatureMap/FunctionSignatureMapProvider.php', 'PHPStan\\Reflection\\SignatureMap\\NativeFunctionReflectionProvider' => $baseDir . '/src/Reflection/SignatureMap/NativeFunctionReflectionProvider.php', 'PHPStan\\Reflection\\SignatureMap\\ParameterSignature' => $baseDir . '/src/Reflection/SignatureMap/ParameterSignature.php', 'PHPStan\\Reflection\\SignatureMap\\Php8SignatureMapProvider' => $baseDir . '/src/Reflection/SignatureMap/Php8SignatureMapProvider.php', 'PHPStan\\Reflection\\SignatureMap\\SignatureMapParser' => $baseDir . '/src/Reflection/SignatureMap/SignatureMapParser.php', 'PHPStan\\Reflection\\SignatureMap\\SignatureMapProvider' => $baseDir . '/src/Reflection/SignatureMap/SignatureMapProvider.php', 'PHPStan\\Reflection\\SignatureMap\\SignatureMapProviderFactory' => $baseDir . '/src/Reflection/SignatureMap/SignatureMapProviderFactory.php', 'PHPStan\\Reflection\\TrivialParametersAcceptor' => $baseDir . '/src/Reflection/TrivialParametersAcceptor.php', 'PHPStan\\Reflection\\Type\\CallbackUnresolvedMethodPrototypeReflection' => $baseDir . '/src/Reflection/Type/CallbackUnresolvedMethodPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\CallbackUnresolvedPropertyPrototypeReflection' => $baseDir . '/src/Reflection/Type/CallbackUnresolvedPropertyPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\CalledOnTypeUnresolvedMethodPrototypeReflection' => $baseDir . '/src/Reflection/Type/CalledOnTypeUnresolvedMethodPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\CalledOnTypeUnresolvedPropertyPrototypeReflection' => $baseDir . '/src/Reflection/Type/CalledOnTypeUnresolvedPropertyPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\IntersectionTypeMethodReflection' => $baseDir . '/src/Reflection/Type/IntersectionTypeMethodReflection.php', 'PHPStan\\Reflection\\Type\\IntersectionTypePropertyReflection' => $baseDir . '/src/Reflection/Type/IntersectionTypePropertyReflection.php', 'PHPStan\\Reflection\\Type\\IntersectionTypeUnresolvedMethodPrototypeReflection' => $baseDir . '/src/Reflection/Type/IntersectionTypeUnresolvedMethodPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\IntersectionTypeUnresolvedPropertyPrototypeReflection' => $baseDir . '/src/Reflection/Type/IntersectionTypeUnresolvedPropertyPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\UnionTypeMethodReflection' => $baseDir . '/src/Reflection/Type/UnionTypeMethodReflection.php', 'PHPStan\\Reflection\\Type\\UnionTypePropertyReflection' => $baseDir . '/src/Reflection/Type/UnionTypePropertyReflection.php', 'PHPStan\\Reflection\\Type\\UnionTypeUnresolvedMethodPrototypeReflection' => $baseDir . '/src/Reflection/Type/UnionTypeUnresolvedMethodPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\UnionTypeUnresolvedPropertyPrototypeReflection' => $baseDir . '/src/Reflection/Type/UnionTypeUnresolvedPropertyPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\UnresolvedMethodPrototypeReflection' => $baseDir . '/src/Reflection/Type/UnresolvedMethodPrototypeReflection.php', 'PHPStan\\Reflection\\Type\\UnresolvedPropertyPrototypeReflection' => $baseDir . '/src/Reflection/Type/UnresolvedPropertyPrototypeReflection.php', 'PHPStan\\Reflection\\WrappedExtendedMethodReflection' => $baseDir . '/src/Reflection/WrappedExtendedMethodReflection.php', 'PHPStan\\Reflection\\WrappedExtendedPropertyReflection' => $baseDir . '/src/Reflection/WrappedExtendedPropertyReflection.php', 'PHPStan\\Reflection\\WrapperPropertyReflection' => $baseDir . '/src/Reflection/WrapperPropertyReflection.php', 'PHPStan\\Rules\\Api\\ApiClassConstFetchRule' => $baseDir . '/src/Rules/Api/ApiClassConstFetchRule.php', 'PHPStan\\Rules\\Api\\ApiClassExtendsRule' => $baseDir . '/src/Rules/Api/ApiClassExtendsRule.php', 'PHPStan\\Rules\\Api\\ApiClassImplementsRule' => $baseDir . '/src/Rules/Api/ApiClassImplementsRule.php', 'PHPStan\\Rules\\Api\\ApiInstanceofRule' => $baseDir . '/src/Rules/Api/ApiInstanceofRule.php', 'PHPStan\\Rules\\Api\\ApiInstanceofTypeRule' => $baseDir . '/src/Rules/Api/ApiInstanceofTypeRule.php', 'PHPStan\\Rules\\Api\\ApiInstantiationRule' => $baseDir . '/src/Rules/Api/ApiInstantiationRule.php', 'PHPStan\\Rules\\Api\\ApiInterfaceExtendsRule' => $baseDir . '/src/Rules/Api/ApiInterfaceExtendsRule.php', 'PHPStan\\Rules\\Api\\ApiMethodCallRule' => $baseDir . '/src/Rules/Api/ApiMethodCallRule.php', 'PHPStan\\Rules\\Api\\ApiRuleHelper' => $baseDir . '/src/Rules/Api/ApiRuleHelper.php', 'PHPStan\\Rules\\Api\\ApiStaticCallRule' => $baseDir . '/src/Rules/Api/ApiStaticCallRule.php', 'PHPStan\\Rules\\Api\\ApiTraitUseRule' => $baseDir . '/src/Rules/Api/ApiTraitUseRule.php', 'PHPStan\\Rules\\Api\\BcUncoveredInterface' => $baseDir . '/src/Rules/Api/BcUncoveredInterface.php', 'PHPStan\\Rules\\Api\\GetTemplateTypeRule' => $baseDir . '/src/Rules/Api/GetTemplateTypeRule.php', 'PHPStan\\Rules\\Api\\NodeConnectingVisitorAttributesRule' => $baseDir . '/src/Rules/Api/NodeConnectingVisitorAttributesRule.php', 'PHPStan\\Rules\\Api\\PhpStanNamespaceIn3rdPartyPackageRule' => $baseDir . '/src/Rules/Api/PhpStanNamespaceIn3rdPartyPackageRule.php', 'PHPStan\\Rules\\Api\\RuntimeReflectionFunctionRule' => $baseDir . '/src/Rules/Api/RuntimeReflectionFunctionRule.php', 'PHPStan\\Rules\\Api\\RuntimeReflectionInstantiationRule' => $baseDir . '/src/Rules/Api/RuntimeReflectionInstantiationRule.php', 'PHPStan\\Rules\\Arrays\\AllowedArrayKeysTypes' => $baseDir . '/src/Rules/Arrays/AllowedArrayKeysTypes.php', 'PHPStan\\Rules\\Arrays\\AppendedArrayItemTypeRule' => $baseDir . '/src/Rules/Arrays/AppendedArrayItemTypeRule.php', 'PHPStan\\Rules\\Arrays\\AppendedArrayKeyTypeRule' => $baseDir . '/src/Rules/Arrays/AppendedArrayKeyTypeRule.php', 'PHPStan\\Rules\\Arrays\\ArrayDestructuringRule' => $baseDir . '/src/Rules/Arrays/ArrayDestructuringRule.php', 'PHPStan\\Rules\\Arrays\\ArrayUnpackingRule' => $baseDir . '/src/Rules/Arrays/ArrayUnpackingRule.php', 'PHPStan\\Rules\\Arrays\\DeadForeachRule' => $baseDir . '/src/Rules/Arrays/DeadForeachRule.php', 'PHPStan\\Rules\\Arrays\\DuplicateKeysInLiteralArraysRule' => $baseDir . '/src/Rules/Arrays/DuplicateKeysInLiteralArraysRule.php', 'PHPStan\\Rules\\Arrays\\EmptyArrayItemRule' => $baseDir . '/src/Rules/Arrays/EmptyArrayItemRule.php', 'PHPStan\\Rules\\Arrays\\InvalidKeyInArrayDimFetchRule' => $baseDir . '/src/Rules/Arrays/InvalidKeyInArrayDimFetchRule.php', 'PHPStan\\Rules\\Arrays\\InvalidKeyInArrayItemRule' => $baseDir . '/src/Rules/Arrays/InvalidKeyInArrayItemRule.php', 'PHPStan\\Rules\\Arrays\\IterableInForeachRule' => $baseDir . '/src/Rules/Arrays/IterableInForeachRule.php', 'PHPStan\\Rules\\Arrays\\NonexistentOffsetInArrayDimFetchCheck' => $baseDir . '/src/Rules/Arrays/NonexistentOffsetInArrayDimFetchCheck.php', 'PHPStan\\Rules\\Arrays\\NonexistentOffsetInArrayDimFetchRule' => $baseDir . '/src/Rules/Arrays/NonexistentOffsetInArrayDimFetchRule.php', 'PHPStan\\Rules\\Arrays\\OffsetAccessAssignOpRule' => $baseDir . '/src/Rules/Arrays/OffsetAccessAssignOpRule.php', 'PHPStan\\Rules\\Arrays\\OffsetAccessAssignmentRule' => $baseDir . '/src/Rules/Arrays/OffsetAccessAssignmentRule.php', 'PHPStan\\Rules\\Arrays\\OffsetAccessValueAssignmentRule' => $baseDir . '/src/Rules/Arrays/OffsetAccessValueAssignmentRule.php', 'PHPStan\\Rules\\Arrays\\OffsetAccessWithoutDimForReadingRule' => $baseDir . '/src/Rules/Arrays/OffsetAccessWithoutDimForReadingRule.php', 'PHPStan\\Rules\\Arrays\\UnpackIterableInArrayRule' => $baseDir . '/src/Rules/Arrays/UnpackIterableInArrayRule.php', 'PHPStan\\Rules\\AttributesCheck' => $baseDir . '/src/Rules/AttributesCheck.php', 'PHPStan\\Rules\\Cast\\EchoRule' => $baseDir . '/src/Rules/Cast/EchoRule.php', 'PHPStan\\Rules\\Cast\\InvalidCastRule' => $baseDir . '/src/Rules/Cast/InvalidCastRule.php', 'PHPStan\\Rules\\Cast\\InvalidPartOfEncapsedStringRule' => $baseDir . '/src/Rules/Cast/InvalidPartOfEncapsedStringRule.php', 'PHPStan\\Rules\\Cast\\PrintRule' => $baseDir . '/src/Rules/Cast/PrintRule.php', 'PHPStan\\Rules\\Cast\\UnsetCastRule' => $baseDir . '/src/Rules/Cast/UnsetCastRule.php', 'PHPStan\\Rules\\ClassCaseSensitivityCheck' => $baseDir . '/src/Rules/ClassCaseSensitivityCheck.php', 'PHPStan\\Rules\\ClassForbiddenNameCheck' => $baseDir . '/src/Rules/ClassForbiddenNameCheck.php', 'PHPStan\\Rules\\ClassNameCheck' => $baseDir . '/src/Rules/ClassNameCheck.php', 'PHPStan\\Rules\\ClassNameNodePair' => $baseDir . '/src/Rules/ClassNameNodePair.php', 'PHPStan\\Rules\\Classes\\AccessPrivateConstantThroughStaticRule' => $baseDir . '/src/Rules/Classes/AccessPrivateConstantThroughStaticRule.php', 'PHPStan\\Rules\\Classes\\AllowedSubTypesRule' => $baseDir . '/src/Rules/Classes/AllowedSubTypesRule.php', 'PHPStan\\Rules\\Classes\\ClassAttributesRule' => $baseDir . '/src/Rules/Classes/ClassAttributesRule.php', 'PHPStan\\Rules\\Classes\\ClassConstantAttributesRule' => $baseDir . '/src/Rules/Classes/ClassConstantAttributesRule.php', 'PHPStan\\Rules\\Classes\\ClassConstantRule' => $baseDir . '/src/Rules/Classes/ClassConstantRule.php', 'PHPStan\\Rules\\Classes\\DuplicateClassDeclarationRule' => $baseDir . '/src/Rules/Classes/DuplicateClassDeclarationRule.php', 'PHPStan\\Rules\\Classes\\DuplicateDeclarationRule' => $baseDir . '/src/Rules/Classes/DuplicateDeclarationRule.php', 'PHPStan\\Rules\\Classes\\EnumSanityRule' => $baseDir . '/src/Rules/Classes/EnumSanityRule.php', 'PHPStan\\Rules\\Classes\\ExistingClassInClassExtendsRule' => $baseDir . '/src/Rules/Classes/ExistingClassInClassExtendsRule.php', 'PHPStan\\Rules\\Classes\\ExistingClassInInstanceOfRule' => $baseDir . '/src/Rules/Classes/ExistingClassInInstanceOfRule.php', 'PHPStan\\Rules\\Classes\\ExistingClassInTraitUseRule' => $baseDir . '/src/Rules/Classes/ExistingClassInTraitUseRule.php', 'PHPStan\\Rules\\Classes\\ExistingClassesInClassImplementsRule' => $baseDir . '/src/Rules/Classes/ExistingClassesInClassImplementsRule.php', 'PHPStan\\Rules\\Classes\\ExistingClassesInEnumImplementsRule' => $baseDir . '/src/Rules/Classes/ExistingClassesInEnumImplementsRule.php', 'PHPStan\\Rules\\Classes\\ExistingClassesInInterfaceExtendsRule' => $baseDir . '/src/Rules/Classes/ExistingClassesInInterfaceExtendsRule.php', 'PHPStan\\Rules\\Classes\\ImpossibleInstanceOfRule' => $baseDir . '/src/Rules/Classes/ImpossibleInstanceOfRule.php', 'PHPStan\\Rules\\Classes\\InstantiationCallableRule' => $baseDir . '/src/Rules/Classes/InstantiationCallableRule.php', 'PHPStan\\Rules\\Classes\\InstantiationRule' => $baseDir . '/src/Rules/Classes/InstantiationRule.php', 'PHPStan\\Rules\\Classes\\InvalidPromotedPropertiesRule' => $baseDir . '/src/Rules/Classes/InvalidPromotedPropertiesRule.php', 'PHPStan\\Rules\\Classes\\LocalTypeAliasesCheck' => $baseDir . '/src/Rules/Classes/LocalTypeAliasesCheck.php', 'PHPStan\\Rules\\Classes\\LocalTypeAliasesRule' => $baseDir . '/src/Rules/Classes/LocalTypeAliasesRule.php', 'PHPStan\\Rules\\Classes\\LocalTypeTraitAliasesRule' => $baseDir . '/src/Rules/Classes/LocalTypeTraitAliasesRule.php', 'PHPStan\\Rules\\Classes\\LocalTypeTraitUseAliasesRule' => $baseDir . '/src/Rules/Classes/LocalTypeTraitUseAliasesRule.php', 'PHPStan\\Rules\\Classes\\MethodTagCheck' => $baseDir . '/src/Rules/Classes/MethodTagCheck.php', 'PHPStan\\Rules\\Classes\\MethodTagRule' => $baseDir . '/src/Rules/Classes/MethodTagRule.php', 'PHPStan\\Rules\\Classes\\MethodTagTraitRule' => $baseDir . '/src/Rules/Classes/MethodTagTraitRule.php', 'PHPStan\\Rules\\Classes\\MethodTagTraitUseRule' => $baseDir . '/src/Rules/Classes/MethodTagTraitUseRule.php', 'PHPStan\\Rules\\Classes\\MixinCheck' => $baseDir . '/src/Rules/Classes/MixinCheck.php', 'PHPStan\\Rules\\Classes\\MixinRule' => $baseDir . '/src/Rules/Classes/MixinRule.php', 'PHPStan\\Rules\\Classes\\MixinTraitRule' => $baseDir . '/src/Rules/Classes/MixinTraitRule.php', 'PHPStan\\Rules\\Classes\\MixinTraitUseRule' => $baseDir . '/src/Rules/Classes/MixinTraitUseRule.php', 'PHPStan\\Rules\\Classes\\NewStaticRule' => $baseDir . '/src/Rules/Classes/NewStaticRule.php', 'PHPStan\\Rules\\Classes\\NonClassAttributeClassRule' => $baseDir . '/src/Rules/Classes/NonClassAttributeClassRule.php', 'PHPStan\\Rules\\Classes\\PropertyTagCheck' => $baseDir . '/src/Rules/Classes/PropertyTagCheck.php', 'PHPStan\\Rules\\Classes\\PropertyTagRule' => $baseDir . '/src/Rules/Classes/PropertyTagRule.php', 'PHPStan\\Rules\\Classes\\PropertyTagTraitRule' => $baseDir . '/src/Rules/Classes/PropertyTagTraitRule.php', 'PHPStan\\Rules\\Classes\\PropertyTagTraitUseRule' => $baseDir . '/src/Rules/Classes/PropertyTagTraitUseRule.php', 'PHPStan\\Rules\\Classes\\ReadOnlyClassRule' => $baseDir . '/src/Rules/Classes/ReadOnlyClassRule.php', 'PHPStan\\Rules\\Classes\\RequireExtendsRule' => $baseDir . '/src/Rules/Classes/RequireExtendsRule.php', 'PHPStan\\Rules\\Classes\\RequireImplementsRule' => $baseDir . '/src/Rules/Classes/RequireImplementsRule.php', 'PHPStan\\Rules\\Classes\\TraitAttributeClassRule' => $baseDir . '/src/Rules/Classes/TraitAttributeClassRule.php', 'PHPStan\\Rules\\Classes\\UnusedConstructorParametersRule' => $baseDir . '/src/Rules/Classes/UnusedConstructorParametersRule.php', 'PHPStan\\Rules\\Comparison\\BooleanAndConstantConditionRule' => $baseDir . '/src/Rules/Comparison/BooleanAndConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\BooleanNotConstantConditionRule' => $baseDir . '/src/Rules/Comparison/BooleanNotConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\BooleanOrConstantConditionRule' => $baseDir . '/src/Rules/Comparison/BooleanOrConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\ConstantConditionRuleHelper' => $baseDir . '/src/Rules/Comparison/ConstantConditionRuleHelper.php', 'PHPStan\\Rules\\Comparison\\ConstantLooseComparisonRule' => $baseDir . '/src/Rules/Comparison/ConstantLooseComparisonRule.php', 'PHPStan\\Rules\\Comparison\\DoWhileLoopConstantConditionRule' => $baseDir . '/src/Rules/Comparison/DoWhileLoopConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\ElseIfConstantConditionRule' => $baseDir . '/src/Rules/Comparison/ElseIfConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\IfConstantConditionRule' => $baseDir . '/src/Rules/Comparison/IfConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\ImpossibleCheckTypeFunctionCallRule' => $baseDir . '/src/Rules/Comparison/ImpossibleCheckTypeFunctionCallRule.php', 'PHPStan\\Rules\\Comparison\\ImpossibleCheckTypeHelper' => $baseDir . '/src/Rules/Comparison/ImpossibleCheckTypeHelper.php', 'PHPStan\\Rules\\Comparison\\ImpossibleCheckTypeMethodCallRule' => $baseDir . '/src/Rules/Comparison/ImpossibleCheckTypeMethodCallRule.php', 'PHPStan\\Rules\\Comparison\\ImpossibleCheckTypeStaticMethodCallRule' => $baseDir . '/src/Rules/Comparison/ImpossibleCheckTypeStaticMethodCallRule.php', 'PHPStan\\Rules\\Comparison\\LogicalXorConstantConditionRule' => $baseDir . '/src/Rules/Comparison/LogicalXorConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\MatchExpressionRule' => $baseDir . '/src/Rules/Comparison/MatchExpressionRule.php', 'PHPStan\\Rules\\Comparison\\NumberComparisonOperatorsConstantConditionRule' => $baseDir . '/src/Rules/Comparison/NumberComparisonOperatorsConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\StrictComparisonOfDifferentTypesRule' => $baseDir . '/src/Rules/Comparison/StrictComparisonOfDifferentTypesRule.php', 'PHPStan\\Rules\\Comparison\\TernaryOperatorConstantConditionRule' => $baseDir . '/src/Rules/Comparison/TernaryOperatorConstantConditionRule.php', 'PHPStan\\Rules\\Comparison\\UnreachableIfBranchesRule' => $baseDir . '/src/Rules/Comparison/UnreachableIfBranchesRule.php', 'PHPStan\\Rules\\Comparison\\UnreachableTernaryElseBranchRule' => $baseDir . '/src/Rules/Comparison/UnreachableTernaryElseBranchRule.php', 'PHPStan\\Rules\\Comparison\\UsageOfVoidMatchExpressionRule' => $baseDir . '/src/Rules/Comparison/UsageOfVoidMatchExpressionRule.php', 'PHPStan\\Rules\\Comparison\\WhileLoopAlwaysFalseConditionRule' => $baseDir . '/src/Rules/Comparison/WhileLoopAlwaysFalseConditionRule.php', 'PHPStan\\Rules\\Comparison\\WhileLoopAlwaysTrueConditionRule' => $baseDir . '/src/Rules/Comparison/WhileLoopAlwaysTrueConditionRule.php', 'PHPStan\\Rules\\Constants\\AlwaysUsedClassConstantsExtension' => $baseDir . '/src/Rules/Constants/AlwaysUsedClassConstantsExtension.php', 'PHPStan\\Rules\\Constants\\AlwaysUsedClassConstantsExtensionProvider' => $baseDir . '/src/Rules/Constants/AlwaysUsedClassConstantsExtensionProvider.php', 'PHPStan\\Rules\\Constants\\ClassAsClassConstantRule' => $baseDir . '/src/Rules/Constants/ClassAsClassConstantRule.php', 'PHPStan\\Rules\\Constants\\ConstantRule' => $baseDir . '/src/Rules/Constants/ConstantRule.php', 'PHPStan\\Rules\\Constants\\DynamicClassConstantFetchRule' => $baseDir . '/src/Rules/Constants/DynamicClassConstantFetchRule.php', 'PHPStan\\Rules\\Constants\\FinalConstantRule' => $baseDir . '/src/Rules/Constants/FinalConstantRule.php', 'PHPStan\\Rules\\Constants\\LazyAlwaysUsedClassConstantsExtensionProvider' => $baseDir . '/src/Rules/Constants/LazyAlwaysUsedClassConstantsExtensionProvider.php', 'PHPStan\\Rules\\Constants\\MagicConstantContextRule' => $baseDir . '/src/Rules/Constants/MagicConstantContextRule.php', 'PHPStan\\Rules\\Constants\\MissingClassConstantTypehintRule' => $baseDir . '/src/Rules/Constants/MissingClassConstantTypehintRule.php', 'PHPStan\\Rules\\Constants\\NativeTypedClassConstantRule' => $baseDir . '/src/Rules/Constants/NativeTypedClassConstantRule.php', 'PHPStan\\Rules\\Constants\\OverridingConstantRule' => $baseDir . '/src/Rules/Constants/OverridingConstantRule.php', 'PHPStan\\Rules\\Constants\\ValueAssignedToClassConstantRule' => $baseDir . '/src/Rules/Constants/ValueAssignedToClassConstantRule.php', 'PHPStan\\Rules\\DateTimeInstantiationRule' => $baseDir . '/src/Rules/DateTimeInstantiationRule.php', 'PHPStan\\Rules\\DeadCode\\BetterNoopRule' => $baseDir . '/src/Rules/DeadCode/BetterNoopRule.php', 'PHPStan\\Rules\\DeadCode\\CallToConstructorStatementWithoutImpurePointsRule' => $baseDir . '/src/Rules/DeadCode/CallToConstructorStatementWithoutImpurePointsRule.php', 'PHPStan\\Rules\\DeadCode\\CallToFunctionStatementWithoutImpurePointsRule' => $baseDir . '/src/Rules/DeadCode/CallToFunctionStatementWithoutImpurePointsRule.php', 'PHPStan\\Rules\\DeadCode\\CallToMethodStatementWithoutImpurePointsRule' => $baseDir . '/src/Rules/DeadCode/CallToMethodStatementWithoutImpurePointsRule.php', 'PHPStan\\Rules\\DeadCode\\CallToStaticMethodStatementWithoutImpurePointsRule' => $baseDir . '/src/Rules/DeadCode/CallToStaticMethodStatementWithoutImpurePointsRule.php', 'PHPStan\\Rules\\DeadCode\\ConstructorWithoutImpurePointsCollector' => $baseDir . '/src/Rules/DeadCode/ConstructorWithoutImpurePointsCollector.php', 'PHPStan\\Rules\\DeadCode\\FunctionWithoutImpurePointsCollector' => $baseDir . '/src/Rules/DeadCode/FunctionWithoutImpurePointsCollector.php', 'PHPStan\\Rules\\DeadCode\\MethodWithoutImpurePointsCollector' => $baseDir . '/src/Rules/DeadCode/MethodWithoutImpurePointsCollector.php', 'PHPStan\\Rules\\DeadCode\\NoopRule' => $baseDir . '/src/Rules/DeadCode/NoopRule.php', 'PHPStan\\Rules\\DeadCode\\PossiblyPureFuncCallCollector' => $baseDir . '/src/Rules/DeadCode/PossiblyPureFuncCallCollector.php', 'PHPStan\\Rules\\DeadCode\\PossiblyPureMethodCallCollector' => $baseDir . '/src/Rules/DeadCode/PossiblyPureMethodCallCollector.php', 'PHPStan\\Rules\\DeadCode\\PossiblyPureNewCollector' => $baseDir . '/src/Rules/DeadCode/PossiblyPureNewCollector.php', 'PHPStan\\Rules\\DeadCode\\PossiblyPureStaticCallCollector' => $baseDir . '/src/Rules/DeadCode/PossiblyPureStaticCallCollector.php', 'PHPStan\\Rules\\DeadCode\\UnreachableStatementRule' => $baseDir . '/src/Rules/DeadCode/UnreachableStatementRule.php', 'PHPStan\\Rules\\DeadCode\\UnusedPrivateConstantRule' => $baseDir . '/src/Rules/DeadCode/UnusedPrivateConstantRule.php', 'PHPStan\\Rules\\DeadCode\\UnusedPrivateMethodRule' => $baseDir . '/src/Rules/DeadCode/UnusedPrivateMethodRule.php', 'PHPStan\\Rules\\DeadCode\\UnusedPrivatePropertyRule' => $baseDir . '/src/Rules/DeadCode/UnusedPrivatePropertyRule.php', 'PHPStan\\Rules\\Debug\\DebugScopeRule' => $baseDir . '/src/Rules/Debug/DebugScopeRule.php', 'PHPStan\\Rules\\Debug\\DumpPhpDocTypeRule' => $baseDir . '/src/Rules/Debug/DumpPhpDocTypeRule.php', 'PHPStan\\Rules\\Debug\\DumpTypeRule' => $baseDir . '/src/Rules/Debug/DumpTypeRule.php', 'PHPStan\\Rules\\Debug\\FileAssertRule' => $baseDir . '/src/Rules/Debug/FileAssertRule.php', 'PHPStan\\Rules\\DirectRegistry' => $baseDir . '/src/Rules/DirectRegistry.php', 'PHPStan\\Rules\\EnumCases\\EnumCaseAttributesRule' => $baseDir . '/src/Rules/EnumCases/EnumCaseAttributesRule.php', 'PHPStan\\Rules\\Exceptions\\CatchWithUnthrownExceptionRule' => $baseDir . '/src/Rules/Exceptions/CatchWithUnthrownExceptionRule.php', 'PHPStan\\Rules\\Exceptions\\CaughtExceptionExistenceRule' => $baseDir . '/src/Rules/Exceptions/CaughtExceptionExistenceRule.php', 'PHPStan\\Rules\\Exceptions\\DefaultExceptionTypeResolver' => $baseDir . '/src/Rules/Exceptions/DefaultExceptionTypeResolver.php', 'PHPStan\\Rules\\Exceptions\\ExceptionTypeResolver' => $baseDir . '/src/Rules/Exceptions/ExceptionTypeResolver.php', 'PHPStan\\Rules\\Exceptions\\MissingCheckedExceptionInFunctionThrowsRule' => $baseDir . '/src/Rules/Exceptions/MissingCheckedExceptionInFunctionThrowsRule.php', 'PHPStan\\Rules\\Exceptions\\MissingCheckedExceptionInMethodThrowsRule' => $baseDir . '/src/Rules/Exceptions/MissingCheckedExceptionInMethodThrowsRule.php', 'PHPStan\\Rules\\Exceptions\\MissingCheckedExceptionInThrowsCheck' => $baseDir . '/src/Rules/Exceptions/MissingCheckedExceptionInThrowsCheck.php', 'PHPStan\\Rules\\Exceptions\\NoncapturingCatchRule' => $baseDir . '/src/Rules/Exceptions/NoncapturingCatchRule.php', 'PHPStan\\Rules\\Exceptions\\OverwrittenExitPointByFinallyRule' => $baseDir . '/src/Rules/Exceptions/OverwrittenExitPointByFinallyRule.php', 'PHPStan\\Rules\\Exceptions\\ThrowExprTypeRule' => $baseDir . '/src/Rules/Exceptions/ThrowExprTypeRule.php', 'PHPStan\\Rules\\Exceptions\\ThrowExpressionRule' => $baseDir . '/src/Rules/Exceptions/ThrowExpressionRule.php', 'PHPStan\\Rules\\Exceptions\\ThrowsVoidFunctionWithExplicitThrowPointRule' => $baseDir . '/src/Rules/Exceptions/ThrowsVoidFunctionWithExplicitThrowPointRule.php', 'PHPStan\\Rules\\Exceptions\\ThrowsVoidMethodWithExplicitThrowPointRule' => $baseDir . '/src/Rules/Exceptions/ThrowsVoidMethodWithExplicitThrowPointRule.php', 'PHPStan\\Rules\\Exceptions\\TooWideFunctionThrowTypeRule' => $baseDir . '/src/Rules/Exceptions/TooWideFunctionThrowTypeRule.php', 'PHPStan\\Rules\\Exceptions\\TooWideMethodThrowTypeRule' => $baseDir . '/src/Rules/Exceptions/TooWideMethodThrowTypeRule.php', 'PHPStan\\Rules\\Exceptions\\TooWideThrowTypeCheck' => $baseDir . '/src/Rules/Exceptions/TooWideThrowTypeCheck.php', 'PHPStan\\Rules\\FileRuleError' => $baseDir . '/src/Rules/FileRuleError.php', 'PHPStan\\Rules\\FoundTypeResult' => $baseDir . '/src/Rules/FoundTypeResult.php', 'PHPStan\\Rules\\FunctionCallParametersCheck' => $baseDir . '/src/Rules/FunctionCallParametersCheck.php', 'PHPStan\\Rules\\FunctionDefinitionCheck' => $baseDir . '/src/Rules/FunctionDefinitionCheck.php', 'PHPStan\\Rules\\FunctionReturnTypeCheck' => $baseDir . '/src/Rules/FunctionReturnTypeCheck.php', 'PHPStan\\Rules\\Functions\\ArrayFilterRule' => $baseDir . '/src/Rules/Functions/ArrayFilterRule.php', 'PHPStan\\Rules\\Functions\\ArrayValuesRule' => $baseDir . '/src/Rules/Functions/ArrayValuesRule.php', 'PHPStan\\Rules\\Functions\\ArrowFunctionAttributesRule' => $baseDir . '/src/Rules/Functions/ArrowFunctionAttributesRule.php', 'PHPStan\\Rules\\Functions\\ArrowFunctionReturnNullsafeByRefRule' => $baseDir . '/src/Rules/Functions/ArrowFunctionReturnNullsafeByRefRule.php', 'PHPStan\\Rules\\Functions\\ArrowFunctionReturnTypeRule' => $baseDir . '/src/Rules/Functions/ArrowFunctionReturnTypeRule.php', 'PHPStan\\Rules\\Functions\\CallCallablesRule' => $baseDir . '/src/Rules/Functions/CallCallablesRule.php', 'PHPStan\\Rules\\Functions\\CallToFunctionParametersRule' => $baseDir . '/src/Rules/Functions/CallToFunctionParametersRule.php', 'PHPStan\\Rules\\Functions\\CallToFunctionStatementWithoutSideEffectsRule' => $baseDir . '/src/Rules/Functions/CallToFunctionStatementWithoutSideEffectsRule.php', 'PHPStan\\Rules\\Functions\\CallToNonExistentFunctionRule' => $baseDir . '/src/Rules/Functions/CallToNonExistentFunctionRule.php', 'PHPStan\\Rules\\Functions\\CallUserFuncRule' => $baseDir . '/src/Rules/Functions/CallUserFuncRule.php', 'PHPStan\\Rules\\Functions\\ClosureAttributesRule' => $baseDir . '/src/Rules/Functions/ClosureAttributesRule.php', 'PHPStan\\Rules\\Functions\\ClosureReturnTypeRule' => $baseDir . '/src/Rules/Functions/ClosureReturnTypeRule.php', 'PHPStan\\Rules\\Functions\\DefineParametersRule' => $baseDir . '/src/Rules/Functions/DefineParametersRule.php', 'PHPStan\\Rules\\Functions\\DuplicateFunctionDeclarationRule' => $baseDir . '/src/Rules/Functions/DuplicateFunctionDeclarationRule.php', 'PHPStan\\Rules\\Functions\\ExistingClassesInArrowFunctionTypehintsRule' => $baseDir . '/src/Rules/Functions/ExistingClassesInArrowFunctionTypehintsRule.php', 'PHPStan\\Rules\\Functions\\ExistingClassesInClosureTypehintsRule' => $baseDir . '/src/Rules/Functions/ExistingClassesInClosureTypehintsRule.php', 'PHPStan\\Rules\\Functions\\ExistingClassesInTypehintsRule' => $baseDir . '/src/Rules/Functions/ExistingClassesInTypehintsRule.php', 'PHPStan\\Rules\\Functions\\FunctionAttributesRule' => $baseDir . '/src/Rules/Functions/FunctionAttributesRule.php', 'PHPStan\\Rules\\Functions\\FunctionCallableRule' => $baseDir . '/src/Rules/Functions/FunctionCallableRule.php', 'PHPStan\\Rules\\Functions\\ImplodeFunctionRule' => $baseDir . '/src/Rules/Functions/ImplodeFunctionRule.php', 'PHPStan\\Rules\\Functions\\ImplodeParameterCastableToStringRule' => $baseDir . '/src/Rules/Functions/ImplodeParameterCastableToStringRule.php', 'PHPStan\\Rules\\Functions\\IncompatibleArrowFunctionDefaultParameterTypeRule' => $baseDir . '/src/Rules/Functions/IncompatibleArrowFunctionDefaultParameterTypeRule.php', 'PHPStan\\Rules\\Functions\\IncompatibleClosureDefaultParameterTypeRule' => $baseDir . '/src/Rules/Functions/IncompatibleClosureDefaultParameterTypeRule.php', 'PHPStan\\Rules\\Functions\\IncompatibleDefaultParameterTypeRule' => $baseDir . '/src/Rules/Functions/IncompatibleDefaultParameterTypeRule.php', 'PHPStan\\Rules\\Functions\\InnerFunctionRule' => $baseDir . '/src/Rules/Functions/InnerFunctionRule.php', 'PHPStan\\Rules\\Functions\\InvalidLexicalVariablesInClosureUseRule' => $baseDir . '/src/Rules/Functions/InvalidLexicalVariablesInClosureUseRule.php', 'PHPStan\\Rules\\Functions\\MissingFunctionParameterTypehintRule' => $baseDir . '/src/Rules/Functions/MissingFunctionParameterTypehintRule.php', 'PHPStan\\Rules\\Functions\\MissingFunctionReturnTypehintRule' => $baseDir . '/src/Rules/Functions/MissingFunctionReturnTypehintRule.php', 'PHPStan\\Rules\\Functions\\ParamAttributesRule' => $baseDir . '/src/Rules/Functions/ParamAttributesRule.php', 'PHPStan\\Rules\\Functions\\ParameterCastableToStringRule' => $baseDir . '/src/Rules/Functions/ParameterCastableToStringRule.php', 'PHPStan\\Rules\\Functions\\PrintfArrayParametersRule' => $baseDir . '/src/Rules/Functions/PrintfArrayParametersRule.php', 'PHPStan\\Rules\\Functions\\PrintfHelper' => $baseDir . '/src/Rules/Functions/PrintfHelper.php', 'PHPStan\\Rules\\Functions\\PrintfParametersRule' => $baseDir . '/src/Rules/Functions/PrintfParametersRule.php', 'PHPStan\\Rules\\Functions\\RandomIntParametersRule' => $baseDir . '/src/Rules/Functions/RandomIntParametersRule.php', 'PHPStan\\Rules\\Functions\\RedefinedParametersRule' => $baseDir . '/src/Rules/Functions/RedefinedParametersRule.php', 'PHPStan\\Rules\\Functions\\ReturnNullsafeByRefRule' => $baseDir . '/src/Rules/Functions/ReturnNullsafeByRefRule.php', 'PHPStan\\Rules\\Functions\\ReturnTypeRule' => $baseDir . '/src/Rules/Functions/ReturnTypeRule.php', 'PHPStan\\Rules\\Functions\\SortParameterCastableToStringRule' => $baseDir . '/src/Rules/Functions/SortParameterCastableToStringRule.php', 'PHPStan\\Rules\\Functions\\UnusedClosureUsesRule' => $baseDir . '/src/Rules/Functions/UnusedClosureUsesRule.php', 'PHPStan\\Rules\\Functions\\UselessFunctionReturnValueRule' => $baseDir . '/src/Rules/Functions/UselessFunctionReturnValueRule.php', 'PHPStan\\Rules\\Functions\\VariadicParametersDeclarationRule' => $baseDir . '/src/Rules/Functions/VariadicParametersDeclarationRule.php', 'PHPStan\\Rules\\Generators\\YieldFromTypeRule' => $baseDir . '/src/Rules/Generators/YieldFromTypeRule.php', 'PHPStan\\Rules\\Generators\\YieldInGeneratorRule' => $baseDir . '/src/Rules/Generators/YieldInGeneratorRule.php', 'PHPStan\\Rules\\Generators\\YieldTypeRule' => $baseDir . '/src/Rules/Generators/YieldTypeRule.php', 'PHPStan\\Rules\\Generics\\ClassAncestorsRule' => $baseDir . '/src/Rules/Generics/ClassAncestorsRule.php', 'PHPStan\\Rules\\Generics\\ClassTemplateTypeRule' => $baseDir . '/src/Rules/Generics/ClassTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\CrossCheckInterfacesHelper' => $baseDir . '/src/Rules/Generics/CrossCheckInterfacesHelper.php', 'PHPStan\\Rules\\Generics\\EnumAncestorsRule' => $baseDir . '/src/Rules/Generics/EnumAncestorsRule.php', 'PHPStan\\Rules\\Generics\\EnumTemplateTypeRule' => $baseDir . '/src/Rules/Generics/EnumTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\FunctionSignatureVarianceRule' => $baseDir . '/src/Rules/Generics/FunctionSignatureVarianceRule.php', 'PHPStan\\Rules\\Generics\\FunctionTemplateTypeRule' => $baseDir . '/src/Rules/Generics/FunctionTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\GenericAncestorsCheck' => $baseDir . '/src/Rules/Generics/GenericAncestorsCheck.php', 'PHPStan\\Rules\\Generics\\GenericObjectTypeCheck' => $baseDir . '/src/Rules/Generics/GenericObjectTypeCheck.php', 'PHPStan\\Rules\\Generics\\InterfaceAncestorsRule' => $baseDir . '/src/Rules/Generics/InterfaceAncestorsRule.php', 'PHPStan\\Rules\\Generics\\InterfaceTemplateTypeRule' => $baseDir . '/src/Rules/Generics/InterfaceTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\MethodSignatureVarianceRule' => $baseDir . '/src/Rules/Generics/MethodSignatureVarianceRule.php', 'PHPStan\\Rules\\Generics\\MethodTagTemplateTypeCheck' => $baseDir . '/src/Rules/Generics/MethodTagTemplateTypeCheck.php', 'PHPStan\\Rules\\Generics\\MethodTagTemplateTypeRule' => $baseDir . '/src/Rules/Generics/MethodTagTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\MethodTagTemplateTypeTraitRule' => $baseDir . '/src/Rules/Generics/MethodTagTemplateTypeTraitRule.php', 'PHPStan\\Rules\\Generics\\MethodTemplateTypeRule' => $baseDir . '/src/Rules/Generics/MethodTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\PropertyVarianceRule' => $baseDir . '/src/Rules/Generics/PropertyVarianceRule.php', 'PHPStan\\Rules\\Generics\\TemplateTypeCheck' => $baseDir . '/src/Rules/Generics/TemplateTypeCheck.php', 'PHPStan\\Rules\\Generics\\TraitTemplateTypeRule' => $baseDir . '/src/Rules/Generics/TraitTemplateTypeRule.php', 'PHPStan\\Rules\\Generics\\UsedTraitsRule' => $baseDir . '/src/Rules/Generics/UsedTraitsRule.php', 'PHPStan\\Rules\\Generics\\VarianceCheck' => $baseDir . '/src/Rules/Generics/VarianceCheck.php', 'PHPStan\\Rules\\IdentifierRuleError' => $baseDir . '/src/Rules/IdentifierRuleError.php', 'PHPStan\\Rules\\Ignore\\IgnoreParseErrorRule' => $baseDir . '/src/Rules/Ignore/IgnoreParseErrorRule.php', 'PHPStan\\Rules\\IssetCheck' => $baseDir . '/src/Rules/IssetCheck.php', 'PHPStan\\Rules\\Keywords\\ContinueBreakInLoopRule' => $baseDir . '/src/Rules/Keywords/ContinueBreakInLoopRule.php', 'PHPStan\\Rules\\Keywords\\DeclareStrictTypesRule' => $baseDir . '/src/Rules/Keywords/DeclareStrictTypesRule.php', 'PHPStan\\Rules\\Keywords\\RequireFileExistsRule' => $baseDir . '/src/Rules/Keywords/RequireFileExistsRule.php', 'PHPStan\\Rules\\LazyRegistry' => $baseDir . '/src/Rules/LazyRegistry.php', 'PHPStan\\Rules\\LineRuleError' => $baseDir . '/src/Rules/LineRuleError.php', 'PHPStan\\Rules\\MetadataRuleError' => $baseDir . '/src/Rules/MetadataRuleError.php', 'PHPStan\\Rules\\Methods\\AbstractMethodInNonAbstractClassRule' => $baseDir . '/src/Rules/Methods/AbstractMethodInNonAbstractClassRule.php', 'PHPStan\\Rules\\Methods\\AbstractPrivateMethodRule' => $baseDir . '/src/Rules/Methods/AbstractPrivateMethodRule.php', 'PHPStan\\Rules\\Methods\\AlwaysUsedMethodExtension' => $baseDir . '/src/Rules/Methods/AlwaysUsedMethodExtension.php', 'PHPStan\\Rules\\Methods\\AlwaysUsedMethodExtensionProvider' => $baseDir . '/src/Rules/Methods/AlwaysUsedMethodExtensionProvider.php', 'PHPStan\\Rules\\Methods\\CallMethodsRule' => $baseDir . '/src/Rules/Methods/CallMethodsRule.php', 'PHPStan\\Rules\\Methods\\CallPrivateMethodThroughStaticRule' => $baseDir . '/src/Rules/Methods/CallPrivateMethodThroughStaticRule.php', 'PHPStan\\Rules\\Methods\\CallStaticMethodsRule' => $baseDir . '/src/Rules/Methods/CallStaticMethodsRule.php', 'PHPStan\\Rules\\Methods\\CallToConstructorStatementWithoutSideEffectsRule' => $baseDir . '/src/Rules/Methods/CallToConstructorStatementWithoutSideEffectsRule.php', 'PHPStan\\Rules\\Methods\\CallToMethodStatementWithoutSideEffectsRule' => $baseDir . '/src/Rules/Methods/CallToMethodStatementWithoutSideEffectsRule.php', 'PHPStan\\Rules\\Methods\\CallToStaticMethodStatementWithoutSideEffectsRule' => $baseDir . '/src/Rules/Methods/CallToStaticMethodStatementWithoutSideEffectsRule.php', 'PHPStan\\Rules\\Methods\\ConsistentConstructorRule' => $baseDir . '/src/Rules/Methods/ConsistentConstructorRule.php', 'PHPStan\\Rules\\Methods\\ConstructorReturnTypeRule' => $baseDir . '/src/Rules/Methods/ConstructorReturnTypeRule.php', 'PHPStan\\Rules\\Methods\\DirectAlwaysUsedMethodExtensionProvider' => $baseDir . '/src/Rules/Methods/DirectAlwaysUsedMethodExtensionProvider.php', 'PHPStan\\Rules\\Methods\\ExistingClassesInTypehintsRule' => $baseDir . '/src/Rules/Methods/ExistingClassesInTypehintsRule.php', 'PHPStan\\Rules\\Methods\\FinalPrivateMethodRule' => $baseDir . '/src/Rules/Methods/FinalPrivateMethodRule.php', 'PHPStan\\Rules\\Methods\\IllegalConstructorMethodCallRule' => $baseDir . '/src/Rules/Methods/IllegalConstructorMethodCallRule.php', 'PHPStan\\Rules\\Methods\\IllegalConstructorStaticCallRule' => $baseDir . '/src/Rules/Methods/IllegalConstructorStaticCallRule.php', 'PHPStan\\Rules\\Methods\\IncompatibleDefaultParameterTypeRule' => $baseDir . '/src/Rules/Methods/IncompatibleDefaultParameterTypeRule.php', 'PHPStan\\Rules\\Methods\\LazyAlwaysUsedMethodExtensionProvider' => $baseDir . '/src/Rules/Methods/LazyAlwaysUsedMethodExtensionProvider.php', 'PHPStan\\Rules\\Methods\\MethodAttributesRule' => $baseDir . '/src/Rules/Methods/MethodAttributesRule.php', 'PHPStan\\Rules\\Methods\\MethodCallCheck' => $baseDir . '/src/Rules/Methods/MethodCallCheck.php', 'PHPStan\\Rules\\Methods\\MethodCallableRule' => $baseDir . '/src/Rules/Methods/MethodCallableRule.php', 'PHPStan\\Rules\\Methods\\MethodParameterComparisonHelper' => $baseDir . '/src/Rules/Methods/MethodParameterComparisonHelper.php', 'PHPStan\\Rules\\Methods\\MethodSignatureRule' => $baseDir . '/src/Rules/Methods/MethodSignatureRule.php', 'PHPStan\\Rules\\Methods\\MethodVisibilityInInterfaceRule' => $baseDir . '/src/Rules/Methods/MethodVisibilityInInterfaceRule.php', 'PHPStan\\Rules\\Methods\\MissingMagicSerializationMethodsRule' => $baseDir . '/src/Rules/Methods/MissingMagicSerializationMethodsRule.php', 'PHPStan\\Rules\\Methods\\MissingMethodImplementationRule' => $baseDir . '/src/Rules/Methods/MissingMethodImplementationRule.php', 'PHPStan\\Rules\\Methods\\MissingMethodParameterTypehintRule' => $baseDir . '/src/Rules/Methods/MissingMethodParameterTypehintRule.php', 'PHPStan\\Rules\\Methods\\MissingMethodReturnTypehintRule' => $baseDir . '/src/Rules/Methods/MissingMethodReturnTypehintRule.php', 'PHPStan\\Rules\\Methods\\MissingMethodSelfOutTypeRule' => $baseDir . '/src/Rules/Methods/MissingMethodSelfOutTypeRule.php', 'PHPStan\\Rules\\Methods\\NullsafeMethodCallRule' => $baseDir . '/src/Rules/Methods/NullsafeMethodCallRule.php', 'PHPStan\\Rules\\Methods\\OverridingMethodRule' => $baseDir . '/src/Rules/Methods/OverridingMethodRule.php', 'PHPStan\\Rules\\Methods\\ReturnTypeRule' => $baseDir . '/src/Rules/Methods/ReturnTypeRule.php', 'PHPStan\\Rules\\Methods\\StaticMethodCallCheck' => $baseDir . '/src/Rules/Methods/StaticMethodCallCheck.php', 'PHPStan\\Rules\\Methods\\StaticMethodCallableRule' => $baseDir . '/src/Rules/Methods/StaticMethodCallableRule.php', 'PHPStan\\Rules\\MissingTypehintCheck' => $baseDir . '/src/Rules/MissingTypehintCheck.php', 'PHPStan\\Rules\\Missing\\MissingReturnRule' => $baseDir . '/src/Rules/Missing/MissingReturnRule.php', 'PHPStan\\Rules\\Names\\UsedNamesRule' => $baseDir . '/src/Rules/Names/UsedNamesRule.php', 'PHPStan\\Rules\\Namespaces\\ExistingNamesInGroupUseRule' => $baseDir . '/src/Rules/Namespaces/ExistingNamesInGroupUseRule.php', 'PHPStan\\Rules\\Namespaces\\ExistingNamesInUseRule' => $baseDir . '/src/Rules/Namespaces/ExistingNamesInUseRule.php', 'PHPStan\\Rules\\NonIgnorableRuleError' => $baseDir . '/src/Rules/NonIgnorableRuleError.php', 'PHPStan\\Rules\\NullsafeCheck' => $baseDir . '/src/Rules/NullsafeCheck.php', 'PHPStan\\Rules\\Operators\\InvalidAssignVarRule' => $baseDir . '/src/Rules/Operators/InvalidAssignVarRule.php', 'PHPStan\\Rules\\Operators\\InvalidBinaryOperationRule' => $baseDir . '/src/Rules/Operators/InvalidBinaryOperationRule.php', 'PHPStan\\Rules\\Operators\\InvalidComparisonOperationRule' => $baseDir . '/src/Rules/Operators/InvalidComparisonOperationRule.php', 'PHPStan\\Rules\\Operators\\InvalidIncDecOperationRule' => $baseDir . '/src/Rules/Operators/InvalidIncDecOperationRule.php', 'PHPStan\\Rules\\Operators\\InvalidUnaryOperationRule' => $baseDir . '/src/Rules/Operators/InvalidUnaryOperationRule.php', 'PHPStan\\Rules\\ParameterCastableToStringCheck' => $baseDir . '/src/Rules/ParameterCastableToStringCheck.php', 'PHPStan\\Rules\\PhpDoc\\AssertRuleHelper' => $baseDir . '/src/Rules/PhpDoc/AssertRuleHelper.php', 'PHPStan\\Rules\\PhpDoc\\ConditionalReturnTypeRuleHelper' => $baseDir . '/src/Rules/PhpDoc/ConditionalReturnTypeRuleHelper.php', 'PHPStan\\Rules\\PhpDoc\\FunctionAssertRule' => $baseDir . '/src/Rules/PhpDoc/FunctionAssertRule.php', 'PHPStan\\Rules\\PhpDoc\\FunctionConditionalReturnTypeRule' => $baseDir . '/src/Rules/PhpDoc/FunctionConditionalReturnTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\GenericCallableRuleHelper' => $baseDir . '/src/Rules/PhpDoc/GenericCallableRuleHelper.php', 'PHPStan\\Rules\\PhpDoc\\IncompatibleClassConstantPhpDocTypeRule' => $baseDir . '/src/Rules/PhpDoc/IncompatibleClassConstantPhpDocTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\IncompatibleParamImmediatelyInvokedCallableRule' => $baseDir . '/src/Rules/PhpDoc/IncompatibleParamImmediatelyInvokedCallableRule.php', 'PHPStan\\Rules\\PhpDoc\\IncompatiblePhpDocTypeRule' => $baseDir . '/src/Rules/PhpDoc/IncompatiblePhpDocTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\IncompatiblePropertyPhpDocTypeRule' => $baseDir . '/src/Rules/PhpDoc/IncompatiblePropertyPhpDocTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\IncompatibleSelfOutTypeRule' => $baseDir . '/src/Rules/PhpDoc/IncompatibleSelfOutTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\InvalidPHPStanDocTagRule' => $baseDir . '/src/Rules/PhpDoc/InvalidPHPStanDocTagRule.php', 'PHPStan\\Rules\\PhpDoc\\InvalidPhpDocTagValueRule' => $baseDir . '/src/Rules/PhpDoc/InvalidPhpDocTagValueRule.php', 'PHPStan\\Rules\\PhpDoc\\InvalidPhpDocVarTagTypeRule' => $baseDir . '/src/Rules/PhpDoc/InvalidPhpDocVarTagTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\InvalidThrowsPhpDocValueRule' => $baseDir . '/src/Rules/PhpDoc/InvalidThrowsPhpDocValueRule.php', 'PHPStan\\Rules\\PhpDoc\\MethodAssertRule' => $baseDir . '/src/Rules/PhpDoc/MethodAssertRule.php', 'PHPStan\\Rules\\PhpDoc\\MethodConditionalReturnTypeRule' => $baseDir . '/src/Rules/PhpDoc/MethodConditionalReturnTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\PhpDocLineHelper' => $baseDir . '/src/Rules/PhpDoc/PhpDocLineHelper.php', 'PHPStan\\Rules\\PhpDoc\\RequireExtendsCheck' => $baseDir . '/src/Rules/PhpDoc/RequireExtendsCheck.php', 'PHPStan\\Rules\\PhpDoc\\RequireExtendsDefinitionClassRule' => $baseDir . '/src/Rules/PhpDoc/RequireExtendsDefinitionClassRule.php', 'PHPStan\\Rules\\PhpDoc\\RequireExtendsDefinitionTraitRule' => $baseDir . '/src/Rules/PhpDoc/RequireExtendsDefinitionTraitRule.php', 'PHPStan\\Rules\\PhpDoc\\RequireImplementsDefinitionClassRule' => $baseDir . '/src/Rules/PhpDoc/RequireImplementsDefinitionClassRule.php', 'PHPStan\\Rules\\PhpDoc\\RequireImplementsDefinitionTraitRule' => $baseDir . '/src/Rules/PhpDoc/RequireImplementsDefinitionTraitRule.php', 'PHPStan\\Rules\\PhpDoc\\UnresolvableTypeHelper' => $baseDir . '/src/Rules/PhpDoc/UnresolvableTypeHelper.php', 'PHPStan\\Rules\\PhpDoc\\VarTagChangedExpressionTypeRule' => $baseDir . '/src/Rules/PhpDoc/VarTagChangedExpressionTypeRule.php', 'PHPStan\\Rules\\PhpDoc\\VarTagTypeRuleHelper' => $baseDir . '/src/Rules/PhpDoc/VarTagTypeRuleHelper.php', 'PHPStan\\Rules\\PhpDoc\\WrongVariableNameInVarTagRule' => $baseDir . '/src/Rules/PhpDoc/WrongVariableNameInVarTagRule.php', 'PHPStan\\Rules\\Playground\\FunctionNeverRule' => $baseDir . '/src/Rules/Playground/FunctionNeverRule.php', 'PHPStan\\Rules\\Playground\\MethodNeverRule' => $baseDir . '/src/Rules/Playground/MethodNeverRule.php', 'PHPStan\\Rules\\Playground\\NeverRuleHelper' => $baseDir . '/src/Rules/Playground/NeverRuleHelper.php', 'PHPStan\\Rules\\Playground\\NoPhpCodeRule' => $baseDir . '/src/Rules/Playground/NoPhpCodeRule.php', 'PHPStan\\Rules\\Playground\\NotAnalysedTraitRule' => $baseDir . '/src/Rules/Playground/NotAnalysedTraitRule.php', 'PHPStan\\Rules\\Properties\\AccessPrivatePropertyThroughStaticRule' => $baseDir . '/src/Rules/Properties/AccessPrivatePropertyThroughStaticRule.php', 'PHPStan\\Rules\\Properties\\AccessPropertiesInAssignRule' => $baseDir . '/src/Rules/Properties/AccessPropertiesInAssignRule.php', 'PHPStan\\Rules\\Properties\\AccessPropertiesRule' => $baseDir . '/src/Rules/Properties/AccessPropertiesRule.php', 'PHPStan\\Rules\\Properties\\AccessStaticPropertiesInAssignRule' => $baseDir . '/src/Rules/Properties/AccessStaticPropertiesInAssignRule.php', 'PHPStan\\Rules\\Properties\\AccessStaticPropertiesRule' => $baseDir . '/src/Rules/Properties/AccessStaticPropertiesRule.php', 'PHPStan\\Rules\\Properties\\DefaultValueTypesAssignedToPropertiesRule' => $baseDir . '/src/Rules/Properties/DefaultValueTypesAssignedToPropertiesRule.php', 'PHPStan\\Rules\\Properties\\DirectReadWritePropertiesExtensionProvider' => $baseDir . '/src/Rules/Properties/DirectReadWritePropertiesExtensionProvider.php', 'PHPStan\\Rules\\Properties\\ExistingClassesInPropertiesRule' => $baseDir . '/src/Rules/Properties/ExistingClassesInPropertiesRule.php', 'PHPStan\\Rules\\Properties\\FoundPropertyReflection' => $baseDir . '/src/Rules/Properties/FoundPropertyReflection.php', 'PHPStan\\Rules\\Properties\\InvalidCallablePropertyTypeRule' => $baseDir . '/src/Rules/Properties/InvalidCallablePropertyTypeRule.php', 'PHPStan\\Rules\\Properties\\LazyReadWritePropertiesExtensionProvider' => $baseDir . '/src/Rules/Properties/LazyReadWritePropertiesExtensionProvider.php', 'PHPStan\\Rules\\Properties\\MissingPropertyTypehintRule' => $baseDir . '/src/Rules/Properties/MissingPropertyTypehintRule.php', 'PHPStan\\Rules\\Properties\\MissingReadOnlyByPhpDocPropertyAssignRule' => $baseDir . '/src/Rules/Properties/MissingReadOnlyByPhpDocPropertyAssignRule.php', 'PHPStan\\Rules\\Properties\\MissingReadOnlyPropertyAssignRule' => $baseDir . '/src/Rules/Properties/MissingReadOnlyPropertyAssignRule.php', 'PHPStan\\Rules\\Properties\\NullsafePropertyFetchRule' => $baseDir . '/src/Rules/Properties/NullsafePropertyFetchRule.php', 'PHPStan\\Rules\\Properties\\OverridingPropertyRule' => $baseDir . '/src/Rules/Properties/OverridingPropertyRule.php', 'PHPStan\\Rules\\Properties\\PropertiesInInterfaceRule' => $baseDir . '/src/Rules/Properties/PropertiesInInterfaceRule.php', 'PHPStan\\Rules\\Properties\\PropertyAttributesRule' => $baseDir . '/src/Rules/Properties/PropertyAttributesRule.php', 'PHPStan\\Rules\\Properties\\PropertyDescriptor' => $baseDir . '/src/Rules/Properties/PropertyDescriptor.php', 'PHPStan\\Rules\\Properties\\PropertyReflectionFinder' => $baseDir . '/src/Rules/Properties/PropertyReflectionFinder.php', 'PHPStan\\Rules\\Properties\\ReadOnlyByPhpDocPropertyAssignRefRule' => $baseDir . '/src/Rules/Properties/ReadOnlyByPhpDocPropertyAssignRefRule.php', 'PHPStan\\Rules\\Properties\\ReadOnlyByPhpDocPropertyAssignRule' => $baseDir . '/src/Rules/Properties/ReadOnlyByPhpDocPropertyAssignRule.php', 'PHPStan\\Rules\\Properties\\ReadOnlyByPhpDocPropertyRule' => $baseDir . '/src/Rules/Properties/ReadOnlyByPhpDocPropertyRule.php', 'PHPStan\\Rules\\Properties\\ReadOnlyPropertyAssignRefRule' => $baseDir . '/src/Rules/Properties/ReadOnlyPropertyAssignRefRule.php', 'PHPStan\\Rules\\Properties\\ReadOnlyPropertyAssignRule' => $baseDir . '/src/Rules/Properties/ReadOnlyPropertyAssignRule.php', 'PHPStan\\Rules\\Properties\\ReadOnlyPropertyRule' => $baseDir . '/src/Rules/Properties/ReadOnlyPropertyRule.php', 'PHPStan\\Rules\\Properties\\ReadWritePropertiesExtension' => $baseDir . '/src/Rules/Properties/ReadWritePropertiesExtension.php', 'PHPStan\\Rules\\Properties\\ReadWritePropertiesExtensionProvider' => $baseDir . '/src/Rules/Properties/ReadWritePropertiesExtensionProvider.php', 'PHPStan\\Rules\\Properties\\ReadingWriteOnlyPropertiesRule' => $baseDir . '/src/Rules/Properties/ReadingWriteOnlyPropertiesRule.php', 'PHPStan\\Rules\\Properties\\TypesAssignedToPropertiesRule' => $baseDir . '/src/Rules/Properties/TypesAssignedToPropertiesRule.php', 'PHPStan\\Rules\\Properties\\UninitializedPropertyRule' => $baseDir . '/src/Rules/Properties/UninitializedPropertyRule.php', 'PHPStan\\Rules\\Properties\\WritingToReadOnlyPropertiesRule' => $baseDir . '/src/Rules/Properties/WritingToReadOnlyPropertiesRule.php', 'PHPStan\\Rules\\Pure\\FunctionPurityCheck' => $baseDir . '/src/Rules/Pure/FunctionPurityCheck.php', 'PHPStan\\Rules\\Pure\\PureFunctionRule' => $baseDir . '/src/Rules/Pure/PureFunctionRule.php', 'PHPStan\\Rules\\Pure\\PureMethodRule' => $baseDir . '/src/Rules/Pure/PureMethodRule.php', 'PHPStan\\Rules\\Regexp\\RegularExpressionPatternRule' => $baseDir . '/src/Rules/Regexp/RegularExpressionPatternRule.php', 'PHPStan\\Rules\\Regexp\\RegularExpressionQuotingRule' => $baseDir . '/src/Rules/Regexp/RegularExpressionQuotingRule.php', 'PHPStan\\Rules\\Registry' => $baseDir . '/src/Rules/Registry.php', 'PHPStan\\Rules\\Rule' => $baseDir . '/src/Rules/Rule.php', 'PHPStan\\Rules\\RuleError' => $baseDir . '/src/Rules/RuleError.php', 'PHPStan\\Rules\\RuleErrorBuilder' => $baseDir . '/src/Rules/RuleErrorBuilder.php', 'PHPStan\\Rules\\RuleErrors\\RuleError1' => $baseDir . '/src/Rules/RuleErrors/RuleError1.php', 'PHPStan\\Rules\\RuleErrors\\RuleError101' => $baseDir . '/src/Rules/RuleErrors/RuleError101.php', 'PHPStan\\Rules\\RuleErrors\\RuleError103' => $baseDir . '/src/Rules/RuleErrors/RuleError103.php', 'PHPStan\\Rules\\RuleErrors\\RuleError105' => $baseDir . '/src/Rules/RuleErrors/RuleError105.php', 'PHPStan\\Rules\\RuleErrors\\RuleError107' => $baseDir . '/src/Rules/RuleErrors/RuleError107.php', 'PHPStan\\Rules\\RuleErrors\\RuleError109' => $baseDir . '/src/Rules/RuleErrors/RuleError109.php', 'PHPStan\\Rules\\RuleErrors\\RuleError11' => $baseDir . '/src/Rules/RuleErrors/RuleError11.php', 'PHPStan\\Rules\\RuleErrors\\RuleError111' => $baseDir . '/src/Rules/RuleErrors/RuleError111.php', 'PHPStan\\Rules\\RuleErrors\\RuleError113' => $baseDir . '/src/Rules/RuleErrors/RuleError113.php', 'PHPStan\\Rules\\RuleErrors\\RuleError115' => $baseDir . '/src/Rules/RuleErrors/RuleError115.php', 'PHPStan\\Rules\\RuleErrors\\RuleError117' => $baseDir . '/src/Rules/RuleErrors/RuleError117.php', 'PHPStan\\Rules\\RuleErrors\\RuleError119' => $baseDir . '/src/Rules/RuleErrors/RuleError119.php', 'PHPStan\\Rules\\RuleErrors\\RuleError121' => $baseDir . '/src/Rules/RuleErrors/RuleError121.php', 'PHPStan\\Rules\\RuleErrors\\RuleError123' => $baseDir . '/src/Rules/RuleErrors/RuleError123.php', 'PHPStan\\Rules\\RuleErrors\\RuleError125' => $baseDir . '/src/Rules/RuleErrors/RuleError125.php', 'PHPStan\\Rules\\RuleErrors\\RuleError127' => $baseDir . '/src/Rules/RuleErrors/RuleError127.php', 'PHPStan\\Rules\\RuleErrors\\RuleError13' => $baseDir . '/src/Rules/RuleErrors/RuleError13.php', 'PHPStan\\Rules\\RuleErrors\\RuleError15' => $baseDir . '/src/Rules/RuleErrors/RuleError15.php', 'PHPStan\\Rules\\RuleErrors\\RuleError17' => $baseDir . '/src/Rules/RuleErrors/RuleError17.php', 'PHPStan\\Rules\\RuleErrors\\RuleError19' => $baseDir . '/src/Rules/RuleErrors/RuleError19.php', 'PHPStan\\Rules\\RuleErrors\\RuleError21' => $baseDir . '/src/Rules/RuleErrors/RuleError21.php', 'PHPStan\\Rules\\RuleErrors\\RuleError23' => $baseDir . '/src/Rules/RuleErrors/RuleError23.php', 'PHPStan\\Rules\\RuleErrors\\RuleError25' => $baseDir . '/src/Rules/RuleErrors/RuleError25.php', 'PHPStan\\Rules\\RuleErrors\\RuleError27' => $baseDir . '/src/Rules/RuleErrors/RuleError27.php', 'PHPStan\\Rules\\RuleErrors\\RuleError29' => $baseDir . '/src/Rules/RuleErrors/RuleError29.php', 'PHPStan\\Rules\\RuleErrors\\RuleError3' => $baseDir . '/src/Rules/RuleErrors/RuleError3.php', 'PHPStan\\Rules\\RuleErrors\\RuleError31' => $baseDir . '/src/Rules/RuleErrors/RuleError31.php', 'PHPStan\\Rules\\RuleErrors\\RuleError33' => $baseDir . '/src/Rules/RuleErrors/RuleError33.php', 'PHPStan\\Rules\\RuleErrors\\RuleError35' => $baseDir . '/src/Rules/RuleErrors/RuleError35.php', 'PHPStan\\Rules\\RuleErrors\\RuleError37' => $baseDir . '/src/Rules/RuleErrors/RuleError37.php', 'PHPStan\\Rules\\RuleErrors\\RuleError39' => $baseDir . '/src/Rules/RuleErrors/RuleError39.php', 'PHPStan\\Rules\\RuleErrors\\RuleError41' => $baseDir . '/src/Rules/RuleErrors/RuleError41.php', 'PHPStan\\Rules\\RuleErrors\\RuleError43' => $baseDir . '/src/Rules/RuleErrors/RuleError43.php', 'PHPStan\\Rules\\RuleErrors\\RuleError45' => $baseDir . '/src/Rules/RuleErrors/RuleError45.php', 'PHPStan\\Rules\\RuleErrors\\RuleError47' => $baseDir . '/src/Rules/RuleErrors/RuleError47.php', 'PHPStan\\Rules\\RuleErrors\\RuleError49' => $baseDir . '/src/Rules/RuleErrors/RuleError49.php', 'PHPStan\\Rules\\RuleErrors\\RuleError5' => $baseDir . '/src/Rules/RuleErrors/RuleError5.php', 'PHPStan\\Rules\\RuleErrors\\RuleError51' => $baseDir . '/src/Rules/RuleErrors/RuleError51.php', 'PHPStan\\Rules\\RuleErrors\\RuleError53' => $baseDir . '/src/Rules/RuleErrors/RuleError53.php', 'PHPStan\\Rules\\RuleErrors\\RuleError55' => $baseDir . '/src/Rules/RuleErrors/RuleError55.php', 'PHPStan\\Rules\\RuleErrors\\RuleError57' => $baseDir . '/src/Rules/RuleErrors/RuleError57.php', 'PHPStan\\Rules\\RuleErrors\\RuleError59' => $baseDir . '/src/Rules/RuleErrors/RuleError59.php', 'PHPStan\\Rules\\RuleErrors\\RuleError61' => $baseDir . '/src/Rules/RuleErrors/RuleError61.php', 'PHPStan\\Rules\\RuleErrors\\RuleError63' => $baseDir . '/src/Rules/RuleErrors/RuleError63.php', 'PHPStan\\Rules\\RuleErrors\\RuleError65' => $baseDir . '/src/Rules/RuleErrors/RuleError65.php', 'PHPStan\\Rules\\RuleErrors\\RuleError67' => $baseDir . '/src/Rules/RuleErrors/RuleError67.php', 'PHPStan\\Rules\\RuleErrors\\RuleError69' => $baseDir . '/src/Rules/RuleErrors/RuleError69.php', 'PHPStan\\Rules\\RuleErrors\\RuleError7' => $baseDir . '/src/Rules/RuleErrors/RuleError7.php', 'PHPStan\\Rules\\RuleErrors\\RuleError71' => $baseDir . '/src/Rules/RuleErrors/RuleError71.php', 'PHPStan\\Rules\\RuleErrors\\RuleError73' => $baseDir . '/src/Rules/RuleErrors/RuleError73.php', 'PHPStan\\Rules\\RuleErrors\\RuleError75' => $baseDir . '/src/Rules/RuleErrors/RuleError75.php', 'PHPStan\\Rules\\RuleErrors\\RuleError77' => $baseDir . '/src/Rules/RuleErrors/RuleError77.php', 'PHPStan\\Rules\\RuleErrors\\RuleError79' => $baseDir . '/src/Rules/RuleErrors/RuleError79.php', 'PHPStan\\Rules\\RuleErrors\\RuleError81' => $baseDir . '/src/Rules/RuleErrors/RuleError81.php', 'PHPStan\\Rules\\RuleErrors\\RuleError83' => $baseDir . '/src/Rules/RuleErrors/RuleError83.php', 'PHPStan\\Rules\\RuleErrors\\RuleError85' => $baseDir . '/src/Rules/RuleErrors/RuleError85.php', 'PHPStan\\Rules\\RuleErrors\\RuleError87' => $baseDir . '/src/Rules/RuleErrors/RuleError87.php', 'PHPStan\\Rules\\RuleErrors\\RuleError89' => $baseDir . '/src/Rules/RuleErrors/RuleError89.php', 'PHPStan\\Rules\\RuleErrors\\RuleError9' => $baseDir . '/src/Rules/RuleErrors/RuleError9.php', 'PHPStan\\Rules\\RuleErrors\\RuleError91' => $baseDir . '/src/Rules/RuleErrors/RuleError91.php', 'PHPStan\\Rules\\RuleErrors\\RuleError93' => $baseDir . '/src/Rules/RuleErrors/RuleError93.php', 'PHPStan\\Rules\\RuleErrors\\RuleError95' => $baseDir . '/src/Rules/RuleErrors/RuleError95.php', 'PHPStan\\Rules\\RuleErrors\\RuleError97' => $baseDir . '/src/Rules/RuleErrors/RuleError97.php', 'PHPStan\\Rules\\RuleErrors\\RuleError99' => $baseDir . '/src/Rules/RuleErrors/RuleError99.php', 'PHPStan\\Rules\\RuleLevelHelper' => $baseDir . '/src/Rules/RuleLevelHelper.php', 'PHPStan\\Rules\\RuleLevelHelperAcceptsResult' => $baseDir . '/src/Rules/RuleLevelHelperAcceptsResult.php', 'PHPStan\\Rules\\TipRuleError' => $baseDir . '/src/Rules/TipRuleError.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideArrowFunctionReturnTypehintRule' => $baseDir . '/src/Rules/TooWideTypehints/TooWideArrowFunctionReturnTypehintRule.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideClosureReturnTypehintRule' => $baseDir . '/src/Rules/TooWideTypehints/TooWideClosureReturnTypehintRule.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideFunctionParameterOutTypeRule' => $baseDir . '/src/Rules/TooWideTypehints/TooWideFunctionParameterOutTypeRule.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideFunctionReturnTypehintRule' => $baseDir . '/src/Rules/TooWideTypehints/TooWideFunctionReturnTypehintRule.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideMethodParameterOutTypeRule' => $baseDir . '/src/Rules/TooWideTypehints/TooWideMethodParameterOutTypeRule.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideMethodReturnTypehintRule' => $baseDir . '/src/Rules/TooWideTypehints/TooWideMethodReturnTypehintRule.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWideParameterOutTypeCheck' => $baseDir . '/src/Rules/TooWideTypehints/TooWideParameterOutTypeCheck.php', 'PHPStan\\Rules\\TooWideTypehints\\TooWidePropertyTypeRule' => $baseDir . '/src/Rules/TooWideTypehints/TooWidePropertyTypeRule.php', 'PHPStan\\Rules\\Traits\\ConflictingTraitConstantsRule' => $baseDir . '/src/Rules/Traits/ConflictingTraitConstantsRule.php', 'PHPStan\\Rules\\Traits\\ConstantsInTraitsRule' => $baseDir . '/src/Rules/Traits/ConstantsInTraitsRule.php', 'PHPStan\\Rules\\Traits\\NotAnalysedTraitRule' => $baseDir . '/src/Rules/Traits/NotAnalysedTraitRule.php', 'PHPStan\\Rules\\Traits\\TraitDeclarationCollector' => $baseDir . '/src/Rules/Traits/TraitDeclarationCollector.php', 'PHPStan\\Rules\\Traits\\TraitUseCollector' => $baseDir . '/src/Rules/Traits/TraitUseCollector.php', 'PHPStan\\Rules\\Types\\InvalidTypesInUnionRule' => $baseDir . '/src/Rules/Types/InvalidTypesInUnionRule.php', 'PHPStan\\Rules\\UnusedFunctionParametersCheck' => $baseDir . '/src/Rules/UnusedFunctionParametersCheck.php', 'PHPStan\\Rules\\Variables\\CompactVariablesRule' => $baseDir . '/src/Rules/Variables/CompactVariablesRule.php', 'PHPStan\\Rules\\Variables\\DefinedVariableRule' => $baseDir . '/src/Rules/Variables/DefinedVariableRule.php', 'PHPStan\\Rules\\Variables\\EmptyRule' => $baseDir . '/src/Rules/Variables/EmptyRule.php', 'PHPStan\\Rules\\Variables\\IssetRule' => $baseDir . '/src/Rules/Variables/IssetRule.php', 'PHPStan\\Rules\\Variables\\NullCoalesceRule' => $baseDir . '/src/Rules/Variables/NullCoalesceRule.php', 'PHPStan\\Rules\\Variables\\ParameterOutAssignedTypeRule' => $baseDir . '/src/Rules/Variables/ParameterOutAssignedTypeRule.php', 'PHPStan\\Rules\\Variables\\ParameterOutExecutionEndTypeRule' => $baseDir . '/src/Rules/Variables/ParameterOutExecutionEndTypeRule.php', 'PHPStan\\Rules\\Variables\\ThrowTypeRule' => $baseDir . '/src/Rules/Variables/ThrowTypeRule.php', 'PHPStan\\Rules\\Variables\\UnsetRule' => $baseDir . '/src/Rules/Variables/UnsetRule.php', 'PHPStan\\Rules\\Variables\\VariableCloningRule' => $baseDir . '/src/Rules/Variables/VariableCloningRule.php', 'PHPStan\\Rules\\Whitespace\\FileWhitespaceRule' => $baseDir . '/src/Rules/Whitespace/FileWhitespaceRule.php', 'PHPStan\\ShouldNotHappenException' => $baseDir . '/src/ShouldNotHappenException.php', 'PHPStan\\Testing\\ErrorFormatterTestCase' => $baseDir . '/src/Testing/ErrorFormatterTestCase.php', 'PHPStan\\Testing\\LevelsTestCase' => $baseDir . '/src/Testing/LevelsTestCase.php', 'PHPStan\\Testing\\PHPStanTestCase' => $baseDir . '/src/Testing/PHPStanTestCase.php', 'PHPStan\\Testing\\RuleTestCase' => $baseDir . '/src/Testing/RuleTestCase.php', 'PHPStan\\Testing\\TestCaseSourceLocatorFactory' => $baseDir . '/src/Testing/TestCaseSourceLocatorFactory.php', 'PHPStan\\Testing\\TypeInferenceTestCase' => $baseDir . '/src/Testing/TypeInferenceTestCase.php', 'PHPStan\\TrinaryLogic' => $baseDir . '/src/TrinaryLogic.php', 'PHPStan\\Type\\AcceptsResult' => $baseDir . '/src/Type/AcceptsResult.php', 'PHPStan\\Type\\Accessory\\AccessoryArrayListType' => $baseDir . '/src/Type/Accessory/AccessoryArrayListType.php', 'PHPStan\\Type\\Accessory\\AccessoryLiteralStringType' => $baseDir . '/src/Type/Accessory/AccessoryLiteralStringType.php', 'PHPStan\\Type\\Accessory\\AccessoryLowercaseStringType' => $baseDir . '/src/Type/Accessory/AccessoryLowercaseStringType.php', 'PHPStan\\Type\\Accessory\\AccessoryNonEmptyStringType' => $baseDir . '/src/Type/Accessory/AccessoryNonEmptyStringType.php', 'PHPStan\\Type\\Accessory\\AccessoryNonFalsyStringType' => $baseDir . '/src/Type/Accessory/AccessoryNonFalsyStringType.php', 'PHPStan\\Type\\Accessory\\AccessoryNumericStringType' => $baseDir . '/src/Type/Accessory/AccessoryNumericStringType.php', 'PHPStan\\Type\\Accessory\\AccessoryType' => $baseDir . '/src/Type/Accessory/AccessoryType.php', 'PHPStan\\Type\\Accessory\\AccessoryUppercaseStringType' => $baseDir . '/src/Type/Accessory/AccessoryUppercaseStringType.php', 'PHPStan\\Type\\Accessory\\HasMethodType' => $baseDir . '/src/Type/Accessory/HasMethodType.php', 'PHPStan\\Type\\Accessory\\HasOffsetType' => $baseDir . '/src/Type/Accessory/HasOffsetType.php', 'PHPStan\\Type\\Accessory\\HasOffsetValueType' => $baseDir . '/src/Type/Accessory/HasOffsetValueType.php', 'PHPStan\\Type\\Accessory\\HasPropertyType' => $baseDir . '/src/Type/Accessory/HasPropertyType.php', 'PHPStan\\Type\\Accessory\\NonEmptyArrayType' => $baseDir . '/src/Type/Accessory/NonEmptyArrayType.php', 'PHPStan\\Type\\Accessory\\OversizedArrayType' => $baseDir . '/src/Type/Accessory/OversizedArrayType.php', 'PHPStan\\Type\\ArrayType' => $baseDir . '/src/Type/ArrayType.php', 'PHPStan\\Type\\BenevolentUnionType' => $baseDir . '/src/Type/BenevolentUnionType.php', 'PHPStan\\Type\\BitwiseFlagHelper' => $baseDir . '/src/Type/BitwiseFlagHelper.php', 'PHPStan\\Type\\BooleanType' => $baseDir . '/src/Type/BooleanType.php', 'PHPStan\\Type\\CallableType' => $baseDir . '/src/Type/CallableType.php', 'PHPStan\\Type\\CallableTypeHelper' => $baseDir . '/src/Type/CallableTypeHelper.php', 'PHPStan\\Type\\CircularTypeAliasDefinitionException' => $baseDir . '/src/Type/CircularTypeAliasDefinitionException.php', 'PHPStan\\Type\\CircularTypeAliasErrorType' => $baseDir . '/src/Type/CircularTypeAliasErrorType.php', 'PHPStan\\Type\\ClassStringType' => $baseDir . '/src/Type/ClassStringType.php', 'PHPStan\\Type\\ClosureType' => $baseDir . '/src/Type/ClosureType.php', 'PHPStan\\Type\\ClosureTypeFactory' => $baseDir . '/src/Type/ClosureTypeFactory.php', 'PHPStan\\Type\\CompoundType' => $baseDir . '/src/Type/CompoundType.php', 'PHPStan\\Type\\ConditionalType' => $baseDir . '/src/Type/ConditionalType.php', 'PHPStan\\Type\\ConditionalTypeForParameter' => $baseDir . '/src/Type/ConditionalTypeForParameter.php', 'PHPStan\\Type\\ConstantScalarType' => $baseDir . '/src/Type/ConstantScalarType.php', 'PHPStan\\Type\\ConstantType' => $baseDir . '/src/Type/ConstantType.php', 'PHPStan\\Type\\ConstantTypeHelper' => $baseDir . '/src/Type/ConstantTypeHelper.php', 'PHPStan\\Type\\Constant\\ConstantArrayType' => $baseDir . '/src/Type/Constant/ConstantArrayType.php', 'PHPStan\\Type\\Constant\\ConstantArrayTypeAndMethod' => $baseDir . '/src/Type/Constant/ConstantArrayTypeAndMethod.php', 'PHPStan\\Type\\Constant\\ConstantArrayTypeBuilder' => $baseDir . '/src/Type/Constant/ConstantArrayTypeBuilder.php', 'PHPStan\\Type\\Constant\\ConstantBooleanType' => $baseDir . '/src/Type/Constant/ConstantBooleanType.php', 'PHPStan\\Type\\Constant\\ConstantFloatType' => $baseDir . '/src/Type/Constant/ConstantFloatType.php', 'PHPStan\\Type\\Constant\\ConstantIntegerType' => $baseDir . '/src/Type/Constant/ConstantIntegerType.php', 'PHPStan\\Type\\Constant\\ConstantScalarToBooleanTrait' => $baseDir . '/src/Type/Constant/ConstantScalarToBooleanTrait.php', 'PHPStan\\Type\\Constant\\ConstantStringType' => $baseDir . '/src/Type/Constant/ConstantStringType.php', 'PHPStan\\Type\\Constant\\OversizedArrayBuilder' => $baseDir . '/src/Type/Constant/OversizedArrayBuilder.php', 'PHPStan\\Type\\DirectTypeAliasResolverProvider' => $baseDir . '/src/Type/DirectTypeAliasResolverProvider.php', 'PHPStan\\Type\\DynamicFunctionReturnTypeExtension' => $baseDir . '/src/Type/DynamicFunctionReturnTypeExtension.php', 'PHPStan\\Type\\DynamicFunctionThrowTypeExtension' => $baseDir . '/src/Type/DynamicFunctionThrowTypeExtension.php', 'PHPStan\\Type\\DynamicMethodReturnTypeExtension' => $baseDir . '/src/Type/DynamicMethodReturnTypeExtension.php', 'PHPStan\\Type\\DynamicMethodThrowTypeExtension' => $baseDir . '/src/Type/DynamicMethodThrowTypeExtension.php', 'PHPStan\\Type\\DynamicReturnTypeExtensionRegistry' => $baseDir . '/src/Type/DynamicReturnTypeExtensionRegistry.php', 'PHPStan\\Type\\DynamicStaticMethodReturnTypeExtension' => $baseDir . '/src/Type/DynamicStaticMethodReturnTypeExtension.php', 'PHPStan\\Type\\DynamicStaticMethodThrowTypeExtension' => $baseDir . '/src/Type/DynamicStaticMethodThrowTypeExtension.php', 'PHPStan\\Type\\Enum\\EnumCaseObjectType' => $baseDir . '/src/Type/Enum/EnumCaseObjectType.php', 'PHPStan\\Type\\ErrorType' => $baseDir . '/src/Type/ErrorType.php', 'PHPStan\\Type\\ExponentiateHelper' => $baseDir . '/src/Type/ExponentiateHelper.php', 'PHPStan\\Type\\ExpressionTypeResolverExtension' => $baseDir . '/src/Type/ExpressionTypeResolverExtension.php', 'PHPStan\\Type\\ExpressionTypeResolverExtensionRegistry' => $baseDir . '/src/Type/ExpressionTypeResolverExtensionRegistry.php', 'PHPStan\\Type\\FileTypeMapper' => $baseDir . '/src/Type/FileTypeMapper.php', 'PHPStan\\Type\\FloatType' => $baseDir . '/src/Type/FloatType.php', 'PHPStan\\Type\\FunctionParameterClosureTypeExtension' => $baseDir . '/src/Type/FunctionParameterClosureTypeExtension.php', 'PHPStan\\Type\\FunctionParameterOutTypeExtension' => $baseDir . '/src/Type/FunctionParameterOutTypeExtension.php', 'PHPStan\\Type\\FunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/FunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\GeneralizePrecision' => $baseDir . '/src/Type/GeneralizePrecision.php', 'PHPStan\\Type\\GenericTypeVariableResolver' => $baseDir . '/src/Type/GenericTypeVariableResolver.php', 'PHPStan\\Type\\Generic\\GenericClassStringType' => $baseDir . '/src/Type/Generic/GenericClassStringType.php', 'PHPStan\\Type\\Generic\\GenericObjectType' => $baseDir . '/src/Type/Generic/GenericObjectType.php', 'PHPStan\\Type\\Generic\\GenericStaticType' => $baseDir . '/src/Type/Generic/GenericStaticType.php', 'PHPStan\\Type\\Generic\\TemplateArrayType' => $baseDir . '/src/Type/Generic/TemplateArrayType.php', 'PHPStan\\Type\\Generic\\TemplateBenevolentUnionType' => $baseDir . '/src/Type/Generic/TemplateBenevolentUnionType.php', 'PHPStan\\Type\\Generic\\TemplateBooleanType' => $baseDir . '/src/Type/Generic/TemplateBooleanType.php', 'PHPStan\\Type\\Generic\\TemplateConstantArrayType' => $baseDir . '/src/Type/Generic/TemplateConstantArrayType.php', 'PHPStan\\Type\\Generic\\TemplateConstantIntegerType' => $baseDir . '/src/Type/Generic/TemplateConstantIntegerType.php', 'PHPStan\\Type\\Generic\\TemplateConstantStringType' => $baseDir . '/src/Type/Generic/TemplateConstantStringType.php', 'PHPStan\\Type\\Generic\\TemplateFloatType' => $baseDir . '/src/Type/Generic/TemplateFloatType.php', 'PHPStan\\Type\\Generic\\TemplateGenericObjectType' => $baseDir . '/src/Type/Generic/TemplateGenericObjectType.php', 'PHPStan\\Type\\Generic\\TemplateIntegerType' => $baseDir . '/src/Type/Generic/TemplateIntegerType.php', 'PHPStan\\Type\\Generic\\TemplateIntersectionType' => $baseDir . '/src/Type/Generic/TemplateIntersectionType.php', 'PHPStan\\Type\\Generic\\TemplateIterableType' => $baseDir . '/src/Type/Generic/TemplateIterableType.php', 'PHPStan\\Type\\Generic\\TemplateKeyOfType' => $baseDir . '/src/Type/Generic/TemplateKeyOfType.php', 'PHPStan\\Type\\Generic\\TemplateMixedType' => $baseDir . '/src/Type/Generic/TemplateMixedType.php', 'PHPStan\\Type\\Generic\\TemplateObjectShapeType' => $baseDir . '/src/Type/Generic/TemplateObjectShapeType.php', 'PHPStan\\Type\\Generic\\TemplateObjectType' => $baseDir . '/src/Type/Generic/TemplateObjectType.php', 'PHPStan\\Type\\Generic\\TemplateObjectWithoutClassType' => $baseDir . '/src/Type/Generic/TemplateObjectWithoutClassType.php', 'PHPStan\\Type\\Generic\\TemplateStrictMixedType' => $baseDir . '/src/Type/Generic/TemplateStrictMixedType.php', 'PHPStan\\Type\\Generic\\TemplateStringType' => $baseDir . '/src/Type/Generic/TemplateStringType.php', 'PHPStan\\Type\\Generic\\TemplateType' => $baseDir . '/src/Type/Generic/TemplateType.php', 'PHPStan\\Type\\Generic\\TemplateTypeArgumentStrategy' => $baseDir . '/src/Type/Generic/TemplateTypeArgumentStrategy.php', 'PHPStan\\Type\\Generic\\TemplateTypeFactory' => $baseDir . '/src/Type/Generic/TemplateTypeFactory.php', 'PHPStan\\Type\\Generic\\TemplateTypeHelper' => $baseDir . '/src/Type/Generic/TemplateTypeHelper.php', 'PHPStan\\Type\\Generic\\TemplateTypeMap' => $baseDir . '/src/Type/Generic/TemplateTypeMap.php', 'PHPStan\\Type\\Generic\\TemplateTypeParameterStrategy' => $baseDir . '/src/Type/Generic/TemplateTypeParameterStrategy.php', 'PHPStan\\Type\\Generic\\TemplateTypeReference' => $baseDir . '/src/Type/Generic/TemplateTypeReference.php', 'PHPStan\\Type\\Generic\\TemplateTypeScope' => $baseDir . '/src/Type/Generic/TemplateTypeScope.php', 'PHPStan\\Type\\Generic\\TemplateTypeStrategy' => $baseDir . '/src/Type/Generic/TemplateTypeStrategy.php', 'PHPStan\\Type\\Generic\\TemplateTypeTrait' => $baseDir . '/src/Type/Generic/TemplateTypeTrait.php', 'PHPStan\\Type\\Generic\\TemplateTypeVariance' => $baseDir . '/src/Type/Generic/TemplateTypeVariance.php', 'PHPStan\\Type\\Generic\\TemplateTypeVarianceMap' => $baseDir . '/src/Type/Generic/TemplateTypeVarianceMap.php', 'PHPStan\\Type\\Generic\\TemplateUnionType' => $baseDir . '/src/Type/Generic/TemplateUnionType.php', 'PHPStan\\Type\\Generic\\TypeProjectionHelper' => $baseDir . '/src/Type/Generic/TypeProjectionHelper.php', 'PHPStan\\Type\\Helper\\GetTemplateTypeType' => $baseDir . '/src/Type/Helper/GetTemplateTypeType.php', 'PHPStan\\Type\\IntegerRangeType' => $baseDir . '/src/Type/IntegerRangeType.php', 'PHPStan\\Type\\IntegerType' => $baseDir . '/src/Type/IntegerType.php', 'PHPStan\\Type\\IntersectionType' => $baseDir . '/src/Type/IntersectionType.php', 'PHPStan\\Type\\IsSuperTypeOfResult' => $baseDir . '/src/Type/IsSuperTypeOfResult.php', 'PHPStan\\Type\\IterableType' => $baseDir . '/src/Type/IterableType.php', 'PHPStan\\Type\\JustNullableTypeTrait' => $baseDir . '/src/Type/JustNullableTypeTrait.php', 'PHPStan\\Type\\KeyOfType' => $baseDir . '/src/Type/KeyOfType.php', 'PHPStan\\Type\\LateResolvableType' => $baseDir . '/src/Type/LateResolvableType.php', 'PHPStan\\Type\\LazyTypeAliasResolverProvider' => $baseDir . '/src/Type/LazyTypeAliasResolverProvider.php', 'PHPStan\\Type\\LooseComparisonHelper' => $baseDir . '/src/Type/LooseComparisonHelper.php', 'PHPStan\\Type\\MethodParameterClosureTypeExtension' => $baseDir . '/src/Type/MethodParameterClosureTypeExtension.php', 'PHPStan\\Type\\MethodParameterOutTypeExtension' => $baseDir . '/src/Type/MethodParameterOutTypeExtension.php', 'PHPStan\\Type\\MethodTypeSpecifyingExtension' => $baseDir . '/src/Type/MethodTypeSpecifyingExtension.php', 'PHPStan\\Type\\MixedType' => $baseDir . '/src/Type/MixedType.php', 'PHPStan\\Type\\NeverType' => $baseDir . '/src/Type/NeverType.php', 'PHPStan\\Type\\NewObjectType' => $baseDir . '/src/Type/NewObjectType.php', 'PHPStan\\Type\\NonAcceptingNeverType' => $baseDir . '/src/Type/NonAcceptingNeverType.php', 'PHPStan\\Type\\NonexistentParentClassType' => $baseDir . '/src/Type/NonexistentParentClassType.php', 'PHPStan\\Type\\NullType' => $baseDir . '/src/Type/NullType.php', 'PHPStan\\Type\\ObjectShapePropertyReflection' => $baseDir . '/src/Type/ObjectShapePropertyReflection.php', 'PHPStan\\Type\\ObjectShapeType' => $baseDir . '/src/Type/ObjectShapeType.php', 'PHPStan\\Type\\ObjectType' => $baseDir . '/src/Type/ObjectType.php', 'PHPStan\\Type\\ObjectWithoutClassType' => $baseDir . '/src/Type/ObjectWithoutClassType.php', 'PHPStan\\Type\\OffsetAccessType' => $baseDir . '/src/Type/OffsetAccessType.php', 'PHPStan\\Type\\OperatorTypeSpecifyingExtension' => $baseDir . '/src/Type/OperatorTypeSpecifyingExtension.php', 'PHPStan\\Type\\OperatorTypeSpecifyingExtensionRegistry' => $baseDir . '/src/Type/OperatorTypeSpecifyingExtensionRegistry.php', 'PHPStan\\Type\\ParserNodeTypeToPHPStanType' => $baseDir . '/src/Type/ParserNodeTypeToPHPStanType.php', 'PHPStan\\Type\\Php\\AbsFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/AbsFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArgumentBasedFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArgumentBasedFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayChangeKeyCaseFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayChangeKeyCaseFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayChunkFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayChunkFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayColumnFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayColumnFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayCombineFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayCombineFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayCurrentDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayCurrentDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayFillFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayFillFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayFillKeysFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayFillKeysFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayFilterFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayFilterFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayFilterFunctionReturnTypeHelper' => $baseDir . '/src/Type/Php/ArrayFilterFunctionReturnTypeHelper.php', 'PHPStan\\Type\\Php\\ArrayFindFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayFindFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayFindKeyFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayFindKeyFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayFlipFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayFlipFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayIntersectKeyFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayIntersectKeyFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayKeyDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayKeyDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayKeyExistsFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/ArrayKeyExistsFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\ArrayKeyFirstDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayKeyFirstDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayKeyLastDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayKeyLastDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayKeysFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayKeysFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayMapFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayMapFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayMergeFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayMergeFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayNextDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayNextDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayPointerFunctionsDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayPointerFunctionsDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayPopFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayPopFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayRandFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayRandFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayReduceFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayReduceFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayReplaceFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayReplaceFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayReverseFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayReverseFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArraySearchFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ArraySearchFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArraySearchFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/ArraySearchFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\ArrayShiftFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayShiftFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArraySliceFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArraySliceFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArraySpliceFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ArraySpliceFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArraySumFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ArraySumFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ArrayValuesFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ArrayValuesFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\AssertFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/AssertFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\AssertThrowTypeExtension' => $baseDir . '/src/Type/Php/AssertThrowTypeExtension.php', 'PHPStan\\Type\\Php\\BackedEnumFromMethodDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/BackedEnumFromMethodDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\Base64DecodeDynamicFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/Base64DecodeDynamicFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\BcMathStringOrNullReturnTypeExtension' => $baseDir . '/src/Type/Php/BcMathStringOrNullReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ClassExistsFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/ClassExistsFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\ClassImplementsFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ClassImplementsFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ClosureBindDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ClosureBindDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ClosureBindToDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ClosureBindToDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ClosureFromCallableDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ClosureFromCallableDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\CompactFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/CompactFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ConstantFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ConstantFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ConstantHelper' => $baseDir . '/src/Type/Php/ConstantHelper.php', 'PHPStan\\Type\\Php\\CountFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/CountFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\CountFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/CountFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\CtypeDigitFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/CtypeDigitFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\CurlGetinfoFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/CurlGetinfoFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateFormatFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/DateFormatFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateFormatMethodReturnTypeExtension' => $baseDir . '/src/Type/Php/DateFormatMethodReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/DateFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateFunctionReturnTypeHelper' => $baseDir . '/src/Type/Php/DateFunctionReturnTypeHelper.php', 'PHPStan\\Type\\Php\\DateIntervalConstructorThrowTypeExtension' => $baseDir . '/src/Type/Php/DateIntervalConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\DateIntervalDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/DateIntervalDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DatePeriodConstructorReturnTypeExtension' => $baseDir . '/src/Type/Php/DatePeriodConstructorReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeConstructorThrowTypeExtension' => $baseDir . '/src/Type/Php/DateTimeConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeCreateDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/DateTimeCreateDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/DateTimeDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeModifyMethodThrowTypeExtension' => $baseDir . '/src/Type/Php/DateTimeModifyMethodThrowTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeModifyReturnTypeExtension' => $baseDir . '/src/Type/Php/DateTimeModifyReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeSubMethodThrowTypeExtension' => $baseDir . '/src/Type/Php/DateTimeSubMethodThrowTypeExtension.php', 'PHPStan\\Type\\Php\\DateTimeZoneConstructorThrowTypeExtension' => $baseDir . '/src/Type/Php/DateTimeZoneConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\DefineConstantTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/DefineConstantTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\DefinedConstantTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/DefinedConstantTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\DioStatDynamicFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/DioStatDynamicFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\DsMapDynamicMethodThrowTypeExtension' => $baseDir . '/src/Type/Php/DsMapDynamicMethodThrowTypeExtension.php', 'PHPStan\\Type\\Php\\DsMapDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/DsMapDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ExplodeFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ExplodeFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\FilterFunctionReturnTypeHelper' => $baseDir . '/src/Type/Php/FilterFunctionReturnTypeHelper.php', 'PHPStan\\Type\\Php\\FilterInputDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/FilterInputDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\FilterVarArrayDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/FilterVarArrayDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\FilterVarDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/FilterVarDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\FunctionExistsFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/FunctionExistsFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\GetCalledClassDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/GetCalledClassDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\GetClassDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/GetClassDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\GetDebugTypeFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/GetDebugTypeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\GetDefinedVarsFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/GetDefinedVarsFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\GetParentClassDynamicFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/GetParentClassDynamicFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\GettimeofdayDynamicFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/GettimeofdayDynamicFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\GettypeFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/GettypeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\HashFunctionsReturnTypeExtension' => $baseDir . '/src/Type/Php/HashFunctionsReturnTypeExtension.php', 'PHPStan\\Type\\Php\\HighlightStringDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/HighlightStringDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\HrtimeFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/HrtimeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ImplodeFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/ImplodeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\InArrayFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/InArrayFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\IniGetReturnTypeExtension' => $baseDir . '/src/Type/Php/IniGetReturnTypeExtension.php', 'PHPStan\\Type\\Php\\IntdivThrowTypeExtension' => $baseDir . '/src/Type/Php/IntdivThrowTypeExtension.php', 'PHPStan\\Type\\Php\\IsAFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/IsAFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\IsAFunctionTypeSpecifyingHelper' => $baseDir . '/src/Type/Php/IsAFunctionTypeSpecifyingHelper.php', 'PHPStan\\Type\\Php\\IsArrayFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/IsArrayFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\IsCallableFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/IsCallableFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\IsIterableFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/IsIterableFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\IsSubclassOfFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/IsSubclassOfFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\IteratorToArrayFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/IteratorToArrayFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\JsonThrowOnErrorDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/JsonThrowOnErrorDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\JsonThrowTypeExtension' => $baseDir . '/src/Type/Php/JsonThrowTypeExtension.php', 'PHPStan\\Type\\Php\\LtrimFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/LtrimFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\MbConvertEncodingFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/MbConvertEncodingFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\MbFunctionsReturnTypeExtension' => $baseDir . '/src/Type/Php/MbFunctionsReturnTypeExtension.php', 'PHPStan\\Type\\Php\\MbFunctionsReturnTypeExtensionTrait' => $baseDir . '/src/Type/Php/MbFunctionsReturnTypeExtensionTrait.php', 'PHPStan\\Type\\Php\\MbStrlenFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/MbStrlenFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\MbSubstituteCharacterDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/MbSubstituteCharacterDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\MethodExistsTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/MethodExistsTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\MicrotimeFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/MicrotimeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\MinMaxFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/MinMaxFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\NonEmptyStringFunctionsReturnTypeExtension' => $baseDir . '/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php', 'PHPStan\\Type\\Php\\NumberFormatFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/NumberFormatFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\OpenSslEncryptParameterOutTypeExtension' => $baseDir . '/src/Type/Php/OpenSslEncryptParameterOutTypeExtension.php', 'PHPStan\\Type\\Php\\ParseStrParameterOutTypeExtension' => $baseDir . '/src/Type/Php/ParseStrParameterOutTypeExtension.php', 'PHPStan\\Type\\Php\\ParseUrlFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ParseUrlFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\PathinfoFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/PathinfoFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\PowFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/PowFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\PregFilterFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/PregFilterFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\PregMatchParameterOutTypeExtension' => $baseDir . '/src/Type/Php/PregMatchParameterOutTypeExtension.php', 'PHPStan\\Type\\Php\\PregMatchTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/PregMatchTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\PregReplaceCallbackClosureTypeExtension' => $baseDir . '/src/Type/Php/PregReplaceCallbackClosureTypeExtension.php', 'PHPStan\\Type\\Php\\PregSplitDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/PregSplitDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\PropertyExistsTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/PropertyExistsTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\RandomIntFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/RandomIntFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\RangeFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/RangeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ReflectionClassConstructorThrowTypeExtension' => $baseDir . '/src/Type/Php/ReflectionClassConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\ReflectionClassIsSubclassOfTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/ReflectionClassIsSubclassOfTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\ReflectionFunctionConstructorThrowTypeExtension' => $baseDir . '/src/Type/Php/ReflectionFunctionConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\ReflectionGetAttributesMethodReturnTypeExtension' => $baseDir . '/src/Type/Php/ReflectionGetAttributesMethodReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ReflectionMethodConstructorThrowTypeExtension' => $baseDir . '/src/Type/Php/ReflectionMethodConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\ReflectionPropertyConstructorThrowTypeExtension' => $baseDir . '/src/Type/Php/ReflectionPropertyConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\RegexArrayShapeMatcher' => $baseDir . '/src/Type/Php/RegexArrayShapeMatcher.php', 'PHPStan\\Type\\Php\\ReplaceFunctionsDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/ReplaceFunctionsDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\RoundFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/RoundFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\SetTypeFunctionTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/SetTypeFunctionTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\SimpleXMLElementAsXMLMethodReturnTypeExtension' => $baseDir . '/src/Type/Php/SimpleXMLElementAsXMLMethodReturnTypeExtension.php', 'PHPStan\\Type\\Php\\SimpleXMLElementClassPropertyReflectionExtension' => $baseDir . '/src/Type/Php/SimpleXMLElementClassPropertyReflectionExtension.php', 'PHPStan\\Type\\Php\\SimpleXMLElementConstructorThrowTypeExtension' => $baseDir . '/src/Type/Php/SimpleXMLElementConstructorThrowTypeExtension.php', 'PHPStan\\Type\\Php\\SimpleXMLElementXpathMethodReturnTypeExtension' => $baseDir . '/src/Type/Php/SimpleXMLElementXpathMethodReturnTypeExtension.php', 'PHPStan\\Type\\Php\\SprintfFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/SprintfFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\SscanfFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/SscanfFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StatDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/StatDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrCaseFunctionsReturnTypeExtension' => $baseDir . '/src/Type/Php/StrCaseFunctionsReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrContainingTypeSpecifyingExtension' => $baseDir . '/src/Type/Php/StrContainingTypeSpecifyingExtension.php', 'PHPStan\\Type\\Php\\StrIncrementDecrementFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/StrIncrementDecrementFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrPadFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/StrPadFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrRepeatFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/StrRepeatFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrSplitFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/StrSplitFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrTokFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/StrTokFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrWordCountFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/StrWordCountFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrlenFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/StrlenFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrrevFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/StrrevFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrtotimeFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/StrtotimeFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\StrvalFamilyFunctionReturnTypeExtension' => $baseDir . '/src/Type/Php/StrvalFamilyFunctionReturnTypeExtension.php', 'PHPStan\\Type\\Php\\SubstrDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/SubstrDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\ThrowableReturnTypeExtension' => $baseDir . '/src/Type/Php/ThrowableReturnTypeExtension.php', 'PHPStan\\Type\\Php\\TriggerErrorDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/TriggerErrorDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\TrimFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/TrimFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\TypeSpecifyingFunctionsDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\VersionCompareFunctionDynamicReturnTypeExtension' => $baseDir . '/src/Type/Php/VersionCompareFunctionDynamicReturnTypeExtension.php', 'PHPStan\\Type\\Php\\XMLReaderOpenReturnTypeExtension' => $baseDir . '/src/Type/Php/XMLReaderOpenReturnTypeExtension.php', 'PHPStan\\Type\\RecursionGuard' => $baseDir . '/src/Type/RecursionGuard.php', 'PHPStan\\Type\\Regex\\RegexAlternation' => $baseDir . '/src/Type/Regex/RegexAlternation.php', 'PHPStan\\Type\\Regex\\RegexAstWalkResult' => $baseDir . '/src/Type/Regex/RegexAstWalkResult.php', 'PHPStan\\Type\\Regex\\RegexCapturingGroup' => $baseDir . '/src/Type/Regex/RegexCapturingGroup.php', 'PHPStan\\Type\\Regex\\RegexExpressionHelper' => $baseDir . '/src/Type/Regex/RegexExpressionHelper.php', 'PHPStan\\Type\\Regex\\RegexGroupParser' => $baseDir . '/src/Type/Regex/RegexGroupParser.php', 'PHPStan\\Type\\Regex\\RegexGroupWalkResult' => $baseDir . '/src/Type/Regex/RegexGroupWalkResult.php', 'PHPStan\\Type\\Regex\\RegexNonCapturingGroup' => $baseDir . '/src/Type/Regex/RegexNonCapturingGroup.php', 'PHPStan\\Type\\ResourceType' => $baseDir . '/src/Type/ResourceType.php', 'PHPStan\\Type\\SimultaneousTypeTraverser' => $baseDir . '/src/Type/SimultaneousTypeTraverser.php', 'PHPStan\\Type\\StaticMethodParameterClosureTypeExtension' => $baseDir . '/src/Type/StaticMethodParameterClosureTypeExtension.php', 'PHPStan\\Type\\StaticMethodParameterOutTypeExtension' => $baseDir . '/src/Type/StaticMethodParameterOutTypeExtension.php', 'PHPStan\\Type\\StaticMethodTypeSpecifyingExtension' => $baseDir . '/src/Type/StaticMethodTypeSpecifyingExtension.php', 'PHPStan\\Type\\StaticType' => $baseDir . '/src/Type/StaticType.php', 'PHPStan\\Type\\StaticTypeFactory' => $baseDir . '/src/Type/StaticTypeFactory.php', 'PHPStan\\Type\\StrictMixedType' => $baseDir . '/src/Type/StrictMixedType.php', 'PHPStan\\Type\\StringAlwaysAcceptingObjectWithToStringType' => $baseDir . '/src/Type/StringAlwaysAcceptingObjectWithToStringType.php', 'PHPStan\\Type\\StringType' => $baseDir . '/src/Type/StringType.php', 'PHPStan\\Type\\SubtractableType' => $baseDir . '/src/Type/SubtractableType.php', 'PHPStan\\Type\\ThisType' => $baseDir . '/src/Type/ThisType.php', 'PHPStan\\Type\\Traits\\ConstantNumericComparisonTypeTrait' => $baseDir . '/src/Type/Traits/ConstantNumericComparisonTypeTrait.php', 'PHPStan\\Type\\Traits\\ConstantScalarTypeTrait' => $baseDir . '/src/Type/Traits/ConstantScalarTypeTrait.php', 'PHPStan\\Type\\Traits\\FalseyBooleanTypeTrait' => $baseDir . '/src/Type/Traits/FalseyBooleanTypeTrait.php', 'PHPStan\\Type\\Traits\\LateResolvableTypeTrait' => $baseDir . '/src/Type/Traits/LateResolvableTypeTrait.php', 'PHPStan\\Type\\Traits\\MaybeArrayTypeTrait' => $baseDir . '/src/Type/Traits/MaybeArrayTypeTrait.php', 'PHPStan\\Type\\Traits\\MaybeCallableTypeTrait' => $baseDir . '/src/Type/Traits/MaybeCallableTypeTrait.php', 'PHPStan\\Type\\Traits\\MaybeIterableTypeTrait' => $baseDir . '/src/Type/Traits/MaybeIterableTypeTrait.php', 'PHPStan\\Type\\Traits\\MaybeObjectTypeTrait' => $baseDir . '/src/Type/Traits/MaybeObjectTypeTrait.php', 'PHPStan\\Type\\Traits\\MaybeOffsetAccessibleTypeTrait' => $baseDir . '/src/Type/Traits/MaybeOffsetAccessibleTypeTrait.php', 'PHPStan\\Type\\Traits\\NonArrayTypeTrait' => $baseDir . '/src/Type/Traits/NonArrayTypeTrait.php', 'PHPStan\\Type\\Traits\\NonCallableTypeTrait' => $baseDir . '/src/Type/Traits/NonCallableTypeTrait.php', 'PHPStan\\Type\\Traits\\NonGeneralizableTypeTrait' => $baseDir . '/src/Type/Traits/NonGeneralizableTypeTrait.php', 'PHPStan\\Type\\Traits\\NonGenericTypeTrait' => $baseDir . '/src/Type/Traits/NonGenericTypeTrait.php', 'PHPStan\\Type\\Traits\\NonIterableTypeTrait' => $baseDir . '/src/Type/Traits/NonIterableTypeTrait.php', 'PHPStan\\Type\\Traits\\NonObjectTypeTrait' => $baseDir . '/src/Type/Traits/NonObjectTypeTrait.php', 'PHPStan\\Type\\Traits\\NonOffsetAccessibleTypeTrait' => $baseDir . '/src/Type/Traits/NonOffsetAccessibleTypeTrait.php', 'PHPStan\\Type\\Traits\\NonRemoveableTypeTrait' => $baseDir . '/src/Type/Traits/NonRemoveableTypeTrait.php', 'PHPStan\\Type\\Traits\\ObjectTypeTrait' => $baseDir . '/src/Type/Traits/ObjectTypeTrait.php', 'PHPStan\\Type\\Traits\\TruthyBooleanTypeTrait' => $baseDir . '/src/Type/Traits/TruthyBooleanTypeTrait.php', 'PHPStan\\Type\\Traits\\UndecidedBooleanTypeTrait' => $baseDir . '/src/Type/Traits/UndecidedBooleanTypeTrait.php', 'PHPStan\\Type\\Traits\\UndecidedComparisonCompoundTypeTrait' => $baseDir . '/src/Type/Traits/UndecidedComparisonCompoundTypeTrait.php', 'PHPStan\\Type\\Traits\\UndecidedComparisonTypeTrait' => $baseDir . '/src/Type/Traits/UndecidedComparisonTypeTrait.php', 'PHPStan\\Type\\Type' => $baseDir . '/src/Type/Type.php', 'PHPStan\\Type\\TypeAlias' => $baseDir . '/src/Type/TypeAlias.php', 'PHPStan\\Type\\TypeAliasResolver' => $baseDir . '/src/Type/TypeAliasResolver.php', 'PHPStan\\Type\\TypeAliasResolverProvider' => $baseDir . '/src/Type/TypeAliasResolverProvider.php', 'PHPStan\\Type\\TypeCombinator' => $baseDir . '/src/Type/TypeCombinator.php', 'PHPStan\\Type\\TypeResult' => $baseDir . '/src/Type/TypeResult.php', 'PHPStan\\Type\\TypeTraverser' => $baseDir . '/src/Type/TypeTraverser.php', 'PHPStan\\Type\\TypeUtils' => $baseDir . '/src/Type/TypeUtils.php', 'PHPStan\\Type\\TypeWithClassName' => $baseDir . '/src/Type/TypeWithClassName.php', 'PHPStan\\Type\\TypehintHelper' => $baseDir . '/src/Type/TypehintHelper.php', 'PHPStan\\Type\\UnionType' => $baseDir . '/src/Type/UnionType.php', 'PHPStan\\Type\\UnionTypeHelper' => $baseDir . '/src/Type/UnionTypeHelper.php', 'PHPStan\\Type\\UsefulTypeAliasResolver' => $baseDir . '/src/Type/UsefulTypeAliasResolver.php', 'PHPStan\\Type\\ValueOfType' => $baseDir . '/src/Type/ValueOfType.php', 'PHPStan\\Type\\VerbosityLevel' => $baseDir . '/src/Type/VerbosityLevel.php', 'PHPStan\\Type\\VoidType' => $baseDir . '/src/Type/VoidType.php', 'PhpParser\\Builder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder.php', 'PhpParser\\BuilderFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php', 'PhpParser\\BuilderHelpers' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php', 'PhpParser\\Builder\\ClassConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php', 'PhpParser\\Builder\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php', 'PhpParser\\Builder\\Declaration' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php', 'PhpParser\\Builder\\EnumCase' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php', 'PhpParser\\Builder\\Enum_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Enum_.php', 'PhpParser\\Builder\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php', 'PhpParser\\Builder\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php', 'PhpParser\\Builder\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php', 'PhpParser\\Builder\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Method.php', 'PhpParser\\Builder\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php', 'PhpParser\\Builder\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Param.php', 'PhpParser\\Builder\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Property.php', 'PhpParser\\Builder\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php', 'PhpParser\\Builder\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php', 'PhpParser\\Builder\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php', 'PhpParser\\Builder\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php', 'PhpParser\\Comment' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment.php', 'PhpParser\\Comment\\Doc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php', 'PhpParser\\ConstExprEvaluationException' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php', 'PhpParser\\ConstExprEvaluator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php', 'PhpParser\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Error.php', 'PhpParser\\ErrorHandler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php', 'PhpParser\\ErrorHandler\\Collecting' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php', 'PhpParser\\ErrorHandler\\Throwing' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php', 'PhpParser\\Internal\\DiffElem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php', 'PhpParser\\Internal\\Differ' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php', 'PhpParser\\Internal\\PrintableNewAnonClassNode' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php', 'PhpParser\\Internal\\TokenStream' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php', 'PhpParser\\JsonDecoder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php', 'PhpParser\\Lexer' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer.php', 'PhpParser\\Lexer\\Emulative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php', 'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\CoaleseEqualTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\EnumTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\ExplicitOctalEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\FlexibleDocStringEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\FnTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', 'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', 'PhpParser\\NameContext' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NameContext.php', 'PhpParser\\Node' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node.php', 'PhpParser\\NodeAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php', 'PhpParser\\NodeDumper' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeDumper.php', 'PhpParser\\NodeFinder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeFinder.php', 'PhpParser\\NodeTraverser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php', 'PhpParser\\NodeTraverserInterface' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php', 'PhpParser\\NodeVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php', 'PhpParser\\NodeVisitorAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php', 'PhpParser\\NodeVisitor\\CloningVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php', 'PhpParser\\NodeVisitor\\FindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php', 'PhpParser\\NodeVisitor\\FirstFindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php', 'PhpParser\\NodeVisitor\\NameResolver' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php', 'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php', 'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php', 'PhpParser\\Node\\Arg' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Arg.php', 'PhpParser\\Node\\Attribute' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php', 'PhpParser\\Node\\AttributeGroup' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php', 'PhpParser\\Node\\ComplexType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/ComplexType.php', 'PhpParser\\Node\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Const_.php', 'PhpParser\\Node\\Expr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr.php', 'PhpParser\\Node\\Expr\\ArrayDimFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php', 'PhpParser\\Node\\Expr\\ArrayItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php', 'PhpParser\\Node\\Expr\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php', 'PhpParser\\Node\\Expr\\ArrowFunction' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php', 'PhpParser\\Node\\Expr\\Assign' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php', 'PhpParser\\Node\\Expr\\AssignOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php', 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php', 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php', 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php', 'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php', 'PhpParser\\Node\\Expr\\AssignOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php', 'PhpParser\\Node\\Expr\\AssignOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php', 'PhpParser\\Node\\Expr\\AssignOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php', 'PhpParser\\Node\\Expr\\AssignOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php', 'PhpParser\\Node\\Expr\\AssignOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php', 'PhpParser\\Node\\Expr\\AssignOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php', 'PhpParser\\Node\\Expr\\AssignOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php', 'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php', 'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php', 'PhpParser\\Node\\Expr\\AssignRef' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php', 'PhpParser\\Node\\Expr\\BinaryOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php', 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php', 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php', 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php', 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php', 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php', 'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php', 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php', 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php', 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php', 'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php', 'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php', 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php', 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php', 'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php', 'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php', 'PhpParser\\Node\\Expr\\BitwiseNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php', 'PhpParser\\Node\\Expr\\BooleanNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php', 'PhpParser\\Node\\Expr\\CallLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php', 'PhpParser\\Node\\Expr\\Cast' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php', 'PhpParser\\Node\\Expr\\Cast\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php', 'PhpParser\\Node\\Expr\\Cast\\Bool_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php', 'PhpParser\\Node\\Expr\\Cast\\Double' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php', 'PhpParser\\Node\\Expr\\Cast\\Int_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php', 'PhpParser\\Node\\Expr\\Cast\\Object_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php', 'PhpParser\\Node\\Expr\\Cast\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php', 'PhpParser\\Node\\Expr\\Cast\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php', 'PhpParser\\Node\\Expr\\ClassConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php', 'PhpParser\\Node\\Expr\\Clone_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php', 'PhpParser\\Node\\Expr\\Closure' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php', 'PhpParser\\Node\\Expr\\ClosureUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php', 'PhpParser\\Node\\Expr\\ConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php', 'PhpParser\\Node\\Expr\\Empty_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php', 'PhpParser\\Node\\Expr\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php', 'PhpParser\\Node\\Expr\\ErrorSuppress' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php', 'PhpParser\\Node\\Expr\\Eval_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php', 'PhpParser\\Node\\Expr\\Exit_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php', 'PhpParser\\Node\\Expr\\FuncCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php', 'PhpParser\\Node\\Expr\\Include_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php', 'PhpParser\\Node\\Expr\\Instanceof_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php', 'PhpParser\\Node\\Expr\\Isset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php', 'PhpParser\\Node\\Expr\\List_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php', 'PhpParser\\Node\\Expr\\Match_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php', 'PhpParser\\Node\\Expr\\MethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php', 'PhpParser\\Node\\Expr\\New_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php', 'PhpParser\\Node\\Expr\\NullsafeMethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php', 'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php', 'PhpParser\\Node\\Expr\\PostDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php', 'PhpParser\\Node\\Expr\\PostInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php', 'PhpParser\\Node\\Expr\\PreDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php', 'PhpParser\\Node\\Expr\\PreInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php', 'PhpParser\\Node\\Expr\\Print_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php', 'PhpParser\\Node\\Expr\\PropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php', 'PhpParser\\Node\\Expr\\ShellExec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php', 'PhpParser\\Node\\Expr\\StaticCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php', 'PhpParser\\Node\\Expr\\StaticPropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php', 'PhpParser\\Node\\Expr\\Ternary' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php', 'PhpParser\\Node\\Expr\\Throw_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php', 'PhpParser\\Node\\Expr\\UnaryMinus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php', 'PhpParser\\Node\\Expr\\UnaryPlus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php', 'PhpParser\\Node\\Expr\\Variable' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php', 'PhpParser\\Node\\Expr\\YieldFrom' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php', 'PhpParser\\Node\\Expr\\Yield_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php', 'PhpParser\\Node\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php', 'PhpParser\\Node\\Identifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php', 'PhpParser\\Node\\IntersectionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php', 'PhpParser\\Node\\MatchArm' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php', 'PhpParser\\Node\\Name' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name.php', 'PhpParser\\Node\\Name\\FullyQualified' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php', 'PhpParser\\Node\\Name\\Relative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php', 'PhpParser\\Node\\NullableType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php', 'PhpParser\\Node\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Param.php', 'PhpParser\\Node\\Scalar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php', 'PhpParser\\Node\\Scalar\\DNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php', 'PhpParser\\Node\\Scalar\\Encapsed' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php', 'PhpParser\\Node\\Scalar\\EncapsedStringPart' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php', 'PhpParser\\Node\\Scalar\\LNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php', 'PhpParser\\Node\\Scalar\\MagicConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php', 'PhpParser\\Node\\Scalar\\MagicConst\\File' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Line' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php', 'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php', 'PhpParser\\Node\\Scalar\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php', 'PhpParser\\Node\\Stmt' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php', 'PhpParser\\Node\\Stmt\\Break_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php', 'PhpParser\\Node\\Stmt\\Case_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php', 'PhpParser\\Node\\Stmt\\Catch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php', 'PhpParser\\Node\\Stmt\\ClassConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php', 'PhpParser\\Node\\Stmt\\ClassLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php', 'PhpParser\\Node\\Stmt\\ClassMethod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php', 'PhpParser\\Node\\Stmt\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php', 'PhpParser\\Node\\Stmt\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php', 'PhpParser\\Node\\Stmt\\Continue_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php', 'PhpParser\\Node\\Stmt\\DeclareDeclare' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php', 'PhpParser\\Node\\Stmt\\Declare_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php', 'PhpParser\\Node\\Stmt\\Do_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php', 'PhpParser\\Node\\Stmt\\Echo_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php', 'PhpParser\\Node\\Stmt\\ElseIf_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php', 'PhpParser\\Node\\Stmt\\Else_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php', 'PhpParser\\Node\\Stmt\\EnumCase' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php', 'PhpParser\\Node\\Stmt\\Enum_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php', 'PhpParser\\Node\\Stmt\\Expression' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php', 'PhpParser\\Node\\Stmt\\Finally_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php', 'PhpParser\\Node\\Stmt\\For_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php', 'PhpParser\\Node\\Stmt\\Foreach_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php', 'PhpParser\\Node\\Stmt\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php', 'PhpParser\\Node\\Stmt\\Global_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php', 'PhpParser\\Node\\Stmt\\Goto_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php', 'PhpParser\\Node\\Stmt\\GroupUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php', 'PhpParser\\Node\\Stmt\\HaltCompiler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php', 'PhpParser\\Node\\Stmt\\If_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php', 'PhpParser\\Node\\Stmt\\InlineHTML' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php', 'PhpParser\\Node\\Stmt\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php', 'PhpParser\\Node\\Stmt\\Label' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php', 'PhpParser\\Node\\Stmt\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php', 'PhpParser\\Node\\Stmt\\Nop' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php', 'PhpParser\\Node\\Stmt\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php', 'PhpParser\\Node\\Stmt\\PropertyProperty' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php', 'PhpParser\\Node\\Stmt\\Return_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php', 'PhpParser\\Node\\Stmt\\StaticVar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php', 'PhpParser\\Node\\Stmt\\Static_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php', 'PhpParser\\Node\\Stmt\\Switch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php', 'PhpParser\\Node\\Stmt\\Throw_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php', 'PhpParser\\Node\\Stmt\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php', 'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php', 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php', 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php', 'PhpParser\\Node\\Stmt\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php', 'PhpParser\\Node\\Stmt\\TryCatch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php', 'PhpParser\\Node\\Stmt\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php', 'PhpParser\\Node\\Stmt\\UseUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php', 'PhpParser\\Node\\Stmt\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php', 'PhpParser\\Node\\Stmt\\While_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php', 'PhpParser\\Node\\UnionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php', 'PhpParser\\Node\\VarLikeIdentifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php', 'PhpParser\\Node\\VariadicPlaceholder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php', 'PhpParser\\Parser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser.php', 'PhpParser\\ParserAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php', 'PhpParser\\ParserFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserFactory.php', 'PhpParser\\Parser\\Multiple' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Multiple.php', 'PhpParser\\Parser\\Php5' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php5.php', 'PhpParser\\Parser\\Php7' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php', 'PhpParser\\Parser\\Tokens' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Tokens.php', 'PhpParser\\PrettyPrinterAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php', 'PhpParser\\PrettyPrinter\\Standard' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php', 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', 'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => $vendorDir . '/symfony/polyfill-intl-grapheme/Grapheme.php', 'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php', 'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php', 'Symfony\\Polyfill\\Php73\\Php73' => $vendorDir . '/symfony/polyfill-php73/Php73.php', 'Symfony\\Polyfill\\Php74\\Php74' => $vendorDir . '/symfony/polyfill-php74/Php74.php', 'Symfony\\Polyfill\\Php80\\Php80' => $vendorDir . '/symfony/polyfill-php80/Php80.php', 'Symfony\\Polyfill\\Php80\\PhpToken' => $vendorDir . '/symfony/polyfill-php80/PhpToken.php', 'Symfony\\Polyfill\\Php81\\Php81' => $vendorDir . '/symfony/polyfill-php81/Php81.php', 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', '_PHPStan_b22655c3f\\Clue\\React\\NDJson\\Decoder' => $vendorDir . '/clue/ndjson-react/src/Decoder.php', '_PHPStan_b22655c3f\\Clue\\React\\NDJson\\Encoder' => $vendorDir . '/clue/ndjson-react/src/Encoder.php', '_PHPStan_b22655c3f\\Composer\\CaBundle\\CaBundle' => $vendorDir . '/composer/ca-bundle/src/CaBundle.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\MatchAllResult' => $vendorDir . '/composer/pcre/src/MatchAllResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\MatchAllStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchAllStrictGroupsResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\MatchAllWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchAllWithOffsetsResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\MatchResult' => $vendorDir . '/composer/pcre/src/MatchResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\MatchStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchStrictGroupsResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\MatchWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchWithOffsetsResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\PcreException' => $vendorDir . '/composer/pcre/src/PcreException.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\Preg' => $vendorDir . '/composer/pcre/src/Preg.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\Regex' => $vendorDir . '/composer/pcre/src/Regex.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\ReplaceResult' => $vendorDir . '/composer/pcre/src/ReplaceResult.php', '_PHPStan_b22655c3f\\Composer\\Pcre\\UnexpectedNullMatchException' => $vendorDir . '/composer/pcre/src/UnexpectedNullMatchException.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Comparator' => $vendorDir . '/composer/semver/src/Comparator.php', '_PHPStan_b22655c3f\\Composer\\Semver\\CompilingMatcher' => $vendorDir . '/composer/semver/src/CompilingMatcher.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Constraint\\Bound' => $vendorDir . '/composer/semver/src/Constraint/Bound.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Constraint\\Constraint' => $vendorDir . '/composer/semver/src/Constraint/Constraint.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Constraint\\ConstraintInterface' => $vendorDir . '/composer/semver/src/Constraint/ConstraintInterface.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Constraint\\MatchAllConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchAllConstraint.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Constraint\\MatchNoneConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchNoneConstraint.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Constraint\\MultiConstraint' => $vendorDir . '/composer/semver/src/Constraint/MultiConstraint.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Interval' => $vendorDir . '/composer/semver/src/Interval.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Intervals' => $vendorDir . '/composer/semver/src/Intervals.php', '_PHPStan_b22655c3f\\Composer\\Semver\\Semver' => $vendorDir . '/composer/semver/src/Semver.php', '_PHPStan_b22655c3f\\Composer\\Semver\\VersionParser' => $vendorDir . '/composer/semver/src/VersionParser.php', '_PHPStan_b22655c3f\\Composer\\XdebugHandler\\PhpConfig' => $vendorDir . '/composer/xdebug-handler/src/PhpConfig.php', '_PHPStan_b22655c3f\\Composer\\XdebugHandler\\Process' => $vendorDir . '/composer/xdebug-handler/src/Process.php', '_PHPStan_b22655c3f\\Composer\\XdebugHandler\\Status' => $vendorDir . '/composer/xdebug-handler/src/Status.php', '_PHPStan_b22655c3f\\Composer\\XdebugHandler\\XdebugHandler' => $vendorDir . '/composer/xdebug-handler/src/XdebugHandler.php', '_PHPStan_b22655c3f\\Evenement\\EventEmitter' => $vendorDir . '/evenement/evenement/src/EventEmitter.php', '_PHPStan_b22655c3f\\Evenement\\EventEmitterInterface' => $vendorDir . '/evenement/evenement/src/EventEmitterInterface.php', '_PHPStan_b22655c3f\\Evenement\\EventEmitterTrait' => $vendorDir . '/evenement/evenement/src/EventEmitterTrait.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\CpuCoreCounter' => $vendorDir . '/fidry/cpu-core-counter/src/CpuCoreCounter.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Diagnoser' => $vendorDir . '/fidry/cpu-core-counter/src/Diagnoser.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Executor\\ProcOpenExecutor' => $vendorDir . '/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Executor\\ProcessExecutor' => $vendorDir . '/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\CmiCmdletLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\CmiCmdletPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\EnvVariableFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\LscpuLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\LscpuPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\NProcFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NProcFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\NullCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\OnlyInPowerShellFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\OnlyOnOSFamilyFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\ProcOpenBasedFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\SkipOnOSFamilyFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\WindowsRegistryLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\WmicLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => $vendorDir . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php', '_PHPStan_b22655c3f\\Fidry\\CpuCoreCounter\\ParallelisationResult' => $vendorDir . '/fidry/cpu-core-counter/src/ParallelisationResult.php', '_PHPStan_b22655c3f\\Fig\\Http\\Message\\RequestMethodInterface' => $vendorDir . '/fig/http-message-util/src/RequestMethodInterface.php', '_PHPStan_b22655c3f\\Fig\\Http\\Message\\StatusCodeInterface' => $vendorDir . '/fig/http-message-util/src/StatusCodeInterface.php', '_PHPStan_b22655c3f\\Nette\\ArgumentOutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Bootstrap\\Configurator' => $vendorDir . '/nette/bootstrap/src/Bootstrap/Configurator.php', '_PHPStan_b22655c3f\\Nette\\Bootstrap\\Extensions\\ConstantsExtension' => $vendorDir . '/nette/bootstrap/src/Bootstrap/Extensions/ConstantsExtension.php', '_PHPStan_b22655c3f\\Nette\\Bootstrap\\Extensions\\PhpExtension' => $vendorDir . '/nette/bootstrap/src/Bootstrap/Extensions/PhpExtension.php', '_PHPStan_b22655c3f\\Nette\\Bridges\\DITracy\\ContainerPanel' => $vendorDir . '/nette/di/src/Bridges/DITracy/ContainerPanel.php', '_PHPStan_b22655c3f\\Nette\\Configurator' => $vendorDir . '/nette/bootstrap/src/Configurator.php', '_PHPStan_b22655c3f\\Nette\\DI\\Attributes\\Inject' => $vendorDir . '/nette/di/src/DI/Attributes/Inject.php', '_PHPStan_b22655c3f\\Nette\\DI\\Autowiring' => $vendorDir . '/nette/di/src/DI/Autowiring.php', '_PHPStan_b22655c3f\\Nette\\DI\\Compiler' => $vendorDir . '/nette/di/src/DI/Compiler.php', '_PHPStan_b22655c3f\\Nette\\DI\\CompilerExtension' => $vendorDir . '/nette/di/src/DI/CompilerExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Config\\Adapter' => $vendorDir . '/nette/di/src/DI/Config/Adapter.php', '_PHPStan_b22655c3f\\Nette\\DI\\Config\\Adapters\\NeonAdapter' => $vendorDir . '/nette/di/src/DI/Config/Adapters/NeonAdapter.php', '_PHPStan_b22655c3f\\Nette\\DI\\Config\\Adapters\\PhpAdapter' => $vendorDir . '/nette/di/src/DI/Config/Adapters/PhpAdapter.php', '_PHPStan_b22655c3f\\Nette\\DI\\Config\\Helpers' => $vendorDir . '/nette/di/src/DI/Config/Helpers.php', '_PHPStan_b22655c3f\\Nette\\DI\\Config\\IAdapter' => $vendorDir . '/nette/di/src/compatibility.php', '_PHPStan_b22655c3f\\Nette\\DI\\Config\\Loader' => $vendorDir . '/nette/di/src/DI/Config/Loader.php', '_PHPStan_b22655c3f\\Nette\\DI\\Container' => $vendorDir . '/nette/di/src/DI/Container.php', '_PHPStan_b22655c3f\\Nette\\DI\\ContainerBuilder' => $vendorDir . '/nette/di/src/DI/ContainerBuilder.php', '_PHPStan_b22655c3f\\Nette\\DI\\ContainerLoader' => $vendorDir . '/nette/di/src/DI/ContainerLoader.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\AccessorDefinition' => $vendorDir . '/nette/di/src/DI/Definitions/AccessorDefinition.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\Definition' => $vendorDir . '/nette/di/src/DI/Definitions/Definition.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\FactoryDefinition' => $vendorDir . '/nette/di/src/DI/Definitions/FactoryDefinition.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\ImportedDefinition' => $vendorDir . '/nette/di/src/DI/Definitions/ImportedDefinition.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\LocatorDefinition' => $vendorDir . '/nette/di/src/DI/Definitions/LocatorDefinition.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\Reference' => $vendorDir . '/nette/di/src/DI/Definitions/Reference.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\ServiceDefinition' => $vendorDir . '/nette/di/src/DI/Definitions/ServiceDefinition.php', '_PHPStan_b22655c3f\\Nette\\DI\\Definitions\\Statement' => $vendorDir . '/nette/di/src/DI/Definitions/Statement.php', '_PHPStan_b22655c3f\\Nette\\DI\\DependencyChecker' => $vendorDir . '/nette/di/src/DI/DependencyChecker.php', '_PHPStan_b22655c3f\\Nette\\DI\\DynamicParameter' => $vendorDir . '/nette/di/src/DI/DynamicParameter.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\ConstantsExtension' => $vendorDir . '/nette/di/src/DI/Extensions/ConstantsExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\DIExtension' => $vendorDir . '/nette/di/src/DI/Extensions/DIExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\DecoratorExtension' => $vendorDir . '/nette/di/src/DI/Extensions/DecoratorExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\DefinitionSchema' => $vendorDir . '/nette/di/src/DI/Extensions/DefinitionSchema.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\ExtensionsExtension' => $vendorDir . '/nette/di/src/DI/Extensions/ExtensionsExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\InjectExtension' => $vendorDir . '/nette/di/src/DI/Extensions/InjectExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\ParametersExtension' => $vendorDir . '/nette/di/src/DI/Extensions/ParametersExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\PhpExtension' => $vendorDir . '/nette/di/src/DI/Extensions/PhpExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\SearchExtension' => $vendorDir . '/nette/di/src/DI/Extensions/SearchExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Extensions\\ServicesExtension' => $vendorDir . '/nette/di/src/DI/Extensions/ServicesExtension.php', '_PHPStan_b22655c3f\\Nette\\DI\\Helpers' => $vendorDir . '/nette/di/src/DI/Helpers.php', '_PHPStan_b22655c3f\\Nette\\DI\\InvalidConfigurationException' => $vendorDir . '/nette/di/src/DI/exceptions.php', '_PHPStan_b22655c3f\\Nette\\DI\\MissingServiceException' => $vendorDir . '/nette/di/src/DI/exceptions.php', '_PHPStan_b22655c3f\\Nette\\DI\\NotAllowedDuringResolvingException' => $vendorDir . '/nette/di/src/DI/exceptions.php', '_PHPStan_b22655c3f\\Nette\\DI\\PhpGenerator' => $vendorDir . '/nette/di/src/DI/PhpGenerator.php', '_PHPStan_b22655c3f\\Nette\\DI\\Resolver' => $vendorDir . '/nette/di/src/DI/Resolver.php', '_PHPStan_b22655c3f\\Nette\\DI\\ServiceCreationException' => $vendorDir . '/nette/di/src/DI/exceptions.php', '_PHPStan_b22655c3f\\Nette\\DI\\ServiceDefinition' => $vendorDir . '/nette/di/src/compatibility.php', '_PHPStan_b22655c3f\\Nette\\DI\\Statement' => $vendorDir . '/nette/di/src/compatibility.php', '_PHPStan_b22655c3f\\Nette\\DeprecatedException' => $vendorDir . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\DirectoryNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\FileNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\HtmlStringable' => $vendorDir . '/nette/utils/src/HtmlStringable.php', '_PHPStan_b22655c3f\\Nette\\IOException' => $vendorDir . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\InvalidArgumentException' => $vendorDir . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\InvalidStateException' => $vendorDir . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Iterators\\CachingIterator' => $vendorDir . '/nette/utils/src/Iterators/CachingIterator.php', '_PHPStan_b22655c3f\\Nette\\Iterators\\Mapper' => $vendorDir . '/nette/utils/src/Iterators/Mapper.php', '_PHPStan_b22655c3f\\Nette\\Loaders\\RobotLoader' => $vendorDir . '/nette/robot-loader/src/RobotLoader/RobotLoader.php', '_PHPStan_b22655c3f\\Nette\\Localization\\ITranslator' => $vendorDir . '/nette/utils/src/compatibility.php', '_PHPStan_b22655c3f\\Nette\\Localization\\Translator' => $vendorDir . '/nette/utils/src/Translator.php', '_PHPStan_b22655c3f\\Nette\\MemberAccessException' => $vendorDir . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Decoder' => $vendorDir . '/nette/neon/src/Neon/Decoder.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Encoder' => $vendorDir . '/nette/neon/src/Neon/Encoder.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Entity' => $vendorDir . '/nette/neon/src/Neon/Entity.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Exception' => $vendorDir . '/nette/neon/src/Neon/Exception.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Lexer' => $vendorDir . '/nette/neon/src/Neon/Lexer.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Neon' => $vendorDir . '/nette/neon/src/Neon/Neon.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node' => $vendorDir . '/nette/neon/src/Neon/Node.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\ArrayItemNode' => $vendorDir . '/nette/neon/src/Neon/Node/ArrayItemNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\ArrayNode' => $vendorDir . '/nette/neon/src/Neon/Node/ArrayNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\BlockArrayNode' => $vendorDir . '/nette/neon/src/Neon/Node/BlockArrayNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\EntityChainNode' => $vendorDir . '/nette/neon/src/Neon/Node/EntityChainNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\EntityNode' => $vendorDir . '/nette/neon/src/Neon/Node/EntityNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\InlineArrayNode' => $vendorDir . '/nette/neon/src/Neon/Node/InlineArrayNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\LiteralNode' => $vendorDir . '/nette/neon/src/Neon/Node/LiteralNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Node\\StringNode' => $vendorDir . '/nette/neon/src/Neon/Node/StringNode.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Parser' => $vendorDir . '/nette/neon/src/Neon/Parser.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Token' => $vendorDir . '/nette/neon/src/Neon/Token.php', '_PHPStan_b22655c3f\\Nette\\Neon\\TokenStream' => $vendorDir . '/nette/neon/src/Neon/TokenStream.php', '_PHPStan_b22655c3f\\Nette\\Neon\\Traverser' => $vendorDir . '/nette/neon/src/Neon/Traverser.php', '_PHPStan_b22655c3f\\Nette\\NotImplementedException' => $vendorDir . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\NotSupportedException' => $vendorDir . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\OutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Attribute' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Attribute.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\ClassType' => $vendorDir . '/nette/php-generator/src/PhpGenerator/ClassType.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Closure' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Closure.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Constant' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Constant.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Dumper' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Dumper.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\EnumCase' => $vendorDir . '/nette/php-generator/src/PhpGenerator/EnumCase.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Extractor' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Extractor.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Factory' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Factory.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\GlobalFunction' => $vendorDir . '/nette/php-generator/src/PhpGenerator/GlobalFunction.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Helpers' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Helpers.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Literal' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Literal.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Method' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Method.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Parameter' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Parameter.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\PhpFile' => $vendorDir . '/nette/php-generator/src/PhpGenerator/PhpFile.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\PhpLiteral' => $vendorDir . '/nette/php-generator/src/PhpGenerator/PhpLiteral.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\PhpNamespace' => $vendorDir . '/nette/php-generator/src/PhpGenerator/PhpNamespace.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Printer' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Printer.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\PromotedParameter' => $vendorDir . '/nette/php-generator/src/PhpGenerator/PromotedParameter.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Property' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Property.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\PsrPrinter' => $vendorDir . '/nette/php-generator/src/PhpGenerator/PsrPrinter.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\TraitUse' => $vendorDir . '/nette/php-generator/src/PhpGenerator/TraitUse.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Traits\\AttributeAware' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Traits/AttributeAware.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Traits\\CommentAware' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Traits/CommentAware.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Traits\\FunctionLike' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Traits/FunctionLike.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Traits\\NameAware' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Traits/NameAware.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Traits\\VisibilityAware' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Traits/VisibilityAware.php', '_PHPStan_b22655c3f\\Nette\\PhpGenerator\\Type' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Type.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Context' => $vendorDir . '/nette/schema/src/Schema/Context.php', '_PHPStan_b22655c3f\\Nette\\Schema\\DynamicParameter' => $vendorDir . '/nette/schema/src/Schema/DynamicParameter.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Elements\\AnyOf' => $vendorDir . '/nette/schema/src/Schema/Elements/AnyOf.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Elements\\Base' => $vendorDir . '/nette/schema/src/Schema/Elements/Base.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Elements\\Structure' => $vendorDir . '/nette/schema/src/Schema/Elements/Structure.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Elements\\Type' => $vendorDir . '/nette/schema/src/Schema/Elements/Type.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Expect' => $vendorDir . '/nette/schema/src/Schema/Expect.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Helpers' => $vendorDir . '/nette/schema/src/Schema/Helpers.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Message' => $vendorDir . '/nette/schema/src/Schema/Message.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Processor' => $vendorDir . '/nette/schema/src/Schema/Processor.php', '_PHPStan_b22655c3f\\Nette\\Schema\\Schema' => $vendorDir . '/nette/schema/src/Schema/Schema.php', '_PHPStan_b22655c3f\\Nette\\Schema\\ValidationException' => $vendorDir . '/nette/schema/src/Schema/ValidationException.php', '_PHPStan_b22655c3f\\Nette\\SmartObject' => $vendorDir . '/nette/utils/src/SmartObject.php', '_PHPStan_b22655c3f\\Nette\\StaticClass' => $vendorDir . '/nette/utils/src/StaticClass.php', '_PHPStan_b22655c3f\\Nette\\UnexpectedValueException' => $vendorDir . '/nette/utils/src/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Utils\\ArrayHash' => $vendorDir . '/nette/utils/src/Utils/ArrayHash.php', '_PHPStan_b22655c3f\\Nette\\Utils\\ArrayList' => $vendorDir . '/nette/utils/src/Utils/ArrayList.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Arrays' => $vendorDir . '/nette/utils/src/Utils/Arrays.php', '_PHPStan_b22655c3f\\Nette\\Utils\\AssertionException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Callback' => $vendorDir . '/nette/utils/src/Utils/Callback.php', '_PHPStan_b22655c3f\\Nette\\Utils\\DateTime' => $vendorDir . '/nette/utils/src/Utils/DateTime.php', '_PHPStan_b22655c3f\\Nette\\Utils\\FileSystem' => $vendorDir . '/nette/utils/src/Utils/FileSystem.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Finder' => $vendorDir . '/nette/finder/src/Utils/Finder.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Floats' => $vendorDir . '/nette/utils/src/Utils/Floats.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Helpers' => $vendorDir . '/nette/utils/src/Utils/Helpers.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Html' => $vendorDir . '/nette/utils/src/Utils/Html.php', '_PHPStan_b22655c3f\\Nette\\Utils\\IHtmlString' => $vendorDir . '/nette/utils/src/compatibility.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Image' => $vendorDir . '/nette/utils/src/Utils/Image.php', '_PHPStan_b22655c3f\\Nette\\Utils\\ImageException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Json' => $vendorDir . '/nette/utils/src/Utils/Json.php', '_PHPStan_b22655c3f\\Nette\\Utils\\JsonException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Utils\\ObjectHelpers' => $vendorDir . '/nette/utils/src/Utils/ObjectHelpers.php', '_PHPStan_b22655c3f\\Nette\\Utils\\ObjectMixin' => $vendorDir . '/nette/utils/src/Utils/ObjectMixin.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Paginator' => $vendorDir . '/nette/utils/src/Utils/Paginator.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Random' => $vendorDir . '/nette/utils/src/Utils/Random.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Reflection' => $vendorDir . '/nette/utils/src/Utils/Reflection.php', '_PHPStan_b22655c3f\\Nette\\Utils\\RegexpException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Strings' => $vendorDir . '/nette/utils/src/Utils/Strings.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Type' => $vendorDir . '/nette/utils/src/Utils/Type.php', '_PHPStan_b22655c3f\\Nette\\Utils\\UnknownImageFileException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', '_PHPStan_b22655c3f\\Nette\\Utils\\Validators' => $vendorDir . '/nette/utils/src/Utils/Validators.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\CiDetector' => $vendorDir . '/ondram/ci-detector/src/CiDetector.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\AbstractCi' => $vendorDir . '/ondram/ci-detector/src/Ci/AbstractCi.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\AppVeyor' => $vendorDir . '/ondram/ci-detector/src/Ci/AppVeyor.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\AwsCodeBuild' => $vendorDir . '/ondram/ci-detector/src/Ci/AwsCodeBuild.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Bamboo' => $vendorDir . '/ondram/ci-detector/src/Ci/Bamboo.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\BitbucketPipelines' => $vendorDir . '/ondram/ci-detector/src/Ci/BitbucketPipelines.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Buddy' => $vendorDir . '/ondram/ci-detector/src/Ci/Buddy.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\CiInterface' => $vendorDir . '/ondram/ci-detector/src/Ci/CiInterface.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Circle' => $vendorDir . '/ondram/ci-detector/src/Ci/Circle.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Codeship' => $vendorDir . '/ondram/ci-detector/src/Ci/Codeship.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Continuousphp' => $vendorDir . '/ondram/ci-detector/src/Ci/Continuousphp.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Drone' => $vendorDir . '/ondram/ci-detector/src/Ci/Drone.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\GitHubActions' => $vendorDir . '/ondram/ci-detector/src/Ci/GitHubActions.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\GitLab' => $vendorDir . '/ondram/ci-detector/src/Ci/GitLab.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Jenkins' => $vendorDir . '/ondram/ci-detector/src/Ci/Jenkins.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\TeamCity' => $vendorDir . '/ondram/ci-detector/src/Ci/TeamCity.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Travis' => $vendorDir . '/ondram/ci-detector/src/Ci/Travis.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Ci\\Wercker' => $vendorDir . '/ondram/ci-detector/src/Ci/Wercker.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Env' => $vendorDir . '/ondram/ci-detector/src/Env.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\Exception\\CiNotDetectedException' => $vendorDir . '/ondram/ci-detector/src/Exception/CiNotDetectedException.php', '_PHPStan_b22655c3f\\OndraM\\CiDetector\\TrinaryLogic' => $vendorDir . '/ondram/ci-detector/src/TrinaryLogic.php', '_PHPStan_b22655c3f\\Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php', '_PHPStan_b22655c3f\\Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php', '_PHPStan_b22655c3f\\Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\MessageInterface' => $vendorDir . '/psr/http-message/src/MessageInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\RequestInterface' => $vendorDir . '/psr/http-message/src/RequestInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\ResponseInterface' => $vendorDir . '/psr/http-message/src/ResponseInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\ServerRequestInterface' => $vendorDir . '/psr/http-message/src/ServerRequestInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\StreamInterface' => $vendorDir . '/psr/http-message/src/StreamInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php', '_PHPStan_b22655c3f\\Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php', '_PHPStan_b22655c3f\\Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/src/AbstractLogger.php', '_PHPStan_b22655c3f\\Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/src/InvalidArgumentException.php', '_PHPStan_b22655c3f\\Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/src/LogLevel.php', '_PHPStan_b22655c3f\\Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/src/LoggerAwareInterface.php', '_PHPStan_b22655c3f\\Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/src/LoggerAwareTrait.php', '_PHPStan_b22655c3f\\Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/src/LoggerInterface.php', '_PHPStan_b22655c3f\\Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/src/LoggerTrait.php', '_PHPStan_b22655c3f\\Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/src/NullLogger.php', '_PHPStan_b22655c3f\\React\\Cache\\ArrayCache' => $vendorDir . '/react/cache/src/ArrayCache.php', '_PHPStan_b22655c3f\\React\\Cache\\CacheInterface' => $vendorDir . '/react/cache/src/CacheInterface.php', '_PHPStan_b22655c3f\\React\\ChildProcess\\Process' => $vendorDir . '/react/child-process/src/Process.php', '_PHPStan_b22655c3f\\React\\Dns\\BadServerException' => $vendorDir . '/react/dns/src/BadServerException.php', '_PHPStan_b22655c3f\\React\\Dns\\Config\\Config' => $vendorDir . '/react/dns/src/Config/Config.php', '_PHPStan_b22655c3f\\React\\Dns\\Config\\HostsFile' => $vendorDir . '/react/dns/src/Config/HostsFile.php', '_PHPStan_b22655c3f\\React\\Dns\\Model\\Message' => $vendorDir . '/react/dns/src/Model/Message.php', '_PHPStan_b22655c3f\\React\\Dns\\Model\\Record' => $vendorDir . '/react/dns/src/Model/Record.php', '_PHPStan_b22655c3f\\React\\Dns\\Protocol\\BinaryDumper' => $vendorDir . '/react/dns/src/Protocol/BinaryDumper.php', '_PHPStan_b22655c3f\\React\\Dns\\Protocol\\Parser' => $vendorDir . '/react/dns/src/Protocol/Parser.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\CachingExecutor' => $vendorDir . '/react/dns/src/Query/CachingExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\CancellationException' => $vendorDir . '/react/dns/src/Query/CancellationException.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\CoopExecutor' => $vendorDir . '/react/dns/src/Query/CoopExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\ExecutorInterface' => $vendorDir . '/react/dns/src/Query/ExecutorInterface.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\FallbackExecutor' => $vendorDir . '/react/dns/src/Query/FallbackExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\HostsFileExecutor' => $vendorDir . '/react/dns/src/Query/HostsFileExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\Query' => $vendorDir . '/react/dns/src/Query/Query.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\RetryExecutor' => $vendorDir . '/react/dns/src/Query/RetryExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\SelectiveTransportExecutor' => $vendorDir . '/react/dns/src/Query/SelectiveTransportExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\TcpTransportExecutor' => $vendorDir . '/react/dns/src/Query/TcpTransportExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\TimeoutException' => $vendorDir . '/react/dns/src/Query/TimeoutException.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\TimeoutExecutor' => $vendorDir . '/react/dns/src/Query/TimeoutExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\Query\\UdpTransportExecutor' => $vendorDir . '/react/dns/src/Query/UdpTransportExecutor.php', '_PHPStan_b22655c3f\\React\\Dns\\RecordNotFoundException' => $vendorDir . '/react/dns/src/RecordNotFoundException.php', '_PHPStan_b22655c3f\\React\\Dns\\Resolver\\Factory' => $vendorDir . '/react/dns/src/Resolver/Factory.php', '_PHPStan_b22655c3f\\React\\Dns\\Resolver\\Resolver' => $vendorDir . '/react/dns/src/Resolver/Resolver.php', '_PHPStan_b22655c3f\\React\\Dns\\Resolver\\ResolverInterface' => $vendorDir . '/react/dns/src/Resolver/ResolverInterface.php', '_PHPStan_b22655c3f\\React\\EventLoop\\ExtEvLoop' => $vendorDir . '/react/event-loop/src/ExtEvLoop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\ExtEventLoop' => $vendorDir . '/react/event-loop/src/ExtEventLoop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\ExtLibevLoop' => $vendorDir . '/react/event-loop/src/ExtLibevLoop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\ExtLibeventLoop' => $vendorDir . '/react/event-loop/src/ExtLibeventLoop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\ExtUvLoop' => $vendorDir . '/react/event-loop/src/ExtUvLoop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\Factory' => $vendorDir . '/react/event-loop/src/Factory.php', '_PHPStan_b22655c3f\\React\\EventLoop\\Loop' => $vendorDir . '/react/event-loop/src/Loop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\LoopInterface' => $vendorDir . '/react/event-loop/src/LoopInterface.php', '_PHPStan_b22655c3f\\React\\EventLoop\\SignalsHandler' => $vendorDir . '/react/event-loop/src/SignalsHandler.php', '_PHPStan_b22655c3f\\React\\EventLoop\\StreamSelectLoop' => $vendorDir . '/react/event-loop/src/StreamSelectLoop.php', '_PHPStan_b22655c3f\\React\\EventLoop\\Tick\\FutureTickQueue' => $vendorDir . '/react/event-loop/src/Tick/FutureTickQueue.php', '_PHPStan_b22655c3f\\React\\EventLoop\\TimerInterface' => $vendorDir . '/react/event-loop/src/TimerInterface.php', '_PHPStan_b22655c3f\\React\\EventLoop\\Timer\\Timer' => $vendorDir . '/react/event-loop/src/Timer/Timer.php', '_PHPStan_b22655c3f\\React\\EventLoop\\Timer\\Timers' => $vendorDir . '/react/event-loop/src/Timer/Timers.php', '_PHPStan_b22655c3f\\React\\Http\\Browser' => $vendorDir . '/react/http/src/Browser.php', '_PHPStan_b22655c3f\\React\\Http\\Client\\Client' => $vendorDir . '/react/http/src/Client/Client.php', '_PHPStan_b22655c3f\\React\\Http\\HttpServer' => $vendorDir . '/react/http/src/HttpServer.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\AbstractMessage' => $vendorDir . '/react/http/src/Io/AbstractMessage.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\AbstractRequest' => $vendorDir . '/react/http/src/Io/AbstractRequest.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\BufferedBody' => $vendorDir . '/react/http/src/Io/BufferedBody.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\ChunkedDecoder' => $vendorDir . '/react/http/src/Io/ChunkedDecoder.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\ChunkedEncoder' => $vendorDir . '/react/http/src/Io/ChunkedEncoder.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\ClientConnectionManager' => $vendorDir . '/react/http/src/Io/ClientConnectionManager.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\ClientRequestState' => $vendorDir . '/react/http/src/Io/ClientRequestState.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\ClientRequestStream' => $vendorDir . '/react/http/src/Io/ClientRequestStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\Clock' => $vendorDir . '/react/http/src/Io/Clock.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\CloseProtectionStream' => $vendorDir . '/react/http/src/Io/CloseProtectionStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\EmptyBodyStream' => $vendorDir . '/react/http/src/Io/EmptyBodyStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\HttpBodyStream' => $vendorDir . '/react/http/src/Io/HttpBodyStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\IniUtil' => $vendorDir . '/react/http/src/Io/IniUtil.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\LengthLimitedStream' => $vendorDir . '/react/http/src/Io/LengthLimitedStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\MiddlewareRunner' => $vendorDir . '/react/http/src/Io/MiddlewareRunner.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\MultipartParser' => $vendorDir . '/react/http/src/Io/MultipartParser.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\PauseBufferStream' => $vendorDir . '/react/http/src/Io/PauseBufferStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\ReadableBodyStream' => $vendorDir . '/react/http/src/Io/ReadableBodyStream.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\RequestHeaderParser' => $vendorDir . '/react/http/src/Io/RequestHeaderParser.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\Sender' => $vendorDir . '/react/http/src/Io/Sender.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\StreamingServer' => $vendorDir . '/react/http/src/Io/StreamingServer.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\Transaction' => $vendorDir . '/react/http/src/Io/Transaction.php', '_PHPStan_b22655c3f\\React\\Http\\Io\\UploadedFile' => $vendorDir . '/react/http/src/Io/UploadedFile.php', '_PHPStan_b22655c3f\\React\\Http\\Message\\Request' => $vendorDir . '/react/http/src/Message/Request.php', '_PHPStan_b22655c3f\\React\\Http\\Message\\Response' => $vendorDir . '/react/http/src/Message/Response.php', '_PHPStan_b22655c3f\\React\\Http\\Message\\ResponseException' => $vendorDir . '/react/http/src/Message/ResponseException.php', '_PHPStan_b22655c3f\\React\\Http\\Message\\ServerRequest' => $vendorDir . '/react/http/src/Message/ServerRequest.php', '_PHPStan_b22655c3f\\React\\Http\\Message\\Uri' => $vendorDir . '/react/http/src/Message/Uri.php', '_PHPStan_b22655c3f\\React\\Http\\Middleware\\LimitConcurrentRequestsMiddleware' => $vendorDir . '/react/http/src/Middleware/LimitConcurrentRequestsMiddleware.php', '_PHPStan_b22655c3f\\React\\Http\\Middleware\\RequestBodyBufferMiddleware' => $vendorDir . '/react/http/src/Middleware/RequestBodyBufferMiddleware.php', '_PHPStan_b22655c3f\\React\\Http\\Middleware\\RequestBodyParserMiddleware' => $vendorDir . '/react/http/src/Middleware/RequestBodyParserMiddleware.php', '_PHPStan_b22655c3f\\React\\Http\\Middleware\\StreamingRequestMiddleware' => $vendorDir . '/react/http/src/Middleware/StreamingRequestMiddleware.php', '_PHPStan_b22655c3f\\React\\Http\\Server' => $vendorDir . '/react/http/src/Server.php', '_PHPStan_b22655c3f\\React\\Promise\\Deferred' => $vendorDir . '/react/promise/src/Deferred.php', '_PHPStan_b22655c3f\\React\\Promise\\Exception\\CompositeException' => $vendorDir . '/react/promise/src/Exception/CompositeException.php', '_PHPStan_b22655c3f\\React\\Promise\\Exception\\LengthException' => $vendorDir . '/react/promise/src/Exception/LengthException.php', '_PHPStan_b22655c3f\\React\\Promise\\Internal\\CancellationQueue' => $vendorDir . '/react/promise/src/Internal/CancellationQueue.php', '_PHPStan_b22655c3f\\React\\Promise\\Internal\\FulfilledPromise' => $vendorDir . '/react/promise/src/Internal/FulfilledPromise.php', '_PHPStan_b22655c3f\\React\\Promise\\Internal\\RejectedPromise' => $vendorDir . '/react/promise/src/Internal/RejectedPromise.php', '_PHPStan_b22655c3f\\React\\Promise\\Promise' => $vendorDir . '/react/promise/src/Promise.php', '_PHPStan_b22655c3f\\React\\Promise\\PromiseInterface' => $vendorDir . '/react/promise/src/PromiseInterface.php', '_PHPStan_b22655c3f\\React\\Socket\\Connection' => $vendorDir . '/react/socket/src/Connection.php', '_PHPStan_b22655c3f\\React\\Socket\\ConnectionInterface' => $vendorDir . '/react/socket/src/ConnectionInterface.php', '_PHPStan_b22655c3f\\React\\Socket\\Connector' => $vendorDir . '/react/socket/src/Connector.php', '_PHPStan_b22655c3f\\React\\Socket\\ConnectorInterface' => $vendorDir . '/react/socket/src/ConnectorInterface.php', '_PHPStan_b22655c3f\\React\\Socket\\DnsConnector' => $vendorDir . '/react/socket/src/DnsConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\FdServer' => $vendorDir . '/react/socket/src/FdServer.php', '_PHPStan_b22655c3f\\React\\Socket\\FixedUriConnector' => $vendorDir . '/react/socket/src/FixedUriConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\HappyEyeBallsConnectionBuilder' => $vendorDir . '/react/socket/src/HappyEyeBallsConnectionBuilder.php', '_PHPStan_b22655c3f\\React\\Socket\\HappyEyeBallsConnector' => $vendorDir . '/react/socket/src/HappyEyeBallsConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\LimitingServer' => $vendorDir . '/react/socket/src/LimitingServer.php', '_PHPStan_b22655c3f\\React\\Socket\\SecureConnector' => $vendorDir . '/react/socket/src/SecureConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\SecureServer' => $vendorDir . '/react/socket/src/SecureServer.php', '_PHPStan_b22655c3f\\React\\Socket\\Server' => $vendorDir . '/react/socket/src/Server.php', '_PHPStan_b22655c3f\\React\\Socket\\ServerInterface' => $vendorDir . '/react/socket/src/ServerInterface.php', '_PHPStan_b22655c3f\\React\\Socket\\SocketServer' => $vendorDir . '/react/socket/src/SocketServer.php', '_PHPStan_b22655c3f\\React\\Socket\\StreamEncryption' => $vendorDir . '/react/socket/src/StreamEncryption.php', '_PHPStan_b22655c3f\\React\\Socket\\TcpConnector' => $vendorDir . '/react/socket/src/TcpConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\TcpServer' => $vendorDir . '/react/socket/src/TcpServer.php', '_PHPStan_b22655c3f\\React\\Socket\\TimeoutConnector' => $vendorDir . '/react/socket/src/TimeoutConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\UnixConnector' => $vendorDir . '/react/socket/src/UnixConnector.php', '_PHPStan_b22655c3f\\React\\Socket\\UnixServer' => $vendorDir . '/react/socket/src/UnixServer.php', '_PHPStan_b22655c3f\\React\\Stream\\CompositeStream' => $vendorDir . '/react/stream/src/CompositeStream.php', '_PHPStan_b22655c3f\\React\\Stream\\DuplexResourceStream' => $vendorDir . '/react/stream/src/DuplexResourceStream.php', '_PHPStan_b22655c3f\\React\\Stream\\DuplexStreamInterface' => $vendorDir . '/react/stream/src/DuplexStreamInterface.php', '_PHPStan_b22655c3f\\React\\Stream\\ReadableResourceStream' => $vendorDir . '/react/stream/src/ReadableResourceStream.php', '_PHPStan_b22655c3f\\React\\Stream\\ReadableStreamInterface' => $vendorDir . '/react/stream/src/ReadableStreamInterface.php', '_PHPStan_b22655c3f\\React\\Stream\\ThroughStream' => $vendorDir . '/react/stream/src/ThroughStream.php', '_PHPStan_b22655c3f\\React\\Stream\\Util' => $vendorDir . '/react/stream/src/Util.php', '_PHPStan_b22655c3f\\React\\Stream\\WritableResourceStream' => $vendorDir . '/react/stream/src/WritableResourceStream.php', '_PHPStan_b22655c3f\\React\\Stream\\WritableStreamInterface' => $vendorDir . '/react/stream/src/WritableStreamInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Application' => $vendorDir . '/symfony/console/Application.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Attribute\\AsCommand' => $vendorDir . '/symfony/console/Attribute/AsCommand.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\CI\\GithubActionReporter' => $vendorDir . '/symfony/console/CI/GithubActionReporter.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Color' => $vendorDir . '/symfony/console/Color.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => $vendorDir . '/symfony/console/CommandLoader/CommandLoaderInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/ContainerCommandLoader.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/FactoryCommandLoader.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\Command' => $vendorDir . '/symfony/console/Command/Command.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\CompleteCommand' => $vendorDir . '/symfony/console/Command/CompleteCommand.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => $vendorDir . '/symfony/console/Command/DumpCompletionCommand.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\HelpCommand' => $vendorDir . '/symfony/console/Command/HelpCommand.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\LazyCommand' => $vendorDir . '/symfony/console/Command/LazyCommand.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\ListCommand' => $vendorDir . '/symfony/console/Command/ListCommand.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\LockableTrait' => $vendorDir . '/symfony/console/Command/LockableTrait.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => $vendorDir . '/symfony/console/Command/SignalableCommandInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Completion\\CompletionInput' => $vendorDir . '/symfony/console/Completion/CompletionInput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => $vendorDir . '/symfony/console/Completion/CompletionSuggestions.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/BashCompletionOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => $vendorDir . '/symfony/console/Completion/Output/CompletionOutputInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Completion\\Suggestion' => $vendorDir . '/symfony/console/Completion/Suggestion.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\ConsoleEvents' => $vendorDir . '/symfony/console/ConsoleEvents.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Cursor' => $vendorDir . '/symfony/console/Cursor.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => $vendorDir . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => $vendorDir . '/symfony/console/Descriptor/ApplicationDescription.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\Descriptor' => $vendorDir . '/symfony/console/Descriptor/Descriptor.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => $vendorDir . '/symfony/console/Descriptor/DescriptorInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/console/Descriptor/JsonDescriptor.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => $vendorDir . '/symfony/console/Descriptor/MarkdownDescriptor.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/console/Descriptor/TextDescriptor.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => $vendorDir . '/symfony/console/Descriptor/XmlDescriptor.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\EventListener\\ErrorListener' => $vendorDir . '/symfony/console/EventListener/ErrorListener.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => $vendorDir . '/symfony/console/Event/ConsoleCommandEvent.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => $vendorDir . '/symfony/console/Event/ConsoleErrorEvent.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Event\\ConsoleEvent' => $vendorDir . '/symfony/console/Event/ConsoleEvent.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Event\\ConsoleSignalEvent' => $vendorDir . '/symfony/console/Event/ConsoleSignalEvent.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => $vendorDir . '/symfony/console/Event/ConsoleTerminateEvent.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => $vendorDir . '/symfony/console/Exception/CommandNotFoundException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/console/Exception/ExceptionInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/console/Exception/InvalidArgumentException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\InvalidOptionException' => $vendorDir . '/symfony/console/Exception/InvalidOptionException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\LogicException' => $vendorDir . '/symfony/console/Exception/LogicException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\MissingInputException' => $vendorDir . '/symfony/console/Exception/MissingInputException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => $vendorDir . '/symfony/console/Exception/NamespaceNotFoundException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Exception\\RuntimeException' => $vendorDir . '/symfony/console/Exception/RuntimeException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatter.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatterStyle.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\OutputFormatter' => $vendorDir . '/symfony/console/Formatter/OutputFormatter.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyle.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleStack.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => $vendorDir . '/symfony/console/Helper/DebugFormatterHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\DescriptorHelper' => $vendorDir . '/symfony/console/Helper/DescriptorHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\Dumper' => $vendorDir . '/symfony/console/Helper/Dumper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\FormatterHelper' => $vendorDir . '/symfony/console/Helper/FormatterHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\Helper' => $vendorDir . '/symfony/console/Helper/Helper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\HelperInterface' => $vendorDir . '/symfony/console/Helper/HelperInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\HelperSet' => $vendorDir . '/symfony/console/Helper/HelperSet.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\InputAwareHelper' => $vendorDir . '/symfony/console/Helper/InputAwareHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\ProcessHelper' => $vendorDir . '/symfony/console/Helper/ProcessHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\ProgressBar' => $vendorDir . '/symfony/console/Helper/ProgressBar.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\ProgressIndicator' => $vendorDir . '/symfony/console/Helper/ProgressIndicator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\QuestionHelper' => $vendorDir . '/symfony/console/Helper/QuestionHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => $vendorDir . '/symfony/console/Helper/SymfonyQuestionHelper.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\Table' => $vendorDir . '/symfony/console/Helper/Table.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\TableCell' => $vendorDir . '/symfony/console/Helper/TableCell.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\TableCellStyle' => $vendorDir . '/symfony/console/Helper/TableCellStyle.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\InputArgument' => $vendorDir . '/symfony/console/Input/InputArgument.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\InputAwareInterface' => $vendorDir . '/symfony/console/Input/InputAwareInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\InputDefinition' => $vendorDir . '/symfony/console/Input/InputDefinition.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\InputInterface' => $vendorDir . '/symfony/console/Input/InputInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\InputOption' => $vendorDir . '/symfony/console/Input/InputOption.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\StreamableInputInterface' => $vendorDir . '/symfony/console/Input/StreamableInputInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Input\\StringInput' => $vendorDir . '/symfony/console/Input/StringInput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Logger\\ConsoleLogger' => $vendorDir . '/symfony/console/Logger/ConsoleLogger.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\BufferedOutput' => $vendorDir . '/symfony/console/Output/BufferedOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\ConsoleOutput' => $vendorDir . '/symfony/console/Output/ConsoleOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => $vendorDir . '/symfony/console/Output/ConsoleOutputInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => $vendorDir . '/symfony/console/Output/ConsoleSectionOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\NullOutput' => $vendorDir . '/symfony/console/Output/NullOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\Output' => $vendorDir . '/symfony/console/Output/Output.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\OutputInterface' => $vendorDir . '/symfony/console/Output/OutputInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\StreamOutput' => $vendorDir . '/symfony/console/Output/StreamOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => $vendorDir . '/symfony/console/Output/TrimmedBufferOutput.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Question\\ChoiceQuestion' => $vendorDir . '/symfony/console/Question/ChoiceQuestion.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => $vendorDir . '/symfony/console/Question/ConfirmationQuestion.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Question\\Question' => $vendorDir . '/symfony/console/Question/Question.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => $vendorDir . '/symfony/console/SignalRegistry/SignalRegistry.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\SingleCommandApplication' => $vendorDir . '/symfony/console/SingleCommandApplication.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Style\\OutputStyle' => $vendorDir . '/symfony/console/Style/OutputStyle.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Style\\StyleInterface' => $vendorDir . '/symfony/console/Style/StyleInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Style\\SymfonyStyle' => $vendorDir . '/symfony/console/Style/SymfonyStyle.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Terminal' => $vendorDir . '/symfony/console/Terminal.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Tester\\ApplicationTester' => $vendorDir . '/symfony/console/Tester/ApplicationTester.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Tester\\CommandCompletionTester' => $vendorDir . '/symfony/console/Tester/CommandCompletionTester.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Tester\\CommandTester' => $vendorDir . '/symfony/console/Tester/CommandTester.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Tester\\Constraint\\CommandIsSuccessful' => $vendorDir . '/symfony/console/Tester/Constraint/CommandIsSuccessful.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Console\\Tester\\TesterTrait' => $vendorDir . '/symfony/console/Tester/TesterTrait.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Comparator\\Comparator' => $vendorDir . '/symfony/finder/Comparator/Comparator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Comparator\\DateComparator' => $vendorDir . '/symfony/finder/Comparator/DateComparator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Comparator\\NumberComparator' => $vendorDir . '/symfony/finder/Comparator/NumberComparator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => $vendorDir . '/symfony/finder/Exception/AccessDeniedException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => $vendorDir . '/symfony/finder/Exception/DirectoryNotFoundException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Finder' => $vendorDir . '/symfony/finder/Finder.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Gitignore' => $vendorDir . '/symfony/finder/Gitignore.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Glob' => $vendorDir . '/symfony/finder/Glob.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => $vendorDir . '/symfony/finder/Iterator/CustomFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DateRangeFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => $vendorDir . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FileTypeFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilecontentFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilenameFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\LazyIterator' => $vendorDir . '/symfony/finder/Iterator/LazyIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => $vendorDir . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => $vendorDir . '/symfony/finder/Iterator/PathFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => $vendorDir . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\SortableIterator' => $vendorDir . '/symfony/finder/Iterator/SortableIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => $vendorDir . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Finder\\SplFileInfo' => $vendorDir . '/symfony/finder/SplFileInfo.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/process/Exception/ExceptionInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/process/Exception/InvalidArgumentException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\LogicException' => $vendorDir . '/symfony/process/Exception/LogicException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\ProcessFailedException' => $vendorDir . '/symfony/process/Exception/ProcessFailedException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => $vendorDir . '/symfony/process/Exception/ProcessSignaledException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => $vendorDir . '/symfony/process/Exception/ProcessTimedOutException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Exception\\RuntimeException' => $vendorDir . '/symfony/process/Exception/RuntimeException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\ExecutableFinder' => $vendorDir . '/symfony/process/ExecutableFinder.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\InputStream' => $vendorDir . '/symfony/process/InputStream.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\PhpExecutableFinder' => $vendorDir . '/symfony/process/PhpExecutableFinder.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\PhpProcess' => $vendorDir . '/symfony/process/PhpProcess.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Pipes\\AbstractPipes' => $vendorDir . '/symfony/process/Pipes/AbstractPipes.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Pipes\\PipesInterface' => $vendorDir . '/symfony/process/Pipes/PipesInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Pipes\\UnixPipes' => $vendorDir . '/symfony/process/Pipes/UnixPipes.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Pipes\\WindowsPipes' => $vendorDir . '/symfony/process/Pipes/WindowsPipes.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\Process' => $vendorDir . '/symfony/process/Process.php', '_PHPStan_b22655c3f\\Symfony\\Component\\Process\\ProcessUtils' => $vendorDir . '/symfony/process/ProcessUtils.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\AbstractString' => $vendorDir . '/symfony/string/AbstractString.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\AbstractUnicodeString' => $vendorDir . '/symfony/string/AbstractUnicodeString.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\ByteString' => $vendorDir . '/symfony/string/ByteString.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\CodePointString' => $vendorDir . '/symfony/string/CodePointString.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/string/Exception/ExceptionInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/string/Exception/InvalidArgumentException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Exception\\RuntimeException' => $vendorDir . '/symfony/string/Exception/RuntimeException.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Inflector\\EnglishInflector' => $vendorDir . '/symfony/string/Inflector/EnglishInflector.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Inflector\\FrenchInflector' => $vendorDir . '/symfony/string/Inflector/FrenchInflector.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Inflector\\InflectorInterface' => $vendorDir . '/symfony/string/Inflector/InflectorInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\LazyString' => $vendorDir . '/symfony/string/LazyString.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Slugger\\AsciiSlugger' => $vendorDir . '/symfony/string/Slugger/AsciiSlugger.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\Slugger\\SluggerInterface' => $vendorDir . '/symfony/string/Slugger/SluggerInterface.php', '_PHPStan_b22655c3f\\Symfony\\Component\\String\\UnicodeString' => $vendorDir . '/symfony/string/UnicodeString.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\Attribute\\Required' => $vendorDir . '/symfony/service-contracts/Attribute/Required.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => $vendorDir . '/symfony/service-contracts/Attribute/SubscribedService.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\ResetInterface' => $vendorDir . '/symfony/service-contracts/ResetInterface.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\ServiceLocatorTrait' => $vendorDir . '/symfony/service-contracts/ServiceLocatorTrait.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\ServiceProviderInterface' => $vendorDir . '/symfony/service-contracts/ServiceProviderInterface.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberInterface.php', '_PHPStan_b22655c3f\\Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php', '_PHPStan_b22655c3f\\Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php', ); MIT License Copyright (c) 2017 Composer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ declare (strict_types=1); namespace _PHPStan_b22655c3f\Composer\XdebugHandler; use _PHPStan_b22655c3f\Composer\Pcre\Preg; use _PHPStan_b22655c3f\Psr\Log\LoggerInterface; /** * @author John Stevenson * * @phpstan-import-type restartData from PhpConfig */ class XdebugHandler { const SUFFIX_ALLOW = '_ALLOW_XDEBUG'; const SUFFIX_INIS = '_ORIGINAL_INIS'; const RESTART_ID = 'internal'; const RESTART_SETTINGS = 'XDEBUG_HANDLER_SETTINGS'; const DEBUG = 'XDEBUG_HANDLER_DEBUG'; /** @var string|null */ protected $tmpIni; /** @var bool */ private static $inRestart; /** @var string */ private static $name; /** @var string|null */ private static $skipped; /** @var bool */ private static $xdebugActive; /** @var string|null */ private static $xdebugMode; /** @var string|null */ private static $xdebugVersion; /** @var bool */ private $cli; /** @var string|null */ private $debug; /** @var string */ private $envAllowXdebug; /** @var string */ private $envOriginalInis; /** @var bool */ private $persistent; /** @var string|null */ private $script; /** @var Status */ private $statusWriter; /** * Constructor * * The $envPrefix is used to create distinct environment variables. It is * uppercased and prepended to the default base values. For example 'myapp' * would result in MYAPP_ALLOW_XDEBUG and MYAPP_ORIGINAL_INIS. * * @param string $envPrefix Value used in environment variables * @throws \RuntimeException If the parameter is invalid */ public function __construct(string $envPrefix) { if ($envPrefix === '') { throw new \RuntimeException('Invalid constructor parameter'); } self::$name = \strtoupper($envPrefix); $this->envAllowXdebug = self::$name . self::SUFFIX_ALLOW; $this->envOriginalInis = self::$name . self::SUFFIX_INIS; self::setXdebugDetails(); self::$inRestart = \false; if ($this->cli = \PHP_SAPI === 'cli') { $this->debug = (string) \getenv(self::DEBUG); } $this->statusWriter = new Status($this->envAllowXdebug, (bool) $this->debug); } /** * Activates status message output to a PSR3 logger */ public function setLogger(LoggerInterface $logger) : self { $this->statusWriter->setLogger($logger); return $this; } /** * Sets the main script location if it cannot be called from argv */ public function setMainScript(string $script) : self { $this->script = $script; return $this; } /** * Persist the settings to keep Xdebug out of sub-processes */ public function setPersistent() : self { $this->persistent = \true; return $this; } /** * Checks if Xdebug is loaded and the process needs to be restarted * * This behaviour can be disabled by setting the MYAPP_ALLOW_XDEBUG * environment variable to 1. This variable is used internally so that * the restarted process is created only once. */ public function check() : void { $this->notify(Status::CHECK, self::$xdebugVersion . '|' . self::$xdebugMode); $envArgs = \explode('|', (string) \getenv($this->envAllowXdebug)); if (!(bool) $envArgs[0] && $this->requiresRestart(self::$xdebugActive)) { // Restart required $this->notify(Status::RESTART); $command = $this->prepareRestart(); if ($command !== null) { $this->restart($command); } return; } if (self::RESTART_ID === $envArgs[0] && \count($envArgs) === 5) { // Restarted, so unset environment variable and use saved values $this->notify(Status::RESTARTED); Process::setEnv($this->envAllowXdebug); self::$inRestart = \true; if (self::$xdebugVersion === null) { // Skipped version is only set if Xdebug is not loaded self::$skipped = $envArgs[1]; } $this->tryEnableSignals(); // Put restart settings in the environment $this->setEnvRestartSettings($envArgs); return; } $this->notify(Status::NORESTART); $settings = self::getRestartSettings(); if ($settings !== null) { // Called with existing settings, so sync our settings $this->syncSettings($settings); } } /** * Returns an array of php.ini locations with at least one entry * * The equivalent of calling php_ini_loaded_file then php_ini_scanned_files. * The loaded ini location is the first entry and may be an empty string. * * @return non-empty-list */ public static function getAllIniFiles() : array { if (self::$name !== null) { $env = \getenv(self::$name . self::SUFFIX_INIS); if (\false !== $env) { return \explode(\PATH_SEPARATOR, $env); } } $paths = [(string) \php_ini_loaded_file()]; $scanned = \php_ini_scanned_files(); if ($scanned !== \false) { $paths = \array_merge($paths, \array_map('trim', \explode(',', $scanned))); } return $paths; } /** * Returns an array of restart settings or null * * Settings will be available if the current process was restarted, or * called with the settings from an existing restart. * * @phpstan-return restartData|null */ public static function getRestartSettings() : ?array { $envArgs = \explode('|', (string) \getenv(self::RESTART_SETTINGS)); if (\count($envArgs) !== 6 || !self::$inRestart && \php_ini_loaded_file() !== $envArgs[0]) { return null; } return ['tmpIni' => $envArgs[0], 'scannedInis' => (bool) $envArgs[1], 'scanDir' => '*' === $envArgs[2] ? \false : $envArgs[2], 'phprc' => '*' === $envArgs[3] ? \false : $envArgs[3], 'inis' => \explode(\PATH_SEPARATOR, $envArgs[4]), 'skipped' => $envArgs[5]]; } /** * Returns the Xdebug version that triggered a successful restart */ public static function getSkippedVersion() : string { return (string) self::$skipped; } /** * Returns whether Xdebug is loaded and active * * true: if Xdebug is loaded and is running in an active mode. * false: if Xdebug is not loaded, or it is running with xdebug.mode=off. */ public static function isXdebugActive() : bool { self::setXdebugDetails(); return self::$xdebugActive; } /** * Allows an extending class to decide if there should be a restart * * The default is to restart if Xdebug is loaded and its mode is not "off". */ protected function requiresRestart(bool $default) : bool { return $default; } /** * Allows an extending class to access the tmpIni * * @param non-empty-list $command */ protected function restart(array $command) : void { $this->doRestart($command); } /** * Executes the restarted command then deletes the tmp ini * * @param non-empty-list $command * @phpstan-return never */ private function doRestart(array $command) : void { if (\PHP_VERSION_ID >= 70400) { $cmd = $command; $displayCmd = \sprintf('[%s]', \implode(', ', $cmd)); } else { $cmd = Process::escapeShellCommand($command); if (\defined('PHP_WINDOWS_VERSION_BUILD')) { // Outer quotes required on cmd string below PHP 8 $cmd = '"' . $cmd . '"'; } $displayCmd = $cmd; } $this->tryEnableSignals(); $this->notify(Status::RESTARTING, $displayCmd); $process = \proc_open($cmd, [], $pipes); if (\is_resource($process)) { $exitCode = \proc_close($process); } if (!isset($exitCode)) { // Unlikely that php or the default shell cannot be invoked $this->notify(Status::ERROR, 'Unable to restart process'); $exitCode = -1; } else { $this->notify(Status::INFO, 'Restarted process exited ' . $exitCode); } if ($this->debug === '2') { $this->notify(Status::INFO, 'Temp ini saved: ' . $this->tmpIni); } else { @\unlink((string) $this->tmpIni); } exit($exitCode); } /** * Returns the command line array if everything was written for the restart * * If any of the following fails (however unlikely) we must return false to * stop potential recursion: * - tmp ini file creation * - environment variable creation * * @return non-empty-list|null */ private function prepareRestart() : ?array { if (!$this->cli) { $this->notify(Status::ERROR, 'Unsupported SAPI: ' . \PHP_SAPI); return null; } if (($argv = $this->checkServerArgv()) === null) { $this->notify(Status::ERROR, '$_SERVER[argv] is not as expected'); return null; } if (!$this->checkConfiguration($info)) { $this->notify(Status::ERROR, $info); return null; } $mainScript = (string) $this->script; if (!$this->checkMainScript($mainScript, $argv)) { $this->notify(Status::ERROR, 'Unable to access main script: ' . $mainScript); return null; } $tmpDir = \sys_get_temp_dir(); $iniError = 'Unable to create temp ini file at: ' . $tmpDir; if (($tmpfile = @\tempnam($tmpDir, '')) === \false) { $this->notify(Status::ERROR, $iniError); return null; } $error = null; $iniFiles = self::getAllIniFiles(); $scannedInis = \count($iniFiles) > 1; if (!$this->writeTmpIni($tmpfile, $iniFiles, $error)) { $this->notify(Status::ERROR, $error ?? $iniError); @\unlink($tmpfile); return null; } if (!$this->setEnvironment($scannedInis, $iniFiles, $tmpfile)) { $this->notify(Status::ERROR, 'Unable to set environment variables'); @\unlink($tmpfile); return null; } $this->tmpIni = $tmpfile; return $this->getCommand($argv, $tmpfile, $mainScript); } /** * Returns true if the tmp ini file was written * * @param non-empty-list $iniFiles All ini files used in the current process */ private function writeTmpIni(string $tmpFile, array $iniFiles, ?string &$error) : bool { // $iniFiles has at least one item and it may be empty if ($iniFiles[0] === '') { \array_shift($iniFiles); } $content = ''; $sectionRegex = '/^\\s*\\[(?:PATH|HOST)\\s*=/mi'; $xdebugRegex = '/^\\s*(zend_extension\\s*=.*xdebug.*)$/mi'; foreach ($iniFiles as $file) { // Check for inaccessible ini files if (($data = @\file_get_contents($file)) === \false) { $error = 'Unable to read ini: ' . $file; return \false; } // Check and remove directives after HOST and PATH sections if (Preg::isMatchWithOffsets($sectionRegex, $data, $matches)) { $data = \substr($data, 0, $matches[0][1]); } $content .= Preg::replace($xdebugRegex, ';$1', $data) . \PHP_EOL; } // Merge loaded settings into our ini content, if it is valid $config = \parse_ini_string($content); $loaded = \ini_get_all(null, \false); if (\false === $config || \false === $loaded) { $error = 'Unable to parse ini data'; return \false; } $content .= $this->mergeLoadedConfig($loaded, $config); // Work-around for https://bugs.php.net/bug.php?id=75932 $content .= 'opcache.enable_cli=0' . \PHP_EOL; return (bool) @\file_put_contents($tmpFile, $content); } /** * Returns the command line arguments for the restart * * @param non-empty-list $argv * @return non-empty-list */ private function getCommand(array $argv, string $tmpIni, string $mainScript) : array { $php = [\PHP_BINARY]; $args = \array_slice($argv, 1); if (!$this->persistent) { // Use command-line options \array_push($php, '-n', '-c', $tmpIni); } return \array_merge($php, [$mainScript], $args); } /** * Returns true if the restart environment variables were set * * No need to update $_SERVER since this is set in the restarted process. * * @param non-empty-list $iniFiles All ini files used in the current process */ private function setEnvironment(bool $scannedInis, array $iniFiles, string $tmpIni) : bool { $scanDir = \getenv('PHP_INI_SCAN_DIR'); $phprc = \getenv('PHPRC'); // Make original inis available to restarted process if (!\putenv($this->envOriginalInis . '=' . \implode(\PATH_SEPARATOR, $iniFiles))) { return \false; } if ($this->persistent) { // Use the environment to persist the settings if (!\putenv('PHP_INI_SCAN_DIR=') || !\putenv('PHPRC=' . $tmpIni)) { return \false; } } // Flag restarted process and save values for it to use $envArgs = [self::RESTART_ID, self::$xdebugVersion, (int) $scannedInis, \false === $scanDir ? '*' : $scanDir, \false === $phprc ? '*' : $phprc]; return \putenv($this->envAllowXdebug . '=' . \implode('|', $envArgs)); } /** * Logs status messages */ private function notify(string $op, ?string $data = null) : void { $this->statusWriter->report($op, $data); } /** * Returns default, changed and command-line ini settings * * @param mixed[] $loadedConfig All current ini settings * @param mixed[] $iniConfig Settings from user ini files * */ private function mergeLoadedConfig(array $loadedConfig, array $iniConfig) : string { $content = ''; foreach ($loadedConfig as $name => $value) { // Value will either be null, string or array (HHVM only) if (!\is_string($value) || \strpos($name, 'xdebug') === 0 || $name === 'apc.mmap_file_mask') { continue; } if (!isset($iniConfig[$name]) || $iniConfig[$name] !== $value) { // Double-quote escape each value $content .= $name . '="' . \addcslashes($value, '\\"') . '"' . \PHP_EOL; } } return $content; } /** * Returns true if the script name can be used * * @param non-empty-list $argv */ private function checkMainScript(string &$mainScript, array $argv) : bool { if ($mainScript !== '') { // Allow an application to set -- for standard input return \file_exists($mainScript) || '--' === $mainScript; } if (\file_exists($mainScript = $argv[0])) { return \true; } // Use a backtrace to resolve Phar and chdir issues. $trace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS); $main = \end($trace); if ($main !== \false && isset($main['file'])) { return \file_exists($mainScript = $main['file']); } return \false; } /** * Adds restart settings to the environment * * @param non-empty-list $envArgs */ private function setEnvRestartSettings(array $envArgs) : void { $settings = [\php_ini_loaded_file(), $envArgs[2], $envArgs[3], $envArgs[4], \getenv($this->envOriginalInis), self::$skipped]; Process::setEnv(self::RESTART_SETTINGS, \implode('|', $settings)); } /** * Syncs settings and the environment if called with existing settings * * @phpstan-param restartData $settings */ private function syncSettings(array $settings) : void { if (\false === \getenv($this->envOriginalInis)) { // Called by another app, so make original inis available Process::setEnv($this->envOriginalInis, \implode(\PATH_SEPARATOR, $settings['inis'])); } self::$skipped = $settings['skipped']; $this->notify(Status::INFO, 'Process called with existing restart settings'); } /** * Returns true if there are no known configuration issues */ private function checkConfiguration(?string &$info) : bool { if (!\function_exists('proc_open')) { $info = 'proc_open function is disabled'; return \false; } if (!\file_exists(\PHP_BINARY)) { $info = 'PHP_BINARY is not available'; return \false; } if (\extension_loaded('uopz') && !(bool) \ini_get('uopz.disable')) { // uopz works at opcode level and disables exit calls if (\function_exists('uopz_allow_exit')) { @\uopz_allow_exit(\true); } else { $info = 'uopz extension is not compatible'; return \false; } } // Check UNC paths when using cmd.exe if (\defined('PHP_WINDOWS_VERSION_BUILD') && \PHP_VERSION_ID < 70400) { $workingDir = \getcwd(); if ($workingDir === \false) { $info = 'unable to determine working directory'; return \false; } if (0 === \strpos($workingDir, '\\\\')) { $info = 'cmd.exe does not support UNC paths: ' . $workingDir; return \false; } } return \true; } /** * Enables async signals and control interrupts in the restarted process * * Available on Unix PHP 7.1+ with the pcntl extension and Windows PHP 7.4+. */ private function tryEnableSignals() : void { if (\function_exists('pcntl_async_signals') && \function_exists('pcntl_signal')) { \pcntl_async_signals(\true); $message = 'Async signals enabled'; if (!self::$inRestart) { // Restarting, so ignore SIGINT in parent \pcntl_signal(\SIGINT, \SIG_IGN); } elseif (\is_int(\pcntl_signal_get_handler(\SIGINT))) { // Restarted, no handler set so force default action \pcntl_signal(\SIGINT, \SIG_DFL); } } if (!self::$inRestart && \function_exists('sapi_windows_set_ctrl_handler')) { // Restarting, so set a handler to ignore CTRL events in the parent. // This ensures that CTRL+C events will be available in the child // process without having to enable them there, which is unreliable. \sapi_windows_set_ctrl_handler(function ($evt) { }); } } /** * Returns $_SERVER['argv'] if it is as expected * * @return non-empty-list|null */ private function checkServerArgv() : ?array { $result = []; if (isset($_SERVER['argv']) && \is_array($_SERVER['argv'])) { foreach ($_SERVER['argv'] as $value) { if (!\is_string($value)) { return null; } $result[] = $value; } } return \count($result) > 0 ? $result : null; } /** * Sets static properties $xdebugActive, $xdebugVersion and $xdebugMode */ private static function setXdebugDetails() : void { if (self::$xdebugActive !== null) { return; } self::$xdebugActive = \false; if (!\extension_loaded('xdebug')) { return; } $version = \phpversion('xdebug'); self::$xdebugVersion = $version !== \false ? $version : 'unknown'; if (\version_compare(self::$xdebugVersion, '3.1', '>=')) { $modes = \xdebug_info('mode'); self::$xdebugMode = \count($modes) === 0 ? 'off' : \implode(',', $modes); self::$xdebugActive = self::$xdebugMode !== 'off'; return; } // See if xdebug.mode is supported in this version $iniMode = \ini_get('xdebug.mode'); if ($iniMode === \false) { self::$xdebugActive = \true; return; } // Environment value wins but cannot be empty $envMode = (string) \getenv('XDEBUG_MODE'); if ($envMode !== '') { self::$xdebugMode = $envMode; } else { self::$xdebugMode = $iniMode !== '' ? $iniMode : 'off'; } // An empty comma-separated list is treated as mode 'off' if (Preg::isMatch('/^,+$/', \str_replace(' ', '', self::$xdebugMode))) { self::$xdebugMode = 'off'; } self::$xdebugActive = self::$xdebugMode !== 'off'; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ declare (strict_types=1); namespace _PHPStan_b22655c3f\Composer\XdebugHandler; use _PHPStan_b22655c3f\Composer\Pcre\Preg; /** * Process utility functions * * @author John Stevenson */ class Process { /** * Escapes a string to be used as a shell argument. * * From https://github.com/johnstevenson/winbox-args * MIT Licensed (c) John Stevenson * * @param string $arg The argument to be escaped * @param bool $meta Additionally escape cmd.exe meta characters * @param bool $module The argument is the module to invoke */ public static function escape(string $arg, bool $meta = \true, bool $module = \false) : string { if (!\defined('PHP_WINDOWS_VERSION_BUILD')) { return "'" . \str_replace("'", "'\\''", $arg) . "'"; } $quote = \strpbrk($arg, " \t") !== \false || $arg === ''; $arg = Preg::replace('/(\\\\*)"/', '$1$1\\"', $arg, -1, $dquotes); $dquotes = (bool) $dquotes; if ($meta) { $meta = $dquotes || Preg::isMatch('/%[^%]+%/', $arg); if (!$meta) { $quote = $quote || \strpbrk($arg, '^&|<>()') !== \false; } elseif ($module && !$dquotes && $quote) { $meta = \false; } } if ($quote) { $arg = '"' . Preg::replace('/(\\\\*)$/', '$1$1', $arg) . '"'; } if ($meta) { $arg = Preg::replace('/(["^&|<>()%])/', '^$1', $arg); } return $arg; } /** * Escapes an array of arguments that make up a shell command * * @param string[] $args Argument list, with the module name first */ public static function escapeShellCommand(array $args) : string { $command = ''; $module = \array_shift($args); if ($module !== null) { $command = self::escape($module, \true, \true); foreach ($args as $arg) { $command .= ' ' . self::escape($arg); } } return $command; } /** * Makes putenv environment changes available in $_SERVER and $_ENV * * @param string $name * @param ?string $value A null value unsets the variable */ public static function setEnv(string $name, ?string $value = null) : bool { $unset = null === $value; if (!\putenv($unset ? $name : $name . '=' . $value)) { return \false; } if ($unset) { unset($_SERVER[$name]); } else { $_SERVER[$name] = $value; } // Update $_ENV if it is being used if (\false !== \stripos((string) \ini_get('variables_order'), 'E')) { if ($unset) { unset($_ENV[$name]); } else { $_ENV[$name] = $value; } } return \true; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\XdebugHandler; /** * @author John Stevenson * * @phpstan-type restartData array{tmpIni: string, scannedInis: bool, scanDir: false|string, phprc: false|string, inis: string[], skipped: string} */ class PhpConfig { /** * Use the original PHP configuration * * @return string[] Empty array of PHP cli options */ public function useOriginal() : array { $this->getDataAndReset(); return []; } /** * Use standard restart settings * * @return string[] PHP cli options */ public function useStandard() : array { $data = $this->getDataAndReset(); if ($data !== null) { return ['-n', '-c', $data['tmpIni']]; } return []; } /** * Use environment variables to persist settings * * @return string[] Empty array of PHP cli options */ public function usePersistent() : array { $data = $this->getDataAndReset(); if ($data !== null) { $this->updateEnv('PHPRC', $data['tmpIni']); $this->updateEnv('PHP_INI_SCAN_DIR', ''); } return []; } /** * Returns restart data if available and resets the environment * * @phpstan-return restartData|null */ private function getDataAndReset() : ?array { $data = XdebugHandler::getRestartSettings(); if ($data !== null) { $this->updateEnv('PHPRC', $data['phprc']); $this->updateEnv('PHP_INI_SCAN_DIR', $data['scanDir']); } return $data; } /** * Updates a restart settings value in the environment * * @param string $name * @param string|false $value */ private function updateEnv(string $name, $value) : void { Process::setEnv($name, \false !== $value ? $value : null); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ declare (strict_types=1); namespace _PHPStan_b22655c3f\Composer\XdebugHandler; use _PHPStan_b22655c3f\Psr\Log\LoggerInterface; use _PHPStan_b22655c3f\Psr\Log\LogLevel; /** * @author John Stevenson * @internal */ class Status { const ENV_RESTART = 'XDEBUG_HANDLER_RESTART'; const CHECK = 'Check'; const ERROR = 'Error'; const INFO = 'Info'; const NORESTART = 'NoRestart'; const RESTART = 'Restart'; const RESTARTING = 'Restarting'; const RESTARTED = 'Restarted'; /** @var bool */ private $debug; /** @var string */ private $envAllowXdebug; /** @var string|null */ private $loaded; /** @var LoggerInterface|null */ private $logger; /** @var bool */ private $modeOff; /** @var float */ private $time; /** * @param string $envAllowXdebug Prefixed _ALLOW_XDEBUG name * @param bool $debug Whether debug output is required */ public function __construct(string $envAllowXdebug, bool $debug) { $start = \getenv(self::ENV_RESTART); Process::setEnv(self::ENV_RESTART); $this->time = \is_numeric($start) ? \round((\microtime(\true) - $start) * 1000) : 0; $this->envAllowXdebug = $envAllowXdebug; $this->debug = $debug && \defined('STDERR'); $this->modeOff = \false; } /** * Activates status message output to a PSR3 logger * * @return void */ public function setLogger(LoggerInterface $logger) : void { $this->logger = $logger; } /** * Calls a handler method to report a message * * @throws \InvalidArgumentException If $op is not known */ public function report(string $op, ?string $data) : void { if ($this->logger !== null || $this->debug) { $param = (string) $data; switch ($op) { case self::CHECK: $this->reportCheck($param); break; case self::ERROR: $this->reportError($param); break; case self::INFO: $this->reportInfo($param); break; case self::NORESTART: $this->reportNoRestart(); break; case self::RESTART: $this->reportRestart(); break; case self::RESTARTED: $this->reportRestarted(); break; case self::RESTARTING: $this->reportRestarting($param); break; default: throw new \InvalidArgumentException('Unknown op handler: ' . $op); } } } /** * Outputs a status message */ private function output(string $text, ?string $level = null) : void { if ($this->logger !== null) { $this->logger->log($level !== null ? $level : LogLevel::DEBUG, $text); } if ($this->debug) { \fwrite(\STDERR, \sprintf('xdebug-handler[%d] %s', \getmypid(), $text . \PHP_EOL)); } } /** * Checking status message */ private function reportCheck(string $loaded) : void { list($version, $mode) = \explode('|', $loaded); if ($version !== '') { $this->loaded = '(' . $version . ')' . ($mode !== '' ? ' xdebug.mode=' . $mode : ''); } $this->modeOff = $mode === 'off'; $this->output('Checking ' . $this->envAllowXdebug); } /** * Error status message */ private function reportError(string $error) : void { $this->output(\sprintf('No restart (%s)', $error), LogLevel::WARNING); } /** * Info status message */ private function reportInfo(string $info) : void { $this->output($info); } /** * No restart status message */ private function reportNoRestart() : void { $this->output($this->getLoadedMessage()); if ($this->loaded !== null) { $text = \sprintf('No restart (%s)', $this->getEnvAllow()); if (!(bool) \getenv($this->envAllowXdebug)) { $text .= ' Allowed by ' . ($this->modeOff ? 'xdebug.mode' : 'application'); } $this->output($text); } } /** * Restart status message */ private function reportRestart() : void { $this->output($this->getLoadedMessage()); Process::setEnv(self::ENV_RESTART, (string) \microtime(\true)); } /** * Restarted status message */ private function reportRestarted() : void { $loaded = $this->getLoadedMessage(); $text = \sprintf('Restarted (%d ms). %s', $this->time, $loaded); $level = $this->loaded !== null ? LogLevel::WARNING : null; $this->output($text, $level); } /** * Restarting status message */ private function reportRestarting(string $command) : void { $text = \sprintf('Process restarting (%s)', $this->getEnvAllow()); $this->output($text); $text = 'Running: ' . $command; $this->output($text); } /** * Returns the _ALLOW_XDEBUG environment variable as name=value */ private function getEnvAllow() : string { return $this->envAllowXdebug . '=' . \getenv($this->envAllowXdebug); } /** * Returns the Xdebug status and version */ private function getLoadedMessage() : string { $loaded = $this->loaded !== null ? \sprintf('loaded %s', $this->loaded) : 'not loaded'; return 'The Xdebug extension is ' . $loaded; } } This file was automatically generated by Composer Patches (https://github.com/cweagans/composer-patches) Patches applied to this directory: 0 Source: patches/cloudflare-ca.patch Copyright (C) 2016 Composer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## ## Bundle of CA Root Certificates ## ## Certificate data from Mozilla as of: Mon Mar 11 15:25:27 2024 GMT ## ## This is a bundle of X.509 certificates of public Certificate Authorities ## (CA). These were automatically extracted from Mozilla's root certificates ## file (certdata.txt). This file can be found in the mozilla source tree: ## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt ## ## It contains the certificates in PEM format and therefore ## can be directly used with curl / libcurl / php_curl, or with ## an Apache+mod_ssl webserver for SSL client authentication. ## Just configure this file as the SSLCACertificateFile. ## ## Conversion done with mk-ca-bundle.pl version 1.29. ## SHA256: 4d96bd539f4719e9ace493757afbe4a23ee8579de1c97fbebc50bba3c12e8c1e ## GlobalSign Root CA ================== -----BEGIN CERTIFICATE----- MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== -----END CERTIFICATE----- Entrust.net Premium 2048 Secure Server CA ========================================= -----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= -----END CERTIFICATE----- Baltimore CyberTrust Root ========================= -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp -----END CERTIFICATE----- Entrust Root Certification Authority ==================================== -----BEGIN CERTIFICATE----- MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 -----END CERTIFICATE----- Comodo AAA Services root ======================== -----BEGIN CERTIFICATE----- MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm 7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z 8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C 12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== -----END CERTIFICATE----- QuoVadis Root CA 2 ================== -----BEGIN CERTIFICATE----- MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt 66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK +JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II 4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u -----END CERTIFICATE----- QuoVadis Root CA 3 ================== -----BEGIN CERTIFICATE----- MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp 8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= -----END CERTIFICATE----- XRamp Global CA Root ==================== -----BEGIN CERTIFICATE----- MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc /Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz 8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= -----END CERTIFICATE----- Go Daddy Class 2 CA =================== -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv 2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b vZ8= -----END CERTIFICATE----- Starfield Class 2 CA ==================== -----BEGIN CERTIFICATE----- MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 QBFGmh95DmK/D5fs4C8fF5Q= -----END CERTIFICATE----- DigiCert Assured ID Root CA =========================== -----BEGIN CERTIFICATE----- MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO 9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW /lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF 66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i 8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== -----END CERTIFICATE----- DigiCert Global Root CA ======================= -----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H 4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y 7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm 8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE----- DigiCert High Assurance EV Root CA ================================== -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K -----END CERTIFICATE----- SwissSign Gold CA - G2 ====================== -----BEGIN CERTIFICATE----- MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR 7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm 5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr 44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ -----END CERTIFICATE----- SwissSign Silver CA - G2 ======================== -----BEGIN CERTIFICATE----- MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG 9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm +/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH 6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P 4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L 3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx /uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u -----END CERTIFICATE----- SecureTrust CA ============== -----BEGIN CERTIFICATE----- MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b 01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR 3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= -----END CERTIFICATE----- Secure Global CA ================ -----BEGIN CERTIFICATE----- MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g 8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi 0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW -----END CERTIFICATE----- COMODO Certification Authority ============================== -----BEGIN CERTIFICATE----- MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH +7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV 4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA 1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN +8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== -----END CERTIFICATE----- COMODO ECC Certification Authority ================================== -----BEGIN CERTIFICATE----- MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X 4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= -----END CERTIFICATE----- Certigna ======== -----BEGIN CERTIFICATE----- MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY 1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== -----END CERTIFICATE----- ePKI Root Certification Authority ================================= -----BEGIN CERTIFICATE----- MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX 12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= -----END CERTIFICATE----- certSIGN ROOT CA ================ -----BEGIN CERTIFICATE----- MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD 0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD -----END CERTIFICATE----- NetLock Arany (Class Gold) Főtanúsítvány ======================================== -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu 0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw /HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= -----END CERTIFICATE----- SecureSign RootCA11 =================== -----BEGIN CERTIFICATE----- MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= -----END CERTIFICATE----- Microsec e-Szigno Root CA 2009 ============================== -----BEGIN CERTIFICATE----- MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG 0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm 1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi LXpUq3DDfSJlgnCW -----END CERTIFICATE----- GlobalSign Root CA - R3 ======================= -----BEGIN CERTIFICATE----- MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ 0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r kpeDMdmztcpHWD9f -----END CERTIFICATE----- Izenpe.com ========== -----BEGIN CERTIFICATE----- MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ 03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU +zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK 0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ 0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== -----END CERTIFICATE----- Go Daddy Root Certificate Authority - G2 ======================================== -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq 9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD +qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r 5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 -----END CERTIFICATE----- Starfield Root Certificate Authority - G2 ========================================= -----BEGIN CERTIFICATE----- MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx 4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 -----END CERTIFICATE----- Starfield Services Root Certificate Authority - G2 ================================================== -----BEGIN CERTIFICATE----- MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 -----END CERTIFICATE----- AffirmTrust Commercial ====================== -----BEGIN CERTIFICATE----- MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv 0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= -----END CERTIFICATE----- AffirmTrust Networking ====================== -----BEGIN CERTIFICATE----- MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 /PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 /ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= -----END CERTIFICATE----- AffirmTrust Premium =================== -----BEGIN CERTIFICATE----- MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV 5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs +7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 /bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo +Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC 6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK +4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== -----END CERTIFICATE----- AffirmTrust Premium ECC ======================= -----BEGIN CERTIFICATE----- MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X 57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM eQ== -----END CERTIFICATE----- Certum Trusted Network CA ========================= -----BEGIN CERTIFICATE----- MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI 03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= -----END CERTIFICATE----- TWCA Root Certification Authority ================================= -----BEGIN CERTIFICATE----- MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP 4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG 9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== -----END CERTIFICATE----- Security Communication RootCA2 ============================== -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ +T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R 3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk 3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 -----END CERTIFICATE----- Actalis Authentication Root CA ============================== -----BEGIN CERTIFICATE----- MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC 4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo 2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== -----END CERTIFICATE----- Buypass Class 2 Root CA ======================= -----BEGIN CERTIFICATE----- MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn 9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b /+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN rJgWVqA= -----END CERTIFICATE----- Buypass Class 3 Root CA ======================= -----BEGIN CERTIFICATE----- MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR 5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh 7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH 2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV /afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz 6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi Cp/HuZc= -----END CERTIFICATE----- T-TeleSec GlobalRoot Class 3 ============================ -----BEGIN CERTIFICATE----- MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK 9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W 0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== -----END CERTIFICATE----- D-TRUST Root Class 3 CA 2 2009 ============================== -----BEGIN CERTIFICATE----- MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ 4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm 2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= -----END CERTIFICATE----- D-TRUST Root Class 3 CA 2 EV 2009 ================================= -----BEGIN CERTIFICATE----- MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T 7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv w9y4AyHqnxbxLFS1 -----END CERTIFICATE----- CA Disig Root R2 ================ -----BEGIN CERTIFICATE----- MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa 5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV 7+ZtsH8tZ/3zbBt1RqPlShfppNcL -----END CERTIFICATE----- ACCVRAIZ1 ========= -----BEGIN CERTIFICATE----- MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ 0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR 5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J 9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd 3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p EfbRD0tVNEYqi4Y7 -----END CERTIFICATE----- TWCA Global Root CA =================== -----BEGIN CERTIFICATE----- MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M 8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg /eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= -----END CERTIFICATE----- TeliaSonera Root CA v1 ====================== -----BEGIN CERTIFICATE----- MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ 6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA 3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx 0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= -----END CERTIFICATE----- T-TeleSec GlobalRoot Class 2 ============================ -----BEGIN CERTIFICATE----- MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR 3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN 9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== -----END CERTIFICATE----- Atos TrustedRoot 2011 ===================== -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr 54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G 3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed -----END CERTIFICATE----- QuoVadis Root CA 1 G3 ===================== -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6 Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV 7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX 9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3 GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP +V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh 3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6 O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0 FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV hMJKzRwuJIczYOXD -----END CERTIFICATE----- QuoVadis Root CA 2 G3 ===================== -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD 6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9 x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr O3jtZsSOeWmD3n+M -----END CERTIFICATE----- QuoVadis Root CA 3 G3 ===================== -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286 IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe 6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3 I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7 5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX 0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2 PpxxVJkES/1Y+Zj0 -----END CERTIFICATE----- DigiCert Assured ID Root G2 =========================== -----BEGIN CERTIFICATE----- MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH 35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv 0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo IhNzbM8m9Yop5w== -----END CERTIFICATE----- DigiCert Assured ID Root G3 =========================== -----BEGIN CERTIFICATE----- MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy 1vUhZscv6pZjamVFkpUBtA== -----END CERTIFICATE----- DigiCert Global Root G2 ======================= -----BEGIN CERTIFICATE----- MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO 3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu 5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/ iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl MrY= -----END CERTIFICATE----- DigiCert Global Root G3 ======================= -----BEGIN CERTIFICATE----- MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y 3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34 VOKa5Vt8sycX -----END CERTIFICATE----- DigiCert Trusted Root G4 ======================== -----BEGIN CERTIFICATE----- MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6 MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7 f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy 7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN 5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb /UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa 5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP 82Z+ -----END CERTIFICATE----- COMODO RSA Certification Authority ================================== -----BEGIN CERTIFICATE----- MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn dJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ FGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+ 5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG x8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX 2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL OvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3 sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C GCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5 WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w DQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt rFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+ nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg tZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp pC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA zMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq ZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52 7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I LaZRfyHBNVOFBkpdn627G190 -----END CERTIFICATE----- USERTrust RSA Certification Authority ===================================== -----BEGIN CERTIFICATE----- MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UE BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UE BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz 0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2j Y0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFn RghRy4YUVD+8M/5+bJz/Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O +T23LLb2VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq /nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6lZrEpfDKE Y1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8liM2EuLE/pDkP2QKe6xJM lXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8 yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+ eLf8ZxXhyVeEHg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF MAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPFUp/L+M+ZBn8b2kMVn54CVVeW FPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KOVWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ 7l8wXEskEVX/JJpuXior7gtNn3/3ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQ Eg9zKC7F4iRO/Fjs8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM 8WcRiQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYzeSf7dNXGi FSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZXHlKYC6SQK5MNyosycdi yA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9c J2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRBVXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGw sAvgnEzDHNb842m1R0aBL6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gx Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9 -----END CERTIFICATE----- USERTrust ECC Certification Authority ===================================== -----BEGIN CERTIFICATE----- MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2 0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu 9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= -----END CERTIFICATE----- GlobalSign ECC Root CA - R5 =========================== -----BEGIN CERTIFICATE----- MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6 SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 -----END CERTIFICATE----- IdenTrust Commercial Root CA 1 ============================== -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/ mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi 1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl 3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH 6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe 2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R cGzM7vRX+Bi6hG6H -----END CERTIFICATE----- IdenTrust Public Sector Root CA 1 ================================= -----BEGIN CERTIFICATE----- MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6 Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL 4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4 Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ 3Wl9af0AVqW3rLatt8o+Ae+c -----END CERTIFICATE----- Entrust Root Certification Authority - G2 ========================================= -----BEGIN CERTIFICATE----- MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP /vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6 0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+ vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO e4pIb4tF9g== -----END CERTIFICATE----- Entrust Root Certification Authority - EC1 ========================================== -----BEGIN CERTIFICATE----- MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef 9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8 kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G -----END CERTIFICATE----- CFCA EV ROOT ============ -----BEGIN CERTIFICATE----- MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD 7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7 xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB /wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua 4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su -----END CERTIFICATE----- OISTE WISeKey Global Root GB CA =============================== -----BEGIN CERTIFICATE----- MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk 9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB /zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0 VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= -----END CERTIFICATE----- SZAFIR ROOT CA2 =============== -----BEGIN CERTIFICATE----- MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE 2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5 O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67 oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul 4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6 +/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw== -----END CERTIFICATE----- Certum Trusted Network CA 2 =========================== -----BEGIN CERTIFICATE----- MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1 bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9 7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130 GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ 9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7 zAYspsbiDrW5viSP -----END CERTIFICATE----- Hellenic Academic and Research Institutions RootCA 2015 ======================================================= -----BEGIN CERTIFICATE----- MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0 aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+ 6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2 fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+ D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn 82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q p/UsQu0yrbYhnr68 -----END CERTIFICATE----- Hellenic Academic and Research Institutions ECC RootCA 2015 =========================================================== -----BEGIN CERTIFICATE----- MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0 aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290 Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR -----END CERTIFICATE----- ISRG Root X1 ============ -----BEGIN CERTIFICATE----- MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1 3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ 4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf 1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY 9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV 0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ m+kXQ99b21/+jh5Xos1AnX5iItreGCc= -----END CERTIFICATE----- AC RAIZ FNMT-RCM ================ -----BEGIN CERTIFICATE----- MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou 08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ 47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW +YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7 Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d 8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm 5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM= -----END CERTIFICATE----- Amazon Root CA 1 ================ -----BEGIN CERTIFICATE----- MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1 MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB /zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3 DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy 8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa 2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2 xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5 -----END CERTIFICATE----- Amazon Root CA 2 ================ -----BEGIN CERTIFICATE----- MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1 MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4 kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9 AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0 Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+ 3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY +gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3 KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw= -----END CERTIFICATE----- Amazon Root CA 3 ================ -----BEGIN CERTIFICATE----- MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43 rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw== -----END CERTIFICATE----- Amazon Root CA 4 ================ -----BEGIN CERTIFICATE----- MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN /sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri 83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1 AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA== -----END CERTIFICATE----- TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 ============================================= -----BEGIN CERTIFICATE----- MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11 IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8 6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0 3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9 WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= -----END CERTIFICATE----- GDCA TrustAUTH R5 ROOT ====================== -----BEGIN CERTIFICATE----- MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCQ04xMjAw BgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8wHQYDVQQD DBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVow YjELMAkGA1UEBhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0B AQEFAAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJjDp6L3TQs AlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBjTnnEt1u9ol2x8kECK62p OqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+uKU49tm7srsHwJ5uu4/Ts765/94Y9cnrr pftZTqfrlYwiOXnhLQiPzLyRuEH3FMEjqcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ 9Cy5WmYqsBebnh52nUpmMUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQ xXABZG12ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloPzgsM R6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3GkL30SgLdTMEZeS1SZ D2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeCjGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4 oR24qoAATILnsn8JuLwwoC8N9VKejveSswoAHQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx 9hoh49pwBiFYFIeFd3mqgnkCAwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlR MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZmDRd9FBUb1Ov9 H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5COmSdI31R9KrO9b7eGZONn35 6ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ryL3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd +PwyvzeG5LuOmCd+uh8W4XAR8gPfJWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQ HtZa37dG/OaG+svgIHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBD F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ 8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQXR4EzzffHqhmsYzmIGrv /EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrqT8p+ck0LcIymSLumoRT2+1hEmRSuqguT aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== -----END CERTIFICATE----- SSL.com Root Certification Authority RSA ======================================== -----BEGIN CERTIFICATE----- MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxDjAM BgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24x MTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYw MjEyMTczOTM5WhcNNDEwMjEyMTczOTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NM LmNvbSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcNAQEBBQAD ggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2RxFdHaxh3a3by/ZPkPQ/C Fp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aXqhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8 P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcCC52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/ge oeOy3ZExqysdBP+lSgQ36YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkp k8zruFvh/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrFYD3Z fBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93EJNyAKoFBbZQ+yODJ gUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVcUS4cK38acijnALXRdMbX5J+tB5O2 UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi8 1xtZPCvM8hnIk2snYxnP/Okm+Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4s bE6x/c+cCbqiM+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4GA1UdDwEB/wQE AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGVcpNxJK1ok1iOMq8bs3AD/CUr dIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBcHadm47GUBwwyOabqG7B52B2ccETjit3E+ZUf ijhDPwGFpUenPUayvOUiaPd7nNgsPgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAsl u1OJD7OAUN5F7kR/q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjq erQ0cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jra6x+3uxj MxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90IH37hVZkLId6Tngr75qNJ vTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/YK9f1JmzJBjSWFupwWRoyeXkLtoh/D1JI Pb9s2KJELtFOt3JY04kTlf5Eq/jXixtunLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406y wKBjYZC6VWg3dGq2ktufoYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NI WuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k= -----END CERTIFICATE----- SSL.com Root Certification Authority ECC ======================================== -----BEGIN CERTIFICATE----- MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv BgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy MTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA BEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+ 8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR hXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT jgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW e+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z 5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl -----END CERTIFICATE----- SSL.com EV Root Certification Authority RSA R2 ============================================== -----BEGIN CERTIFICATE----- MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u MTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy MB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD VQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh hqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w cXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO Zw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+ B6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh CBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim 9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto RHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm JuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48 +qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp qJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1 ++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx Y/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G guDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz OFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7 CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq lD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR rwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1 hlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX 9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== -----END CERTIFICATE----- SSL.com EV Root Certification Authority ECC =========================================== -----BEGIN CERTIFICATE----- MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy BgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw MjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM LmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB BAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy 3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe 5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== -----END CERTIFICATE----- GlobalSign Root CA - R6 ======================= -----BEGIN CERTIFICATE----- MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEgMB4GA1UECxMX R2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds b2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQxMjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9i YWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFs U2lnbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQss grRIxutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1kZguSgMpE 3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxDaNc9PIrFsmbVkJq3MQbF vuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJwLnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqM PKq0pPbzlUoSB239jLKJz9CgYXfIWHSw1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+ azayOeSsJDa38O+2HBNXk7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05O WgtH8wY2SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/hbguy CLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4nWUx2OVvq+aWh2IMP 0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpYrZxCRXluDocZXFSxZba/jJvcE+kN b7gu3GduyYsRtYQUigAZcIN5kZeR1BonvzceMgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQE AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNV HSMEGDAWgBSubAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGtIxg93eFyRJa0 lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr6155wsTLxDKZmOMNOsIeDjHfrY BzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLjvUYAGm0CuiVdjaExUd1URhxN25mW7xocBFym Fe944Hn+Xds+qkxV/ZoVqW/hpvvfcDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr 3TsTjxKM4kEaSHpzoHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB1 0jZpnOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfspA9MRf/T uTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+vJJUEeKgDu+6B5dpffItK oZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+t JDfLRVpOoERIyNiwmcUVhAn21klJwGW45hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= -----END CERTIFICATE----- OISTE WISeKey Global Root GC CA =============================== -----BEGIN CERTIFICATE----- MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 -----END CERTIFICATE----- UCA Global G2 Root ================== -----BEGIN CERTIFICATE----- MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQG EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBHbG9iYWwgRzIgUm9vdDAeFw0x NjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlU cnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A MIICCgKCAgEAxeYrb3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmT oni9kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzmVHqUwCoV 8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/RVogvGjqNO7uCEeBHANBS h6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDcC/Vkw85DvG1xudLeJ1uK6NjGruFZfc8o LTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIjtm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/ R+zvWr9LesGtOxdQXGLYD0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBe KW4bHAyvj5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6DlNaBa 4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6iIis7nCs+dwp4wwc OxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznPO6Q0ibd5Ei9Hxeepl2n8pndntd97 8XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O BBYEFIHEjMz15DD/pQwIX4wVZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo 5sOASD0Ee/ojL3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl1qnN3e92mI0A Ds0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oUb3n09tDh05S60FdRvScFDcH9 yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LVPtateJLbXDzz2K36uGt/xDYotgIVilQsnLAX c47QN6MUPJiVAAwpBVueSUmxX8fjy88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHo jhJi6IjMtX9Gl8CbEGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZk bxqgDMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI+Vg7RE+x ygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGyYiGqhkCyLmTTX8jjfhFn RR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bXUB+K+wb1whnw0A== -----END CERTIFICATE----- UCA Extended Validation Root ============================ -----BEGIN CERTIFICATE----- MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQG EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9u IFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMxMDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8G A1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIi MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrs iWogD4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvSsPGP2KxF Rv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aopO2z6+I9tTcg1367r3CTu eUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dksHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR 59mzLC52LqGj3n5qiAno8geK+LLNEOfic0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH 0mK1lTnj8/FtDw5lhIpjVMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KR el7sFsLzKuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/TuDv B0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41Gsx2VYVdWf6/wFlth WG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs1+lvK9JKBZP8nm9rZ/+I8U6laUpS NwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQDfwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS 3H5aBZ8eNJr34RQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQEL BQADggIBADaNl8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQVBcZEhrxH9cM aVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5c6sq1WnIeJEmMX3ixzDx/BR4 dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb +7lsq+KePRXBOy5nAliRn+/4Qh8st2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOW F3sGPjLtx7dCvHaj2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwi GpWOvpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2CxR9GUeOc GMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmxcmtpzyKEC2IPrNkZAJSi djzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbMfjKaiJUINlK73nZfdklJrX+9ZSCyycEr dhh2n1ax -----END CERTIFICATE----- Certigna Root CA ================ -----BEGIN CERTIFICATE----- MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAwWjELMAkGA1UE BhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAwMiA0ODE0NjMwODEwMDAzNjEZ MBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0xMzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjda MFoxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYz MDgxMDAwMzYxGTAXBgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4IC DwAwggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sOty3tRQgX stmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9MCiBtnyN6tMbaLOQdLNyz KNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPuI9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8 JXrJhFwLrN1CTivngqIkicuQstDuI7pmTLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16 XdG+RCYyKfHx9WzMfgIhC59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq 4NYKpkDfePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3YzIoej wpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWTCo/1VTp2lc5ZmIoJ lXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1kJWumIWmbat10TWuXekG9qxf5kBdI jzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp/ /TBt2dzhauH8XwIDAQABo4IBGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw HQYDVR0OBBYEFBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of 1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczovL3d3d3cuY2Vy dGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilodHRwOi8vY3JsLmNlcnRpZ25h LmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYraHR0cDovL2NybC5kaGlteW90aXMuY29tL2Nl cnRpZ25hcm9vdGNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOIt OoldaDgvUSILSo3L6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxP TGRGHVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH60BGM+RFq 7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncBlA2c5uk5jR+mUYyZDDl3 4bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdio2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd 8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS 6Cvu5zHbugRqh5jnxV/vfaci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaY tlu3zM63Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayhjWZS aX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw3kAP+HwV96LOPNde E4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= -----END CERTIFICATE----- emSign Root CA - G1 =================== -----BEGIN CERTIFICATE----- MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYDVQQGEwJJTjET MBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRl ZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBHMTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgx ODMwMDBaMGcxCzAJBgNVBAYTAklOMRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVk aHJhIFRlY2hub2xvZ2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQzf2N4aLTN LnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO8oG0x5ZOrRkVUkr+PHB1 cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aqd7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHW DV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhMtTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ 6DqS0hdW5TUaQBw+jSztOd9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrH hQIDAQABo0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQDAgEG MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31xPaOfG1vR2vjTnGs2 vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjMwiI/aTvFthUvozXGaCocV685743Q NcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6dGNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q +Mri/Tm3R7nrft8EI6/6nAYH6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeih U80Bv2noWgbyRQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx iN66zB+Afko= -----END CERTIFICATE----- emSign ECC Root CA - G3 ======================= -----BEGIN CERTIFICATE----- MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQGEwJJTjETMBEG A1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEg MB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4 MTgzMDAwWjBrMQswCQYDVQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11 ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g RzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0WXTsuwYc 58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xySfvalY8L1X44uT6EYGQIr MgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuBzhccLikenEhjQjAOBgNVHQ8BAf8EBAMC AQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+D CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7 jHvrZQnD+JbNR6iC8hZVdyR+EhCVBCyj -----END CERTIFICATE----- emSign Root CA - C1 =================== -----BEGIN CERTIFICATE----- MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCVVMx EzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNp Z24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UE BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQD ExNlbVNpZ24gUm9vdCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+up ufGZBczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZHdPIWoU/ Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH3DspVpNqs8FqOp099cGX OFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvHGPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4V I5b2P/AgNBbeCsbEBEV5f6f9vtKppa+cxSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleooms lMuoaJuvimUnzYnu3Yy1aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+ XJGFehiqTbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD ggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87/kOXSTKZEhVb3xEp /6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4kqNPEjE2NuLe/gDEo2APJ62gsIq1 NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrGYQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9 wC68AivTxEDkigcxHpvOJpkT+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQ BmIMMMAVSKeoWXzhriKi4gp6D/piq1JM4fHfyr6DDUI= -----END CERTIFICATE----- emSign ECC Root CA - C3 ======================= -----BEGIN CERTIFICATE----- MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQGEwJVUzETMBEG A1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMxIDAeBgNVBAMTF2VtU2lnbiBF Q0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UE BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQD ExdlbVNpZ24gRUNDIFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd 6bciMK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4OjavtisIGJAnB9 SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0OBBYEFPtaSNCAIEDyqOkA B2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gA MGUCMQC02C8Cif22TGK6Q04ThHK1rt0c3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwU ZOR8loMRnLDRWmFLpg9J0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== -----END CERTIFICATE----- Hongkong Post Root CA 3 ======================= -----BEGIN CERTIFICATE----- MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQELBQAwbzELMAkG A1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJSG9uZyBLb25nMRYwFAYDVQQK Ew1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25na29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2 MDMwMjI5NDZaFw00MjA2MDMwMjI5NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtv bmcxEjAQBgNVBAcTCUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMX SG9uZ2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz iNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFOdem1p+/l6TWZ5Mwc50tf jTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mIVoBc+L0sPOFMV4i707mV78vH9toxdCim 5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOe sL4jpNrcyCse2m5FHomY2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj 0mRiikKYvLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+TtbNe/ JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZbx39ri1UbSsUgYT2u y1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+l2oBlKN8W4UdKjk60FSh0Tlxnf0h +bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YKTE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsG xVd7GYYKecsAyVKvQv83j+GjHno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwID AQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEwDQYJKoZIhvcN AQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG7BJ8dNVI0lkUmcDrudHr9Egw W62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCkMpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWld y8joRTnU+kLBEUx3XZL7av9YROXrgZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov +BS5gLNdTaqX4fnkGMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDc eqFS3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJmOzj/2ZQw 9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+l6mc1X5VTMbeRRAc6uk7 nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6cJfTzPV4e0hz5sy229zdcxsshTrD3mUcY hcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB 60PZ2Pierc+xYw5F9KBaLJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fq dBb9HxEGmpv0 -----END CERTIFICATE----- Entrust Root Certification Authority - G4 ========================================= -----BEGIN CERTIFICATE----- MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1 dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV 3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds 8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7 ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV 7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht 7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+ m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G +TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT kcpG2om3PVODLAgfi49T3f+sHw== -----END CERTIFICATE----- Microsoft ECC Root Certificate Authority 2017 ============================================= -----BEGIN CERTIFICATE----- MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQgRUND IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4 MjMxNjA0WjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw NAYDVQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQ BgcqhkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZRogPZnZH6 thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYbhGBKia/teQ87zvH2RPUB eMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIy5lycFIM +Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlf Xu5gKcs68tvWMoQZP3zVL8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaR eNtUjGUBiudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= -----END CERTIFICATE----- Microsoft RSA Root Certificate Authority 2017 ============================================= -----BEGIN CERTIFICATE----- MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBlMQswCQYDVQQG EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQg UlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIw NzE4MjMwMDIzWjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u MTYwNAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcw ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZNt9GkMml 7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0ZdDMbRnMlfl7rEqUrQ7e S0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw7 1VdyvD/IybLeS2v4I2wDwAW9lcfNcztmgGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+ dkC0zVJhUXAoP8XFWvLJjEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49F yGcohJUcaDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaGYaRS MLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6W6IYZVcSn2i51BVr lMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4KUGsTuqwPN1q3ErWQgR5WrlcihtnJ 0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH+FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJ ClTUFLkqqNfs+avNJVgyeY+QW5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYw DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZCLgLNFgVZJ8og 6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OCgMNPOsduET/m4xaRhPtthH80 dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk +ONVFT24bcMKpBLBaYVu32TxU5nhSnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex /2kskZGT4d9Mozd2TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDy AmH3pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGRxpl/j8nW ZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiAppGWSZI1b7rCoucL5mxAyE 7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKT c0QWbej09+CVgI+WXTik9KveCjCHk9hNAHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D 5KbvtwEwXlGjefVwaaZBRA+GsCyRxj3qrg+E -----END CERTIFICATE----- e-Szigno Root CA 2017 ===================== -----BEGIN CERTIFICATE----- MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNVBAYTAkhVMREw DwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUt MjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJvb3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZa Fw00MjA4MjIxMjA3MDZaMHExCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UE CgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3pp Z25vIFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtvxie+RJCx s1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+HWyx7xf58etqjYzBhMA8G A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSHERUI0arBeAyxr87GyZDv vzAEwDAfBgNVHSMEGDAWgBSHERUI0arBeAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEA tVfd14pVCzbhhkT61NlojbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxO svxyqltZ+efcMQ== -----END CERTIFICATE----- certSIGN Root CA G2 =================== -----BEGIN CERTIFICATE----- MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNVBAYTAlJPMRQw EgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjAeFw0xNzAy MDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJBgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lH TiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBAMDFdRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05 N0IwvlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZuIt4Imfk abBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhpn+Sc8CnTXPnGFiWeI8Mg wT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKscpc/I1mbySKEwQdPzH/iV8oScLumZfNp dWO9lfsbl83kqK/20U6o2YpxJM02PbyWxPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91Qqh ngLjYl/rNUssuHLoPj1PrCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732 jcZZroiFDsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fxDTvf 95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgyLcsUDFDYg2WD7rlc z8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6CeWRgKRM+o/1Pcmqr4tTluCRVLERL iohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1Ud DgQWBBSCIS1mxteg4BXrzkwJd8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOB ywaK8SJJ6ejqkX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQlqiCA2ClV9+BB /AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0OJD7uNGzcgbJceaBxXntC6Z5 8hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+cNywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5 BiKDUyUM/FHE5r7iOZULJK2v0ZXkltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklW atKcsWMy5WHgUyIOpwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tU Sxfj03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZkPuXaTH4M NMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE1LlSVHJ7liXMvGnjSG4N 0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MXQRBdJ3NghVdJIgc= -----END CERTIFICATE----- Trustwave Global Certification Authority ======================================== -----BEGIN CERTIFICATE----- MIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJV UzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2 ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9u IEF1dGhvcml0eTAeFw0xNzA4MjMxOTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJV UzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2 ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9u IEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALldUShLPDeS0YLOvR29 zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0XznswuvCAAJWX/NKSqIk4cXGIDtiLK0thAf LdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4Bq stTnoApTAbqOl5F2brz81Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9o WN0EACyW80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotPJqX+ OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1lRtzuzWniTY+HKE40 Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfwhI0Vcnyh78zyiGG69Gm7DIwLdVcE uE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10coos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm +9jaJXLE9gCxInm943xZYkqcBW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqj ifLJS3tBEW1ntwiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud EwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1UdDwEB/wQEAwIB BjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W0OhUKDtkLSGm+J1WE2pIPU/H PinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfeuyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0H ZJDmHvUqoai7PF35owgLEQzxPy0QlG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla 4gt5kNdXElE1GYhBaCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5R vbbEsLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPTMaCm/zjd zyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qequ5AvzSxnI9O4fKSTx+O 856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxhVicGaeVyQYHTtgGJoC86cnn+OjC/QezH Yj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8h6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu 3R3y4G5OBVixwJAWKqQ9EEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP 29FpHOTKyeC2nOnOcXHebD8WpHk= -----END CERTIFICATE----- Trustwave Global ECC P256 Certification Authority ================================================= -----BEGIN CERTIFICATE----- MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYDVQQGEwJVUzER MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZp Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYD VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1 NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH77bOYj 43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoNFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqm P62jQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt 0UrrdaVKEJmzsaGLSvcwCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjz RM4q3wghDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 -----END CERTIFICATE----- Trustwave Global ECC P384 Certification Authority ================================================= -----BEGIN CERTIFICATE----- MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYDVQQGEwJVUzER MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZp Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYD VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4 NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGvaDXU1CDFH Ba5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr /TklZvFe/oyujUF5nQlgziip04pt89ZF1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNV HQ8BAf8EBQMDBwYAMB0GA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNn ADBkAjA3AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsCMGcl CrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVuSw== -----END CERTIFICATE----- NAVER Global Root Certification Authority ========================================= -----BEGIN CERTIFICATE----- MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEMBQAwaTELMAkG A1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRGT1JNIENvcnAuMTIwMAYDVQQD DClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4 NDJaFw0zNzA4MTgyMzU5NTlaMGkxCzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVT UyBQTEFURk9STSBDb3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVAiQqrDZBb UGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH38dq6SZeWYp34+hInDEW +j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lEHoSTGEq0n+USZGnQJoViAbbJAh2+g1G7 XNr4rRVqmfeSVPc0W+m/6imBEtRTkZazkVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2 aacp+yPOiNgSnABIqKYPszuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4 Yb8ObtoqvC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHfnZ3z VHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaGYQ5fG8Ir4ozVu53B A0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo0es+nPxdGoMuK8u180SdOqcXYZai cdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3aCJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejy YhbLgGvtPe31HzClrkvJE+2KAQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNV HQ4EFgQU0p+I36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoNqo0hV4/GPnrK 21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatjcu3cvuzHV+YwIHHW1xDBE1UB jCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm+LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bx hYTeodoS76TiEJd6eN4MUZeoIUCLhr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTg E34h5prCy8VCZLQelHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTH D8z7p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8piKCk5XQ A76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLRLBT/DShycpWbXgnbiUSY qqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oG I/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg kpzNNIaRkPpkUZ3+/uul9XXeifdy -----END CERTIFICATE----- AC RAIZ FNMT-RCM SERVIDORES SEGUROS =================================== -----BEGIN CERTIFICATE----- MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQswCQYDVQQGEwJF UzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgwFgYDVQRhDA9WQVRFUy1RMjgy NjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1SQ00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4 MTIyMDA5MzczM1oXDTQzMTIyMDA5MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt UkNNMQ4wDAYDVQQLDAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNB QyBSQUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuBBAAiA2IA BPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LHsbI6GA60XYyzZl2hNPk2 LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oKUm8BA06Oi6NCMEAwDwYDVR0TAQH/BAUw AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqG SM49BAMDA2kAMGYCMQCuSuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoD zBOQn5ICMQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJyv+c= -----END CERTIFICATE----- GlobalSign Root R46 =================== -----BEGIN CERTIFICATE----- MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUAMEYxCzAJBgNV BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJv b3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAX BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIi MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08Es CVeJOaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQGvGIFAha/ r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud316HCkD7rRlr+/fKYIje 2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo0q3v84RLHIf8E6M6cqJaESvWJ3En7YEt bWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSEy132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvj K8Cd+RTyG/FWaha/LIWFzXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD4 12lPFzYE+cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCNI/on ccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzsx2sZy/N78CsHpdls eVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqaByFrgY/bxFn63iLABJzjqls2k+g9 vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYD VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEM BQADggIBAHx47PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti2kM3S+LGteWy gxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIkpnnpHs6i58FZFZ8d4kuaPp92 CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRFFRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZm OUdkLG5NrmJ7v2B0GbhWrJKsFjLtrWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qq JZ4d16GLuc1CLgSkZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwye qiv5u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP4vkYxboz nxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6N3ec592kD3ZDZopD8p/7 DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3vouXsXgxT7PntgMTzlSdriVZzH81Xwj3 QEUxeCp6 -----END CERTIFICATE----- GlobalSign Root E46 =================== -----BEGIN CERTIFICATE----- MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYxCzAJBgNVBAYT AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJvb3Qg RTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNV BAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcq hkjOPQIBBgUrgQQAIgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkB jtjqR+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGddyXqBPCCj QjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQxCpCPtsad0kRL gLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZk vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+ CAezNIm8BZ/3Hobui3A= -----END CERTIFICATE----- GLOBALTRUST 2020 ================ -----BEGIN CERTIFICATE----- MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVQx IzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVT VCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYxMDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAh BgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAy MDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWi D59bRatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9ZYybNpyrO VPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3QWPKzv9pj2gOlTblzLmM CcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPwyJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCm fecqQjuCgGOlYx8ZzHyyZqjC0203b+J+BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKA A1GqtH6qRNdDYfOiaxaJSaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9OR JitHHmkHr96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj04KlG DfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9MedKZssCz3AwyIDMvU clOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIwq7ejMZdnrY8XD2zHc+0klGvIg5rQ mjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUw AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1Ud IwQYMBaAFNwuH9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJCXtzoRlgHNQIw 4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd6IwPS3BD0IL/qMy/pJTAvoe9 iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS 8cE54+X1+NZK3TTN+2/BT+MAi1bikvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2 HcqtbepBEX4tdJP7wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxS vTOBTI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6CMUO+1918 oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn4rnvyOL2NSl6dPrFf4IF YqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+IaFvowdlxfv1k7/9nR4hYJS8+hge9+6jl gqispdNpQ80xiEmEU5LAsTkbOYMBMMTyqfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== -----END CERTIFICATE----- ANF Secure Server Root CA ========================= -----BEGIN CERTIFICATE----- MIIF7zCCA9egAwIBAgIIDdPjvGz5a7EwDQYJKoZIhvcNAQELBQAwgYQxEjAQBgNVBAUTCUc2MzI4 NzUxMDELMAkGA1UEBhMCRVMxJzAlBgNVBAoTHkFORiBBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lv bjEUMBIGA1UECxMLQU5GIENBIFJhaXoxIjAgBgNVBAMTGUFORiBTZWN1cmUgU2VydmVyIFJvb3Qg Q0EwHhcNMTkwOTA0MTAwMDM4WhcNMzkwODMwMTAwMDM4WjCBhDESMBAGA1UEBRMJRzYzMjg3NTEw MQswCQYDVQQGEwJFUzEnMCUGA1UEChMeQU5GIEF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uMRQw EgYDVQQLEwtBTkYgQ0EgUmFpejEiMCAGA1UEAxMZQU5GIFNlY3VyZSBTZXJ2ZXIgUm9vdCBDQTCC AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANvrayvmZFSVgpCjcqQZAZ2cC4Ffc0m6p6zz BE57lgvsEeBbphzOG9INgxwruJ4dfkUyYA8H6XdYfp9qyGFOtibBTI3/TO80sh9l2Ll49a2pcbnv T1gdpd50IJeh7WhM3pIXS7yr/2WanvtH2Vdy8wmhrnZEE26cLUQ5vPnHO6RYPUG9tMJJo8gN0pcv B2VSAKduyK9o7PQUlrZXH1bDOZ8rbeTzPvY1ZNoMHKGESy9LS+IsJJ1tk0DrtSOOMspvRdOoiXse zx76W0OLzc2oD2rKDF65nkeP8Nm2CgtYZRczuSPkdxl9y0oukntPLxB3sY0vaJxizOBQ+OyRp1RM VwnVdmPF6GUe7m1qzwmd+nxPrWAI/VaZDxUse6mAq4xhj0oHdkLePfTdsiQzW7i1o0TJrH93PB0j 7IKppuLIBkwC/qxcmZkLLxCKpvR/1Yd0DVlJRfbwcVw5Kda/SiOL9V8BY9KHcyi1Swr1+KuCLH5z JTIdC2MKF4EA/7Z2Xue0sUDKIbvVgFHlSFJnLNJhiQcND85Cd8BEc5xEUKDbEAotlRyBr+Qc5RQe 8TZBAQIvfXOn3kLMTOmJDVb3n5HUA8ZsyY/b2BzgQJhdZpmYgG4t/wHFzstGH6wCxkPmrqKEPMVO Hj1tyRRM4y5Bu8o5vzY8KhmqQYdOpc5LMnndkEl/AgMBAAGjYzBhMB8GA1UdIwQYMBaAFJxf0Gxj o1+TypOYCK2Mh6UsXME3MB0GA1UdDgQWBBScX9BsY6Nfk8qTmAitjIelLFzBNzAOBgNVHQ8BAf8E BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEATh65isagmD9uw2nAalxJ UqzLK114OMHVVISfk/CHGT0sZonrDUL8zPB1hT+L9IBdeeUXZ701guLyPI59WzbLWoAAKfLOKyzx j6ptBZNscsdW699QIyjlRRA96Gejrw5VD5AJYu9LWaL2U/HANeQvwSS9eS9OICI7/RogsKQOLHDt dD+4E5UGUcjohybKpFtqFiGS3XNgnhAY3jyB6ugYw3yJ8otQPr0R4hUDqDZ9MwFsSBXXiJCZBMXM 5gf0vPSQ7RPi6ovDj6MzD8EpTBNO2hVWcXNyglD2mjN8orGoGjR0ZVzO0eurU+AagNjqOknkJjCb 5RyKqKkVMoaZkgoQI1YS4PbOTOK7vtuNknMBZi9iPrJyJ0U27U1W45eZ/zo1PqVUSlJZS2Db7v54 EX9K3BR5YLZrZAPbFYPhor72I5dQ8AkzNqdxliXzuUJ92zg/LFis6ELhDtjTO0wugumDLmsx2d1H hk9tl5EuT+IocTUW0fJz/iUrB0ckYyfI+PbZa/wSMVYIwFNCr5zQM378BvAxRAMU8Vjq8moNqRGy g77FGr8H6lnco4g175x2MjxNBiLOFeXdntiP2t7SxDnlF4HPOEfrf4htWRvfn0IUrn7PqLBmZdo3 r5+qPeoott7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw= -----END CERTIFICATE----- Certum EC-384 CA ================ -----BEGIN CERTIFICATE----- MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQswCQYDVQQGEwJQ TDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2Vy dGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2 MDcyNDU0WhcNNDMwMzI2MDcyNDU0WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERh dGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx GTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATEKI6rGFtq vm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7TmFy8as10CW4kjPMIRBSqn iBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68KjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD VR0OBBYEFI0GZnQkdjrzife81r1HfS+8EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNo ADBlAjADVS2m5hjEfO/JUG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0 QoSZ/6vnnvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= -----END CERTIFICATE----- Certum Trusted Root CA ====================== -----BEGIN CERTIFICATE----- MIIFwDCCA6igAwIBAgIQHr9ZULjJgDdMBvfrVU+17TANBgkqhkiG9w0BAQ0FADB6MQswCQYDVQQG EwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0g Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0Ew HhcNMTgwMzE2MTIxMDEzWhcNNDMwMzE2MTIxMDEzWjB6MQswCQYDVQQGEwJQTDEhMB8GA1UEChMY QXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBB dXRob3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEB AQUAA4ICDwAwggIKAoICAQDRLY67tzbqbTeRn06TpwXkKQMlzhyC93yZn0EGze2jusDbCSzBfN8p fktlL5On1AFrAygYo9idBcEq2EXxkd7fO9CAAozPOA/qp1x4EaTByIVcJdPTsuclzxFUl6s1wB52 HO8AU5853BSlLCIls3Jy/I2z5T4IHhQqNwuIPMqw9MjCoa68wb4pZ1Xi/K1ZXP69VyywkI3C7Te2 fJmItdUDmj0VDT06qKhF8JVOJVkdzZhpu9PMMsmN74H+rX2Ju7pgE8pllWeg8xn2A1bUatMn4qGt g/BKEiJ3HAVz4hlxQsDsdUaakFjgao4rpUYwBI4Zshfjvqm6f1bxJAPXsiEodg42MEx51UGamqi4 NboMOvJEGyCI98Ul1z3G4z5D3Yf+xOr1Uz5MZf87Sst4WmsXXw3Hw09Omiqi7VdNIuJGmj8PkTQk fVXjjJU30xrwCSss0smNtA0Aq2cpKNgB9RkEth2+dv5yXMSFytKAQd8FqKPVhJBPC/PgP5sZ0jeJ P/J7UhyM9uH3PAeXjA6iWYEMspA90+NZRu0PqafegGtaqge2Gcu8V/OXIXoMsSt0Puvap2ctTMSY njYJdmZm/Bo/6khUHL4wvYBQv3y1zgD2DGHZ5yQD4OMBgQ692IU0iL2yNqh7XAjlRICMb/gv1SHK HRzQ+8S1h9E6Tsd2tTVItQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSM+xx1 vALTn04uSNn5YFSqxLNP+jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQADggIBAEii1QAL LtA/vBzVtVRJHlpr9OTy4EA34MwUe7nJ+jW1dReTagVphZzNTxl4WxmB82M+w85bj/UvXgF2Ez8s ALnNllI5SW0ETsXpD4YN4fqzX4IS8TrOZgYkNCvozMrnadyHncI013nR03e4qllY/p0m+jiGPp2K h2RX5Rc64vmNueMzeMGQ2Ljdt4NR5MTMI9UGfOZR0800McD2RrsLrfw9EAUqO0qRJe6M1ISHgCq8 CYyqOhNf6DR5UMEQGfnTKB7U0VEwKbOukGfWHwpjscWpxkIxYxeU72nLL/qMFH3EQxiJ2fAyQOaA 4kZf5ePBAFmo+eggvIksDkc0C+pXwlM2/KfUrzHN/gLldfq5Jwn58/U7yn2fqSLLiMmq0Uc9Nneo WWRrJ8/vJ8HjJLWG965+Mk2weWjROeiQWMODvA8s1pfrzgzhIMfatz7DP78v3DSk+yshzWePS/Tj 6tQ/50+6uaWTRRxmHyH6ZF5v4HaUMst19W7l9o/HuKTMqJZ9ZPskWkoDbGs4xugDQ5r3V7mzKWmT OPQD8rv7gmsHINFSH5pkAnuYZttcTVoP0ISVoDwUQwbKytu4QTbaakRnh6+v40URFWkIsr4WOZck bxJF0WddCajJFdr60qZfE2Efv4WstK2tBZQIgx51F9NxO5NQI1mg7TyRVJ12AMXDuDjb -----END CERTIFICATE----- TunTrust Root CA ================ -----BEGIN CERTIFICATE----- MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQELBQAwYTELMAkG A1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUgQ2VydGlmaWNhdGlvbiBFbGVj dHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJvb3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQw NDI2MDg1NzU2WjBhMQswCQYDVQQGEwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBD ZXJ0aWZpY2F0aW9uIEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIw DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZn56eY+hz 2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd2JQDoOw05TDENX37Jk0b bjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgFVwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7 NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZGoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAd gjH8KcwAWJeRTIAAHDOFli/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViW VSHbhlnUr8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2eY8f Tpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIbMlEsPvLfe/ZdeikZ juXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISgjwBUFfyRbVinljvrS5YnzWuioYas DXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwS VXAkPcvCFDVDXSdOvsC9qnyW5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI 04Y+oXNZtPdEITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0 90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+zxiD2BkewhpMl 0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYuQEkHDVneixCwSQXi/5E/S7fd Ao74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRY YdZ2vyJ/0Adqp2RT8JeNnYA/u8EH22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJp adbGNjHh/PqAulxPxOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65x xBzndFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5Xc0yGYuP jCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7bnV2UqL1g52KAdoGDDIzM MEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQCvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9z ZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZHu/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3r AZ3r2OvEhJn7wAzMMujjd9qDRIueVSjAi1jTkD5OGwDxFa2DK5o= -----END CERTIFICATE----- HARICA TLS RSA Root CA 2021 =========================== -----BEGIN CERTIFICATE----- MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQG EwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u cyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0EgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUz OFoXDTQ1MDIxMzEwNTUzN1owbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRl bWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNB IFJvb3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569lmwVnlskN JLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE4VGC/6zStGndLuwRo0Xu a2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uva9of08WRiFukiZLRgeaMOVig1mlDqa2Y Ulhu2wr7a89o+uOkXjpFc5gH6l8Cct4MpbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K 5FrZx40d/JiZ+yykgmvwKh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEv dmn8kN3bLW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcYAuUR 0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqBAGMUuTNe3QvboEUH GjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYqE613TBoYm5EPWNgGVMWX+Ko/IIqm haZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHrW2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQ CPxrvrNQKlr9qEgYRtaQQJKQCoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8G A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAUX15QvWiWkKQU EapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3f5Z2EMVGpdAgS1D0NTsY9FVq QRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxajaH6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxD QpSbIPDRzbLrLFPCU3hKTwSUQZqPJzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcR j88YxeMn/ibvBZ3PzzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5 vZStjBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0/L5H9MG0 qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pTBGIBnfHAT+7hOtSLIBD6 Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79aPib8qXPMThcFarmlwDB31qlpzmq6YR/ PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YWxw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnn kf3/W9b3raYvAwtt41dU63ZTGI0RmLo= -----END CERTIFICATE----- HARICA TLS ECC Root CA 2021 =========================== -----BEGIN CERTIFICATE----- MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQswCQYDVQQGEwJH UjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBD QTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoX DTQ1MDIxMzExMDEwOVowbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWlj IGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJv b3QgQ0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7KKrxcm1l AEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9YSTHMmE5gEYd103KUkE+b ECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW 0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAi rcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw CZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps -----END CERTIFICATE----- Autoridad de Certificacion Firmaprofesional CIF A62634068 ========================================================= -----BEGIN CERTIFICATE----- MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCRVMxQjBA BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIw QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY 7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1Ud DgQWBBRlzeurNR4APn7VdMActHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4w gZswgZgGBFUdIAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABCAG8AbgBhAG4A bwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAwADEANzAOBgNVHQ8BAf8EBAMC AQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9miWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL 4QjbEwj4KKE1soCzC1HA01aajTNFSa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDb LIpgD7dvlAceHabJhfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1il I45PVf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZEEAEeiGaP cjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV1aUsIC+nmCjuRfzxuIgA LI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2tCsvMo2ebKHTEm9caPARYpoKdrcd7b/+A lun4jWq9GJAd/0kakFI3ky88Al2CdgtR5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH 9IBk9W6VULgRfhVwOEqwf9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpf NIbnYrX9ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNKGbqE ZycPvEJdvSRUDewdcAZfpLz6IHxV -----END CERTIFICATE----- vTrus ECC Root CA ================= -----BEGIN CERTIFICATE----- MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMwRzELMAkGA1UE BhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBS b290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDczMTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAa BgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYw EAYHKoZIzj0CAQYFK4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+c ToL0v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUde4BdS49n TPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYDVR0TAQH/BAUwAwEB/zAO BgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIwV53dVvHH4+m4SVBrm2nDb+zDfSXkV5UT QJtS0zvzQBm8JsctBp61ezaf9SXUY2sAAjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQL YgmRWAD5Tfs0aNoJrSEGGJTO -----END CERTIFICATE----- vTrus Root CA ============= -----BEGIN CERTIFICATE----- MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQELBQAwQzELMAkG A1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xFjAUBgNVBAMTDXZUcnVzIFJv b3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMxMDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoG A1UEChMTaVRydXNDaGluYSBDby4sTHRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJ KoZIhvcNAQEBBQADggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZots SKYcIrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykUAyyNJJrI ZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+GrPSbcKvdmaVayqwlHeF XgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z98Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KA YPxMvDVTAWqXcoKv8R1w6Jz1717CbMdHflqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70 kLJrxLT5ZOrpGgrIDajtJ8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2 AXPKBlim0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZNpGvu /9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQUqqzApVg+QxMaPnu 1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHWOXSuTEGC2/KmSNGzm/MzqvOmwMVO 9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMBAAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYg scasGrz2iTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOC AgEAKbqSSaet8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1jbhd47F18iMjr jld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvMKar5CKXiNxTKsbhm7xqC5PD4 8acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIivTDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJn xDHO2zTlJQNgJXtxmOTAGytfdELSS8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554Wg icEFOwE30z9J4nfrI8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4 sEb9b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNBUvupLnKW nyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1PTi07NEPhmg4NpGaXutIc SkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929vensBxXVsFy6K2ir40zSbofitzmdHxghm+H l3s= -----END CERTIFICATE----- ISRG Root X2 ============ -----BEGIN CERTIFICATE----- MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJV UzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElT UkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVT MSkwJwYDVQQKEyBJbnRlcm5ldCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNS RyBSb290IFgyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H ttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9ItgKbppb d9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV HQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZIzj0EAwMDaAAwZQIwe3lORlCEwkSHRhtF cP9Ymd70/aTSVaYgLXTWNLxBo1BfASdWtL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5 U6VR5CmD1/iQMVtCnwr1/q4AaOeMSQ+2b1tbFfLn -----END CERTIFICATE----- HiPKI Root CA - G1 ================== -----BEGIN CERTIFICATE----- MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQG EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xGzAZBgNVBAMMEkhpUEtJ IFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRaFw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYT AlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kg Um9vdCBDQSAtIEcxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0 o9QwqNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twvVcg3Px+k wJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6lZgRZq2XNdZ1AYDgr/SE YYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnzQs7ZngyzsHeXZJzA9KMuH5UHsBffMNsA GJZMoYFL3QRtU6M9/Aes1MU3guvklQgZKILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfd hSi8MEyr48KxRURHH+CKFgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj 1jOXTyFjHluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDry+K4 9a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ/W3c1pzAtH2lsN0/ Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgMa/aOEmem8rJY5AIJEzypuxC00jBF 8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYD VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQD AgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi 7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqcSE5XCV0vrPSl tJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6FzaZsT0pPBWGTMpWmWSBUdGSquE wx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9TcXzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07Q JNBAsNB1CI69aO4I1258EHBGG3zgiLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv 5wiZqAxeJoBF1PhoL5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+Gpz jLrFNe85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wrkkVbbiVg hUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+vhV4nYWBSipX3tUZQ9rb yltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQUYDksswBVLuT1sw5XxJFBAJw/6KXf6vb/ yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ== -----END CERTIFICATE----- GlobalSign ECC Root CA - R4 =========================== -----BEGIN CERTIFICATE----- MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYDVQQLExtHbG9i YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds b2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgwMTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9i YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds b2JhbFNpZ24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkW ymOxuYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNVHQ8BAf8E BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/+wpu+74zyTyjhNUwCgYI KoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147bmF0774BxL4YSFlhgjICICadVGNA3jdg UM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm -----END CERTIFICATE----- GTS Root R1 =========== -----BEGIN CERTIFICATE----- MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg UjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0G CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7raKb0 xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnWr4+w B7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXW nOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk 9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zq kUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92wO1A K/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om3xPX V2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDW cfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T AQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQAD ggIBAJ+qQibbC5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuyh6f88/qBVRRi ClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM47HLwEXWdyzRSjeZ2axfG34ar J45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8JZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYci NuaCp+0KueIHoI17eko8cdLiA6EfMgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5me LMFrUKTX5hgUvYU/Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJF fbdT6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ0E6yove+ 7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm2tIMPNuzjsmhDYAPexZ3 FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bbbP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3 gm3c -----END CERTIFICATE----- GTS Root R2 =========== -----BEGIN CERTIFICATE----- MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg UjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0G CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo7JUl e3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWIm8Wb a96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS +LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7M kogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJG r61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RWIr9q S34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73VululycslaVNV J1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy5okL dWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T AQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQAD ggIBAB/Kzt3HvqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8 0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyCB19m3H0Q/gxh swWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2uNmSRXbBoGOqKYcl3qJfEycel /FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMgyALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVn jWQye+mew4K6Ki3pHrTgSAai/GevHyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y5 9PYjJbigapordwj6xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M 7YNRTOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924SgJPFI/2R8 0L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV7LXTWtiBmelDGDfrs7vR WGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjW HYbL -----END CERTIFICATE----- GTS Root R3 =========== -----BEGIN CERTIFICATE----- MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMw HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjO PQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout 736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24CejQjBA MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP0/Eq Er24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azT L818+FsuVbu/3ZL3pAzcMeGiAjEA/JdmZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV 11RZt+cRLInUue4X -----END CERTIFICATE----- GTS Root R4 =========== -----BEGIN CERTIFICATE----- MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQw HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjO PQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqjQjBA MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV2Py1 PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/C r8deVl5c1RxYIigL9zC2L7F8AjEA8GE8p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh 4rsUecrNIdSUtUlD -----END CERTIFICATE----- Telia Root CA v2 ================ -----BEGIN CERTIFICATE----- MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQxCzAJBgNVBAYT AkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2 MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQK DBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZI hvcNAQEBBQADggIPADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ7 6zBqAMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9vVYiQJ3q 9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9lRdU2HhE8Qx3FZLgmEKn pNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTODn3WhUidhOPFZPY5Q4L15POdslv5e2QJl tI5c0BE0312/UqeBAMN/mUWZFdUXyApT7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW 5olWK8jjfN7j/4nlNW4o6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNr RBH0pUPCTEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6WT0E BXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63RDolUK5X6wK0dmBR4 M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZIpEYslOqodmJHixBTB0hXbOKSTbau BcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGjYzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7W xy+G2CQ5MB0GA1UdDgQWBBRyrOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYD VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ 8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi0f6X+J8wfBj5 tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMMA8iZGok1GTzTyVR8qPAs5m4H eW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBSSRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+C y748fdHif64W1lZYudogsYMVoe+KTTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygC QMez2P2ccGrGKMOF6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15 h2Er3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMtTy3EHD70 sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pTVmBds9hCG1xLEooc6+t9 xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAWysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQ raVplI/owd8k+BsHMYeB2F326CjYSlKArBPuUBQemMc= -----END CERTIFICATE----- D-TRUST BR Root CA 1 2020 ========================= -----BEGIN CERTIFICATE----- MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEJSIFJvb3QgQ0EgMSAy MDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNV BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAG ByqGSM49AgEGBSuBBAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7 dPYSzuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0QVK5buXu QqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/VbNafAkl1bK6CKBrqx9t MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu bmV0L2NybC9kLXRydXN0X2JyX3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD AwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFWwKrY7RjEsK70Pvom AjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHVdWNbFJWcHwHP2NVypw87 -----END CERTIFICATE----- D-TRUST EV Root CA 1 2020 ========================= -----BEGIN CERTIFICATE----- MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEVWIFJvb3QgQ0EgMSAy MDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNV BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAG ByqGSM49AgEGBSuBBAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8 ZRCC/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rDwpdhQntJ raOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3OqQo5FD4pPfsazK2/umL MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu bmV0L2NybC9kLXRydXN0X2V2X3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD AwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CAy/m0sRtW9XLS/BnR AjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJbgfM0agPnIjhQW+0ZT0MW -----END CERTIFICATE----- DigiCert TLS ECC P384 Root G5 ============================= -----BEGIN CERTIFICATE----- MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQswCQYDVQQGEwJV UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURpZ2lDZXJ0IFRMUyBFQ0MgUDM4 NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMx FzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQg Um9vdCBHNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1Tzvd lHJS7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp0zVozptj n4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICISB4CIfBFqMA4GA1UdDwEB /wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQCJao1H5+z8blUD2Wds Jk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQLgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIx AJSdYsiJvRmEFOml+wG4DXZDjC5Ty3zfDBeWUA== -----END CERTIFICATE----- DigiCert TLS RSA4096 Root G5 ============================ -----BEGIN CERTIFICATE----- MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBNMQswCQYDVQQG EwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0 MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcNNDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJV UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2 IFJvb3QgRzUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS8 7IE+ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG02C+JFvuU AT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgpwgscONyfMXdcvyej/Ces tyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZMpG2T6T867jp8nVid9E6P/DsjyG244gXa zOvswzH016cpVIDPRFtMbzCe88zdH5RDnU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnV DdXifBBiqmvwPXbzP6PosMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9q TXeXAaDxZre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cdLvvy z6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvXKyY//SovcfXWJL5/ MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNeXoVPzthwiHvOAbWWl9fNff2C+MIk wcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPLtgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4E FgQUUTMc7TZArxfTJc1paPKvTiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w DQYJKoZIhvcNAQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7HPNtQOa27PShN lnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLFO4uJ+DQtpBflF+aZfTCIITfN MBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQREtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/ u4cnYiWB39yhL/btp/96j1EuMPikAdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9G OUrYU9DzLjtxpdRv/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh 47a+p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilwMUc/dNAU FvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WFqUITVuwhd4GTWgzqltlJ yqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCKovfepEWFJqgejF0pW8hL2JpqA15w8oVP bEtoL8pU9ozaMv7Da4M/OMZ+ -----END CERTIFICATE----- Certainly Root R1 ================= -----BEGIN CERTIFICATE----- MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAwPTELMAkGA1UE BhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2VydGFpbmx5IFJvb3QgUjEwHhcN MjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2Vy dGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBANA21B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O 5MQTvqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbedaFySpvXl 8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b01C7jcvk2xusVtyWMOvwl DbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGI XsXwClTNSaa/ApzSRKft43jvRl5tcdF5cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkN KPl6I7ENPT2a/Z2B7yyQwHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQ AjeZjOVJ6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA2Cnb rlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyHWyf5QBGenDPBt+U1 VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMReiFPCyEQtkA6qyI6BJyLm4SGcprS p6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud DgQWBBTgqj8ljZ9EXME66C6ud0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAsz HQNTVfSVcOQrPbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d 8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi1wrykXprOQ4v MMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrdrRT90+7iIgXr0PK3aBLXWopB GsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9ditaY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+ gjwN/KUD+nsa2UUeYNrEjvn8K8l7lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgH JBu6haEaBQmAupVjyTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7 fpYnKx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLyyCwzk5Iw x06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5nwXARPbv0+Em34yaXOp/S X3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6OV+KmalBWQewLK8= -----END CERTIFICATE----- Certainly Root E1 ================= -----BEGIN CERTIFICATE----- MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQswCQYDVQQGEwJV UzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBFMTAeFw0yMTA0 MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJBgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlu bHkxGjAYBgNVBAMTEUNlcnRhaW5seSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4 fxzf7flHh4axpMCK+IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9 YBk2QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8EBAMCAQYw DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4hevIIgcwCgYIKoZIzj0E AwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8 rgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR -----END CERTIFICATE----- Security Communication RootCA3 ============================== -----BEGIN CERTIFICATE----- MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNVBAYTAkpQMSUw IwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQDEx5TZWN1cml0eSBD b21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2MDYxNzE2WhcNMzgwMTE4MDYxNzE2WjBdMQsw CQYDVQQGEwJKUDElMCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UE AxMeU2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A MIICCgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltzkBtnTCHsXzW7OT4rCmDvu20r hvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOzQD11EKzAlrenfna84xtSGc4RHwsE NPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MGTfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2 /D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF79+qMHIjH7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGm npjKIG58u4iFW/vAEGK78vknR+/RiTlDxN/e4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtY XLVqAvO4g160a75BflcJdURQVc1aEWEhCmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3weGVPK p7FKFSBWFHA9K4IsD50VHUeAR/94mQ4xr28+j+2GaR57GIgUssL8gjMunEst+3A7caoreyYn8xrC 3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M0V9hvqG8OmpI6iZVIhZdXw3/JzOf GAN0iltSIEdrRU0id4xVJ/CvHozJgyJUt5rQT9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0Vcw CBEF/VfR2ccCAwEAAaNCMEAwHQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB /wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybS YpOnpSNyByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PAFNr0Y/Dq9HHu Tofjcan0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd9XbXv8S2gVj/yP9kaWJ5rW4O H3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQIUYWg9by0F1jqClx6vWPGOi//lkkZhOpn2ASx YfQAW0q3nHE3GYV5v4GwxxMOdnE+OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQDdwj98ClZ XSEIx2C/pHF7uNkegr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml +LLfiAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUVnuiZIesn KwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD2NCcnWXL0CsnMQMeNuE9 dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI//1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm 6Vwdp6POXiUyK+OVrCoHzrQoeIY8LaadTdJ0MN1kURXbg4NR16/9M51NZg== -----END CERTIFICATE----- Security Communication ECC RootCA1 ================================== -----BEGIN CERTIFICATE----- MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYTAkpQMSUwIwYD VQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYDVQQDEyJTZWN1cml0eSBDb21t dW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYxNjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTEL MAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNV BAMTIlNlY3VyaXR5IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQA IgNiAASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+CnnfdldB9sELLo 5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpKULGjQjBAMB0GA1UdDgQW BBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAK BggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3L snNdo4gIxwwCMQDAqy0Obe0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70e N9k= -----END CERTIFICATE----- BJCA Global Root CA1 ==================== -----BEGIN CERTIFICATE----- MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBUMQswCQYDVQQG EwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJVFkxHTAbBgNVBAMMFEJK Q0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAzMTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkG A1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQD DBRCSkNBIEdsb2JhbCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFm CL3ZxRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZspDyRhyS sTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O558dnJCNPYwpj9mZ9S1Wn P3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgRat7GGPZHOiJBhyL8xIkoVNiMpTAK+BcW yqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRj eulumijWML3mG90Vr4TqnMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNn MoH1V6XKV0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/pj+b OT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZOz2nxbkRs1CTqjSSh GL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXnjSXWgXSHRtQpdaJCbPdzied9v3pK H9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMB AAGjQjBAMB0GA1UdDgQWBBTF7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4G A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4 YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3KliawLwQ8hOnThJ dMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u+2D2/VnGKhs/I0qUJDAnyIm8 60Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuh TaRjAv04l5U/BXCga99igUOLtFkNSoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW 4AB+dAb/OMRyHdOoP2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmp GQrI+pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRzznfSxqxx 4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9eVzYH6Eze9mCUAyTF6ps 3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4S SPfSKcOYKMryMguTjClPPGAyzQWWYezyr/6zcCwupvI= -----END CERTIFICATE----- BJCA Global Root CA2 ==================== -----BEGIN CERTIFICATE----- MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQswCQYDVQQGEwJD TjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJVFkxHTAbBgNVBAMMFEJKQ0Eg R2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgyMVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UE BhMCQ04xJjAkBgNVBAoMHUJFSUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRC SkNBIEdsb2JhbCBSb290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jl SR9BIgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK++kpRuDCK /eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJKsVF/BvDRgh9Obl+rg/xI 1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8 W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8g UXOQwKhbYdDFUDn9hf7B43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w== -----END CERTIFICATE----- Sectigo Public Server Authentication Root E46 ============================================= -----BEGIN CERTIFICATE----- MIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQswCQYDVQQGEwJH QjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBTZXJ2 ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5 WjBfMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0 aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUr gQQAIgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccCWvkEN/U0 NSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+6xnOQ6OjQjBAMB0GA1Ud DgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB /zAKBggqhkjOPQQDAwNnADBkAjAn7qRaqCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RH lAFWovgzJQxC36oCMB3q4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21U SAGKcw== -----END CERTIFICATE----- Sectigo Public Server Authentication Root R46 ============================================= -----BEGIN CERTIFICATE----- MIIFijCCA3KgAwIBAgIQdY39i658BwD6qSWn4cetFDANBgkqhkiG9w0BAQwFADBfMQswCQYDVQQG EwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT ZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwHhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1 OTU5WjBfMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T ZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwggIiMA0GCSqGSIb3 DQEBAQUAA4ICDwAwggIKAoICAQCTvtU2UnXYASOgHEdCSe5jtrch/cSV1UgrJnwUUxDaef0rty2k 1Cz66jLdScK5vQ9IPXtamFSvnl0xdE8H/FAh3aTPaE8bEmNtJZlMKpnzSDBh+oF8HqcIStw+Kxwf GExxqjWMrfhu6DtK2eWUAtaJhBOqbchPM8xQljeSM9xfiOefVNlI8JhD1mb9nxc4Q8UBUQvX4yMP FF1bFOdLvt30yNoDN9HWOaEhUTCDsG3XME6WW5HwcCSrv0WBZEMNvSE6Lzzpng3LILVCJ8zab5vu ZDCQOc2TZYEhMbUjUDM3IuM47fgxMMxF/mL50V0yeUKH32rMVhlATc6qu/m1dkmU8Sf4kaWD5Qaz Yw6A3OASVYCmO2a0OYctyPDQ0RTp5A1NDvZdV3LFOxxHVp3i1fuBYYzMTYCQNFu31xR13NgESJ/A wSiItOkcyqex8Va3e0lMWeUgFaiEAin6OJRpmkkGj80feRQXEgyDet4fsZfu+Zd4KKTIRJLpfSYF plhym3kT2BFfrsU4YjRosoYwjviQYZ4ybPUHNs2iTG7sijbt8uaZFURww3y8nDnAtOFr94MlI1fZ EoDlSfB1D++N6xybVCi0ITz8fAr/73trdf+LHaAZBav6+CuBQug4urv7qv094PPK306Xlynt8xhW 6aWWrL3DkJiy4Pmi1KZHQ3xtzwIDAQABo0IwQDAdBgNVHQ4EFgQUVnNYZJX5khqwEioEYnmhQBWI IUkwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAC9c mTz8Bl6MlC5w6tIyMY208FHVvArzZJ8HXtXBc2hkeqK5Duj5XYUtqDdFqij0lgVQYKlJfp/imTYp E0RHap1VIDzYm/EDMrraQKFz6oOht0SmDpkBm+S8f74TlH7Kph52gDY9hAaLMyZlbcp+nv4fjFg4 exqDsQ+8FxG75gbMY/qB8oFM2gsQa6H61SilzwZAFv97fRheORKkU55+MkIQpiGRqRxOF3yEvJ+M 0ejf5lG5Nkc/kLnHvALcWxxPDkjBJYOcCj+esQMzEhonrPcibCTRAUH4WAP+JWgiH5paPHxsnnVI 84HxZmduTILA7rpXDhjvLpr3Etiga+kFpaHpaPi8TD8SHkXoUsCjvxInebnMMTzD9joiFgOgyY9m pFuiTdaBJQbpdqQACj7LzTWb4OE4y2BThihCQRxEV+ioratF4yUQvNs+ZUH7G6aXD+u5dHn5Hrwd Vw1Hr8Mvn4dGp+smWg9WY7ViYG4A++MnESLn/pmPNPW56MORcr3Ywx65LvKRRFHQV80MNNVIIb/b E/FmJUNS0nAiNs2fxBx1IK1jcmMGDw4nztJqDby1ORrp0XZ60Vzk50lJLVU3aPAaOpg+VBeHVOmm J1CJeyAvP/+/oYtKR5j/K3tJPsMpRmAYQqszKbrAKbkTidOIijlBO8n9pu0f9GBj39ItVQGL -----END CERTIFICATE----- SSL.com TLS RSA Root CA 2022 ============================ -----BEGIN CERTIFICATE----- MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQG EwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxTU0wuY29tIFRMUyBSU0Eg Um9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloXDTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMC VVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJv b3QgQ0EgMjAyMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u 9nTPL3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OYt6/wNr/y 7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0insS657Lb85/bRi3pZ7Qcac oOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3PnxEX4MN8/HdIGkWCVDi1FW24IBydm5M R7d1VVm0U3TZlMZBrViKMWYPHqIbKUBOL9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDG D6C1vBdOSHtRwvzpXGk3R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEW TO6Af77wdr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS+YCk 8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYSd66UNHsef8JmAOSq g+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoGAtUjHBPW6dvbxrB6y3snm/vg1UYk 7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2fgTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1Ud EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsu N+7jhHonLs0ZNbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsMQtfhWsSWTVTN j8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvfR4iyrT7gJ4eLSYwfqUdYe5by iB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJDPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjU o3KUQyxi4U5cMj29TH0ZR6LDSeeWP4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqo ENjwuSfr98t67wVylrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7Egkaib MOlqbLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2wAgDHbICi vRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3qr5nsLFR+jM4uElZI7xc7 P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sjiMho6/4UIyYOf8kpIEFR3N+2ivEC+5BB0 9+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA= -----END CERTIFICATE----- SSL.com TLS ECC Root CA 2022 ============================ -----BEGIN CERTIFICATE----- MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQswCQYDVQQGEwJV UzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxTU0wuY29tIFRMUyBFQ0MgUm9v dCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMx GDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3Qg Q0EgMjAyMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWy JGYmacCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFNSeR7T5v1 5wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSJjy+j6CugFFR7 81a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NWuCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGG MAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w 7deedWo1dlJF4AIxAMeNb0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5 Zn6g6g== -----END CERTIFICATE----- Atos TrustedRoot Root CA ECC TLS 2021 ===================================== -----BEGIN CERTIFICATE----- MIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4wLAYDVQQDDCVB dG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0wCwYDVQQKDARBdG9zMQswCQYD VQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3Mg VHJ1c3RlZFJvb3QgUm9vdCBDQSBFQ0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYT AkRFMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6K DP/XtXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4AjJn8ZQS b+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2KCXWfeBmmnoJsmo7jjPX NtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMDaAAwZQIwW5kp85wxtolrbNa9d+F851F+ uDrNozZffPc8dz7kUK2o59JZDCaOMDtuCCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGY a3cpetskz2VAv9LcjBHo9H1/IISpQuQo -----END CERTIFICATE----- Atos TrustedRoot Root CA RSA TLS 2021 ===================================== -----BEGIN CERTIFICATE----- MIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBMMS4wLAYDVQQD DCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIxMQ0wCwYDVQQKDARBdG9zMQsw CQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0 b3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNV BAYTAkRFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BB l01Z4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYvYe+W/CBG vevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZkmGbzSoXfduP9LVq6hdK ZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDsGY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt 0xU6kGpn8bRrZtkh68rZYnxGEFzedUlnnkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVK PNe0OwANwI8f4UDErmwh3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMY sluMWuPD0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzygeBY Br3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8ANSbhqRAvNncTFd+ rrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezBc6eUWsuSZIKmAMFwoW4sKeFYV+xa fJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lIpw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/ BAUwAwEB/zAdBgNVHQ4EFgQUdEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0G CSqGSIb3DQEBDAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS 4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPso0UvFJ/1TCpl Q3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJqM7F78PRreBrAwA0JrRUITWX AdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuywxfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9G slA9hGCZcbUztVdF5kJHdWoOsAgMrr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2Vkt afcxBPTy+av5EzH4AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9q TFsR0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuYo7Ey7Nmj 1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5dDTedk+SKlOxJTnbPP/l PqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcEoji2jbDwN/zIIX8/syQbPYtuzE2wFg2W HYMfRsCbvUOZ58SWLs5fyQ== -----END CERTIFICATE----- TrustAsia Global Root CA G3 =========================== -----BEGIN CERTIFICATE----- MIIFpTCCA42gAwIBAgIUZPYOZXdhaqs7tOqFhLuxibhxkw8wDQYJKoZIhvcNAQEMBQAwWjELMAkG A1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMsIEluYy4xJDAiBgNVBAMM G1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHMzAeFw0yMTA1MjAwMjEwMTlaFw00NjA1MTkwMjEw MTlaMFoxCzAJBgNVBAYTAkNOMSUwIwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMu MSQwIgYDVQQDDBtUcnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzMwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQDAMYJhkuSUGwoqZdC+BqmHO1ES6nBBruL7dOoKjbmzTNyPtxNST1QY4Sxz lZHFZjtqz6xjbYdT8PfxObegQ2OwxANdV6nnRM7EoYNl9lA+sX4WuDqKAtCWHwDNBSHvBm3dIZwZ Q0WhxeiAysKtQGIXBsaqvPPW5vxQfmZCHzyLpnl5hkA1nyDvP+uLRx+PjsXUjrYsyUQE49RDdT/V P68czH5GX6zfZBCK70bwkPAPLfSIC7Epqq+FqklYqL9joDiR5rPmd2jE+SoZhLsO4fWvieylL1Ag dB4SQXMeJNnKziyhWTXAyB1GJ2Faj/lN03J5Zh6fFZAhLf3ti1ZwA0pJPn9pMRJpxx5cynoTi+jm 9WAPzJMshH/x/Gr8m0ed262IPfN2dTPXS6TIi/n1Q1hPy8gDVI+lhXgEGvNz8teHHUGf59gXzhqc D0r83ERoVGjiQTz+LISGNzzNPy+i2+f3VANfWdP3kXjHi3dqFuVJhZBFcnAvkV34PmVACxmZySYg WmjBNb9Pp1Hx2BErW+Canig7CjoKH8GB5S7wprlppYiU5msTf9FkPz2ccEblooV7WIQn3MSAPmea mseaMQ4w7OYXQJXZRe0Blqq/DPNL0WP3E1jAuPP6Z92bfW1K/zJMtSU7/xxnD4UiWQWRkUF3gdCF TIcQcf+eQxuulXUtgQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEDk5PIj 7zjKsK5Xf/IhMBY027ySMB0GA1UdDgQWBBRA5OTyI+84yrCuV3/yITAWNNu8kjAOBgNVHQ8BAf8E BAMCAQYwDQYJKoZIhvcNAQEMBQADggIBACY7UeFNOPMyGLS0XuFlXsSUT9SnYaP4wM8zAQLpw6o1 D/GUE3d3NZ4tVlFEbuHGLige/9rsR82XRBf34EzC4Xx8MnpmyFq2XFNFV1pF1AWZLy4jVe5jaN/T G3inEpQGAHUNcoTpLrxaatXeL1nHo+zSh2bbt1S1JKv0Q3jbSwTEb93mPmY+KfJLaHEih6D4sTNj duMNhXJEIlU/HHzp/LgV6FL6qj6jITk1dImmasI5+njPtqzn59ZW/yOSLlALqbUHM/Q4X6RJpstl cHboCoWASzY9M/eVVHUl2qzEc4Jl6VL1XP04lQJqaTDFHApXB64ipCz5xUG3uOyfT0gA+QEEVcys +TIxxHWVBqB/0Y0n3bOppHKH/lmLmnp0Ft0WpWIp6zqW3IunaFnT63eROfjXy9mPX1onAX1daBli 2MjN9LdyR75bl87yraKZk62Uy5P2EgmVtqvXO9A/EcswFi55gORngS1d7XB4tmBZrOFdRWOPyN9y aFvqHbgB8X7754qz41SgOAngPN5C8sLtLpvzHzW2NtjjgKGLzZlkD8Kqq7HK9W+eQ42EVJmzbsAS ZthwEPEGNTNDqJwuuhQxzhB/HIbjj9LV+Hfsm6vxL2PZQl/gZ4FkkfGXL/xuJvYz+NO1+MRiqzFR JQJ6+N1rZdVtTTDIZbpoFGWsJwt0ivKH -----END CERTIFICATE----- TrustAsia Global Root CA G4 =========================== -----BEGIN CERTIFICATE----- MIICVTCCAdygAwIBAgIUTyNkuI6XY57GU4HBdk7LKnQV1tcwCgYIKoZIzj0EAwMwWjELMAkGA1UE BhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMsIEluYy4xJDAiBgNVBAMMG1Ry dXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHNDAeFw0yMTA1MjAwMjEwMjJaFw00NjA1MTkwMjEwMjJa MFoxCzAJBgNVBAYTAkNOMSUwIwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQw IgYDVQQDDBtUcnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi AATxs8045CVD5d4ZCbuBeaIVXxVjAd7Cq92zphtnS4CDr5nLrBfbK5bKfFJV4hrhPVbwLxYI+hW8 m7tH5j/uqOFMjPXTNvk4XatwmkcN4oFBButJ+bAp3TPsUKV/eSm4IJijYzBhMA8GA1UdEwEB/wQF MAMBAf8wHwYDVR0jBBgwFoAUpbtKl86zK3+kMd6Xg1mDpm9xy94wHQYDVR0OBBYEFKW7SpfOsyt/ pDHel4NZg6ZvccveMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjBe8usGzEkxn0AA bbd+NvBNEU/zy4k6LHiRUKNbwMp1JvK/kF0LgoxgKJ/GcJpo5PECMFxYDlZ2z1jD1xCMuo6u47xk dUfFVZDj/bpV6wfEU6s3qe4hsiFbYI89MvHVI5TWWA== -----END CERTIFICATE----- CommScope Public Trust ECC Root-01 ================================== -----BEGIN CERTIFICATE----- MIICHTCCAaOgAwIBAgIUQ3CCd89NXTTxyq4yLzf39H91oJ4wCgYIKoZIzj0EAwMwTjELMAkGA1UE BhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBUcnVz dCBFQ0MgUm9vdC0wMTAeFw0yMTA0MjgxNzM1NDNaFw00NjA0MjgxNzM1NDJaME4xCzAJBgNVBAYT AlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3Qg RUNDIFJvb3QtMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARLNumuV16ocNfQj3Rid8NeeqrltqLx eP0CflfdkXmcbLlSiFS8LwS+uM32ENEp7LXQoMPwiXAZu1FlxUOcw5tjnSCDPgYLpkJEhRGnSjot 6dZoL0hOUysHP029uax3OVejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G A1UdDgQWBBSOB2LAUN3GGQYARnQE9/OufXVNMDAKBggqhkjOPQQDAwNoADBlAjEAnDPfQeMjqEI2 Jpc1XHvr20v4qotzVRVcrHgpD7oh2MSg2NED3W3ROT3Ek2DS43KyAjB8xX6I01D1HiXo+k515liW pDVfG2XqYZpwI7UNo5uSUm9poIyNStDuiw7LR47QjRE= -----END CERTIFICATE----- CommScope Public Trust ECC Root-02 ================================== -----BEGIN CERTIFICATE----- MIICHDCCAaOgAwIBAgIUKP2ZYEFHpgE6yhR7H+/5aAiDXX0wCgYIKoZIzj0EAwMwTjELMAkGA1UE BhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBUcnVz dCBFQ0MgUm9vdC0wMjAeFw0yMTA0MjgxNzQ0NTRaFw00NjA0MjgxNzQ0NTNaME4xCzAJBgNVBAYT AlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3Qg RUNDIFJvb3QtMDIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAR4MIHoYx7l63FRD/cHB8o5mXxO1Q/M MDALj2aTPs+9xYa9+bG3tD60B8jzljHz7aRP+KNOjSkVWLjVb3/ubCK1sK9IRQq9qEmUv4RDsNuE SgMjGWdqb8FuvAY5N9GIIvejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G A1UdDgQWBBTmGHX/72DehKT1RsfeSlXjMjZ59TAKBggqhkjOPQQDAwNnADBkAjAmc0l6tqvmSfR9 Uj/UQQSugEODZXW5hYA4O9Zv5JOGq4/nich/m35rChJVYaoR4HkCMHfoMXGsPHED1oQmHhS48zs7 3u1Z/GtMMH9ZzkXpc2AVmkzw5l4lIhVtwodZ0LKOag== -----END CERTIFICATE----- CommScope Public Trust RSA Root-01 ================================== -----BEGIN CERTIFICATE----- MIIFbDCCA1SgAwIBAgIUPgNJgXUWdDGOTKvVxZAplsU5EN0wDQYJKoZIhvcNAQELBQAwTjELMAkG A1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBU cnVzdCBSU0EgUm9vdC0wMTAeFw0yMTA0MjgxNjQ1NTRaFw00NjA0MjgxNjQ1NTNaME4xCzAJBgNV BAYTAlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1 c3QgUlNBIFJvb3QtMDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwSGWjDR1C45Ft nYSkYZYSwu3D2iM0GXb26v1VWvZVAVMP8syMl0+5UMuzAURWlv2bKOx7dAvnQmtVzslhsuitQDy6 uUEKBU8bJoWPQ7VAtYXR1HHcg0Hz9kXHgKKEUJdGzqAMxGBWBB0HW0alDrJLpA6lfO741GIDuZNq ihS4cPgugkY4Iw50x2tBt9Apo52AsH53k2NC+zSDO3OjWiE260f6GBfZumbCk6SP/F2krfxQapWs vCQz0b2If4b19bJzKo98rwjyGpg/qYFlP8GMicWWMJoKz/TUyDTtnS+8jTiGU+6Xn6myY5QXjQ/c Zip8UlF1y5mO6D1cv547KI2DAg+pn3LiLCuz3GaXAEDQpFSOm117RTYm1nJD68/A6g3czhLmfTif BSeolz7pUcZsBSjBAg/pGG3svZwG1KdJ9FQFa2ww8esD1eo9anbCyxooSU1/ZOD6K9pzg4H/kQO9 lLvkuI6cMmPNn7togbGEW682v3fuHX/3SZtS7NJ3Wn2RnU3COS3kuoL4b/JOHg9O5j9ZpSPcPYeo KFgo0fEbNttPxP/hjFtyjMcmAyejOQoBqsCyMWCDIqFPEgkBEa801M/XrmLTBQe0MXXgDW1XT2mH +VepuhX2yFJtocucH+X8eKg1mp9BFM6ltM6UCBwJrVbl2rZJmkrqYxhTnCwuwwIDAQABo0IwQDAP BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUN12mmnQywsL5x6YVEFm4 5P3luG0wDQYJKoZIhvcNAQELBQADggIBAK+nz97/4L1CjU3lIpbfaOp9TSp90K09FlxD533Ahuh6 NWPxzIHIxgvoLlI1pKZJkGNRrDSsBTtXAOnTYtPZKdVUvhwQkZyybf5Z/Xn36lbQnmhUQo8mUuJM 3y+Xpi/SB5io82BdS5pYV4jvguX6r2yBS5KPQJqTRlnLX3gWsWc+QgvfKNmwrZggvkN80V4aCRck jXtdlemrwWCrWxhkgPut4AZ9HcpZuPN4KWfGVh2vtrV0KnahP/t1MJ+UXjulYPPLXAziDslg+Mkf Foom3ecnf+slpoq9uC02EJqxWE2aaE9gVOX2RhOOiKy8IUISrcZKiX2bwdgt6ZYD9KJ0DLwAHb/W NyVntHKLr4W96ioDj8z7PEQkguIBpQtZtjSNMgsSDesnwv1B10A8ckYpwIzqug/xBpMu95yo9GA+ o/E4Xo4TwbM6l4c/ksp4qRyv0LAbJh6+cOx69TOY6lz/KwsETkPdY34Op054A5U+1C0wlREQKC6/ oAI+/15Z0wUOlV9TRe9rh9VIzRamloPh37MG88EU26fsHItdkJANclHnYfkUyq+Dj7+vsQpZXdxc 1+SWrVtgHdqul7I52Qb1dgAT+GhMIbA1xNxVssnBQVocicCMb3SgazNNtQEo/a2tiRc7ppqEvOuM 6sRxJKi6KfkIsidWNTJf6jn7MZrVGczw -----END CERTIFICATE----- CommScope Public Trust RSA Root-02 ================================== -----BEGIN CERTIFICATE----- MIIFbDCCA1SgAwIBAgIUVBa/O345lXGN0aoApYYNK496BU4wDQYJKoZIhvcNAQELBQAwTjELMAkG A1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBU cnVzdCBSU0EgUm9vdC0wMjAeFw0yMTA0MjgxNzE2NDNaFw00NjA0MjgxNzE2NDJaME4xCzAJBgNV BAYTAlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1 c3QgUlNBIFJvb3QtMDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDh+g77aAASyE3V rCLENQE7xVTlWXZjpX/rwcRqmL0yjReA61260WI9JSMZNRTpf4mnG2I81lDnNJUDMrG0kyI9p+Kx 7eZ7Ti6Hmw0zdQreqjXnfuU2mKKuJZ6VszKWpCtYHu8//mI0SFHRtI1CrWDaSWqVcN3SAOLMV2MC e5bdSZdbkk6V0/nLKR8YSvgBKtJjCW4k6YnS5cciTNxzhkcAqg2Ijq6FfUrpuzNPDlJwnZXjfG2W Wy09X6GDRl224yW4fKcZgBzqZUPckXk2LHR88mcGyYnJ27/aaL8j7dxrrSiDeS/sOKUNNwFnJ5rp M9kzXzehxfCrPfp4sOcsn/Y+n2Dg70jpkEUeBVF4GiwSLFworA2iI540jwXmojPOEXcT1A6kHkIf hs1w/tkuFT0du7jyU1fbzMZ0KZwYszZ1OC4PVKH4kh+Jlk+71O6d6Ts2QrUKOyrUZHk2EOH5kQMr eyBUzQ0ZGshBMjTRsJnhkB4BQDa1t/qp5Xd1pCKBXbCL5CcSD1SIxtuFdOa3wNemKfrb3vOTlycE VS8KbzfFPROvCgCpLIscgSjX74Yxqa7ybrjKaixUR9gqiC6vwQcQeKwRoi9C8DfF8rhW3Q5iLc4t Vn5V8qdE9isy9COoR+jUKgF4z2rDN6ieZdIs5fq6M8EGRPbmz6UNp2YINIos8wIDAQABo0IwQDAP BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUR9DnsSL/nSz12Vdgs7Gx cJXvYXowDQYJKoZIhvcNAQELBQADggIBAIZpsU0v6Z9PIpNojuQhmaPORVMbc0RTAIFhzTHjCLqB KCh6krm2qMhDnscTJk3C2OVVnJJdUNjCK9v+5qiXz1I6JMNlZFxHMaNlNRPDk7n3+VGXu6TwYofF 1gbTl4MgqX67tiHCpQ2EAOHyJxCDut0DgdXdaMNmEMjRdrSzbymeAPnCKfWxkxlSaRosTKCL4BWa MS/TiJVZbuXEs1DIFAhKm4sTg7GkcrI7djNB3NyqpgdvHSQSn8h2vS/ZjvQs7rfSOBAkNlEv41xd gSGn2rtO/+YHqP65DSdsu3BaVXoT6fEqSWnHX4dXTEN5bTpl6TBcQe7rd6VzEojov32u5cSoHw2O HG1QAk8mGEPej1WFsQs3BWDJVTkSBKEqz3EWnzZRSb9wO55nnPt7eck5HHisd5FUmrh1CoFSl+Nm YWvtPjgelmFV4ZFUjO2MJB+ByRCac5krFk5yAD9UG/iNuovnFNa2RU9g7Jauwy8CTl2dlklyALKr dVwPaFsdZcJfMw8eD/A7hvWwTruc9+olBdytoptLFwG+Qt81IR2tq670v64fG9PiO/yzcnMcmyiQ iRM9HcEARwmWmjgb3bHPDcK0RPOWlc4yOo80nOAXx17Org3bhzjlP1v9mxnhMUF6cKojawHhRUzN lM47ni3niAIi9G7oyOzWPPO5std3eqx7 -----END CERTIFICATE----- Telekom Security TLS ECC Root 2020 ================================== -----BEGIN CERTIFICATE----- MIICQjCCAcmgAwIBAgIQNjqWjMlcsljN0AFdxeVXADAKBggqhkjOPQQDAzBjMQswCQYDVQQGEwJE RTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBHbWJIMSswKQYDVQQDDCJUZWxl a29tIFNlY3VyaXR5IFRMUyBFQ0MgUm9vdCAyMDIwMB4XDTIwMDgyNTA3NDgyMFoXDTQ1MDgyNTIz NTk1OVowYzELMAkGA1UEBhMCREUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkg R21iSDErMCkGA1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgRUNDIFJvb3QgMjAyMDB2MBAGByqG SM49AgEGBSuBBAAiA2IABM6//leov9Wq9xCazbzREaK9Z0LMkOsVGJDZos0MKiXrPk/OtdKPD/M1 2kOLAoC+b1EkHQ9rK8qfwm9QMuU3ILYg/4gND21Ju9sGpIeQkpT0CdDPf8iAC8GXs7s1J8nCG6NC MEAwHQYDVR0OBBYEFONyzG6VmUex5rNhTNHLq+O6zd6fMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P AQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMHVSi7ekEE+uShCLsoRbQuHmKjYC2qBuGT8lv9pZ Mo7k+5Dck2TOrbRBR2Diz6fLHgIwN0GMZt9Ba9aDAEH9L1r3ULRn0SyocddDypwnJJGDSA3PzfdU ga/sf+Rn27iQ7t0l -----END CERTIFICATE----- Telekom Security TLS RSA Root 2023 ================================== -----BEGIN CERTIFICATE----- MIIFszCCA5ugAwIBAgIQIZxULej27HF3+k7ow3BXlzANBgkqhkiG9w0BAQwFADBjMQswCQYDVQQG EwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBHbWJIMSswKQYDVQQDDCJU ZWxla29tIFNlY3VyaXR5IFRMUyBSU0EgUm9vdCAyMDIzMB4XDTIzMDMyODEyMTY0NVoXDTQ4MDMy NzIzNTk1OVowYzELMAkGA1UEBhMCREUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJp dHkgR21iSDErMCkGA1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgUlNBIFJvb3QgMjAyMzCCAiIw DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAO01oYGA88tKaVvC+1GDrib94W7zgRJ9cUD/h3VC KSHtgVIs3xLBGYSJwb3FKNXVS2xE1kzbB5ZKVXrKNoIENqil/Cf2SfHVcp6R+SPWcHu79ZvB7JPP GeplfohwoHP89v+1VmLhc2o0mD6CuKyVU/QBoCcHcqMAU6DksquDOFczJZSfvkgdmOGjup5czQRx UX11eKvzWarE4GC+j4NSuHUaQTXtvPM6Y+mpFEXX5lLRbtLevOP1Czvm4MS9Q2QTps70mDdsipWo l8hHD/BeEIvnHRz+sTugBTNoBUGCwQMrAcjnj02r6LX2zWtEtefdi+zqJbQAIldNsLGyMcEWzv/9 FIS3R/qy8XDe24tsNlikfLMR0cN3f1+2JeANxdKz+bi4d9s3cXFH42AYTyS2dTd4uaNir73Jco4v zLuu2+QVUhkHM/tqty1LkCiCc/4YizWN26cEar7qwU02OxY2kTLvtkCJkUPg8qKrBC7m8kwOFjQg rIfBLX7JZkcXFBGk8/ehJImr2BrIoVyxo/eMbcgByU/J7MT8rFEz0ciD0cmfHdRHNCk+y7AO+oML KFjlKdw/fKifybYKu6boRhYPluV75Gp6SG12mAWl3G0eQh5C2hrgUve1g8Aae3g1LDj1H/1Joy7S WWO/gLCMk3PLNaaZlSJhZQNg+y+TS/qanIA7AgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAdBgNV HQ4EFgQUtqeXgj10hZv3PJ+TmpV5dVKMbUcwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS2 p5eCPXSFm/c8n5OalXl1UoxtRzANBgkqhkiG9w0BAQwFAAOCAgEAqMxhpr51nhVQpGv7qHBFfLp+ sVr8WyP6Cnf4mHGCDG3gXkaqk/QeoMPhk9tLrbKmXauw1GLLXrtm9S3ul0A8Yute1hTWjOKWi0Fp kzXmuZlrYrShF2Y0pmtjxrlO8iLpWA1WQdH6DErwM807u20hOq6OcrXDSvvpfeWxm4bu4uB9tPcy /SKE8YXJN3nptT+/XOR0so8RYgDdGGah2XsjX/GO1WfoVNpbOms2b/mBsTNHM3dA+VKq3dSDz4V4 mZqTuXNnQkYRIer+CqkbGmVps4+uFrb2S1ayLfmlyOw7YqPta9BO1UAJpB+Y1zqlklkg5LB9zVtz aL1txKITDmcZuI1CfmwMmm6gJC3VRRvcxAIU/oVbZZfKTpBQCHpCNfnqwmbU+AGuHrS+w6jv/naa oqYfRvaE7fzbzsQCzndILIyy7MMAo+wsVRjBfhnu4S/yrYObnqsZ38aKL4x35bcF7DvB7L6Gs4a8 wPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+ljX273CXE2whJdV/LItM3z7gLfEdxquVeE HVlNjM7IDiPCtyaaEBRx/pOyiriA8A4QntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0 o82bNSQ3+pCTE4FCxpgmdTdmQRCsu/WU48IxK63nI1bMNSWSs1A= -----END CERTIFICATE----- Cloudflare CA ================================== -----BEGIN CERTIFICATE----- MIIC6zCCAkygAwIBAgIUI7b68p0pPrCBoW4ptlyvVcPItscwCgYIKoZIzj0EAwQw gY0xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T YW4gRnJhbmNpc2NvMRgwFgYDVQQKEw9DbG91ZGZsYXJlLCBJbmMxNzA1BgNVBAMT LkNsb3VkZmxhcmUgZm9yIFRlYW1zIEVDQyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkw HhcNMjAwMjA0MTYwNTAwWhcNMjUwMjAyMTYwNTAwWjCBjTELMAkGA1UEBhMCVVMx EzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xGDAW BgNVBAoTD0Nsb3VkZmxhcmUsIEluYzE3MDUGA1UEAxMuQ2xvdWRmbGFyZSBmb3Ig VGVhbXMgRUNDIENlcnRpZmljYXRlIEF1dGhvcml0eTCBmzAQBgcqhkjOPQIBBgUr gQQAIwOBhgAEAVdXsX8tpA9NAQeEQalvUIcVaFNDvGsR69ysZxOraRWNGHLfq1mi P6o3wtmtx/C2OXG01Cw7UFJbKl5MEDxnT2KoAdFSynSJOF2NDoe5LoZHbUW+yR3X FDl+MF6JzZ590VLGo6dPBf06UsXbH7PvHH2XKtFt8bBXVNMa5a21RdmpD0Pho0Uw QzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBAjAdBgNVHQ4EFgQU YBcQng1AEMMNteuRDAMG0/vgFe0wCgYIKoZIzj0EAwQDgYwAMIGIAkIBQU5OTA2h YqmFk8paan5ezHVLcmcucsfYw4L/wmeEjCkczRmCVNm6L86LjhWU0v0wER0e+lHO 3efvjbsu8gIGSagCQgEBnyYMP9gwg8l96QnQ1khFA1ljFlnqc2XgJHDSaAJC0gdz +NV3JMeWaD2Rb32jc9r6/a7xY0u0ByqxBQ1OQ0dt7A== -----END CERTIFICATE----- * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\CaBundle; use _PHPStan_b22655c3f\Psr\Log\LoggerInterface; use _PHPStan_b22655c3f\Symfony\Component\Process\PhpProcess; /** * @author Chris Smith * @author Jordi Boggiano */ class CaBundle { /** @var string|null */ private static $caPath; /** @var array */ private static $caFileValidity = array(); /** * Returns the system CA bundle path, or a path to the bundled one * * This method was adapted from Sslurp. * https://github.com/EvanDotPro/Sslurp * * (c) Evan Coury * * For the full copyright and license information, please see below: * * Copyright (c) 2013, Evan Coury * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @param LoggerInterface $logger optional logger for information about which CA files were loaded * @return string path to a CA bundle file or directory */ public static function getSystemCaRootBundlePath(?LoggerInterface $logger = null) { if (self::$caPath !== null) { return self::$caPath; } $caBundlePaths = array(); // If SSL_CERT_FILE env variable points to a valid certificate/bundle, use that. // This mimics how OpenSSL uses the SSL_CERT_FILE env variable. $caBundlePaths[] = self::getEnvVariable('SSL_CERT_FILE'); // If SSL_CERT_DIR env variable points to a valid certificate/bundle, use that. // This mimics how OpenSSL uses the SSL_CERT_FILE env variable. $caBundlePaths[] = self::getEnvVariable('SSL_CERT_DIR'); $caBundlePaths[] = \ini_get('openssl.cafile'); $caBundlePaths[] = \ini_get('openssl.capath'); $otherLocations = array( '/etc/pki/tls/certs/ca-bundle.crt', // Fedora, RHEL, CentOS (ca-certificates package) '/etc/ssl/certs/ca-certificates.crt', // Debian, Ubuntu, Gentoo, Arch Linux (ca-certificates package) '/etc/ssl/ca-bundle.pem', // SUSE, openSUSE (ca-certificates package) '/usr/local/share/certs/ca-root-nss.crt', // FreeBSD (ca_root_nss_package) '/usr/ssl/certs/ca-bundle.crt', // Cygwin '/opt/local/share/curl/curl-ca-bundle.crt', // OS X macports, curl-ca-bundle package '/usr/local/share/curl/curl-ca-bundle.crt', // Default cURL CA bunde path (without --with-ca-bundle option) '/usr/share/ssl/certs/ca-bundle.crt', // Really old RedHat? '/etc/ssl/cert.pem', // OpenBSD '/usr/local/etc/ssl/cert.pem', // FreeBSD 10.x '/usr/local/etc/openssl/cert.pem', // OS X homebrew, openssl package '/usr/local/etc/openssl@1.1/cert.pem', // OS X homebrew, openssl@1.1 package '/opt/homebrew/etc/openssl@3/cert.pem', // macOS silicon homebrew, openssl@3 package '/opt/homebrew/etc/openssl@1.1/cert.pem', ); foreach ($otherLocations as $location) { $otherLocations[] = \dirname($location); } $caBundlePaths = \array_merge($caBundlePaths, $otherLocations); foreach ($caBundlePaths as $caBundle) { if ($caBundle && self::caFileUsable($caBundle, $logger)) { return self::$caPath = $caBundle; } if ($caBundle && self::caDirUsable($caBundle, $logger)) { return self::$caPath = $caBundle; } } return self::$caPath = static::getBundledCaBundlePath(); // Bundled CA file, last resort } /** * Returns the path to the bundled CA file * * In case you don't want to trust the user or the system, you can use this directly * * @return string path to a CA bundle file */ public static function getBundledCaBundlePath() { $caBundleFile = __DIR__ . '/../res/cacert.pem'; // cURL does not understand 'phar://' paths // see https://github.com/composer/ca-bundle/issues/10 if (0 === \strpos($caBundleFile, 'phar://')) { $tempCaBundleFile = \tempnam(\sys_get_temp_dir(), 'openssl-ca-bundle-'); if (\false === $tempCaBundleFile) { throw new \RuntimeException('Could not create a temporary file to store the bundled CA file'); } \file_put_contents($tempCaBundleFile, \file_get_contents($caBundleFile)); \register_shutdown_function(function () use($tempCaBundleFile) { @\unlink($tempCaBundleFile); }); $caBundleFile = $tempCaBundleFile; } return $caBundleFile; } /** * Validates a CA file using opensl_x509_parse only if it is safe to use * * @param string $filename * @param LoggerInterface $logger optional logger for information about which CA files were loaded * * @return bool */ public static function validateCaFile($filename, ?LoggerInterface $logger = null) { static $warned = \false; if (isset(self::$caFileValidity[$filename])) { return self::$caFileValidity[$filename]; } $contents = \file_get_contents($filename); if (\is_string($contents) && \strlen($contents) > 0) { $contents = \preg_replace("/^(\\-+(?:BEGIN|END))\\s+TRUSTED\\s+(CERTIFICATE\\-+)\$/m", '$1 $2', $contents); if (null === $contents) { // regex extraction failed $isValid = \false; } else { $isValid = (bool) \openssl_x509_parse($contents); } } else { $isValid = \false; } if ($logger) { $logger->debug('Checked CA file ' . \realpath($filename) . ': ' . ($isValid ? 'valid' : 'invalid')); } return self::$caFileValidity[$filename] = $isValid; } /** * Test if it is safe to use the PHP function openssl_x509_parse(). * * This checks if OpenSSL extensions is vulnerable to remote code execution * via the exploit documented as CVE-2013-6420. * * @return bool */ public static function isOpensslParseSafe() { return \true; } /** * Resets the static caches * @return void */ public static function reset() { self::$caFileValidity = array(); self::$caPath = null; } /** * @param string $name * @return string|false */ private static function getEnvVariable($name) { if (isset($_SERVER[$name])) { return (string) $_SERVER[$name]; } if (\PHP_SAPI === 'cli' && ($value = \getenv($name)) !== \false && $value !== null) { return (string) $value; } return \false; } /** * @param string|false $certFile * @param LoggerInterface|null $logger * @return bool */ private static function caFileUsable($certFile, ?LoggerInterface $logger = null) { return $certFile && self::isFile($certFile, $logger) && self::isReadable($certFile, $logger) && self::validateCaFile($certFile, $logger); } /** * @param string|false $certDir * @param LoggerInterface|null $logger * @return bool */ private static function caDirUsable($certDir, ?LoggerInterface $logger = null) { return $certDir && self::isDir($certDir, $logger) && self::isReadable($certDir, $logger) && self::glob($certDir . '/*', $logger); } /** * @param string $certFile * @param LoggerInterface|null $logger * @return bool */ private static function isFile($certFile, ?LoggerInterface $logger = null) { $isFile = @\is_file($certFile); if (!$isFile && $logger) { $logger->debug(\sprintf('Checked CA file %s does not exist or it is not a file.', $certFile)); } return $isFile; } /** * @param string $certDir * @param LoggerInterface|null $logger * @return bool */ private static function isDir($certDir, ?LoggerInterface $logger = null) { $isDir = @\is_dir($certDir); if (!$isDir && $logger) { $logger->debug(\sprintf('Checked directory %s does not exist or it is not a directory.', $certDir)); } return $isDir; } /** * @param string $certFileOrDir * @param LoggerInterface|null $logger * @return bool */ private static function isReadable($certFileOrDir, ?LoggerInterface $logger = null) { $isReadable = @\is_readable($certFileOrDir); if (!$isReadable && $logger) { $logger->debug(\sprintf('Checked file or directory %s is not readable.', $certFileOrDir)); } return $isReadable; } /** * @param string $pattern * @param LoggerInterface|null $logger * @return bool */ private static function glob($pattern, ?LoggerInterface $logger = null) { $certs = \glob($pattern); if ($certs === \false) { if ($logger) { $logger->debug(\sprintf("An error occurred while trying to find certificates for pattern: %s", $pattern)); } return \false; } if (\count($certs) === 0) { if ($logger) { $logger->debug(\sprintf("No CA files found for pattern: %s", $pattern)); } return \false; } return \true; } } Copyright (C) 2021 Composer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. services: - class: _PHPStan_b22655c3f\Composer\Pcre\PHPStan\PregMatchParameterOutTypeExtension tags: - phpstan.staticMethodParameterOutTypeExtension - class: _PHPStan_b22655c3f\Composer\Pcre\PHPStan\PregMatchTypeSpecifyingExtension tags: - phpstan.typeSpecifier.staticMethodTypeSpecifyingExtension - class: _PHPStan_b22655c3f\Composer\Pcre\PHPStan\PregReplaceCallbackClosureTypeExtension tags: - phpstan.staticMethodParameterClosureTypeExtension rules: - Composer\Pcre\PHPStan\UnsafeStrictGroupsCallRule - Composer\Pcre\PHPStan\InvalidRegexPatternRule * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Pcre; final class MatchAllWithOffsetsResult { /** * An array of match group => list of matches, every match being a pair of string matched + offset in bytes (or -1 if no match) * * @readonly * @var array> * @phpstan-var array}>> */ public $matches; /** * @readonly * @var 0|positive-int */ public $count; /** * @readonly * @var bool */ public $matched; /** * @param 0|positive-int $count * @param array> $matches * @phpstan-param array}>> $matches */ public function __construct(int $count, array $matches) { $this->matches = $matches; $this->matched = (bool) $count; $this->count = $count; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Pcre; final class MatchAllResult { /** * An array of match group => list of matched strings * * @readonly * @var array> */ public $matches; /** * @readonly * @var 0|positive-int */ public $count; /** * @readonly * @var bool */ public $matched; /** * @param 0|positive-int $count * @param array> $matches */ public function __construct(int $count, array $matches) { $this->matches = $matches; $this->matched = (bool) $count; $this->count = $count; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Pcre; final class MatchWithOffsetsResult { /** * An array of match group => pair of string matched + offset in bytes (or -1 if no match) * * @readonly * @var array * @phpstan-var array}> */ public $matches; /** * @readonly * @var bool */ public $matched; /** * @param 0|positive-int $count * @param array $matches * @phpstan-param array}> $matches */ public function __construct(int $count, array $matches) { $this->matches = $matches; $this->matched = (bool) $count; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Pcre; final class MatchResult { /** * An array of match group => string matched * * @readonly * @var array */ public $matches; /** * @readonly * @var bool */ public $matched; /** * @param 0|positive-int $count * @param array $matches */ public function __construct(int $count, array $matches) { $this->matches = $matches; $this->matched = (bool) $count; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Pcre; class Preg { /** @internal */ public const ARRAY_MSG = '$subject as an array is not supported. You can use \'foreach\' instead.'; /** @internal */ public const INVALID_TYPE_MSG = '$subject must be a string, %s given.'; /** * @param non-empty-string $pattern * @param array $matches Set by method * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported * @return 0|1 * * @param-out array $matches */ public static function match(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0) : int { self::checkOffsetCapture($flags, 'matchWithOffsets'); $result = \preg_match($pattern, $subject, $matches, $flags | \PREG_UNMATCHED_AS_NULL, $offset); if ($result === \false) { throw PcreException::fromFunction('preg_match', $pattern); } return $result; } /** * Variant of `match()` which outputs non-null matches (or throws) * * @param non-empty-string $pattern * @param array $matches Set by method * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported * @return 0|1 * @throws UnexpectedNullMatchException * * @param-out array $matches */ public static function matchStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0) : int { $result = self::match($pattern, $subject, $matchesInternal, $flags, $offset); $matches = self::enforceNonNullMatches($pattern, $matchesInternal, 'match'); return $result; } /** * Runs preg_match with PREG_OFFSET_CAPTURE * * @param non-empty-string $pattern * @param array $matches Set by method * @param int-mask $flags PREG_UNMATCHED_AS_NULL and PREG_OFFSET_CAPTURE are always set, no other flags are supported * @return 0|1 * * @param-out array}> $matches */ public static function matchWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0) : int { $result = \preg_match($pattern, $subject, $matches, $flags | \PREG_UNMATCHED_AS_NULL | \PREG_OFFSET_CAPTURE, $offset); if ($result === \false) { throw PcreException::fromFunction('preg_match', $pattern); } return $result; } /** * @param non-empty-string $pattern * @param array $matches Set by method * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported * @return 0|positive-int * * @param-out array> $matches */ public static function matchAll(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0) : int { self::checkOffsetCapture($flags, 'matchAllWithOffsets'); self::checkSetOrder($flags); $result = \preg_match_all($pattern, $subject, $matches, $flags | \PREG_UNMATCHED_AS_NULL, $offset); if (!\is_int($result)) { // PHP < 8 may return null, 8+ returns int|false throw PcreException::fromFunction('preg_match_all', $pattern); } return $result; } /** * Variant of `match()` which outputs non-null matches (or throws) * * @param non-empty-string $pattern * @param array $matches Set by method * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported * @return 0|positive-int * @throws UnexpectedNullMatchException * * @param-out array> $matches */ public static function matchAllStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0) : int { $result = self::matchAll($pattern, $subject, $matchesInternal, $flags, $offset); $matches = self::enforceNonNullMatchAll($pattern, $matchesInternal, 'matchAll'); return $result; } /** * Runs preg_match_all with PREG_OFFSET_CAPTURE * * @param non-empty-string $pattern * @param array $matches Set by method * @param int-mask $flags PREG_UNMATCHED_AS_NULL and PREG_MATCH_OFFSET are always set, no other flags are supported * @return 0|positive-int * * @param-out array}>> $matches */ public static function matchAllWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0) : int { self::checkSetOrder($flags); $result = \preg_match_all($pattern, $subject, $matches, $flags | \PREG_UNMATCHED_AS_NULL | \PREG_OFFSET_CAPTURE, $offset); if (!\is_int($result)) { // PHP < 8 may return null, 8+ returns int|false throw PcreException::fromFunction('preg_match_all', $pattern); } return $result; } /** * @param string|string[] $pattern * @param string|string[] $replacement * @param string $subject * @param int $count Set by method * * @param-out int<0, max> $count */ public static function replace($pattern, $replacement, $subject, int $limit = -1, ?int &$count = null) : string { if (!\is_scalar($subject)) { if (\is_array($subject)) { throw new \InvalidArgumentException(static::ARRAY_MSG); } throw new \TypeError(\sprintf(static::INVALID_TYPE_MSG, \gettype($subject))); } $result = \preg_replace($pattern, $replacement, $subject, $limit, $count); if ($result === null) { throw PcreException::fromFunction('preg_replace', $pattern); } return $result; } /** * @param string|string[] $pattern * @param ($flags is PREG_OFFSET_CAPTURE ? (callable(array}>): string) : callable(array): string) $replacement * @param string $subject * @param int $count Set by method * @param int-mask $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set * * @param-out int<0, max> $count */ public static function replaceCallback($pattern, callable $replacement, $subject, int $limit = -1, ?int &$count = null, int $flags = 0) : string { if (!\is_scalar($subject)) { if (\is_array($subject)) { throw new \InvalidArgumentException(static::ARRAY_MSG); } throw new \TypeError(\sprintf(static::INVALID_TYPE_MSG, \gettype($subject))); } $result = \preg_replace_callback($pattern, $replacement, $subject, $limit, $count, $flags | \PREG_UNMATCHED_AS_NULL); if ($result === null) { throw PcreException::fromFunction('preg_replace_callback', $pattern); } return $result; } /** * Variant of `replaceCallback()` which outputs non-null matches (or throws) * * @param string $pattern * @param ($flags is PREG_OFFSET_CAPTURE ? (callable(array}>): string) : callable(array): string) $replacement * @param string $subject * @param int $count Set by method * @param int-mask $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set * * @param-out int<0, max> $count */ public static function replaceCallbackStrictGroups(string $pattern, callable $replacement, $subject, int $limit = -1, ?int &$count = null, int $flags = 0) : string { return self::replaceCallback($pattern, function (array $matches) use($pattern, $replacement) { return $replacement(self::enforceNonNullMatches($pattern, $matches, 'replaceCallback')); }, $subject, $limit, $count, $flags); } /** * @param ($flags is PREG_OFFSET_CAPTURE ? (array}>): string>) : array): string>) $pattern * @param string $subject * @param int $count Set by method * @param int-mask $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set * * @param-out int<0, max> $count */ public static function replaceCallbackArray(array $pattern, $subject, int $limit = -1, ?int &$count = null, int $flags = 0) : string { if (!\is_scalar($subject)) { if (\is_array($subject)) { throw new \InvalidArgumentException(static::ARRAY_MSG); } throw new \TypeError(\sprintf(static::INVALID_TYPE_MSG, \gettype($subject))); } $result = \preg_replace_callback_array($pattern, $subject, $limit, $count, $flags | \PREG_UNMATCHED_AS_NULL); if ($result === null) { $pattern = \array_keys($pattern); throw PcreException::fromFunction('preg_replace_callback_array', $pattern); } return $result; } /** * @param int-mask $flags PREG_SPLIT_NO_EMPTY or PREG_SPLIT_DELIM_CAPTURE * @return list */ public static function split(string $pattern, string $subject, int $limit = -1, int $flags = 0) : array { if (($flags & \PREG_SPLIT_OFFSET_CAPTURE) !== 0) { throw new \InvalidArgumentException('PREG_SPLIT_OFFSET_CAPTURE is not supported as it changes the type of $matches, use splitWithOffsets() instead'); } $result = \preg_split($pattern, $subject, $limit, $flags); if ($result === \false) { throw PcreException::fromFunction('preg_split', $pattern); } return $result; } /** * @param int-mask $flags PREG_SPLIT_NO_EMPTY or PREG_SPLIT_DELIM_CAPTURE, PREG_SPLIT_OFFSET_CAPTURE is always set * @return list * @phpstan-return list}> */ public static function splitWithOffsets(string $pattern, string $subject, int $limit = -1, int $flags = 0) : array { $result = \preg_split($pattern, $subject, $limit, $flags | \PREG_SPLIT_OFFSET_CAPTURE); if ($result === \false) { throw PcreException::fromFunction('preg_split', $pattern); } return $result; } /** * @template T of string|\Stringable * @param string $pattern * @param array $array * @param int-mask $flags PREG_GREP_INVERT * @return array */ public static function grep(string $pattern, array $array, int $flags = 0) : array { $result = \preg_grep($pattern, $array, $flags); if ($result === \false) { throw PcreException::fromFunction('preg_grep', $pattern); } return $result; } /** * Variant of match() which returns a bool instead of int * * @param non-empty-string $pattern * @param array $matches Set by method * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported * * @param-out array $matches */ public static function isMatch(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0) : bool { return (bool) static::match($pattern, $subject, $matches, $flags, $offset); } /** * Variant of `isMatch()` which outputs non-null matches (or throws) * * @param non-empty-string $pattern * @param array $matches Set by method * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported * @throws UnexpectedNullMatchException * * @param-out array $matches */ public static function isMatchStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0) : bool { return (bool) self::matchStrictGroups($pattern, $subject, $matches, $flags, $offset); } /** * Variant of matchAll() which returns a bool instead of int * * @param non-empty-string $pattern * @param array $matches Set by method * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported * * @param-out array> $matches */ public static function isMatchAll(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0) : bool { return (bool) static::matchAll($pattern, $subject, $matches, $flags, $offset); } /** * Variant of `isMatchAll()` which outputs non-null matches (or throws) * * @param non-empty-string $pattern * @param array $matches Set by method * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported * * @param-out array> $matches */ public static function isMatchAllStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0) : bool { return (bool) self::matchAllStrictGroups($pattern, $subject, $matches, $flags, $offset); } /** * Variant of matchWithOffsets() which returns a bool instead of int * * Runs preg_match with PREG_OFFSET_CAPTURE * * @param non-empty-string $pattern * @param array $matches Set by method * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported * * @param-out array}> $matches */ public static function isMatchWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0) : bool { return (bool) static::matchWithOffsets($pattern, $subject, $matches, $flags, $offset); } /** * Variant of matchAllWithOffsets() which returns a bool instead of int * * Runs preg_match_all with PREG_OFFSET_CAPTURE * * @param non-empty-string $pattern * @param array $matches Set by method * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported * * @param-out array}>> $matches */ public static function isMatchAllWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0) : bool { return (bool) static::matchAllWithOffsets($pattern, $subject, $matches, $flags, $offset); } private static function checkOffsetCapture(int $flags, string $useFunctionName) : void { if (($flags & \PREG_OFFSET_CAPTURE) !== 0) { throw new \InvalidArgumentException('PREG_OFFSET_CAPTURE is not supported as it changes the type of $matches, use ' . $useFunctionName . '() instead'); } } private static function checkSetOrder(int $flags) : void { if (($flags & \PREG_SET_ORDER) !== 0) { throw new \InvalidArgumentException('PREG_SET_ORDER is not supported as it changes the type of $matches'); } } /** * @param array $matches * @return array * @throws UnexpectedNullMatchException */ private static function enforceNonNullMatches(string $pattern, array $matches, string $variantMethod) { foreach ($matches as $group => $match) { if (\is_string($match) || \is_array($match) && \is_string($match[0])) { continue; } throw new UnexpectedNullMatchException('Pattern "' . $pattern . '" had an unexpected unmatched group "' . $group . '", make sure the pattern always matches or use ' . $variantMethod . '() instead.'); } /** @var array */ return $matches; } /** * @param array> $matches * @return array> * @throws UnexpectedNullMatchException */ private static function enforceNonNullMatchAll(string $pattern, array $matches, string $variantMethod) { foreach ($matches as $group => $groupMatches) { foreach ($groupMatches as $match) { if (null === $match) { throw new UnexpectedNullMatchException('Pattern "' . $pattern . '" had an unexpected unmatched group "' . $group . '", make sure the pattern always matches or use ' . $variantMethod . '() instead.'); } } } /** @var array> */ return $matches; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Pcre; final class MatchAllStrictGroupsResult { /** * An array of match group => list of matched strings * * @readonly * @var array> */ public $matches; /** * @readonly * @var 0|positive-int */ public $count; /** * @readonly * @var bool */ public $matched; /** * @param 0|positive-int $count * @param array> $matches */ public function __construct(int $count, array $matches) { $this->matches = $matches; $this->matched = (bool) $count; $this->count = $count; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Pcre; class Regex { /** * @param non-empty-string $pattern */ public static function isMatch(string $pattern, string $subject, int $offset = 0) : bool { return (bool) Preg::match($pattern, $subject, $matches, 0, $offset); } /** * @param non-empty-string $pattern * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported */ public static function match(string $pattern, string $subject, int $flags = 0, int $offset = 0) : MatchResult { self::checkOffsetCapture($flags, 'matchWithOffsets'); $count = Preg::match($pattern, $subject, $matches, $flags, $offset); return new MatchResult($count, $matches); } /** * Variant of `match()` which returns non-null matches (or throws) * * @param non-empty-string $pattern * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported * @throws UnexpectedNullMatchException */ public static function matchStrictGroups(string $pattern, string $subject, int $flags = 0, int $offset = 0) : MatchStrictGroupsResult { // @phpstan-ignore composerPcre.maybeUnsafeStrictGroups $count = Preg::matchStrictGroups($pattern, $subject, $matches, $flags, $offset); return new MatchStrictGroupsResult($count, $matches); } /** * Runs preg_match with PREG_OFFSET_CAPTURE * * @param non-empty-string $pattern * @param int-mask $flags PREG_UNMATCHED_AS_NULL and PREG_MATCH_OFFSET are always set, no other flags are supported */ public static function matchWithOffsets(string $pattern, string $subject, int $flags = 0, int $offset = 0) : MatchWithOffsetsResult { $count = Preg::matchWithOffsets($pattern, $subject, $matches, $flags, $offset); return new MatchWithOffsetsResult($count, $matches); } /** * @param non-empty-string $pattern * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported */ public static function matchAll(string $pattern, string $subject, int $flags = 0, int $offset = 0) : MatchAllResult { self::checkOffsetCapture($flags, 'matchAllWithOffsets'); self::checkSetOrder($flags); $count = Preg::matchAll($pattern, $subject, $matches, $flags, $offset); return new MatchAllResult($count, $matches); } /** * Variant of `matchAll()` which returns non-null matches (or throws) * * @param non-empty-string $pattern * @param int-mask $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported * @throws UnexpectedNullMatchException */ public static function matchAllStrictGroups(string $pattern, string $subject, int $flags = 0, int $offset = 0) : MatchAllStrictGroupsResult { self::checkOffsetCapture($flags, 'matchAllWithOffsets'); self::checkSetOrder($flags); // @phpstan-ignore composerPcre.maybeUnsafeStrictGroups $count = Preg::matchAllStrictGroups($pattern, $subject, $matches, $flags, $offset); return new MatchAllStrictGroupsResult($count, $matches); } /** * Runs preg_match_all with PREG_OFFSET_CAPTURE * * @param non-empty-string $pattern * @param int-mask $flags PREG_UNMATCHED_AS_NULL and PREG_MATCH_OFFSET are always set, no other flags are supported */ public static function matchAllWithOffsets(string $pattern, string $subject, int $flags = 0, int $offset = 0) : MatchAllWithOffsetsResult { self::checkSetOrder($flags); $count = Preg::matchAllWithOffsets($pattern, $subject, $matches, $flags, $offset); return new MatchAllWithOffsetsResult($count, $matches); } /** * @param string|string[] $pattern * @param string|string[] $replacement * @param string $subject */ public static function replace($pattern, $replacement, $subject, int $limit = -1) : ReplaceResult { $result = Preg::replace($pattern, $replacement, $subject, $limit, $count); return new ReplaceResult($count, $result); } /** * @param string|string[] $pattern * @param ($flags is PREG_OFFSET_CAPTURE ? (callable(array}>): string) : callable(array): string) $replacement * @param string $subject * @param int-mask $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set */ public static function replaceCallback($pattern, callable $replacement, $subject, int $limit = -1, int $flags = 0) : ReplaceResult { $result = Preg::replaceCallback($pattern, $replacement, $subject, $limit, $count, $flags); return new ReplaceResult($count, $result); } /** * Variant of `replaceCallback()` which outputs non-null matches (or throws) * * @param string $pattern * @param ($flags is PREG_OFFSET_CAPTURE ? (callable(array}>): string) : callable(array): string) $replacement * @param string $subject * @param int-mask $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set */ public static function replaceCallbackStrictGroups($pattern, callable $replacement, $subject, int $limit = -1, int $flags = 0) : ReplaceResult { $result = Preg::replaceCallbackStrictGroups($pattern, $replacement, $subject, $limit, $count, $flags); return new ReplaceResult($count, $result); } /** * @param ($flags is PREG_OFFSET_CAPTURE ? (array}>): string>) : array): string>) $pattern * @param string $subject * @param int-mask $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set */ public static function replaceCallbackArray(array $pattern, $subject, int $limit = -1, int $flags = 0) : ReplaceResult { $result = Preg::replaceCallbackArray($pattern, $subject, $limit, $count, $flags); return new ReplaceResult($count, $result); } private static function checkOffsetCapture(int $flags, string $useFunctionName) : void { if (($flags & \PREG_OFFSET_CAPTURE) !== 0) { throw new \InvalidArgumentException('PREG_OFFSET_CAPTURE is not supported as it changes the return type, use ' . $useFunctionName . '() instead'); } } private static function checkSetOrder(int $flags) : void { if (($flags & \PREG_SET_ORDER) !== 0) { throw new \InvalidArgumentException('PREG_SET_ORDER is not supported as it changes the return type'); } } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Pcre; class UnexpectedNullMatchException extends PcreException { public static function fromFunction($function, $pattern) { throw new \LogicException('fromFunction should not be called on ' . self::class . ', use ' . PcreException::class); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Pcre; final class ReplaceResult { /** * @readonly * @var string */ public $result; /** * @readonly * @var 0|positive-int */ public $count; /** * @readonly * @var bool */ public $matched; /** * @param 0|positive-int $count */ public function __construct(int $count, string $result) { $this->count = $count; $this->matched = (bool) $count; $this->result = $result; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Pcre; class PcreException extends \RuntimeException { /** * @param string $function * @param string|string[] $pattern * @return self */ public static function fromFunction($function, $pattern) { $code = \preg_last_error(); if (\is_array($pattern)) { $pattern = \implode(', ', $pattern); } return new PcreException($function . '(): failed executing "' . $pattern . '": ' . self::pcreLastErrorMessage($code), $code); } /** * @param int $code * @return string */ private static function pcreLastErrorMessage($code) { if (\function_exists('preg_last_error_msg')) { return \preg_last_error_msg(); } // older php versions did not set the code properly in all cases if (\PHP_VERSION_ID < 70201 && $code === 0) { return 'UNDEFINED_ERROR'; } $constants = \get_defined_constants(\true); if (!isset($constants['pcre'])) { return 'UNDEFINED_ERROR'; } foreach ($constants['pcre'] as $const => $val) { if ($val === $code && \substr($const, -6) === '_ERROR') { return $const; } } return 'UNDEFINED_ERROR'; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Composer\Pcre; final class MatchStrictGroupsResult { /** * An array of match group => string matched * * @readonly * @var array */ public $matches; /** * @readonly * @var bool */ public $matched; /** * @param 0|positive-int $count * @param array $matches */ public function __construct(int $count, array $matches) { $this->matches = $matches; $this->matched = (bool) $count; } } regexShapeMatcher = $regexShapeMatcher; } public function setTypeSpecifier(TypeSpecifier $typeSpecifier) : void { $this->typeSpecifier = $typeSpecifier; } public function getClass() : string { return Preg::class; } public function isStaticMethodSupported(MethodReflection $methodReflection, StaticCall $node, TypeSpecifierContext $context) : bool { return \in_array($methodReflection->getName(), ['match', 'isMatch', 'matchStrictGroups', 'isMatchStrictGroups', 'matchAll', 'isMatchAll', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], \true) && !$context->null(); } public function specifyTypes(MethodReflection $methodReflection, StaticCall $node, Scope $scope, TypeSpecifierContext $context) : SpecifiedTypes { $args = $node->getArgs(); $patternArg = $args[0] ?? null; $matchesArg = $args[2] ?? null; $flagsArg = $args[3] ?? null; if ($patternArg === null || $matchesArg === null) { return new SpecifiedTypes(); } $flagsType = \Composer\Pcre\PHPStan\PregMatchFlags::getType($flagsArg, $scope); if ($flagsType === null) { return new SpecifiedTypes(); } if (\stripos($methodReflection->getName(), 'matchAll') !== \false) { $matchedType = $this->regexShapeMatcher->matchAllExpr($patternArg->value, $flagsType, TrinaryLogic::createFromBoolean($context->true()), $scope); } else { $matchedType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createFromBoolean($context->true()), $scope); } if ($matchedType === null) { return new SpecifiedTypes(); } if (\in_array($methodReflection->getName(), ['matchStrictGroups', 'isMatchStrictGroups', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], \true)) { $matchedType = \Composer\Pcre\PHPStan\PregMatchFlags::removeNullFromMatches($matchedType); } $overwrite = \false; if ($context->false()) { $overwrite = \true; $context = $context->negate(); } return $this->typeSpecifier->create($matchesArg->value, $matchedType, $context, $overwrite, $scope, $node); } } regexShapeMatcher = $regexShapeMatcher; } public function isStaticMethodSupported(MethodReflection $methodReflection, ParameterReflection $parameter) : bool { return \in_array($methodReflection->getDeclaringClass()->getName(), [Preg::class, Regex::class], \true) && \in_array($methodReflection->getName(), ['replaceCallback', 'replaceCallbackStrictGroups'], \true) && $parameter->getName() === 'replacement'; } public function getTypeFromStaticMethodCall(MethodReflection $methodReflection, StaticCall $methodCall, ParameterReflection $parameter, Scope $scope) : ?Type { $args = $methodCall->getArgs(); $patternArg = $args[0] ?? null; $flagsArg = $args[5] ?? null; if ($patternArg === null) { return null; } $flagsType = \Composer\Pcre\PHPStan\PregMatchFlags::getType($flagsArg, $scope); $matchesType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createYes(), $scope); if ($matchesType === null) { return null; } if ($methodReflection->getName() === 'replaceCallbackStrictGroups' && \count($matchesType->getConstantArrays()) === 1) { $matchesType = $matchesType->getConstantArrays()[0]; $matchesType = new ConstantArrayType($matchesType->getKeyTypes(), \array_map(static function (Type $valueType) : Type { if (\count($valueType->getConstantArrays()) === 1) { $valueTypeArray = $valueType->getConstantArrays()[0]; return new ConstantArrayType($valueTypeArray->getKeyTypes(), \array_map(static function (Type $valueType) : Type { return TypeCombinator::removeNull($valueType); }, $valueTypeArray->getValueTypes()), $valueTypeArray->getNextAutoIndexes(), [], $valueTypeArray->isList()); } return TypeCombinator::removeNull($valueType); }, $matchesType->getValueTypes()), $matchesType->getNextAutoIndexes(), [], $matchesType->isList()); } return new ClosureType([new NativeParameterReflection($parameter->getName(), $parameter->isOptional(), $matchesType, $parameter->passedByReference(), $parameter->isVariadic(), $parameter->getDefaultValue())], new StringType()); } } getType($flagsArg->value); $constantScalars = $flagsType->getConstantScalarValues(); if ($constantScalars === []) { return null; } $internalFlagsTypes = []; foreach ($flagsType->getConstantScalarValues() as $constantScalarValue) { if (!\is_int($constantScalarValue)) { return null; } $internalFlagsTypes[] = new ConstantIntegerType($constantScalarValue | \PREG_UNMATCHED_AS_NULL); } return TypeCombinator::union(...$internalFlagsTypes); } public static function removeNullFromMatches(Type $matchesType) : Type { return TypeTraverser::map($matchesType, static function (Type $type, callable $traverse) : Type { if ($type instanceof UnionType || $type instanceof IntersectionType) { return $traverse($type); } if ($type instanceof ConstantArrayType) { return new ConstantArrayType($type->getKeyTypes(), \array_map(static function (Type $valueType) use($traverse) : Type { return $traverse($valueType); }, $type->getValueTypes()), $type->getNextAutoIndexes(), [], $type->isList()); } if ($type instanceof ArrayType) { return new ArrayType($type->getKeyType(), $traverse($type->getItemType())); } return TypeCombinator::removeNull($type); }); } } */ final class UnsafeStrictGroupsCallRule implements Rule { /** * @var RegexArrayShapeMatcher */ private $regexShapeMatcher; public function __construct(RegexArrayShapeMatcher $regexShapeMatcher) { $this->regexShapeMatcher = $regexShapeMatcher; } public function getNodeType() : string { return StaticCall::class; } public function processNode(Node $node, Scope $scope) : array { if (!$node->class instanceof FullyQualified) { return []; } $isRegex = $node->class->toString() === Regex::class; $isPreg = $node->class->toString() === Preg::class; if (!$isRegex && !$isPreg) { return []; } if (!$node->name instanceof Node\Identifier || !\in_array($node->name->name, ['matchStrictGroups', 'isMatchStrictGroups', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], \true)) { return []; } $args = $node->getArgs(); if (!isset($args[0])) { return []; } $patternArg = $args[0] ?? null; if ($isPreg) { if (!isset($args[2])) { // no matches set, skip as the matches won't be used anyway return []; } $flagsArg = $args[3] ?? null; } else { $flagsArg = $args[2] ?? null; } if ($patternArg === null) { return []; } $flagsType = \Composer\Pcre\PHPStan\PregMatchFlags::getType($flagsArg, $scope); if ($flagsType === null) { return []; } $matchedType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createYes(), $scope); if ($matchedType === null) { return [RuleErrorBuilder::message(sprintf('The %s call is potentially unsafe as $matches\' type could not be inferred.', $node->name->name))->identifier('composerPcre.maybeUnsafeStrictGroups')->build()]; } if (\count($matchedType->getConstantArrays()) === 1) { $matchedType = $matchedType->getConstantArrays()[0]; $nullableGroups = []; foreach ($matchedType->getValueTypes() as $index => $type) { if (TypeCombinator::containsNull($type)) { $nullableGroups[] = $matchedType->getKeyTypes()[$index]->getValue(); } } if (\count($nullableGroups) > 0) { return [RuleErrorBuilder::message(sprintf('The %s call is unsafe as match group%s "%s" %s optional and may be null.', $node->name->name, \count($nullableGroups) > 1 ? 's' : '', \implode('", "', $nullableGroups), \count($nullableGroups) > 1 ? 'are' : 'is'))->identifier('composerPcre.unsafeStrictGroups')->build()]; } } return []; } } regexShapeMatcher = $regexShapeMatcher; } public function isStaticMethodSupported(MethodReflection $methodReflection, ParameterReflection $parameter) : bool { return $methodReflection->getDeclaringClass()->getName() === Preg::class && \in_array($methodReflection->getName(), ['match', 'isMatch', 'matchStrictGroups', 'isMatchStrictGroups', 'matchAll', 'isMatchAll', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], \true) && $parameter->getName() === 'matches'; } public function getParameterOutTypeFromStaticMethodCall(MethodReflection $methodReflection, StaticCall $methodCall, ParameterReflection $parameter, Scope $scope) : ?Type { $args = $methodCall->getArgs(); $patternArg = $args[0] ?? null; $matchesArg = $args[2] ?? null; $flagsArg = $args[3] ?? null; if ($patternArg === null || $matchesArg === null) { return null; } $flagsType = \Composer\Pcre\PHPStan\PregMatchFlags::getType($flagsArg, $scope); if ($flagsType === null) { return null; } if (\stripos($methodReflection->getName(), 'matchAll') !== \false) { return $this->regexShapeMatcher->matchAllExpr($patternArg->value, $flagsType, TrinaryLogic::createMaybe(), $scope); } return $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createMaybe(), $scope); } } */ class InvalidRegexPatternRule implements Rule { public function getNodeType() : string { return StaticCall::class; } public function processNode(Node $node, Scope $scope) : array { $patterns = $this->extractPatterns($node, $scope); $errors = []; foreach ($patterns as $pattern) { $errorMessage = $this->validatePattern($pattern); if ($errorMessage === null) { continue; } $errors[] = RuleErrorBuilder::message(sprintf('Regex pattern is invalid: %s', $errorMessage))->identifier('regexp.pattern')->build(); } return $errors; } /** * @return string[] */ private function extractPatterns(StaticCall $node, Scope $scope) : array { if (!$node->class instanceof FullyQualified) { return []; } $isRegex = $node->class->toString() === Regex::class; $isPreg = $node->class->toString() === Preg::class; if (!$isRegex && !$isPreg) { return []; } if (!$node->name instanceof Node\Identifier || !Preg::isMatch('{^(match|isMatch|grep|replace|split)}', $node->name->name)) { return []; } $functionName = $node->name->name; if (!isset($node->getArgs()[0])) { return []; } $patternNode = $node->getArgs()[0]->value; $patternType = $scope->getType($patternNode); $patternStrings = []; foreach ($patternType->getConstantStrings() as $constantStringType) { if ($functionName === 'replaceCallbackArray') { continue; } $patternStrings[] = $constantStringType->getValue(); } foreach ($patternType->getConstantArrays() as $constantArrayType) { if (in_array($functionName, ['replace', 'replaceCallback'], \true)) { foreach ($constantArrayType->getValueTypes() as $arrayKeyType) { foreach ($arrayKeyType->getConstantStrings() as $constantString) { $patternStrings[] = $constantString->getValue(); } } } if ($functionName !== 'replaceCallbackArray') { continue; } foreach ($constantArrayType->getKeyTypes() as $arrayKeyType) { foreach ($arrayKeyType->getConstantStrings() as $constantString) { $patternStrings[] = $constantString->getValue(); } } } return $patternStrings; } private function validatePattern(string $pattern) : ?string { try { $msg = null; $prev = \set_error_handler(function (int $severity, string $message, string $file) use(&$msg) : bool { $msg = \preg_replace("#^preg_match(_all)?\\(.*?\\): #", '', $message); return \true; }); if ($pattern === '') { return 'Empty string is not a valid regular expression'; } Preg::match($pattern, ''); if ($msg !== null) { return $msg; } } catch (PcreException $e) { if ($e->getCode() === \PREG_INTERNAL_ERROR && $msg !== null) { return $msg; } return \preg_replace('{.*? failed executing ".*": }', '', $e->getMessage()); } finally { \restore_error_handler(); } return null; } } Copyright (c) 2011 Igor Wiedler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Evenement; interface EventEmitterInterface { public function on($event, callable $listener); public function once($event, callable $listener); public function removeListener($event, callable $listener); public function removeAllListeners($event = null); public function listeners($event = null); public function emit($event, array $arguments = []); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Evenement; use InvalidArgumentException; use function count; use function array_keys; use function array_merge; use function array_search; use function array_unique; use function array_values; trait EventEmitterTrait { protected $listeners = []; protected $onceListeners = []; public function on($event, callable $listener) { if ($event === null) { throw new InvalidArgumentException('event name must not be null'); } if (!isset($this->listeners[$event])) { $this->listeners[$event] = []; } $this->listeners[$event][] = $listener; return $this; } public function once($event, callable $listener) { if ($event === null) { throw new InvalidArgumentException('event name must not be null'); } if (!isset($this->onceListeners[$event])) { $this->onceListeners[$event] = []; } $this->onceListeners[$event][] = $listener; return $this; } public function removeListener($event, callable $listener) { if ($event === null) { throw new InvalidArgumentException('event name must not be null'); } if (isset($this->listeners[$event])) { $index = array_search($listener, $this->listeners[$event], \true); if (\false !== $index) { unset($this->listeners[$event][$index]); if (count($this->listeners[$event]) === 0) { unset($this->listeners[$event]); } } } if (isset($this->onceListeners[$event])) { $index = array_search($listener, $this->onceListeners[$event], \true); if (\false !== $index) { unset($this->onceListeners[$event][$index]); if (count($this->onceListeners[$event]) === 0) { unset($this->onceListeners[$event]); } } } } public function removeAllListeners($event = null) { if ($event !== null) { unset($this->listeners[$event]); } else { $this->listeners = []; } if ($event !== null) { unset($this->onceListeners[$event]); } else { $this->onceListeners = []; } } public function listeners($event = null) : array { if ($event === null) { $events = []; $eventNames = array_unique(array_merge(array_keys($this->listeners), array_keys($this->onceListeners))); foreach ($eventNames as $eventName) { $events[$eventName] = array_merge(isset($this->listeners[$eventName]) ? $this->listeners[$eventName] : [], isset($this->onceListeners[$eventName]) ? $this->onceListeners[$eventName] : []); } return $events; } return array_merge(isset($this->listeners[$event]) ? $this->listeners[$event] : [], isset($this->onceListeners[$event]) ? $this->onceListeners[$event] : []); } public function emit($event, array $arguments = []) { if ($event === null) { throw new InvalidArgumentException('event name must not be null'); } $listeners = []; if (isset($this->listeners[$event])) { $listeners = array_values($this->listeners[$event]); } $onceListeners = []; if (isset($this->onceListeners[$event])) { $onceListeners = array_values($this->onceListeners[$event]); } if (empty($listeners) === \false) { foreach ($listeners as $listener) { $listener(...$arguments); } } if (empty($onceListeners) === \false) { unset($this->onceListeners[$event]); foreach ($onceListeners as $listener) { $listener(...$arguments); } } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Evenement; class EventEmitter implements EventEmitterInterface { use EventEmitterTrait; } The MIT License (MIT) Copyright (c) 2016 Christian Lück Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. input = $input; if (!$input->isReadable()) { $this->close(); return; } $this->assoc = $assoc; $this->depth = $depth; $this->options = $options; $this->maxlength = $maxlength; $this->input->on('data', array($this, 'handleData')); $this->input->on('end', array($this, 'handleEnd')); $this->input->on('error', array($this, 'handleError')); $this->input->on('close', array($this, 'close')); } public function isReadable() { return !$this->closed; } public function close() { if ($this->closed) { return; } $this->closed = \true; $this->buffer = ''; $this->input->close(); $this->emit('close'); $this->removeAllListeners(); } public function pause() { $this->input->pause(); } public function resume() { $this->input->resume(); } public function pipe(WritableStreamInterface $dest, array $options = array()) { Util::pipe($this, $dest, $options); return $dest; } /** @internal */ public function handleData($data) { if (!\is_string($data)) { $this->handleError(new \UnexpectedValueException('Expected stream to emit string, but got ' . \gettype($data))); return; } $this->buffer .= $data; // keep parsing while a newline has been found while (($newline = \strpos($this->buffer, "\n")) !== \false && $newline <= $this->maxlength) { // read data up until newline and remove from buffer $data = (string) \substr($this->buffer, 0, $newline); $this->buffer = (string) \substr($this->buffer, $newline + 1); // decode data with options given in ctor // @codeCoverageIgnoreStart if ($this->options === 0) { $data = \json_decode($data, $this->assoc, $this->depth); } else { \assert(\PHP_VERSION_ID >= 50400); $data = \json_decode($data, $this->assoc, $this->depth, $this->options); } // @codeCoverageIgnoreEnd // abort stream if decoding failed if ($data === null && \json_last_error() !== \JSON_ERROR_NONE) { // @codeCoverageIgnoreStart if (\PHP_VERSION_ID > 50500) { $errstr = \json_last_error_msg(); } elseif (\json_last_error() === \JSON_ERROR_SYNTAX) { $errstr = 'Syntax error'; } else { $errstr = 'Unknown error'; } // @codeCoverageIgnoreEnd return $this->handleError(new \RuntimeException('Unable to decode JSON: ' . $errstr, \json_last_error())); } $this->emit('data', array($data)); } if (isset($this->buffer[$this->maxlength])) { $this->handleError(new \OverflowException('Buffer size exceeded')); } } /** @internal */ public function handleEnd() { if ($this->buffer !== '') { $this->handleData("\n"); } if (!$this->closed) { $this->emit('end'); $this->close(); } } /** @internal */ public function handleError(\Exception $error) { $this->emit('error', array($error)); $this->close(); } } output = $output; if (!$output->isWritable()) { $this->close(); return; } $this->options = $options; $this->depth = $depth; $this->output->on('drain', array($this, 'handleDrain')); $this->output->on('error', array($this, 'handleError')); $this->output->on('close', array($this, 'close')); } public function write($data) { if ($this->closed) { return \false; } // we have to handle PHP warnings for legacy PHP < 5.5 // certain values (such as INF etc.) emit a warning, but still encode successfully // @codeCoverageIgnoreStart if (\PHP_VERSION_ID < 50500) { $errstr = null; \set_error_handler(function ($_, $error) use(&$errstr) { $errstr = $error; }); // encode data with options given in ctor (depth not supported) $data = \json_encode($data, $this->options); // always check error code and match missing error messages \restore_error_handler(); $errno = \json_last_error(); if (\defined('JSON_ERROR_UTF8') && $errno === \JSON_ERROR_UTF8) { // const JSON_ERROR_UTF8 added in PHP 5.3.3, but no error message assigned in legacy PHP < 5.5 // this overrides PHP 5.3.14 only: https://3v4l.org/IGP8Z#v5314 $errstr = 'Malformed UTF-8 characters, possibly incorrectly encoded'; } elseif ($errno !== \JSON_ERROR_NONE && $errstr === null) { // error number present, but no error message applicable $errstr = 'Unknown error'; } // abort stream if encoding fails if ($errno !== \JSON_ERROR_NONE || $errstr !== null) { $this->handleError(new \RuntimeException('Unable to encode JSON: ' . $errstr, $errno)); return \false; } } else { // encode data with options given in ctor $data = \json_encode($data, $this->options, $this->depth); // abort stream if encoding fails if ($data === \false && \json_last_error() !== \JSON_ERROR_NONE) { $this->handleError(new \RuntimeException('Unable to encode JSON: ' . \json_last_error_msg(), \json_last_error())); return \false; } } // @codeCoverageIgnoreEnd return $this->output->write($data . "\n"); } public function end($data = null) { if ($data !== null) { $this->write($data); } $this->output->end(); } public function isWritable() { return !$this->closed; } public function close() { if ($this->closed) { return; } $this->closed = \true; $this->output->close(); $this->emit('close'); $this->removeAllListeners(); } /** @internal */ public function handleDrain() { $this->emit('drain'); } /** @internal */ public function handleError(\Exception $error) { $this->emit('error', array($error)); $this->close(); } } Copyright (c) 2019-present Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String\Inflector; interface InflectorInterface { /** * Returns the singular forms of a string. * * If the method can't determine the form with certainty, several possible singulars are returned. * * @return string[] */ public function singularize(string $plural) : array; /** * Returns the plural forms of a string. * * If the method can't determine the form with certainty, several possible plurals are returned. * * @return string[] */ public function pluralize(string $singular) : array; } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String\Inflector; final class EnglishInflector implements InflectorInterface { /** * Map English plural to singular suffixes. * * @see http://english-zone.com/spelling/plurals.html */ private const PLURAL_MAP = [ // First entry: plural suffix, reversed // Second entry: length of plural suffix // Third entry: Whether the suffix may succeed a vowel // Fourth entry: Whether the suffix may succeed a consonant // Fifth entry: singular suffix, normal // bacteria (bacterium) ['airetcab', 8, \true, \true, 'bacterium'], // corpora (corpus) ['aroproc', 7, \true, \true, 'corpus'], // criteria (criterion) ['airetirc', 8, \true, \true, 'criterion'], // curricula (curriculum) ['alucirruc', 9, \true, \true, 'curriculum'], // genera (genus) ['areneg', 6, \true, \true, 'genus'], // media (medium) ['aidem', 5, \true, \true, 'medium'], // memoranda (memorandum) ['adnaromem', 9, \true, \true, 'memorandum'], // phenomena (phenomenon) ['anemonehp', 9, \true, \true, 'phenomenon'], // strata (stratum) ['atarts', 6, \true, \true, 'stratum'], // nebulae (nebula) ['ea', 2, \true, \true, 'a'], // services (service) ['secivres', 8, \true, \true, 'service'], // mice (mouse), lice (louse) ['eci', 3, \false, \true, 'ouse'], // geese (goose) ['esee', 4, \false, \true, 'oose'], // fungi (fungus), alumni (alumnus), syllabi (syllabus), radii (radius) ['i', 1, \true, \true, 'us'], // men (man), women (woman) ['nem', 3, \true, \true, 'man'], // children (child) ['nerdlihc', 8, \true, \true, 'child'], // oxen (ox) ['nexo', 4, \false, \false, 'ox'], // indices (index), appendices (appendix), prices (price) ['seci', 4, \false, \true, ['ex', 'ix', 'ice']], // codes (code) ['sedoc', 5, \false, \true, 'code'], // selfies (selfie) ['seifles', 7, \true, \true, 'selfie'], // zombies (zombie) ['seibmoz', 7, \true, \true, 'zombie'], // movies (movie) ['seivom', 6, \true, \true, 'movie'], // names (name) ['seman', 5, \true, \false, 'name'], // conspectuses (conspectus), prospectuses (prospectus) ['sesutcep', 8, \true, \true, 'pectus'], // feet (foot) ['teef', 4, \true, \true, 'foot'], // geese (goose) ['eseeg', 5, \true, \true, 'goose'], // teeth (tooth) ['hteet', 5, \true, \true, 'tooth'], // news (news) ['swen', 4, \true, \true, 'news'], // series (series) ['seires', 6, \true, \true, 'series'], // babies (baby) ['sei', 3, \false, \true, 'y'], // accesses (access), addresses (address), kisses (kiss) ['sess', 4, \true, \false, 'ss'], // statuses (status) ['sesutats', 8, \true, \true, 'status'], // analyses (analysis), ellipses (ellipsis), fungi (fungus), // neuroses (neurosis), theses (thesis), emphases (emphasis), // oases (oasis), crises (crisis), houses (house), bases (base), // atlases (atlas) ['ses', 3, \true, \true, ['s', 'se', 'sis']], // objectives (objective), alternative (alternatives) ['sevit', 5, \true, \true, 'tive'], // drives (drive) ['sevird', 6, \false, \true, 'drive'], // lives (life), wives (wife) ['sevi', 4, \false, \true, 'ife'], // moves (move) ['sevom', 5, \true, \true, 'move'], // hooves (hoof), dwarves (dwarf), elves (elf), leaves (leaf), caves (cave), staves (staff) ['sev', 3, \true, \true, ['f', 've', 'ff']], // axes (axis), axes (ax), axes (axe) ['sexa', 4, \false, \false, ['ax', 'axe', 'axis']], // indexes (index), matrixes (matrix) ['sex', 3, \true, \false, 'x'], // quizzes (quiz) ['sezz', 4, \true, \false, 'z'], // bureaus (bureau) ['suae', 4, \false, \true, 'eau'], // fees (fee), trees (tree), employees (employee) ['see', 3, \true, \true, 'ee'], // edges (edge) ['segd', 4, \true, \true, 'dge'], // roses (rose), garages (garage), cassettes (cassette), // waltzes (waltz), heroes (hero), bushes (bush), arches (arch), // shoes (shoe) ['se', 2, \true, \true, ['', 'e']], // status (status) ['sutats', 6, \true, \true, 'status'], // tags (tag) ['s', 1, \true, \true, ''], // chateaux (chateau) ['xuae', 4, \false, \true, 'eau'], // people (person) ['elpoep', 6, \true, \true, 'person'], ]; /** * Map English singular to plural suffixes. * * @see http://english-zone.com/spelling/plurals.html */ private const SINGULAR_MAP = [ // First entry: singular suffix, reversed // Second entry: length of singular suffix // Third entry: Whether the suffix may succeed a vowel // Fourth entry: Whether the suffix may succeed a consonant // Fifth entry: plural suffix, normal // axes (axis) ['sixa', 4, \false, \false, 'axes'], // criterion (criteria) ['airetirc', 8, \false, \false, 'criterion'], // nebulae (nebula) ['aluben', 6, \false, \false, 'nebulae'], // children (child) ['dlihc', 5, \true, \true, 'children'], // prices (price) ['eci', 3, \false, \true, 'ices'], // services (service) ['ecivres', 7, \true, \true, 'services'], // lives (life), wives (wife) ['efi', 3, \false, \true, 'ives'], // selfies (selfie) ['eifles', 6, \true, \true, 'selfies'], // movies (movie) ['eivom', 5, \true, \true, 'movies'], // lice (louse) ['esuol', 5, \false, \true, 'lice'], // mice (mouse) ['esuom', 5, \false, \true, 'mice'], // geese (goose) ['esoo', 4, \false, \true, 'eese'], // houses (house), bases (base) ['es', 2, \true, \true, 'ses'], // geese (goose) ['esoog', 5, \true, \true, 'geese'], // caves (cave) ['ev', 2, \true, \true, 'ves'], // drives (drive) ['evird', 5, \false, \true, 'drives'], // objectives (objective), alternative (alternatives) ['evit', 4, \true, \true, 'tives'], // moves (move) ['evom', 4, \true, \true, 'moves'], // staves (staff) ['ffats', 5, \true, \true, 'staves'], // hooves (hoof), dwarves (dwarf), elves (elf), leaves (leaf) ['ff', 2, \true, \true, 'ffs'], // hooves (hoof), dwarves (dwarf), elves (elf), leaves (leaf) ['f', 1, \true, \true, ['fs', 'ves']], // arches (arch) ['hc', 2, \true, \true, 'ches'], // bushes (bush) ['hs', 2, \true, \true, 'shes'], // teeth (tooth) ['htoot', 5, \true, \true, 'teeth'], // albums (album) ['mubla', 5, \true, \true, 'albums'], // bacteria (bacterium), curricula (curriculum), media (medium), memoranda (memorandum), phenomena (phenomenon), strata (stratum) ['mu', 2, \true, \true, 'a'], // men (man), women (woman) ['nam', 3, \true, \true, 'men'], // people (person) ['nosrep', 6, \true, \true, ['persons', 'people']], // criteria (criterion) ['noiretirc', 9, \true, \true, 'criteria'], // phenomena (phenomenon) ['nonemonehp', 10, \true, \true, 'phenomena'], // echoes (echo) ['ohce', 4, \true, \true, 'echoes'], // heroes (hero) ['oreh', 4, \true, \true, 'heroes'], // atlases (atlas) ['salta', 5, \true, \true, 'atlases'], // aliases (alias) ['saila', 5, \true, \true, 'aliases'], // irises (iris) ['siri', 4, \true, \true, 'irises'], // analyses (analysis), ellipses (ellipsis), neuroses (neurosis) // theses (thesis), emphases (emphasis), oases (oasis), // crises (crisis) ['sis', 3, \true, \true, 'ses'], // accesses (access), addresses (address), kisses (kiss) ['ss', 2, \true, \false, 'sses'], // syllabi (syllabus) ['suballys', 8, \true, \true, 'syllabi'], // buses (bus) ['sub', 3, \true, \true, 'buses'], // circuses (circus) ['suc', 3, \true, \true, 'cuses'], // hippocampi (hippocampus) ['supmacoppih', 11, \false, \false, 'hippocampi'], // campuses (campus) ['sup', 3, \true, \true, 'puses'], // status (status) ['sutats', 6, \true, \true, ['status', 'statuses']], // conspectuses (conspectus), prospectuses (prospectus) ['sutcep', 6, \true, \true, 'pectuses'], // fungi (fungus), alumni (alumnus), syllabi (syllabus), radii (radius) ['su', 2, \true, \true, 'i'], // news (news) ['swen', 4, \true, \true, 'news'], // feet (foot) ['toof', 4, \true, \true, 'feet'], // chateaux (chateau), bureaus (bureau) ['uae', 3, \false, \true, ['eaus', 'eaux']], // oxen (ox) ['xo', 2, \false, \false, 'oxen'], // hoaxes (hoax) ['xaoh', 4, \true, \false, 'hoaxes'], // indices (index) ['xedni', 5, \false, \true, ['indicies', 'indexes']], // boxes (box) ['xo', 2, \false, \true, 'oxes'], // indexes (index), matrixes (matrix) ['x', 1, \true, \false, ['cies', 'xes']], // appendices (appendix) ['xi', 2, \false, \true, 'ices'], // babies (baby) ['y', 1, \false, \true, 'ies'], // quizzes (quiz) ['ziuq', 4, \true, \false, 'quizzes'], // waltzes (waltz) ['z', 1, \true, \true, 'zes'], ]; /** * A list of words which should not be inflected, reversed. */ private const UNINFLECTED = [ '', // data 'atad', // deer 'reed', // equipment 'tnempiuqe', // feedback 'kcabdeef', // fish 'hsif', // health 'htlaeh', // history 'yrotsih', // info 'ofni', // information 'noitamrofni', // money 'yenom', // moose 'esoom', // series 'seires', // sheep 'peehs', // species 'seiceps', // traffic 'ciffart', // aircraft 'tfarcria', // hardware 'erawdrah', ]; public function singularize(string $plural) : array { $pluralRev = \strrev($plural); $lowerPluralRev = \strtolower($pluralRev); $pluralLength = \strlen($lowerPluralRev); // Check if the word is one which is not inflected, return early if so if (\in_array($lowerPluralRev, self::UNINFLECTED, \true)) { return [$plural]; } // The outer loop iterates over the entries of the plural table // The inner loop $j iterates over the characters of the plural suffix // in the plural table to compare them with the characters of the actual // given plural suffix foreach (self::PLURAL_MAP as $map) { $suffix = $map[0]; $suffixLength = $map[1]; $j = 0; // Compare characters in the plural table and of the suffix of the // given plural one by one while ($suffix[$j] === $lowerPluralRev[$j]) { // Let $j point to the next character ++$j; // Successfully compared the last character // Add an entry with the singular suffix to the singular array if ($j === $suffixLength) { // Is there any character preceding the suffix in the plural string? if ($j < $pluralLength) { $nextIsVowel = \str_contains('aeiou', $lowerPluralRev[$j]); if (!$map[2] && $nextIsVowel) { // suffix may not succeed a vowel but next char is one break; } if (!$map[3] && !$nextIsVowel) { // suffix may not succeed a consonant but next char is one break; } } $newBase = \substr($plural, 0, $pluralLength - $suffixLength); $newSuffix = $map[4]; // Check whether the first character in the plural suffix // is uppercased. If yes, uppercase the first character in // the singular suffix too $firstUpper = \ctype_upper($pluralRev[$j - 1]); if (\is_array($newSuffix)) { $singulars = []; foreach ($newSuffix as $newSuffixEntry) { $singulars[] = $newBase . ($firstUpper ? \ucfirst($newSuffixEntry) : $newSuffixEntry); } return $singulars; } return [$newBase . ($firstUpper ? \ucfirst($newSuffix) : $newSuffix)]; } // Suffix is longer than word if ($j === $pluralLength) { break; } } } // Assume that plural and singular is identical return [$plural]; } public function pluralize(string $singular) : array { $singularRev = \strrev($singular); $lowerSingularRev = \strtolower($singularRev); $singularLength = \strlen($lowerSingularRev); // Check if the word is one which is not inflected, return early if so if (\in_array($lowerSingularRev, self::UNINFLECTED, \true)) { return [$singular]; } // The outer loop iterates over the entries of the singular table // The inner loop $j iterates over the characters of the singular suffix // in the singular table to compare them with the characters of the actual // given singular suffix foreach (self::SINGULAR_MAP as $map) { $suffix = $map[0]; $suffixLength = $map[1]; $j = 0; // Compare characters in the singular table and of the suffix of the // given plural one by one while ($suffix[$j] === $lowerSingularRev[$j]) { // Let $j point to the next character ++$j; // Successfully compared the last character // Add an entry with the plural suffix to the plural array if ($j === $suffixLength) { // Is there any character preceding the suffix in the plural string? if ($j < $singularLength) { $nextIsVowel = \str_contains('aeiou', $lowerSingularRev[$j]); if (!$map[2] && $nextIsVowel) { // suffix may not succeed a vowel but next char is one break; } if (!$map[3] && !$nextIsVowel) { // suffix may not succeed a consonant but next char is one break; } } $newBase = \substr($singular, 0, $singularLength - $suffixLength); $newSuffix = $map[4]; // Check whether the first character in the singular suffix // is uppercased. If yes, uppercase the first character in // the singular suffix too $firstUpper = \ctype_upper($singularRev[$j - 1]); if (\is_array($newSuffix)) { $plurals = []; foreach ($newSuffix as $newSuffixEntry) { $plurals[] = $newBase . ($firstUpper ? \ucfirst($newSuffixEntry) : $newSuffixEntry); } return $plurals; } return [$newBase . ($firstUpper ? \ucfirst($newSuffix) : $newSuffix)]; } // Suffix is longer than word if ($j === $singularLength) { break; } } } // Assume that plural is singular with a trailing `s` return [$singular . 's']; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String\Inflector; /** * French inflector. * * This class does only inflect nouns; not adjectives nor composed words like "soixante-dix". */ final class FrenchInflector implements InflectorInterface { /** * A list of all rules for pluralise. * * @see https://la-conjugaison.nouvelobs.com/regles/grammaire/le-pluriel-des-noms-121.php */ private const PLURALIZE_REGEXP = [ // First entry: regexp // Second entry: replacement // Words finishing with "s", "x" or "z" are invariables // Les mots finissant par "s", "x" ou "z" sont invariables ['/(s|x|z)$/i', '\\1'], // Words finishing with "eau" are pluralized with a "x" // Les mots finissant par "eau" prennent tous un "x" au pluriel ['/(eau)$/i', '\\1x'], // Words finishing with "au" are pluralized with a "x" excepted "landau" // Les mots finissant par "au" prennent un "x" au pluriel sauf "landau" ['/^(landau)$/i', '\\1s'], ['/(au)$/i', '\\1x'], // Words finishing with "eu" are pluralized with a "x" excepted "pneu", "bleu", "émeu" // Les mots finissant en "eu" prennent un "x" au pluriel sauf "pneu", "bleu", "émeu" ['/^(pneu|bleu|émeu)$/i', '\\1s'], ['/(eu)$/i', '\\1x'], // Words finishing with "al" are pluralized with a "aux" excepted // Les mots finissant en "al" se terminent en "aux" sauf ['/^(bal|carnaval|caracal|chacal|choral|corral|étal|festival|récital|val)$/i', '\\1s'], ['/al$/i', '\\1aux'], // Aspirail, bail, corail, émail, fermail, soupirail, travail, vantail et vitrail font leur pluriel en -aux ['/^(aspir|b|cor|ém|ferm|soupir|trav|vant|vitr)ail$/i', '\\1aux'], // Bijou, caillou, chou, genou, hibou, joujou et pou qui prennent un x au pluriel ['/^(bij|caill|ch|gen|hib|jouj|p)ou$/i', '\\1oux'], // Invariable words ['/^(cinquante|soixante|mille)$/i', '\\1'], // French titles ['/^(mon|ma)(sieur|dame|demoiselle|seigneur)$/', '_PHPStan_b22655c3f\\mes\\2s'], ['/^(Mon|Ma)(sieur|dame|demoiselle|seigneur)$/', '_PHPStan_b22655c3f\\Mes\\2s'], ]; /** * A list of all rules for singularize. */ private const SINGULARIZE_REGEXP = [ // First entry: regexp // Second entry: replacement // Aspirail, bail, corail, émail, fermail, soupirail, travail, vantail et vitrail font leur pluriel en -aux ['/((aspir|b|cor|ém|ferm|soupir|trav|vant|vitr))aux$/i', '\\1ail'], // Words finishing with "eau" are pluralized with a "x" // Les mots finissant par "eau" prennent tous un "x" au pluriel ['/(eau)x$/i', '\\1'], // Words finishing with "al" are pluralized with a "aux" expected // Les mots finissant en "al" se terminent en "aux" sauf ['/(amir|anim|arsen|boc|can|capit|capor|chev|crist|génér|hopit|hôpit|idé|journ|littor|loc|m|mét|minér|princip|radic|termin)aux$/i', '\\1al'], // Words finishing with "au" are pluralized with a "x" excepted "landau" // Les mots finissant par "au" prennent un "x" au pluriel sauf "landau" ['/(au)x$/i', '\\1'], // Words finishing with "eu" are pluralized with a "x" excepted "pneu", "bleu", "émeu" // Les mots finissant en "eu" prennent un "x" au pluriel sauf "pneu", "bleu", "émeu" ['/(eu)x$/i', '\\1'], // Words finishing with "ou" are pluralized with a "s" excepted bijou, caillou, chou, genou, hibou, joujou, pou // Les mots finissant par "ou" prennent un "s" sauf bijou, caillou, chou, genou, hibou, joujou, pou ['/(bij|caill|ch|gen|hib|jouj|p)oux$/i', '\\1ou'], // French titles ['/^mes(dame|demoiselle)s$/', '_PHPStan_b22655c3f\\ma\\1'], ['/^Mes(dame|demoiselle)s$/', '_PHPStan_b22655c3f\\Ma\\1'], ['/^mes(sieur|seigneur)s$/', '_PHPStan_b22655c3f\\mon\\1'], ['/^Mes(sieur|seigneur)s$/', '_PHPStan_b22655c3f\\Mon\\1'], // Default rule ['/s$/i', ''], ]; /** * A list of words which should not be inflected. * This list is only used by singularize. */ private const UNINFLECTED = '/^(abcès|accès|abus|albatros|anchois|anglais|autobus|bois|brebis|carquois|cas|chas|colis|concours|corps|cours|cyprès|décès|devis|discours|dos|embarras|engrais|entrelacs|excès|fils|fois|gâchis|gars|glas|héros|intrus|jars|jus|kermès|lacis|legs|lilas|marais|mars|matelas|mépris|mets|mois|mors|obus|os|palais|paradis|parcours|pardessus|pays|plusieurs|poids|pois|pouls|printemps|processus|progrès|puits|pus|rabais|radis|recors|recours|refus|relais|remords|remous|rictus|rhinocéros|repas|rubis|sans|sas|secours|sens|souris|succès|talus|tapis|tas|taudis|temps|tiers|univers|velours|verglas|vernis|virus)$/i'; /** * {@inheritdoc} */ public function singularize(string $plural) : array { if ($this->isInflectedWord($plural)) { return [$plural]; } foreach (self::SINGULARIZE_REGEXP as $rule) { [$regexp, $replace] = $rule; if (1 === \preg_match($regexp, $plural)) { return [\preg_replace($regexp, $replace, $plural)]; } } return [$plural]; } /** * {@inheritdoc} */ public function pluralize(string $singular) : array { if ($this->isInflectedWord($singular)) { return [$singular]; } foreach (self::PLURALIZE_REGEXP as $rule) { [$regexp, $replace] = $rule; if (1 === \preg_match($regexp, $singular)) { return [\preg_replace($regexp, $replace, $singular)]; } } return [$singular . 's']; } private function isInflectedWord(string $word) : bool { return 1 === \preg_match(self::UNINFLECTED, $word); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String; use _PHPStan_b22655c3f\Symfony\Component\String\Exception\ExceptionInterface; use _PHPStan_b22655c3f\Symfony\Component\String\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\String\Exception\RuntimeException; /** * Represents a binary-safe string of bytes. * * @author Nicolas Grekas * @author Hugo Hamon * * @throws ExceptionInterface */ class ByteString extends AbstractString { private const ALPHABET_ALPHANUMERIC = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'; public function __construct(string $string = '') { $this->string = $string; } /* * The following method was derived from code of the Hack Standard Library (v4.40 - 2020-05-03) * * https://github.com/hhvm/hsl/blob/80a42c02f036f72a42f0415e80d6b847f4bf62d5/src/random/private.php#L16 * * Code subject to the MIT license (https://github.com/hhvm/hsl/blob/master/LICENSE). * * Copyright (c) 2004-2020, Facebook, Inc. (https://www.facebook.com/) */ public static function fromRandom(int $length = 16, ?string $alphabet = null) : self { if ($length <= 0) { throw new InvalidArgumentException(\sprintf('A strictly positive length is expected, "%d" given.', $length)); } $alphabet = $alphabet ?? self::ALPHABET_ALPHANUMERIC; $alphabetSize = \strlen($alphabet); $bits = (int) \ceil(\log($alphabetSize, 2.0)); if ($bits <= 0 || $bits > 56) { throw new InvalidArgumentException('The length of the alphabet must in the [2^1, 2^56] range.'); } $ret = ''; while ($length > 0) { $urandomLength = (int) \ceil(2 * $length * $bits / 8.0); $data = \random_bytes($urandomLength); $unpackedData = 0; $unpackedBits = 0; for ($i = 0; $i < $urandomLength && $length > 0; ++$i) { // Unpack 8 bits $unpackedData = $unpackedData << 8 | \ord($data[$i]); $unpackedBits += 8; // While we have enough bits to select a character from the alphabet, keep // consuming the random data for (; $unpackedBits >= $bits && $length > 0; $unpackedBits -= $bits) { $index = $unpackedData & (1 << $bits) - 1; $unpackedData >>= $bits; // Unfortunately, the alphabet size is not necessarily a power of two. // Worst case, it is 2^k + 1, which means we need (k+1) bits and we // have around a 50% chance of missing as k gets larger if ($index < $alphabetSize) { $ret .= $alphabet[$index]; --$length; } } } } return new static($ret); } public function bytesAt(int $offset) : array { $str = $this->string[$offset] ?? ''; return '' === $str ? [] : [\ord($str)]; } public function append(string ...$suffix) : parent { $str = clone $this; $str->string .= 1 >= \count($suffix) ? $suffix[0] ?? '' : \implode('', $suffix); return $str; } public function camel() : parent { $str = clone $this; $parts = \explode(' ', \trim(\ucwords(\preg_replace('/[^a-zA-Z0-9\\x7f-\\xff]++/', ' ', $this->string)))); $parts[0] = 1 !== \strlen($parts[0]) && \ctype_upper($parts[0]) ? $parts[0] : \lcfirst($parts[0]); $str->string = \implode('', $parts); return $str; } public function chunk(int $length = 1) : array { if (1 > $length) { throw new InvalidArgumentException('The chunk length must be greater than zero.'); } if ('' === $this->string) { return []; } $str = clone $this; $chunks = []; foreach (\str_split($this->string, $length) as $chunk) { $str->string = $chunk; $chunks[] = clone $str; } return $chunks; } public function endsWith($suffix) : bool { if ($suffix instanceof parent) { $suffix = $suffix->string; } elseif (\is_array($suffix) || $suffix instanceof \Traversable) { return parent::endsWith($suffix); } else { $suffix = (string) $suffix; } return '' !== $suffix && \strlen($this->string) >= \strlen($suffix) && 0 === \substr_compare($this->string, $suffix, -\strlen($suffix), null, $this->ignoreCase); } public function equalsTo($string) : bool { if ($string instanceof parent) { $string = $string->string; } elseif (\is_array($string) || $string instanceof \Traversable) { return parent::equalsTo($string); } else { $string = (string) $string; } if ('' !== $string && $this->ignoreCase) { return 0 === \strcasecmp($string, $this->string); } return $string === $this->string; } public function folded() : parent { $str = clone $this; $str->string = \strtolower($str->string); return $str; } public function indexOf($needle, int $offset = 0) : ?int { if ($needle instanceof parent) { $needle = $needle->string; } elseif (\is_array($needle) || $needle instanceof \Traversable) { return parent::indexOf($needle, $offset); } else { $needle = (string) $needle; } if ('' === $needle) { return null; } $i = $this->ignoreCase ? \stripos($this->string, $needle, $offset) : \strpos($this->string, $needle, $offset); return \false === $i ? null : $i; } public function indexOfLast($needle, int $offset = 0) : ?int { if ($needle instanceof parent) { $needle = $needle->string; } elseif (\is_array($needle) || $needle instanceof \Traversable) { return parent::indexOfLast($needle, $offset); } else { $needle = (string) $needle; } if ('' === $needle) { return null; } $i = $this->ignoreCase ? \strripos($this->string, $needle, $offset) : \strrpos($this->string, $needle, $offset); return \false === $i ? null : $i; } public function isUtf8() : bool { return '' === $this->string || \preg_match('//u', $this->string); } public function join(array $strings, ?string $lastGlue = null) : parent { $str = clone $this; $tail = null !== $lastGlue && 1 < \count($strings) ? $lastGlue . \array_pop($strings) : ''; $str->string = \implode($this->string, $strings) . $tail; return $str; } public function length() : int { return \strlen($this->string); } public function lower() : parent { $str = clone $this; $str->string = \strtolower($str->string); return $str; } public function match(string $regexp, int $flags = 0, int $offset = 0) : array { $match = (\PREG_PATTERN_ORDER | \PREG_SET_ORDER) & $flags ? 'preg_match_all' : 'preg_match'; if ($this->ignoreCase) { $regexp .= 'i'; } \set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); try { if (\false === $match($regexp, $this->string, $matches, $flags | \PREG_UNMATCHED_AS_NULL, $offset)) { $lastError = \preg_last_error(); foreach (\get_defined_constants(\true)['pcre'] as $k => $v) { if ($lastError === $v && '_ERROR' === \substr($k, -6)) { throw new RuntimeException('Matching failed with ' . $k . '.'); } } throw new RuntimeException('Matching failed with unknown error code.'); } } finally { \restore_error_handler(); } return $matches; } public function padBoth(int $length, string $padStr = ' ') : parent { $str = clone $this; $str->string = \str_pad($this->string, $length, $padStr, \STR_PAD_BOTH); return $str; } public function padEnd(int $length, string $padStr = ' ') : parent { $str = clone $this; $str->string = \str_pad($this->string, $length, $padStr, \STR_PAD_RIGHT); return $str; } public function padStart(int $length, string $padStr = ' ') : parent { $str = clone $this; $str->string = \str_pad($this->string, $length, $padStr, \STR_PAD_LEFT); return $str; } public function prepend(string ...$prefix) : parent { $str = clone $this; $str->string = (1 >= \count($prefix) ? $prefix[0] ?? '' : \implode('', $prefix)) . $str->string; return $str; } public function replace(string $from, string $to) : parent { $str = clone $this; if ('' !== $from) { $str->string = $this->ignoreCase ? \str_ireplace($from, $to, $this->string) : \str_replace($from, $to, $this->string); } return $str; } public function replaceMatches(string $fromRegexp, $to) : parent { if ($this->ignoreCase) { $fromRegexp .= 'i'; } if (\is_array($to)) { if (!\is_callable($to)) { throw new \TypeError(\sprintf('Argument 2 passed to "%s::replaceMatches()" must be callable, array given.', static::class)); } $replace = 'preg_replace_callback'; } else { $replace = $to instanceof \Closure ? 'preg_replace_callback' : 'preg_replace'; } \set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); try { if (null === ($string = $replace($fromRegexp, $to, $this->string))) { $lastError = \preg_last_error(); foreach (\get_defined_constants(\true)['pcre'] as $k => $v) { if ($lastError === $v && '_ERROR' === \substr($k, -6)) { throw new RuntimeException('Matching failed with ' . $k . '.'); } } throw new RuntimeException('Matching failed with unknown error code.'); } } finally { \restore_error_handler(); } $str = clone $this; $str->string = $string; return $str; } public function reverse() : parent { $str = clone $this; $str->string = \strrev($str->string); return $str; } public function slice(int $start = 0, ?int $length = null) : parent { $str = clone $this; $str->string = (string) \substr($this->string, $start, $length ?? \PHP_INT_MAX); return $str; } public function snake() : parent { $str = clone $this; $str->string = \str_replace(' ', '_', \strtolower(\preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\\d])([A-Z])/'], '\\1 \\2', $str->string))); return $str; } public function splice(string $replacement, int $start = 0, ?int $length = null) : parent { $str = clone $this; $str->string = \substr_replace($this->string, $replacement, $start, $length ?? \PHP_INT_MAX); return $str; } public function split(string $delimiter, ?int $limit = null, ?int $flags = null) : array { if (1 > ($limit = $limit ?? \PHP_INT_MAX)) { throw new InvalidArgumentException('Split limit must be a positive integer.'); } if ('' === $delimiter) { throw new InvalidArgumentException('Split delimiter is empty.'); } if (null !== $flags) { return parent::split($delimiter, $limit, $flags); } $str = clone $this; $chunks = $this->ignoreCase ? \preg_split('{' . \preg_quote($delimiter) . '}iD', $this->string, $limit) : \explode($delimiter, $this->string, $limit); foreach ($chunks as &$chunk) { $str->string = $chunk; $chunk = clone $str; } return $chunks; } public function startsWith($prefix) : bool { if ($prefix instanceof parent) { $prefix = $prefix->string; } elseif (!\is_string($prefix)) { return parent::startsWith($prefix); } return '' !== $prefix && 0 === ($this->ignoreCase ? \strncasecmp($this->string, $prefix, \strlen($prefix)) : \strncmp($this->string, $prefix, \strlen($prefix))); } public function title(bool $allWords = \false) : parent { $str = clone $this; $str->string = $allWords ? \ucwords($str->string) : \ucfirst($str->string); return $str; } public function toUnicodeString(?string $fromEncoding = null) : UnicodeString { return new UnicodeString($this->toCodePointString($fromEncoding)->string); } public function toCodePointString(?string $fromEncoding = null) : CodePointString { $u = new CodePointString(); if (\in_array($fromEncoding, [null, 'utf8', 'utf-8', 'UTF8', 'UTF-8'], \true) && \preg_match('//u', $this->string)) { $u->string = $this->string; return $u; } \set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); try { try { $validEncoding = \false !== \mb_detect_encoding($this->string, $fromEncoding ?? 'Windows-1252', \true); } catch (InvalidArgumentException $e) { if (!\function_exists('iconv')) { throw $e; } $u->string = \iconv($fromEncoding ?? 'Windows-1252', 'UTF-8', $this->string); return $u; } } finally { \restore_error_handler(); } if (!$validEncoding) { throw new InvalidArgumentException(\sprintf('Invalid "%s" string.', $fromEncoding ?? 'Windows-1252')); } $u->string = \mb_convert_encoding($this->string, 'UTF-8', $fromEncoding ?? 'Windows-1252'); return $u; } public function trim(string $chars = " \t\n\r\x00\v\f") : parent { $str = clone $this; $str->string = \trim($str->string, $chars); return $str; } public function trimEnd(string $chars = " \t\n\r\x00\v\f") : parent { $str = clone $this; $str->string = \rtrim($str->string, $chars); return $str; } public function trimStart(string $chars = " \t\n\r\x00\v\f") : parent { $str = clone $this; $str->string = \ltrim($str->string, $chars); return $str; } public function upper() : parent { $str = clone $this; $str->string = \strtoupper($str->string); return $str; } public function width(bool $ignoreAnsiDecoration = \true) : int { $string = \preg_match('//u', $this->string) ? $this->string : \preg_replace('/[\\x80-\\xFF]/', '?', $this->string); return (new CodePointString($string))->width($ignoreAnsiDecoration); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String; use _PHPStan_b22655c3f\Symfony\Component\String\Exception\ExceptionInterface; use _PHPStan_b22655c3f\Symfony\Component\String\Exception\InvalidArgumentException; /** * Represents a string of Unicode code points encoded as UTF-8. * * @author Nicolas Grekas * @author Hugo Hamon * * @throws ExceptionInterface */ class CodePointString extends AbstractUnicodeString { public function __construct(string $string = '') { if ('' !== $string && !\preg_match('//u', $string)) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } $this->string = $string; } public function append(string ...$suffix) : AbstractString { $str = clone $this; $str->string .= 1 >= \count($suffix) ? $suffix[0] ?? '' : \implode('', $suffix); if (!\preg_match('//u', $str->string)) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } return $str; } public function chunk(int $length = 1) : array { if (1 > $length) { throw new InvalidArgumentException('The chunk length must be greater than zero.'); } if ('' === $this->string) { return []; } $rx = '/('; while (65535 < $length) { $rx .= '.{65535}'; $length -= 65535; } $rx .= '.{' . $length . '})/us'; $str = clone $this; $chunks = []; foreach (\preg_split($rx, $this->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY) as $chunk) { $str->string = $chunk; $chunks[] = clone $str; } return $chunks; } public function codePointsAt(int $offset) : array { $str = $offset ? $this->slice($offset, 1) : $this; return '' === $str->string ? [] : [\mb_ord($str->string, 'UTF-8')]; } public function endsWith($suffix) : bool { if ($suffix instanceof AbstractString) { $suffix = $suffix->string; } elseif (\is_array($suffix) || $suffix instanceof \Traversable) { return parent::endsWith($suffix); } else { $suffix = (string) $suffix; } if ('' === $suffix || !\preg_match('//u', $suffix)) { return \false; } if ($this->ignoreCase) { return \preg_match('{' . \preg_quote($suffix) . '$}iuD', $this->string); } return \strlen($this->string) >= \strlen($suffix) && 0 === \substr_compare($this->string, $suffix, -\strlen($suffix)); } public function equalsTo($string) : bool { if ($string instanceof AbstractString) { $string = $string->string; } elseif (\is_array($string) || $string instanceof \Traversable) { return parent::equalsTo($string); } else { $string = (string) $string; } if ('' !== $string && $this->ignoreCase) { return \strlen($string) === \strlen($this->string) && 0 === \mb_stripos($this->string, $string, 0, 'UTF-8'); } return $string === $this->string; } public function indexOf($needle, int $offset = 0) : ?int { if ($needle instanceof AbstractString) { $needle = $needle->string; } elseif (\is_array($needle) || $needle instanceof \Traversable) { return parent::indexOf($needle, $offset); } else { $needle = (string) $needle; } if ('' === $needle) { return null; } $i = $this->ignoreCase ? \mb_stripos($this->string, $needle, $offset, 'UTF-8') : \mb_strpos($this->string, $needle, $offset, 'UTF-8'); return \false === $i ? null : $i; } public function indexOfLast($needle, int $offset = 0) : ?int { if ($needle instanceof AbstractString) { $needle = $needle->string; } elseif (\is_array($needle) || $needle instanceof \Traversable) { return parent::indexOfLast($needle, $offset); } else { $needle = (string) $needle; } if ('' === $needle) { return null; } $i = $this->ignoreCase ? \mb_strripos($this->string, $needle, $offset, 'UTF-8') : \mb_strrpos($this->string, $needle, $offset, 'UTF-8'); return \false === $i ? null : $i; } public function length() : int { return \mb_strlen($this->string, 'UTF-8'); } public function prepend(string ...$prefix) : AbstractString { $str = clone $this; $str->string = (1 >= \count($prefix) ? $prefix[0] ?? '' : \implode('', $prefix)) . $this->string; if (!\preg_match('//u', $str->string)) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } return $str; } public function replace(string $from, string $to) : AbstractString { $str = clone $this; if ('' === $from || !\preg_match('//u', $from)) { return $str; } if ('' !== $to && !\preg_match('//u', $to)) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } if ($this->ignoreCase) { $str->string = \implode($to, \preg_split('{' . \preg_quote($from) . '}iuD', $this->string)); } else { $str->string = \str_replace($from, $to, $this->string); } return $str; } public function slice(int $start = 0, ?int $length = null) : AbstractString { $str = clone $this; $str->string = \mb_substr($this->string, $start, $length, 'UTF-8'); return $str; } public function splice(string $replacement, int $start = 0, ?int $length = null) : AbstractString { if (!\preg_match('//u', $replacement)) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } $str = clone $this; $start = $start ? \strlen(\mb_substr($this->string, 0, $start, 'UTF-8')) : 0; $length = $length ? \strlen(\mb_substr($this->string, $start, $length, 'UTF-8')) : $length; $str->string = \substr_replace($this->string, $replacement, $start, $length ?? \PHP_INT_MAX); return $str; } public function split(string $delimiter, ?int $limit = null, ?int $flags = null) : array { if (1 > ($limit = $limit ?? \PHP_INT_MAX)) { throw new InvalidArgumentException('Split limit must be a positive integer.'); } if ('' === $delimiter) { throw new InvalidArgumentException('Split delimiter is empty.'); } if (null !== $flags) { return parent::split($delimiter . 'u', $limit, $flags); } if (!\preg_match('//u', $delimiter)) { throw new InvalidArgumentException('Split delimiter is not a valid UTF-8 string.'); } $str = clone $this; $chunks = $this->ignoreCase ? \preg_split('{' . \preg_quote($delimiter) . '}iuD', $this->string, $limit) : \explode($delimiter, $this->string, $limit); foreach ($chunks as &$chunk) { $str->string = $chunk; $chunk = clone $str; } return $chunks; } public function startsWith($prefix) : bool { if ($prefix instanceof AbstractString) { $prefix = $prefix->string; } elseif (\is_array($prefix) || $prefix instanceof \Traversable) { return parent::startsWith($prefix); } else { $prefix = (string) $prefix; } if ('' === $prefix || !\preg_match('//u', $prefix)) { return \false; } if ($this->ignoreCase) { return 0 === \mb_stripos($this->string, $prefix, 0, 'UTF-8'); } return 0 === \strncmp($this->string, $prefix, \strlen($prefix)); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String\Exception; interface ExceptionInterface extends \Throwable { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String\Exception; class RuntimeException extends \RuntimeException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String\Exception; class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String; use _PHPStan_b22655c3f\Symfony\Component\String\Exception\ExceptionInterface; use _PHPStan_b22655c3f\Symfony\Component\String\Exception\InvalidArgumentException; /** * Represents a string of Unicode grapheme clusters encoded as UTF-8. * * A letter followed by combining characters (accents typically) form what Unicode defines * as a grapheme cluster: a character as humans mean it in written texts. This class knows * about the concept and won't split a letter apart from its combining accents. It also * ensures all string comparisons happen on their canonically-composed representation, * ignoring e.g. the order in which accents are listed when a letter has many of them. * * @see https://unicode.org/reports/tr15/ * * @author Nicolas Grekas * @author Hugo Hamon * * @throws ExceptionInterface */ class UnicodeString extends AbstractUnicodeString { public function __construct(string $string = '') { $this->string = \normalizer_is_normalized($string) ? $string : \normalizer_normalize($string); if (\false === $this->string) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } } public function append(string ...$suffix) : AbstractString { $str = clone $this; $str->string = $this->string . (1 >= \count($suffix) ? $suffix[0] ?? '' : \implode('', $suffix)); \normalizer_is_normalized($str->string) ?: ($str->string = \normalizer_normalize($str->string)); if (\false === $str->string) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } return $str; } public function chunk(int $length = 1) : array { if (1 > $length) { throw new InvalidArgumentException('The chunk length must be greater than zero.'); } if ('' === $this->string) { return []; } $rx = '/('; while (65535 < $length) { $rx .= '\\X{65535}'; $length -= 65535; } $rx .= '\\X{' . $length . '})/u'; $str = clone $this; $chunks = []; foreach (\preg_split($rx, $this->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY) as $chunk) { $str->string = $chunk; $chunks[] = clone $str; } return $chunks; } public function endsWith($suffix) : bool { if ($suffix instanceof AbstractString) { $suffix = $suffix->string; } elseif (\is_array($suffix) || $suffix instanceof \Traversable) { return parent::endsWith($suffix); } else { $suffix = (string) $suffix; } $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; \normalizer_is_normalized($suffix, $form) ?: ($suffix = \normalizer_normalize($suffix, $form)); if ('' === $suffix || \false === $suffix) { return \false; } if ($this->ignoreCase) { return 0 === \mb_stripos(\grapheme_extract($this->string, \strlen($suffix), \GRAPHEME_EXTR_MAXBYTES, \strlen($this->string) - \strlen($suffix)), $suffix, 0, 'UTF-8'); } return $suffix === \grapheme_extract($this->string, \strlen($suffix), \GRAPHEME_EXTR_MAXBYTES, \strlen($this->string) - \strlen($suffix)); } public function equalsTo($string) : bool { if ($string instanceof AbstractString) { $string = $string->string; } elseif (\is_array($string) || $string instanceof \Traversable) { return parent::equalsTo($string); } else { $string = (string) $string; } $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; \normalizer_is_normalized($string, $form) ?: ($string = \normalizer_normalize($string, $form)); if ('' !== $string && \false !== $string && $this->ignoreCase) { return \strlen($string) === \strlen($this->string) && 0 === \mb_stripos($this->string, $string, 0, 'UTF-8'); } return $string === $this->string; } public function indexOf($needle, int $offset = 0) : ?int { if ($needle instanceof AbstractString) { $needle = $needle->string; } elseif (\is_array($needle) || $needle instanceof \Traversable) { return parent::indexOf($needle, $offset); } else { $needle = (string) $needle; } $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; \normalizer_is_normalized($needle, $form) ?: ($needle = \normalizer_normalize($needle, $form)); if ('' === $needle || \false === $needle) { return null; } try { $i = $this->ignoreCase ? \grapheme_stripos($this->string, $needle, $offset) : \grapheme_strpos($this->string, $needle, $offset); } catch (\ValueError $e) { return null; } return \false === $i ? null : $i; } public function indexOfLast($needle, int $offset = 0) : ?int { if ($needle instanceof AbstractString) { $needle = $needle->string; } elseif (\is_array($needle) || $needle instanceof \Traversable) { return parent::indexOfLast($needle, $offset); } else { $needle = (string) $needle; } $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; \normalizer_is_normalized($needle, $form) ?: ($needle = \normalizer_normalize($needle, $form)); if ('' === $needle || \false === $needle) { return null; } $string = $this->string; if (0 > $offset) { // workaround https://bugs.php.net/74264 if (0 > ($offset += \grapheme_strlen($needle))) { $string = \grapheme_substr($string, 0, $offset); } $offset = 0; } $i = $this->ignoreCase ? \grapheme_strripos($string, $needle, $offset) : \grapheme_strrpos($string, $needle, $offset); return \false === $i ? null : $i; } public function join(array $strings, ?string $lastGlue = null) : AbstractString { $str = parent::join($strings, $lastGlue); \normalizer_is_normalized($str->string) ?: ($str->string = \normalizer_normalize($str->string)); return $str; } public function length() : int { return \grapheme_strlen($this->string); } /** * @return static */ public function normalize(int $form = self::NFC) : parent { $str = clone $this; if (\in_array($form, [self::NFC, self::NFKC], \true)) { \normalizer_is_normalized($str->string, $form) ?: ($str->string = \normalizer_normalize($str->string, $form)); } elseif (!\in_array($form, [self::NFD, self::NFKD], \true)) { throw new InvalidArgumentException('Unsupported normalization form.'); } elseif (!\normalizer_is_normalized($str->string, $form)) { $str->string = \normalizer_normalize($str->string, $form); $str->ignoreCase = null; } return $str; } public function prepend(string ...$prefix) : AbstractString { $str = clone $this; $str->string = (1 >= \count($prefix) ? $prefix[0] ?? '' : \implode('', $prefix)) . $this->string; \normalizer_is_normalized($str->string) ?: ($str->string = \normalizer_normalize($str->string)); if (\false === $str->string) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } return $str; } public function replace(string $from, string $to) : AbstractString { $str = clone $this; \normalizer_is_normalized($from) ?: ($from = \normalizer_normalize($from)); if ('' !== $from && \false !== $from) { $tail = $str->string; $result = ''; $indexOf = $this->ignoreCase ? 'grapheme_stripos' : 'grapheme_strpos'; while ('' !== $tail && \false !== ($i = $indexOf($tail, $from))) { $slice = \grapheme_substr($tail, 0, $i); $result .= $slice . $to; $tail = \substr($tail, \strlen($slice) + \strlen($from)); } $str->string = $result . $tail; \normalizer_is_normalized($str->string) ?: ($str->string = \normalizer_normalize($str->string)); if (\false === $str->string) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } } return $str; } public function replaceMatches(string $fromRegexp, $to) : AbstractString { $str = parent::replaceMatches($fromRegexp, $to); \normalizer_is_normalized($str->string) ?: ($str->string = \normalizer_normalize($str->string)); return $str; } public function slice(int $start = 0, ?int $length = null) : AbstractString { $str = clone $this; if (\PHP_VERSION_ID < 80000 && 0 > $start && \grapheme_strlen($this->string) < -$start) { $start = 0; } $str->string = (string) \grapheme_substr($this->string, $start, $length ?? 2147483647); return $str; } public function splice(string $replacement, int $start = 0, ?int $length = null) : AbstractString { $str = clone $this; if (\PHP_VERSION_ID < 80000 && 0 > $start && \grapheme_strlen($this->string) < -$start) { $start = 0; } $start = $start ? \strlen(\grapheme_substr($this->string, 0, $start)) : 0; $length = $length ? \strlen(\grapheme_substr($this->string, $start, $length ?? 2147483647)) : $length; $str->string = \substr_replace($this->string, $replacement, $start, $length ?? 2147483647); \normalizer_is_normalized($str->string) ?: ($str->string = \normalizer_normalize($str->string)); if (\false === $str->string) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } return $str; } public function split(string $delimiter, ?int $limit = null, ?int $flags = null) : array { if (1 > ($limit = $limit ?? 2147483647)) { throw new InvalidArgumentException('Split limit must be a positive integer.'); } if ('' === $delimiter) { throw new InvalidArgumentException('Split delimiter is empty.'); } if (null !== $flags) { return parent::split($delimiter . 'u', $limit, $flags); } \normalizer_is_normalized($delimiter) ?: ($delimiter = \normalizer_normalize($delimiter)); if (\false === $delimiter) { throw new InvalidArgumentException('Split delimiter is not a valid UTF-8 string.'); } $str = clone $this; $tail = $this->string; $chunks = []; $indexOf = $this->ignoreCase ? 'grapheme_stripos' : 'grapheme_strpos'; while (1 < $limit && \false !== ($i = $indexOf($tail, $delimiter))) { $str->string = \grapheme_substr($tail, 0, $i); $chunks[] = clone $str; $tail = \substr($tail, \strlen($str->string) + \strlen($delimiter)); --$limit; } $str->string = $tail; $chunks[] = clone $str; return $chunks; } public function startsWith($prefix) : bool { if ($prefix instanceof AbstractString) { $prefix = $prefix->string; } elseif (\is_array($prefix) || $prefix instanceof \Traversable) { return parent::startsWith($prefix); } else { $prefix = (string) $prefix; } $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; \normalizer_is_normalized($prefix, $form) ?: ($prefix = \normalizer_normalize($prefix, $form)); if ('' === $prefix || \false === $prefix) { return \false; } if ($this->ignoreCase) { return 0 === \mb_stripos(\grapheme_extract($this->string, \strlen($prefix), \GRAPHEME_EXTR_MAXBYTES), $prefix, 0, 'UTF-8'); } return $prefix === \grapheme_extract($this->string, \strlen($prefix), \GRAPHEME_EXTR_MAXBYTES); } public function __wakeup() { if (!\is_string($this->string)) { throw new \BadMethodCallException('Cannot unserialize ' . __CLASS__); } \normalizer_is_normalized($this->string) ?: ($this->string = \normalizer_normalize($this->string)); } public function __clone() { if (null === $this->ignoreCase) { \normalizer_is_normalized($this->string) ?: ($this->string = \normalizer_normalize($this->string)); } $this->ignoreCase = \false; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String; use _PHPStan_b22655c3f\Symfony\Component\String\Exception\ExceptionInterface; use _PHPStan_b22655c3f\Symfony\Component\String\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\String\Exception\RuntimeException; /** * Represents a string of abstract Unicode characters. * * Unicode defines 3 types of "characters" (bytes, code points and grapheme clusters). * This class is the abstract type to use as a type-hint when the logic you want to * implement is Unicode-aware but doesn't care about code points vs grapheme clusters. * * @author Nicolas Grekas * * @throws ExceptionInterface */ abstract class AbstractUnicodeString extends AbstractString { public const NFC = \Normalizer::NFC; public const NFD = \Normalizer::NFD; public const NFKC = \Normalizer::NFKC; public const NFKD = \Normalizer::NFKD; // all ASCII letters sorted by typical frequency of occurrence private const ASCII = " eiasntrolud][cmp'\ng|hv.fb,:=-q10C2*yx)(L9AS/P\"EjMIk3>5T>', '<', '>', '-', '-', '-', '-', '-', '-', '-', '-', '-', '||', '/', '[', ']', '*', ',', '.', '<', '>', '<<', '>>', '[', ']', '[', ']', '[', ']', ',', '.', '[', ']', '<<', '>>', '<', '>', ',', '[', ']', '((', '))', '.', ',', '*', '/', '-', '/', '\\', '|', '||', '<<', '>>', '((', '))']; private static $transliterators = []; private static $tableZero; private static $tableWide; /** * @return static */ public static function fromCodePoints(int ...$codes) : self { $string = ''; foreach ($codes as $code) { if (0x80 > ($code %= 0x200000)) { $string .= \chr($code); } elseif (0x800 > $code) { $string .= \chr(0xc0 | $code >> 6) . \chr(0x80 | $code & 0x3f); } elseif (0x10000 > $code) { $string .= \chr(0xe0 | $code >> 12) . \chr(0x80 | $code >> 6 & 0x3f) . \chr(0x80 | $code & 0x3f); } else { $string .= \chr(0xf0 | $code >> 18) . \chr(0x80 | $code >> 12 & 0x3f) . \chr(0x80 | $code >> 6 & 0x3f) . \chr(0x80 | $code & 0x3f); } } return new static($string); } /** * Generic UTF-8 to ASCII transliteration. * * Install the intl extension for best results. * * @param string[]|\Transliterator[]|\Closure[] $rules See "*-Latin" rules from Transliterator::listIDs() */ public function ascii(array $rules = []) : self { $str = clone $this; $s = $str->string; $str->string = ''; \array_unshift($rules, 'nfd'); $rules[] = 'latin-ascii'; if (\function_exists('transliterator_transliterate')) { $rules[] = 'any-latin/bgn'; } $rules[] = 'nfkd'; $rules[] = '[:nonspacing mark:] remove'; while (\strlen($s) - 1 > ($i = \strspn($s, self::ASCII))) { if (0 < --$i) { $str->string .= \substr($s, 0, $i); $s = \substr($s, $i); } if (!($rule = \array_shift($rules))) { $rules = []; // An empty rule interrupts the next ones } if ($rule instanceof \Transliterator) { $s = $rule->transliterate($s); } elseif ($rule instanceof \Closure) { $s = $rule($s); } elseif ($rule) { if ('nfd' === ($rule = \strtolower($rule))) { \normalizer_is_normalized($s, self::NFD) ?: ($s = \normalizer_normalize($s, self::NFD)); } elseif ('nfkd' === $rule) { \normalizer_is_normalized($s, self::NFKD) ?: ($s = \normalizer_normalize($s, self::NFKD)); } elseif ('[:nonspacing mark:] remove' === $rule) { $s = \preg_replace('/\\p{Mn}++/u', '', $s); } elseif ('latin-ascii' === $rule) { $s = \str_replace(self::TRANSLIT_FROM, self::TRANSLIT_TO, $s); } elseif ('de-ascii' === $rule) { $s = \preg_replace("/([AUO])̈(?=\\p{Ll})/u", '$1e', $s); $s = \str_replace(["ä", "ö", "ü", "Ä", "Ö", "Ü"], ['ae', 'oe', 'ue', 'AE', 'OE', 'UE'], $s); } elseif (\function_exists('transliterator_transliterate')) { if (null === ($transliterator = self::$transliterators[$rule] ?? (self::$transliterators[$rule] = \Transliterator::create($rule)))) { if ('any-latin/bgn' === $rule) { $rule = 'any-latin'; $transliterator = self::$transliterators[$rule] ?? (self::$transliterators[$rule] = \Transliterator::create($rule)); } if (null === $transliterator) { throw new InvalidArgumentException(\sprintf('Unknown transliteration rule "%s".', $rule)); } self::$transliterators['any-latin/bgn'] = $transliterator; } $s = $transliterator->transliterate($s); } } elseif (!\function_exists('iconv')) { $s = \preg_replace('/[^\\x00-\\x7F]/u', '?', $s); } else { $s = @\preg_replace_callback('/[^\\x00-\\x7F]/u', static function ($c) { $c = (string) \iconv('UTF-8', 'ASCII//TRANSLIT', $c[0]); if ('' === $c && '' === \iconv('UTF-8', 'ASCII//TRANSLIT', '²')) { throw new \LogicException(\sprintf('"%s" requires a translit-able iconv implementation, try installing "gnu-libiconv" if you\'re using Alpine Linux.', static::class)); } return 1 < \strlen($c) ? \ltrim($c, '\'`"^~') : ('' !== $c ? $c : '?'); }, $s); } } $str->string .= $s; return $str; } public function camel() : parent { $str = clone $this; $str->string = \str_replace(' ', '', \preg_replace_callback('/\\b.(?![A-Z]{2,})/u', static function ($m) use(&$i) { return 1 === ++$i ? 'İ' === $m[0] ? 'i̇' : \mb_strtolower($m[0], 'UTF-8') : \mb_convert_case($m[0], \MB_CASE_TITLE, 'UTF-8'); }, \preg_replace('/[^\\pL0-9]++/u', ' ', $this->string))); return $str; } /** * @return int[] */ public function codePointsAt(int $offset) : array { $str = $this->slice($offset, 1); if ('' === $str->string) { return []; } $codePoints = []; foreach (\preg_split('//u', $str->string, -1, \PREG_SPLIT_NO_EMPTY) as $c) { $codePoints[] = \mb_ord($c, 'UTF-8'); } return $codePoints; } public function folded(bool $compat = \true) : parent { $str = clone $this; if (!$compat || \PHP_VERSION_ID < 70300 || !\defined('Normalizer::NFKC_CF')) { $str->string = \normalizer_normalize($str->string, $compat ? \Normalizer::NFKC : \Normalizer::NFC); $str->string = \mb_strtolower(\str_replace(self::FOLD_FROM, self::FOLD_TO, $str->string), 'UTF-8'); } else { $str->string = \normalizer_normalize($str->string, \Normalizer::NFKC_CF); } return $str; } public function join(array $strings, ?string $lastGlue = null) : parent { $str = clone $this; $tail = null !== $lastGlue && 1 < \count($strings) ? $lastGlue . \array_pop($strings) : ''; $str->string = \implode($this->string, $strings) . $tail; if (!\preg_match('//u', $str->string)) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } return $str; } public function lower() : parent { $str = clone $this; $str->string = \mb_strtolower(\str_replace('İ', 'i̇', $str->string), 'UTF-8'); return $str; } public function match(string $regexp, int $flags = 0, int $offset = 0) : array { $match = (\PREG_PATTERN_ORDER | \PREG_SET_ORDER) & $flags ? 'preg_match_all' : 'preg_match'; if ($this->ignoreCase) { $regexp .= 'i'; } \set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); try { if (\false === $match($regexp . 'u', $this->string, $matches, $flags | \PREG_UNMATCHED_AS_NULL, $offset)) { $lastError = \preg_last_error(); foreach (\get_defined_constants(\true)['pcre'] as $k => $v) { if ($lastError === $v && '_ERROR' === \substr($k, -6)) { throw new RuntimeException('Matching failed with ' . $k . '.'); } } throw new RuntimeException('Matching failed with unknown error code.'); } } finally { \restore_error_handler(); } return $matches; } /** * @return static */ public function normalize(int $form = self::NFC) : self { if (!\in_array($form, [self::NFC, self::NFD, self::NFKC, self::NFKD])) { throw new InvalidArgumentException('Unsupported normalization form.'); } $str = clone $this; \normalizer_is_normalized($str->string, $form) ?: ($str->string = \normalizer_normalize($str->string, $form)); return $str; } public function padBoth(int $length, string $padStr = ' ') : parent { if ('' === $padStr || !\preg_match('//u', $padStr)) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } $pad = clone $this; $pad->string = $padStr; return $this->pad($length, $pad, \STR_PAD_BOTH); } public function padEnd(int $length, string $padStr = ' ') : parent { if ('' === $padStr || !\preg_match('//u', $padStr)) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } $pad = clone $this; $pad->string = $padStr; return $this->pad($length, $pad, \STR_PAD_RIGHT); } public function padStart(int $length, string $padStr = ' ') : parent { if ('' === $padStr || !\preg_match('//u', $padStr)) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } $pad = clone $this; $pad->string = $padStr; return $this->pad($length, $pad, \STR_PAD_LEFT); } public function replaceMatches(string $fromRegexp, $to) : parent { if ($this->ignoreCase) { $fromRegexp .= 'i'; } if (\is_array($to) || $to instanceof \Closure) { if (!\is_callable($to)) { throw new \TypeError(\sprintf('Argument 2 passed to "%s::replaceMatches()" must be callable, array given.', static::class)); } $replace = 'preg_replace_callback'; $to = static function (array $m) use($to) : string { $to = $to($m); if ('' !== $to && (!\is_string($to) || !\preg_match('//u', $to))) { throw new InvalidArgumentException('Replace callback must return a valid UTF-8 string.'); } return $to; }; } elseif ('' !== $to && !\preg_match('//u', $to)) { throw new InvalidArgumentException('Invalid UTF-8 string.'); } else { $replace = 'preg_replace'; } \set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); try { if (null === ($string = $replace($fromRegexp . 'u', $to, $this->string))) { $lastError = \preg_last_error(); foreach (\get_defined_constants(\true)['pcre'] as $k => $v) { if ($lastError === $v && '_ERROR' === \substr($k, -6)) { throw new RuntimeException('Matching failed with ' . $k . '.'); } } throw new RuntimeException('Matching failed with unknown error code.'); } } finally { \restore_error_handler(); } $str = clone $this; $str->string = $string; return $str; } public function reverse() : parent { $str = clone $this; $str->string = \implode('', \array_reverse(\preg_split('/(\\X)/u', $str->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY))); return $str; } public function snake() : parent { $str = clone $this; $str->string = \str_replace(' ', '_', \mb_strtolower(\preg_replace(['/(\\p{Lu}+)(\\p{Lu}\\p{Ll})/u', '/([\\p{Ll}0-9])(\\p{Lu})/u'], '\\1 \\2', $str->string), 'UTF-8')); return $str; } public function title(bool $allWords = \false) : parent { $str = clone $this; $limit = $allWords ? -1 : 1; $str->string = \preg_replace_callback('/\\b./u', static function (array $m) : string { return \mb_convert_case($m[0], \MB_CASE_TITLE, 'UTF-8'); }, $str->string, $limit); return $str; } public function trim(string $chars = " \t\n\r\x00\v\f ") : parent { if (" \t\n\r\x00\v\f " !== $chars && !\preg_match('//u', $chars)) { throw new InvalidArgumentException('Invalid UTF-8 chars.'); } $chars = \preg_quote($chars); $str = clone $this; $str->string = \preg_replace("{^[{$chars}]++|[{$chars}]++\$}uD", '', $str->string); return $str; } public function trimEnd(string $chars = " \t\n\r\x00\v\f ") : parent { if (" \t\n\r\x00\v\f " !== $chars && !\preg_match('//u', $chars)) { throw new InvalidArgumentException('Invalid UTF-8 chars.'); } $chars = \preg_quote($chars); $str = clone $this; $str->string = \preg_replace("{[{$chars}]++\$}uD", '', $str->string); return $str; } public function trimPrefix($prefix) : parent { if (!$this->ignoreCase) { return parent::trimPrefix($prefix); } $str = clone $this; if ($prefix instanceof \Traversable) { $prefix = \iterator_to_array($prefix, \false); } elseif ($prefix instanceof parent) { $prefix = $prefix->string; } $prefix = \implode('|', \array_map('preg_quote', (array) $prefix)); $str->string = \preg_replace("{^(?:{$prefix})}iuD", '', $this->string); return $str; } public function trimStart(string $chars = " \t\n\r\x00\v\f ") : parent { if (" \t\n\r\x00\v\f " !== $chars && !\preg_match('//u', $chars)) { throw new InvalidArgumentException('Invalid UTF-8 chars.'); } $chars = \preg_quote($chars); $str = clone $this; $str->string = \preg_replace("{^[{$chars}]++}uD", '', $str->string); return $str; } public function trimSuffix($suffix) : parent { if (!$this->ignoreCase) { return parent::trimSuffix($suffix); } $str = clone $this; if ($suffix instanceof \Traversable) { $suffix = \iterator_to_array($suffix, \false); } elseif ($suffix instanceof parent) { $suffix = $suffix->string; } $suffix = \implode('|', \array_map('preg_quote', (array) $suffix)); $str->string = \preg_replace("{(?:{$suffix})\$}iuD", '', $this->string); return $str; } public function upper() : parent { $str = clone $this; $str->string = \mb_strtoupper($str->string, 'UTF-8'); if (\PHP_VERSION_ID < 70300) { $str->string = \str_replace(self::UPPER_FROM, self::UPPER_TO, $str->string); } return $str; } public function width(bool $ignoreAnsiDecoration = \true) : int { $width = 0; $s = \str_replace(["\x00", "\x05", "\x07"], '', $this->string); if (\false !== \strpos($s, "\r")) { $s = \str_replace(["\r\n", "\r"], "\n", $s); } if (!$ignoreAnsiDecoration) { $s = \preg_replace('/[\\p{Cc}\\x7F]++/u', '', $s); } foreach (\explode("\n", $s) as $s) { if ($ignoreAnsiDecoration) { $s = \preg_replace('/(?:\\x1B(?: \\[ [\\x30-\\x3F]*+ [\\x20-\\x2F]*+ [\\x40-\\x7E] | [P\\]X^_] .*? \\x1B\\\\ | [\\x41-\\x7E] )|[\\p{Cc}\\x7F]++)/xu', '', $s); } $lineWidth = $this->wcswidth($s); if ($lineWidth > $width) { $width = $lineWidth; } } return $width; } /** * @return static */ private function pad(int $len, self $pad, int $type) : parent { $sLen = $this->length(); if ($len <= $sLen) { return clone $this; } $padLen = $pad->length(); $freeLen = $len - $sLen; $len = $freeLen % $padLen; switch ($type) { case \STR_PAD_RIGHT: return $this->append(\str_repeat($pad->string, \intdiv($freeLen, $padLen)) . ($len ? $pad->slice(0, $len) : '')); case \STR_PAD_LEFT: return $this->prepend(\str_repeat($pad->string, \intdiv($freeLen, $padLen)) . ($len ? $pad->slice(0, $len) : '')); case \STR_PAD_BOTH: $freeLen /= 2; $rightLen = \ceil($freeLen); $len = $rightLen % $padLen; $str = $this->append(\str_repeat($pad->string, \intdiv($rightLen, $padLen)) . ($len ? $pad->slice(0, $len) : '')); $leftLen = \floor($freeLen); $len = $leftLen % $padLen; return $str->prepend(\str_repeat($pad->string, \intdiv($leftLen, $padLen)) . ($len ? $pad->slice(0, $len) : '')); default: throw new InvalidArgumentException('Invalid padding type.'); } } /** * Based on https://github.com/jquast/wcwidth, a Python implementation of https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c. */ private function wcswidth(string $string) : int { $width = 0; foreach (\preg_split('//u', $string, -1, \PREG_SPLIT_NO_EMPTY) as $c) { $codePoint = \mb_ord($c, 'UTF-8'); if (0 === $codePoint || 0x34f === $codePoint || 0x200b <= $codePoint && 0x200f >= $codePoint || 0x2028 === $codePoint || 0x2029 === $codePoint || 0x202a <= $codePoint && 0x202e >= $codePoint || 0x2060 <= $codePoint && 0x2063 >= $codePoint) { continue; } // Non printable characters if (32 > $codePoint || 0x7f <= $codePoint && 0xa0 > $codePoint) { return -1; } if (null === self::$tableZero) { self::$tableZero = (require __DIR__ . '/Resources/data/wcswidth_table_zero.php'); } if ($codePoint >= self::$tableZero[0][0] && $codePoint <= self::$tableZero[$ubound = \count(self::$tableZero) - 1][1]) { $lbound = 0; while ($ubound >= $lbound) { $mid = \floor(($lbound + $ubound) / 2); if ($codePoint > self::$tableZero[$mid][1]) { $lbound = $mid + 1; } elseif ($codePoint < self::$tableZero[$mid][0]) { $ubound = $mid - 1; } else { continue 2; } } } if (null === self::$tableWide) { self::$tableWide = (require __DIR__ . '/Resources/data/wcswidth_table_wide.php'); } if ($codePoint >= self::$tableWide[0][0] && $codePoint <= self::$tableWide[$ubound = \count(self::$tableWide) - 1][1]) { $lbound = 0; while ($ubound >= $lbound) { $mid = \floor(($lbound + $ubound) / 2); if ($codePoint > self::$tableWide[$mid][1]) { $lbound = $mid + 1; } elseif ($codePoint < self::$tableWide[$mid][0]) { $ubound = $mid - 1; } else { $width += 2; continue 2; } } } ++$width; } return $width; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String; /** * A string whose value is computed lazily by a callback. * * @author Nicolas Grekas */ class LazyString implements \Stringable, \JsonSerializable { private $value; /** * @param callable|array $callback A callable or a [Closure, method] lazy-callable * * @return static */ public static function fromCallable($callback, ...$arguments) : self { if (!\is_callable($callback) && !(\is_array($callback) && isset($callback[0]) && $callback[0] instanceof \Closure && 2 >= \count($callback))) { throw new \TypeError(\sprintf('Argument 1 passed to "%s()" must be a callable or a [Closure, method] lazy-callable, "%s" given.', __METHOD__, \get_debug_type($callback))); } $lazyString = new static(); $lazyString->value = static function () use(&$callback, &$arguments, &$value) : string { if (null !== $arguments) { if (!\is_callable($callback)) { $callback[0] = $callback[0](); $callback[1] = $callback[1] ?? '__invoke'; } $value = $callback(...$arguments); $callback = self::getPrettyName($callback); $arguments = null; } return $value ?? ''; }; return $lazyString; } /** * @param string|int|float|bool|\Stringable $value * * @return static */ public static function fromStringable($value) : self { if (!self::isStringable($value)) { throw new \TypeError(\sprintf('Argument 1 passed to "%s()" must be a scalar or a stringable object, "%s" given.', __METHOD__, \get_debug_type($value))); } if (\is_object($value)) { return static::fromCallable([$value, '__toString']); } $lazyString = new static(); $lazyString->value = (string) $value; return $lazyString; } /** * Tells whether the provided value can be cast to string. */ public static final function isStringable($value) : bool { return \is_string($value) || $value instanceof self || (\is_object($value) ? \method_exists($value, '__toString') : \is_scalar($value)); } /** * Casts scalars and stringable objects to strings. * * @param object|string|int|float|bool $value * * @throws \TypeError When the provided value is not stringable */ public static final function resolve($value) : string { return $value; } /** * @return string */ public function __toString() { if (\is_string($this->value)) { return $this->value; } try { return $this->value = ($this->value)(); } catch (\Throwable $e) { if (\TypeError::class === \get_class($e) && __FILE__ === $e->getFile()) { $type = \explode(', ', $e->getMessage()); $type = \substr(\array_pop($type), 0, -\strlen(' returned')); $r = new \ReflectionFunction($this->value); $callback = $r->getStaticVariables()['callback']; $e = new \TypeError(\sprintf('Return value of %s() passed to %s::fromCallable() must be of the type string, %s returned.', $callback, static::class, $type)); } if (\PHP_VERSION_ID < 70400) { // leverage the ErrorHandler component with graceful fallback when it's not available return \trigger_error($e, \E_USER_ERROR); } throw $e; } } public function __sleep() : array { $this->__toString(); return ['value']; } public function jsonSerialize() : string { return $this->__toString(); } private function __construct() { } private static function getPrettyName(callable $callback) : string { if (\is_string($callback)) { return $callback; } if (\is_array($callback)) { $class = \is_object($callback[0]) ? \get_debug_type($callback[0]) : $callback[0]; $method = $callback[1]; } elseif ($callback instanceof \Closure) { $r = new \ReflectionFunction($callback); if (\str_contains($r->name, '{closure') || !($class = \PHP_VERSION_ID >= 80111 ? $r->getClosureCalledClass() : $r->getClosureScopeClass())) { return $r->name; } $class = $class->name; $method = $r->name; } else { $class = \get_debug_type($callback); $method = '__invoke'; } return $class . '::' . $method; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String\Slugger; use _PHPStan_b22655c3f\Symfony\Component\String\AbstractUnicodeString; /** * Creates a URL-friendly slug from a given string. * * @author Titouan Galopin */ interface SluggerInterface { /** * Creates a slug for the given string and locale, using appropriate transliteration when needed. */ public function slug(string $string, string $separator = '-', ?string $locale = null) : AbstractUnicodeString; } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String\Slugger; use _PHPStan_b22655c3f\Symfony\Component\String\AbstractUnicodeString; use _PHPStan_b22655c3f\Symfony\Component\String\UnicodeString; use _PHPStan_b22655c3f\Symfony\Contracts\Translation\LocaleAwareInterface; if (!\interface_exists(LocaleAwareInterface::class)) { throw new \LogicException('You cannot use the "Symfony\\Component\\String\\Slugger\\AsciiSlugger" as the "symfony/translation-contracts" package is not installed. Try running "composer require symfony/translation-contracts".'); } /** * @author Titouan Galopin */ class AsciiSlugger implements SluggerInterface, LocaleAwareInterface { private const LOCALE_TO_TRANSLITERATOR_ID = ['am' => 'Amharic-Latin', 'ar' => 'Arabic-Latin', 'az' => 'Azerbaijani-Latin', 'be' => 'Belarusian-Latin', 'bg' => 'Bulgarian-Latin', 'bn' => 'Bengali-Latin', 'de' => 'de-ASCII', 'el' => 'Greek-Latin', 'fa' => 'Persian-Latin', 'he' => 'Hebrew-Latin', 'hy' => 'Armenian-Latin', 'ka' => 'Georgian-Latin', 'kk' => 'Kazakh-Latin', 'ky' => 'Kirghiz-Latin', 'ko' => 'Korean-Latin', 'mk' => 'Macedonian-Latin', 'mn' => 'Mongolian-Latin', 'or' => 'Oriya-Latin', 'ps' => 'Pashto-Latin', 'ru' => 'Russian-Latin', 'sr' => 'Serbian-Latin', 'sr_Cyrl' => 'Serbian-Latin', 'th' => 'Thai-Latin', 'tk' => 'Turkmen-Latin', 'uk' => 'Ukrainian-Latin', 'uz' => 'Uzbek-Latin', 'zh' => 'Han-Latin']; private $defaultLocale; private $symbolsMap = ['en' => ['@' => 'at', '&' => 'and']]; /** * Cache of transliterators per locale. * * @var \Transliterator[] */ private $transliterators = []; /** * @param array|\Closure|null $symbolsMap */ public function __construct(?string $defaultLocale = null, $symbolsMap = null) { if (null !== $symbolsMap && !\is_array($symbolsMap) && !$symbolsMap instanceof \Closure) { throw new \TypeError(\sprintf('Argument 2 passed to "%s()" must be array, Closure or null, "%s" given.', __METHOD__, \gettype($symbolsMap))); } $this->defaultLocale = $defaultLocale; $this->symbolsMap = $symbolsMap ?? $this->symbolsMap; } /** * {@inheritdoc} */ public function setLocale($locale) { $this->defaultLocale = $locale; } /** * {@inheritdoc} */ public function getLocale() { return $this->defaultLocale; } /** * {@inheritdoc} */ public function slug(string $string, string $separator = '-', ?string $locale = null) : AbstractUnicodeString { $locale = $locale ?? $this->defaultLocale; $transliterator = []; if ($locale && ('de' === $locale || 0 === \strpos($locale, 'de_'))) { // Use the shortcut for German in UnicodeString::ascii() if possible (faster and no requirement on intl) $transliterator = ['de-ASCII']; } elseif (\function_exists('transliterator_transliterate') && $locale) { $transliterator = (array) $this->createTransliterator($locale); } if ($this->symbolsMap instanceof \Closure) { // If the symbols map is passed as a closure, there is no need to fallback to the parent locale // as the closure can just provide substitutions for all locales of interest. $symbolsMap = $this->symbolsMap; \array_unshift($transliterator, static function ($s) use($symbolsMap, $locale) { return $symbolsMap($s, $locale); }); } $unicodeString = (new UnicodeString($string))->ascii($transliterator); if (\is_array($this->symbolsMap)) { $map = null; if (isset($this->symbolsMap[$locale])) { $map = $this->symbolsMap[$locale]; } else { $parent = self::getParentLocale($locale); if ($parent && isset($this->symbolsMap[$parent])) { $map = $this->symbolsMap[$parent]; } } if ($map) { foreach ($map as $char => $replace) { $unicodeString = $unicodeString->replace($char, ' ' . $replace . ' '); } } } return $unicodeString->replaceMatches('/[^A-Za-z0-9]++/', $separator)->trim($separator); } private function createTransliterator(string $locale) : ?\Transliterator { if (\array_key_exists($locale, $this->transliterators)) { return $this->transliterators[$locale]; } // Exact locale supported, cache and return if ($id = self::LOCALE_TO_TRANSLITERATOR_ID[$locale] ?? null) { return $this->transliterators[$locale] = \Transliterator::create($id . '/BGN') ?? \Transliterator::create($id); } // Locale not supported and no parent, fallback to any-latin if (!($parent = self::getParentLocale($locale))) { return $this->transliterators[$locale] = null; } // Try to use the parent locale (ie. try "de" for "de_AT") and cache both locales if ($id = self::LOCALE_TO_TRANSLITERATOR_ID[$parent] ?? null) { $transliterator = \Transliterator::create($id . '/BGN') ?? \Transliterator::create($id); } return $this->transliterators[$locale] = $this->transliterators[$parent] = $transliterator ?? null; } private static function getParentLocale(?string $locale) : ?string { if (!$locale) { return null; } if (\false === ($str = \strrchr($locale, '_'))) { // no parent locale return null; } return \substr($locale, 0, -\strlen($str)); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String; if (!\function_exists(u::class)) { function u(?string $string = '') : UnicodeString { return new UnicodeString($string ?? ''); } } if (!\function_exists(b::class)) { function b(?string $string = '') : ByteString { return new ByteString($string ?? ''); } } if (!\function_exists(s::class)) { /** * @return UnicodeString|ByteString */ function s(?string $string = '') : AbstractString { $string = $string ?? ''; return \preg_match('//u', $string) ? new UnicodeString($string) : new ByteString($string); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\String; use _PHPStan_b22655c3f\Symfony\Component\String\Exception\ExceptionInterface; use _PHPStan_b22655c3f\Symfony\Component\String\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\String\Exception\RuntimeException; /** * Represents a string of abstract characters. * * Unicode defines 3 types of "characters" (bytes, code points and grapheme clusters). * This class is the abstract type to use as a type-hint when the logic you want to * implement doesn't care about the exact variant it deals with. * * @author Nicolas Grekas * @author Hugo Hamon * * @throws ExceptionInterface */ abstract class AbstractString implements \Stringable, \JsonSerializable { public const PREG_PATTERN_ORDER = \PREG_PATTERN_ORDER; public const PREG_SET_ORDER = \PREG_SET_ORDER; public const PREG_OFFSET_CAPTURE = \PREG_OFFSET_CAPTURE; public const PREG_UNMATCHED_AS_NULL = \PREG_UNMATCHED_AS_NULL; public const PREG_SPLIT = 0; public const PREG_SPLIT_NO_EMPTY = \PREG_SPLIT_NO_EMPTY; public const PREG_SPLIT_DELIM_CAPTURE = \PREG_SPLIT_DELIM_CAPTURE; public const PREG_SPLIT_OFFSET_CAPTURE = \PREG_SPLIT_OFFSET_CAPTURE; protected $string = ''; protected $ignoreCase = \false; public abstract function __construct(string $string = ''); /** * Unwraps instances of AbstractString back to strings. * * @return string[]|array */ public static function unwrap(array $values) : array { foreach ($values as $k => $v) { if ($v instanceof self) { $values[$k] = $v->__toString(); } elseif (\is_array($v) && $values[$k] !== ($v = static::unwrap($v))) { $values[$k] = $v; } } return $values; } /** * Wraps (and normalizes) strings in instances of AbstractString. * * @return static[]|array */ public static function wrap(array $values) : array { $i = 0; $keys = null; foreach ($values as $k => $v) { if (\is_string($k) && '' !== $k && $k !== ($j = (string) new static($k))) { $keys = $keys ?? \array_keys($values); $keys[$i] = $j; } if (\is_string($v)) { $values[$k] = new static($v); } elseif (\is_array($v) && $values[$k] !== ($v = static::wrap($v))) { $values[$k] = $v; } ++$i; } return null !== $keys ? \array_combine($keys, $values) : $values; } /** * @param string|string[] $needle * * @return static */ public function after($needle, bool $includeNeedle = \false, int $offset = 0) : self { $str = clone $this; $i = \PHP_INT_MAX; foreach ((array) $needle as $n) { $n = (string) $n; $j = $this->indexOf($n, $offset); if (null !== $j && $j < $i) { $i = $j; $str->string = $n; } } if (\PHP_INT_MAX === $i) { return $str; } if (!$includeNeedle) { $i += $str->length(); } return $this->slice($i); } /** * @param string|string[] $needle * * @return static */ public function afterLast($needle, bool $includeNeedle = \false, int $offset = 0) : self { $str = clone $this; $i = null; foreach ((array) $needle as $n) { $n = (string) $n; $j = $this->indexOfLast($n, $offset); if (null !== $j && $j >= $i) { $i = $offset = $j; $str->string = $n; } } if (null === $i) { return $str; } if (!$includeNeedle) { $i += $str->length(); } return $this->slice($i); } /** * @return static */ public abstract function append(string ...$suffix) : self; /** * @param string|string[] $needle * * @return static */ public function before($needle, bool $includeNeedle = \false, int $offset = 0) : self { $str = clone $this; $i = \PHP_INT_MAX; foreach ((array) $needle as $n) { $n = (string) $n; $j = $this->indexOf($n, $offset); if (null !== $j && $j < $i) { $i = $j; $str->string = $n; } } if (\PHP_INT_MAX === $i) { return $str; } if ($includeNeedle) { $i += $str->length(); } return $this->slice(0, $i); } /** * @param string|string[] $needle * * @return static */ public function beforeLast($needle, bool $includeNeedle = \false, int $offset = 0) : self { $str = clone $this; $i = null; foreach ((array) $needle as $n) { $n = (string) $n; $j = $this->indexOfLast($n, $offset); if (null !== $j && $j >= $i) { $i = $offset = $j; $str->string = $n; } } if (null === $i) { return $str; } if ($includeNeedle) { $i += $str->length(); } return $this->slice(0, $i); } /** * @return int[] */ public function bytesAt(int $offset) : array { $str = $this->slice($offset, 1); return '' === $str->string ? [] : \array_values(\unpack('C*', $str->string)); } /** * @return static */ public abstract function camel() : self; /** * @return static[] */ public abstract function chunk(int $length = 1) : array; /** * @return static */ public function collapseWhitespace() : self { $str = clone $this; $str->string = \trim(\preg_replace("/(?:[ \n\r\t\f]{2,}+|[\n\r\t\f])/", ' ', $str->string), " \n\r\t\f"); return $str; } /** * @param string|string[] $needle */ public function containsAny($needle) : bool { return null !== $this->indexOf($needle); } /** * @param string|string[] $suffix */ public function endsWith($suffix) : bool { if (!\is_array($suffix) && !$suffix instanceof \Traversable) { throw new \TypeError(\sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); } foreach ($suffix as $s) { if ($this->endsWith((string) $s)) { return \true; } } return \false; } /** * @return static */ public function ensureEnd(string $suffix) : self { if (!$this->endsWith($suffix)) { return $this->append($suffix); } $suffix = \preg_quote($suffix); $regex = '{(' . $suffix . ')(?:' . $suffix . ')++$}D'; return $this->replaceMatches($regex . ($this->ignoreCase ? 'i' : ''), '$1'); } /** * @return static */ public function ensureStart(string $prefix) : self { $prefix = new static($prefix); if (!$this->startsWith($prefix)) { return $this->prepend($prefix); } $str = clone $this; $i = $prefixLen = $prefix->length(); while ($this->indexOf($prefix, $i) === $i) { $str = $str->slice($prefixLen); $i += $prefixLen; } return $str; } /** * @param string|string[] $string */ public function equalsTo($string) : bool { if (!\is_array($string) && !$string instanceof \Traversable) { throw new \TypeError(\sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); } foreach ($string as $s) { if ($this->equalsTo((string) $s)) { return \true; } } return \false; } /** * @return static */ public abstract function folded() : self; /** * @return static */ public function ignoreCase() : self { $str = clone $this; $str->ignoreCase = \true; return $str; } /** * @param string|string[] $needle */ public function indexOf($needle, int $offset = 0) : ?int { if (!\is_array($needle) && !$needle instanceof \Traversable) { throw new \TypeError(\sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); } $i = \PHP_INT_MAX; foreach ($needle as $n) { $j = $this->indexOf((string) $n, $offset); if (null !== $j && $j < $i) { $i = $j; } } return \PHP_INT_MAX === $i ? null : $i; } /** * @param string|string[] $needle */ public function indexOfLast($needle, int $offset = 0) : ?int { if (!\is_array($needle) && !$needle instanceof \Traversable) { throw new \TypeError(\sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); } $i = null; foreach ($needle as $n) { $j = $this->indexOfLast((string) $n, $offset); if (null !== $j && $j >= $i) { $i = $offset = $j; } } return $i; } public function isEmpty() : bool { return '' === $this->string; } /** * @return static */ public abstract function join(array $strings, ?string $lastGlue = null) : self; public function jsonSerialize() : string { return $this->string; } public abstract function length() : int; /** * @return static */ public abstract function lower() : self; /** * Matches the string using a regular expression. * * Pass PREG_PATTERN_ORDER or PREG_SET_ORDER as $flags to get all occurrences matching the regular expression. * * @return array All matches in a multi-dimensional array ordered according to flags */ public abstract function match(string $regexp, int $flags = 0, int $offset = 0) : array; /** * @return static */ public abstract function padBoth(int $length, string $padStr = ' ') : self; /** * @return static */ public abstract function padEnd(int $length, string $padStr = ' ') : self; /** * @return static */ public abstract function padStart(int $length, string $padStr = ' ') : self; /** * @return static */ public abstract function prepend(string ...$prefix) : self; /** * @return static */ public function repeat(int $multiplier) : self { if (0 > $multiplier) { throw new InvalidArgumentException(\sprintf('Multiplier must be positive, %d given.', $multiplier)); } $str = clone $this; $str->string = \str_repeat($str->string, $multiplier); return $str; } /** * @return static */ public abstract function replace(string $from, string $to) : self; /** * @param string|callable $to * * @return static */ public abstract function replaceMatches(string $fromRegexp, $to) : self; /** * @return static */ public abstract function reverse() : self; /** * @return static */ public abstract function slice(int $start = 0, ?int $length = null) : self; /** * @return static */ public abstract function snake() : self; /** * @return static */ public abstract function splice(string $replacement, int $start = 0, ?int $length = null) : self; /** * @return static[] */ public function split(string $delimiter, ?int $limit = null, ?int $flags = null) : array { if (null === $flags) { throw new \TypeError('Split behavior when $flags is null must be implemented by child classes.'); } if ($this->ignoreCase) { $delimiter .= 'i'; } \set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); try { if (\false === ($chunks = \preg_split($delimiter, $this->string, $limit, $flags))) { $lastError = \preg_last_error(); foreach (\get_defined_constants(\true)['pcre'] as $k => $v) { if ($lastError === $v && '_ERROR' === \substr($k, -6)) { throw new RuntimeException('Splitting failed with ' . $k . '.'); } } throw new RuntimeException('Splitting failed with unknown error code.'); } } finally { \restore_error_handler(); } $str = clone $this; if (self::PREG_SPLIT_OFFSET_CAPTURE & $flags) { foreach ($chunks as &$chunk) { $str->string = $chunk[0]; $chunk[0] = clone $str; } } else { foreach ($chunks as &$chunk) { $str->string = $chunk; $chunk = clone $str; } } return $chunks; } /** * @param string|string[] $prefix */ public function startsWith($prefix) : bool { if (!\is_array($prefix) && !$prefix instanceof \Traversable) { throw new \TypeError(\sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); } foreach ($prefix as $prefix) { if ($this->startsWith((string) $prefix)) { return \true; } } return \false; } /** * @return static */ public abstract function title(bool $allWords = \false) : self; public function toByteString(?string $toEncoding = null) : ByteString { $b = new ByteString(); $toEncoding = \in_array($toEncoding, ['utf8', 'utf-8', 'UTF8'], \true) ? 'UTF-8' : $toEncoding; if (null === $toEncoding || $toEncoding === ($fromEncoding = $this instanceof AbstractUnicodeString || \preg_match('//u', $b->string) ? 'UTF-8' : 'Windows-1252')) { $b->string = $this->string; return $b; } \set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); try { try { $b->string = \mb_convert_encoding($this->string, $toEncoding, 'UTF-8'); } catch (InvalidArgumentException|\ValueError $e) { if (!\function_exists('iconv')) { if ($e instanceof \ValueError) { throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); } throw $e; } $b->string = \iconv('UTF-8', $toEncoding, $this->string); } } finally { \restore_error_handler(); } return $b; } public function toCodePointString() : CodePointString { return new CodePointString($this->string); } public function toString() : string { return $this->string; } public function toUnicodeString() : UnicodeString { return new UnicodeString($this->string); } /** * @return static */ public abstract function trim(string $chars = " \t\n\r\x00\v\f ") : self; /** * @return static */ public abstract function trimEnd(string $chars = " \t\n\r\x00\v\f ") : self; /** * @param string|string[] $prefix * * @return static */ public function trimPrefix($prefix) : self { if (\is_array($prefix) || $prefix instanceof \Traversable) { foreach ($prefix as $s) { $t = $this->trimPrefix($s); if ($t->string !== $this->string) { return $t; } } return clone $this; } $str = clone $this; if ($prefix instanceof self) { $prefix = $prefix->string; } else { $prefix = (string) $prefix; } if ('' !== $prefix && \strlen($this->string) >= \strlen($prefix) && 0 === \substr_compare($this->string, $prefix, 0, \strlen($prefix), $this->ignoreCase)) { $str->string = \substr($this->string, \strlen($prefix)); } return $str; } /** * @return static */ public abstract function trimStart(string $chars = " \t\n\r\x00\v\f ") : self; /** * @param string|string[] $suffix * * @return static */ public function trimSuffix($suffix) : self { if (\is_array($suffix) || $suffix instanceof \Traversable) { foreach ($suffix as $s) { $t = $this->trimSuffix($s); if ($t->string !== $this->string) { return $t; } } return clone $this; } $str = clone $this; if ($suffix instanceof self) { $suffix = $suffix->string; } else { $suffix = (string) $suffix; } if ('' !== $suffix && \strlen($this->string) >= \strlen($suffix) && 0 === \substr_compare($this->string, $suffix, -\strlen($suffix), null, $this->ignoreCase)) { $str->string = \substr($this->string, 0, -\strlen($suffix)); } return $str; } /** * @return static */ public function truncate(int $length, string $ellipsis = '', bool $cut = \true) : self { $stringLength = $this->length(); if ($stringLength <= $length) { return clone $this; } $ellipsisLength = '' !== $ellipsis ? (new static($ellipsis))->length() : 0; if ($length < $ellipsisLength) { $ellipsisLength = 0; } if (!$cut) { if (null === ($length = $this->indexOf([' ', "\r", "\n", "\t"], ($length ?: 1) - 1))) { return clone $this; } $length += $ellipsisLength; } $str = $this->slice(0, $length - $ellipsisLength); return $ellipsisLength ? $str->trimEnd()->append($ellipsis) : $str; } /** * @return static */ public abstract function upper() : self; /** * Returns the printable length on a terminal. */ public abstract function width(bool $ignoreAnsiDecoration = \true) : int; /** * @return static */ public function wordwrap(int $width = 75, string $break = "\n", bool $cut = \false) : self { $lines = '' !== $break ? $this->split($break) : [clone $this]; $chars = []; $mask = ''; if (1 === \count($lines) && '' === $lines[0]->string) { return $lines[0]; } foreach ($lines as $i => $line) { if ($i) { $chars[] = $break; $mask .= '#'; } foreach ($line->chunk() as $char) { $chars[] = $char->string; $mask .= ' ' === $char->string ? ' ' : '?'; } } $string = ''; $j = 0; $b = $i = -1; $mask = \wordwrap($mask, $width, '#', $cut); while (\false !== ($b = \strpos($mask, '#', $b + 1))) { for (++$i; $i < $b; ++$i) { $string .= $chars[$j]; unset($chars[$j++]); } if ($break === $chars[$j] || ' ' === $chars[$j]) { unset($chars[$j++]); } $string .= $break; } $str = clone $this; $str->string = $string . \implode('', $chars); return $str; } public function __sleep() : array { return ['string']; } public function __clone() { $this->ignoreCase = \false; } public function __toString() : string { return $this->string; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process; use _PHPStan_b22655c3f\Symfony\Component\Process\Exception\LogicException; use _PHPStan_b22655c3f\Symfony\Component\Process\Exception\RuntimeException; /** * PhpProcess runs a PHP script in an independent process. * * $p = new PhpProcess(''); * $p->run(); * print $p->getOutput()."\n"; * * @author Fabien Potencier */ class PhpProcess extends Process { /** * @param string $script The PHP script to run (as a string) * @param string|null $cwd The working directory or null to use the working dir of the current PHP process * @param array|null $env The environment variables or null to use the same environment as the current PHP process * @param int $timeout The timeout in seconds * @param array|null $php Path to the PHP binary to use with any additional arguments */ public function __construct(string $script, ?string $cwd = null, ?array $env = null, int $timeout = 60, ?array $php = null) { if (null === $php) { $executableFinder = new PhpExecutableFinder(); $php = $executableFinder->find(\false); $php = \false === $php ? null : \array_merge([$php], $executableFinder->findArguments()); } if ('phpdbg' === \PHP_SAPI) { $file = \tempnam(\sys_get_temp_dir(), 'dbg'); \file_put_contents($file, $script); \register_shutdown_function('unlink', $file); $php[] = $file; $script = null; } parent::__construct($php, $cwd, $env, $script, $timeout); } /** * {@inheritdoc} */ public static function fromShellCommandline(string $command, ?string $cwd = null, ?array $env = null, $input = null, ?float $timeout = 60) { throw new LogicException(\sprintf('The "%s()" method cannot be called when using "%s".', __METHOD__, self::class)); } /** * {@inheritdoc} */ public function start(?callable $callback = null, array $env = []) { if (null === $this->getCommandLine()) { throw new RuntimeException('Unable to find the PHP executable.'); } parent::start($callback, $env); } } Copyright (c) 2004-present Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process; use _PHPStan_b22655c3f\Symfony\Component\Process\Exception\InvalidArgumentException; /** * ProcessUtils is a bunch of utility methods. * * This class contains static methods only and is not meant to be instantiated. * * @author Martin Hasoň */ class ProcessUtils { /** * This class should not be instantiated. */ private function __construct() { } /** * Validates and normalizes a Process input. * * @param string $caller The name of method call that validates the input * @param mixed $input The input to validate * * @return mixed * * @throws InvalidArgumentException In case the input is not valid */ public static function validateInput(string $caller, $input) { if (null !== $input) { if (\is_resource($input)) { return $input; } if (\is_string($input)) { return $input; } if (\is_scalar($input)) { return (string) $input; } if ($input instanceof Process) { return $input->getIterator($input::ITER_SKIP_ERR); } if ($input instanceof \Iterator) { return $input; } if ($input instanceof \Traversable) { return new \IteratorIterator($input); } throw new InvalidArgumentException(\sprintf('"%s" only accepts strings, Traversable objects or stream resources.', $caller)); } return $input; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process; use _PHPStan_b22655c3f\Symfony\Component\Process\Exception\RuntimeException; /** * Provides a way to continuously write to the input of a Process until the InputStream is closed. * * @author Nicolas Grekas * * @implements \IteratorAggregate */ class InputStream implements \IteratorAggregate { /** @var callable|null */ private $onEmpty = null; private $input = []; private $open = \true; /** * Sets a callback that is called when the write buffer becomes empty. */ public function onEmpty(?callable $onEmpty = null) { $this->onEmpty = $onEmpty; } /** * Appends an input to the write buffer. * * @param resource|string|int|float|bool|\Traversable|null $input The input to append as scalar, * stream resource or \Traversable */ public function write($input) { if (null === $input) { return; } if ($this->isClosed()) { throw new RuntimeException(\sprintf('"%s" is closed.', static::class)); } $this->input[] = ProcessUtils::validateInput(__METHOD__, $input); } /** * Closes the write buffer. */ public function close() { $this->open = \false; } /** * Tells whether the write buffer is closed or not. */ public function isClosed() { return !$this->open; } /** * @return \Traversable */ #[\ReturnTypeWillChange] public function getIterator() { $this->open = \true; while ($this->open || $this->input) { if (!$this->input) { (yield ''); continue; } $current = \array_shift($this->input); if ($current instanceof \Iterator) { yield from $current; } else { (yield $current); } if (!$this->input && $this->open && null !== ($onEmpty = $this->onEmpty)) { $this->write($onEmpty($this)); } } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process; use _PHPStan_b22655c3f\Symfony\Component\Process\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Process\Exception\LogicException; use _PHPStan_b22655c3f\Symfony\Component\Process\Exception\ProcessFailedException; use _PHPStan_b22655c3f\Symfony\Component\Process\Exception\ProcessSignaledException; use _PHPStan_b22655c3f\Symfony\Component\Process\Exception\ProcessTimedOutException; use _PHPStan_b22655c3f\Symfony\Component\Process\Exception\RuntimeException; use _PHPStan_b22655c3f\Symfony\Component\Process\Pipes\PipesInterface; use _PHPStan_b22655c3f\Symfony\Component\Process\Pipes\UnixPipes; use _PHPStan_b22655c3f\Symfony\Component\Process\Pipes\WindowsPipes; /** * Process is a thin wrapper around proc_* functions to easily * start independent PHP processes. * * @author Fabien Potencier * @author Romain Neutron * * @implements \IteratorAggregate */ class Process implements \IteratorAggregate { public const ERR = 'err'; public const OUT = 'out'; public const STATUS_READY = 'ready'; public const STATUS_STARTED = 'started'; public const STATUS_TERMINATED = 'terminated'; public const STDIN = 0; public const STDOUT = 1; public const STDERR = 2; // Timeout Precision in seconds. public const TIMEOUT_PRECISION = 0.2; public const ITER_NON_BLOCKING = 1; // By default, iterating over outputs is a blocking call, use this flag to make it non-blocking public const ITER_KEEP_OUTPUT = 2; // By default, outputs are cleared while iterating, use this flag to keep them in memory public const ITER_SKIP_OUT = 4; // Use this flag to skip STDOUT while iterating public const ITER_SKIP_ERR = 8; // Use this flag to skip STDERR while iterating private $callback; private $hasCallback = \false; private $commandline; private $cwd; private $env = []; private $input; private $starttime; private $lastOutputTime; private $timeout; private $idleTimeout; private $exitcode; private $fallbackStatus = []; private $processInformation; private $outputDisabled = \false; private $stdout; private $stderr; private $process; private $status = self::STATUS_READY; private $incrementalOutputOffset = 0; private $incrementalErrorOutputOffset = 0; private $tty = \false; private $pty; private $options = ['suppress_errors' => \true, 'bypass_shell' => \true]; private $useFileHandles = \false; /** @var PipesInterface */ private $processPipes; private $latestSignal; private $cachedExitCode; private static $sigchild; /** * Exit codes translation table. * * User-defined errors must use exit codes in the 64-113 range. */ public static $exitCodes = [ 0 => 'OK', 1 => 'General error', 2 => 'Misuse of shell builtins', 126 => 'Invoked command cannot execute', 127 => 'Command not found', 128 => 'Invalid exit argument', // signals 129 => 'Hangup', 130 => 'Interrupt', 131 => 'Quit and dump core', 132 => 'Illegal instruction', 133 => 'Trace/breakpoint trap', 134 => 'Process aborted', 135 => 'Bus error: "access to undefined portion of memory object"', 136 => 'Floating point exception: "erroneous arithmetic operation"', 137 => 'Kill (terminate immediately)', 138 => 'User-defined 1', 139 => 'Segmentation violation', 140 => 'User-defined 2', 141 => 'Write to pipe with no one reading', 142 => 'Signal raised by alarm', 143 => 'Termination (request to terminate)', // 144 - not defined 145 => 'Child process terminated, stopped (or continued*)', 146 => 'Continue if stopped', 147 => 'Stop executing temporarily', 148 => 'Terminal stop signal', 149 => 'Background process attempting to read from tty ("in")', 150 => 'Background process attempting to write to tty ("out")', 151 => 'Urgent data available on socket', 152 => 'CPU time limit exceeded', 153 => 'File size limit exceeded', 154 => 'Signal raised by timer counting virtual time: "virtual timer expired"', 155 => 'Profiling timer expired', // 156 - not defined 157 => 'Pollable event', // 158 - not defined 159 => 'Bad syscall', ]; /** * @param array $command The command to run and its arguments listed as separate entries * @param string|null $cwd The working directory or null to use the working dir of the current PHP process * @param array|null $env The environment variables or null to use the same environment as the current PHP process * @param mixed $input The input as stream resource, scalar or \Traversable, or null for no input * @param int|float|null $timeout The timeout in seconds or null to disable * * @throws LogicException When proc_open is not installed */ public function __construct(array $command, ?string $cwd = null, ?array $env = null, $input = null, ?float $timeout = 60) { if (!\function_exists('proc_open')) { throw new LogicException('The Process class relies on proc_open, which is not available on your PHP installation.'); } $this->commandline = $command; $this->cwd = $cwd; // on Windows, if the cwd changed via chdir(), proc_open defaults to the dir where PHP was started // on Gnu/Linux, PHP builds with --enable-maintainer-zts are also affected // @see : https://bugs.php.net/51800 // @see : https://bugs.php.net/50524 if (null === $this->cwd && (\defined('ZEND_THREAD_SAFE') || '\\' === \DIRECTORY_SEPARATOR)) { $this->cwd = \getcwd(); } if (null !== $env) { $this->setEnv($env); } $this->setInput($input); $this->setTimeout($timeout); $this->useFileHandles = '\\' === \DIRECTORY_SEPARATOR; $this->pty = \false; } /** * Creates a Process instance as a command-line to be run in a shell wrapper. * * Command-lines are parsed by the shell of your OS (/bin/sh on Unix-like, cmd.exe on Windows.) * This allows using e.g. pipes or conditional execution. In this mode, signals are sent to the * shell wrapper and not to your commands. * * In order to inject dynamic values into command-lines, we strongly recommend using placeholders. * This will save escaping values, which is not portable nor secure anyway: * * $process = Process::fromShellCommandline('my_command "${:MY_VAR}"'); * $process->run(null, ['MY_VAR' => $theValue]); * * @param string $command The command line to pass to the shell of the OS * @param string|null $cwd The working directory or null to use the working dir of the current PHP process * @param array|null $env The environment variables or null to use the same environment as the current PHP process * @param mixed $input The input as stream resource, scalar or \Traversable, or null for no input * @param int|float|null $timeout The timeout in seconds or null to disable * * @return static * * @throws LogicException When proc_open is not installed */ public static function fromShellCommandline(string $command, ?string $cwd = null, ?array $env = null, $input = null, ?float $timeout = 60) { $process = new static([], $cwd, $env, $input, $timeout); $process->commandline = $command; return $process; } /** * @return array */ public function __sleep() { throw new \BadMethodCallException('Cannot serialize ' . __CLASS__); } public function __wakeup() { throw new \BadMethodCallException('Cannot unserialize ' . __CLASS__); } public function __destruct() { if ($this->options['create_new_console'] ?? \false) { $this->processPipes->close(); } else { $this->stop(0); } } public function __clone() { $this->resetProcessData(); } /** * Runs the process. * * The callback receives the type of output (out or err) and * some bytes from the output in real-time. It allows to have feedback * from the independent process during execution. * * The STDOUT and STDERR are also available after the process is finished * via the getOutput() and getErrorOutput() methods. * * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * * @return int The exit status code * * @throws RuntimeException When process can't be launched * @throws RuntimeException When process is already running * @throws ProcessTimedOutException When process timed out * @throws ProcessSignaledException When process stopped after receiving signal * @throws LogicException In case a callback is provided and output has been disabled * * @final */ public function run(?callable $callback = null, array $env = []) : int { $this->start($callback, $env); return $this->wait(); } /** * Runs the process. * * This is identical to run() except that an exception is thrown if the process * exits with a non-zero exit code. * * @return $this * * @throws ProcessFailedException if the process didn't terminate successfully * * @final */ public function mustRun(?callable $callback = null, array $env = []) : self { if (0 !== $this->run($callback, $env)) { throw new ProcessFailedException($this); } return $this; } /** * Starts the process and returns after writing the input to STDIN. * * This method blocks until all STDIN data is sent to the process then it * returns while the process runs in the background. * * The termination of the process can be awaited with wait(). * * The callback receives the type of output (out or err) and some bytes from * the output in real-time while writing the standard input to the process. * It allows to have feedback from the independent process during execution. * * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * * @throws RuntimeException When process can't be launched * @throws RuntimeException When process is already running * @throws LogicException In case a callback is provided and output has been disabled */ public function start(?callable $callback = null, array $env = []) { if ($this->isRunning()) { throw new RuntimeException('Process is already running.'); } $this->resetProcessData(); $this->starttime = $this->lastOutputTime = \microtime(\true); $this->callback = $this->buildCallback($callback); $this->hasCallback = null !== $callback; $descriptors = $this->getDescriptors(); if ($this->env) { $env += '\\' === \DIRECTORY_SEPARATOR ? \array_diff_ukey($this->env, $env, 'strcasecmp') : $this->env; } $env += '\\' === \DIRECTORY_SEPARATOR ? \array_diff_ukey($this->getDefaultEnv(), $env, 'strcasecmp') : $this->getDefaultEnv(); if (\is_array($commandline = $this->commandline)) { $commandline = \implode(' ', \array_map([$this, 'escapeArgument'], $commandline)); if ('\\' !== \DIRECTORY_SEPARATOR) { // exec is mandatory to deal with sending a signal to the process $commandline = 'exec ' . $commandline; } } else { $commandline = $this->replacePlaceholders($commandline, $env); } if ('\\' === \DIRECTORY_SEPARATOR) { $commandline = $this->prepareWindowsCommandLine($commandline, $env); } elseif (!$this->useFileHandles && $this->isSigchildEnabled()) { // last exit code is output on the fourth pipe and caught to work around --enable-sigchild $descriptors[3] = ['pipe', 'w']; // See https://unix.stackexchange.com/questions/71205/background-process-pipe-input $commandline = '{ (' . $commandline . ') <&3 3<&- 3>/dev/null & } 3<&0;'; $commandline .= 'pid=$!; echo $pid >&3; wait $pid 2>/dev/null; code=$?; echo $code >&3; exit $code'; // Workaround for the bug, when PTS functionality is enabled. // @see : https://bugs.php.net/69442 $ptsWorkaround = \fopen(__FILE__, 'r'); } $envPairs = []; foreach ($env as $k => $v) { if (\false !== $v && \false === \in_array($k, ['argc', 'argv', 'ARGC', 'ARGV'], \true)) { $envPairs[] = $k . '=' . $v; } } if (!\is_dir($this->cwd)) { throw new RuntimeException(\sprintf('The provided cwd "%s" does not exist.', $this->cwd)); } $this->process = @\proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $envPairs, $this->options); if (!\is_resource($this->process)) { throw new RuntimeException('Unable to launch a new process.'); } $this->status = self::STATUS_STARTED; if (isset($descriptors[3])) { $this->fallbackStatus['pid'] = (int) \fgets($this->processPipes->pipes[3]); } if ($this->tty) { return; } $this->updateStatus(\false); $this->checkTimeout(); } /** * Restarts the process. * * Be warned that the process is cloned before being started. * * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * * @return static * * @throws RuntimeException When process can't be launched * @throws RuntimeException When process is already running * * @see start() * * @final */ public function restart(?callable $callback = null, array $env = []) : self { if ($this->isRunning()) { throw new RuntimeException('Process is already running.'); } $process = clone $this; $process->start($callback, $env); return $process; } /** * Waits for the process to terminate. * * The callback receives the type of output (out or err) and some bytes * from the output in real-time while writing the standard input to the process. * It allows to have feedback from the independent process during execution. * * @param callable|null $callback A valid PHP callback * * @return int The exitcode of the process * * @throws ProcessTimedOutException When process timed out * @throws ProcessSignaledException When process stopped after receiving signal * @throws LogicException When process is not yet started */ public function wait(?callable $callback = null) { $this->requireProcessIsStarted(__FUNCTION__); $this->updateStatus(\false); if (null !== $callback) { if (!$this->processPipes->haveReadSupport()) { $this->stop(0); throw new LogicException('Pass the callback to the "Process::start" method or call enableOutput to use a callback with "Process::wait".'); } $this->callback = $this->buildCallback($callback); } do { $this->checkTimeout(); $running = $this->isRunning() && ('\\' === \DIRECTORY_SEPARATOR || $this->processPipes->areOpen()); $this->readPipes($running, '\\' !== \DIRECTORY_SEPARATOR || !$running); } while ($running); while ($this->isRunning()) { $this->checkTimeout(); \usleep(1000); } if ($this->processInformation['signaled'] && $this->processInformation['termsig'] !== $this->latestSignal) { throw new ProcessSignaledException($this); } return $this->exitcode; } /** * Waits until the callback returns true. * * The callback receives the type of output (out or err) and some bytes * from the output in real-time while writing the standard input to the process. * It allows to have feedback from the independent process during execution. * * @throws RuntimeException When process timed out * @throws LogicException When process is not yet started * @throws ProcessTimedOutException In case the timeout was reached */ public function waitUntil(callable $callback) : bool { $this->requireProcessIsStarted(__FUNCTION__); $this->updateStatus(\false); if (!$this->processPipes->haveReadSupport()) { $this->stop(0); throw new LogicException('Pass the callback to the "Process::start" method or call enableOutput to use a callback with "Process::waitUntil".'); } $callback = $this->buildCallback($callback); $ready = \false; while (\true) { $this->checkTimeout(); $running = '\\' === \DIRECTORY_SEPARATOR ? $this->isRunning() : $this->processPipes->areOpen(); $output = $this->processPipes->readAndWrite($running, '\\' !== \DIRECTORY_SEPARATOR || !$running); foreach ($output as $type => $data) { if (3 !== $type) { $ready = $callback(self::STDOUT === $type ? self::OUT : self::ERR, $data) || $ready; } elseif (!isset($this->fallbackStatus['signaled'])) { $this->fallbackStatus['exitcode'] = (int) $data; } } if ($ready) { return \true; } if (!$running) { return \false; } \usleep(1000); } } /** * Returns the Pid (process identifier), if applicable. * * @return int|null The process id if running, null otherwise */ public function getPid() { return $this->isRunning() ? $this->processInformation['pid'] : null; } /** * Sends a POSIX signal to the process. * * @param int $signal A valid POSIX signal (see https://php.net/pcntl.constants) * * @return $this * * @throws LogicException In case the process is not running * @throws RuntimeException In case --enable-sigchild is activated and the process can't be killed * @throws RuntimeException In case of failure */ public function signal(int $signal) { $this->doSignal($signal, \true); return $this; } /** * Disables fetching output and error output from the underlying process. * * @return $this * * @throws RuntimeException In case the process is already running * @throws LogicException if an idle timeout is set */ public function disableOutput() { if ($this->isRunning()) { throw new RuntimeException('Disabling output while the process is running is not possible.'); } if (null !== $this->idleTimeout) { throw new LogicException('Output cannot be disabled while an idle timeout is set.'); } $this->outputDisabled = \true; return $this; } /** * Enables fetching output and error output from the underlying process. * * @return $this * * @throws RuntimeException In case the process is already running */ public function enableOutput() { if ($this->isRunning()) { throw new RuntimeException('Enabling output while the process is running is not possible.'); } $this->outputDisabled = \false; return $this; } /** * Returns true in case the output is disabled, false otherwise. * * @return bool */ public function isOutputDisabled() { return $this->outputDisabled; } /** * Returns the current output of the process (STDOUT). * * @return string * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started */ public function getOutput() { $this->readPipesForOutput(__FUNCTION__); if (\false === ($ret = \stream_get_contents($this->stdout, -1, 0))) { return ''; } return $ret; } /** * Returns the output incrementally. * * In comparison with the getOutput method which always return the whole * output, this one returns the new output since the last call. * * @return string * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started */ public function getIncrementalOutput() { $this->readPipesForOutput(__FUNCTION__); $latest = \stream_get_contents($this->stdout, -1, $this->incrementalOutputOffset); $this->incrementalOutputOffset = \ftell($this->stdout); if (\false === $latest) { return ''; } return $latest; } /** * Returns an iterator to the output of the process, with the output type as keys (Process::OUT/ERR). * * @param int $flags A bit field of Process::ITER_* flags * * @return \Generator * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started */ #[\ReturnTypeWillChange] public function getIterator(int $flags = 0) { $this->readPipesForOutput(__FUNCTION__, \false); $clearOutput = !(self::ITER_KEEP_OUTPUT & $flags); $blocking = !(self::ITER_NON_BLOCKING & $flags); $yieldOut = !(self::ITER_SKIP_OUT & $flags); $yieldErr = !(self::ITER_SKIP_ERR & $flags); while (null !== $this->callback || $yieldOut && !\feof($this->stdout) || $yieldErr && !\feof($this->stderr)) { if ($yieldOut) { $out = \stream_get_contents($this->stdout, -1, $this->incrementalOutputOffset); if (isset($out[0])) { if ($clearOutput) { $this->clearOutput(); } else { $this->incrementalOutputOffset = \ftell($this->stdout); } (yield self::OUT => $out); } } if ($yieldErr) { $err = \stream_get_contents($this->stderr, -1, $this->incrementalErrorOutputOffset); if (isset($err[0])) { if ($clearOutput) { $this->clearErrorOutput(); } else { $this->incrementalErrorOutputOffset = \ftell($this->stderr); } (yield self::ERR => $err); } } if (!$blocking && !isset($out[0]) && !isset($err[0])) { (yield self::OUT => ''); } $this->checkTimeout(); $this->readPipesForOutput(__FUNCTION__, $blocking); } } /** * Clears the process output. * * @return $this */ public function clearOutput() { \ftruncate($this->stdout, 0); \fseek($this->stdout, 0); $this->incrementalOutputOffset = 0; return $this; } /** * Returns the current error output of the process (STDERR). * * @return string * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started */ public function getErrorOutput() { $this->readPipesForOutput(__FUNCTION__); if (\false === ($ret = \stream_get_contents($this->stderr, -1, 0))) { return ''; } return $ret; } /** * Returns the errorOutput incrementally. * * In comparison with the getErrorOutput method which always return the * whole error output, this one returns the new error output since the last * call. * * @return string * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started */ public function getIncrementalErrorOutput() { $this->readPipesForOutput(__FUNCTION__); $latest = \stream_get_contents($this->stderr, -1, $this->incrementalErrorOutputOffset); $this->incrementalErrorOutputOffset = \ftell($this->stderr); if (\false === $latest) { return ''; } return $latest; } /** * Clears the process output. * * @return $this */ public function clearErrorOutput() { \ftruncate($this->stderr, 0); \fseek($this->stderr, 0); $this->incrementalErrorOutputOffset = 0; return $this; } /** * Returns the exit code returned by the process. * * @return int|null The exit status code, null if the Process is not terminated */ public function getExitCode() { $this->updateStatus(\false); return $this->exitcode; } /** * Returns a string representation for the exit code returned by the process. * * This method relies on the Unix exit code status standardization * and might not be relevant for other operating systems. * * @return string|null A string representation for the exit status code, null if the Process is not terminated * * @see http://tldp.org/LDP/abs/html/exitcodes.html * @see http://en.wikipedia.org/wiki/Unix_signal */ public function getExitCodeText() { if (null === ($exitcode = $this->getExitCode())) { return null; } return self::$exitCodes[$exitcode] ?? 'Unknown error'; } /** * Checks if the process ended successfully. * * @return bool */ public function isSuccessful() { return 0 === $this->getExitCode(); } /** * Returns true if the child process has been terminated by an uncaught signal. * * It always returns false on Windows. * * @return bool * * @throws LogicException In case the process is not terminated */ public function hasBeenSignaled() { $this->requireProcessIsTerminated(__FUNCTION__); return $this->processInformation['signaled']; } /** * Returns the number of the signal that caused the child process to terminate its execution. * * It is only meaningful if hasBeenSignaled() returns true. * * @return int * * @throws RuntimeException In case --enable-sigchild is activated * @throws LogicException In case the process is not terminated */ public function getTermSignal() { $this->requireProcessIsTerminated(__FUNCTION__); if ($this->isSigchildEnabled() && -1 === $this->processInformation['termsig']) { throw new RuntimeException('This PHP has been compiled with --enable-sigchild. Term signal cannot be retrieved.'); } return $this->processInformation['termsig']; } /** * Returns true if the child process has been stopped by a signal. * * It always returns false on Windows. * * @return bool * * @throws LogicException In case the process is not terminated */ public function hasBeenStopped() { $this->requireProcessIsTerminated(__FUNCTION__); return $this->processInformation['stopped']; } /** * Returns the number of the signal that caused the child process to stop its execution. * * It is only meaningful if hasBeenStopped() returns true. * * @return int * * @throws LogicException In case the process is not terminated */ public function getStopSignal() { $this->requireProcessIsTerminated(__FUNCTION__); return $this->processInformation['stopsig']; } /** * Checks if the process is currently running. * * @return bool */ public function isRunning() { if (self::STATUS_STARTED !== $this->status) { return \false; } $this->updateStatus(\false); return $this->processInformation['running']; } /** * Checks if the process has been started with no regard to the current state. * * @return bool */ public function isStarted() { return self::STATUS_READY != $this->status; } /** * Checks if the process is terminated. * * @return bool */ public function isTerminated() { $this->updateStatus(\false); return self::STATUS_TERMINATED == $this->status; } /** * Gets the process status. * * The status is one of: ready, started, terminated. * * @return string */ public function getStatus() { $this->updateStatus(\false); return $this->status; } /** * Stops the process. * * @param int|float $timeout The timeout in seconds * @param int|null $signal A POSIX signal to send in case the process has not stop at timeout, default is SIGKILL (9) * * @return int|null The exit-code of the process or null if it's not running */ public function stop(float $timeout = 10, ?int $signal = null) { $timeoutMicro = \microtime(\true) + $timeout; if ($this->isRunning()) { // given SIGTERM may not be defined and that "proc_terminate" uses the constant value and not the constant itself, we use the same here $this->doSignal(15, \false); do { \usleep(1000); } while ($this->isRunning() && \microtime(\true) < $timeoutMicro); if ($this->isRunning()) { // Avoid exception here: process is supposed to be running, but it might have stopped just // after this line. In any case, let's silently discard the error, we cannot do anything. $this->doSignal($signal ?: 9, \false); } } if ($this->isRunning()) { if (isset($this->fallbackStatus['pid'])) { unset($this->fallbackStatus['pid']); return $this->stop(0, $signal); } $this->close(); } return $this->exitcode; } /** * Adds a line to the STDOUT stream. * * @internal */ public function addOutput(string $line) { $this->lastOutputTime = \microtime(\true); \fseek($this->stdout, 0, \SEEK_END); \fwrite($this->stdout, $line); \fseek($this->stdout, $this->incrementalOutputOffset); } /** * Adds a line to the STDERR stream. * * @internal */ public function addErrorOutput(string $line) { $this->lastOutputTime = \microtime(\true); \fseek($this->stderr, 0, \SEEK_END); \fwrite($this->stderr, $line); \fseek($this->stderr, $this->incrementalErrorOutputOffset); } /** * Gets the last output time in seconds. */ public function getLastOutputTime() : ?float { return $this->lastOutputTime; } /** * Gets the command line to be executed. * * @return string */ public function getCommandLine() { return \is_array($this->commandline) ? \implode(' ', \array_map([$this, 'escapeArgument'], $this->commandline)) : $this->commandline; } /** * Gets the process timeout in seconds (max. runtime). * * @return float|null */ public function getTimeout() { return $this->timeout; } /** * Gets the process idle timeout in seconds (max. time since last output). * * @return float|null */ public function getIdleTimeout() { return $this->idleTimeout; } /** * Sets the process timeout (max. runtime) in seconds. * * To disable the timeout, set this value to null. * * @return $this * * @throws InvalidArgumentException if the timeout is negative */ public function setTimeout(?float $timeout) { $this->timeout = $this->validateTimeout($timeout); return $this; } /** * Sets the process idle timeout (max. time since last output) in seconds. * * To disable the timeout, set this value to null. * * @return $this * * @throws LogicException if the output is disabled * @throws InvalidArgumentException if the timeout is negative */ public function setIdleTimeout(?float $timeout) { if (null !== $timeout && $this->outputDisabled) { throw new LogicException('Idle timeout cannot be set while the output is disabled.'); } $this->idleTimeout = $this->validateTimeout($timeout); return $this; } /** * Enables or disables the TTY mode. * * @return $this * * @throws RuntimeException In case the TTY mode is not supported */ public function setTty(bool $tty) { if ('\\' === \DIRECTORY_SEPARATOR && $tty) { throw new RuntimeException('TTY mode is not supported on Windows platform.'); } if ($tty && !self::isTtySupported()) { throw new RuntimeException('TTY mode requires /dev/tty to be read/writable.'); } $this->tty = $tty; return $this; } /** * Checks if the TTY mode is enabled. * * @return bool */ public function isTty() { return $this->tty; } /** * Sets PTY mode. * * @return $this */ public function setPty(bool $bool) { $this->pty = $bool; return $this; } /** * Returns PTY state. * * @return bool */ public function isPty() { return $this->pty; } /** * Gets the working directory. * * @return string|null */ public function getWorkingDirectory() { if (null === $this->cwd) { // getcwd() will return false if any one of the parent directories does not have // the readable or search mode set, even if the current directory does return \getcwd() ?: null; } return $this->cwd; } /** * Sets the current working directory. * * @return $this */ public function setWorkingDirectory(string $cwd) { $this->cwd = $cwd; return $this; } /** * Gets the environment variables. * * @return array */ public function getEnv() { return $this->env; } /** * Sets the environment variables. * * @param array $env The new environment variables * * @return $this */ public function setEnv(array $env) { $this->env = $env; return $this; } /** * Gets the Process input. * * @return resource|string|\Iterator|null */ public function getInput() { return $this->input; } /** * Sets the input. * * This content will be passed to the underlying process standard input. * * @param string|int|float|bool|resource|\Traversable|null $input The content * * @return $this * * @throws LogicException In case the process is running */ public function setInput($input) { if ($this->isRunning()) { throw new LogicException('Input cannot be set while the process is running.'); } $this->input = ProcessUtils::validateInput(__METHOD__, $input); return $this; } /** * Performs a check between the timeout definition and the time the process started. * * In case you run a background process (with the start method), you should * trigger this method regularly to ensure the process timeout * * @throws ProcessTimedOutException In case the timeout was reached */ public function checkTimeout() { if (self::STATUS_STARTED !== $this->status) { return; } if (null !== $this->timeout && $this->timeout < \microtime(\true) - $this->starttime) { $this->stop(0); throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_GENERAL); } if (null !== $this->idleTimeout && $this->idleTimeout < \microtime(\true) - $this->lastOutputTime) { $this->stop(0); throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_IDLE); } } /** * @throws LogicException in case process is not started */ public function getStartTime() : float { if (!$this->isStarted()) { throw new LogicException('Start time is only available after process start.'); } return $this->starttime; } /** * Defines options to pass to the underlying proc_open(). * * @see https://php.net/proc_open for the options supported by PHP. * * Enabling the "create_new_console" option allows a subprocess to continue * to run after the main process exited, on both Windows and *nix */ public function setOptions(array $options) { if ($this->isRunning()) { throw new RuntimeException('Setting options while the process is running is not possible.'); } $defaultOptions = $this->options; $existingOptions = ['blocking_pipes', 'create_process_group', 'create_new_console']; foreach ($options as $key => $value) { if (!\in_array($key, $existingOptions)) { $this->options = $defaultOptions; throw new LogicException(\sprintf('Invalid option "%s" passed to "%s()". Supported options are "%s".', $key, __METHOD__, \implode('", "', $existingOptions))); } $this->options[$key] = $value; } } /** * Returns whether TTY is supported on the current operating system. */ public static function isTtySupported() : bool { static $isTtySupported; if (null === $isTtySupported) { $isTtySupported = (bool) @\proc_open('echo 1 >/dev/null', [['file', '/dev/tty', 'r'], ['file', '/dev/tty', 'w'], ['file', '/dev/tty', 'w']], $pipes); } return $isTtySupported; } /** * Returns whether PTY is supported on the current operating system. * * @return bool */ public static function isPtySupported() { static $result; if (null !== $result) { return $result; } if ('\\' === \DIRECTORY_SEPARATOR) { return $result = \false; } return $result = (bool) @\proc_open('echo 1 >/dev/null', [['pty'], ['pty'], ['pty']], $pipes); } /** * Creates the descriptors needed by the proc_open. */ private function getDescriptors() : array { if ($this->input instanceof \Iterator) { $this->input->rewind(); } if ('\\' === \DIRECTORY_SEPARATOR) { $this->processPipes = new WindowsPipes($this->input, !$this->outputDisabled || $this->hasCallback); } else { $this->processPipes = new UnixPipes($this->isTty(), $this->isPty(), $this->input, !$this->outputDisabled || $this->hasCallback); } return $this->processPipes->getDescriptors(); } /** * Builds up the callback used by wait(). * * The callbacks adds all occurred output to the specific buffer and calls * the user callback (if present) with the received output. * * @param callable|null $callback The user defined PHP callback * * @return \Closure */ protected function buildCallback(?callable $callback = null) { if ($this->outputDisabled) { return function ($type, $data) use($callback) : bool { return null !== $callback && $callback($type, $data); }; } $out = self::OUT; return function ($type, $data) use($callback, $out) : bool { if ($out == $type) { $this->addOutput($data); } else { $this->addErrorOutput($data); } return null !== $callback && $callback($type, $data); }; } /** * Updates the status of the process, reads pipes. * * @param bool $blocking Whether to use a blocking read call */ protected function updateStatus(bool $blocking) { if (self::STATUS_STARTED !== $this->status) { return; } $this->processInformation = \proc_get_status($this->process); $running = $this->processInformation['running']; // In PHP < 8.3, "proc_get_status" only returns the correct exit status on the first call. // Subsequent calls return -1 as the process is discarded. This workaround caches the first // retrieved exit status for consistent results in later calls, mimicking PHP 8.3 behavior. if (\PHP_VERSION_ID < 80300) { if (!isset($this->cachedExitCode) && !$running && -1 !== $this->processInformation['exitcode']) { $this->cachedExitCode = $this->processInformation['exitcode']; } if (isset($this->cachedExitCode) && !$running && -1 === $this->processInformation['exitcode']) { $this->processInformation['exitcode'] = $this->cachedExitCode; } } $this->readPipes($running && $blocking, '\\' !== \DIRECTORY_SEPARATOR || !$running); if ($this->fallbackStatus && $this->isSigchildEnabled()) { $this->processInformation = $this->fallbackStatus + $this->processInformation; } if (!$running) { $this->close(); } } /** * Returns whether PHP has been compiled with the '--enable-sigchild' option or not. * * @return bool */ protected function isSigchildEnabled() { if (null !== self::$sigchild) { return self::$sigchild; } if (!\function_exists('phpinfo')) { return self::$sigchild = \false; } \ob_start(); \phpinfo(\INFO_GENERAL); return self::$sigchild = \str_contains(\ob_get_clean(), '--enable-sigchild'); } /** * Reads pipes for the freshest output. * * @param string $caller The name of the method that needs fresh outputs * @param bool $blocking Whether to use blocking calls or not * * @throws LogicException in case output has been disabled or process is not started */ private function readPipesForOutput(string $caller, bool $blocking = \false) { if ($this->outputDisabled) { throw new LogicException('Output has been disabled.'); } $this->requireProcessIsStarted($caller); $this->updateStatus($blocking); } /** * Validates and returns the filtered timeout. * * @throws InvalidArgumentException if the given timeout is a negative number */ private function validateTimeout(?float $timeout) : ?float { $timeout = (float) $timeout; if (0.0 === $timeout) { $timeout = null; } elseif ($timeout < 0) { throw new InvalidArgumentException('The timeout value must be a valid positive integer or float number.'); } return $timeout; } /** * Reads pipes, executes callback. * * @param bool $blocking Whether to use blocking calls or not * @param bool $close Whether to close file handles or not */ private function readPipes(bool $blocking, bool $close) { $result = $this->processPipes->readAndWrite($blocking, $close); $callback = $this->callback; foreach ($result as $type => $data) { if (3 !== $type) { $callback(self::STDOUT === $type ? self::OUT : self::ERR, $data); } elseif (!isset($this->fallbackStatus['signaled'])) { $this->fallbackStatus['exitcode'] = (int) $data; } } } /** * Closes process resource, closes file handles, sets the exitcode. * * @return int The exitcode */ private function close() : int { $this->processPipes->close(); if (\is_resource($this->process)) { \proc_close($this->process); } $this->exitcode = $this->processInformation['exitcode']; $this->status = self::STATUS_TERMINATED; if (-1 === $this->exitcode) { if ($this->processInformation['signaled'] && 0 < $this->processInformation['termsig']) { // if process has been signaled, no exitcode but a valid termsig, apply Unix convention $this->exitcode = 128 + $this->processInformation['termsig']; } elseif ($this->isSigchildEnabled()) { $this->processInformation['signaled'] = \true; $this->processInformation['termsig'] = -1; } } // Free memory from self-reference callback created by buildCallback // Doing so in other contexts like __destruct or by garbage collector is ineffective // Now pipes are closed, so the callback is no longer necessary $this->callback = null; return $this->exitcode; } /** * Resets data related to the latest run of the process. */ private function resetProcessData() { $this->starttime = null; $this->callback = null; $this->exitcode = null; $this->fallbackStatus = []; $this->processInformation = null; $this->stdout = \fopen('php://temp/maxmemory:' . 1024 * 1024, 'w+'); $this->stderr = \fopen('php://temp/maxmemory:' . 1024 * 1024, 'w+'); $this->process = null; $this->latestSignal = null; $this->status = self::STATUS_READY; $this->incrementalOutputOffset = 0; $this->incrementalErrorOutputOffset = 0; } /** * Sends a POSIX signal to the process. * * @param int $signal A valid POSIX signal (see https://php.net/pcntl.constants) * @param bool $throwException Whether to throw exception in case signal failed * * @throws LogicException In case the process is not running * @throws RuntimeException In case --enable-sigchild is activated and the process can't be killed * @throws RuntimeException In case of failure */ private function doSignal(int $signal, bool $throwException) : bool { if (null === ($pid = $this->getPid())) { if ($throwException) { throw new LogicException('Cannot send signal on a non running process.'); } return \false; } if ('\\' === \DIRECTORY_SEPARATOR) { \exec(\sprintf('taskkill /F /T /PID %d 2>&1', $pid), $output, $exitCode); if ($exitCode && $this->isRunning()) { if ($throwException) { throw new RuntimeException(\sprintf('Unable to kill the process (%s).', \implode(' ', $output))); } return \false; } } else { if (!$this->isSigchildEnabled()) { $ok = @\proc_terminate($this->process, $signal); } elseif (\function_exists('posix_kill')) { $ok = @\posix_kill($pid, $signal); } elseif ($ok = \proc_open(\sprintf('kill -%d %d', $signal, $pid), [2 => ['pipe', 'w']], $pipes)) { $ok = \false === \fgets($pipes[2]); } if (!$ok) { if ($throwException) { throw new RuntimeException(\sprintf('Error while sending signal "%s".', $signal)); } return \false; } } $this->latestSignal = $signal; $this->fallbackStatus['signaled'] = \true; $this->fallbackStatus['exitcode'] = -1; $this->fallbackStatus['termsig'] = $this->latestSignal; return \true; } private function prepareWindowsCommandLine(string $cmd, array &$env) : string { $uid = \uniqid('', \true); $varCount = 0; $varCache = []; $cmd = \preg_replace_callback('/"(?:( [^"%!^]*+ (?: (?: !LF! | "(?:\\^[%!^])?+" ) [^"%!^]*+ )++ ) | [^"]*+ )"/x', function ($m) use(&$env, &$varCache, &$varCount, $uid) { if (!isset($m[1])) { return $m[0]; } if (isset($varCache[$m[0]])) { return $varCache[$m[0]]; } if (\str_contains($value = $m[1], "\x00")) { $value = \str_replace("\x00", '?', $value); } if (\false === \strpbrk($value, "\"%!\n")) { return '"' . $value . '"'; } $value = \str_replace(['!LF!', '"^!"', '"^%"', '"^^"', '""'], ["\n", '!', '%', '^', '"'], $value); $value = '"' . \preg_replace('/(\\\\*)"/', '$1$1\\"', $value) . '"'; $var = $uid . ++$varCount; $env[$var] = $value; return $varCache[$m[0]] = '!' . $var . '!'; }, $cmd); $cmd = 'cmd /V:ON /E:ON /D /C (' . \str_replace("\n", ' ', $cmd) . ')'; foreach ($this->processPipes->getFiles() as $offset => $filename) { $cmd .= ' ' . $offset . '>"' . $filename . '"'; } return $cmd; } /** * Ensures the process is running or terminated, throws a LogicException if the process has a not started. * * @throws LogicException if the process has not run */ private function requireProcessIsStarted(string $functionName) { if (!$this->isStarted()) { throw new LogicException(\sprintf('Process must be started before calling "%s()".', $functionName)); } } /** * Ensures the process is terminated, throws a LogicException if the process has a status different than "terminated". * * @throws LogicException if the process is not yet terminated */ private function requireProcessIsTerminated(string $functionName) { if (!$this->isTerminated()) { throw new LogicException(\sprintf('Process must be terminated before calling "%s()".', $functionName)); } } /** * Escapes a string to be used as a shell argument. */ private function escapeArgument(?string $argument) : string { if ('' === $argument || null === $argument) { return '""'; } if ('\\' !== \DIRECTORY_SEPARATOR) { return "'" . \str_replace("'", "'\\''", $argument) . "'"; } if (\str_contains($argument, "\x00")) { $argument = \str_replace("\x00", '?', $argument); } if (!\preg_match('/[\\/()%!^"<>&|\\s]/', $argument)) { return $argument; } $argument = \preg_replace('/(\\\\+)$/', '$1$1', $argument); return '"' . \str_replace(['"', '^', '%', '!', "\n"], ['""', '"^^"', '"^%"', '"^!"', '!LF!'], $argument) . '"'; } private function replacePlaceholders(string $commandline, array $env) { return \preg_replace_callback('/"\\$\\{:([_a-zA-Z]++[_a-zA-Z0-9]*+)\\}"/', function ($matches) use($commandline, $env) { if (!isset($env[$matches[1]]) || \false === $env[$matches[1]]) { throw new InvalidArgumentException(\sprintf('Command line is missing a value for parameter "%s": ', $matches[1]) . $commandline); } return $this->escapeArgument($env[$matches[1]]); }, $commandline); } private function getDefaultEnv() : array { $env = \getenv(); $env = ('\\' === \DIRECTORY_SEPARATOR ? \array_intersect_ukey($env, $_SERVER, 'strcasecmp') : \array_intersect_key($env, $_SERVER)) ?: $env; return $_ENV + ('\\' === \DIRECTORY_SEPARATOR ? \array_diff_ukey($env, $_ENV, 'strcasecmp') : $env); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process; /** * An executable finder specifically designed for the PHP executable. * * @author Fabien Potencier * @author Johannes M. Schmitt */ class PhpExecutableFinder { private $executableFinder; public function __construct() { $this->executableFinder = new ExecutableFinder(); } /** * Finds The PHP executable. * * @return string|false */ public function find(bool $includeArgs = \true) { if ($php = \getenv('PHP_BINARY')) { if (!\is_executable($php)) { $command = '\\' === \DIRECTORY_SEPARATOR ? 'where' : 'command -v --'; if ($php = \strtok(\exec($command . ' ' . \escapeshellarg($php)), \PHP_EOL)) { if (!\is_executable($php)) { return \false; } } else { return \false; } } if (@\is_dir($php)) { return \false; } return $php; } $args = $this->findArguments(); $args = $includeArgs && $args ? ' ' . \implode(' ', $args) : ''; // PHP_BINARY return the current sapi executable if (\PHP_BINARY && \in_array(\PHP_SAPI, ['cli', 'cli-server', 'phpdbg'], \true)) { return \PHP_BINARY . $args; } if ($php = \getenv('PHP_PATH')) { if (!@\is_executable($php) || @\is_dir($php)) { return \false; } return $php; } if ($php = \getenv('PHP_PEAR_PHP_BIN')) { if (@\is_executable($php) && !@\is_dir($php)) { return $php; } } if (@\is_executable($php = \PHP_BINDIR . ('\\' === \DIRECTORY_SEPARATOR ? '\\php.exe' : '/php')) && !@\is_dir($php)) { return $php; } $dirs = [\PHP_BINDIR]; if ('\\' === \DIRECTORY_SEPARATOR) { $dirs[] = 'C:\\xampp\\php\\'; } return $this->executableFinder->find('php', \false, $dirs); } /** * Finds the PHP executable arguments. * * @return array */ public function findArguments() { $arguments = []; if ('phpdbg' === \PHP_SAPI) { $arguments[] = '-qrr'; } return $arguments; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process; /** * Generic executable finder. * * @author Fabien Potencier * @author Johannes M. Schmitt */ class ExecutableFinder { private $suffixes = ['.exe', '.bat', '.cmd', '.com']; /** * Replaces default suffixes of executable. */ public function setSuffixes(array $suffixes) { $this->suffixes = $suffixes; } /** * Adds new possible suffix to check for executable. */ public function addSuffix(string $suffix) { $this->suffixes[] = $suffix; } /** * Finds an executable by name. * * @param string $name The executable name (without the extension) * @param string|null $default The default to return if no executable is found * @param array $extraDirs Additional dirs to check into * * @return string|null */ public function find(string $name, ?string $default = null, array $extraDirs = []) { if (\ini_get('open_basedir')) { $searchPath = \array_merge(\explode(\PATH_SEPARATOR, \ini_get('open_basedir')), $extraDirs); $dirs = []; foreach ($searchPath as $path) { // Silencing against https://bugs.php.net/69240 if (@\is_dir($path)) { $dirs[] = $path; } else { if (\basename($path) == $name && @\is_executable($path)) { return $path; } } } } else { $dirs = \array_merge(\explode(\PATH_SEPARATOR, \getenv('PATH') ?: \getenv('Path')), $extraDirs); } $suffixes = ['']; if ('\\' === \DIRECTORY_SEPARATOR) { $pathExt = \getenv('PATHEXT'); $suffixes = \array_merge($pathExt ? \explode(\PATH_SEPARATOR, $pathExt) : $this->suffixes, $suffixes); } foreach ($suffixes as $suffix) { foreach ($dirs as $dir) { if (@\is_file($file = $dir . \DIRECTORY_SEPARATOR . $name . $suffix) && ('\\' === \DIRECTORY_SEPARATOR || @\is_executable($file))) { return $file; } } } return $default; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process\Exception; /** * Marker Interface for the Process Component. * * @author Johannes M. Schmitt */ interface ExceptionInterface extends \Throwable { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process\Exception; /** * RuntimeException for the Process Component. * * @author Johannes M. Schmitt */ class RuntimeException extends \RuntimeException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process\Exception; use _PHPStan_b22655c3f\Symfony\Component\Process\Process; /** * Exception for failed processes. * * @author Johannes M. Schmitt */ class ProcessFailedException extends RuntimeException { private $process; public function __construct(Process $process) { if ($process->isSuccessful()) { throw new InvalidArgumentException('Expected a failed process, but the given process was successful.'); } $error = \sprintf('The command "%s" failed.' . "\n\nExit Code: %s(%s)\n\nWorking directory: %s", $process->getCommandLine(), $process->getExitCode(), $process->getExitCodeText(), $process->getWorkingDirectory()); if (!$process->isOutputDisabled()) { $error .= \sprintf("\n\nOutput:\n================\n%s\n\nError Output:\n================\n%s", $process->getOutput(), $process->getErrorOutput()); } parent::__construct($error); $this->process = $process; } public function getProcess() { return $this->process; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process\Exception; use _PHPStan_b22655c3f\Symfony\Component\Process\Process; /** * Exception that is thrown when a process times out. * * @author Johannes M. Schmitt */ class ProcessTimedOutException extends RuntimeException { public const TYPE_GENERAL = 1; public const TYPE_IDLE = 2; private $process; private $timeoutType; public function __construct(Process $process, int $timeoutType) { $this->process = $process; $this->timeoutType = $timeoutType; parent::__construct(\sprintf('The process "%s" exceeded the timeout of %s seconds.', $process->getCommandLine(), $this->getExceededTimeout())); } public function getProcess() { return $this->process; } public function isGeneralTimeout() { return self::TYPE_GENERAL === $this->timeoutType; } public function isIdleTimeout() { return self::TYPE_IDLE === $this->timeoutType; } public function getExceededTimeout() { switch ($this->timeoutType) { case self::TYPE_GENERAL: return $this->process->getTimeout(); case self::TYPE_IDLE: return $this->process->getIdleTimeout(); default: throw new \LogicException(\sprintf('Unknown timeout type "%d".', $this->timeoutType)); } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process\Exception; /** * LogicException for the Process Component. * * @author Romain Neutron */ class LogicException extends \LogicException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process\Exception; use _PHPStan_b22655c3f\Symfony\Component\Process\Process; /** * Exception that is thrown when a process has been signaled. * * @author Sullivan Senechal */ final class ProcessSignaledException extends RuntimeException { private $process; public function __construct(Process $process) { $this->process = $process; parent::__construct(\sprintf('The process has been signaled with signal "%s".', $process->getTermSignal())); } public function getProcess() : Process { return $this->process; } public function getSignal() : int { return $this->getProcess()->getTermSignal(); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process\Exception; /** * InvalidArgumentException for the Process Component. * * @author Romain Neutron */ class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process\Pipes; use _PHPStan_b22655c3f\Symfony\Component\Process\Exception\InvalidArgumentException; /** * @author Romain Neutron * * @internal */ abstract class AbstractPipes implements PipesInterface { public $pipes = []; private $inputBuffer = ''; private $input; private $blocked = \true; private $lastError; /** * @param resource|string|int|float|bool|\Iterator|null $input */ public function __construct($input) { if (\is_resource($input) || $input instanceof \Iterator) { $this->input = $input; } elseif (\is_string($input)) { $this->inputBuffer = $input; } else { $this->inputBuffer = (string) $input; } } /** * {@inheritdoc} */ public function close() { foreach ($this->pipes as $pipe) { if (\is_resource($pipe)) { \fclose($pipe); } } $this->pipes = []; } /** * Returns true if a system call has been interrupted. */ protected function hasSystemCallBeenInterrupted() : bool { $lastError = $this->lastError; $this->lastError = null; // stream_select returns false when the `select` system call is interrupted by an incoming signal return null !== $lastError && \false !== \stripos($lastError, 'interrupted system call'); } /** * Unblocks streams. */ protected function unblock() { if (!$this->blocked) { return; } foreach ($this->pipes as $pipe) { \stream_set_blocking($pipe, 0); } if (\is_resource($this->input)) { \stream_set_blocking($this->input, 0); } $this->blocked = \false; } /** * Writes input to stdin. * * @throws InvalidArgumentException When an input iterator yields a non supported value */ protected function write() : ?array { if (!isset($this->pipes[0])) { return null; } $input = $this->input; if ($input instanceof \Iterator) { if (!$input->valid()) { $input = null; } elseif (\is_resource($input = $input->current())) { \stream_set_blocking($input, 0); } elseif (!isset($this->inputBuffer[0])) { if (!\is_string($input)) { if (!\is_scalar($input)) { throw new InvalidArgumentException(\sprintf('"%s" yielded a value of type "%s", but only scalars and stream resources are supported.', \get_debug_type($this->input), \get_debug_type($input))); } $input = (string) $input; } $this->inputBuffer = $input; $this->input->next(); $input = null; } else { $input = null; } } $r = $e = []; $w = [$this->pipes[0]]; // let's have a look if something changed in streams if (\false === @\stream_select($r, $w, $e, 0, 0)) { return null; } foreach ($w as $stdin) { if (isset($this->inputBuffer[0])) { $written = \fwrite($stdin, $this->inputBuffer); $this->inputBuffer = \substr($this->inputBuffer, $written); if (isset($this->inputBuffer[0])) { return [$this->pipes[0]]; } } if ($input) { while (\true) { $data = \fread($input, self::CHUNK_SIZE); if (!isset($data[0])) { break; } $written = \fwrite($stdin, $data); $data = \substr($data, $written); if (isset($data[0])) { $this->inputBuffer = $data; return [$this->pipes[0]]; } } if (\feof($input)) { if ($this->input instanceof \Iterator) { $this->input->next(); } else { $this->input = null; } } } } // no input to read on resource, buffer is empty if (!isset($this->inputBuffer[0]) && !($this->input instanceof \Iterator ? $this->input->valid() : $this->input)) { $this->input = null; \fclose($this->pipes[0]); unset($this->pipes[0]); } elseif (!$w) { return [$this->pipes[0]]; } return null; } /** * @internal */ public function handleError(int $type, string $msg) { $this->lastError = $msg; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process\Pipes; use _PHPStan_b22655c3f\Symfony\Component\Process\Process; /** * UnixPipes implementation uses unix pipes as handles. * * @author Romain Neutron * * @internal */ class UnixPipes extends AbstractPipes { private $ttyMode; private $ptyMode; private $haveReadSupport; public function __construct(?bool $ttyMode, bool $ptyMode, $input, bool $haveReadSupport) { $this->ttyMode = $ttyMode; $this->ptyMode = $ptyMode; $this->haveReadSupport = $haveReadSupport; parent::__construct($input); } public function __sleep() : array { throw new \BadMethodCallException('Cannot serialize ' . __CLASS__); } public function __wakeup() { throw new \BadMethodCallException('Cannot unserialize ' . __CLASS__); } public function __destruct() { $this->close(); } /** * {@inheritdoc} */ public function getDescriptors() : array { if (!$this->haveReadSupport) { $nullstream = \fopen('/dev/null', 'c'); return [['pipe', 'r'], $nullstream, $nullstream]; } if ($this->ttyMode) { return [['file', '/dev/tty', 'r'], ['file', '/dev/tty', 'w'], ['file', '/dev/tty', 'w']]; } if ($this->ptyMode && Process::isPtySupported()) { return [['pty'], ['pty'], ['pty']]; } return [ ['pipe', 'r'], ['pipe', 'w'], // stdout ['pipe', 'w'], ]; } /** * {@inheritdoc} */ public function getFiles() : array { return []; } /** * {@inheritdoc} */ public function readAndWrite(bool $blocking, bool $close = \false) : array { $this->unblock(); $w = $this->write(); $read = $e = []; $r = $this->pipes; unset($r[0]); // let's have a look if something changed in streams \set_error_handler([$this, 'handleError']); if (($r || $w) && \false === \stream_select($r, $w, $e, 0, $blocking ? Process::TIMEOUT_PRECISION * 1000000.0 : 0)) { \restore_error_handler(); // if a system call has been interrupted, forget about it, let's try again // otherwise, an error occurred, let's reset pipes if (!$this->hasSystemCallBeenInterrupted()) { $this->pipes = []; } return $read; } \restore_error_handler(); foreach ($r as $pipe) { // prior PHP 5.4 the array passed to stream_select is modified and // lose key association, we have to find back the key $read[$type = \array_search($pipe, $this->pipes, \true)] = ''; do { $data = @\fread($pipe, self::CHUNK_SIZE); $read[$type] .= $data; } while (isset($data[0]) && ($close || isset($data[self::CHUNK_SIZE - 1]))); if (!isset($read[$type][0])) { unset($read[$type]); } if ($close && \feof($pipe)) { \fclose($pipe); unset($this->pipes[$type]); } } return $read; } /** * {@inheritdoc} */ public function haveReadSupport() : bool { return $this->haveReadSupport; } /** * {@inheritdoc} */ public function areOpen() : bool { return (bool) $this->pipes; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process\Pipes; /** * PipesInterface manages descriptors and pipes for the use of proc_open. * * @author Romain Neutron * * @internal */ interface PipesInterface { public const CHUNK_SIZE = 16384; /** * Returns an array of descriptors for the use of proc_open. */ public function getDescriptors() : array; /** * Returns an array of filenames indexed by their related stream in case these pipes use temporary files. * * @return string[] */ public function getFiles() : array; /** * Reads data in file handles and pipes. * * @param bool $blocking Whether to use blocking calls or not * @param bool $close Whether to close pipes if they've reached EOF * * @return string[] An array of read data indexed by their fd */ public function readAndWrite(bool $blocking, bool $close = \false) : array; /** * Returns if the current state has open file handles or pipes. */ public function areOpen() : bool; /** * Returns if pipes are able to read output. */ public function haveReadSupport() : bool; /** * Closes file handles and pipes. */ public function close(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Process\Pipes; use _PHPStan_b22655c3f\Symfony\Component\Process\Exception\RuntimeException; use _PHPStan_b22655c3f\Symfony\Component\Process\Process; /** * WindowsPipes implementation uses temporary files as handles. * * @see https://bugs.php.net/51800 * @see https://bugs.php.net/65650 * * @author Romain Neutron * * @internal */ class WindowsPipes extends AbstractPipes { private $files = []; private $fileHandles = []; private $lockHandles = []; private $readBytes = [Process::STDOUT => 0, Process::STDERR => 0]; private $haveReadSupport; public function __construct($input, bool $haveReadSupport) { $this->haveReadSupport = $haveReadSupport; if ($this->haveReadSupport) { // Fix for PHP bug #51800: reading from STDOUT pipe hangs forever on Windows if the output is too big. // Workaround for this problem is to use temporary files instead of pipes on Windows platform. // // @see https://bugs.php.net/51800 $pipes = [Process::STDOUT => Process::OUT, Process::STDERR => Process::ERR]; $tmpDir = \sys_get_temp_dir(); $lastError = 'unknown reason'; \set_error_handler(function ($type, $msg) use(&$lastError) { $lastError = $msg; }); for ($i = 0;; ++$i) { foreach ($pipes as $pipe => $name) { $file = \sprintf('%s\\sf_proc_%02X.%s', $tmpDir, $i, $name); if (!($h = \fopen($file . '.lock', 'w'))) { if (\file_exists($file . '.lock')) { continue 2; } \restore_error_handler(); throw new RuntimeException('A temporary file could not be opened to write the process output: ' . $lastError); } if (!\flock($h, \LOCK_EX | \LOCK_NB)) { continue 2; } if (isset($this->lockHandles[$pipe])) { \flock($this->lockHandles[$pipe], \LOCK_UN); \fclose($this->lockHandles[$pipe]); } $this->lockHandles[$pipe] = $h; if (!($h = \fopen($file, 'w')) || !\fclose($h) || !($h = \fopen($file, 'r'))) { \flock($this->lockHandles[$pipe], \LOCK_UN); \fclose($this->lockHandles[$pipe]); unset($this->lockHandles[$pipe]); continue 2; } $this->fileHandles[$pipe] = $h; $this->files[$pipe] = $file; } break; } \restore_error_handler(); } parent::__construct($input); } public function __sleep() : array { throw new \BadMethodCallException('Cannot serialize ' . __CLASS__); } public function __wakeup() { throw new \BadMethodCallException('Cannot unserialize ' . __CLASS__); } public function __destruct() { $this->close(); } /** * {@inheritdoc} */ public function getDescriptors() : array { if (!$this->haveReadSupport) { $nullstream = \fopen('NUL', 'c'); return [['pipe', 'r'], $nullstream, $nullstream]; } // We're not using pipe on Windows platform as it hangs (https://bugs.php.net/51800) // We're not using file handles as it can produce corrupted output https://bugs.php.net/65650 // So we redirect output within the commandline and pass the nul device to the process return [['pipe', 'r'], ['file', 'NUL', 'w'], ['file', 'NUL', 'w']]; } /** * {@inheritdoc} */ public function getFiles() : array { return $this->files; } /** * {@inheritdoc} */ public function readAndWrite(bool $blocking, bool $close = \false) : array { $this->unblock(); $w = $this->write(); $read = $r = $e = []; if ($blocking) { if ($w) { @\stream_select($r, $w, $e, 0, Process::TIMEOUT_PRECISION * 1000000.0); } elseif ($this->fileHandles) { \usleep((int) (Process::TIMEOUT_PRECISION * 1000000.0)); } } foreach ($this->fileHandles as $type => $fileHandle) { $data = \stream_get_contents($fileHandle, -1, $this->readBytes[$type]); if (isset($data[0])) { $this->readBytes[$type] += \strlen($data); $read[$type] = $data; } if ($close) { \ftruncate($fileHandle, 0); \fclose($fileHandle); \flock($this->lockHandles[$type], \LOCK_UN); \fclose($this->lockHandles[$type]); unset($this->fileHandles[$type], $this->lockHandles[$type]); } } return $read; } /** * {@inheritdoc} */ public function haveReadSupport() : bool { return $this->haveReadSupport; } /** * {@inheritdoc} */ public function areOpen() : bool { return $this->pipes && $this->fileHandles; } /** * {@inheritdoc} */ public function close() { parent::close(); foreach ($this->fileHandles as $type => $handle) { \ftruncate($handle, 0); \fclose($handle); \flock($this->lockHandles[$type], \LOCK_UN); \fclose($this->lockHandles[$type]); } $this->fileHandles = $this->lockHandles = []; } } Copyright (c) 2018-present Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Php73 as p; if (\PHP_VERSION_ID >= 70300) { return; } if (!function_exists('is_countable')) { function is_countable($value) { return is_array($value) || $value instanceof Countable || $value instanceof ResourceBundle || $value instanceof SimpleXmlElement; } } if (!function_exists('hrtime')) { require_once __DIR__.'/Php73.php'; p\Php73::$startAt = (int) microtime(true); function hrtime($as_number = false) { return p\Php73::hrtime($as_number); } } if (!function_exists('array_key_first')) { function array_key_first(array $array) { foreach ($array as $key => $value) { return $key; } } } if (!function_exists('array_key_last')) { function array_key_last(array $array) { return key(array_slice($array, -1, 1, true)); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Php73; /** * @author Gabriel Caruso * @author Ion Bazan * * @internal */ final class Php73 { public static $startAt = 1533462603; /** * @param bool $asNum * * @return array|float|int */ public static function hrtime($asNum = false) { $ns = microtime(false); $s = substr($ns, 11) - self::$startAt; $ns = 1E9 * (float) $ns; if ($asNum) { $ns += $s * 1E9; return \PHP_INT_SIZE === 4 ? $ns : (int) $ns; } return [$s, (int) $ns]; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ if (\PHP_VERSION_ID < 70300) { class JsonException extends Exception { } } Copyright (c) 2015-present Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Intl\Grapheme as p; if (extension_loaded('intl')) { return; } if (\PHP_VERSION_ID >= 80000) { return require __DIR__.'/bootstrap80.php'; } if (!defined('GRAPHEME_EXTR_COUNT')) { define('GRAPHEME_EXTR_COUNT', 0); } if (!defined('GRAPHEME_EXTR_MAXBYTES')) { define('GRAPHEME_EXTR_MAXBYTES', 1); } if (!defined('GRAPHEME_EXTR_MAXCHARS')) { define('GRAPHEME_EXTR_MAXCHARS', 2); } if (!function_exists('grapheme_extract')) { function grapheme_extract($haystack, $size, $type = 0, $start = 0, &$next = 0) { return p\Grapheme::grapheme_extract($haystack, $size, $type, $start, $next); } } if (!function_exists('grapheme_stripos')) { function grapheme_stripos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_stripos($haystack, $needle, $offset); } } if (!function_exists('grapheme_stristr')) { function grapheme_stristr($haystack, $needle, $beforeNeedle = false) { return p\Grapheme::grapheme_stristr($haystack, $needle, $beforeNeedle); } } if (!function_exists('grapheme_strlen')) { function grapheme_strlen($input) { return p\Grapheme::grapheme_strlen($input); } } if (!function_exists('grapheme_strpos')) { function grapheme_strpos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strpos($haystack, $needle, $offset); } } if (!function_exists('grapheme_strripos')) { function grapheme_strripos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strripos($haystack, $needle, $offset); } } if (!function_exists('grapheme_strrpos')) { function grapheme_strrpos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strrpos($haystack, $needle, $offset); } } if (!function_exists('grapheme_strstr')) { function grapheme_strstr($haystack, $needle, $beforeNeedle = false) { return p\Grapheme::grapheme_strstr($haystack, $needle, $beforeNeedle); } } if (!function_exists('grapheme_substr')) { function grapheme_substr($string, $offset, $length = null) { return p\Grapheme::grapheme_substr($string, $offset, $length); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Intl\Grapheme; \define('SYMFONY_GRAPHEME_CLUSTER_RX', ((float) \PCRE_VERSION < 10 ? (float) \PCRE_VERSION >= 8.32 : (float) \PCRE_VERSION >= 10.39) ? '\X' : Grapheme::GRAPHEME_CLUSTER_RX); /** * Partial intl implementation in pure PHP. * * Implemented: * - grapheme_extract - Extract a sequence of grapheme clusters from a text buffer, which must be encoded in UTF-8 * - grapheme_stripos - Find position (in grapheme units) of first occurrence of a case-insensitive string * - grapheme_stristr - Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack * - grapheme_strlen - Get string length in grapheme units * - grapheme_strpos - Find position (in grapheme units) of first occurrence of a string * - grapheme_strripos - Find position (in grapheme units) of last occurrence of a case-insensitive string * - grapheme_strrpos - Find position (in grapheme units) of last occurrence of a string * - grapheme_strstr - Returns part of haystack string from the first occurrence of needle to the end of haystack * - grapheme_substr - Return part of a string * * @author Nicolas Grekas * * @internal */ final class Grapheme { // (CRLF|([ZWNJ-ZWJ]|T+|L*(LV?V+|LV|LVT)T*|L+|[^Control])[Extend]*|[Control]) // This regular expression is a work around for http://bugs.exim.org/1279 public const GRAPHEME_CLUSTER_RX = '(?:\r\n|(?:[ -~\x{200C}\x{200D}]|[ᆨ-ᇹ]+|[ᄀ-ᅟ]*(?:[가개갸걔거게겨계고과괘괴교구궈궤귀규그긔기까깨꺄꺠꺼께껴꼐꼬꽈꽤꾀꾜꾸꿔꿰뀌뀨끄끠끼나내냐냬너네녀녜노놔놰뇌뇨누눠눼뉘뉴느늬니다대댜댸더데뎌뎨도돠돼되됴두둬뒈뒤듀드듸디따때땨떄떠떼뗘뗴또똬뙈뙤뚀뚜뚸뛔뛰뜌뜨띄띠라래랴럐러레려례로롸뢔뢰료루뤄뤠뤼류르릐리마매먀먜머메며몌모뫄뫠뫼묘무뭐뭬뮈뮤므믜미바배뱌뱨버베벼볘보봐봬뵈뵤부붜붸뷔뷰브븨비빠빼뺘뺴뻐뻬뼈뼤뽀뽜뽸뾔뾰뿌뿨쀄쀠쀼쁘쁴삐사새샤섀서세셔셰소솨쇄쇠쇼수숴쉐쉬슈스싀시싸쌔쌰썌써쎄쎠쎼쏘쏴쐐쐬쑈쑤쒀쒜쒸쓔쓰씌씨아애야얘어에여예오와왜외요우워웨위유으의이자재쟈쟤저제져졔조좌좨죄죠주줘줴쥐쥬즈즤지짜째쨔쨰쩌쩨쪄쪠쪼쫘쫴쬐쬬쭈쭤쮀쮜쮸쯔쯰찌차채챠챼처체쳐쳬초촤쵀최쵸추춰췌취츄츠츼치카캐캬컈커케켜켸코콰쾌쾨쿄쿠쿼퀘퀴큐크킈키타태탸턔터테텨톄토톼퇘퇴툐투퉈퉤튀튜트틔티파패퍄퍠퍼페펴폐포퐈퐤푀표푸풔풰퓌퓨프픠피하해햐햬허헤혀혜호화홰회효후훠훼휘휴흐희히]?[ᅠ-ᆢ]+|[가-힣])[ᆨ-ᇹ]*|[ᄀ-ᅟ]+|[^\p{Cc}\p{Cf}\p{Zl}\p{Zp}])[\p{Mn}\p{Me}\x{09BE}\x{09D7}\x{0B3E}\x{0B57}\x{0BBE}\x{0BD7}\x{0CC2}\x{0CD5}\x{0CD6}\x{0D3E}\x{0D57}\x{0DCF}\x{0DDF}\x{200C}\x{200D}\x{1D165}\x{1D16E}-\x{1D172}]*|[\p{Cc}\p{Cf}\p{Zl}\p{Zp}])'; private const CASE_FOLD = [ ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"], ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'], ]; public static function grapheme_extract($s, $size, $type = \GRAPHEME_EXTR_COUNT, $start = 0, &$next = 0) { if (0 > $start) { $start = \strlen($s) + $start; } if (!\is_scalar($s)) { $hasError = false; set_error_handler(function () use (&$hasError) { $hasError = true; }); $next = substr($s, $start); restore_error_handler(); if ($hasError) { substr($s, $start); $s = ''; } else { $s = $next; } } else { $s = substr($s, $start); } $size = (int) $size; $type = (int) $type; $start = (int) $start; if (\GRAPHEME_EXTR_COUNT !== $type && \GRAPHEME_EXTR_MAXBYTES !== $type && \GRAPHEME_EXTR_MAXCHARS !== $type) { if (80000 > \PHP_VERSION_ID) { return false; } throw new \ValueError('grapheme_extract(): Argument #3 ($type) must be one of GRAPHEME_EXTR_COUNT, GRAPHEME_EXTR_MAXBYTES, or GRAPHEME_EXTR_MAXCHARS'); } if (!isset($s[0]) || 0 > $size || 0 > $start) { return false; } if (0 === $size) { return ''; } $next = $start; $s = preg_split('/('.SYMFONY_GRAPHEME_CLUSTER_RX.')/u', "\r\n".$s, $size + 1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE); if (!isset($s[1])) { return false; } $i = 1; $ret = ''; do { if (\GRAPHEME_EXTR_COUNT === $type) { --$size; } elseif (\GRAPHEME_EXTR_MAXBYTES === $type) { $size -= \strlen($s[$i]); } else { $size -= iconv_strlen($s[$i], 'UTF-8//IGNORE'); } if ($size >= 0) { $ret .= $s[$i]; } } while (isset($s[++$i]) && $size > 0); $next += \strlen($ret); return $ret; } public static function grapheme_strlen($s) { preg_replace('/'.SYMFONY_GRAPHEME_CLUSTER_RX.'/u', '', $s, -1, $len); return 0 === $len && '' !== $s ? null : $len; } public static function grapheme_substr($s, $start, $len = null) { if (null === $len) { $len = 2147483647; } preg_match_all('/'.SYMFONY_GRAPHEME_CLUSTER_RX.'/u', $s, $s); $slen = \count($s[0]); $start = (int) $start; if (0 > $start) { $start += $slen; } if (0 > $start) { if (\PHP_VERSION_ID < 80000) { return false; } $start = 0; } if ($start >= $slen) { return \PHP_VERSION_ID >= 80000 ? '' : false; } $rem = $slen - $start; if (0 > $len) { $len += $rem; } if (0 === $len) { return ''; } if (0 > $len) { return \PHP_VERSION_ID >= 80000 ? '' : false; } if ($len > $rem) { $len = $rem; } return implode('', \array_slice($s[0], $start, $len)); } public static function grapheme_strpos($s, $needle, $offset = 0) { return self::grapheme_position($s, $needle, $offset, 0); } public static function grapheme_stripos($s, $needle, $offset = 0) { return self::grapheme_position($s, $needle, $offset, 1); } public static function grapheme_strrpos($s, $needle, $offset = 0) { return self::grapheme_position($s, $needle, $offset, 2); } public static function grapheme_strripos($s, $needle, $offset = 0) { return self::grapheme_position($s, $needle, $offset, 3); } public static function grapheme_stristr($s, $needle, $beforeNeedle = false) { return mb_stristr($s, $needle, $beforeNeedle, 'UTF-8'); } public static function grapheme_strstr($s, $needle, $beforeNeedle = false) { return mb_strstr($s, $needle, $beforeNeedle, 'UTF-8'); } private static function grapheme_position($s, $needle, $offset, $mode) { $needle = (string) $needle; if (80000 > \PHP_VERSION_ID && !preg_match('/./us', $needle)) { return false; } $s = (string) $s; if (!preg_match('/./us', $s)) { return false; } if ($offset > 0) { $s = self::grapheme_substr($s, $offset); } elseif ($offset < 0) { if (2 > $mode) { $offset += self::grapheme_strlen($s); $s = self::grapheme_substr($s, $offset); if (0 > $offset) { $offset = 0; } } elseif (0 > $offset += self::grapheme_strlen($needle)) { $s = self::grapheme_substr($s, 0, $offset); $offset = 0; } else { $offset = 0; } } // As UTF-8 is self-synchronizing, and we have ensured the strings are valid UTF-8, // we can use normal binary string functions here. For case-insensitive searches, // case fold the strings first. $caseInsensitive = $mode & 1; $reverse = $mode & 2; if ($caseInsensitive) { // Use the same case folding mode as mbstring does for mb_stripos(). // Stick to SIMPLE case folding to avoid changing the length of the string, which // might result in offsets being shifted. $mode = \defined('MB_CASE_FOLD_SIMPLE') ? \MB_CASE_FOLD_SIMPLE : \MB_CASE_LOWER; $s = mb_convert_case($s, $mode, 'UTF-8'); $needle = mb_convert_case($needle, $mode, 'UTF-8'); if (!\defined('MB_CASE_FOLD_SIMPLE')) { $s = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $s); $needle = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $needle); } } if ($reverse) { $needlePos = strrpos($s, $needle); } else { $needlePos = strpos($s, $needle); } return false !== $needlePos ? self::grapheme_strlen(substr($s, 0, $needlePos)) + $offset : false; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Intl\Grapheme as p; if (!defined('GRAPHEME_EXTR_COUNT')) { define('GRAPHEME_EXTR_COUNT', 0); } if (!defined('GRAPHEME_EXTR_MAXBYTES')) { define('GRAPHEME_EXTR_MAXBYTES', 1); } if (!defined('GRAPHEME_EXTR_MAXCHARS')) { define('GRAPHEME_EXTR_MAXCHARS', 2); } if (!function_exists('grapheme_extract')) { function grapheme_extract(?string $haystack, ?int $size, ?int $type = GRAPHEME_EXTR_COUNT, ?int $offset = 0, &$next = null): string|false { return p\Grapheme::grapheme_extract((string) $haystack, (int) $size, (int) $type, (int) $offset, $next); } } if (!function_exists('grapheme_stripos')) { function grapheme_stripos(?string $haystack, ?string $needle, ?int $offset = 0): int|false { return p\Grapheme::grapheme_stripos((string) $haystack, (string) $needle, (int) $offset); } } if (!function_exists('grapheme_stristr')) { function grapheme_stristr(?string $haystack, ?string $needle, ?bool $beforeNeedle = false): string|false { return p\Grapheme::grapheme_stristr((string) $haystack, (string) $needle, (bool) $beforeNeedle); } } if (!function_exists('grapheme_strlen')) { function grapheme_strlen(?string $string): int|false|null { return p\Grapheme::grapheme_strlen((string) $string); } } if (!function_exists('grapheme_strpos')) { function grapheme_strpos(?string $haystack, ?string $needle, ?int $offset = 0): int|false { return p\Grapheme::grapheme_strpos((string) $haystack, (string) $needle, (int) $offset); } } if (!function_exists('grapheme_strripos')) { function grapheme_strripos(?string $haystack, ?string $needle, ?int $offset = 0): int|false { return p\Grapheme::grapheme_strripos((string) $haystack, (string) $needle, (int) $offset); } } if (!function_exists('grapheme_strrpos')) { function grapheme_strrpos(?string $haystack, ?string $needle, ?int $offset = 0): int|false { return p\Grapheme::grapheme_strrpos((string) $haystack, (string) $needle, (int) $offset); } } if (!function_exists('grapheme_strstr')) { function grapheme_strstr(?string $haystack, ?string $needle, ?bool $beforeNeedle = false): string|false { return p\Grapheme::grapheme_strstr((string) $haystack, (string) $needle, (bool) $beforeNeedle); } } if (!function_exists('grapheme_substr')) { function grapheme_substr(?string $string, ?int $offset, ?int $length = null): string|false { return p\Grapheme::grapheme_substr((string) $string, (int) $offset, $length); } } Copyright (c) 2021-present Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Php81 as p; if (\PHP_VERSION_ID >= 80100) { return; } if (defined('MYSQLI_REFRESH_SLAVE') && !defined('MYSQLI_REFRESH_REPLICA')) { define('MYSQLI_REFRESH_REPLICA', 64); } if (!function_exists('array_is_list')) { function array_is_list(array $array): bool { return p\Php81::array_is_list($array); } } if (!function_exists('enum_exists')) { function enum_exists(string $enum, bool $autoload = true): bool { return $autoload && class_exists($enum) && false; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Php81; /** * @author Nicolas Grekas * * @internal */ final class Php81 { public static function array_is_list(array $array): bool { if ([] === $array || $array === array_values($array)) { return true; } $nextKey = -1; foreach ($array as $k => $v) { if ($k !== ++$nextKey) { return false; } } return true; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ if (\PHP_VERSION_ID < 80100) { #[Attribute(Attribute::TARGET_METHOD)] final class ReturnTypeWillChange { public function __construct() { } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ if (\PHP_VERSION_ID >= 70400 && extension_loaded('curl')) { /** * @property string $data */ class CURLStringFile extends CURLFile { private $data; public function __construct(string $data, string $postname, string $mime = 'application/octet-stream') { $this->data = $data; parent::__construct('data://application/octet-stream;base64,'.base64_encode($data), $mime, $postname); } public function __set(string $name, $value): void { if ('data' !== $name) { $this->$name = $value; return; } if (is_object($value) ? !method_exists($value, '__toString') : !is_scalar($value)) { throw new TypeError('Cannot assign '.gettype($value).' to property CURLStringFile::$data of type string'); } $this->name = 'data://application/octet-stream;base64,'.base64_encode($value); } public function __isset(string $name): bool { return isset($this->$name); } public function &__get(string $name) { return $this->$name; } } } Copyright (c) 2018-present Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Contracts\Service; /** * Provides a way to reset an object to its initial state. * * When calling the "reset()" method on an object, it should be put back to its * initial state. This usually means clearing any internal buffers and forwarding * the call to internal dependencies. All properties of the object should be put * back to the same state it had when it was first ready to use. * * This method could be called, for example, to recycle objects that are used as * services, so that they can be used to handle several requests in the same * process loop (note that we advise making your services stateless instead of * implementing this interface when possible.) */ interface ResetInterface { public function reset(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Contracts\Service\Attribute; use _PHPStan_b22655c3f\Symfony\Contracts\Service\ServiceSubscriberTrait; /** * Use with {@see ServiceSubscriberTrait} to mark a method's return type * as a subscribed service. * * @author Kevin Bond */ #[\Attribute(\Attribute::TARGET_METHOD)] final class SubscribedService { /** * @param string|null $key The key to use for the service * If null, use "ClassName::methodName" */ public function __construct(public ?string $key = null) { } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Contracts\Service\Attribute; /** * A required dependency. * * This attribute indicates that a property holds a required dependency. The annotated property or method should be * considered during the instantiation process of the containing class. * * @author Alexander M. Turek */ #[\Attribute(\Attribute::TARGET_METHOD | \Attribute::TARGET_PROPERTY)] final class Required { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Contracts\Service; use _PHPStan_b22655c3f\Psr\Container\ContainerInterface; use _PHPStan_b22655c3f\Symfony\Contracts\Service\Attribute\SubscribedService; /** * Implementation of ServiceSubscriberInterface that determines subscribed services from * method return types. Service ids are available as "ClassName::methodName". * * @author Kevin Bond */ trait ServiceSubscriberTrait { /** @var ContainerInterface */ protected $container; /** * {@inheritdoc} */ public static function getSubscribedServices() : array { $services = \method_exists(\get_parent_class(self::class) ?: '', __FUNCTION__) ? parent::getSubscribedServices() : []; $attributeOptIn = \false; if (\PHP_VERSION_ID >= 80000) { foreach ((new \ReflectionClass(self::class))->getMethods() as $method) { if (self::class !== $method->getDeclaringClass()->name) { continue; } if (!($attribute = $method->getAttributes(SubscribedService::class)[0] ?? null)) { continue; } if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) { throw new \LogicException(\sprintf('Cannot use "%s" on method "%s::%s()" (can only be used on non-static, non-abstract methods with no parameters).', SubscribedService::class, self::class, $method->name)); } if (!($returnType = $method->getReturnType())) { throw new \LogicException(\sprintf('Cannot use "%s" on methods without a return type in "%s::%s()".', SubscribedService::class, $method->name, self::class)); } $serviceId = $returnType instanceof \ReflectionNamedType ? $returnType->getName() : (string) $returnType; if ($returnType->allowsNull()) { $serviceId = '?' . $serviceId; } $services[$attribute->newInstance()->key ?? self::class . '::' . $method->name] = $serviceId; $attributeOptIn = \true; } } if (!$attributeOptIn) { foreach ((new \ReflectionClass(self::class))->getMethods() as $method) { if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) { continue; } if (self::class !== $method->getDeclaringClass()->name) { continue; } if (!($returnType = $method->getReturnType()) instanceof \ReflectionNamedType) { continue; } if ($returnType->isBuiltin()) { continue; } if (\PHP_VERSION_ID >= 80000) { trigger_deprecation('symfony/service-contracts', '2.5', 'Using "%s" in "%s" without using the "%s" attribute on any method is deprecated.', ServiceSubscriberTrait::class, self::class, SubscribedService::class); } $services[self::class . '::' . $method->name] = '?' . ($returnType instanceof \ReflectionNamedType ? $returnType->getName() : $returnType); } } return $services; } /** * @required * * @return ContainerInterface|null */ public function setContainer(ContainerInterface $container) { $ret = null; if (\method_exists(\get_parent_class(self::class) ?: '', __FUNCTION__)) { $ret = parent::setContainer($container); } $this->container = $container; return $ret; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Contracts\Service; use _PHPStan_b22655c3f\Psr\Container\ContainerExceptionInterface; use _PHPStan_b22655c3f\Psr\Container\NotFoundExceptionInterface; // Help opcache.preload discover always-needed symbols \class_exists(ContainerExceptionInterface::class); \class_exists(NotFoundExceptionInterface::class); /** * A trait to help implement ServiceProviderInterface. * * @author Robin Chalas * @author Nicolas Grekas */ trait ServiceLocatorTrait { private $factories; private $loading = []; private $providedTypes; /** * @param callable[] $factories */ public function __construct(array $factories) { $this->factories = $factories; } /** * {@inheritdoc} * * @return bool */ public function has(string $id) { return isset($this->factories[$id]); } /** * {@inheritdoc} * * @return mixed */ public function get(string $id) { if (!isset($this->factories[$id])) { throw $this->createNotFoundException($id); } if (isset($this->loading[$id])) { $ids = \array_values($this->loading); $ids = \array_slice($this->loading, \array_search($id, $ids)); $ids[] = $id; throw $this->createCircularReferenceException($id, $ids); } $this->loading[$id] = $id; try { return $this->factories[$id]($this); } finally { unset($this->loading[$id]); } } /** * {@inheritdoc} */ public function getProvidedServices() : array { if (null === $this->providedTypes) { $this->providedTypes = []; foreach ($this->factories as $name => $factory) { if (!\is_callable($factory)) { $this->providedTypes[$name] = '?'; } else { $type = (new \ReflectionFunction($factory))->getReturnType(); $this->providedTypes[$name] = $type ? ($type->allowsNull() ? '?' : '') . ($type instanceof \ReflectionNamedType ? $type->getName() : $type) : '?'; } } } return $this->providedTypes; } private function createNotFoundException(string $id) : NotFoundExceptionInterface { if (!($alternatives = \array_keys($this->factories))) { $message = 'is empty...'; } else { $last = \array_pop($alternatives); if ($alternatives) { $message = \sprintf('only knows about the "%s" and "%s" services.', \implode('", "', $alternatives), $last); } else { $message = \sprintf('only knows about the "%s" service.', $last); } } if ($this->loading) { $message = \sprintf('The service "%s" has a dependency on a non-existent service "%s". This locator %s', \end($this->loading), $id, $message); } else { $message = \sprintf('Service "%s" not found: the current service locator %s', $id, $message); } return new class($message) extends \InvalidArgumentException implements NotFoundExceptionInterface { }; } private function createCircularReferenceException(string $id, array $path) : ContainerExceptionInterface { return new class(\sprintf('Circular reference detected for service "%s", path: "%s".', $id, \implode(' -> ', $path))) extends \RuntimeException implements ContainerExceptionInterface { }; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Contracts\Service; use _PHPStan_b22655c3f\Psr\Container\ContainerInterface; /** * A ServiceProviderInterface exposes the identifiers and the types of services provided by a container. * * @author Nicolas Grekas * @author Mateusz Sip */ interface ServiceProviderInterface extends ContainerInterface { /** * Returns an associative array of service types keyed by the identifiers provided by the current container. * * Examples: * * * ['logger' => 'Psr\Log\LoggerInterface'] means the object provides a service named "logger" that implements Psr\Log\LoggerInterface * * ['foo' => '?'] means the container provides service name "foo" of unspecified type * * ['bar' => '?Bar\Baz'] means the container provides a service "bar" of type Bar\Baz|null * * @return string[] The provided service types, keyed by service names */ public function getProvidedServices() : array; } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Contracts\Service; /** * A ServiceSubscriber exposes its dependencies via the static {@link getSubscribedServices} method. * * The getSubscribedServices method returns an array of service types required by such instances, * optionally keyed by the service names used internally. Service types that start with an interrogation * mark "?" are optional, while the other ones are mandatory service dependencies. * * The injected service locators SHOULD NOT allow access to any other services not specified by the method. * * It is expected that ServiceSubscriber instances consume PSR-11-based service locators internally. * This interface does not dictate any injection method for these service locators, although constructor * injection is recommended. * * @author Nicolas Grekas */ interface ServiceSubscriberInterface { /** * Returns an array of service types required by such instances, optionally keyed by the service names used internally. * * For mandatory dependencies: * * * ['logger' => 'Psr\Log\LoggerInterface'] means the objects use the "logger" name * internally to fetch a service which must implement Psr\Log\LoggerInterface. * * ['loggers' => 'Psr\Log\LoggerInterface[]'] means the objects use the "loggers" name * internally to fetch an iterable of Psr\Log\LoggerInterface instances. * * ['Psr\Log\LoggerInterface'] is a shortcut for * * ['Psr\Log\LoggerInterface' => 'Psr\Log\LoggerInterface'] * * otherwise: * * * ['logger' => '?Psr\Log\LoggerInterface'] denotes an optional dependency * * ['loggers' => '?Psr\Log\LoggerInterface[]'] denotes an optional iterable dependency * * ['?Psr\Log\LoggerInterface'] is a shortcut for * * ['Psr\Log\LoggerInterface' => '?Psr\Log\LoggerInterface'] * * @return string[] The required service types, optionally keyed by service names */ public static function getSubscribedServices(); } Copyright (c) 2020-present Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Php80 as p; if (\PHP_VERSION_ID >= 80000) { return; } if (!defined('FILTER_VALIDATE_BOOL') && defined('FILTER_VALIDATE_BOOLEAN')) { define('FILTER_VALIDATE_BOOL', \FILTER_VALIDATE_BOOLEAN); } if (!function_exists('fdiv')) { function fdiv(float $num1, float $num2): float { return p\Php80::fdiv($num1, $num2); } } if (!function_exists('preg_last_error_msg')) { function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); } } if (!function_exists('str_contains')) { function str_contains(?string $haystack, ?string $needle): bool { return p\Php80::str_contains($haystack ?? '', $needle ?? ''); } } if (!function_exists('str_starts_with')) { function str_starts_with(?string $haystack, ?string $needle): bool { return p\Php80::str_starts_with($haystack ?? '', $needle ?? ''); } } if (!function_exists('str_ends_with')) { function str_ends_with(?string $haystack, ?string $needle): bool { return p\Php80::str_ends_with($haystack ?? '', $needle ?? ''); } } if (!function_exists('get_debug_type')) { function get_debug_type($value): string { return p\Php80::get_debug_type($value); } } if (!function_exists('get_resource_id')) { function get_resource_id($resource): int { return p\Php80::get_resource_id($resource); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Php80; /** * @author Ion Bazan * @author Nico Oelgart * @author Nicolas Grekas * * @internal */ final class Php80 { public static function fdiv(float $dividend, float $divisor): float { return @($dividend / $divisor); } public static function get_debug_type($value): string { switch (true) { case null === $value: return 'null'; case \is_bool($value): return 'bool'; case \is_string($value): return 'string'; case \is_array($value): return 'array'; case \is_int($value): return 'int'; case \is_float($value): return 'float'; case \is_object($value): break; case $value instanceof \__PHP_Incomplete_Class: return '__PHP_Incomplete_Class'; default: if (null === $type = @get_resource_type($value)) { return 'unknown'; } if ('Unknown' === $type) { $type = 'closed'; } return "resource ($type)"; } $class = \get_class($value); if (false === strpos($class, '@')) { return $class; } return (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous'; } public static function get_resource_id($res): int { if (!\is_resource($res) && null === @get_resource_type($res)) { throw new \TypeError(sprintf('Argument 1 passed to get_resource_id() must be of the type resource, %s given', get_debug_type($res))); } return (int) $res; } public static function preg_last_error_msg(): string { switch (preg_last_error()) { case \PREG_INTERNAL_ERROR: return 'Internal error'; case \PREG_BAD_UTF8_ERROR: return 'Malformed UTF-8 characters, possibly incorrectly encoded'; case \PREG_BAD_UTF8_OFFSET_ERROR: return 'The offset did not correspond to the beginning of a valid UTF-8 code point'; case \PREG_BACKTRACK_LIMIT_ERROR: return 'Backtrack limit exhausted'; case \PREG_RECURSION_LIMIT_ERROR: return 'Recursion limit exhausted'; case \PREG_JIT_STACKLIMIT_ERROR: return 'JIT stack limit exhausted'; case \PREG_NO_ERROR: return 'No error'; default: return 'Unknown error'; } } public static function str_contains(string $haystack, string $needle): bool { return '' === $needle || false !== strpos($haystack, $needle); } public static function str_starts_with(string $haystack, string $needle): bool { return 0 === strncmp($haystack, $needle, \strlen($needle)); } public static function str_ends_with(string $haystack, string $needle): bool { if ('' === $needle || $needle === $haystack) { return true; } if ('' === $haystack) { return false; } $needleLength = \strlen($needle); return $needleLength <= \strlen($haystack) && 0 === substr_compare($haystack, $needle, -$needleLength); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Php80; /** * @author Fedonyuk Anton * * @internal */ class PhpToken implements \Stringable { /** * @var int */ public $id; /** * @var string */ public $text; /** * @var int */ public $line; /** * @var int */ public $pos; public function __construct(int $id, string $text, int $line = -1, int $position = -1) { $this->id = $id; $this->text = $text; $this->line = $line; $this->pos = $position; } public function getTokenName(): ?string { if ('UNKNOWN' === $name = token_name($this->id)) { $name = \strlen($this->text) > 1 || \ord($this->text) < 32 ? null : $this->text; } return $name; } /** * @param int|string|array $kind */ public function is($kind): bool { foreach ((array) $kind as $value) { if (\in_array($value, [$this->id, $this->text], true)) { return true; } } return false; } public function isIgnorable(): bool { return \in_array($this->id, [\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT, \T_OPEN_TAG], true); } public function __toString(): string { return (string) $this->text; } /** * @return static[] */ public static function tokenize(string $code, int $flags = 0): array { $line = 1; $position = 0; $tokens = token_get_all($code, $flags); foreach ($tokens as $index => $token) { if (\is_string($token)) { $id = \ord($token); $text = $token; } else { [$id, $text, $line] = $token; } $tokens[$index] = new static($id, $text, $line, $position); $position += \strlen($text); } return $tokens; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ #[Attribute(Attribute::TARGET_CLASS)] final class Attribute { public const TARGET_CLASS = 1; public const TARGET_FUNCTION = 2; public const TARGET_METHOD = 4; public const TARGET_PROPERTY = 8; public const TARGET_CLASS_CONSTANT = 16; public const TARGET_PARAMETER = 32; public const TARGET_ALL = 63; public const IS_REPEATABLE = 64; /** @var int */ public $flags; public function __construct(int $flags = self::TARGET_ALL) { $this->flags = $flags; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ if (\PHP_VERSION_ID < 80000) { class UnhandledMatchError extends Error { } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ if (\PHP_VERSION_ID < 80000 && extension_loaded('tokenizer')) { class PhpToken extends Symfony\Polyfill\Php80\PhpToken { } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ if (\PHP_VERSION_ID < 80000) { interface Stringable { /** * @return string */ public function __toString(); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ if (\PHP_VERSION_ID < 80000) { class ValueError extends Error { } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Cursor; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\MissingInputException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\RuntimeException; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatter; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatterStyle; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\StreamableInputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\ConsoleOutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\ConsoleSectionOutput; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Question\ChoiceQuestion; use _PHPStan_b22655c3f\Symfony\Component\Console\Question\Question; use _PHPStan_b22655c3f\Symfony\Component\Console\Terminal; use function _PHPStan_b22655c3f\Symfony\Component\String\s; /** * The QuestionHelper class provides helpers to interact with the user. * * @author Fabien Potencier */ class QuestionHelper extends Helper { /** * @var resource|null */ private $inputStream; private static $stty = \true; private static $stdinIsInteractive; /** * Asks a question to the user. * * @return mixed The user answer * * @throws RuntimeException If there is no data to read in the input stream */ public function ask(InputInterface $input, OutputInterface $output, Question $question) { if ($output instanceof ConsoleOutputInterface) { $output = $output->getErrorOutput(); } if (!$input->isInteractive()) { return $this->getDefaultAnswer($question); } if ($input instanceof StreamableInputInterface && ($stream = $input->getStream())) { $this->inputStream = $stream; } try { if (!$question->getValidator()) { return $this->doAsk($output, $question); } $interviewer = function () use($output, $question) { return $this->doAsk($output, $question); }; return $this->validateAttempts($interviewer, $output, $question); } catch (MissingInputException $exception) { $input->setInteractive(\false); if (null === ($fallbackOutput = $this->getDefaultAnswer($question))) { throw $exception; } return $fallbackOutput; } } /** * {@inheritdoc} */ public function getName() { return 'question'; } /** * Prevents usage of stty. */ public static function disableStty() { self::$stty = \false; } /** * Asks the question to the user. * * @return mixed * * @throws RuntimeException In case the fallback is deactivated and the response cannot be hidden */ private function doAsk(OutputInterface $output, Question $question) { $this->writePrompt($output, $question); $inputStream = $this->inputStream ?: \STDIN; $autocomplete = $question->getAutocompleterCallback(); if (null === $autocomplete || !self::$stty || !Terminal::hasSttyAvailable()) { $ret = \false; if ($question->isHidden()) { try { $hiddenResponse = $this->getHiddenResponse($output, $inputStream, $question->isTrimmable()); $ret = $question->isTrimmable() ? \trim($hiddenResponse) : $hiddenResponse; } catch (RuntimeException $e) { if (!$question->isHiddenFallback()) { throw $e; } } } if (\false === $ret) { $isBlocked = \stream_get_meta_data($inputStream)['blocked'] ?? \true; if (!$isBlocked) { \stream_set_blocking($inputStream, \true); } $ret = $this->readInput($inputStream, $question); if (!$isBlocked) { \stream_set_blocking($inputStream, \false); } if (\false === $ret) { throw new MissingInputException('Aborted.'); } if ($question->isTrimmable()) { $ret = \trim($ret); } } } else { $autocomplete = $this->autocomplete($output, $question, $inputStream, $autocomplete); $ret = $question->isTrimmable() ? \trim($autocomplete) : $autocomplete; } if ($output instanceof ConsoleSectionOutput) { $output->addContent($ret); } $ret = \strlen($ret) > 0 ? $ret : $question->getDefault(); if ($normalizer = $question->getNormalizer()) { return $normalizer($ret); } return $ret; } /** * @return mixed */ private function getDefaultAnswer(Question $question) { $default = $question->getDefault(); if (null === $default) { return $default; } if ($validator = $question->getValidator()) { return \call_user_func($question->getValidator(), $default); } elseif ($question instanceof ChoiceQuestion) { $choices = $question->getChoices(); if (!$question->isMultiselect()) { return $choices[$default] ?? $default; } $default = \explode(',', $default); foreach ($default as $k => $v) { $v = $question->isTrimmable() ? \trim($v) : $v; $default[$k] = $choices[$v] ?? $v; } } return $default; } /** * Outputs the question prompt. */ protected function writePrompt(OutputInterface $output, Question $question) { $message = $question->getQuestion(); if ($question instanceof ChoiceQuestion) { $output->writeln(\array_merge([$question->getQuestion()], $this->formatChoiceQuestionChoices($question, 'info'))); $message = $question->getPrompt(); } $output->write($message); } /** * @return string[] */ protected function formatChoiceQuestionChoices(ChoiceQuestion $question, string $tag) { $messages = []; $maxWidth = \max(\array_map([__CLASS__, 'width'], \array_keys($choices = $question->getChoices()))); foreach ($choices as $key => $value) { $padding = \str_repeat(' ', $maxWidth - self::width($key)); $messages[] = \sprintf(" [<{$tag}>%s{$padding}] %s", $key, $value); } return $messages; } /** * Outputs an error message. */ protected function writeError(OutputInterface $output, \Exception $error) { if (null !== $this->getHelperSet() && $this->getHelperSet()->has('formatter')) { $message = $this->getHelperSet()->get('formatter')->formatBlock($error->getMessage(), 'error'); } else { $message = '' . $error->getMessage() . ''; } $output->writeln($message); } /** * Autocompletes a question. * * @param resource $inputStream */ private function autocomplete(OutputInterface $output, Question $question, $inputStream, callable $autocomplete) : string { $cursor = new Cursor($output, $inputStream); $fullChoice = ''; $ret = ''; $i = 0; $ofs = -1; $matches = $autocomplete($ret); $numMatches = \count($matches); $sttyMode = \shell_exec('stty -g'); $isStdin = 'php://stdin' === (\stream_get_meta_data($inputStream)['uri'] ?? null); $r = [$inputStream]; $w = []; // Disable icanon (so we can fread each keypress) and echo (we'll do echoing here instead) \shell_exec('stty -icanon -echo'); // Add highlighted text style $output->getFormatter()->setStyle('hl', new OutputFormatterStyle('black', 'white')); // Read a keypress while (!\feof($inputStream)) { while ($isStdin && 0 === @\stream_select($r, $w, $w, 0, 100)) { // Give signal handlers a chance to run $r = [$inputStream]; } $c = \fread($inputStream, 1); // as opposed to fgets(), fread() returns an empty string when the stream content is empty, not false. if (\false === $c || '' === $ret && '' === $c && null === $question->getDefault()) { \shell_exec('stty ' . $sttyMode); throw new MissingInputException('Aborted.'); } elseif ("" === $c) { // Backspace Character if (0 === $numMatches && 0 !== $i) { --$i; $cursor->moveLeft(s($fullChoice)->slice(-1)->width(\false)); $fullChoice = self::substr($fullChoice, 0, $i); } if (0 === $i) { $ofs = -1; $matches = $autocomplete($ret); $numMatches = \count($matches); } else { $numMatches = 0; } // Pop the last character off the end of our string $ret = self::substr($ret, 0, $i); } elseif ("\x1b" === $c) { // Did we read an escape sequence? $c .= \fread($inputStream, 2); // A = Up Arrow. B = Down Arrow if (isset($c[2]) && ('A' === $c[2] || 'B' === $c[2])) { if ('A' === $c[2] && -1 === $ofs) { $ofs = 0; } if (0 === $numMatches) { continue; } $ofs += 'A' === $c[2] ? -1 : 1; $ofs = ($numMatches + $ofs) % $numMatches; } } elseif (\ord($c) < 32) { if ("\t" === $c || "\n" === $c) { if ($numMatches > 0 && -1 !== $ofs) { $ret = (string) $matches[$ofs]; // Echo out remaining chars for current match $remainingCharacters = \substr($ret, \strlen(\trim($this->mostRecentlyEnteredValue($fullChoice)))); $output->write($remainingCharacters); $fullChoice .= $remainingCharacters; $i = \false === ($encoding = \mb_detect_encoding($fullChoice, null, \true)) ? \strlen($fullChoice) : \mb_strlen($fullChoice, $encoding); $matches = \array_filter($autocomplete($ret), function ($match) use($ret) { return '' === $ret || \str_starts_with($match, $ret); }); $numMatches = \count($matches); $ofs = -1; } if ("\n" === $c) { $output->write($c); break; } $numMatches = 0; } continue; } else { if ("\x80" <= $c) { $c .= \fread($inputStream, ["\xc0" => 1, "\xd0" => 1, "\xe0" => 2, "\xf0" => 3][$c & "\xf0"]); } $output->write($c); $ret .= $c; $fullChoice .= $c; ++$i; $tempRet = $ret; if ($question instanceof ChoiceQuestion && $question->isMultiselect()) { $tempRet = $this->mostRecentlyEnteredValue($fullChoice); } $numMatches = 0; $ofs = 0; foreach ($autocomplete($ret) as $value) { // If typed characters match the beginning chunk of value (e.g. [AcmeDe]moBundle) if (\str_starts_with($value, $tempRet)) { $matches[$numMatches++] = $value; } } } $cursor->clearLineAfter(); if ($numMatches > 0 && -1 !== $ofs) { $cursor->savePosition(); // Write highlighted text, complete the partially entered response $charactersEntered = \strlen(\trim($this->mostRecentlyEnteredValue($fullChoice))); $output->write('' . OutputFormatter::escapeTrailingBackslash(\substr($matches[$ofs], $charactersEntered)) . ''); $cursor->restorePosition(); } } // Reset stty so it behaves normally again \shell_exec('stty ' . $sttyMode); return $fullChoice; } private function mostRecentlyEnteredValue(string $entered) : string { // Determine the most recent value that the user entered if (!\str_contains($entered, ',')) { return $entered; } $choices = \explode(',', $entered); if ('' !== ($lastChoice = \trim($choices[\count($choices) - 1]))) { return $lastChoice; } return $entered; } /** * Gets a hidden response from user. * * @param resource $inputStream The handler resource * @param bool $trimmable Is the answer trimmable * * @throws RuntimeException In case the fallback is deactivated and the response cannot be hidden */ private function getHiddenResponse(OutputInterface $output, $inputStream, bool $trimmable = \true) : string { if ('\\' === \DIRECTORY_SEPARATOR) { $exe = __DIR__ . '/../Resources/bin/hiddeninput.exe'; // handle code running from a phar if ('phar:' === \substr(__FILE__, 0, 5)) { $tmpExe = \sys_get_temp_dir() . '/hiddeninput.exe'; \copy($exe, $tmpExe); $exe = $tmpExe; } $sExec = \shell_exec('"' . $exe . '"'); $value = $trimmable ? \rtrim($sExec) : $sExec; $output->writeln(''); if (isset($tmpExe)) { \unlink($tmpExe); } return $value; } if (self::$stty && Terminal::hasSttyAvailable()) { $sttyMode = \shell_exec('stty -g'); \shell_exec('stty -echo'); } elseif ($this->isInteractiveInput($inputStream)) { throw new RuntimeException('Unable to hide the response.'); } $value = \fgets($inputStream, 4096); if (self::$stty && Terminal::hasSttyAvailable()) { \shell_exec('stty ' . $sttyMode); } if (\false === $value) { throw new MissingInputException('Aborted.'); } if ($trimmable) { $value = \trim($value); } $output->writeln(''); return $value; } /** * Validates an attempt. * * @param callable $interviewer A callable that will ask for a question and return the result * * @return mixed The validated response * * @throws \Exception In case the max number of attempts has been reached and no valid response has been given */ private function validateAttempts(callable $interviewer, OutputInterface $output, Question $question) { $error = null; $attempts = $question->getMaxAttempts(); while (null === $attempts || $attempts--) { if (null !== $error) { $this->writeError($output, $error); } try { return $question->getValidator()($interviewer()); } catch (RuntimeException $e) { throw $e; } catch (\Exception $error) { } } throw $error; } private function isInteractiveInput($inputStream) : bool { if ('php://stdin' !== (\stream_get_meta_data($inputStream)['uri'] ?? null)) { return \false; } if (null !== self::$stdinIsInteractive) { return self::$stdinIsInteractive; } return self::$stdinIsInteractive = @\stream_isatty(\fopen('php://stdin', 'r')); } /** * Reads one or more lines of input and returns what is read. * * @param resource $inputStream The handler resource * @param Question $question The question being asked * * @return string|false The input received, false in case input could not be read */ private function readInput($inputStream, Question $question) { if (!$question->isMultiline()) { $cp = $this->setIOCodepage(); $ret = \fgets($inputStream, 4096); return $this->resetIOCodepage($cp, $ret); } $multiLineStreamReader = $this->cloneInputStream($inputStream); if (null === $multiLineStreamReader) { return \false; } $ret = ''; $cp = $this->setIOCodepage(); while (\false !== ($char = \fgetc($multiLineStreamReader))) { if (\PHP_EOL === "{$ret}{$char}") { break; } $ret .= $char; } return $this->resetIOCodepage($cp, $ret); } /** * Sets console I/O to the host code page. * * @return int Previous code page in IBM/EBCDIC format */ private function setIOCodepage() : int { if (\function_exists('sapi_windows_cp_set')) { $cp = \sapi_windows_cp_get(); \sapi_windows_cp_set(\sapi_windows_cp_get('oem')); return $cp; } return 0; } /** * Sets console I/O to the specified code page and converts the user input. * * @param string|false $input * * @return string|false */ private function resetIOCodepage(int $cp, $input) { if (0 !== $cp) { \sapi_windows_cp_set($cp); if (\false !== $input && '' !== $input) { $input = \sapi_windows_cp_conv(\sapi_windows_cp_get('oem'), $cp, $input); } } return $input; } /** * Clones an input stream in order to act on one instance of the same * stream without affecting the other instance. * * @param resource $inputStream The handler resource * * @return resource|null The cloned resource, null in case it could not be cloned */ private function cloneInputStream($inputStream) { $streamMetaData = \stream_get_meta_data($inputStream); $seekable = $streamMetaData['seekable'] ?? \false; $mode = $streamMetaData['mode'] ?? 'rb'; $uri = $streamMetaData['uri'] ?? null; if (null === $uri) { return null; } $cloneStream = \fopen($uri, $mode); // For seekable and writable streams, add all the same data to the // cloned stream and then seek to the same offset. if (\true === $seekable && !\in_array($mode, ['r', 'rb', 'rt'])) { $offset = \ftell($inputStream); \rewind($inputStream); \stream_copy_to_stream($inputStream, $cloneStream); \fseek($inputStream, $offset); \fseek($cloneStream, $offset); } return $cloneStream; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; /** * @author Abdellatif Ait boudad */ class TableCell { private $value; private $options = ['rowspan' => 1, 'colspan' => 1, 'style' => null]; public function __construct(string $value = '', array $options = []) { $this->value = $value; // check option names if ($diff = \array_diff(\array_keys($options), \array_keys($this->options))) { throw new InvalidArgumentException(\sprintf('The TableCell does not support the following options: \'%s\'.', \implode('\', \'', $diff))); } if (isset($options['style']) && !$options['style'] instanceof TableCellStyle) { throw new InvalidArgumentException('The style option must be an instance of "TableCellStyle".'); } $this->options = \array_merge($this->options, $options); } /** * Returns the cell value. * * @return string */ public function __toString() { return $this->value; } /** * Gets number of colspan. * * @return int */ public function getColspan() { return (int) $this->options['colspan']; } /** * Gets number of rowspan. * * @return int */ public function getRowspan() { return (int) $this->options['rowspan']; } public function getStyle() : ?TableCellStyle { return $this->options['style']; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; /** * Helps outputting debug information when running an external program from a command. * * An external program can be a Process, an HTTP request, or anything else. * * @author Fabien Potencier */ class DebugFormatterHelper extends Helper { private const COLORS = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white', 'default']; private $started = []; private $count = -1; /** * Starts a debug formatting session. * * @return string */ public function start(string $id, string $message, string $prefix = 'RUN') { $this->started[$id] = ['border' => ++$this->count % \count(self::COLORS)]; return \sprintf("%s %s %s\n", $this->getBorder($id), $prefix, $message); } /** * Adds progress to a formatting session. * * @return string */ public function progress(string $id, string $buffer, bool $error = \false, string $prefix = 'OUT', string $errorPrefix = 'ERR') { $message = ''; if ($error) { if (isset($this->started[$id]['out'])) { $message .= "\n"; unset($this->started[$id]['out']); } if (!isset($this->started[$id]['err'])) { $message .= \sprintf('%s %s ', $this->getBorder($id), $errorPrefix); $this->started[$id]['err'] = \true; } $message .= \str_replace("\n", \sprintf("\n%s %s ", $this->getBorder($id), $errorPrefix), $buffer); } else { if (isset($this->started[$id]['err'])) { $message .= "\n"; unset($this->started[$id]['err']); } if (!isset($this->started[$id]['out'])) { $message .= \sprintf('%s %s ', $this->getBorder($id), $prefix); $this->started[$id]['out'] = \true; } $message .= \str_replace("\n", \sprintf("\n%s %s ", $this->getBorder($id), $prefix), $buffer); } return $message; } /** * Stops a formatting session. * * @return string */ public function stop(string $id, string $message, bool $successful, string $prefix = 'RES') { $trailingEOL = isset($this->started[$id]['out']) || isset($this->started[$id]['err']) ? "\n" : ''; if ($successful) { return \sprintf("%s%s %s %s\n", $trailingEOL, $this->getBorder($id), $prefix, $message); } $message = \sprintf("%s%s %s %s\n", $trailingEOL, $this->getBorder($id), $prefix, $message); unset($this->started[$id]['out'], $this->started[$id]['err']); return $message; } private function getBorder(string $id) : string { return \sprintf(' ', self::COLORS[$this->started[$id]['border']]); } /** * {@inheritdoc} */ public function getName() { return 'debug_formatter'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Cursor; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\LogicException; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\ConsoleOutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\ConsoleSectionOutput; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Terminal; /** * The ProgressBar provides helpers to display progress output. * * @author Fabien Potencier * @author Chris Jones */ final class ProgressBar { public const FORMAT_VERBOSE = 'verbose'; public const FORMAT_VERY_VERBOSE = 'very_verbose'; public const FORMAT_DEBUG = 'debug'; public const FORMAT_NORMAL = 'normal'; private const FORMAT_VERBOSE_NOMAX = 'verbose_nomax'; private const FORMAT_VERY_VERBOSE_NOMAX = 'very_verbose_nomax'; private const FORMAT_DEBUG_NOMAX = 'debug_nomax'; private const FORMAT_NORMAL_NOMAX = 'normal_nomax'; private $barWidth = 28; private $barChar; private $emptyBarChar = '-'; private $progressChar = '>'; private $format; private $internalFormat; private $redrawFreq = 1; private $writeCount; private $lastWriteTime; private $minSecondsBetweenRedraws = 0; private $maxSecondsBetweenRedraws = 1; private $output; private $step = 0; private $max; private $startTime; private $stepWidth; private $percent = 0.0; private $messages = []; private $overwrite = \true; private $terminal; private $previousMessage; private $cursor; private static $formatters; private static $formats; /** * @param int $max Maximum steps (0 if unknown) */ public function __construct(OutputInterface $output, int $max = 0, float $minSecondsBetweenRedraws = 1 / 25) { if ($output instanceof ConsoleOutputInterface) { $output = $output->getErrorOutput(); } $this->output = $output; $this->setMaxSteps($max); $this->terminal = new Terminal(); if (0 < $minSecondsBetweenRedraws) { $this->redrawFreq = null; $this->minSecondsBetweenRedraws = $minSecondsBetweenRedraws; } if (!$this->output->isDecorated()) { // disable overwrite when output does not support ANSI codes. $this->overwrite = \false; // set a reasonable redraw frequency so output isn't flooded $this->redrawFreq = null; } $this->startTime = \time(); $this->cursor = new Cursor($output); } /** * Sets a placeholder formatter for a given name. * * This method also allow you to override an existing placeholder. * * @param string $name The placeholder name (including the delimiter char like %) * @param callable $callable A PHP callable */ public static function setPlaceholderFormatterDefinition(string $name, callable $callable) : void { if (!self::$formatters) { self::$formatters = self::initPlaceholderFormatters(); } self::$formatters[$name] = $callable; } /** * Gets the placeholder formatter for a given name. * * @param string $name The placeholder name (including the delimiter char like %) */ public static function getPlaceholderFormatterDefinition(string $name) : ?callable { if (!self::$formatters) { self::$formatters = self::initPlaceholderFormatters(); } return self::$formatters[$name] ?? null; } /** * Sets a format for a given name. * * This method also allow you to override an existing format. * * @param string $name The format name * @param string $format A format string */ public static function setFormatDefinition(string $name, string $format) : void { if (!self::$formats) { self::$formats = self::initFormats(); } self::$formats[$name] = $format; } /** * Gets the format for a given name. * * @param string $name The format name */ public static function getFormatDefinition(string $name) : ?string { if (!self::$formats) { self::$formats = self::initFormats(); } return self::$formats[$name] ?? null; } /** * Associates a text with a named placeholder. * * The text is displayed when the progress bar is rendered but only * when the corresponding placeholder is part of the custom format line * (by wrapping the name with %). * * @param string $message The text to associate with the placeholder * @param string $name The name of the placeholder */ public function setMessage(string $message, string $name = 'message') { $this->messages[$name] = $message; } /** * @return string|null */ public function getMessage(string $name = 'message') { return $this->messages[$name] ?? null; } public function getStartTime() : int { return $this->startTime; } public function getMaxSteps() : int { return $this->max; } public function getProgress() : int { return $this->step; } private function getStepWidth() : int { return $this->stepWidth; } public function getProgressPercent() : float { return $this->percent; } public function getBarOffset() : float { return \floor($this->max ? $this->percent * $this->barWidth : (null === $this->redrawFreq ? (int) (\min(5, $this->barWidth / 15) * $this->writeCount) : $this->step) % $this->barWidth); } public function getEstimated() : float { if (!$this->step) { return 0; } return \round((\time() - $this->startTime) / $this->step * $this->max); } public function getRemaining() : float { if (!$this->step) { return 0; } return \round((\time() - $this->startTime) / $this->step * ($this->max - $this->step)); } public function setBarWidth(int $size) { $this->barWidth = \max(1, $size); } public function getBarWidth() : int { return $this->barWidth; } public function setBarCharacter(string $char) { $this->barChar = $char; } public function getBarCharacter() : string { return $this->barChar ?? ($this->max ? '=' : $this->emptyBarChar); } public function setEmptyBarCharacter(string $char) { $this->emptyBarChar = $char; } public function getEmptyBarCharacter() : string { return $this->emptyBarChar; } public function setProgressCharacter(string $char) { $this->progressChar = $char; } public function getProgressCharacter() : string { return $this->progressChar; } public function setFormat(string $format) { $this->format = null; $this->internalFormat = $format; } /** * Sets the redraw frequency. * * @param int|null $freq The frequency in steps */ public function setRedrawFrequency(?int $freq) { $this->redrawFreq = null !== $freq ? \max(1, $freq) : null; } public function minSecondsBetweenRedraws(float $seconds) : void { $this->minSecondsBetweenRedraws = $seconds; } public function maxSecondsBetweenRedraws(float $seconds) : void { $this->maxSecondsBetweenRedraws = $seconds; } /** * Returns an iterator that will automatically update the progress bar when iterated. * * @param int|null $max Number of steps to complete the bar (0 if indeterminate), if null it will be inferred from $iterable */ public function iterate(iterable $iterable, ?int $max = null) : iterable { $this->start($max ?? (\is_countable($iterable) ? \count($iterable) : 0)); foreach ($iterable as $key => $value) { (yield $key => $value); $this->advance(); } $this->finish(); } /** * Starts the progress output. * * @param int|null $max Number of steps to complete the bar (0 if indeterminate), null to leave unchanged */ public function start(?int $max = null) { $this->startTime = \time(); $this->step = 0; $this->percent = 0.0; if (null !== $max) { $this->setMaxSteps($max); } $this->display(); } /** * Advances the progress output X steps. * * @param int $step Number of steps to advance */ public function advance(int $step = 1) { $this->setProgress($this->step + $step); } /** * Sets whether to overwrite the progressbar, false for new line. */ public function setOverwrite(bool $overwrite) { $this->overwrite = $overwrite; } public function setProgress(int $step) { if ($this->max && $step > $this->max) { $this->max = $step; } elseif ($step < 0) { $step = 0; } $redrawFreq = $this->redrawFreq ?? ($this->max ?: 10) / 10; $prevPeriod = (int) ($this->step / $redrawFreq); $currPeriod = (int) ($step / $redrawFreq); $this->step = $step; $this->percent = $this->max ? (float) $this->step / $this->max : 0; $timeInterval = \microtime(\true) - $this->lastWriteTime; // Draw regardless of other limits if ($this->max === $step) { $this->display(); return; } // Throttling if ($timeInterval < $this->minSecondsBetweenRedraws) { return; } // Draw each step period, but not too late if ($prevPeriod !== $currPeriod || $timeInterval >= $this->maxSecondsBetweenRedraws) { $this->display(); } } public function setMaxSteps(int $max) { $this->format = null; $this->max = \max(0, $max); $this->stepWidth = $this->max ? Helper::width((string) $this->max) : 4; } /** * Finishes the progress output. */ public function finish() : void { if (!$this->max) { $this->max = $this->step; } if ($this->step === $this->max && !$this->overwrite) { // prevent double 100% output return; } $this->setProgress($this->max); } /** * Outputs the current progress string. */ public function display() : void { if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) { return; } if (null === $this->format) { $this->setRealFormat($this->internalFormat ?: $this->determineBestFormat()); } $this->overwrite($this->buildLine()); } /** * Removes the progress bar from the current line. * * This is useful if you wish to write some output * while a progress bar is running. * Call display() to show the progress bar again. */ public function clear() : void { if (!$this->overwrite) { return; } if (null === $this->format) { $this->setRealFormat($this->internalFormat ?: $this->determineBestFormat()); } $this->overwrite(''); } private function setRealFormat(string $format) { // try to use the _nomax variant if available if (!$this->max && null !== self::getFormatDefinition($format . '_nomax')) { $this->format = self::getFormatDefinition($format . '_nomax'); } elseif (null !== self::getFormatDefinition($format)) { $this->format = self::getFormatDefinition($format); } else { $this->format = $format; } } /** * Overwrites a previous message to the output. */ private function overwrite(string $message) : void { if ($this->previousMessage === $message) { return; } $originalMessage = $message; if ($this->overwrite) { if (null !== $this->previousMessage) { if ($this->output instanceof ConsoleSectionOutput) { $messageLines = \explode("\n", $this->previousMessage); $lineCount = \count($messageLines); foreach ($messageLines as $messageLine) { $messageLineLength = Helper::width(Helper::removeDecoration($this->output->getFormatter(), $messageLine)); if ($messageLineLength > $this->terminal->getWidth()) { $lineCount += \floor($messageLineLength / $this->terminal->getWidth()); } } $this->output->clear($lineCount); } else { $lineCount = \substr_count($this->previousMessage, "\n"); for ($i = 0; $i < $lineCount; ++$i) { $this->cursor->moveToColumn(1); $this->cursor->clearLine(); $this->cursor->moveUp(); } $this->cursor->moveToColumn(1); $this->cursor->clearLine(); } } } elseif ($this->step > 0) { $message = \PHP_EOL . $message; } $this->previousMessage = $originalMessage; $this->lastWriteTime = \microtime(\true); $this->output->write($message); ++$this->writeCount; } private function determineBestFormat() : string { switch ($this->output->getVerbosity()) { // OutputInterface::VERBOSITY_QUIET: display is disabled anyway case OutputInterface::VERBOSITY_VERBOSE: return $this->max ? self::FORMAT_VERBOSE : self::FORMAT_VERBOSE_NOMAX; case OutputInterface::VERBOSITY_VERY_VERBOSE: return $this->max ? self::FORMAT_VERY_VERBOSE : self::FORMAT_VERY_VERBOSE_NOMAX; case OutputInterface::VERBOSITY_DEBUG: return $this->max ? self::FORMAT_DEBUG : self::FORMAT_DEBUG_NOMAX; default: return $this->max ? self::FORMAT_NORMAL : self::FORMAT_NORMAL_NOMAX; } } private static function initPlaceholderFormatters() : array { return ['bar' => function (self $bar, OutputInterface $output) { $completeBars = $bar->getBarOffset(); $display = \str_repeat($bar->getBarCharacter(), $completeBars); if ($completeBars < $bar->getBarWidth()) { $emptyBars = $bar->getBarWidth() - $completeBars - Helper::length(Helper::removeDecoration($output->getFormatter(), $bar->getProgressCharacter())); $display .= $bar->getProgressCharacter() . \str_repeat($bar->getEmptyBarCharacter(), $emptyBars); } return $display; }, 'elapsed' => function (self $bar) { return Helper::formatTime(\time() - $bar->getStartTime()); }, 'remaining' => function (self $bar) { if (!$bar->getMaxSteps()) { throw new LogicException('Unable to display the remaining time if the maximum number of steps is not set.'); } return Helper::formatTime($bar->getRemaining()); }, 'estimated' => function (self $bar) { if (!$bar->getMaxSteps()) { throw new LogicException('Unable to display the estimated time if the maximum number of steps is not set.'); } return Helper::formatTime($bar->getEstimated()); }, 'memory' => function (self $bar) { return Helper::formatMemory(\memory_get_usage(\true)); }, 'current' => function (self $bar) { return \str_pad($bar->getProgress(), $bar->getStepWidth(), ' ', \STR_PAD_LEFT); }, 'max' => function (self $bar) { return $bar->getMaxSteps(); }, 'percent' => function (self $bar) { return \floor($bar->getProgressPercent() * 100); }]; } private static function initFormats() : array { return [self::FORMAT_NORMAL => ' %current%/%max% [%bar%] %percent:3s%%', self::FORMAT_NORMAL_NOMAX => ' %current% [%bar%]', self::FORMAT_VERBOSE => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%', self::FORMAT_VERBOSE_NOMAX => ' %current% [%bar%] %elapsed:6s%', self::FORMAT_VERY_VERBOSE => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s%', self::FORMAT_VERY_VERBOSE_NOMAX => ' %current% [%bar%] %elapsed:6s%', self::FORMAT_DEBUG => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%', self::FORMAT_DEBUG_NOMAX => ' %current% [%bar%] %elapsed:6s% %memory:6s%']; } private function buildLine() : string { $regex = "{%([a-z\\-_]+)(?:\\:([^%]+))?%}i"; $callback = function ($matches) { if ($formatter = $this::getPlaceholderFormatterDefinition($matches[1])) { $text = $formatter($this, $this->output); } elseif (isset($this->messages[$matches[1]])) { $text = $this->messages[$matches[1]]; } else { return $matches[0]; } if (isset($matches[2])) { $text = \sprintf('%' . $matches[2], $text); } return $text; }; $line = \preg_replace_callback($regex, $callback, $this->format); // gets string length for each sub line with multiline format $linesLength = \array_map(function ($subLine) { return Helper::width(Helper::removeDecoration($this->output->getFormatter(), \rtrim($subLine, "\r"))); }, \explode("\n", $line)); $linesWidth = \max($linesLength); $terminalWidth = $this->terminal->getWidth(); if ($linesWidth <= $terminalWidth) { return $line; } $this->setBarWidth($this->barWidth - $linesWidth + $terminalWidth); return \preg_replace_callback($regex, $callback, $this->format); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; /** * Marks a row as being a separator. * * @author Fabien Potencier */ class TableSeparator extends TableCell { public function __construct(array $options = []) { parent::__construct('', $options); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; /** * @internal */ class TableRows implements \IteratorAggregate { private $generator; public function __construct(\Closure $generator) { $this->generator = $generator; } public function getIterator() : \Traversable { return ($this->generator)(); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatter; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Question\ChoiceQuestion; use _PHPStan_b22655c3f\Symfony\Component\Console\Question\ConfirmationQuestion; use _PHPStan_b22655c3f\Symfony\Component\Console\Question\Question; use _PHPStan_b22655c3f\Symfony\Component\Console\Style\SymfonyStyle; /** * Symfony Style Guide compliant question helper. * * @author Kevin Bond */ class SymfonyQuestionHelper extends QuestionHelper { /** * {@inheritdoc} */ protected function writePrompt(OutputInterface $output, Question $question) { $text = OutputFormatter::escapeTrailingBackslash($question->getQuestion()); $default = $question->getDefault(); if ($question->isMultiline()) { $text .= \sprintf(' (press %s to continue)', $this->getEofShortcut()); } switch (\true) { case null === $default: $text = \sprintf(' %s:', $text); break; case $question instanceof ConfirmationQuestion: $text = \sprintf(' %s (yes/no) [%s]:', $text, $default ? 'yes' : 'no'); break; case $question instanceof ChoiceQuestion && $question->isMultiselect(): $choices = $question->getChoices(); $default = \explode(',', $default); foreach ($default as $key => $value) { $default[$key] = $choices[\trim($value)]; } $text = \sprintf(' %s [%s]:', $text, OutputFormatter::escape(\implode(', ', $default))); break; case $question instanceof ChoiceQuestion: $choices = $question->getChoices(); $text = \sprintf(' %s [%s]:', $text, OutputFormatter::escape($choices[$default] ?? $default)); break; default: $text = \sprintf(' %s [%s]:', $text, OutputFormatter::escape($default)); } $output->writeln($text); $prompt = ' > '; if ($question instanceof ChoiceQuestion) { $output->writeln($this->formatChoiceQuestionChoices($question, 'comment')); $prompt = $question->getPrompt(); } $output->write($prompt); } /** * {@inheritdoc} */ protected function writeError(OutputInterface $output, \Exception $error) { if ($output instanceof SymfonyStyle) { $output->newLine(); $output->error($error->getMessage()); return; } parent::writeError($output, $error); } private function getEofShortcut() : string { if ('Windows' === \PHP_OS_FAMILY) { return 'Ctrl+Z then Enter'; } return 'Ctrl+D'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; /** * HelperInterface is the interface all helpers must implement. * * @author Fabien Potencier */ interface HelperInterface { /** * Sets the helper set associated with this helper. */ public function setHelperSet(?HelperSet $helperSet = null); /** * Gets the helper set associated with this helper. * * @return HelperSet|null */ public function getHelperSet(); /** * Returns the canonical name of this helper. * * @return string */ public function getName(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor\DescriptorInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor\JsonDescriptor; use _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor\MarkdownDescriptor; use _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor\TextDescriptor; use _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor\XmlDescriptor; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * This class adds helper method to describe objects in various formats. * * @author Jean-François Simon */ class DescriptorHelper extends Helper { /** * @var DescriptorInterface[] */ private $descriptors = []; public function __construct() { $this->register('txt', new TextDescriptor())->register('xml', new XmlDescriptor())->register('json', new JsonDescriptor())->register('md', new MarkdownDescriptor()); } /** * Describes an object if supported. * * Available options are: * * format: string, the output format name * * raw_text: boolean, sets output type as raw * * @throws InvalidArgumentException when the given format is not supported */ public function describe(OutputInterface $output, ?object $object, array $options = []) { $options = \array_merge(['raw_text' => \false, 'format' => 'txt'], $options); if (!isset($this->descriptors[$options['format']])) { throw new InvalidArgumentException(\sprintf('Unsupported format "%s".', $options['format'])); } $descriptor = $this->descriptors[$options['format']]; $descriptor->describe($output, $object, $options); } /** * Registers a descriptor. * * @return $this */ public function register(string $format, DescriptorInterface $descriptor) { $this->descriptors[$format] = $descriptor; return $this; } /** * {@inheritdoc} */ public function getName() { return 'descriptor'; } public function getFormats() : array { return \array_keys($this->descriptors); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\LogicException; /** * Defines the styles for a Table. * * @author Fabien Potencier * @author Саша Стаменковић * @author Dany Maillard */ class TableStyle { private $paddingChar = ' '; private $horizontalOutsideBorderChar = '-'; private $horizontalInsideBorderChar = '-'; private $verticalOutsideBorderChar = '|'; private $verticalInsideBorderChar = '|'; private $crossingChar = '+'; private $crossingTopRightChar = '+'; private $crossingTopMidChar = '+'; private $crossingTopLeftChar = '+'; private $crossingMidRightChar = '+'; private $crossingBottomRightChar = '+'; private $crossingBottomMidChar = '+'; private $crossingBottomLeftChar = '+'; private $crossingMidLeftChar = '+'; private $crossingTopLeftBottomChar = '+'; private $crossingTopMidBottomChar = '+'; private $crossingTopRightBottomChar = '+'; private $headerTitleFormat = ' %s '; private $footerTitleFormat = ' %s '; private $cellHeaderFormat = '%s'; private $cellRowFormat = '%s'; private $cellRowContentFormat = ' %s '; private $borderFormat = '%s'; private $padType = \STR_PAD_RIGHT; /** * Sets padding character, used for cell padding. * * @return $this */ public function setPaddingChar(string $paddingChar) { if (!$paddingChar) { throw new LogicException('The padding char must not be empty.'); } $this->paddingChar = $paddingChar; return $this; } /** * Gets padding character, used for cell padding. * * @return string */ public function getPaddingChar() { return $this->paddingChar; } /** * Sets horizontal border characters. * * * ╔═══════════════╤══════════════════════════╤══════════════════╗ * 1 ISBN 2 Title │ Author ║ * ╠═══════════════╪══════════════════════════╪══════════════════╣ * ║ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri ║ * ║ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens ║ * ║ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien ║ * ║ 80-902734-1-6 │ And Then There Were None │ Agatha Christie ║ * ╚═══════════════╧══════════════════════════╧══════════════════╝ * * * @return $this */ public function setHorizontalBorderChars(string $outside, ?string $inside = null) : self { $this->horizontalOutsideBorderChar = $outside; $this->horizontalInsideBorderChar = $inside ?? $outside; return $this; } /** * Sets vertical border characters. * * * ╔═══════════════╤══════════════════════════╤══════════════════╗ * ║ ISBN │ Title │ Author ║ * ╠═══════1═══════╪══════════════════════════╪══════════════════╣ * ║ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri ║ * ║ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens ║ * ╟───────2───────┼──────────────────────────┼──────────────────╢ * ║ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien ║ * ║ 80-902734-1-6 │ And Then There Were None │ Agatha Christie ║ * ╚═══════════════╧══════════════════════════╧══════════════════╝ * * * @return $this */ public function setVerticalBorderChars(string $outside, ?string $inside = null) : self { $this->verticalOutsideBorderChar = $outside; $this->verticalInsideBorderChar = $inside ?? $outside; return $this; } /** * Gets border characters. * * @internal */ public function getBorderChars() : array { return [$this->horizontalOutsideBorderChar, $this->verticalOutsideBorderChar, $this->horizontalInsideBorderChar, $this->verticalInsideBorderChar]; } /** * Sets crossing characters. * * Example: * * 1═══════════════2══════════════════════════2══════════════════3 * ║ ISBN │ Title │ Author ║ * 8'══════════════0'═════════════════════════0'═════════════════4' * ║ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri ║ * ║ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens ║ * 8───────────────0──────────────────────────0──────────────────4 * ║ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien ║ * ║ 80-902734-1-6 │ And Then There Were None │ Agatha Christie ║ * 7═══════════════6══════════════════════════6══════════════════5 * * * @param string $cross Crossing char (see #0 of example) * @param string $topLeft Top left char (see #1 of example) * @param string $topMid Top mid char (see #2 of example) * @param string $topRight Top right char (see #3 of example) * @param string $midRight Mid right char (see #4 of example) * @param string $bottomRight Bottom right char (see #5 of example) * @param string $bottomMid Bottom mid char (see #6 of example) * @param string $bottomLeft Bottom left char (see #7 of example) * @param string $midLeft Mid left char (see #8 of example) * @param string|null $topLeftBottom Top left bottom char (see #8' of example), equals to $midLeft if null * @param string|null $topMidBottom Top mid bottom char (see #0' of example), equals to $cross if null * @param string|null $topRightBottom Top right bottom char (see #4' of example), equals to $midRight if null * * @return $this */ public function setCrossingChars(string $cross, string $topLeft, string $topMid, string $topRight, string $midRight, string $bottomRight, string $bottomMid, string $bottomLeft, string $midLeft, ?string $topLeftBottom = null, ?string $topMidBottom = null, ?string $topRightBottom = null) : self { $this->crossingChar = $cross; $this->crossingTopLeftChar = $topLeft; $this->crossingTopMidChar = $topMid; $this->crossingTopRightChar = $topRight; $this->crossingMidRightChar = $midRight; $this->crossingBottomRightChar = $bottomRight; $this->crossingBottomMidChar = $bottomMid; $this->crossingBottomLeftChar = $bottomLeft; $this->crossingMidLeftChar = $midLeft; $this->crossingTopLeftBottomChar = $topLeftBottom ?? $midLeft; $this->crossingTopMidBottomChar = $topMidBottom ?? $cross; $this->crossingTopRightBottomChar = $topRightBottom ?? $midRight; return $this; } /** * Sets default crossing character used for each cross. * * @see {@link setCrossingChars()} for setting each crossing individually. */ public function setDefaultCrossingChar(string $char) : self { return $this->setCrossingChars($char, $char, $char, $char, $char, $char, $char, $char, $char); } /** * Gets crossing character. * * @return string */ public function getCrossingChar() { return $this->crossingChar; } /** * Gets crossing characters. * * @internal */ public function getCrossingChars() : array { return [$this->crossingChar, $this->crossingTopLeftChar, $this->crossingTopMidChar, $this->crossingTopRightChar, $this->crossingMidRightChar, $this->crossingBottomRightChar, $this->crossingBottomMidChar, $this->crossingBottomLeftChar, $this->crossingMidLeftChar, $this->crossingTopLeftBottomChar, $this->crossingTopMidBottomChar, $this->crossingTopRightBottomChar]; } /** * Sets header cell format. * * @return $this */ public function setCellHeaderFormat(string $cellHeaderFormat) { $this->cellHeaderFormat = $cellHeaderFormat; return $this; } /** * Gets header cell format. * * @return string */ public function getCellHeaderFormat() { return $this->cellHeaderFormat; } /** * Sets row cell format. * * @return $this */ public function setCellRowFormat(string $cellRowFormat) { $this->cellRowFormat = $cellRowFormat; return $this; } /** * Gets row cell format. * * @return string */ public function getCellRowFormat() { return $this->cellRowFormat; } /** * Sets row cell content format. * * @return $this */ public function setCellRowContentFormat(string $cellRowContentFormat) { $this->cellRowContentFormat = $cellRowContentFormat; return $this; } /** * Gets row cell content format. * * @return string */ public function getCellRowContentFormat() { return $this->cellRowContentFormat; } /** * Sets table border format. * * @return $this */ public function setBorderFormat(string $borderFormat) { $this->borderFormat = $borderFormat; return $this; } /** * Gets table border format. * * @return string */ public function getBorderFormat() { return $this->borderFormat; } /** * Sets cell padding type. * * @return $this */ public function setPadType(int $padType) { if (!\in_array($padType, [\STR_PAD_LEFT, \STR_PAD_RIGHT, \STR_PAD_BOTH], \true)) { throw new InvalidArgumentException('Invalid padding type. Expected one of (STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH).'); } $this->padType = $padType; return $this; } /** * Gets cell padding type. * * @return int */ public function getPadType() { return $this->padType; } public function getHeaderTitleFormat() : string { return $this->headerTitleFormat; } /** * @return $this */ public function setHeaderTitleFormat(string $format) : self { $this->headerTitleFormat = $format; return $this; } public function getFooterTitleFormat() : string { return $this->footerTitleFormat; } /** * @return $this */ public function setFooterTitleFormat(string $format) : self { $this->footerTitleFormat = $format; return $this; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatter; /** * The Formatter class provides helpers to format messages. * * @author Fabien Potencier */ class FormatterHelper extends Helper { /** * Formats a message within a section. * * @return string */ public function formatSection(string $section, string $message, string $style = 'info') { return \sprintf('<%s>[%s] %s', $style, $section, $style, $message); } /** * Formats a message as a block of text. * * @param string|array $messages The message to write in the block * * @return string */ public function formatBlock($messages, string $style, bool $large = \false) { if (!\is_array($messages)) { $messages = [$messages]; } $len = 0; $lines = []; foreach ($messages as $message) { $message = OutputFormatter::escape($message); $lines[] = \sprintf($large ? ' %s ' : ' %s ', $message); $len = \max(self::width($message) + ($large ? 4 : 2), $len); } $messages = $large ? [\str_repeat(' ', $len)] : []; for ($i = 0; isset($lines[$i]); ++$i) { $messages[] = $lines[$i] . \str_repeat(' ', $len - self::width($lines[$i])); } if ($large) { $messages[] = \str_repeat(' ', $len); } for ($i = 0; isset($messages[$i]); ++$i) { $messages[$i] = \sprintf('<%s>%s', $style, $messages[$i], $style); } return \implode("\n", $messages); } /** * Truncates a message to the given length. * * @return string */ public function truncate(string $message, int $length, string $suffix = '...') { $computedLength = $length - self::width($suffix); if ($computedLength > self::width($message)) { return $message; } return self::substr($message, 0, $length) . $suffix; } /** * {@inheritdoc} */ public function getName() { return 'formatter'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputAwareInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; /** * An implementation of InputAwareInterface for Helpers. * * @author Wouter J */ abstract class InputAwareHelper extends Helper implements InputAwareInterface { protected $input; /** * {@inheritdoc} */ public function setInput(InputInterface $input) { $this->input = $input; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; /** * HelperSet represents a set of helpers to be used with a command. * * @author Fabien Potencier * * @implements \IteratorAggregate */ class HelperSet implements \IteratorAggregate { /** @var array */ private $helpers = []; private $command; /** * @param Helper[] $helpers An array of helper */ public function __construct(array $helpers = []) { foreach ($helpers as $alias => $helper) { $this->set($helper, \is_int($alias) ? null : $alias); } } public function set(HelperInterface $helper, ?string $alias = null) { $this->helpers[$helper->getName()] = $helper; if (null !== $alias) { $this->helpers[$alias] = $helper; } $helper->setHelperSet($this); } /** * Returns true if the helper if defined. * * @return bool */ public function has(string $name) { return isset($this->helpers[$name]); } /** * Gets a helper value. * * @return HelperInterface * * @throws InvalidArgumentException if the helper is not defined */ public function get(string $name) { if (!$this->has($name)) { throw new InvalidArgumentException(\sprintf('The helper "%s" is not defined.', $name)); } return $this->helpers[$name]; } /** * @deprecated since Symfony 5.4 */ public function setCommand(?Command $command = null) { trigger_deprecation('symfony/console', '5.4', 'Method "%s()" is deprecated.', __METHOD__); $this->command = $command; } /** * Gets the command associated with this helper set. * * @return Command * * @deprecated since Symfony 5.4 */ public function getCommand() { trigger_deprecation('symfony/console', '5.4', 'Method "%s()" is deprecated.', __METHOD__); return $this->command; } /** * @return \Traversable */ #[\ReturnTypeWillChange] public function getIterator() { return new \ArrayIterator($this->helpers); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\RuntimeException; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatter; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\WrappableOutputFormatterInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\ConsoleSectionOutput; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * Provides helpers to display a table. * * @author Fabien Potencier * @author Саша Стаменковић * @author Abdellatif Ait boudad * @author Max Grigorian * @author Dany Maillard */ class Table { private const SEPARATOR_TOP = 0; private const SEPARATOR_TOP_BOTTOM = 1; private const SEPARATOR_MID = 2; private const SEPARATOR_BOTTOM = 3; private const BORDER_OUTSIDE = 0; private const BORDER_INSIDE = 1; private $headerTitle; private $footerTitle; /** * Table headers. */ private $headers = []; /** * Table rows. */ private $rows = []; private $horizontal = \false; /** * Column widths cache. */ private $effectiveColumnWidths = []; /** * Number of columns cache. * * @var int */ private $numberOfColumns; /** * @var OutputInterface */ private $output; /** * @var TableStyle */ private $style; /** * @var array */ private $columnStyles = []; /** * User set column widths. * * @var array */ private $columnWidths = []; private $columnMaxWidths = []; /** * @var array|null */ private static $styles; private $rendered = \false; public function __construct(OutputInterface $output) { $this->output = $output; if (!self::$styles) { self::$styles = self::initStyles(); } $this->setStyle('default'); } /** * Sets a style definition. */ public static function setStyleDefinition(string $name, TableStyle $style) { if (!self::$styles) { self::$styles = self::initStyles(); } self::$styles[$name] = $style; } /** * Gets a style definition by name. * * @return TableStyle */ public static function getStyleDefinition(string $name) { if (!self::$styles) { self::$styles = self::initStyles(); } if (isset(self::$styles[$name])) { return self::$styles[$name]; } throw new InvalidArgumentException(\sprintf('Style "%s" is not defined.', $name)); } /** * Sets table style. * * @param TableStyle|string $name The style name or a TableStyle instance * * @return $this */ public function setStyle($name) { $this->style = $this->resolveStyle($name); return $this; } /** * Gets the current table style. * * @return TableStyle */ public function getStyle() { return $this->style; } /** * Sets table column style. * * @param TableStyle|string $name The style name or a TableStyle instance * * @return $this */ public function setColumnStyle(int $columnIndex, $name) { $this->columnStyles[$columnIndex] = $this->resolveStyle($name); return $this; } /** * Gets the current style for a column. * * If style was not set, it returns the global table style. * * @return TableStyle */ public function getColumnStyle(int $columnIndex) { return $this->columnStyles[$columnIndex] ?? $this->getStyle(); } /** * Sets the minimum width of a column. * * @return $this */ public function setColumnWidth(int $columnIndex, int $width) { $this->columnWidths[$columnIndex] = $width; return $this; } /** * Sets the minimum width of all columns. * * @return $this */ public function setColumnWidths(array $widths) { $this->columnWidths = []; foreach ($widths as $index => $width) { $this->setColumnWidth($index, $width); } return $this; } /** * Sets the maximum width of a column. * * Any cell within this column which contents exceeds the specified width will be wrapped into multiple lines, while * formatted strings are preserved. * * @return $this */ public function setColumnMaxWidth(int $columnIndex, int $width) : self { if (!$this->output->getFormatter() instanceof WrappableOutputFormatterInterface) { throw new \LogicException(\sprintf('Setting a maximum column width is only supported when using a "%s" formatter, got "%s".', WrappableOutputFormatterInterface::class, \get_debug_type($this->output->getFormatter()))); } $this->columnMaxWidths[$columnIndex] = $width; return $this; } /** * @return $this */ public function setHeaders(array $headers) { $headers = \array_values($headers); if (!empty($headers) && !\is_array($headers[0])) { $headers = [$headers]; } $this->headers = $headers; return $this; } public function setRows(array $rows) { $this->rows = []; return $this->addRows($rows); } /** * @return $this */ public function addRows(array $rows) { foreach ($rows as $row) { $this->addRow($row); } return $this; } /** * @return $this */ public function addRow($row) { if ($row instanceof TableSeparator) { $this->rows[] = $row; return $this; } if (!\is_array($row)) { throw new InvalidArgumentException('A row must be an array or a TableSeparator instance.'); } $this->rows[] = \array_values($row); return $this; } /** * Adds a row to the table, and re-renders the table. * * @return $this */ public function appendRow($row) : self { if (!$this->output instanceof ConsoleSectionOutput) { throw new RuntimeException(\sprintf('Output should be an instance of "%s" when calling "%s".', ConsoleSectionOutput::class, __METHOD__)); } if ($this->rendered) { $this->output->clear($this->calculateRowCount()); } $this->addRow($row); $this->render(); return $this; } /** * @return $this */ public function setRow($column, array $row) { $this->rows[$column] = $row; return $this; } /** * @return $this */ public function setHeaderTitle(?string $title) : self { $this->headerTitle = $title; return $this; } /** * @return $this */ public function setFooterTitle(?string $title) : self { $this->footerTitle = $title; return $this; } /** * @return $this */ public function setHorizontal(bool $horizontal = \true) : self { $this->horizontal = $horizontal; return $this; } /** * Renders table to output. * * Example: * * +---------------+-----------------------+------------------+ * | ISBN | Title | Author | * +---------------+-----------------------+------------------+ * | 99921-58-10-7 | Divine Comedy | Dante Alighieri | * | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | * | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien | * +---------------+-----------------------+------------------+ */ public function render() { $divider = new TableSeparator(); if ($this->horizontal) { $rows = []; foreach ($this->headers[0] ?? [] as $i => $header) { $rows[$i] = [$header]; foreach ($this->rows as $row) { if ($row instanceof TableSeparator) { continue; } if (isset($row[$i])) { $rows[$i][] = $row[$i]; } elseif ($rows[$i][0] instanceof TableCell && $rows[$i][0]->getColspan() >= 2) { // Noop, there is a "title" } else { $rows[$i][] = null; } } } } else { $rows = \array_merge($this->headers, [$divider], $this->rows); } $this->calculateNumberOfColumns($rows); $rowGroups = $this->buildTableRows($rows); $this->calculateColumnsWidth($rowGroups); $isHeader = !$this->horizontal; $isFirstRow = $this->horizontal; $hasTitle = (bool) $this->headerTitle; foreach ($rowGroups as $rowGroup) { $isHeaderSeparatorRendered = \false; foreach ($rowGroup as $row) { if ($divider === $row) { $isHeader = \false; $isFirstRow = \true; continue; } if ($row instanceof TableSeparator) { $this->renderRowSeparator(); continue; } if (!$row) { continue; } if ($isHeader && !$isHeaderSeparatorRendered) { $this->renderRowSeparator($isHeader ? self::SEPARATOR_TOP : self::SEPARATOR_TOP_BOTTOM, $hasTitle ? $this->headerTitle : null, $hasTitle ? $this->style->getHeaderTitleFormat() : null); $hasTitle = \false; $isHeaderSeparatorRendered = \true; } if ($isFirstRow) { $this->renderRowSeparator($isHeader ? self::SEPARATOR_TOP : self::SEPARATOR_TOP_BOTTOM, $hasTitle ? $this->headerTitle : null, $hasTitle ? $this->style->getHeaderTitleFormat() : null); $isFirstRow = \false; $hasTitle = \false; } if ($this->horizontal) { $this->renderRow($row, $this->style->getCellRowFormat(), $this->style->getCellHeaderFormat()); } else { $this->renderRow($row, $isHeader ? $this->style->getCellHeaderFormat() : $this->style->getCellRowFormat()); } } } $this->renderRowSeparator(self::SEPARATOR_BOTTOM, $this->footerTitle, $this->style->getFooterTitleFormat()); $this->cleanup(); $this->rendered = \true; } /** * Renders horizontal header separator. * * Example: * * +-----+-----------+-------+ */ private function renderRowSeparator(int $type = self::SEPARATOR_MID, ?string $title = null, ?string $titleFormat = null) { if (0 === ($count = $this->numberOfColumns)) { return; } $borders = $this->style->getBorderChars(); if (!$borders[0] && !$borders[2] && !$this->style->getCrossingChar()) { return; } $crossings = $this->style->getCrossingChars(); if (self::SEPARATOR_MID === $type) { [$horizontal, $leftChar, $midChar, $rightChar] = [$borders[2], $crossings[8], $crossings[0], $crossings[4]]; } elseif (self::SEPARATOR_TOP === $type) { [$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[1], $crossings[2], $crossings[3]]; } elseif (self::SEPARATOR_TOP_BOTTOM === $type) { [$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[9], $crossings[10], $crossings[11]]; } else { [$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[7], $crossings[6], $crossings[5]]; } $markup = $leftChar; for ($column = 0; $column < $count; ++$column) { $markup .= \str_repeat($horizontal, $this->effectiveColumnWidths[$column]); $markup .= $column === $count - 1 ? $rightChar : $midChar; } if (null !== $title) { $titleLength = Helper::width(Helper::removeDecoration($formatter = $this->output->getFormatter(), $formattedTitle = \sprintf($titleFormat, $title))); $markupLength = Helper::width($markup); if ($titleLength > ($limit = $markupLength - 4)) { $titleLength = $limit; $formatLength = Helper::width(Helper::removeDecoration($formatter, \sprintf($titleFormat, ''))); $formattedTitle = \sprintf($titleFormat, Helper::substr($title, 0, $limit - $formatLength - 3) . '...'); } $titleStart = \intdiv($markupLength - $titleLength, 2); if (\false === \mb_detect_encoding($markup, null, \true)) { $markup = \substr_replace($markup, $formattedTitle, $titleStart, $titleLength); } else { $markup = \mb_substr($markup, 0, $titleStart) . $formattedTitle . \mb_substr($markup, $titleStart + $titleLength); } } $this->output->writeln(\sprintf($this->style->getBorderFormat(), $markup)); } /** * Renders vertical column separator. */ private function renderColumnSeparator(int $type = self::BORDER_OUTSIDE) : string { $borders = $this->style->getBorderChars(); return \sprintf($this->style->getBorderFormat(), self::BORDER_OUTSIDE === $type ? $borders[1] : $borders[3]); } /** * Renders table row. * * Example: * * | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | */ private function renderRow(array $row, string $cellFormat, ?string $firstCellFormat = null) { $rowContent = $this->renderColumnSeparator(self::BORDER_OUTSIDE); $columns = $this->getRowColumns($row); $last = \count($columns) - 1; foreach ($columns as $i => $column) { if ($firstCellFormat && 0 === $i) { $rowContent .= $this->renderCell($row, $column, $firstCellFormat); } else { $rowContent .= $this->renderCell($row, $column, $cellFormat); } $rowContent .= $this->renderColumnSeparator($last === $i ? self::BORDER_OUTSIDE : self::BORDER_INSIDE); } $this->output->writeln($rowContent); } /** * Renders table cell with padding. */ private function renderCell(array $row, int $column, string $cellFormat) : string { $cell = $row[$column] ?? ''; $width = $this->effectiveColumnWidths[$column]; if ($cell instanceof TableCell && $cell->getColspan() > 1) { // add the width of the following columns(numbers of colspan). foreach (\range($column + 1, $column + $cell->getColspan() - 1) as $nextColumn) { $width += $this->getColumnSeparatorWidth() + $this->effectiveColumnWidths[$nextColumn]; } } // str_pad won't work properly with multi-byte strings, we need to fix the padding if (\false !== ($encoding = \mb_detect_encoding($cell, null, \true))) { $width += \strlen($cell) - \mb_strwidth($cell, $encoding); } $style = $this->getColumnStyle($column); if ($cell instanceof TableSeparator) { return \sprintf($style->getBorderFormat(), \str_repeat($style->getBorderChars()[2], $width)); } $width += Helper::length($cell) - Helper::length(Helper::removeDecoration($this->output->getFormatter(), $cell)); $content = \sprintf($style->getCellRowContentFormat(), $cell); $padType = $style->getPadType(); if ($cell instanceof TableCell && $cell->getStyle() instanceof TableCellStyle) { $isNotStyledByTag = !\preg_match('/^<(\\w+|(\\w+=[\\w,]+;?)*)>.+<\\/(\\w+|(\\w+=\\w+;?)*)?>$/', $cell); if ($isNotStyledByTag) { $cellFormat = $cell->getStyle()->getCellFormat(); if (!\is_string($cellFormat)) { $tag = \http_build_query($cell->getStyle()->getTagOptions(), '', ';'); $cellFormat = '<' . $tag . '>%s'; } if (\strstr($content, '')) { $content = \str_replace('', '', $content); $width -= 3; } if (\strstr($content, '')) { $content = \str_replace('', '', $content); $width -= \strlen(''); } } $padType = $cell->getStyle()->getPadByAlign(); } return \sprintf($cellFormat, \str_pad($content, $width, $style->getPaddingChar(), $padType)); } /** * Calculate number of columns for this table. */ private function calculateNumberOfColumns(array $rows) { $columns = [0]; foreach ($rows as $row) { if ($row instanceof TableSeparator) { continue; } $columns[] = $this->getNumberOfColumns($row); } $this->numberOfColumns = \max($columns); } private function buildTableRows(array $rows) : TableRows { /** @var WrappableOutputFormatterInterface $formatter */ $formatter = $this->output->getFormatter(); $unmergedRows = []; for ($rowKey = 0; $rowKey < \count($rows); ++$rowKey) { $rows = $this->fillNextRows($rows, $rowKey); // Remove any new line breaks and replace it with a new line foreach ($rows[$rowKey] as $column => $cell) { $colspan = $cell instanceof TableCell ? $cell->getColspan() : 1; if (isset($this->columnMaxWidths[$column]) && Helper::width(Helper::removeDecoration($formatter, $cell)) > $this->columnMaxWidths[$column]) { $cell = $formatter->formatAndWrap($cell, $this->columnMaxWidths[$column] * $colspan); } if (!\strstr($cell ?? '', "\n")) { continue; } $eol = \str_contains($cell ?? '', "\r\n") ? "\r\n" : "\n"; $escaped = \implode($eol, \array_map([OutputFormatter::class, 'escapeTrailingBackslash'], \explode($eol, $cell))); $cell = $cell instanceof TableCell ? new TableCell($escaped, ['colspan' => $cell->getColspan()]) : $escaped; $lines = \explode($eol, \str_replace($eol, '' . $eol, $cell)); foreach ($lines as $lineKey => $line) { if ($colspan > 1) { $line = new TableCell($line, ['colspan' => $colspan]); } if (0 === $lineKey) { $rows[$rowKey][$column] = $line; } else { if (!\array_key_exists($rowKey, $unmergedRows) || !\array_key_exists($lineKey, $unmergedRows[$rowKey])) { $unmergedRows[$rowKey][$lineKey] = $this->copyRow($rows, $rowKey); } $unmergedRows[$rowKey][$lineKey][$column] = $line; } } } } return new TableRows(function () use($rows, $unmergedRows) : \Traversable { foreach ($rows as $rowKey => $row) { $rowGroup = [$row instanceof TableSeparator ? $row : $this->fillCells($row)]; if (isset($unmergedRows[$rowKey])) { foreach ($unmergedRows[$rowKey] as $row) { $rowGroup[] = $row instanceof TableSeparator ? $row : $this->fillCells($row); } } (yield $rowGroup); } }); } private function calculateRowCount() : int { $numberOfRows = \count(\iterator_to_array($this->buildTableRows(\array_merge($this->headers, [new TableSeparator()], $this->rows)))); if ($this->headers) { ++$numberOfRows; // Add row for header separator } if (\count($this->rows) > 0) { ++$numberOfRows; // Add row for footer separator } return $numberOfRows; } /** * fill rows that contains rowspan > 1. * * @throws InvalidArgumentException */ private function fillNextRows(array $rows, int $line) : array { $unmergedRows = []; foreach ($rows[$line] as $column => $cell) { if (null !== $cell && !$cell instanceof TableCell && !\is_scalar($cell) && !(\is_object($cell) && \method_exists($cell, '__toString'))) { throw new InvalidArgumentException(\sprintf('A cell must be a TableCell, a scalar or an object implementing "__toString()", "%s" given.', \get_debug_type($cell))); } if ($cell instanceof TableCell && $cell->getRowspan() > 1) { $nbLines = $cell->getRowspan() - 1; $lines = [$cell]; if (\strstr($cell, "\n")) { $eol = \str_contains($cell, "\r\n") ? "\r\n" : "\n"; $lines = \explode($eol, \str_replace($eol, '' . $eol . '', $cell)); $nbLines = \count($lines) > $nbLines ? \substr_count($cell, $eol) : $nbLines; $rows[$line][$column] = new TableCell($lines[0], ['colspan' => $cell->getColspan(), 'style' => $cell->getStyle()]); unset($lines[0]); } // create a two dimensional array (rowspan x colspan) $unmergedRows = \array_replace_recursive(\array_fill($line + 1, $nbLines, []), $unmergedRows); foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) { $value = $lines[$unmergedRowKey - $line] ?? ''; $unmergedRows[$unmergedRowKey][$column] = new TableCell($value, ['colspan' => $cell->getColspan(), 'style' => $cell->getStyle()]); if ($nbLines === $unmergedRowKey - $line) { break; } } } } foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) { // we need to know if $unmergedRow will be merged or inserted into $rows if (isset($rows[$unmergedRowKey]) && \is_array($rows[$unmergedRowKey]) && $this->getNumberOfColumns($rows[$unmergedRowKey]) + $this->getNumberOfColumns($unmergedRows[$unmergedRowKey]) <= $this->numberOfColumns) { foreach ($unmergedRow as $cellKey => $cell) { // insert cell into row at cellKey position \array_splice($rows[$unmergedRowKey], $cellKey, 0, [$cell]); } } else { $row = $this->copyRow($rows, $unmergedRowKey - 1); foreach ($unmergedRow as $column => $cell) { if (!empty($cell)) { $row[$column] = $unmergedRow[$column]; } } \array_splice($rows, $unmergedRowKey, 0, [$row]); } } return $rows; } /** * fill cells for a row that contains colspan > 1. */ private function fillCells(iterable $row) { $newRow = []; foreach ($row as $column => $cell) { $newRow[] = $cell; if ($cell instanceof TableCell && $cell->getColspan() > 1) { foreach (\range($column + 1, $column + $cell->getColspan() - 1) as $position) { // insert empty value at column position $newRow[] = ''; } } } return $newRow ?: $row; } private function copyRow(array $rows, int $line) : array { $row = $rows[$line]; foreach ($row as $cellKey => $cellValue) { $row[$cellKey] = ''; if ($cellValue instanceof TableCell) { $row[$cellKey] = new TableCell('', ['colspan' => $cellValue->getColspan()]); } } return $row; } /** * Gets number of columns by row. */ private function getNumberOfColumns(array $row) : int { $columns = \count($row); foreach ($row as $column) { $columns += $column instanceof TableCell ? $column->getColspan() - 1 : 0; } return $columns; } /** * Gets list of columns for the given row. */ private function getRowColumns(array $row) : array { $columns = \range(0, $this->numberOfColumns - 1); foreach ($row as $cellKey => $cell) { if ($cell instanceof TableCell && $cell->getColspan() > 1) { // exclude grouped columns. $columns = \array_diff($columns, \range($cellKey + 1, $cellKey + $cell->getColspan() - 1)); } } return $columns; } /** * Calculates columns widths. */ private function calculateColumnsWidth(iterable $groups) { for ($column = 0; $column < $this->numberOfColumns; ++$column) { $lengths = []; foreach ($groups as $group) { foreach ($group as $row) { if ($row instanceof TableSeparator) { continue; } foreach ($row as $i => $cell) { if ($cell instanceof TableCell) { $textContent = Helper::removeDecoration($this->output->getFormatter(), $cell); $textLength = Helper::width($textContent); if ($textLength > 0) { $contentColumns = \mb_str_split($textContent, \ceil($textLength / $cell->getColspan())); foreach ($contentColumns as $position => $content) { $row[$i + $position] = $content; } } } } $lengths[] = $this->getCellWidth($row, $column); } } $this->effectiveColumnWidths[$column] = \max($lengths) + Helper::width($this->style->getCellRowContentFormat()) - 2; } } private function getColumnSeparatorWidth() : int { return Helper::width(\sprintf($this->style->getBorderFormat(), $this->style->getBorderChars()[3])); } private function getCellWidth(array $row, int $column) : int { $cellWidth = 0; if (isset($row[$column])) { $cell = $row[$column]; $cellWidth = Helper::width(Helper::removeDecoration($this->output->getFormatter(), $cell)); } $columnWidth = $this->columnWidths[$column] ?? 0; $cellWidth = \max($cellWidth, $columnWidth); return isset($this->columnMaxWidths[$column]) ? \min($this->columnMaxWidths[$column], $cellWidth) : $cellWidth; } /** * Called after rendering to cleanup cache data. */ private function cleanup() { $this->effectiveColumnWidths = []; $this->numberOfColumns = null; } /** * @return array */ private static function initStyles() : array { $borderless = new TableStyle(); $borderless->setHorizontalBorderChars('=')->setVerticalBorderChars(' ')->setDefaultCrossingChar(' '); $compact = new TableStyle(); $compact->setHorizontalBorderChars('')->setVerticalBorderChars('')->setDefaultCrossingChar('')->setCellRowContentFormat('%s '); $styleGuide = new TableStyle(); $styleGuide->setHorizontalBorderChars('-')->setVerticalBorderChars(' ')->setDefaultCrossingChar(' ')->setCellHeaderFormat('%s'); $box = (new TableStyle())->setHorizontalBorderChars('─')->setVerticalBorderChars('│')->setCrossingChars('┼', '┌', '┬', '┐', '┤', '┘', '┴', '└', '├'); $boxDouble = (new TableStyle())->setHorizontalBorderChars('═', '─')->setVerticalBorderChars('║', '│')->setCrossingChars('┼', '╔', '╤', '╗', '╢', '╝', '╧', '╚', '╟', '╠', '╪', '╣'); return ['default' => new TableStyle(), 'borderless' => $borderless, 'compact' => $compact, 'symfony-style-guide' => $styleGuide, 'box' => $box, 'box-double' => $boxDouble]; } private function resolveStyle($name) : TableStyle { if ($name instanceof TableStyle) { return $name; } if (isset(self::$styles[$name])) { return self::$styles[$name]; } throw new InvalidArgumentException(\sprintf('Style "%s" is not defined.', $name)); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; /** * @author Yewhen Khoptynskyi */ class TableCellStyle { public const DEFAULT_ALIGN = 'left'; private const TAG_OPTIONS = ['fg', 'bg', 'options']; private const ALIGN_MAP = ['left' => \STR_PAD_RIGHT, 'center' => \STR_PAD_BOTH, 'right' => \STR_PAD_LEFT]; private $options = ['fg' => 'default', 'bg' => 'default', 'options' => null, 'align' => self::DEFAULT_ALIGN, 'cellFormat' => null]; public function __construct(array $options = []) { if ($diff = \array_diff(\array_keys($options), \array_keys($this->options))) { throw new InvalidArgumentException(\sprintf('The TableCellStyle does not support the following options: \'%s\'.', \implode('\', \'', $diff))); } if (isset($options['align']) && !\array_key_exists($options['align'], self::ALIGN_MAP)) { throw new InvalidArgumentException(\sprintf('Wrong align value. Value must be following: \'%s\'.', \implode('\', \'', \array_keys(self::ALIGN_MAP)))); } $this->options = \array_merge($this->options, $options); } public function getOptions() : array { return $this->options; } /** * Gets options we need for tag for example fg, bg. * * @return string[] */ public function getTagOptions() { return \array_filter($this->getOptions(), function ($key) { return \in_array($key, self::TAG_OPTIONS) && isset($this->options[$key]); }, \ARRAY_FILTER_USE_KEY); } /** * @return int */ public function getPadByAlign() { return self::ALIGN_MAP[$this->getOptions()['align']]; } public function getCellFormat() : ?string { return $this->getOptions()['cellFormat']; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\LogicException; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * @author Kevin Bond */ class ProgressIndicator { private const FORMATS = ['normal' => ' %indicator% %message%', 'normal_no_ansi' => ' %message%', 'verbose' => ' %indicator% %message% (%elapsed:6s%)', 'verbose_no_ansi' => ' %message% (%elapsed:6s%)', 'very_verbose' => ' %indicator% %message% (%elapsed:6s%, %memory:6s%)', 'very_verbose_no_ansi' => ' %message% (%elapsed:6s%, %memory:6s%)']; private $output; private $startTime; private $format; private $message; private $indicatorValues; private $indicatorCurrent; private $indicatorChangeInterval; private $indicatorUpdateTime; private $started = \false; /** * @var array */ private static $formatters; /** * @param int $indicatorChangeInterval Change interval in milliseconds * @param array|null $indicatorValues Animated indicator characters */ public function __construct(OutputInterface $output, ?string $format = null, int $indicatorChangeInterval = 100, ?array $indicatorValues = null) { $this->output = $output; if (null === $format) { $format = $this->determineBestFormat(); } if (null === $indicatorValues) { $indicatorValues = ['-', '\\', '|', '/']; } $indicatorValues = \array_values($indicatorValues); if (2 > \count($indicatorValues)) { throw new InvalidArgumentException('Must have at least 2 indicator value characters.'); } $this->format = self::getFormatDefinition($format); $this->indicatorChangeInterval = $indicatorChangeInterval; $this->indicatorValues = $indicatorValues; $this->startTime = \time(); } /** * Sets the current indicator message. */ public function setMessage(?string $message) { $this->message = $message; $this->display(); } /** * Starts the indicator output. */ public function start(string $message) { if ($this->started) { throw new LogicException('Progress indicator already started.'); } $this->message = $message; $this->started = \true; $this->startTime = \time(); $this->indicatorUpdateTime = $this->getCurrentTimeInMilliseconds() + $this->indicatorChangeInterval; $this->indicatorCurrent = 0; $this->display(); } /** * Advances the indicator. */ public function advance() { if (!$this->started) { throw new LogicException('Progress indicator has not yet been started.'); } if (!$this->output->isDecorated()) { return; } $currentTime = $this->getCurrentTimeInMilliseconds(); if ($currentTime < $this->indicatorUpdateTime) { return; } $this->indicatorUpdateTime = $currentTime + $this->indicatorChangeInterval; ++$this->indicatorCurrent; $this->display(); } /** * Finish the indicator with message. */ public function finish(string $message) { if (!$this->started) { throw new LogicException('Progress indicator has not yet been started.'); } $this->message = $message; $this->display(); $this->output->writeln(''); $this->started = \false; } /** * Gets the format for a given name. * * @return string|null */ public static function getFormatDefinition(string $name) { return self::FORMATS[$name] ?? null; } /** * Sets a placeholder formatter for a given name. * * This method also allow you to override an existing placeholder. */ public static function setPlaceholderFormatterDefinition(string $name, callable $callable) { if (!self::$formatters) { self::$formatters = self::initPlaceholderFormatters(); } self::$formatters[$name] = $callable; } /** * Gets the placeholder formatter for a given name (including the delimiter char like %). * * @return callable|null */ public static function getPlaceholderFormatterDefinition(string $name) { if (!self::$formatters) { self::$formatters = self::initPlaceholderFormatters(); } return self::$formatters[$name] ?? null; } private function display() { if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) { return; } $this->overwrite(\preg_replace_callback("{%([a-z\\-_]+)(?:\\:([^%]+))?%}i", function ($matches) { if ($formatter = self::getPlaceholderFormatterDefinition($matches[1])) { return $formatter($this); } return $matches[0]; }, $this->format ?? '')); } private function determineBestFormat() : string { switch ($this->output->getVerbosity()) { // OutputInterface::VERBOSITY_QUIET: display is disabled anyway case OutputInterface::VERBOSITY_VERBOSE: return $this->output->isDecorated() ? 'verbose' : 'verbose_no_ansi'; case OutputInterface::VERBOSITY_VERY_VERBOSE: case OutputInterface::VERBOSITY_DEBUG: return $this->output->isDecorated() ? 'very_verbose' : 'very_verbose_no_ansi'; default: return $this->output->isDecorated() ? 'normal' : 'normal_no_ansi'; } } /** * Overwrites a previous message to the output. */ private function overwrite(string $message) { if ($this->output->isDecorated()) { $this->output->write("\r\x1b[2K"); $this->output->write($message); } else { $this->output->writeln($message); } } private function getCurrentTimeInMilliseconds() : float { return \round(\microtime(\true) * 1000); } private static function initPlaceholderFormatters() : array { return ['indicator' => function (self $indicator) { return $indicator->indicatorValues[$indicator->indicatorCurrent % \count($indicator->indicatorValues)]; }, 'message' => function (self $indicator) { return $indicator->message; }, 'elapsed' => function (self $indicator) { return Helper::formatTime(\time() - $indicator->startTime); }, 'memory' => function () { return Helper::formatMemory(\memory_get_usage(\true)); }]; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\ConsoleOutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Process\Exception\ProcessFailedException; use _PHPStan_b22655c3f\Symfony\Component\Process\Process; /** * The ProcessHelper class provides helpers to run external processes. * * @author Fabien Potencier * * @final */ class ProcessHelper extends Helper { /** * Runs an external process. * * @param array|Process $cmd An instance of Process or an array of the command and arguments * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR */ public function run(OutputInterface $output, $cmd, ?string $error = null, ?callable $callback = null, int $verbosity = OutputInterface::VERBOSITY_VERY_VERBOSE) : Process { if (!\class_exists(Process::class)) { throw new \LogicException('The ProcessHelper cannot be run as the Process component is not installed. Try running "compose require symfony/process".'); } if ($output instanceof ConsoleOutputInterface) { $output = $output->getErrorOutput(); } $formatter = $this->getHelperSet()->get('debug_formatter'); if ($cmd instanceof Process) { $cmd = [$cmd]; } if (!\is_array($cmd)) { throw new \TypeError(\sprintf('The "command" argument of "%s()" must be an array or a "%s" instance, "%s" given.', __METHOD__, Process::class, \get_debug_type($cmd))); } if (\is_string($cmd[0] ?? null)) { $process = new Process($cmd); $cmd = []; } elseif (($cmd[0] ?? null) instanceof Process) { $process = $cmd[0]; unset($cmd[0]); } else { throw new \InvalidArgumentException(\sprintf('Invalid command provided to "%s()": the command should be an array whose first element is either the path to the binary to run or a "Process" object.', __METHOD__)); } if ($verbosity <= $output->getVerbosity()) { $output->write($formatter->start(\spl_object_hash($process), $this->escapeString($process->getCommandLine()))); } if ($output->isDebug()) { $callback = $this->wrapCallback($output, $process, $callback); } $process->run($callback, $cmd); if ($verbosity <= $output->getVerbosity()) { $message = $process->isSuccessful() ? 'Command ran successfully' : \sprintf('%s Command did not run successfully', $process->getExitCode()); $output->write($formatter->stop(\spl_object_hash($process), $message, $process->isSuccessful())); } if (!$process->isSuccessful() && null !== $error) { $output->writeln(\sprintf('%s', $this->escapeString($error))); } return $process; } /** * Runs the process. * * This is identical to run() except that an exception is thrown if the process * exits with a non-zero exit code. * * @param array|Process $cmd An instance of Process or a command to run * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * * @throws ProcessFailedException * * @see run() */ public function mustRun(OutputInterface $output, $cmd, ?string $error = null, ?callable $callback = null) : Process { $process = $this->run($output, $cmd, $error, $callback); if (!$process->isSuccessful()) { throw new ProcessFailedException($process); } return $process; } /** * Wraps a Process callback to add debugging output. */ public function wrapCallback(OutputInterface $output, Process $process, ?callable $callback = null) : callable { if ($output instanceof ConsoleOutputInterface) { $output = $output->getErrorOutput(); } $formatter = $this->getHelperSet()->get('debug_formatter'); return function ($type, $buffer) use($output, $process, $callback, $formatter) { $output->write($formatter->progress(\spl_object_hash($process), $this->escapeString($buffer), Process::ERR === $type)); if (null !== $callback) { $callback($type, $buffer); } }; } private function escapeString(string $str) : string { return \str_replace('<', '\\<', $str); } /** * {@inheritdoc} */ public function getName() : string { return 'process'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatterInterface; use _PHPStan_b22655c3f\Symfony\Component\String\UnicodeString; /** * Helper is the base class for all helper classes. * * @author Fabien Potencier */ abstract class Helper implements HelperInterface { protected $helperSet = null; /** * {@inheritdoc} */ public function setHelperSet(?HelperSet $helperSet = null) { $this->helperSet = $helperSet; } /** * {@inheritdoc} */ public function getHelperSet() { return $this->helperSet; } /** * Returns the length of a string, using mb_strwidth if it is available. * * @deprecated since Symfony 5.3 * * @return int */ public static function strlen(?string $string) { trigger_deprecation('symfony/console', '5.3', 'Method "%s()" is deprecated and will be removed in Symfony 6.0. Use Helper::width() or Helper::length() instead.', __METHOD__); return self::width($string); } /** * Returns the width of a string, using mb_strwidth if it is available. * The width is how many characters positions the string will use. */ public static function width(?string $string) : int { $string ?? ($string = ''); if (\preg_match('//u', $string)) { return (new UnicodeString($string))->width(\false); } if (\false === ($encoding = \mb_detect_encoding($string, null, \true))) { return \strlen($string); } return \mb_strwidth($string, $encoding); } /** * Returns the length of a string, using mb_strlen if it is available. * The length is related to how many bytes the string will use. */ public static function length(?string $string) : int { $string ?? ($string = ''); if (\preg_match('//u', $string)) { return (new UnicodeString($string))->length(); } if (\false === ($encoding = \mb_detect_encoding($string, null, \true))) { return \strlen($string); } return \mb_strlen($string, $encoding); } /** * Returns the subset of a string, using mb_substr if it is available. * * @return string */ public static function substr(?string $string, int $from, ?int $length = null) { $string ?? ($string = ''); if (\false === ($encoding = \mb_detect_encoding($string, null, \true))) { return \substr($string, $from, $length); } return \mb_substr($string, $from, $length, $encoding); } public static function formatTime($secs) { static $timeFormats = [[0, '< 1 sec'], [1, '1 sec'], [2, 'secs', 1], [60, '1 min'], [120, 'mins', 60], [3600, '1 hr'], [7200, 'hrs', 3600], [86400, '1 day'], [172800, 'days', 86400]]; foreach ($timeFormats as $index => $format) { if ($secs >= $format[0]) { if (isset($timeFormats[$index + 1]) && $secs < $timeFormats[$index + 1][0] || $index == \count($timeFormats) - 1) { if (2 == \count($format)) { return $format[1]; } return \floor($secs / $format[2]) . ' ' . $format[1]; } } } } public static function formatMemory(int $memory) { if ($memory >= 1024 * 1024 * 1024) { return \sprintf('%.1f GiB', $memory / 1024 / 1024 / 1024); } if ($memory >= 1024 * 1024) { return \sprintf('%.1f MiB', $memory / 1024 / 1024); } if ($memory >= 1024) { return \sprintf('%d KiB', $memory / 1024); } return \sprintf('%d B', $memory); } /** * @deprecated since Symfony 5.3 */ public static function strlenWithoutDecoration(OutputFormatterInterface $formatter, ?string $string) { trigger_deprecation('symfony/console', '5.3', 'Method "%s()" is deprecated and will be removed in Symfony 6.0. Use Helper::removeDecoration() instead.', __METHOD__); return self::width(self::removeDecoration($formatter, $string)); } public static function removeDecoration(OutputFormatterInterface $formatter, ?string $string) { $isDecorated = $formatter->isDecorated(); $formatter->setDecorated(\false); // remove <...> formatting $string = $formatter->format($string ?? ''); // remove already formatted characters $string = \preg_replace("/\x1b\\[[^m]*m/", '', $string ?? ''); // remove terminal hyperlinks $string = \preg_replace('/\\033]8;[^;]*;[^\\033]*\\033\\\\/', '', $string ?? ''); $formatter->setDecorated($isDecorated); return $string; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; use _PHPStan_b22655c3f\Symfony\Component\VarDumper\Cloner\ClonerInterface; use _PHPStan_b22655c3f\Symfony\Component\VarDumper\Cloner\VarCloner; use _PHPStan_b22655c3f\Symfony\Component\VarDumper\Dumper\CliDumper; /** * @author Roland Franssen */ final class Dumper { private $output; private $dumper; private $cloner; private $handler; public function __construct(OutputInterface $output, ?CliDumper $dumper = null, ?ClonerInterface $cloner = null) { $this->output = $output; $this->dumper = $dumper; $this->cloner = $cloner; if (\class_exists(CliDumper::class)) { $this->handler = function ($var) : string { $dumper = $this->dumper ?? ($this->dumper = new CliDumper(null, null, CliDumper::DUMP_LIGHT_ARRAY | CliDumper::DUMP_COMMA_SEPARATOR)); $dumper->setColors($this->output->isDecorated()); return \rtrim($dumper->dump(($this->cloner ?? ($this->cloner = new VarCloner()))->cloneVar($var)->withRefHandles(\false), \true)); }; } else { $this->handler = function ($var) : string { switch (\true) { case null === $var: return 'null'; case \true === $var: return 'true'; case \false === $var: return 'false'; case \is_string($var): return '"' . $var . '"'; default: return \rtrim(\print_r($var, \true)); } }; } } public function __invoke($var) : string { return ($this->handler)($var); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console; use _PHPStan_b22655c3f\Symfony\Component\Console\Event\ConsoleCommandEvent; use _PHPStan_b22655c3f\Symfony\Component\Console\Event\ConsoleErrorEvent; use _PHPStan_b22655c3f\Symfony\Component\Console\Event\ConsoleSignalEvent; use _PHPStan_b22655c3f\Symfony\Component\Console\Event\ConsoleTerminateEvent; /** * Contains all events dispatched by an Application. * * @author Francesco Levorato */ final class ConsoleEvents { /** * The COMMAND event allows you to attach listeners before any command is * executed by the console. It also allows you to modify the command, input and output * before they are handed to the command. * * @Event("Symfony\Component\Console\Event\ConsoleCommandEvent") */ public const COMMAND = 'console.command'; /** * The SIGNAL event allows you to perform some actions * after the command execution was interrupted. * * @Event("Symfony\Component\Console\Event\ConsoleSignalEvent") */ public const SIGNAL = 'console.signal'; /** * The TERMINATE event allows you to attach listeners after a command is * executed by the console. * * @Event("Symfony\Component\Console\Event\ConsoleTerminateEvent") */ public const TERMINATE = 'console.terminate'; /** * The ERROR event occurs when an uncaught exception or error appears. * * This event allows you to deal with the exception/error or * to modify the thrown exception. * * @Event("Symfony\Component\Console\Event\ConsoleErrorEvent") */ public const ERROR = 'console.error'; /** * Event aliases. * * These aliases can be consumed by RegisterListenersPass. */ public const ALIASES = [ConsoleCommandEvent::class => self::COMMAND, ConsoleErrorEvent::class => self::ERROR, ConsoleSignalEvent::class => self::SIGNAL, ConsoleTerminateEvent::class => self::TERMINATE]; } Copyright (c) 2004-present Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\CommandLoader; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\CommandNotFoundException; /** * A simple command loader using factories to instantiate commands lazily. * * @author Maxime Steinhausser */ class FactoryCommandLoader implements CommandLoaderInterface { private $factories; /** * @param callable[] $factories Indexed by command names */ public function __construct(array $factories) { $this->factories = $factories; } /** * {@inheritdoc} */ public function has(string $name) { return isset($this->factories[$name]); } /** * {@inheritdoc} */ public function get(string $name) { if (!isset($this->factories[$name])) { throw new CommandNotFoundException(\sprintf('Command "%s" does not exist.', $name)); } $factory = $this->factories[$name]; return $factory(); } /** * {@inheritdoc} */ public function getNames() { return \array_keys($this->factories); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\CommandLoader; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\CommandNotFoundException; /** * @author Robin Chalas */ interface CommandLoaderInterface { /** * Loads a command. * * @return Command * * @throws CommandNotFoundException */ public function get(string $name); /** * Checks if a command exists. * * @return bool */ public function has(string $name); /** * @return string[] */ public function getNames(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\CommandLoader; use _PHPStan_b22655c3f\Psr\Container\ContainerInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\CommandNotFoundException; /** * Loads commands from a PSR-11 container. * * @author Robin Chalas */ class ContainerCommandLoader implements CommandLoaderInterface { private $container; private $commandMap; /** * @param array $commandMap An array with command names as keys and service ids as values */ public function __construct(ContainerInterface $container, array $commandMap) { $this->container = $container; $this->commandMap = $commandMap; } /** * {@inheritdoc} */ public function get(string $name) { if (!$this->has($name)) { throw new CommandNotFoundException(\sprintf('Command "%s" does not exist.', $name)); } return $this->container->get($this->commandMap[$name]); } /** * {@inheritdoc} */ public function has(string $name) { return isset($this->commandMap[$name]) && $this->container->has($this->commandMap[$name]); } /** * {@inheritdoc} */ public function getNames() { return \array_keys($this->commandMap); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Input; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; /** * StringInput represents an input provided as a string. * * Usage: * * $input = new StringInput('foo --bar="foobar"'); * * @author Fabien Potencier */ class StringInput extends ArgvInput { public const REGEX_STRING = '([^\\s]+?)(?:\\s|(?setTokens($this->tokenize($input)); } /** * Tokenizes a string. * * @throws InvalidArgumentException When unable to parse input (should never happen) */ private function tokenize(string $input) : array { $tokens = []; $length = \strlen($input); $cursor = 0; $token = null; while ($cursor < $length) { if ('\\' === $input[$cursor]) { $token .= $input[++$cursor] ?? ''; ++$cursor; continue; } if (\preg_match('/\\s+/A', $input, $match, 0, $cursor)) { if (null !== $token) { $tokens[] = $token; $token = null; } } elseif (\preg_match('/([^="\'\\s]+?)(=?)(' . self::REGEX_QUOTED_STRING . '+)/A', $input, $match, 0, $cursor)) { $token .= $match[1] . $match[2] . \stripcslashes(\str_replace(['"\'', '\'"', '\'\'', '""'], '', \substr($match[3], 1, -1))); } elseif (\preg_match('/' . self::REGEX_QUOTED_STRING . '/A', $input, $match, 0, $cursor)) { $token .= \stripcslashes(\substr($match[0], 1, -1)); } elseif (\preg_match('/' . self::REGEX_UNQUOTED_STRING . '/A', $input, $match, 0, $cursor)) { $token .= $match[1]; } else { // should never happen throw new InvalidArgumentException(\sprintf('Unable to parse input near "... %s ...".', \substr($input, $cursor, 10))); } $cursor += \strlen($match[0]); } if (null !== $token) { $tokens[] = $token; } return $tokens; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Input; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\RuntimeException; /** * ArgvInput represents an input coming from the CLI arguments. * * Usage: * * $input = new ArgvInput(); * * By default, the `$_SERVER['argv']` array is used for the input values. * * This can be overridden by explicitly passing the input values in the constructor: * * $input = new ArgvInput($_SERVER['argv']); * * If you pass it yourself, don't forget that the first element of the array * is the name of the running application. * * When passing an argument to the constructor, be sure that it respects * the same rules as the argv one. It's almost always better to use the * `StringInput` when you want to provide your own input. * * @author Fabien Potencier * * @see http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html * @see http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html#tag_12_02 */ class ArgvInput extends Input { private $tokens; private $parsed; public function __construct(?array $argv = null, ?InputDefinition $definition = null) { $argv = $argv ?? $_SERVER['argv'] ?? []; // strip the application name \array_shift($argv); $this->tokens = $argv; parent::__construct($definition); } protected function setTokens(array $tokens) { $this->tokens = $tokens; } /** * {@inheritdoc} */ protected function parse() { $parseOptions = \true; $this->parsed = $this->tokens; while (null !== ($token = \array_shift($this->parsed))) { $parseOptions = $this->parseToken($token, $parseOptions); } } protected function parseToken(string $token, bool $parseOptions) : bool { if ($parseOptions && '' == $token) { $this->parseArgument($token); } elseif ($parseOptions && '--' == $token) { return \false; } elseif ($parseOptions && \str_starts_with($token, '--')) { $this->parseLongOption($token); } elseif ($parseOptions && '-' === $token[0] && '-' !== $token) { $this->parseShortOption($token); } else { $this->parseArgument($token); } return $parseOptions; } /** * Parses a short option. */ private function parseShortOption(string $token) { $name = \substr($token, 1); if (\strlen($name) > 1) { if ($this->definition->hasShortcut($name[0]) && $this->definition->getOptionForShortcut($name[0])->acceptValue()) { // an option with a value (with no space) $this->addShortOption($name[0], \substr($name, 1)); } else { $this->parseShortOptionSet($name); } } else { $this->addShortOption($name, null); } } /** * Parses a short option set. * * @throws RuntimeException When option given doesn't exist */ private function parseShortOptionSet(string $name) { $len = \strlen($name); for ($i = 0; $i < $len; ++$i) { if (!$this->definition->hasShortcut($name[$i])) { $encoding = \mb_detect_encoding($name, null, \true); throw new RuntimeException(\sprintf('The "-%s" option does not exist.', \false === $encoding ? $name[$i] : \mb_substr($name, $i, 1, $encoding))); } $option = $this->definition->getOptionForShortcut($name[$i]); if ($option->acceptValue()) { $this->addLongOption($option->getName(), $i === $len - 1 ? null : \substr($name, $i + 1)); break; } else { $this->addLongOption($option->getName(), null); } } } /** * Parses a long option. */ private function parseLongOption(string $token) { $name = \substr($token, 2); if (\false !== ($pos = \strpos($name, '='))) { if ('' === ($value = \substr($name, $pos + 1))) { \array_unshift($this->parsed, $value); } $this->addLongOption(\substr($name, 0, $pos), $value); } else { $this->addLongOption($name, null); } } /** * Parses an argument. * * @throws RuntimeException When too many arguments are given */ private function parseArgument(string $token) { $c = \count($this->arguments); // if input is expecting another argument, add it if ($this->definition->hasArgument($c)) { $arg = $this->definition->getArgument($c); $this->arguments[$arg->getName()] = $arg->isArray() ? [$token] : $token; // if last argument isArray(), append token to last argument } elseif ($this->definition->hasArgument($c - 1) && $this->definition->getArgument($c - 1)->isArray()) { $arg = $this->definition->getArgument($c - 1); $this->arguments[$arg->getName()][] = $token; // unexpected argument } else { $all = $this->definition->getArguments(); $symfonyCommandName = null; if (($inputArgument = $all[$key = \array_key_first($all)] ?? null) && 'command' === $inputArgument->getName()) { $symfonyCommandName = $this->arguments['command'] ?? null; unset($all[$key]); } if (\count($all)) { if ($symfonyCommandName) { $message = \sprintf('Too many arguments to "%s" command, expected arguments "%s".', $symfonyCommandName, \implode('" "', \array_keys($all))); } else { $message = \sprintf('Too many arguments, expected arguments "%s".', \implode('" "', \array_keys($all))); } } elseif ($symfonyCommandName) { $message = \sprintf('No arguments expected for "%s" command, got "%s".', $symfonyCommandName, $token); } else { $message = \sprintf('No arguments expected, got "%s".', $token); } throw new RuntimeException($message); } } /** * Adds a short option value. * * @throws RuntimeException When option given doesn't exist */ private function addShortOption(string $shortcut, $value) { if (!$this->definition->hasShortcut($shortcut)) { throw new RuntimeException(\sprintf('The "-%s" option does not exist.', $shortcut)); } $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value); } /** * Adds a long option value. * * @throws RuntimeException When option given doesn't exist */ private function addLongOption(string $name, $value) { if (!$this->definition->hasOption($name)) { if (!$this->definition->hasNegation($name)) { throw new RuntimeException(\sprintf('The "--%s" option does not exist.', $name)); } $optionName = $this->definition->negationToName($name); if (null !== $value) { throw new RuntimeException(\sprintf('The "--%s" option does not accept a value.', $name)); } $this->options[$optionName] = \false; return; } $option = $this->definition->getOption($name); if (null !== $value && !$option->acceptValue()) { throw new RuntimeException(\sprintf('The "--%s" option does not accept a value.', $name)); } if (\in_array($value, ['', null], \true) && $option->acceptValue() && \count($this->parsed)) { // if option accepts an optional or mandatory argument // let's see if there is one provided $next = \array_shift($this->parsed); if (isset($next[0]) && '-' !== $next[0] || \in_array($next, ['', null], \true)) { $value = $next; } else { \array_unshift($this->parsed, $next); } } if (null === $value) { if ($option->isValueRequired()) { throw new RuntimeException(\sprintf('The "--%s" option requires a value.', $name)); } if (!$option->isArray() && !$option->isValueOptional()) { $value = \true; } } if ($option->isArray()) { $this->options[$name][] = $value; } else { $this->options[$name] = $value; } } /** * {@inheritdoc} */ public function getFirstArgument() { $isOption = \false; foreach ($this->tokens as $i => $token) { if ($token && '-' === $token[0]) { if (\str_contains($token, '=') || !isset($this->tokens[$i + 1])) { continue; } // If it's a long option, consider that everything after "--" is the option name. // Otherwise, use the last char (if it's a short option set, only the last one can take a value with space separator) $name = '-' === $token[1] ? \substr($token, 2) : \substr($token, -1); if (!isset($this->options[$name]) && !$this->definition->hasShortcut($name)) { // noop } elseif ((isset($this->options[$name]) || isset($this->options[$name = $this->definition->shortcutToName($name)])) && $this->tokens[$i + 1] === $this->options[$name]) { $isOption = \true; } continue; } if ($isOption) { $isOption = \false; continue; } return $token; } return null; } /** * {@inheritdoc} */ public function hasParameterOption($values, bool $onlyParams = \false) { $values = (array) $values; foreach ($this->tokens as $token) { if ($onlyParams && '--' === $token) { return \false; } foreach ($values as $value) { // Options with values: // For long options, test for '--option=' at beginning // For short options, test for '-o' at beginning $leading = \str_starts_with($value, '--') ? $value . '=' : $value; if ($token === $value || '' !== $leading && \str_starts_with($token, $leading)) { return \true; } } } return \false; } /** * {@inheritdoc} */ public function getParameterOption($values, $default = \false, bool $onlyParams = \false) { $values = (array) $values; $tokens = $this->tokens; while (0 < \count($tokens)) { $token = \array_shift($tokens); if ($onlyParams && '--' === $token) { return $default; } foreach ($values as $value) { if ($token === $value) { return \array_shift($tokens); } // Options with values: // For long options, test for '--option=' at beginning // For short options, test for '-o' at beginning $leading = \str_starts_with($value, '--') ? $value . '=' : $value; if ('' !== $leading && \str_starts_with($token, $leading)) { return \substr($token, \strlen($leading)); } } } return $default; } /** * Returns a stringified representation of the args passed to the command. * * @return string */ public function __toString() { $tokens = \array_map(function ($token) { if (\preg_match('{^(-[^=]+=)(.+)}', $token, $match)) { return $match[1] . $this->escapeToken($match[2]); } if ($token && '-' !== $token[0]) { return $this->escapeToken($token); } return $token; }, $this->tokens); return \implode(' ', $tokens); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Input; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\LogicException; /** * Represents a command line argument. * * @author Fabien Potencier */ class InputArgument { public const REQUIRED = 1; public const OPTIONAL = 2; public const IS_ARRAY = 4; private $name; private $mode; private $default; private $description; /** * @param string $name The argument name * @param int|null $mode The argument mode: a bit mask of self::REQUIRED, self::OPTIONAL and self::IS_ARRAY * @param string $description A description text * @param string|bool|int|float|array|null $default The default value (for self::OPTIONAL mode only) * * @throws InvalidArgumentException When argument mode is not valid */ public function __construct(string $name, ?int $mode = null, string $description = '', $default = null) { if (null === $mode) { $mode = self::OPTIONAL; } elseif ($mode > 7 || $mode < 1) { throw new InvalidArgumentException(\sprintf('Argument mode "%s" is not valid.', $mode)); } $this->name = $name; $this->mode = $mode; $this->description = $description; $this->setDefault($default); } /** * Returns the argument name. * * @return string */ public function getName() { return $this->name; } /** * Returns true if the argument is required. * * @return bool true if parameter mode is self::REQUIRED, false otherwise */ public function isRequired() { return self::REQUIRED === (self::REQUIRED & $this->mode); } /** * Returns true if the argument can take multiple values. * * @return bool true if mode is self::IS_ARRAY, false otherwise */ public function isArray() { return self::IS_ARRAY === (self::IS_ARRAY & $this->mode); } /** * Sets the default value. * * @param string|bool|int|float|array|null $default * * @throws LogicException When incorrect default value is given */ public function setDefault($default = null) { if ($this->isRequired() && null !== $default) { throw new LogicException('Cannot set a default value except for InputArgument::OPTIONAL mode.'); } if ($this->isArray()) { if (null === $default) { $default = []; } elseif (!\is_array($default)) { throw new LogicException('A default value for an array argument must be an array.'); } } $this->default = $default; } /** * Returns the default value. * * @return string|bool|int|float|array|null */ public function getDefault() { return $this->default; } /** * Returns the description text. * * @return string */ public function getDescription() { return $this->description; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Input; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\RuntimeException; /** * Input is the base class for all concrete Input classes. * * Three concrete classes are provided by default: * * * `ArgvInput`: The input comes from the CLI arguments (argv) * * `StringInput`: The input is provided as a string * * `ArrayInput`: The input is provided as an array * * @author Fabien Potencier */ abstract class Input implements InputInterface, StreamableInputInterface { protected $definition; protected $stream; protected $options = []; protected $arguments = []; protected $interactive = \true; public function __construct(?InputDefinition $definition = null) { if (null === $definition) { $this->definition = new InputDefinition(); } else { $this->bind($definition); $this->validate(); } } /** * {@inheritdoc} */ public function bind(InputDefinition $definition) { $this->arguments = []; $this->options = []; $this->definition = $definition; $this->parse(); } /** * Processes command line arguments. */ protected abstract function parse(); /** * {@inheritdoc} */ public function validate() { $definition = $this->definition; $givenArguments = $this->arguments; $missingArguments = \array_filter(\array_keys($definition->getArguments()), function ($argument) use($definition, $givenArguments) { return !\array_key_exists($argument, $givenArguments) && $definition->getArgument($argument)->isRequired(); }); if (\count($missingArguments) > 0) { throw new RuntimeException(\sprintf('Not enough arguments (missing: "%s").', \implode(', ', $missingArguments))); } } /** * {@inheritdoc} */ public function isInteractive() { return $this->interactive; } /** * {@inheritdoc} */ public function setInteractive(bool $interactive) { $this->interactive = $interactive; } /** * {@inheritdoc} */ public function getArguments() { return \array_merge($this->definition->getArgumentDefaults(), $this->arguments); } /** * {@inheritdoc} */ public function getArgument(string $name) { if (!$this->definition->hasArgument($name)) { throw new InvalidArgumentException(\sprintf('The "%s" argument does not exist.', $name)); } return $this->arguments[$name] ?? $this->definition->getArgument($name)->getDefault(); } /** * {@inheritdoc} */ public function setArgument(string $name, $value) { if (!$this->definition->hasArgument($name)) { throw new InvalidArgumentException(\sprintf('The "%s" argument does not exist.', $name)); } $this->arguments[$name] = $value; } /** * {@inheritdoc} */ public function hasArgument(string $name) { return $this->definition->hasArgument($name); } /** * {@inheritdoc} */ public function getOptions() { return \array_merge($this->definition->getOptionDefaults(), $this->options); } /** * {@inheritdoc} */ public function getOption(string $name) { if ($this->definition->hasNegation($name)) { if (null === ($value = $this->getOption($this->definition->negationToName($name)))) { return $value; } return !$value; } if (!$this->definition->hasOption($name)) { throw new InvalidArgumentException(\sprintf('The "%s" option does not exist.', $name)); } return \array_key_exists($name, $this->options) ? $this->options[$name] : $this->definition->getOption($name)->getDefault(); } /** * {@inheritdoc} */ public function setOption(string $name, $value) { if ($this->definition->hasNegation($name)) { $this->options[$this->definition->negationToName($name)] = !$value; return; } elseif (!$this->definition->hasOption($name)) { throw new InvalidArgumentException(\sprintf('The "%s" option does not exist.', $name)); } $this->options[$name] = $value; } /** * {@inheritdoc} */ public function hasOption(string $name) { return $this->definition->hasOption($name) || $this->definition->hasNegation($name); } /** * Escapes a token through escapeshellarg if it contains unsafe chars. * * @return string */ public function escapeToken(string $token) { return \preg_match('{^[\\w-]+$}', $token) ? $token : \escapeshellarg($token); } /** * {@inheritdoc} */ public function setStream($stream) { $this->stream = $stream; } /** * {@inheritdoc} */ public function getStream() { return $this->stream; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Input; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\LogicException; /** * A InputDefinition represents a set of valid command line arguments and options. * * Usage: * * $definition = new InputDefinition([ * new InputArgument('name', InputArgument::REQUIRED), * new InputOption('foo', 'f', InputOption::VALUE_REQUIRED), * ]); * * @author Fabien Potencier */ class InputDefinition { private $arguments; private $requiredCount; private $lastArrayArgument; private $lastOptionalArgument; private $options; private $negations; private $shortcuts; /** * @param array $definition An array of InputArgument and InputOption instance */ public function __construct(array $definition = []) { $this->setDefinition($definition); } /** * Sets the definition of the input. */ public function setDefinition(array $definition) { $arguments = []; $options = []; foreach ($definition as $item) { if ($item instanceof InputOption) { $options[] = $item; } else { $arguments[] = $item; } } $this->setArguments($arguments); $this->setOptions($options); } /** * Sets the InputArgument objects. * * @param InputArgument[] $arguments An array of InputArgument objects */ public function setArguments(array $arguments = []) { $this->arguments = []; $this->requiredCount = 0; $this->lastOptionalArgument = null; $this->lastArrayArgument = null; $this->addArguments($arguments); } /** * Adds an array of InputArgument objects. * * @param InputArgument[] $arguments An array of InputArgument objects */ public function addArguments(?array $arguments = []) { if (null !== $arguments) { foreach ($arguments as $argument) { $this->addArgument($argument); } } } /** * @throws LogicException When incorrect argument is given */ public function addArgument(InputArgument $argument) { if (isset($this->arguments[$argument->getName()])) { throw new LogicException(\sprintf('An argument with name "%s" already exists.', $argument->getName())); } if (null !== $this->lastArrayArgument) { throw new LogicException(\sprintf('Cannot add a required argument "%s" after an array argument "%s".', $argument->getName(), $this->lastArrayArgument->getName())); } if ($argument->isRequired() && null !== $this->lastOptionalArgument) { throw new LogicException(\sprintf('Cannot add a required argument "%s" after an optional one "%s".', $argument->getName(), $this->lastOptionalArgument->getName())); } if ($argument->isArray()) { $this->lastArrayArgument = $argument; } if ($argument->isRequired()) { ++$this->requiredCount; } else { $this->lastOptionalArgument = $argument; } $this->arguments[$argument->getName()] = $argument; } /** * Returns an InputArgument by name or by position. * * @param string|int $name The InputArgument name or position * * @return InputArgument * * @throws InvalidArgumentException When argument given doesn't exist */ public function getArgument($name) { if (!$this->hasArgument($name)) { throw new InvalidArgumentException(\sprintf('The "%s" argument does not exist.', $name)); } $arguments = \is_int($name) ? \array_values($this->arguments) : $this->arguments; return $arguments[$name]; } /** * Returns true if an InputArgument object exists by name or position. * * @param string|int $name The InputArgument name or position * * @return bool */ public function hasArgument($name) { $arguments = \is_int($name) ? \array_values($this->arguments) : $this->arguments; return isset($arguments[$name]); } /** * Gets the array of InputArgument objects. * * @return InputArgument[] */ public function getArguments() { return $this->arguments; } /** * Returns the number of InputArguments. * * @return int */ public function getArgumentCount() { return null !== $this->lastArrayArgument ? \PHP_INT_MAX : \count($this->arguments); } /** * Returns the number of required InputArguments. * * @return int */ public function getArgumentRequiredCount() { return $this->requiredCount; } /** * @return array */ public function getArgumentDefaults() { $values = []; foreach ($this->arguments as $argument) { $values[$argument->getName()] = $argument->getDefault(); } return $values; } /** * Sets the InputOption objects. * * @param InputOption[] $options An array of InputOption objects */ public function setOptions(array $options = []) { $this->options = []; $this->shortcuts = []; $this->negations = []; $this->addOptions($options); } /** * Adds an array of InputOption objects. * * @param InputOption[] $options An array of InputOption objects */ public function addOptions(array $options = []) { foreach ($options as $option) { $this->addOption($option); } } /** * @throws LogicException When option given already exist */ public function addOption(InputOption $option) { if (isset($this->options[$option->getName()]) && !$option->equals($this->options[$option->getName()])) { throw new LogicException(\sprintf('An option named "%s" already exists.', $option->getName())); } if (isset($this->negations[$option->getName()])) { throw new LogicException(\sprintf('An option named "%s" already exists.', $option->getName())); } if ($option->getShortcut()) { foreach (\explode('|', $option->getShortcut()) as $shortcut) { if (isset($this->shortcuts[$shortcut]) && !$option->equals($this->options[$this->shortcuts[$shortcut]])) { throw new LogicException(\sprintf('An option with shortcut "%s" already exists.', $shortcut)); } } } $this->options[$option->getName()] = $option; if ($option->getShortcut()) { foreach (\explode('|', $option->getShortcut()) as $shortcut) { $this->shortcuts[$shortcut] = $option->getName(); } } if ($option->isNegatable()) { $negatedName = 'no-' . $option->getName(); if (isset($this->options[$negatedName])) { throw new LogicException(\sprintf('An option named "%s" already exists.', $negatedName)); } $this->negations[$negatedName] = $option->getName(); } } /** * Returns an InputOption by name. * * @return InputOption * * @throws InvalidArgumentException When option given doesn't exist */ public function getOption(string $name) { if (!$this->hasOption($name)) { throw new InvalidArgumentException(\sprintf('The "--%s" option does not exist.', $name)); } return $this->options[$name]; } /** * Returns true if an InputOption object exists by name. * * This method can't be used to check if the user included the option when * executing the command (use getOption() instead). * * @return bool */ public function hasOption(string $name) { return isset($this->options[$name]); } /** * Gets the array of InputOption objects. * * @return InputOption[] */ public function getOptions() { return $this->options; } /** * Returns true if an InputOption object exists by shortcut. * * @return bool */ public function hasShortcut(string $name) { return isset($this->shortcuts[$name]); } /** * Returns true if an InputOption object exists by negated name. */ public function hasNegation(string $name) : bool { return isset($this->negations[$name]); } /** * Gets an InputOption by shortcut. * * @return InputOption */ public function getOptionForShortcut(string $shortcut) { return $this->getOption($this->shortcutToName($shortcut)); } /** * @return array */ public function getOptionDefaults() { $values = []; foreach ($this->options as $option) { $values[$option->getName()] = $option->getDefault(); } return $values; } /** * Returns the InputOption name given a shortcut. * * @throws InvalidArgumentException When option given does not exist * * @internal */ public function shortcutToName(string $shortcut) : string { if (!isset($this->shortcuts[$shortcut])) { throw new InvalidArgumentException(\sprintf('The "-%s" option does not exist.', $shortcut)); } return $this->shortcuts[$shortcut]; } /** * Returns the InputOption name given a negation. * * @throws InvalidArgumentException When option given does not exist * * @internal */ public function negationToName(string $negation) : string { if (!isset($this->negations[$negation])) { throw new InvalidArgumentException(\sprintf('The "--%s" option does not exist.', $negation)); } return $this->negations[$negation]; } /** * Gets the synopsis. * * @return string */ public function getSynopsis(bool $short = \false) { $elements = []; if ($short && $this->getOptions()) { $elements[] = '[options]'; } elseif (!$short) { foreach ($this->getOptions() as $option) { $value = ''; if ($option->acceptValue()) { $value = \sprintf(' %s%s%s', $option->isValueOptional() ? '[' : '', \strtoupper($option->getName()), $option->isValueOptional() ? ']' : ''); } $shortcut = $option->getShortcut() ? \sprintf('-%s|', $option->getShortcut()) : ''; $negation = $option->isNegatable() ? \sprintf('|--no-%s', $option->getName()) : ''; $elements[] = \sprintf('[%s--%s%s%s]', $shortcut, $option->getName(), $value, $negation); } } if (\count($elements) && $this->getArguments()) { $elements[] = '[--]'; } $tail = ''; foreach ($this->getArguments() as $argument) { $element = '<' . $argument->getName() . '>'; if ($argument->isArray()) { $element .= '...'; } if (!$argument->isRequired()) { $element = '[' . $element; $tail .= ']'; } $elements[] = $element; } return \implode(' ', $elements) . $tail; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Input; /** * InputAwareInterface should be implemented by classes that depends on the * Console Input. * * @author Wouter J */ interface InputAwareInterface { /** * Sets the Console Input. */ public function setInput(InputInterface $input); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Input; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\RuntimeException; /** * InputInterface is the interface implemented by all input classes. * * @author Fabien Potencier */ interface InputInterface { /** * Returns the first argument from the raw parameters (not parsed). * * @return string|null */ public function getFirstArgument(); /** * Returns true if the raw parameters (not parsed) contain a value. * * This method is to be used to introspect the input parameters * before they have been validated. It must be used carefully. * Does not necessarily return the correct result for short options * when multiple flags are combined in the same option. * * @param string|array $values The values to look for in the raw parameters (can be an array) * @param bool $onlyParams Only check real parameters, skip those following an end of options (--) signal * * @return bool */ public function hasParameterOption($values, bool $onlyParams = \false); /** * Returns the value of a raw option (not parsed). * * This method is to be used to introspect the input parameters * before they have been validated. It must be used carefully. * Does not necessarily return the correct result for short options * when multiple flags are combined in the same option. * * @param string|array $values The value(s) to look for in the raw parameters (can be an array) * @param string|bool|int|float|array|null $default The default value to return if no result is found * @param bool $onlyParams Only check real parameters, skip those following an end of options (--) signal * * @return mixed */ public function getParameterOption($values, $default = \false, bool $onlyParams = \false); /** * Binds the current Input instance with the given arguments and options. * * @throws RuntimeException */ public function bind(InputDefinition $definition); /** * Validates the input. * * @throws RuntimeException When not enough arguments are given */ public function validate(); /** * Returns all the given arguments merged with the default values. * * @return array */ public function getArguments(); /** * Returns the argument value for a given argument name. * * @return mixed * * @throws InvalidArgumentException When argument given doesn't exist */ public function getArgument(string $name); /** * Sets an argument value by name. * * @param mixed $value The argument value * * @throws InvalidArgumentException When argument given doesn't exist */ public function setArgument(string $name, $value); /** * Returns true if an InputArgument object exists by name or position. * * @return bool */ public function hasArgument(string $name); /** * Returns all the given options merged with the default values. * * @return array */ public function getOptions(); /** * Returns the option value for a given option name. * * @return mixed * * @throws InvalidArgumentException When option given doesn't exist */ public function getOption(string $name); /** * Sets an option value by name. * * @param mixed $value The option value * * @throws InvalidArgumentException When option given doesn't exist */ public function setOption(string $name, $value); /** * Returns true if an InputOption object exists by name. * * @return bool */ public function hasOption(string $name); /** * Is this input means interactive? * * @return bool */ public function isInteractive(); /** * Sets the input interactivity. */ public function setInteractive(bool $interactive); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Input; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\LogicException; /** * Represents a command line option. * * @author Fabien Potencier */ class InputOption { /** * Do not accept input for the option (e.g. --yell). This is the default behavior of options. */ public const VALUE_NONE = 1; /** * A value must be passed when the option is used (e.g. --iterations=5 or -i5). */ public const VALUE_REQUIRED = 2; /** * The option may or may not have a value (e.g. --yell or --yell=loud). */ public const VALUE_OPTIONAL = 4; /** * The option accepts multiple values (e.g. --dir=/foo --dir=/bar). */ public const VALUE_IS_ARRAY = 8; /** * The option may have either positive or negative value (e.g. --ansi or --no-ansi). */ public const VALUE_NEGATABLE = 16; private $name; private $shortcut; private $mode; private $default; private $description; /** * @param string|array|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts * @param int|null $mode The option mode: One of the VALUE_* constants * @param string|bool|int|float|array|null $default The default value (must be null for self::VALUE_NONE) * * @throws InvalidArgumentException If option mode is invalid or incompatible */ public function __construct(string $name, $shortcut = null, ?int $mode = null, string $description = '', $default = null) { if (\str_starts_with($name, '--')) { $name = \substr($name, 2); } if (empty($name)) { throw new InvalidArgumentException('An option name cannot be empty.'); } if ('' === $shortcut || [] === $shortcut || \false === $shortcut) { $shortcut = null; } if (null !== $shortcut) { if (\is_array($shortcut)) { $shortcut = \implode('|', $shortcut); } $shortcuts = \preg_split('{(\\|)-?}', \ltrim($shortcut, '-')); $shortcuts = \array_filter($shortcuts, 'strlen'); $shortcut = \implode('|', $shortcuts); if ('' === $shortcut) { throw new InvalidArgumentException('An option shortcut cannot be empty.'); } } if (null === $mode) { $mode = self::VALUE_NONE; } elseif ($mode >= self::VALUE_NEGATABLE << 1 || $mode < 1) { throw new InvalidArgumentException(\sprintf('Option mode "%s" is not valid.', $mode)); } $this->name = $name; $this->shortcut = $shortcut; $this->mode = $mode; $this->description = $description; if ($this->isArray() && !$this->acceptValue()) { throw new InvalidArgumentException('Impossible to have an option mode VALUE_IS_ARRAY if the option does not accept a value.'); } if ($this->isNegatable() && $this->acceptValue()) { throw new InvalidArgumentException('Impossible to have an option mode VALUE_NEGATABLE if the option also accepts a value.'); } $this->setDefault($default); } /** * Returns the option shortcut. * * @return string|null */ public function getShortcut() { return $this->shortcut; } /** * Returns the option name. * * @return string */ public function getName() { return $this->name; } /** * Returns true if the option accepts a value. * * @return bool true if value mode is not self::VALUE_NONE, false otherwise */ public function acceptValue() { return $this->isValueRequired() || $this->isValueOptional(); } /** * Returns true if the option requires a value. * * @return bool true if value mode is self::VALUE_REQUIRED, false otherwise */ public function isValueRequired() { return self::VALUE_REQUIRED === (self::VALUE_REQUIRED & $this->mode); } /** * Returns true if the option takes an optional value. * * @return bool true if value mode is self::VALUE_OPTIONAL, false otherwise */ public function isValueOptional() { return self::VALUE_OPTIONAL === (self::VALUE_OPTIONAL & $this->mode); } /** * Returns true if the option can take multiple values. * * @return bool true if mode is self::VALUE_IS_ARRAY, false otherwise */ public function isArray() { return self::VALUE_IS_ARRAY === (self::VALUE_IS_ARRAY & $this->mode); } public function isNegatable() : bool { return self::VALUE_NEGATABLE === (self::VALUE_NEGATABLE & $this->mode); } /** * @param string|bool|int|float|array|null $default */ public function setDefault($default = null) { if (self::VALUE_NONE === (self::VALUE_NONE & $this->mode) && null !== $default) { throw new LogicException('Cannot set a default value when using InputOption::VALUE_NONE mode.'); } if ($this->isArray()) { if (null === $default) { $default = []; } elseif (!\is_array($default)) { throw new LogicException('A default value for an array option must be an array.'); } } $this->default = $this->acceptValue() || $this->isNegatable() ? $default : \false; } /** * Returns the default value. * * @return string|bool|int|float|array|null */ public function getDefault() { return $this->default; } /** * Returns the description text. * * @return string */ public function getDescription() { return $this->description; } /** * Checks whether the given option equals this one. * * @return bool */ public function equals(self $option) { return $option->getName() === $this->getName() && $option->getShortcut() === $this->getShortcut() && $option->getDefault() === $this->getDefault() && $option->isNegatable() === $this->isNegatable() && $option->isArray() === $this->isArray() && $option->isValueRequired() === $this->isValueRequired() && $option->isValueOptional() === $this->isValueOptional(); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Input; /** * StreamableInputInterface is the interface implemented by all input classes * that have an input stream. * * @author Robin Chalas */ interface StreamableInputInterface extends InputInterface { /** * Sets the input stream to read from when interacting with the user. * * This is mainly useful for testing purpose. * * @param resource $stream The input stream */ public function setStream($stream); /** * Returns the input stream. * * @return resource|null */ public function getStream(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Input; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidOptionException; /** * ArrayInput represents an input provided as an array. * * Usage: * * $input = new ArrayInput(['command' => 'foo:bar', 'foo' => 'bar', '--bar' => 'foobar']); * * @author Fabien Potencier */ class ArrayInput extends Input { private $parameters; public function __construct(array $parameters, ?InputDefinition $definition = null) { $this->parameters = $parameters; parent::__construct($definition); } /** * {@inheritdoc} */ public function getFirstArgument() { foreach ($this->parameters as $param => $value) { if ($param && \is_string($param) && '-' === $param[0]) { continue; } return $value; } return null; } /** * {@inheritdoc} */ public function hasParameterOption($values, bool $onlyParams = \false) { $values = (array) $values; foreach ($this->parameters as $k => $v) { if (!\is_int($k)) { $v = $k; } if ($onlyParams && '--' === $v) { return \false; } if (\in_array($v, $values)) { return \true; } } return \false; } /** * {@inheritdoc} */ public function getParameterOption($values, $default = \false, bool $onlyParams = \false) { $values = (array) $values; foreach ($this->parameters as $k => $v) { if ($onlyParams && ('--' === $k || \is_int($k) && '--' === $v)) { return $default; } if (\is_int($k)) { if (\in_array($v, $values)) { return \true; } } elseif (\in_array($k, $values)) { return $v; } } return $default; } /** * Returns a stringified representation of the args passed to the command. * * @return string */ public function __toString() { $params = []; foreach ($this->parameters as $param => $val) { if ($param && \is_string($param) && '-' === $param[0]) { $glue = '-' === $param[1] ? '=' : ' '; if (\is_array($val)) { foreach ($val as $v) { $params[] = $param . ('' != $v ? $glue . $this->escapeToken($v) : ''); } } else { $params[] = $param . ('' != $val ? $glue . $this->escapeToken($val) : ''); } } else { $params[] = \is_array($val) ? \implode(' ', \array_map([$this, 'escapeToken'], $val)) : $this->escapeToken($val); } } return \implode(' ', $params); } /** * {@inheritdoc} */ protected function parse() { foreach ($this->parameters as $key => $value) { if ('--' === $key) { return; } if (\str_starts_with($key, '--')) { $this->addLongOption(\substr($key, 2), $value); } elseif (\str_starts_with($key, '-')) { $this->addShortOption(\substr($key, 1), $value); } else { $this->addArgument($key, $value); } } } /** * Adds a short option value. * * @throws InvalidOptionException When option given doesn't exist */ private function addShortOption(string $shortcut, $value) { if (!$this->definition->hasShortcut($shortcut)) { throw new InvalidOptionException(\sprintf('The "-%s" option does not exist.', $shortcut)); } $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value); } /** * Adds a long option value. * * @throws InvalidOptionException When option given doesn't exist * @throws InvalidOptionException When a required value is missing */ private function addLongOption(string $name, $value) { if (!$this->definition->hasOption($name)) { if (!$this->definition->hasNegation($name)) { throw new InvalidOptionException(\sprintf('The "--%s" option does not exist.', $name)); } $optionName = $this->definition->negationToName($name); $this->options[$optionName] = \false; return; } $option = $this->definition->getOption($name); if (null === $value) { if ($option->isValueRequired()) { throw new InvalidOptionException(\sprintf('The "--%s" option requires a value.', $name)); } if (!$option->isValueOptional()) { $value = \true; } } $this->options[$name] = $value; } /** * Adds an argument value. * * @param string|int $name The argument name * @param mixed $value The value for the argument * * @throws InvalidArgumentException When argument given doesn't exist */ private function addArgument($name, $value) { if (!$this->definition->hasArgument($name)) { throw new InvalidArgumentException(\sprintf('The "%s" argument does not exist.', $name)); } $this->arguments[$name] = $value; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Formatter; /** * Formatter interface for console output that supports word wrapping. * * @author Roland Franssen */ interface WrappableOutputFormatterInterface extends OutputFormatterInterface { /** * Formats a message according to the given styles, wrapping at `$width` (0 means no wrapping). */ public function formatAndWrap(?string $message, int $width); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Formatter; /** * Formatter interface for console output. * * @author Konstantin Kudryashov */ interface OutputFormatterInterface { /** * Sets the decorated flag. */ public function setDecorated(bool $decorated); /** * Whether the output will decorate messages. * * @return bool */ public function isDecorated(); /** * Sets a new style. */ public function setStyle(string $name, OutputFormatterStyleInterface $style); /** * Checks if output formatter has style with specified name. * * @return bool */ public function hasStyle(string $name); /** * Gets style options from style with specified name. * * @return OutputFormatterStyleInterface * * @throws \InvalidArgumentException When style isn't defined */ public function getStyle(string $name); /** * Formats a message according to the given styles. * * @return string|null */ public function format(?string $message); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Formatter; /** * Formatter style interface for defining styles. * * @author Konstantin Kudryashov */ interface OutputFormatterStyleInterface { /** * Sets style foreground color. */ public function setForeground(?string $color = null); /** * Sets style background color. */ public function setBackground(?string $color = null); /** * Sets some specific style option. */ public function setOption(string $option); /** * Unsets some specific style option. */ public function unsetOption(string $option); /** * Sets multiple style options at once. */ public function setOptions(array $options); /** * Applies the style to a given text. * * @return string */ public function apply(string $text); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Formatter; use _PHPStan_b22655c3f\Symfony\Component\Console\Color; /** * Formatter style class for defining styles. * * @author Konstantin Kudryashov */ class OutputFormatterStyle implements OutputFormatterStyleInterface { private $color; private $foreground; private $background; private $options; private $href; private $handlesHrefGracefully; /** * Initializes output formatter style. * * @param string|null $foreground The style foreground color name * @param string|null $background The style background color name */ public function __construct(?string $foreground = null, ?string $background = null, array $options = []) { $this->color = new Color($this->foreground = $foreground ?: '', $this->background = $background ?: '', $this->options = $options); } /** * {@inheritdoc} */ public function setForeground(?string $color = null) { $this->color = new Color($this->foreground = $color ?: '', $this->background, $this->options); } /** * {@inheritdoc} */ public function setBackground(?string $color = null) { $this->color = new Color($this->foreground, $this->background = $color ?: '', $this->options); } public function setHref(string $url) : void { $this->href = $url; } /** * {@inheritdoc} */ public function setOption(string $option) { $this->options[] = $option; $this->color = new Color($this->foreground, $this->background, $this->options); } /** * {@inheritdoc} */ public function unsetOption(string $option) { $pos = \array_search($option, $this->options); if (\false !== $pos) { unset($this->options[$pos]); } $this->color = new Color($this->foreground, $this->background, $this->options); } /** * {@inheritdoc} */ public function setOptions(array $options) { $this->color = new Color($this->foreground, $this->background, $this->options = $options); } /** * {@inheritdoc} */ public function apply(string $text) { if (null === $this->handlesHrefGracefully) { $this->handlesHrefGracefully = 'JetBrains-JediTerm' !== \getenv('TERMINAL_EMULATOR') && (!\getenv('KONSOLE_VERSION') || (int) \getenv('KONSOLE_VERSION') > 201100) && !isset($_SERVER['IDEA_INITIAL_DIRECTORY']); } if (null !== $this->href && $this->handlesHrefGracefully) { $text = "\x1b]8;;{$this->href}\x1b\\{$text}\x1b]8;;\x1b\\"; } return $this->color->apply($text); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Formatter; /** * @author Tien Xuan Vo */ final class NullOutputFormatter implements OutputFormatterInterface { private $style; /** * {@inheritdoc} */ public function format(?string $message) : ?string { return null; } /** * {@inheritdoc} */ public function getStyle(string $name) : OutputFormatterStyleInterface { // to comply with the interface we must return a OutputFormatterStyleInterface return $this->style ?? ($this->style = new NullOutputFormatterStyle()); } /** * {@inheritdoc} */ public function hasStyle(string $name) : bool { return \false; } /** * {@inheritdoc} */ public function isDecorated() : bool { return \false; } /** * {@inheritdoc} */ public function setDecorated(bool $decorated) : void { // do nothing } /** * {@inheritdoc} */ public function setStyle(string $name, OutputFormatterStyleInterface $style) : void { // do nothing } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Formatter; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Contracts\Service\ResetInterface; /** * @author Jean-François Simon */ class OutputFormatterStyleStack implements ResetInterface { /** * @var OutputFormatterStyleInterface[] */ private $styles; private $emptyStyle; public function __construct(?OutputFormatterStyleInterface $emptyStyle = null) { $this->emptyStyle = $emptyStyle ?? new OutputFormatterStyle(); $this->reset(); } /** * Resets stack (ie. empty internal arrays). */ public function reset() { $this->styles = []; } /** * Pushes a style in the stack. */ public function push(OutputFormatterStyleInterface $style) { $this->styles[] = $style; } /** * Pops a style from the stack. * * @return OutputFormatterStyleInterface * * @throws InvalidArgumentException When style tags incorrectly nested */ public function pop(?OutputFormatterStyleInterface $style = null) { if (empty($this->styles)) { return $this->emptyStyle; } if (null === $style) { return \array_pop($this->styles); } foreach (\array_reverse($this->styles, \true) as $index => $stackedStyle) { if ($style->apply('') === $stackedStyle->apply('')) { $this->styles = \array_slice($this->styles, 0, $index); return $stackedStyle; } } throw new InvalidArgumentException('Incorrectly nested style tag found.'); } /** * Computes current style with stacks top codes. * * @return OutputFormatterStyle */ public function getCurrent() { if (empty($this->styles)) { return $this->emptyStyle; } return $this->styles[\count($this->styles) - 1]; } /** * @return $this */ public function setEmptyStyle(OutputFormatterStyleInterface $emptyStyle) { $this->emptyStyle = $emptyStyle; return $this; } /** * @return OutputFormatterStyleInterface */ public function getEmptyStyle() { return $this->emptyStyle; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Formatter; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use function _PHPStan_b22655c3f\Symfony\Component\String\b; /** * Formatter class for console output. * * @author Konstantin Kudryashov * @author Roland Franssen */ class OutputFormatter implements WrappableOutputFormatterInterface { private $decorated; private $styles = []; private $styleStack; public function __clone() { $this->styleStack = clone $this->styleStack; foreach ($this->styles as $key => $value) { $this->styles[$key] = clone $value; } } /** * Escapes "<" and ">" special chars in given text. * * @return string */ public static function escape(string $text) { $text = \preg_replace('/([^\\\\]|^)([<>])/', '$1\\\\$2', $text); return self::escapeTrailingBackslash($text); } /** * Escapes trailing "\" in given text. * * @internal */ public static function escapeTrailingBackslash(string $text) : string { if (\str_ends_with($text, '\\')) { $len = \strlen($text); $text = \rtrim($text, '\\'); $text = \str_replace("\x00", '', $text); $text .= \str_repeat("\x00", $len - \strlen($text)); } return $text; } /** * Initializes console output formatter. * * @param OutputFormatterStyleInterface[] $styles Array of "name => FormatterStyle" instances */ public function __construct(bool $decorated = \false, array $styles = []) { $this->decorated = $decorated; $this->setStyle('error', new OutputFormatterStyle('white', 'red')); $this->setStyle('info', new OutputFormatterStyle('green')); $this->setStyle('comment', new OutputFormatterStyle('yellow')); $this->setStyle('question', new OutputFormatterStyle('black', 'cyan')); foreach ($styles as $name => $style) { $this->setStyle($name, $style); } $this->styleStack = new OutputFormatterStyleStack(); } /** * {@inheritdoc} */ public function setDecorated(bool $decorated) { $this->decorated = $decorated; } /** * {@inheritdoc} */ public function isDecorated() { return $this->decorated; } /** * {@inheritdoc} */ public function setStyle(string $name, OutputFormatterStyleInterface $style) { $this->styles[\strtolower($name)] = $style; } /** * {@inheritdoc} */ public function hasStyle(string $name) { return isset($this->styles[\strtolower($name)]); } /** * {@inheritdoc} */ public function getStyle(string $name) { if (!$this->hasStyle($name)) { throw new InvalidArgumentException(\sprintf('Undefined style: "%s".', $name)); } return $this->styles[\strtolower($name)]; } /** * {@inheritdoc} */ public function format(?string $message) { return $this->formatAndWrap($message, 0); } /** * {@inheritdoc} */ public function formatAndWrap(?string $message, int $width) { if (null === $message) { return ''; } $offset = 0; $output = ''; $openTagRegex = '[a-z](?:[^\\\\<>]*+ | \\\\.)*'; $closeTagRegex = '[a-z][^<>]*+'; $currentLineLength = 0; \preg_match_all("#<(({$openTagRegex}) | /({$closeTagRegex})?)>#ix", $message, $matches, \PREG_OFFSET_CAPTURE); foreach ($matches[0] as $i => $match) { $pos = $match[1]; $text = $match[0]; if (0 != $pos && '\\' == $message[$pos - 1]) { continue; } // add the text up to the next tag $output .= $this->applyCurrentStyle(\substr($message, $offset, $pos - $offset), $output, $width, $currentLineLength); $offset = $pos + \strlen($text); // opening tag? if ($open = '/' != $text[1]) { $tag = $matches[1][$i][0]; } else { $tag = $matches[3][$i][0] ?? ''; } if (!$open && !$tag) { // $this->styleStack->pop(); } elseif (null === ($style = $this->createStyleFromString($tag))) { $output .= $this->applyCurrentStyle($text, $output, $width, $currentLineLength); } elseif ($open) { $this->styleStack->push($style); } else { $this->styleStack->pop($style); } } $output .= $this->applyCurrentStyle(\substr($message, $offset), $output, $width, $currentLineLength); return \strtr($output, ["\x00" => '\\', '\\<' => '<', '\\>' => '>']); } /** * @return OutputFormatterStyleStack */ public function getStyleStack() { return $this->styleStack; } /** * Tries to create new style instance from string. */ private function createStyleFromString(string $string) : ?OutputFormatterStyleInterface { if (isset($this->styles[$string])) { return $this->styles[$string]; } if (!\preg_match_all('/([^=]+)=([^;]+)(;|$)/', $string, $matches, \PREG_SET_ORDER)) { return null; } $style = new OutputFormatterStyle(); foreach ($matches as $match) { \array_shift($match); $match[0] = \strtolower($match[0]); if ('fg' == $match[0]) { $style->setForeground(\strtolower($match[1])); } elseif ('bg' == $match[0]) { $style->setBackground(\strtolower($match[1])); } elseif ('href' === $match[0]) { $url = \preg_replace('{\\\\([<>])}', '$1', $match[1]); $style->setHref($url); } elseif ('options' === $match[0]) { \preg_match_all('([^,;]+)', \strtolower($match[1]), $options); $options = \array_shift($options); foreach ($options as $option) { $style->setOption($option); } } else { return null; } } return $style; } /** * Applies current style from stack to text, if must be applied. */ private function applyCurrentStyle(string $text, string $current, int $width, int &$currentLineLength) : string { if ('' === $text) { return ''; } if (!$width) { return $this->isDecorated() ? $this->styleStack->getCurrent()->apply($text) : $text; } if (!$currentLineLength && '' !== $current) { $text = \ltrim($text); } if ($currentLineLength) { $prefix = \substr($text, 0, $i = $width - $currentLineLength) . "\n"; $text = \substr($text, $i); } else { $prefix = ''; } \preg_match('~(\\n)$~', $text, $matches); $text = $prefix . $this->addLineBreaks($text, $width); $text = \rtrim($text, "\n") . ($matches[1] ?? ''); if (!$currentLineLength && '' !== $current && "\n" !== \substr($current, -1)) { $text = "\n" . $text; } $lines = \explode("\n", $text); foreach ($lines as $line) { $currentLineLength += \strlen($line); if ($width <= $currentLineLength) { $currentLineLength = 0; } } if ($this->isDecorated()) { foreach ($lines as $i => $line) { $lines[$i] = $this->styleStack->getCurrent()->apply($line); } } return \implode("\n", $lines); } private function addLineBreaks(string $text, int $width) : string { $encoding = \mb_detect_encoding($text, null, \true) ?: 'UTF-8'; return b($text)->toCodePointString($encoding)->wordwrap($width, "\n", \true)->toByteString($encoding); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Formatter; /** * @author Tien Xuan Vo */ final class NullOutputFormatterStyle implements OutputFormatterStyleInterface { /** * {@inheritdoc} */ public function apply(string $text) : string { return $text; } /** * {@inheritdoc} */ public function setBackground(?string $color = null) : void { // do nothing } /** * {@inheritdoc} */ public function setForeground(?string $color = null) : void { // do nothing } /** * {@inheritdoc} */ public function setOption(string $option) : void { // do nothing } /** * {@inheritdoc} */ public function setOptions(array $options) : void { // do nothing } /** * {@inheritdoc} */ public function unsetOption(string $option) : void { // do nothing } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * @author Grégoire Pineau */ class SingleCommandApplication extends Command { private $version = 'UNKNOWN'; private $autoExit = \true; private $running = \false; /** * @return $this */ public function setVersion(string $version) : self { $this->version = $version; return $this; } /** * @final * * @return $this */ public function setAutoExit(bool $autoExit) : self { $this->autoExit = $autoExit; return $this; } public function run(?InputInterface $input = null, ?OutputInterface $output = null) : int { if ($this->running) { return parent::run($input, $output); } // We use the command name as the application name $application = new Application($this->getName() ?: 'UNKNOWN', $this->version); $application->setAutoExit($this->autoExit); // Fix the usage of the command displayed with "--help" $this->setName($_SERVER['argv'][0]); $application->add($this); $application->setDefaultCommand($this->getName(), \true); $this->running = \true; try { $ret = $application->run($input, $output); } finally { $this->running = \false; } return $ret ?? 1; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\CompleteCommand; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\DumpCompletionCommand; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\HelpCommand; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\LazyCommand; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\ListCommand; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\SignalableCommandInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\CommandLoader\CommandLoaderInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionInput; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionSuggestions; use _PHPStan_b22655c3f\Symfony\Component\Console\Event\ConsoleCommandEvent; use _PHPStan_b22655c3f\Symfony\Component\Console\Event\ConsoleErrorEvent; use _PHPStan_b22655c3f\Symfony\Component\Console\Event\ConsoleSignalEvent; use _PHPStan_b22655c3f\Symfony\Component\Console\Event\ConsoleTerminateEvent; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\CommandNotFoundException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\ExceptionInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\LogicException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\NamespaceNotFoundException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\RuntimeException; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatter; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\DebugFormatterHelper; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\FormatterHelper; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\HelperSet; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\ProcessHelper; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\QuestionHelper; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\ArgvInput; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\ArrayInput; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputArgument; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputAwareInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputDefinition; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputOption; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\ConsoleOutput; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\ConsoleOutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\SignalRegistry\SignalRegistry; use _PHPStan_b22655c3f\Symfony\Component\Console\Style\SymfonyStyle; use _PHPStan_b22655c3f\Symfony\Component\ErrorHandler\ErrorHandler; use _PHPStan_b22655c3f\Symfony\Contracts\EventDispatcher\EventDispatcherInterface; use _PHPStan_b22655c3f\Symfony\Contracts\Service\ResetInterface; /** * An Application is the container for a collection of commands. * * It is the main entry point of a Console application. * * This class is optimized for a standard CLI environment. * * Usage: * * $app = new Application('myapp', '1.0 (stable)'); * $app->add(new SimpleCommand()); * $app->run(); * * @author Fabien Potencier */ class Application implements ResetInterface { private $commands = []; private $wantHelps = \false; private $runningCommand; private $name; private $version; private $commandLoader; private $catchExceptions = \true; private $autoExit = \true; private $definition; private $helperSet; private $dispatcher; private $terminal; private $defaultCommand; private $singleCommand = \false; private $initialized; private $signalRegistry; private $signalsToDispatchEvent = []; public function __construct(string $name = 'UNKNOWN', string $version = 'UNKNOWN') { $this->name = $name; $this->version = $version; $this->terminal = new Terminal(); $this->defaultCommand = 'list'; if (\defined('SIGINT') && SignalRegistry::isSupported()) { $this->signalRegistry = new SignalRegistry(); $this->signalsToDispatchEvent = [\SIGINT, \SIGTERM, \SIGUSR1, \SIGUSR2]; } } /** * @final */ public function setDispatcher(EventDispatcherInterface $dispatcher) { $this->dispatcher = $dispatcher; } public function setCommandLoader(CommandLoaderInterface $commandLoader) { $this->commandLoader = $commandLoader; } public function getSignalRegistry() : SignalRegistry { if (!$this->signalRegistry) { throw new RuntimeException('Signals are not supported. Make sure that the `pcntl` extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); } return $this->signalRegistry; } public function setSignalsToDispatchEvent(int ...$signalsToDispatchEvent) { $this->signalsToDispatchEvent = $signalsToDispatchEvent; } /** * Runs the current application. * * @return int 0 if everything went fine, or an error code * * @throws \Exception When running fails. Bypass this when {@link setCatchExceptions()}. */ public function run(?InputInterface $input = null, ?OutputInterface $output = null) { if (\function_exists('putenv')) { @\putenv('LINES=' . $this->terminal->getHeight()); @\putenv('COLUMNS=' . $this->terminal->getWidth()); } if (null === $input) { $input = new ArgvInput(); } if (null === $output) { $output = new ConsoleOutput(); } $renderException = function (\Throwable $e) use($output) { if ($output instanceof ConsoleOutputInterface) { $this->renderThrowable($e, $output->getErrorOutput()); } else { $this->renderThrowable($e, $output); } }; if ($phpHandler = \set_exception_handler($renderException)) { \restore_exception_handler(); if (!\is_array($phpHandler) || !$phpHandler[0] instanceof ErrorHandler) { $errorHandler = \true; } elseif ($errorHandler = $phpHandler[0]->setExceptionHandler($renderException)) { $phpHandler[0]->setExceptionHandler($errorHandler); } } $this->configureIO($input, $output); try { $exitCode = $this->doRun($input, $output); } catch (\Exception $e) { if (!$this->catchExceptions) { throw $e; } $renderException($e); $exitCode = $e->getCode(); if (\is_numeric($exitCode)) { $exitCode = (int) $exitCode; if ($exitCode <= 0) { $exitCode = 1; } } else { $exitCode = 1; } } finally { // if the exception handler changed, keep it // otherwise, unregister $renderException if (!$phpHandler) { if (\set_exception_handler($renderException) === $renderException) { \restore_exception_handler(); } \restore_exception_handler(); } elseif (!$errorHandler) { $finalHandler = $phpHandler[0]->setExceptionHandler(null); if ($finalHandler !== $renderException) { $phpHandler[0]->setExceptionHandler($finalHandler); } } } if ($this->autoExit) { if ($exitCode > 255) { $exitCode = 255; } exit($exitCode); } return $exitCode; } /** * Runs the current application. * * @return int 0 if everything went fine, or an error code */ public function doRun(InputInterface $input, OutputInterface $output) { if (\true === $input->hasParameterOption(['--version', '-V'], \true)) { $output->writeln($this->getLongVersion()); return 0; } try { // Makes ArgvInput::getFirstArgument() able to distinguish an option from an argument. $input->bind($this->getDefinition()); } catch (ExceptionInterface $e) { // Errors must be ignored, full binding/validation happens later when the command is known. } $name = $this->getCommandName($input); if (\true === $input->hasParameterOption(['--help', '-h'], \true)) { if (!$name) { $name = 'help'; $input = new ArrayInput(['command_name' => $this->defaultCommand]); } else { $this->wantHelps = \true; } } if (!$name) { $name = $this->defaultCommand; $definition = $this->getDefinition(); $definition->setArguments(\array_merge($definition->getArguments(), ['command' => new InputArgument('command', InputArgument::OPTIONAL, $definition->getArgument('command')->getDescription(), $name)])); } try { $this->runningCommand = null; // the command name MUST be the first element of the input $command = $this->find($name); } catch (\Throwable $e) { if (!($e instanceof CommandNotFoundException && !$e instanceof NamespaceNotFoundException) || 1 !== \count($alternatives = $e->getAlternatives()) || !$input->isInteractive()) { if (null !== $this->dispatcher) { $event = new ConsoleErrorEvent($input, $output, $e); $this->dispatcher->dispatch($event, ConsoleEvents::ERROR); if (0 === $event->getExitCode()) { return 0; } $e = $event->getError(); } throw $e; } $alternative = $alternatives[0]; $style = new SymfonyStyle($input, $output); $output->writeln(''); $formattedBlock = (new FormatterHelper())->formatBlock(\sprintf('Command "%s" is not defined.', $name), 'error', \true); $output->writeln($formattedBlock); if (!$style->confirm(\sprintf('Do you want to run "%s" instead? ', $alternative), \false)) { if (null !== $this->dispatcher) { $event = new ConsoleErrorEvent($input, $output, $e); $this->dispatcher->dispatch($event, ConsoleEvents::ERROR); return $event->getExitCode(); } return 1; } $command = $this->find($alternative); } if ($command instanceof LazyCommand) { $command = $command->getCommand(); } $this->runningCommand = $command; $exitCode = $this->doRunCommand($command, $input, $output); $this->runningCommand = null; return $exitCode; } /** * {@inheritdoc} */ public function reset() { } public function setHelperSet(HelperSet $helperSet) { $this->helperSet = $helperSet; } /** * Get the helper set associated with the command. * * @return HelperSet */ public function getHelperSet() { if (!$this->helperSet) { $this->helperSet = $this->getDefaultHelperSet(); } return $this->helperSet; } public function setDefinition(InputDefinition $definition) { $this->definition = $definition; } /** * Gets the InputDefinition related to this Application. * * @return InputDefinition */ public function getDefinition() { if (!$this->definition) { $this->definition = $this->getDefaultInputDefinition(); } if ($this->singleCommand) { $inputDefinition = $this->definition; $inputDefinition->setArguments(); return $inputDefinition; } return $this->definition; } /** * Adds suggestions to $suggestions for the current completion input (e.g. option or argument). */ public function complete(CompletionInput $input, CompletionSuggestions $suggestions) : void { if (CompletionInput::TYPE_ARGUMENT_VALUE === $input->getCompletionType() && 'command' === $input->getCompletionName()) { $commandNames = []; foreach ($this->all() as $name => $command) { // skip hidden commands and aliased commands as they already get added below if ($command->isHidden() || $command->getName() !== $name) { continue; } $commandNames[] = $command->getName(); foreach ($command->getAliases() as $name) { $commandNames[] = $name; } } $suggestions->suggestValues(\array_filter($commandNames)); return; } if (CompletionInput::TYPE_OPTION_NAME === $input->getCompletionType()) { $suggestions->suggestOptions($this->getDefinition()->getOptions()); return; } } /** * Gets the help message. * * @return string */ public function getHelp() { return $this->getLongVersion(); } /** * Gets whether to catch exceptions or not during commands execution. * * @return bool */ public function areExceptionsCaught() { return $this->catchExceptions; } /** * Sets whether to catch exceptions or not during commands execution. */ public function setCatchExceptions(bool $boolean) { $this->catchExceptions = $boolean; } /** * Gets whether to automatically exit after a command execution or not. * * @return bool */ public function isAutoExitEnabled() { return $this->autoExit; } /** * Sets whether to automatically exit after a command execution or not. */ public function setAutoExit(bool $boolean) { $this->autoExit = $boolean; } /** * Gets the name of the application. * * @return string */ public function getName() { return $this->name; } /** * Sets the application name. **/ public function setName(string $name) { $this->name = $name; } /** * Gets the application version. * * @return string */ public function getVersion() { return $this->version; } /** * Sets the application version. */ public function setVersion(string $version) { $this->version = $version; } /** * Returns the long version of the application. * * @return string */ public function getLongVersion() { if ('UNKNOWN' !== $this->getName()) { if ('UNKNOWN' !== $this->getVersion()) { return \sprintf('%s %s', $this->getName(), $this->getVersion()); } return $this->getName(); } return 'Console Tool'; } /** * Registers a new command. * * @return Command */ public function register(string $name) { return $this->add(new Command($name)); } /** * Adds an array of command objects. * * If a Command is not enabled it will not be added. * * @param Command[] $commands An array of commands */ public function addCommands(array $commands) { foreach ($commands as $command) { $this->add($command); } } /** * Adds a command object. * * If a command with the same name already exists, it will be overridden. * If the command is not enabled it will not be added. * * @return Command|null */ public function add(Command $command) { $this->init(); $command->setApplication($this); if (!$command->isEnabled()) { $command->setApplication(null); return null; } if (!$command instanceof LazyCommand) { // Will throw if the command is not correctly initialized. $command->getDefinition(); } if (!$command->getName()) { throw new LogicException(\sprintf('The command defined in "%s" cannot have an empty name.', \get_debug_type($command))); } $this->commands[$command->getName()] = $command; foreach ($command->getAliases() as $alias) { $this->commands[$alias] = $command; } return $command; } /** * Returns a registered command by name or alias. * * @return Command * * @throws CommandNotFoundException When given command name does not exist */ public function get(string $name) { $this->init(); if (!$this->has($name)) { throw new CommandNotFoundException(\sprintf('The command "%s" does not exist.', $name)); } // When the command has a different name than the one used at the command loader level if (!isset($this->commands[$name])) { throw new CommandNotFoundException(\sprintf('The "%s" command cannot be found because it is registered under multiple names. Make sure you don\'t set a different name via constructor or "setName()".', $name)); } $command = $this->commands[$name]; if ($this->wantHelps) { $this->wantHelps = \false; $helpCommand = $this->get('help'); $helpCommand->setCommand($command); return $helpCommand; } return $command; } /** * Returns true if the command exists, false otherwise. * * @return bool */ public function has(string $name) { $this->init(); return isset($this->commands[$name]) || $this->commandLoader && $this->commandLoader->has($name) && $this->add($this->commandLoader->get($name)); } /** * Returns an array of all unique namespaces used by currently registered commands. * * It does not return the global namespace which always exists. * * @return string[] */ public function getNamespaces() { $namespaces = []; foreach ($this->all() as $command) { if ($command->isHidden()) { continue; } $namespaces[] = $this->extractAllNamespaces($command->getName()); foreach ($command->getAliases() as $alias) { $namespaces[] = $this->extractAllNamespaces($alias); } } return \array_values(\array_unique(\array_filter(\array_merge([], ...$namespaces)))); } /** * Finds a registered namespace by a name or an abbreviation. * * @return string * * @throws NamespaceNotFoundException When namespace is incorrect or ambiguous */ public function findNamespace(string $namespace) { $allNamespaces = $this->getNamespaces(); $expr = \implode('[^:]*:', \array_map('preg_quote', \explode(':', $namespace))) . '[^:]*'; $namespaces = \preg_grep('{^' . $expr . '}', $allNamespaces); if (empty($namespaces)) { $message = \sprintf('There are no commands defined in the "%s" namespace.', $namespace); if ($alternatives = $this->findAlternatives($namespace, $allNamespaces)) { if (1 == \count($alternatives)) { $message .= "\n\nDid you mean this?\n "; } else { $message .= "\n\nDid you mean one of these?\n "; } $message .= \implode("\n ", $alternatives); } throw new NamespaceNotFoundException($message, $alternatives); } $exact = \in_array($namespace, $namespaces, \true); if (\count($namespaces) > 1 && !$exact) { throw new NamespaceNotFoundException(\sprintf("The namespace \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $namespace, $this->getAbbreviationSuggestions(\array_values($namespaces))), \array_values($namespaces)); } return $exact ? $namespace : \reset($namespaces); } /** * Finds a command by name or alias. * * Contrary to get, this command tries to find the best * match if you give it an abbreviation of a name or alias. * * @return Command * * @throws CommandNotFoundException When command name is incorrect or ambiguous */ public function find(string $name) { $this->init(); $aliases = []; foreach ($this->commands as $command) { foreach ($command->getAliases() as $alias) { if (!$this->has($alias)) { $this->commands[$alias] = $command; } } } if ($this->has($name)) { return $this->get($name); } $allCommands = $this->commandLoader ? \array_merge($this->commandLoader->getNames(), \array_keys($this->commands)) : \array_keys($this->commands); $expr = \implode('[^:]*:', \array_map('preg_quote', \explode(':', $name))) . '[^:]*'; $commands = \preg_grep('{^' . $expr . '}', $allCommands); if (empty($commands)) { $commands = \preg_grep('{^' . $expr . '}i', $allCommands); } // if no commands matched or we just matched namespaces if (empty($commands) || \count(\preg_grep('{^' . $expr . '$}i', $commands)) < 1) { if (\false !== ($pos = \strrpos($name, ':'))) { // check if a namespace exists and contains commands $this->findNamespace(\substr($name, 0, $pos)); } $message = \sprintf('Command "%s" is not defined.', $name); if ($alternatives = $this->findAlternatives($name, $allCommands)) { // remove hidden commands $alternatives = \array_filter($alternatives, function ($name) { return !$this->get($name)->isHidden(); }); if (1 == \count($alternatives)) { $message .= "\n\nDid you mean this?\n "; } else { $message .= "\n\nDid you mean one of these?\n "; } $message .= \implode("\n ", $alternatives); } throw new CommandNotFoundException($message, \array_values($alternatives)); } // filter out aliases for commands which are already on the list if (\count($commands) > 1) { $commandList = $this->commandLoader ? \array_merge(\array_flip($this->commandLoader->getNames()), $this->commands) : $this->commands; $commands = \array_unique(\array_filter($commands, function ($nameOrAlias) use(&$commandList, $commands, &$aliases) { if (!$commandList[$nameOrAlias] instanceof Command) { $commandList[$nameOrAlias] = $this->commandLoader->get($nameOrAlias); } $commandName = $commandList[$nameOrAlias]->getName(); $aliases[$nameOrAlias] = $commandName; return $commandName === $nameOrAlias || !\in_array($commandName, $commands); })); } if (\count($commands) > 1) { $usableWidth = $this->terminal->getWidth() - 10; $abbrevs = \array_values($commands); $maxLen = 0; foreach ($abbrevs as $abbrev) { $maxLen = \max(Helper::width($abbrev), $maxLen); } $abbrevs = \array_map(function ($cmd) use($commandList, $usableWidth, $maxLen, &$commands) { if ($commandList[$cmd]->isHidden()) { unset($commands[\array_search($cmd, $commands)]); return \false; } $abbrev = \str_pad($cmd, $maxLen, ' ') . ' ' . $commandList[$cmd]->getDescription(); return Helper::width($abbrev) > $usableWidth ? Helper::substr($abbrev, 0, $usableWidth - 3) . '...' : $abbrev; }, \array_values($commands)); if (\count($commands) > 1) { $suggestions = $this->getAbbreviationSuggestions(\array_filter($abbrevs)); throw new CommandNotFoundException(\sprintf("Command \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $name, $suggestions), \array_values($commands)); } } $command = $this->get(\reset($commands)); if ($command->isHidden()) { throw new CommandNotFoundException(\sprintf('The command "%s" does not exist.', $name)); } return $command; } /** * Gets the commands (registered in the given namespace if provided). * * The array keys are the full names and the values the command instances. * * @return Command[] */ public function all(?string $namespace = null) { $this->init(); if (null === $namespace) { if (!$this->commandLoader) { return $this->commands; } $commands = $this->commands; foreach ($this->commandLoader->getNames() as $name) { if (!isset($commands[$name]) && $this->has($name)) { $commands[$name] = $this->get($name); } } return $commands; } $commands = []; foreach ($this->commands as $name => $command) { if ($namespace === $this->extractNamespace($name, \substr_count($namespace, ':') + 1)) { $commands[$name] = $command; } } if ($this->commandLoader) { foreach ($this->commandLoader->getNames() as $name) { if (!isset($commands[$name]) && $namespace === $this->extractNamespace($name, \substr_count($namespace, ':') + 1) && $this->has($name)) { $commands[$name] = $this->get($name); } } } return $commands; } /** * Returns an array of possible abbreviations given a set of names. * * @return string[][] */ public static function getAbbreviations(array $names) { $abbrevs = []; foreach ($names as $name) { for ($len = \strlen($name); $len > 0; --$len) { $abbrev = \substr($name, 0, $len); $abbrevs[$abbrev][] = $name; } } return $abbrevs; } public function renderThrowable(\Throwable $e, OutputInterface $output) : void { $output->writeln('', OutputInterface::VERBOSITY_QUIET); $this->doRenderThrowable($e, $output); if (null !== $this->runningCommand) { $output->writeln(\sprintf('%s', OutputFormatter::escape(\sprintf($this->runningCommand->getSynopsis(), $this->getName()))), OutputInterface::VERBOSITY_QUIET); $output->writeln('', OutputInterface::VERBOSITY_QUIET); } } protected function doRenderThrowable(\Throwable $e, OutputInterface $output) : void { do { $message = \trim($e->getMessage()); if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { $class = \get_debug_type($e); $title = \sprintf(' [%s%s] ', $class, 0 !== ($code = $e->getCode()) ? ' (' . $code . ')' : ''); $len = Helper::width($title); } else { $len = 0; } if (\str_contains($message, "@anonymous\x00")) { $message = \preg_replace_callback('/[a-zA-Z_\\x7f-\\xff][\\\\a-zA-Z0-9_\\x7f-\\xff]*+@anonymous\\x00.*?\\.php(?:0x?|:[0-9]++\\$)[0-9a-fA-F]++/', function ($m) { return \class_exists($m[0], \false) ? ((\get_parent_class($m[0]) ?: \key(\class_implements($m[0]))) ?: 'class') . '@anonymous' : $m[0]; }, $message); } $width = $this->terminal->getWidth() ? $this->terminal->getWidth() - 1 : \PHP_INT_MAX; $lines = []; foreach ('' !== $message ? \preg_split('/\\r?\\n/', $message) : [] as $line) { foreach ($this->splitStringByWidth($line, $width - 4) as $line) { // pre-format lines to get the right string length $lineLength = Helper::width($line) + 4; $lines[] = [$line, $lineLength]; $len = \max($lineLength, $len); } } $messages = []; if (!$e instanceof ExceptionInterface || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { $messages[] = \sprintf('%s', OutputFormatter::escape(\sprintf('In %s line %s:', \basename($e->getFile()) ?: 'n/a', $e->getLine() ?: 'n/a'))); } $messages[] = $emptyLine = \sprintf('%s', \str_repeat(' ', $len)); if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { $messages[] = \sprintf('%s%s', $title, \str_repeat(' ', \max(0, $len - Helper::width($title)))); } foreach ($lines as $line) { $messages[] = \sprintf(' %s %s', OutputFormatter::escape($line[0]), \str_repeat(' ', $len - $line[1])); } $messages[] = $emptyLine; $messages[] = ''; $output->writeln($messages, OutputInterface::VERBOSITY_QUIET); if (OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { $output->writeln('Exception trace:', OutputInterface::VERBOSITY_QUIET); // exception related properties $trace = $e->getTrace(); \array_unshift($trace, ['function' => '', 'file' => $e->getFile() ?: 'n/a', 'line' => $e->getLine() ?: 'n/a', 'args' => []]); for ($i = 0, $count = \count($trace); $i < $count; ++$i) { $class = $trace[$i]['class'] ?? ''; $type = $trace[$i]['type'] ?? ''; $function = $trace[$i]['function'] ?? ''; $file = $trace[$i]['file'] ?? 'n/a'; $line = $trace[$i]['line'] ?? 'n/a'; $output->writeln(\sprintf(' %s%s at %s:%s', $class, $function ? $type . $function . '()' : '', $file, $line), OutputInterface::VERBOSITY_QUIET); } $output->writeln('', OutputInterface::VERBOSITY_QUIET); } } while ($e = $e->getPrevious()); } /** * Configures the input and output instances based on the user arguments and options. */ protected function configureIO(InputInterface $input, OutputInterface $output) { if (\true === $input->hasParameterOption(['--ansi'], \true)) { $output->setDecorated(\true); } elseif (\true === $input->hasParameterOption(['--no-ansi'], \true)) { $output->setDecorated(\false); } if (\true === $input->hasParameterOption(['--no-interaction', '-n'], \true)) { $input->setInteractive(\false); } switch ($shellVerbosity = (int) \getenv('SHELL_VERBOSITY')) { case -1: $output->setVerbosity(OutputInterface::VERBOSITY_QUIET); break; case 1: $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); break; case 2: $output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); break; case 3: $output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); break; default: $shellVerbosity = 0; break; } if (\true === $input->hasParameterOption(['--quiet', '-q'], \true)) { $output->setVerbosity(OutputInterface::VERBOSITY_QUIET); $shellVerbosity = -1; } else { if ($input->hasParameterOption('-vvv', \true) || $input->hasParameterOption('--verbose=3', \true) || 3 === $input->getParameterOption('--verbose', \false, \true)) { $output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); $shellVerbosity = 3; } elseif ($input->hasParameterOption('-vv', \true) || $input->hasParameterOption('--verbose=2', \true) || 2 === $input->getParameterOption('--verbose', \false, \true)) { $output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); $shellVerbosity = 2; } elseif ($input->hasParameterOption('-v', \true) || $input->hasParameterOption('--verbose=1', \true) || $input->hasParameterOption('--verbose', \true) || $input->getParameterOption('--verbose', \false, \true)) { $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); $shellVerbosity = 1; } } if (-1 === $shellVerbosity) { $input->setInteractive(\false); } if (\function_exists('putenv')) { @\putenv('SHELL_VERBOSITY=' . $shellVerbosity); } $_ENV['SHELL_VERBOSITY'] = $shellVerbosity; $_SERVER['SHELL_VERBOSITY'] = $shellVerbosity; } /** * Runs the current command. * * If an event dispatcher has been attached to the application, * events are also dispatched during the life-cycle of the command. * * @return int 0 if everything went fine, or an error code */ protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output) { foreach ($command->getHelperSet() as $helper) { if ($helper instanceof InputAwareInterface) { $helper->setInput($input); } } if ($this->signalsToDispatchEvent) { $commandSignals = $command instanceof SignalableCommandInterface ? $command->getSubscribedSignals() : []; if ($commandSignals || null !== $this->dispatcher) { if (!$this->signalRegistry) { throw new RuntimeException('Unable to subscribe to signal events. Make sure that the `pcntl` extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); } if (Terminal::hasSttyAvailable()) { $sttyMode = \shell_exec('stty -g'); foreach ([\SIGINT, \SIGTERM] as $signal) { $this->signalRegistry->register($signal, static function () use($sttyMode) { \shell_exec('stty ' . $sttyMode); }); } } } if (null !== $this->dispatcher) { foreach ($this->signalsToDispatchEvent as $signal) { $event = new ConsoleSignalEvent($command, $input, $output, $signal); $this->signalRegistry->register($signal, function ($signal, $hasNext) use($event) { $this->dispatcher->dispatch($event, ConsoleEvents::SIGNAL); // No more handlers, we try to simulate PHP default behavior if (!$hasNext) { if (!\in_array($signal, [\SIGUSR1, \SIGUSR2], \true)) { exit(0); } } }); } } foreach ($commandSignals as $signal) { $this->signalRegistry->register($signal, [$command, 'handleSignal']); } } if (null === $this->dispatcher) { return $command->run($input, $output); } // bind before the console.command event, so the listeners have access to input options/arguments try { $command->mergeApplicationDefinition(); $input->bind($command->getDefinition()); } catch (ExceptionInterface $e) { // ignore invalid options/arguments for now, to allow the event listeners to customize the InputDefinition } $event = new ConsoleCommandEvent($command, $input, $output); $e = null; try { $this->dispatcher->dispatch($event, ConsoleEvents::COMMAND); if ($event->commandShouldRun()) { $exitCode = $command->run($input, $output); } else { $exitCode = ConsoleCommandEvent::RETURN_CODE_DISABLED; } } catch (\Throwable $e) { $event = new ConsoleErrorEvent($input, $output, $e, $command); $this->dispatcher->dispatch($event, ConsoleEvents::ERROR); $e = $event->getError(); if (0 === ($exitCode = $event->getExitCode())) { $e = null; } } $event = new ConsoleTerminateEvent($command, $input, $output, $exitCode); $this->dispatcher->dispatch($event, ConsoleEvents::TERMINATE); if (null !== $e) { throw $e; } return $event->getExitCode(); } /** * Gets the name of the command based on input. * * @return string|null */ protected function getCommandName(InputInterface $input) { return $this->singleCommand ? $this->defaultCommand : $input->getFirstArgument(); } /** * Gets the default input definition. * * @return InputDefinition */ protected function getDefaultInputDefinition() { return new InputDefinition([new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'), new InputOption('--help', '-h', InputOption::VALUE_NONE, 'Display help for the given command. When no command is given display help for the ' . $this->defaultCommand . ' command'), new InputOption('--quiet', '-q', InputOption::VALUE_NONE, 'Do not output any message'), new InputOption('--verbose', '-v|vv|vvv', InputOption::VALUE_NONE, 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'), new InputOption('--version', '-V', InputOption::VALUE_NONE, 'Display this application version'), new InputOption('--ansi', '', InputOption::VALUE_NEGATABLE, 'Force (or disable --no-ansi) ANSI output', null), new InputOption('--no-interaction', '-n', InputOption::VALUE_NONE, 'Do not ask any interactive question')]); } /** * Gets the default commands that should always be available. * * @return Command[] */ protected function getDefaultCommands() { return [new HelpCommand(), new ListCommand(), new CompleteCommand(), new DumpCompletionCommand()]; } /** * Gets the default helper set with the helpers that should always be available. * * @return HelperSet */ protected function getDefaultHelperSet() { return new HelperSet([new FormatterHelper(), new DebugFormatterHelper(), new ProcessHelper(), new QuestionHelper()]); } /** * Returns abbreviated suggestions in string format. */ private function getAbbreviationSuggestions(array $abbrevs) : string { return ' ' . \implode("\n ", $abbrevs); } /** * Returns the namespace part of the command name. * * This method is not part of public API and should not be used directly. * * @return string */ public function extractNamespace(string $name, ?int $limit = null) { $parts = \explode(':', $name, -1); return \implode(':', null === $limit ? $parts : \array_slice($parts, 0, $limit)); } /** * Finds alternative of $name among $collection, * if nothing is found in $collection, try in $abbrevs. * * @return string[] */ private function findAlternatives(string $name, iterable $collection) : array { $threshold = 1000.0; $alternatives = []; $collectionParts = []; foreach ($collection as $item) { $collectionParts[$item] = \explode(':', $item); } foreach (\explode(':', $name) as $i => $subname) { foreach ($collectionParts as $collectionName => $parts) { $exists = isset($alternatives[$collectionName]); if (!isset($parts[$i]) && $exists) { $alternatives[$collectionName] += $threshold; continue; } elseif (!isset($parts[$i])) { continue; } $lev = \levenshtein($subname, $parts[$i]); if ($lev <= \strlen($subname) / 3 || '' !== $subname && \str_contains($parts[$i], $subname)) { $alternatives[$collectionName] = $exists ? $alternatives[$collectionName] + $lev : $lev; } elseif ($exists) { $alternatives[$collectionName] += $threshold; } } } foreach ($collection as $item) { $lev = \levenshtein($name, $item); if ($lev <= \strlen($name) / 3 || \str_contains($item, $name)) { $alternatives[$item] = isset($alternatives[$item]) ? $alternatives[$item] - $lev : $lev; } } $alternatives = \array_filter($alternatives, function ($lev) use($threshold) { return $lev < 2 * $threshold; }); \ksort($alternatives, \SORT_NATURAL | \SORT_FLAG_CASE); return \array_keys($alternatives); } /** * Sets the default Command name. * * @return $this */ public function setDefaultCommand(string $commandName, bool $isSingleCommand = \false) { $this->defaultCommand = \explode('|', \ltrim($commandName, '|'))[0]; if ($isSingleCommand) { // Ensure the command exist $this->find($commandName); $this->singleCommand = \true; } return $this; } /** * @internal */ public function isSingleCommand() : bool { return $this->singleCommand; } private function splitStringByWidth(string $string, int $width) : array { // str_split is not suitable for multi-byte characters, we should use preg_split to get char array properly. // additionally, array_slice() is not enough as some character has doubled width. // we need a function to split string not by character count but by string width if (\false === ($encoding = \mb_detect_encoding($string, null, \true))) { return \str_split($string, $width); } $utf8String = \mb_convert_encoding($string, 'utf8', $encoding); $lines = []; $line = ''; $offset = 0; while (\preg_match('/.{1,10000}/u', $utf8String, $m, 0, $offset)) { $offset += \strlen($m[0]); foreach (\preg_split('//u', $m[0]) as $char) { // test if $char could be appended to current line if (\mb_strwidth($line . $char, 'utf8') <= $width) { $line .= $char; continue; } // if not, push current line to array and make new line $lines[] = \str_pad($line, $width); $line = $char; } } $lines[] = \count($lines) ? \str_pad($line, $width) : $line; \mb_convert_variables($encoding, 'utf8', $lines); return $lines; } /** * Returns all namespaces of the command name. * * @return string[] */ private function extractAllNamespaces(string $name) : array { // -1 as third argument is needed to skip the command short name when exploding $parts = \explode(':', $name, -1); $namespaces = []; foreach ($parts as $part) { if (\count($namespaces)) { $namespaces[] = \end($namespaces) . ':' . $part; } else { $namespaces[] = $part; } } return $namespaces; } private function init() { if ($this->initialized) { return; } $this->initialized = \true; foreach ($this->getDefaultCommands() as $command) { $this->add($command); } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Attribute; /** * Service tag to autoconfigure commands. */ #[\Attribute(\Attribute::TARGET_CLASS)] class AsCommand { public function __construct(public string $name, public ?string $description = null, array $aliases = [], bool $hidden = \false) { if (!$hidden && !$aliases) { return; } $name = \explode('|', $name); $name = \array_merge($name, $aliases); if ($hidden && '' !== $name[0]) { \array_unshift($name, ''); } $this->name = \implode('|', $name); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionInput; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionSuggestions; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\Output\BashCompletionOutput; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\Output\CompletionOutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\CommandNotFoundException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\ExceptionInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputOption; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * Responsible for providing the values to the shell completion. * * @author Wouter de Jong */ final class CompleteCommand extends Command { protected static $defaultName = '|_complete'; protected static $defaultDescription = 'Internal command to provide shell completion suggestions'; private $completionOutputs; private $isDebug = \false; /** * @param array> $completionOutputs A list of additional completion outputs, with shell name as key and FQCN as value */ public function __construct(array $completionOutputs = []) { // must be set before the parent constructor, as the property value is used in configure() $this->completionOutputs = $completionOutputs + ['bash' => BashCompletionOutput::class]; parent::__construct(); } protected function configure() : void { $this->addOption('shell', 's', InputOption::VALUE_REQUIRED, 'The shell type ("' . \implode('", "', \array_keys($this->completionOutputs)) . '")')->addOption('input', 'i', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'An array of input tokens (e.g. COMP_WORDS or argv)')->addOption('current', 'c', InputOption::VALUE_REQUIRED, 'The index of the "input" array that the cursor is in (e.g. COMP_CWORD)')->addOption('symfony', 'S', InputOption::VALUE_REQUIRED, 'The version of the completion script'); } protected function initialize(InputInterface $input, OutputInterface $output) { $this->isDebug = \filter_var(\getenv('SYMFONY_COMPLETION_DEBUG'), \FILTER_VALIDATE_BOOLEAN); } protected function execute(InputInterface $input, OutputInterface $output) : int { try { // uncomment when a bugfix or BC break has been introduced in the shell completion scripts // $version = $input->getOption('symfony'); // if ($version && version_compare($version, 'x.y', '>=')) { // $message = sprintf('Completion script version is not supported ("%s" given, ">=x.y" required).', $version); // $this->log($message); // $output->writeln($message.' Install the Symfony completion script again by using the "completion" command.'); // return 126; // } $shell = $input->getOption('shell'); if (!$shell) { throw new \RuntimeException('The "--shell" option must be set.'); } if (!($completionOutput = $this->completionOutputs[$shell] ?? \false)) { throw new \RuntimeException(\sprintf('Shell completion is not supported for your shell: "%s" (supported: "%s").', $shell, \implode('", "', \array_keys($this->completionOutputs)))); } $completionInput = $this->createCompletionInput($input); $suggestions = new CompletionSuggestions(); $this->log(['', '' . \date('Y-m-d H:i:s') . '', 'Input: ("|" indicates the cursor position)', ' ' . (string) $completionInput, 'Command:', ' ' . (string) \implode(' ', $_SERVER['argv']), 'Messages:']); $command = $this->findCommand($completionInput, $output); if (null === $command) { $this->log(' No command found, completing using the Application class.'); $this->getApplication()->complete($completionInput, $suggestions); } elseif ($completionInput->mustSuggestArgumentValuesFor('command') && $command->getName() !== $completionInput->getCompletionValue() && !\in_array($completionInput->getCompletionValue(), $command->getAliases(), \true)) { $this->log(' No command found, completing using the Application class.'); // expand shortcut names ("cache:cl") into their full name ("cache:clear") $suggestions->suggestValues(\array_filter(\array_merge([$command->getName()], $command->getAliases()))); } else { $command->mergeApplicationDefinition(); $completionInput->bind($command->getDefinition()); if (CompletionInput::TYPE_OPTION_NAME === $completionInput->getCompletionType()) { $this->log(' Completing option names for the ' . \get_class($command instanceof LazyCommand ? $command->getCommand() : $command) . ' command.'); $suggestions->suggestOptions($command->getDefinition()->getOptions()); } else { $this->log([' Completing using the ' . \get_class($command instanceof LazyCommand ? $command->getCommand() : $command) . ' class.', ' Completing ' . $completionInput->getCompletionType() . ' for ' . $completionInput->getCompletionName() . '']); if (null !== ($compval = $completionInput->getCompletionValue())) { $this->log(' Current value: ' . $compval . ''); } $command->complete($completionInput, $suggestions); } } /** @var CompletionOutputInterface $completionOutput */ $completionOutput = new $completionOutput(); $this->log('Suggestions:'); if ($options = $suggestions->getOptionSuggestions()) { $this->log(' --' . \implode(' --', \array_map(function ($o) { return $o->getName(); }, $options))); } elseif ($values = $suggestions->getValueSuggestions()) { $this->log(' ' . \implode(' ', $values)); } else { $this->log(' No suggestions were provided'); } $completionOutput->write($suggestions, $output); } catch (\Throwable $e) { $this->log(['Error!', (string) $e]); if ($output->isDebug()) { throw $e; } return 2; } return 0; } private function createCompletionInput(InputInterface $input) : CompletionInput { $currentIndex = $input->getOption('current'); if (!$currentIndex || !\ctype_digit($currentIndex)) { throw new \RuntimeException('The "--current" option must be set and it must be an integer.'); } $completionInput = CompletionInput::fromTokens($input->getOption('input'), (int) $currentIndex); try { $completionInput->bind($this->getApplication()->getDefinition()); } catch (ExceptionInterface $e) { } return $completionInput; } private function findCommand(CompletionInput $completionInput, OutputInterface $output) : ?Command { try { $inputName = $completionInput->getFirstArgument(); if (null === $inputName) { return null; } return $this->getApplication()->find($inputName); } catch (CommandNotFoundException $e) { } return null; } private function log($messages) : void { if (!$this->isDebug) { return; } $commandName = \basename($_SERVER['argv'][0]); \file_put_contents(\sys_get_temp_dir() . '/sf_' . $commandName . '.log', \implode(\PHP_EOL, (array) $messages) . \PHP_EOL, \FILE_APPEND); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Application; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionInput; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionSuggestions; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\HelperSet; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputDefinition; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * @author Nicolas Grekas */ final class LazyCommand extends Command { private $command; private $isEnabled; public function __construct(string $name, array $aliases, string $description, bool $isHidden, \Closure $commandFactory, ?bool $isEnabled = \true) { $this->setName($name)->setAliases($aliases)->setHidden($isHidden)->setDescription($description); $this->command = $commandFactory; $this->isEnabled = $isEnabled; } public function ignoreValidationErrors() : void { $this->getCommand()->ignoreValidationErrors(); } public function setApplication(?Application $application = null) : void { if ($this->command instanceof parent) { $this->command->setApplication($application); } parent::setApplication($application); } public function setHelperSet(HelperSet $helperSet) : void { if ($this->command instanceof parent) { $this->command->setHelperSet($helperSet); } parent::setHelperSet($helperSet); } public function isEnabled() : bool { return $this->isEnabled ?? $this->getCommand()->isEnabled(); } public function run(InputInterface $input, OutputInterface $output) : int { return $this->getCommand()->run($input, $output); } public function complete(CompletionInput $input, CompletionSuggestions $suggestions) : void { $this->getCommand()->complete($input, $suggestions); } /** * @return $this */ public function setCode(callable $code) : self { $this->getCommand()->setCode($code); return $this; } /** * @internal */ public function mergeApplicationDefinition(bool $mergeArgs = \true) : void { $this->getCommand()->mergeApplicationDefinition($mergeArgs); } /** * @return $this */ public function setDefinition($definition) : self { $this->getCommand()->setDefinition($definition); return $this; } public function getDefinition() : InputDefinition { return $this->getCommand()->getDefinition(); } public function getNativeDefinition() : InputDefinition { return $this->getCommand()->getNativeDefinition(); } /** * @return $this */ public function addArgument(string $name, ?int $mode = null, string $description = '', $default = null) : self { $this->getCommand()->addArgument($name, $mode, $description, $default); return $this; } /** * @return $this */ public function addOption(string $name, $shortcut = null, ?int $mode = null, string $description = '', $default = null) : self { $this->getCommand()->addOption($name, $shortcut, $mode, $description, $default); return $this; } /** * @return $this */ public function setProcessTitle(string $title) : self { $this->getCommand()->setProcessTitle($title); return $this; } /** * @return $this */ public function setHelp(string $help) : self { $this->getCommand()->setHelp($help); return $this; } public function getHelp() : string { return $this->getCommand()->getHelp(); } public function getProcessedHelp() : string { return $this->getCommand()->getProcessedHelp(); } public function getSynopsis(bool $short = \false) : string { return $this->getCommand()->getSynopsis($short); } /** * @return $this */ public function addUsage(string $usage) : self { $this->getCommand()->addUsage($usage); return $this; } public function getUsages() : array { return $this->getCommand()->getUsages(); } /** * @return mixed */ public function getHelper(string $name) { return $this->getCommand()->getHelper($name); } public function getCommand() : parent { if (!$this->command instanceof \Closure) { return $this->command; } $command = $this->command = ($this->command)(); $command->setApplication($this->getApplication()); if (null !== $this->getHelperSet()) { $command->setHelperSet($this->getHelperSet()); } $command->setName($this->getName())->setAliases($this->getAliases())->setHidden($this->isHidden())->setDescription($this->getDescription()); // Will throw if the command is not correctly initialized. $command->getDefinition(); return $command; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionInput; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionSuggestions; use _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor\ApplicationDescription; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\DescriptorHelper; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputArgument; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputOption; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * ListCommand displays the list of all available commands for the application. * * @author Fabien Potencier */ class ListCommand extends Command { /** * {@inheritdoc} */ protected function configure() { $this->setName('list')->setDefinition([new InputArgument('namespace', InputArgument::OPTIONAL, 'The namespace name'), new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command list'), new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'), new InputOption('short', null, InputOption::VALUE_NONE, 'To skip describing commands\' arguments')])->setDescription('List commands')->setHelp(<<<'EOF' The %command.name% command lists all commands: %command.full_name% You can also display the commands for a specific namespace: %command.full_name% test You can also output the information in other formats by using the --format option: %command.full_name% --format=xml It's also possible to get raw list of commands (useful for embedding command runner): %command.full_name% --raw EOF ); } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $helper = new DescriptorHelper(); $helper->describe($output, $this->getApplication(), ['format' => $input->getOption('format'), 'raw_text' => $input->getOption('raw'), 'namespace' => $input->getArgument('namespace'), 'short' => $input->getOption('short')]); return 0; } public function complete(CompletionInput $input, CompletionSuggestions $suggestions) : void { if ($input->mustSuggestArgumentValuesFor('namespace')) { $descriptor = new ApplicationDescription($this->getApplication()); $suggestions->suggestValues(\array_keys($descriptor->getNamespaces())); return; } if ($input->mustSuggestOptionValuesFor('format')) { $helper = new DescriptorHelper(); $suggestions->suggestValues($helper->getFormats()); } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionInput; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionSuggestions; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputArgument; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputOption; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\ConsoleOutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Process\Process; /** * Dumps the completion script for the current shell. * * @author Wouter de Jong */ final class DumpCompletionCommand extends Command { protected static $defaultName = 'completion'; protected static $defaultDescription = 'Dump the shell completion script'; public function complete(CompletionInput $input, CompletionSuggestions $suggestions) : void { if ($input->mustSuggestArgumentValuesFor('shell')) { $suggestions->suggestValues($this->getSupportedShells()); } } protected function configure() { $fullCommand = $_SERVER['PHP_SELF']; $commandName = \basename($fullCommand); $fullCommand = @\realpath($fullCommand) ?: $fullCommand; $this->setHelp(<<%command.name% command dumps the shell completion script required to use shell autocompletion (currently only bash completion is supported). Static installation ------------------- Dump the script to a global completion file and restart your shell: %command.full_name% bash | sudo tee /etc/bash_completion.d/{$commandName} Or dump the script to a local file and source it: %command.full_name% bash > completion.sh # source the file whenever you use the project source completion.sh # or add this line at the end of your "~/.bashrc" file: source /path/to/completion.sh Dynamic installation -------------------- Add this to the end of your shell configuration file (e.g. "~/.bashrc"): eval "\$({$fullCommand} completion bash)" EOH )->addArgument('shell', InputArgument::OPTIONAL, 'The shell type (e.g. "bash"), the value of the "$SHELL" env var will be used if this is not given')->addOption('debug', null, InputOption::VALUE_NONE, 'Tail the completion debug log'); } protected function execute(InputInterface $input, OutputInterface $output) : int { $commandName = \basename($_SERVER['argv'][0]); if ($input->getOption('debug')) { $this->tailDebugLog($commandName, $output); return 0; } $shell = $input->getArgument('shell') ?? self::guessShell(); $completionFile = __DIR__ . '/../Resources/completion.' . $shell; if (!\file_exists($completionFile)) { $supportedShells = $this->getSupportedShells(); if ($output instanceof ConsoleOutputInterface) { $output = $output->getErrorOutput(); } if ($shell) { $output->writeln(\sprintf('Detected shell "%s", which is not supported by Symfony shell completion (supported shells: "%s").', $shell, \implode('", "', $supportedShells))); } else { $output->writeln(\sprintf('Shell not detected, Symfony shell completion only supports "%s").', \implode('", "', $supportedShells))); } return 2; } $output->write(\str_replace(['{{ COMMAND_NAME }}', '{{ VERSION }}'], [$commandName, $this->getApplication()->getVersion()], \file_get_contents($completionFile))); return 0; } private static function guessShell() : string { return \basename($_SERVER['SHELL'] ?? ''); } private function tailDebugLog(string $commandName, OutputInterface $output) : void { $debugFile = \sys_get_temp_dir() . '/sf_' . $commandName . '.log'; if (!\file_exists($debugFile)) { \touch($debugFile); } $process = new Process(['tail', '-f', $debugFile], null, null, null, 0); $process->run(function (string $type, string $line) use($output) : void { $output->write($line); }); } /** * @return string[] */ private function getSupportedShells() : array { $shells = []; foreach (new \DirectoryIterator(__DIR__ . '/../Resources/') as $file) { if (\str_starts_with($file->getBasename(), 'completion.') && $file->isFile()) { $shells[] = $file->getExtension(); } } return $shells; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Command; /** * Interface for command reacting to signal. * * @author Grégoire Pineau */ interface SignalableCommandInterface { /** * Returns the list of signals to subscribe. */ public function getSubscribedSignals() : array; /** * The method will be called when the application is signaled. */ public function handleSignal(int $signal) : void; } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Application; use _PHPStan_b22655c3f\Symfony\Component\Console\Attribute\AsCommand; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionInput; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionSuggestions; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\ExceptionInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\LogicException; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\HelperSet; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputArgument; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputDefinition; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputOption; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * Base class for all commands. * * @author Fabien Potencier */ class Command { // see https://tldp.org/LDP/abs/html/exitcodes.html public const SUCCESS = 0; public const FAILURE = 1; public const INVALID = 2; /** * @var string|null The default command name */ protected static $defaultName; /** * @var string|null The default command description */ protected static $defaultDescription; private $application; private $name; private $processTitle; private $aliases = []; private $definition; private $hidden = \false; private $help = ''; private $description = ''; private $fullDefinition; private $ignoreValidationErrors = \false; private $code; private $synopsis = []; private $usages = []; private $helperSet; /** * @return string|null */ public static function getDefaultName() { $class = static::class; if (\PHP_VERSION_ID >= 80000 && ($attribute = (new \ReflectionClass($class))->getAttributes(AsCommand::class))) { return $attribute[0]->newInstance()->name; } $r = new \ReflectionProperty($class, 'defaultName'); return $class === $r->class ? static::$defaultName : null; } public static function getDefaultDescription() : ?string { $class = static::class; if (\PHP_VERSION_ID >= 80000 && ($attribute = (new \ReflectionClass($class))->getAttributes(AsCommand::class))) { return $attribute[0]->newInstance()->description; } $r = new \ReflectionProperty($class, 'defaultDescription'); return $class === $r->class ? static::$defaultDescription : null; } /** * @param string|null $name The name of the command; passing null means it must be set in configure() * * @throws LogicException When the command name is empty */ public function __construct(?string $name = null) { $this->definition = new InputDefinition(); if (null === $name && null !== ($name = static::getDefaultName())) { $aliases = \explode('|', $name); if ('' === ($name = \array_shift($aliases))) { $this->setHidden(\true); $name = \array_shift($aliases); } $this->setAliases($aliases); } if (null !== $name) { $this->setName($name); } if ('' === $this->description) { $this->setDescription(static::getDefaultDescription() ?? ''); } $this->configure(); } /** * Ignores validation errors. * * This is mainly useful for the help command. */ public function ignoreValidationErrors() { $this->ignoreValidationErrors = \true; } public function setApplication(?Application $application = null) { $this->application = $application; if ($application) { $this->setHelperSet($application->getHelperSet()); } else { $this->helperSet = null; } $this->fullDefinition = null; } public function setHelperSet(HelperSet $helperSet) { $this->helperSet = $helperSet; } /** * Gets the helper set. * * @return HelperSet|null */ public function getHelperSet() { return $this->helperSet; } /** * Gets the application instance for this command. * * @return Application|null */ public function getApplication() { return $this->application; } /** * Checks whether the command is enabled or not in the current environment. * * Override this to check for x or y and return false if the command cannot * run properly under the current conditions. * * @return bool */ public function isEnabled() { return \true; } /** * Configures the current command. */ protected function configure() { } /** * Executes the current command. * * This method is not abstract because you can use this class * as a concrete class. In this case, instead of defining the * execute() method, you set the code to execute by passing * a Closure to the setCode() method. * * @return int 0 if everything went fine, or an exit code * * @throws LogicException When this abstract method is not implemented * * @see setCode() */ protected function execute(InputInterface $input, OutputInterface $output) { throw new LogicException('You must override the execute() method in the concrete command class.'); } /** * Interacts with the user. * * This method is executed before the InputDefinition is validated. * This means that this is the only place where the command can * interactively ask for values of missing required arguments. */ protected function interact(InputInterface $input, OutputInterface $output) { } /** * Initializes the command after the input has been bound and before the input * is validated. * * This is mainly useful when a lot of commands extends one main command * where some things need to be initialized based on the input arguments and options. * * @see InputInterface::bind() * @see InputInterface::validate() */ protected function initialize(InputInterface $input, OutputInterface $output) { } /** * Runs the command. * * The code to execute is either defined directly with the * setCode() method or by overriding the execute() method * in a sub-class. * * @return int The command exit code * * @throws ExceptionInterface When input binding fails. Bypass this by calling {@link ignoreValidationErrors()}. * * @see setCode() * @see execute() */ public function run(InputInterface $input, OutputInterface $output) { // add the application arguments and options $this->mergeApplicationDefinition(); // bind the input against the command specific arguments/options try { $input->bind($this->getDefinition()); } catch (ExceptionInterface $e) { if (!$this->ignoreValidationErrors) { throw $e; } } $this->initialize($input, $output); if (null !== $this->processTitle) { if (\function_exists('cli_set_process_title')) { if (!@\cli_set_process_title($this->processTitle)) { if ('Darwin' === \PHP_OS) { $output->writeln('Running "cli_set_process_title" as an unprivileged user is not supported on MacOS.', OutputInterface::VERBOSITY_VERY_VERBOSE); } else { \cli_set_process_title($this->processTitle); } } } elseif (\function_exists('_PHPStan_b22655c3f\\setproctitle')) { setproctitle($this->processTitle); } elseif (OutputInterface::VERBOSITY_VERY_VERBOSE === $output->getVerbosity()) { $output->writeln('Install the proctitle PECL to be able to change the process title.'); } } if ($input->isInteractive()) { $this->interact($input, $output); } // The command name argument is often omitted when a command is executed directly with its run() method. // It would fail the validation if we didn't make sure the command argument is present, // since it's required by the application. if ($input->hasArgument('command') && null === $input->getArgument('command')) { $input->setArgument('command', $this->getName()); } $input->validate(); if ($this->code) { $statusCode = ($this->code)($input, $output); } else { $statusCode = $this->execute($input, $output); if (!\is_int($statusCode)) { throw new \TypeError(\sprintf('Return value of "%s::execute()" must be of the type int, "%s" returned.', static::class, \get_debug_type($statusCode))); } } return \is_numeric($statusCode) ? (int) $statusCode : 0; } /** * Adds suggestions to $suggestions for the current completion input (e.g. option or argument). */ public function complete(CompletionInput $input, CompletionSuggestions $suggestions) : void { } /** * Sets the code to execute when running this command. * * If this method is used, it overrides the code defined * in the execute() method. * * @param callable $code A callable(InputInterface $input, OutputInterface $output) * * @return $this * * @throws InvalidArgumentException * * @see execute() */ public function setCode(callable $code) { if ($code instanceof \Closure) { $r = new \ReflectionFunction($code); if (null === $r->getClosureThis()) { \set_error_handler(static function () { }); try { if ($c = \Closure::bind($code, $this)) { $code = $c; } } finally { \restore_error_handler(); } } } $this->code = $code; return $this; } /** * Merges the application definition with the command definition. * * This method is not part of public API and should not be used directly. * * @param bool $mergeArgs Whether to merge or not the Application definition arguments to Command definition arguments * * @internal */ public function mergeApplicationDefinition(bool $mergeArgs = \true) { if (null === $this->application) { return; } $this->fullDefinition = new InputDefinition(); $this->fullDefinition->setOptions($this->definition->getOptions()); $this->fullDefinition->addOptions($this->application->getDefinition()->getOptions()); if ($mergeArgs) { $this->fullDefinition->setArguments($this->application->getDefinition()->getArguments()); $this->fullDefinition->addArguments($this->definition->getArguments()); } else { $this->fullDefinition->setArguments($this->definition->getArguments()); } } /** * Sets an array of argument and option instances. * * @param array|InputDefinition $definition An array of argument and option instances or a definition instance * * @return $this */ public function setDefinition($definition) { if ($definition instanceof InputDefinition) { $this->definition = $definition; } else { $this->definition->setDefinition($definition); } $this->fullDefinition = null; return $this; } /** * Gets the InputDefinition attached to this Command. * * @return InputDefinition */ public function getDefinition() { return $this->fullDefinition ?? $this->getNativeDefinition(); } /** * Gets the InputDefinition to be used to create representations of this Command. * * Can be overridden to provide the original command representation when it would otherwise * be changed by merging with the application InputDefinition. * * This method is not part of public API and should not be used directly. * * @return InputDefinition */ public function getNativeDefinition() { if (null === $this->definition) { throw new LogicException(\sprintf('Command class "%s" is not correctly initialized. You probably forgot to call the parent constructor.', static::class)); } return $this->definition; } /** * Adds an argument. * * @param int|null $mode The argument mode: InputArgument::REQUIRED or InputArgument::OPTIONAL * @param mixed $default The default value (for InputArgument::OPTIONAL mode only) * * @return $this * * @throws InvalidArgumentException When argument mode is not valid */ public function addArgument(string $name, ?int $mode = null, string $description = '', $default = null) { $this->definition->addArgument(new InputArgument($name, $mode, $description, $default)); if (null !== $this->fullDefinition) { $this->fullDefinition->addArgument(new InputArgument($name, $mode, $description, $default)); } return $this; } /** * Adds an option. * * @param string|array|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts * @param int|null $mode The option mode: One of the InputOption::VALUE_* constants * @param mixed $default The default value (must be null for InputOption::VALUE_NONE) * * @return $this * * @throws InvalidArgumentException If option mode is invalid or incompatible */ public function addOption(string $name, $shortcut = null, ?int $mode = null, string $description = '', $default = null) { $this->definition->addOption(new InputOption($name, $shortcut, $mode, $description, $default)); if (null !== $this->fullDefinition) { $this->fullDefinition->addOption(new InputOption($name, $shortcut, $mode, $description, $default)); } return $this; } /** * Sets the name of the command. * * This method can set both the namespace and the name if * you separate them by a colon (:) * * $command->setName('foo:bar'); * * @return $this * * @throws InvalidArgumentException When the name is invalid */ public function setName(string $name) { $this->validateName($name); $this->name = $name; return $this; } /** * Sets the process title of the command. * * This feature should be used only when creating a long process command, * like a daemon. * * @return $this */ public function setProcessTitle(string $title) { $this->processTitle = $title; return $this; } /** * Returns the command name. * * @return string|null */ public function getName() { return $this->name; } /** * @param bool $hidden Whether or not the command should be hidden from the list of commands * The default value will be true in Symfony 6.0 * * @return $this * * @final since Symfony 5.1 */ public function setHidden(bool $hidden) { $this->hidden = $hidden; return $this; } /** * @return bool whether the command should be publicly shown or not */ public function isHidden() { return $this->hidden; } /** * Sets the description for the command. * * @return $this */ public function setDescription(string $description) { $this->description = $description; return $this; } /** * Returns the description for the command. * * @return string */ public function getDescription() { return $this->description; } /** * Sets the help for the command. * * @return $this */ public function setHelp(string $help) { $this->help = $help; return $this; } /** * Returns the help for the command. * * @return string */ public function getHelp() { return $this->help; } /** * Returns the processed help for the command replacing the %command.name% and * %command.full_name% patterns with the real values dynamically. * * @return string */ public function getProcessedHelp() { $name = $this->name; $isSingleCommand = $this->application && $this->application->isSingleCommand(); $placeholders = ['%command.name%', '%command.full_name%']; $replacements = [$name, $isSingleCommand ? $_SERVER['PHP_SELF'] : $_SERVER['PHP_SELF'] . ' ' . $name]; return \str_replace($placeholders, $replacements, $this->getHelp() ?: $this->getDescription()); } /** * Sets the aliases for the command. * * @param string[] $aliases An array of aliases for the command * * @return $this * * @throws InvalidArgumentException When an alias is invalid */ public function setAliases(iterable $aliases) { $list = []; foreach ($aliases as $alias) { $this->validateName($alias); $list[] = $alias; } $this->aliases = \is_array($aliases) ? $aliases : $list; return $this; } /** * Returns the aliases for the command. * * @return array */ public function getAliases() { return $this->aliases; } /** * Returns the synopsis for the command. * * @param bool $short Whether to show the short version of the synopsis (with options folded) or not * * @return string */ public function getSynopsis(bool $short = \false) { $key = $short ? 'short' : 'long'; if (!isset($this->synopsis[$key])) { $this->synopsis[$key] = \trim(\sprintf('%s %s', $this->name, $this->definition->getSynopsis($short))); } return $this->synopsis[$key]; } /** * Add a command usage example, it'll be prefixed with the command name. * * @return $this */ public function addUsage(string $usage) { if (!\str_starts_with($usage, $this->name)) { $usage = \sprintf('%s %s', $this->name, $usage); } $this->usages[] = $usage; return $this; } /** * Returns alternative usages of the command. * * @return array */ public function getUsages() { return $this->usages; } /** * Gets a helper instance by name. * * @return mixed * * @throws LogicException if no HelperSet is defined * @throws InvalidArgumentException if the helper is not defined */ public function getHelper(string $name) { if (null === $this->helperSet) { throw new LogicException(\sprintf('Cannot retrieve helper "%s" because there is no HelperSet defined. Did you forget to add your command to the application or to set the application on the command using the setApplication() method? You can also set the HelperSet directly using the setHelperSet() method.', $name)); } return $this->helperSet->get($name); } /** * Validates a command name. * * It must be non-empty and parts can optionally be separated by ":". * * @throws InvalidArgumentException When the name is invalid */ private function validateName(string $name) { if (!\preg_match('/^[^\\:]++(\\:[^\\:]++)*$/', $name)) { throw new InvalidArgumentException(\sprintf('Command name "%s" is invalid.', $name)); } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionInput; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionSuggestions; use _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor\ApplicationDescription; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\DescriptorHelper; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputArgument; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputOption; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * HelpCommand displays the help for a given command. * * @author Fabien Potencier */ class HelpCommand extends Command { private $command; /** * {@inheritdoc} */ protected function configure() { $this->ignoreValidationErrors(); $this->setName('help')->setDefinition([new InputArgument('command_name', InputArgument::OPTIONAL, 'The command name', 'help'), new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'), new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command help')])->setDescription('Display help for a command')->setHelp(<<<'EOF' The %command.name% command displays help for a given command: %command.full_name% list You can also output the help in other formats by using the --format option: %command.full_name% --format=xml list To display the list of available commands, please use the list command. EOF ); } public function setCommand(Command $command) { $this->command = $command; } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { if (null === $this->command) { $this->command = $this->getApplication()->find($input->getArgument('command_name')); } $helper = new DescriptorHelper(); $helper->describe($output, $this->command, ['format' => $input->getOption('format'), 'raw_text' => $input->getOption('raw')]); $this->command = null; return 0; } public function complete(CompletionInput $input, CompletionSuggestions $suggestions) : void { if ($input->mustSuggestArgumentValuesFor('command_name')) { $descriptor = new ApplicationDescription($this->getApplication()); $suggestions->suggestValues(\array_keys($descriptor->getCommands())); return; } if ($input->mustSuggestOptionValuesFor('format')) { $helper = new DescriptorHelper(); $suggestions->suggestValues($helper->getFormats()); } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\LogicException; use _PHPStan_b22655c3f\Symfony\Component\Lock\LockFactory; use _PHPStan_b22655c3f\Symfony\Component\Lock\LockInterface; use _PHPStan_b22655c3f\Symfony\Component\Lock\Store\FlockStore; use _PHPStan_b22655c3f\Symfony\Component\Lock\Store\SemaphoreStore; /** * Basic lock feature for commands. * * @author Geoffrey Brier */ trait LockableTrait { /** @var LockInterface|null */ private $lock; /** * Locks a command. */ private function lock(?string $name = null, bool $blocking = \false) : bool { if (!\class_exists(SemaphoreStore::class)) { throw new LogicException('To enable the locking feature you must install the symfony/lock component.'); } if (null !== $this->lock) { throw new LogicException('A lock is already in place.'); } if (SemaphoreStore::isSupported()) { $store = new SemaphoreStore(); } else { $store = new FlockStore(); } $this->lock = (new LockFactory($store))->createLock($name ?: $this->getName()); if (!$this->lock->acquire($blocking)) { $this->lock = null; return \false; } return \true; } /** * Releases the command lock if there is one. */ private function release() { if ($this->lock) { $this->lock->release(); $this->lock = null; } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Logger; use _PHPStan_b22655c3f\Psr\Log\AbstractLogger; use _PHPStan_b22655c3f\Psr\Log\InvalidArgumentException; use _PHPStan_b22655c3f\Psr\Log\LogLevel; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\ConsoleOutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * PSR-3 compliant console logger. * * @author Kévin Dunglas * * @see https://www.php-fig.org/psr/psr-3/ */ class ConsoleLogger extends AbstractLogger { public const INFO = 'info'; public const ERROR = 'error'; private $output; private $verbosityLevelMap = [LogLevel::EMERGENCY => OutputInterface::VERBOSITY_NORMAL, LogLevel::ALERT => OutputInterface::VERBOSITY_NORMAL, LogLevel::CRITICAL => OutputInterface::VERBOSITY_NORMAL, LogLevel::ERROR => OutputInterface::VERBOSITY_NORMAL, LogLevel::WARNING => OutputInterface::VERBOSITY_NORMAL, LogLevel::NOTICE => OutputInterface::VERBOSITY_VERBOSE, LogLevel::INFO => OutputInterface::VERBOSITY_VERY_VERBOSE, LogLevel::DEBUG => OutputInterface::VERBOSITY_DEBUG]; private $formatLevelMap = [LogLevel::EMERGENCY => self::ERROR, LogLevel::ALERT => self::ERROR, LogLevel::CRITICAL => self::ERROR, LogLevel::ERROR => self::ERROR, LogLevel::WARNING => self::INFO, LogLevel::NOTICE => self::INFO, LogLevel::INFO => self::INFO, LogLevel::DEBUG => self::INFO]; private $errored = \false; public function __construct(OutputInterface $output, array $verbosityLevelMap = [], array $formatLevelMap = []) { $this->output = $output; $this->verbosityLevelMap = $verbosityLevelMap + $this->verbosityLevelMap; $this->formatLevelMap = $formatLevelMap + $this->formatLevelMap; } /** * {@inheritdoc} * * @return void */ public function log($level, $message, array $context = []) { if (!isset($this->verbosityLevelMap[$level])) { throw new InvalidArgumentException(\sprintf('The log level "%s" does not exist.', $level)); } $output = $this->output; // Write to the error output if necessary and available if (self::ERROR === $this->formatLevelMap[$level]) { if ($this->output instanceof ConsoleOutputInterface) { $output = $output->getErrorOutput(); } $this->errored = \true; } // the if condition check isn't necessary -- it's the same one that $output will do internally anyway. // We only do it for efficiency here as the message formatting is relatively expensive. if ($output->getVerbosity() >= $this->verbosityLevelMap[$level]) { $output->writeln(\sprintf('<%1$s>[%2$s] %3$s', $this->formatLevelMap[$level], $level, $this->interpolate($message, $context)), $this->verbosityLevelMap[$level]); } } /** * Returns true when any messages have been logged at error levels. * * @return bool */ public function hasErrored() { return $this->errored; } /** * Interpolates context values into the message placeholders. * * @author PHP Framework Interoperability Group */ private function interpolate(string $message, array $context) : string { if (!\str_contains($message, '{')) { return $message; } $replacements = []; foreach ($context as $key => $val) { if (null === $val || \is_scalar($val) || \is_object($val) && \method_exists($val, '__toString')) { $replacements["{{$key}}"] = $val; } elseif ($val instanceof \DateTimeInterface) { $replacements["{{$key}}"] = $val->format(\DateTime::RFC3339); } elseif (\is_object($val)) { $replacements["{{$key}}"] = '[object ' . \get_class($val) . ']'; } else { $replacements["{{$key}}"] = '[' . \gettype($val) . ']'; } } return \strtr($message, $replacements); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\SignalRegistry; final class SignalRegistry { private $signalHandlers = []; public function __construct() { if (\function_exists('pcntl_async_signals')) { \pcntl_async_signals(\true); } } public function register(int $signal, callable $signalHandler) : void { if (!isset($this->signalHandlers[$signal])) { $previousCallback = \pcntl_signal_get_handler($signal); if (\is_callable($previousCallback)) { $this->signalHandlers[$signal][] = $previousCallback; } } $this->signalHandlers[$signal][] = $signalHandler; \pcntl_signal($signal, [$this, 'handle']); } public static function isSupported() : bool { if (!\function_exists('pcntl_signal')) { return \false; } if (\in_array('pcntl_signal', \explode(',', \ini_get('disable_functions')))) { return \false; } return \true; } /** * @internal */ public function handle(int $signal) : void { $count = \count($this->signalHandlers[$signal]); foreach ($this->signalHandlers[$signal] as $i => $signalHandler) { $hasNext = $i !== $count - 1; $signalHandler($signal, $hasNext); } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\CI; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * Utility class for Github actions. * * @author Maxime Steinhausser */ class GithubActionReporter { private $output; /** * @see https://github.com/actions/toolkit/blob/5e5e1b7aacba68a53836a34db4a288c3c1c1585b/packages/core/src/command.ts#L80-L85 */ private const ESCAPED_DATA = ['%' => '%25', "\r" => '%0D', "\n" => '%0A']; /** * @see https://github.com/actions/toolkit/blob/5e5e1b7aacba68a53836a34db4a288c3c1c1585b/packages/core/src/command.ts#L87-L94 */ private const ESCAPED_PROPERTIES = ['%' => '%25', "\r" => '%0D', "\n" => '%0A', ':' => '%3A', ',' => '%2C']; public function __construct(OutputInterface $output) { $this->output = $output; } public static function isGithubActionEnvironment() : bool { return \false !== \getenv('GITHUB_ACTIONS'); } /** * Output an error using the Github annotations format. * * @see https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-an-error-message */ public function error(string $message, ?string $file = null, ?int $line = null, ?int $col = null) : void { $this->log('error', $message, $file, $line, $col); } /** * Output a warning using the Github annotations format. * * @see https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-a-warning-message */ public function warning(string $message, ?string $file = null, ?int $line = null, ?int $col = null) : void { $this->log('warning', $message, $file, $line, $col); } /** * Output a debug log using the Github annotations format. * * @see https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-a-debug-message */ public function debug(string $message, ?string $file = null, ?int $line = null, ?int $col = null) : void { $this->log('debug', $message, $file, $line, $col); } private function log(string $type, string $message, ?string $file = null, ?int $line = null, ?int $col = null) : void { // Some values must be encoded. $message = \strtr($message, self::ESCAPED_DATA); if (!$file) { // No file provided, output the message solely: $this->output->writeln(\sprintf('::%s::%s', $type, $message)); return; } $this->output->writeln(\sprintf('::%s file=%s,line=%s,col=%s::%s', $type, \strtr($file, self::ESCAPED_PROPERTIES), \strtr($line ?? 1, self::ESCAPED_PROPERTIES), \strtr($col ?? 0, self::ESCAPED_PROPERTIES), $message)); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Completion; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\RuntimeException; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\ArgvInput; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputDefinition; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputOption; /** * An input specialized for shell completion. * * This input allows unfinished option names or values and exposes what kind of * completion is expected. * * @author Wouter de Jong */ final class CompletionInput extends ArgvInput { public const TYPE_ARGUMENT_VALUE = 'argument_value'; public const TYPE_OPTION_VALUE = 'option_value'; public const TYPE_OPTION_NAME = 'option_name'; public const TYPE_NONE = 'none'; private $tokens; private $currentIndex; private $completionType; private $completionName = null; private $completionValue = ''; /** * Converts a terminal string into tokens. * * This is required for shell completions without COMP_WORDS support. */ public static function fromString(string $inputStr, int $currentIndex) : self { \preg_match_all('/(?<=^|\\s)([\'"]?)(.+?)(?tokens = $tokens; $input->currentIndex = $currentIndex; return $input; } /** * {@inheritdoc} */ public function bind(InputDefinition $definition) : void { parent::bind($definition); $relevantToken = $this->getRelevantToken(); if ('-' === $relevantToken[0]) { // the current token is an input option: complete either option name or option value [$optionToken, $optionValue] = \explode('=', $relevantToken, 2) + ['', '']; $option = $this->getOptionFromToken($optionToken); if (null === $option && !$this->isCursorFree()) { $this->completionType = self::TYPE_OPTION_NAME; $this->completionValue = $relevantToken; return; } if (null !== $option && $option->acceptValue()) { $this->completionType = self::TYPE_OPTION_VALUE; $this->completionName = $option->getName(); $this->completionValue = $optionValue ?: (!\str_starts_with($optionToken, '--') ? \substr($optionToken, 2) : ''); return; } } $previousToken = $this->tokens[$this->currentIndex - 1]; if ('-' === $previousToken[0] && '' !== \trim($previousToken, '-')) { // check if previous option accepted a value $previousOption = $this->getOptionFromToken($previousToken); if (null !== $previousOption && $previousOption->acceptValue()) { $this->completionType = self::TYPE_OPTION_VALUE; $this->completionName = $previousOption->getName(); $this->completionValue = $relevantToken; return; } } // complete argument value $this->completionType = self::TYPE_ARGUMENT_VALUE; foreach ($this->definition->getArguments() as $argumentName => $argument) { if (!isset($this->arguments[$argumentName])) { break; } $argumentValue = $this->arguments[$argumentName]; $this->completionName = $argumentName; if (\is_array($argumentValue)) { $this->completionValue = $argumentValue ? $argumentValue[\array_key_last($argumentValue)] : null; } else { $this->completionValue = $argumentValue; } } if ($this->currentIndex >= \count($this->tokens)) { if (!isset($this->arguments[$argumentName]) || $this->definition->getArgument($argumentName)->isArray()) { $this->completionName = $argumentName; $this->completionValue = ''; } else { // we've reached the end $this->completionType = self::TYPE_NONE; $this->completionName = null; $this->completionValue = ''; } } } /** * Returns the type of completion required. * * TYPE_ARGUMENT_VALUE when completing the value of an input argument * TYPE_OPTION_VALUE when completing the value of an input option * TYPE_OPTION_NAME when completing the name of an input option * TYPE_NONE when nothing should be completed * * @return string One of self::TYPE_* constants. TYPE_OPTION_NAME and TYPE_NONE are already implemented by the Console component */ public function getCompletionType() : string { return $this->completionType; } /** * The name of the input option or argument when completing a value. * * @return string|null returns null when completing an option name */ public function getCompletionName() : ?string { return $this->completionName; } /** * The value already typed by the user (or empty string). */ public function getCompletionValue() : string { return $this->completionValue; } public function mustSuggestOptionValuesFor(string $optionName) : bool { return self::TYPE_OPTION_VALUE === $this->getCompletionType() && $optionName === $this->getCompletionName(); } public function mustSuggestArgumentValuesFor(string $argumentName) : bool { return self::TYPE_ARGUMENT_VALUE === $this->getCompletionType() && $argumentName === $this->getCompletionName(); } protected function parseToken(string $token, bool $parseOptions) : bool { try { return parent::parseToken($token, $parseOptions); } catch (RuntimeException $e) { // suppress errors, completed input is almost never valid } return $parseOptions; } private function getOptionFromToken(string $optionToken) : ?InputOption { $optionName = \ltrim($optionToken, '-'); if (!$optionName) { return null; } if ('-' === ($optionToken[1] ?? ' ')) { // long option name return $this->definition->hasOption($optionName) ? $this->definition->getOption($optionName) : null; } // short option name return $this->definition->hasShortcut($optionName[0]) ? $this->definition->getOptionForShortcut($optionName[0]) : null; } /** * The token of the cursor, or the last token if the cursor is at the end of the input. */ private function getRelevantToken() : string { return $this->tokens[$this->isCursorFree() ? $this->currentIndex - 1 : $this->currentIndex]; } /** * Whether the cursor is "free" (i.e. at the end of the input preceded by a space). */ private function isCursorFree() : bool { $nrOfTokens = \count($this->tokens); if ($this->currentIndex > $nrOfTokens) { throw new \LogicException('Current index is invalid, it must be the number of input tokens or one more.'); } return $this->currentIndex >= $nrOfTokens; } public function __toString() { $str = ''; foreach ($this->tokens as $i => $token) { $str .= $token; if ($this->currentIndex === $i) { $str .= '|'; } $str .= ' '; } if ($this->currentIndex > $i) { $str .= '|'; } return \rtrim($str); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Completion; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputOption; /** * Stores all completion suggestions for the current input. * * @author Wouter de Jong */ final class CompletionSuggestions { private $valueSuggestions = []; private $optionSuggestions = []; /** * Add a suggested value for an input option or argument. * * @param string|Suggestion $value * * @return $this */ public function suggestValue($value) : self { $this->valueSuggestions[] = !$value instanceof Suggestion ? new Suggestion($value) : $value; return $this; } /** * Add multiple suggested values at once for an input option or argument. * * @param list $values * * @return $this */ public function suggestValues(array $values) : self { foreach ($values as $value) { $this->suggestValue($value); } return $this; } /** * Add a suggestion for an input option name. * * @return $this */ public function suggestOption(InputOption $option) : self { $this->optionSuggestions[] = $option; return $this; } /** * Add multiple suggestions for input option names at once. * * @param InputOption[] $options * * @return $this */ public function suggestOptions(array $options) : self { foreach ($options as $option) { $this->suggestOption($option); } return $this; } /** * @return InputOption[] */ public function getOptionSuggestions() : array { return $this->optionSuggestions; } /** * @return Suggestion[] */ public function getValueSuggestions() : array { return $this->valueSuggestions; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Completion\Output; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionSuggestions; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * @author Wouter de Jong */ class BashCompletionOutput implements CompletionOutputInterface { public function write(CompletionSuggestions $suggestions, OutputInterface $output) : void { $values = $suggestions->getValueSuggestions(); foreach ($suggestions->getOptionSuggestions() as $option) { $values[] = '--' . $option->getName(); if ($option->isNegatable()) { $values[] = '--no-' . $option->getName(); } } $output->writeln(\implode("\n", $values)); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Completion\Output; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionSuggestions; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * Transforms the {@see CompletionSuggestions} object into output readable by the shell completion. * * @author Wouter de Jong */ interface CompletionOutputInterface { public function write(CompletionSuggestions $suggestions, OutputInterface $output) : void; } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Completion; /** * Represents a single suggested value. * * @author Wouter de Jong */ class Suggestion { private $value; public function __construct(string $value) { $this->value = $value; } public function getValue() : string { return $this->value; } public function __toString() : string { return $this->getValue(); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * @author Pierre du Plessis */ final class Cursor { private $output; private $input; /** * @param resource|null $input */ public function __construct(OutputInterface $output, $input = null) { $this->output = $output; $this->input = $input ?? (\defined('STDIN') ? \STDIN : \fopen('php://input', 'r+')); } /** * @return $this */ public function moveUp(int $lines = 1) : self { $this->output->write(\sprintf("\x1b[%dA", $lines)); return $this; } /** * @return $this */ public function moveDown(int $lines = 1) : self { $this->output->write(\sprintf("\x1b[%dB", $lines)); return $this; } /** * @return $this */ public function moveRight(int $columns = 1) : self { $this->output->write(\sprintf("\x1b[%dC", $columns)); return $this; } /** * @return $this */ public function moveLeft(int $columns = 1) : self { $this->output->write(\sprintf("\x1b[%dD", $columns)); return $this; } /** * @return $this */ public function moveToColumn(int $column) : self { $this->output->write(\sprintf("\x1b[%dG", $column)); return $this; } /** * @return $this */ public function moveToPosition(int $column, int $row) : self { $this->output->write(\sprintf("\x1b[%d;%dH", $row + 1, $column)); return $this; } /** * @return $this */ public function savePosition() : self { $this->output->write("\x1b7"); return $this; } /** * @return $this */ public function restorePosition() : self { $this->output->write("\x1b8"); return $this; } /** * @return $this */ public function hide() : self { $this->output->write("\x1b[?25l"); return $this; } /** * @return $this */ public function show() : self { $this->output->write("\x1b[?25h\x1b[?0c"); return $this; } /** * Clears all the output from the current line. * * @return $this */ public function clearLine() : self { $this->output->write("\x1b[2K"); return $this; } /** * Clears all the output from the current line after the current position. */ public function clearLineAfter() : self { $this->output->write("\x1b[K"); return $this; } /** * Clears all the output from the cursors' current position to the end of the screen. * * @return $this */ public function clearOutput() : self { $this->output->write("\x1b[0J"); return $this; } /** * Clears the entire screen. * * @return $this */ public function clearScreen() : self { $this->output->write("\x1b[2J"); return $this; } /** * Returns the current cursor position as x,y coordinates. */ public function getCurrentPosition() : array { static $isTtySupported; if (null === $isTtySupported && \function_exists('proc_open')) { $isTtySupported = (bool) @\proc_open('echo 1 >/dev/null', [['file', '/dev/tty', 'r'], ['file', '/dev/tty', 'w'], ['file', '/dev/tty', 'w']], $pipes); } if (!$isTtySupported) { return [1, 1]; } $sttyMode = \shell_exec('stty -g'); \shell_exec('stty -icanon -echo'); @\fwrite($this->input, "\x1b[6n"); $code = \trim(\fread($this->input, 1024)); \shell_exec(\sprintf('stty %s', $sttyMode)); \sscanf($code, "\x1b[%d;%dR", $row, $col); return [$col, $row]; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Event; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * Allows to manipulate the exit code of a command after its execution. * * @author Francesco Levorato */ final class ConsoleTerminateEvent extends ConsoleEvent { private $exitCode; public function __construct(Command $command, InputInterface $input, OutputInterface $output, int $exitCode) { parent::__construct($command, $input, $output); $this->setExitCode($exitCode); } public function setExitCode(int $exitCode) : void { $this->exitCode = $exitCode; } public function getExitCode() : int { return $this->exitCode; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Event; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * @author marie */ final class ConsoleSignalEvent extends ConsoleEvent { private $handlingSignal; public function __construct(Command $command, InputInterface $input, OutputInterface $output, int $handlingSignal) { parent::__construct($command, $input, $output); $this->handlingSignal = $handlingSignal; } public function getHandlingSignal() : int { return $this->handlingSignal; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Event; /** * Allows to do things before the command is executed, like skipping the command or executing code before the command is * going to be executed. * * Changing the input arguments will have no effect. * * @author Fabien Potencier */ final class ConsoleCommandEvent extends ConsoleEvent { /** * The return code for skipped commands, this will also be passed into the terminate event. */ public const RETURN_CODE_DISABLED = 113; /** * Indicates if the command should be run or skipped. */ private $commandShouldRun = \true; /** * Disables the command, so it won't be run. */ public function disableCommand() : bool { return $this->commandShouldRun = \false; } public function enableCommand() : bool { return $this->commandShouldRun = \true; } /** * Returns true if the command is runnable, false otherwise. */ public function commandShouldRun() : bool { return $this->commandShouldRun; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Event; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; use _PHPStan_b22655c3f\Symfony\Contracts\EventDispatcher\Event; /** * Allows to inspect input and output of a command. * * @author Francesco Levorato */ class ConsoleEvent extends Event { protected $command; private $input; private $output; public function __construct(?Command $command, InputInterface $input, OutputInterface $output) { $this->command = $command; $this->input = $input; $this->output = $output; } /** * Gets the command that is executed. * * @return Command|null */ public function getCommand() { return $this->command; } /** * Gets the input instance. * * @return InputInterface */ public function getInput() { return $this->input; } /** * Gets the output instance. * * @return OutputInterface */ public function getOutput() { return $this->output; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Event; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * Allows to handle throwables thrown while running a command. * * @author Wouter de Jong */ final class ConsoleErrorEvent extends ConsoleEvent { private $error; private $exitCode; public function __construct(InputInterface $input, OutputInterface $output, \Throwable $error, ?Command $command = null) { parent::__construct($command, $input, $output); $this->error = $error; } public function getError() : \Throwable { return $this->error; } public function setError(\Throwable $error) : void { $this->error = $error; } public function setExitCode(int $exitCode) : void { $this->exitCode = $exitCode; $r = new \ReflectionProperty($this->error, 'code'); $r->setAccessible(\true); $r->setValue($this->error, $this->exitCode); } public function getExitCode() : int { return $this->exitCode ?? (\is_int($this->error->getCode()) && 0 !== $this->error->getCode() ? $this->error->getCode() : 1); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\EventListener; use _PHPStan_b22655c3f\Psr\Log\LoggerInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\ConsoleEvents; use _PHPStan_b22655c3f\Symfony\Component\Console\Event\ConsoleErrorEvent; use _PHPStan_b22655c3f\Symfony\Component\Console\Event\ConsoleEvent; use _PHPStan_b22655c3f\Symfony\Component\Console\Event\ConsoleTerminateEvent; use _PHPStan_b22655c3f\Symfony\Component\EventDispatcher\EventSubscriberInterface; /** * @author James Halsall * @author Robin Chalas */ class ErrorListener implements EventSubscriberInterface { private $logger; public function __construct(?LoggerInterface $logger = null) { $this->logger = $logger; } public function onConsoleError(ConsoleErrorEvent $event) { if (null === $this->logger) { return; } $error = $event->getError(); if (!($inputString = $this->getInputString($event))) { $this->logger->critical('An error occurred while using the console. Message: "{message}"', ['exception' => $error, 'message' => $error->getMessage()]); return; } $this->logger->critical('Error thrown while running command "{command}". Message: "{message}"', ['exception' => $error, 'command' => $inputString, 'message' => $error->getMessage()]); } public function onConsoleTerminate(ConsoleTerminateEvent $event) { if (null === $this->logger) { return; } $exitCode = $event->getExitCode(); if (0 === $exitCode) { return; } if (!($inputString = $this->getInputString($event))) { $this->logger->debug('The console exited with code "{code}"', ['code' => $exitCode]); return; } $this->logger->debug('Command "{command}" exited with code "{code}"', ['command' => $inputString, 'code' => $exitCode]); } public static function getSubscribedEvents() { return [ConsoleEvents::ERROR => ['onConsoleError', -128], ConsoleEvents::TERMINATE => ['onConsoleTerminate', -128]]; } private static function getInputString(ConsoleEvent $event) : ?string { $commandName = $event->getCommand() ? $event->getCommand()->getName() : null; $input = $event->getInput(); if (\method_exists($input, '__toString')) { if ($commandName) { return \str_replace(["'{$commandName}'", "\"{$commandName}\""], $commandName, (string) $input); } return (string) $input; } return $commandName; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Style; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\RuntimeException; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatter; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\ProgressBar; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\SymfonyQuestionHelper; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\Table; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\TableCell; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\TableSeparator; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\ConsoleOutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\TrimmedBufferOutput; use _PHPStan_b22655c3f\Symfony\Component\Console\Question\ChoiceQuestion; use _PHPStan_b22655c3f\Symfony\Component\Console\Question\ConfirmationQuestion; use _PHPStan_b22655c3f\Symfony\Component\Console\Question\Question; use _PHPStan_b22655c3f\Symfony\Component\Console\Terminal; /** * Output decorator helpers for the Symfony Style Guide. * * @author Kevin Bond */ class SymfonyStyle extends OutputStyle { public const MAX_LINE_LENGTH = 120; private $input; private $output; private $questionHelper; private $progressBar; private $lineLength; private $bufferedOutput; public function __construct(InputInterface $input, OutputInterface $output) { $this->input = $input; $this->bufferedOutput = new TrimmedBufferOutput(\DIRECTORY_SEPARATOR === '\\' ? 4 : 2, $output->getVerbosity(), \false, clone $output->getFormatter()); // Windows cmd wraps lines as soon as the terminal width is reached, whether there are following chars or not. $width = (new Terminal())->getWidth() ?: self::MAX_LINE_LENGTH; $this->lineLength = \min($width - (int) (\DIRECTORY_SEPARATOR === '\\'), self::MAX_LINE_LENGTH); parent::__construct($this->output = $output); } /** * Formats a message as a block of text. * * @param string|array $messages The message to write in the block */ public function block($messages, ?string $type = null, ?string $style = null, string $prefix = ' ', bool $padding = \false, bool $escape = \true) { $messages = \is_array($messages) ? \array_values($messages) : [$messages]; $this->autoPrependBlock(); $this->writeln($this->createBlock($messages, $type, $style, $prefix, $padding, $escape)); $this->newLine(); } /** * {@inheritdoc} */ public function title(string $message) { $this->autoPrependBlock(); $this->writeln([\sprintf('%s', OutputFormatter::escapeTrailingBackslash($message)), \sprintf('%s', \str_repeat('=', Helper::width(Helper::removeDecoration($this->getFormatter(), $message))))]); $this->newLine(); } /** * {@inheritdoc} */ public function section(string $message) { $this->autoPrependBlock(); $this->writeln([\sprintf('%s', OutputFormatter::escapeTrailingBackslash($message)), \sprintf('%s', \str_repeat('-', Helper::width(Helper::removeDecoration($this->getFormatter(), $message))))]); $this->newLine(); } /** * {@inheritdoc} */ public function listing(array $elements) { $this->autoPrependText(); $elements = \array_map(function ($element) { return \sprintf(' * %s', $element); }, $elements); $this->writeln($elements); $this->newLine(); } /** * {@inheritdoc} */ public function text($message) { $this->autoPrependText(); $messages = \is_array($message) ? \array_values($message) : [$message]; foreach ($messages as $message) { $this->writeln(\sprintf(' %s', $message)); } } /** * Formats a command comment. * * @param string|array $message */ public function comment($message) { $this->block($message, null, null, ' // ', \false, \false); } /** * {@inheritdoc} */ public function success($message) { $this->block($message, 'OK', 'fg=black;bg=green', ' ', \true); } /** * {@inheritdoc} */ public function error($message) { $this->block($message, 'ERROR', 'fg=white;bg=red', ' ', \true); } /** * {@inheritdoc} */ public function warning($message) { $this->block($message, 'WARNING', 'fg=black;bg=yellow', ' ', \true); } /** * {@inheritdoc} */ public function note($message) { $this->block($message, 'NOTE', 'fg=yellow', ' ! '); } /** * Formats an info message. * * @param string|array $message */ public function info($message) { $this->block($message, 'INFO', 'fg=green', ' ', \true); } /** * {@inheritdoc} */ public function caution($message) { $this->block($message, 'CAUTION', 'fg=white;bg=red', ' ! ', \true); } /** * {@inheritdoc} */ public function table(array $headers, array $rows) { $this->createTable()->setHeaders($headers)->setRows($rows)->render(); $this->newLine(); } /** * Formats a horizontal table. */ public function horizontalTable(array $headers, array $rows) { $this->createTable()->setHorizontal(\true)->setHeaders($headers)->setRows($rows)->render(); $this->newLine(); } /** * Formats a list of key/value horizontally. * * Each row can be one of: * * 'A title' * * ['key' => 'value'] * * new TableSeparator() * * @param string|array|TableSeparator ...$list */ public function definitionList(...$list) { $headers = []; $row = []; foreach ($list as $value) { if ($value instanceof TableSeparator) { $headers[] = $value; $row[] = $value; continue; } if (\is_string($value)) { $headers[] = new TableCell($value, ['colspan' => 2]); $row[] = null; continue; } if (!\is_array($value)) { throw new InvalidArgumentException('Value should be an array, string, or an instance of TableSeparator.'); } $headers[] = \key($value); $row[] = \current($value); } $this->horizontalTable($headers, [$row]); } /** * {@inheritdoc} */ public function ask(string $question, ?string $default = null, ?callable $validator = null) { $question = new Question($question, $default); $question->setValidator($validator); return $this->askQuestion($question); } /** * {@inheritdoc} */ public function askHidden(string $question, ?callable $validator = null) { $question = new Question($question); $question->setHidden(\true); $question->setValidator($validator); return $this->askQuestion($question); } /** * {@inheritdoc} */ public function confirm(string $question, bool $default = \true) { return $this->askQuestion(new ConfirmationQuestion($question, $default)); } /** * {@inheritdoc} */ public function choice(string $question, array $choices, $default = null) { if (null !== $default) { $values = \array_flip($choices); $default = $values[$default] ?? $default; } return $this->askQuestion(new ChoiceQuestion($question, $choices, $default)); } /** * {@inheritdoc} */ public function progressStart(int $max = 0) { $this->progressBar = $this->createProgressBar($max); $this->progressBar->start(); } /** * {@inheritdoc} */ public function progressAdvance(int $step = 1) { $this->getProgressBar()->advance($step); } /** * {@inheritdoc} */ public function progressFinish() { $this->getProgressBar()->finish(); $this->newLine(2); $this->progressBar = null; } /** * {@inheritdoc} */ public function createProgressBar(int $max = 0) { $progressBar = parent::createProgressBar($max); if ('\\' !== \DIRECTORY_SEPARATOR || 'Hyper' === \getenv('TERM_PROGRAM')) { $progressBar->setEmptyBarCharacter('░'); // light shade character \u2591 $progressBar->setProgressCharacter(''); $progressBar->setBarCharacter('▓'); // dark shade character \u2593 } return $progressBar; } /** * @see ProgressBar::iterate() */ public function progressIterate(iterable $iterable, ?int $max = null) : iterable { yield from $this->createProgressBar()->iterate($iterable, $max); $this->newLine(2); } /** * @return mixed */ public function askQuestion(Question $question) { if ($this->input->isInteractive()) { $this->autoPrependBlock(); } if (!$this->questionHelper) { $this->questionHelper = new SymfonyQuestionHelper(); } $answer = $this->questionHelper->ask($this->input, $this, $question); if ($this->input->isInteractive()) { $this->newLine(); $this->bufferedOutput->write("\n"); } return $answer; } /** * {@inheritdoc} */ public function writeln($messages, int $type = self::OUTPUT_NORMAL) { if (!\is_iterable($messages)) { $messages = [$messages]; } foreach ($messages as $message) { parent::writeln($message, $type); $this->writeBuffer($message, \true, $type); } } /** * {@inheritdoc} */ public function write($messages, bool $newline = \false, int $type = self::OUTPUT_NORMAL) { if (!\is_iterable($messages)) { $messages = [$messages]; } foreach ($messages as $message) { parent::write($message, $newline, $type); $this->writeBuffer($message, $newline, $type); } } /** * {@inheritdoc} */ public function newLine(int $count = 1) { parent::newLine($count); $this->bufferedOutput->write(\str_repeat("\n", $count)); } /** * Returns a new instance which makes use of stderr if available. * * @return self */ public function getErrorStyle() { return new self($this->input, $this->getErrorOutput()); } public function createTable() : Table { $output = $this->output instanceof ConsoleOutputInterface ? $this->output->section() : $this->output; $style = clone Table::getStyleDefinition('symfony-style-guide'); $style->setCellHeaderFormat('%s'); return (new Table($output))->setStyle($style); } private function getProgressBar() : ProgressBar { if (!$this->progressBar) { throw new RuntimeException('The ProgressBar is not started.'); } return $this->progressBar; } private function autoPrependBlock() : void { $chars = \substr(\str_replace(\PHP_EOL, "\n", $this->bufferedOutput->fetch()), -2); if (!isset($chars[0])) { $this->newLine(); // empty history, so we should start with a new line. return; } // Prepend new line for each non LF chars (This means no blank line was output before) $this->newLine(2 - \substr_count($chars, "\n")); } private function autoPrependText() : void { $fetched = $this->bufferedOutput->fetch(); // Prepend new line if last char isn't EOL: if (!\str_ends_with($fetched, "\n")) { $this->newLine(); } } private function writeBuffer(string $message, bool $newLine, int $type) : void { // We need to know if the last chars are PHP_EOL $this->bufferedOutput->write($message, $newLine, $type); } private function createBlock(iterable $messages, ?string $type = null, ?string $style = null, string $prefix = ' ', bool $padding = \false, bool $escape = \false) : array { $indentLength = 0; $prefixLength = Helper::width(Helper::removeDecoration($this->getFormatter(), $prefix)); $lines = []; if (null !== $type) { $type = \sprintf('[%s] ', $type); $indentLength = \strlen($type); $lineIndentation = \str_repeat(' ', $indentLength); } // wrap and add newlines for each element foreach ($messages as $key => $message) { if ($escape) { $message = OutputFormatter::escape($message); } $decorationLength = Helper::width($message) - Helper::width(Helper::removeDecoration($this->getFormatter(), $message)); $messageLineLength = \min($this->lineLength - $prefixLength - $indentLength + $decorationLength, $this->lineLength); $messageLines = \explode(\PHP_EOL, \wordwrap($message, $messageLineLength, \PHP_EOL, \true)); foreach ($messageLines as $messageLine) { $lines[] = $messageLine; } if (\count($messages) > 1 && $key < \count($messages) - 1) { $lines[] = ''; } } $firstLineIndex = 0; if ($padding && $this->isDecorated()) { $firstLineIndex = 1; \array_unshift($lines, ''); $lines[] = ''; } foreach ($lines as $i => &$line) { if (null !== $type) { $line = $firstLineIndex === $i ? $type . $line : $lineIndentation . $line; } $line = $prefix . $line; $line .= \str_repeat(' ', \max($this->lineLength - Helper::width(Helper::removeDecoration($this->getFormatter(), $line)), 0)); if ($style) { $line = \sprintf('<%s>%s', $style, $line); } } return $lines; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Style; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatterInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\ProgressBar; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\ConsoleOutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * Decorates output to add console style guide helpers. * * @author Kevin Bond */ abstract class OutputStyle implements OutputInterface, StyleInterface { private $output; public function __construct(OutputInterface $output) { $this->output = $output; } /** * {@inheritdoc} */ public function newLine(int $count = 1) { $this->output->write(\str_repeat(\PHP_EOL, $count)); } /** * @return ProgressBar */ public function createProgressBar(int $max = 0) { return new ProgressBar($this->output, $max); } /** * {@inheritdoc} */ public function write($messages, bool $newline = \false, int $type = self::OUTPUT_NORMAL) { $this->output->write($messages, $newline, $type); } /** * {@inheritdoc} */ public function writeln($messages, int $type = self::OUTPUT_NORMAL) { $this->output->writeln($messages, $type); } /** * {@inheritdoc} */ public function setVerbosity(int $level) { $this->output->setVerbosity($level); } /** * {@inheritdoc} */ public function getVerbosity() { return $this->output->getVerbosity(); } /** * {@inheritdoc} */ public function setDecorated(bool $decorated) { $this->output->setDecorated($decorated); } /** * {@inheritdoc} */ public function isDecorated() { return $this->output->isDecorated(); } /** * {@inheritdoc} */ public function setFormatter(OutputFormatterInterface $formatter) { $this->output->setFormatter($formatter); } /** * {@inheritdoc} */ public function getFormatter() { return $this->output->getFormatter(); } /** * {@inheritdoc} */ public function isQuiet() { return $this->output->isQuiet(); } /** * {@inheritdoc} */ public function isVerbose() { return $this->output->isVerbose(); } /** * {@inheritdoc} */ public function isVeryVerbose() { return $this->output->isVeryVerbose(); } /** * {@inheritdoc} */ public function isDebug() { return $this->output->isDebug(); } protected function getErrorOutput() { if (!$this->output instanceof ConsoleOutputInterface) { return $this->output; } return $this->output->getErrorOutput(); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Style; /** * Output style helpers. * * @author Kevin Bond */ interface StyleInterface { /** * Formats a command title. */ public function title(string $message); /** * Formats a section title. */ public function section(string $message); /** * Formats a list. */ public function listing(array $elements); /** * Formats informational text. * * @param string|array $message */ public function text($message); /** * Formats a success result bar. * * @param string|array $message */ public function success($message); /** * Formats an error result bar. * * @param string|array $message */ public function error($message); /** * Formats an warning result bar. * * @param string|array $message */ public function warning($message); /** * Formats a note admonition. * * @param string|array $message */ public function note($message); /** * Formats a caution admonition. * * @param string|array $message */ public function caution($message); /** * Formats a table. */ public function table(array $headers, array $rows); /** * Asks a question. * * @return mixed */ public function ask(string $question, ?string $default = null, ?callable $validator = null); /** * Asks a question with the user input hidden. * * @return mixed */ public function askHidden(string $question, ?callable $validator = null); /** * Asks for confirmation. * * @return bool */ public function confirm(string $question, bool $default = \true); /** * Asks a choice question. * * @param string|int|null $default * * @return mixed */ public function choice(string $question, array $choices, $default = null); /** * Add newline(s). */ public function newLine(int $count = 1); /** * Starts the progress output. */ public function progressStart(int $max = 0); /** * Advances the progress output X steps. */ public function progressAdvance(int $step = 1); /** * Finishes the progress output. */ public function progressFinish(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Output; /** * @author Jean-François Simon */ class BufferedOutput extends Output { private $buffer = ''; /** * Empties buffer and returns its content. * * @return string */ public function fetch() { $content = $this->buffer; $this->buffer = ''; return $content; } /** * {@inheritdoc} */ protected function doWrite(string $message, bool $newline) { $this->buffer .= $message; if ($newline) { $this->buffer .= \PHP_EOL; } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Output; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatterInterface; /** * OutputInterface is the interface implemented by all Output classes. * * @author Fabien Potencier */ interface OutputInterface { public const VERBOSITY_QUIET = 16; public const VERBOSITY_NORMAL = 32; public const VERBOSITY_VERBOSE = 64; public const VERBOSITY_VERY_VERBOSE = 128; public const VERBOSITY_DEBUG = 256; public const OUTPUT_NORMAL = 1; public const OUTPUT_RAW = 2; public const OUTPUT_PLAIN = 4; /** * Writes a message to the output. * * @param string|iterable $messages The message as an iterable of strings or a single string * @param bool $newline Whether to add a newline * @param int $options A bitmask of options (one of the OUTPUT or VERBOSITY constants), 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL */ public function write($messages, bool $newline = \false, int $options = 0); /** * Writes a message to the output and adds a newline at the end. * * @param string|iterable $messages The message as an iterable of strings or a single string * @param int $options A bitmask of options (one of the OUTPUT or VERBOSITY constants), 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL */ public function writeln($messages, int $options = 0); /** * Sets the verbosity of the output. */ public function setVerbosity(int $level); /** * Gets the current verbosity of the output. * * @return int */ public function getVerbosity(); /** * Returns whether verbosity is quiet (-q). * * @return bool */ public function isQuiet(); /** * Returns whether verbosity is verbose (-v). * * @return bool */ public function isVerbose(); /** * Returns whether verbosity is very verbose (-vv). * * @return bool */ public function isVeryVerbose(); /** * Returns whether verbosity is debug (-vvv). * * @return bool */ public function isDebug(); /** * Sets the decorated flag. */ public function setDecorated(bool $decorated); /** * Gets the decorated flag. * * @return bool */ public function isDecorated(); public function setFormatter(OutputFormatterInterface $formatter); /** * Returns current output formatter instance. * * @return OutputFormatterInterface */ public function getFormatter(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Output; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\NullOutputFormatter; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatterInterface; /** * NullOutput suppresses all output. * * $output = new NullOutput(); * * @author Fabien Potencier * @author Tobias Schultze */ class NullOutput implements OutputInterface { private $formatter; /** * {@inheritdoc} */ public function setFormatter(OutputFormatterInterface $formatter) { // do nothing } /** * {@inheritdoc} */ public function getFormatter() { if ($this->formatter) { return $this->formatter; } // to comply with the interface we must return a OutputFormatterInterface return $this->formatter = new NullOutputFormatter(); } /** * {@inheritdoc} */ public function setDecorated(bool $decorated) { // do nothing } /** * {@inheritdoc} */ public function isDecorated() { return \false; } /** * {@inheritdoc} */ public function setVerbosity(int $level) { // do nothing } /** * {@inheritdoc} */ public function getVerbosity() { return self::VERBOSITY_QUIET; } /** * {@inheritdoc} */ public function isQuiet() { return \true; } /** * {@inheritdoc} */ public function isVerbose() { return \false; } /** * {@inheritdoc} */ public function isVeryVerbose() { return \false; } /** * {@inheritdoc} */ public function isDebug() { return \false; } /** * {@inheritdoc} */ public function writeln($messages, int $options = self::OUTPUT_NORMAL) { // do nothing } /** * {@inheritdoc} */ public function write($messages, bool $newline = \false, int $options = self::OUTPUT_NORMAL) { // do nothing } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Output; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatterInterface; /** * StreamOutput writes the output to a given stream. * * Usage: * * $output = new StreamOutput(fopen('php://stdout', 'w')); * * As `StreamOutput` can use any stream, you can also use a file: * * $output = new StreamOutput(fopen('/path/to/output.log', 'a', false)); * * @author Fabien Potencier */ class StreamOutput extends Output { private $stream; /** * @param resource $stream A stream resource * @param int $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) * @param bool|null $decorated Whether to decorate messages (null for auto-guessing) * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) * * @throws InvalidArgumentException When first argument is not a real stream */ public function __construct($stream, int $verbosity = self::VERBOSITY_NORMAL, ?bool $decorated = null, ?OutputFormatterInterface $formatter = null) { if (!\is_resource($stream) || 'stream' !== \get_resource_type($stream)) { throw new InvalidArgumentException('The StreamOutput class needs a stream as its first argument.'); } $this->stream = $stream; if (null === $decorated) { $decorated = $this->hasColorSupport(); } parent::__construct($verbosity, $decorated, $formatter); } /** * Gets the stream attached to this StreamOutput instance. * * @return resource */ public function getStream() { return $this->stream; } protected function doWrite(string $message, bool $newline) { if ($newline) { $message .= \PHP_EOL; } @\fwrite($this->stream, $message); \fflush($this->stream); } /** * Returns true if the stream supports colorization. * * Colorization is disabled if not supported by the stream: * * This is tricky on Windows, because Cygwin, Msys2 etc emulate pseudo * terminals via named pipes, so we can only check the environment. * * Reference: Composer\XdebugHandler\Process::supportsColor * https://github.com/composer/xdebug-handler * * @return bool true if the stream supports colorization, false otherwise */ protected function hasColorSupport() { // Follow https://no-color.org/ if (isset($_SERVER['NO_COLOR']) || \false !== \getenv('NO_COLOR')) { return \false; } // Detect msysgit/mingw and assume this is a tty because detection // does not work correctly, see https://github.com/composer/composer/issues/9690 if (!@\stream_isatty($this->stream) && !\in_array(\strtoupper((string) \getenv('MSYSTEM')), ['MINGW32', 'MINGW64'], \true)) { return \false; } if ('\\' === \DIRECTORY_SEPARATOR && @\sapi_windows_vt100_support($this->stream)) { return \true; } if ('Hyper' === \getenv('TERM_PROGRAM') || \false !== \getenv('COLORTERM') || \false !== \getenv('ANSICON') || 'ON' === \getenv('ConEmuANSI')) { return \true; } if ('dumb' === ($term = (string) \getenv('TERM'))) { return \false; } // See https://github.com/chalk/supports-color/blob/d4f413efaf8da045c5ab440ed418ef02dbb28bf1/index.js#L157 return \preg_match('/^((screen|xterm|vt100|vt220|putty|rxvt|ansi|cygwin|linux).*)|(.*-256(color)?(-bce)?)$/', $term); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Output; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatterInterface; /** * ConsoleOutput is the default class for all CLI output. It uses STDOUT and STDERR. * * This class is a convenient wrapper around `StreamOutput` for both STDOUT and STDERR. * * $output = new ConsoleOutput(); * * This is equivalent to: * * $output = new StreamOutput(fopen('php://stdout', 'w')); * $stdErr = new StreamOutput(fopen('php://stderr', 'w')); * * @author Fabien Potencier */ class ConsoleOutput extends StreamOutput implements ConsoleOutputInterface { private $stderr; private $consoleSectionOutputs = []; /** * @param int $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) * @param bool|null $decorated Whether to decorate messages (null for auto-guessing) * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) */ public function __construct(int $verbosity = self::VERBOSITY_NORMAL, ?bool $decorated = null, ?OutputFormatterInterface $formatter = null) { parent::__construct($this->openOutputStream(), $verbosity, $decorated, $formatter); if (null === $formatter) { // for BC reasons, stdErr has it own Formatter only when user don't inject a specific formatter. $this->stderr = new StreamOutput($this->openErrorStream(), $verbosity, $decorated); return; } $actualDecorated = $this->isDecorated(); $this->stderr = new StreamOutput($this->openErrorStream(), $verbosity, $decorated, $this->getFormatter()); if (null === $decorated) { $this->setDecorated($actualDecorated && $this->stderr->isDecorated()); } } /** * Creates a new output section. */ public function section() : ConsoleSectionOutput { return new ConsoleSectionOutput($this->getStream(), $this->consoleSectionOutputs, $this->getVerbosity(), $this->isDecorated(), $this->getFormatter()); } /** * {@inheritdoc} */ public function setDecorated(bool $decorated) { parent::setDecorated($decorated); $this->stderr->setDecorated($decorated); } /** * {@inheritdoc} */ public function setFormatter(OutputFormatterInterface $formatter) { parent::setFormatter($formatter); $this->stderr->setFormatter($formatter); } /** * {@inheritdoc} */ public function setVerbosity(int $level) { parent::setVerbosity($level); $this->stderr->setVerbosity($level); } /** * {@inheritdoc} */ public function getErrorOutput() { return $this->stderr; } /** * {@inheritdoc} */ public function setErrorOutput(OutputInterface $error) { $this->stderr = $error; } /** * Returns true if current environment supports writing console output to * STDOUT. * * @return bool */ protected function hasStdoutSupport() { return \false === $this->isRunningOS400(); } /** * Returns true if current environment supports writing console output to * STDERR. * * @return bool */ protected function hasStderrSupport() { return \false === $this->isRunningOS400(); } /** * Checks if current executing environment is IBM iSeries (OS400), which * doesn't properly convert character-encodings between ASCII to EBCDIC. */ private function isRunningOS400() : bool { $checks = [\function_exists('php_uname') ? \php_uname('s') : '', \getenv('OSTYPE'), \PHP_OS]; return \false !== \stripos(\implode(';', $checks), 'OS400'); } /** * @return resource */ private function openOutputStream() { if (!$this->hasStdoutSupport()) { return \fopen('php://output', 'w'); } // Use STDOUT when possible to prevent from opening too many file descriptors return \defined('STDOUT') ? \STDOUT : (@\fopen('php://stdout', 'w') ?: \fopen('php://output', 'w')); } /** * @return resource */ private function openErrorStream() { if (!$this->hasStderrSupport()) { return \fopen('php://output', 'w'); } // Use STDERR when possible to prevent from opening too many file descriptors return \defined('STDERR') ? \STDERR : (@\fopen('php://stderr', 'w') ?: \fopen('php://output', 'w')); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Output; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatter; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatterInterface; /** * Base class for output classes. * * There are five levels of verbosity: * * * normal: no option passed (normal output) * * verbose: -v (more output) * * very verbose: -vv (highly extended output) * * debug: -vvv (all debug output) * * quiet: -q (no output) * * @author Fabien Potencier */ abstract class Output implements OutputInterface { private $verbosity; private $formatter; /** * @param int|null $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) * @param bool $decorated Whether to decorate messages * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) */ public function __construct(?int $verbosity = self::VERBOSITY_NORMAL, bool $decorated = \false, ?OutputFormatterInterface $formatter = null) { $this->verbosity = $verbosity ?? self::VERBOSITY_NORMAL; $this->formatter = $formatter ?? new OutputFormatter(); $this->formatter->setDecorated($decorated); } /** * {@inheritdoc} */ public function setFormatter(OutputFormatterInterface $formatter) { $this->formatter = $formatter; } /** * {@inheritdoc} */ public function getFormatter() { return $this->formatter; } /** * {@inheritdoc} */ public function setDecorated(bool $decorated) { $this->formatter->setDecorated($decorated); } /** * {@inheritdoc} */ public function isDecorated() { return $this->formatter->isDecorated(); } /** * {@inheritdoc} */ public function setVerbosity(int $level) { $this->verbosity = $level; } /** * {@inheritdoc} */ public function getVerbosity() { return $this->verbosity; } /** * {@inheritdoc} */ public function isQuiet() { return self::VERBOSITY_QUIET === $this->verbosity; } /** * {@inheritdoc} */ public function isVerbose() { return self::VERBOSITY_VERBOSE <= $this->verbosity; } /** * {@inheritdoc} */ public function isVeryVerbose() { return self::VERBOSITY_VERY_VERBOSE <= $this->verbosity; } /** * {@inheritdoc} */ public function isDebug() { return self::VERBOSITY_DEBUG <= $this->verbosity; } /** * {@inheritdoc} */ public function writeln($messages, int $options = self::OUTPUT_NORMAL) { $this->write($messages, \true, $options); } /** * {@inheritdoc} */ public function write($messages, bool $newline = \false, int $options = self::OUTPUT_NORMAL) { if (!\is_iterable($messages)) { $messages = [$messages]; } $types = self::OUTPUT_NORMAL | self::OUTPUT_RAW | self::OUTPUT_PLAIN; $type = $types & $options ?: self::OUTPUT_NORMAL; $verbosities = self::VERBOSITY_QUIET | self::VERBOSITY_NORMAL | self::VERBOSITY_VERBOSE | self::VERBOSITY_VERY_VERBOSE | self::VERBOSITY_DEBUG; $verbosity = $verbosities & $options ?: self::VERBOSITY_NORMAL; if ($verbosity > $this->getVerbosity()) { return; } foreach ($messages as $message) { switch ($type) { case OutputInterface::OUTPUT_NORMAL: $message = $this->formatter->format($message); break; case OutputInterface::OUTPUT_RAW: break; case OutputInterface::OUTPUT_PLAIN: $message = \strip_tags($this->formatter->format($message)); break; } $this->doWrite($message ?? '', $newline); } } /** * Writes a message to the output. */ protected abstract function doWrite(string $message, bool $newline); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Output; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatterInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Terminal; /** * @author Pierre du Plessis * @author Gabriel Ostrolucký */ class ConsoleSectionOutput extends StreamOutput { private $content = []; private $lines = 0; private $sections; private $terminal; /** * @param resource $stream * @param ConsoleSectionOutput[] $sections */ public function __construct($stream, array &$sections, int $verbosity, bool $decorated, OutputFormatterInterface $formatter) { parent::__construct($stream, $verbosity, $decorated, $formatter); \array_unshift($sections, $this); $this->sections =& $sections; $this->terminal = new Terminal(); } /** * Clears previous output for this section. * * @param int $lines Number of lines to clear. If null, then the entire output of this section is cleared */ public function clear(?int $lines = null) { if (empty($this->content) || !$this->isDecorated()) { return; } if ($lines) { \array_splice($this->content, -($lines * 2)); // Multiply lines by 2 to cater for each new line added between content } else { $lines = $this->lines; $this->content = []; } $this->lines -= $lines; parent::doWrite($this->popStreamContentUntilCurrentSection($lines), \false); } /** * Overwrites the previous output with a new message. * * @param array|string $message */ public function overwrite($message) { $this->clear(); $this->writeln($message); } public function getContent() : string { return \implode('', $this->content); } /** * @internal */ public function addContent(string $input) { foreach (\explode(\PHP_EOL, $input) as $lineContent) { $this->lines += \ceil($this->getDisplayLength($lineContent) / $this->terminal->getWidth()) ?: 1; $this->content[] = $lineContent; $this->content[] = \PHP_EOL; } } /** * {@inheritdoc} */ protected function doWrite(string $message, bool $newline) { if (!$this->isDecorated()) { parent::doWrite($message, $newline); return; } $erasedContent = $this->popStreamContentUntilCurrentSection(); $this->addContent($message); parent::doWrite($message, \true); parent::doWrite($erasedContent, \false); } /** * At initial stage, cursor is at the end of stream output. This method makes cursor crawl upwards until it hits * current section. Then it erases content it crawled through. Optionally, it erases part of current section too. */ private function popStreamContentUntilCurrentSection(int $numberOfLinesToClearFromCurrentSection = 0) : string { $numberOfLinesToClear = $numberOfLinesToClearFromCurrentSection; $erasedContent = []; foreach ($this->sections as $section) { if ($section === $this) { break; } $numberOfLinesToClear += $section->lines; $erasedContent[] = $section->getContent(); } if ($numberOfLinesToClear > 0) { // move cursor up n lines parent::doWrite(\sprintf("\x1b[%dA", $numberOfLinesToClear), \false); // erase to end of screen parent::doWrite("\x1b[0J", \false); } return \implode('', \array_reverse($erasedContent)); } private function getDisplayLength(string $text) : int { return Helper::width(Helper::removeDecoration($this->getFormatter(), \str_replace("\t", ' ', $text))); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Output; /** * ConsoleOutputInterface is the interface implemented by ConsoleOutput class. * This adds information about stderr and section output stream. * * @author Dariusz Górecki */ interface ConsoleOutputInterface extends OutputInterface { /** * Gets the OutputInterface for errors. * * @return OutputInterface */ public function getErrorOutput(); public function setErrorOutput(OutputInterface $error); public function section() : ConsoleSectionOutput; } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Output; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatterInterface; /** * A BufferedOutput that keeps only the last N chars. * * @author Jérémy Derussé */ class TrimmedBufferOutput extends Output { private $maxLength; private $buffer = ''; public function __construct(int $maxLength, ?int $verbosity = self::VERBOSITY_NORMAL, bool $decorated = \false, ?OutputFormatterInterface $formatter = null) { if ($maxLength <= 0) { throw new InvalidArgumentException(\sprintf('"%s()" expects a strictly positive maxLength. Got %d.', __METHOD__, $maxLength)); } parent::__construct($verbosity, $decorated, $formatter); $this->maxLength = $maxLength; } /** * Empties buffer and returns its content. * * @return string */ public function fetch() { $content = $this->buffer; $this->buffer = ''; return $content; } /** * {@inheritdoc} */ protected function doWrite(string $message, bool $newline) { $this->buffer .= $message; if ($newline) { $this->buffer .= \PHP_EOL; } $this->buffer = \substr($this->buffer, 0 - $this->maxLength); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor; use _PHPStan_b22655c3f\Symfony\Component\Console\Application; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputArgument; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputDefinition; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputOption; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * Markdown descriptor. * * @author Jean-François Simon * * @internal */ class MarkdownDescriptor extends Descriptor { /** * {@inheritdoc} */ public function describe(OutputInterface $output, object $object, array $options = []) { $decorated = $output->isDecorated(); $output->setDecorated(\false); parent::describe($output, $object, $options); $output->setDecorated($decorated); } /** * {@inheritdoc} */ protected function write(string $content, bool $decorated = \true) { parent::write($content, $decorated); } /** * {@inheritdoc} */ protected function describeInputArgument(InputArgument $argument, array $options = []) { $this->write('#### `' . ($argument->getName() ?: '') . "`\n\n" . ($argument->getDescription() ? \preg_replace('/\\s*[\\r\\n]\\s*/', "\n", $argument->getDescription()) . "\n\n" : '') . '* Is required: ' . ($argument->isRequired() ? 'yes' : 'no') . "\n" . '* Is array: ' . ($argument->isArray() ? 'yes' : 'no') . "\n" . '* Default: `' . \str_replace("\n", '', \var_export($argument->getDefault(), \true)) . '`'); } /** * {@inheritdoc} */ protected function describeInputOption(InputOption $option, array $options = []) { $name = '--' . $option->getName(); if ($option->isNegatable()) { $name .= '|--no-' . $option->getName(); } if ($option->getShortcut()) { $name .= '|-' . \str_replace('|', '|-', $option->getShortcut()) . ''; } $this->write('#### `' . $name . '`' . "\n\n" . ($option->getDescription() ? \preg_replace('/\\s*[\\r\\n]\\s*/', "\n", $option->getDescription()) . "\n\n" : '') . '* Accept value: ' . ($option->acceptValue() ? 'yes' : 'no') . "\n" . '* Is value required: ' . ($option->isValueRequired() ? 'yes' : 'no') . "\n" . '* Is multiple: ' . ($option->isArray() ? 'yes' : 'no') . "\n" . '* Is negatable: ' . ($option->isNegatable() ? 'yes' : 'no') . "\n" . '* Default: `' . \str_replace("\n", '', \var_export($option->getDefault(), \true)) . '`'); } /** * {@inheritdoc} */ protected function describeInputDefinition(InputDefinition $definition, array $options = []) { if ($showArguments = \count($definition->getArguments()) > 0) { $this->write('### Arguments'); foreach ($definition->getArguments() as $argument) { $this->write("\n\n"); if (null !== ($describeInputArgument = $this->describeInputArgument($argument))) { $this->write($describeInputArgument); } } } if (\count($definition->getOptions()) > 0) { if ($showArguments) { $this->write("\n\n"); } $this->write('### Options'); foreach ($definition->getOptions() as $option) { $this->write("\n\n"); if (null !== ($describeInputOption = $this->describeInputOption($option))) { $this->write($describeInputOption); } } } } /** * {@inheritdoc} */ protected function describeCommand(Command $command, array $options = []) { if ($options['short'] ?? \false) { $this->write('`' . $command->getName() . "`\n" . \str_repeat('-', Helper::width($command->getName()) + 2) . "\n\n" . ($command->getDescription() ? $command->getDescription() . "\n\n" : '') . '### Usage' . "\n\n" . \array_reduce($command->getAliases(), function ($carry, $usage) { return $carry . '* `' . $usage . '`' . "\n"; })); return; } $command->mergeApplicationDefinition(\false); $this->write('`' . $command->getName() . "`\n" . \str_repeat('-', Helper::width($command->getName()) + 2) . "\n\n" . ($command->getDescription() ? $command->getDescription() . "\n\n" : '') . '### Usage' . "\n\n" . \array_reduce(\array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()), function ($carry, $usage) { return $carry . '* `' . $usage . '`' . "\n"; })); if ($help = $command->getProcessedHelp()) { $this->write("\n"); $this->write($help); } $definition = $command->getDefinition(); if ($definition->getOptions() || $definition->getArguments()) { $this->write("\n\n"); $this->describeInputDefinition($definition); } } /** * {@inheritdoc} */ protected function describeApplication(Application $application, array $options = []) { $describedNamespace = $options['namespace'] ?? null; $description = new ApplicationDescription($application, $describedNamespace); $title = $this->getApplicationTitle($application); $this->write($title . "\n" . \str_repeat('=', Helper::width($title))); foreach ($description->getNamespaces() as $namespace) { if (ApplicationDescription::GLOBAL_NAMESPACE !== $namespace['id']) { $this->write("\n\n"); $this->write('**' . $namespace['id'] . ':**'); } $this->write("\n\n"); $this->write(\implode("\n", \array_map(function ($commandName) use($description) { return \sprintf('* [`%s`](#%s)', $commandName, \str_replace(':', '', $description->getCommand($commandName)->getName())); }, $namespace['commands']))); } foreach ($description->getCommands() as $command) { $this->write("\n\n"); if (null !== ($describeCommand = $this->describeCommand($command, $options))) { $this->write($describeCommand); } } } private function getApplicationTitle(Application $application) : string { if ('UNKNOWN' !== $application->getName()) { if ('UNKNOWN' !== $application->getVersion()) { return \sprintf('%s %s', $application->getName(), $application->getVersion()); } return $application->getName(); } return 'Console Tool'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor; use _PHPStan_b22655c3f\Symfony\Component\Console\Application; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Formatter\OutputFormatter; use _PHPStan_b22655c3f\Symfony\Component\Console\Helper\Helper; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputArgument; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputDefinition; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputOption; /** * Text descriptor. * * @author Jean-François Simon * * @internal */ class TextDescriptor extends Descriptor { /** * {@inheritdoc} */ protected function describeInputArgument(InputArgument $argument, array $options = []) { if (null !== $argument->getDefault() && (!\is_array($argument->getDefault()) || \count($argument->getDefault()))) { $default = \sprintf(' [default: %s]', $this->formatDefaultValue($argument->getDefault())); } else { $default = ''; } $totalWidth = $options['total_width'] ?? Helper::width($argument->getName()); $spacingWidth = $totalWidth - \strlen($argument->getName()); $this->writeText(\sprintf( ' %s %s%s%s', $argument->getName(), \str_repeat(' ', $spacingWidth), // + 4 = 2 spaces before , 2 spaces after \preg_replace('/\\s*[\\r\\n]\\s*/', "\n" . \str_repeat(' ', $totalWidth + 4), $argument->getDescription()), $default ), $options); } /** * {@inheritdoc} */ protected function describeInputOption(InputOption $option, array $options = []) { if ($option->acceptValue() && null !== $option->getDefault() && (!\is_array($option->getDefault()) || \count($option->getDefault()))) { $default = \sprintf(' [default: %s]', $this->formatDefaultValue($option->getDefault())); } else { $default = ''; } $value = ''; if ($option->acceptValue()) { $value = '=' . \strtoupper($option->getName()); if ($option->isValueOptional()) { $value = '[' . $value . ']'; } } $totalWidth = $options['total_width'] ?? $this->calculateTotalWidthForOptions([$option]); $synopsis = \sprintf('%s%s', $option->getShortcut() ? \sprintf('-%s, ', $option->getShortcut()) : ' ', \sprintf($option->isNegatable() ? '--%1$s|--no-%1$s' : '--%1$s%2$s', $option->getName(), $value)); $spacingWidth = $totalWidth - Helper::width($synopsis); $this->writeText(\sprintf( ' %s %s%s%s%s', $synopsis, \str_repeat(' ', $spacingWidth), // + 4 = 2 spaces before , 2 spaces after \preg_replace('/\\s*[\\r\\n]\\s*/', "\n" . \str_repeat(' ', $totalWidth + 4), $option->getDescription()), $default, $option->isArray() ? ' (multiple values allowed)' : '' ), $options); } /** * {@inheritdoc} */ protected function describeInputDefinition(InputDefinition $definition, array $options = []) { $totalWidth = $this->calculateTotalWidthForOptions($definition->getOptions()); foreach ($definition->getArguments() as $argument) { $totalWidth = \max($totalWidth, Helper::width($argument->getName())); } if ($definition->getArguments()) { $this->writeText('Arguments:', $options); $this->writeText("\n"); foreach ($definition->getArguments() as $argument) { $this->describeInputArgument($argument, \array_merge($options, ['total_width' => $totalWidth])); $this->writeText("\n"); } } if ($definition->getArguments() && $definition->getOptions()) { $this->writeText("\n"); } if ($definition->getOptions()) { $laterOptions = []; $this->writeText('Options:', $options); foreach ($definition->getOptions() as $option) { if (\strlen($option->getShortcut() ?? '') > 1) { $laterOptions[] = $option; continue; } $this->writeText("\n"); $this->describeInputOption($option, \array_merge($options, ['total_width' => $totalWidth])); } foreach ($laterOptions as $option) { $this->writeText("\n"); $this->describeInputOption($option, \array_merge($options, ['total_width' => $totalWidth])); } } } /** * {@inheritdoc} */ protected function describeCommand(Command $command, array $options = []) { $command->mergeApplicationDefinition(\false); if ($description = $command->getDescription()) { $this->writeText('Description:', $options); $this->writeText("\n"); $this->writeText(' ' . $description); $this->writeText("\n\n"); } $this->writeText('Usage:', $options); foreach (\array_merge([$command->getSynopsis(\true)], $command->getAliases(), $command->getUsages()) as $usage) { $this->writeText("\n"); $this->writeText(' ' . OutputFormatter::escape($usage), $options); } $this->writeText("\n"); $definition = $command->getDefinition(); if ($definition->getOptions() || $definition->getArguments()) { $this->writeText("\n"); $this->describeInputDefinition($definition, $options); $this->writeText("\n"); } $help = $command->getProcessedHelp(); if ($help && $help !== $description) { $this->writeText("\n"); $this->writeText('Help:', $options); $this->writeText("\n"); $this->writeText(' ' . \str_replace("\n", "\n ", $help), $options); $this->writeText("\n"); } } /** * {@inheritdoc} */ protected function describeApplication(Application $application, array $options = []) { $describedNamespace = $options['namespace'] ?? null; $description = new ApplicationDescription($application, $describedNamespace); if (isset($options['raw_text']) && $options['raw_text']) { $width = $this->getColumnWidth($description->getCommands()); foreach ($description->getCommands() as $command) { $this->writeText(\sprintf("%-{$width}s %s", $command->getName(), $command->getDescription()), $options); $this->writeText("\n"); } } else { if ('' != ($help = $application->getHelp())) { $this->writeText("{$help}\n\n", $options); } $this->writeText("Usage:\n", $options); $this->writeText(" command [options] [arguments]\n\n", $options); $this->describeInputDefinition(new InputDefinition($application->getDefinition()->getOptions()), $options); $this->writeText("\n"); $this->writeText("\n"); $commands = $description->getCommands(); $namespaces = $description->getNamespaces(); if ($describedNamespace && $namespaces) { // make sure all alias commands are included when describing a specific namespace $describedNamespaceInfo = \reset($namespaces); foreach ($describedNamespaceInfo['commands'] as $name) { $commands[$name] = $description->getCommand($name); } } // calculate max. width based on available commands per namespace $width = $this->getColumnWidth(\array_merge(...\array_values(\array_map(function ($namespace) use($commands) { return \array_intersect($namespace['commands'], \array_keys($commands)); }, \array_values($namespaces))))); if ($describedNamespace) { $this->writeText(\sprintf('Available commands for the "%s" namespace:', $describedNamespace), $options); } else { $this->writeText('Available commands:', $options); } foreach ($namespaces as $namespace) { $namespace['commands'] = \array_filter($namespace['commands'], function ($name) use($commands) { return isset($commands[$name]); }); if (!$namespace['commands']) { continue; } if (!$describedNamespace && ApplicationDescription::GLOBAL_NAMESPACE !== $namespace['id']) { $this->writeText("\n"); $this->writeText(' ' . $namespace['id'] . '', $options); } foreach ($namespace['commands'] as $name) { $this->writeText("\n"); $spacingWidth = $width - Helper::width($name); $command = $commands[$name]; $commandAliases = $name === $command->getName() ? $this->getCommandAliasesText($command) : ''; $this->writeText(\sprintf(' %s%s%s', $name, \str_repeat(' ', $spacingWidth), $commandAliases . $command->getDescription()), $options); } } $this->writeText("\n"); } } /** * {@inheritdoc} */ private function writeText(string $content, array $options = []) { $this->write(isset($options['raw_text']) && $options['raw_text'] ? \strip_tags($content) : $content, isset($options['raw_output']) ? !$options['raw_output'] : \true); } /** * Formats command aliases to show them in the command description. */ private function getCommandAliasesText(Command $command) : string { $text = ''; $aliases = $command->getAliases(); if ($aliases) { $text = '[' . \implode('|', $aliases) . '] '; } return $text; } /** * Formats input option/argument default value. * * @param mixed $default */ private function formatDefaultValue($default) : string { if (\INF === $default) { return 'INF'; } if (\is_string($default)) { $default = OutputFormatter::escape($default); } elseif (\is_array($default)) { foreach ($default as $key => $value) { if (\is_string($value)) { $default[$key] = OutputFormatter::escape($value); } } } return \str_replace('\\\\', '\\', \json_encode($default, \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE)); } /** * @param array $commands */ private function getColumnWidth(array $commands) : int { $widths = []; foreach ($commands as $command) { if ($command instanceof Command) { $widths[] = Helper::width($command->getName()); foreach ($command->getAliases() as $alias) { $widths[] = Helper::width($alias); } } else { $widths[] = Helper::width($command); } } return $widths ? \max($widths) + 2 : 0; } /** * @param InputOption[] $options */ private function calculateTotalWidthForOptions(array $options) : int { $totalWidth = 0; foreach ($options as $option) { // "-" + shortcut + ", --" + name $nameLength = 1 + \max(Helper::width($option->getShortcut()), 1) + 4 + Helper::width($option->getName()); if ($option->isNegatable()) { $nameLength += 6 + Helper::width($option->getName()); // |--no- + name } elseif ($option->acceptValue()) { $valueLength = 1 + Helper::width($option->getName()); // = + value $valueLength += $option->isValueOptional() ? 2 : 0; // [ + ] $nameLength += $valueLength; } $totalWidth = \max($totalWidth, $nameLength); } return $totalWidth; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * Descriptor interface. * * @author Jean-François Simon */ interface DescriptorInterface { public function describe(OutputInterface $output, object $object, array $options = []); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor; use _PHPStan_b22655c3f\Symfony\Component\Console\Application; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputArgument; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputDefinition; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputOption; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; /** * @author Jean-François Simon * * @internal */ abstract class Descriptor implements DescriptorInterface { /** * @var OutputInterface */ protected $output; /** * {@inheritdoc} */ public function describe(OutputInterface $output, object $object, array $options = []) { $this->output = $output; switch (\true) { case $object instanceof InputArgument: $this->describeInputArgument($object, $options); break; case $object instanceof InputOption: $this->describeInputOption($object, $options); break; case $object instanceof InputDefinition: $this->describeInputDefinition($object, $options); break; case $object instanceof Command: $this->describeCommand($object, $options); break; case $object instanceof Application: $this->describeApplication($object, $options); break; default: throw new InvalidArgumentException(\sprintf('Object of type "%s" is not describable.', \get_debug_type($object))); } } /** * Writes content to output. */ protected function write(string $content, bool $decorated = \false) { $this->output->write($content, \false, $decorated ? OutputInterface::OUTPUT_NORMAL : OutputInterface::OUTPUT_RAW); } /** * Describes an InputArgument instance. */ protected abstract function describeInputArgument(InputArgument $argument, array $options = []); /** * Describes an InputOption instance. */ protected abstract function describeInputOption(InputOption $option, array $options = []); /** * Describes an InputDefinition instance. */ protected abstract function describeInputDefinition(InputDefinition $definition, array $options = []); /** * Describes a Command instance. */ protected abstract function describeCommand(Command $command, array $options = []); /** * Describes an Application instance. */ protected abstract function describeApplication(Application $application, array $options = []); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor; use _PHPStan_b22655c3f\Symfony\Component\Console\Application; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\CommandNotFoundException; /** * @author Jean-François Simon * * @internal */ class ApplicationDescription { public const GLOBAL_NAMESPACE = '_global'; private $application; private $namespace; private $showHidden; /** * @var array */ private $namespaces; /** * @var array */ private $commands; /** * @var array */ private $aliases; public function __construct(Application $application, ?string $namespace = null, bool $showHidden = \false) { $this->application = $application; $this->namespace = $namespace; $this->showHidden = $showHidden; } public function getNamespaces() : array { if (null === $this->namespaces) { $this->inspectApplication(); } return $this->namespaces; } /** * @return Command[] */ public function getCommands() : array { if (null === $this->commands) { $this->inspectApplication(); } return $this->commands; } /** * @throws CommandNotFoundException */ public function getCommand(string $name) : Command { if (!isset($this->commands[$name]) && !isset($this->aliases[$name])) { throw new CommandNotFoundException(\sprintf('Command "%s" does not exist.', $name)); } return $this->commands[$name] ?? $this->aliases[$name]; } private function inspectApplication() { $this->commands = []; $this->namespaces = []; $all = $this->application->all($this->namespace ? $this->application->findNamespace($this->namespace) : null); foreach ($this->sortCommands($all) as $namespace => $commands) { $names = []; /** @var Command $command */ foreach ($commands as $name => $command) { if (!$command->getName() || !$this->showHidden && $command->isHidden()) { continue; } if ($command->getName() === $name) { $this->commands[$name] = $command; } else { $this->aliases[$name] = $command; } $names[] = $name; } $this->namespaces[$namespace] = ['id' => $namespace, 'commands' => $names]; } } private function sortCommands(array $commands) : array { $namespacedCommands = []; $globalCommands = []; $sortedCommands = []; foreach ($commands as $name => $command) { $key = $this->application->extractNamespace($name, 1); if (\in_array($key, ['', self::GLOBAL_NAMESPACE], \true)) { $globalCommands[$name] = $command; } else { $namespacedCommands[$key][$name] = $command; } } if ($globalCommands) { \ksort($globalCommands); $sortedCommands[self::GLOBAL_NAMESPACE] = $globalCommands; } if ($namespacedCommands) { \ksort($namespacedCommands, \SORT_STRING); foreach ($namespacedCommands as $key => $commandsSet) { \ksort($commandsSet); $sortedCommands[$key] = $commandsSet; } } return $sortedCommands; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor; use _PHPStan_b22655c3f\Symfony\Component\Console\Application; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputArgument; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputDefinition; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputOption; /** * XML descriptor. * * @author Jean-François Simon * * @internal */ class XmlDescriptor extends Descriptor { public function getInputDefinitionDocument(InputDefinition $definition) : \DOMDocument { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($definitionXML = $dom->createElement('definition')); $definitionXML->appendChild($argumentsXML = $dom->createElement('arguments')); foreach ($definition->getArguments() as $argument) { $this->appendDocument($argumentsXML, $this->getInputArgumentDocument($argument)); } $definitionXML->appendChild($optionsXML = $dom->createElement('options')); foreach ($definition->getOptions() as $option) { $this->appendDocument($optionsXML, $this->getInputOptionDocument($option)); } return $dom; } public function getCommandDocument(Command $command, bool $short = \false) : \DOMDocument { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($commandXML = $dom->createElement('command')); $commandXML->setAttribute('id', $command->getName()); $commandXML->setAttribute('name', $command->getName()); $commandXML->setAttribute('hidden', $command->isHidden() ? 1 : 0); $commandXML->appendChild($usagesXML = $dom->createElement('usages')); $commandXML->appendChild($descriptionXML = $dom->createElement('description')); $descriptionXML->appendChild($dom->createTextNode(\str_replace("\n", "\n ", $command->getDescription()))); if ($short) { foreach ($command->getAliases() as $usage) { $usagesXML->appendChild($dom->createElement('usage', $usage)); } } else { $command->mergeApplicationDefinition(\false); foreach (\array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()) as $usage) { $usagesXML->appendChild($dom->createElement('usage', $usage)); } $commandXML->appendChild($helpXML = $dom->createElement('help')); $helpXML->appendChild($dom->createTextNode(\str_replace("\n", "\n ", $command->getProcessedHelp()))); $definitionXML = $this->getInputDefinitionDocument($command->getDefinition()); $this->appendDocument($commandXML, $definitionXML->getElementsByTagName('definition')->item(0)); } return $dom; } public function getApplicationDocument(Application $application, ?string $namespace = null, bool $short = \false) : \DOMDocument { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($rootXml = $dom->createElement('symfony')); if ('UNKNOWN' !== $application->getName()) { $rootXml->setAttribute('name', $application->getName()); if ('UNKNOWN' !== $application->getVersion()) { $rootXml->setAttribute('version', $application->getVersion()); } } $rootXml->appendChild($commandsXML = $dom->createElement('commands')); $description = new ApplicationDescription($application, $namespace, \true); if ($namespace) { $commandsXML->setAttribute('namespace', $namespace); } foreach ($description->getCommands() as $command) { $this->appendDocument($commandsXML, $this->getCommandDocument($command, $short)); } if (!$namespace) { $rootXml->appendChild($namespacesXML = $dom->createElement('namespaces')); foreach ($description->getNamespaces() as $namespaceDescription) { $namespacesXML->appendChild($namespaceArrayXML = $dom->createElement('namespace')); $namespaceArrayXML->setAttribute('id', $namespaceDescription['id']); foreach ($namespaceDescription['commands'] as $name) { $namespaceArrayXML->appendChild($commandXML = $dom->createElement('command')); $commandXML->appendChild($dom->createTextNode($name)); } } } return $dom; } /** * {@inheritdoc} */ protected function describeInputArgument(InputArgument $argument, array $options = []) { $this->writeDocument($this->getInputArgumentDocument($argument)); } /** * {@inheritdoc} */ protected function describeInputOption(InputOption $option, array $options = []) { $this->writeDocument($this->getInputOptionDocument($option)); } /** * {@inheritdoc} */ protected function describeInputDefinition(InputDefinition $definition, array $options = []) { $this->writeDocument($this->getInputDefinitionDocument($definition)); } /** * {@inheritdoc} */ protected function describeCommand(Command $command, array $options = []) { $this->writeDocument($this->getCommandDocument($command, $options['short'] ?? \false)); } /** * {@inheritdoc} */ protected function describeApplication(Application $application, array $options = []) { $this->writeDocument($this->getApplicationDocument($application, $options['namespace'] ?? null, $options['short'] ?? \false)); } /** * Appends document children to parent node. */ private function appendDocument(\DOMNode $parentNode, \DOMNode $importedParent) { foreach ($importedParent->childNodes as $childNode) { $parentNode->appendChild($parentNode->ownerDocument->importNode($childNode, \true)); } } /** * Writes DOM document. */ private function writeDocument(\DOMDocument $dom) { $dom->formatOutput = \true; $this->write($dom->saveXML()); } private function getInputArgumentDocument(InputArgument $argument) : \DOMDocument { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($objectXML = $dom->createElement('argument')); $objectXML->setAttribute('name', $argument->getName()); $objectXML->setAttribute('is_required', $argument->isRequired() ? 1 : 0); $objectXML->setAttribute('is_array', $argument->isArray() ? 1 : 0); $objectXML->appendChild($descriptionXML = $dom->createElement('description')); $descriptionXML->appendChild($dom->createTextNode($argument->getDescription())); $objectXML->appendChild($defaultsXML = $dom->createElement('defaults')); $defaults = \is_array($argument->getDefault()) ? $argument->getDefault() : (\is_bool($argument->getDefault()) ? [\var_export($argument->getDefault(), \true)] : ($argument->getDefault() ? [$argument->getDefault()] : [])); foreach ($defaults as $default) { $defaultsXML->appendChild($defaultXML = $dom->createElement('default')); $defaultXML->appendChild($dom->createTextNode($default)); } return $dom; } private function getInputOptionDocument(InputOption $option) : \DOMDocument { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($objectXML = $dom->createElement('option')); $objectXML->setAttribute('name', '--' . $option->getName()); $pos = \strpos($option->getShortcut() ?? '', '|'); if (\false !== $pos) { $objectXML->setAttribute('shortcut', '-' . \substr($option->getShortcut(), 0, $pos)); $objectXML->setAttribute('shortcuts', '-' . \str_replace('|', '|-', $option->getShortcut())); } else { $objectXML->setAttribute('shortcut', $option->getShortcut() ? '-' . $option->getShortcut() : ''); } $objectXML->setAttribute('accept_value', $option->acceptValue() ? 1 : 0); $objectXML->setAttribute('is_value_required', $option->isValueRequired() ? 1 : 0); $objectXML->setAttribute('is_multiple', $option->isArray() ? 1 : 0); $objectXML->appendChild($descriptionXML = $dom->createElement('description')); $descriptionXML->appendChild($dom->createTextNode($option->getDescription())); if ($option->acceptValue()) { $defaults = \is_array($option->getDefault()) ? $option->getDefault() : (\is_bool($option->getDefault()) ? [\var_export($option->getDefault(), \true)] : ($option->getDefault() ? [$option->getDefault()] : [])); $objectXML->appendChild($defaultsXML = $dom->createElement('defaults')); if (!empty($defaults)) { foreach ($defaults as $default) { $defaultsXML->appendChild($defaultXML = $dom->createElement('default')); $defaultXML->appendChild($dom->createTextNode($default)); } } } if ($option->isNegatable()) { $dom->appendChild($objectXML = $dom->createElement('option')); $objectXML->setAttribute('name', '--no-' . $option->getName()); $objectXML->setAttribute('shortcut', ''); $objectXML->setAttribute('accept_value', 0); $objectXML->setAttribute('is_value_required', 0); $objectXML->setAttribute('is_multiple', 0); $objectXML->appendChild($descriptionXML = $dom->createElement('description')); $descriptionXML->appendChild($dom->createTextNode('Negate the "--' . $option->getName() . '" option')); } return $dom; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Descriptor; use _PHPStan_b22655c3f\Symfony\Component\Console\Application; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputArgument; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputDefinition; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputOption; /** * JSON descriptor. * * @author Jean-François Simon * * @internal */ class JsonDescriptor extends Descriptor { /** * {@inheritdoc} */ protected function describeInputArgument(InputArgument $argument, array $options = []) { $this->writeData($this->getInputArgumentData($argument), $options); } /** * {@inheritdoc} */ protected function describeInputOption(InputOption $option, array $options = []) { $this->writeData($this->getInputOptionData($option), $options); if ($option->isNegatable()) { $this->writeData($this->getInputOptionData($option, \true), $options); } } /** * {@inheritdoc} */ protected function describeInputDefinition(InputDefinition $definition, array $options = []) { $this->writeData($this->getInputDefinitionData($definition), $options); } /** * {@inheritdoc} */ protected function describeCommand(Command $command, array $options = []) { $this->writeData($this->getCommandData($command, $options['short'] ?? \false), $options); } /** * {@inheritdoc} */ protected function describeApplication(Application $application, array $options = []) { $describedNamespace = $options['namespace'] ?? null; $description = new ApplicationDescription($application, $describedNamespace, \true); $commands = []; foreach ($description->getCommands() as $command) { $commands[] = $this->getCommandData($command, $options['short'] ?? \false); } $data = []; if ('UNKNOWN' !== $application->getName()) { $data['application']['name'] = $application->getName(); if ('UNKNOWN' !== $application->getVersion()) { $data['application']['version'] = $application->getVersion(); } } $data['commands'] = $commands; if ($describedNamespace) { $data['namespace'] = $describedNamespace; } else { $data['namespaces'] = \array_values($description->getNamespaces()); } $this->writeData($data, $options); } /** * Writes data as json. */ private function writeData(array $data, array $options) { $flags = $options['json_encoding'] ?? 0; $this->write(\json_encode($data, $flags)); } private function getInputArgumentData(InputArgument $argument) : array { return ['name' => $argument->getName(), 'is_required' => $argument->isRequired(), 'is_array' => $argument->isArray(), 'description' => \preg_replace('/\\s*[\\r\\n]\\s*/', ' ', $argument->getDescription()), 'default' => \INF === $argument->getDefault() ? 'INF' : $argument->getDefault()]; } private function getInputOptionData(InputOption $option, bool $negated = \false) : array { return $negated ? ['name' => '--no-' . $option->getName(), 'shortcut' => '', 'accept_value' => \false, 'is_value_required' => \false, 'is_multiple' => \false, 'description' => 'Negate the "--' . $option->getName() . '" option', 'default' => \false] : ['name' => '--' . $option->getName(), 'shortcut' => $option->getShortcut() ? '-' . \str_replace('|', '|-', $option->getShortcut()) : '', 'accept_value' => $option->acceptValue(), 'is_value_required' => $option->isValueRequired(), 'is_multiple' => $option->isArray(), 'description' => \preg_replace('/\\s*[\\r\\n]\\s*/', ' ', $option->getDescription()), 'default' => \INF === $option->getDefault() ? 'INF' : $option->getDefault()]; } private function getInputDefinitionData(InputDefinition $definition) : array { $inputArguments = []; foreach ($definition->getArguments() as $name => $argument) { $inputArguments[$name] = $this->getInputArgumentData($argument); } $inputOptions = []; foreach ($definition->getOptions() as $name => $option) { $inputOptions[$name] = $this->getInputOptionData($option); if ($option->isNegatable()) { $inputOptions['no-' . $name] = $this->getInputOptionData($option, \true); } } return ['arguments' => $inputArguments, 'options' => $inputOptions]; } private function getCommandData(Command $command, bool $short = \false) : array { $data = ['name' => $command->getName(), 'description' => $command->getDescription()]; if ($short) { $data += ['usage' => $command->getAliases()]; } else { $command->mergeApplicationDefinition(\false); $data += ['usage' => \array_merge([$command->getSynopsis()], $command->getUsages(), $command->getAliases()), 'help' => $command->getProcessedHelp(), 'definition' => $this->getInputDefinitionData($command->getDefinition())]; } $data['hidden'] = $command->isHidden(); return $data; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\DependencyInjection; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\LazyCommand; use _PHPStan_b22655c3f\Symfony\Component\Console\CommandLoader\ContainerCommandLoader; use _PHPStan_b22655c3f\Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument; use _PHPStan_b22655c3f\Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use _PHPStan_b22655c3f\Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass; use _PHPStan_b22655c3f\Symfony\Component\DependencyInjection\ContainerBuilder; use _PHPStan_b22655c3f\Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\DependencyInjection\Reference; use _PHPStan_b22655c3f\Symfony\Component\DependencyInjection\TypedReference; /** * Registers console commands. * * @author Grégoire Pineau */ class AddConsoleCommandPass implements CompilerPassInterface { private $commandLoaderServiceId; private $commandTag; private $noPreloadTag; private $privateTagName; public function __construct(string $commandLoaderServiceId = 'console.command_loader', string $commandTag = 'console.command', string $noPreloadTag = 'container.no_preload', string $privateTagName = 'container.private') { if (0 < \func_num_args()) { trigger_deprecation('symfony/console', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); } $this->commandLoaderServiceId = $commandLoaderServiceId; $this->commandTag = $commandTag; $this->noPreloadTag = $noPreloadTag; $this->privateTagName = $privateTagName; } public function process(ContainerBuilder $container) { $commandServices = $container->findTaggedServiceIds($this->commandTag, \true); $lazyCommandMap = []; $lazyCommandRefs = []; $serviceIds = []; foreach ($commandServices as $id => $tags) { $definition = $container->getDefinition($id); $definition->addTag($this->noPreloadTag); $class = $container->getParameterBag()->resolveValue($definition->getClass()); if (isset($tags[0]['command'])) { $aliases = $tags[0]['command']; } else { if (!($r = $container->getReflectionClass($class))) { throw new InvalidArgumentException(\sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); } if (!$r->isSubclassOf(Command::class)) { throw new InvalidArgumentException(\sprintf('The service "%s" tagged "%s" must be a subclass of "%s".', $id, $this->commandTag, Command::class)); } $aliases = \str_replace('%', '%%', $class::getDefaultName() ?? ''); } $aliases = \explode('|', $aliases ?? ''); $commandName = \array_shift($aliases); if ($isHidden = '' === $commandName) { $commandName = \array_shift($aliases); } if (null === $commandName) { if (!$definition->isPublic() || $definition->isPrivate() || $definition->hasTag($this->privateTagName)) { $commandId = 'console.command.public_alias.' . $id; $container->setAlias($commandId, $id)->setPublic(\true); $id = $commandId; } $serviceIds[] = $id; continue; } $description = $tags[0]['description'] ?? null; unset($tags[0]); $lazyCommandMap[$commandName] = $id; $lazyCommandRefs[$id] = new TypedReference($id, $class); foreach ($aliases as $alias) { $lazyCommandMap[$alias] = $id; } foreach ($tags as $tag) { if (isset($tag['command'])) { $aliases[] = $tag['command']; $lazyCommandMap[$tag['command']] = $id; } $description = $description ?? $tag['description'] ?? null; } $definition->addMethodCall('setName', [$commandName]); if ($aliases) { $definition->addMethodCall('setAliases', [$aliases]); } if ($isHidden) { $definition->addMethodCall('setHidden', [\true]); } if (!$description) { if (!($r = $container->getReflectionClass($class))) { throw new InvalidArgumentException(\sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); } if (!$r->isSubclassOf(Command::class)) { throw new InvalidArgumentException(\sprintf('The service "%s" tagged "%s" must be a subclass of "%s".', $id, $this->commandTag, Command::class)); } $description = \str_replace('%', '%%', $class::getDefaultDescription() ?? ''); } if ($description) { $definition->addMethodCall('setDescription', [$description]); $container->register('.' . $id . '.lazy', LazyCommand::class)->setArguments([$commandName, $aliases, $description, $isHidden, new ServiceClosureArgument($lazyCommandRefs[$id])]); $lazyCommandRefs[$id] = new Reference('.' . $id . '.lazy'); } } $container->register($this->commandLoaderServiceId, ContainerCommandLoader::class)->setPublic(\true)->addTag($this->noPreloadTag)->setArguments([ServiceLocatorTagPass::register($container, $lazyCommandRefs), $lazyCommandMap]); $container->setParameter('console.command.ids', $serviceIds); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Exception; /** * Represents an incorrect command name typed in the console. * * @author Jérôme Tamarelle */ class CommandNotFoundException extends \InvalidArgumentException implements ExceptionInterface { private $alternatives; /** * @param string $message Exception message to throw * @param string[] $alternatives List of similar defined names * @param int $code Exception code * @param \Throwable|null $previous Previous exception used for the exception chaining */ public function __construct(string $message, array $alternatives = [], int $code = 0, ?\Throwable $previous = null) { parent::__construct($message, $code, $previous); $this->alternatives = $alternatives; } /** * @return string[] */ public function getAlternatives() { return $this->alternatives; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Exception; /** * ExceptionInterface. * * @author Jérôme Tamarelle */ interface ExceptionInterface extends \Throwable { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Exception; /** * @author Jérôme Tamarelle */ class RuntimeException extends \RuntimeException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Exception; /** * Represents failure to read input from stdin. * * @author Gabriel Ostrolucký */ class MissingInputException extends RuntimeException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Exception; /** * Represents an incorrect namespace typed in the console. * * @author Pierre du Plessis */ class NamespaceNotFoundException extends CommandNotFoundException { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Exception; /** * @author Jérôme Tamarelle */ class LogicException extends \LogicException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Exception; /** * Represents an incorrect option name or value typed in the console. * * @author Jérôme Tamarelle */ class InvalidOptionException extends \InvalidArgumentException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Exception; /** * @author Jérôme Tamarelle */ class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Question; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; /** * Represents a choice question. * * @author Fabien Potencier */ class ChoiceQuestion extends Question { private $choices; private $multiselect = \false; private $prompt = ' > '; private $errorMessage = 'Value "%s" is invalid'; /** * @param string $question The question to ask to the user * @param array $choices The list of available choices * @param mixed $default The default answer to return */ public function __construct(string $question, array $choices, $default = null) { if (!$choices) { throw new \LogicException('Choice question must have at least 1 choice available.'); } parent::__construct($question, $default); $this->choices = $choices; $this->setValidator($this->getDefaultValidator()); $this->setAutocompleterValues($choices); } /** * Returns available choices. * * @return array */ public function getChoices() { return $this->choices; } /** * Sets multiselect option. * * When multiselect is set to true, multiple choices can be answered. * * @return $this */ public function setMultiselect(bool $multiselect) { $this->multiselect = $multiselect; $this->setValidator($this->getDefaultValidator()); return $this; } /** * Returns whether the choices are multiselect. * * @return bool */ public function isMultiselect() { return $this->multiselect; } /** * Gets the prompt for choices. * * @return string */ public function getPrompt() { return $this->prompt; } /** * Sets the prompt for choices. * * @return $this */ public function setPrompt(string $prompt) { $this->prompt = $prompt; return $this; } /** * Sets the error message for invalid values. * * The error message has a string placeholder (%s) for the invalid value. * * @return $this */ public function setErrorMessage(string $errorMessage) { $this->errorMessage = $errorMessage; $this->setValidator($this->getDefaultValidator()); return $this; } private function getDefaultValidator() : callable { $choices = $this->choices; $errorMessage = $this->errorMessage; $multiselect = $this->multiselect; $isAssoc = $this->isAssoc($choices); return function ($selected) use($choices, $errorMessage, $multiselect, $isAssoc) { if ($multiselect) { // Check for a separated comma values if (!\preg_match('/^[^,]+(?:,[^,]+)*$/', (string) $selected, $matches)) { throw new InvalidArgumentException(\sprintf($errorMessage, $selected)); } $selectedChoices = \explode(',', (string) $selected); } else { $selectedChoices = [$selected]; } if ($this->isTrimmable()) { foreach ($selectedChoices as $k => $v) { $selectedChoices[$k] = \trim((string) $v); } } $multiselectChoices = []; foreach ($selectedChoices as $value) { $results = []; foreach ($choices as $key => $choice) { if ($choice === $value) { $results[] = $key; } } if (\count($results) > 1) { throw new InvalidArgumentException(\sprintf('The provided answer is ambiguous. Value should be one of "%s".', \implode('" or "', $results))); } $result = \array_search($value, $choices); if (!$isAssoc) { if (\false !== $result) { $result = $choices[$result]; } elseif (isset($choices[$value])) { $result = $choices[$value]; } } elseif (\false === $result && isset($choices[$value])) { $result = $value; } if (\false === $result) { throw new InvalidArgumentException(\sprintf($errorMessage, $value)); } // For associative choices, consistently return the key as string: $multiselectChoices[] = $isAssoc ? (string) $result : $result; } if ($multiselect) { return $multiselectChoices; } return \current($multiselectChoices); }; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Question; /** * Represents a yes/no question. * * @author Fabien Potencier */ class ConfirmationQuestion extends Question { private $trueAnswerRegex; /** * @param string $question The question to ask to the user * @param bool $default The default answer to return, true or false * @param string $trueAnswerRegex A regex to match the "yes" answer */ public function __construct(string $question, bool $default = \true, string $trueAnswerRegex = '/^y/i') { parent::__construct($question, $default); $this->trueAnswerRegex = $trueAnswerRegex; $this->setNormalizer($this->getDefaultNormalizer()); } /** * Returns the default answer normalizer. */ private function getDefaultNormalizer() : callable { $default = $this->getDefault(); $regex = $this->trueAnswerRegex; return function ($answer) use($default, $regex) { if (\is_bool($answer)) { return $answer; } $answerIsTrue = (bool) \preg_match($regex, $answer); if (\false === $default) { return $answer && $answerIsTrue; } return '' === $answer || $answerIsTrue; }; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Question; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\LogicException; /** * Represents a Question. * * @author Fabien Potencier */ class Question { private $question; private $attempts; private $hidden = \false; private $hiddenFallback = \true; private $autocompleterCallback; private $validator; private $default; private $normalizer; private $trimmable = \true; private $multiline = \false; /** * @param string $question The question to ask to the user * @param string|bool|int|float|null $default The default answer to return if the user enters nothing */ public function __construct(string $question, $default = null) { $this->question = $question; $this->default = $default; } /** * Returns the question. * * @return string */ public function getQuestion() { return $this->question; } /** * Returns the default answer. * * @return string|bool|int|float|null */ public function getDefault() { return $this->default; } /** * Returns whether the user response accepts newline characters. */ public function isMultiline() : bool { return $this->multiline; } /** * Sets whether the user response should accept newline characters. * * @return $this */ public function setMultiline(bool $multiline) : self { $this->multiline = $multiline; return $this; } /** * Returns whether the user response must be hidden. * * @return bool */ public function isHidden() { return $this->hidden; } /** * Sets whether the user response must be hidden or not. * * @return $this * * @throws LogicException In case the autocompleter is also used */ public function setHidden(bool $hidden) { if ($this->autocompleterCallback) { throw new LogicException('A hidden question cannot use the autocompleter.'); } $this->hidden = $hidden; return $this; } /** * In case the response cannot be hidden, whether to fallback on non-hidden question or not. * * @return bool */ public function isHiddenFallback() { return $this->hiddenFallback; } /** * Sets whether to fallback on non-hidden question if the response cannot be hidden. * * @return $this */ public function setHiddenFallback(bool $fallback) { $this->hiddenFallback = $fallback; return $this; } /** * Gets values for the autocompleter. * * @return iterable|null */ public function getAutocompleterValues() { $callback = $this->getAutocompleterCallback(); return $callback ? $callback('') : null; } /** * Sets values for the autocompleter. * * @return $this * * @throws LogicException */ public function setAutocompleterValues(?iterable $values) { if (\is_array($values)) { $values = $this->isAssoc($values) ? \array_merge(\array_keys($values), \array_values($values)) : \array_values($values); $callback = static function () use($values) { return $values; }; } elseif ($values instanceof \Traversable) { $valueCache = null; $callback = static function () use($values, &$valueCache) { return $valueCache ?? ($valueCache = \iterator_to_array($values, \false)); }; } else { $callback = null; } return $this->setAutocompleterCallback($callback); } /** * Gets the callback function used for the autocompleter. */ public function getAutocompleterCallback() : ?callable { return $this->autocompleterCallback; } /** * Sets the callback function used for the autocompleter. * * The callback is passed the user input as argument and should return an iterable of corresponding suggestions. * * @return $this */ public function setAutocompleterCallback(?callable $callback = null) : self { if ($this->hidden && null !== $callback) { throw new LogicException('A hidden question cannot use the autocompleter.'); } $this->autocompleterCallback = $callback; return $this; } /** * Sets a validator for the question. * * @return $this */ public function setValidator(?callable $validator = null) { $this->validator = $validator; return $this; } /** * Gets the validator for the question. * * @return callable|null */ public function getValidator() { return $this->validator; } /** * Sets the maximum number of attempts. * * Null means an unlimited number of attempts. * * @return $this * * @throws InvalidArgumentException in case the number of attempts is invalid */ public function setMaxAttempts(?int $attempts) { if (null !== $attempts && $attempts < 1) { throw new InvalidArgumentException('Maximum number of attempts must be a positive value.'); } $this->attempts = $attempts; return $this; } /** * Gets the maximum number of attempts. * * Null means an unlimited number of attempts. * * @return int|null */ public function getMaxAttempts() { return $this->attempts; } /** * Sets a normalizer for the response. * * The normalizer can be a callable (a string), a closure or a class implementing __invoke. * * @return $this */ public function setNormalizer(callable $normalizer) { $this->normalizer = $normalizer; return $this; } /** * Gets the normalizer for the response. * * The normalizer can ba a callable (a string), a closure or a class implementing __invoke. * * @return callable|null */ public function getNormalizer() { return $this->normalizer; } protected function isAssoc(array $array) { return (bool) \count(\array_filter(\array_keys($array), 'is_string')); } public function isTrimmable() : bool { return $this->trimmable; } /** * @return $this */ public function setTrimmable(bool $trimmable) : self { $this->trimmable = $trimmable; return $this; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console; class Terminal { private static $width; private static $height; private static $stty; /** * Gets the terminal width. * * @return int */ public function getWidth() { $width = \getenv('COLUMNS'); if (\false !== $width) { return (int) \trim($width); } if (null === self::$width) { self::initDimensions(); } return self::$width ?: 80; } /** * Gets the terminal height. * * @return int */ public function getHeight() { $height = \getenv('LINES'); if (\false !== $height) { return (int) \trim($height); } if (null === self::$height) { self::initDimensions(); } return self::$height ?: 50; } /** * @internal */ public static function hasSttyAvailable() : bool { if (null !== self::$stty) { return self::$stty; } // skip check if shell_exec function is disabled if (!\function_exists('shell_exec')) { return \false; } return self::$stty = (bool) \shell_exec('stty 2> ' . ('\\' === \DIRECTORY_SEPARATOR ? 'NUL' : '/dev/null')); } private static function initDimensions() { if ('\\' === \DIRECTORY_SEPARATOR) { $ansicon = \getenv('ANSICON'); if (\false !== $ansicon && \preg_match('/^(\\d+)x(\\d+)(?: \\((\\d+)x(\\d+)\\))?$/', \trim($ansicon), $matches)) { // extract [w, H] from "wxh (WxH)" // or [w, h] from "wxh" self::$width = (int) $matches[1]; self::$height = isset($matches[4]) ? (int) $matches[4] : (int) $matches[2]; } elseif (!self::hasVt100Support() && self::hasSttyAvailable()) { // only use stty on Windows if the terminal does not support vt100 (e.g. Windows 7 + git-bash) // testing for stty in a Windows 10 vt100-enabled console will implicitly disable vt100 support on STDOUT self::initDimensionsUsingStty(); } elseif (null !== ($dimensions = self::getConsoleMode())) { // extract [w, h] from "wxh" self::$width = (int) $dimensions[0]; self::$height = (int) $dimensions[1]; } } else { self::initDimensionsUsingStty(); } } /** * Returns whether STDOUT has vt100 support (some Windows 10+ configurations). */ private static function hasVt100Support() : bool { return \function_exists('sapi_windows_vt100_support') && \sapi_windows_vt100_support(\fopen('php://stdout', 'w')); } /** * Initializes dimensions using the output of an stty columns line. */ private static function initDimensionsUsingStty() { if ($sttyString = self::getSttyColumns()) { if (\preg_match('/rows.(\\d+);.columns.(\\d+);/i', $sttyString, $matches)) { // extract [w, h] from "rows h; columns w;" self::$width = (int) $matches[2]; self::$height = (int) $matches[1]; } elseif (\preg_match('/;.(\\d+).rows;.(\\d+).columns/i', $sttyString, $matches)) { // extract [w, h] from "; h rows; w columns" self::$width = (int) $matches[2]; self::$height = (int) $matches[1]; } } } /** * Runs and parses mode CON if it's available, suppressing any error output. * * @return int[]|null An array composed of the width and the height or null if it could not be parsed */ private static function getConsoleMode() : ?array { $info = self::readFromProcess('mode CON'); if (null === $info || !\preg_match('/--------+\\r?\\n.+?(\\d+)\\r?\\n.+?(\\d+)\\r?\\n/', $info, $matches)) { return null; } return [(int) $matches[2], (int) $matches[1]]; } /** * Runs and parses stty -a if it's available, suppressing any error output. */ private static function getSttyColumns() : ?string { return self::readFromProcess('stty -a | grep columns'); } private static function readFromProcess(string $command) : ?string { if (!\function_exists('proc_open')) { return null; } $descriptorspec = [1 => ['pipe', 'w'], 2 => ['pipe', 'w']]; $cp = \function_exists('sapi_windows_cp_set') ? \sapi_windows_cp_get() : 0; $process = \proc_open($command, $descriptorspec, $pipes, null, null, ['suppress_errors' => \true]); if (!\is_resource($process)) { return null; } $info = \stream_get_contents($pipes[1]); \fclose($pipes[1]); \fclose($pipes[2]); \proc_close($process); if ($cp) { \sapi_windows_cp_set($cp); } return $info; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Tester; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionInput; use _PHPStan_b22655c3f\Symfony\Component\Console\Completion\CompletionSuggestions; /** * Eases the testing of command completion. * * @author Jérôme Tamarelle */ class CommandCompletionTester { private $command; public function __construct(Command $command) { $this->command = $command; } /** * Create completion suggestions from input tokens. */ public function complete(array $input) : array { $currentIndex = \count($input); if ('' === \end($input)) { \array_pop($input); } \array_unshift($input, $this->command->getName()); $completionInput = CompletionInput::fromTokens($input, $currentIndex); $completionInput->bind($this->command->getDefinition()); $suggestions = new CompletionSuggestions(); $this->command->complete($completionInput, $suggestions); $options = []; foreach ($suggestions->getOptionSuggestions() as $option) { $options[] = '--' . $option->getName(); } return \array_map('strval', \array_merge($options, $suggestions->getValueSuggestions())); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Tester\Constraint; use PHPUnit\Framework\Constraint\Constraint; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; final class CommandIsSuccessful extends Constraint { /** * {@inheritdoc} */ public function toString() : string { return 'is successful'; } /** * {@inheritdoc} */ protected function matches($other) : bool { return Command::SUCCESS === $other; } /** * {@inheritdoc} */ protected function failureDescription($other) : string { return 'the command ' . $this->toString(); } /** * {@inheritdoc} */ protected function additionalFailureDescription($other) : string { $mapping = [Command::FAILURE => 'Command failed.', Command::INVALID => 'Command was invalid.']; return $mapping[$other] ?? \sprintf('Command returned exit status %d.', $other); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Tester; use _PHPStan_b22655c3f\Symfony\Component\Console\Application; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\ArrayInput; /** * Eases the testing of console applications. * * When testing an application, don't forget to disable the auto exit flag: * * $application = new Application(); * $application->setAutoExit(false); * * @author Fabien Potencier */ class ApplicationTester { use TesterTrait; private $application; public function __construct(Application $application) { $this->application = $application; } /** * Executes the application. * * Available options: * * * interactive: Sets the input interactive flag * * decorated: Sets the output decorated flag * * verbosity: Sets the output verbosity flag * * capture_stderr_separately: Make output of stdOut and stdErr separately available * * @return int The command exit code */ public function run(array $input, array $options = []) { $prevShellVerbosity = \getenv('SHELL_VERBOSITY'); try { $this->input = new ArrayInput($input); if (isset($options['interactive'])) { $this->input->setInteractive($options['interactive']); } if ($this->inputs) { $this->input->setStream(self::createStream($this->inputs)); } $this->initOutput($options); return $this->statusCode = $this->application->run($this->input, $this->output); } finally { // SHELL_VERBOSITY is set by Application::configureIO so we need to unset/reset it // to its previous value to avoid one test's verbosity to spread to the following tests if (\false === $prevShellVerbosity) { if (\function_exists('putenv')) { @\putenv('SHELL_VERBOSITY'); } unset($_ENV['SHELL_VERBOSITY']); unset($_SERVER['SHELL_VERBOSITY']); } else { if (\function_exists('putenv')) { @\putenv('SHELL_VERBOSITY=' . $prevShellVerbosity); } $_ENV['SHELL_VERBOSITY'] = $prevShellVerbosity; $_SERVER['SHELL_VERBOSITY'] = $prevShellVerbosity; } } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Tester; use PHPUnit\Framework\Assert; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\InputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\ConsoleOutput; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\OutputInterface; use _PHPStan_b22655c3f\Symfony\Component\Console\Output\StreamOutput; use _PHPStan_b22655c3f\Symfony\Component\Console\Tester\Constraint\CommandIsSuccessful; /** * @author Amrouche Hamza */ trait TesterTrait { /** @var StreamOutput */ private $output; private $inputs = []; private $captureStreamsIndependently = \false; /** @var InputInterface */ private $input; /** @var int */ private $statusCode; /** * Gets the display returned by the last execution of the command or application. * * @return string * * @throws \RuntimeException If it's called before the execute method */ public function getDisplay(bool $normalize = \false) { if (null === $this->output) { throw new \RuntimeException('Output not initialized, did you execute the command before requesting the display?'); } \rewind($this->output->getStream()); $display = \stream_get_contents($this->output->getStream()); if ($normalize) { $display = \str_replace(\PHP_EOL, "\n", $display); } return $display; } /** * Gets the output written to STDERR by the application. * * @param bool $normalize Whether to normalize end of lines to \n or not * * @return string */ public function getErrorOutput(bool $normalize = \false) { if (!$this->captureStreamsIndependently) { throw new \LogicException('The error output is not available when the tester is run without "capture_stderr_separately" option set.'); } \rewind($this->output->getErrorOutput()->getStream()); $display = \stream_get_contents($this->output->getErrorOutput()->getStream()); if ($normalize) { $display = \str_replace(\PHP_EOL, "\n", $display); } return $display; } /** * Gets the input instance used by the last execution of the command or application. * * @return InputInterface */ public function getInput() { return $this->input; } /** * Gets the output instance used by the last execution of the command or application. * * @return OutputInterface */ public function getOutput() { return $this->output; } /** * Gets the status code returned by the last execution of the command or application. * * @return int * * @throws \RuntimeException If it's called before the execute method */ public function getStatusCode() { if (null === $this->statusCode) { throw new \RuntimeException('Status code not initialized, did you execute the command before requesting the status code?'); } return $this->statusCode; } public function assertCommandIsSuccessful(string $message = '') : void { Assert::assertThat($this->statusCode, new CommandIsSuccessful(), $message); } /** * Sets the user inputs. * * @param array $inputs An array of strings representing each input * passed to the command input stream * * @return $this */ public function setInputs(array $inputs) { $this->inputs = $inputs; return $this; } /** * Initializes the output property. * * Available options: * * * decorated: Sets the output decorated flag * * verbosity: Sets the output verbosity flag * * capture_stderr_separately: Make output of stdOut and stdErr separately available */ private function initOutput(array $options) { $this->captureStreamsIndependently = \array_key_exists('capture_stderr_separately', $options) && $options['capture_stderr_separately']; if (!$this->captureStreamsIndependently) { $this->output = new StreamOutput(\fopen('php://memory', 'w', \false)); if (isset($options['decorated'])) { $this->output->setDecorated($options['decorated']); } if (isset($options['verbosity'])) { $this->output->setVerbosity($options['verbosity']); } } else { $this->output = new ConsoleOutput($options['verbosity'] ?? ConsoleOutput::VERBOSITY_NORMAL, $options['decorated'] ?? null); $errorOutput = new StreamOutput(\fopen('php://memory', 'w', \false)); $errorOutput->setFormatter($this->output->getFormatter()); $errorOutput->setVerbosity($this->output->getVerbosity()); $errorOutput->setDecorated($this->output->isDecorated()); $reflectedOutput = new \ReflectionObject($this->output); $strErrProperty = $reflectedOutput->getProperty('stderr'); $strErrProperty->setAccessible(\true); $strErrProperty->setValue($this->output, $errorOutput); $reflectedParent = $reflectedOutput->getParentClass(); $streamProperty = $reflectedParent->getProperty('stream'); $streamProperty->setAccessible(\true); $streamProperty->setValue($this->output, \fopen('php://memory', 'w', \false)); } } /** * @return resource */ private static function createStream(array $inputs) { $stream = \fopen('php://memory', 'r+', \false); foreach ($inputs as $input) { \fwrite($stream, $input . \PHP_EOL); } \rewind($stream); return $stream; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console\Tester; use _PHPStan_b22655c3f\Symfony\Component\Console\Command\Command; use _PHPStan_b22655c3f\Symfony\Component\Console\Input\ArrayInput; /** * Eases the testing of console commands. * * @author Fabien Potencier * @author Robin Chalas */ class CommandTester { use TesterTrait; private $command; public function __construct(Command $command) { $this->command = $command; } /** * Executes the command. * * Available execution options: * * * interactive: Sets the input interactive flag * * decorated: Sets the output decorated flag * * verbosity: Sets the output verbosity flag * * capture_stderr_separately: Make output of stdOut and stdErr separately available * * @param array $input An array of command arguments and options * @param array $options An array of execution options * * @return int The command exit code */ public function execute(array $input, array $options = []) { // set the command name automatically if the application requires // this argument and no command name was passed if (!isset($input['command']) && null !== ($application = $this->command->getApplication()) && $application->getDefinition()->hasArgument('command')) { $input = \array_merge(['command' => $this->command->getName()], $input); } $this->input = new ArrayInput($input); // Use an in-memory input stream even if no inputs are set so that QuestionHelper::ask() does not rely on the blocking STDIN. $this->input->setStream(self::createStream($this->inputs)); if (isset($options['interactive'])) { $this->input->setInteractive($options['interactive']); } if (!isset($options['decorated'])) { $options['decorated'] = \false; } $this->initOutput($options); return $this->statusCode = $this->command->run($this->input, $this->output); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Console; use _PHPStan_b22655c3f\Symfony\Component\Console\Exception\InvalidArgumentException; /** * @author Fabien Potencier */ final class Color { private const COLORS = ['black' => 0, 'red' => 1, 'green' => 2, 'yellow' => 3, 'blue' => 4, 'magenta' => 5, 'cyan' => 6, 'white' => 7, 'default' => 9]; private const BRIGHT_COLORS = ['gray' => 0, 'bright-red' => 1, 'bright-green' => 2, 'bright-yellow' => 3, 'bright-blue' => 4, 'bright-magenta' => 5, 'bright-cyan' => 6, 'bright-white' => 7]; private const AVAILABLE_OPTIONS = ['bold' => ['set' => 1, 'unset' => 22], 'underscore' => ['set' => 4, 'unset' => 24], 'blink' => ['set' => 5, 'unset' => 25], 'reverse' => ['set' => 7, 'unset' => 27], 'conceal' => ['set' => 8, 'unset' => 28]]; private $foreground; private $background; private $options = []; public function __construct(string $foreground = '', string $background = '', array $options = []) { $this->foreground = $this->parseColor($foreground); $this->background = $this->parseColor($background, \true); foreach ($options as $option) { if (!isset(self::AVAILABLE_OPTIONS[$option])) { throw new InvalidArgumentException(\sprintf('Invalid option specified: "%s". Expected one of (%s).', $option, \implode(', ', \array_keys(self::AVAILABLE_OPTIONS)))); } $this->options[$option] = self::AVAILABLE_OPTIONS[$option]; } } public function apply(string $text) : string { return $this->set() . $text . $this->unset(); } public function set() : string { $setCodes = []; if ('' !== $this->foreground) { $setCodes[] = $this->foreground; } if ('' !== $this->background) { $setCodes[] = $this->background; } foreach ($this->options as $option) { $setCodes[] = $option['set']; } if (0 === \count($setCodes)) { return ''; } return \sprintf("\x1b[%sm", \implode(';', $setCodes)); } public function unset() : string { $unsetCodes = []; if ('' !== $this->foreground) { $unsetCodes[] = 39; } if ('' !== $this->background) { $unsetCodes[] = 49; } foreach ($this->options as $option) { $unsetCodes[] = $option['unset']; } if (0 === \count($unsetCodes)) { return ''; } return \sprintf("\x1b[%sm", \implode(';', $unsetCodes)); } private function parseColor(string $color, bool $background = \false) : string { if ('' === $color) { return ''; } if ('#' === $color[0]) { $color = \substr($color, 1); if (3 === \strlen($color)) { $color = $color[0] . $color[0] . $color[1] . $color[1] . $color[2] . $color[2]; } if (6 !== \strlen($color)) { throw new InvalidArgumentException(\sprintf('Invalid "%s" color.', $color)); } return ($background ? '4' : '3') . $this->convertHexColorToAnsi(\hexdec($color)); } if (isset(self::COLORS[$color])) { return ($background ? '4' : '3') . self::COLORS[$color]; } if (isset(self::BRIGHT_COLORS[$color])) { return ($background ? '10' : '9') . self::BRIGHT_COLORS[$color]; } throw new InvalidArgumentException(\sprintf('Invalid "%s" color; expected one of (%s).', $color, \implode(', ', \array_merge(\array_keys(self::COLORS), \array_keys(self::BRIGHT_COLORS))))); } private function convertHexColorToAnsi(int $color) : string { $r = $color >> 16 & 255; $g = $color >> 8 & 255; $b = $color & 255; // see https://github.com/termstandard/colors/ for more information about true color support if ('truecolor' !== \getenv('COLORTERM')) { return (string) $this->degradeHexColorToAnsi($r, $g, $b); } return \sprintf('8;2;%d;%d;%d', $r, $g, $b); } private function degradeHexColorToAnsi(int $r, int $g, int $b) : int { if (0 === \round($this->getSaturation($r, $g, $b) / 50)) { return 0; } return \round($b / 255) << 2 | \round($g / 255) << 1 | \round($r / 255); } private function getSaturation(int $r, int $g, int $b) : int { $r = $r / 255; $g = $g / 255; $b = $b / 255; $v = \max($r, $g, $b); if (0 === ($diff = $v - \min($r, $g, $b))) { return 0; } return (int) $diff * 100 / $v; } } # This file is part of the Symfony package. # # (c) Fabien Potencier # # For the full copyright and license information, please view # https://symfony.com/doc/current/contributing/code/license.html _sf_{{ COMMAND_NAME }}() { # Use newline as only separator to allow space in completion values IFS=$'\n' local sf_cmd="${COMP_WORDS[0]}" # for an alias, get the real script behind it sf_cmd_type=$(type -t $sf_cmd) if [[ $sf_cmd_type == "alias" ]]; then sf_cmd=$(alias $sf_cmd | sed -E "s/alias $sf_cmd='(.*)'/\1/") elif [[ $sf_cmd_type == "file" ]]; then sf_cmd=$(type -p $sf_cmd) fi if [[ $sf_cmd_type != "function" && ! -x $sf_cmd ]]; then return 1 fi local cur prev words cword _get_comp_words_by_ref -n := cur prev words cword local completecmd=("$sf_cmd" "_complete" "--no-interaction" "-sbash" "-c$cword" "-S{{ VERSION }}") for w in ${words[@]}; do w=$(printf -- '%b' "$w") # remove quotes from typed values quote="${w:0:1}" if [ "$quote" == \' ]; then w="${w%\'}" w="${w#\'}" elif [ "$quote" == \" ]; then w="${w%\"}" w="${w#\"}" fi # empty values are ignored if [ ! -z "$w" ]; then completecmd+=("-i$w") fi done local sfcomplete if sfcomplete=$(${completecmd[@]} 2>&1); then local quote suggestions quote=${cur:0:1} # Use single quotes by default if suggestions contains backslash (FQCN) if [ "$quote" == '' ] && [[ "$sfcomplete" =~ \\ ]]; then quote=\' fi if [ "$quote" == \' ]; then # single quotes: no additional escaping (does not accept ' in values) suggestions=$(for s in $sfcomplete; do printf $'%q%q%q\n' "$quote" "$s" "$quote"; done) elif [ "$quote" == \" ]; then # double quotes: double escaping for \ $ ` " suggestions=$(for s in $sfcomplete; do s=${s//\\/\\\\} s=${s//\$/\\\$} s=${s//\`/\\\`} s=${s//\"/\\\"} printf $'%q%q%q\n' "$quote" "$s" "$quote"; done) else # no quotes: double escaping suggestions=$(for s in $sfcomplete; do printf $'%q\n' $(printf '%q' "$s"); done) fi COMPREPLY=($(IFS=$'\n' compgen -W "$suggestions" -- $(printf -- "%q" "$cur"))) __ltrim_colon_completions "$cur" else if [[ "$sfcomplete" != *"Command \"_complete\" is not defined."* ]]; then >&2 echo >&2 echo $sfcomplete fi return 1 fi } complete -F _sf_{{ COMMAND_NAME }} {{ COMMAND_NAME }} MZ@ !L!This program cannot be run in DOS mode. $,;B;B;B2מ:B2-B2ƞ9B2ў?Ba98B;CB2Ȟ:B2֞:B2Ӟ:BRich;BPELMoO  8 @`?@"P@ Pp!8!@ .text   `.rdata @@.data0@.rsrc @@@.relocP"@Bj$@xj @eEPV @EЃPV @MX @eEP5H @L @YY5\ @EP5` @D @YYP @MMT @3H; 0@uh@l3@$40@5h3@40@h$0@h(0@h 0@ @00@}jYjh"@3ۉ]dp]俀3@SVW0 @;t;u3Fuh4 @3F|3@;u j\Y;|3@u,5|3@h @h @YYtE5<0@|3@;uh @h @lYY|3@9]uSW8 @93@th3@Yt SjS3@$0@ @5$0@5(0@5 0@ 80@9,0@u7P @E MPQYYËeE80@39,0@uPh @9<0@u @E80@øMZf9@t3M<@@8PEuH t uՃv39xtv39j,0@p @jl @YY3@3@ @ t3@ @ p3@ @x3@V=0@u h@ @Yg=0@u j @Y3{U(H1@ D1@@1@<1@581@=41@f`1@f T1@f01@f,1@f%(1@f-$1@X1@EL1@EP1@E\1@0@P1@L0@@0@ D0@0@0@ @0@j?Yj @h!@$ @=0@ujYh ( @P, @ËUE8csmu*xu$@= t=!t="t=@u3]hH@ @3% @jh("@b53@5 @YEu u @YgjYe53@։E53@YYEEPEPu5l @YPUEu֣3@uփ3@E EjYËUuNYH]ËV!@!@W;stЃ;r_^ËV"@"@W;stЃ;r_^% @̋UMMZf9t3]ËA<8PEu3ҹ f9H‹]̋UEH<ASVq3WDv} H ;r X;r B(;r3_^[]̋UjhH"@he@dPSVW0@1E3PEdeEh@*tUE-@Ph@Pt;@$ЃEMd Y_^[]ËE3=‹ËeE3Md Y_^[]% @% @he@d5D$l$l$+SVW0@1E3PeuEEEEdËMd Y__^[]QËUuuu uh@h0@]ËVhh3V t VVVVV^3ËU0@eeSWN@;t t У0@`VEP< @u3u @3 @3 @3EP @E3E3;uO@ u 50@։50@^_[%t @%x @%| @% @% @% @% @% @% @Pd5D$ +d$ SVW(0@3PEuEEdËMd Y__^[]QËM3M%T @T$B J3J3l"@s###)r)b)H)4))(((((()#$%%&d&&$('''''(((6('H(Z(t(('''''l'^'R'F'>'>(0'')@W@@MoOl!@0@0@bad allocationH0@!@RSDSьJ!LZc:\users\seld\documents\visual studio 2010\Projects\hiddeninp\Release\hiddeninp.pdbe@@:@@@@"d"@"# $#&D H#(h ###)r)b)H)4))(((((()#$%%&d&&$('''''(((6('H(Z(t(('''''l'^'R'F'>'>(0'')GetConsoleModeSetConsoleMode;GetStdHandleKERNEL32.dll??$?6DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@AJ?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A??$getline@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z_??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ{??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@ZMSVCP90.dll_amsg_exit__getmainargs,_cexit|_exitf_XcptFilterexit__initenv_initterm_initterm_e<_configthreadlocale__setusermatherr _adjust_fdiv__p__commode__p__fmodej_encode_pointer__set_app_typeK_crt_debugger_hookC?terminate@@YAXXZMSVCR90.dll_unlock__dllonexitv_lock_onexit`_decode_pointers_except_handler4_common _invoke_watson?_controlfp_sInterlockedExchange!SleepInterlockedCompareExchange-TerminateProcessGetCurrentProcess>UnhandledExceptionFilterSetUnhandledExceptionFilterIsDebuggerPresentTQueryPerformanceCounterfGetTickCountGetCurrentThreadIdGetCurrentProcessIdOGetSystemTimeAsFileTimes__CxxFrameHandler3N@D$!@ 8Ph  @(CV(4VS_VERSION_INFOStringFileInfob040904b0QFileDescriptionReads from stdin without leaking info to the terminal and outputs back to stdout6 FileVersion1, 0, 0, 08 InternalNamehiddeninputPLegalCopyrightJordi Boggiano - 2012HOriginalFilenamehiddeninput.exe: ProductNameHidden Input: ProductVersion1, 0, 0, 0DVarFileInfo$Translation  PAPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDING@00!0/080F0L0T0^0d0n0{000000000000001#1-1@1J1O1T1v1{1111111111111112"2*23292A2M2_2j2p222222222222 333%303N3T3Z3`3f3l3s3z333333333333333334444%4;4B444444444445!5^5c5555H6M6_6}66677 7*7w7|777778 88=8E8P8V8\8b8h8n8t8z88889 $0001 1t1x12 2@2\2`2h2t20 0 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder; /** * Gitignore matches against text. * * @author Michael Voříšek * @author Ahmed Abdou */ class Gitignore { /** * Returns a regexp which is the equivalent of the gitignore pattern. * * Format specification: https://git-scm.com/docs/gitignore#_pattern_format */ public static function toRegex(string $gitignoreFileContent) : string { return self::buildRegex($gitignoreFileContent, \false); } public static function toRegexMatchingNegatedPatterns(string $gitignoreFileContent) : string { return self::buildRegex($gitignoreFileContent, \true); } private static function buildRegex(string $gitignoreFileContent, bool $inverted) : string { $gitignoreFileContent = \preg_replace('~(? * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder; /** * Extends \SplFileInfo to support relative paths. * * @author Fabien Potencier */ class SplFileInfo extends \SplFileInfo { private $relativePath; private $relativePathname; /** * @param string $file The file name * @param string $relativePath The relative path * @param string $relativePathname The relative path name */ public function __construct(string $file, string $relativePath, string $relativePathname) { parent::__construct($file); $this->relativePath = $relativePath; $this->relativePathname = $relativePathname; } /** * Returns the relative path. * * This path does not contain the file name. * * @return string */ public function getRelativePath() { return $this->relativePath; } /** * Returns the relative path name. * * This path contains the file name. * * @return string */ public function getRelativePathname() { return $this->relativePathname; } public function getFilenameWithoutExtension() : string { $filename = $this->getFilename(); return \pathinfo($filename, \PATHINFO_FILENAME); } /** * Returns the contents of the file. * * @return string * * @throws \RuntimeException */ public function getContents() { \set_error_handler(function ($type, $msg) use(&$error) { $error = $msg; }); try { $content = \file_get_contents($this->getPathname()); } finally { \restore_error_handler(); } if (\false === $content) { throw new \RuntimeException($error); } return $content; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder; use _PHPStan_b22655c3f\Symfony\Component\Finder\Comparator\DateComparator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Comparator\NumberComparator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Exception\DirectoryNotFoundException; use _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator\CustomFilterIterator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator\DateRangeFilterIterator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator\DepthRangeFilterIterator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator\ExcludeDirectoryFilterIterator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator\FilecontentFilterIterator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator\FilenameFilterIterator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator\LazyIterator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator\SizeRangeFilterIterator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator\SortableIterator; /** * Finder allows to build rules to find files and directories. * * It is a thin wrapper around several specialized iterator classes. * * All rules may be invoked several times. * * All methods return the current Finder object to allow chaining: * * $finder = Finder::create()->files()->name('*.php')->in(__DIR__); * * @author Fabien Potencier * * @implements \IteratorAggregate */ class Finder implements \IteratorAggregate, \Countable { public const IGNORE_VCS_FILES = 1; public const IGNORE_DOT_FILES = 2; public const IGNORE_VCS_IGNORED_FILES = 4; private $mode = 0; private $names = []; private $notNames = []; private $exclude = []; private $filters = []; private $depths = []; private $sizes = []; private $followLinks = \false; private $reverseSorting = \false; private $sort = \false; private $ignore = 0; private $dirs = []; private $dates = []; private $iterators = []; private $contains = []; private $notContains = []; private $paths = []; private $notPaths = []; private $ignoreUnreadableDirs = \false; private static $vcsPatterns = ['.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg']; public function __construct() { $this->ignore = static::IGNORE_VCS_FILES | static::IGNORE_DOT_FILES; } /** * Creates a new Finder. * * @return static */ public static function create() { return new static(); } /** * Restricts the matching to directories only. * * @return $this */ public function directories() { $this->mode = Iterator\FileTypeFilterIterator::ONLY_DIRECTORIES; return $this; } /** * Restricts the matching to files only. * * @return $this */ public function files() { $this->mode = Iterator\FileTypeFilterIterator::ONLY_FILES; return $this; } /** * Adds tests for the directory depth. * * Usage: * * $finder->depth('> 1') // the Finder will start matching at level 1. * $finder->depth('< 3') // the Finder will descend at most 3 levels of directories below the starting point. * $finder->depth(['>= 1', '< 3']) * * @param string|int|string[]|int[] $levels The depth level expression or an array of depth levels * * @return $this * * @see DepthRangeFilterIterator * @see NumberComparator */ public function depth($levels) { foreach ((array) $levels as $level) { $this->depths[] = new Comparator\NumberComparator($level); } return $this; } /** * Adds tests for file dates (last modified). * * The date must be something that strtotime() is able to parse: * * $finder->date('since yesterday'); * $finder->date('until 2 days ago'); * $finder->date('> now - 2 hours'); * $finder->date('>= 2005-10-15'); * $finder->date(['>= 2005-10-15', '<= 2006-05-27']); * * @param string|string[] $dates A date range string or an array of date ranges * * @return $this * * @see strtotime * @see DateRangeFilterIterator * @see DateComparator */ public function date($dates) { foreach ((array) $dates as $date) { $this->dates[] = new Comparator\DateComparator($date); } return $this; } /** * Adds rules that files must match. * * You can use patterns (delimited with / sign), globs or simple strings. * * $finder->name('/\.php$/') * $finder->name('*.php') // same as above, without dot files * $finder->name('test.php') * $finder->name(['test.py', 'test.php']) * * @param string|string[] $patterns A pattern (a regexp, a glob, or a string) or an array of patterns * * @return $this * * @see FilenameFilterIterator */ public function name($patterns) { $this->names = \array_merge($this->names, (array) $patterns); return $this; } /** * Adds rules that files must not match. * * @param string|string[] $patterns A pattern (a regexp, a glob, or a string) or an array of patterns * * @return $this * * @see FilenameFilterIterator */ public function notName($patterns) { $this->notNames = \array_merge($this->notNames, (array) $patterns); return $this; } /** * Adds tests that file contents must match. * * Strings or PCRE patterns can be used: * * $finder->contains('Lorem ipsum') * $finder->contains('/Lorem ipsum/i') * $finder->contains(['dolor', '/ipsum/i']) * * @param string|string[] $patterns A pattern (string or regexp) or an array of patterns * * @return $this * * @see FilecontentFilterIterator */ public function contains($patterns) { $this->contains = \array_merge($this->contains, (array) $patterns); return $this; } /** * Adds tests that file contents must not match. * * Strings or PCRE patterns can be used: * * $finder->notContains('Lorem ipsum') * $finder->notContains('/Lorem ipsum/i') * $finder->notContains(['lorem', '/dolor/i']) * * @param string|string[] $patterns A pattern (string or regexp) or an array of patterns * * @return $this * * @see FilecontentFilterIterator */ public function notContains($patterns) { $this->notContains = \array_merge($this->notContains, (array) $patterns); return $this; } /** * Adds rules that filenames must match. * * You can use patterns (delimited with / sign) or simple strings. * * $finder->path('some/special/dir') * $finder->path('/some\/special\/dir/') // same as above * $finder->path(['some dir', 'another/dir']) * * Use only / as dirname separator. * * @param string|string[] $patterns A pattern (a regexp or a string) or an array of patterns * * @return $this * * @see FilenameFilterIterator */ public function path($patterns) { $this->paths = \array_merge($this->paths, (array) $patterns); return $this; } /** * Adds rules that filenames must not match. * * You can use patterns (delimited with / sign) or simple strings. * * $finder->notPath('some/special/dir') * $finder->notPath('/some\/special\/dir/') // same as above * $finder->notPath(['some/file.txt', 'another/file.log']) * * Use only / as dirname separator. * * @param string|string[] $patterns A pattern (a regexp or a string) or an array of patterns * * @return $this * * @see FilenameFilterIterator */ public function notPath($patterns) { $this->notPaths = \array_merge($this->notPaths, (array) $patterns); return $this; } /** * Adds tests for file sizes. * * $finder->size('> 10K'); * $finder->size('<= 1Ki'); * $finder->size(4); * $finder->size(['> 10K', '< 20K']) * * @param string|int|string[]|int[] $sizes A size range string or an integer or an array of size ranges * * @return $this * * @see SizeRangeFilterIterator * @see NumberComparator */ public function size($sizes) { foreach ((array) $sizes as $size) { $this->sizes[] = new Comparator\NumberComparator($size); } return $this; } /** * Excludes directories. * * Directories passed as argument must be relative to the ones defined with the `in()` method. For example: * * $finder->in(__DIR__)->exclude('ruby'); * * @param string|array $dirs A directory path or an array of directories * * @return $this * * @see ExcludeDirectoryFilterIterator */ public function exclude($dirs) { $this->exclude = \array_merge($this->exclude, (array) $dirs); return $this; } /** * Excludes "hidden" directories and files (starting with a dot). * * This option is enabled by default. * * @return $this * * @see ExcludeDirectoryFilterIterator */ public function ignoreDotFiles(bool $ignoreDotFiles) { if ($ignoreDotFiles) { $this->ignore |= static::IGNORE_DOT_FILES; } else { $this->ignore &= ~static::IGNORE_DOT_FILES; } return $this; } /** * Forces the finder to ignore version control directories. * * This option is enabled by default. * * @return $this * * @see ExcludeDirectoryFilterIterator */ public function ignoreVCS(bool $ignoreVCS) { if ($ignoreVCS) { $this->ignore |= static::IGNORE_VCS_FILES; } else { $this->ignore &= ~static::IGNORE_VCS_FILES; } return $this; } /** * Forces Finder to obey .gitignore and ignore files based on rules listed there. * * This option is disabled by default. * * @return $this */ public function ignoreVCSIgnored(bool $ignoreVCSIgnored) { if ($ignoreVCSIgnored) { $this->ignore |= static::IGNORE_VCS_IGNORED_FILES; } else { $this->ignore &= ~static::IGNORE_VCS_IGNORED_FILES; } return $this; } /** * Adds VCS patterns. * * @see ignoreVCS() * * @param string|string[] $pattern VCS patterns to ignore */ public static function addVCSPattern($pattern) { foreach ((array) $pattern as $p) { self::$vcsPatterns[] = $p; } self::$vcsPatterns = \array_unique(self::$vcsPatterns); } /** * Sorts files and directories by an anonymous function. * * The anonymous function receives two \SplFileInfo instances to compare. * * This can be slow as all the matching files and directories must be retrieved for comparison. * * @return $this * * @see SortableIterator */ public function sort(\Closure $closure) { $this->sort = $closure; return $this; } /** * Sorts files and directories by name. * * This can be slow as all the matching files and directories must be retrieved for comparison. * * @return $this * * @see SortableIterator */ public function sortByName(bool $useNaturalSort = \false) { $this->sort = $useNaturalSort ? Iterator\SortableIterator::SORT_BY_NAME_NATURAL : Iterator\SortableIterator::SORT_BY_NAME; return $this; } /** * Sorts files and directories by type (directories before files), then by name. * * This can be slow as all the matching files and directories must be retrieved for comparison. * * @return $this * * @see SortableIterator */ public function sortByType() { $this->sort = Iterator\SortableIterator::SORT_BY_TYPE; return $this; } /** * Sorts files and directories by the last accessed time. * * This is the time that the file was last accessed, read or written to. * * This can be slow as all the matching files and directories must be retrieved for comparison. * * @return $this * * @see SortableIterator */ public function sortByAccessedTime() { $this->sort = Iterator\SortableIterator::SORT_BY_ACCESSED_TIME; return $this; } /** * Reverses the sorting. * * @return $this */ public function reverseSorting() { $this->reverseSorting = \true; return $this; } /** * Sorts files and directories by the last inode changed time. * * This is the time that the inode information was last modified (permissions, owner, group or other metadata). * * On Windows, since inode is not available, changed time is actually the file creation time. * * This can be slow as all the matching files and directories must be retrieved for comparison. * * @return $this * * @see SortableIterator */ public function sortByChangedTime() { $this->sort = Iterator\SortableIterator::SORT_BY_CHANGED_TIME; return $this; } /** * Sorts files and directories by the last modified time. * * This is the last time the actual contents of the file were last modified. * * This can be slow as all the matching files and directories must be retrieved for comparison. * * @return $this * * @see SortableIterator */ public function sortByModifiedTime() { $this->sort = Iterator\SortableIterator::SORT_BY_MODIFIED_TIME; return $this; } /** * Filters the iterator with an anonymous function. * * The anonymous function receives a \SplFileInfo and must return false * to remove files. * * @return $this * * @see CustomFilterIterator */ public function filter(\Closure $closure) { $this->filters[] = $closure; return $this; } /** * Forces the following of symlinks. * * @return $this */ public function followLinks() { $this->followLinks = \true; return $this; } /** * Tells finder to ignore unreadable directories. * * By default, scanning unreadable directories content throws an AccessDeniedException. * * @return $this */ public function ignoreUnreadableDirs(bool $ignore = \true) { $this->ignoreUnreadableDirs = $ignore; return $this; } /** * Searches files and directories which match defined rules. * * @param string|string[] $dirs A directory path or an array of directories * * @return $this * * @throws DirectoryNotFoundException if one of the directories does not exist */ public function in($dirs) { $resolvedDirs = []; foreach ((array) $dirs as $dir) { if (\is_dir($dir)) { $resolvedDirs[] = [$this->normalizeDir($dir)]; } elseif ($glob = \glob($dir, (\defined('GLOB_BRACE') ? \GLOB_BRACE : 0) | \GLOB_ONLYDIR | \GLOB_NOSORT)) { \sort($glob); $resolvedDirs[] = \array_map([$this, 'normalizeDir'], $glob); } else { throw new DirectoryNotFoundException(\sprintf('The "%s" directory does not exist.', $dir)); } } $this->dirs = \array_merge($this->dirs, ...$resolvedDirs); return $this; } /** * Returns an Iterator for the current Finder configuration. * * This method implements the IteratorAggregate interface. * * @return \Iterator * * @throws \LogicException if the in() method has not been called */ #[\ReturnTypeWillChange] public function getIterator() { if (0 === \count($this->dirs) && 0 === \count($this->iterators)) { throw new \LogicException('You must call one of in() or append() methods before iterating over a Finder.'); } if (1 === \count($this->dirs) && 0 === \count($this->iterators)) { $iterator = $this->searchInDirectory($this->dirs[0]); if ($this->sort || $this->reverseSorting) { $iterator = (new Iterator\SortableIterator($iterator, $this->sort, $this->reverseSorting))->getIterator(); } return $iterator; } $iterator = new \AppendIterator(); foreach ($this->dirs as $dir) { $iterator->append(new \IteratorIterator(new LazyIterator(function () use($dir) { return $this->searchInDirectory($dir); }))); } foreach ($this->iterators as $it) { $iterator->append($it); } if ($this->sort || $this->reverseSorting) { $iterator = (new Iterator\SortableIterator($iterator, $this->sort, $this->reverseSorting))->getIterator(); } return $iterator; } /** * Appends an existing set of files/directories to the finder. * * The set can be another Finder, an Iterator, an IteratorAggregate, or even a plain array. * * @return $this * * @throws \InvalidArgumentException when the given argument is not iterable */ public function append(iterable $iterator) { if ($iterator instanceof \IteratorAggregate) { $this->iterators[] = $iterator->getIterator(); } elseif ($iterator instanceof \Iterator) { $this->iterators[] = $iterator; } elseif (\is_iterable($iterator)) { $it = new \ArrayIterator(); foreach ($iterator as $file) { $file = $file instanceof \SplFileInfo ? $file : new \SplFileInfo($file); $it[$file->getPathname()] = $file; } $this->iterators[] = $it; } else { throw new \InvalidArgumentException('Finder::append() method wrong argument type.'); } return $this; } /** * Check if any results were found. * * @return bool */ public function hasResults() { foreach ($this->getIterator() as $_) { return \true; } return \false; } /** * Counts all the results collected by the iterators. * * @return int */ #[\ReturnTypeWillChange] public function count() { return \iterator_count($this->getIterator()); } private function searchInDirectory(string $dir) : \Iterator { $exclude = $this->exclude; $notPaths = $this->notPaths; if (static::IGNORE_VCS_FILES === (static::IGNORE_VCS_FILES & $this->ignore)) { $exclude = \array_merge($exclude, self::$vcsPatterns); } if (static::IGNORE_DOT_FILES === (static::IGNORE_DOT_FILES & $this->ignore)) { $notPaths[] = '#(^|/)\\..+(/|$)#'; } $minDepth = 0; $maxDepth = \PHP_INT_MAX; foreach ($this->depths as $comparator) { switch ($comparator->getOperator()) { case '>': $minDepth = $comparator->getTarget() + 1; break; case '>=': $minDepth = $comparator->getTarget(); break; case '<': $maxDepth = $comparator->getTarget() - 1; break; case '<=': $maxDepth = $comparator->getTarget(); break; default: $minDepth = $maxDepth = $comparator->getTarget(); } } $flags = \RecursiveDirectoryIterator::SKIP_DOTS; if ($this->followLinks) { $flags |= \RecursiveDirectoryIterator::FOLLOW_SYMLINKS; } $iterator = new Iterator\RecursiveDirectoryIterator($dir, $flags, $this->ignoreUnreadableDirs); if ($exclude) { $iterator = new Iterator\ExcludeDirectoryFilterIterator($iterator, $exclude); } $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST); if ($minDepth > 0 || $maxDepth < \PHP_INT_MAX) { $iterator = new Iterator\DepthRangeFilterIterator($iterator, $minDepth, $maxDepth); } if ($this->mode) { $iterator = new Iterator\FileTypeFilterIterator($iterator, $this->mode); } if ($this->names || $this->notNames) { $iterator = new Iterator\FilenameFilterIterator($iterator, $this->names, $this->notNames); } if ($this->contains || $this->notContains) { $iterator = new Iterator\FilecontentFilterIterator($iterator, $this->contains, $this->notContains); } if ($this->sizes) { $iterator = new Iterator\SizeRangeFilterIterator($iterator, $this->sizes); } if ($this->dates) { $iterator = new Iterator\DateRangeFilterIterator($iterator, $this->dates); } if ($this->filters) { $iterator = new Iterator\CustomFilterIterator($iterator, $this->filters); } if ($this->paths || $notPaths) { $iterator = new Iterator\PathFilterIterator($iterator, $this->paths, $notPaths); } if (static::IGNORE_VCS_IGNORED_FILES === (static::IGNORE_VCS_IGNORED_FILES & $this->ignore)) { $iterator = new Iterator\VcsIgnoredFilterIterator($iterator, $dir); } return $iterator; } /** * Normalizes given directory names by removing trailing slashes. * * Excluding: (s)ftp:// or ssh2.(s)ftp:// wrapper */ private function normalizeDir(string $dir) : string { if ('/' === $dir) { return $dir; } $dir = \rtrim($dir, '/' . \DIRECTORY_SEPARATOR); if (\preg_match('#^(ssh2\\.)?s?ftp://#', $dir)) { $dir .= '/'; } return $dir; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Exception; /** * @author Jean-François Simon */ class AccessDeniedException extends \UnexpectedValueException { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Exception; /** * @author Andreas Erhard */ class DirectoryNotFoundException extends \InvalidArgumentException { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder; /** * Glob matches globbing patterns against text. * * if match_glob("foo.*", "foo.bar") echo "matched\n"; * * // prints foo.bar and foo.baz * $regex = glob_to_regex("foo.*"); * for (['foo.bar', 'foo.baz', 'foo', 'bar'] as $t) * { * if (/$regex/) echo "matched: $car\n"; * } * * Glob implements glob(3) style matching that can be used to match * against text, rather than fetching names from a filesystem. * * Based on the Perl Text::Glob module. * * @author Fabien Potencier PHP port * @author Richard Clamp Perl version * @copyright 2004-2005 Fabien Potencier * @copyright 2002 Richard Clamp */ class Glob { /** * Returns a regexp which is the equivalent of the glob pattern. * * @return string */ public static function toRegex(string $glob, bool $strictLeadingDot = \true, bool $strictWildcardSlash = \true, string $delimiter = '#') { $firstByte = \true; $escaping = \false; $inCurlies = 0; $regex = ''; $sizeGlob = \strlen($glob); for ($i = 0; $i < $sizeGlob; ++$i) { $car = $glob[$i]; if ($firstByte && $strictLeadingDot && '.' !== $car) { $regex .= '(?=[^\\.])'; } $firstByte = '/' === $car; if ($firstByte && $strictWildcardSlash && isset($glob[$i + 2]) && '**' === $glob[$i + 1] . $glob[$i + 2] && (!isset($glob[$i + 3]) || '/' === $glob[$i + 3])) { $car = '[^/]++/'; if (!isset($glob[$i + 3])) { $car .= '?'; } if ($strictLeadingDot) { $car = '(?=[^\\.])' . $car; } $car = '/(?:' . $car . ')*'; $i += 2 + isset($glob[$i + 3]); if ('/' === $delimiter) { $car = \str_replace('/', '\\/', $car); } } if ($delimiter === $car || '.' === $car || '(' === $car || ')' === $car || '|' === $car || '+' === $car || '^' === $car || '$' === $car) { $regex .= "\\{$car}"; } elseif ('*' === $car) { $regex .= $escaping ? '\\*' : ($strictWildcardSlash ? '[^/]*' : '.*'); } elseif ('?' === $car) { $regex .= $escaping ? '\\?' : ($strictWildcardSlash ? '[^/]' : '.'); } elseif ('{' === $car) { $regex .= $escaping ? '\\{' : '('; if (!$escaping) { ++$inCurlies; } } elseif ('}' === $car && $inCurlies) { $regex .= $escaping ? '}' : ')'; if (!$escaping) { --$inCurlies; } } elseif (',' === $car && $inCurlies) { $regex .= $escaping ? ',' : '|'; } elseif ('\\' === $car) { if ($escaping) { $regex .= '\\\\'; $escaping = \false; } else { $escaping = \true; } continue; } else { $regex .= $car; } $escaping = \false; } return $delimiter . '^' . $regex . '$' . $delimiter; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Comparator; /** * DateCompare compiles date comparisons. * * @author Fabien Potencier */ class DateComparator extends Comparator { /** * @param string $test A comparison string * * @throws \InvalidArgumentException If the test is not understood */ public function __construct(string $test) { if (!\preg_match('#^\\s*(==|!=|[<>]=?|after|since|before|until)?\\s*(.+?)\\s*$#i', $test, $matches)) { throw new \InvalidArgumentException(\sprintf('Don\'t understand "%s" as a date test.', $test)); } try { $date = new \DateTime($matches[2]); $target = $date->format('U'); } catch (\Exception $e) { throw new \InvalidArgumentException(\sprintf('"%s" is not a valid date.', $matches[2])); } $operator = $matches[1] ?? '=='; if ('since' === $operator || 'after' === $operator) { $operator = '>'; } if ('until' === $operator || 'before' === $operator) { $operator = '<'; } parent::__construct($target, $operator); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Comparator; /** * @author Fabien Potencier */ class Comparator { private $target; private $operator = '=='; public function __construct(?string $target = null, string $operator = '==') { if (null === $target) { trigger_deprecation('symfony/finder', '5.4', 'Constructing a "%s" without setting "$target" is deprecated.', __CLASS__); } $this->target = $target; $this->doSetOperator($operator); } /** * Gets the target value. * * @return string */ public function getTarget() { if (null === $this->target) { trigger_deprecation('symfony/finder', '5.4', 'Calling "%s" without initializing the target is deprecated.', __METHOD__); } return $this->target; } /** * @deprecated set the target via the constructor instead */ public function setTarget(string $target) { trigger_deprecation('symfony/finder', '5.4', '"%s" is deprecated. Set the target via the constructor instead.', __METHOD__); $this->target = $target; } /** * Gets the comparison operator. * * @return string */ public function getOperator() { return $this->operator; } /** * Sets the comparison operator. * * @throws \InvalidArgumentException * * @deprecated set the operator via the constructor instead */ public function setOperator(string $operator) { trigger_deprecation('symfony/finder', '5.4', '"%s" is deprecated. Set the operator via the constructor instead.', __METHOD__); $this->doSetOperator('' === $operator ? '==' : $operator); } /** * Tests against the target. * * @param mixed $test A test value * * @return bool */ public function test($test) { if (null === $this->target) { trigger_deprecation('symfony/finder', '5.4', 'Calling "%s" without initializing the target is deprecated.', __METHOD__); } switch ($this->operator) { case '>': return $test > $this->target; case '>=': return $test >= $this->target; case '<': return $test < $this->target; case '<=': return $test <= $this->target; case '!=': return $test != $this->target; } return $test == $this->target; } private function doSetOperator(string $operator) : void { if (!\in_array($operator, ['>', '<', '>=', '<=', '==', '!='])) { throw new \InvalidArgumentException(\sprintf('Invalid operator "%s".', $operator)); } $this->operator = $operator; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Comparator; /** * NumberComparator compiles a simple comparison to an anonymous * subroutine, which you can call with a value to be tested again. * * Now this would be very pointless, if NumberCompare didn't understand * magnitudes. * * The target value may use magnitudes of kilobytes (k, ki), * megabytes (m, mi), or gigabytes (g, gi). Those suffixed * with an i use the appropriate 2**n version in accordance with the * IEC standard: http://physics.nist.gov/cuu/Units/binary.html * * Based on the Perl Number::Compare module. * * @author Fabien Potencier PHP port * @author Richard Clamp Perl version * @copyright 2004-2005 Fabien Potencier * @copyright 2002 Richard Clamp * * @see http://physics.nist.gov/cuu/Units/binary.html */ class NumberComparator extends Comparator { /** * @param string|null $test A comparison string or null * * @throws \InvalidArgumentException If the test is not understood */ public function __construct(?string $test) { if (null === $test || !\preg_match('#^\\s*(==|!=|[<>]=?)?\\s*([0-9\\.]+)\\s*([kmg]i?)?\\s*$#i', $test, $matches)) { throw new \InvalidArgumentException(\sprintf('Don\'t understand "%s" as a number test.', $test ?? 'null')); } $target = $matches[2]; if (!\is_numeric($target)) { throw new \InvalidArgumentException(\sprintf('Invalid number "%s".', $target)); } if (isset($matches[3])) { // magnitude switch (\strtolower($matches[3])) { case 'k': $target *= 1000; break; case 'ki': $target *= 1024; break; case 'm': $target *= 1000000; break; case 'mi': $target *= 1024 * 1024; break; case 'g': $target *= 1000000000; break; case 'gi': $target *= 1024 * 1024 * 1024; break; } } parent::__construct($target, $matches[1] ?: '=='); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; /** * @author Jérémy Derussé * * @internal */ class LazyIterator implements \IteratorAggregate { private $iteratorFactory; public function __construct(callable $iteratorFactory) { $this->iteratorFactory = $iteratorFactory; } public function getIterator() : \Traversable { yield from ($this->iteratorFactory)(); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Comparator\DateComparator; /** * DateRangeFilterIterator filters out files that are not in the given date range (last modified dates). * * @author Fabien Potencier * * @extends \FilterIterator */ class DateRangeFilterIterator extends \FilterIterator { private $comparators = []; /** * @param \Iterator $iterator * @param DateComparator[] $comparators */ public function __construct(\Iterator $iterator, array $comparators) { $this->comparators = $comparators; parent::__construct($iterator); } /** * Filters the iterator values. * * @return bool */ #[\ReturnTypeWillChange] public function accept() { $fileinfo = $this->current(); if (!\file_exists($fileinfo->getPathname())) { return \false; } $filedate = $fileinfo->getMTime(); foreach ($this->comparators as $compare) { if (!$compare->test($filedate)) { return \false; } } return \true; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; /** * FilecontentFilterIterator filters files by their contents using patterns (regexps or strings). * * @author Fabien Potencier * @author Włodzimierz Gajda * * @extends MultiplePcreFilterIterator */ class FilecontentFilterIterator extends MultiplePcreFilterIterator { /** * Filters the iterator values. * * @return bool */ #[\ReturnTypeWillChange] public function accept() { if (!$this->matchRegexps && !$this->noMatchRegexps) { return \true; } $fileinfo = $this->current(); if ($fileinfo->isDir() || !$fileinfo->isReadable()) { return \false; } $content = $fileinfo->getContents(); if (!$content) { return \false; } return $this->isAccepted($content); } /** * Converts string to regexp if necessary. * * @param string $str Pattern: string or regexp * * @return string */ protected function toRegex(string $str) { return $this->isRegex($str) ? $str : '/' . \preg_quote($str, '/') . '/'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; /** * SortableIterator applies a sort on a given Iterator. * * @author Fabien Potencier * * @implements \IteratorAggregate */ class SortableIterator implements \IteratorAggregate { public const SORT_BY_NONE = 0; public const SORT_BY_NAME = 1; public const SORT_BY_TYPE = 2; public const SORT_BY_ACCESSED_TIME = 3; public const SORT_BY_CHANGED_TIME = 4; public const SORT_BY_MODIFIED_TIME = 5; public const SORT_BY_NAME_NATURAL = 6; private $iterator; private $sort; /** * @param \Traversable $iterator * @param int|callable $sort The sort type (SORT_BY_NAME, SORT_BY_TYPE, or a PHP callback) * * @throws \InvalidArgumentException */ public function __construct(\Traversable $iterator, $sort, bool $reverseOrder = \false) { $this->iterator = $iterator; $order = $reverseOrder ? -1 : 1; if (self::SORT_BY_NAME === $sort) { $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use($order) { return $order * \strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); }; } elseif (self::SORT_BY_NAME_NATURAL === $sort) { $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use($order) { return $order * \strnatcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); }; } elseif (self::SORT_BY_TYPE === $sort) { $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use($order) { if ($a->isDir() && $b->isFile()) { return -$order; } elseif ($a->isFile() && $b->isDir()) { return $order; } return $order * \strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); }; } elseif (self::SORT_BY_ACCESSED_TIME === $sort) { $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use($order) { return $order * ($a->getATime() - $b->getATime()); }; } elseif (self::SORT_BY_CHANGED_TIME === $sort) { $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use($order) { return $order * ($a->getCTime() - $b->getCTime()); }; } elseif (self::SORT_BY_MODIFIED_TIME === $sort) { $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use($order) { return $order * ($a->getMTime() - $b->getMTime()); }; } elseif (self::SORT_BY_NONE === $sort) { $this->sort = $order; } elseif (\is_callable($sort)) { $this->sort = $reverseOrder ? static function (\SplFileInfo $a, \SplFileInfo $b) use($sort) { return -$sort($a, $b); } : $sort; } else { throw new \InvalidArgumentException('The SortableIterator takes a PHP callable or a valid built-in sort algorithm as an argument.'); } } /** * @return \Traversable */ #[\ReturnTypeWillChange] public function getIterator() { if (1 === $this->sort) { return $this->iterator; } $array = \iterator_to_array($this->iterator, \true); if (-1 === $this->sort) { $array = \array_reverse($array); } else { \uasort($array, $this->sort); } return new \ArrayIterator($array); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Comparator\NumberComparator; /** * SizeRangeFilterIterator filters out files that are not in the given size range. * * @author Fabien Potencier * * @extends \FilterIterator */ class SizeRangeFilterIterator extends \FilterIterator { private $comparators = []; /** * @param \Iterator $iterator * @param NumberComparator[] $comparators */ public function __construct(\Iterator $iterator, array $comparators) { $this->comparators = $comparators; parent::__construct($iterator); } /** * Filters the iterator values. * * @return bool */ #[\ReturnTypeWillChange] public function accept() { $fileinfo = $this->current(); if (!$fileinfo->isFile()) { return \true; } $filesize = $fileinfo->getSize(); foreach ($this->comparators as $compare) { if (!$compare->test($filesize)) { return \false; } } return \true; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; /** * PathFilterIterator filters files by path patterns (e.g. some/special/dir). * * @author Fabien Potencier * @author Włodzimierz Gajda * * @extends MultiplePcreFilterIterator */ class PathFilterIterator extends MultiplePcreFilterIterator { /** * Filters the iterator values. * * @return bool */ #[\ReturnTypeWillChange] public function accept() { $filename = $this->current()->getRelativePathname(); if ('\\' === \DIRECTORY_SEPARATOR) { $filename = \str_replace('\\', '/', $filename); } return $this->isAccepted($filename); } /** * Converts strings to regexp. * * PCRE patterns are left unchanged. * * Default conversion: * 'lorem/ipsum/dolor' ==> 'lorem\/ipsum\/dolor/' * * Use only / as directory separator (on Windows also). * * @param string $str Pattern: regexp or dirname * * @return string */ protected function toRegex(string $str) { return $this->isRegex($str) ? $str : '/' . \preg_quote($str, '/') . '/'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Glob; /** * FilenameFilterIterator filters files by patterns (a regexp, a glob, or a string). * * @author Fabien Potencier * * @extends MultiplePcreFilterIterator */ class FilenameFilterIterator extends MultiplePcreFilterIterator { /** * Filters the iterator values. * * @return bool */ #[\ReturnTypeWillChange] public function accept() { return $this->isAccepted($this->current()->getFilename()); } /** * Converts glob to regexp. * * PCRE patterns are left unchanged. * Glob strings are transformed with Glob::toRegex(). * * @param string $str Pattern: glob or regexp * * @return string */ protected function toRegex(string $str) { return $this->isRegex($str) ? $str : Glob::toRegex($str); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; /** * DepthRangeFilterIterator limits the directory depth. * * @author Fabien Potencier * * @template-covariant TKey * @template-covariant TValue * * @extends \FilterIterator */ class DepthRangeFilterIterator extends \FilterIterator { private $minDepth = 0; /** * @param \RecursiveIteratorIterator<\RecursiveIterator> $iterator The Iterator to filter * @param int $minDepth The min depth * @param int $maxDepth The max depth */ public function __construct(\RecursiveIteratorIterator $iterator, int $minDepth = 0, int $maxDepth = \PHP_INT_MAX) { $this->minDepth = $minDepth; $iterator->setMaxDepth(\PHP_INT_MAX === $maxDepth ? -1 : $maxDepth); parent::__construct($iterator); } /** * Filters the iterator values. * * @return bool */ #[\ReturnTypeWillChange] public function accept() { return $this->getInnerIterator()->getDepth() >= $this->minDepth; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Exception\AccessDeniedException; use _PHPStan_b22655c3f\Symfony\Component\Finder\SplFileInfo; /** * Extends the \RecursiveDirectoryIterator to support relative paths. * * @author Victor Berchet */ class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator { /** * @var bool */ private $ignoreUnreadableDirs; /** * @var bool */ private $ignoreFirstRewind = \true; // these 3 properties take part of the performance optimization to avoid redoing the same work in all iterations private $rootPath; private $subPath; private $directorySeparator = '/'; /** * @throws \RuntimeException */ public function __construct(string $path, int $flags, bool $ignoreUnreadableDirs = \false) { if ($flags & (self::CURRENT_AS_PATHNAME | self::CURRENT_AS_SELF)) { throw new \RuntimeException('This iterator only support returning current as fileinfo.'); } parent::__construct($path, $flags); $this->ignoreUnreadableDirs = $ignoreUnreadableDirs; $this->rootPath = $path; if ('/' !== \DIRECTORY_SEPARATOR && !($flags & self::UNIX_PATHS)) { $this->directorySeparator = \DIRECTORY_SEPARATOR; } } /** * Return an instance of SplFileInfo with support for relative paths. * * @return SplFileInfo */ #[\ReturnTypeWillChange] public function current() { // the logic here avoids redoing the same work in all iterations if (null === ($subPathname = $this->subPath)) { $subPathname = $this->subPath = $this->getSubPath(); } if ('' !== $subPathname) { $subPathname .= $this->directorySeparator; } $subPathname .= $this->getFilename(); if ('/' !== ($basePath = $this->rootPath)) { $basePath .= $this->directorySeparator; } return new SplFileInfo($basePath . $subPathname, $this->subPath, $subPathname); } /** * @param bool $allowLinks * * @return bool */ #[\ReturnTypeWillChange] public function hasChildren($allowLinks = \false) { $hasChildren = parent::hasChildren($allowLinks); if (!$hasChildren || !$this->ignoreUnreadableDirs) { return $hasChildren; } try { parent::getChildren(); return \true; } catch (\UnexpectedValueException $e) { // If directory is unreadable and finder is set to ignore it, skip children return \false; } } /** * @return \RecursiveDirectoryIterator * * @throws AccessDeniedException */ #[\ReturnTypeWillChange] public function getChildren() { try { $children = parent::getChildren(); if ($children instanceof self) { // parent method will call the constructor with default arguments, so unreadable dirs won't be ignored anymore $children->ignoreUnreadableDirs = $this->ignoreUnreadableDirs; // performance optimization to avoid redoing the same work in all children $children->rootPath = $this->rootPath; } return $children; } catch (\UnexpectedValueException $e) { throw new AccessDeniedException($e->getMessage(), $e->getCode(), $e); } } /** * @return void */ #[\ReturnTypeWillChange] public function next() { $this->ignoreFirstRewind = \false; parent::next(); } /** * @return void */ #[\ReturnTypeWillChange] public function rewind() { // some streams like FTP are not rewindable, ignore the first rewind after creation, // as newly created DirectoryIterator does not need to be rewound if ($this->ignoreFirstRewind) { $this->ignoreFirstRewind = \false; return; } parent::rewind(); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; /** * CustomFilterIterator filters files by applying anonymous functions. * * The anonymous function receives a \SplFileInfo and must return false * to remove files. * * @author Fabien Potencier * * @extends \FilterIterator */ class CustomFilterIterator extends \FilterIterator { private $filters = []; /** * @param \Iterator $iterator The Iterator to filter * @param callable[] $filters An array of PHP callbacks * * @throws \InvalidArgumentException */ public function __construct(\Iterator $iterator, array $filters) { foreach ($filters as $filter) { if (!\is_callable($filter)) { throw new \InvalidArgumentException('Invalid PHP callback.'); } } $this->filters = $filters; parent::__construct($iterator); } /** * Filters the iterator values. * * @return bool */ #[\ReturnTypeWillChange] public function accept() { $fileinfo = $this->current(); foreach ($this->filters as $filter) { if (\false === $filter($fileinfo)) { return \false; } } return \true; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; /** * ExcludeDirectoryFilterIterator filters out directories. * * @author Fabien Potencier * * @extends \FilterIterator * * @implements \RecursiveIterator */ class ExcludeDirectoryFilterIterator extends \FilterIterator implements \RecursiveIterator { private $iterator; private $isRecursive; private $excludedDirs = []; private $excludedPattern; /** * @param \Iterator $iterator The Iterator to filter * @param string[] $directories An array of directories to exclude */ public function __construct(\Iterator $iterator, array $directories) { $this->iterator = $iterator; $this->isRecursive = $iterator instanceof \RecursiveIterator; $patterns = []; foreach ($directories as $directory) { $directory = \rtrim($directory, '/'); if (!$this->isRecursive || \str_contains($directory, '/')) { $patterns[] = \preg_quote($directory, '#'); } else { $this->excludedDirs[$directory] = \true; } } if ($patterns) { $this->excludedPattern = '#(?:^|/)(?:' . \implode('|', $patterns) . ')(?:/|$)#'; } parent::__construct($iterator); } /** * Filters the iterator values. * * @return bool */ #[\ReturnTypeWillChange] public function accept() { if ($this->isRecursive && isset($this->excludedDirs[$this->getFilename()]) && $this->isDir()) { return \false; } if ($this->excludedPattern) { $path = $this->isDir() ? $this->current()->getRelativePathname() : $this->current()->getRelativePath(); $path = \str_replace('\\', '/', $path); return !\preg_match($this->excludedPattern, $path); } return \true; } /** * @return bool */ #[\ReturnTypeWillChange] public function hasChildren() { return $this->isRecursive && $this->iterator->hasChildren(); } /** * @return self */ #[\ReturnTypeWillChange] public function getChildren() { $children = new self($this->iterator->getChildren(), []); $children->excludedDirs = $this->excludedDirs; $children->excludedPattern = $this->excludedPattern; return $children; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; use _PHPStan_b22655c3f\Symfony\Component\Finder\Gitignore; final class VcsIgnoredFilterIterator extends \FilterIterator { /** * @var string */ private $baseDir; /** * @var array */ private $gitignoreFilesCache = []; /** * @var array */ private $ignoredPathsCache = []; public function __construct(\Iterator $iterator, string $baseDir) { $this->baseDir = $this->normalizePath($baseDir); parent::__construct($iterator); } public function accept() : bool { $file = $this->current(); $fileRealPath = $this->normalizePath($file->getRealPath()); return !$this->isIgnored($fileRealPath); } private function isIgnored(string $fileRealPath) : bool { if (\is_dir($fileRealPath) && !\str_ends_with($fileRealPath, '/')) { $fileRealPath .= '/'; } if (isset($this->ignoredPathsCache[$fileRealPath])) { return $this->ignoredPathsCache[$fileRealPath]; } $ignored = \false; foreach ($this->parentsDirectoryDownward($fileRealPath) as $parentDirectory) { if ($this->isIgnored($parentDirectory)) { // rules in ignored directories are ignored, no need to check further. break; } $fileRelativePath = \substr($fileRealPath, \strlen($parentDirectory) + 1); if (null === ($regexps = $this->readGitignoreFile("{$parentDirectory}/.gitignore"))) { continue; } [$exclusionRegex, $inclusionRegex] = $regexps; if (\preg_match($exclusionRegex, $fileRelativePath)) { $ignored = \true; continue; } if (\preg_match($inclusionRegex, $fileRelativePath)) { $ignored = \false; } } return $this->ignoredPathsCache[$fileRealPath] = $ignored; } /** * @return list */ private function parentsDirectoryDownward(string $fileRealPath) : array { $parentDirectories = []; $parentDirectory = $fileRealPath; while (\true) { $newParentDirectory = \dirname($parentDirectory); // dirname('/') = '/' if ($newParentDirectory === $parentDirectory) { break; } $parentDirectory = $newParentDirectory; if (0 !== \strpos($parentDirectory, $this->baseDir)) { break; } $parentDirectories[] = $parentDirectory; } return \array_reverse($parentDirectories); } /** * @return array{0: string, 1: string}|null */ private function readGitignoreFile(string $path) : ?array { if (\array_key_exists($path, $this->gitignoreFilesCache)) { return $this->gitignoreFilesCache[$path]; } if (!\file_exists($path)) { return $this->gitignoreFilesCache[$path] = null; } if (!\is_file($path) || !\is_readable($path)) { throw new \RuntimeException("The \"ignoreVCSIgnored\" option cannot be used by the Finder as the \"{$path}\" file is not readable."); } $gitignoreFileContent = \file_get_contents($path); return $this->gitignoreFilesCache[$path] = [Gitignore::toRegex($gitignoreFileContent), Gitignore::toRegexMatchingNegatedPatterns($gitignoreFileContent)]; } private function normalizePath(string $path) : string { if ('\\' === \DIRECTORY_SEPARATOR) { return \str_replace('\\', '/', $path); } return $path; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; /** * FileTypeFilterIterator only keeps files, directories, or both. * * @author Fabien Potencier * * @extends \FilterIterator */ class FileTypeFilterIterator extends \FilterIterator { public const ONLY_FILES = 1; public const ONLY_DIRECTORIES = 2; private $mode; /** * @param \Iterator $iterator The Iterator to filter * @param int $mode The mode (self::ONLY_FILES or self::ONLY_DIRECTORIES) */ public function __construct(\Iterator $iterator, int $mode) { $this->mode = $mode; parent::__construct($iterator); } /** * Filters the iterator values. * * @return bool */ #[\ReturnTypeWillChange] public function accept() { $fileinfo = $this->current(); if (self::ONLY_DIRECTORIES === (self::ONLY_DIRECTORIES & $this->mode) && $fileinfo->isFile()) { return \false; } elseif (self::ONLY_FILES === (self::ONLY_FILES & $this->mode) && $fileinfo->isDir()) { return \false; } return \true; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Component\Finder\Iterator; /** * MultiplePcreFilterIterator filters files using patterns (regexps, globs or strings). * * @author Fabien Potencier * * @template-covariant TKey * @template-covariant TValue * * @extends \FilterIterator */ abstract class MultiplePcreFilterIterator extends \FilterIterator { protected $matchRegexps = []; protected $noMatchRegexps = []; /** * @param \Iterator $iterator The Iterator to filter * @param string[] $matchPatterns An array of patterns that need to match * @param string[] $noMatchPatterns An array of patterns that need to not match */ public function __construct(\Iterator $iterator, array $matchPatterns, array $noMatchPatterns) { foreach ($matchPatterns as $pattern) { $this->matchRegexps[] = $this->toRegex($pattern); } foreach ($noMatchPatterns as $pattern) { $this->noMatchRegexps[] = $this->toRegex($pattern); } parent::__construct($iterator); } /** * Checks whether the string is accepted by the regex filters. * * If there is no regexps defined in the class, this method will accept the string. * Such case can be handled by child classes before calling the method if they want to * apply a different behavior. * * @return bool */ protected function isAccepted(string $string) { // should at least not match one rule to exclude foreach ($this->noMatchRegexps as $regex) { if (\preg_match($regex, $string)) { return \false; } } // should at least match one rule if ($this->matchRegexps) { foreach ($this->matchRegexps as $regex) { if (\preg_match($regex, $string)) { return \true; } } return \false; } // If there is no match rules, the file is accepted return \true; } /** * Checks whether the string is a regex. * * @return bool */ protected function isRegex(string $str) { $availableModifiers = 'imsxuADU'; if (\PHP_VERSION_ID >= 80200) { $availableModifiers .= 'n'; } if (\preg_match('/^(.{3,}?)[' . $availableModifiers . ']*$/', $str, $m)) { $start = \substr($m[1], 0, 1); $end = \substr($m[1], -1); if ($start === $end) { return !\preg_match('/[*?[:alnum:] \\\\]/', $start); } foreach ([['{', '}'], ['(', ')'], ['[', ']'], ['<', '>']] as $delimiters) { if ($start === $delimiters[0] && $end === $delimiters[1]) { return \true; } } } return \false; } /** * Converts string into regexp. * * @return string */ protected abstract function toRegex(string $str); } Copyright (c) 2020-present Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ if (!\function_exists('_PHPStan_b22655c3f\\trigger_deprecation')) { /** * Triggers a silenced deprecation notice. * * @param string $package The name of the Composer package that is triggering the deprecation * @param string $version The version of the package that introduced the deprecation * @param string $message The message of the deprecation * @param mixed ...$args Values to insert in the message using printf() formatting * * @author Nicolas Grekas */ function trigger_deprecation(string $package, string $version, string $message, mixed ...$args) : void { @\trigger_error(($package || $version ? "Since {$package} {$version}: " : '') . ($args ? \vsprintf($message, $args) : $message), \E_USER_DEPRECATED); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Intl\Normalizer; /** * Normalizer is a PHP fallback implementation of the Normalizer class provided by the intl extension. * * It has been validated with Unicode 6.3 Normalization Conformance Test. * See http://www.unicode.org/reports/tr15/ for detailed info about Unicode normalizations. * * @author Nicolas Grekas * * @internal */ class Normalizer { public const FORM_D = \Normalizer::FORM_D; public const FORM_KD = \Normalizer::FORM_KD; public const FORM_C = \Normalizer::FORM_C; public const FORM_KC = \Normalizer::FORM_KC; public const NFD = \Normalizer::NFD; public const NFKD = \Normalizer::NFKD; public const NFC = \Normalizer::NFC; public const NFKC = \Normalizer::NFKC; private static $C; private static $D; private static $KD; private static $cC; private static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; private static $ASCII = "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"; public static function isNormalized(string $s, int $form = self::FORM_C) { if (!\in_array($form, [self::NFD, self::NFKD, self::NFC, self::NFKC])) { return false; } if (!isset($s[strspn($s, self::$ASCII)])) { return true; } if (self::NFC == $form && preg_match('//u', $s) && !preg_match('/[^\x00-\x{2FF}]/u', $s)) { return true; } return self::normalize($s, $form) === $s; } public static function normalize(string $s, int $form = self::FORM_C) { if (!preg_match('//u', $s)) { return false; } switch ($form) { case self::NFC: $C = true; $K = false; break; case self::NFD: $C = false; $K = false; break; case self::NFKC: $C = true; $K = true; break; case self::NFKD: $C = false; $K = true; break; default: if (\defined('Normalizer::NONE') && \Normalizer::NONE == $form) { return $s; } if (80000 > \PHP_VERSION_ID) { return false; } throw new \ValueError('normalizer_normalize(): Argument #2 ($form) must be a a valid normalization form'); } if ('' === $s) { return ''; } if ($K && null === self::$KD) { self::$KD = self::getData('compatibilityDecomposition'); } if (null === self::$D) { self::$D = self::getData('canonicalDecomposition'); self::$cC = self::getData('combiningClass'); } if (null !== $mbEncoding = (2 /* MB_OVERLOAD_STRING */ & (int) \ini_get('mbstring.func_overload')) ? mb_internal_encoding() : null) { mb_internal_encoding('8bit'); } $r = self::decompose($s, $K); if ($C) { if (null === self::$C) { self::$C = self::getData('canonicalComposition'); } $r = self::recompose($r); } if (null !== $mbEncoding) { mb_internal_encoding($mbEncoding); } return $r; } private static function recompose($s) { $ASCII = self::$ASCII; $compMap = self::$C; $combClass = self::$cC; $ulenMask = self::$ulenMask; $result = $tail = ''; $i = $s[0] < "\x80" ? 1 : $ulenMask[$s[0] & "\xF0"]; $len = \strlen($s); $lastUchr = substr($s, 0, $i); $lastUcls = isset($combClass[$lastUchr]) ? 256 : 0; while ($i < $len) { if ($s[$i] < "\x80") { // ASCII chars if ($tail) { $lastUchr .= $tail; $tail = ''; } if ($j = strspn($s, $ASCII, $i + 1)) { $lastUchr .= substr($s, $i, $j); $i += $j; } $result .= $lastUchr; $lastUchr = $s[$i]; $lastUcls = 0; ++$i; continue; } $ulen = $ulenMask[$s[$i] & "\xF0"]; $uchr = substr($s, $i, $ulen); if ($lastUchr < "\xE1\x84\x80" || "\xE1\x84\x92" < $lastUchr || $uchr < "\xE1\x85\xA1" || "\xE1\x85\xB5" < $uchr || $lastUcls) { // Table lookup and combining chars composition $ucls = $combClass[$uchr] ?? 0; if (isset($compMap[$lastUchr.$uchr]) && (!$lastUcls || $lastUcls < $ucls)) { $lastUchr = $compMap[$lastUchr.$uchr]; } elseif ($lastUcls = $ucls) { $tail .= $uchr; } else { if ($tail) { $lastUchr .= $tail; $tail = ''; } $result .= $lastUchr; $lastUchr = $uchr; } } else { // Hangul chars $L = \ord($lastUchr[2]) - 0x80; $V = \ord($uchr[2]) - 0xA1; $T = 0; $uchr = substr($s, $i + $ulen, 3); if ("\xE1\x86\xA7" <= $uchr && $uchr <= "\xE1\x87\x82") { $T = \ord($uchr[2]) - 0xA7; 0 > $T && $T += 0x40; $ulen += 3; } $L = 0xAC00 + ($L * 21 + $V) * 28 + $T; $lastUchr = \chr(0xE0 | $L >> 12).\chr(0x80 | $L >> 6 & 0x3F).\chr(0x80 | $L & 0x3F); } $i += $ulen; } return $result.$lastUchr.$tail; } private static function decompose($s, $c) { $result = ''; $ASCII = self::$ASCII; $decompMap = self::$D; $combClass = self::$cC; $ulenMask = self::$ulenMask; if ($c) { $compatMap = self::$KD; } $c = []; $i = 0; $len = \strlen($s); while ($i < $len) { if ($s[$i] < "\x80") { // ASCII chars if ($c) { ksort($c); $result .= implode('', $c); $c = []; } $j = 1 + strspn($s, $ASCII, $i + 1); $result .= substr($s, $i, $j); $i += $j; continue; } $ulen = $ulenMask[$s[$i] & "\xF0"]; $uchr = substr($s, $i, $ulen); $i += $ulen; if ($uchr < "\xEA\xB0\x80" || "\xED\x9E\xA3" < $uchr) { // Table lookup if ($uchr !== $j = $compatMap[$uchr] ?? ($decompMap[$uchr] ?? $uchr)) { $uchr = $j; $j = \strlen($uchr); $ulen = $uchr[0] < "\x80" ? 1 : $ulenMask[$uchr[0] & "\xF0"]; if ($ulen != $j) { // Put trailing chars in $s $j -= $ulen; $i -= $j; if (0 > $i) { $s = str_repeat(' ', -$i).$s; $len -= $i; $i = 0; } while ($j--) { $s[$i + $j] = $uchr[$ulen + $j]; } $uchr = substr($uchr, 0, $ulen); } } if (isset($combClass[$uchr])) { // Combining chars, for sorting if (!isset($c[$combClass[$uchr]])) { $c[$combClass[$uchr]] = ''; } $c[$combClass[$uchr]] .= $uchr; continue; } } else { // Hangul chars $uchr = unpack('C*', $uchr); $j = (($uchr[1] - 224) << 12) + (($uchr[2] - 128) << 6) + $uchr[3] - 0xAC80; $uchr = "\xE1\x84".\chr(0x80 + (int) ($j / 588)) ."\xE1\x85".\chr(0xA1 + (int) (($j % 588) / 28)); if ($j %= 28) { $uchr .= $j < 25 ? ("\xE1\x86".\chr(0xA7 + $j)) : ("\xE1\x87".\chr(0x67 + $j)); } } if ($c) { ksort($c); $result .= implode('', $c); $c = []; } $result .= $uchr; } if ($c) { ksort($c); $result .= implode('', $c); } return $result; } private static function getData($file) { if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) { return require $file; } return false; } } Copyright (c) 2015-present Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Intl\Normalizer as p; if (\PHP_VERSION_ID >= 80000) { return require __DIR__.'/bootstrap80.php'; } if (!function_exists('normalizer_is_normalized')) { function normalizer_is_normalized($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::isNormalized($string, $form); } } if (!function_exists('normalizer_normalize')) { function normalizer_normalize($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::normalize($string, $form); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Intl\Normalizer as p; if (!function_exists('normalizer_is_normalized')) { function normalizer_is_normalized(?string $string, ?int $form = p\Normalizer::FORM_C): bool { return p\Normalizer::isNormalized((string) $string, (int) $form); } } if (!function_exists('normalizer_normalize')) { function normalizer_normalize(?string $string, ?int $form = p\Normalizer::FORM_C): string|false { return p\Normalizer::normalize((string) $string, (int) $form); } } 'À', 'Á' => 'Á', 'Â' => 'Â', 'Ã' => 'Ã', 'Ä' => 'Ä', 'Å' => 'Å', 'Ç' => 'Ç', 'È' => 'È', 'É' => 'É', 'Ê' => 'Ê', 'Ë' => 'Ë', 'Ì' => 'Ì', 'Í' => 'Í', 'Î' => 'Î', 'Ï' => 'Ï', 'Ñ' => 'Ñ', 'Ò' => 'Ò', 'Ó' => 'Ó', 'Ô' => 'Ô', 'Õ' => 'Õ', 'Ö' => 'Ö', 'Ù' => 'Ù', 'Ú' => 'Ú', 'Û' => 'Û', 'Ü' => 'Ü', 'Ý' => 'Ý', 'à' => 'à', 'á' => 'á', 'â' => 'â', 'ã' => 'ã', 'ä' => 'ä', 'å' => 'å', 'ç' => 'ç', 'è' => 'è', 'é' => 'é', 'ê' => 'ê', 'ë' => 'ë', 'ì' => 'ì', 'í' => 'í', 'î' => 'î', 'ï' => 'ï', 'ñ' => 'ñ', 'ò' => 'ò', 'ó' => 'ó', 'ô' => 'ô', 'õ' => 'õ', 'ö' => 'ö', 'ù' => 'ù', 'ú' => 'ú', 'û' => 'û', 'ü' => 'ü', 'ý' => 'ý', 'ÿ' => 'ÿ', 'Ā' => 'Ā', 'ā' => 'ā', 'Ă' => 'Ă', 'ă' => 'ă', 'Ą' => 'Ą', 'ą' => 'ą', 'Ć' => 'Ć', 'ć' => 'ć', 'Ĉ' => 'Ĉ', 'ĉ' => 'ĉ', 'Ċ' => 'Ċ', 'ċ' => 'ċ', 'Č' => 'Č', 'č' => 'č', 'Ď' => 'Ď', 'ď' => 'ď', 'Ē' => 'Ē', 'ē' => 'ē', 'Ĕ' => 'Ĕ', 'ĕ' => 'ĕ', 'Ė' => 'Ė', 'ė' => 'ė', 'Ę' => 'Ę', 'ę' => 'ę', 'Ě' => 'Ě', 'ě' => 'ě', 'Ĝ' => 'Ĝ', 'ĝ' => 'ĝ', 'Ğ' => 'Ğ', 'ğ' => 'ğ', 'Ġ' => 'Ġ', 'ġ' => 'ġ', 'Ģ' => 'Ģ', 'ģ' => 'ģ', 'Ĥ' => 'Ĥ', 'ĥ' => 'ĥ', 'Ĩ' => 'Ĩ', 'ĩ' => 'ĩ', 'Ī' => 'Ī', 'ī' => 'ī', 'Ĭ' => 'Ĭ', 'ĭ' => 'ĭ', 'Į' => 'Į', 'į' => 'į', 'İ' => 'İ', 'Ĵ' => 'Ĵ', 'ĵ' => 'ĵ', 'Ķ' => 'Ķ', 'ķ' => 'ķ', 'Ĺ' => 'Ĺ', 'ĺ' => 'ĺ', 'Ļ' => 'Ļ', 'ļ' => 'ļ', 'Ľ' => 'Ľ', 'ľ' => 'ľ', 'Ń' => 'Ń', 'ń' => 'ń', 'Ņ' => 'Ņ', 'ņ' => 'ņ', 'Ň' => 'Ň', 'ň' => 'ň', 'Ō' => 'Ō', 'ō' => 'ō', 'Ŏ' => 'Ŏ', 'ŏ' => 'ŏ', 'Ő' => 'Ő', 'ő' => 'ő', 'Ŕ' => 'Ŕ', 'ŕ' => 'ŕ', 'Ŗ' => 'Ŗ', 'ŗ' => 'ŗ', 'Ř' => 'Ř', 'ř' => 'ř', 'Ś' => 'Ś', 'ś' => 'ś', 'Ŝ' => 'Ŝ', 'ŝ' => 'ŝ', 'Ş' => 'Ş', 'ş' => 'ş', 'Š' => 'Š', 'š' => 'š', 'Ţ' => 'Ţ', 'ţ' => 'ţ', 'Ť' => 'Ť', 'ť' => 'ť', 'Ũ' => 'Ũ', 'ũ' => 'ũ', 'Ū' => 'Ū', 'ū' => 'ū', 'Ŭ' => 'Ŭ', 'ŭ' => 'ŭ', 'Ů' => 'Ů', 'ů' => 'ů', 'Ű' => 'Ű', 'ű' => 'ű', 'Ų' => 'Ų', 'ų' => 'ų', 'Ŵ' => 'Ŵ', 'ŵ' => 'ŵ', 'Ŷ' => 'Ŷ', 'ŷ' => 'ŷ', 'Ÿ' => 'Ÿ', 'Ź' => 'Ź', 'ź' => 'ź', 'Ż' => 'Ż', 'ż' => 'ż', 'Ž' => 'Ž', 'ž' => 'ž', 'Ơ' => 'Ơ', 'ơ' => 'ơ', 'Ư' => 'Ư', 'ư' => 'ư', 'Ǎ' => 'Ǎ', 'ǎ' => 'ǎ', 'Ǐ' => 'Ǐ', 'ǐ' => 'ǐ', 'Ǒ' => 'Ǒ', 'ǒ' => 'ǒ', 'Ǔ' => 'Ǔ', 'ǔ' => 'ǔ', 'Ǖ' => 'Ǖ', 'ǖ' => 'ǖ', 'Ǘ' => 'Ǘ', 'ǘ' => 'ǘ', 'Ǚ' => 'Ǚ', 'ǚ' => 'ǚ', 'Ǜ' => 'Ǜ', 'ǜ' => 'ǜ', 'Ǟ' => 'Ǟ', 'ǟ' => 'ǟ', 'Ǡ' => 'Ǡ', 'ǡ' => 'ǡ', 'Ǣ' => 'Ǣ', 'ǣ' => 'ǣ', 'Ǧ' => 'Ǧ', 'ǧ' => 'ǧ', 'Ǩ' => 'Ǩ', 'ǩ' => 'ǩ', 'Ǫ' => 'Ǫ', 'ǫ' => 'ǫ', 'Ǭ' => 'Ǭ', 'ǭ' => 'ǭ', 'Ǯ' => 'Ǯ', 'ǯ' => 'ǯ', 'ǰ' => 'ǰ', 'Ǵ' => 'Ǵ', 'ǵ' => 'ǵ', 'Ǹ' => 'Ǹ', 'ǹ' => 'ǹ', 'Ǻ' => 'Ǻ', 'ǻ' => 'ǻ', 'Ǽ' => 'Ǽ', 'ǽ' => 'ǽ', 'Ǿ' => 'Ǿ', 'ǿ' => 'ǿ', 'Ȁ' => 'Ȁ', 'ȁ' => 'ȁ', 'Ȃ' => 'Ȃ', 'ȃ' => 'ȃ', 'Ȅ' => 'Ȅ', 'ȅ' => 'ȅ', 'Ȇ' => 'Ȇ', 'ȇ' => 'ȇ', 'Ȉ' => 'Ȉ', 'ȉ' => 'ȉ', 'Ȋ' => 'Ȋ', 'ȋ' => 'ȋ', 'Ȍ' => 'Ȍ', 'ȍ' => 'ȍ', 'Ȏ' => 'Ȏ', 'ȏ' => 'ȏ', 'Ȑ' => 'Ȑ', 'ȑ' => 'ȑ', 'Ȓ' => 'Ȓ', 'ȓ' => 'ȓ', 'Ȕ' => 'Ȕ', 'ȕ' => 'ȕ', 'Ȗ' => 'Ȗ', 'ȗ' => 'ȗ', 'Ș' => 'Ș', 'ș' => 'ș', 'Ț' => 'Ț', 'ț' => 'ț', 'Ȟ' => 'Ȟ', 'ȟ' => 'ȟ', 'Ȧ' => 'Ȧ', 'ȧ' => 'ȧ', 'Ȩ' => 'Ȩ', 'ȩ' => 'ȩ', 'Ȫ' => 'Ȫ', 'ȫ' => 'ȫ', 'Ȭ' => 'Ȭ', 'ȭ' => 'ȭ', 'Ȯ' => 'Ȯ', 'ȯ' => 'ȯ', 'Ȱ' => 'Ȱ', 'ȱ' => 'ȱ', 'Ȳ' => 'Ȳ', 'ȳ' => 'ȳ', '̀' => '̀', '́' => '́', '̓' => '̓', '̈́' => '̈́', 'ʹ' => 'ʹ', ';' => ';', '΅' => '΅', 'Ά' => 'Ά', '·' => '·', 'Έ' => 'Έ', 'Ή' => 'Ή', 'Ί' => 'Ί', 'Ό' => 'Ό', 'Ύ' => 'Ύ', 'Ώ' => 'Ώ', 'ΐ' => 'ΐ', 'Ϊ' => 'Ϊ', 'Ϋ' => 'Ϋ', 'ά' => 'ά', 'έ' => 'έ', 'ή' => 'ή', 'ί' => 'ί', 'ΰ' => 'ΰ', 'ϊ' => 'ϊ', 'ϋ' => 'ϋ', 'ό' => 'ό', 'ύ' => 'ύ', 'ώ' => 'ώ', 'ϓ' => 'ϓ', 'ϔ' => 'ϔ', 'Ѐ' => 'Ѐ', 'Ё' => 'Ё', 'Ѓ' => 'Ѓ', 'Ї' => 'Ї', 'Ќ' => 'Ќ', 'Ѝ' => 'Ѝ', 'Ў' => 'Ў', 'Й' => 'Й', 'й' => 'й', 'ѐ' => 'ѐ', 'ё' => 'ё', 'ѓ' => 'ѓ', 'ї' => 'ї', 'ќ' => 'ќ', 'ѝ' => 'ѝ', 'ў' => 'ў', 'Ѷ' => 'Ѷ', 'ѷ' => 'ѷ', 'Ӂ' => 'Ӂ', 'ӂ' => 'ӂ', 'Ӑ' => 'Ӑ', 'ӑ' => 'ӑ', 'Ӓ' => 'Ӓ', 'ӓ' => 'ӓ', 'Ӗ' => 'Ӗ', 'ӗ' => 'ӗ', 'Ӛ' => 'Ӛ', 'ӛ' => 'ӛ', 'Ӝ' => 'Ӝ', 'ӝ' => 'ӝ', 'Ӟ' => 'Ӟ', 'ӟ' => 'ӟ', 'Ӣ' => 'Ӣ', 'ӣ' => 'ӣ', 'Ӥ' => 'Ӥ', 'ӥ' => 'ӥ', 'Ӧ' => 'Ӧ', 'ӧ' => 'ӧ', 'Ӫ' => 'Ӫ', 'ӫ' => 'ӫ', 'Ӭ' => 'Ӭ', 'ӭ' => 'ӭ', 'Ӯ' => 'Ӯ', 'ӯ' => 'ӯ', 'Ӱ' => 'Ӱ', 'ӱ' => 'ӱ', 'Ӳ' => 'Ӳ', 'ӳ' => 'ӳ', 'Ӵ' => 'Ӵ', 'ӵ' => 'ӵ', 'Ӹ' => 'Ӹ', 'ӹ' => 'ӹ', 'آ' => 'آ', 'أ' => 'أ', 'ؤ' => 'ؤ', 'إ' => 'إ', 'ئ' => 'ئ', 'ۀ' => 'ۀ', 'ۂ' => 'ۂ', 'ۓ' => 'ۓ', 'ऩ' => 'ऩ', 'ऱ' => 'ऱ', 'ऴ' => 'ऴ', 'क़' => 'क़', 'ख़' => 'ख़', 'ग़' => 'ग़', 'ज़' => 'ज़', 'ड़' => 'ड़', 'ढ़' => 'ढ़', 'फ़' => 'फ़', 'य़' => 'य़', 'ো' => 'ো', 'ৌ' => 'ৌ', 'ড়' => 'ড়', 'ঢ়' => 'ঢ়', 'য়' => 'য়', 'ਲ਼' => 'ਲ਼', 'ਸ਼' => 'ਸ਼', 'ਖ਼' => 'ਖ਼', 'ਗ਼' => 'ਗ਼', 'ਜ਼' => 'ਜ਼', 'ਫ਼' => 'ਫ਼', 'ୈ' => 'ୈ', 'ୋ' => 'ୋ', 'ୌ' => 'ୌ', 'ଡ଼' => 'ଡ଼', 'ଢ଼' => 'ଢ଼', 'ஔ' => 'ஔ', 'ொ' => 'ொ', 'ோ' => 'ோ', 'ௌ' => 'ௌ', 'ై' => 'ై', 'ೀ' => 'ೀ', 'ೇ' => 'ೇ', 'ೈ' => 'ೈ', 'ೊ' => 'ೊ', 'ೋ' => 'ೋ', 'ൊ' => 'ൊ', 'ോ' => 'ോ', 'ൌ' => 'ൌ', 'ේ' => 'ේ', 'ො' => 'ො', 'ෝ' => 'ෝ', 'ෞ' => 'ෞ', 'གྷ' => 'གྷ', 'ཌྷ' => 'ཌྷ', 'དྷ' => 'དྷ', 'བྷ' => 'བྷ', 'ཛྷ' => 'ཛྷ', 'ཀྵ' => 'ཀྵ', 'ཱི' => 'ཱི', 'ཱུ' => 'ཱུ', 'ྲྀ' => 'ྲྀ', 'ླྀ' => 'ླྀ', 'ཱྀ' => 'ཱྀ', 'ྒྷ' => 'ྒྷ', 'ྜྷ' => 'ྜྷ', 'ྡྷ' => 'ྡྷ', 'ྦྷ' => 'ྦྷ', 'ྫྷ' => 'ྫྷ', 'ྐྵ' => 'ྐྵ', 'ဦ' => 'ဦ', 'ᬆ' => 'ᬆ', 'ᬈ' => 'ᬈ', 'ᬊ' => 'ᬊ', 'ᬌ' => 'ᬌ', 'ᬎ' => 'ᬎ', 'ᬒ' => 'ᬒ', 'ᬻ' => 'ᬻ', 'ᬽ' => 'ᬽ', 'ᭀ' => 'ᭀ', 'ᭁ' => 'ᭁ', 'ᭃ' => 'ᭃ', 'Ḁ' => 'Ḁ', 'ḁ' => 'ḁ', 'Ḃ' => 'Ḃ', 'ḃ' => 'ḃ', 'Ḅ' => 'Ḅ', 'ḅ' => 'ḅ', 'Ḇ' => 'Ḇ', 'ḇ' => 'ḇ', 'Ḉ' => 'Ḉ', 'ḉ' => 'ḉ', 'Ḋ' => 'Ḋ', 'ḋ' => 'ḋ', 'Ḍ' => 'Ḍ', 'ḍ' => 'ḍ', 'Ḏ' => 'Ḏ', 'ḏ' => 'ḏ', 'Ḑ' => 'Ḑ', 'ḑ' => 'ḑ', 'Ḓ' => 'Ḓ', 'ḓ' => 'ḓ', 'Ḕ' => 'Ḕ', 'ḕ' => 'ḕ', 'Ḗ' => 'Ḗ', 'ḗ' => 'ḗ', 'Ḙ' => 'Ḙ', 'ḙ' => 'ḙ', 'Ḛ' => 'Ḛ', 'ḛ' => 'ḛ', 'Ḝ' => 'Ḝ', 'ḝ' => 'ḝ', 'Ḟ' => 'Ḟ', 'ḟ' => 'ḟ', 'Ḡ' => 'Ḡ', 'ḡ' => 'ḡ', 'Ḣ' => 'Ḣ', 'ḣ' => 'ḣ', 'Ḥ' => 'Ḥ', 'ḥ' => 'ḥ', 'Ḧ' => 'Ḧ', 'ḧ' => 'ḧ', 'Ḩ' => 'Ḩ', 'ḩ' => 'ḩ', 'Ḫ' => 'Ḫ', 'ḫ' => 'ḫ', 'Ḭ' => 'Ḭ', 'ḭ' => 'ḭ', 'Ḯ' => 'Ḯ', 'ḯ' => 'ḯ', 'Ḱ' => 'Ḱ', 'ḱ' => 'ḱ', 'Ḳ' => 'Ḳ', 'ḳ' => 'ḳ', 'Ḵ' => 'Ḵ', 'ḵ' => 'ḵ', 'Ḷ' => 'Ḷ', 'ḷ' => 'ḷ', 'Ḹ' => 'Ḹ', 'ḹ' => 'ḹ', 'Ḻ' => 'Ḻ', 'ḻ' => 'ḻ', 'Ḽ' => 'Ḽ', 'ḽ' => 'ḽ', 'Ḿ' => 'Ḿ', 'ḿ' => 'ḿ', 'Ṁ' => 'Ṁ', 'ṁ' => 'ṁ', 'Ṃ' => 'Ṃ', 'ṃ' => 'ṃ', 'Ṅ' => 'Ṅ', 'ṅ' => 'ṅ', 'Ṇ' => 'Ṇ', 'ṇ' => 'ṇ', 'Ṉ' => 'Ṉ', 'ṉ' => 'ṉ', 'Ṋ' => 'Ṋ', 'ṋ' => 'ṋ', 'Ṍ' => 'Ṍ', 'ṍ' => 'ṍ', 'Ṏ' => 'Ṏ', 'ṏ' => 'ṏ', 'Ṑ' => 'Ṑ', 'ṑ' => 'ṑ', 'Ṓ' => 'Ṓ', 'ṓ' => 'ṓ', 'Ṕ' => 'Ṕ', 'ṕ' => 'ṕ', 'Ṗ' => 'Ṗ', 'ṗ' => 'ṗ', 'Ṙ' => 'Ṙ', 'ṙ' => 'ṙ', 'Ṛ' => 'Ṛ', 'ṛ' => 'ṛ', 'Ṝ' => 'Ṝ', 'ṝ' => 'ṝ', 'Ṟ' => 'Ṟ', 'ṟ' => 'ṟ', 'Ṡ' => 'Ṡ', 'ṡ' => 'ṡ', 'Ṣ' => 'Ṣ', 'ṣ' => 'ṣ', 'Ṥ' => 'Ṥ', 'ṥ' => 'ṥ', 'Ṧ' => 'Ṧ', 'ṧ' => 'ṧ', 'Ṩ' => 'Ṩ', 'ṩ' => 'ṩ', 'Ṫ' => 'Ṫ', 'ṫ' => 'ṫ', 'Ṭ' => 'Ṭ', 'ṭ' => 'ṭ', 'Ṯ' => 'Ṯ', 'ṯ' => 'ṯ', 'Ṱ' => 'Ṱ', 'ṱ' => 'ṱ', 'Ṳ' => 'Ṳ', 'ṳ' => 'ṳ', 'Ṵ' => 'Ṵ', 'ṵ' => 'ṵ', 'Ṷ' => 'Ṷ', 'ṷ' => 'ṷ', 'Ṹ' => 'Ṹ', 'ṹ' => 'ṹ', 'Ṻ' => 'Ṻ', 'ṻ' => 'ṻ', 'Ṽ' => 'Ṽ', 'ṽ' => 'ṽ', 'Ṿ' => 'Ṿ', 'ṿ' => 'ṿ', 'Ẁ' => 'Ẁ', 'ẁ' => 'ẁ', 'Ẃ' => 'Ẃ', 'ẃ' => 'ẃ', 'Ẅ' => 'Ẅ', 'ẅ' => 'ẅ', 'Ẇ' => 'Ẇ', 'ẇ' => 'ẇ', 'Ẉ' => 'Ẉ', 'ẉ' => 'ẉ', 'Ẋ' => 'Ẋ', 'ẋ' => 'ẋ', 'Ẍ' => 'Ẍ', 'ẍ' => 'ẍ', 'Ẏ' => 'Ẏ', 'ẏ' => 'ẏ', 'Ẑ' => 'Ẑ', 'ẑ' => 'ẑ', 'Ẓ' => 'Ẓ', 'ẓ' => 'ẓ', 'Ẕ' => 'Ẕ', 'ẕ' => 'ẕ', 'ẖ' => 'ẖ', 'ẗ' => 'ẗ', 'ẘ' => 'ẘ', 'ẙ' => 'ẙ', 'ẛ' => 'ẛ', 'Ạ' => 'Ạ', 'ạ' => 'ạ', 'Ả' => 'Ả', 'ả' => 'ả', 'Ấ' => 'Ấ', 'ấ' => 'ấ', 'Ầ' => 'Ầ', 'ầ' => 'ầ', 'Ẩ' => 'Ẩ', 'ẩ' => 'ẩ', 'Ẫ' => 'Ẫ', 'ẫ' => 'ẫ', 'Ậ' => 'Ậ', 'ậ' => 'ậ', 'Ắ' => 'Ắ', 'ắ' => 'ắ', 'Ằ' => 'Ằ', 'ằ' => 'ằ', 'Ẳ' => 'Ẳ', 'ẳ' => 'ẳ', 'Ẵ' => 'Ẵ', 'ẵ' => 'ẵ', 'Ặ' => 'Ặ', 'ặ' => 'ặ', 'Ẹ' => 'Ẹ', 'ẹ' => 'ẹ', 'Ẻ' => 'Ẻ', 'ẻ' => 'ẻ', 'Ẽ' => 'Ẽ', 'ẽ' => 'ẽ', 'Ế' => 'Ế', 'ế' => 'ế', 'Ề' => 'Ề', 'ề' => 'ề', 'Ể' => 'Ể', 'ể' => 'ể', 'Ễ' => 'Ễ', 'ễ' => 'ễ', 'Ệ' => 'Ệ', 'ệ' => 'ệ', 'Ỉ' => 'Ỉ', 'ỉ' => 'ỉ', 'Ị' => 'Ị', 'ị' => 'ị', 'Ọ' => 'Ọ', 'ọ' => 'ọ', 'Ỏ' => 'Ỏ', 'ỏ' => 'ỏ', 'Ố' => 'Ố', 'ố' => 'ố', 'Ồ' => 'Ồ', 'ồ' => 'ồ', 'Ổ' => 'Ổ', 'ổ' => 'ổ', 'Ỗ' => 'Ỗ', 'ỗ' => 'ỗ', 'Ộ' => 'Ộ', 'ộ' => 'ộ', 'Ớ' => 'Ớ', 'ớ' => 'ớ', 'Ờ' => 'Ờ', 'ờ' => 'ờ', 'Ở' => 'Ở', 'ở' => 'ở', 'Ỡ' => 'Ỡ', 'ỡ' => 'ỡ', 'Ợ' => 'Ợ', 'ợ' => 'ợ', 'Ụ' => 'Ụ', 'ụ' => 'ụ', 'Ủ' => 'Ủ', 'ủ' => 'ủ', 'Ứ' => 'Ứ', 'ứ' => 'ứ', 'Ừ' => 'Ừ', 'ừ' => 'ừ', 'Ử' => 'Ử', 'ử' => 'ử', 'Ữ' => 'Ữ', 'ữ' => 'ữ', 'Ự' => 'Ự', 'ự' => 'ự', 'Ỳ' => 'Ỳ', 'ỳ' => 'ỳ', 'Ỵ' => 'Ỵ', 'ỵ' => 'ỵ', 'Ỷ' => 'Ỷ', 'ỷ' => 'ỷ', 'Ỹ' => 'Ỹ', 'ỹ' => 'ỹ', 'ἀ' => 'ἀ', 'ἁ' => 'ἁ', 'ἂ' => 'ἂ', 'ἃ' => 'ἃ', 'ἄ' => 'ἄ', 'ἅ' => 'ἅ', 'ἆ' => 'ἆ', 'ἇ' => 'ἇ', 'Ἀ' => 'Ἀ', 'Ἁ' => 'Ἁ', 'Ἂ' => 'Ἂ', 'Ἃ' => 'Ἃ', 'Ἄ' => 'Ἄ', 'Ἅ' => 'Ἅ', 'Ἆ' => 'Ἆ', 'Ἇ' => 'Ἇ', 'ἐ' => 'ἐ', 'ἑ' => 'ἑ', 'ἒ' => 'ἒ', 'ἓ' => 'ἓ', 'ἔ' => 'ἔ', 'ἕ' => 'ἕ', 'Ἐ' => 'Ἐ', 'Ἑ' => 'Ἑ', 'Ἒ' => 'Ἒ', 'Ἓ' => 'Ἓ', 'Ἔ' => 'Ἔ', 'Ἕ' => 'Ἕ', 'ἠ' => 'ἠ', 'ἡ' => 'ἡ', 'ἢ' => 'ἢ', 'ἣ' => 'ἣ', 'ἤ' => 'ἤ', 'ἥ' => 'ἥ', 'ἦ' => 'ἦ', 'ἧ' => 'ἧ', 'Ἠ' => 'Ἠ', 'Ἡ' => 'Ἡ', 'Ἢ' => 'Ἢ', 'Ἣ' => 'Ἣ', 'Ἤ' => 'Ἤ', 'Ἥ' => 'Ἥ', 'Ἦ' => 'Ἦ', 'Ἧ' => 'Ἧ', 'ἰ' => 'ἰ', 'ἱ' => 'ἱ', 'ἲ' => 'ἲ', 'ἳ' => 'ἳ', 'ἴ' => 'ἴ', 'ἵ' => 'ἵ', 'ἶ' => 'ἶ', 'ἷ' => 'ἷ', 'Ἰ' => 'Ἰ', 'Ἱ' => 'Ἱ', 'Ἲ' => 'Ἲ', 'Ἳ' => 'Ἳ', 'Ἴ' => 'Ἴ', 'Ἵ' => 'Ἵ', 'Ἶ' => 'Ἶ', 'Ἷ' => 'Ἷ', 'ὀ' => 'ὀ', 'ὁ' => 'ὁ', 'ὂ' => 'ὂ', 'ὃ' => 'ὃ', 'ὄ' => 'ὄ', 'ὅ' => 'ὅ', 'Ὀ' => 'Ὀ', 'Ὁ' => 'Ὁ', 'Ὂ' => 'Ὂ', 'Ὃ' => 'Ὃ', 'Ὄ' => 'Ὄ', 'Ὅ' => 'Ὅ', 'ὐ' => 'ὐ', 'ὑ' => 'ὑ', 'ὒ' => 'ὒ', 'ὓ' => 'ὓ', 'ὔ' => 'ὔ', 'ὕ' => 'ὕ', 'ὖ' => 'ὖ', 'ὗ' => 'ὗ', 'Ὑ' => 'Ὑ', 'Ὓ' => 'Ὓ', 'Ὕ' => 'Ὕ', 'Ὗ' => 'Ὗ', 'ὠ' => 'ὠ', 'ὡ' => 'ὡ', 'ὢ' => 'ὢ', 'ὣ' => 'ὣ', 'ὤ' => 'ὤ', 'ὥ' => 'ὥ', 'ὦ' => 'ὦ', 'ὧ' => 'ὧ', 'Ὠ' => 'Ὠ', 'Ὡ' => 'Ὡ', 'Ὢ' => 'Ὢ', 'Ὣ' => 'Ὣ', 'Ὤ' => 'Ὤ', 'Ὥ' => 'Ὥ', 'Ὦ' => 'Ὦ', 'Ὧ' => 'Ὧ', 'ὰ' => 'ὰ', 'ά' => 'ά', 'ὲ' => 'ὲ', 'έ' => 'έ', 'ὴ' => 'ὴ', 'ή' => 'ή', 'ὶ' => 'ὶ', 'ί' => 'ί', 'ὸ' => 'ὸ', 'ό' => 'ό', 'ὺ' => 'ὺ', 'ύ' => 'ύ', 'ὼ' => 'ὼ', 'ώ' => 'ώ', 'ᾀ' => 'ᾀ', 'ᾁ' => 'ᾁ', 'ᾂ' => 'ᾂ', 'ᾃ' => 'ᾃ', 'ᾄ' => 'ᾄ', 'ᾅ' => 'ᾅ', 'ᾆ' => 'ᾆ', 'ᾇ' => 'ᾇ', 'ᾈ' => 'ᾈ', 'ᾉ' => 'ᾉ', 'ᾊ' => 'ᾊ', 'ᾋ' => 'ᾋ', 'ᾌ' => 'ᾌ', 'ᾍ' => 'ᾍ', 'ᾎ' => 'ᾎ', 'ᾏ' => 'ᾏ', 'ᾐ' => 'ᾐ', 'ᾑ' => 'ᾑ', 'ᾒ' => 'ᾒ', 'ᾓ' => 'ᾓ', 'ᾔ' => 'ᾔ', 'ᾕ' => 'ᾕ', 'ᾖ' => 'ᾖ', 'ᾗ' => 'ᾗ', 'ᾘ' => 'ᾘ', 'ᾙ' => 'ᾙ', 'ᾚ' => 'ᾚ', 'ᾛ' => 'ᾛ', 'ᾜ' => 'ᾜ', 'ᾝ' => 'ᾝ', 'ᾞ' => 'ᾞ', 'ᾟ' => 'ᾟ', 'ᾠ' => 'ᾠ', 'ᾡ' => 'ᾡ', 'ᾢ' => 'ᾢ', 'ᾣ' => 'ᾣ', 'ᾤ' => 'ᾤ', 'ᾥ' => 'ᾥ', 'ᾦ' => 'ᾦ', 'ᾧ' => 'ᾧ', 'ᾨ' => 'ᾨ', 'ᾩ' => 'ᾩ', 'ᾪ' => 'ᾪ', 'ᾫ' => 'ᾫ', 'ᾬ' => 'ᾬ', 'ᾭ' => 'ᾭ', 'ᾮ' => 'ᾮ', 'ᾯ' => 'ᾯ', 'ᾰ' => 'ᾰ', 'ᾱ' => 'ᾱ', 'ᾲ' => 'ᾲ', 'ᾳ' => 'ᾳ', 'ᾴ' => 'ᾴ', 'ᾶ' => 'ᾶ', 'ᾷ' => 'ᾷ', 'Ᾰ' => 'Ᾰ', 'Ᾱ' => 'Ᾱ', 'Ὰ' => 'Ὰ', 'Ά' => 'Ά', 'ᾼ' => 'ᾼ', 'ι' => 'ι', '῁' => '῁', 'ῂ' => 'ῂ', 'ῃ' => 'ῃ', 'ῄ' => 'ῄ', 'ῆ' => 'ῆ', 'ῇ' => 'ῇ', 'Ὲ' => 'Ὲ', 'Έ' => 'Έ', 'Ὴ' => 'Ὴ', 'Ή' => 'Ή', 'ῌ' => 'ῌ', '῍' => '῍', '῎' => '῎', '῏' => '῏', 'ῐ' => 'ῐ', 'ῑ' => 'ῑ', 'ῒ' => 'ῒ', 'ΐ' => 'ΐ', 'ῖ' => 'ῖ', 'ῗ' => 'ῗ', 'Ῐ' => 'Ῐ', 'Ῑ' => 'Ῑ', 'Ὶ' => 'Ὶ', 'Ί' => 'Ί', '῝' => '῝', '῞' => '῞', '῟' => '῟', 'ῠ' => 'ῠ', 'ῡ' => 'ῡ', 'ῢ' => 'ῢ', 'ΰ' => 'ΰ', 'ῤ' => 'ῤ', 'ῥ' => 'ῥ', 'ῦ' => 'ῦ', 'ῧ' => 'ῧ', 'Ῠ' => 'Ῠ', 'Ῡ' => 'Ῡ', 'Ὺ' => 'Ὺ', 'Ύ' => 'Ύ', 'Ῥ' => 'Ῥ', '῭' => '῭', '΅' => '΅', '`' => '`', 'ῲ' => 'ῲ', 'ῳ' => 'ῳ', 'ῴ' => 'ῴ', 'ῶ' => 'ῶ', 'ῷ' => 'ῷ', 'Ὸ' => 'Ὸ', 'Ό' => 'Ό', 'Ὼ' => 'Ὼ', 'Ώ' => 'Ώ', 'ῼ' => 'ῼ', '´' => '´', ' ' => ' ', ' ' => ' ', 'Ω' => 'Ω', 'K' => 'K', 'Å' => 'Å', '↚' => '↚', '↛' => '↛', '↮' => '↮', '⇍' => '⇍', '⇎' => '⇎', '⇏' => '⇏', '∄' => '∄', '∉' => '∉', '∌' => '∌', '∤' => '∤', '∦' => '∦', '≁' => '≁', '≄' => '≄', '≇' => '≇', '≉' => '≉', '≠' => '≠', '≢' => '≢', '≭' => '≭', '≮' => '≮', '≯' => '≯', '≰' => '≰', '≱' => '≱', '≴' => '≴', '≵' => '≵', '≸' => '≸', '≹' => '≹', '⊀' => '⊀', '⊁' => '⊁', '⊄' => '⊄', '⊅' => '⊅', '⊈' => '⊈', '⊉' => '⊉', '⊬' => '⊬', '⊭' => '⊭', '⊮' => '⊮', '⊯' => '⊯', '⋠' => '⋠', '⋡' => '⋡', '⋢' => '⋢', '⋣' => '⋣', '⋪' => '⋪', '⋫' => '⋫', '⋬' => '⋬', '⋭' => '⋭', '〈' => '〈', '〉' => '〉', '⫝̸' => '⫝̸', 'が' => 'が', 'ぎ' => 'ぎ', 'ぐ' => 'ぐ', 'げ' => 'げ', 'ご' => 'ご', 'ざ' => 'ざ', 'じ' => 'じ', 'ず' => 'ず', 'ぜ' => 'ぜ', 'ぞ' => 'ぞ', 'だ' => 'だ', 'ぢ' => 'ぢ', 'づ' => 'づ', 'で' => 'で', 'ど' => 'ど', 'ば' => 'ば', 'ぱ' => 'ぱ', 'び' => 'び', 'ぴ' => 'ぴ', 'ぶ' => 'ぶ', 'ぷ' => 'ぷ', 'べ' => 'べ', 'ぺ' => 'ぺ', 'ぼ' => 'ぼ', 'ぽ' => 'ぽ', 'ゔ' => 'ゔ', 'ゞ' => 'ゞ', 'ガ' => 'ガ', 'ギ' => 'ギ', 'グ' => 'グ', 'ゲ' => 'ゲ', 'ゴ' => 'ゴ', 'ザ' => 'ザ', 'ジ' => 'ジ', 'ズ' => 'ズ', 'ゼ' => 'ゼ', 'ゾ' => 'ゾ', 'ダ' => 'ダ', 'ヂ' => 'ヂ', 'ヅ' => 'ヅ', 'デ' => 'デ', 'ド' => 'ド', 'バ' => 'バ', 'パ' => 'パ', 'ビ' => 'ビ', 'ピ' => 'ピ', 'ブ' => 'ブ', 'プ' => 'プ', 'ベ' => 'ベ', 'ペ' => 'ペ', 'ボ' => 'ボ', 'ポ' => 'ポ', 'ヴ' => 'ヴ', 'ヷ' => 'ヷ', 'ヸ' => 'ヸ', 'ヹ' => 'ヹ', 'ヺ' => 'ヺ', 'ヾ' => 'ヾ', '豈' => '豈', '更' => '更', '車' => '車', '賈' => '賈', '滑' => '滑', '串' => '串', '句' => '句', '龜' => '龜', '龜' => '龜', '契' => '契', '金' => '金', '喇' => '喇', '奈' => '奈', '懶' => '懶', '癩' => '癩', '羅' => '羅', '蘿' => '蘿', '螺' => '螺', '裸' => '裸', '邏' => '邏', '樂' => '樂', '洛' => '洛', '烙' => '烙', '珞' => '珞', '落' => '落', '酪' => '酪', '駱' => '駱', '亂' => '亂', '卵' => '卵', '欄' => '欄', '爛' => '爛', '蘭' => '蘭', '鸞' => '鸞', '嵐' => '嵐', '濫' => '濫', '藍' => '藍', '襤' => '襤', '拉' => '拉', '臘' => '臘', '蠟' => '蠟', '廊' => '廊', '朗' => '朗', '浪' => '浪', '狼' => '狼', '郎' => '郎', '來' => '來', '冷' => '冷', '勞' => '勞', '擄' => '擄', '櫓' => '櫓', '爐' => '爐', '盧' => '盧', '老' => '老', '蘆' => '蘆', '虜' => '虜', '路' => '路', '露' => '露', '魯' => '魯', '鷺' => '鷺', '碌' => '碌', '祿' => '祿', '綠' => '綠', '菉' => '菉', '錄' => '錄', '鹿' => '鹿', '論' => '論', '壟' => '壟', '弄' => '弄', '籠' => '籠', '聾' => '聾', '牢' => '牢', '磊' => '磊', '賂' => '賂', '雷' => '雷', '壘' => '壘', '屢' => '屢', '樓' => '樓', '淚' => '淚', '漏' => '漏', '累' => '累', '縷' => '縷', '陋' => '陋', '勒' => '勒', '肋' => '肋', '凜' => '凜', '凌' => '凌', '稜' => '稜', '綾' => '綾', '菱' => '菱', '陵' => '陵', '讀' => '讀', '拏' => '拏', '樂' => '樂', '諾' => '諾', '丹' => '丹', '寧' => '寧', '怒' => '怒', '率' => '率', '異' => '異', '北' => '北', '磻' => '磻', '便' => '便', '復' => '復', '不' => '不', '泌' => '泌', '數' => '數', '索' => '索', '參' => '參', '塞' => '塞', '省' => '省', '葉' => '葉', '說' => '說', '殺' => '殺', '辰' => '辰', '沈' => '沈', '拾' => '拾', '若' => '若', '掠' => '掠', '略' => '略', '亮' => '亮', '兩' => '兩', '凉' => '凉', '梁' => '梁', '糧' => '糧', '良' => '良', '諒' => '諒', '量' => '量', '勵' => '勵', '呂' => '呂', '女' => '女', '廬' => '廬', '旅' => '旅', '濾' => '濾', '礪' => '礪', '閭' => '閭', '驪' => '驪', '麗' => '麗', '黎' => '黎', '力' => '力', '曆' => '曆', '歷' => '歷', '轢' => '轢', '年' => '年', '憐' => '憐', '戀' => '戀', '撚' => '撚', '漣' => '漣', '煉' => '煉', '璉' => '璉', '秊' => '秊', '練' => '練', '聯' => '聯', '輦' => '輦', '蓮' => '蓮', '連' => '連', '鍊' => '鍊', '列' => '列', '劣' => '劣', '咽' => '咽', '烈' => '烈', '裂' => '裂', '說' => '說', '廉' => '廉', '念' => '念', '捻' => '捻', '殮' => '殮', '簾' => '簾', '獵' => '獵', '令' => '令', '囹' => '囹', '寧' => '寧', '嶺' => '嶺', '怜' => '怜', '玲' => '玲', '瑩' => '瑩', '羚' => '羚', '聆' => '聆', '鈴' => '鈴', '零' => '零', '靈' => '靈', '領' => '領', '例' => '例', '禮' => '禮', '醴' => '醴', '隸' => '隸', '惡' => '惡', '了' => '了', '僚' => '僚', '寮' => '寮', '尿' => '尿', '料' => '料', '樂' => '樂', '燎' => '燎', '療' => '療', '蓼' => '蓼', '遼' => '遼', '龍' => '龍', '暈' => '暈', '阮' => '阮', '劉' => '劉', '杻' => '杻', '柳' => '柳', '流' => '流', '溜' => '溜', '琉' => '琉', '留' => '留', '硫' => '硫', '紐' => '紐', '類' => '類', '六' => '六', '戮' => '戮', '陸' => '陸', '倫' => '倫', '崙' => '崙', '淪' => '淪', '輪' => '輪', '律' => '律', '慄' => '慄', '栗' => '栗', '率' => '率', '隆' => '隆', '利' => '利', '吏' => '吏', '履' => '履', '易' => '易', '李' => '李', '梨' => '梨', '泥' => '泥', '理' => '理', '痢' => '痢', '罹' => '罹', '裏' => '裏', '裡' => '裡', '里' => '里', '離' => '離', '匿' => '匿', '溺' => '溺', '吝' => '吝', '燐' => '燐', '璘' => '璘', '藺' => '藺', '隣' => '隣', '鱗' => '鱗', '麟' => '麟', '林' => '林', '淋' => '淋', '臨' => '臨', '立' => '立', '笠' => '笠', '粒' => '粒', '狀' => '狀', '炙' => '炙', '識' => '識', '什' => '什', '茶' => '茶', '刺' => '刺', '切' => '切', '度' => '度', '拓' => '拓', '糖' => '糖', '宅' => '宅', '洞' => '洞', '暴' => '暴', '輻' => '輻', '行' => '行', '降' => '降', '見' => '見', '廓' => '廓', '兀' => '兀', '嗀' => '嗀', '塚' => '塚', '晴' => '晴', '凞' => '凞', '猪' => '猪', '益' => '益', '礼' => '礼', '神' => '神', '祥' => '祥', '福' => '福', '靖' => '靖', '精' => '精', '羽' => '羽', '蘒' => '蘒', '諸' => '諸', '逸' => '逸', '都' => '都', '飯' => '飯', '飼' => '飼', '館' => '館', '鶴' => '鶴', '郞' => '郞', '隷' => '隷', '侮' => '侮', '僧' => '僧', '免' => '免', '勉' => '勉', '勤' => '勤', '卑' => '卑', '喝' => '喝', '嘆' => '嘆', '器' => '器', '塀' => '塀', '墨' => '墨', '層' => '層', '屮' => '屮', '悔' => '悔', '慨' => '慨', '憎' => '憎', '懲' => '懲', '敏' => '敏', '既' => '既', '暑' => '暑', '梅' => '梅', '海' => '海', '渚' => '渚', '漢' => '漢', '煮' => '煮', '爫' => '爫', '琢' => '琢', '碑' => '碑', '社' => '社', '祉' => '祉', '祈' => '祈', '祐' => '祐', '祖' => '祖', '祝' => '祝', '禍' => '禍', '禎' => '禎', '穀' => '穀', '突' => '突', '節' => '節', '練' => '練', '縉' => '縉', '繁' => '繁', '署' => '署', '者' => '者', '臭' => '臭', '艹' => '艹', '艹' => '艹', '著' => '著', '褐' => '褐', '視' => '視', '謁' => '謁', '謹' => '謹', '賓' => '賓', '贈' => '贈', '辶' => '辶', '逸' => '逸', '難' => '難', '響' => '響', '頻' => '頻', '恵' => '恵', '𤋮' => '𤋮', '舘' => '舘', '並' => '並', '况' => '况', '全' => '全', '侀' => '侀', '充' => '充', '冀' => '冀', '勇' => '勇', '勺' => '勺', '喝' => '喝', '啕' => '啕', '喙' => '喙', '嗢' => '嗢', '塚' => '塚', '墳' => '墳', '奄' => '奄', '奔' => '奔', '婢' => '婢', '嬨' => '嬨', '廒' => '廒', '廙' => '廙', '彩' => '彩', '徭' => '徭', '惘' => '惘', '慎' => '慎', '愈' => '愈', '憎' => '憎', '慠' => '慠', '懲' => '懲', '戴' => '戴', '揄' => '揄', '搜' => '搜', '摒' => '摒', '敖' => '敖', '晴' => '晴', '朗' => '朗', '望' => '望', '杖' => '杖', '歹' => '歹', '殺' => '殺', '流' => '流', '滛' => '滛', '滋' => '滋', '漢' => '漢', '瀞' => '瀞', '煮' => '煮', '瞧' => '瞧', '爵' => '爵', '犯' => '犯', '猪' => '猪', '瑱' => '瑱', '甆' => '甆', '画' => '画', '瘝' => '瘝', '瘟' => '瘟', '益' => '益', '盛' => '盛', '直' => '直', '睊' => '睊', '着' => '着', '磌' => '磌', '窱' => '窱', '節' => '節', '类' => '类', '絛' => '絛', '練' => '練', '缾' => '缾', '者' => '者', '荒' => '荒', '華' => '華', '蝹' => '蝹', '襁' => '襁', '覆' => '覆', '視' => '視', '調' => '調', '諸' => '諸', '請' => '請', '謁' => '謁', '諾' => '諾', '諭' => '諭', '謹' => '謹', '變' => '變', '贈' => '贈', '輸' => '輸', '遲' => '遲', '醙' => '醙', '鉶' => '鉶', '陼' => '陼', '難' => '難', '靖' => '靖', '韛' => '韛', '響' => '響', '頋' => '頋', '頻' => '頻', '鬒' => '鬒', '龜' => '龜', '𢡊' => '𢡊', '𢡄' => '𢡄', '𣏕' => '𣏕', '㮝' => '㮝', '䀘' => '䀘', '䀹' => '䀹', '𥉉' => '𥉉', '𥳐' => '𥳐', '𧻓' => '𧻓', '齃' => '齃', '龎' => '龎', 'יִ' => 'יִ', 'ײַ' => 'ײַ', 'שׁ' => 'שׁ', 'שׂ' => 'שׂ', 'שּׁ' => 'שּׁ', 'שּׂ' => 'שּׂ', 'אַ' => 'אַ', 'אָ' => 'אָ', 'אּ' => 'אּ', 'בּ' => 'בּ', 'גּ' => 'גּ', 'דּ' => 'דּ', 'הּ' => 'הּ', 'וּ' => 'וּ', 'זּ' => 'זּ', 'טּ' => 'טּ', 'יּ' => 'יּ', 'ךּ' => 'ךּ', 'כּ' => 'כּ', 'לּ' => 'לּ', 'מּ' => 'מּ', 'נּ' => 'נּ', 'סּ' => 'סּ', 'ףּ' => 'ףּ', 'פּ' => 'פּ', 'צּ' => 'צּ', 'קּ' => 'קּ', 'רּ' => 'רּ', 'שּ' => 'שּ', 'תּ' => 'תּ', 'וֹ' => 'וֹ', 'בֿ' => 'בֿ', 'כֿ' => 'כֿ', 'פֿ' => 'פֿ', '𑂚' => '𑂚', '𑂜' => '𑂜', '𑂫' => '𑂫', '𑄮' => '𑄮', '𑄯' => '𑄯', '𑍋' => '𑍋', '𑍌' => '𑍌', '𑒻' => '𑒻', '𑒼' => '𑒼', '𑒾' => '𑒾', '𑖺' => '𑖺', '𑖻' => '𑖻', '𑤸' => '𑤸', '𝅗𝅥' => '𝅗𝅥', '𝅘𝅥' => '𝅘𝅥', '𝅘𝅥𝅮' => '𝅘𝅥𝅮', '𝅘𝅥𝅯' => '𝅘𝅥𝅯', '𝅘𝅥𝅰' => '𝅘𝅥𝅰', '𝅘𝅥𝅱' => '𝅘𝅥𝅱', '𝅘𝅥𝅲' => '𝅘𝅥𝅲', '𝆹𝅥' => '𝆹𝅥', '𝆺𝅥' => '𝆺𝅥', '𝆹𝅥𝅮' => '𝆹𝅥𝅮', '𝆺𝅥𝅮' => '𝆺𝅥𝅮', '𝆹𝅥𝅯' => '𝆹𝅥𝅯', '𝆺𝅥𝅯' => '𝆺𝅥𝅯', '丽' => '丽', '丸' => '丸', '乁' => '乁', '𠄢' => '𠄢', '你' => '你', '侮' => '侮', '侻' => '侻', '倂' => '倂', '偺' => '偺', '備' => '備', '僧' => '僧', '像' => '像', '㒞' => '㒞', '𠘺' => '𠘺', '免' => '免', '兔' => '兔', '兤' => '兤', '具' => '具', '𠔜' => '𠔜', '㒹' => '㒹', '內' => '內', '再' => '再', '𠕋' => '𠕋', '冗' => '冗', '冤' => '冤', '仌' => '仌', '冬' => '冬', '况' => '况', '𩇟' => '𩇟', '凵' => '凵', '刃' => '刃', '㓟' => '㓟', '刻' => '刻', '剆' => '剆', '割' => '割', '剷' => '剷', '㔕' => '㔕', '勇' => '勇', '勉' => '勉', '勤' => '勤', '勺' => '勺', '包' => '包', '匆' => '匆', '北' => '北', '卉' => '卉', '卑' => '卑', '博' => '博', '即' => '即', '卽' => '卽', '卿' => '卿', '卿' => '卿', '卿' => '卿', '𠨬' => '𠨬', '灰' => '灰', '及' => '及', '叟' => '叟', '𠭣' => '𠭣', '叫' => '叫', '叱' => '叱', '吆' => '吆', '咞' => '咞', '吸' => '吸', '呈' => '呈', '周' => '周', '咢' => '咢', '哶' => '哶', '唐' => '唐', '啓' => '啓', '啣' => '啣', '善' => '善', '善' => '善', '喙' => '喙', '喫' => '喫', '喳' => '喳', '嗂' => '嗂', '圖' => '圖', '嘆' => '嘆', '圗' => '圗', '噑' => '噑', '噴' => '噴', '切' => '切', '壮' => '壮', '城' => '城', '埴' => '埴', '堍' => '堍', '型' => '型', '堲' => '堲', '報' => '報', '墬' => '墬', '𡓤' => '𡓤', '売' => '売', '壷' => '壷', '夆' => '夆', '多' => '多', '夢' => '夢', '奢' => '奢', '𡚨' => '𡚨', '𡛪' => '𡛪', '姬' => '姬', '娛' => '娛', '娧' => '娧', '姘' => '姘', '婦' => '婦', '㛮' => '㛮', '㛼' => '㛼', '嬈' => '嬈', '嬾' => '嬾', '嬾' => '嬾', '𡧈' => '𡧈', '寃' => '寃', '寘' => '寘', '寧' => '寧', '寳' => '寳', '𡬘' => '𡬘', '寿' => '寿', '将' => '将', '当' => '当', '尢' => '尢', '㞁' => '㞁', '屠' => '屠', '屮' => '屮', '峀' => '峀', '岍' => '岍', '𡷤' => '𡷤', '嵃' => '嵃', '𡷦' => '𡷦', '嵮' => '嵮', '嵫' => '嵫', '嵼' => '嵼', '巡' => '巡', '巢' => '巢', '㠯' => '㠯', '巽' => '巽', '帨' => '帨', '帽' => '帽', '幩' => '幩', '㡢' => '㡢', '𢆃' => '𢆃', '㡼' => '㡼', '庰' => '庰', '庳' => '庳', '庶' => '庶', '廊' => '廊', '𪎒' => '𪎒', '廾' => '廾', '𢌱' => '𢌱', '𢌱' => '𢌱', '舁' => '舁', '弢' => '弢', '弢' => '弢', '㣇' => '㣇', '𣊸' => '𣊸', '𦇚' => '𦇚', '形' => '形', '彫' => '彫', '㣣' => '㣣', '徚' => '徚', '忍' => '忍', '志' => '志', '忹' => '忹', '悁' => '悁', '㤺' => '㤺', '㤜' => '㤜', '悔' => '悔', '𢛔' => '𢛔', '惇' => '惇', '慈' => '慈', '慌' => '慌', '慎' => '慎', '慌' => '慌', '慺' => '慺', '憎' => '憎', '憲' => '憲', '憤' => '憤', '憯' => '憯', '懞' => '懞', '懲' => '懲', '懶' => '懶', '成' => '成', '戛' => '戛', '扝' => '扝', '抱' => '抱', '拔' => '拔', '捐' => '捐', '𢬌' => '𢬌', '挽' => '挽', '拼' => '拼', '捨' => '捨', '掃' => '掃', '揤' => '揤', '𢯱' => '𢯱', '搢' => '搢', '揅' => '揅', '掩' => '掩', '㨮' => '㨮', '摩' => '摩', '摾' => '摾', '撝' => '撝', '摷' => '摷', '㩬' => '㩬', '敏' => '敏', '敬' => '敬', '𣀊' => '𣀊', '旣' => '旣', '書' => '書', '晉' => '晉', '㬙' => '㬙', '暑' => '暑', '㬈' => '㬈', '㫤' => '㫤', '冒' => '冒', '冕' => '冕', '最' => '最', '暜' => '暜', '肭' => '肭', '䏙' => '䏙', '朗' => '朗', '望' => '望', '朡' => '朡', '杞' => '杞', '杓' => '杓', '𣏃' => '𣏃', '㭉' => '㭉', '柺' => '柺', '枅' => '枅', '桒' => '桒', '梅' => '梅', '𣑭' => '𣑭', '梎' => '梎', '栟' => '栟', '椔' => '椔', '㮝' => '㮝', '楂' => '楂', '榣' => '榣', '槪' => '槪', '檨' => '檨', '𣚣' => '𣚣', '櫛' => '櫛', '㰘' => '㰘', '次' => '次', '𣢧' => '𣢧', '歔' => '歔', '㱎' => '㱎', '歲' => '歲', '殟' => '殟', '殺' => '殺', '殻' => '殻', '𣪍' => '𣪍', '𡴋' => '𡴋', '𣫺' => '𣫺', '汎' => '汎', '𣲼' => '𣲼', '沿' => '沿', '泍' => '泍', '汧' => '汧', '洖' => '洖', '派' => '派', '海' => '海', '流' => '流', '浩' => '浩', '浸' => '浸', '涅' => '涅', '𣴞' => '𣴞', '洴' => '洴', '港' => '港', '湮' => '湮', '㴳' => '㴳', '滋' => '滋', '滇' => '滇', '𣻑' => '𣻑', '淹' => '淹', '潮' => '潮', '𣽞' => '𣽞', '𣾎' => '𣾎', '濆' => '濆', '瀹' => '瀹', '瀞' => '瀞', '瀛' => '瀛', '㶖' => '㶖', '灊' => '灊', '災' => '災', '灷' => '灷', '炭' => '炭', '𠔥' => '𠔥', '煅' => '煅', '𤉣' => '𤉣', '熜' => '熜', '𤎫' => '𤎫', '爨' => '爨', '爵' => '爵', '牐' => '牐', '𤘈' => '𤘈', '犀' => '犀', '犕' => '犕', '𤜵' => '𤜵', '𤠔' => '𤠔', '獺' => '獺', '王' => '王', '㺬' => '㺬', '玥' => '玥', '㺸' => '㺸', '㺸' => '㺸', '瑇' => '瑇', '瑜' => '瑜', '瑱' => '瑱', '璅' => '璅', '瓊' => '瓊', '㼛' => '㼛', '甤' => '甤', '𤰶' => '𤰶', '甾' => '甾', '𤲒' => '𤲒', '異' => '異', '𢆟' => '𢆟', '瘐' => '瘐', '𤾡' => '𤾡', '𤾸' => '𤾸', '𥁄' => '𥁄', '㿼' => '㿼', '䀈' => '䀈', '直' => '直', '𥃳' => '𥃳', '𥃲' => '𥃲', '𥄙' => '𥄙', '𥄳' => '𥄳', '眞' => '眞', '真' => '真', '真' => '真', '睊' => '睊', '䀹' => '䀹', '瞋' => '瞋', '䁆' => '䁆', '䂖' => '䂖', '𥐝' => '𥐝', '硎' => '硎', '碌' => '碌', '磌' => '磌', '䃣' => '䃣', '𥘦' => '𥘦', '祖' => '祖', '𥚚' => '𥚚', '𥛅' => '𥛅', '福' => '福', '秫' => '秫', '䄯' => '䄯', '穀' => '穀', '穊' => '穊', '穏' => '穏', '𥥼' => '𥥼', '𥪧' => '𥪧', '𥪧' => '𥪧', '竮' => '竮', '䈂' => '䈂', '𥮫' => '𥮫', '篆' => '篆', '築' => '築', '䈧' => '䈧', '𥲀' => '𥲀', '糒' => '糒', '䊠' => '䊠', '糨' => '糨', '糣' => '糣', '紀' => '紀', '𥾆' => '𥾆', '絣' => '絣', '䌁' => '䌁', '緇' => '緇', '縂' => '縂', '繅' => '繅', '䌴' => '䌴', '𦈨' => '𦈨', '𦉇' => '𦉇', '䍙' => '䍙', '𦋙' => '𦋙', '罺' => '罺', '𦌾' => '𦌾', '羕' => '羕', '翺' => '翺', '者' => '者', '𦓚' => '𦓚', '𦔣' => '𦔣', '聠' => '聠', '𦖨' => '𦖨', '聰' => '聰', '𣍟' => '𣍟', '䏕' => '䏕', '育' => '育', '脃' => '脃', '䐋' => '䐋', '脾' => '脾', '媵' => '媵', '𦞧' => '𦞧', '𦞵' => '𦞵', '𣎓' => '𣎓', '𣎜' => '𣎜', '舁' => '舁', '舄' => '舄', '辞' => '辞', '䑫' => '䑫', '芑' => '芑', '芋' => '芋', '芝' => '芝', '劳' => '劳', '花' => '花', '芳' => '芳', '芽' => '芽', '苦' => '苦', '𦬼' => '𦬼', '若' => '若', '茝' => '茝', '荣' => '荣', '莭' => '莭', '茣' => '茣', '莽' => '莽', '菧' => '菧', '著' => '著', '荓' => '荓', '菊' => '菊', '菌' => '菌', '菜' => '菜', '𦰶' => '𦰶', '𦵫' => '𦵫', '𦳕' => '𦳕', '䔫' => '䔫', '蓱' => '蓱', '蓳' => '蓳', '蔖' => '蔖', '𧏊' => '𧏊', '蕤' => '蕤', '𦼬' => '𦼬', '䕝' => '䕝', '䕡' => '䕡', '𦾱' => '𦾱', '𧃒' => '𧃒', '䕫' => '䕫', '虐' => '虐', '虜' => '虜', '虧' => '虧', '虩' => '虩', '蚩' => '蚩', '蚈' => '蚈', '蜎' => '蜎', '蛢' => '蛢', '蝹' => '蝹', '蜨' => '蜨', '蝫' => '蝫', '螆' => '螆', '䗗' => '䗗', '蟡' => '蟡', '蠁' => '蠁', '䗹' => '䗹', '衠' => '衠', '衣' => '衣', '𧙧' => '𧙧', '裗' => '裗', '裞' => '裞', '䘵' => '䘵', '裺' => '裺', '㒻' => '㒻', '𧢮' => '𧢮', '𧥦' => '𧥦', '䚾' => '䚾', '䛇' => '䛇', '誠' => '誠', '諭' => '諭', '變' => '變', '豕' => '豕', '𧲨' => '𧲨', '貫' => '貫', '賁' => '賁', '贛' => '贛', '起' => '起', '𧼯' => '𧼯', '𠠄' => '𠠄', '跋' => '跋', '趼' => '趼', '跰' => '跰', '𠣞' => '𠣞', '軔' => '軔', '輸' => '輸', '𨗒' => '𨗒', '𨗭' => '𨗭', '邔' => '邔', '郱' => '郱', '鄑' => '鄑', '𨜮' => '𨜮', '鄛' => '鄛', '鈸' => '鈸', '鋗' => '鋗', '鋘' => '鋘', '鉼' => '鉼', '鏹' => '鏹', '鐕' => '鐕', '𨯺' => '𨯺', '開' => '開', '䦕' => '䦕', '閷' => '閷', '𨵷' => '𨵷', '䧦' => '䧦', '雃' => '雃', '嶲' => '嶲', '霣' => '霣', '𩅅' => '𩅅', '𩈚' => '𩈚', '䩮' => '䩮', '䩶' => '䩶', '韠' => '韠', '𩐊' => '𩐊', '䪲' => '䪲', '𩒖' => '𩒖', '頋' => '頋', '頋' => '頋', '頩' => '頩', '𩖶' => '𩖶', '飢' => '飢', '䬳' => '䬳', '餩' => '餩', '馧' => '馧', '駂' => '駂', '駾' => '駾', '䯎' => '䯎', '𩬰' => '𩬰', '鬒' => '鬒', '鱀' => '鱀', '鳽' => '鳽', '䳎' => '䳎', '䳭' => '䳭', '鵧' => '鵧', '𪃎' => '𪃎', '䳸' => '䳸', '𪄅' => '𪄅', '𪈎' => '𪈎', '𪊑' => '𪊑', '麻' => '麻', '䵖' => '䵖', '黹' => '黹', '黾' => '黾', '鼅' => '鼅', '鼏' => '鼏', '鼖' => '鼖', '鼻' => '鼻', '𪘀' => '𪘀', ); 230, '́' => 230, '̂' => 230, '̃' => 230, '̄' => 230, '̅' => 230, '̆' => 230, '̇' => 230, '̈' => 230, '̉' => 230, '̊' => 230, '̋' => 230, '̌' => 230, '̍' => 230, '̎' => 230, '̏' => 230, '̐' => 230, '̑' => 230, '̒' => 230, '̓' => 230, '̔' => 230, '̕' => 232, '̖' => 220, '̗' => 220, '̘' => 220, '̙' => 220, '̚' => 232, '̛' => 216, '̜' => 220, '̝' => 220, '̞' => 220, '̟' => 220, '̠' => 220, '̡' => 202, '̢' => 202, '̣' => 220, '̤' => 220, '̥' => 220, '̦' => 220, '̧' => 202, '̨' => 202, '̩' => 220, '̪' => 220, '̫' => 220, '̬' => 220, '̭' => 220, '̮' => 220, '̯' => 220, '̰' => 220, '̱' => 220, '̲' => 220, '̳' => 220, '̴' => 1, '̵' => 1, '̶' => 1, '̷' => 1, '̸' => 1, '̹' => 220, '̺' => 220, '̻' => 220, '̼' => 220, '̽' => 230, '̾' => 230, '̿' => 230, '̀' => 230, '́' => 230, '͂' => 230, '̓' => 230, '̈́' => 230, 'ͅ' => 240, '͆' => 230, '͇' => 220, '͈' => 220, '͉' => 220, '͊' => 230, '͋' => 230, '͌' => 230, '͍' => 220, '͎' => 220, '͐' => 230, '͑' => 230, '͒' => 230, '͓' => 220, '͔' => 220, '͕' => 220, '͖' => 220, '͗' => 230, '͘' => 232, '͙' => 220, '͚' => 220, '͛' => 230, '͜' => 233, '͝' => 234, '͞' => 234, '͟' => 233, '͠' => 234, '͡' => 234, '͢' => 233, 'ͣ' => 230, 'ͤ' => 230, 'ͥ' => 230, 'ͦ' => 230, 'ͧ' => 230, 'ͨ' => 230, 'ͩ' => 230, 'ͪ' => 230, 'ͫ' => 230, 'ͬ' => 230, 'ͭ' => 230, 'ͮ' => 230, 'ͯ' => 230, '҃' => 230, '҄' => 230, '҅' => 230, '҆' => 230, '҇' => 230, '֑' => 220, '֒' => 230, '֓' => 230, '֔' => 230, '֕' => 230, '֖' => 220, '֗' => 230, '֘' => 230, '֙' => 230, '֚' => 222, '֛' => 220, '֜' => 230, '֝' => 230, '֞' => 230, '֟' => 230, '֠' => 230, '֡' => 230, '֢' => 220, '֣' => 220, '֤' => 220, '֥' => 220, '֦' => 220, '֧' => 220, '֨' => 230, '֩' => 230, '֪' => 220, '֫' => 230, '֬' => 230, '֭' => 222, '֮' => 228, '֯' => 230, 'ְ' => 10, 'ֱ' => 11, 'ֲ' => 12, 'ֳ' => 13, 'ִ' => 14, 'ֵ' => 15, 'ֶ' => 16, 'ַ' => 17, 'ָ' => 18, 'ֹ' => 19, 'ֺ' => 19, 'ֻ' => 20, 'ּ' => 21, 'ֽ' => 22, 'ֿ' => 23, 'ׁ' => 24, 'ׂ' => 25, 'ׄ' => 230, 'ׅ' => 220, 'ׇ' => 18, 'ؐ' => 230, 'ؑ' => 230, 'ؒ' => 230, 'ؓ' => 230, 'ؔ' => 230, 'ؕ' => 230, 'ؖ' => 230, 'ؗ' => 230, 'ؘ' => 30, 'ؙ' => 31, 'ؚ' => 32, 'ً' => 27, 'ٌ' => 28, 'ٍ' => 29, 'َ' => 30, 'ُ' => 31, 'ِ' => 32, 'ّ' => 33, 'ْ' => 34, 'ٓ' => 230, 'ٔ' => 230, 'ٕ' => 220, 'ٖ' => 220, 'ٗ' => 230, '٘' => 230, 'ٙ' => 230, 'ٚ' => 230, 'ٛ' => 230, 'ٜ' => 220, 'ٝ' => 230, 'ٞ' => 230, 'ٟ' => 220, 'ٰ' => 35, 'ۖ' => 230, 'ۗ' => 230, 'ۘ' => 230, 'ۙ' => 230, 'ۚ' => 230, 'ۛ' => 230, 'ۜ' => 230, '۟' => 230, '۠' => 230, 'ۡ' => 230, 'ۢ' => 230, 'ۣ' => 220, 'ۤ' => 230, 'ۧ' => 230, 'ۨ' => 230, '۪' => 220, '۫' => 230, '۬' => 230, 'ۭ' => 220, 'ܑ' => 36, 'ܰ' => 230, 'ܱ' => 220, 'ܲ' => 230, 'ܳ' => 230, 'ܴ' => 220, 'ܵ' => 230, 'ܶ' => 230, 'ܷ' => 220, 'ܸ' => 220, 'ܹ' => 220, 'ܺ' => 230, 'ܻ' => 220, 'ܼ' => 220, 'ܽ' => 230, 'ܾ' => 220, 'ܿ' => 230, '݀' => 230, '݁' => 230, '݂' => 220, '݃' => 230, '݄' => 220, '݅' => 230, '݆' => 220, '݇' => 230, '݈' => 220, '݉' => 230, '݊' => 230, '߫' => 230, '߬' => 230, '߭' => 230, '߮' => 230, '߯' => 230, '߰' => 230, '߱' => 230, '߲' => 220, '߳' => 230, '߽' => 220, 'ࠖ' => 230, 'ࠗ' => 230, '࠘' => 230, '࠙' => 230, 'ࠛ' => 230, 'ࠜ' => 230, 'ࠝ' => 230, 'ࠞ' => 230, 'ࠟ' => 230, 'ࠠ' => 230, 'ࠡ' => 230, 'ࠢ' => 230, 'ࠣ' => 230, 'ࠥ' => 230, 'ࠦ' => 230, 'ࠧ' => 230, 'ࠩ' => 230, 'ࠪ' => 230, 'ࠫ' => 230, 'ࠬ' => 230, '࠭' => 230, '࡙' => 220, '࡚' => 220, '࡛' => 220, '࣓' => 220, 'ࣔ' => 230, 'ࣕ' => 230, 'ࣖ' => 230, 'ࣗ' => 230, 'ࣘ' => 230, 'ࣙ' => 230, 'ࣚ' => 230, 'ࣛ' => 230, 'ࣜ' => 230, 'ࣝ' => 230, 'ࣞ' => 230, 'ࣟ' => 230, '࣠' => 230, '࣡' => 230, 'ࣣ' => 220, 'ࣤ' => 230, 'ࣥ' => 230, 'ࣦ' => 220, 'ࣧ' => 230, 'ࣨ' => 230, 'ࣩ' => 220, '࣪' => 230, '࣫' => 230, '࣬' => 230, '࣭' => 220, '࣮' => 220, '࣯' => 220, 'ࣰ' => 27, 'ࣱ' => 28, 'ࣲ' => 29, 'ࣳ' => 230, 'ࣴ' => 230, 'ࣵ' => 230, 'ࣶ' => 220, 'ࣷ' => 230, 'ࣸ' => 230, 'ࣹ' => 220, 'ࣺ' => 220, 'ࣻ' => 230, 'ࣼ' => 230, 'ࣽ' => 230, 'ࣾ' => 230, 'ࣿ' => 230, '़' => 7, '्' => 9, '॑' => 230, '॒' => 220, '॓' => 230, '॔' => 230, '়' => 7, '্' => 9, '৾' => 230, '਼' => 7, '੍' => 9, '઼' => 7, '્' => 9, '଼' => 7, '୍' => 9, '்' => 9, '్' => 9, 'ౕ' => 84, 'ౖ' => 91, '಼' => 7, '್' => 9, '഻' => 9, '഼' => 9, '്' => 9, '්' => 9, 'ุ' => 103, 'ู' => 103, 'ฺ' => 9, '่' => 107, '้' => 107, '๊' => 107, '๋' => 107, 'ຸ' => 118, 'ູ' => 118, '຺' => 9, '່' => 122, '້' => 122, '໊' => 122, '໋' => 122, '༘' => 220, '༙' => 220, '༵' => 220, '༷' => 220, '༹' => 216, 'ཱ' => 129, 'ི' => 130, 'ུ' => 132, 'ེ' => 130, 'ཻ' => 130, 'ོ' => 130, 'ཽ' => 130, 'ྀ' => 130, 'ྂ' => 230, 'ྃ' => 230, '྄' => 9, '྆' => 230, '྇' => 230, '࿆' => 220, '့' => 7, '္' => 9, '်' => 9, 'ႍ' => 220, '፝' => 230, '፞' => 230, '፟' => 230, '᜔' => 9, '᜴' => 9, '្' => 9, '៝' => 230, 'ᢩ' => 228, '᤹' => 222, '᤺' => 230, '᤻' => 220, 'ᨗ' => 230, 'ᨘ' => 220, '᩠' => 9, '᩵' => 230, '᩶' => 230, '᩷' => 230, '᩸' => 230, '᩹' => 230, '᩺' => 230, '᩻' => 230, '᩼' => 230, '᩿' => 220, '᪰' => 230, '᪱' => 230, '᪲' => 230, '᪳' => 230, '᪴' => 230, '᪵' => 220, '᪶' => 220, '᪷' => 220, '᪸' => 220, '᪹' => 220, '᪺' => 220, '᪻' => 230, '᪼' => 230, '᪽' => 220, 'ᪿ' => 220, 'ᫀ' => 220, '᬴' => 7, '᭄' => 9, '᭫' => 230, '᭬' => 220, '᭭' => 230, '᭮' => 230, '᭯' => 230, '᭰' => 230, '᭱' => 230, '᭲' => 230, '᭳' => 230, '᮪' => 9, '᮫' => 9, '᯦' => 7, '᯲' => 9, '᯳' => 9, '᰷' => 7, '᳐' => 230, '᳑' => 230, '᳒' => 230, '᳔' => 1, '᳕' => 220, '᳖' => 220, '᳗' => 220, '᳘' => 220, '᳙' => 220, '᳚' => 230, '᳛' => 230, '᳜' => 220, '᳝' => 220, '᳞' => 220, '᳟' => 220, '᳠' => 230, '᳢' => 1, '᳣' => 1, '᳤' => 1, '᳥' => 1, '᳦' => 1, '᳧' => 1, '᳨' => 1, '᳭' => 220, '᳴' => 230, '᳸' => 230, '᳹' => 230, '᷀' => 230, '᷁' => 230, '᷂' => 220, '᷃' => 230, '᷄' => 230, '᷅' => 230, '᷆' => 230, '᷇' => 230, '᷈' => 230, '᷉' => 230, '᷊' => 220, '᷋' => 230, '᷌' => 230, '᷍' => 234, '᷎' => 214, '᷏' => 220, '᷐' => 202, '᷑' => 230, '᷒' => 230, 'ᷓ' => 230, 'ᷔ' => 230, 'ᷕ' => 230, 'ᷖ' => 230, 'ᷗ' => 230, 'ᷘ' => 230, 'ᷙ' => 230, 'ᷚ' => 230, 'ᷛ' => 230, 'ᷜ' => 230, 'ᷝ' => 230, 'ᷞ' => 230, 'ᷟ' => 230, 'ᷠ' => 230, 'ᷡ' => 230, 'ᷢ' => 230, 'ᷣ' => 230, 'ᷤ' => 230, 'ᷥ' => 230, 'ᷦ' => 230, 'ᷧ' => 230, 'ᷨ' => 230, 'ᷩ' => 230, 'ᷪ' => 230, 'ᷫ' => 230, 'ᷬ' => 230, 'ᷭ' => 230, 'ᷮ' => 230, 'ᷯ' => 230, 'ᷰ' => 230, 'ᷱ' => 230, 'ᷲ' => 230, 'ᷳ' => 230, 'ᷴ' => 230, '᷵' => 230, '᷶' => 232, '᷷' => 228, '᷸' => 228, '᷹' => 220, '᷻' => 230, '᷼' => 233, '᷽' => 220, '᷾' => 230, '᷿' => 220, '⃐' => 230, '⃑' => 230, '⃒' => 1, '⃓' => 1, '⃔' => 230, '⃕' => 230, '⃖' => 230, '⃗' => 230, '⃘' => 1, '⃙' => 1, '⃚' => 1, '⃛' => 230, '⃜' => 230, '⃡' => 230, '⃥' => 1, '⃦' => 1, '⃧' => 230, '⃨' => 220, '⃩' => 230, '⃪' => 1, '⃫' => 1, '⃬' => 220, '⃭' => 220, '⃮' => 220, '⃯' => 220, '⃰' => 230, '⳯' => 230, '⳰' => 230, '⳱' => 230, '⵿' => 9, 'ⷠ' => 230, 'ⷡ' => 230, 'ⷢ' => 230, 'ⷣ' => 230, 'ⷤ' => 230, 'ⷥ' => 230, 'ⷦ' => 230, 'ⷧ' => 230, 'ⷨ' => 230, 'ⷩ' => 230, 'ⷪ' => 230, 'ⷫ' => 230, 'ⷬ' => 230, 'ⷭ' => 230, 'ⷮ' => 230, 'ⷯ' => 230, 'ⷰ' => 230, 'ⷱ' => 230, 'ⷲ' => 230, 'ⷳ' => 230, 'ⷴ' => 230, 'ⷵ' => 230, 'ⷶ' => 230, 'ⷷ' => 230, 'ⷸ' => 230, 'ⷹ' => 230, 'ⷺ' => 230, 'ⷻ' => 230, 'ⷼ' => 230, 'ⷽ' => 230, 'ⷾ' => 230, 'ⷿ' => 230, '〪' => 218, '〫' => 228, '〬' => 232, '〭' => 222, '〮' => 224, '〯' => 224, '゙' => 8, '゚' => 8, '꙯' => 230, 'ꙴ' => 230, 'ꙵ' => 230, 'ꙶ' => 230, 'ꙷ' => 230, 'ꙸ' => 230, 'ꙹ' => 230, 'ꙺ' => 230, 'ꙻ' => 230, '꙼' => 230, '꙽' => 230, 'ꚞ' => 230, 'ꚟ' => 230, '꛰' => 230, '꛱' => 230, '꠆' => 9, '꠬' => 9, '꣄' => 9, '꣠' => 230, '꣡' => 230, '꣢' => 230, '꣣' => 230, '꣤' => 230, '꣥' => 230, '꣦' => 230, '꣧' => 230, '꣨' => 230, '꣩' => 230, '꣪' => 230, '꣫' => 230, '꣬' => 230, '꣭' => 230, '꣮' => 230, '꣯' => 230, '꣰' => 230, '꣱' => 230, '꤫' => 220, '꤬' => 220, '꤭' => 220, '꥓' => 9, '꦳' => 7, '꧀' => 9, 'ꪰ' => 230, 'ꪲ' => 230, 'ꪳ' => 230, 'ꪴ' => 220, 'ꪷ' => 230, 'ꪸ' => 230, 'ꪾ' => 230, '꪿' => 230, '꫁' => 230, '꫶' => 9, '꯭' => 9, 'ﬞ' => 26, '︠' => 230, '︡' => 230, '︢' => 230, '︣' => 230, '︤' => 230, '︥' => 230, '︦' => 230, '︧' => 220, '︨' => 220, '︩' => 220, '︪' => 220, '︫' => 220, '︬' => 220, '︭' => 220, '︮' => 230, '︯' => 230, '𐇽' => 220, '𐋠' => 220, '𐍶' => 230, '𐍷' => 230, '𐍸' => 230, '𐍹' => 230, '𐍺' => 230, '𐨍' => 220, '𐨏' => 230, '𐨸' => 230, '𐨹' => 1, '𐨺' => 220, '𐨿' => 9, '𐫥' => 230, '𐫦' => 220, '𐴤' => 230, '𐴥' => 230, '𐴦' => 230, '𐴧' => 230, '𐺫' => 230, '𐺬' => 230, '𐽆' => 220, '𐽇' => 220, '𐽈' => 230, '𐽉' => 230, '𐽊' => 230, '𐽋' => 220, '𐽌' => 230, '𐽍' => 220, '𐽎' => 220, '𐽏' => 220, '𐽐' => 220, '𑁆' => 9, '𑁿' => 9, '𑂹' => 9, '𑂺' => 7, '𑄀' => 230, '𑄁' => 230, '𑄂' => 230, '𑄳' => 9, '𑄴' => 9, '𑅳' => 7, '𑇀' => 9, '𑇊' => 7, '𑈵' => 9, '𑈶' => 7, '𑋩' => 7, '𑋪' => 9, '𑌻' => 7, '𑌼' => 7, '𑍍' => 9, '𑍦' => 230, '𑍧' => 230, '𑍨' => 230, '𑍩' => 230, '𑍪' => 230, '𑍫' => 230, '𑍬' => 230, '𑍰' => 230, '𑍱' => 230, '𑍲' => 230, '𑍳' => 230, '𑍴' => 230, '𑑂' => 9, '𑑆' => 7, '𑑞' => 230, '𑓂' => 9, '𑓃' => 7, '𑖿' => 9, '𑗀' => 7, '𑘿' => 9, '𑚶' => 9, '𑚷' => 7, '𑜫' => 9, '𑠹' => 9, '𑠺' => 7, '𑤽' => 9, '𑤾' => 9, '𑥃' => 7, '𑧠' => 9, '𑨴' => 9, '𑩇' => 9, '𑪙' => 9, '𑰿' => 9, '𑵂' => 7, '𑵄' => 9, '𑵅' => 9, '𑶗' => 9, '𖫰' => 1, '𖫱' => 1, '𖫲' => 1, '𖫳' => 1, '𖫴' => 1, '𖬰' => 230, '𖬱' => 230, '𖬲' => 230, '𖬳' => 230, '𖬴' => 230, '𖬵' => 230, '𖬶' => 230, '𖿰' => 6, '𖿱' => 6, '𛲞' => 1, '𝅥' => 216, '𝅦' => 216, '𝅧' => 1, '𝅨' => 1, '𝅩' => 1, '𝅭' => 226, '𝅮' => 216, '𝅯' => 216, '𝅰' => 216, '𝅱' => 216, '𝅲' => 216, '𝅻' => 220, '𝅼' => 220, '𝅽' => 220, '𝅾' => 220, '𝅿' => 220, '𝆀' => 220, '𝆁' => 220, '𝆂' => 220, '𝆅' => 230, '𝆆' => 230, '𝆇' => 230, '𝆈' => 230, '𝆉' => 230, '𝆊' => 220, '𝆋' => 220, '𝆪' => 230, '𝆫' => 230, '𝆬' => 230, '𝆭' => 230, '𝉂' => 230, '𝉃' => 230, '𝉄' => 230, '𞀀' => 230, '𞀁' => 230, '𞀂' => 230, '𞀃' => 230, '𞀄' => 230, '𞀅' => 230, '𞀆' => 230, '𞀈' => 230, '𞀉' => 230, '𞀊' => 230, '𞀋' => 230, '𞀌' => 230, '𞀍' => 230, '𞀎' => 230, '𞀏' => 230, '𞀐' => 230, '𞀑' => 230, '𞀒' => 230, '𞀓' => 230, '𞀔' => 230, '𞀕' => 230, '𞀖' => 230, '𞀗' => 230, '𞀘' => 230, '𞀛' => 230, '𞀜' => 230, '𞀝' => 230, '𞀞' => 230, '𞀟' => 230, '𞀠' => 230, '𞀡' => 230, '𞀣' => 230, '𞀤' => 230, '𞀦' => 230, '𞀧' => 230, '𞀨' => 230, '𞀩' => 230, '𞀪' => 230, '𞄰' => 230, '𞄱' => 230, '𞄲' => 230, '𞄳' => 230, '𞄴' => 230, '𞄵' => 230, '𞄶' => 230, '𞋬' => 230, '𞋭' => 230, '𞋮' => 230, '𞋯' => 230, '𞣐' => 220, '𞣑' => 220, '𞣒' => 220, '𞣓' => 220, '𞣔' => 220, '𞣕' => 220, '𞣖' => 220, '𞥄' => 230, '𞥅' => 230, '𞥆' => 230, '𞥇' => 230, '𞥈' => 230, '𞥉' => 230, '𞥊' => 7, ); 'À', 'Á' => 'Á', 'Â' => 'Â', 'Ã' => 'Ã', 'Ä' => 'Ä', 'Å' => 'Å', 'Ç' => 'Ç', 'È' => 'È', 'É' => 'É', 'Ê' => 'Ê', 'Ë' => 'Ë', 'Ì' => 'Ì', 'Í' => 'Í', 'Î' => 'Î', 'Ï' => 'Ï', 'Ñ' => 'Ñ', 'Ò' => 'Ò', 'Ó' => 'Ó', 'Ô' => 'Ô', 'Õ' => 'Õ', 'Ö' => 'Ö', 'Ù' => 'Ù', 'Ú' => 'Ú', 'Û' => 'Û', 'Ü' => 'Ü', 'Ý' => 'Ý', 'à' => 'à', 'á' => 'á', 'â' => 'â', 'ã' => 'ã', 'ä' => 'ä', 'å' => 'å', 'ç' => 'ç', 'è' => 'è', 'é' => 'é', 'ê' => 'ê', 'ë' => 'ë', 'ì' => 'ì', 'í' => 'í', 'î' => 'î', 'ï' => 'ï', 'ñ' => 'ñ', 'ò' => 'ò', 'ó' => 'ó', 'ô' => 'ô', 'õ' => 'õ', 'ö' => 'ö', 'ù' => 'ù', 'ú' => 'ú', 'û' => 'û', 'ü' => 'ü', 'ý' => 'ý', 'ÿ' => 'ÿ', 'Ā' => 'Ā', 'ā' => 'ā', 'Ă' => 'Ă', 'ă' => 'ă', 'Ą' => 'Ą', 'ą' => 'ą', 'Ć' => 'Ć', 'ć' => 'ć', 'Ĉ' => 'Ĉ', 'ĉ' => 'ĉ', 'Ċ' => 'Ċ', 'ċ' => 'ċ', 'Č' => 'Č', 'č' => 'č', 'Ď' => 'Ď', 'ď' => 'ď', 'Ē' => 'Ē', 'ē' => 'ē', 'Ĕ' => 'Ĕ', 'ĕ' => 'ĕ', 'Ė' => 'Ė', 'ė' => 'ė', 'Ę' => 'Ę', 'ę' => 'ę', 'Ě' => 'Ě', 'ě' => 'ě', 'Ĝ' => 'Ĝ', 'ĝ' => 'ĝ', 'Ğ' => 'Ğ', 'ğ' => 'ğ', 'Ġ' => 'Ġ', 'ġ' => 'ġ', 'Ģ' => 'Ģ', 'ģ' => 'ģ', 'Ĥ' => 'Ĥ', 'ĥ' => 'ĥ', 'Ĩ' => 'Ĩ', 'ĩ' => 'ĩ', 'Ī' => 'Ī', 'ī' => 'ī', 'Ĭ' => 'Ĭ', 'ĭ' => 'ĭ', 'Į' => 'Į', 'į' => 'į', 'İ' => 'İ', 'Ĵ' => 'Ĵ', 'ĵ' => 'ĵ', 'Ķ' => 'Ķ', 'ķ' => 'ķ', 'Ĺ' => 'Ĺ', 'ĺ' => 'ĺ', 'Ļ' => 'Ļ', 'ļ' => 'ļ', 'Ľ' => 'Ľ', 'ľ' => 'ľ', 'Ń' => 'Ń', 'ń' => 'ń', 'Ņ' => 'Ņ', 'ņ' => 'ņ', 'Ň' => 'Ň', 'ň' => 'ň', 'Ō' => 'Ō', 'ō' => 'ō', 'Ŏ' => 'Ŏ', 'ŏ' => 'ŏ', 'Ő' => 'Ő', 'ő' => 'ő', 'Ŕ' => 'Ŕ', 'ŕ' => 'ŕ', 'Ŗ' => 'Ŗ', 'ŗ' => 'ŗ', 'Ř' => 'Ř', 'ř' => 'ř', 'Ś' => 'Ś', 'ś' => 'ś', 'Ŝ' => 'Ŝ', 'ŝ' => 'ŝ', 'Ş' => 'Ş', 'ş' => 'ş', 'Š' => 'Š', 'š' => 'š', 'Ţ' => 'Ţ', 'ţ' => 'ţ', 'Ť' => 'Ť', 'ť' => 'ť', 'Ũ' => 'Ũ', 'ũ' => 'ũ', 'Ū' => 'Ū', 'ū' => 'ū', 'Ŭ' => 'Ŭ', 'ŭ' => 'ŭ', 'Ů' => 'Ů', 'ů' => 'ů', 'Ű' => 'Ű', 'ű' => 'ű', 'Ų' => 'Ų', 'ų' => 'ų', 'Ŵ' => 'Ŵ', 'ŵ' => 'ŵ', 'Ŷ' => 'Ŷ', 'ŷ' => 'ŷ', 'Ÿ' => 'Ÿ', 'Ź' => 'Ź', 'ź' => 'ź', 'Ż' => 'Ż', 'ż' => 'ż', 'Ž' => 'Ž', 'ž' => 'ž', 'Ơ' => 'Ơ', 'ơ' => 'ơ', 'Ư' => 'Ư', 'ư' => 'ư', 'Ǎ' => 'Ǎ', 'ǎ' => 'ǎ', 'Ǐ' => 'Ǐ', 'ǐ' => 'ǐ', 'Ǒ' => 'Ǒ', 'ǒ' => 'ǒ', 'Ǔ' => 'Ǔ', 'ǔ' => 'ǔ', 'Ǖ' => 'Ǖ', 'ǖ' => 'ǖ', 'Ǘ' => 'Ǘ', 'ǘ' => 'ǘ', 'Ǚ' => 'Ǚ', 'ǚ' => 'ǚ', 'Ǜ' => 'Ǜ', 'ǜ' => 'ǜ', 'Ǟ' => 'Ǟ', 'ǟ' => 'ǟ', 'Ǡ' => 'Ǡ', 'ǡ' => 'ǡ', 'Ǣ' => 'Ǣ', 'ǣ' => 'ǣ', 'Ǧ' => 'Ǧ', 'ǧ' => 'ǧ', 'Ǩ' => 'Ǩ', 'ǩ' => 'ǩ', 'Ǫ' => 'Ǫ', 'ǫ' => 'ǫ', 'Ǭ' => 'Ǭ', 'ǭ' => 'ǭ', 'Ǯ' => 'Ǯ', 'ǯ' => 'ǯ', 'ǰ' => 'ǰ', 'Ǵ' => 'Ǵ', 'ǵ' => 'ǵ', 'Ǹ' => 'Ǹ', 'ǹ' => 'ǹ', 'Ǻ' => 'Ǻ', 'ǻ' => 'ǻ', 'Ǽ' => 'Ǽ', 'ǽ' => 'ǽ', 'Ǿ' => 'Ǿ', 'ǿ' => 'ǿ', 'Ȁ' => 'Ȁ', 'ȁ' => 'ȁ', 'Ȃ' => 'Ȃ', 'ȃ' => 'ȃ', 'Ȅ' => 'Ȅ', 'ȅ' => 'ȅ', 'Ȇ' => 'Ȇ', 'ȇ' => 'ȇ', 'Ȉ' => 'Ȉ', 'ȉ' => 'ȉ', 'Ȋ' => 'Ȋ', 'ȋ' => 'ȋ', 'Ȍ' => 'Ȍ', 'ȍ' => 'ȍ', 'Ȏ' => 'Ȏ', 'ȏ' => 'ȏ', 'Ȑ' => 'Ȑ', 'ȑ' => 'ȑ', 'Ȓ' => 'Ȓ', 'ȓ' => 'ȓ', 'Ȕ' => 'Ȕ', 'ȕ' => 'ȕ', 'Ȗ' => 'Ȗ', 'ȗ' => 'ȗ', 'Ș' => 'Ș', 'ș' => 'ș', 'Ț' => 'Ț', 'ț' => 'ț', 'Ȟ' => 'Ȟ', 'ȟ' => 'ȟ', 'Ȧ' => 'Ȧ', 'ȧ' => 'ȧ', 'Ȩ' => 'Ȩ', 'ȩ' => 'ȩ', 'Ȫ' => 'Ȫ', 'ȫ' => 'ȫ', 'Ȭ' => 'Ȭ', 'ȭ' => 'ȭ', 'Ȯ' => 'Ȯ', 'ȯ' => 'ȯ', 'Ȱ' => 'Ȱ', 'ȱ' => 'ȱ', 'Ȳ' => 'Ȳ', 'ȳ' => 'ȳ', '΅' => '΅', 'Ά' => 'Ά', 'Έ' => 'Έ', 'Ή' => 'Ή', 'Ί' => 'Ί', 'Ό' => 'Ό', 'Ύ' => 'Ύ', 'Ώ' => 'Ώ', 'ΐ' => 'ΐ', 'Ϊ' => 'Ϊ', 'Ϋ' => 'Ϋ', 'ά' => 'ά', 'έ' => 'έ', 'ή' => 'ή', 'ί' => 'ί', 'ΰ' => 'ΰ', 'ϊ' => 'ϊ', 'ϋ' => 'ϋ', 'ό' => 'ό', 'ύ' => 'ύ', 'ώ' => 'ώ', 'ϓ' => 'ϓ', 'ϔ' => 'ϔ', 'Ѐ' => 'Ѐ', 'Ё' => 'Ё', 'Ѓ' => 'Ѓ', 'Ї' => 'Ї', 'Ќ' => 'Ќ', 'Ѝ' => 'Ѝ', 'Ў' => 'Ў', 'Й' => 'Й', 'й' => 'й', 'ѐ' => 'ѐ', 'ё' => 'ё', 'ѓ' => 'ѓ', 'ї' => 'ї', 'ќ' => 'ќ', 'ѝ' => 'ѝ', 'ў' => 'ў', 'Ѷ' => 'Ѷ', 'ѷ' => 'ѷ', 'Ӂ' => 'Ӂ', 'ӂ' => 'ӂ', 'Ӑ' => 'Ӑ', 'ӑ' => 'ӑ', 'Ӓ' => 'Ӓ', 'ӓ' => 'ӓ', 'Ӗ' => 'Ӗ', 'ӗ' => 'ӗ', 'Ӛ' => 'Ӛ', 'ӛ' => 'ӛ', 'Ӝ' => 'Ӝ', 'ӝ' => 'ӝ', 'Ӟ' => 'Ӟ', 'ӟ' => 'ӟ', 'Ӣ' => 'Ӣ', 'ӣ' => 'ӣ', 'Ӥ' => 'Ӥ', 'ӥ' => 'ӥ', 'Ӧ' => 'Ӧ', 'ӧ' => 'ӧ', 'Ӫ' => 'Ӫ', 'ӫ' => 'ӫ', 'Ӭ' => 'Ӭ', 'ӭ' => 'ӭ', 'Ӯ' => 'Ӯ', 'ӯ' => 'ӯ', 'Ӱ' => 'Ӱ', 'ӱ' => 'ӱ', 'Ӳ' => 'Ӳ', 'ӳ' => 'ӳ', 'Ӵ' => 'Ӵ', 'ӵ' => 'ӵ', 'Ӹ' => 'Ӹ', 'ӹ' => 'ӹ', 'آ' => 'آ', 'أ' => 'أ', 'ؤ' => 'ؤ', 'إ' => 'إ', 'ئ' => 'ئ', 'ۀ' => 'ۀ', 'ۂ' => 'ۂ', 'ۓ' => 'ۓ', 'ऩ' => 'ऩ', 'ऱ' => 'ऱ', 'ऴ' => 'ऴ', 'ো' => 'ো', 'ৌ' => 'ৌ', 'ୈ' => 'ୈ', 'ୋ' => 'ୋ', 'ୌ' => 'ୌ', 'ஔ' => 'ஔ', 'ொ' => 'ொ', 'ோ' => 'ோ', 'ௌ' => 'ௌ', 'ై' => 'ై', 'ೀ' => 'ೀ', 'ೇ' => 'ೇ', 'ೈ' => 'ೈ', 'ೊ' => 'ೊ', 'ೋ' => 'ೋ', 'ൊ' => 'ൊ', 'ോ' => 'ോ', 'ൌ' => 'ൌ', 'ේ' => 'ේ', 'ො' => 'ො', 'ෝ' => 'ෝ', 'ෞ' => 'ෞ', 'ဦ' => 'ဦ', 'ᬆ' => 'ᬆ', 'ᬈ' => 'ᬈ', 'ᬊ' => 'ᬊ', 'ᬌ' => 'ᬌ', 'ᬎ' => 'ᬎ', 'ᬒ' => 'ᬒ', 'ᬻ' => 'ᬻ', 'ᬽ' => 'ᬽ', 'ᭀ' => 'ᭀ', 'ᭁ' => 'ᭁ', 'ᭃ' => 'ᭃ', 'Ḁ' => 'Ḁ', 'ḁ' => 'ḁ', 'Ḃ' => 'Ḃ', 'ḃ' => 'ḃ', 'Ḅ' => 'Ḅ', 'ḅ' => 'ḅ', 'Ḇ' => 'Ḇ', 'ḇ' => 'ḇ', 'Ḉ' => 'Ḉ', 'ḉ' => 'ḉ', 'Ḋ' => 'Ḋ', 'ḋ' => 'ḋ', 'Ḍ' => 'Ḍ', 'ḍ' => 'ḍ', 'Ḏ' => 'Ḏ', 'ḏ' => 'ḏ', 'Ḑ' => 'Ḑ', 'ḑ' => 'ḑ', 'Ḓ' => 'Ḓ', 'ḓ' => 'ḓ', 'Ḕ' => 'Ḕ', 'ḕ' => 'ḕ', 'Ḗ' => 'Ḗ', 'ḗ' => 'ḗ', 'Ḙ' => 'Ḙ', 'ḙ' => 'ḙ', 'Ḛ' => 'Ḛ', 'ḛ' => 'ḛ', 'Ḝ' => 'Ḝ', 'ḝ' => 'ḝ', 'Ḟ' => 'Ḟ', 'ḟ' => 'ḟ', 'Ḡ' => 'Ḡ', 'ḡ' => 'ḡ', 'Ḣ' => 'Ḣ', 'ḣ' => 'ḣ', 'Ḥ' => 'Ḥ', 'ḥ' => 'ḥ', 'Ḧ' => 'Ḧ', 'ḧ' => 'ḧ', 'Ḩ' => 'Ḩ', 'ḩ' => 'ḩ', 'Ḫ' => 'Ḫ', 'ḫ' => 'ḫ', 'Ḭ' => 'Ḭ', 'ḭ' => 'ḭ', 'Ḯ' => 'Ḯ', 'ḯ' => 'ḯ', 'Ḱ' => 'Ḱ', 'ḱ' => 'ḱ', 'Ḳ' => 'Ḳ', 'ḳ' => 'ḳ', 'Ḵ' => 'Ḵ', 'ḵ' => 'ḵ', 'Ḷ' => 'Ḷ', 'ḷ' => 'ḷ', 'Ḹ' => 'Ḹ', 'ḹ' => 'ḹ', 'Ḻ' => 'Ḻ', 'ḻ' => 'ḻ', 'Ḽ' => 'Ḽ', 'ḽ' => 'ḽ', 'Ḿ' => 'Ḿ', 'ḿ' => 'ḿ', 'Ṁ' => 'Ṁ', 'ṁ' => 'ṁ', 'Ṃ' => 'Ṃ', 'ṃ' => 'ṃ', 'Ṅ' => 'Ṅ', 'ṅ' => 'ṅ', 'Ṇ' => 'Ṇ', 'ṇ' => 'ṇ', 'Ṉ' => 'Ṉ', 'ṉ' => 'ṉ', 'Ṋ' => 'Ṋ', 'ṋ' => 'ṋ', 'Ṍ' => 'Ṍ', 'ṍ' => 'ṍ', 'Ṏ' => 'Ṏ', 'ṏ' => 'ṏ', 'Ṑ' => 'Ṑ', 'ṑ' => 'ṑ', 'Ṓ' => 'Ṓ', 'ṓ' => 'ṓ', 'Ṕ' => 'Ṕ', 'ṕ' => 'ṕ', 'Ṗ' => 'Ṗ', 'ṗ' => 'ṗ', 'Ṙ' => 'Ṙ', 'ṙ' => 'ṙ', 'Ṛ' => 'Ṛ', 'ṛ' => 'ṛ', 'Ṝ' => 'Ṝ', 'ṝ' => 'ṝ', 'Ṟ' => 'Ṟ', 'ṟ' => 'ṟ', 'Ṡ' => 'Ṡ', 'ṡ' => 'ṡ', 'Ṣ' => 'Ṣ', 'ṣ' => 'ṣ', 'Ṥ' => 'Ṥ', 'ṥ' => 'ṥ', 'Ṧ' => 'Ṧ', 'ṧ' => 'ṧ', 'Ṩ' => 'Ṩ', 'ṩ' => 'ṩ', 'Ṫ' => 'Ṫ', 'ṫ' => 'ṫ', 'Ṭ' => 'Ṭ', 'ṭ' => 'ṭ', 'Ṯ' => 'Ṯ', 'ṯ' => 'ṯ', 'Ṱ' => 'Ṱ', 'ṱ' => 'ṱ', 'Ṳ' => 'Ṳ', 'ṳ' => 'ṳ', 'Ṵ' => 'Ṵ', 'ṵ' => 'ṵ', 'Ṷ' => 'Ṷ', 'ṷ' => 'ṷ', 'Ṹ' => 'Ṹ', 'ṹ' => 'ṹ', 'Ṻ' => 'Ṻ', 'ṻ' => 'ṻ', 'Ṽ' => 'Ṽ', 'ṽ' => 'ṽ', 'Ṿ' => 'Ṿ', 'ṿ' => 'ṿ', 'Ẁ' => 'Ẁ', 'ẁ' => 'ẁ', 'Ẃ' => 'Ẃ', 'ẃ' => 'ẃ', 'Ẅ' => 'Ẅ', 'ẅ' => 'ẅ', 'Ẇ' => 'Ẇ', 'ẇ' => 'ẇ', 'Ẉ' => 'Ẉ', 'ẉ' => 'ẉ', 'Ẋ' => 'Ẋ', 'ẋ' => 'ẋ', 'Ẍ' => 'Ẍ', 'ẍ' => 'ẍ', 'Ẏ' => 'Ẏ', 'ẏ' => 'ẏ', 'Ẑ' => 'Ẑ', 'ẑ' => 'ẑ', 'Ẓ' => 'Ẓ', 'ẓ' => 'ẓ', 'Ẕ' => 'Ẕ', 'ẕ' => 'ẕ', 'ẖ' => 'ẖ', 'ẗ' => 'ẗ', 'ẘ' => 'ẘ', 'ẙ' => 'ẙ', 'ẛ' => 'ẛ', 'Ạ' => 'Ạ', 'ạ' => 'ạ', 'Ả' => 'Ả', 'ả' => 'ả', 'Ấ' => 'Ấ', 'ấ' => 'ấ', 'Ầ' => 'Ầ', 'ầ' => 'ầ', 'Ẩ' => 'Ẩ', 'ẩ' => 'ẩ', 'Ẫ' => 'Ẫ', 'ẫ' => 'ẫ', 'Ậ' => 'Ậ', 'ậ' => 'ậ', 'Ắ' => 'Ắ', 'ắ' => 'ắ', 'Ằ' => 'Ằ', 'ằ' => 'ằ', 'Ẳ' => 'Ẳ', 'ẳ' => 'ẳ', 'Ẵ' => 'Ẵ', 'ẵ' => 'ẵ', 'Ặ' => 'Ặ', 'ặ' => 'ặ', 'Ẹ' => 'Ẹ', 'ẹ' => 'ẹ', 'Ẻ' => 'Ẻ', 'ẻ' => 'ẻ', 'Ẽ' => 'Ẽ', 'ẽ' => 'ẽ', 'Ế' => 'Ế', 'ế' => 'ế', 'Ề' => 'Ề', 'ề' => 'ề', 'Ể' => 'Ể', 'ể' => 'ể', 'Ễ' => 'Ễ', 'ễ' => 'ễ', 'Ệ' => 'Ệ', 'ệ' => 'ệ', 'Ỉ' => 'Ỉ', 'ỉ' => 'ỉ', 'Ị' => 'Ị', 'ị' => 'ị', 'Ọ' => 'Ọ', 'ọ' => 'ọ', 'Ỏ' => 'Ỏ', 'ỏ' => 'ỏ', 'Ố' => 'Ố', 'ố' => 'ố', 'Ồ' => 'Ồ', 'ồ' => 'ồ', 'Ổ' => 'Ổ', 'ổ' => 'ổ', 'Ỗ' => 'Ỗ', 'ỗ' => 'ỗ', 'Ộ' => 'Ộ', 'ộ' => 'ộ', 'Ớ' => 'Ớ', 'ớ' => 'ớ', 'Ờ' => 'Ờ', 'ờ' => 'ờ', 'Ở' => 'Ở', 'ở' => 'ở', 'Ỡ' => 'Ỡ', 'ỡ' => 'ỡ', 'Ợ' => 'Ợ', 'ợ' => 'ợ', 'Ụ' => 'Ụ', 'ụ' => 'ụ', 'Ủ' => 'Ủ', 'ủ' => 'ủ', 'Ứ' => 'Ứ', 'ứ' => 'ứ', 'Ừ' => 'Ừ', 'ừ' => 'ừ', 'Ử' => 'Ử', 'ử' => 'ử', 'Ữ' => 'Ữ', 'ữ' => 'ữ', 'Ự' => 'Ự', 'ự' => 'ự', 'Ỳ' => 'Ỳ', 'ỳ' => 'ỳ', 'Ỵ' => 'Ỵ', 'ỵ' => 'ỵ', 'Ỷ' => 'Ỷ', 'ỷ' => 'ỷ', 'Ỹ' => 'Ỹ', 'ỹ' => 'ỹ', 'ἀ' => 'ἀ', 'ἁ' => 'ἁ', 'ἂ' => 'ἂ', 'ἃ' => 'ἃ', 'ἄ' => 'ἄ', 'ἅ' => 'ἅ', 'ἆ' => 'ἆ', 'ἇ' => 'ἇ', 'Ἀ' => 'Ἀ', 'Ἁ' => 'Ἁ', 'Ἂ' => 'Ἂ', 'Ἃ' => 'Ἃ', 'Ἄ' => 'Ἄ', 'Ἅ' => 'Ἅ', 'Ἆ' => 'Ἆ', 'Ἇ' => 'Ἇ', 'ἐ' => 'ἐ', 'ἑ' => 'ἑ', 'ἒ' => 'ἒ', 'ἓ' => 'ἓ', 'ἔ' => 'ἔ', 'ἕ' => 'ἕ', 'Ἐ' => 'Ἐ', 'Ἑ' => 'Ἑ', 'Ἒ' => 'Ἒ', 'Ἓ' => 'Ἓ', 'Ἔ' => 'Ἔ', 'Ἕ' => 'Ἕ', 'ἠ' => 'ἠ', 'ἡ' => 'ἡ', 'ἢ' => 'ἢ', 'ἣ' => 'ἣ', 'ἤ' => 'ἤ', 'ἥ' => 'ἥ', 'ἦ' => 'ἦ', 'ἧ' => 'ἧ', 'Ἠ' => 'Ἠ', 'Ἡ' => 'Ἡ', 'Ἢ' => 'Ἢ', 'Ἣ' => 'Ἣ', 'Ἤ' => 'Ἤ', 'Ἥ' => 'Ἥ', 'Ἦ' => 'Ἦ', 'Ἧ' => 'Ἧ', 'ἰ' => 'ἰ', 'ἱ' => 'ἱ', 'ἲ' => 'ἲ', 'ἳ' => 'ἳ', 'ἴ' => 'ἴ', 'ἵ' => 'ἵ', 'ἶ' => 'ἶ', 'ἷ' => 'ἷ', 'Ἰ' => 'Ἰ', 'Ἱ' => 'Ἱ', 'Ἲ' => 'Ἲ', 'Ἳ' => 'Ἳ', 'Ἴ' => 'Ἴ', 'Ἵ' => 'Ἵ', 'Ἶ' => 'Ἶ', 'Ἷ' => 'Ἷ', 'ὀ' => 'ὀ', 'ὁ' => 'ὁ', 'ὂ' => 'ὂ', 'ὃ' => 'ὃ', 'ὄ' => 'ὄ', 'ὅ' => 'ὅ', 'Ὀ' => 'Ὀ', 'Ὁ' => 'Ὁ', 'Ὂ' => 'Ὂ', 'Ὃ' => 'Ὃ', 'Ὄ' => 'Ὄ', 'Ὅ' => 'Ὅ', 'ὐ' => 'ὐ', 'ὑ' => 'ὑ', 'ὒ' => 'ὒ', 'ὓ' => 'ὓ', 'ὔ' => 'ὔ', 'ὕ' => 'ὕ', 'ὖ' => 'ὖ', 'ὗ' => 'ὗ', 'Ὑ' => 'Ὑ', 'Ὓ' => 'Ὓ', 'Ὕ' => 'Ὕ', 'Ὗ' => 'Ὗ', 'ὠ' => 'ὠ', 'ὡ' => 'ὡ', 'ὢ' => 'ὢ', 'ὣ' => 'ὣ', 'ὤ' => 'ὤ', 'ὥ' => 'ὥ', 'ὦ' => 'ὦ', 'ὧ' => 'ὧ', 'Ὠ' => 'Ὠ', 'Ὡ' => 'Ὡ', 'Ὢ' => 'Ὢ', 'Ὣ' => 'Ὣ', 'Ὤ' => 'Ὤ', 'Ὥ' => 'Ὥ', 'Ὦ' => 'Ὦ', 'Ὧ' => 'Ὧ', 'ὰ' => 'ὰ', 'ὲ' => 'ὲ', 'ὴ' => 'ὴ', 'ὶ' => 'ὶ', 'ὸ' => 'ὸ', 'ὺ' => 'ὺ', 'ὼ' => 'ὼ', 'ᾀ' => 'ᾀ', 'ᾁ' => 'ᾁ', 'ᾂ' => 'ᾂ', 'ᾃ' => 'ᾃ', 'ᾄ' => 'ᾄ', 'ᾅ' => 'ᾅ', 'ᾆ' => 'ᾆ', 'ᾇ' => 'ᾇ', 'ᾈ' => 'ᾈ', 'ᾉ' => 'ᾉ', 'ᾊ' => 'ᾊ', 'ᾋ' => 'ᾋ', 'ᾌ' => 'ᾌ', 'ᾍ' => 'ᾍ', 'ᾎ' => 'ᾎ', 'ᾏ' => 'ᾏ', 'ᾐ' => 'ᾐ', 'ᾑ' => 'ᾑ', 'ᾒ' => 'ᾒ', 'ᾓ' => 'ᾓ', 'ᾔ' => 'ᾔ', 'ᾕ' => 'ᾕ', 'ᾖ' => 'ᾖ', 'ᾗ' => 'ᾗ', 'ᾘ' => 'ᾘ', 'ᾙ' => 'ᾙ', 'ᾚ' => 'ᾚ', 'ᾛ' => 'ᾛ', 'ᾜ' => 'ᾜ', 'ᾝ' => 'ᾝ', 'ᾞ' => 'ᾞ', 'ᾟ' => 'ᾟ', 'ᾠ' => 'ᾠ', 'ᾡ' => 'ᾡ', 'ᾢ' => 'ᾢ', 'ᾣ' => 'ᾣ', 'ᾤ' => 'ᾤ', 'ᾥ' => 'ᾥ', 'ᾦ' => 'ᾦ', 'ᾧ' => 'ᾧ', 'ᾨ' => 'ᾨ', 'ᾩ' => 'ᾩ', 'ᾪ' => 'ᾪ', 'ᾫ' => 'ᾫ', 'ᾬ' => 'ᾬ', 'ᾭ' => 'ᾭ', 'ᾮ' => 'ᾮ', 'ᾯ' => 'ᾯ', 'ᾰ' => 'ᾰ', 'ᾱ' => 'ᾱ', 'ᾲ' => 'ᾲ', 'ᾳ' => 'ᾳ', 'ᾴ' => 'ᾴ', 'ᾶ' => 'ᾶ', 'ᾷ' => 'ᾷ', 'Ᾰ' => 'Ᾰ', 'Ᾱ' => 'Ᾱ', 'Ὰ' => 'Ὰ', 'ᾼ' => 'ᾼ', '῁' => '῁', 'ῂ' => 'ῂ', 'ῃ' => 'ῃ', 'ῄ' => 'ῄ', 'ῆ' => 'ῆ', 'ῇ' => 'ῇ', 'Ὲ' => 'Ὲ', 'Ὴ' => 'Ὴ', 'ῌ' => 'ῌ', '῍' => '῍', '῎' => '῎', '῏' => '῏', 'ῐ' => 'ῐ', 'ῑ' => 'ῑ', 'ῒ' => 'ῒ', 'ῖ' => 'ῖ', 'ῗ' => 'ῗ', 'Ῐ' => 'Ῐ', 'Ῑ' => 'Ῑ', 'Ὶ' => 'Ὶ', '῝' => '῝', '῞' => '῞', '῟' => '῟', 'ῠ' => 'ῠ', 'ῡ' => 'ῡ', 'ῢ' => 'ῢ', 'ῤ' => 'ῤ', 'ῥ' => 'ῥ', 'ῦ' => 'ῦ', 'ῧ' => 'ῧ', 'Ῠ' => 'Ῠ', 'Ῡ' => 'Ῡ', 'Ὺ' => 'Ὺ', 'Ῥ' => 'Ῥ', '῭' => '῭', 'ῲ' => 'ῲ', 'ῳ' => 'ῳ', 'ῴ' => 'ῴ', 'ῶ' => 'ῶ', 'ῷ' => 'ῷ', 'Ὸ' => 'Ὸ', 'Ὼ' => 'Ὼ', 'ῼ' => 'ῼ', '↚' => '↚', '↛' => '↛', '↮' => '↮', '⇍' => '⇍', '⇎' => '⇎', '⇏' => '⇏', '∄' => '∄', '∉' => '∉', '∌' => '∌', '∤' => '∤', '∦' => '∦', '≁' => '≁', '≄' => '≄', '≇' => '≇', '≉' => '≉', '≠' => '≠', '≢' => '≢', '≭' => '≭', '≮' => '≮', '≯' => '≯', '≰' => '≰', '≱' => '≱', '≴' => '≴', '≵' => '≵', '≸' => '≸', '≹' => '≹', '⊀' => '⊀', '⊁' => '⊁', '⊄' => '⊄', '⊅' => '⊅', '⊈' => '⊈', '⊉' => '⊉', '⊬' => '⊬', '⊭' => '⊭', '⊮' => '⊮', '⊯' => '⊯', '⋠' => '⋠', '⋡' => '⋡', '⋢' => '⋢', '⋣' => '⋣', '⋪' => '⋪', '⋫' => '⋫', '⋬' => '⋬', '⋭' => '⋭', 'が' => 'が', 'ぎ' => 'ぎ', 'ぐ' => 'ぐ', 'げ' => 'げ', 'ご' => 'ご', 'ざ' => 'ざ', 'じ' => 'じ', 'ず' => 'ず', 'ぜ' => 'ぜ', 'ぞ' => 'ぞ', 'だ' => 'だ', 'ぢ' => 'ぢ', 'づ' => 'づ', 'で' => 'で', 'ど' => 'ど', 'ば' => 'ば', 'ぱ' => 'ぱ', 'び' => 'び', 'ぴ' => 'ぴ', 'ぶ' => 'ぶ', 'ぷ' => 'ぷ', 'べ' => 'べ', 'ぺ' => 'ぺ', 'ぼ' => 'ぼ', 'ぽ' => 'ぽ', 'ゔ' => 'ゔ', 'ゞ' => 'ゞ', 'ガ' => 'ガ', 'ギ' => 'ギ', 'グ' => 'グ', 'ゲ' => 'ゲ', 'ゴ' => 'ゴ', 'ザ' => 'ザ', 'ジ' => 'ジ', 'ズ' => 'ズ', 'ゼ' => 'ゼ', 'ゾ' => 'ゾ', 'ダ' => 'ダ', 'ヂ' => 'ヂ', 'ヅ' => 'ヅ', 'デ' => 'デ', 'ド' => 'ド', 'バ' => 'バ', 'パ' => 'パ', 'ビ' => 'ビ', 'ピ' => 'ピ', 'ブ' => 'ブ', 'プ' => 'プ', 'ベ' => 'ベ', 'ペ' => 'ペ', 'ボ' => 'ボ', 'ポ' => 'ポ', 'ヴ' => 'ヴ', 'ヷ' => 'ヷ', 'ヸ' => 'ヸ', 'ヹ' => 'ヹ', 'ヺ' => 'ヺ', 'ヾ' => 'ヾ', '𑂚' => '𑂚', '𑂜' => '𑂜', '𑂫' => '𑂫', '𑄮' => '𑄮', '𑄯' => '𑄯', '𑍋' => '𑍋', '𑍌' => '𑍌', '𑒻' => '𑒻', '𑒼' => '𑒼', '𑒾' => '𑒾', '𑖺' => '𑖺', '𑖻' => '𑖻', '𑤸' => '𑤸', ); ' ', '¨' => ' ̈', 'ª' => 'a', '¯' => ' ̄', '²' => '2', '³' => '3', '´' => ' ́', 'µ' => 'μ', '¸' => ' ̧', '¹' => '1', 'º' => 'o', '¼' => '1⁄4', '½' => '1⁄2', '¾' => '3⁄4', 'IJ' => 'IJ', 'ij' => 'ij', 'Ŀ' => 'L·', 'ŀ' => 'l·', 'ʼn' => 'ʼn', 'ſ' => 's', 'DŽ' => 'DŽ', 'Dž' => 'Dž', 'dž' => 'dž', 'LJ' => 'LJ', 'Lj' => 'Lj', 'lj' => 'lj', 'NJ' => 'NJ', 'Nj' => 'Nj', 'nj' => 'nj', 'DZ' => 'DZ', 'Dz' => 'Dz', 'dz' => 'dz', 'ʰ' => 'h', 'ʱ' => 'ɦ', 'ʲ' => 'j', 'ʳ' => 'r', 'ʴ' => 'ɹ', 'ʵ' => 'ɻ', 'ʶ' => 'ʁ', 'ʷ' => 'w', 'ʸ' => 'y', '˘' => ' ̆', '˙' => ' ̇', '˚' => ' ̊', '˛' => ' ̨', '˜' => ' ̃', '˝' => ' ̋', 'ˠ' => 'ɣ', 'ˡ' => 'l', 'ˢ' => 's', 'ˣ' => 'x', 'ˤ' => 'ʕ', 'ͺ' => ' ͅ', '΄' => ' ́', '΅' => ' ̈́', 'ϐ' => 'β', 'ϑ' => 'θ', 'ϒ' => 'Υ', 'ϓ' => 'Ύ', 'ϔ' => 'Ϋ', 'ϕ' => 'φ', 'ϖ' => 'π', 'ϰ' => 'κ', 'ϱ' => 'ρ', 'ϲ' => 'ς', 'ϴ' => 'Θ', 'ϵ' => 'ε', 'Ϲ' => 'Σ', 'և' => 'եւ', 'ٵ' => 'اٴ', 'ٶ' => 'وٴ', 'ٷ' => 'ۇٴ', 'ٸ' => 'يٴ', 'ำ' => 'ํา', 'ຳ' => 'ໍາ', 'ໜ' => 'ຫນ', 'ໝ' => 'ຫມ', '༌' => '་', 'ཷ' => 'ྲཱྀ', 'ཹ' => 'ླཱྀ', 'ჼ' => 'ნ', 'ᴬ' => 'A', 'ᴭ' => 'Æ', 'ᴮ' => 'B', 'ᴰ' => 'D', 'ᴱ' => 'E', 'ᴲ' => 'Ǝ', 'ᴳ' => 'G', 'ᴴ' => 'H', 'ᴵ' => 'I', 'ᴶ' => 'J', 'ᴷ' => 'K', 'ᴸ' => 'L', 'ᴹ' => 'M', 'ᴺ' => 'N', 'ᴼ' => 'O', 'ᴽ' => 'Ȣ', 'ᴾ' => 'P', 'ᴿ' => 'R', 'ᵀ' => 'T', 'ᵁ' => 'U', 'ᵂ' => 'W', 'ᵃ' => 'a', 'ᵄ' => 'ɐ', 'ᵅ' => 'ɑ', 'ᵆ' => 'ᴂ', 'ᵇ' => 'b', 'ᵈ' => 'd', 'ᵉ' => 'e', 'ᵊ' => 'ə', 'ᵋ' => 'ɛ', 'ᵌ' => 'ɜ', 'ᵍ' => 'g', 'ᵏ' => 'k', 'ᵐ' => 'm', 'ᵑ' => 'ŋ', 'ᵒ' => 'o', 'ᵓ' => 'ɔ', 'ᵔ' => 'ᴖ', 'ᵕ' => 'ᴗ', 'ᵖ' => 'p', 'ᵗ' => 't', 'ᵘ' => 'u', 'ᵙ' => 'ᴝ', 'ᵚ' => 'ɯ', 'ᵛ' => 'v', 'ᵜ' => 'ᴥ', 'ᵝ' => 'β', 'ᵞ' => 'γ', 'ᵟ' => 'δ', 'ᵠ' => 'φ', 'ᵡ' => 'χ', 'ᵢ' => 'i', 'ᵣ' => 'r', 'ᵤ' => 'u', 'ᵥ' => 'v', 'ᵦ' => 'β', 'ᵧ' => 'γ', 'ᵨ' => 'ρ', 'ᵩ' => 'φ', 'ᵪ' => 'χ', 'ᵸ' => 'н', 'ᶛ' => 'ɒ', 'ᶜ' => 'c', 'ᶝ' => 'ɕ', 'ᶞ' => 'ð', 'ᶟ' => 'ɜ', 'ᶠ' => 'f', 'ᶡ' => 'ɟ', 'ᶢ' => 'ɡ', 'ᶣ' => 'ɥ', 'ᶤ' => 'ɨ', 'ᶥ' => 'ɩ', 'ᶦ' => 'ɪ', 'ᶧ' => 'ᵻ', 'ᶨ' => 'ʝ', 'ᶩ' => 'ɭ', 'ᶪ' => 'ᶅ', 'ᶫ' => 'ʟ', 'ᶬ' => 'ɱ', 'ᶭ' => 'ɰ', 'ᶮ' => 'ɲ', 'ᶯ' => 'ɳ', 'ᶰ' => 'ɴ', 'ᶱ' => 'ɵ', 'ᶲ' => 'ɸ', 'ᶳ' => 'ʂ', 'ᶴ' => 'ʃ', 'ᶵ' => 'ƫ', 'ᶶ' => 'ʉ', 'ᶷ' => 'ʊ', 'ᶸ' => 'ᴜ', 'ᶹ' => 'ʋ', 'ᶺ' => 'ʌ', 'ᶻ' => 'z', 'ᶼ' => 'ʐ', 'ᶽ' => 'ʑ', 'ᶾ' => 'ʒ', 'ᶿ' => 'θ', 'ẚ' => 'aʾ', 'ẛ' => 'ṡ', '᾽' => ' ̓', '᾿' => ' ̓', '῀' => ' ͂', '῁' => ' ̈͂', '῍' => ' ̓̀', '῎' => ' ̓́', '῏' => ' ̓͂', '῝' => ' ̔̀', '῞' => ' ̔́', '῟' => ' ̔͂', '῭' => ' ̈̀', '΅' => ' ̈́', '´' => ' ́', '῾' => ' ̔', ' ' => ' ', ' ' => ' ', ' ' => ' ', ' ' => ' ', ' ' => ' ', ' ' => ' ', ' ' => ' ', ' ' => ' ', ' ' => ' ', ' ' => ' ', ' ' => ' ', '‑' => '‐', '‗' => ' ̳', '․' => '.', '‥' => '..', '…' => '...', ' ' => ' ', '″' => '′′', '‴' => '′′′', '‶' => '‵‵', '‷' => '‵‵‵', '‼' => '!!', '‾' => ' ̅', '⁇' => '??', '⁈' => '?!', '⁉' => '!?', '⁗' => '′′′′', ' ' => ' ', '⁰' => '0', 'ⁱ' => 'i', '⁴' => '4', '⁵' => '5', '⁶' => '6', '⁷' => '7', '⁸' => '8', '⁹' => '9', '⁺' => '+', '⁻' => '−', '⁼' => '=', '⁽' => '(', '⁾' => ')', 'ⁿ' => 'n', '₀' => '0', '₁' => '1', '₂' => '2', '₃' => '3', '₄' => '4', '₅' => '5', '₆' => '6', '₇' => '7', '₈' => '8', '₉' => '9', '₊' => '+', '₋' => '−', '₌' => '=', '₍' => '(', '₎' => ')', 'ₐ' => 'a', 'ₑ' => 'e', 'ₒ' => 'o', 'ₓ' => 'x', 'ₔ' => 'ə', 'ₕ' => 'h', 'ₖ' => 'k', 'ₗ' => 'l', 'ₘ' => 'm', 'ₙ' => 'n', 'ₚ' => 'p', 'ₛ' => 's', 'ₜ' => 't', '₨' => 'Rs', '℀' => 'a/c', '℁' => 'a/s', 'ℂ' => 'C', '℃' => '°C', '℅' => 'c/o', '℆' => 'c/u', 'ℇ' => 'Ɛ', '℉' => '°F', 'ℊ' => 'g', 'ℋ' => 'H', 'ℌ' => 'H', 'ℍ' => 'H', 'ℎ' => 'h', 'ℏ' => 'ħ', 'ℐ' => 'I', 'ℑ' => 'I', 'ℒ' => 'L', 'ℓ' => 'l', 'ℕ' => 'N', '№' => 'No', 'ℙ' => 'P', 'ℚ' => 'Q', 'ℛ' => 'R', 'ℜ' => 'R', 'ℝ' => 'R', '℠' => 'SM', '℡' => 'TEL', '™' => 'TM', 'ℤ' => 'Z', 'ℨ' => 'Z', 'ℬ' => 'B', 'ℭ' => 'C', 'ℯ' => 'e', 'ℰ' => 'E', 'ℱ' => 'F', 'ℳ' => 'M', 'ℴ' => 'o', 'ℵ' => 'א', 'ℶ' => 'ב', 'ℷ' => 'ג', 'ℸ' => 'ד', 'ℹ' => 'i', '℻' => 'FAX', 'ℼ' => 'π', 'ℽ' => 'γ', 'ℾ' => 'Γ', 'ℿ' => 'Π', '⅀' => '∑', 'ⅅ' => 'D', 'ⅆ' => 'd', 'ⅇ' => 'e', 'ⅈ' => 'i', 'ⅉ' => 'j', '⅐' => '1⁄7', '⅑' => '1⁄9', '⅒' => '1⁄10', '⅓' => '1⁄3', '⅔' => '2⁄3', '⅕' => '1⁄5', '⅖' => '2⁄5', '⅗' => '3⁄5', '⅘' => '4⁄5', '⅙' => '1⁄6', '⅚' => '5⁄6', '⅛' => '1⁄8', '⅜' => '3⁄8', '⅝' => '5⁄8', '⅞' => '7⁄8', '⅟' => '1⁄', 'Ⅰ' => 'I', 'Ⅱ' => 'II', 'Ⅲ' => 'III', 'Ⅳ' => 'IV', 'Ⅴ' => 'V', 'Ⅵ' => 'VI', 'Ⅶ' => 'VII', 'Ⅷ' => 'VIII', 'Ⅸ' => 'IX', 'Ⅹ' => 'X', 'Ⅺ' => 'XI', 'Ⅻ' => 'XII', 'Ⅼ' => 'L', 'Ⅽ' => 'C', 'Ⅾ' => 'D', 'Ⅿ' => 'M', 'ⅰ' => 'i', 'ⅱ' => 'ii', 'ⅲ' => 'iii', 'ⅳ' => 'iv', 'ⅴ' => 'v', 'ⅵ' => 'vi', 'ⅶ' => 'vii', 'ⅷ' => 'viii', 'ⅸ' => 'ix', 'ⅹ' => 'x', 'ⅺ' => 'xi', 'ⅻ' => 'xii', 'ⅼ' => 'l', 'ⅽ' => 'c', 'ⅾ' => 'd', 'ⅿ' => 'm', '↉' => '0⁄3', '∬' => '∫∫', '∭' => '∫∫∫', '∯' => '∮∮', '∰' => '∮∮∮', '①' => '1', '②' => '2', '③' => '3', '④' => '4', '⑤' => '5', '⑥' => '6', '⑦' => '7', '⑧' => '8', '⑨' => '9', '⑩' => '10', '⑪' => '11', '⑫' => '12', '⑬' => '13', '⑭' => '14', '⑮' => '15', '⑯' => '16', '⑰' => '17', '⑱' => '18', '⑲' => '19', '⑳' => '20', '⑴' => '(1)', '⑵' => '(2)', '⑶' => '(3)', '⑷' => '(4)', '⑸' => '(5)', '⑹' => '(6)', '⑺' => '(7)', '⑻' => '(8)', '⑼' => '(9)', '⑽' => '(10)', '⑾' => '(11)', '⑿' => '(12)', '⒀' => '(13)', '⒁' => '(14)', '⒂' => '(15)', '⒃' => '(16)', '⒄' => '(17)', '⒅' => '(18)', '⒆' => '(19)', '⒇' => '(20)', '⒈' => '1.', '⒉' => '2.', '⒊' => '3.', '⒋' => '4.', '⒌' => '5.', '⒍' => '6.', '⒎' => '7.', '⒏' => '8.', '⒐' => '9.', '⒑' => '10.', '⒒' => '11.', '⒓' => '12.', '⒔' => '13.', '⒕' => '14.', '⒖' => '15.', '⒗' => '16.', '⒘' => '17.', '⒙' => '18.', '⒚' => '19.', '⒛' => '20.', '⒜' => '(a)', '⒝' => '(b)', '⒞' => '(c)', '⒟' => '(d)', '⒠' => '(e)', '⒡' => '(f)', '⒢' => '(g)', '⒣' => '(h)', '⒤' => '(i)', '⒥' => '(j)', '⒦' => '(k)', '⒧' => '(l)', '⒨' => '(m)', '⒩' => '(n)', '⒪' => '(o)', '⒫' => '(p)', '⒬' => '(q)', '⒭' => '(r)', '⒮' => '(s)', '⒯' => '(t)', '⒰' => '(u)', '⒱' => '(v)', '⒲' => '(w)', '⒳' => '(x)', '⒴' => '(y)', '⒵' => '(z)', 'Ⓐ' => 'A', 'Ⓑ' => 'B', 'Ⓒ' => 'C', 'Ⓓ' => 'D', 'Ⓔ' => 'E', 'Ⓕ' => 'F', 'Ⓖ' => 'G', 'Ⓗ' => 'H', 'Ⓘ' => 'I', 'Ⓙ' => 'J', 'Ⓚ' => 'K', 'Ⓛ' => 'L', 'Ⓜ' => 'M', 'Ⓝ' => 'N', 'Ⓞ' => 'O', 'Ⓟ' => 'P', 'Ⓠ' => 'Q', 'Ⓡ' => 'R', 'Ⓢ' => 'S', 'Ⓣ' => 'T', 'Ⓤ' => 'U', 'Ⓥ' => 'V', 'Ⓦ' => 'W', 'Ⓧ' => 'X', 'Ⓨ' => 'Y', 'Ⓩ' => 'Z', 'ⓐ' => 'a', 'ⓑ' => 'b', 'ⓒ' => 'c', 'ⓓ' => 'd', 'ⓔ' => 'e', 'ⓕ' => 'f', 'ⓖ' => 'g', 'ⓗ' => 'h', 'ⓘ' => 'i', 'ⓙ' => 'j', 'ⓚ' => 'k', 'ⓛ' => 'l', 'ⓜ' => 'm', 'ⓝ' => 'n', 'ⓞ' => 'o', 'ⓟ' => 'p', 'ⓠ' => 'q', 'ⓡ' => 'r', 'ⓢ' => 's', 'ⓣ' => 't', 'ⓤ' => 'u', 'ⓥ' => 'v', 'ⓦ' => 'w', 'ⓧ' => 'x', 'ⓨ' => 'y', 'ⓩ' => 'z', '⓪' => '0', '⨌' => '∫∫∫∫', '⩴' => '::=', '⩵' => '==', '⩶' => '===', 'ⱼ' => 'j', 'ⱽ' => 'V', 'ⵯ' => 'ⵡ', '⺟' => '母', '⻳' => '龟', '⼀' => '一', '⼁' => '丨', '⼂' => '丶', '⼃' => '丿', '⼄' => '乙', '⼅' => '亅', '⼆' => '二', '⼇' => '亠', '⼈' => '人', '⼉' => '儿', '⼊' => '入', '⼋' => '八', '⼌' => '冂', '⼍' => '冖', '⼎' => '冫', '⼏' => '几', '⼐' => '凵', '⼑' => '刀', '⼒' => '力', '⼓' => '勹', '⼔' => '匕', '⼕' => '匚', '⼖' => '匸', '⼗' => '十', '⼘' => '卜', '⼙' => '卩', '⼚' => '厂', '⼛' => '厶', '⼜' => '又', '⼝' => '口', '⼞' => '囗', '⼟' => '土', '⼠' => '士', '⼡' => '夂', '⼢' => '夊', '⼣' => '夕', '⼤' => '大', '⼥' => '女', '⼦' => '子', '⼧' => '宀', '⼨' => '寸', '⼩' => '小', '⼪' => '尢', '⼫' => '尸', '⼬' => '屮', '⼭' => '山', '⼮' => '巛', '⼯' => '工', '⼰' => '己', '⼱' => '巾', '⼲' => '干', '⼳' => '幺', '⼴' => '广', '⼵' => '廴', '⼶' => '廾', '⼷' => '弋', '⼸' => '弓', '⼹' => '彐', '⼺' => '彡', '⼻' => '彳', '⼼' => '心', '⼽' => '戈', '⼾' => '戶', '⼿' => '手', '⽀' => '支', '⽁' => '攴', '⽂' => '文', '⽃' => '斗', '⽄' => '斤', '⽅' => '方', '⽆' => '无', '⽇' => '日', '⽈' => '曰', '⽉' => '月', '⽊' => '木', '⽋' => '欠', '⽌' => '止', '⽍' => '歹', '⽎' => '殳', '⽏' => '毋', '⽐' => '比', '⽑' => '毛', '⽒' => '氏', '⽓' => '气', '⽔' => '水', '⽕' => '火', '⽖' => '爪', '⽗' => '父', '⽘' => '爻', '⽙' => '爿', '⽚' => '片', '⽛' => '牙', '⽜' => '牛', '⽝' => '犬', '⽞' => '玄', '⽟' => '玉', '⽠' => '瓜', '⽡' => '瓦', '⽢' => '甘', '⽣' => '生', '⽤' => '用', '⽥' => '田', '⽦' => '疋', '⽧' => '疒', '⽨' => '癶', '⽩' => '白', '⽪' => '皮', '⽫' => '皿', '⽬' => '目', '⽭' => '矛', '⽮' => '矢', '⽯' => '石', '⽰' => '示', '⽱' => '禸', '⽲' => '禾', '⽳' => '穴', '⽴' => '立', '⽵' => '竹', '⽶' => '米', '⽷' => '糸', '⽸' => '缶', '⽹' => '网', '⽺' => '羊', '⽻' => '羽', '⽼' => '老', '⽽' => '而', '⽾' => '耒', '⽿' => '耳', '⾀' => '聿', '⾁' => '肉', '⾂' => '臣', '⾃' => '自', '⾄' => '至', '⾅' => '臼', '⾆' => '舌', '⾇' => '舛', '⾈' => '舟', '⾉' => '艮', '⾊' => '色', '⾋' => '艸', '⾌' => '虍', '⾍' => '虫', '⾎' => '血', '⾏' => '行', '⾐' => '衣', '⾑' => '襾', '⾒' => '見', '⾓' => '角', '⾔' => '言', '⾕' => '谷', '⾖' => '豆', '⾗' => '豕', '⾘' => '豸', '⾙' => '貝', '⾚' => '赤', '⾛' => '走', '⾜' => '足', '⾝' => '身', '⾞' => '車', '⾟' => '辛', '⾠' => '辰', '⾡' => '辵', '⾢' => '邑', '⾣' => '酉', '⾤' => '釆', '⾥' => '里', '⾦' => '金', '⾧' => '長', '⾨' => '門', '⾩' => '阜', '⾪' => '隶', '⾫' => '隹', '⾬' => '雨', '⾭' => '靑', '⾮' => '非', '⾯' => '面', '⾰' => '革', '⾱' => '韋', '⾲' => '韭', '⾳' => '音', '⾴' => '頁', '⾵' => '風', '⾶' => '飛', '⾷' => '食', '⾸' => '首', '⾹' => '香', '⾺' => '馬', '⾻' => '骨', '⾼' => '高', '⾽' => '髟', '⾾' => '鬥', '⾿' => '鬯', '⿀' => '鬲', '⿁' => '鬼', '⿂' => '魚', '⿃' => '鳥', '⿄' => '鹵', '⿅' => '鹿', '⿆' => '麥', '⿇' => '麻', '⿈' => '黃', '⿉' => '黍', '⿊' => '黑', '⿋' => '黹', '⿌' => '黽', '⿍' => '鼎', '⿎' => '鼓', '⿏' => '鼠', '⿐' => '鼻', '⿑' => '齊', '⿒' => '齒', '⿓' => '龍', '⿔' => '龜', '⿕' => '龠', ' ' => ' ', '〶' => '〒', '〸' => '十', '〹' => '卄', '〺' => '卅', '゛' => ' ゙', '゜' => ' ゚', 'ゟ' => 'より', 'ヿ' => 'コト', 'ㄱ' => 'ᄀ', 'ㄲ' => 'ᄁ', 'ㄳ' => 'ᆪ', 'ㄴ' => 'ᄂ', 'ㄵ' => 'ᆬ', 'ㄶ' => 'ᆭ', 'ㄷ' => 'ᄃ', 'ㄸ' => 'ᄄ', 'ㄹ' => 'ᄅ', 'ㄺ' => 'ᆰ', 'ㄻ' => 'ᆱ', 'ㄼ' => 'ᆲ', 'ㄽ' => 'ᆳ', 'ㄾ' => 'ᆴ', 'ㄿ' => 'ᆵ', 'ㅀ' => 'ᄚ', 'ㅁ' => 'ᄆ', 'ㅂ' => 'ᄇ', 'ㅃ' => 'ᄈ', 'ㅄ' => 'ᄡ', 'ㅅ' => 'ᄉ', 'ㅆ' => 'ᄊ', 'ㅇ' => 'ᄋ', 'ㅈ' => 'ᄌ', 'ㅉ' => 'ᄍ', 'ㅊ' => 'ᄎ', 'ㅋ' => 'ᄏ', 'ㅌ' => 'ᄐ', 'ㅍ' => 'ᄑ', 'ㅎ' => 'ᄒ', 'ㅏ' => 'ᅡ', 'ㅐ' => 'ᅢ', 'ㅑ' => 'ᅣ', 'ㅒ' => 'ᅤ', 'ㅓ' => 'ᅥ', 'ㅔ' => 'ᅦ', 'ㅕ' => 'ᅧ', 'ㅖ' => 'ᅨ', 'ㅗ' => 'ᅩ', 'ㅘ' => 'ᅪ', 'ㅙ' => 'ᅫ', 'ㅚ' => 'ᅬ', 'ㅛ' => 'ᅭ', 'ㅜ' => 'ᅮ', 'ㅝ' => 'ᅯ', 'ㅞ' => 'ᅰ', 'ㅟ' => 'ᅱ', 'ㅠ' => 'ᅲ', 'ㅡ' => 'ᅳ', 'ㅢ' => 'ᅴ', 'ㅣ' => 'ᅵ', 'ㅤ' => 'ᅠ', 'ㅥ' => 'ᄔ', 'ㅦ' => 'ᄕ', 'ㅧ' => 'ᇇ', 'ㅨ' => 'ᇈ', 'ㅩ' => 'ᇌ', 'ㅪ' => 'ᇎ', 'ㅫ' => 'ᇓ', 'ㅬ' => 'ᇗ', 'ㅭ' => 'ᇙ', 'ㅮ' => 'ᄜ', 'ㅯ' => 'ᇝ', 'ㅰ' => 'ᇟ', 'ㅱ' => 'ᄝ', 'ㅲ' => 'ᄞ', 'ㅳ' => 'ᄠ', 'ㅴ' => 'ᄢ', 'ㅵ' => 'ᄣ', 'ㅶ' => 'ᄧ', 'ㅷ' => 'ᄩ', 'ㅸ' => 'ᄫ', 'ㅹ' => 'ᄬ', 'ㅺ' => 'ᄭ', 'ㅻ' => 'ᄮ', 'ㅼ' => 'ᄯ', 'ㅽ' => 'ᄲ', 'ㅾ' => 'ᄶ', 'ㅿ' => 'ᅀ', 'ㆀ' => 'ᅇ', 'ㆁ' => 'ᅌ', 'ㆂ' => 'ᇱ', 'ㆃ' => 'ᇲ', 'ㆄ' => 'ᅗ', 'ㆅ' => 'ᅘ', 'ㆆ' => 'ᅙ', 'ㆇ' => 'ᆄ', 'ㆈ' => 'ᆅ', 'ㆉ' => 'ᆈ', 'ㆊ' => 'ᆑ', 'ㆋ' => 'ᆒ', 'ㆌ' => 'ᆔ', 'ㆍ' => 'ᆞ', 'ㆎ' => 'ᆡ', '㆒' => '一', '㆓' => '二', '㆔' => '三', '㆕' => '四', '㆖' => '上', '㆗' => '中', '㆘' => '下', '㆙' => '甲', '㆚' => '乙', '㆛' => '丙', '㆜' => '丁', '㆝' => '天', '㆞' => '地', '㆟' => '人', '㈀' => '(ᄀ)', '㈁' => '(ᄂ)', '㈂' => '(ᄃ)', '㈃' => '(ᄅ)', '㈄' => '(ᄆ)', '㈅' => '(ᄇ)', '㈆' => '(ᄉ)', '㈇' => '(ᄋ)', '㈈' => '(ᄌ)', '㈉' => '(ᄎ)', '㈊' => '(ᄏ)', '㈋' => '(ᄐ)', '㈌' => '(ᄑ)', '㈍' => '(ᄒ)', '㈎' => '(가)', '㈏' => '(나)', '㈐' => '(다)', '㈑' => '(라)', '㈒' => '(마)', '㈓' => '(바)', '㈔' => '(사)', '㈕' => '(아)', '㈖' => '(자)', '㈗' => '(차)', '㈘' => '(카)', '㈙' => '(타)', '㈚' => '(파)', '㈛' => '(하)', '㈜' => '(주)', '㈝' => '(오전)', '㈞' => '(오후)', '㈠' => '(一)', '㈡' => '(二)', '㈢' => '(三)', '㈣' => '(四)', '㈤' => '(五)', '㈥' => '(六)', '㈦' => '(七)', '㈧' => '(八)', '㈨' => '(九)', '㈩' => '(十)', '㈪' => '(月)', '㈫' => '(火)', '㈬' => '(水)', '㈭' => '(木)', '㈮' => '(金)', '㈯' => '(土)', '㈰' => '(日)', '㈱' => '(株)', '㈲' => '(有)', '㈳' => '(社)', '㈴' => '(名)', '㈵' => '(特)', '㈶' => '(財)', '㈷' => '(祝)', '㈸' => '(労)', '㈹' => '(代)', '㈺' => '(呼)', '㈻' => '(学)', '㈼' => '(監)', '㈽' => '(企)', '㈾' => '(資)', '㈿' => '(協)', '㉀' => '(祭)', '㉁' => '(休)', '㉂' => '(自)', '㉃' => '(至)', '㉄' => '問', '㉅' => '幼', '㉆' => '文', '㉇' => '箏', '㉐' => 'PTE', '㉑' => '21', '㉒' => '22', '㉓' => '23', '㉔' => '24', '㉕' => '25', '㉖' => '26', '㉗' => '27', '㉘' => '28', '㉙' => '29', '㉚' => '30', '㉛' => '31', '㉜' => '32', '㉝' => '33', '㉞' => '34', '㉟' => '35', '㉠' => 'ᄀ', '㉡' => 'ᄂ', '㉢' => 'ᄃ', '㉣' => 'ᄅ', '㉤' => 'ᄆ', '㉥' => 'ᄇ', '㉦' => 'ᄉ', '㉧' => 'ᄋ', '㉨' => 'ᄌ', '㉩' => 'ᄎ', '㉪' => 'ᄏ', '㉫' => 'ᄐ', '㉬' => 'ᄑ', '㉭' => 'ᄒ', '㉮' => '가', '㉯' => '나', '㉰' => '다', '㉱' => '라', '㉲' => '마', '㉳' => '바', '㉴' => '사', '㉵' => '아', '㉶' => '자', '㉷' => '차', '㉸' => '카', '㉹' => '타', '㉺' => '파', '㉻' => '하', '㉼' => '참고', '㉽' => '주의', '㉾' => '우', '㊀' => '一', '㊁' => '二', '㊂' => '三', '㊃' => '四', '㊄' => '五', '㊅' => '六', '㊆' => '七', '㊇' => '八', '㊈' => '九', '㊉' => '十', '㊊' => '月', '㊋' => '火', '㊌' => '水', '㊍' => '木', '㊎' => '金', '㊏' => '土', '㊐' => '日', '㊑' => '株', '㊒' => '有', '㊓' => '社', '㊔' => '名', '㊕' => '特', '㊖' => '財', '㊗' => '祝', '㊘' => '労', '㊙' => '秘', '㊚' => '男', '㊛' => '女', '㊜' => '適', '㊝' => '優', '㊞' => '印', '㊟' => '注', '㊠' => '項', '㊡' => '休', '㊢' => '写', '㊣' => '正', '㊤' => '上', '㊥' => '中', '㊦' => '下', '㊧' => '左', '㊨' => '右', '㊩' => '医', '㊪' => '宗', '㊫' => '学', '㊬' => '監', '㊭' => '企', '㊮' => '資', '㊯' => '協', '㊰' => '夜', '㊱' => '36', '㊲' => '37', '㊳' => '38', '㊴' => '39', '㊵' => '40', '㊶' => '41', '㊷' => '42', '㊸' => '43', '㊹' => '44', '㊺' => '45', '㊻' => '46', '㊼' => '47', '㊽' => '48', '㊾' => '49', '㊿' => '50', '㋀' => '1月', '㋁' => '2月', '㋂' => '3月', '㋃' => '4月', '㋄' => '5月', '㋅' => '6月', '㋆' => '7月', '㋇' => '8月', '㋈' => '9月', '㋉' => '10月', '㋊' => '11月', '㋋' => '12月', '㋌' => 'Hg', '㋍' => 'erg', '㋎' => 'eV', '㋏' => 'LTD', '㋐' => 'ア', '㋑' => 'イ', '㋒' => 'ウ', '㋓' => 'エ', '㋔' => 'オ', '㋕' => 'カ', '㋖' => 'キ', '㋗' => 'ク', '㋘' => 'ケ', '㋙' => 'コ', '㋚' => 'サ', '㋛' => 'シ', '㋜' => 'ス', '㋝' => 'セ', '㋞' => 'ソ', '㋟' => 'タ', '㋠' => 'チ', '㋡' => 'ツ', '㋢' => 'テ', '㋣' => 'ト', '㋤' => 'ナ', '㋥' => 'ニ', '㋦' => 'ヌ', '㋧' => 'ネ', '㋨' => 'ノ', '㋩' => 'ハ', '㋪' => 'ヒ', '㋫' => 'フ', '㋬' => 'ヘ', '㋭' => 'ホ', '㋮' => 'マ', '㋯' => 'ミ', '㋰' => 'ム', '㋱' => 'メ', '㋲' => 'モ', '㋳' => 'ヤ', '㋴' => 'ユ', '㋵' => 'ヨ', '㋶' => 'ラ', '㋷' => 'リ', '㋸' => 'ル', '㋹' => 'レ', '㋺' => 'ロ', '㋻' => 'ワ', '㋼' => 'ヰ', '㋽' => 'ヱ', '㋾' => 'ヲ', '㋿' => '令和', '㌀' => 'アパート', '㌁' => 'アルファ', '㌂' => 'アンペア', '㌃' => 'アール', '㌄' => 'イニング', '㌅' => 'インチ', '㌆' => 'ウォン', '㌇' => 'エスクード', '㌈' => 'エーカー', '㌉' => 'オンス', '㌊' => 'オーム', '㌋' => 'カイリ', '㌌' => 'カラット', '㌍' => 'カロリー', '㌎' => 'ガロン', '㌏' => 'ガンマ', '㌐' => 'ギガ', '㌑' => 'ギニー', '㌒' => 'キュリー', '㌓' => 'ギルダー', '㌔' => 'キロ', '㌕' => 'キログラム', '㌖' => 'キロメートル', '㌗' => 'キロワット', '㌘' => 'グラム', '㌙' => 'グラムトン', '㌚' => 'クルゼイロ', '㌛' => 'クローネ', '㌜' => 'ケース', '㌝' => 'コルナ', '㌞' => 'コーポ', '㌟' => 'サイクル', '㌠' => 'サンチーム', '㌡' => 'シリング', '㌢' => 'センチ', '㌣' => 'セント', '㌤' => 'ダース', '㌥' => 'デシ', '㌦' => 'ドル', '㌧' => 'トン', '㌨' => 'ナノ', '㌩' => 'ノット', '㌪' => 'ハイツ', '㌫' => 'パーセント', '㌬' => 'パーツ', '㌭' => 'バーレル', '㌮' => 'ピアストル', '㌯' => 'ピクル', '㌰' => 'ピコ', '㌱' => 'ビル', '㌲' => 'ファラッド', '㌳' => 'フィート', '㌴' => 'ブッシェル', '㌵' => 'フラン', '㌶' => 'ヘクタール', '㌷' => 'ペソ', '㌸' => 'ペニヒ', '㌹' => 'ヘルツ', '㌺' => 'ペンス', '㌻' => 'ページ', '㌼' => 'ベータ', '㌽' => 'ポイント', '㌾' => 'ボルト', '㌿' => 'ホン', '㍀' => 'ポンド', '㍁' => 'ホール', '㍂' => 'ホーン', '㍃' => 'マイクロ', '㍄' => 'マイル', '㍅' => 'マッハ', '㍆' => 'マルク', '㍇' => 'マンション', '㍈' => 'ミクロン', '㍉' => 'ミリ', '㍊' => 'ミリバール', '㍋' => 'メガ', '㍌' => 'メガトン', '㍍' => 'メートル', '㍎' => 'ヤード', '㍏' => 'ヤール', '㍐' => 'ユアン', '㍑' => 'リットル', '㍒' => 'リラ', '㍓' => 'ルピー', '㍔' => 'ルーブル', '㍕' => 'レム', '㍖' => 'レントゲン', '㍗' => 'ワット', '㍘' => '0点', '㍙' => '1点', '㍚' => '2点', '㍛' => '3点', '㍜' => '4点', '㍝' => '5点', '㍞' => '6点', '㍟' => '7点', '㍠' => '8点', '㍡' => '9点', '㍢' => '10点', '㍣' => '11点', '㍤' => '12点', '㍥' => '13点', '㍦' => '14点', '㍧' => '15点', '㍨' => '16点', '㍩' => '17点', '㍪' => '18点', '㍫' => '19点', '㍬' => '20点', '㍭' => '21点', '㍮' => '22点', '㍯' => '23点', '㍰' => '24点', '㍱' => 'hPa', '㍲' => 'da', '㍳' => 'AU', '㍴' => 'bar', '㍵' => 'oV', '㍶' => 'pc', '㍷' => 'dm', '㍸' => 'dm2', '㍹' => 'dm3', '㍺' => 'IU', '㍻' => '平成', '㍼' => '昭和', '㍽' => '大正', '㍾' => '明治', '㍿' => '株式会社', '㎀' => 'pA', '㎁' => 'nA', '㎂' => 'μA', '㎃' => 'mA', '㎄' => 'kA', '㎅' => 'KB', '㎆' => 'MB', '㎇' => 'GB', '㎈' => 'cal', '㎉' => 'kcal', '㎊' => 'pF', '㎋' => 'nF', '㎌' => 'μF', '㎍' => 'μg', '㎎' => 'mg', '㎏' => 'kg', '㎐' => 'Hz', '㎑' => 'kHz', '㎒' => 'MHz', '㎓' => 'GHz', '㎔' => 'THz', '㎕' => 'μl', '㎖' => 'ml', '㎗' => 'dl', '㎘' => 'kl', '㎙' => 'fm', '㎚' => 'nm', '㎛' => 'μm', '㎜' => 'mm', '㎝' => 'cm', '㎞' => 'km', '㎟' => 'mm2', '㎠' => 'cm2', '㎡' => 'm2', '㎢' => 'km2', '㎣' => 'mm3', '㎤' => 'cm3', '㎥' => 'm3', '㎦' => 'km3', '㎧' => 'm∕s', '㎨' => 'm∕s2', '㎩' => 'Pa', '㎪' => 'kPa', '㎫' => 'MPa', '㎬' => 'GPa', '㎭' => 'rad', '㎮' => 'rad∕s', '㎯' => 'rad∕s2', '㎰' => 'ps', '㎱' => 'ns', '㎲' => 'μs', '㎳' => 'ms', '㎴' => 'pV', '㎵' => 'nV', '㎶' => 'μV', '㎷' => 'mV', '㎸' => 'kV', '㎹' => 'MV', '㎺' => 'pW', '㎻' => 'nW', '㎼' => 'μW', '㎽' => 'mW', '㎾' => 'kW', '㎿' => 'MW', '㏀' => 'kΩ', '㏁' => 'MΩ', '㏂' => 'a.m.', '㏃' => 'Bq', '㏄' => 'cc', '㏅' => 'cd', '㏆' => 'C∕kg', '㏇' => 'Co.', '㏈' => 'dB', '㏉' => 'Gy', '㏊' => 'ha', '㏋' => 'HP', '㏌' => 'in', '㏍' => 'KK', '㏎' => 'KM', '㏏' => 'kt', '㏐' => 'lm', '㏑' => 'ln', '㏒' => 'log', '㏓' => 'lx', '㏔' => 'mb', '㏕' => 'mil', '㏖' => 'mol', '㏗' => 'PH', '㏘' => 'p.m.', '㏙' => 'PPM', '㏚' => 'PR', '㏛' => 'sr', '㏜' => 'Sv', '㏝' => 'Wb', '㏞' => 'V∕m', '㏟' => 'A∕m', '㏠' => '1日', '㏡' => '2日', '㏢' => '3日', '㏣' => '4日', '㏤' => '5日', '㏥' => '6日', '㏦' => '7日', '㏧' => '8日', '㏨' => '9日', '㏩' => '10日', '㏪' => '11日', '㏫' => '12日', '㏬' => '13日', '㏭' => '14日', '㏮' => '15日', '㏯' => '16日', '㏰' => '17日', '㏱' => '18日', '㏲' => '19日', '㏳' => '20日', '㏴' => '21日', '㏵' => '22日', '㏶' => '23日', '㏷' => '24日', '㏸' => '25日', '㏹' => '26日', '㏺' => '27日', '㏻' => '28日', '㏼' => '29日', '㏽' => '30日', '㏾' => '31日', '㏿' => 'gal', 'ꚜ' => 'ъ', 'ꚝ' => 'ь', 'ꝰ' => 'ꝯ', 'ꟸ' => 'Ħ', 'ꟹ' => 'œ', 'ꭜ' => 'ꜧ', 'ꭝ' => 'ꬷ', 'ꭞ' => 'ɫ', 'ꭟ' => 'ꭒ', 'ꭩ' => 'ʍ', 'ff' => 'ff', 'fi' => 'fi', 'fl' => 'fl', 'ffi' => 'ffi', 'ffl' => 'ffl', 'ſt' => 'st', 'st' => 'st', 'ﬓ' => 'մն', 'ﬔ' => 'մե', 'ﬕ' => 'մի', 'ﬖ' => 'վն', 'ﬗ' => 'մխ', 'ﬠ' => 'ע', 'ﬡ' => 'א', 'ﬢ' => 'ד', 'ﬣ' => 'ה', 'ﬤ' => 'כ', 'ﬥ' => 'ל', 'ﬦ' => 'ם', 'ﬧ' => 'ר', 'ﬨ' => 'ת', '﬩' => '+', 'ﭏ' => 'אל', 'ﭐ' => 'ٱ', 'ﭑ' => 'ٱ', 'ﭒ' => 'ٻ', 'ﭓ' => 'ٻ', 'ﭔ' => 'ٻ', 'ﭕ' => 'ٻ', 'ﭖ' => 'پ', 'ﭗ' => 'پ', 'ﭘ' => 'پ', 'ﭙ' => 'پ', 'ﭚ' => 'ڀ', 'ﭛ' => 'ڀ', 'ﭜ' => 'ڀ', 'ﭝ' => 'ڀ', 'ﭞ' => 'ٺ', 'ﭟ' => 'ٺ', 'ﭠ' => 'ٺ', 'ﭡ' => 'ٺ', 'ﭢ' => 'ٿ', 'ﭣ' => 'ٿ', 'ﭤ' => 'ٿ', 'ﭥ' => 'ٿ', 'ﭦ' => 'ٹ', 'ﭧ' => 'ٹ', 'ﭨ' => 'ٹ', 'ﭩ' => 'ٹ', 'ﭪ' => 'ڤ', 'ﭫ' => 'ڤ', 'ﭬ' => 'ڤ', 'ﭭ' => 'ڤ', 'ﭮ' => 'ڦ', 'ﭯ' => 'ڦ', 'ﭰ' => 'ڦ', 'ﭱ' => 'ڦ', 'ﭲ' => 'ڄ', 'ﭳ' => 'ڄ', 'ﭴ' => 'ڄ', 'ﭵ' => 'ڄ', 'ﭶ' => 'ڃ', 'ﭷ' => 'ڃ', 'ﭸ' => 'ڃ', 'ﭹ' => 'ڃ', 'ﭺ' => 'چ', 'ﭻ' => 'چ', 'ﭼ' => 'چ', 'ﭽ' => 'چ', 'ﭾ' => 'ڇ', 'ﭿ' => 'ڇ', 'ﮀ' => 'ڇ', 'ﮁ' => 'ڇ', 'ﮂ' => 'ڍ', 'ﮃ' => 'ڍ', 'ﮄ' => 'ڌ', 'ﮅ' => 'ڌ', 'ﮆ' => 'ڎ', 'ﮇ' => 'ڎ', 'ﮈ' => 'ڈ', 'ﮉ' => 'ڈ', 'ﮊ' => 'ژ', 'ﮋ' => 'ژ', 'ﮌ' => 'ڑ', 'ﮍ' => 'ڑ', 'ﮎ' => 'ک', 'ﮏ' => 'ک', 'ﮐ' => 'ک', 'ﮑ' => 'ک', 'ﮒ' => 'گ', 'ﮓ' => 'گ', 'ﮔ' => 'گ', 'ﮕ' => 'گ', 'ﮖ' => 'ڳ', 'ﮗ' => 'ڳ', 'ﮘ' => 'ڳ', 'ﮙ' => 'ڳ', 'ﮚ' => 'ڱ', 'ﮛ' => 'ڱ', 'ﮜ' => 'ڱ', 'ﮝ' => 'ڱ', 'ﮞ' => 'ں', 'ﮟ' => 'ں', 'ﮠ' => 'ڻ', 'ﮡ' => 'ڻ', 'ﮢ' => 'ڻ', 'ﮣ' => 'ڻ', 'ﮤ' => 'ۀ', 'ﮥ' => 'ۀ', 'ﮦ' => 'ہ', 'ﮧ' => 'ہ', 'ﮨ' => 'ہ', 'ﮩ' => 'ہ', 'ﮪ' => 'ھ', 'ﮫ' => 'ھ', 'ﮬ' => 'ھ', 'ﮭ' => 'ھ', 'ﮮ' => 'ے', 'ﮯ' => 'ے', 'ﮰ' => 'ۓ', 'ﮱ' => 'ۓ', 'ﯓ' => 'ڭ', 'ﯔ' => 'ڭ', 'ﯕ' => 'ڭ', 'ﯖ' => 'ڭ', 'ﯗ' => 'ۇ', 'ﯘ' => 'ۇ', 'ﯙ' => 'ۆ', 'ﯚ' => 'ۆ', 'ﯛ' => 'ۈ', 'ﯜ' => 'ۈ', 'ﯝ' => 'ۇٴ', 'ﯞ' => 'ۋ', 'ﯟ' => 'ۋ', 'ﯠ' => 'ۅ', 'ﯡ' => 'ۅ', 'ﯢ' => 'ۉ', 'ﯣ' => 'ۉ', 'ﯤ' => 'ې', 'ﯥ' => 'ې', 'ﯦ' => 'ې', 'ﯧ' => 'ې', 'ﯨ' => 'ى', 'ﯩ' => 'ى', 'ﯪ' => 'ئا', 'ﯫ' => 'ئا', 'ﯬ' => 'ئە', 'ﯭ' => 'ئە', 'ﯮ' => 'ئو', 'ﯯ' => 'ئو', 'ﯰ' => 'ئۇ', 'ﯱ' => 'ئۇ', 'ﯲ' => 'ئۆ', 'ﯳ' => 'ئۆ', 'ﯴ' => 'ئۈ', 'ﯵ' => 'ئۈ', 'ﯶ' => 'ئې', 'ﯷ' => 'ئې', 'ﯸ' => 'ئې', 'ﯹ' => 'ئى', 'ﯺ' => 'ئى', 'ﯻ' => 'ئى', 'ﯼ' => 'ی', 'ﯽ' => 'ی', 'ﯾ' => 'ی', 'ﯿ' => 'ی', 'ﰀ' => 'ئج', 'ﰁ' => 'ئح', 'ﰂ' => 'ئم', 'ﰃ' => 'ئى', 'ﰄ' => 'ئي', 'ﰅ' => 'بج', 'ﰆ' => 'بح', 'ﰇ' => 'بخ', 'ﰈ' => 'بم', 'ﰉ' => 'بى', 'ﰊ' => 'بي', 'ﰋ' => 'تج', 'ﰌ' => 'تح', 'ﰍ' => 'تخ', 'ﰎ' => 'تم', 'ﰏ' => 'تى', 'ﰐ' => 'تي', 'ﰑ' => 'ثج', 'ﰒ' => 'ثم', 'ﰓ' => 'ثى', 'ﰔ' => 'ثي', 'ﰕ' => 'جح', 'ﰖ' => 'جم', 'ﰗ' => 'حج', 'ﰘ' => 'حم', 'ﰙ' => 'خج', 'ﰚ' => 'خح', 'ﰛ' => 'خم', 'ﰜ' => 'سج', 'ﰝ' => 'سح', 'ﰞ' => 'سخ', 'ﰟ' => 'سم', 'ﰠ' => 'صح', 'ﰡ' => 'صم', 'ﰢ' => 'ضج', 'ﰣ' => 'ضح', 'ﰤ' => 'ضخ', 'ﰥ' => 'ضم', 'ﰦ' => 'طح', 'ﰧ' => 'طم', 'ﰨ' => 'ظم', 'ﰩ' => 'عج', 'ﰪ' => 'عم', 'ﰫ' => 'غج', 'ﰬ' => 'غم', 'ﰭ' => 'فج', 'ﰮ' => 'فح', 'ﰯ' => 'فخ', 'ﰰ' => 'فم', 'ﰱ' => 'فى', 'ﰲ' => 'في', 'ﰳ' => 'قح', 'ﰴ' => 'قم', 'ﰵ' => 'قى', 'ﰶ' => 'قي', 'ﰷ' => 'كا', 'ﰸ' => 'كج', 'ﰹ' => 'كح', 'ﰺ' => 'كخ', 'ﰻ' => 'كل', 'ﰼ' => 'كم', 'ﰽ' => 'كى', 'ﰾ' => 'كي', 'ﰿ' => 'لج', 'ﱀ' => 'لح', 'ﱁ' => 'لخ', 'ﱂ' => 'لم', 'ﱃ' => 'لى', 'ﱄ' => 'لي', 'ﱅ' => 'مج', 'ﱆ' => 'مح', 'ﱇ' => 'مخ', 'ﱈ' => 'مم', 'ﱉ' => 'مى', 'ﱊ' => 'مي', 'ﱋ' => 'نج', 'ﱌ' => 'نح', 'ﱍ' => 'نخ', 'ﱎ' => 'نم', 'ﱏ' => 'نى', 'ﱐ' => 'ني', 'ﱑ' => 'هج', 'ﱒ' => 'هم', 'ﱓ' => 'هى', 'ﱔ' => 'هي', 'ﱕ' => 'يج', 'ﱖ' => 'يح', 'ﱗ' => 'يخ', 'ﱘ' => 'يم', 'ﱙ' => 'يى', 'ﱚ' => 'يي', 'ﱛ' => 'ذٰ', 'ﱜ' => 'رٰ', 'ﱝ' => 'ىٰ', 'ﱞ' => ' ٌّ', 'ﱟ' => ' ٍّ', 'ﱠ' => ' َّ', 'ﱡ' => ' ُّ', 'ﱢ' => ' ِّ', 'ﱣ' => ' ّٰ', 'ﱤ' => 'ئر', 'ﱥ' => 'ئز', 'ﱦ' => 'ئم', 'ﱧ' => 'ئن', 'ﱨ' => 'ئى', 'ﱩ' => 'ئي', 'ﱪ' => 'بر', 'ﱫ' => 'بز', 'ﱬ' => 'بم', 'ﱭ' => 'بن', 'ﱮ' => 'بى', 'ﱯ' => 'بي', 'ﱰ' => 'تر', 'ﱱ' => 'تز', 'ﱲ' => 'تم', 'ﱳ' => 'تن', 'ﱴ' => 'تى', 'ﱵ' => 'تي', 'ﱶ' => 'ثر', 'ﱷ' => 'ثز', 'ﱸ' => 'ثم', 'ﱹ' => 'ثن', 'ﱺ' => 'ثى', 'ﱻ' => 'ثي', 'ﱼ' => 'فى', 'ﱽ' => 'في', 'ﱾ' => 'قى', 'ﱿ' => 'قي', 'ﲀ' => 'كا', 'ﲁ' => 'كل', 'ﲂ' => 'كم', 'ﲃ' => 'كى', 'ﲄ' => 'كي', 'ﲅ' => 'لم', 'ﲆ' => 'لى', 'ﲇ' => 'لي', 'ﲈ' => 'ما', 'ﲉ' => 'مم', 'ﲊ' => 'نر', 'ﲋ' => 'نز', 'ﲌ' => 'نم', 'ﲍ' => 'نن', 'ﲎ' => 'نى', 'ﲏ' => 'ني', 'ﲐ' => 'ىٰ', 'ﲑ' => 'ير', 'ﲒ' => 'يز', 'ﲓ' => 'يم', 'ﲔ' => 'ين', 'ﲕ' => 'يى', 'ﲖ' => 'يي', 'ﲗ' => 'ئج', 'ﲘ' => 'ئح', 'ﲙ' => 'ئخ', 'ﲚ' => 'ئم', 'ﲛ' => 'ئه', 'ﲜ' => 'بج', 'ﲝ' => 'بح', 'ﲞ' => 'بخ', 'ﲟ' => 'بم', 'ﲠ' => 'به', 'ﲡ' => 'تج', 'ﲢ' => 'تح', 'ﲣ' => 'تخ', 'ﲤ' => 'تم', 'ﲥ' => 'ته', 'ﲦ' => 'ثم', 'ﲧ' => 'جح', 'ﲨ' => 'جم', 'ﲩ' => 'حج', 'ﲪ' => 'حم', 'ﲫ' => 'خج', 'ﲬ' => 'خم', 'ﲭ' => 'سج', 'ﲮ' => 'سح', 'ﲯ' => 'سخ', 'ﲰ' => 'سم', 'ﲱ' => 'صح', 'ﲲ' => 'صخ', 'ﲳ' => 'صم', 'ﲴ' => 'ضج', 'ﲵ' => 'ضح', 'ﲶ' => 'ضخ', 'ﲷ' => 'ضم', 'ﲸ' => 'طح', 'ﲹ' => 'ظم', 'ﲺ' => 'عج', 'ﲻ' => 'عم', 'ﲼ' => 'غج', 'ﲽ' => 'غم', 'ﲾ' => 'فج', 'ﲿ' => 'فح', 'ﳀ' => 'فخ', 'ﳁ' => 'فم', 'ﳂ' => 'قح', 'ﳃ' => 'قم', 'ﳄ' => 'كج', 'ﳅ' => 'كح', 'ﳆ' => 'كخ', 'ﳇ' => 'كل', 'ﳈ' => 'كم', 'ﳉ' => 'لج', 'ﳊ' => 'لح', 'ﳋ' => 'لخ', 'ﳌ' => 'لم', 'ﳍ' => 'له', 'ﳎ' => 'مج', 'ﳏ' => 'مح', 'ﳐ' => 'مخ', 'ﳑ' => 'مم', 'ﳒ' => 'نج', 'ﳓ' => 'نح', 'ﳔ' => 'نخ', 'ﳕ' => 'نم', 'ﳖ' => 'نه', 'ﳗ' => 'هج', 'ﳘ' => 'هم', 'ﳙ' => 'هٰ', 'ﳚ' => 'يج', 'ﳛ' => 'يح', 'ﳜ' => 'يخ', 'ﳝ' => 'يم', 'ﳞ' => 'يه', 'ﳟ' => 'ئم', 'ﳠ' => 'ئه', 'ﳡ' => 'بم', 'ﳢ' => 'به', 'ﳣ' => 'تم', 'ﳤ' => 'ته', 'ﳥ' => 'ثم', 'ﳦ' => 'ثه', 'ﳧ' => 'سم', 'ﳨ' => 'سه', 'ﳩ' => 'شم', 'ﳪ' => 'شه', 'ﳫ' => 'كل', 'ﳬ' => 'كم', 'ﳭ' => 'لم', 'ﳮ' => 'نم', 'ﳯ' => 'نه', 'ﳰ' => 'يم', 'ﳱ' => 'يه', 'ﳲ' => 'ـَّ', 'ﳳ' => 'ـُّ', 'ﳴ' => 'ـِّ', 'ﳵ' => 'طى', 'ﳶ' => 'طي', 'ﳷ' => 'عى', 'ﳸ' => 'عي', 'ﳹ' => 'غى', 'ﳺ' => 'غي', 'ﳻ' => 'سى', 'ﳼ' => 'سي', 'ﳽ' => 'شى', 'ﳾ' => 'شي', 'ﳿ' => 'حى', 'ﴀ' => 'حي', 'ﴁ' => 'جى', 'ﴂ' => 'جي', 'ﴃ' => 'خى', 'ﴄ' => 'خي', 'ﴅ' => 'صى', 'ﴆ' => 'صي', 'ﴇ' => 'ضى', 'ﴈ' => 'ضي', 'ﴉ' => 'شج', 'ﴊ' => 'شح', 'ﴋ' => 'شخ', 'ﴌ' => 'شم', 'ﴍ' => 'شر', 'ﴎ' => 'سر', 'ﴏ' => 'صر', 'ﴐ' => 'ضر', 'ﴑ' => 'طى', 'ﴒ' => 'طي', 'ﴓ' => 'عى', 'ﴔ' => 'عي', 'ﴕ' => 'غى', 'ﴖ' => 'غي', 'ﴗ' => 'سى', 'ﴘ' => 'سي', 'ﴙ' => 'شى', 'ﴚ' => 'شي', 'ﴛ' => 'حى', 'ﴜ' => 'حي', 'ﴝ' => 'جى', 'ﴞ' => 'جي', 'ﴟ' => 'خى', 'ﴠ' => 'خي', 'ﴡ' => 'صى', 'ﴢ' => 'صي', 'ﴣ' => 'ضى', 'ﴤ' => 'ضي', 'ﴥ' => 'شج', 'ﴦ' => 'شح', 'ﴧ' => 'شخ', 'ﴨ' => 'شم', 'ﴩ' => 'شر', 'ﴪ' => 'سر', 'ﴫ' => 'صر', 'ﴬ' => 'ضر', 'ﴭ' => 'شج', 'ﴮ' => 'شح', 'ﴯ' => 'شخ', 'ﴰ' => 'شم', 'ﴱ' => 'سه', 'ﴲ' => 'شه', 'ﴳ' => 'طم', 'ﴴ' => 'سج', 'ﴵ' => 'سح', 'ﴶ' => 'سخ', 'ﴷ' => 'شج', 'ﴸ' => 'شح', 'ﴹ' => 'شخ', 'ﴺ' => 'طم', 'ﴻ' => 'ظم', 'ﴼ' => 'اً', 'ﴽ' => 'اً', 'ﵐ' => 'تجم', 'ﵑ' => 'تحج', 'ﵒ' => 'تحج', 'ﵓ' => 'تحم', 'ﵔ' => 'تخم', 'ﵕ' => 'تمج', 'ﵖ' => 'تمح', 'ﵗ' => 'تمخ', 'ﵘ' => 'جمح', 'ﵙ' => 'جمح', 'ﵚ' => 'حمي', 'ﵛ' => 'حمى', 'ﵜ' => 'سحج', 'ﵝ' => 'سجح', 'ﵞ' => 'سجى', 'ﵟ' => 'سمح', 'ﵠ' => 'سمح', 'ﵡ' => 'سمج', 'ﵢ' => 'سمم', 'ﵣ' => 'سمم', 'ﵤ' => 'صحح', 'ﵥ' => 'صحح', 'ﵦ' => 'صمم', 'ﵧ' => 'شحم', 'ﵨ' => 'شحم', 'ﵩ' => 'شجي', 'ﵪ' => 'شمخ', 'ﵫ' => 'شمخ', 'ﵬ' => 'شمم', 'ﵭ' => 'شمم', 'ﵮ' => 'ضحى', 'ﵯ' => 'ضخم', 'ﵰ' => 'ضخم', 'ﵱ' => 'طمح', 'ﵲ' => 'طمح', 'ﵳ' => 'طمم', 'ﵴ' => 'طمي', 'ﵵ' => 'عجم', 'ﵶ' => 'عمم', 'ﵷ' => 'عمم', 'ﵸ' => 'عمى', 'ﵹ' => 'غمم', 'ﵺ' => 'غمي', 'ﵻ' => 'غمى', 'ﵼ' => 'فخم', 'ﵽ' => 'فخم', 'ﵾ' => 'قمح', 'ﵿ' => 'قمم', 'ﶀ' => 'لحم', 'ﶁ' => 'لحي', 'ﶂ' => 'لحى', 'ﶃ' => 'لجج', 'ﶄ' => 'لجج', 'ﶅ' => 'لخم', 'ﶆ' => 'لخم', 'ﶇ' => 'لمح', 'ﶈ' => 'لمح', 'ﶉ' => 'محج', 'ﶊ' => 'محم', 'ﶋ' => 'محي', 'ﶌ' => 'مجح', 'ﶍ' => 'مجم', 'ﶎ' => 'مخج', 'ﶏ' => 'مخم', 'ﶒ' => 'مجخ', 'ﶓ' => 'همج', 'ﶔ' => 'همم', 'ﶕ' => 'نحم', 'ﶖ' => 'نحى', 'ﶗ' => 'نجم', 'ﶘ' => 'نجم', 'ﶙ' => 'نجى', 'ﶚ' => 'نمي', 'ﶛ' => 'نمى', 'ﶜ' => 'يمم', 'ﶝ' => 'يمم', 'ﶞ' => 'بخي', 'ﶟ' => 'تجي', 'ﶠ' => 'تجى', 'ﶡ' => 'تخي', 'ﶢ' => 'تخى', 'ﶣ' => 'تمي', 'ﶤ' => 'تمى', 'ﶥ' => 'جمي', 'ﶦ' => 'جحى', 'ﶧ' => 'جمى', 'ﶨ' => 'سخى', 'ﶩ' => 'صحي', 'ﶪ' => 'شحي', 'ﶫ' => 'ضحي', 'ﶬ' => 'لجي', 'ﶭ' => 'لمي', 'ﶮ' => 'يحي', 'ﶯ' => 'يجي', 'ﶰ' => 'يمي', 'ﶱ' => 'ممي', 'ﶲ' => 'قمي', 'ﶳ' => 'نحي', 'ﶴ' => 'قمح', 'ﶵ' => 'لحم', 'ﶶ' => 'عمي', 'ﶷ' => 'كمي', 'ﶸ' => 'نجح', 'ﶹ' => 'مخي', 'ﶺ' => 'لجم', 'ﶻ' => 'كمم', 'ﶼ' => 'لجم', 'ﶽ' => 'نجح', 'ﶾ' => 'جحي', 'ﶿ' => 'حجي', 'ﷀ' => 'مجي', 'ﷁ' => 'فمي', 'ﷂ' => 'بحي', 'ﷃ' => 'كمم', 'ﷄ' => 'عجم', 'ﷅ' => 'صمم', 'ﷆ' => 'سخي', 'ﷇ' => 'نجي', 'ﷰ' => 'صلے', 'ﷱ' => 'قلے', 'ﷲ' => 'الله', 'ﷳ' => 'اكبر', 'ﷴ' => 'محمد', 'ﷵ' => 'صلعم', 'ﷶ' => 'رسول', 'ﷷ' => 'عليه', 'ﷸ' => 'وسلم', 'ﷹ' => 'صلى', 'ﷺ' => 'صلى الله عليه وسلم', 'ﷻ' => 'جل جلاله', '﷼' => 'ریال', '︐' => ',', '︑' => '、', '︒' => '。', '︓' => ':', '︔' => ';', '︕' => '!', '︖' => '?', '︗' => '〖', '︘' => '〗', '︙' => '...', '︰' => '..', '︱' => '—', '︲' => '–', '︳' => '_', '︴' => '_', '︵' => '(', '︶' => ')', '︷' => '{', '︸' => '}', '︹' => '〔', '︺' => '〕', '︻' => '【', '︼' => '】', '︽' => '《', '︾' => '》', '︿' => '〈', '﹀' => '〉', '﹁' => '「', '﹂' => '」', '﹃' => '『', '﹄' => '』', '﹇' => '[', '﹈' => ']', '﹉' => ' ̅', '﹊' => ' ̅', '﹋' => ' ̅', '﹌' => ' ̅', '﹍' => '_', '﹎' => '_', '﹏' => '_', '﹐' => ',', '﹑' => '、', '﹒' => '.', '﹔' => ';', '﹕' => ':', '﹖' => '?', '﹗' => '!', '﹘' => '—', '﹙' => '(', '﹚' => ')', '﹛' => '{', '﹜' => '}', '﹝' => '〔', '﹞' => '〕', '﹟' => '#', '﹠' => '&', '﹡' => '*', '﹢' => '+', '﹣' => '-', '﹤' => '<', '﹥' => '>', '﹦' => '=', '﹨' => '\\', '﹩' => '$', '﹪' => '%', '﹫' => '@', 'ﹰ' => ' ً', 'ﹱ' => 'ـً', 'ﹲ' => ' ٌ', 'ﹴ' => ' ٍ', 'ﹶ' => ' َ', 'ﹷ' => 'ـَ', 'ﹸ' => ' ُ', 'ﹹ' => 'ـُ', 'ﹺ' => ' ِ', 'ﹻ' => 'ـِ', 'ﹼ' => ' ّ', 'ﹽ' => 'ـّ', 'ﹾ' => ' ْ', 'ﹿ' => 'ـْ', 'ﺀ' => 'ء', 'ﺁ' => 'آ', 'ﺂ' => 'آ', 'ﺃ' => 'أ', 'ﺄ' => 'أ', 'ﺅ' => 'ؤ', 'ﺆ' => 'ؤ', 'ﺇ' => 'إ', 'ﺈ' => 'إ', 'ﺉ' => 'ئ', 'ﺊ' => 'ئ', 'ﺋ' => 'ئ', 'ﺌ' => 'ئ', 'ﺍ' => 'ا', 'ﺎ' => 'ا', 'ﺏ' => 'ب', 'ﺐ' => 'ب', 'ﺑ' => 'ب', 'ﺒ' => 'ب', 'ﺓ' => 'ة', 'ﺔ' => 'ة', 'ﺕ' => 'ت', 'ﺖ' => 'ت', 'ﺗ' => 'ت', 'ﺘ' => 'ت', 'ﺙ' => 'ث', 'ﺚ' => 'ث', 'ﺛ' => 'ث', 'ﺜ' => 'ث', 'ﺝ' => 'ج', 'ﺞ' => 'ج', 'ﺟ' => 'ج', 'ﺠ' => 'ج', 'ﺡ' => 'ح', 'ﺢ' => 'ح', 'ﺣ' => 'ح', 'ﺤ' => 'ح', 'ﺥ' => 'خ', 'ﺦ' => 'خ', 'ﺧ' => 'خ', 'ﺨ' => 'خ', 'ﺩ' => 'د', 'ﺪ' => 'د', 'ﺫ' => 'ذ', 'ﺬ' => 'ذ', 'ﺭ' => 'ر', 'ﺮ' => 'ر', 'ﺯ' => 'ز', 'ﺰ' => 'ز', 'ﺱ' => 'س', 'ﺲ' => 'س', 'ﺳ' => 'س', 'ﺴ' => 'س', 'ﺵ' => 'ش', 'ﺶ' => 'ش', 'ﺷ' => 'ش', 'ﺸ' => 'ش', 'ﺹ' => 'ص', 'ﺺ' => 'ص', 'ﺻ' => 'ص', 'ﺼ' => 'ص', 'ﺽ' => 'ض', 'ﺾ' => 'ض', 'ﺿ' => 'ض', 'ﻀ' => 'ض', 'ﻁ' => 'ط', 'ﻂ' => 'ط', 'ﻃ' => 'ط', 'ﻄ' => 'ط', 'ﻅ' => 'ظ', 'ﻆ' => 'ظ', 'ﻇ' => 'ظ', 'ﻈ' => 'ظ', 'ﻉ' => 'ع', 'ﻊ' => 'ع', 'ﻋ' => 'ع', 'ﻌ' => 'ع', 'ﻍ' => 'غ', 'ﻎ' => 'غ', 'ﻏ' => 'غ', 'ﻐ' => 'غ', 'ﻑ' => 'ف', 'ﻒ' => 'ف', 'ﻓ' => 'ف', 'ﻔ' => 'ف', 'ﻕ' => 'ق', 'ﻖ' => 'ق', 'ﻗ' => 'ق', 'ﻘ' => 'ق', 'ﻙ' => 'ك', 'ﻚ' => 'ك', 'ﻛ' => 'ك', 'ﻜ' => 'ك', 'ﻝ' => 'ل', 'ﻞ' => 'ل', 'ﻟ' => 'ل', 'ﻠ' => 'ل', 'ﻡ' => 'م', 'ﻢ' => 'م', 'ﻣ' => 'م', 'ﻤ' => 'م', 'ﻥ' => 'ن', 'ﻦ' => 'ن', 'ﻧ' => 'ن', 'ﻨ' => 'ن', 'ﻩ' => 'ه', 'ﻪ' => 'ه', 'ﻫ' => 'ه', 'ﻬ' => 'ه', 'ﻭ' => 'و', 'ﻮ' => 'و', 'ﻯ' => 'ى', 'ﻰ' => 'ى', 'ﻱ' => 'ي', 'ﻲ' => 'ي', 'ﻳ' => 'ي', 'ﻴ' => 'ي', 'ﻵ' => 'لآ', 'ﻶ' => 'لآ', 'ﻷ' => 'لأ', 'ﻸ' => 'لأ', 'ﻹ' => 'لإ', 'ﻺ' => 'لإ', 'ﻻ' => 'لا', 'ﻼ' => 'لا', '!' => '!', '"' => '"', '#' => '#', '$' => '$', '%' => '%', '&' => '&', ''' => '\'', '(' => '(', ')' => ')', '*' => '*', '+' => '+', ',' => ',', '-' => '-', '.' => '.', '/' => '/', '0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', ':' => ':', ';' => ';', '<' => '<', '=' => '=', '>' => '>', '?' => '?', '@' => '@', 'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E', 'F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J', 'K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O', 'P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T', 'U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y', 'Z' => 'Z', '[' => '[', '\' => '\\', ']' => ']', '^' => '^', '_' => '_', '`' => '`', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd', 'e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i', 'j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n', 'o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's', 't' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x', 'y' => 'y', 'z' => 'z', '{' => '{', '|' => '|', '}' => '}', '~' => '~', '⦅' => '⦅', '⦆' => '⦆', '。' => '。', '「' => '「', '」' => '」', '、' => '、', '・' => '・', 'ヲ' => 'ヲ', 'ァ' => 'ァ', 'ィ' => 'ィ', 'ゥ' => 'ゥ', 'ェ' => 'ェ', 'ォ' => 'ォ', 'ャ' => 'ャ', 'ュ' => 'ュ', 'ョ' => 'ョ', 'ッ' => 'ッ', 'ー' => 'ー', 'ア' => 'ア', 'イ' => 'イ', 'ウ' => 'ウ', 'エ' => 'エ', 'オ' => 'オ', 'カ' => 'カ', 'キ' => 'キ', 'ク' => 'ク', 'ケ' => 'ケ', 'コ' => 'コ', 'サ' => 'サ', 'シ' => 'シ', 'ス' => 'ス', 'セ' => 'セ', 'ソ' => 'ソ', 'タ' => 'タ', 'チ' => 'チ', 'ツ' => 'ツ', 'テ' => 'テ', 'ト' => 'ト', 'ナ' => 'ナ', 'ニ' => 'ニ', 'ヌ' => 'ヌ', 'ネ' => 'ネ', 'ノ' => 'ノ', 'ハ' => 'ハ', 'ヒ' => 'ヒ', 'フ' => 'フ', 'ヘ' => 'ヘ', 'ホ' => 'ホ', 'マ' => 'マ', 'ミ' => 'ミ', 'ム' => 'ム', 'メ' => 'メ', 'モ' => 'モ', 'ヤ' => 'ヤ', 'ユ' => 'ユ', 'ヨ' => 'ヨ', 'ラ' => 'ラ', 'リ' => 'リ', 'ル' => 'ル', 'レ' => 'レ', 'ロ' => 'ロ', 'ワ' => 'ワ', 'ン' => 'ン', '゙' => '゙', '゚' => '゚', 'ᅠ' => 'ᅠ', 'ᄀ' => 'ᄀ', 'ᄁ' => 'ᄁ', 'ᆪ' => 'ᆪ', 'ᄂ' => 'ᄂ', 'ᆬ' => 'ᆬ', 'ᆭ' => 'ᆭ', 'ᄃ' => 'ᄃ', 'ᄄ' => 'ᄄ', 'ᄅ' => 'ᄅ', 'ᆰ' => 'ᆰ', 'ᆱ' => 'ᆱ', 'ᆲ' => 'ᆲ', 'ᆳ' => 'ᆳ', 'ᆴ' => 'ᆴ', 'ᆵ' => 'ᆵ', 'ᄚ' => 'ᄚ', 'ᄆ' => 'ᄆ', 'ᄇ' => 'ᄇ', 'ᄈ' => 'ᄈ', 'ᄡ' => 'ᄡ', 'ᄉ' => 'ᄉ', 'ᄊ' => 'ᄊ', 'ᄋ' => 'ᄋ', 'ᄌ' => 'ᄌ', 'ᄍ' => 'ᄍ', 'ᄎ' => 'ᄎ', 'ᄏ' => 'ᄏ', 'ᄐ' => 'ᄐ', 'ᄑ' => 'ᄑ', 'ᄒ' => 'ᄒ', 'ᅡ' => 'ᅡ', 'ᅢ' => 'ᅢ', 'ᅣ' => 'ᅣ', 'ᅤ' => 'ᅤ', 'ᅥ' => 'ᅥ', 'ᅦ' => 'ᅦ', 'ᅧ' => 'ᅧ', 'ᅨ' => 'ᅨ', 'ᅩ' => 'ᅩ', 'ᅪ' => 'ᅪ', 'ᅫ' => 'ᅫ', 'ᅬ' => 'ᅬ', 'ᅭ' => 'ᅭ', 'ᅮ' => 'ᅮ', 'ᅯ' => 'ᅯ', 'ᅰ' => 'ᅰ', 'ᅱ' => 'ᅱ', 'ᅲ' => 'ᅲ', 'ᅳ' => 'ᅳ', 'ᅴ' => 'ᅴ', 'ᅵ' => 'ᅵ', '¢' => '¢', '£' => '£', '¬' => '¬', ' ̄' => ' ̄', '¦' => '¦', '¥' => '¥', '₩' => '₩', '│' => '│', '←' => '←', '↑' => '↑', '→' => '→', '↓' => '↓', '■' => '■', '○' => '○', '𝐀' => 'A', '𝐁' => 'B', '𝐂' => 'C', '𝐃' => 'D', '𝐄' => 'E', '𝐅' => 'F', '𝐆' => 'G', '𝐇' => 'H', '𝐈' => 'I', '𝐉' => 'J', '𝐊' => 'K', '𝐋' => 'L', '𝐌' => 'M', '𝐍' => 'N', '𝐎' => 'O', '𝐏' => 'P', '𝐐' => 'Q', '𝐑' => 'R', '𝐒' => 'S', '𝐓' => 'T', '𝐔' => 'U', '𝐕' => 'V', '𝐖' => 'W', '𝐗' => 'X', '𝐘' => 'Y', '𝐙' => 'Z', '𝐚' => 'a', '𝐛' => 'b', '𝐜' => 'c', '𝐝' => 'd', '𝐞' => 'e', '𝐟' => 'f', '𝐠' => 'g', '𝐡' => 'h', '𝐢' => 'i', '𝐣' => 'j', '𝐤' => 'k', '𝐥' => 'l', '𝐦' => 'm', '𝐧' => 'n', '𝐨' => 'o', '𝐩' => 'p', '𝐪' => 'q', '𝐫' => 'r', '𝐬' => 's', '𝐭' => 't', '𝐮' => 'u', '𝐯' => 'v', '𝐰' => 'w', '𝐱' => 'x', '𝐲' => 'y', '𝐳' => 'z', '𝐴' => 'A', '𝐵' => 'B', '𝐶' => 'C', '𝐷' => 'D', '𝐸' => 'E', '𝐹' => 'F', '𝐺' => 'G', '𝐻' => 'H', '𝐼' => 'I', '𝐽' => 'J', '𝐾' => 'K', '𝐿' => 'L', '𝑀' => 'M', '𝑁' => 'N', '𝑂' => 'O', '𝑃' => 'P', '𝑄' => 'Q', '𝑅' => 'R', '𝑆' => 'S', '𝑇' => 'T', '𝑈' => 'U', '𝑉' => 'V', '𝑊' => 'W', '𝑋' => 'X', '𝑌' => 'Y', '𝑍' => 'Z', '𝑎' => 'a', '𝑏' => 'b', '𝑐' => 'c', '𝑑' => 'd', '𝑒' => 'e', '𝑓' => 'f', '𝑔' => 'g', '𝑖' => 'i', '𝑗' => 'j', '𝑘' => 'k', '𝑙' => 'l', '𝑚' => 'm', '𝑛' => 'n', '𝑜' => 'o', '𝑝' => 'p', '𝑞' => 'q', '𝑟' => 'r', '𝑠' => 's', '𝑡' => 't', '𝑢' => 'u', '𝑣' => 'v', '𝑤' => 'w', '𝑥' => 'x', '𝑦' => 'y', '𝑧' => 'z', '𝑨' => 'A', '𝑩' => 'B', '𝑪' => 'C', '𝑫' => 'D', '𝑬' => 'E', '𝑭' => 'F', '𝑮' => 'G', '𝑯' => 'H', '𝑰' => 'I', '𝑱' => 'J', '𝑲' => 'K', '𝑳' => 'L', '𝑴' => 'M', '𝑵' => 'N', '𝑶' => 'O', '𝑷' => 'P', '𝑸' => 'Q', '𝑹' => 'R', '𝑺' => 'S', '𝑻' => 'T', '𝑼' => 'U', '𝑽' => 'V', '𝑾' => 'W', '𝑿' => 'X', '𝒀' => 'Y', '𝒁' => 'Z', '𝒂' => 'a', '𝒃' => 'b', '𝒄' => 'c', '𝒅' => 'd', '𝒆' => 'e', '𝒇' => 'f', '𝒈' => 'g', '𝒉' => 'h', '𝒊' => 'i', '𝒋' => 'j', '𝒌' => 'k', '𝒍' => 'l', '𝒎' => 'm', '𝒏' => 'n', '𝒐' => 'o', '𝒑' => 'p', '𝒒' => 'q', '𝒓' => 'r', '𝒔' => 's', '𝒕' => 't', '𝒖' => 'u', '𝒗' => 'v', '𝒘' => 'w', '𝒙' => 'x', '𝒚' => 'y', '𝒛' => 'z', '𝒜' => 'A', '𝒞' => 'C', '𝒟' => 'D', '𝒢' => 'G', '𝒥' => 'J', '𝒦' => 'K', '𝒩' => 'N', '𝒪' => 'O', '𝒫' => 'P', '𝒬' => 'Q', '𝒮' => 'S', '𝒯' => 'T', '𝒰' => 'U', '𝒱' => 'V', '𝒲' => 'W', '𝒳' => 'X', '𝒴' => 'Y', '𝒵' => 'Z', '𝒶' => 'a', '𝒷' => 'b', '𝒸' => 'c', '𝒹' => 'd', '𝒻' => 'f', '𝒽' => 'h', '𝒾' => 'i', '𝒿' => 'j', '𝓀' => 'k', '𝓁' => 'l', '𝓂' => 'm', '𝓃' => 'n', '𝓅' => 'p', '𝓆' => 'q', '𝓇' => 'r', '𝓈' => 's', '𝓉' => 't', '𝓊' => 'u', '𝓋' => 'v', '𝓌' => 'w', '𝓍' => 'x', '𝓎' => 'y', '𝓏' => 'z', '𝓐' => 'A', '𝓑' => 'B', '𝓒' => 'C', '𝓓' => 'D', '𝓔' => 'E', '𝓕' => 'F', '𝓖' => 'G', '𝓗' => 'H', '𝓘' => 'I', '𝓙' => 'J', '𝓚' => 'K', '𝓛' => 'L', '𝓜' => 'M', '𝓝' => 'N', '𝓞' => 'O', '𝓟' => 'P', '𝓠' => 'Q', '𝓡' => 'R', '𝓢' => 'S', '𝓣' => 'T', '𝓤' => 'U', '𝓥' => 'V', '𝓦' => 'W', '𝓧' => 'X', '𝓨' => 'Y', '𝓩' => 'Z', '𝓪' => 'a', '𝓫' => 'b', '𝓬' => 'c', '𝓭' => 'd', '𝓮' => 'e', '𝓯' => 'f', '𝓰' => 'g', '𝓱' => 'h', '𝓲' => 'i', '𝓳' => 'j', '𝓴' => 'k', '𝓵' => 'l', '𝓶' => 'm', '𝓷' => 'n', '𝓸' => 'o', '𝓹' => 'p', '𝓺' => 'q', '𝓻' => 'r', '𝓼' => 's', '𝓽' => 't', '𝓾' => 'u', '𝓿' => 'v', '𝔀' => 'w', '𝔁' => 'x', '𝔂' => 'y', '𝔃' => 'z', '𝔄' => 'A', '𝔅' => 'B', '𝔇' => 'D', '𝔈' => 'E', '𝔉' => 'F', '𝔊' => 'G', '𝔍' => 'J', '𝔎' => 'K', '𝔏' => 'L', '𝔐' => 'M', '𝔑' => 'N', '𝔒' => 'O', '𝔓' => 'P', '𝔔' => 'Q', '𝔖' => 'S', '𝔗' => 'T', '𝔘' => 'U', '𝔙' => 'V', '𝔚' => 'W', '𝔛' => 'X', '𝔜' => 'Y', '𝔞' => 'a', '𝔟' => 'b', '𝔠' => 'c', '𝔡' => 'd', '𝔢' => 'e', '𝔣' => 'f', '𝔤' => 'g', '𝔥' => 'h', '𝔦' => 'i', '𝔧' => 'j', '𝔨' => 'k', '𝔩' => 'l', '𝔪' => 'm', '𝔫' => 'n', '𝔬' => 'o', '𝔭' => 'p', '𝔮' => 'q', '𝔯' => 'r', '𝔰' => 's', '𝔱' => 't', '𝔲' => 'u', '𝔳' => 'v', '𝔴' => 'w', '𝔵' => 'x', '𝔶' => 'y', '𝔷' => 'z', '𝔸' => 'A', '𝔹' => 'B', '𝔻' => 'D', '𝔼' => 'E', '𝔽' => 'F', '𝔾' => 'G', '𝕀' => 'I', '𝕁' => 'J', '𝕂' => 'K', '𝕃' => 'L', '𝕄' => 'M', '𝕆' => 'O', '𝕊' => 'S', '𝕋' => 'T', '𝕌' => 'U', '𝕍' => 'V', '𝕎' => 'W', '𝕏' => 'X', '𝕐' => 'Y', '𝕒' => 'a', '𝕓' => 'b', '𝕔' => 'c', '𝕕' => 'd', '𝕖' => 'e', '𝕗' => 'f', '𝕘' => 'g', '𝕙' => 'h', '𝕚' => 'i', '𝕛' => 'j', '𝕜' => 'k', '𝕝' => 'l', '𝕞' => 'm', '𝕟' => 'n', '𝕠' => 'o', '𝕡' => 'p', '𝕢' => 'q', '𝕣' => 'r', '𝕤' => 's', '𝕥' => 't', '𝕦' => 'u', '𝕧' => 'v', '𝕨' => 'w', '𝕩' => 'x', '𝕪' => 'y', '𝕫' => 'z', '𝕬' => 'A', '𝕭' => 'B', '𝕮' => 'C', '𝕯' => 'D', '𝕰' => 'E', '𝕱' => 'F', '𝕲' => 'G', '𝕳' => 'H', '𝕴' => 'I', '𝕵' => 'J', '𝕶' => 'K', '𝕷' => 'L', '𝕸' => 'M', '𝕹' => 'N', '𝕺' => 'O', '𝕻' => 'P', '𝕼' => 'Q', '𝕽' => 'R', '𝕾' => 'S', '𝕿' => 'T', '𝖀' => 'U', '𝖁' => 'V', '𝖂' => 'W', '𝖃' => 'X', '𝖄' => 'Y', '𝖅' => 'Z', '𝖆' => 'a', '𝖇' => 'b', '𝖈' => 'c', '𝖉' => 'd', '𝖊' => 'e', '𝖋' => 'f', '𝖌' => 'g', '𝖍' => 'h', '𝖎' => 'i', '𝖏' => 'j', '𝖐' => 'k', '𝖑' => 'l', '𝖒' => 'm', '𝖓' => 'n', '𝖔' => 'o', '𝖕' => 'p', '𝖖' => 'q', '𝖗' => 'r', '𝖘' => 's', '𝖙' => 't', '𝖚' => 'u', '𝖛' => 'v', '𝖜' => 'w', '𝖝' => 'x', '𝖞' => 'y', '𝖟' => 'z', '𝖠' => 'A', '𝖡' => 'B', '𝖢' => 'C', '𝖣' => 'D', '𝖤' => 'E', '𝖥' => 'F', '𝖦' => 'G', '𝖧' => 'H', '𝖨' => 'I', '𝖩' => 'J', '𝖪' => 'K', '𝖫' => 'L', '𝖬' => 'M', '𝖭' => 'N', '𝖮' => 'O', '𝖯' => 'P', '𝖰' => 'Q', '𝖱' => 'R', '𝖲' => 'S', '𝖳' => 'T', '𝖴' => 'U', '𝖵' => 'V', '𝖶' => 'W', '𝖷' => 'X', '𝖸' => 'Y', '𝖹' => 'Z', '𝖺' => 'a', '𝖻' => 'b', '𝖼' => 'c', '𝖽' => 'd', '𝖾' => 'e', '𝖿' => 'f', '𝗀' => 'g', '𝗁' => 'h', '𝗂' => 'i', '𝗃' => 'j', '𝗄' => 'k', '𝗅' => 'l', '𝗆' => 'm', '𝗇' => 'n', '𝗈' => 'o', '𝗉' => 'p', '𝗊' => 'q', '𝗋' => 'r', '𝗌' => 's', '𝗍' => 't', '𝗎' => 'u', '𝗏' => 'v', '𝗐' => 'w', '𝗑' => 'x', '𝗒' => 'y', '𝗓' => 'z', '𝗔' => 'A', '𝗕' => 'B', '𝗖' => 'C', '𝗗' => 'D', '𝗘' => 'E', '𝗙' => 'F', '𝗚' => 'G', '𝗛' => 'H', '𝗜' => 'I', '𝗝' => 'J', '𝗞' => 'K', '𝗟' => 'L', '𝗠' => 'M', '𝗡' => 'N', '𝗢' => 'O', '𝗣' => 'P', '𝗤' => 'Q', '𝗥' => 'R', '𝗦' => 'S', '𝗧' => 'T', '𝗨' => 'U', '𝗩' => 'V', '𝗪' => 'W', '𝗫' => 'X', '𝗬' => 'Y', '𝗭' => 'Z', '𝗮' => 'a', '𝗯' => 'b', '𝗰' => 'c', '𝗱' => 'd', '𝗲' => 'e', '𝗳' => 'f', '𝗴' => 'g', '𝗵' => 'h', '𝗶' => 'i', '𝗷' => 'j', '𝗸' => 'k', '𝗹' => 'l', '𝗺' => 'm', '𝗻' => 'n', '𝗼' => 'o', '𝗽' => 'p', '𝗾' => 'q', '𝗿' => 'r', '𝘀' => 's', '𝘁' => 't', '𝘂' => 'u', '𝘃' => 'v', '𝘄' => 'w', '𝘅' => 'x', '𝘆' => 'y', '𝘇' => 'z', '𝘈' => 'A', '𝘉' => 'B', '𝘊' => 'C', '𝘋' => 'D', '𝘌' => 'E', '𝘍' => 'F', '𝘎' => 'G', '𝘏' => 'H', '𝘐' => 'I', '𝘑' => 'J', '𝘒' => 'K', '𝘓' => 'L', '𝘔' => 'M', '𝘕' => 'N', '𝘖' => 'O', '𝘗' => 'P', '𝘘' => 'Q', '𝘙' => 'R', '𝘚' => 'S', '𝘛' => 'T', '𝘜' => 'U', '𝘝' => 'V', '𝘞' => 'W', '𝘟' => 'X', '𝘠' => 'Y', '𝘡' => 'Z', '𝘢' => 'a', '𝘣' => 'b', '𝘤' => 'c', '𝘥' => 'd', '𝘦' => 'e', '𝘧' => 'f', '𝘨' => 'g', '𝘩' => 'h', '𝘪' => 'i', '𝘫' => 'j', '𝘬' => 'k', '𝘭' => 'l', '𝘮' => 'm', '𝘯' => 'n', '𝘰' => 'o', '𝘱' => 'p', '𝘲' => 'q', '𝘳' => 'r', '𝘴' => 's', '𝘵' => 't', '𝘶' => 'u', '𝘷' => 'v', '𝘸' => 'w', '𝘹' => 'x', '𝘺' => 'y', '𝘻' => 'z', '𝘼' => 'A', '𝘽' => 'B', '𝘾' => 'C', '𝘿' => 'D', '𝙀' => 'E', '𝙁' => 'F', '𝙂' => 'G', '𝙃' => 'H', '𝙄' => 'I', '𝙅' => 'J', '𝙆' => 'K', '𝙇' => 'L', '𝙈' => 'M', '𝙉' => 'N', '𝙊' => 'O', '𝙋' => 'P', '𝙌' => 'Q', '𝙍' => 'R', '𝙎' => 'S', '𝙏' => 'T', '𝙐' => 'U', '𝙑' => 'V', '𝙒' => 'W', '𝙓' => 'X', '𝙔' => 'Y', '𝙕' => 'Z', '𝙖' => 'a', '𝙗' => 'b', '𝙘' => 'c', '𝙙' => 'd', '𝙚' => 'e', '𝙛' => 'f', '𝙜' => 'g', '𝙝' => 'h', '𝙞' => 'i', '𝙟' => 'j', '𝙠' => 'k', '𝙡' => 'l', '𝙢' => 'm', '𝙣' => 'n', '𝙤' => 'o', '𝙥' => 'p', '𝙦' => 'q', '𝙧' => 'r', '𝙨' => 's', '𝙩' => 't', '𝙪' => 'u', '𝙫' => 'v', '𝙬' => 'w', '𝙭' => 'x', '𝙮' => 'y', '𝙯' => 'z', '𝙰' => 'A', '𝙱' => 'B', '𝙲' => 'C', '𝙳' => 'D', '𝙴' => 'E', '𝙵' => 'F', '𝙶' => 'G', '𝙷' => 'H', '𝙸' => 'I', '𝙹' => 'J', '𝙺' => 'K', '𝙻' => 'L', '𝙼' => 'M', '𝙽' => 'N', '𝙾' => 'O', '𝙿' => 'P', '𝚀' => 'Q', '𝚁' => 'R', '𝚂' => 'S', '𝚃' => 'T', '𝚄' => 'U', '𝚅' => 'V', '𝚆' => 'W', '𝚇' => 'X', '𝚈' => 'Y', '𝚉' => 'Z', '𝚊' => 'a', '𝚋' => 'b', '𝚌' => 'c', '𝚍' => 'd', '𝚎' => 'e', '𝚏' => 'f', '𝚐' => 'g', '𝚑' => 'h', '𝚒' => 'i', '𝚓' => 'j', '𝚔' => 'k', '𝚕' => 'l', '𝚖' => 'm', '𝚗' => 'n', '𝚘' => 'o', '𝚙' => 'p', '𝚚' => 'q', '𝚛' => 'r', '𝚜' => 's', '𝚝' => 't', '𝚞' => 'u', '𝚟' => 'v', '𝚠' => 'w', '𝚡' => 'x', '𝚢' => 'y', '𝚣' => 'z', '𝚤' => 'ı', '𝚥' => 'ȷ', '𝚨' => 'Α', '𝚩' => 'Β', '𝚪' => 'Γ', '𝚫' => 'Δ', '𝚬' => 'Ε', '𝚭' => 'Ζ', '𝚮' => 'Η', '𝚯' => 'Θ', '𝚰' => 'Ι', '𝚱' => 'Κ', '𝚲' => 'Λ', '𝚳' => 'Μ', '𝚴' => 'Ν', '𝚵' => 'Ξ', '𝚶' => 'Ο', '𝚷' => 'Π', '𝚸' => 'Ρ', '𝚹' => 'Θ', '𝚺' => 'Σ', '𝚻' => 'Τ', '𝚼' => 'Υ', '𝚽' => 'Φ', '𝚾' => 'Χ', '𝚿' => 'Ψ', '𝛀' => 'Ω', '𝛁' => '∇', '𝛂' => 'α', '𝛃' => 'β', '𝛄' => 'γ', '𝛅' => 'δ', '𝛆' => 'ε', '𝛇' => 'ζ', '𝛈' => 'η', '𝛉' => 'θ', '𝛊' => 'ι', '𝛋' => 'κ', '𝛌' => 'λ', '𝛍' => 'μ', '𝛎' => 'ν', '𝛏' => 'ξ', '𝛐' => 'ο', '𝛑' => 'π', '𝛒' => 'ρ', '𝛓' => 'ς', '𝛔' => 'σ', '𝛕' => 'τ', '𝛖' => 'υ', '𝛗' => 'φ', '𝛘' => 'χ', '𝛙' => 'ψ', '𝛚' => 'ω', '𝛛' => '∂', '𝛜' => 'ε', '𝛝' => 'θ', '𝛞' => 'κ', '𝛟' => 'φ', '𝛠' => 'ρ', '𝛡' => 'π', '𝛢' => 'Α', '𝛣' => 'Β', '𝛤' => 'Γ', '𝛥' => 'Δ', '𝛦' => 'Ε', '𝛧' => 'Ζ', '𝛨' => 'Η', '𝛩' => 'Θ', '𝛪' => 'Ι', '𝛫' => 'Κ', '𝛬' => 'Λ', '𝛭' => 'Μ', '𝛮' => 'Ν', '𝛯' => 'Ξ', '𝛰' => 'Ο', '𝛱' => 'Π', '𝛲' => 'Ρ', '𝛳' => 'Θ', '𝛴' => 'Σ', '𝛵' => 'Τ', '𝛶' => 'Υ', '𝛷' => 'Φ', '𝛸' => 'Χ', '𝛹' => 'Ψ', '𝛺' => 'Ω', '𝛻' => '∇', '𝛼' => 'α', '𝛽' => 'β', '𝛾' => 'γ', '𝛿' => 'δ', '𝜀' => 'ε', '𝜁' => 'ζ', '𝜂' => 'η', '𝜃' => 'θ', '𝜄' => 'ι', '𝜅' => 'κ', '𝜆' => 'λ', '𝜇' => 'μ', '𝜈' => 'ν', '𝜉' => 'ξ', '𝜊' => 'ο', '𝜋' => 'π', '𝜌' => 'ρ', '𝜍' => 'ς', '𝜎' => 'σ', '𝜏' => 'τ', '𝜐' => 'υ', '𝜑' => 'φ', '𝜒' => 'χ', '𝜓' => 'ψ', '𝜔' => 'ω', '𝜕' => '∂', '𝜖' => 'ε', '𝜗' => 'θ', '𝜘' => 'κ', '𝜙' => 'φ', '𝜚' => 'ρ', '𝜛' => 'π', '𝜜' => 'Α', '𝜝' => 'Β', '𝜞' => 'Γ', '𝜟' => 'Δ', '𝜠' => 'Ε', '𝜡' => 'Ζ', '𝜢' => 'Η', '𝜣' => 'Θ', '𝜤' => 'Ι', '𝜥' => 'Κ', '𝜦' => 'Λ', '𝜧' => 'Μ', '𝜨' => 'Ν', '𝜩' => 'Ξ', '𝜪' => 'Ο', '𝜫' => 'Π', '𝜬' => 'Ρ', '𝜭' => 'Θ', '𝜮' => 'Σ', '𝜯' => 'Τ', '𝜰' => 'Υ', '𝜱' => 'Φ', '𝜲' => 'Χ', '𝜳' => 'Ψ', '𝜴' => 'Ω', '𝜵' => '∇', '𝜶' => 'α', '𝜷' => 'β', '𝜸' => 'γ', '𝜹' => 'δ', '𝜺' => 'ε', '𝜻' => 'ζ', '𝜼' => 'η', '𝜽' => 'θ', '𝜾' => 'ι', '𝜿' => 'κ', '𝝀' => 'λ', '𝝁' => 'μ', '𝝂' => 'ν', '𝝃' => 'ξ', '𝝄' => 'ο', '𝝅' => 'π', '𝝆' => 'ρ', '𝝇' => 'ς', '𝝈' => 'σ', '𝝉' => 'τ', '𝝊' => 'υ', '𝝋' => 'φ', '𝝌' => 'χ', '𝝍' => 'ψ', '𝝎' => 'ω', '𝝏' => '∂', '𝝐' => 'ε', '𝝑' => 'θ', '𝝒' => 'κ', '𝝓' => 'φ', '𝝔' => 'ρ', '𝝕' => 'π', '𝝖' => 'Α', '𝝗' => 'Β', '𝝘' => 'Γ', '𝝙' => 'Δ', '𝝚' => 'Ε', '𝝛' => 'Ζ', '𝝜' => 'Η', '𝝝' => 'Θ', '𝝞' => 'Ι', '𝝟' => 'Κ', '𝝠' => 'Λ', '𝝡' => 'Μ', '𝝢' => 'Ν', '𝝣' => 'Ξ', '𝝤' => 'Ο', '𝝥' => 'Π', '𝝦' => 'Ρ', '𝝧' => 'Θ', '𝝨' => 'Σ', '𝝩' => 'Τ', '𝝪' => 'Υ', '𝝫' => 'Φ', '𝝬' => 'Χ', '𝝭' => 'Ψ', '𝝮' => 'Ω', '𝝯' => '∇', '𝝰' => 'α', '𝝱' => 'β', '𝝲' => 'γ', '𝝳' => 'δ', '𝝴' => 'ε', '𝝵' => 'ζ', '𝝶' => 'η', '𝝷' => 'θ', '𝝸' => 'ι', '𝝹' => 'κ', '𝝺' => 'λ', '𝝻' => 'μ', '𝝼' => 'ν', '𝝽' => 'ξ', '𝝾' => 'ο', '𝝿' => 'π', '𝞀' => 'ρ', '𝞁' => 'ς', '𝞂' => 'σ', '𝞃' => 'τ', '𝞄' => 'υ', '𝞅' => 'φ', '𝞆' => 'χ', '𝞇' => 'ψ', '𝞈' => 'ω', '𝞉' => '∂', '𝞊' => 'ε', '𝞋' => 'θ', '𝞌' => 'κ', '𝞍' => 'φ', '𝞎' => 'ρ', '𝞏' => 'π', '𝞐' => 'Α', '𝞑' => 'Β', '𝞒' => 'Γ', '𝞓' => 'Δ', '𝞔' => 'Ε', '𝞕' => 'Ζ', '𝞖' => 'Η', '𝞗' => 'Θ', '𝞘' => 'Ι', '𝞙' => 'Κ', '𝞚' => 'Λ', '𝞛' => 'Μ', '𝞜' => 'Ν', '𝞝' => 'Ξ', '𝞞' => 'Ο', '𝞟' => 'Π', '𝞠' => 'Ρ', '𝞡' => 'Θ', '𝞢' => 'Σ', '𝞣' => 'Τ', '𝞤' => 'Υ', '𝞥' => 'Φ', '𝞦' => 'Χ', '𝞧' => 'Ψ', '𝞨' => 'Ω', '𝞩' => '∇', '𝞪' => 'α', '𝞫' => 'β', '𝞬' => 'γ', '𝞭' => 'δ', '𝞮' => 'ε', '𝞯' => 'ζ', '𝞰' => 'η', '𝞱' => 'θ', '𝞲' => 'ι', '𝞳' => 'κ', '𝞴' => 'λ', '𝞵' => 'μ', '𝞶' => 'ν', '𝞷' => 'ξ', '𝞸' => 'ο', '𝞹' => 'π', '𝞺' => 'ρ', '𝞻' => 'ς', '𝞼' => 'σ', '𝞽' => 'τ', '𝞾' => 'υ', '𝞿' => 'φ', '𝟀' => 'χ', '𝟁' => 'ψ', '𝟂' => 'ω', '𝟃' => '∂', '𝟄' => 'ε', '𝟅' => 'θ', '𝟆' => 'κ', '𝟇' => 'φ', '𝟈' => 'ρ', '𝟉' => 'π', '𝟊' => 'Ϝ', '𝟋' => 'ϝ', '𝟎' => '0', '𝟏' => '1', '𝟐' => '2', '𝟑' => '3', '𝟒' => '4', '𝟓' => '5', '𝟔' => '6', '𝟕' => '7', '𝟖' => '8', '𝟗' => '9', '𝟘' => '0', '𝟙' => '1', '𝟚' => '2', '𝟛' => '3', '𝟜' => '4', '𝟝' => '5', '𝟞' => '6', '𝟟' => '7', '𝟠' => '8', '𝟡' => '9', '𝟢' => '0', '𝟣' => '1', '𝟤' => '2', '𝟥' => '3', '𝟦' => '4', '𝟧' => '5', '𝟨' => '6', '𝟩' => '7', '𝟪' => '8', '𝟫' => '9', '𝟬' => '0', '𝟭' => '1', '𝟮' => '2', '𝟯' => '3', '𝟰' => '4', '𝟱' => '5', '𝟲' => '6', '𝟳' => '7', '𝟴' => '8', '𝟵' => '9', '𝟶' => '0', '𝟷' => '1', '𝟸' => '2', '𝟹' => '3', '𝟺' => '4', '𝟻' => '5', '𝟼' => '6', '𝟽' => '7', '𝟾' => '8', '𝟿' => '9', '𞸀' => 'ا', '𞸁' => 'ب', '𞸂' => 'ج', '𞸃' => 'د', '𞸅' => 'و', '𞸆' => 'ز', '𞸇' => 'ح', '𞸈' => 'ط', '𞸉' => 'ي', '𞸊' => 'ك', '𞸋' => 'ل', '𞸌' => 'م', '𞸍' => 'ن', '𞸎' => 'س', '𞸏' => 'ع', '𞸐' => 'ف', '𞸑' => 'ص', '𞸒' => 'ق', '𞸓' => 'ر', '𞸔' => 'ش', '𞸕' => 'ت', '𞸖' => 'ث', '𞸗' => 'خ', '𞸘' => 'ذ', '𞸙' => 'ض', '𞸚' => 'ظ', '𞸛' => 'غ', '𞸜' => 'ٮ', '𞸝' => 'ں', '𞸞' => 'ڡ', '𞸟' => 'ٯ', '𞸡' => 'ب', '𞸢' => 'ج', '𞸤' => 'ه', '𞸧' => 'ح', '𞸩' => 'ي', '𞸪' => 'ك', '𞸫' => 'ل', '𞸬' => 'م', '𞸭' => 'ن', '𞸮' => 'س', '𞸯' => 'ع', '𞸰' => 'ف', '𞸱' => 'ص', '𞸲' => 'ق', '𞸴' => 'ش', '𞸵' => 'ت', '𞸶' => 'ث', '𞸷' => 'خ', '𞸹' => 'ض', '𞸻' => 'غ', '𞹂' => 'ج', '𞹇' => 'ح', '𞹉' => 'ي', '𞹋' => 'ل', '𞹍' => 'ن', '𞹎' => 'س', '𞹏' => 'ع', '𞹑' => 'ص', '𞹒' => 'ق', '𞹔' => 'ش', '𞹗' => 'خ', '𞹙' => 'ض', '𞹛' => 'غ', '𞹝' => 'ں', '𞹟' => 'ٯ', '𞹡' => 'ب', '𞹢' => 'ج', '𞹤' => 'ه', '𞹧' => 'ح', '𞹨' => 'ط', '𞹩' => 'ي', '𞹪' => 'ك', '𞹬' => 'م', '𞹭' => 'ن', '𞹮' => 'س', '𞹯' => 'ع', '𞹰' => 'ف', '𞹱' => 'ص', '𞹲' => 'ق', '𞹴' => 'ش', '𞹵' => 'ت', '𞹶' => 'ث', '𞹷' => 'خ', '𞹹' => 'ض', '𞹺' => 'ظ', '𞹻' => 'غ', '𞹼' => 'ٮ', '𞹾' => 'ڡ', '𞺀' => 'ا', '𞺁' => 'ب', '𞺂' => 'ج', '𞺃' => 'د', '𞺄' => 'ه', '𞺅' => 'و', '𞺆' => 'ز', '𞺇' => 'ح', '𞺈' => 'ط', '𞺉' => 'ي', '𞺋' => 'ل', '𞺌' => 'م', '𞺍' => 'ن', '𞺎' => 'س', '𞺏' => 'ع', '𞺐' => 'ف', '𞺑' => 'ص', '𞺒' => 'ق', '𞺓' => 'ر', '𞺔' => 'ش', '𞺕' => 'ت', '𞺖' => 'ث', '𞺗' => 'خ', '𞺘' => 'ذ', '𞺙' => 'ض', '𞺚' => 'ظ', '𞺛' => 'غ', '𞺡' => 'ب', '𞺢' => 'ج', '𞺣' => 'د', '𞺥' => 'و', '𞺦' => 'ز', '𞺧' => 'ح', '𞺨' => 'ط', '𞺩' => 'ي', '𞺫' => 'ل', '𞺬' => 'م', '𞺭' => 'ن', '𞺮' => 'س', '𞺯' => 'ع', '𞺰' => 'ف', '𞺱' => 'ص', '𞺲' => 'ق', '𞺳' => 'ر', '𞺴' => 'ش', '𞺵' => 'ت', '𞺶' => 'ث', '𞺷' => 'خ', '𞺸' => 'ذ', '𞺹' => 'ض', '𞺺' => 'ظ', '𞺻' => 'غ', '🄀' => '0.', '🄁' => '0,', '🄂' => '1,', '🄃' => '2,', '🄄' => '3,', '🄅' => '4,', '🄆' => '5,', '🄇' => '6,', '🄈' => '7,', '🄉' => '8,', '🄊' => '9,', '🄐' => '(A)', '🄑' => '(B)', '🄒' => '(C)', '🄓' => '(D)', '🄔' => '(E)', '🄕' => '(F)', '🄖' => '(G)', '🄗' => '(H)', '🄘' => '(I)', '🄙' => '(J)', '🄚' => '(K)', '🄛' => '(L)', '🄜' => '(M)', '🄝' => '(N)', '🄞' => '(O)', '🄟' => '(P)', '🄠' => '(Q)', '🄡' => '(R)', '🄢' => '(S)', '🄣' => '(T)', '🄤' => '(U)', '🄥' => '(V)', '🄦' => '(W)', '🄧' => '(X)', '🄨' => '(Y)', '🄩' => '(Z)', '🄪' => '〔S〕', '🄫' => 'C', '🄬' => 'R', '🄭' => 'CD', '🄮' => 'WZ', '🄰' => 'A', '🄱' => 'B', '🄲' => 'C', '🄳' => 'D', '🄴' => 'E', '🄵' => 'F', '🄶' => 'G', '🄷' => 'H', '🄸' => 'I', '🄹' => 'J', '🄺' => 'K', '🄻' => 'L', '🄼' => 'M', '🄽' => 'N', '🄾' => 'O', '🄿' => 'P', '🅀' => 'Q', '🅁' => 'R', '🅂' => 'S', '🅃' => 'T', '🅄' => 'U', '🅅' => 'V', '🅆' => 'W', '🅇' => 'X', '🅈' => 'Y', '🅉' => 'Z', '🅊' => 'HV', '🅋' => 'MV', '🅌' => 'SD', '🅍' => 'SS', '🅎' => 'PPV', '🅏' => 'WC', '🅪' => 'MC', '🅫' => 'MD', '🅬' => 'MR', '🆐' => 'DJ', '🈀' => 'ほか', '🈁' => 'ココ', '🈂' => 'サ', '🈐' => '手', '🈑' => '字', '🈒' => '双', '🈓' => 'デ', '🈔' => '二', '🈕' => '多', '🈖' => '解', '🈗' => '天', '🈘' => '交', '🈙' => '映', '🈚' => '無', '🈛' => '料', '🈜' => '前', '🈝' => '後', '🈞' => '再', '🈟' => '新', '🈠' => '初', '🈡' => '終', '🈢' => '生', '🈣' => '販', '🈤' => '声', '🈥' => '吹', '🈦' => '演', '🈧' => '投', '🈨' => '捕', '🈩' => '一', '🈪' => '三', '🈫' => '遊', '🈬' => '左', '🈭' => '中', '🈮' => '右', '🈯' => '指', '🈰' => '走', '🈱' => '打', '🈲' => '禁', '🈳' => '空', '🈴' => '合', '🈵' => '満', '🈶' => '有', '🈷' => '月', '🈸' => '申', '🈹' => '割', '🈺' => '営', '🈻' => '配', '🉀' => '〔本〕', '🉁' => '〔三〕', '🉂' => '〔二〕', '🉃' => '〔安〕', '🉄' => '〔点〕', '🉅' => '〔打〕', '🉆' => '〔盗〕', '🉇' => '〔勝〕', '🉈' => '〔敗〕', '🉐' => '得', '🉑' => '可', '🯰' => '0', '🯱' => '1', '🯲' => '2', '🯳' => '3', '🯴' => '4', '🯵' => '5', '🯶' => '6', '🯷' => '7', '🯸' => '8', '🯹' => '9', ); * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Mbstring; /** * Partial mbstring implementation in PHP, iconv based, UTF-8 centric. * * Implemented: * - mb_chr - Returns a specific character from its Unicode code point * - mb_convert_encoding - Convert character encoding * - mb_convert_variables - Convert character code in variable(s) * - mb_decode_mimeheader - Decode string in MIME header field * - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED * - mb_decode_numericentity - Decode HTML numeric string reference to character * - mb_encode_numericentity - Encode character to HTML numeric string reference * - mb_convert_case - Perform case folding on a string * - mb_detect_encoding - Detect character encoding * - mb_get_info - Get internal settings of mbstring * - mb_http_input - Detect HTTP input character encoding * - mb_http_output - Set/Get HTTP output character encoding * - mb_internal_encoding - Set/Get internal character encoding * - mb_list_encodings - Returns an array of all supported encodings * - mb_ord - Returns the Unicode code point of a character * - mb_output_handler - Callback function converts character encoding in output buffer * - mb_scrub - Replaces ill-formed byte sequences with substitute characters * - mb_strlen - Get string length * - mb_strpos - Find position of first occurrence of string in a string * - mb_strrpos - Find position of last occurrence of a string in a string * - mb_str_split - Convert a string to an array * - mb_strtolower - Make a string lowercase * - mb_strtoupper - Make a string uppercase * - mb_substitute_character - Set/Get substitution character * - mb_substr - Get part of string * - mb_stripos - Finds position of first occurrence of a string within another, case insensitive * - mb_stristr - Finds first occurrence of a string within another, case insensitive * - mb_strrchr - Finds the last occurrence of a character in a string within another * - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive * - mb_strripos - Finds position of last occurrence of a string within another, case insensitive * - mb_strstr - Finds first occurrence of a string within another * - mb_strwidth - Return width of string * - mb_substr_count - Count the number of substring occurrences * - mb_ucfirst - Make a string's first character uppercase * - mb_lcfirst - Make a string's first character lowercase * - mb_trim - Strip whitespace (or other characters) from the beginning and end of a string * - mb_ltrim - Strip whitespace (or other characters) from the beginning of a string * - mb_rtrim - Strip whitespace (or other characters) from the end of a string * * Not implemented: * - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more) * - mb_ereg_* - Regular expression with multibyte support * - mb_parse_str - Parse GET/POST/COOKIE data and set global variable * - mb_preferred_mime_name - Get MIME charset string * - mb_regex_encoding - Returns current encoding for multibyte regex as string * - mb_regex_set_options - Set/Get the default options for mbregex functions * - mb_send_mail - Send encoded mail * - mb_split - Split multibyte string using regular expression * - mb_strcut - Get part of string * - mb_strimwidth - Get truncated string with specified width * * @author Nicolas Grekas * * @internal */ final class Mbstring { public const MB_CASE_FOLD = \PHP_INT_MAX; private const SIMPLE_CASE_FOLD = [ ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"], ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'], ]; private static $encodingList = ['ASCII', 'UTF-8']; private static $language = 'neutral'; private static $internalEncoding = 'UTF-8'; public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null) { if (\is_array($s)) { $r = []; foreach ($s as $str) { $r[] = self::mb_convert_encoding($str, $toEncoding, $fromEncoding); } return $r; } if (\is_array($fromEncoding) || (null !== $fromEncoding && false !== strpos($fromEncoding, ','))) { $fromEncoding = self::mb_detect_encoding($s, $fromEncoding); } else { $fromEncoding = self::getEncoding($fromEncoding); } $toEncoding = self::getEncoding($toEncoding); if ('BASE64' === $fromEncoding) { $s = base64_decode($s); $fromEncoding = $toEncoding; } if ('BASE64' === $toEncoding) { return base64_encode($s); } if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) { if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) { $fromEncoding = 'Windows-1252'; } if ('UTF-8' !== $fromEncoding) { $s = iconv($fromEncoding, 'UTF-8//IGNORE', $s); } return preg_replace_callback('/[\x80-\xFF]+/', [__CLASS__, 'html_encoding_callback'], $s); } if ('HTML-ENTITIES' === $fromEncoding) { $s = html_entity_decode($s, \ENT_COMPAT, 'UTF-8'); $fromEncoding = 'UTF-8'; } return iconv($fromEncoding, $toEncoding.'//IGNORE', $s); } public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars) { $ok = true; array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) { if (false === $v = self::mb_convert_encoding($v, $toEncoding, $fromEncoding)) { $ok = false; } }); return $ok ? $fromEncoding : false; } public static function mb_decode_mimeheader($s) { return iconv_mime_decode($s, 2, self::$internalEncoding); } public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null) { trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', \E_USER_WARNING); } public static function mb_decode_numericentity($s, $convmap, $encoding = null) { if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) { trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING); return null; } if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) { return false; } if (null !== $encoding && !\is_scalar($encoding)) { trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); return ''; // Instead of null (cf. mb_encode_numericentity). } $s = (string) $s; if ('' === $s) { return ''; } $encoding = self::getEncoding($encoding); if ('UTF-8' === $encoding) { $encoding = null; if (!preg_match('//u', $s)) { $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); } } else { $s = iconv($encoding, 'UTF-8//IGNORE', $s); } $cnt = floor(\count($convmap) / 4) * 4; for ($i = 0; $i < $cnt; $i += 4) { // collector_decode_htmlnumericentity ignores $convmap[$i + 3] $convmap[$i] += $convmap[$i + 2]; $convmap[$i + 1] += $convmap[$i + 2]; } $s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) { $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1]; for ($i = 0; $i < $cnt; $i += 4) { if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) { return self::mb_chr($c - $convmap[$i + 2]); } } return $m[0]; }, $s); if (null === $encoding) { return $s; } return iconv('UTF-8', $encoding.'//IGNORE', $s); } public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false) { if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) { trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING); return null; } if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) { return false; } if (null !== $encoding && !\is_scalar($encoding)) { trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); return null; // Instead of '' (cf. mb_decode_numericentity). } if (null !== $is_hex && !\is_scalar($is_hex)) { trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', \E_USER_WARNING); return null; } $s = (string) $s; if ('' === $s) { return ''; } $encoding = self::getEncoding($encoding); if ('UTF-8' === $encoding) { $encoding = null; if (!preg_match('//u', $s)) { $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); } } else { $s = iconv($encoding, 'UTF-8//IGNORE', $s); } static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; $cnt = floor(\count($convmap) / 4) * 4; $i = 0; $len = \strlen($s); $result = ''; while ($i < $len) { $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; $uchr = substr($s, $i, $ulen); $i += $ulen; $c = self::mb_ord($uchr); for ($j = 0; $j < $cnt; $j += 4) { if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) { $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3]; $result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';'; continue 2; } } $result .= $uchr; } if (null === $encoding) { return $result; } return iconv('UTF-8', $encoding.'//IGNORE', $result); } public static function mb_convert_case($s, $mode, $encoding = null) { $s = (string) $s; if ('' === $s) { return ''; } $encoding = self::getEncoding($encoding); if ('UTF-8' === $encoding) { $encoding = null; if (!preg_match('//u', $s)) { $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); } } else { $s = iconv($encoding, 'UTF-8//IGNORE', $s); } if (\MB_CASE_TITLE == $mode) { static $titleRegexp = null; if (null === $titleRegexp) { $titleRegexp = self::getData('titleCaseRegexp'); } $s = preg_replace_callback($titleRegexp, [__CLASS__, 'title_case'], $s); } else { if (\MB_CASE_UPPER == $mode) { static $upper = null; if (null === $upper) { $upper = self::getData('upperCase'); } $map = $upper; } else { if (self::MB_CASE_FOLD === $mode) { static $caseFolding = null; if (null === $caseFolding) { $caseFolding = self::getData('caseFolding'); } $s = strtr($s, $caseFolding); } static $lower = null; if (null === $lower) { $lower = self::getData('lowerCase'); } $map = $lower; } static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; $i = 0; $len = \strlen($s); while ($i < $len) { $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; $uchr = substr($s, $i, $ulen); $i += $ulen; if (isset($map[$uchr])) { $uchr = $map[$uchr]; $nlen = \strlen($uchr); if ($nlen == $ulen) { $nlen = $i; do { $s[--$nlen] = $uchr[--$ulen]; } while ($ulen); } else { $s = substr_replace($s, $uchr, $i - $ulen, $ulen); $len += $nlen - $ulen; $i += $nlen - $ulen; } } } } if (null === $encoding) { return $s; } return iconv('UTF-8', $encoding.'//IGNORE', $s); } public static function mb_internal_encoding($encoding = null) { if (null === $encoding) { return self::$internalEncoding; } $normalizedEncoding = self::getEncoding($encoding); if ('UTF-8' === $normalizedEncoding || false !== @iconv($normalizedEncoding, $normalizedEncoding, ' ')) { self::$internalEncoding = $normalizedEncoding; return true; } if (80000 > \PHP_VERSION_ID) { return false; } throw new \ValueError(sprintf('Argument #1 ($encoding) must be a valid encoding, "%s" given', $encoding)); } public static function mb_language($lang = null) { if (null === $lang) { return self::$language; } switch ($normalizedLang = strtolower($lang)) { case 'uni': case 'neutral': self::$language = $normalizedLang; return true; } if (80000 > \PHP_VERSION_ID) { return false; } throw new \ValueError(sprintf('Argument #1 ($language) must be a valid language, "%s" given', $lang)); } public static function mb_list_encodings() { return ['UTF-8']; } public static function mb_encoding_aliases($encoding) { switch (strtoupper($encoding)) { case 'UTF8': case 'UTF-8': return ['utf8']; } return false; } public static function mb_check_encoding($var = null, $encoding = null) { if (null === $encoding) { if (null === $var) { return false; } $encoding = self::$internalEncoding; } if (!\is_array($var)) { return self::mb_detect_encoding($var, [$encoding]) || false !== @iconv($encoding, $encoding, $var); } foreach ($var as $key => $value) { if (!self::mb_check_encoding($key, $encoding)) { return false; } if (!self::mb_check_encoding($value, $encoding)) { return false; } } return true; } public static function mb_detect_encoding($str, $encodingList = null, $strict = false) { if (null === $encodingList) { $encodingList = self::$encodingList; } else { if (!\is_array($encodingList)) { $encodingList = array_map('trim', explode(',', $encodingList)); } $encodingList = array_map('strtoupper', $encodingList); } foreach ($encodingList as $enc) { switch ($enc) { case 'ASCII': if (!preg_match('/[\x80-\xFF]/', $str)) { return $enc; } break; case 'UTF8': case 'UTF-8': if (preg_match('//u', $str)) { return 'UTF-8'; } break; default: if (0 === strncmp($enc, 'ISO-8859-', 9)) { return $enc; } } } return false; } public static function mb_detect_order($encodingList = null) { if (null === $encodingList) { return self::$encodingList; } if (!\is_array($encodingList)) { $encodingList = array_map('trim', explode(',', $encodingList)); } $encodingList = array_map('strtoupper', $encodingList); foreach ($encodingList as $enc) { switch ($enc) { default: if (strncmp($enc, 'ISO-8859-', 9)) { return false; } // no break case 'ASCII': case 'UTF8': case 'UTF-8': } } self::$encodingList = $encodingList; return true; } public static function mb_strlen($s, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { return \strlen($s); } return @iconv_strlen($s, $encoding); } public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { return strpos($haystack, $needle, $offset); } $needle = (string) $needle; if ('' === $needle) { if (80000 > \PHP_VERSION_ID) { trigger_error(__METHOD__.': Empty delimiter', \E_USER_WARNING); return false; } return 0; } return iconv_strpos($haystack, $needle, $offset, $encoding); } public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { return strrpos($haystack, $needle, $offset); } if ($offset != (int) $offset) { $offset = 0; } elseif ($offset = (int) $offset) { if ($offset < 0) { if (0 > $offset += self::mb_strlen($needle)) { $haystack = self::mb_substr($haystack, 0, $offset, $encoding); } $offset = 0; } else { $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding); } } $pos = '' !== $needle || 80000 > \PHP_VERSION_ID ? iconv_strrpos($haystack, $needle, $encoding) : self::mb_strlen($haystack, $encoding); return false !== $pos ? $offset + $pos : false; } public static function mb_str_split($string, $split_length = 1, $encoding = null) { if (null !== $string && !\is_scalar($string) && !(\is_object($string) && method_exists($string, '__toString'))) { trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', \E_USER_WARNING); return null; } if (1 > $split_length = (int) $split_length) { if (80000 > \PHP_VERSION_ID) { trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING); return false; } throw new \ValueError('Argument #2 ($length) must be greater than 0'); } if (null === $encoding) { $encoding = mb_internal_encoding(); } if ('UTF-8' === $encoding = self::getEncoding($encoding)) { $rx = '/('; while (65535 < $split_length) { $rx .= '.{65535}'; $split_length -= 65535; } $rx .= '.{'.$split_length.'})/us'; return preg_split($rx, $string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY); } $result = []; $length = mb_strlen($string, $encoding); for ($i = 0; $i < $length; $i += $split_length) { $result[] = mb_substr($string, $i, $split_length, $encoding); } return $result; } public static function mb_strtolower($s, $encoding = null) { return self::mb_convert_case($s, \MB_CASE_LOWER, $encoding); } public static function mb_strtoupper($s, $encoding = null) { return self::mb_convert_case($s, \MB_CASE_UPPER, $encoding); } public static function mb_substitute_character($c = null) { if (null === $c) { return 'none'; } if (0 === strcasecmp($c, 'none')) { return true; } if (80000 > \PHP_VERSION_ID) { return false; } if (\is_int($c) || 'long' === $c || 'entity' === $c) { return false; } throw new \ValueError('Argument #1 ($substitute_character) must be "none", "long", "entity" or a valid codepoint'); } public static function mb_substr($s, $start, $length = null, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { return (string) substr($s, $start, null === $length ? 2147483647 : $length); } if ($start < 0) { $start = iconv_strlen($s, $encoding) + $start; if ($start < 0) { $start = 0; } } if (null === $length) { $length = 2147483647; } elseif ($length < 0) { $length = iconv_strlen($s, $encoding) + $length - $start; if ($length < 0) { return ''; } } return (string) iconv_substr($s, $start, $length, $encoding); } public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { [$haystack, $needle] = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], [ self::mb_convert_case($haystack, \MB_CASE_LOWER, $encoding), self::mb_convert_case($needle, \MB_CASE_LOWER, $encoding), ]); return self::mb_strpos($haystack, $needle, $offset, $encoding); } public static function mb_stristr($haystack, $needle, $part = false, $encoding = null) { $pos = self::mb_stripos($haystack, $needle, 0, $encoding); return self::getSubpart($pos, $part, $haystack, $encoding); } public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { $pos = strrpos($haystack, $needle); } else { $needle = self::mb_substr($needle, 0, 1, $encoding); $pos = iconv_strrpos($haystack, $needle, $encoding); } return self::getSubpart($pos, $part, $haystack, $encoding); } public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null) { $needle = self::mb_substr($needle, 0, 1, $encoding); $pos = self::mb_strripos($haystack, $needle, $encoding); return self::getSubpart($pos, $part, $haystack, $encoding); } public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { $haystack = self::mb_convert_case($haystack, \MB_CASE_LOWER, $encoding); $needle = self::mb_convert_case($needle, \MB_CASE_LOWER, $encoding); $haystack = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $haystack); $needle = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $needle); return self::mb_strrpos($haystack, $needle, $offset, $encoding); } public static function mb_strstr($haystack, $needle, $part = false, $encoding = null) { $pos = strpos($haystack, $needle); if (false === $pos) { return false; } if ($part) { return substr($haystack, 0, $pos); } return substr($haystack, $pos); } public static function mb_get_info($type = 'all') { $info = [ 'internal_encoding' => self::$internalEncoding, 'http_output' => 'pass', 'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)', 'func_overload' => 0, 'func_overload_list' => 'no overload', 'mail_charset' => 'UTF-8', 'mail_header_encoding' => 'BASE64', 'mail_body_encoding' => 'BASE64', 'illegal_chars' => 0, 'encoding_translation' => 'Off', 'language' => self::$language, 'detect_order' => self::$encodingList, 'substitute_character' => 'none', 'strict_detection' => 'Off', ]; if ('all' === $type) { return $info; } if (isset($info[$type])) { return $info[$type]; } return false; } public static function mb_http_input($type = '') { return false; } public static function mb_http_output($encoding = null) { return null !== $encoding ? 'pass' === $encoding : 'pass'; } public static function mb_strwidth($s, $encoding = null) { $encoding = self::getEncoding($encoding); if ('UTF-8' !== $encoding) { $s = iconv($encoding, 'UTF-8//IGNORE', $s); } $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide); return ($wide << 1) + iconv_strlen($s, 'UTF-8'); } public static function mb_substr_count($haystack, $needle, $encoding = null) { return substr_count($haystack, $needle); } public static function mb_output_handler($contents, $status) { return $contents; } public static function mb_chr($code, $encoding = null) { if (0x80 > $code %= 0x200000) { $s = \chr($code); } elseif (0x800 > $code) { $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F); } elseif (0x10000 > $code) { $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); } else { $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); } if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { $s = mb_convert_encoding($s, $encoding, 'UTF-8'); } return $s; } public static function mb_ord($s, $encoding = null) { if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { $s = mb_convert_encoding($s, 'UTF-8', $encoding); } if (1 === \strlen($s)) { return \ord($s); } $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0; if (0xF0 <= $code) { return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80; } if (0xE0 <= $code) { return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80; } if (0xC0 <= $code) { return (($code - 0xC0) << 6) + $s[2] - 0x80; } return $code; } public static function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = \STR_PAD_RIGHT, ?string $encoding = null): string { if (!\in_array($pad_type, [\STR_PAD_RIGHT, \STR_PAD_LEFT, \STR_PAD_BOTH], true)) { throw new \ValueError('mb_str_pad(): Argument #4 ($pad_type) must be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH'); } if (null === $encoding) { $encoding = self::mb_internal_encoding(); } else { self::assertEncoding($encoding, 'mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given'); } if (self::mb_strlen($pad_string, $encoding) <= 0) { throw new \ValueError('mb_str_pad(): Argument #3 ($pad_string) must be a non-empty string'); } $paddingRequired = $length - self::mb_strlen($string, $encoding); if ($paddingRequired < 1) { return $string; } switch ($pad_type) { case \STR_PAD_LEFT: return self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding).$string; case \STR_PAD_RIGHT: return $string.self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding); default: $leftPaddingLength = floor($paddingRequired / 2); $rightPaddingLength = $paddingRequired - $leftPaddingLength; return self::mb_substr(str_repeat($pad_string, $leftPaddingLength), 0, $leftPaddingLength, $encoding).$string.self::mb_substr(str_repeat($pad_string, $rightPaddingLength), 0, $rightPaddingLength, $encoding); } } public static function mb_ucfirst(string $string, ?string $encoding = null): string { if (null === $encoding) { $encoding = self::mb_internal_encoding(); } else { self::assertEncoding($encoding, 'mb_ucfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given'); } $firstChar = mb_substr($string, 0, 1, $encoding); $firstChar = mb_convert_case($firstChar, \MB_CASE_TITLE, $encoding); return $firstChar.mb_substr($string, 1, null, $encoding); } public static function mb_lcfirst(string $string, ?string $encoding = null): string { if (null === $encoding) { $encoding = self::mb_internal_encoding(); } else { self::assertEncoding($encoding, 'mb_lcfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given'); } $firstChar = mb_substr($string, 0, 1, $encoding); $firstChar = mb_convert_case($firstChar, \MB_CASE_LOWER, $encoding); return $firstChar.mb_substr($string, 1, null, $encoding); } private static function getSubpart($pos, $part, $haystack, $encoding) { if (false === $pos) { return false; } if ($part) { return self::mb_substr($haystack, 0, $pos, $encoding); } return self::mb_substr($haystack, $pos, null, $encoding); } private static function html_encoding_callback(array $m) { $i = 1; $entities = ''; $m = unpack('C*', htmlentities($m[0], \ENT_COMPAT, 'UTF-8')); while (isset($m[$i])) { if (0x80 > $m[$i]) { $entities .= \chr($m[$i++]); continue; } if (0xF0 <= $m[$i]) { $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; } elseif (0xE0 <= $m[$i]) { $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; } else { $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80; } $entities .= '&#'.$c.';'; } return $entities; } private static function title_case(array $s) { return self::mb_convert_case($s[1], \MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], \MB_CASE_LOWER, 'UTF-8'); } private static function getData($file) { if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) { return require $file; } return false; } private static function getEncoding($encoding) { if (null === $encoding) { return self::$internalEncoding; } if ('UTF-8' === $encoding) { return 'UTF-8'; } $encoding = strtoupper($encoding); if ('8BIT' === $encoding || 'BINARY' === $encoding) { return 'CP850'; } if ('UTF8' === $encoding) { return 'UTF-8'; } return $encoding; } public static function mb_trim(string $string, ?string $characters = null, ?string $encoding = null): string { return self::mb_internal_trim('{^[%s]+|[%1$s]+$}Du', $string, $characters, $encoding, __FUNCTION__); } public static function mb_ltrim(string $string, ?string $characters = null, ?string $encoding = null): string { return self::mb_internal_trim('{^[%s]+}Du', $string, $characters, $encoding, __FUNCTION__); } public static function mb_rtrim(string $string, ?string $characters = null, ?string $encoding = null): string { return self::mb_internal_trim('{[%s]+$}D', $string, $characters, $encoding, __FUNCTION__); } private static function mb_internal_trim(string $regex, string $string, ?string $characters, ?string $encoding, string $function): string { if (null === $encoding) { $encoding = self::mb_internal_encoding(); } else { self::assertEncoding($encoding, $function.'(): Argument #3 ($encoding) must be a valid encoding, "%s" given'); } if ('' === $characters) { return null === $encoding ? $string : self::mb_convert_encoding($string, $encoding); } if ('UTF-8' === $encoding) { $encoding = null; if (!preg_match('//u', $string)) { $string = @iconv('UTF-8', 'UTF-8//IGNORE', $string); } if (null !== $characters && !preg_match('//u', $characters)) { $characters = @iconv('UTF-8', 'UTF-8//IGNORE', $characters); } } else { $string = iconv($encoding, 'UTF-8//IGNORE', $string); if (null !== $characters) { $characters = iconv($encoding, 'UTF-8//IGNORE', $characters); } } if (null === $characters) { $characters = "\\0 \f\n\r\t\v\u{00A0}\u{1680}\u{2000}\u{2001}\u{2002}\u{2003}\u{2004}\u{2005}\u{2006}\u{2007}\u{2008}\u{2009}\u{200A}\u{2028}\u{2029}\u{202F}\u{205F}\u{3000}\u{0085}\u{180E}"; } else { $characters = preg_quote($characters); } $string = preg_replace(sprintf($regex, $characters), '', $string); if (null === $encoding) { return $string; } return iconv('UTF-8', $encoding.'//IGNORE', $string); } private static function assertEncoding(string $encoding, string $errorFormat): void { try { $validEncoding = @self::mb_check_encoding('', $encoding); } catch (\ValueError $e) { throw new \ValueError(sprintf($errorFormat, $encoding)); } // BC for PHP 7.3 and lower if (!$validEncoding) { throw new \ValueError(sprintf($errorFormat, $encoding)); } } } Copyright (c) 2015-present Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Mbstring as p; if (\PHP_VERSION_ID >= 80000) { return require __DIR__.'/bootstrap80.php'; } if (!function_exists('mb_convert_encoding')) { function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); } } if (!function_exists('mb_decode_mimeheader')) { function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); } } if (!function_exists('mb_encode_mimeheader')) { function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = "\r\n", $indent = 0) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); } } if (!function_exists('mb_decode_numericentity')) { function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); } } if (!function_exists('mb_encode_numericentity')) { function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); } } if (!function_exists('mb_convert_case')) { function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); } } if (!function_exists('mb_internal_encoding')) { function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); } } if (!function_exists('mb_language')) { function mb_language($language = null) { return p\Mbstring::mb_language($language); } } if (!function_exists('mb_list_encodings')) { function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); } } if (!function_exists('mb_encoding_aliases')) { function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); } } if (!function_exists('mb_check_encoding')) { function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); } } if (!function_exists('mb_detect_encoding')) { function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); } } if (!function_exists('mb_detect_order')) { function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); } } if (!function_exists('mb_parse_str')) { function mb_parse_str($string, &$result = []) { parse_str($string, $result); return (bool) $result; } } if (!function_exists('mb_strlen')) { function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); } } if (!function_exists('mb_strpos')) { function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); } } if (!function_exists('mb_strtolower')) { function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); } } if (!function_exists('mb_strtoupper')) { function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); } } if (!function_exists('mb_substitute_character')) { function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); } } if (!function_exists('mb_substr')) { function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); } } if (!function_exists('mb_stripos')) { function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); } } if (!function_exists('mb_stristr')) { function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); } } if (!function_exists('mb_strrchr')) { function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); } } if (!function_exists('mb_strrichr')) { function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); } } if (!function_exists('mb_strripos')) { function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); } } if (!function_exists('mb_strrpos')) { function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); } } if (!function_exists('mb_strstr')) { function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); } } if (!function_exists('mb_get_info')) { function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); } } if (!function_exists('mb_http_output')) { function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); } } if (!function_exists('mb_strwidth')) { function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); } } if (!function_exists('mb_substr_count')) { function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); } } if (!function_exists('mb_output_handler')) { function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); } } if (!function_exists('mb_http_input')) { function mb_http_input($type = null) { return p\Mbstring::mb_http_input($type); } } if (!function_exists('mb_convert_variables')) { function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); } } if (!function_exists('mb_ord')) { function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); } } if (!function_exists('mb_chr')) { function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); } } if (!function_exists('mb_scrub')) { function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); } } if (!function_exists('mb_str_split')) { function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); } } if (!function_exists('mb_str_pad')) { function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = STR_PAD_RIGHT, ?string $encoding = null): string { return p\Mbstring::mb_str_pad($string, $length, $pad_string, $pad_type, $encoding); } } if (!function_exists('mb_ucfirst')) { function mb_ucfirst(string $string, ?string $encoding = null): string { return p\Mbstring::mb_ucfirst($string, $encoding); } } if (!function_exists('mb_lcfirst')) { function mb_lcfirst(string $string, ?string $encoding = null): string { return p\Mbstring::mb_lcfirst($string, $encoding); } } if (!function_exists('mb_trim')) { function mb_trim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_trim($string, $characters, $encoding); } } if (!function_exists('mb_ltrim')) { function mb_ltrim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_ltrim($string, $characters, $encoding); } } if (!function_exists('mb_rtrim')) { function mb_rtrim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_rtrim($string, $characters, $encoding); } } if (extension_loaded('mbstring')) { return; } if (!defined('MB_CASE_UPPER')) { define('MB_CASE_UPPER', 0); } if (!defined('MB_CASE_LOWER')) { define('MB_CASE_LOWER', 1); } if (!defined('MB_CASE_TITLE')) { define('MB_CASE_TITLE', 2); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Mbstring as p; if (!function_exists('mb_convert_encoding')) { function mb_convert_encoding(array|string|null $string, ?string $to_encoding, array|string|null $from_encoding = null): array|string|false { return p\Mbstring::mb_convert_encoding($string ?? '', (string) $to_encoding, $from_encoding); } } if (!function_exists('mb_decode_mimeheader')) { function mb_decode_mimeheader(?string $string): string { return p\Mbstring::mb_decode_mimeheader((string) $string); } } if (!function_exists('mb_encode_mimeheader')) { function mb_encode_mimeheader(?string $string, ?string $charset = null, ?string $transfer_encoding = null, ?string $newline = "\r\n", ?int $indent = 0): string { return p\Mbstring::mb_encode_mimeheader((string) $string, $charset, $transfer_encoding, (string) $newline, (int) $indent); } } if (!function_exists('mb_decode_numericentity')) { function mb_decode_numericentity(?string $string, array $map, ?string $encoding = null): string { return p\Mbstring::mb_decode_numericentity((string) $string, $map, $encoding); } } if (!function_exists('mb_encode_numericentity')) { function mb_encode_numericentity(?string $string, array $map, ?string $encoding = null, ?bool $hex = false): string { return p\Mbstring::mb_encode_numericentity((string) $string, $map, $encoding, (bool) $hex); } } if (!function_exists('mb_convert_case')) { function mb_convert_case(?string $string, ?int $mode, ?string $encoding = null): string { return p\Mbstring::mb_convert_case((string) $string, (int) $mode, $encoding); } } if (!function_exists('mb_internal_encoding')) { function mb_internal_encoding(?string $encoding = null): string|bool { return p\Mbstring::mb_internal_encoding($encoding); } } if (!function_exists('mb_language')) { function mb_language(?string $language = null): string|bool { return p\Mbstring::mb_language($language); } } if (!function_exists('mb_list_encodings')) { function mb_list_encodings(): array { return p\Mbstring::mb_list_encodings(); } } if (!function_exists('mb_encoding_aliases')) { function mb_encoding_aliases(?string $encoding): array { return p\Mbstring::mb_encoding_aliases((string) $encoding); } } if (!function_exists('mb_check_encoding')) { function mb_check_encoding(array|string|null $value = null, ?string $encoding = null): bool { return p\Mbstring::mb_check_encoding($value, $encoding); } } if (!function_exists('mb_detect_encoding')) { function mb_detect_encoding(?string $string, array|string|null $encodings = null, ?bool $strict = false): string|false { return p\Mbstring::mb_detect_encoding((string) $string, $encodings, (bool) $strict); } } if (!function_exists('mb_detect_order')) { function mb_detect_order(array|string|null $encoding = null): array|bool { return p\Mbstring::mb_detect_order($encoding); } } if (!function_exists('mb_parse_str')) { function mb_parse_str(?string $string, &$result = []): bool { parse_str((string) $string, $result); return (bool) $result; } } if (!function_exists('mb_strlen')) { function mb_strlen(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strlen((string) $string, $encoding); } } if (!function_exists('mb_strpos')) { function mb_strpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } } if (!function_exists('mb_strtolower')) { function mb_strtolower(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtolower((string) $string, $encoding); } } if (!function_exists('mb_strtoupper')) { function mb_strtoupper(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtoupper((string) $string, $encoding); } } if (!function_exists('mb_substitute_character')) { function mb_substitute_character(string|int|null $substitute_character = null): string|int|bool { return p\Mbstring::mb_substitute_character($substitute_character); } } if (!function_exists('mb_substr')) { function mb_substr(?string $string, ?int $start, ?int $length = null, ?string $encoding = null): string { return p\Mbstring::mb_substr((string) $string, (int) $start, $length, $encoding); } } if (!function_exists('mb_stripos')) { function mb_stripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_stripos((string) $haystack, (string) $needle, (int) $offset, $encoding); } } if (!function_exists('mb_stristr')) { function mb_stristr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_stristr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } } if (!function_exists('mb_strrchr')) { function mb_strrchr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrchr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } } if (!function_exists('mb_strrichr')) { function mb_strrichr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrichr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } } if (!function_exists('mb_strripos')) { function mb_strripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strripos((string) $haystack, (string) $needle, (int) $offset, $encoding); } } if (!function_exists('mb_strrpos')) { function mb_strrpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strrpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } } if (!function_exists('mb_strstr')) { function mb_strstr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strstr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } } if (!function_exists('mb_get_info')) { function mb_get_info(?string $type = 'all'): array|string|int|false|null { return p\Mbstring::mb_get_info((string) $type); } } if (!function_exists('mb_http_output')) { function mb_http_output(?string $encoding = null): string|bool { return p\Mbstring::mb_http_output($encoding); } } if (!function_exists('mb_strwidth')) { function mb_strwidth(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strwidth((string) $string, $encoding); } } if (!function_exists('mb_substr_count')) { function mb_substr_count(?string $haystack, ?string $needle, ?string $encoding = null): int { return p\Mbstring::mb_substr_count((string) $haystack, (string) $needle, $encoding); } } if (!function_exists('mb_output_handler')) { function mb_output_handler(?string $string, ?int $status): string { return p\Mbstring::mb_output_handler((string) $string, (int) $status); } } if (!function_exists('mb_http_input')) { function mb_http_input(?string $type = null): array|string|false { return p\Mbstring::mb_http_input($type); } } if (!function_exists('mb_convert_variables')) { function mb_convert_variables(?string $to_encoding, array|string|null $from_encoding, mixed &$var, mixed &...$vars): string|false { return p\Mbstring::mb_convert_variables((string) $to_encoding, $from_encoding ?? '', $var, ...$vars); } } if (!function_exists('mb_ord')) { function mb_ord(?string $string, ?string $encoding = null): int|false { return p\Mbstring::mb_ord((string) $string, $encoding); } } if (!function_exists('mb_chr')) { function mb_chr(?int $codepoint, ?string $encoding = null): string|false { return p\Mbstring::mb_chr((int) $codepoint, $encoding); } } if (!function_exists('mb_scrub')) { function mb_scrub(?string $string, ?string $encoding = null): string { $encoding ??= mb_internal_encoding(); return mb_convert_encoding((string) $string, $encoding, $encoding); } } if (!function_exists('mb_str_split')) { function mb_str_split(?string $string, ?int $length = 1, ?string $encoding = null): array { return p\Mbstring::mb_str_split((string) $string, (int) $length, $encoding); } } if (!function_exists('mb_str_pad')) { function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = STR_PAD_RIGHT, ?string $encoding = null): string { return p\Mbstring::mb_str_pad($string, $length, $pad_string, $pad_type, $encoding); } } if (!function_exists('mb_ucfirst')) { function mb_ucfirst($string, ?string $encoding = null): string { return p\Mbstring::mb_ucfirst($string, $encoding); } } if (!function_exists('mb_lcfirst')) { function mb_lcfirst($string, ?string $encoding = null): string { return p\Mbstring::mb_lcfirst($string, $encoding); } } if (!function_exists('mb_trim')) { function mb_trim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_trim($string, $characters, $encoding); } } if (!function_exists('mb_ltrim')) { function mb_ltrim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_ltrim($string, $characters, $encoding); } } if (!function_exists('mb_rtrim')) { function mb_rtrim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_rtrim($string, $characters, $encoding); } } if (extension_loaded('mbstring')) { return; } if (!defined('MB_CASE_UPPER')) { define('MB_CASE_UPPER', 0); } if (!defined('MB_CASE_LOWER')) { define('MB_CASE_LOWER', 1); } if (!defined('MB_CASE_TITLE')) { define('MB_CASE_TITLE', 2); } 'A', 'b' => 'B', 'c' => 'C', 'd' => 'D', 'e' => 'E', 'f' => 'F', 'g' => 'G', 'h' => 'H', 'i' => 'I', 'j' => 'J', 'k' => 'K', 'l' => 'L', 'm' => 'M', 'n' => 'N', 'o' => 'O', 'p' => 'P', 'q' => 'Q', 'r' => 'R', 's' => 'S', 't' => 'T', 'u' => 'U', 'v' => 'V', 'w' => 'W', 'x' => 'X', 'y' => 'Y', 'z' => 'Z', 'µ' => 'Μ', 'à' => 'À', 'á' => 'Á', 'â' => 'Â', 'ã' => 'Ã', 'ä' => 'Ä', 'å' => 'Å', 'æ' => 'Æ', 'ç' => 'Ç', 'è' => 'È', 'é' => 'É', 'ê' => 'Ê', 'ë' => 'Ë', 'ì' => 'Ì', 'í' => 'Í', 'î' => 'Î', 'ï' => 'Ï', 'ð' => 'Ð', 'ñ' => 'Ñ', 'ò' => 'Ò', 'ó' => 'Ó', 'ô' => 'Ô', 'õ' => 'Õ', 'ö' => 'Ö', 'ø' => 'Ø', 'ù' => 'Ù', 'ú' => 'Ú', 'û' => 'Û', 'ü' => 'Ü', 'ý' => 'Ý', 'þ' => 'Þ', 'ÿ' => 'Ÿ', 'ā' => 'Ā', 'ă' => 'Ă', 'ą' => 'Ą', 'ć' => 'Ć', 'ĉ' => 'Ĉ', 'ċ' => 'Ċ', 'č' => 'Č', 'ď' => 'Ď', 'đ' => 'Đ', 'ē' => 'Ē', 'ĕ' => 'Ĕ', 'ė' => 'Ė', 'ę' => 'Ę', 'ě' => 'Ě', 'ĝ' => 'Ĝ', 'ğ' => 'Ğ', 'ġ' => 'Ġ', 'ģ' => 'Ģ', 'ĥ' => 'Ĥ', 'ħ' => 'Ħ', 'ĩ' => 'Ĩ', 'ī' => 'Ī', 'ĭ' => 'Ĭ', 'į' => 'Į', 'ı' => 'I', 'ij' => 'IJ', 'ĵ' => 'Ĵ', 'ķ' => 'Ķ', 'ĺ' => 'Ĺ', 'ļ' => 'Ļ', 'ľ' => 'Ľ', 'ŀ' => 'Ŀ', 'ł' => 'Ł', 'ń' => 'Ń', 'ņ' => 'Ņ', 'ň' => 'Ň', 'ŋ' => 'Ŋ', 'ō' => 'Ō', 'ŏ' => 'Ŏ', 'ő' => 'Ő', 'œ' => 'Œ', 'ŕ' => 'Ŕ', 'ŗ' => 'Ŗ', 'ř' => 'Ř', 'ś' => 'Ś', 'ŝ' => 'Ŝ', 'ş' => 'Ş', 'š' => 'Š', 'ţ' => 'Ţ', 'ť' => 'Ť', 'ŧ' => 'Ŧ', 'ũ' => 'Ũ', 'ū' => 'Ū', 'ŭ' => 'Ŭ', 'ů' => 'Ů', 'ű' => 'Ű', 'ų' => 'Ų', 'ŵ' => 'Ŵ', 'ŷ' => 'Ŷ', 'ź' => 'Ź', 'ż' => 'Ż', 'ž' => 'Ž', 'ſ' => 'S', 'ƀ' => 'Ƀ', 'ƃ' => 'Ƃ', 'ƅ' => 'Ƅ', 'ƈ' => 'Ƈ', 'ƌ' => 'Ƌ', 'ƒ' => 'Ƒ', 'ƕ' => 'Ƕ', 'ƙ' => 'Ƙ', 'ƚ' => 'Ƚ', 'ƞ' => 'Ƞ', 'ơ' => 'Ơ', 'ƣ' => 'Ƣ', 'ƥ' => 'Ƥ', 'ƨ' => 'Ƨ', 'ƭ' => 'Ƭ', 'ư' => 'Ư', 'ƴ' => 'Ƴ', 'ƶ' => 'Ƶ', 'ƹ' => 'Ƹ', 'ƽ' => 'Ƽ', 'ƿ' => 'Ƿ', 'Dž' => 'DŽ', 'dž' => 'DŽ', 'Lj' => 'LJ', 'lj' => 'LJ', 'Nj' => 'NJ', 'nj' => 'NJ', 'ǎ' => 'Ǎ', 'ǐ' => 'Ǐ', 'ǒ' => 'Ǒ', 'ǔ' => 'Ǔ', 'ǖ' => 'Ǖ', 'ǘ' => 'Ǘ', 'ǚ' => 'Ǚ', 'ǜ' => 'Ǜ', 'ǝ' => 'Ǝ', 'ǟ' => 'Ǟ', 'ǡ' => 'Ǡ', 'ǣ' => 'Ǣ', 'ǥ' => 'Ǥ', 'ǧ' => 'Ǧ', 'ǩ' => 'Ǩ', 'ǫ' => 'Ǫ', 'ǭ' => 'Ǭ', 'ǯ' => 'Ǯ', 'Dz' => 'DZ', 'dz' => 'DZ', 'ǵ' => 'Ǵ', 'ǹ' => 'Ǹ', 'ǻ' => 'Ǻ', 'ǽ' => 'Ǽ', 'ǿ' => 'Ǿ', 'ȁ' => 'Ȁ', 'ȃ' => 'Ȃ', 'ȅ' => 'Ȅ', 'ȇ' => 'Ȇ', 'ȉ' => 'Ȉ', 'ȋ' => 'Ȋ', 'ȍ' => 'Ȍ', 'ȏ' => 'Ȏ', 'ȑ' => 'Ȑ', 'ȓ' => 'Ȓ', 'ȕ' => 'Ȕ', 'ȗ' => 'Ȗ', 'ș' => 'Ș', 'ț' => 'Ț', 'ȝ' => 'Ȝ', 'ȟ' => 'Ȟ', 'ȣ' => 'Ȣ', 'ȥ' => 'Ȥ', 'ȧ' => 'Ȧ', 'ȩ' => 'Ȩ', 'ȫ' => 'Ȫ', 'ȭ' => 'Ȭ', 'ȯ' => 'Ȯ', 'ȱ' => 'Ȱ', 'ȳ' => 'Ȳ', 'ȼ' => 'Ȼ', 'ȿ' => 'Ȿ', 'ɀ' => 'Ɀ', 'ɂ' => 'Ɂ', 'ɇ' => 'Ɇ', 'ɉ' => 'Ɉ', 'ɋ' => 'Ɋ', 'ɍ' => 'Ɍ', 'ɏ' => 'Ɏ', 'ɐ' => 'Ɐ', 'ɑ' => 'Ɑ', 'ɒ' => 'Ɒ', 'ɓ' => 'Ɓ', 'ɔ' => 'Ɔ', 'ɖ' => 'Ɖ', 'ɗ' => 'Ɗ', 'ə' => 'Ə', 'ɛ' => 'Ɛ', 'ɜ' => 'Ɜ', 'ɠ' => 'Ɠ', 'ɡ' => 'Ɡ', 'ɣ' => 'Ɣ', 'ɥ' => 'Ɥ', 'ɦ' => 'Ɦ', 'ɨ' => 'Ɨ', 'ɩ' => 'Ɩ', 'ɪ' => 'Ɪ', 'ɫ' => 'Ɫ', 'ɬ' => 'Ɬ', 'ɯ' => 'Ɯ', 'ɱ' => 'Ɱ', 'ɲ' => 'Ɲ', 'ɵ' => 'Ɵ', 'ɽ' => 'Ɽ', 'ʀ' => 'Ʀ', 'ʂ' => 'Ʂ', 'ʃ' => 'Ʃ', 'ʇ' => 'Ʇ', 'ʈ' => 'Ʈ', 'ʉ' => 'Ʉ', 'ʊ' => 'Ʊ', 'ʋ' => 'Ʋ', 'ʌ' => 'Ʌ', 'ʒ' => 'Ʒ', 'ʝ' => 'Ʝ', 'ʞ' => 'Ʞ', 'ͅ' => 'Ι', 'ͱ' => 'Ͱ', 'ͳ' => 'Ͳ', 'ͷ' => 'Ͷ', 'ͻ' => 'Ͻ', 'ͼ' => 'Ͼ', 'ͽ' => 'Ͽ', 'ά' => 'Ά', 'έ' => 'Έ', 'ή' => 'Ή', 'ί' => 'Ί', 'α' => 'Α', 'β' => 'Β', 'γ' => 'Γ', 'δ' => 'Δ', 'ε' => 'Ε', 'ζ' => 'Ζ', 'η' => 'Η', 'θ' => 'Θ', 'ι' => 'Ι', 'κ' => 'Κ', 'λ' => 'Λ', 'μ' => 'Μ', 'ν' => 'Ν', 'ξ' => 'Ξ', 'ο' => 'Ο', 'π' => 'Π', 'ρ' => 'Ρ', 'ς' => 'Σ', 'σ' => 'Σ', 'τ' => 'Τ', 'υ' => 'Υ', 'φ' => 'Φ', 'χ' => 'Χ', 'ψ' => 'Ψ', 'ω' => 'Ω', 'ϊ' => 'Ϊ', 'ϋ' => 'Ϋ', 'ό' => 'Ό', 'ύ' => 'Ύ', 'ώ' => 'Ώ', 'ϐ' => 'Β', 'ϑ' => 'Θ', 'ϕ' => 'Φ', 'ϖ' => 'Π', 'ϗ' => 'Ϗ', 'ϙ' => 'Ϙ', 'ϛ' => 'Ϛ', 'ϝ' => 'Ϝ', 'ϟ' => 'Ϟ', 'ϡ' => 'Ϡ', 'ϣ' => 'Ϣ', 'ϥ' => 'Ϥ', 'ϧ' => 'Ϧ', 'ϩ' => 'Ϩ', 'ϫ' => 'Ϫ', 'ϭ' => 'Ϭ', 'ϯ' => 'Ϯ', 'ϰ' => 'Κ', 'ϱ' => 'Ρ', 'ϲ' => 'Ϲ', 'ϳ' => 'Ϳ', 'ϵ' => 'Ε', 'ϸ' => 'Ϸ', 'ϻ' => 'Ϻ', 'а' => 'А', 'б' => 'Б', 'в' => 'В', 'г' => 'Г', 'д' => 'Д', 'е' => 'Е', 'ж' => 'Ж', 'з' => 'З', 'и' => 'И', 'й' => 'Й', 'к' => 'К', 'л' => 'Л', 'м' => 'М', 'н' => 'Н', 'о' => 'О', 'п' => 'П', 'р' => 'Р', 'с' => 'С', 'т' => 'Т', 'у' => 'У', 'ф' => 'Ф', 'х' => 'Х', 'ц' => 'Ц', 'ч' => 'Ч', 'ш' => 'Ш', 'щ' => 'Щ', 'ъ' => 'Ъ', 'ы' => 'Ы', 'ь' => 'Ь', 'э' => 'Э', 'ю' => 'Ю', 'я' => 'Я', 'ѐ' => 'Ѐ', 'ё' => 'Ё', 'ђ' => 'Ђ', 'ѓ' => 'Ѓ', 'є' => 'Є', 'ѕ' => 'Ѕ', 'і' => 'І', 'ї' => 'Ї', 'ј' => 'Ј', 'љ' => 'Љ', 'њ' => 'Њ', 'ћ' => 'Ћ', 'ќ' => 'Ќ', 'ѝ' => 'Ѝ', 'ў' => 'Ў', 'џ' => 'Џ', 'ѡ' => 'Ѡ', 'ѣ' => 'Ѣ', 'ѥ' => 'Ѥ', 'ѧ' => 'Ѧ', 'ѩ' => 'Ѩ', 'ѫ' => 'Ѫ', 'ѭ' => 'Ѭ', 'ѯ' => 'Ѯ', 'ѱ' => 'Ѱ', 'ѳ' => 'Ѳ', 'ѵ' => 'Ѵ', 'ѷ' => 'Ѷ', 'ѹ' => 'Ѹ', 'ѻ' => 'Ѻ', 'ѽ' => 'Ѽ', 'ѿ' => 'Ѿ', 'ҁ' => 'Ҁ', 'ҋ' => 'Ҋ', 'ҍ' => 'Ҍ', 'ҏ' => 'Ҏ', 'ґ' => 'Ґ', 'ғ' => 'Ғ', 'ҕ' => 'Ҕ', 'җ' => 'Җ', 'ҙ' => 'Ҙ', 'қ' => 'Қ', 'ҝ' => 'Ҝ', 'ҟ' => 'Ҟ', 'ҡ' => 'Ҡ', 'ң' => 'Ң', 'ҥ' => 'Ҥ', 'ҧ' => 'Ҧ', 'ҩ' => 'Ҩ', 'ҫ' => 'Ҫ', 'ҭ' => 'Ҭ', 'ү' => 'Ү', 'ұ' => 'Ұ', 'ҳ' => 'Ҳ', 'ҵ' => 'Ҵ', 'ҷ' => 'Ҷ', 'ҹ' => 'Ҹ', 'һ' => 'Һ', 'ҽ' => 'Ҽ', 'ҿ' => 'Ҿ', 'ӂ' => 'Ӂ', 'ӄ' => 'Ӄ', 'ӆ' => 'Ӆ', 'ӈ' => 'Ӈ', 'ӊ' => 'Ӊ', 'ӌ' => 'Ӌ', 'ӎ' => 'Ӎ', 'ӏ' => 'Ӏ', 'ӑ' => 'Ӑ', 'ӓ' => 'Ӓ', 'ӕ' => 'Ӕ', 'ӗ' => 'Ӗ', 'ә' => 'Ә', 'ӛ' => 'Ӛ', 'ӝ' => 'Ӝ', 'ӟ' => 'Ӟ', 'ӡ' => 'Ӡ', 'ӣ' => 'Ӣ', 'ӥ' => 'Ӥ', 'ӧ' => 'Ӧ', 'ө' => 'Ө', 'ӫ' => 'Ӫ', 'ӭ' => 'Ӭ', 'ӯ' => 'Ӯ', 'ӱ' => 'Ӱ', 'ӳ' => 'Ӳ', 'ӵ' => 'Ӵ', 'ӷ' => 'Ӷ', 'ӹ' => 'Ӹ', 'ӻ' => 'Ӻ', 'ӽ' => 'Ӽ', 'ӿ' => 'Ӿ', 'ԁ' => 'Ԁ', 'ԃ' => 'Ԃ', 'ԅ' => 'Ԅ', 'ԇ' => 'Ԇ', 'ԉ' => 'Ԉ', 'ԋ' => 'Ԋ', 'ԍ' => 'Ԍ', 'ԏ' => 'Ԏ', 'ԑ' => 'Ԑ', 'ԓ' => 'Ԓ', 'ԕ' => 'Ԕ', 'ԗ' => 'Ԗ', 'ԙ' => 'Ԙ', 'ԛ' => 'Ԛ', 'ԝ' => 'Ԝ', 'ԟ' => 'Ԟ', 'ԡ' => 'Ԡ', 'ԣ' => 'Ԣ', 'ԥ' => 'Ԥ', 'ԧ' => 'Ԧ', 'ԩ' => 'Ԩ', 'ԫ' => 'Ԫ', 'ԭ' => 'Ԭ', 'ԯ' => 'Ԯ', 'ա' => 'Ա', 'բ' => 'Բ', 'գ' => 'Գ', 'դ' => 'Դ', 'ե' => 'Ե', 'զ' => 'Զ', 'է' => 'Է', 'ը' => 'Ը', 'թ' => 'Թ', 'ժ' => 'Ժ', 'ի' => 'Ի', 'լ' => 'Լ', 'խ' => 'Խ', 'ծ' => 'Ծ', 'կ' => 'Կ', 'հ' => 'Հ', 'ձ' => 'Ձ', 'ղ' => 'Ղ', 'ճ' => 'Ճ', 'մ' => 'Մ', 'յ' => 'Յ', 'ն' => 'Ն', 'շ' => 'Շ', 'ո' => 'Ո', 'չ' => 'Չ', 'պ' => 'Պ', 'ջ' => 'Ջ', 'ռ' => 'Ռ', 'ս' => 'Ս', 'վ' => 'Վ', 'տ' => 'Տ', 'ր' => 'Ր', 'ց' => 'Ց', 'ւ' => 'Ւ', 'փ' => 'Փ', 'ք' => 'Ք', 'օ' => 'Օ', 'ֆ' => 'Ֆ', 'ა' => 'Ა', 'ბ' => 'Ბ', 'გ' => 'Გ', 'დ' => 'Დ', 'ე' => 'Ე', 'ვ' => 'Ვ', 'ზ' => 'Ზ', 'თ' => 'Თ', 'ი' => 'Ი', 'კ' => 'Კ', 'ლ' => 'Ლ', 'მ' => 'Მ', 'ნ' => 'Ნ', 'ო' => 'Ო', 'პ' => 'Პ', 'ჟ' => 'Ჟ', 'რ' => 'Რ', 'ს' => 'Ს', 'ტ' => 'Ტ', 'უ' => 'Უ', 'ფ' => 'Ფ', 'ქ' => 'Ქ', 'ღ' => 'Ღ', 'ყ' => 'Ყ', 'შ' => 'Შ', 'ჩ' => 'Ჩ', 'ც' => 'Ც', 'ძ' => 'Ძ', 'წ' => 'Წ', 'ჭ' => 'Ჭ', 'ხ' => 'Ხ', 'ჯ' => 'Ჯ', 'ჰ' => 'Ჰ', 'ჱ' => 'Ჱ', 'ჲ' => 'Ჲ', 'ჳ' => 'Ჳ', 'ჴ' => 'Ჴ', 'ჵ' => 'Ჵ', 'ჶ' => 'Ჶ', 'ჷ' => 'Ჷ', 'ჸ' => 'Ჸ', 'ჹ' => 'Ჹ', 'ჺ' => 'Ჺ', 'ჽ' => 'Ჽ', 'ჾ' => 'Ჾ', 'ჿ' => 'Ჿ', 'ᏸ' => 'Ᏸ', 'ᏹ' => 'Ᏹ', 'ᏺ' => 'Ᏺ', 'ᏻ' => 'Ᏻ', 'ᏼ' => 'Ᏼ', 'ᏽ' => 'Ᏽ', 'ᲀ' => 'В', 'ᲁ' => 'Д', 'ᲂ' => 'О', 'ᲃ' => 'С', 'ᲄ' => 'Т', 'ᲅ' => 'Т', 'ᲆ' => 'Ъ', 'ᲇ' => 'Ѣ', 'ᲈ' => 'Ꙋ', 'ᵹ' => 'Ᵹ', 'ᵽ' => 'Ᵽ', 'ᶎ' => 'Ᶎ', 'ḁ' => 'Ḁ', 'ḃ' => 'Ḃ', 'ḅ' => 'Ḅ', 'ḇ' => 'Ḇ', 'ḉ' => 'Ḉ', 'ḋ' => 'Ḋ', 'ḍ' => 'Ḍ', 'ḏ' => 'Ḏ', 'ḑ' => 'Ḑ', 'ḓ' => 'Ḓ', 'ḕ' => 'Ḕ', 'ḗ' => 'Ḗ', 'ḙ' => 'Ḙ', 'ḛ' => 'Ḛ', 'ḝ' => 'Ḝ', 'ḟ' => 'Ḟ', 'ḡ' => 'Ḡ', 'ḣ' => 'Ḣ', 'ḥ' => 'Ḥ', 'ḧ' => 'Ḧ', 'ḩ' => 'Ḩ', 'ḫ' => 'Ḫ', 'ḭ' => 'Ḭ', 'ḯ' => 'Ḯ', 'ḱ' => 'Ḱ', 'ḳ' => 'Ḳ', 'ḵ' => 'Ḵ', 'ḷ' => 'Ḷ', 'ḹ' => 'Ḹ', 'ḻ' => 'Ḻ', 'ḽ' => 'Ḽ', 'ḿ' => 'Ḿ', 'ṁ' => 'Ṁ', 'ṃ' => 'Ṃ', 'ṅ' => 'Ṅ', 'ṇ' => 'Ṇ', 'ṉ' => 'Ṉ', 'ṋ' => 'Ṋ', 'ṍ' => 'Ṍ', 'ṏ' => 'Ṏ', 'ṑ' => 'Ṑ', 'ṓ' => 'Ṓ', 'ṕ' => 'Ṕ', 'ṗ' => 'Ṗ', 'ṙ' => 'Ṙ', 'ṛ' => 'Ṛ', 'ṝ' => 'Ṝ', 'ṟ' => 'Ṟ', 'ṡ' => 'Ṡ', 'ṣ' => 'Ṣ', 'ṥ' => 'Ṥ', 'ṧ' => 'Ṧ', 'ṩ' => 'Ṩ', 'ṫ' => 'Ṫ', 'ṭ' => 'Ṭ', 'ṯ' => 'Ṯ', 'ṱ' => 'Ṱ', 'ṳ' => 'Ṳ', 'ṵ' => 'Ṵ', 'ṷ' => 'Ṷ', 'ṹ' => 'Ṹ', 'ṻ' => 'Ṻ', 'ṽ' => 'Ṽ', 'ṿ' => 'Ṿ', 'ẁ' => 'Ẁ', 'ẃ' => 'Ẃ', 'ẅ' => 'Ẅ', 'ẇ' => 'Ẇ', 'ẉ' => 'Ẉ', 'ẋ' => 'Ẋ', 'ẍ' => 'Ẍ', 'ẏ' => 'Ẏ', 'ẑ' => 'Ẑ', 'ẓ' => 'Ẓ', 'ẕ' => 'Ẕ', 'ẛ' => 'Ṡ', 'ạ' => 'Ạ', 'ả' => 'Ả', 'ấ' => 'Ấ', 'ầ' => 'Ầ', 'ẩ' => 'Ẩ', 'ẫ' => 'Ẫ', 'ậ' => 'Ậ', 'ắ' => 'Ắ', 'ằ' => 'Ằ', 'ẳ' => 'Ẳ', 'ẵ' => 'Ẵ', 'ặ' => 'Ặ', 'ẹ' => 'Ẹ', 'ẻ' => 'Ẻ', 'ẽ' => 'Ẽ', 'ế' => 'Ế', 'ề' => 'Ề', 'ể' => 'Ể', 'ễ' => 'Ễ', 'ệ' => 'Ệ', 'ỉ' => 'Ỉ', 'ị' => 'Ị', 'ọ' => 'Ọ', 'ỏ' => 'Ỏ', 'ố' => 'Ố', 'ồ' => 'Ồ', 'ổ' => 'Ổ', 'ỗ' => 'Ỗ', 'ộ' => 'Ộ', 'ớ' => 'Ớ', 'ờ' => 'Ờ', 'ở' => 'Ở', 'ỡ' => 'Ỡ', 'ợ' => 'Ợ', 'ụ' => 'Ụ', 'ủ' => 'Ủ', 'ứ' => 'Ứ', 'ừ' => 'Ừ', 'ử' => 'Ử', 'ữ' => 'Ữ', 'ự' => 'Ự', 'ỳ' => 'Ỳ', 'ỵ' => 'Ỵ', 'ỷ' => 'Ỷ', 'ỹ' => 'Ỹ', 'ỻ' => 'Ỻ', 'ỽ' => 'Ỽ', 'ỿ' => 'Ỿ', 'ἀ' => 'Ἀ', 'ἁ' => 'Ἁ', 'ἂ' => 'Ἂ', 'ἃ' => 'Ἃ', 'ἄ' => 'Ἄ', 'ἅ' => 'Ἅ', 'ἆ' => 'Ἆ', 'ἇ' => 'Ἇ', 'ἐ' => 'Ἐ', 'ἑ' => 'Ἑ', 'ἒ' => 'Ἒ', 'ἓ' => 'Ἓ', 'ἔ' => 'Ἔ', 'ἕ' => 'Ἕ', 'ἠ' => 'Ἠ', 'ἡ' => 'Ἡ', 'ἢ' => 'Ἢ', 'ἣ' => 'Ἣ', 'ἤ' => 'Ἤ', 'ἥ' => 'Ἥ', 'ἦ' => 'Ἦ', 'ἧ' => 'Ἧ', 'ἰ' => 'Ἰ', 'ἱ' => 'Ἱ', 'ἲ' => 'Ἲ', 'ἳ' => 'Ἳ', 'ἴ' => 'Ἴ', 'ἵ' => 'Ἵ', 'ἶ' => 'Ἶ', 'ἷ' => 'Ἷ', 'ὀ' => 'Ὀ', 'ὁ' => 'Ὁ', 'ὂ' => 'Ὂ', 'ὃ' => 'Ὃ', 'ὄ' => 'Ὄ', 'ὅ' => 'Ὅ', 'ὑ' => 'Ὑ', 'ὓ' => 'Ὓ', 'ὕ' => 'Ὕ', 'ὗ' => 'Ὗ', 'ὠ' => 'Ὠ', 'ὡ' => 'Ὡ', 'ὢ' => 'Ὢ', 'ὣ' => 'Ὣ', 'ὤ' => 'Ὤ', 'ὥ' => 'Ὥ', 'ὦ' => 'Ὦ', 'ὧ' => 'Ὧ', 'ὰ' => 'Ὰ', 'ά' => 'Ά', 'ὲ' => 'Ὲ', 'έ' => 'Έ', 'ὴ' => 'Ὴ', 'ή' => 'Ή', 'ὶ' => 'Ὶ', 'ί' => 'Ί', 'ὸ' => 'Ὸ', 'ό' => 'Ό', 'ὺ' => 'Ὺ', 'ύ' => 'Ύ', 'ὼ' => 'Ὼ', 'ώ' => 'Ώ', 'ᾀ' => 'ἈΙ', 'ᾁ' => 'ἉΙ', 'ᾂ' => 'ἊΙ', 'ᾃ' => 'ἋΙ', 'ᾄ' => 'ἌΙ', 'ᾅ' => 'ἍΙ', 'ᾆ' => 'ἎΙ', 'ᾇ' => 'ἏΙ', 'ᾐ' => 'ἨΙ', 'ᾑ' => 'ἩΙ', 'ᾒ' => 'ἪΙ', 'ᾓ' => 'ἫΙ', 'ᾔ' => 'ἬΙ', 'ᾕ' => 'ἭΙ', 'ᾖ' => 'ἮΙ', 'ᾗ' => 'ἯΙ', 'ᾠ' => 'ὨΙ', 'ᾡ' => 'ὩΙ', 'ᾢ' => 'ὪΙ', 'ᾣ' => 'ὫΙ', 'ᾤ' => 'ὬΙ', 'ᾥ' => 'ὭΙ', 'ᾦ' => 'ὮΙ', 'ᾧ' => 'ὯΙ', 'ᾰ' => 'Ᾰ', 'ᾱ' => 'Ᾱ', 'ᾳ' => 'ΑΙ', 'ι' => 'Ι', 'ῃ' => 'ΗΙ', 'ῐ' => 'Ῐ', 'ῑ' => 'Ῑ', 'ῠ' => 'Ῠ', 'ῡ' => 'Ῡ', 'ῥ' => 'Ῥ', 'ῳ' => 'ΩΙ', 'ⅎ' => 'Ⅎ', 'ⅰ' => 'Ⅰ', 'ⅱ' => 'Ⅱ', 'ⅲ' => 'Ⅲ', 'ⅳ' => 'Ⅳ', 'ⅴ' => 'Ⅴ', 'ⅵ' => 'Ⅵ', 'ⅶ' => 'Ⅶ', 'ⅷ' => 'Ⅷ', 'ⅸ' => 'Ⅸ', 'ⅹ' => 'Ⅹ', 'ⅺ' => 'Ⅺ', 'ⅻ' => 'Ⅻ', 'ⅼ' => 'Ⅼ', 'ⅽ' => 'Ⅽ', 'ⅾ' => 'Ⅾ', 'ⅿ' => 'Ⅿ', 'ↄ' => 'Ↄ', 'ⓐ' => 'Ⓐ', 'ⓑ' => 'Ⓑ', 'ⓒ' => 'Ⓒ', 'ⓓ' => 'Ⓓ', 'ⓔ' => 'Ⓔ', 'ⓕ' => 'Ⓕ', 'ⓖ' => 'Ⓖ', 'ⓗ' => 'Ⓗ', 'ⓘ' => 'Ⓘ', 'ⓙ' => 'Ⓙ', 'ⓚ' => 'Ⓚ', 'ⓛ' => 'Ⓛ', 'ⓜ' => 'Ⓜ', 'ⓝ' => 'Ⓝ', 'ⓞ' => 'Ⓞ', 'ⓟ' => 'Ⓟ', 'ⓠ' => 'Ⓠ', 'ⓡ' => 'Ⓡ', 'ⓢ' => 'Ⓢ', 'ⓣ' => 'Ⓣ', 'ⓤ' => 'Ⓤ', 'ⓥ' => 'Ⓥ', 'ⓦ' => 'Ⓦ', 'ⓧ' => 'Ⓧ', 'ⓨ' => 'Ⓨ', 'ⓩ' => 'Ⓩ', 'ⰰ' => 'Ⰰ', 'ⰱ' => 'Ⰱ', 'ⰲ' => 'Ⰲ', 'ⰳ' => 'Ⰳ', 'ⰴ' => 'Ⰴ', 'ⰵ' => 'Ⰵ', 'ⰶ' => 'Ⰶ', 'ⰷ' => 'Ⰷ', 'ⰸ' => 'Ⰸ', 'ⰹ' => 'Ⰹ', 'ⰺ' => 'Ⰺ', 'ⰻ' => 'Ⰻ', 'ⰼ' => 'Ⰼ', 'ⰽ' => 'Ⰽ', 'ⰾ' => 'Ⰾ', 'ⰿ' => 'Ⰿ', 'ⱀ' => 'Ⱀ', 'ⱁ' => 'Ⱁ', 'ⱂ' => 'Ⱂ', 'ⱃ' => 'Ⱃ', 'ⱄ' => 'Ⱄ', 'ⱅ' => 'Ⱅ', 'ⱆ' => 'Ⱆ', 'ⱇ' => 'Ⱇ', 'ⱈ' => 'Ⱈ', 'ⱉ' => 'Ⱉ', 'ⱊ' => 'Ⱊ', 'ⱋ' => 'Ⱋ', 'ⱌ' => 'Ⱌ', 'ⱍ' => 'Ⱍ', 'ⱎ' => 'Ⱎ', 'ⱏ' => 'Ⱏ', 'ⱐ' => 'Ⱐ', 'ⱑ' => 'Ⱑ', 'ⱒ' => 'Ⱒ', 'ⱓ' => 'Ⱓ', 'ⱔ' => 'Ⱔ', 'ⱕ' => 'Ⱕ', 'ⱖ' => 'Ⱖ', 'ⱗ' => 'Ⱗ', 'ⱘ' => 'Ⱘ', 'ⱙ' => 'Ⱙ', 'ⱚ' => 'Ⱚ', 'ⱛ' => 'Ⱛ', 'ⱜ' => 'Ⱜ', 'ⱝ' => 'Ⱝ', 'ⱞ' => 'Ⱞ', 'ⱡ' => 'Ⱡ', 'ⱥ' => 'Ⱥ', 'ⱦ' => 'Ⱦ', 'ⱨ' => 'Ⱨ', 'ⱪ' => 'Ⱪ', 'ⱬ' => 'Ⱬ', 'ⱳ' => 'Ⱳ', 'ⱶ' => 'Ⱶ', 'ⲁ' => 'Ⲁ', 'ⲃ' => 'Ⲃ', 'ⲅ' => 'Ⲅ', 'ⲇ' => 'Ⲇ', 'ⲉ' => 'Ⲉ', 'ⲋ' => 'Ⲋ', 'ⲍ' => 'Ⲍ', 'ⲏ' => 'Ⲏ', 'ⲑ' => 'Ⲑ', 'ⲓ' => 'Ⲓ', 'ⲕ' => 'Ⲕ', 'ⲗ' => 'Ⲗ', 'ⲙ' => 'Ⲙ', 'ⲛ' => 'Ⲛ', 'ⲝ' => 'Ⲝ', 'ⲟ' => 'Ⲟ', 'ⲡ' => 'Ⲡ', 'ⲣ' => 'Ⲣ', 'ⲥ' => 'Ⲥ', 'ⲧ' => 'Ⲧ', 'ⲩ' => 'Ⲩ', 'ⲫ' => 'Ⲫ', 'ⲭ' => 'Ⲭ', 'ⲯ' => 'Ⲯ', 'ⲱ' => 'Ⲱ', 'ⲳ' => 'Ⲳ', 'ⲵ' => 'Ⲵ', 'ⲷ' => 'Ⲷ', 'ⲹ' => 'Ⲹ', 'ⲻ' => 'Ⲻ', 'ⲽ' => 'Ⲽ', 'ⲿ' => 'Ⲿ', 'ⳁ' => 'Ⳁ', 'ⳃ' => 'Ⳃ', 'ⳅ' => 'Ⳅ', 'ⳇ' => 'Ⳇ', 'ⳉ' => 'Ⳉ', 'ⳋ' => 'Ⳋ', 'ⳍ' => 'Ⳍ', 'ⳏ' => 'Ⳏ', 'ⳑ' => 'Ⳑ', 'ⳓ' => 'Ⳓ', 'ⳕ' => 'Ⳕ', 'ⳗ' => 'Ⳗ', 'ⳙ' => 'Ⳙ', 'ⳛ' => 'Ⳛ', 'ⳝ' => 'Ⳝ', 'ⳟ' => 'Ⳟ', 'ⳡ' => 'Ⳡ', 'ⳣ' => 'Ⳣ', 'ⳬ' => 'Ⳬ', 'ⳮ' => 'Ⳮ', 'ⳳ' => 'Ⳳ', 'ⴀ' => 'Ⴀ', 'ⴁ' => 'Ⴁ', 'ⴂ' => 'Ⴂ', 'ⴃ' => 'Ⴃ', 'ⴄ' => 'Ⴄ', 'ⴅ' => 'Ⴅ', 'ⴆ' => 'Ⴆ', 'ⴇ' => 'Ⴇ', 'ⴈ' => 'Ⴈ', 'ⴉ' => 'Ⴉ', 'ⴊ' => 'Ⴊ', 'ⴋ' => 'Ⴋ', 'ⴌ' => 'Ⴌ', 'ⴍ' => 'Ⴍ', 'ⴎ' => 'Ⴎ', 'ⴏ' => 'Ⴏ', 'ⴐ' => 'Ⴐ', 'ⴑ' => 'Ⴑ', 'ⴒ' => 'Ⴒ', 'ⴓ' => 'Ⴓ', 'ⴔ' => 'Ⴔ', 'ⴕ' => 'Ⴕ', 'ⴖ' => 'Ⴖ', 'ⴗ' => 'Ⴗ', 'ⴘ' => 'Ⴘ', 'ⴙ' => 'Ⴙ', 'ⴚ' => 'Ⴚ', 'ⴛ' => 'Ⴛ', 'ⴜ' => 'Ⴜ', 'ⴝ' => 'Ⴝ', 'ⴞ' => 'Ⴞ', 'ⴟ' => 'Ⴟ', 'ⴠ' => 'Ⴠ', 'ⴡ' => 'Ⴡ', 'ⴢ' => 'Ⴢ', 'ⴣ' => 'Ⴣ', 'ⴤ' => 'Ⴤ', 'ⴥ' => 'Ⴥ', 'ⴧ' => 'Ⴧ', 'ⴭ' => 'Ⴭ', 'ꙁ' => 'Ꙁ', 'ꙃ' => 'Ꙃ', 'ꙅ' => 'Ꙅ', 'ꙇ' => 'Ꙇ', 'ꙉ' => 'Ꙉ', 'ꙋ' => 'Ꙋ', 'ꙍ' => 'Ꙍ', 'ꙏ' => 'Ꙏ', 'ꙑ' => 'Ꙑ', 'ꙓ' => 'Ꙓ', 'ꙕ' => 'Ꙕ', 'ꙗ' => 'Ꙗ', 'ꙙ' => 'Ꙙ', 'ꙛ' => 'Ꙛ', 'ꙝ' => 'Ꙝ', 'ꙟ' => 'Ꙟ', 'ꙡ' => 'Ꙡ', 'ꙣ' => 'Ꙣ', 'ꙥ' => 'Ꙥ', 'ꙧ' => 'Ꙧ', 'ꙩ' => 'Ꙩ', 'ꙫ' => 'Ꙫ', 'ꙭ' => 'Ꙭ', 'ꚁ' => 'Ꚁ', 'ꚃ' => 'Ꚃ', 'ꚅ' => 'Ꚅ', 'ꚇ' => 'Ꚇ', 'ꚉ' => 'Ꚉ', 'ꚋ' => 'Ꚋ', 'ꚍ' => 'Ꚍ', 'ꚏ' => 'Ꚏ', 'ꚑ' => 'Ꚑ', 'ꚓ' => 'Ꚓ', 'ꚕ' => 'Ꚕ', 'ꚗ' => 'Ꚗ', 'ꚙ' => 'Ꚙ', 'ꚛ' => 'Ꚛ', 'ꜣ' => 'Ꜣ', 'ꜥ' => 'Ꜥ', 'ꜧ' => 'Ꜧ', 'ꜩ' => 'Ꜩ', 'ꜫ' => 'Ꜫ', 'ꜭ' => 'Ꜭ', 'ꜯ' => 'Ꜯ', 'ꜳ' => 'Ꜳ', 'ꜵ' => 'Ꜵ', 'ꜷ' => 'Ꜷ', 'ꜹ' => 'Ꜹ', 'ꜻ' => 'Ꜻ', 'ꜽ' => 'Ꜽ', 'ꜿ' => 'Ꜿ', 'ꝁ' => 'Ꝁ', 'ꝃ' => 'Ꝃ', 'ꝅ' => 'Ꝅ', 'ꝇ' => 'Ꝇ', 'ꝉ' => 'Ꝉ', 'ꝋ' => 'Ꝋ', 'ꝍ' => 'Ꝍ', 'ꝏ' => 'Ꝏ', 'ꝑ' => 'Ꝑ', 'ꝓ' => 'Ꝓ', 'ꝕ' => 'Ꝕ', 'ꝗ' => 'Ꝗ', 'ꝙ' => 'Ꝙ', 'ꝛ' => 'Ꝛ', 'ꝝ' => 'Ꝝ', 'ꝟ' => 'Ꝟ', 'ꝡ' => 'Ꝡ', 'ꝣ' => 'Ꝣ', 'ꝥ' => 'Ꝥ', 'ꝧ' => 'Ꝧ', 'ꝩ' => 'Ꝩ', 'ꝫ' => 'Ꝫ', 'ꝭ' => 'Ꝭ', 'ꝯ' => 'Ꝯ', 'ꝺ' => 'Ꝺ', 'ꝼ' => 'Ꝼ', 'ꝿ' => 'Ꝿ', 'ꞁ' => 'Ꞁ', 'ꞃ' => 'Ꞃ', 'ꞅ' => 'Ꞅ', 'ꞇ' => 'Ꞇ', 'ꞌ' => 'Ꞌ', 'ꞑ' => 'Ꞑ', 'ꞓ' => 'Ꞓ', 'ꞔ' => 'Ꞔ', 'ꞗ' => 'Ꞗ', 'ꞙ' => 'Ꞙ', 'ꞛ' => 'Ꞛ', 'ꞝ' => 'Ꞝ', 'ꞟ' => 'Ꞟ', 'ꞡ' => 'Ꞡ', 'ꞣ' => 'Ꞣ', 'ꞥ' => 'Ꞥ', 'ꞧ' => 'Ꞧ', 'ꞩ' => 'Ꞩ', 'ꞵ' => 'Ꞵ', 'ꞷ' => 'Ꞷ', 'ꞹ' => 'Ꞹ', 'ꞻ' => 'Ꞻ', 'ꞽ' => 'Ꞽ', 'ꞿ' => 'Ꞿ', 'ꟃ' => 'Ꟃ', 'ꟈ' => 'Ꟈ', 'ꟊ' => 'Ꟊ', 'ꟶ' => 'Ꟶ', 'ꭓ' => 'Ꭓ', 'ꭰ' => 'Ꭰ', 'ꭱ' => 'Ꭱ', 'ꭲ' => 'Ꭲ', 'ꭳ' => 'Ꭳ', 'ꭴ' => 'Ꭴ', 'ꭵ' => 'Ꭵ', 'ꭶ' => 'Ꭶ', 'ꭷ' => 'Ꭷ', 'ꭸ' => 'Ꭸ', 'ꭹ' => 'Ꭹ', 'ꭺ' => 'Ꭺ', 'ꭻ' => 'Ꭻ', 'ꭼ' => 'Ꭼ', 'ꭽ' => 'Ꭽ', 'ꭾ' => 'Ꭾ', 'ꭿ' => 'Ꭿ', 'ꮀ' => 'Ꮀ', 'ꮁ' => 'Ꮁ', 'ꮂ' => 'Ꮂ', 'ꮃ' => 'Ꮃ', 'ꮄ' => 'Ꮄ', 'ꮅ' => 'Ꮅ', 'ꮆ' => 'Ꮆ', 'ꮇ' => 'Ꮇ', 'ꮈ' => 'Ꮈ', 'ꮉ' => 'Ꮉ', 'ꮊ' => 'Ꮊ', 'ꮋ' => 'Ꮋ', 'ꮌ' => 'Ꮌ', 'ꮍ' => 'Ꮍ', 'ꮎ' => 'Ꮎ', 'ꮏ' => 'Ꮏ', 'ꮐ' => 'Ꮐ', 'ꮑ' => 'Ꮑ', 'ꮒ' => 'Ꮒ', 'ꮓ' => 'Ꮓ', 'ꮔ' => 'Ꮔ', 'ꮕ' => 'Ꮕ', 'ꮖ' => 'Ꮖ', 'ꮗ' => 'Ꮗ', 'ꮘ' => 'Ꮘ', 'ꮙ' => 'Ꮙ', 'ꮚ' => 'Ꮚ', 'ꮛ' => 'Ꮛ', 'ꮜ' => 'Ꮜ', 'ꮝ' => 'Ꮝ', 'ꮞ' => 'Ꮞ', 'ꮟ' => 'Ꮟ', 'ꮠ' => 'Ꮠ', 'ꮡ' => 'Ꮡ', 'ꮢ' => 'Ꮢ', 'ꮣ' => 'Ꮣ', 'ꮤ' => 'Ꮤ', 'ꮥ' => 'Ꮥ', 'ꮦ' => 'Ꮦ', 'ꮧ' => 'Ꮧ', 'ꮨ' => 'Ꮨ', 'ꮩ' => 'Ꮩ', 'ꮪ' => 'Ꮪ', 'ꮫ' => 'Ꮫ', 'ꮬ' => 'Ꮬ', 'ꮭ' => 'Ꮭ', 'ꮮ' => 'Ꮮ', 'ꮯ' => 'Ꮯ', 'ꮰ' => 'Ꮰ', 'ꮱ' => 'Ꮱ', 'ꮲ' => 'Ꮲ', 'ꮳ' => 'Ꮳ', 'ꮴ' => 'Ꮴ', 'ꮵ' => 'Ꮵ', 'ꮶ' => 'Ꮶ', 'ꮷ' => 'Ꮷ', 'ꮸ' => 'Ꮸ', 'ꮹ' => 'Ꮹ', 'ꮺ' => 'Ꮺ', 'ꮻ' => 'Ꮻ', 'ꮼ' => 'Ꮼ', 'ꮽ' => 'Ꮽ', 'ꮾ' => 'Ꮾ', 'ꮿ' => 'Ꮿ', 'a' => 'A', 'b' => 'B', 'c' => 'C', 'd' => 'D', 'e' => 'E', 'f' => 'F', 'g' => 'G', 'h' => 'H', 'i' => 'I', 'j' => 'J', 'k' => 'K', 'l' => 'L', 'm' => 'M', 'n' => 'N', 'o' => 'O', 'p' => 'P', 'q' => 'Q', 'r' => 'R', 's' => 'S', 't' => 'T', 'u' => 'U', 'v' => 'V', 'w' => 'W', 'x' => 'X', 'y' => 'Y', 'z' => 'Z', '𐐨' => '𐐀', '𐐩' => '𐐁', '𐐪' => '𐐂', '𐐫' => '𐐃', '𐐬' => '𐐄', '𐐭' => '𐐅', '𐐮' => '𐐆', '𐐯' => '𐐇', '𐐰' => '𐐈', '𐐱' => '𐐉', '𐐲' => '𐐊', '𐐳' => '𐐋', '𐐴' => '𐐌', '𐐵' => '𐐍', '𐐶' => '𐐎', '𐐷' => '𐐏', '𐐸' => '𐐐', '𐐹' => '𐐑', '𐐺' => '𐐒', '𐐻' => '𐐓', '𐐼' => '𐐔', '𐐽' => '𐐕', '𐐾' => '𐐖', '𐐿' => '𐐗', '𐑀' => '𐐘', '𐑁' => '𐐙', '𐑂' => '𐐚', '𐑃' => '𐐛', '𐑄' => '𐐜', '𐑅' => '𐐝', '𐑆' => '𐐞', '𐑇' => '𐐟', '𐑈' => '𐐠', '𐑉' => '𐐡', '𐑊' => '𐐢', '𐑋' => '𐐣', '𐑌' => '𐐤', '𐑍' => '𐐥', '𐑎' => '𐐦', '𐑏' => '𐐧', '𐓘' => '𐒰', '𐓙' => '𐒱', '𐓚' => '𐒲', '𐓛' => '𐒳', '𐓜' => '𐒴', '𐓝' => '𐒵', '𐓞' => '𐒶', '𐓟' => '𐒷', '𐓠' => '𐒸', '𐓡' => '𐒹', '𐓢' => '𐒺', '𐓣' => '𐒻', '𐓤' => '𐒼', '𐓥' => '𐒽', '𐓦' => '𐒾', '𐓧' => '𐒿', '𐓨' => '𐓀', '𐓩' => '𐓁', '𐓪' => '𐓂', '𐓫' => '𐓃', '𐓬' => '𐓄', '𐓭' => '𐓅', '𐓮' => '𐓆', '𐓯' => '𐓇', '𐓰' => '𐓈', '𐓱' => '𐓉', '𐓲' => '𐓊', '𐓳' => '𐓋', '𐓴' => '𐓌', '𐓵' => '𐓍', '𐓶' => '𐓎', '𐓷' => '𐓏', '𐓸' => '𐓐', '𐓹' => '𐓑', '𐓺' => '𐓒', '𐓻' => '𐓓', '𐳀' => '𐲀', '𐳁' => '𐲁', '𐳂' => '𐲂', '𐳃' => '𐲃', '𐳄' => '𐲄', '𐳅' => '𐲅', '𐳆' => '𐲆', '𐳇' => '𐲇', '𐳈' => '𐲈', '𐳉' => '𐲉', '𐳊' => '𐲊', '𐳋' => '𐲋', '𐳌' => '𐲌', '𐳍' => '𐲍', '𐳎' => '𐲎', '𐳏' => '𐲏', '𐳐' => '𐲐', '𐳑' => '𐲑', '𐳒' => '𐲒', '𐳓' => '𐲓', '𐳔' => '𐲔', '𐳕' => '𐲕', '𐳖' => '𐲖', '𐳗' => '𐲗', '𐳘' => '𐲘', '𐳙' => '𐲙', '𐳚' => '𐲚', '𐳛' => '𐲛', '𐳜' => '𐲜', '𐳝' => '𐲝', '𐳞' => '𐲞', '𐳟' => '𐲟', '𐳠' => '𐲠', '𐳡' => '𐲡', '𐳢' => '𐲢', '𐳣' => '𐲣', '𐳤' => '𐲤', '𐳥' => '𐲥', '𐳦' => '𐲦', '𐳧' => '𐲧', '𐳨' => '𐲨', '𐳩' => '𐲩', '𐳪' => '𐲪', '𐳫' => '𐲫', '𐳬' => '𐲬', '𐳭' => '𐲭', '𐳮' => '𐲮', '𐳯' => '𐲯', '𐳰' => '𐲰', '𐳱' => '𐲱', '𐳲' => '𐲲', '𑣀' => '𑢠', '𑣁' => '𑢡', '𑣂' => '𑢢', '𑣃' => '𑢣', '𑣄' => '𑢤', '𑣅' => '𑢥', '𑣆' => '𑢦', '𑣇' => '𑢧', '𑣈' => '𑢨', '𑣉' => '𑢩', '𑣊' => '𑢪', '𑣋' => '𑢫', '𑣌' => '𑢬', '𑣍' => '𑢭', '𑣎' => '𑢮', '𑣏' => '𑢯', '𑣐' => '𑢰', '𑣑' => '𑢱', '𑣒' => '𑢲', '𑣓' => '𑢳', '𑣔' => '𑢴', '𑣕' => '𑢵', '𑣖' => '𑢶', '𑣗' => '𑢷', '𑣘' => '𑢸', '𑣙' => '𑢹', '𑣚' => '𑢺', '𑣛' => '𑢻', '𑣜' => '𑢼', '𑣝' => '𑢽', '𑣞' => '𑢾', '𑣟' => '𑢿', '𖹠' => '𖹀', '𖹡' => '𖹁', '𖹢' => '𖹂', '𖹣' => '𖹃', '𖹤' => '𖹄', '𖹥' => '𖹅', '𖹦' => '𖹆', '𖹧' => '𖹇', '𖹨' => '𖹈', '𖹩' => '𖹉', '𖹪' => '𖹊', '𖹫' => '𖹋', '𖹬' => '𖹌', '𖹭' => '𖹍', '𖹮' => '𖹎', '𖹯' => '𖹏', '𖹰' => '𖹐', '𖹱' => '𖹑', '𖹲' => '𖹒', '𖹳' => '𖹓', '𖹴' => '𖹔', '𖹵' => '𖹕', '𖹶' => '𖹖', '𖹷' => '𖹗', '𖹸' => '𖹘', '𖹹' => '𖹙', '𖹺' => '𖹚', '𖹻' => '𖹛', '𖹼' => '𖹜', '𖹽' => '𖹝', '𖹾' => '𖹞', '𖹿' => '𖹟', '𞤢' => '𞤀', '𞤣' => '𞤁', '𞤤' => '𞤂', '𞤥' => '𞤃', '𞤦' => '𞤄', '𞤧' => '𞤅', '𞤨' => '𞤆', '𞤩' => '𞤇', '𞤪' => '𞤈', '𞤫' => '𞤉', '𞤬' => '𞤊', '𞤭' => '𞤋', '𞤮' => '𞤌', '𞤯' => '𞤍', '𞤰' => '𞤎', '𞤱' => '𞤏', '𞤲' => '𞤐', '𞤳' => '𞤑', '𞤴' => '𞤒', '𞤵' => '𞤓', '𞤶' => '𞤔', '𞤷' => '𞤕', '𞤸' => '𞤖', '𞤹' => '𞤗', '𞤺' => '𞤘', '𞤻' => '𞤙', '𞤼' => '𞤚', '𞤽' => '𞤛', '𞤾' => '𞤜', '𞤿' => '𞤝', '𞥀' => '𞤞', '𞥁' => '𞤟', '𞥂' => '𞤠', '𞥃' => '𞤡', 'ß' => 'SS', 'ff' => 'FF', 'fi' => 'FI', 'fl' => 'FL', 'ffi' => 'FFI', 'ffl' => 'FFL', 'ſt' => 'ST', 'st' => 'ST', 'և' => 'ԵՒ', 'ﬓ' => 'ՄՆ', 'ﬔ' => 'ՄԵ', 'ﬕ' => 'ՄԻ', 'ﬖ' => 'ՎՆ', 'ﬗ' => 'ՄԽ', 'ʼn' => 'ʼN', 'ΐ' => 'Ϊ́', 'ΰ' => 'Ϋ́', 'ǰ' => 'J̌', 'ẖ' => 'H̱', 'ẗ' => 'T̈', 'ẘ' => 'W̊', 'ẙ' => 'Y̊', 'ẚ' => 'Aʾ', 'ὐ' => 'Υ̓', 'ὒ' => 'Υ̓̀', 'ὔ' => 'Υ̓́', 'ὖ' => 'Υ̓͂', 'ᾶ' => 'Α͂', 'ῆ' => 'Η͂', 'ῒ' => 'Ϊ̀', 'ΐ' => 'Ϊ́', 'ῖ' => 'Ι͂', 'ῗ' => 'Ϊ͂', 'ῢ' => 'Ϋ̀', 'ΰ' => 'Ϋ́', 'ῤ' => 'Ρ̓', 'ῦ' => 'Υ͂', 'ῧ' => 'Ϋ͂', 'ῶ' => 'Ω͂', 'ᾈ' => 'ἈΙ', 'ᾉ' => 'ἉΙ', 'ᾊ' => 'ἊΙ', 'ᾋ' => 'ἋΙ', 'ᾌ' => 'ἌΙ', 'ᾍ' => 'ἍΙ', 'ᾎ' => 'ἎΙ', 'ᾏ' => 'ἏΙ', 'ᾘ' => 'ἨΙ', 'ᾙ' => 'ἩΙ', 'ᾚ' => 'ἪΙ', 'ᾛ' => 'ἫΙ', 'ᾜ' => 'ἬΙ', 'ᾝ' => 'ἭΙ', 'ᾞ' => 'ἮΙ', 'ᾟ' => 'ἯΙ', 'ᾨ' => 'ὨΙ', 'ᾩ' => 'ὩΙ', 'ᾪ' => 'ὪΙ', 'ᾫ' => 'ὫΙ', 'ᾬ' => 'ὬΙ', 'ᾭ' => 'ὭΙ', 'ᾮ' => 'ὮΙ', 'ᾯ' => 'ὯΙ', 'ᾼ' => 'ΑΙ', 'ῌ' => 'ΗΙ', 'ῼ' => 'ΩΙ', 'ᾲ' => 'ᾺΙ', 'ᾴ' => 'ΆΙ', 'ῂ' => 'ῊΙ', 'ῄ' => 'ΉΙ', 'ῲ' => 'ῺΙ', 'ῴ' => 'ΏΙ', 'ᾷ' => 'Α͂Ι', 'ῇ' => 'Η͂Ι', 'ῷ' => 'Ω͂Ι', ); 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e', 'F' => 'f', 'G' => 'g', 'H' => 'h', 'I' => 'i', 'J' => 'j', 'K' => 'k', 'L' => 'l', 'M' => 'm', 'N' => 'n', 'O' => 'o', 'P' => 'p', 'Q' => 'q', 'R' => 'r', 'S' => 's', 'T' => 't', 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x', 'Y' => 'y', 'Z' => 'z', 'À' => 'à', 'Á' => 'á', 'Â' => 'â', 'Ã' => 'ã', 'Ä' => 'ä', 'Å' => 'å', 'Æ' => 'æ', 'Ç' => 'ç', 'È' => 'è', 'É' => 'é', 'Ê' => 'ê', 'Ë' => 'ë', 'Ì' => 'ì', 'Í' => 'í', 'Î' => 'î', 'Ï' => 'ï', 'Ð' => 'ð', 'Ñ' => 'ñ', 'Ò' => 'ò', 'Ó' => 'ó', 'Ô' => 'ô', 'Õ' => 'õ', 'Ö' => 'ö', 'Ø' => 'ø', 'Ù' => 'ù', 'Ú' => 'ú', 'Û' => 'û', 'Ü' => 'ü', 'Ý' => 'ý', 'Þ' => 'þ', 'Ā' => 'ā', 'Ă' => 'ă', 'Ą' => 'ą', 'Ć' => 'ć', 'Ĉ' => 'ĉ', 'Ċ' => 'ċ', 'Č' => 'č', 'Ď' => 'ď', 'Đ' => 'đ', 'Ē' => 'ē', 'Ĕ' => 'ĕ', 'Ė' => 'ė', 'Ę' => 'ę', 'Ě' => 'ě', 'Ĝ' => 'ĝ', 'Ğ' => 'ğ', 'Ġ' => 'ġ', 'Ģ' => 'ģ', 'Ĥ' => 'ĥ', 'Ħ' => 'ħ', 'Ĩ' => 'ĩ', 'Ī' => 'ī', 'Ĭ' => 'ĭ', 'Į' => 'į', 'İ' => 'i̇', 'IJ' => 'ij', 'Ĵ' => 'ĵ', 'Ķ' => 'ķ', 'Ĺ' => 'ĺ', 'Ļ' => 'ļ', 'Ľ' => 'ľ', 'Ŀ' => 'ŀ', 'Ł' => 'ł', 'Ń' => 'ń', 'Ņ' => 'ņ', 'Ň' => 'ň', 'Ŋ' => 'ŋ', 'Ō' => 'ō', 'Ŏ' => 'ŏ', 'Ő' => 'ő', 'Œ' => 'œ', 'Ŕ' => 'ŕ', 'Ŗ' => 'ŗ', 'Ř' => 'ř', 'Ś' => 'ś', 'Ŝ' => 'ŝ', 'Ş' => 'ş', 'Š' => 'š', 'Ţ' => 'ţ', 'Ť' => 'ť', 'Ŧ' => 'ŧ', 'Ũ' => 'ũ', 'Ū' => 'ū', 'Ŭ' => 'ŭ', 'Ů' => 'ů', 'Ű' => 'ű', 'Ų' => 'ų', 'Ŵ' => 'ŵ', 'Ŷ' => 'ŷ', 'Ÿ' => 'ÿ', 'Ź' => 'ź', 'Ż' => 'ż', 'Ž' => 'ž', 'Ɓ' => 'ɓ', 'Ƃ' => 'ƃ', 'Ƅ' => 'ƅ', 'Ɔ' => 'ɔ', 'Ƈ' => 'ƈ', 'Ɖ' => 'ɖ', 'Ɗ' => 'ɗ', 'Ƌ' => 'ƌ', 'Ǝ' => 'ǝ', 'Ə' => 'ə', 'Ɛ' => 'ɛ', 'Ƒ' => 'ƒ', 'Ɠ' => 'ɠ', 'Ɣ' => 'ɣ', 'Ɩ' => 'ɩ', 'Ɨ' => 'ɨ', 'Ƙ' => 'ƙ', 'Ɯ' => 'ɯ', 'Ɲ' => 'ɲ', 'Ɵ' => 'ɵ', 'Ơ' => 'ơ', 'Ƣ' => 'ƣ', 'Ƥ' => 'ƥ', 'Ʀ' => 'ʀ', 'Ƨ' => 'ƨ', 'Ʃ' => 'ʃ', 'Ƭ' => 'ƭ', 'Ʈ' => 'ʈ', 'Ư' => 'ư', 'Ʊ' => 'ʊ', 'Ʋ' => 'ʋ', 'Ƴ' => 'ƴ', 'Ƶ' => 'ƶ', 'Ʒ' => 'ʒ', 'Ƹ' => 'ƹ', 'Ƽ' => 'ƽ', 'DŽ' => 'dž', 'Dž' => 'dž', 'LJ' => 'lj', 'Lj' => 'lj', 'NJ' => 'nj', 'Nj' => 'nj', 'Ǎ' => 'ǎ', 'Ǐ' => 'ǐ', 'Ǒ' => 'ǒ', 'Ǔ' => 'ǔ', 'Ǖ' => 'ǖ', 'Ǘ' => 'ǘ', 'Ǚ' => 'ǚ', 'Ǜ' => 'ǜ', 'Ǟ' => 'ǟ', 'Ǡ' => 'ǡ', 'Ǣ' => 'ǣ', 'Ǥ' => 'ǥ', 'Ǧ' => 'ǧ', 'Ǩ' => 'ǩ', 'Ǫ' => 'ǫ', 'Ǭ' => 'ǭ', 'Ǯ' => 'ǯ', 'DZ' => 'dz', 'Dz' => 'dz', 'Ǵ' => 'ǵ', 'Ƕ' => 'ƕ', 'Ƿ' => 'ƿ', 'Ǹ' => 'ǹ', 'Ǻ' => 'ǻ', 'Ǽ' => 'ǽ', 'Ǿ' => 'ǿ', 'Ȁ' => 'ȁ', 'Ȃ' => 'ȃ', 'Ȅ' => 'ȅ', 'Ȇ' => 'ȇ', 'Ȉ' => 'ȉ', 'Ȋ' => 'ȋ', 'Ȍ' => 'ȍ', 'Ȏ' => 'ȏ', 'Ȑ' => 'ȑ', 'Ȓ' => 'ȓ', 'Ȕ' => 'ȕ', 'Ȗ' => 'ȗ', 'Ș' => 'ș', 'Ț' => 'ț', 'Ȝ' => 'ȝ', 'Ȟ' => 'ȟ', 'Ƞ' => 'ƞ', 'Ȣ' => 'ȣ', 'Ȥ' => 'ȥ', 'Ȧ' => 'ȧ', 'Ȩ' => 'ȩ', 'Ȫ' => 'ȫ', 'Ȭ' => 'ȭ', 'Ȯ' => 'ȯ', 'Ȱ' => 'ȱ', 'Ȳ' => 'ȳ', 'Ⱥ' => 'ⱥ', 'Ȼ' => 'ȼ', 'Ƚ' => 'ƚ', 'Ⱦ' => 'ⱦ', 'Ɂ' => 'ɂ', 'Ƀ' => 'ƀ', 'Ʉ' => 'ʉ', 'Ʌ' => 'ʌ', 'Ɇ' => 'ɇ', 'Ɉ' => 'ɉ', 'Ɋ' => 'ɋ', 'Ɍ' => 'ɍ', 'Ɏ' => 'ɏ', 'Ͱ' => 'ͱ', 'Ͳ' => 'ͳ', 'Ͷ' => 'ͷ', 'Ϳ' => 'ϳ', 'Ά' => 'ά', 'Έ' => 'έ', 'Ή' => 'ή', 'Ί' => 'ί', 'Ό' => 'ό', 'Ύ' => 'ύ', 'Ώ' => 'ώ', 'Α' => 'α', 'Β' => 'β', 'Γ' => 'γ', 'Δ' => 'δ', 'Ε' => 'ε', 'Ζ' => 'ζ', 'Η' => 'η', 'Θ' => 'θ', 'Ι' => 'ι', 'Κ' => 'κ', 'Λ' => 'λ', 'Μ' => 'μ', 'Ν' => 'ν', 'Ξ' => 'ξ', 'Ο' => 'ο', 'Π' => 'π', 'Ρ' => 'ρ', 'Σ' => 'σ', 'Τ' => 'τ', 'Υ' => 'υ', 'Φ' => 'φ', 'Χ' => 'χ', 'Ψ' => 'ψ', 'Ω' => 'ω', 'Ϊ' => 'ϊ', 'Ϋ' => 'ϋ', 'Ϗ' => 'ϗ', 'Ϙ' => 'ϙ', 'Ϛ' => 'ϛ', 'Ϝ' => 'ϝ', 'Ϟ' => 'ϟ', 'Ϡ' => 'ϡ', 'Ϣ' => 'ϣ', 'Ϥ' => 'ϥ', 'Ϧ' => 'ϧ', 'Ϩ' => 'ϩ', 'Ϫ' => 'ϫ', 'Ϭ' => 'ϭ', 'Ϯ' => 'ϯ', 'ϴ' => 'θ', 'Ϸ' => 'ϸ', 'Ϲ' => 'ϲ', 'Ϻ' => 'ϻ', 'Ͻ' => 'ͻ', 'Ͼ' => 'ͼ', 'Ͽ' => 'ͽ', 'Ѐ' => 'ѐ', 'Ё' => 'ё', 'Ђ' => 'ђ', 'Ѓ' => 'ѓ', 'Є' => 'є', 'Ѕ' => 'ѕ', 'І' => 'і', 'Ї' => 'ї', 'Ј' => 'ј', 'Љ' => 'љ', 'Њ' => 'њ', 'Ћ' => 'ћ', 'Ќ' => 'ќ', 'Ѝ' => 'ѝ', 'Ў' => 'ў', 'Џ' => 'џ', 'А' => 'а', 'Б' => 'б', 'В' => 'в', 'Г' => 'г', 'Д' => 'д', 'Е' => 'е', 'Ж' => 'ж', 'З' => 'з', 'И' => 'и', 'Й' => 'й', 'К' => 'к', 'Л' => 'л', 'М' => 'м', 'Н' => 'н', 'О' => 'о', 'П' => 'п', 'Р' => 'р', 'С' => 'с', 'Т' => 'т', 'У' => 'у', 'Ф' => 'ф', 'Х' => 'х', 'Ц' => 'ц', 'Ч' => 'ч', 'Ш' => 'ш', 'Щ' => 'щ', 'Ъ' => 'ъ', 'Ы' => 'ы', 'Ь' => 'ь', 'Э' => 'э', 'Ю' => 'ю', 'Я' => 'я', 'Ѡ' => 'ѡ', 'Ѣ' => 'ѣ', 'Ѥ' => 'ѥ', 'Ѧ' => 'ѧ', 'Ѩ' => 'ѩ', 'Ѫ' => 'ѫ', 'Ѭ' => 'ѭ', 'Ѯ' => 'ѯ', 'Ѱ' => 'ѱ', 'Ѳ' => 'ѳ', 'Ѵ' => 'ѵ', 'Ѷ' => 'ѷ', 'Ѹ' => 'ѹ', 'Ѻ' => 'ѻ', 'Ѽ' => 'ѽ', 'Ѿ' => 'ѿ', 'Ҁ' => 'ҁ', 'Ҋ' => 'ҋ', 'Ҍ' => 'ҍ', 'Ҏ' => 'ҏ', 'Ґ' => 'ґ', 'Ғ' => 'ғ', 'Ҕ' => 'ҕ', 'Җ' => 'җ', 'Ҙ' => 'ҙ', 'Қ' => 'қ', 'Ҝ' => 'ҝ', 'Ҟ' => 'ҟ', 'Ҡ' => 'ҡ', 'Ң' => 'ң', 'Ҥ' => 'ҥ', 'Ҧ' => 'ҧ', 'Ҩ' => 'ҩ', 'Ҫ' => 'ҫ', 'Ҭ' => 'ҭ', 'Ү' => 'ү', 'Ұ' => 'ұ', 'Ҳ' => 'ҳ', 'Ҵ' => 'ҵ', 'Ҷ' => 'ҷ', 'Ҹ' => 'ҹ', 'Һ' => 'һ', 'Ҽ' => 'ҽ', 'Ҿ' => 'ҿ', 'Ӏ' => 'ӏ', 'Ӂ' => 'ӂ', 'Ӄ' => 'ӄ', 'Ӆ' => 'ӆ', 'Ӈ' => 'ӈ', 'Ӊ' => 'ӊ', 'Ӌ' => 'ӌ', 'Ӎ' => 'ӎ', 'Ӑ' => 'ӑ', 'Ӓ' => 'ӓ', 'Ӕ' => 'ӕ', 'Ӗ' => 'ӗ', 'Ә' => 'ә', 'Ӛ' => 'ӛ', 'Ӝ' => 'ӝ', 'Ӟ' => 'ӟ', 'Ӡ' => 'ӡ', 'Ӣ' => 'ӣ', 'Ӥ' => 'ӥ', 'Ӧ' => 'ӧ', 'Ө' => 'ө', 'Ӫ' => 'ӫ', 'Ӭ' => 'ӭ', 'Ӯ' => 'ӯ', 'Ӱ' => 'ӱ', 'Ӳ' => 'ӳ', 'Ӵ' => 'ӵ', 'Ӷ' => 'ӷ', 'Ӹ' => 'ӹ', 'Ӻ' => 'ӻ', 'Ӽ' => 'ӽ', 'Ӿ' => 'ӿ', 'Ԁ' => 'ԁ', 'Ԃ' => 'ԃ', 'Ԅ' => 'ԅ', 'Ԇ' => 'ԇ', 'Ԉ' => 'ԉ', 'Ԋ' => 'ԋ', 'Ԍ' => 'ԍ', 'Ԏ' => 'ԏ', 'Ԑ' => 'ԑ', 'Ԓ' => 'ԓ', 'Ԕ' => 'ԕ', 'Ԗ' => 'ԗ', 'Ԙ' => 'ԙ', 'Ԛ' => 'ԛ', 'Ԝ' => 'ԝ', 'Ԟ' => 'ԟ', 'Ԡ' => 'ԡ', 'Ԣ' => 'ԣ', 'Ԥ' => 'ԥ', 'Ԧ' => 'ԧ', 'Ԩ' => 'ԩ', 'Ԫ' => 'ԫ', 'Ԭ' => 'ԭ', 'Ԯ' => 'ԯ', 'Ա' => 'ա', 'Բ' => 'բ', 'Գ' => 'գ', 'Դ' => 'դ', 'Ե' => 'ե', 'Զ' => 'զ', 'Է' => 'է', 'Ը' => 'ը', 'Թ' => 'թ', 'Ժ' => 'ժ', 'Ի' => 'ի', 'Լ' => 'լ', 'Խ' => 'խ', 'Ծ' => 'ծ', 'Կ' => 'կ', 'Հ' => 'հ', 'Ձ' => 'ձ', 'Ղ' => 'ղ', 'Ճ' => 'ճ', 'Մ' => 'մ', 'Յ' => 'յ', 'Ն' => 'ն', 'Շ' => 'շ', 'Ո' => 'ո', 'Չ' => 'չ', 'Պ' => 'պ', 'Ջ' => 'ջ', 'Ռ' => 'ռ', 'Ս' => 'ս', 'Վ' => 'վ', 'Տ' => 'տ', 'Ր' => 'ր', 'Ց' => 'ց', 'Ւ' => 'ւ', 'Փ' => 'փ', 'Ք' => 'ք', 'Օ' => 'օ', 'Ֆ' => 'ֆ', 'Ⴀ' => 'ⴀ', 'Ⴁ' => 'ⴁ', 'Ⴂ' => 'ⴂ', 'Ⴃ' => 'ⴃ', 'Ⴄ' => 'ⴄ', 'Ⴅ' => 'ⴅ', 'Ⴆ' => 'ⴆ', 'Ⴇ' => 'ⴇ', 'Ⴈ' => 'ⴈ', 'Ⴉ' => 'ⴉ', 'Ⴊ' => 'ⴊ', 'Ⴋ' => 'ⴋ', 'Ⴌ' => 'ⴌ', 'Ⴍ' => 'ⴍ', 'Ⴎ' => 'ⴎ', 'Ⴏ' => 'ⴏ', 'Ⴐ' => 'ⴐ', 'Ⴑ' => 'ⴑ', 'Ⴒ' => 'ⴒ', 'Ⴓ' => 'ⴓ', 'Ⴔ' => 'ⴔ', 'Ⴕ' => 'ⴕ', 'Ⴖ' => 'ⴖ', 'Ⴗ' => 'ⴗ', 'Ⴘ' => 'ⴘ', 'Ⴙ' => 'ⴙ', 'Ⴚ' => 'ⴚ', 'Ⴛ' => 'ⴛ', 'Ⴜ' => 'ⴜ', 'Ⴝ' => 'ⴝ', 'Ⴞ' => 'ⴞ', 'Ⴟ' => 'ⴟ', 'Ⴠ' => 'ⴠ', 'Ⴡ' => 'ⴡ', 'Ⴢ' => 'ⴢ', 'Ⴣ' => 'ⴣ', 'Ⴤ' => 'ⴤ', 'Ⴥ' => 'ⴥ', 'Ⴧ' => 'ⴧ', 'Ⴭ' => 'ⴭ', 'Ꭰ' => 'ꭰ', 'Ꭱ' => 'ꭱ', 'Ꭲ' => 'ꭲ', 'Ꭳ' => 'ꭳ', 'Ꭴ' => 'ꭴ', 'Ꭵ' => 'ꭵ', 'Ꭶ' => 'ꭶ', 'Ꭷ' => 'ꭷ', 'Ꭸ' => 'ꭸ', 'Ꭹ' => 'ꭹ', 'Ꭺ' => 'ꭺ', 'Ꭻ' => 'ꭻ', 'Ꭼ' => 'ꭼ', 'Ꭽ' => 'ꭽ', 'Ꭾ' => 'ꭾ', 'Ꭿ' => 'ꭿ', 'Ꮀ' => 'ꮀ', 'Ꮁ' => 'ꮁ', 'Ꮂ' => 'ꮂ', 'Ꮃ' => 'ꮃ', 'Ꮄ' => 'ꮄ', 'Ꮅ' => 'ꮅ', 'Ꮆ' => 'ꮆ', 'Ꮇ' => 'ꮇ', 'Ꮈ' => 'ꮈ', 'Ꮉ' => 'ꮉ', 'Ꮊ' => 'ꮊ', 'Ꮋ' => 'ꮋ', 'Ꮌ' => 'ꮌ', 'Ꮍ' => 'ꮍ', 'Ꮎ' => 'ꮎ', 'Ꮏ' => 'ꮏ', 'Ꮐ' => 'ꮐ', 'Ꮑ' => 'ꮑ', 'Ꮒ' => 'ꮒ', 'Ꮓ' => 'ꮓ', 'Ꮔ' => 'ꮔ', 'Ꮕ' => 'ꮕ', 'Ꮖ' => 'ꮖ', 'Ꮗ' => 'ꮗ', 'Ꮘ' => 'ꮘ', 'Ꮙ' => 'ꮙ', 'Ꮚ' => 'ꮚ', 'Ꮛ' => 'ꮛ', 'Ꮜ' => 'ꮜ', 'Ꮝ' => 'ꮝ', 'Ꮞ' => 'ꮞ', 'Ꮟ' => 'ꮟ', 'Ꮠ' => 'ꮠ', 'Ꮡ' => 'ꮡ', 'Ꮢ' => 'ꮢ', 'Ꮣ' => 'ꮣ', 'Ꮤ' => 'ꮤ', 'Ꮥ' => 'ꮥ', 'Ꮦ' => 'ꮦ', 'Ꮧ' => 'ꮧ', 'Ꮨ' => 'ꮨ', 'Ꮩ' => 'ꮩ', 'Ꮪ' => 'ꮪ', 'Ꮫ' => 'ꮫ', 'Ꮬ' => 'ꮬ', 'Ꮭ' => 'ꮭ', 'Ꮮ' => 'ꮮ', 'Ꮯ' => 'ꮯ', 'Ꮰ' => 'ꮰ', 'Ꮱ' => 'ꮱ', 'Ꮲ' => 'ꮲ', 'Ꮳ' => 'ꮳ', 'Ꮴ' => 'ꮴ', 'Ꮵ' => 'ꮵ', 'Ꮶ' => 'ꮶ', 'Ꮷ' => 'ꮷ', 'Ꮸ' => 'ꮸ', 'Ꮹ' => 'ꮹ', 'Ꮺ' => 'ꮺ', 'Ꮻ' => 'ꮻ', 'Ꮼ' => 'ꮼ', 'Ꮽ' => 'ꮽ', 'Ꮾ' => 'ꮾ', 'Ꮿ' => 'ꮿ', 'Ᏸ' => 'ᏸ', 'Ᏹ' => 'ᏹ', 'Ᏺ' => 'ᏺ', 'Ᏻ' => 'ᏻ', 'Ᏼ' => 'ᏼ', 'Ᏽ' => 'ᏽ', 'Ა' => 'ა', 'Ბ' => 'ბ', 'Გ' => 'გ', 'Დ' => 'დ', 'Ე' => 'ე', 'Ვ' => 'ვ', 'Ზ' => 'ზ', 'Თ' => 'თ', 'Ი' => 'ი', 'Კ' => 'კ', 'Ლ' => 'ლ', 'Მ' => 'მ', 'Ნ' => 'ნ', 'Ო' => 'ო', 'Პ' => 'პ', 'Ჟ' => 'ჟ', 'Რ' => 'რ', 'Ს' => 'ს', 'Ტ' => 'ტ', 'Უ' => 'უ', 'Ფ' => 'ფ', 'Ქ' => 'ქ', 'Ღ' => 'ღ', 'Ყ' => 'ყ', 'Შ' => 'შ', 'Ჩ' => 'ჩ', 'Ც' => 'ც', 'Ძ' => 'ძ', 'Წ' => 'წ', 'Ჭ' => 'ჭ', 'Ხ' => 'ხ', 'Ჯ' => 'ჯ', 'Ჰ' => 'ჰ', 'Ჱ' => 'ჱ', 'Ჲ' => 'ჲ', 'Ჳ' => 'ჳ', 'Ჴ' => 'ჴ', 'Ჵ' => 'ჵ', 'Ჶ' => 'ჶ', 'Ჷ' => 'ჷ', 'Ჸ' => 'ჸ', 'Ჹ' => 'ჹ', 'Ჺ' => 'ჺ', 'Ჽ' => 'ჽ', 'Ჾ' => 'ჾ', 'Ჿ' => 'ჿ', 'Ḁ' => 'ḁ', 'Ḃ' => 'ḃ', 'Ḅ' => 'ḅ', 'Ḇ' => 'ḇ', 'Ḉ' => 'ḉ', 'Ḋ' => 'ḋ', 'Ḍ' => 'ḍ', 'Ḏ' => 'ḏ', 'Ḑ' => 'ḑ', 'Ḓ' => 'ḓ', 'Ḕ' => 'ḕ', 'Ḗ' => 'ḗ', 'Ḙ' => 'ḙ', 'Ḛ' => 'ḛ', 'Ḝ' => 'ḝ', 'Ḟ' => 'ḟ', 'Ḡ' => 'ḡ', 'Ḣ' => 'ḣ', 'Ḥ' => 'ḥ', 'Ḧ' => 'ḧ', 'Ḩ' => 'ḩ', 'Ḫ' => 'ḫ', 'Ḭ' => 'ḭ', 'Ḯ' => 'ḯ', 'Ḱ' => 'ḱ', 'Ḳ' => 'ḳ', 'Ḵ' => 'ḵ', 'Ḷ' => 'ḷ', 'Ḹ' => 'ḹ', 'Ḻ' => 'ḻ', 'Ḽ' => 'ḽ', 'Ḿ' => 'ḿ', 'Ṁ' => 'ṁ', 'Ṃ' => 'ṃ', 'Ṅ' => 'ṅ', 'Ṇ' => 'ṇ', 'Ṉ' => 'ṉ', 'Ṋ' => 'ṋ', 'Ṍ' => 'ṍ', 'Ṏ' => 'ṏ', 'Ṑ' => 'ṑ', 'Ṓ' => 'ṓ', 'Ṕ' => 'ṕ', 'Ṗ' => 'ṗ', 'Ṙ' => 'ṙ', 'Ṛ' => 'ṛ', 'Ṝ' => 'ṝ', 'Ṟ' => 'ṟ', 'Ṡ' => 'ṡ', 'Ṣ' => 'ṣ', 'Ṥ' => 'ṥ', 'Ṧ' => 'ṧ', 'Ṩ' => 'ṩ', 'Ṫ' => 'ṫ', 'Ṭ' => 'ṭ', 'Ṯ' => 'ṯ', 'Ṱ' => 'ṱ', 'Ṳ' => 'ṳ', 'Ṵ' => 'ṵ', 'Ṷ' => 'ṷ', 'Ṹ' => 'ṹ', 'Ṻ' => 'ṻ', 'Ṽ' => 'ṽ', 'Ṿ' => 'ṿ', 'Ẁ' => 'ẁ', 'Ẃ' => 'ẃ', 'Ẅ' => 'ẅ', 'Ẇ' => 'ẇ', 'Ẉ' => 'ẉ', 'Ẋ' => 'ẋ', 'Ẍ' => 'ẍ', 'Ẏ' => 'ẏ', 'Ẑ' => 'ẑ', 'Ẓ' => 'ẓ', 'Ẕ' => 'ẕ', 'ẞ' => 'ß', 'Ạ' => 'ạ', 'Ả' => 'ả', 'Ấ' => 'ấ', 'Ầ' => 'ầ', 'Ẩ' => 'ẩ', 'Ẫ' => 'ẫ', 'Ậ' => 'ậ', 'Ắ' => 'ắ', 'Ằ' => 'ằ', 'Ẳ' => 'ẳ', 'Ẵ' => 'ẵ', 'Ặ' => 'ặ', 'Ẹ' => 'ẹ', 'Ẻ' => 'ẻ', 'Ẽ' => 'ẽ', 'Ế' => 'ế', 'Ề' => 'ề', 'Ể' => 'ể', 'Ễ' => 'ễ', 'Ệ' => 'ệ', 'Ỉ' => 'ỉ', 'Ị' => 'ị', 'Ọ' => 'ọ', 'Ỏ' => 'ỏ', 'Ố' => 'ố', 'Ồ' => 'ồ', 'Ổ' => 'ổ', 'Ỗ' => 'ỗ', 'Ộ' => 'ộ', 'Ớ' => 'ớ', 'Ờ' => 'ờ', 'Ở' => 'ở', 'Ỡ' => 'ỡ', 'Ợ' => 'ợ', 'Ụ' => 'ụ', 'Ủ' => 'ủ', 'Ứ' => 'ứ', 'Ừ' => 'ừ', 'Ử' => 'ử', 'Ữ' => 'ữ', 'Ự' => 'ự', 'Ỳ' => 'ỳ', 'Ỵ' => 'ỵ', 'Ỷ' => 'ỷ', 'Ỹ' => 'ỹ', 'Ỻ' => 'ỻ', 'Ỽ' => 'ỽ', 'Ỿ' => 'ỿ', 'Ἀ' => 'ἀ', 'Ἁ' => 'ἁ', 'Ἂ' => 'ἂ', 'Ἃ' => 'ἃ', 'Ἄ' => 'ἄ', 'Ἅ' => 'ἅ', 'Ἆ' => 'ἆ', 'Ἇ' => 'ἇ', 'Ἐ' => 'ἐ', 'Ἑ' => 'ἑ', 'Ἒ' => 'ἒ', 'Ἓ' => 'ἓ', 'Ἔ' => 'ἔ', 'Ἕ' => 'ἕ', 'Ἠ' => 'ἠ', 'Ἡ' => 'ἡ', 'Ἢ' => 'ἢ', 'Ἣ' => 'ἣ', 'Ἤ' => 'ἤ', 'Ἥ' => 'ἥ', 'Ἦ' => 'ἦ', 'Ἧ' => 'ἧ', 'Ἰ' => 'ἰ', 'Ἱ' => 'ἱ', 'Ἲ' => 'ἲ', 'Ἳ' => 'ἳ', 'Ἴ' => 'ἴ', 'Ἵ' => 'ἵ', 'Ἶ' => 'ἶ', 'Ἷ' => 'ἷ', 'Ὀ' => 'ὀ', 'Ὁ' => 'ὁ', 'Ὂ' => 'ὂ', 'Ὃ' => 'ὃ', 'Ὄ' => 'ὄ', 'Ὅ' => 'ὅ', 'Ὑ' => 'ὑ', 'Ὓ' => 'ὓ', 'Ὕ' => 'ὕ', 'Ὗ' => 'ὗ', 'Ὠ' => 'ὠ', 'Ὡ' => 'ὡ', 'Ὢ' => 'ὢ', 'Ὣ' => 'ὣ', 'Ὤ' => 'ὤ', 'Ὥ' => 'ὥ', 'Ὦ' => 'ὦ', 'Ὧ' => 'ὧ', 'ᾈ' => 'ᾀ', 'ᾉ' => 'ᾁ', 'ᾊ' => 'ᾂ', 'ᾋ' => 'ᾃ', 'ᾌ' => 'ᾄ', 'ᾍ' => 'ᾅ', 'ᾎ' => 'ᾆ', 'ᾏ' => 'ᾇ', 'ᾘ' => 'ᾐ', 'ᾙ' => 'ᾑ', 'ᾚ' => 'ᾒ', 'ᾛ' => 'ᾓ', 'ᾜ' => 'ᾔ', 'ᾝ' => 'ᾕ', 'ᾞ' => 'ᾖ', 'ᾟ' => 'ᾗ', 'ᾨ' => 'ᾠ', 'ᾩ' => 'ᾡ', 'ᾪ' => 'ᾢ', 'ᾫ' => 'ᾣ', 'ᾬ' => 'ᾤ', 'ᾭ' => 'ᾥ', 'ᾮ' => 'ᾦ', 'ᾯ' => 'ᾧ', 'Ᾰ' => 'ᾰ', 'Ᾱ' => 'ᾱ', 'Ὰ' => 'ὰ', 'Ά' => 'ά', 'ᾼ' => 'ᾳ', 'Ὲ' => 'ὲ', 'Έ' => 'έ', 'Ὴ' => 'ὴ', 'Ή' => 'ή', 'ῌ' => 'ῃ', 'Ῐ' => 'ῐ', 'Ῑ' => 'ῑ', 'Ὶ' => 'ὶ', 'Ί' => 'ί', 'Ῠ' => 'ῠ', 'Ῡ' => 'ῡ', 'Ὺ' => 'ὺ', 'Ύ' => 'ύ', 'Ῥ' => 'ῥ', 'Ὸ' => 'ὸ', 'Ό' => 'ό', 'Ὼ' => 'ὼ', 'Ώ' => 'ώ', 'ῼ' => 'ῳ', 'Ω' => 'ω', 'K' => 'k', 'Å' => 'å', 'Ⅎ' => 'ⅎ', 'Ⅰ' => 'ⅰ', 'Ⅱ' => 'ⅱ', 'Ⅲ' => 'ⅲ', 'Ⅳ' => 'ⅳ', 'Ⅴ' => 'ⅴ', 'Ⅵ' => 'ⅵ', 'Ⅶ' => 'ⅶ', 'Ⅷ' => 'ⅷ', 'Ⅸ' => 'ⅸ', 'Ⅹ' => 'ⅹ', 'Ⅺ' => 'ⅺ', 'Ⅻ' => 'ⅻ', 'Ⅼ' => 'ⅼ', 'Ⅽ' => 'ⅽ', 'Ⅾ' => 'ⅾ', 'Ⅿ' => 'ⅿ', 'Ↄ' => 'ↄ', 'Ⓐ' => 'ⓐ', 'Ⓑ' => 'ⓑ', 'Ⓒ' => 'ⓒ', 'Ⓓ' => 'ⓓ', 'Ⓔ' => 'ⓔ', 'Ⓕ' => 'ⓕ', 'Ⓖ' => 'ⓖ', 'Ⓗ' => 'ⓗ', 'Ⓘ' => 'ⓘ', 'Ⓙ' => 'ⓙ', 'Ⓚ' => 'ⓚ', 'Ⓛ' => 'ⓛ', 'Ⓜ' => 'ⓜ', 'Ⓝ' => 'ⓝ', 'Ⓞ' => 'ⓞ', 'Ⓟ' => 'ⓟ', 'Ⓠ' => 'ⓠ', 'Ⓡ' => 'ⓡ', 'Ⓢ' => 'ⓢ', 'Ⓣ' => 'ⓣ', 'Ⓤ' => 'ⓤ', 'Ⓥ' => 'ⓥ', 'Ⓦ' => 'ⓦ', 'Ⓧ' => 'ⓧ', 'Ⓨ' => 'ⓨ', 'Ⓩ' => 'ⓩ', 'Ⰰ' => 'ⰰ', 'Ⰱ' => 'ⰱ', 'Ⰲ' => 'ⰲ', 'Ⰳ' => 'ⰳ', 'Ⰴ' => 'ⰴ', 'Ⰵ' => 'ⰵ', 'Ⰶ' => 'ⰶ', 'Ⰷ' => 'ⰷ', 'Ⰸ' => 'ⰸ', 'Ⰹ' => 'ⰹ', 'Ⰺ' => 'ⰺ', 'Ⰻ' => 'ⰻ', 'Ⰼ' => 'ⰼ', 'Ⰽ' => 'ⰽ', 'Ⰾ' => 'ⰾ', 'Ⰿ' => 'ⰿ', 'Ⱀ' => 'ⱀ', 'Ⱁ' => 'ⱁ', 'Ⱂ' => 'ⱂ', 'Ⱃ' => 'ⱃ', 'Ⱄ' => 'ⱄ', 'Ⱅ' => 'ⱅ', 'Ⱆ' => 'ⱆ', 'Ⱇ' => 'ⱇ', 'Ⱈ' => 'ⱈ', 'Ⱉ' => 'ⱉ', 'Ⱊ' => 'ⱊ', 'Ⱋ' => 'ⱋ', 'Ⱌ' => 'ⱌ', 'Ⱍ' => 'ⱍ', 'Ⱎ' => 'ⱎ', 'Ⱏ' => 'ⱏ', 'Ⱐ' => 'ⱐ', 'Ⱑ' => 'ⱑ', 'Ⱒ' => 'ⱒ', 'Ⱓ' => 'ⱓ', 'Ⱔ' => 'ⱔ', 'Ⱕ' => 'ⱕ', 'Ⱖ' => 'ⱖ', 'Ⱗ' => 'ⱗ', 'Ⱘ' => 'ⱘ', 'Ⱙ' => 'ⱙ', 'Ⱚ' => 'ⱚ', 'Ⱛ' => 'ⱛ', 'Ⱜ' => 'ⱜ', 'Ⱝ' => 'ⱝ', 'Ⱞ' => 'ⱞ', 'Ⱡ' => 'ⱡ', 'Ɫ' => 'ɫ', 'Ᵽ' => 'ᵽ', 'Ɽ' => 'ɽ', 'Ⱨ' => 'ⱨ', 'Ⱪ' => 'ⱪ', 'Ⱬ' => 'ⱬ', 'Ɑ' => 'ɑ', 'Ɱ' => 'ɱ', 'Ɐ' => 'ɐ', 'Ɒ' => 'ɒ', 'Ⱳ' => 'ⱳ', 'Ⱶ' => 'ⱶ', 'Ȿ' => 'ȿ', 'Ɀ' => 'ɀ', 'Ⲁ' => 'ⲁ', 'Ⲃ' => 'ⲃ', 'Ⲅ' => 'ⲅ', 'Ⲇ' => 'ⲇ', 'Ⲉ' => 'ⲉ', 'Ⲋ' => 'ⲋ', 'Ⲍ' => 'ⲍ', 'Ⲏ' => 'ⲏ', 'Ⲑ' => 'ⲑ', 'Ⲓ' => 'ⲓ', 'Ⲕ' => 'ⲕ', 'Ⲗ' => 'ⲗ', 'Ⲙ' => 'ⲙ', 'Ⲛ' => 'ⲛ', 'Ⲝ' => 'ⲝ', 'Ⲟ' => 'ⲟ', 'Ⲡ' => 'ⲡ', 'Ⲣ' => 'ⲣ', 'Ⲥ' => 'ⲥ', 'Ⲧ' => 'ⲧ', 'Ⲩ' => 'ⲩ', 'Ⲫ' => 'ⲫ', 'Ⲭ' => 'ⲭ', 'Ⲯ' => 'ⲯ', 'Ⲱ' => 'ⲱ', 'Ⲳ' => 'ⲳ', 'Ⲵ' => 'ⲵ', 'Ⲷ' => 'ⲷ', 'Ⲹ' => 'ⲹ', 'Ⲻ' => 'ⲻ', 'Ⲽ' => 'ⲽ', 'Ⲿ' => 'ⲿ', 'Ⳁ' => 'ⳁ', 'Ⳃ' => 'ⳃ', 'Ⳅ' => 'ⳅ', 'Ⳇ' => 'ⳇ', 'Ⳉ' => 'ⳉ', 'Ⳋ' => 'ⳋ', 'Ⳍ' => 'ⳍ', 'Ⳏ' => 'ⳏ', 'Ⳑ' => 'ⳑ', 'Ⳓ' => 'ⳓ', 'Ⳕ' => 'ⳕ', 'Ⳗ' => 'ⳗ', 'Ⳙ' => 'ⳙ', 'Ⳛ' => 'ⳛ', 'Ⳝ' => 'ⳝ', 'Ⳟ' => 'ⳟ', 'Ⳡ' => 'ⳡ', 'Ⳣ' => 'ⳣ', 'Ⳬ' => 'ⳬ', 'Ⳮ' => 'ⳮ', 'Ⳳ' => 'ⳳ', 'Ꙁ' => 'ꙁ', 'Ꙃ' => 'ꙃ', 'Ꙅ' => 'ꙅ', 'Ꙇ' => 'ꙇ', 'Ꙉ' => 'ꙉ', 'Ꙋ' => 'ꙋ', 'Ꙍ' => 'ꙍ', 'Ꙏ' => 'ꙏ', 'Ꙑ' => 'ꙑ', 'Ꙓ' => 'ꙓ', 'Ꙕ' => 'ꙕ', 'Ꙗ' => 'ꙗ', 'Ꙙ' => 'ꙙ', 'Ꙛ' => 'ꙛ', 'Ꙝ' => 'ꙝ', 'Ꙟ' => 'ꙟ', 'Ꙡ' => 'ꙡ', 'Ꙣ' => 'ꙣ', 'Ꙥ' => 'ꙥ', 'Ꙧ' => 'ꙧ', 'Ꙩ' => 'ꙩ', 'Ꙫ' => 'ꙫ', 'Ꙭ' => 'ꙭ', 'Ꚁ' => 'ꚁ', 'Ꚃ' => 'ꚃ', 'Ꚅ' => 'ꚅ', 'Ꚇ' => 'ꚇ', 'Ꚉ' => 'ꚉ', 'Ꚋ' => 'ꚋ', 'Ꚍ' => 'ꚍ', 'Ꚏ' => 'ꚏ', 'Ꚑ' => 'ꚑ', 'Ꚓ' => 'ꚓ', 'Ꚕ' => 'ꚕ', 'Ꚗ' => 'ꚗ', 'Ꚙ' => 'ꚙ', 'Ꚛ' => 'ꚛ', 'Ꜣ' => 'ꜣ', 'Ꜥ' => 'ꜥ', 'Ꜧ' => 'ꜧ', 'Ꜩ' => 'ꜩ', 'Ꜫ' => 'ꜫ', 'Ꜭ' => 'ꜭ', 'Ꜯ' => 'ꜯ', 'Ꜳ' => 'ꜳ', 'Ꜵ' => 'ꜵ', 'Ꜷ' => 'ꜷ', 'Ꜹ' => 'ꜹ', 'Ꜻ' => 'ꜻ', 'Ꜽ' => 'ꜽ', 'Ꜿ' => 'ꜿ', 'Ꝁ' => 'ꝁ', 'Ꝃ' => 'ꝃ', 'Ꝅ' => 'ꝅ', 'Ꝇ' => 'ꝇ', 'Ꝉ' => 'ꝉ', 'Ꝋ' => 'ꝋ', 'Ꝍ' => 'ꝍ', 'Ꝏ' => 'ꝏ', 'Ꝑ' => 'ꝑ', 'Ꝓ' => 'ꝓ', 'Ꝕ' => 'ꝕ', 'Ꝗ' => 'ꝗ', 'Ꝙ' => 'ꝙ', 'Ꝛ' => 'ꝛ', 'Ꝝ' => 'ꝝ', 'Ꝟ' => 'ꝟ', 'Ꝡ' => 'ꝡ', 'Ꝣ' => 'ꝣ', 'Ꝥ' => 'ꝥ', 'Ꝧ' => 'ꝧ', 'Ꝩ' => 'ꝩ', 'Ꝫ' => 'ꝫ', 'Ꝭ' => 'ꝭ', 'Ꝯ' => 'ꝯ', 'Ꝺ' => 'ꝺ', 'Ꝼ' => 'ꝼ', 'Ᵹ' => 'ᵹ', 'Ꝿ' => 'ꝿ', 'Ꞁ' => 'ꞁ', 'Ꞃ' => 'ꞃ', 'Ꞅ' => 'ꞅ', 'Ꞇ' => 'ꞇ', 'Ꞌ' => 'ꞌ', 'Ɥ' => 'ɥ', 'Ꞑ' => 'ꞑ', 'Ꞓ' => 'ꞓ', 'Ꞗ' => 'ꞗ', 'Ꞙ' => 'ꞙ', 'Ꞛ' => 'ꞛ', 'Ꞝ' => 'ꞝ', 'Ꞟ' => 'ꞟ', 'Ꞡ' => 'ꞡ', 'Ꞣ' => 'ꞣ', 'Ꞥ' => 'ꞥ', 'Ꞧ' => 'ꞧ', 'Ꞩ' => 'ꞩ', 'Ɦ' => 'ɦ', 'Ɜ' => 'ɜ', 'Ɡ' => 'ɡ', 'Ɬ' => 'ɬ', 'Ɪ' => 'ɪ', 'Ʞ' => 'ʞ', 'Ʇ' => 'ʇ', 'Ʝ' => 'ʝ', 'Ꭓ' => 'ꭓ', 'Ꞵ' => 'ꞵ', 'Ꞷ' => 'ꞷ', 'Ꞹ' => 'ꞹ', 'Ꞻ' => 'ꞻ', 'Ꞽ' => 'ꞽ', 'Ꞿ' => 'ꞿ', 'Ꟃ' => 'ꟃ', 'Ꞔ' => 'ꞔ', 'Ʂ' => 'ʂ', 'Ᶎ' => 'ᶎ', 'Ꟈ' => 'ꟈ', 'Ꟊ' => 'ꟊ', 'Ꟶ' => 'ꟶ', 'A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e', 'F' => 'f', 'G' => 'g', 'H' => 'h', 'I' => 'i', 'J' => 'j', 'K' => 'k', 'L' => 'l', 'M' => 'm', 'N' => 'n', 'O' => 'o', 'P' => 'p', 'Q' => 'q', 'R' => 'r', 'S' => 's', 'T' => 't', 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x', 'Y' => 'y', 'Z' => 'z', '𐐀' => '𐐨', '𐐁' => '𐐩', '𐐂' => '𐐪', '𐐃' => '𐐫', '𐐄' => '𐐬', '𐐅' => '𐐭', '𐐆' => '𐐮', '𐐇' => '𐐯', '𐐈' => '𐐰', '𐐉' => '𐐱', '𐐊' => '𐐲', '𐐋' => '𐐳', '𐐌' => '𐐴', '𐐍' => '𐐵', '𐐎' => '𐐶', '𐐏' => '𐐷', '𐐐' => '𐐸', '𐐑' => '𐐹', '𐐒' => '𐐺', '𐐓' => '𐐻', '𐐔' => '𐐼', '𐐕' => '𐐽', '𐐖' => '𐐾', '𐐗' => '𐐿', '𐐘' => '𐑀', '𐐙' => '𐑁', '𐐚' => '𐑂', '𐐛' => '𐑃', '𐐜' => '𐑄', '𐐝' => '𐑅', '𐐞' => '𐑆', '𐐟' => '𐑇', '𐐠' => '𐑈', '𐐡' => '𐑉', '𐐢' => '𐑊', '𐐣' => '𐑋', '𐐤' => '𐑌', '𐐥' => '𐑍', '𐐦' => '𐑎', '𐐧' => '𐑏', '𐒰' => '𐓘', '𐒱' => '𐓙', '𐒲' => '𐓚', '𐒳' => '𐓛', '𐒴' => '𐓜', '𐒵' => '𐓝', '𐒶' => '𐓞', '𐒷' => '𐓟', '𐒸' => '𐓠', '𐒹' => '𐓡', '𐒺' => '𐓢', '𐒻' => '𐓣', '𐒼' => '𐓤', '𐒽' => '𐓥', '𐒾' => '𐓦', '𐒿' => '𐓧', '𐓀' => '𐓨', '𐓁' => '𐓩', '𐓂' => '𐓪', '𐓃' => '𐓫', '𐓄' => '𐓬', '𐓅' => '𐓭', '𐓆' => '𐓮', '𐓇' => '𐓯', '𐓈' => '𐓰', '𐓉' => '𐓱', '𐓊' => '𐓲', '𐓋' => '𐓳', '𐓌' => '𐓴', '𐓍' => '𐓵', '𐓎' => '𐓶', '𐓏' => '𐓷', '𐓐' => '𐓸', '𐓑' => '𐓹', '𐓒' => '𐓺', '𐓓' => '𐓻', '𐲀' => '𐳀', '𐲁' => '𐳁', '𐲂' => '𐳂', '𐲃' => '𐳃', '𐲄' => '𐳄', '𐲅' => '𐳅', '𐲆' => '𐳆', '𐲇' => '𐳇', '𐲈' => '𐳈', '𐲉' => '𐳉', '𐲊' => '𐳊', '𐲋' => '𐳋', '𐲌' => '𐳌', '𐲍' => '𐳍', '𐲎' => '𐳎', '𐲏' => '𐳏', '𐲐' => '𐳐', '𐲑' => '𐳑', '𐲒' => '𐳒', '𐲓' => '𐳓', '𐲔' => '𐳔', '𐲕' => '𐳕', '𐲖' => '𐳖', '𐲗' => '𐳗', '𐲘' => '𐳘', '𐲙' => '𐳙', '𐲚' => '𐳚', '𐲛' => '𐳛', '𐲜' => '𐳜', '𐲝' => '𐳝', '𐲞' => '𐳞', '𐲟' => '𐳟', '𐲠' => '𐳠', '𐲡' => '𐳡', '𐲢' => '𐳢', '𐲣' => '𐳣', '𐲤' => '𐳤', '𐲥' => '𐳥', '𐲦' => '𐳦', '𐲧' => '𐳧', '𐲨' => '𐳨', '𐲩' => '𐳩', '𐲪' => '𐳪', '𐲫' => '𐳫', '𐲬' => '𐳬', '𐲭' => '𐳭', '𐲮' => '𐳮', '𐲯' => '𐳯', '𐲰' => '𐳰', '𐲱' => '𐳱', '𐲲' => '𐳲', '𑢠' => '𑣀', '𑢡' => '𑣁', '𑢢' => '𑣂', '𑢣' => '𑣃', '𑢤' => '𑣄', '𑢥' => '𑣅', '𑢦' => '𑣆', '𑢧' => '𑣇', '𑢨' => '𑣈', '𑢩' => '𑣉', '𑢪' => '𑣊', '𑢫' => '𑣋', '𑢬' => '𑣌', '𑢭' => '𑣍', '𑢮' => '𑣎', '𑢯' => '𑣏', '𑢰' => '𑣐', '𑢱' => '𑣑', '𑢲' => '𑣒', '𑢳' => '𑣓', '𑢴' => '𑣔', '𑢵' => '𑣕', '𑢶' => '𑣖', '𑢷' => '𑣗', '𑢸' => '𑣘', '𑢹' => '𑣙', '𑢺' => '𑣚', '𑢻' => '𑣛', '𑢼' => '𑣜', '𑢽' => '𑣝', '𑢾' => '𑣞', '𑢿' => '𑣟', '𖹀' => '𖹠', '𖹁' => '𖹡', '𖹂' => '𖹢', '𖹃' => '𖹣', '𖹄' => '𖹤', '𖹅' => '𖹥', '𖹆' => '𖹦', '𖹇' => '𖹧', '𖹈' => '𖹨', '𖹉' => '𖹩', '𖹊' => '𖹪', '𖹋' => '𖹫', '𖹌' => '𖹬', '𖹍' => '𖹭', '𖹎' => '𖹮', '𖹏' => '𖹯', '𖹐' => '𖹰', '𖹑' => '𖹱', '𖹒' => '𖹲', '𖹓' => '𖹳', '𖹔' => '𖹴', '𖹕' => '𖹵', '𖹖' => '𖹶', '𖹗' => '𖹷', '𖹘' => '𖹸', '𖹙' => '𖹹', '𖹚' => '𖹺', '𖹛' => '𖹻', '𖹜' => '𖹼', '𖹝' => '𖹽', '𖹞' => '𖹾', '𖹟' => '𖹿', '𞤀' => '𞤢', '𞤁' => '𞤣', '𞤂' => '𞤤', '𞤃' => '𞤥', '𞤄' => '𞤦', '𞤅' => '𞤧', '𞤆' => '𞤨', '𞤇' => '𞤩', '𞤈' => '𞤪', '𞤉' => '𞤫', '𞤊' => '𞤬', '𞤋' => '𞤭', '𞤌' => '𞤮', '𞤍' => '𞤯', '𞤎' => '𞤰', '𞤏' => '𞤱', '𞤐' => '𞤲', '𞤑' => '𞤳', '𞤒' => '𞤴', '𞤓' => '𞤵', '𞤔' => '𞤶', '𞤕' => '𞤷', '𞤖' => '𞤸', '𞤗' => '𞤹', '𞤘' => '𞤺', '𞤙' => '𞤻', '𞤚' => '𞤼', '𞤛' => '𞤽', '𞤜' => '𞤾', '𞤝' => '𞤿', '𞤞' => '𞥀', '𞤟' => '𞥁', '𞤠' => '𞥂', '𞤡' => '𞥃', ); 'i̇', 'µ' => 'μ', 'ſ' => 's', 'ͅ' => 'ι', 'ς' => 'σ', 'ϐ' => 'β', 'ϑ' => 'θ', 'ϕ' => 'φ', 'ϖ' => 'π', 'ϰ' => 'κ', 'ϱ' => 'ρ', 'ϵ' => 'ε', 'ẛ' => 'ṡ', 'ι' => 'ι', 'ß' => 'ss', 'ʼn' => 'ʼn', 'ǰ' => 'ǰ', 'ΐ' => 'ΐ', 'ΰ' => 'ΰ', 'և' => 'եւ', 'ẖ' => 'ẖ', 'ẗ' => 'ẗ', 'ẘ' => 'ẘ', 'ẙ' => 'ẙ', 'ẚ' => 'aʾ', 'ẞ' => 'ss', 'ὐ' => 'ὐ', 'ὒ' => 'ὒ', 'ὔ' => 'ὔ', 'ὖ' => 'ὖ', 'ᾀ' => 'ἀι', 'ᾁ' => 'ἁι', 'ᾂ' => 'ἂι', 'ᾃ' => 'ἃι', 'ᾄ' => 'ἄι', 'ᾅ' => 'ἅι', 'ᾆ' => 'ἆι', 'ᾇ' => 'ἇι', 'ᾈ' => 'ἀι', 'ᾉ' => 'ἁι', 'ᾊ' => 'ἂι', 'ᾋ' => 'ἃι', 'ᾌ' => 'ἄι', 'ᾍ' => 'ἅι', 'ᾎ' => 'ἆι', 'ᾏ' => 'ἇι', 'ᾐ' => 'ἠι', 'ᾑ' => 'ἡι', 'ᾒ' => 'ἢι', 'ᾓ' => 'ἣι', 'ᾔ' => 'ἤι', 'ᾕ' => 'ἥι', 'ᾖ' => 'ἦι', 'ᾗ' => 'ἧι', 'ᾘ' => 'ἠι', 'ᾙ' => 'ἡι', 'ᾚ' => 'ἢι', 'ᾛ' => 'ἣι', 'ᾜ' => 'ἤι', 'ᾝ' => 'ἥι', 'ᾞ' => 'ἦι', 'ᾟ' => 'ἧι', 'ᾠ' => 'ὠι', 'ᾡ' => 'ὡι', 'ᾢ' => 'ὢι', 'ᾣ' => 'ὣι', 'ᾤ' => 'ὤι', 'ᾥ' => 'ὥι', 'ᾦ' => 'ὦι', 'ᾧ' => 'ὧι', 'ᾨ' => 'ὠι', 'ᾩ' => 'ὡι', 'ᾪ' => 'ὢι', 'ᾫ' => 'ὣι', 'ᾬ' => 'ὤι', 'ᾭ' => 'ὥι', 'ᾮ' => 'ὦι', 'ᾯ' => 'ὧι', 'ᾲ' => 'ὰι', 'ᾳ' => 'αι', 'ᾴ' => 'άι', 'ᾶ' => 'ᾶ', 'ᾷ' => 'ᾶι', 'ᾼ' => 'αι', 'ῂ' => 'ὴι', 'ῃ' => 'ηι', 'ῄ' => 'ήι', 'ῆ' => 'ῆ', 'ῇ' => 'ῆι', 'ῌ' => 'ηι', 'ῒ' => 'ῒ', 'ῖ' => 'ῖ', 'ῗ' => 'ῗ', 'ῢ' => 'ῢ', 'ῤ' => 'ῤ', 'ῦ' => 'ῦ', 'ῧ' => 'ῧ', 'ῲ' => 'ὼι', 'ῳ' => 'ωι', 'ῴ' => 'ώι', 'ῶ' => 'ῶ', 'ῷ' => 'ῶι', 'ῼ' => 'ωι', 'ff' => 'ff', 'fi' => 'fi', 'fl' => 'fl', 'ffi' => 'ffi', 'ffl' => 'ffl', 'ſt' => 'st', 'st' => 'st', 'ﬓ' => 'մն', 'ﬔ' => 'մե', 'ﬕ' => 'մի', 'ﬖ' => 'վն', 'ﬗ' => 'մխ', ]; Copyright (c) 2019-present Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Php74; /** * @author Ion Bazan * * @internal */ final class Php74 { public static function get_mangled_object_vars($obj) { if (!\is_object($obj)) { trigger_error('get_mangled_object_vars() expects parameter 1 to be object, '.\gettype($obj).' given', \E_USER_WARNING); return null; } if ($obj instanceof \ArrayIterator || $obj instanceof \ArrayObject) { $reflector = new \ReflectionClass($obj instanceof \ArrayIterator ? 'ArrayIterator' : 'ArrayObject'); $flags = $reflector->getMethod('getFlags')->invoke($obj); $reflector = $reflector->getMethod('setFlags'); $reflector->invoke($obj, ($flags & \ArrayObject::STD_PROP_LIST) ? 0 : \ArrayObject::STD_PROP_LIST); $arr = (array) $obj; $reflector->invoke($obj, $flags); } else { $arr = (array) $obj; } return array_combine(array_keys($arr), array_values($arr)); } public static function mb_str_split($string, $split_length = 1, $encoding = null) { if (null !== $string && !\is_scalar($string) && !(\is_object($string) && method_exists($string, '__toString'))) { trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', \E_USER_WARNING); return null; } if (1 > $split_length = (int) $split_length) { trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING); return false; } if (null === $encoding) { $encoding = mb_internal_encoding(); } if ('UTF-8' === $encoding || \in_array(strtoupper($encoding), ['UTF-8', 'UTF8'], true)) { return preg_split("/(.{{$split_length}})/u", $string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY); } $result = []; $length = mb_strlen($string, $encoding); for ($i = 0; $i < $length; $i += $split_length) { $result[] = mb_substr($string, $i, $split_length, $encoding); } return $result; } public static function password_algos() { $algos = []; if (\defined('PASSWORD_BCRYPT')) { $algos[] = \PASSWORD_BCRYPT; } if (\defined('PASSWORD_ARGON2I')) { $algos[] = \PASSWORD_ARGON2I; } if (\defined('PASSWORD_ARGON2ID')) { $algos[] = \PASSWORD_ARGON2ID; } return $algos; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Php74 as p; if (\PHP_VERSION_ID >= 70400) { return; } if (!function_exists('get_mangled_object_vars')) { function get_mangled_object_vars($object) { return p\Php74::get_mangled_object_vars($object); } } if (!function_exists('password_algos')) { function password_algos() { return p\Php74::password_algos(); } } if (extension_loaded('mbstring')) { if (!function_exists('mb_str_split')) { function mb_str_split($string, $length = 1, $encoding = null) { return p\Php74::mb_str_split($string, $length, $encoding); } } } Copyright (c) 2018-present Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use _PHPStan_b22655c3f\Symfony\Polyfill\Ctype as p; if (\PHP_VERSION_ID >= 80000) { return require __DIR__ . '/bootstrap80.php'; } if (!\function_exists('ctype_alnum')) { function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); } } if (!\function_exists('ctype_alpha')) { function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); } } if (!\function_exists('ctype_cntrl')) { function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); } } if (!\function_exists('ctype_digit')) { function ctype_digit($text) { return p\Ctype::ctype_digit($text); } } if (!\function_exists('ctype_graph')) { function ctype_graph($text) { return p\Ctype::ctype_graph($text); } } if (!\function_exists('ctype_lower')) { function ctype_lower($text) { return p\Ctype::ctype_lower($text); } } if (!\function_exists('ctype_print')) { function ctype_print($text) { return p\Ctype::ctype_print($text); } } if (!\function_exists('ctype_punct')) { function ctype_punct($text) { return p\Ctype::ctype_punct($text); } } if (!\function_exists('ctype_space')) { function ctype_space($text) { return p\Ctype::ctype_space($text); } } if (!\function_exists('ctype_upper')) { function ctype_upper($text) { return p\Ctype::ctype_upper($text); } } if (!\function_exists('ctype_xdigit')) { function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace _PHPStan_b22655c3f\Symfony\Polyfill\Ctype; /** * Ctype implementation through regex. * * @internal * * @author Gert de Pagter */ final class Ctype { /** * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise. * * @see https://php.net/ctype-alnum * * @param mixed $text * * @return bool */ public static function ctype_alnum($text) { $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); return \is_string($text) && '' !== $text && !\preg_match('/[^A-Za-z0-9]/', $text); } /** * Returns TRUE if every character in text is a letter, FALSE otherwise. * * @see https://php.net/ctype-alpha * * @param mixed $text * * @return bool */ public static function ctype_alpha($text) { $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); return \is_string($text) && '' !== $text && !\preg_match('/[^A-Za-z]/', $text); } /** * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise. * * @see https://php.net/ctype-cntrl * * @param mixed $text * * @return bool */ public static function ctype_cntrl($text) { $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); return \is_string($text) && '' !== $text && !\preg_match('/[^\\x00-\\x1f\\x7f]/', $text); } /** * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise. * * @see https://php.net/ctype-digit * * @param mixed $text * * @return bool */ public static function ctype_digit($text) { $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); return \is_string($text) && '' !== $text && !\preg_match('/[^0-9]/', $text); } /** * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise. * * @see https://php.net/ctype-graph * * @param mixed $text * * @return bool */ public static function ctype_graph($text) { $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); return \is_string($text) && '' !== $text && !\preg_match('/[^!-~]/', $text); } /** * Returns TRUE if every character in text is a lowercase letter. * * @see https://php.net/ctype-lower * * @param mixed $text * * @return bool */ public static function ctype_lower($text) { $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); return \is_string($text) && '' !== $text && !\preg_match('/[^a-z]/', $text); } /** * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all. * * @see https://php.net/ctype-print * * @param mixed $text * * @return bool */ public static function ctype_print($text) { $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); return \is_string($text) && '' !== $text && !\preg_match('/[^ -~]/', $text); } /** * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise. * * @see https://php.net/ctype-punct * * @param mixed $text * * @return bool */ public static function ctype_punct($text) { $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); return \is_string($text) && '' !== $text && !\preg_match('/[^!-\\/\\:-@\\[-`\\{-~]/', $text); } /** * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters. * * @see https://php.net/ctype-space * * @param mixed $text * * @return bool */ public static function ctype_space($text) { $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); return \is_string($text) && '' !== $text && !\preg_match('/[^\\s]/', $text); } /** * Returns TRUE if every character in text is an uppercase letter. * * @see https://php.net/ctype-upper * * @param mixed $text * * @return bool */ public static function ctype_upper($text) { $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); return \is_string($text) && '' !== $text && !\preg_match('/[^A-Z]/', $text); } /** * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise. * * @see https://php.net/ctype-xdigit * * @param mixed $text * * @return bool */ public static function ctype_xdigit($text) { $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); return \is_string($text) && '' !== $text && !\preg_match('/[^A-Fa-f0-9]/', $text); } /** * Converts integers to their char versions according to normal ctype behaviour, if needed. * * If an integer between -128 and 255 inclusive is provided, * it is interpreted as the ASCII value of a single character * (negative values have 256 added in order to allow characters in the Extended ASCII range). * Any other integer is interpreted as a string containing the decimal digits of the integer. * * @param mixed $int * @param string $function * * @return mixed */ private static function convert_int_to_char_for_ctype($int, $function) { if (!\is_int($int)) { return $int; } if ($int < -128 || $int > 255) { return (string) $int; } if (\PHP_VERSION_ID >= 80100) { @\trigger_error($function . '(): Argument of type int will be interpreted as string in the future', \E_USER_DEPRECATED); } if ($int < 0) { $int += 256; } return \chr($int); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use _PHPStan_b22655c3f\Symfony\Polyfill\Ctype as p; if (!\function_exists('ctype_alnum')) { function ctype_alnum(mixed $text) : bool { return p\Ctype::ctype_alnum($text); } } if (!\function_exists('ctype_alpha')) { function ctype_alpha(mixed $text) : bool { return p\Ctype::ctype_alpha($text); } } if (!\function_exists('ctype_cntrl')) { function ctype_cntrl(mixed $text) : bool { return p\Ctype::ctype_cntrl($text); } } if (!\function_exists('ctype_digit')) { function ctype_digit(mixed $text) : bool { return p\Ctype::ctype_digit($text); } } if (!\function_exists('ctype_graph')) { function ctype_graph(mixed $text) : bool { return p\Ctype::ctype_graph($text); } } if (!\function_exists('ctype_lower')) { function ctype_lower(mixed $text) : bool { return p\Ctype::ctype_lower($text); } } if (!\function_exists('ctype_print')) { function ctype_print(mixed $text) : bool { return p\Ctype::ctype_print($text); } } if (!\function_exists('ctype_punct')) { function ctype_punct(mixed $text) : bool { return p\Ctype::ctype_punct($text); } } if (!\function_exists('ctype_space')) { function ctype_space(mixed $text) : bool { return p\Ctype::ctype_space($text); } } if (!\function_exists('ctype_upper')) { function ctype_upper(mixed $text) : bool { return p\Ctype::ctype_upper($text); } } if (!\function_exists('ctype_xdigit')) { function ctype_xdigit(mixed $text) : bool { return p\Ctype::ctype_xdigit($text); } } amqp.host The host to connect too. Note: Max 1024 characters. * 'port' => amqp.port Port on the host. * 'vhost' => amqp.vhost The virtual host on the host. Note: Max 128 characters. * 'login' => amqp.login The login name to use. Note: Max 128 characters. * 'password' => amqp.password Password. Note: Max 128 characters. * 'read_timeout' => Timeout in for income activity. Note: 0 or greater seconds. May be fractional. * 'write_timeout' => Timeout in for outcome activity. Note: 0 or greater seconds. May be fractional. * 'connect_timeout' => Connection timeout. Note: 0 or greater seconds. May be fractional. * 'rpc_timeout' => RPC timeout. Note: 0 or greater seconds. May be fractional. * * Connection tuning options (see http://www.rabbitmq.com/amqp-0-9-1-reference.html#connection.tune for details): * 'channel_max' => Specifies highest channel number that the server permits. 0 means standard extension limit * (see PHP_AMQP_MAX_CHANNELS constant) * 'frame_max' => The largest frame size that the server proposes for the connection, including frame header * and end-byte. 0 means standard extension limit (depends on librabbimq default frame size limit) * 'heartbeat' => The delay, in seconds, of the connection heartbeat that the server wants. * 0 means the server does not want a heartbeat. Note, librabbitmq has limited heartbeat support, * which means heartbeats checked only during blocking calls. * * TLS support (see https://www.rabbitmq.com/ssl.html for details): * 'cacert' => Path to the CA cert file in PEM format.. * 'cert' => Path to the client certificate in PEM foramt. * 'key' => Path to the client key in PEM format. * 'verify' => Enable or disable peer verification. If peer verification is enabled then the common name in the * server certificate must match the server name. Peer verification is enabled by default. * * 'connection_name' => A user determined name for the connection * ) * * @param array $credentials Optional array of credential information for * connecting to the AMQP broker. */ public function __construct(array $credentials = []) {} /** * Check whether the connection to the AMQP broker is still valid. * * Cannot reliably detect dropped connections or unusual socket errors, as it does not actively * engage the socket. * * @return bool TRUE if connected, FALSE otherwise. */ public function isConnected() {} /** * Whether connection persistent. * * When no connection is established, it will always return FALSE. The same disclaimer as for * {@see AMQPConnection::isConnected()} applies. * * @return bool TRUE if persistently connected, FALSE otherwise. */ public function isPersistent() {} /** * Establish a transient connection with the AMQP broker. * * This method will initiate a connection with the AMQP broker. * * @throws AMQPConnectionException * @return void */ public function connect() {} /** * Closes the transient connection with the AMQP broker. * * This method will close an open connection with the AMQP broker. * * @throws AMQPConnectionException When attempting to disconnect a persistent connection * * @return void */ public function disconnect() {} /** * Close any open transient connections and initiate a new one with the AMQP broker. * * @return void */ public function reconnect() {} /** * Establish a persistent connection with the AMQP broker. * * This method will initiate a connection with the AMQP broker * or reuse an existing one if present. * * @throws AMQPConnectionException * @return void */ public function pconnect() {} /** * Closes a persistent connection with the AMQP broker. * * This method will close an open persistent connection with the AMQP * broker. * * @throws AMQPConnectionException When attempting to disconnect a transient connection * * @return void */ public function pdisconnect() {} /** * Close any open persistent connections and initiate a new one with the AMQP broker. * * @throws AMQPConnectionException * * @return void */ public function preconnect() {} /** * Get the configured host. * * @return string The configured hostname of the broker */ public function getHost() {} /** * Get the configured login. * * @return string The configured login as a string. */ public function getLogin() {} /** * Get the configured password. * * @return string The configured password as a string. */ public function getPassword() {} /** * Get the configured port. * * @return int The configured port as an integer. */ public function getPort() {} /** * Get the configured vhost. * * @return string The configured virtual host as a string. */ public function getVhost() {} /** * Set the hostname used to connect to the AMQP broker. * * @param string $host The hostname of the AMQP broker. * * @throws AMQPConnectionException If host is longer then 1024 characters. * * @return void */ public function setHost($host) {} /** * Set the login string used to connect to the AMQP broker. * * @param string $login The login string used to authenticate * with the AMQP broker. * * @throws AMQPConnectionException If login is longer then 32 characters. * * @return void */ public function setLogin($login) {} /** * Set the password string used to connect to the AMQP broker. * * @param string $password The password string used to authenticate * with the AMQP broker. * * @throws AMQPConnectionException If password is longer then 32characters. * * @return void */ public function setPassword($password) {} /** * Set the port used to connect to the AMQP broker. * * @param int $port The port used to connect to the AMQP broker. * * @throws AMQPConnectionException If port is longer not between * 1 and 65535. * * @return void */ public function setPort($port) {} /** * Sets the virtual host to which to connect on the AMQP broker. * * @param string $vhost The virtual host to use on the AMQP * broker. * * @throws AMQPConnectionException If host is longer then 32 characters. * * @return void */ public function setVhost($vhost) {} /** * Sets the interval of time to wait for income activity from AMQP broker * * @deprecated use AMQPConnection::setReadTimeout($timeout) instead * * @param float $timeout * * @throws AMQPConnectionException If timeout is less than 0. * * @return void */ #[Deprecated(replacement: "%class%->setReadTimout(%parameter0%)")] public function setTimeout($timeout) {} /** * Get the configured interval of time to wait for income activity * from AMQP broker * * @deprecated use AMQPConnection::getReadTimeout() instead * * @return float */ #[Deprecated(replacement: '%class%->getReadTimout(%parameter0%)')] public function getTimeout() {} /** * Sets the interval of time to wait for income activity from AMQP broker * * @param float $timeout * * @throws AMQPConnectionException If timeout is less than 0. * * @return void */ public function setReadTimeout($timeout) {} /** * Get the configured interval of time to wait for income activity * from AMQP broker * * @return float */ public function getReadTimeout() {} /** * Sets the interval of time to wait for outcome activity to AMQP broker * * @param float $timeout * * @throws AMQPConnectionException If timeout is less than 0. * * @return void */ public function setWriteTimeout($timeout) {} /** * Get the configured interval of time to wait for outcome activity * to AMQP broker * * @return float */ public function getWriteTimeout() {} /** * Get the configured timeout (in seconds) for connecting to the AMQP broker */ public function getConnectTimeout(): float {} /** * Sets the interval of time to wait for RPC activity to AMQP broker * * @param float $timeout * * @throws AMQPConnectionException If timeout is less than 0. * * @return void */ public function setRpcTimeout($timeout) {} /** * Get the configured interval of time to wait for RPC activity * to AMQP broker * * @return float */ public function getRpcTimeout() {} /** * Return last used channel id during current connection session. * * @return int */ public function getUsedChannels() {} /** * Get the maximum number of channels the connection can handle. * * When connection is connected, effective connection value returned, which is normally the same as original * correspondent value passed to constructor, otherwise original value passed to constructor returned. * * @return int */ public function getMaxChannels() {} /** * Get max supported frame size per connection in bytes. * * When connection is connected, effective connection value returned, which is normally the same as original * correspondent value passed to constructor, otherwise original value passed to constructor returned. * * @return int */ public function getMaxFrameSize() {} /** * Get number of seconds between heartbeats of the connection in seconds. * * When connection is connected, effective connection value returned, which is normally the same as original * correspondent value passed to constructor, otherwise original value passed to constructor returned. * * @return int */ public function getHeartbeatInterval() {} /** * Get path to the CA cert file in PEM format * * @return string|null */ public function getCACert() {} /** * Set path to the CA cert file in PEM format * * @param string $cacert * * @return void */ public function setCACert($cacert) {} /** * Get path to the client certificate in PEM format * * @return string|null */ public function getCert() {} /** * Set path to the client certificate in PEM format * * @param string $cert * * @return void */ public function setCert($cert) {} /** * Get path to the client key in PEM format * * @return string|null */ public function getKey() {} /** * Set path to the client key in PEM format * * @param string|null $key * * @return void */ public function setKey($key) {} /** * Get whether peer verification enabled or disabled * * @return bool */ public function getVerify() {} /** * Enable or disable peer verification * * @param bool $verify * * @return void */ public function setVerify($verify) {} /** * set authentication method * * @param int $saslMethod AMQP_SASL_METHOD_PLAIN | AMQP_SASL_METHOD_EXTERNAL * * @return void */ public function setSaslMethod($method) {} /** * Get authentication mechanism configuration * * @return int AMQP_SASL_METHOD_PLAIN | AMQP_SASL_METHOD_EXTERNAL */ public function getSaslMethod() {} public function setConnectionName(?string $connectionName): void {} public function getConnectionName(): ?string {} } /** * stub class representing AMQPConnectionException from pecl-amqp */ class AMQPConnectionException extends AMQPException {} /** * Interface representing AMQP values */ interface AMQPValue { public function toAmqpValue(): float|array|AMQPDecimal|bool|int|AMQPValue|string|AMQPTimestamp|null; } /** * stub class representing AMQPDecimal from pecl-amqp */ final /* readonly */ class AMQPDecimal implements AMQPValue { public const EXPONENT_MIN = 0; public const EXPONENT_MAX = 255; public const SIGNIFICAND_MIN = 0; public const SIGNIFICAND_MAX = 4294967295; /** * @param $exponent * @param $significand * * @throws AMQPExchangeValue */ public function __construct($exponent, $significand) {} /** @return int */ public function getExponent() {} /** @return int */ public function getSignificand() {} public function toAmqpValue(): float|array|AMQPDecimal|bool|int|AMQPValue|string|AMQPTimestamp|null {} } /** * stub class representing AMQPEnvelope from pecl-amqp */ class AMQPEnvelope extends AMQPBasicProperties { /** * Get the body of the message. * * @return string The contents of the message body. */ public function getBody() {} /** * Get the routing key of the message. * * @return string The message routing key. */ public function getRoutingKey() {} /** * Get the consumer tag of the message. * * @return string|null The consumer tag of the message. */ public function getConsumerTag() {} /** * Get the delivery tag of the message. * * @return int|null The delivery tag of the message. */ public function getDeliveryTag() {} /** * Get the exchange name on which the message was published. * * @return string|null The exchange name on which the message was published. */ public function getExchangeName() {} /** * Whether this is a redelivery of the message. * * Whether this is a redelivery of a message. If this message has been * delivered and AMQPEnvelope::nack() was called, the message will be put * back on the queue to be redelivered, at which point the message will * always return TRUE when this method is called. * * @return bool TRUE if this is a redelivery, FALSE otherwise. */ public function isRedelivery() {} /** * Get a specific message header. * * @param string $headerName Name of the header to get the value from. * * @return mixed The contents of the specified header or null if not set. */ public function getHeader($headerName) {} /** * Check whether specific message header exists. * * @param string $headerName Name of the header to check. * * @return bool */ public function hasHeader($headerName) {} } /** * stub class representing AMQPEnvelopeException from pecl-amqp */ class AMQPEnvelopeException extends AMQPException { public function getEnvelope(): AMQPEnvelope {} } /** * stub class representing AMQPException from pecl-amqp */ class AMQPException extends Exception {} /** * stub class representing AMQPExchange from pecl-amqp */ class AMQPExchange { /** * Create an instance of AMQPExchange. * * Returns a new instance of an AMQPExchange object, associated with the * given AMQPChannel object. * * @param AMQPChannel $channel A valid AMQPChannel object, connected * to a broker. * * @throws AMQPExchangeException When amqp_channel is not connected to * a broker. * @throws AMQPConnectionException If the connection to the broker was * lost. */ public function __construct(AMQPChannel $channel) {} /** * Bind to another exchange. * * Bind an exchange to another exchange using the specified routing key. * * @param string $exchangeName Name of the exchange to bind. * @param string $routingKey The routing key to use for binding. * @param array $arguments Additional binding arguments. * * @throws AMQPExchangeException On failure. * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return void */ public function bind($exchangeName, $routingKey = '', array $arguments = []) {} /** * Remove binding to another exchange. * * Remove a routing key binding on an another exchange from the given exchange. * * @param string $exchangeName Name of the exchange to bind. * @param string $routingKey The routing key to use for binding. * @param array $arguments Additional binding arguments. * * @throws AMQPExchangeException On failure. * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return void */ public function unbind($exchangeName, $routingKey = '', array $arguments = []) {} /** * Declare a new exchange on the broker. * * @throws AMQPExchangeException On failure. * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return void */ public function declareExchange() {} /** * Declare a new exchange on the broker. * * @throws AMQPExchangeException On failure. * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return void */ public function declare(): void {} /** * Delete the exchange from the broker. * * @param string $exchangeName Optional name of exchange to delete. * @param int $flags Optionally AMQP_IFUNUSED can be specified * to indicate the exchange should not be * deleted until no clients are connected to * it. * * @throws AMQPExchangeException On failure. * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return void */ public function delete($exchangeName = null, $flags = AMQP_NOPARAM) {} /** * Get the argument associated with the given key. * Get the argument associated with the given key. * * @param string $argumentName The key to look up. * * @throws AMQPExchangeException If key does not exist * * @return bool|int|float|string|null */ public function getArgument($argumentName) {} /** * Check whether argument associated with the given key exists. * * @param string $argumentName The key to look up. * * @return bool */ public function hasArgument($argumentName) {} /** * Get all arguments set on the given exchange. * * @return array An array containing all of the set key/value pairs. */ public function getArguments() {} /** * Get all the flags currently set on the given exchange. * * @return int An integer bitmask of all the flags currently set on this * exchange object. */ public function getFlags() {} /** * Get the configured name. * * @return string|null The configured name as a string. */ public function getName() {} /** * Get the configured type. * * @return string|null The configured type as a string. */ public function getType() {} /** * Publish a message to an exchange. * * Publish a message to the exchange represented by the AMQPExchange object. * * @param string $message The message to publish. * @param string|null $routingKey The optional routing key to which to * publish to. * @param int|null $flags One or more of AMQP_MANDATORY and * AMQP_IMMEDIATE. * @param array $headers One of content_type, content_encoding, * message_id, user_id, app_id, delivery_mode, * priority, timestamp, expiration, type * or reply_to, headers. * * @throws AMQPExchangeException On failure. * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return void */ public function publish( $message, $routingKey = null, $flags = null, array $headers = [] ) {} /** * Set the value for the given key. * * @param string $argumentName Name of the argument to set. * @param string|int $argumentValue Value of the argument to set. * * @return void */ public function setArgument($argumentName, $argumentValue) {} /** * Set the value for the given key. * * @param string $argumentName Name of the argument to remove. */ public function removeArgument(string $argumentName): void {} /** * Set all arguments on the exchange. * * @param array $arguments An array of key/value pairs of arguments. * * @return bool TRUE on success or FALSE on failure. */ public function setArguments(array $arguments) {} /** * Set the flags on an exchange. * * @param int|null $flags A bitmask of flags. This call currently only * considers the following flags: * AMQP_DURABLE, AMQP_PASSIVE * (and AMQP_DURABLE, if librabbitmq version >= 0.5.3) * * @return void */ public function setFlags($flags) {} /** * Set the name of the exchange. * * @param string $exchangeName The name of the exchange to set as string. * * @return void */ public function setName($exchangeName) {} /** * Set the type of the exchange. * * Set the type of the exchange. This can be any of AMQP_EX_TYPE_DIRECT, * AMQP_EX_TYPE_FANOUT, AMQP_EX_TYPE_HEADERS or AMQP_EX_TYPE_TOPIC. * * @param string $exchangeType The type of exchange as a string. * * @return void */ public function setType($exchangeType) {} /** * Get the AMQPChannel object in use * * @return AMQPChannel */ public function getChannel() {} /** * Get the AMQPConnection object in use * * @return AMQPConnection */ public function getConnection() {} } /** * stub class representing AMQPExchangeException from pecl-amqp */ class AMQPExchangeException extends AMQPException {} /** * stub class representing AMQPQueue from pecl-amqp */ class AMQPQueue { /** * Create an instance of an AMQPQueue object. * * @param AMQPChannel $channel The amqp channel to use. * * @throws AMQPQueueException When amqp_channel is not connected to a * broker. * @throws AMQPConnectionException If the connection to the broker was lost. */ public function __construct(AMQPChannel $channel) {} /** * Acknowledge the receipt of a message. * * This method allows the acknowledgement of a message that is retrieved * without the AMQP_AUTOACK flag through AMQPQueue::get() or * AMQPQueue::consume() * * @param int $deliveryTag The message delivery tag of which to * acknowledge receipt. * @param int|null $flags The only valid flag that can be passed is * AMQP_MULTIPLE. * * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return void */ public function ack($deliveryTag, $flags = null) {} /** * Bind the given queue to a routing key on an exchange. * * @param string $exchangeName Name of the exchange to bind to. * @param string|null $routingKey Pattern or routing key to bind with. * @param array $arguments Additional binding arguments. * * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return bool */ public function bind($exchangeName, $routingKey = null, array $arguments = []) {} /** * Cancel a queue that is already bound to an exchange and routing key. * * @param string $consumer_tag The consumer tag cancel. If no tag provided, * or it is empty string, the latest consumer * tag on this queue will be used and after * successful request it will set to null. * If it also empty, no `basic.cancel` * request will be sent. When consumer_tag give * and it equals to latest consumer_tag on queue, * it will be interpreted as latest consumer_tag usage. * * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return bool */ public function cancel($consumer_tag = '') {} /** * Consume messages from a queue. * * Blocking function that will retrieve the next message from the queue as * it becomes available and will pass it off to the callback. * * @param callable|null $callback A callback function to which the * consumed message will be passed. The * function must accept at a minimum * one parameter, an AMQPEnvelope object, * and an optional second parameter * the AMQPQueue object from which callback * was invoked. The AMQPQueue::consume() will * not return the processing thread back to * the PHP script until the callback * function returns FALSE. * If the callback is omitted or null is passed, * then the messages delivered to this client will * be made available to the first real callback * registered. That allows one to have a single * callback consuming from multiple queues. * @param int|null $flags A bitmask of any of the flags: AMQP_AUTOACK, * AMQP_JUST_CONSUME. Note: when AMQP_JUST_CONSUME * flag used all other flags are ignored and * $consumerTag parameter has no sense. * AMQP_JUST_CONSUME flag prevent from sending * `basic.consume` request and just run $callback * if it provided. Calling method with empty $callback * and AMQP_JUST_CONSUME makes no sense. * @param string|null $consumerTag A string describing this consumer. Used * for canceling subscriptions with cancel(). * * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * @throws AMQPEnvelopeException When no queue found for envelope. * @throws AMQPQueueException If timeout occurs or queue is not exists. * * @return void */ public function consume( callable $callback = null, $flags = null, $consumerTag = null ) {} /** * Declare a new queue on the broker. * * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * @throws AMQPQueueException On failure. * * @return int the message count. */ public function declareQueue() {} /** * Declare a new queue on the broker. * * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * @throws AMQPQueueException On failure. * * @return int the message count. */ public function declare(): int {} /** * Delete a queue from the broker. * * This includes its entire contents of unread or unacknowledged messages. * * @param int $flags Optionally AMQP_IFUNUSED can be specified * to indicate the queue should not be * deleted until no clients are connected to * it. * * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return int The number of deleted messages. */ public function delete($flags = AMQP_NOPARAM) {} /** * Retrieve the next message from the queue. * * Retrieve the next available message from the queue. If no messages are * present in the queue, this function will return NULL immediately. This * is a non blocking alternative to the AMQPQueue::consume() method. * Currently, the only supported flag for the flags parameter is * AMQP_AUTOACK. If this flag is passed in, then the message returned will * automatically be marked as acknowledged by the broker as soon as the * frames are sent to the client. * * @param int $flags A bitmask of supported flags for the * method call. Currently, the only the * supported flag is AMQP_AUTOACK. If this * value is not provided, it will use the * value of ini-setting amqp.auto_ack. * * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * @throws AMQPQueueException If queue is not exist. * * @return AMQPEnvelope|null */ public function get($flags = null) {} /** * Get all the flags currently set on the given queue. * * @return int An integer bitmask of all the flags currently set on this * exchange object. */ public function getFlags(): int {} /** * Get the configured name. * * @return string|null The configured name as a string. */ public function getName(): ?string {} /** * Mark a message as explicitly not acknowledged. * * Mark the message identified by delivery_tag as explicitly not * acknowledged. This method can only be called on messages that have not * yet been acknowledged, meaning that messages retrieved with by * AMQPQueue::consume() and AMQPQueue::get() and using the AMQP_AUTOACK * flag are not eligible. When called, the broker will immediately put the * message back onto the queue, instead of waiting until the connection is * closed. This method is only supported by the RabbitMQ broker. The * behavior of calling this method while connected to any other broker is * undefined. * * @param int $deliveryTag Delivery tag of last message to reject. * @param int $flags AMQP_REQUEUE to requeue the message(s), * AMQP_MULTIPLE to nack all previous * unacked messages as well. * * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return bool */ public function nack($deliveryTag, $flags = AMQP_NOPARAM) {} /** * Mark one message as explicitly not acknowledged. * * Mark the message identified by delivery_tag as explicitly not * acknowledged. This method can only be called on messages that have not * yet been acknowledged, meaning that messages retrieved with by * AMQPQueue::consume() and AMQPQueue::get() and using the AMQP_AUTOACK * flag are not eligible. * * @param int $deliveryTag Delivery tag of the message to reject. * @param int|null $flags AMQP_REQUEUE to requeue the message(s). * * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return bool */ public function reject($deliveryTag, $flags = null) {} /** * Recover unacknowledged messages delivered to the current consumer. * * Recover all the unacknowledged messages delivered to the current consumer. * If $requeue is true, the broker can redeliver the messages to different * consumers. If $requeue is FALSE, it can only redeliver it to the current * consumer. RabbitMQ does not implement $request = false. * This method exposes `basic.recover` from the AMQP spec. * * @param bool $requeue If TRUE, deliver to any consumer, if FALSE, deliver to the current consumer only * @throws AMQPConnectionException If the connection to the broker was lost. * @throws AMQPChannelException If the channel is not open. */ public function recover(bool $requeue = true): void {} /** * Purge the contents of a queue. * * Returns the number of purged messages * * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return int */ public function purge() {} /** * Get the argument associated with the given key. * * @param string $argumentName The key to look up. * @throws AMQPQueueException If key does not exist * @return bool|int|float|string|null|array|AMQPValue|AMQPDecimal|AMQPTimestamp */ public function getArgument($argumentName) {} /** * Set a queue argument. * * @param string $argumentName The key to set. * @param bool|int|float|string|null|array|AMQPValue|AMQPDecimal|AMQPTimestamp $argumentValue The argument value to set. * * @return void */ public function setArgument(string $argumentName, $argumentValue) {} /** * Set a queue argument. * * @param string $argumentName The argument name to set. */ public function removeArgument(string $argumentName): void {} /** * Set all arguments on the given queue. * * All other argument settings will be wiped. * * @param array $arguments An array of name/value pairs of arguments. */ public function setArguments(array $arguments): void {} /** * Get all set arguments as an array of key/value pairs. * * @return array An array containing all the set key/value pairs. */ public function getArguments(): array {} /** * Check whether a queue has specific argument. * * @param string $argumentName The argument name to check. * * @return bool */ public function hasArgument(string $argumentName): bool {} /** * Set the flags on the queue. * * @param int|null $flags A bitmask of flags: * AMQP_DURABLE, AMQP_PASSIVE, * AMQP_EXCLUSIVE, AMQP_AUTODELETE. * * @return bool */ public function setFlags($flags = null) {} /** * Set the queue name. * * @param string $name The name of the queue. * * @return bool */ public function setName($name) {} /** * Remove a routing key binding on an exchange from the given queue. * * @param string $exchangeName The name of the exchange on which the * queue is bound. * @param string|null $routingKey The binding routing key used by the * queue. * @param array $arguments Additional binding arguments. * * @throws AMQPChannelException If the channel is not open. * @throws AMQPConnectionException If the connection to the broker was lost. * * @return bool */ public function unbind($exchangeName, $routingKey = null, array $arguments = []) {} /** * Get the AMQPChannel object in use * * @return AMQPChannel */ public function getChannel() {} /** * Get the AMQPConnection object in use * * @return AMQPConnection */ public function getConnection() {} /** * Get latest consumer tag. If no consumer available or the latest on was canceled null will be returned. * * @return string|null */ public function getConsumerTag() {} } /** * stub class representing AMQPQueueException from pecl-amqp */ class AMQPQueueException extends AMQPException {} class AMQPValueException extends AMQPException {} /** * stub class representing AMQPTimestamp from pecl-amqp */ final /* readonly */ class AMQPTimestamp implements AMQPValue { public const MIN = 0.0; public const MAX = 18446744073709551616; /** * @throws AMQPValueException */ public function __construct(float $timestamp) {} public function __toString(): string {} public function getTimestamp(): float {} public function toAmqpValue(): float|array|AMQPDecimal|bool|int|AMQPValue|string|AMQPTimestamp|null {} } /** * stub class representing AMQPExchangeValue from pecl-amqp */ class AMQPExchangeValue extends AMQPException {} Create and initialize new event base

* *

Returns new event base, which can be used later in {@link event_base_set}(), {@link event_base_loop}() and other functions.

* * @link https://php.net/event_base_new * * @return resource|false returns valid event base resource on success or FALSE on error. */ function event_base_new() {} /** *

Destroy event base

*

(PECL libevent >= 0.0.1)

* *

Destroys the specified event_base and frees all the resources associated. * Note that it's not possible to destroy an event base with events attached to it.

* * @link https://php.net/event_base_free * * @param resource $event_base Valid event base resource. * * @return void */ function event_base_free($event_base) {} /** *

Handle events

*

(PECL libevent >= 0.0.1)

* *

Starts event loop for the specified event base.

* *

By default, the {@link event_base_loop}() function runs an event_base until * there are no more events registered in it. To run the loop, it repeatedly * checks whether any of the registered events has triggered (for example, * if a read event's file descriptor is ready to read, or if a timeout event's * timeout is ready to expire). Once this happens, it marks all triggered events * as "active", and starts to run them. *

* *

You can change the behavior of event_base_loop() by setting one or more flags * in its flags argument. If EVLOOP_ONCE is set, then the loop will wait until some * events become active, then run active events until there are no more to run, then * return. If EVLOOP_NONBLOCK is set, then the loop will not wait for events to trigger: * it will only check whether any events are ready to trigger immediately, * and run their callbacks if so. *

* * @link https://php.net/event_base_loop * * @param resource $event_base Valid event base resource. * @param int $flags [optional] Optional parameter, which can take any combination of EVLOOP_ONCE and EVLOOP_NONBLOCK. * * @return int

* Returns 0 if it exited normally, * -1 if it exited because of some unhandled error in the backend * and 1 if no events were registered. *

*/ function event_base_loop($event_base, $flags = null) {} /** *

Tells the event_base to exit its loop immediately.

*

(PECL libevent >= 0.0.1)

* *

It differs from {@link event_base_loopexit}() in that if the event_base is currently * running callbacks for any active events, it will exit immediately after finishing the * one it's currently processing. The behaviour is similar to break statement.

* * @link https://php.net/event_base_loopbreak * * @param resource $event_base Valid event base resource. * * @return bool returns TRUE on success or FALSE on error. */ function event_base_loopbreak($event_base) {} /** *

Tells an event_base to stop looping after a given time has elapsed

*

(PECL libevent >= 0.0.1)

* *

If the event_base is currently running callbacks for any active events, * it will continue running them, and not exit until they have all been run.

* *

If event loop isn't running {@link event_base_loopexit}() schedules the next instance * of the event loop to stop right after the next round of callbacks are run (as if it had * been invoked with EVLOOP_ONCE).

* * @link https://php.net/event_base_loopexit * * @param resource $event_base

* Valid event base resource. *

* @param int $timeout [optional]

* Optional timeout parameter (in microseconds). If lower than 1, * the event_base stops looping without a delay. *

* * @return bool returns TRUE on success or FALSE on error. */ function event_base_loopexit($event_base, $timeout = -1) {} /** *

Associate event base with an event

*

(PECL libevent >= 0.0.1)

* *

Associates the event_base with the event.

* * @link https://php.net/event_base_set * * @param resource $event Valid event resource. * @param resource $base Valid event base resource. * * @return bool returns TRUE on success or FALSE on error. */ function event_base_set($event, $base) {} /** *

Set the number of different event priority levels

*

(PECL libevent >= 0.0.2)

* *

By default all events are scheduled with the same priority (npriorities/2). * Using {@link event_base_priority_init}() you can change the number of event priority * levels and then set a desired priority for each event.

* * @link https://php.net/event_base_priority_init * * @param resource $event_base Valid event base resource. * @param int $npriorities The number of event priority levels. * * @return bool returns TRUE on success or FALSE on error. */ function event_base_priority_init($event_base, $npriorities) {} /** *

Creates and returns a new event resource.

*

(PECL libevent >= 0.0.1)

* * @link https://php.net/event_new * * @return resource|false returns a new event resource on success or FALSE on error. */ function event_new() {} /** *

Free event resource.

*

(PECL libevent >= 0.0.1)

* * @link https://php.net/event_free * * @param resource $event Valid event resource. * * @return void */ function event_free($event) {} /** *

Add an event to the set of monitored events

*

(PECL libevent >= 0.0.1)

* *

Schedules the execution of the non-pending event (makes it pending in it's * configured base) when the event specified in {@link event_set}() occurs or in * at least the time specified by the timeout argument. If timeout was not specified, * not timeout is set. The event must be already initialized by * {@link event_set}() and {@link event_base_set}() functions. * If the event already has a timeout set, * it is replaced by the new one.

* *

If you call {@link event_add}() on an event that is already pending, * it will leave it pending, and reschedule it with the provided timeout.

* * @link https://php.net/event_add * * @param resource $event

* Valid event resource. *

* @param int $timeout [optional]

* Optional timeout (in microseconds). *

* * @return bool returns TRUE on success or FALSE on error. */ function event_add($event, $timeout = -1) {} /** *

Prepares the event to be used in {@link event_add}().

*

(PECL libevent >= 0.0.1)

* *

The event is prepared to call the function specified by the callback * on the events specified in parameter events, which is a set of the following * flags: EV_TIMEOUT, EV_SIGNAL, EV_READ, EV_WRITE and EV_PERSIST.

* *

EV_SIGNAL support was added in version 0.0.4

* *

After initializing the event, use {@link event_base_set}() to associate the event with its event base.

* *

In case of matching event, these three arguments are passed to the callback function: * * * * * * * * * * * * * *
$fdSignal number or resource indicating the stream.
$eventsA flag indicating the event. Consists of the following flags: EV_TIMEOUT, EV_SIGNAL, EV_READ, EV_WRITE and EV_PERSIST.
$argOptional parameter, previously passed to {@link event_set}() as arg.
*

* * @link https://php.net/event_set * * @param resource $event

* Valid event resource. *

* @param resource|int $fd

* Valid PHP stream resource. The stream must be castable to file descriptor, * so you most likely won't be able to use any of filtered streams. *

* @param int $events

* A set of flags indicating the desired event, can be EV_READ and/or EV_WRITE. * The additional flag EV_PERSIST makes the event to persist until {@link event_del}() is * called, otherwise the callback is invoked only once. *

* @param callable $callback

* Callback function to be called when the matching event occurs. *

* @param mixed $arg [optional]

* Optional callback parameter. *

* * @return bool returns TRUE on success or FALSE on error. */ function event_set($event, $fd, $events, $callback, $arg = null) {} /** *

Remove an event from the set of monitored events.

*

(PECL libevent >= 0.0.1)

* *

Calling {@link event_del}() on an initialized event makes it non-pending * and non-active. If the event was not pending or active, there is no effect.

* * @link https://php.net/event_del * * @param resource $event Valid event resource. * * @return bool returns TRUE on success or FALSE on error. */ function event_del($event) {} /** *

Create new buffered event

*

(PECL libevent >= 0.0.1)

* *

Libevent provides an abstraction layer on top of the regular event API. * Using buffered event you don't need to deal with the I/O manually, instead * it provides input and output buffers that get filled and drained automatically.

* *

Every bufferevent has two data-related callbacks: a read callback and a write * callback. By default, the read callback is called whenever any data is read from * the underlying transport, and the write callback is called whenever enough data * from the output buffer is emptied to the underlying transport. You can override * the behavior of these functions by adjusting the read and write "watermarks" * of the bufferevent (see {@link event_buffer_watermark_set}()).

* *

A bufferevent also has an "error" or "event" callback that gets invoked to tell * the application about non-data-oriented events, like when a connection is closed or * an error occurs.

* * @link https://php.net/event_buffer_new * * @param resource $stream Valid PHP stream resource. Must be castable to file descriptor. * @param callable|null $readcb Callback to invoke where there is data to read, or NULL if no callback is desired. * @param callable|null $writecb Callback to invoke where the descriptor is ready for writing, or NULL if no callback is desired. * @param callable $errorcb Callback to invoke where there is an error on the descriptor, cannot be NULL. * @param mixed $arg An argument that will be passed to each of the callbacks (optional). * * @return resource|false returns new buffered event resource on success or FALSE on error. */ function event_buffer_new($stream, $readcb, $writecb, $errorcb, $arg = null) {} /** *

Destroys the specified buffered event and frees all the resources associated.

*

(PECL libevent >= 0.0.1)

* * @link https://php.net/event_buffer_free * * @param resource $bevent Valid buffered event resource. * * @return void */ function event_buffer_free($bevent) {} /** *

Associate buffered event with an event base

*

(PECL libevent >= 0.0.1)

* *

Assign the specified bevent to the event_base.

* * @link https://php.net/event_buffer_base_set * * @param resource $bevent Valid buffered event resource. * @param resource $event_base Valid event base resource. * * @return bool returns TRUE on success or FALSE on error. */ function event_buffer_base_set($bevent, $event_base) {} /** *

Assign a priority to a buffered event. Use it after * initializing event, but before adding an event to the event_base.

*

(PECL libevent >= 0.0.1)

* *

When multiple events trigger at the same time, Libevent * does not define any order with respect to when their callbacks * will be executed. You can define some events as more important * than others by using priorities.

* *

When multiple events of multiple priorities become active, * the low-priority events are not run. Instead, Libevent runs * the high priority events, then checks for events again. Only * when no high-priority events are active are the low-priority * events run.

* *

When you do not set the priority for an event, the default * is the number of queues in the event base, divided by 2.

* * @link https://php.net/event_buffer_priority_set * * @see event_base_priority_init * * @param resource $bevent

* Valid buffered event resource. *

* @param int $priority

* Priority level. Cannot be less than 0 and cannot exceed * maximum priority level of the event base (see {@link event_base_priority_init}()). *

* * @return bool returns TRUE on success or FALSE on error. */ function event_buffer_priority_set($bevent, $priority) {} /** *

Writes data to the specified buffered event.

*

(PECL libevent >= 0.0.1)

* *

The data is appended to the output buffer and written * to the descriptor when it becomes available for writing.

* * @link https://php.net/event_buffer_write * * @param resource $bevent Valid buffered event resource. * @param string $data The data to be written. * @param int $data_size Optional size parameter. {@link event_buffer_write}() writes all the data by default * * @return bool returns TRUE on success or FALSE on error. */ function event_buffer_write($bevent, $data, $data_size = -1) {} /** *

Reads data from the input buffer of the buffered event.

*

(PECL libevent >= 0.0.1)

* * @link https://php.net/event_buffer_read * * @param resource $bevent Valid buffered event resource. * @param int $data_size Data size in bytes. * * @return string */ function event_buffer_read($bevent, $data_size) {} /** *

Enables the specified buffered event.

*

(PECL libevent >= 0.0.1)

* * @link https://php.net/event_buffer_enable * * @param resource $bevent Valid buffered event resource. * @param int $events Any combination of EV_READ and EV_WRITE. * * @return bool returns TRUE on success or FALSE on error. */ function event_buffer_enable($bevent, $events) {} /** *

Disable a buffered event

*

(PECL libevent >= 0.0.1)

* *

Disables the specified buffered event.

* * @link https://php.net/event_buffer_disable * * @param resource $bevent Valid buffered event resource. * @param int $events Any combination of EV_READ and EV_WRITE. * * @return bool returns TRUE on success or FALSE on error. */ function event_buffer_disable($bevent, $events) {} /** *

Sets the read and write timeouts for the specified buffered event.

*

(PECL libevent >= 0.0.1)

* * @link https://php.net/event_buffer_timeout_set * * @param resource $bevent Valid buffered event resource. * @param int $read_timeout Read timeout (in seconds). * @param int $write_timeout Write timeout (in seconds). * * @return void */ function event_buffer_timeout_set($bevent, $read_timeout, $write_timeout) {} /** *

Set the watermarks for read and write events.

*

(PECL libevent >= 0.0.1)

* *

Every bufferevent has four watermarks:

* *

Read low-water mark
* Whenever a read occurs that leaves the bufferevent's input buffer at this * level or higher, the bufferevent's read callback is invoked. Defaults to 0, * so that every read results in the read callback being invoked.

* *

Read high-water mark
* If the bufferevent's input buffer ever gets to this level, the bufferevent * stops reading until enough data is drained from the input buffer to take us * below it again. Defaults to unlimited, so that we never stop reading because * of the size of the input buffer.

* *

Write low-water mark
* Whenever a write occurs that takes us to this level or below, we invoke the write * callback. Defaults to 0, so that a write callback is not invoked unless the output * buffer is emptied.

* *

Write high-water mark
* Not used by a bufferevent directly, this watermark can have special meaning when * a bufferevent is used as the underlying transport of another bufferevent.

* *

Libevent does not invoke read callback unless there is at least lowmark * bytes in the input buffer; if the read buffer is beyond the highmark, * reading is stopped. On output, the write callback is invoked whenever * the buffered data falls below the lowmark.

* * @link https://php.net/event_buffer_watermark_set * * @param resource $bevent Valid buffered event resource. * @param int $events Any combination of EV_READ and EV_WRITE. * @param int $lowmark Low watermark. * @param int $highmark High watermark. * * @return void */ function event_buffer_watermark_set($bevent, $events, $lowmark, $highmark) {} /** *

Changes the file descriptor on which the buffered event operates.

*

(PECL libevent >= 0.0.1)

* * @link https://php.net/event_buffer_fd_set * * @param resource $bevent Valid buffered event resource. * @param resource $fd Valid PHP stream, must be castable to file descriptor. * * @return void */ function event_buffer_fd_set($bevent, $fd) {} /** *

Set or reset callbacks for a buffered event

*

(PECL libevent >= 0.0.4)

* *

Sets or changes existing callbacks for the buffered event.

* * @link https://php.net/event_buffer_set_callback * * @param resource $bevent Valid buffered event resource. * @param callable|null $readcb Callback to invoke where there is data to read, or NULL if no callback is desired. * @param callable|null $writecb Callback to invoke where the descriptor is ready for writing, or NULL if no callback is desired. * @param callable $errorcb Callback to invoke where there is an error on the descriptor, cannot be NULL. * @param mixed $arg An argument that will be passed to each of the callbacks (optional). * * @return bool returns TRUE on success or FALSE on error. */ function event_buffer_set_callback($bevent, $readcb, $writecb, $errorcb, $arg = null) {} /** *

Alias of {@link event_new}().

* * @return resource|false returns valid event base resource on success or FALSE on error. */ function event_timer_new() {} /** *

Prepares the timer event to be used in {@link event_add}().

* *

The event is prepared to call the function specified by the callback * on the timeout event (EV_TIMEOUT).

* *

After initializing the event, use {@link event_base_set}() to associate the event with its event base.

* *

In case of matching event, these three arguments are passed to the callback function: * * * * * * * * * * * * * *
$fdnull
$eventsA flag indicating the event. EV_TIMEOUT.
$argOptional parameter, previously passed to {@link event_timer_set}() as arg.
*

* * @param resource $event

* Valid event resource. *

* @param callable $callback

* Callback function to be called when the matching event occurs. *

* @param mixed $arg [optional]

* Optional callback parameter. *

* * @return void */ function event_timer_set($event, $callback, $arg = null) {} /** *

Checks if a specific event is pending or scheduled.

* * @param resource $event

* Valid event resource. *

* @param int $timeout [optional]

* Optional timeout (in microseconds). *

* * @return bool TRUE if event is not scheduled (added) FALSE otherwise */ function event_timer_pending($event, $timeout = -1) {} /** *

Alias of {@link event_add}().

* * @param resource $event

* Valid event resource. *

* @param int $timeout [optional]

* Optional timeout (in microseconds). *

* * @return bool returns TRUE on success or FALSE on error. */ function event_timer_add($event, $timeout = -1) {} /** *

Alias of {@link event_del}().

* * @param resource $event Valid event resource. * * @return bool returns TRUE on success or FALSE on error. */ function event_timer_del($event) {} // End of PECL libevent v.0.0.4 * Open a connection to a CUBRID Server * @link https://php.net/manual/en/function.cubrid-connect.php * @param string $host

* Host name or IP address of CUBRID CAS server. *

* @param int $port

* Port number of CUBRID CAS server (BROKER_PORT configured in * $CUBRID/conf/cubrid_broker.conf). *

* @param string $dbname

* Name of database. *

* @param string $userid [optional]

* User name for the database. Default value is 'PUBLIC'. *

* @param string $passwd [optional]

* User password. Default value is empty string, i.e. no * password is defined. *

* @param bool $new_link [optional]

* If a second call is made to cubrid_connect() * with the same arguments, no new link will be established, * but instead, the connection identifier of the already * opened connection will be * returned. The new_link parameter modifies this * behavior and makes cubrid_connect() always open * a new connection, even if cubrid_connect() was called * before with the same parameters. *

* @return resource|false

* a CUBRID connection identifier on success or false on failure. *

*/ function cubrid_connect($host, $port, $dbname, $userid = 'PUBLIC', $passwd = '', $new_link = false) {} /** * (PHP 5, CUBRID >= 8.3.1)
* Establish the environment for connecting to CUBRID server. * @link https://php.net/manual/en/function.cubrid-connect.php * @param string $conn_url

* A character string that contains server connection information.
* Syntax: 'CUBRID:>host<:>port<:>dbname<:>username<:>password<:?>params<'.
* E.g. CUBRID:127.0.0.1:33088:demodb:dba:123456:?autocommit=off&althost=10.34.63.132:33088&rctime=100 *

* @param string $userid [optional]

* User name for the database. Default value is 'PUBLIC'. *

* @param string $passwd [optional]

* User password. Default value is empty string, i.e. no * password is defined. *

* @param bool $new_link [optional]

* If a second call is made to cubrid_connect() * with the same arguments, no new link will be established, * but instead, the connection identifier of the already * opened connection will be * returned. The new_link parameter modifies this * behavior and makes cubrid_connect() always open * a new connection, even if cubrid_connect() was called * before with the same parameters. *

* @return resource|false

* a CUBRID connection identifier on success or false on failure. *

*/ function cubrid_connect_with_url($conn_url, $userid = 'PUBLIC', $passwd = '', $new_link = false) {} /** * (PHP 5, CUBRID >= 8.3.1)
* Open a persistent connection to a CUBRID server * @link https://php.net/manual/en/function.cubrid-pconnect.php * @param string $host

* Host name or IP address of CUBRID CAS server. *

* @param int $port

* Port number of CUBRID CAS server (BROKER_PORT configured in * $CUBRID/conf/cubrid_broker.conf). *

* @param string $dbname

* Name of database. *

* @param string $userid [optional]

* User name for the database. Default value is 'PUBLIC'. *

* @param string $passwd [optional]

* User password. Default value is empty string, i.e. no * password is defined. *

* @return resource|false

* Connection identifier, when process is successful. * FALSE, when process is unsuccessful. *

*/ function cubrid_pconnect($host, $port, $dbname, $userid = 'PUBLIC', $passwd = '') {} /** * (PHP 5, CUBRID >= 8.3.1)
* Open a persistent connection to CUBRID server * @link https://secure.php.net/manual/en/function.cubrid-pconnect-with-url.php * @param string $conn_url

* A character string that contains server connection information.
* Syntax: 'CUBRID:>host<:>port<:>dbname<:>username<:>password<:?>params<'.
* E.g. CUBRID:127.0.0.1:33088:demodb:dba:123456:?autocommit=off&althost=10.34.63.132:33088&rctime=100 *

* @param string $userid [optional]

* User name for the database. Default value is 'PUBLIC'. *

* @param string $passwd [optional]

* User password. Default value is empty string, i.e. no * password is defined. *

* @return resource|false

* Connection identifier, when process is successful. * FALSE, when process is unsuccessful. *

*/ function cubrid_pconnect_with_url($conn_url, $userid = 'PUBLIC', $passwd = '') {} /** * (PHP 5, CUBRID >= 8.3.0)
* Close CUBRID connection. Same as cubrid_disconnect(). * @link https://php.net/manual/en/function.cubrid-close.php * @param resource $conn_identifier [optional]

* The CUBRID connection identifier. If the connection * identifier is not specified, the last connection * opened by cubrid_connect() is assumed. *

* @return bool

* TRUE, when process is successful. * FALSE, when process is unsuccessful. *

*/ function cubrid_close($conn_identifier = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Close CUBRID connection. Same as cubrid_close(). * @link https://php.net/manual/en/function.cubrid-disconnect.php * @param resource $conn_identifier [optional]

* Connection identifier. *

* @return bool Returns true on success or false on failure. */ function cubrid_disconnect($conn_identifier = null) {} /** * (PHP 5, CUBRID >= 8.3.1)
* Send a CUBRID query * @link https://php.net/manual/en/function.cubrid-query.php * @param string $query

* A SQL query. Data inside the query should be properly escaped. *

* @param resource $conn_identifier [optional]

* The CUBRID connection. If the connection identifier * is not specified, the last connection opened by * cubrid_connect() is assumed. *

* @return resource|bool
  • * For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements * returning resultset, cubrid_query() returns a resource * on success, or false on error. *
  • *
  • * For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, * cubrid_query() returns true on success or false on error. *
  • *

    * The returned result resource should be passed to * cubrid_fetch_array(), and other functions for dealing * with result tables, to access the returned data. *

    *

    * Use cubrid_num_rows() to find out how many rows * were returned for a SELECT statement. *

    *

    * Use cubrid_affected_rows() to find out how many * rows were affected by a DELETE, INSERT, REPLACE, or UPDATE * statement. *

    *
  • * cubrid_query() will also fail and return false * if the user does not have permission to access the table(s) * referenced by the query. *
  • *
*/ function cubrid_query($query, $conn_identifier = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Execute a prepared SQL statement * @link https://php.net/manual/en/function.cubrid-execute.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $sql

* SQL to be executed. *

* @param int $option [optional]

* Query execution option CUBRID_INCLUDE_OID, CUBRID_ASYNC, * CUBRID_EXEC_QUERY_ALL. *

* @return resource|bool

* Request identifier, when process is successful, * or FALSE, when process is unsuccessful. *

*/ function cubrid_execute($conn_identifier, $sql, $option = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Execute a prepared SQL statement * @link https://php.net/manual/en/function.cubrid-execute.php * @param resource $request_identifier

* cubrid_prepare() identifier. *

* @param int $option [optional]

* Query execution option CUBRID_INCLUDE_OID, CUBRID_ASYNC, * CUBRID_EXEC_QUERY_ALL. *

* @return bool

* TRUE, when process is successful. FALSE, when * process is unsuccessful. *

*/ function cubrid_execute($request_identifier, $option = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Bind variables to a prepared statement as parameters * @link https://php.net/manual/en/function.cubrid-bind.php * @param resource $req_identifier

* Request identifier as a result of cubrid_prepare(). *

* @param int $bind_index

* Location of binding parameters. It starts with 1. *

* @param mixed $bind_value

* Actual value for binding. *

* @param string $bind_value_type [optional]

* A type of the value to bind. (It is omitted by default. Thus, system * internally use string by default. However, you need to specify the * exact type of the value as an argument when * they are NCHAR, BIT, or BLOB/CLOB). *

*

* The following bind types are supported: * "STRING", "NCHAR", "BIT", "NUMERIC", "NUMBER", "FLOAT", "DOUBLE", * "TIME", "DATE", "TIMESTAMP", "OBJECT", "BLOB", "CLOB", "NULL". *

* @return bool TRUE, when process is successful, otherwise FALSE. */ function cubrid_bind($req_identifier, $bind_index, $bind_value, $bind_value_type = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Close the request handle. Same as cubrid_close_request(). * @link https://php.net/manual/en/function.cubrid-close-prepare.php * @param resource $req_identifier

* Request identifier. *

* @return bool TRUE, when process is successful, otherwise FALSE. */ function cubrid_close_prepare($req_identifier) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Close the request handle. Same as cubrid_close_prepare(). * @link https://php.net/manual/en/function.cubrid-close-request.php * @param resource $req_identifier

* Request identifier. *

* @return bool TRUE, when process is successful, or FALSE. */ function cubrid_close_request($req_identifier) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get contents of collection type column using OID * @link https://php.net/manual/en/function.cubrid-col-get.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance that you want to read. *

* @param string $attr_name

* Attribute name that you want to read from the instance. *

* @return array
  • * Array (0-based numerical array) containing the * elements requested, when process is successful; *
  • *
  • * FALSE (to distinguish the error from the situation of * attribute having empty collection; * or NULL, in case of error, a warning message is shown; * in such case you can check the error by using * cubrid_error_code()), when process is unsuccessful. *
  • *
*/ function cubrid_col_get($conn_identifier, $oid, $attr_name) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get the number of elements in collection type column using OID * @link https://php.net/manual/en/function.cubrid-col-size.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance that you want to read. *

* @param string $attr_name

* Attribute name that you want to read from the instance. *

* @return int

* Number of elements, when process is successful. * FALSE, when process is unsuccessful. *

*/ function cubrid_col_size($conn_identifier, $oid, $attr_name) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Perform a query without fetching the results into memory * @link https://php.net/manual/en/function.cubrid-unbuffered-query.php * @param string $query

* The SQL query to execute. *

* @param resource $conn_identifier [optional]

* The CUBRID connection. If the connection identifier is not * specified, the last connection opened by cubrid_connect() is assumed. *

* @return resource|bool

* For SELECT, SHOW, DESCRIBE or EXPLAIN statements, * cubrid_unbuffered_query() returns a resource on success, or false on * error. *

*

* For other type of SQL statements, UPDATE, DELETE, DROP, etc, * cubrid_unbuffered_query returns true on success * or false on error. *

*/ function cubrid_unbuffered_query($query, $conn_identifier = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return an array with the list of all existing CUBRID databases * @link https://php.net/manual/en/function.cubrid-list-dbs.php * @param resource $conn_identifier [optional]

* The CUBRID connection. *

* @return array

* a numeric array with all existing CUBRID databases on success, * or false on failure. *

*/ function cubrid_list_dbs($conn_identifier) {} /** * (PHP 5, CUBRID >= 8.3.1)
* Get the error message. Same as cubrid_error_msg(); * @link https://php.net/manual/en/function.cubrid-error.php * @param resource $connection [optional]

* The CUBRID connection. *

* @return string

* Error message that occurred. *

*/ function cubrid_error($connection = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get last error message for the most recent function call. * Same as cubrid_error(); * @link https://php.net/manual/en/function.cubrid-error-msg.php * @return string

* Error message that occurred. *

*/ function cubrid_error_msg() {} /** * (PHP 5, CUBRID >= 8.3.1)
* Returns the numerical value of the error message from previous * CUBRID operation. Same as cubrid_error_code(); * @link https://php.net/manual/en/function.cubrid-errno.php * @param resource $conn_identifier [optional]

* The CUBRID connection identifier. If the connection * identifier is not specified, the last connection * opened by cubrid_connect() is assumed. *

* @return int

* the error number from the last CUBRID function, or * 0 (zero) if no error occurred. *

*/ function cubrid_errno($conn_identifier = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get error code for the most recent function call. * Same as cubrid_errno(); * @link https://php.net/manual/en/function.cubrid-error-code.php * @return int

* Error code of the error that occurred, or * 0 (zero) if no error occurred. *

*/ function cubrid_error_code() {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return the number of rows affected by the last SQL statement * @link https://php.net/manual/en/function.cubrid-affected-rows.php * @param resource $conn_identifier [optional]

* The CUBRID connection. If the connection identifier is not * specified, the last link opened by cubrid_connect() is assumed. *

* @return int

* the number of affected rows on success, * or -1, when SQL statement is not INSERT, DELETE or UPDATE, * or FALSE, when the request identifier is not specified, * and there is no last request. *

*/ function cubrid_affected_rows($conn_identifier = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return the ID generated for the last updated AUTO_INCREMENT column * @link https://php.net/manual/en/function.cubrid-insert-id.php * @param resource $conn_identifier [optional]

* The connection identifier previously obtained by a call * to cubrid_connect(). *

* @return string

* A string representing the ID generated for an AUTO_INCREMENT column * by the previous query, on success. 0, if the previous query does * not generate new rows. FALSE on failure. *

*/ function cubrid_insert_id($conn_identifier = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return the value of a specific field in a specific row * @link https://php.net/manual/en/function.cubrid-result.php * @param resource $result * @param int $row

* The row number from the result that's being retrieved. Row numbers * start at 0. *

* @param mixed $field [optional]

* The name or offset of the field being retrieved. *

*

* It can be the field's offset, the field's name, or the field's table * dot field name (tablename.fieldname). If the column name has been * aliased ('select foo as bar from...'), use the alias instead of the * column name. If undefined, the first field is retrieved. *

* @return string

* Value of a specific field, on success (NULL if value if null). * FALSE on failure. *

*/ function cubrid_result($result, $row, $field = 0) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get the number of rows in the result set * @link https://php.net/manual/en/function.cubrid-num-rows.php * @param resource $result

* result comes from a call to cubrid_execute(), * cubrid_query() and cubrid_prepare() *

* @return int

* Number of rows, when process is successful. * 0 when the query was done in async mode. * -1, if SQL statement is not SELECT. * FALSE when process is unsuccessful. *

*/ function cubrid_num_rows($result) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return the number of columns in the result set * @link https://php.net/manual/en/function.cubrid-num-cols.php * @param resource $result

* Result. *

* @return int

* Number of columns, when process is successful. * FALSE, if SQL statement is not SELECT. *

*/ function cubrid_num_cols($result) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return the number of columns in the result set * @link https://php.net/manual/en/function.cubrid-num-fields.php * @param resource $result

* result comes from a call to cubrid_execute(), * cubrid_query() and cubrid_prepare() *

* @return int

* Number of columns, on success. * -1 if SQL sentence is not SELECT. * FALSE when process is unsuccessful. *

*/ function cubrid_num_fields($result) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Fetch the next row from a result set * @link https://php.net/manual/en/function.cubrid-fetch.php * @param resource $result

* result comes from a call to cubrid_execute() *

* @param int $type [optional]

* Array type of the fetched result CUBRID_NUM, * CUBRID_ASSOC, CUBRID_BOTH, CUBRID_OBJECT. If you want to * operate the lob object, you can use CUBRID_LOB. *

* @return mixed *
    *
  • array or object, when process is successful.
  • *
  • FALSE, when there are no more rows;
  • *
  • NULL, when process is unsuccessful.
  • *
*

* The result can be received either as an array or as an object, * and you can decide which data type to use by setting the type * argument. The type variable can be set to one of the following * values: *

*
    *
  • CUBRID_NUM : Numerical array (0-based)
  • *
  • CUBRID_ASSOC : Associative array
  • *
  • CUBRID_BOTH : Numerical & Associative array (default)
  • *
  • CUBRID_OBJECT : object that has the attribute name as the * column name of query result
  • *
*

* When type argument is omitted, the result will be received using * CUBRID_BOTH option as default. When you want to receive query * result in object data type, the column name of the result must * obey the naming rules for identifiers in PHP. For example, * column name such as "count(*)" cannot be received in object type. *

*/ function cubrid_fetch($result, $type = CUBRID_BOTH) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return a numerical array with the values of the current row * @link https://php.net/manual/en/function.cubrid-fetch-row.php * @param resource $result

* result comes from a call to cubrid_execute() *

* @param int $type

* Type can only be CUBRID_LOB, this parameter will be * used only when you need to operate the lob object. *

* @return array

* A numerical array, when process is successful. * FALSE, when there are no more rows; * NULL, when process is unsuccessful. *

*/ function cubrid_fetch_row($result, $type = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Fetch a result row as an associative array, a numeric array, or both * @link https://php.net/manual/en/function.cubrid-fetch-array.php * @param resource $result * @param int $type [optional]

* The type of array that is to be fetched. It's a constant and can * take the following values: CUBRID_ASSOC, CUBRID_NUM, and CUBRID_BOTH. *

* @return array

* Returns an array of strings that corresponds to the fetched row, * when process is successful. * FALSE, when there are no more rows; * NULL, when process is unsuccessful. *

*

* The type of returned array depends on how result_type is defined. * By using CUBRID_BOTH (default), you'll get an array with both * associative and number indices, and you can decide which data * type to use by setting the type argument. The type variable can * be set to one of the following values: *

*
    *
  • CUBRID_NUM : Numerical array (0-based)
  • *
  • CUBRID_ASSOC : Associative array
  • *
  • CUBRID_BOTH : Numerical & Associative array (default)
  • *
*/ function cubrid_fetch_array($result, $type = CUBRID_BOTH) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return the associative array that corresponds to the fetched row * @link https://php.net/manual/en/function.cubrid-fetch-assoc.php * @param resource $result

* result comes from a call to cubrid_execute() *

* @param int $type [optional]

* Type can only be CUBRID_LOB, this parameter will be used * only when you need to operate the lob object. *

* @return array

* Associative array, when process is successful. * FALSE, when there are no more rows; * NULL, when process is unsuccessful. *

*/ function cubrid_fetch_assoc($result, $type = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Fetch the next row and return it as an object * @link https://php.net/manual/en/function.cubrid-fetch-object.php * @param resource $result

* result comes from a call to cubrid_execute() *

* @param string $class_name [optional]

* The name of the class to instantiate. If not specified, * a stdClass (stdClass is PHP's generic empty class that's * used when casting other types to objects) object is returned. *

* @param array $params [optional]

* An optional array of parameters to pass to the constructor * for class_name objects. *

* @param int $type [optional]

* Type can only be CUBRID_LOB, this parameter will be used * only when you need to operate the lob object. *

* @return object

* an object with string properties * that correspond to the fetched row, or false if there * are no more rows, or NULL, when process is unsuccessful. *

*/ function cubrid_fetch_object($result, $class_name = null, $params = null, $type = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Move the internal row pointer of the CUBRID result * @link https://php.net/manual/en/function.cubrid-data-seek.php * @param resource $result

* The result. *

* @param int $row_number

* The desired row number of the new result pointer. *

* @return bool

* Returns TRUE on success or FALSE on failure. *

*/ function cubrid_data_seek($result, $row_number) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return an array with the lengths of the values of * each field from the current row * @link https://php.net/manual/en/function.cubrid-fetch-lengths.php * @param resource $result

* result comes from a call to cubrid_execute() *

* @return array

* A numerical array of lengths on success, * or false on failure. *

*/ function cubrid_fetch_lengths($result) {} /** * (PHP 5, CUBRID >= 8.3.1)
* Get column information from a result and return as an object * @link https://php.net/manual/en/function.cubrid-fetch-field.php * @param resource $result

* result comes from a call to cubrid_execute() *

* @param int $field_offset [optional]

* The numerical field offset. If the field offset is not specified, the * next field that was not yet retrieved by this function is retrieved. * The field_offset starts at 0. *

* @return object

* an object containing field information. The properties * of the object are: *

*
    *
  • name - column name
  • *
  • table - name of the table the column belongs to
  • *
  • def - default value of the column
  • *
  • max_length - maximum length of the column
  • *
  • not_null - 1 if the column cannot be NULL
  • *
  • primary_key - 1 if the column is a primary key
  • *
  • unique_key - 1 if the column is a unique key
  • *
  • multiple_key - 1 if the column is a non-unique key
  • *
  • numeric - 1 if the column is numeric
  • *
  • blob - 1 if the column is a BLOB
  • *
  • type - the type of the column
  • *
  • unsigned - 1 if the column is unsigned
  • *
  • zerofill - 1 if the column is zero-filled
  • *
*/ function cubrid_fetch_field($result, $field_offset = 0) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get the column names in result * @link https://php.net/manual/en/function.cubrid-column-names.php * @param resource $req_identifier

* Request identifier. *

* @return array

* Array of string which containing column names, * when process is successful. FALSE, when process is unsuccessful. *

*/ function cubrid_column_names($req_identifier) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get column types in result * @link https://php.net/manual/en/function.cubrid-column-names.php * @param resource $req_identifier

* Request identifier. *

* @return array

* Array of string which containing column types, * when process is successful. FALSE, when process is unsuccessful. *

*/ function cubrid_column_types($req_identifier) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Move the result set cursor to the specified field offset * @link https://php.net/manual/en/function.cubrid-field-seek.php * @param resource $result

* result comes from a call to cubrid_execute() *

* @param int $field_offset

* The numerical field offset. The field_offset starts at 0. * If field_offset does not exist, an error of level * E_WARNING is also issued. *

* @return bool

* Returns true on success or false on failure. *

*/ function cubrid_field_seek($result, $field_offset) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Free the memory occupied by the result data * @link https://php.net/manual/en/function.cubrid-free-result.php * @param resource $req_identifier

* Request identifier. *

* @return bool

* Returns true on success or false on failure. *

*

* Note that it can only free the client fetch buffer now, * and if you want to free all the memory, use function * cubrid_close_request(). *

*/ function cubrid_free_result($req_identifier) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return the name of the specified field index * @link https://php.net/manual/en/function.cubrid-field-name.php * @param resource $result

* result comes from a call to cubrid_execute() *

* @param int $field_offset

* The field_offset starts at 0. If field_offset does not exist, * an error of level E_WARNING is also issued. *

* @return string

* The name of the specified field index on * success or false on failure. *

*/ function cubrid_field_name($result, $field_offset) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return the name of the table of the specified field * @link https://php.net/manual/en/function.cubrid-field-table.php * @param resource $result

* result comes from a call to cubrid_execute() *

* @param int $field_offset

* The field_offset starts at 0. If field_offset does not exist, * an error of level E_WARNING is also issued. *

* @return string

* The name of the table on success, * FALSE when field_offset value is invalid, or * -1 if SQL sentence is not SELECT. *

*/ function cubrid_field_table($result, $field_offset) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get the maximum length of the specified field * @link https://php.net/manual/en/function.cubrid-field-len.php * @param resource $result

* result comes from a call to cubrid_execute() *

* @param int $field_offset

* The field_offset starts at 0. If field_offset does not exist, * an error of level E_WARNING is also issued. *

* @return int

* Maximum length, when process is successful. FALSE on failure. *

*/ function cubrid_field_len($result, $field_offset) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return the type of the column corresponding to the given field offset * @link https://php.net/manual/en/function.cubrid-field-type.php * @param resource $result

* result comes from a call to cubrid_execute() *

* @param int $field_offset

* The field_offset starts at 0. If field_offset does not exist, * an error of level E_WARNING is also issued. *

* @return string

* On success the returned field type will be one of * "int", "real", "string", "blob", and others as * detailed in the CUBRID documentation. Otherwise, FALSE * when invalid field_offset value, or -1 if SQL sentence * is not SELECT. *

*/ function cubrid_field_type($result, $field_offset) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return a string with the flags of the given field offset * @link https://php.net/manual/en/function.cubrid-field-flags.php * @param resource $result

* result comes from a call to cubrid_execute() *

* @param int $field_offset

* The numerical field offset. The field_offset starts at 0. * If field_offset does not exist, an error of level * E_WARNING is also issued. *

* @return string

* a string of flags associated with the result, * or FALSE when invalid field_offset value, or -1 if SQL sentence * is not SELECT. *

*

* The following flags are reported, if your version of CUBRID * is current enough to support them: "not_null", "primary_key", * "unique_key", "foreign_key", "auto_increment", "shared", * "reverse_index", "reverse_unique", and "timestamp". *

*/ function cubrid_field_flags($result, $field_offset) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Escapes special characters in a string for use in an SQL statement * @link https://php.net/manual/en/function.cubrid-real-escape-string.php * @param string $unescaped_string

* The string that is to be escaped. *

* @param resource $conn_identifier [optional]

* The CUBRID connection. If the connection identifier is not * specified, the last connection opened by cubrid_connect() is assumed. *

* @return string

* Escaped string version of the given string, on success. * FALSE on failure. *

*/ function cubrid_real_escape_string($unescaped_string, $conn_identifier = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return the current CUBRID connection charset * @link https://php.net/manual/en/function.cubrid-client-encoding.php * @param resource $conn_identifier [optional]

* The CUBRID connection. If the connection identifier is not * specified, the last link opened by cubrid_connect() is assumed. *

* @return string

* A string that represents the CUBRID connection charset; on success. * FALSE on failure. *

*/ function cubrid_client_encoding($conn_identifier = null) {} /** * (PHP 5, CUBRID >= 8.3.1)
* Ping a server connection or reconnect if there is no connection * @link https://php.net/manual/en/function.cubrid-ping.php * @param resource $conn_identifier [optional]

* The CUBRID connection identifier. If the connection identifier * is not specified, the last connection opened by * cubrid_connect() is assumed. *

* @return bool

* true if the connection to the server is working, * otherwise false. *

*/ function cubrid_ping($conn_identifier = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return the client library version * @link https://php.net/manual/en/function.cubrid-get-client-info.php * @return string

* A string that represents the client library version; on success. * FALSE on failure. *

*/ function cubrid_get_client_info() {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return the CUBRID server version * @link https://php.net/manual/en/function.cubrid-get-server-info.php * @param resource $conn_identifier * @return string

* A string that represents the CUBRID server version; on success. * FALSE on failure. *

*/ function cubrid_get_server_info($conn_identifier) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Returns the CUBRID database parameters * @link https://secure.php.net/manual/en/function.cubrid-get-db-parameter.php * @param resource $conn_identifier

* Connection identifier. *

* @return array

* An associative array with CUBRID database parameters; on success. * FALSE on failure. *

*/ function cubrid_get_db_parameter($conn_identifier) {} /** * (PHP 5, CUBRID >= 8.4.0)
* Get auto-commit mode of the connection * @link https://php.net/manual/en/function.cubrid-get-autocommit.php * @param resource $conn_identifier

* Connection identifier. *

* @return bool

* TRUE, if autocommit is set to true. FALSE otherwise. * NULL on error. *

*/ function cubrid_get_autocommit($conn_identifier) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Return the current CUBRID connection charset * @link https://secure.php.net/manual/en/function.cubrid-get-charset.php * @param resource $conn_identifier

* Connection identifier. *

* @return string

* A string that represents the CUBRID connection charset; on success. * FALSE on failure. *

*/ function cubrid_get_charset($conn_identifier) {} /** * (PHP 5, CUBRID >= 8.4.0)
* Set auto-commit mode of the connection * @link https://php.net/manual/en/function.cubrid-set-autocommit.php * @param resource $conn_identifier

* Connection identifier. *

* @param bool $mode

* Auto-commit mode. The following constants can be used: * CUBRID_AUTOCOMMIT_FALSE, CUBRID_AUTOCOMMIT_TRUE *

* @return bool

* TRUE, when process is successful. FALSE, when * process is unsuccessful. *

*/ function cubrid_set_autocommit($conn_identifier, $mode) {} /** * (PHP 5, CUBRID >= 8.3.1)
* Get db name from results of cubrid_list_dbs * @link https://php.net/manual/en/function.cubrid-db-name.php * @param array $result

* The result pointer from a call to cubrid_list_dbs. *

* @param int $index

* The index into the result set. *

* @return string

* the database name on success, and false on failure. If false * is returned, use cubrid_error() to determine the nature * of the error. *

*/ function cubrid_db_name($result, $index) {} /** * (PHP 5, CUBRID >= 8.3.1)
* Get result data * @link https://php.net/manual/en/function.cubrid-db-parameter.php * @param resource $conn_identifier

* The CUBRID connection. If the connection identifier is not specified, * the last link opened by cubrid_connect() is assumed. *

* @return array

* An associative array with CUBRID database * parameters; on success. FALSE on failure. *

*/ function cubrid_db_parameter($conn_identifier) {} /** * (PHP 5, CUBRID >= 8.4.0)
* Sets the CUBRID database parameters * @link https://php.net/manual/en/function.cubrid-set-db-parameter.php * @param resource $conn_identifier

* The CUBRID connection. If the connection identifier is not specified, * the last link opened by cubrid_connect() is assumed. *

* @param int $param_type

* Database parameter type. Can be PARAM_ISOLATION_LEVEL, * or PARAM_LOCK_TIMEOUT. *

* @param int $param_value

* Isolation level value (1-6) or lock timeout (in seconds) value. *

* @return bool

* TRUE on success. FALSE on failure. *

*/ function cubrid_set_db_parameter($conn_identifier, $param_type, $param_value) {} /** * (PHP 5, CUBRID >= 8.4.1)
* Get the query timeout value of the request * @link https://php.net/manual/en/function.cubrid-get-query-timeout.php * @param resource $req_identifier

* Request identifier. *

* @return int

* Success: the query timeout value of the current request. * Units of msec. Failure: FALSE *

*/ function cubrid_get_query_timeout($req_identifier) {} /** * (PHP 5, CUBRID >= 8.4.1)
* Set the query timeout value of the request * @link https://php.net/manual/en/function.cubrid-set-query-timeout.php * @param resource $req_identifier

* Request identifier. *

* @param int $timeout

* Timeout time, unit of msec. *

* @return bool

* TRUE, when process is successful. FALSE, when * process is unsuccessful. *

*/ function cubrid_set_query_timeout($req_identifier, $timeout) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get the class name using OID * @link https://php.net/manual/en/function.cubrid-tablename.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance that you want to check the existence. * To get the current OID of the request, use * cubrid_current_oid() function. *

* @return string

* Class name when process is successful. * FALSE, when process is unsuccessful. *

*/ function cubrid_get_class_name($conn_identifier, $oid) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get a column using OID * @link https://php.net/manual/en/function.cubrid-get.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance that you want to read. * To get the current OID of the request, use * cubrid_current_oid() function. *

* @param mixed $attr [optional]

* Name of the attribute that you want to read. *

* @return mixed

* Content of the requested attribute, * when process is successful; When attr is set with string * data type, the result is returned as a string; when attr is * set with array data type (0-based numerical array), then the * result is returned in associative array. When attr is omitted, * then all attributes are received in array form. *

*

* FALSE when process is unsuccessful or result is NULL * (If error occurs to distinguish empty string from NULL, * then it prints the warning message. You can check the * error by using cubrid_error_code()). *

*/ function cubrid_get($conn_identifier, $oid, $attr = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Check whether the instance pointed by OID exists * @link https://php.net/manual/en/function.cubrid-is-instance.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance that you want to check the existence. * To get the current OID of the request, use * cubrid_current_oid() function. *

* @return int

* 1, if such instance exists; 0, if such instance * does not exist; -1, in case of error *

*/ function cubrid_is_instance($conn_identifier, $oid) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Commit a transaction * @link https://php.net/manual/en/function.cubrid-commit.php * @param resource $conn_identifier

* Connection identifier. *

* @return bool

* TRUE, when process is successful. FALSE, when * process is unsuccessful. *

*/ function cubrid_commit($conn_identifier) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Roll back a transaction * @link https://php.net/manual/en/function.cubrid-rollback.php * @param resource $conn_identifier

* Connection identifier. *

* @return bool

* TRUE, when process is successful. FALSE, when * process is unsuccessful. *

*/ function cubrid_rollback($conn_identifier) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get OID of the current cursor location * @link https://php.net/manual/en/function.cubrid-commit.php * @param resource $req_identifier

* Request identifier. *

* @return string

* OID of current cursor location, when process * is successful. FALSE, when process is unsuccessful. *

*/ function cubrid_current_oid($req_identifier) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Delete an instance using OID * @link https://php.net/manual/en/function.cubrid-commit.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance that you want to delete. *

* @return bool

* TRUE, when process is successful. FALSE, * when process is unsuccessful. *

*/ function cubrid_drop($conn_identifier, $oid) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get the facility code of error * @link https://php.net/manual/en/function.cubrid-error-code-facility.php * @return int

* Facility code of the error code that occurred: * CUBRID_FACILITY_DBMS, CUBRID_FACILITY_CAS, * CUBRID_FACILITY_CCI, CUBRID_FACILITY_CLIENT *

*/ function cubrid_error_code_facility() {} /** * (PHP 5, CUBRID >= 8.3.1)
* Close BLOB/CLOB data * @link https://php.net/manual/en/function.cubrid-lob-close.php * @param array $lob_identifier_array

* LOB identifier array return from cubrid_lob_get(). *

* @return bool

* TRUE, when process is successful. * FALSE, when process is unsuccessful. *

*/ function cubrid_lob_close($lob_identifier_array) {} /** * (PHP 5, CUBRID >= 8.3.1)
* Export BLOB/CLOB data to file * @link https://php.net/manual/en/function.cubrid-lob-export.php * @param resource $conn_identifier

* Connection identifier. *

* @param resource $lob_identifier

* LOB identifier. *

* @param string $path_name

* Path name of the file. *

* @return bool

* TRUE, when process is successful. * FALSE, when process is unsuccessful. *

*/ function cubrid_lob_export($conn_identifier, $lob_identifier, $path_name) {} /** * (PHP 5, CUBRID >= 8.3.1)
* cubrid_lob_get() is used to get BLOB/CLOB meta info from * CUBRID database. CUBRID gets BLOB/CLOB by executing the SQL statement, * and returns all LOBs as a resource array. Be sure that the SQL * retrieves only one column and its data type is BLOB or CLOB. * Remember to use cubrid_lob_close() to release the LOBs if you * don't need it any more. * @link https://php.net/manual/en/function.cubrid-lob-get.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $sql

* SQL statement to be executed. *

* @return array

* Return an array of LOB resources, when process * is successful. FALSE, when process is unsuccessful. *

*/ function cubrid_lob_get($conn_identifier, $sql) {} /** * (PHP 5, CUBRID >= 8.3.1)
* Read BLOB/CLOB data and send straight to browser * @link https://php.net/manual/en/function.cubrid-lob-send.php * @param resource $conn_identifier

* Connection identifier. *

* @param resource $lob_identifier

* LOB identifier. *

* @return bool

* TRUE, when process is successful. FALSE, when * process is unsuccessful. *

*/ function cubrid_lob_send($conn_identifier, $lob_identifier) {} /** * (PHP 5, CUBRID >= 8.3.1)
* Get BLOB/CLOB data size * @link https://php.net/manual/en/function.cubrid-lob-size.php * @param resource $lob_identifier

* LOB identifier. *

* @return string

* A string representing LOB data size, when * process is successful. FALSE, when process is unsuccessful. *

*/ function cubrid_lob_size($lob_identifier) {} /** * (PHP 5, CUBRID >= 8.4.1)
* Bind a lob object or a string as a lob object to a * prepared statement as parameters. * @link https://secure.php.net/manual/en/function.cubrid-lob2-bind.php * @param resource $req_identifier

* Reqeust identifier. *

* @param int $bind_index

* Location of binding parameters. It starts with 1. *

* @param mixed $bind_value

* Actual value for binding. *

* @param string $bind_value_type [optional]

* It must be "BLOB" or "CLOB" and it won't be case-sensitive. * If it not be given, the default value is "BLOB". *

* @return bool

* TRUE, when process is successful. * FALSE, when process is unsuccessful. *

*/ function cubrid_lob2_bind($req_identifier, $bind_index, $bind_value, $bind_value_type = null) {} /** * (PHP 5, CUBRID >= 8.4.1)
* Close BLOB/CLOB data * @link https://php.net/manual/en/function.cubrid-lob2-close.php * @param resource $lob_identifier

* Lob identifier as a result of cubrid_lob2_new() * or get from the result set. *

* @return bool

* TRUE, on success. * FALSE, on failure. *

*/ function cubrid_lob2_close($lob_identifier) {} /** * (PHP 5, CUBRID >= 8.4.1)
* Export the lob object to a file. * @link https://php.net/manual/en/function.cubrid-lob2-export.php * @param resource $lob_identifier

* Lob identifier as a result of cubrid_lob2_new() or get * from the result set. *

* @param string $file_name

* File name you want to store BLOB/CLOB data. * It also supports the path of the file. *

* @return bool

* TRUE if the process is successful and FALSE for failure. *

*/ function cubrid_lob2_export($lob_identifier, $file_name) {} /** * (PHP 5, CUBRID >= 8.4.1)
* Import the lob object from a file. * @link https://php.net/manual/en/function.cubrid-lob2-import.php * @param resource $lob_identifier

* Lob identifier as a result of cubrid_lob2_new() or get * from the result set. *

* @param string $file_name

* File name you want to import BLOB/CLOB data. * It also supports the path of the file. *

* @return bool

* TRUE if the process is successful and FALSE for failure. *

*/ function cubrid_lob2_import($lob_identifier, $file_name) {} /** * (PHP 5, CUBRID >= 8.4.1)
* Create a lob object. * @link https://php.net/manual/en/function.cubrid-lob2-new.php * @param resource $conn_identifier [optional]

* Connection identifier. If the connection identifier is * not specified, the last connection opened by * cubrid_connect() or cubrid_connect_with_url() is assumed. *

* @param string $type [optional]

* It may be "BLOB" or "CLOB", it won't be case-sensitive. * The default value is "BLOB". *

* @return resource|false

* Lob identifier when it is successful. FALSE on failure. *

*/ function cubrid_lob2_new($conn_identifier = null, $type = "BLOB") {} /** * (PHP 5, CUBRID >= 8.4.1)
* Read from BLOB/CLOB data. * @link https://php.net/manual/en/function.cubrid-lob2-read.php * @param resource $lob_identifier

* Lob identifier as a result of cubrid_lob2_new() or get * from the result set. *

* @param int $len

* Length from buffer you want to read from the lob data. *

* @return string

* Returns the contents as a string. * FALSE when there is no more data. * NULL on failure. *

*/ function cubrid_lob2_read($lob_identifier, $len) {} /** * (PHP 5, CUBRID >= 8.4.1)
* Move the cursor of a lob object. * @link https://php.net/manual/en/function.cubrid-lob2-seek64.php * @param resource $lob_identifier

* Lob identifier as a result of cubrid_lob2_new() or get * from the result set. *

* @param string $offset

* Number of units you want to move the cursor. *

* @param int $origin [optional]

* This parameter can be the following values: *

*
    *
  • CUBRID_CURSOR_FIRST: move forward from the first * beginning.
  • *
  • CUBRID_CURSOR_CURRENT: move forward or backward * from the current position.
  • *
  • CUBRID_CURSOR_LAST: move backward at the end of LOB object.
  • *
* @return bool

* TRUE if the process is successful and FALSE for failure. *

*/ function cubrid_lob2_seek64($lob_identifier, $offset, $origin = CUBRID_CURSOR_CURRENT) {} /** * (PHP 5, CUBRID >= 8.4.1)
* Move the cursor of a lob object. * @link https://php.net/manual/en/function.cubrid-lob2-seek.php * @param resource $lob_identifier

* Lob identifier as a result of cubrid_lob2_new() or get * from the result set. *

* @param int $offset

* Number of units you want to move the cursor. *

* @param int $origin [optional]

* This parameter can be the following values: *

*
    *
  • CUBRID_CURSOR_FIRST: move forward from the first * beginning.
  • *
  • CUBRID_CURSOR_CURRENT: move forward or backward * from the current position.
  • *
  • CUBRID_CURSOR_LAST: move backward at the end of LOB object.
  • *
* @return bool

* TRUE if the process is successful and FALSE for failure. *

*/ function cubrid_lob2_seek($lob_identifier, $offset, $origin = CUBRID_CURSOR_CURRENT) {} /** * (PHP 5, CUBRID >= 8.4.1)
* Get a lob object's size. * @link https://php.net/manual/en/function.cubrid-lob2-size64.php * @param resource $lob_identifier

* Lob identifier as a result of cubrid_lob2_new() or get * from the result set. *

* @return string

* It will return the size of the LOB object as a string * when it processes successfully. FALSE on failure. *

*/ function cubrid_lob2_size64($lob_identifier) {} /** * (PHP 5, CUBRID >= 8.4.1)
* Get a lob object's size. * @link https://php.net/manual/en/function.cubrid-lob2-size.php * @param resource $lob_identifier

* Lob identifier as a result of cubrid_lob2_new() or get * from the result set. *

* @return int

* It will return the size of the LOB object as a string * when it processes successfully. FALSE on failure. *

*/ function cubrid_lob2_size($lob_identifier) {} /** * (PHP 5, CUBRID >= 8.4.1)
* Tell the cursor position of the LOB object. * @link https://php.net/manual/en/function.cubrid-lob2-tell64.php * @param resource $lob_identifier

* Lob identifier as a result of cubrid_lob2_new() or get * from the result set. *

* @return string

* It will return the cursor position on the LOB object as a * string when it processes successfully. FALSE on failure. *

*/ function cubrid_lob2_tell64($lob_identifier) {} /** * (PHP 5, CUBRID >= 8.4.1)
* Tell the cursor position of the LOB object. * @link https://php.net/manual/en/function.cubrid-lob2-tell.php * @param resource $lob_identifier

* Lob identifier as a result of cubrid_lob2_new() or get * from the result set. *

* @return int

* It will return the cursor position on the LOB object as a * string when it processes successfully. FALSE on failure. *

*/ function cubrid_lob2_tell($lob_identifier) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Set a read lock on the given OID * @link https://php.net/manual/en/function.cubrid-lock-read.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance that you want to put read lock on. *

* @return bool

* TRUE, when process is successful. FALSE, when * process is unsuccessful. *

*/ function cubrid_lock_read($conn_identifier, $oid) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Set a write lock on the given OID * @link https://php.net/manual/en/function.cubrid-lock-write.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance that you want to put write lock on. *

* @return bool

* TRUE, when process is successful. FALSE, when * process is unsuccessful. *

*/ function cubrid_lock_write($conn_identifier, $oid) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Move the cursor in the result * @link https://php.net/manual/en/function.cubrid-move-cursor.php * @param resource $req_identifier

* Request identifier. *

* @param int $offset

* Number of units you want to move the cursor. *

* @param int $origin [optional]

* Location where you want to move the cursor from * CUBRID_CURSOR_FIRST, CUBRID_CURSOR_CURRENT, CUBRID_CURSOR_LAST. *

* @return int

* CUBRID_CURSOR_SUCCESS, when process is successful. * CUBRID_NO_MORE_DATA, when it is not a valid cursor location. * CUBRID_CURSOR_ERROR, in case of error. *

*/ function cubrid_move_cursor($req_identifier, $offset, $origin = CUBRID_CURSOR_CURRENT) {} /** * (PHP 5, CUBRID >= 8.4.0)
* Get result of next query when executing multiple SQL statements * @link https://php.net/manual/en/function.cubrid-next-result.php * @param resource $result

* result comes from a call to cubrid_execute(). *

* @return bool

* TRUE, when process is successful. FALSE, when * process is unsuccessful. *

*/ function cubrid_next_result($result) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Prepare an SQL statement for execution * @link https://php.net/manual/en/function.cubrid-prepare.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $prepare_stmt

* Prepare query. *

* @param int $option [optional]

* OID return option CUBRID_INCLUDE_OID. *

* @return resource|false

* Request identifier, if process is successful; * FALSE, if process is unsuccessful. *

*/ function cubrid_prepare($conn_identifier, $prepare_stmt, $option = 0) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Update a column using OID * @link https://php.net/manual/en/function.cubrid-put.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance that you want to update. *

* @param string $attr [optional]

* Name of the attribute that you want to update. *

* @param mixed $value

* New value that you want to assign to the attribute. *

* @return bool

* TRUE, when process is successful. * FALSE, when process is unsuccessful. *

*/ function cubrid_put($conn_identifier, $oid, $attr = null, $value) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get the requested schema information * @link https://php.net/manual/en/function.cubrid-schema.php * @param resource $conn_identifier

* Connection identifier. *

* @param int $schema_type

* Schema data that you want to know. *

* @param string $class_name [optional]

* Table you want to know the schema of. *

* @param string $attr_name [optional]

* Attribute you want to know the schema of. *

* @return array

* Array containing the schema information, * when process is successful; FALSE, when process is * unsuccessful. *

*/ function cubrid_schema($conn_identifier, $schema_type, $class_name = null, $attr_name = null) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Delete an element from sequence type column using OID * @link https://php.net/manual/en/function.cubrid-seq-drop.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance you want to work with. *

* @param string $attr_name

* Name of the attribute that you want to delete an element from. *

* @param int $index

* Index of the element that you want to delete (1-based). *

* @return bool

* TRUE, when process is successful. FALSE, * when process is unsuccessful. *

*/ function cubrid_seq_drop($conn_identifier, $oid, $attr_name, $index) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Insert an element to a sequence type column using OID * @link https://php.net/manual/en/function.cubrid-seq-insert.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance you want to work with. *

* @param string $attr_name

* Name of the attribute you want to insert an instance to. *

* @param int $index

* Location of the element, you want to insert the element to (1-based). *

* @param string $seq_element

* Content of the element that you want to insert. *

* @return bool

* TRUE, when process is successful. FALSE, * when process is unsuccessful. *

*/ function cubrid_seq_insert($conn_identifier, $oid, $attr_name, $index, $seq_element) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Update the element value of sequence type column using OID * @link https://php.net/manual/en/function.cubrid-seq-put.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance you want to work with. *

* @param string $attr_name

* Name of the attribute that you want to update an element. *

* @param int $index

* Index of the element that you want to delete (1-based). *

* @param string $seq_element

* New content that you want to use for the update. *

* @return bool

* TRUE, when process is successful. FALSE, * when process is unsuccessful. *

*/ function cubrid_seq_put($conn_identifier, $oid, $attr_name, $index, $seq_element) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Insert a single element to set type column using OID * @link https://php.net/manual/en/function.cubrid-seq-add.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance you want to work with. *

* @param string $attr_name

* Name of the attribute you want to insert an element. *

* @param string $seq_element

* Content of the element that you want to insert. *

* @return bool

* TRUE, when process is successful. FALSE, * when process is unsuccessful. *

*/ function cubrid_seq_add($conn_identifier, $oid, $attr_name, $seq_element) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Insert a single element to set type column using OID * @link https://php.net/manual/en/function.cubrid-set-add.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance you want to work with. *

* @param string $attr_name

* Name of the attribute you want to insert an element. *

* @param string $set_element

* Content of the element you want to insert. *

* @return bool

* TRUE, when process is successful. FALSE, * when process is unsuccessful. *

*/ function cubrid_set_add($conn_identifier, $oid, $attr_name, $set_element) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Delete an element from set type column using OID * @link https://php.net/manual/en/function.cubrid-set-drop.php * @param resource $conn_identifier

* Connection identifier. *

* @param string $oid

* OID of the instance you want to work with. *

* @param string $attr_name

* Name of the attribute you want to delete an element from. *

* @param string $set_element

* Content of the element you want to delete. *

* @return bool

* TRUE, when process is successful. FALSE, * when process is unsuccessful. *

*/ function cubrid_set_drop($conn_identifier, $oid, $attr_name, $set_element) {} /** * (PHP 5, CUBRID >= 8.3.0)
* Get the CUBRID PHP module's version * @link https://php.net/manual/en/function.cubrid-version.php * @return string

* Version information (eg. "8.4.1.0001"). *

*/ function cubrid_version() {} /** * (PHP 5, CUBRID >= 8.4.0)
* Write a string into the LOB large object * * @link https://php.net/manual/en/function.cubrid-lob2-write.php * @param resource $lob_identifier

* LOB identifier obtained by cubrid_lob2_new() or cubrid_lob2_import(). *

* @param string $buf

* The string to be written into the LOB. *

* @return bool

* Returns true on success, false on failure. *

*/ function cubrid_lob2_write($lob_identifier, string $buf): bool {} /** * Columns are returned into the array having a numerical index to the * fields. This index starts with 0, the first field in the result. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_NUM', 1); /** * Columns are returned into the array having the fieldname as the array * index. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_ASSOC', 2); /** * Columns are returned into the array having both a numerical index * and the fieldname as the array index. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_BOTH', 3); /** * Get query result as an object. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_OBJECT', 4); /** * Determine whether to get OID during query execution. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_INCLUDE_OID', 1); /** * Execute the query in asynchronous mode. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_ASYNC', 2); /** * Execute the query in synchronous mode. * This flag must be set when executing multiple SQL statements. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_EXEC_QUERY_ALL', 4); /** * Returned value of cubrid_move_cursor() function * in case of success. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_CURSOR_SUCCESS', 1); /** * Returned value of cubrid_move_cursor() function in case * of failure. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_NO_MORE_DATA', 0); /** * Returned value of cubrid_move_cursor() function in case * of failure. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_CURSOR_ERROR', -1); /** * Enable the auto-commit mode. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_AUTOCOMMIT_TRUE', 1); /** * Disable the auto-commit mode. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_AUTOCOMMIT_FALSE', 0); /** * Move current cursor to the first position in the result. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_CURSOR_FIRST', 0); /** * Move current cursor as a default value if the origin is * not specified. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_CURSOR_CURRENT', 1); /** * Move current cursor to the last position in the result. * @link https://php.net/manual/en/cubrid.constants.php */ define('CUBRID_CURSOR_LAST', 2); // End of cubrid v.1.0 * The optional encoding specifies the character * encoding for the input/output in PHP 4. Starting from PHP 5, the input * encoding is automatically detected, so that the * encoding parameter specifies only the output * encoding. In PHP 4, the default output encoding is the same as the * input charset. If empty string is passed, the parser attempts to identify * which encoding the document is encoded in by looking at the heading 3 or * 4 bytes. In PHP 5.0.0 and 5.0.1, the default output charset is * ISO-8859-1, while in PHP 5.0.2 and upper is UTF-8. The supported * encodings are ISO-8859-1, UTF-8 and * US-ASCII. *

* @return resource|false|XMLParser a resource handle for the new XML parser. */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] function xml_parser_create(?string $encoding) {} /** * Create an XML parser with namespace support * @link https://php.net/manual/en/function.xml-parser-create-ns.php * @param string|null $encoding [optional]

* The optional encoding specifies the character * encoding for the input/output in PHP 4. Starting from PHP 5, the input * encoding is automatically detected, so that the * encoding parameter specifies only the output * encoding. In PHP 4, the default output encoding is the same as the * input charset. In PHP 5.0.0 and 5.0.1, the default output charset is * ISO-8859-1, while in PHP 5.0.2 and upper is UTF-8. The supported * encodings are ISO-8859-1, UTF-8 and * US-ASCII. *

* @param string $separator [optional]

* With a namespace aware parser tag parameters passed to the various * handler functions will consist of namespace and tag name separated by * the string specified in separator. *

* @return resource|false|XMLParser a resource handle for the new XML parser. */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] function xml_parser_create_ns(?string $encoding, string $separator = ':') {} /** * Use XML Parser within an object * @link https://php.net/manual/en/function.xml-set-object.php * @param XMLParser|resource $parser

* A reference to the XML parser to use inside the object. *

* @param object $object

* The object where to use the XML parser. *

* @return bool TRUE on success or FALSE on failure. */ #[LanguageLevelTypeAware(["8.2" => "true"], default: "bool")] #[Deprecated("The function is deprecated", since: "8.4")] function xml_set_object(#[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, object $object) {} /** * Set up start and end element handlers * @link https://php.net/manual/en/function.xml-set-element-handler.php * @param XMLParser|resource $parser

* A reference to the XML parser to set up start and end element handler functions. *

* @param callable $start_handler

* The function named by start_element_handler * must accept three parameters: * start_element_handler * resourceparser * stringname * arrayattribs * parser * The first parameter, parser, is a * reference to the XML parser calling the handler.

* @param callable $end_handler

* The function named by end_element_handler * must accept two parameters: * end_element_handler * resourceparser * stringname * parser * The first parameter, parser, is a * reference to the XML parser calling the handler.

* @return bool TRUE on success or FALSE on failure. */ #[LanguageLevelTypeAware(["8.2" => "true"], default: "bool")] function xml_set_element_handler( #[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, #[LanguageLevelTypeAware(["8.4" => "callable|string|null"], default: "callable")] $start_handler, #[LanguageLevelTypeAware(["8.4" => "callable|string|null"], default: "callable")] $end_handler ) {} /** * Set up character data handler * @link https://php.net/manual/en/function.xml-set-character-data-handler.php * @param XMLParser|resource $parser

* A reference to the XML parser to set up character data handler function. *

* @param callable $handler

* handler is a string containing the name of a * function that must exist when xml_parse is called * for parser. *

*

* The function named by handler must accept * two parameters: * handler * resourceparser * stringdata * parser * The first parameter, parser, is a * reference to the XML parser calling the handler.

* @return bool TRUE on success or FALSE on failure. */ #[LanguageLevelTypeAware(["8.2" => "true"], default: "bool")] function xml_set_character_data_handler( #[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, #[LanguageLevelTypeAware(["8.4" => "callable|string|null"], default: "callable")] $handler ) {} /** * Set up processing instruction (PI) handler * @link https://php.net/manual/en/function.xml-set-processing-instruction-handler.php * @param XMLParser|resource $parser

* A reference to the XML parser to set up processing instruction (PI) handler function. *

* @param callable $handler

* handler is a string containing the name of a * function that must exist when xml_parse is called * for parser. *

*

* The function named by handler must accept * three parameters: * handler * resourceparser * stringtarget * stringdata * parser * The first parameter, parser, is a * reference to the XML parser calling the handler.

* @return bool TRUE on success or FALSE on failure. */ #[LanguageLevelTypeAware(["8.2" => "true"], default: "bool")] function xml_set_processing_instruction_handler( #[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, #[LanguageLevelTypeAware(["8.4" => "callable|string|null"], default: "callable")] $handler ) {} /** * Set up default handler * @link https://php.net/manual/en/function.xml-set-default-handler.php * @param XMLParser|resource $parser

* A reference to the XML parser to set up default handler function. *

* @param callable $handler

* handler is a string containing the name of a * function that must exist when xml_parse is called * for parser. *

*

* The function named by handler must accept * two parameters: * handler * resourceparser * stringdata * parser * The first parameter, parser, is a * reference to the XML parser calling the handler.

* @return bool TRUE on success or FALSE on failure. */ #[LanguageLevelTypeAware(["8.2" => "true"], default: "bool")] function xml_set_default_handler( #[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, #[LanguageLevelTypeAware(["8.4" => "callable|string|null"], default: "callable")] $handler ) {} /** * Set up unparsed entity declaration handler * @link https://php.net/manual/en/function.xml-set-unparsed-entity-decl-handler.php * @param XMLParser|resource $parser

* A reference to the XML parser to set up unparsed entity declaration handler function. *

* @param callable $handler

* handler is a string containing the name of a * function that must exist when xml_parse is called * for parser. *

*

* The function named by handler must accept six * parameters: * handler * resourceparser * stringentity_name * stringbase * stringsystem_id * stringpublic_id * stringnotation_name * parser * The first parameter, parser, is a * reference to the XML parser calling the * handler.

* @return bool TRUE on success or FALSE on failure. */ #[LanguageLevelTypeAware(["8.2" => "true"], default: "bool")] function xml_set_unparsed_entity_decl_handler( #[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, #[LanguageLevelTypeAware(["8.4" => "callable|string|null"], default: "callable")] $handler ) {} /** * Set up notation declaration handler * @link https://php.net/manual/en/function.xml-set-notation-decl-handler.php * @param XMLParser|resource $parser

* A reference to the XML parser to set up notation declaration handler function. *

* @param callable $handler

* handler is a string containing the name of a * function that must exist when xml_parse is called * for parser. *

*

* The function named by handler must accept * five parameters: * handler * resourceparser * stringnotation_name * stringbase * stringsystem_id * stringpublic_id * parser * The first parameter, parser, is a * reference to the XML parser calling the handler.

* @return bool TRUE on success or FALSE on failure. */ #[LanguageLevelTypeAware(["8.2" => "true"], default: "bool")] function xml_set_notation_decl_handler( #[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, #[LanguageLevelTypeAware(["8.4" => "callable|string|null"], default: "callable")] $handler ) {} /** * Set up external entity reference handler * @link https://php.net/manual/en/function.xml-set-external-entity-ref-handler.php * @param XMLParser|resource $parser

* A reference to the XML parser to set up external entity reference handler function. *

* @param callable $handler

* handler is a string containing the name of a * function that must exist when xml_parse is called * for parser. *

*

* The function named by handler must accept * five parameters, and should return an integer value.If the * value returned from the handler is FALSE (which it will be if no * value is returned), the XML parser will stop parsing and * xml_get_error_code will return * XML_ERROR_EXTERNAL_ENTITY_HANDLING. * handler * resourceparser * stringopen_entity_names * stringbase * stringsystem_id * stringpublic_id * parser * The first parameter, parser, is a * reference to the XML parser calling the handler.

* @return bool TRUE on success or FALSE on failure. */ #[LanguageLevelTypeAware(["8.2" => "true"], default: "bool")] function xml_set_external_entity_ref_handler( #[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, #[LanguageLevelTypeAware(["8.4" => "callable|string|null"], default: "callable")] $handler ) {} /** * Set up start namespace declaration handler * @link https://php.net/manual/en/function.xml-set-start-namespace-decl-handler.php * @param XMLParser|resource $parser

* A reference to the XML parser. *

* @param callable $handler

* handler is a string containing the name of a * function that must exist when xml_parse is called * for parser. *

*

* The function named by handler must accept * three parameters, and should return an integer value. If the * value returned from the handler is FALSE (which it will be if no * value is returned), the XML parser will stop parsing and * xml_get_error_code will return * XML_ERROR_EXTERNAL_ENTITY_HANDLING. * handler * resourceparser * stringprefix * stringuri * parser * The first parameter, parser, is a * reference to the XML parser calling the handler.

* @return bool TRUE on success or FALSE on failure. */ #[LanguageLevelTypeAware(["8.2" => "true"], default: "bool")] function xml_set_start_namespace_decl_handler( #[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, #[LanguageLevelTypeAware(["8.4" => "callable|string|null"], default: "callable")] $handler ) {} /** * Set up end namespace declaration handler * @link https://php.net/manual/en/function.xml-set-end-namespace-decl-handler.php * @param XMLParser|resource $parser

* A reference to the XML parser. *

* @param callable $handler

* handler is a string containing the name of a * function that must exist when xml_parse is called * for parser. *

*

* The function named by handler must accept * two parameters, and should return an integer value. If the * value returned from the handler is FALSE (which it will be if no * value is returned), the XML parser will stop parsing and * xml_get_error_code will return * XML_ERROR_EXTERNAL_ENTITY_HANDLING. * handler * resourceparser * stringprefix * parser * The first parameter, parser, is a * reference to the XML parser calling the handler.

* @return bool TRUE on success or FALSE on failure. */ #[LanguageLevelTypeAware(["8.2" => "true"], default: "bool")] function xml_set_end_namespace_decl_handler( #[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, #[LanguageLevelTypeAware(["8.4" => "callable|string|null"], default: "callable")] $handler ) {} /** * Start parsing an XML document * @link https://php.net/manual/en/function.xml-parse.php * @param XMLParser|resource $parser

* A reference to the XML parser to use. *

* @param string $data

* Chunk of data to parse. A document may be parsed piece-wise by * calling xml_parse several times with new data, * as long as the is_final parameter is set and * TRUE when the last data is parsed. *

* @param bool $is_final [optional]

* If set and TRUE, data is the last piece of * data sent in this parse. *

* @return int 1 on success or 0 on failure. *

* For unsuccessful parses, error information can be retrieved with * xml_get_error_code, * xml_error_string, * xml_get_current_line_number, * xml_get_current_column_number and * xml_get_current_byte_index. *

*

* Entity errors are reported at the end of the data thus only if * is_final is set and TRUE. *

*/ function xml_parse(#[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, string $data, bool $is_final = false): int {} /** * Parse XML data into an array structure * @link https://php.net/manual/en/function.xml-parse-into-struct.php * @param XMLParser|resource $parser

* A reference to the XML parser. *

* @param string $data

* A string containing the XML data. *

* @param array &$values

* An array containing the values of the XML data *

* @param array &$index [optional]

* An array containing pointers to the location of the appropriate values in the $values. *

* @return int xml_parse_into_struct returns 0 for failure and 1 for * success. This is not the same as FALSE and TRUE, be careful with * operators such as ===. */ #[LanguageLevelTypeAware(['8.1' => 'int|false'], default: 'int')] function xml_parse_into_struct(#[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, string $data, &$values, &$index) {} /** * Get XML parser error code * @link https://php.net/manual/en/function.xml-get-error-code.php * @param XMLParser|resource $parser

* A reference to the XML parser to get error code from. *

* @return int|false Returns one of the error codes listed in the error codes * section. */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "int"], default: "int|false")] function xml_get_error_code(#[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser) {} /** * Get XML parser error string * @link https://php.net/manual/en/function.xml-error-string.php * @param int $error_code

* An error code from xml_get_error_code. *

* @return string|null a string with a textual description of the error * code, or FALSE if no description was found. */ #[Pure] function xml_error_string(int $error_code): ?string {} /** * Get current line number for an XML parser * @link https://php.net/manual/en/function.xml-get-current-line-number.php * @param XMLParser|resource $parser

* A reference to the XML parser to get line number from. *

* @return int|false This function returns FALSE if parser does * not refer to a valid parser, or else it returns which line the * parser is currently at in its data buffer. */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "int"], default: "int|false")] function xml_get_current_line_number(#[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser) {} /** * Get current column number for an XML parser * @link https://php.net/manual/en/function.xml-get-current-column-number.php * @param XMLParser|resource $parser

* A reference to the XML parser to get column number from. *

* @return int|false This function returns FALSE if parser does * not refer to a valid parser, or else it returns which column on * the current line (as given by * xml_get_current_line_number) the parser is * currently at. */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "int"], default: "int|false")] function xml_get_current_column_number(#[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser) {} /** * Get current byte index for an XML parser * @link https://php.net/manual/en/function.xml-get-current-byte-index.php * @param XMLParser|resource $parser

* A reference to the XML parser to get byte index from. *

* @return int|false This function returns FALSE if parser does * not refer to a valid parser, or else it returns which byte index * the parser is currently at in its data buffer (starting at 0). */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "int"], default: "int|false")] function xml_get_current_byte_index(#[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser) {} /** * Free an XML parser * @link https://php.net/manual/en/function.xml-parser-free.php * @param XMLParser|resource $parser A reference to the XML parser to free. * @return bool This function returns FALSE if parser does not * refer to a valid parser, or else it frees the parser and returns TRUE. */ function xml_parser_free(#[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser): bool {} /** * Set options in an XML parser * @link https://php.net/manual/en/function.xml-parser-set-option.php * @param XMLParser|resource $parser

* A reference to the XML parser to set an option in. *

* @param int $option

* Which option to set. See below. *

*

* The following options are available: * * XML parser options * * * * * * * * * * * * * * * * * * * * * * * * * *
Option constantData typeDescription
XML_OPTION_CASE_FOLDINGinteger * Controls whether case-folding is enabled for this * XML parser. Enabled by default. *
XML_OPTION_SKIP_TAGSTARTinteger * Specify how many characters should be skipped in the beginning of a * tag name. *
XML_OPTION_SKIP_WHITEinteger * Whether to skip values consisting of whitespace characters. *
XML_OPTION_TARGET_ENCODINGstring * Sets which target encoding to * use in this XML parser.By default, it is set to the same as the * source encoding used by xml_parser_create. * Supported target encodings are ISO-8859-1, * US-ASCII and UTF-8. *
*

* @param mixed $value

* The option's new value. *

* @return bool This function returns FALSE if parser does not * refer to a valid parser, or if the option could not be set. Else the * option is set and TRUE is returned. */ function xml_parser_set_option(#[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, int $option, $value): bool {} /** * Get options from an XML parser * @link https://php.net/manual/en/function.xml-parser-get-option.php * @param XMLParser|resource $parser A reference to the XML parser to get an option from. * @param int $option Which option to fetch. XML_OPTION_CASE_FOLDING * and XML_OPTION_TARGET_ENCODING are available. * See xml_parser_set_option for their description. * @return string|int|bool This function returns FALSE if parser does * not refer to a valid parser or if option isn't * valid (generates also a E_WARNING). * Else the option's value is returned. */ #[Pure] #[LanguageLevelTypeAware(["8.3" => "string|int|bool"], default: "string|int")] function xml_parser_get_option(#[LanguageLevelTypeAware(["8.0" => "XMLParser"], default: "resource")] $parser, int $option) {} define('XML_ERROR_NONE', 0); define('XML_ERROR_NO_MEMORY', 1); define('XML_ERROR_SYNTAX', 2); define('XML_ERROR_NO_ELEMENTS', 3); define('XML_ERROR_INVALID_TOKEN', 4); define('XML_ERROR_UNCLOSED_TOKEN', 5); define('XML_ERROR_PARTIAL_CHAR', 6); define('XML_ERROR_TAG_MISMATCH', 7); define('XML_ERROR_DUPLICATE_ATTRIBUTE', 8); define('XML_ERROR_JUNK_AFTER_DOC_ELEMENT', 9); define('XML_ERROR_PARAM_ENTITY_REF', 10); define('XML_ERROR_UNDEFINED_ENTITY', 11); define('XML_ERROR_RECURSIVE_ENTITY_REF', 12); define('XML_ERROR_ASYNC_ENTITY', 13); define('XML_ERROR_BAD_CHAR_REF', 14); define('XML_ERROR_BINARY_ENTITY_REF', 15); define('XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF', 16); define('XML_ERROR_MISPLACED_XML_PI', 17); define('XML_ERROR_UNKNOWN_ENCODING', 18); define('XML_ERROR_INCORRECT_ENCODING', 19); define('XML_ERROR_UNCLOSED_CDATA_SECTION', 20); define('XML_ERROR_EXTERNAL_ENTITY_HANDLING', 21); define('XML_OPTION_CASE_FOLDING', 1); define('XML_OPTION_TARGET_ENCODING', 2); define('XML_OPTION_SKIP_TAGSTART', 3); define('XML_OPTION_SKIP_WHITE', 4); /** * @since 8.4 */ define('XML_OPTION_PARSE_HUGE', 5); /** * Holds the SAX implementation method. * Can be libxml or expat. * @link https://php.net/manual/en/xml.constants.php */ define('XML_SAX_IMPL', "libxml"); /** * @since 8.0 */ final class XMLParser {} // End of xml v. * A julian day number as integer *

* @return string The gregorian date as a string in the form "month/day/year" */ function jdtogregorian(int $julian_day): string {} /** * Converts a Gregorian date to Julian Day Count * @link https://php.net/manual/en/function.gregoriantojd.php * @param int $month

* The month as a number from 1 (for January) to 12 (for December) *

* @param int $day

* The day as a number from 1 to 31 *

* @param int $year

* The year as a number between -4714 and 9999 *

* @return int The julian day for the given gregorian date as an integer. */ function gregoriantojd(int $month, int $day, int $year): int {} /** * Converts a Julian Day Count to a Julian Calendar Date * @link https://php.net/manual/en/function.jdtojulian.php * @param int $julian_day

* A julian day number as integer *

* @return string The julian date as a string in the form "month/day/year" */ function jdtojulian(int $julian_day): string {} /** * Converts a Julian Calendar date to Julian Day Count * @link https://php.net/manual/en/function.juliantojd.php * @param int $month

* The month as a number from 1 (for January) to 12 (for December) *

* @param int $day

* The day as a number from 1 to 31 *

* @param int $year

* The year as a number between -4713 and 9999 *

* @return int The julian day for the given julian date as an integer. */ function juliantojd(int $month, int $day, int $year): int {} /** * Converts a Julian day count to a Jewish calendar date * @link https://php.net/manual/en/function.jdtojewish.php * @param int $julian_day * @param bool $hebrew [optional]

* If the hebrew parameter is set to TRUE, the * fl parameter is used for Hebrew, string based, * output format. *

* @param int $flags [optional]

* The available formats are: * CAL_JEWISH_ADD_ALAFIM_GERESH, * CAL_JEWISH_ADD_ALAFIM, * CAL_JEWISH_ADD_GERESHAYIM. *

* @return string The jewish date as a string in the form "month/day/year" */ function jdtojewish(int $julian_day, bool $hebrew = false, int $flags = 0): string {} /** * Converts a date in the Jewish Calendar to Julian Day Count * @link https://php.net/manual/en/function.jewishtojd.php * @param int $month

* The month as a number from 1 to 13 *

* @param int $day

* The day as a number from 1 to 30 *

* @param int $year

* The year as a number between 1 and 9999 *

* @return int The julian day for the given jewish date as an integer. */ function jewishtojd(int $month, int $day, int $year): int {} /** * Converts a Julian Day Count to the French Republican Calendar * @link https://php.net/manual/en/function.jdtofrench.php * @param int $julian_day * @return string The french revolution date as a string in the form "month/day/year" */ function jdtofrench(int $julian_day): string {} /** * Converts a date from the French Republican Calendar to a Julian Day Count * @link https://php.net/manual/en/function.frenchtojd.php * @param int $month

* The month as a number from 1 (for Vendémiaire) to 13 (for the period of 5-6 days at the end of each year) *

* @param int $day

* The day as a number from 1 to 30 *

* @param int $year

* The year as a number between 1 and 14 *

* @return int The julian day for the given french revolution date as an integer. */ function frenchtojd(int $month, int $day, int $year): int {} /** * Returns the day of the week * @link https://php.net/manual/en/function.jddayofweek.php * @param int $julian_day

* A julian day number as integer *

* @param int $mode [optional] * Calendar week modes * * * * * * * * * * * * * * * * *
ModeMeaning
0 (Default) * Return the day number as an int (0=Sunday, 1=Monday, etc) *
1 * Returns string containing the day of week * (English-Gregorian) *
2 * Return a string containing the abbreviated day of week * (English-Gregorian) *
* @return string|int The gregorian weekday as either an integer or string. */ function jddayofweek(int $julian_day, int $mode = CAL_DOW_DAYNO): string|int {} /** * Returns a month name * @link https://php.net/manual/en/function.jdmonthname.php * @param int $julian_day * @param int $mode * @return string The month name for the given Julian Day and calendar. */ function jdmonthname(int $julian_day, int $mode): string {} /** * Get Unix timestamp for midnight on Easter of a given year * @link https://php.net/manual/en/function.easter-date.php * @param int|null $year [optional]

* The year as a number between 1970 an 2037 *

* @param int $mode [optional] Allows Easter dates to be calculated based on the Julian calendar when set to CAL_EASTER_ALWAYS_JULIAN * @return int The easter date as a unix timestamp. */ function easter_date(?int $year, #[PhpStormStubsElementAvailable(from: '8.0')] int $mode = CAL_EASTER_DEFAULT): int {} /** * Get number of days after March 21 on which Easter falls for a given year * @link https://php.net/manual/en/function.easter-days.php * @param positive-int|null $year [optional]

* The year as a positive number *

* @param int $mode [optional]

* Allows to calculate easter dates based * on the Gregorian calendar during the years 1582 - 1752 when set to * CAL_EASTER_ROMAN. See the calendar constants for more valid * constants. *

* @return int The number of days after March 21st that the Easter Sunday * is in the given year. */ function easter_days(?int $year, int $mode = CAL_EASTER_DEFAULT): int {} /** * Convert Unix timestamp to Julian Day * @link https://php.net/manual/en/function.unixtojd.php * @param int|null $timestamp defaults to time()

* A unix timestamp to convert. *

* @return int|false A julian day number as integer. */ function unixtojd(?int $timestamp = null): int|false {} /** * Convert Julian Day to Unix timestamp * @link https://php.net/manual/en/function.jdtounix.php * @param int $julian_day

* A julian day number between 2440588 and 2465342. *

* @return int The unix timestamp for the start of the given julian day. */ function jdtounix(int $julian_day): int {} /** * Converts from a supported calendar to Julian Day Count * @link https://php.net/manual/en/function.cal-to-jd.php * @param int $calendar

* Calendar to convert from, one of * CAL_GREGORIAN, * CAL_JULIAN, * CAL_JEWISH or * CAL_FRENCH. *

* @param int $month

* The month as a number, the valid range depends * on the calendar *

* @param int $day

* The day as a number, the valid range depends * on the calendar *

* @param int $year

* The year as a number, the valid range depends * on the calendar *

* @return int A Julian Day number. */ function cal_to_jd(int $calendar, int $month, int $day, int $year): int {} /** * Converts from Julian Day Count to a supported calendar * @link https://php.net/manual/en/function.cal-from-jd.php * @param int $julian_day

* Julian day as integer *

* @param int $calendar

* Calendar to convert to *

* @return array an array containing calendar information like month, day, year, * day of week, abbreviated and full names of weekday and month and the * date in string form "month/day/year". */ #[ArrayShape([ "date" => "string", "month" => "int", "day" => "int", "year" => "int", "dow" => "int", "abbrevdayname" => "string", "dayname" => "string", "abbrevmonth" => "string", "monthname" => "string" ])] function cal_from_jd(int $julian_day, int $calendar): array {} /** * Return the number of days in a month for a given year and calendar * @link https://php.net/manual/en/function.cal-days-in-month.php * @param int $calendar

* Calendar to use for calculation *

* @param int $month

* Month in the selected calendar *

* @param int $year

* Year in the selected calendar *

* @return int The length in days of the selected month in the given calendar */ function cal_days_in_month(int $calendar, int $month, int $year): int {} /** * Returns information about a particular calendar * @link https://php.net/manual/en/function.cal-info.php * @param int $calendar [optional]

* Calendar to return information for. If no calendar is specified * information about all calendars is returned. *

* @return array */ #[ArrayShape(["months" => "array", "abbrevmonths" => "array", "maxdaysinmonth" => "int", "calname" => "string", "calsymbol" => "string"])] function cal_info(int $calendar = -1): array {} define('CAL_GREGORIAN', 0); define('CAL_JULIAN', 1); define('CAL_JEWISH', 2); define('CAL_FRENCH', 3); define('CAL_NUM_CALS', 4); define('CAL_DOW_DAYNO', 0); define('CAL_DOW_SHORT', 2); define('CAL_DOW_LONG', 1); define('CAL_MONTH_GREGORIAN_SHORT', 0); define('CAL_MONTH_GREGORIAN_LONG', 1); define('CAL_MONTH_JULIAN_SHORT', 2); define('CAL_MONTH_JULIAN_LONG', 3); define('CAL_MONTH_JEWISH', 4); define('CAL_MONTH_FRENCH', 5); define('CAL_EASTER_DEFAULT', 0); define('CAL_EASTER_ROMAN', 1); define('CAL_EASTER_ALWAYS_GREGORIAN', 2); define('CAL_EASTER_ALWAYS_JULIAN', 3); define('CAL_JEWISH_ADD_ALAFIM_GERESH', 2); define('CAL_JEWISH_ADD_ALAFIM', 4); define('CAL_JEWISH_ADD_GERESHAYIM', 8); // End of calendar v. ` operator. * * @param mixed $other * * @return int 0 if this decimal is considered is equal to $other, * -1 if this decimal should be placed before $other, * 1 if this decimal should be placed after $other. */ public function compareTo($other): int {} /** * String representation. * * This method is equivalent to a cast to string, as well as `toString`. * * @return string the value of this decimal represented exactly, in either * fixed or scientific form, depending on the value. */ public function __toString(): string {} /** * JSON * * This method is only here to honour the interface, and is equivalent to * `toString`. JSON does not have a decimal type so all decimals are encoded * as strings in the same format as `toString`. * * @return string */ public function jsonSerialize() {} } The filename of the SQLite database. If the file does not exist, SQLite will attempt to create it. PHP must have write permissions to the file if data is inserted, the database schema is modified or to create the database if it does not exist.

* @param int $mode [optional]

The mode of the file. Intended to be used to open the database in read-only mode. Presently, this parameter is ignored by the sqlite library. The default value for mode is the octal value 0666 and this is the recommended value.

* @param string &$error_message [optional]

Passed by reference and is set to hold a descriptive error message explaining why the database could not be opened if there was an error.

*/ final public function __construct($filename, $mode = 0666, &$error_message) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * @link https://php.net/manual/en/function.sqlite-query.php * @param string $query

* The query to be executed. *

*

* Data inside the query should be {@link https://php.net/manual/en/function.sqlite-escape-string.php properly escaped}. *

* @param int $result_type [optional] *

The optional result_type parameter accepts a constant and determines how the returned array will be indexed. Using SQLITE_ASSOC will return only associative indices (named fields) while SQLITE_NUM will return only numerical indices (ordinal field numbers). SQLITE_BOTH will return both associative and numerical indices. SQLITE_BOTH is the default for this function.

* @param string &$error_message [optional]

The specified variable will be filled if an error occurs. This is specially important because SQL syntax errors can't be fetched using the {@see sqlite_last_error()} function.

* @return resource|false

* This function will return a result handle or FALSE on failure. * For queries that return rows, the result handle can then be used with * functions such as {@see sqlite_fetch_array()} and * {@see sqlite_seek()}. *

*

* Regardless of the query type, this function will return FALSE if the * query failed. *

*

* {@see sqlite_query()} returns a buffered, seekable result * handle. This is useful for reasonably small queries where you need to * be able to randomly access the rows. Buffered result handles will * allocate memory to hold the entire result and will not return until it * has been fetched. If you only need sequential access to the data, it is * recommended that you use the much higher performance * {@see sqlite_unbuffered_query()} instead. *

*/ public function query($query, $result_type, &$error_message) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * @link https://php.net/manual/en/function.sqlite-exec.php * @param string $query

* The query to be executed. *

*

* Data inside the query should be {@link https://php.net/manual/en/function.sqlite-escape-string.php properly escaped}. *

* @param string &$error_message [optional]

The specified variable will be filled if an error occurs. This is specially important because SQL syntax errors can't be fetched using the * {@see sqlite_last_error()} function.

* @return bool

* This function will return a boolean result; TRUE for success or FALSE for failure. * If you need to run a query that returns rows, see {@see sqlite_query()}. *

*

The column names returned by * SQLITE_ASSOC and SQLITE_BOTH will be * case-folded according to the value of the * {@link https://php.net/manual/en/sqlite.configuration.php#ini.sqlite.assoc-case sqlite.assoc_case} configuration * option.

*/ public function queryExec($query, &$error_message) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Execute a query against a given database and returns an array * @link https://php.net/manual/en/function.sqlite-array-query.php * @param string $query

* The query to be executed. *

*

* Data inside the query should be {@link https://php.net/manual/en/function.sqlite-escape-string.php properly escaped}. *

* @param int $result_type [optional]

The optional result_type * parameter accepts a constant and determines how the returned array will be * indexed. Using SQLITE_ASSOC will return only associative * indices (named fields) while SQLITE_NUM will return * only numerical indices (ordinal field numbers). SQLITE_BOTH * will return both associative and numerical indices. * SQLITE_BOTH is the default for this function.

* @param bool $decode_binary [optional]

When the decode_binary * parameter is set to TRUE (the default), PHP will decode the binary encoding * it applied to the data if it was encoded using the * {@see sqlite_escape_string()}. You should normally leave this * value at its default, unless you are interoperating with databases created by * other sqlite capable applications.

*

* @return array|false * Returns an array of the entire result set; FALSE otherwise. *

*

The column names returned by * SQLITE_ASSOC and SQLITE_BOTH will be * case-folded according to the value of the * {@link https://php.net/manual/en/sqlite.configuration.php#ini.sqlite.assoc-case sqlite.assoc_case} configuration * option.

*/ public function arrayQuery($query, $result_type, $decode_binary) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.1) * Executes a query and returns either an array for one single column or the value of the first row * @link https://php.net/manual/en/function.sqlite-single-query.php * @param string $query * @param bool $first_row_only [optional] * @param bool $decode_binary [optional] * @return array */ public function singleQuery($query, $first_row_only, $decode_binary) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Execute a query that does not prefetch and buffer all data * @link https://php.net/manual/en/function.sqlite-unbuffered-query.php * @param string $query

* The query to be executed. *

*

* Data inside the query should be {@link https://php.net/manual/en/function.sqlite-escape-string.php properly escaped}. *

* @param int $result_type [optional]

The optional result_type parameter accepts a constant and determines how the returned array will be indexed. * Using SQLITE_ASSOC will return only associative indices (named fields) while SQLITE_NUM will return only numerical indices (ordinal field numbers). * SQLITE_BOTH will return both associative and numerical indices. SQLITE_BOTH is the default for this function. *

* @param string &$error_message [optional] * @return resource Returns a result handle or FALSE on failure. * {@see sqlite_unbuffered_query()} returns a sequential forward-only result set that can only be used to read each row, one after the other. */ public function unbufferedQuery($query, $result_type = SQLITE_BOTH, &$error_message = null) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Returns the rowid of the most recently inserted row * @link https://php.net/manual/en/function.sqlite-last-insert-rowid.php * @return int Returns the row id, as an integer. */ public function lastInsertRowid() {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Returns the number of rows that were changed by the most recent SQL statement * @link https://php.net/manual/en/function.sqlite-changes.php * @return int Returns the number of changed rows. */ public function changes() {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Register an aggregating UDF for use in SQL statements * @link https://php.net/manual/en/function.sqlite-create-aggregate.php * @param string $function_name

The name of the function used in SQL statements.

* @param callable $step_func

Callback function called for each row of the result set. Function parameters are &$context, $value, ....

* @param callable $finalize_func

Callback function to aggregate the "stepped" data from each row. Function parameter is &$context and the function should return the final result of aggregation.

* @param int $num_args [optional]

Hint to the SQLite parser if the callback function accepts a predetermined number of arguments.

*/ public function createAggregate($function_name, $step_func, $finalize_func, $num_args = -1) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Registers a "regular" User Defined Function for use in SQL statements * @link https://php.net/manual/en/function.sqlite-create-function.php * @param string $function_name

The name of the function used in SQL statements.

* @param callable $callback

* Callback function to handle the defined SQL function. *

*

Note: * Callback functions should return a type understood by SQLite (i.e. * {@link https://php.net/manual/en/language.types.intro.php scalar type}). *

* @param int $num_args [optional]

Note: Two alternative syntaxes are * supported for compatibility with other database extensions (such as MySQL). * The preferred form is the first, where the dbhandle * parameter is the first parameter to the function.

*/ public function createFunction($function_name, $callback, $num_args = -1) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Set busy timeout duration, or disable busy handlers * @link https://php.net/manual/en/function.sqlite-busy-timeout.php * @param int $milliseconds

The number of milliseconds. When set to 0, busy handlers will be disabled and SQLite will return immediately with a SQLITE_BUSY status code if another process/thread has the database locked for an update. * PHP sets the default busy timeout to be 60 seconds when the database is opened.

* @return int

Returns an error code, or 0 if no error occurred.

*/ public function busyTimeout($milliseconds) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Returns the error code of the last error for a database * @link https://php.net/manual/en/function.sqlite-last-error.php * @return int Returns an error code, or 0 if no error occurred. */ public function lastError() {} /** * (PHP 5 < 5.4.0) * Return an array of column types from a particular table * @link https://php.net/manual/en/function.sqlite-fetch-column-types.php * @param string $table_name

The table name to query.

* @param int $result_type [optional]

* The optional result_type parameter accepts a * constant and determines how the returned array will be indexed. Using * SQLITE_ASSOC will return only associative indices * (named fields) while SQLITE_NUM will return only * numerical indices (ordinal field numbers). * SQLITE_ASSOC is the default for * this function. *

* @return array

* Returns an array of column data types; FALSE on error. *

*

The column names returned by * SQLITE_ASSOC and SQLITE_BOTH will be * case-folded according to the value of the * {@link https://php.net/manual/en/sqlite.configuration.php#ini.sqlite.assoc-case sqlite.assoc_case} configuration * option.

*/ public function fetchColumnTypes($table_name, $result_type = SQLITE_ASSOC) {} } /** * @link https://php.net/manual/en/ref.sqlite.php */ final class SQLiteResult implements Iterator, Countable { /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Fetches the next row from a result set as an array * @link https://php.net/manual/en/function.sqlite-fetch-array.php * @param int $result_type [optional] *

* The optional result_type * parameter accepts a constant and determines how the returned array will be * indexed. Using SQLITE_ASSOC will return only associative * indices (named fields) while SQLITE_NUM will return * only numerical indices (ordinal field numbers). SQLITE_BOTH * will return both associative and numerical indices. * SQLITE_BOTH is the default for this function. *

* @param bool $decode_binary [optional]

When the decode_binary * parameter is set to TRUE (the default), PHP will decode the binary encoding * it applied to the data if it was encoded using the * {@link https://php.net/manual/en/sqlite.configuration.php#ini.sqlite.assoc-case sqlite.assoc_case}. You should normally leave this * value at its default, unless you are interoperating with databases created by * other sqlite capable applications.

* @return array *

* Returns an array of the next row from a result set; FALSE if the * next position is beyond the final row. *

*

The column names returned by * SQLITE_ASSOC and SQLITE_BOTH will be * case-folded according to the value of the * {@link https://php.net/manual/en/sqlite.configuration.php#ini.sqlite.assoc-case sqlite.assoc_case} configuration * option.

*/ public function fetch($result_type = SQLITE_BOTH, $decode_binary = true) {} /** * (PHP 5 < 5.4.0) * Fetches the next row from a result set as an object * @link https://php.net/manual/en/function.sqlite-fetch-object.php * @param string $class_name [optional] * @param array $ctor_params [optional] * @param bool $decode_binary [optional] * @return object */ public function fetchObject($class_name, $ctor_params, $decode_binary = true) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.1) * Fetches the first column of a result set as a string * @link https://php.net/manual/en/function.sqlite-fetch-single.php * @param bool $decode_binary [optional] * @return string

Returns the first column value, as a string.

*/ public function fetchSingle($decode_binary = true) {} /** * (PHP 5 < 5.4.0) * Fetches the next row from a result set as an object * @link https://www.php.net/manual/en/function.sqlite-fetch-all.php * @param int $result_type [optional]

* The optional result_type parameter accepts a constant and determines how the returned array will be indexed. * Using SQLITE_ASSOC will return only associative indices (named fields) while SQLITE_NUM will return only numerical indices (ordinal field numbers). * {@see SQLITE_BOTH} will return both associative and numerical indices. {@see SQLITE_BOTH} is the default for this function.

* @param bool $decode_binary [optional]

When the decode_binary parameter is set to TRUE (the default), * PHP will decode the binary encoding it applied to the data if it was encoded using the {@see sqlite_escape_string()}. * You should normally leave this value at its default, unless you are interoperating with databases created by other sqlite capable applications.

* @return object */ public function fetchAll($result_type, $decode_binary = true) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Fetches a column from the current row of a result set * @link https://php.net/manual/en/function.sqlite-column.php * @param $index_or_name * @param $decode_binary [optional]

When the decode_binary * parameter is set to TRUE (the default), PHP will decode the binary encoding * it applied to the data if it was encoded using the * {@see sqlite_escape_string()}. You should normally leave this * value at its default, unless you are interoperating with databases created by * other sqlite capable applications.

* @return mixed

Returns the column value

*/ public function column($index_or_name, $decode_binary = true) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Returns the number of fields in a result set * @link https://php.net/manual/en/function.sqlite-num-fields.php * @return int

Returns the number of fields, as an integer.

*/ public function numFields() {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Returns the name of a particular field * @link https://php.net/manual/en/function.sqlite-field-name.php * @param int $field_index

The ordinal column number in the result set.

* @return string

* Returns the name of a field in an SQLite result set, given the ordinal * column number; FALSE on error. *

*

The column names returned by * SQLITE_ASSOC and SQLITE_BOTH will be * case-folded according to the value of the * {@link https://php.net/manual/en/sqlite.configuration.php#ini.sqlite.assoc-case sqlite.assoc_case}configuration * option.

*/ public function fieldName($field_index) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Fetches the current row from a result set as an array * @link https://php.net/manual/en/function.sqlite-current.php * @param int $result_type [optional]

The optional result_type * parameter accepts a constant and determines how the returned array will be * indexed. Using {@see SQLITE_ASSOC} will return only associative * indices (named fields) while {@see SQLITE_NUM} will return * only numerical indices (ordinal field numbers). SQLITE_BOTH * will return both associative and numerical indices. * {@see SQLITE_BOTH} is the default for this function.

* @param bool $decode_binary [optional]

When the decode_binary * parameter is set to TRUE (the default), PHP will decode the binary encoding * it applied to the data if it was encoded using the * {@see sqlite_escape_string()}. You should normally leave this * value at its default, unless you are interoperating with databases created by * other sqlite capable applications.

* @return array

* Returns an array of the current row from a result set; FALSE if the * current position is beyond the final row. *

*

The column names returned by * SQLITE_ASSOC and SQLITE_BOTH will be * case-folded according to the value of the * {@link https://php.net/manual/en/sqlite.configuration.php#ini.sqlite.assoc-case sqlite.assoc_case} configuration * option.

*/ public function current($result_type = SQLITE_BOTH, $decode_binary = true) {} /** * Return the key of the current element * @link https://php.net/manual/en/iterator.key.php * @return mixed scalar on success, or null on failure. * @since 5.0.0 */ public function key() {} /** * Seek to the next row number * @link https://php.net/manual/en/function.sqlite-next.php * @return bool Returns TRUE on success, or FALSE if there are no more rows. * @since 5.0.0 */ public function next() {} /** * Checks if current position is valid * @link https://php.net/manual/en/iterator.valid.php * @return bool

* Returns TRUE if there are more rows available from the * result handle, or FALSE otherwise. *

* @since 5.0.0 */ public function valid() {} /** * Rewind the Iterator to the first element * @link https://php.net/manual/en/iterator.rewind.php * @return void Any returned value is ignored. * @since 5.0.0 */ public function rewind() {} /** * Count elements of an object * @link https://php.net/manual/en/countable.count.php * @return int

The custom count as an integer. *

*

* The return value is cast to an integer. *

* @since 5.1.0 */ public function count() {} /** * Seek to the previous row number of a result set * @link https://php.net/manual/en/function.sqlite-prev.php * @return bool

Returns TRUE on success, or FALSE if there are no more previous rows. *

* @since 5.4.0 */ public function prev() {} /** *@since 5.4.0 * Returns whether or not a previous row is available * @link https://php.net/manual/en/function.sqlite-has-prev.php * @return bool

* Returns TRUE if there are more previous rows available from the * result handle, or FALSE otherwise. *

*/ public function hasPrev() {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Returns the number of rows in a buffered result set * @link https://php.net/manual/en/function.sqlite-num-rows.php * @return int Returns the number of rows, as an integer. */ public function numRows() {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0) * Seek to a particular row number of a buffered result set * @link https://php.net/manual/en/function.sqlite-seek.php * @param $row *

* The ordinal row number to seek to. The row number is zero-based (0 is * the first row). *

*

Note:

This function cannot be used with * unbuffered result handles.

*/ public function seek($row) {} } /** * Represents an unbuffered SQLite result set. Unbuffered results sets are sequential, forward-seeking only. * @link https://php.net/manual/en/ref.sqlite.php */ final class SQLiteUnbuffered { /** * @param int $result_type [optional] * @param bool $decode_binary [optional] */ public function fetch($result_type, $decode_binary) {} /** * @link https://www.php.net/manual/en/function.sqlite-fetch-object.php * @param string $class_name [optional] * @param array $ctor_params [optional] * @param bool $decode_binary [optional] */ public function fetchObject($class_name, $ctor_params, $decode_binary) {} /** * @param bool $decode_binary [optional] */ public function fetchSingle($decode_binary) {} /** * @param int $result_type [optional] * @param bool $decode_binary [optional] */ public function fetchAll($result_type, $decode_binary) {} /** * @param $index_or_name * @param $decode_binary [optional] */ public function column($index_or_name, $decode_binary) {} public function numFields() {} /** * @param int $field_index */ public function fieldName($field_index) {} /** * @param int $result_type [optional] * @param bool $decode_binary [optional] */ public function current($result_type, $decode_binary) {} public function next() {} public function valid() {} } final class SQLiteException extends RuntimeException { protected $message; protected $code; protected $file; protected $line; /** * Clone the exception * @link https://php.net/manual/en/exception.clone.php * @return void * @since 5.1.0 */ final private function __clone() {} /** * Construct the exception * @link https://php.net/manual/en/exception.construct.php * @param $message [optional] * @param $code [optional] * @param $previous [optional] * @since 5.1.0 */ #[Pure] public function __construct($message, $code, $previous) {} /** * String representation of the exception * @link https://php.net/manual/en/exception.tostring.php * @return string the string representation of the exception. * @since 5.1.0 */ public function __toString() {} } /** * (PHP 5, PECL sqlite >= 1.0.0)
* Opens a SQLite database and create the database if it does not exist * @link https://php.net/manual/en/function.sqlite-open.php * @param string $filename

* The filename of the SQLite database. If the file does not exist, SQLite * will attempt to create it. PHP must have write permissions to the file * if data is inserted, the database schema is modified or to create the * database if it does not exist. *

* @param int $mode [optional]

* The mode of the file. Intended to be used to open the database in * read-only mode. Presently, this parameter is ignored by the sqlite * library. The default value for mode is the octal value * 0666 and this is the recommended value. *

* @param string &$error_message [optional]

* Passed by reference and is set to hold a descriptive error message * explaining why the database could not be opened if there was an error. *

* @return resource|false a resource (database handle) on success, false on error. */ function sqlite_open($filename, $mode = null, &$error_message = null) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Opens a persistent handle to an SQLite database and create the database if it does not exist * @link https://php.net/manual/en/function.sqlite-popen.php * @param string $filename

* The filename of the SQLite database. If the file does not exist, SQLite * will attempt to create it. PHP must have write permissions to the file * if data is inserted, the database schema is modified or to create the * database if it does not exist. *

* @param int $mode [optional]

* The mode of the file. Intended to be used to open the database in * read-only mode. Presently, this parameter is ignored by the sqlite * library. The default value for mode is the octal value * 0666 and this is the recommended value. *

* @param string &$error_message [optional]

* Passed by reference and is set to hold a descriptive error message * explaining why the database could not be opened if there was an error. *

* @return resource|false

a resource (database handle) on success, false on error.

*/ function sqlite_popen($filename, $mode = null, &$error_message = null) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Closes an open SQLite database * @link https://php.net/manual/en/function.sqlite-close.php * @param resource $dbhandle

* The SQLite Database resource; returned from sqlite_open * when used procedurally. *

* @return void */ function sqlite_close($dbhandle) {} /** * (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)
* Executes a query against a given database and returns a result handle * there are two signatures with $query first and with $dbhandle first. * @link https://php.net/manual/en/function.sqlite-query.php * @param string|resource $query

* The query to be executed. *

*

* Data inside the query should be properly escaped. *

* @param resource|string $dbhandle The SQLite Database resource; returned from sqlite_open() when used procedurally. This parameter is not required when using the object-oriented method. * @param int $result_type [optional]

The optional result_type * parameter accepts a constant and determines how the returned array will be * indexed. Using SQLITE_ASSOC will return only associative * indices (named fields) while SQLITE_NUM will return * only numerical indices (ordinal field numbers). SQLITE_BOTH * will return both associative and numerical indices. * SQLITE_BOTH is the default for this function.

* @param string &$error_msg [optional]

* The specified variable will be filled if an error occurs. This is * specially important because SQL syntax errors can't be fetched using * the * {@see sqlite_last_error} function. *

* @return resource|false This function will return a result handle or FALSE on failure. * For queries that return rows, the result handle can then be used with * functions such as * {@see sqlite_fetch_array} and * {@see sqlite_seek}. *

*

* Regardless of the query type, this function will return false if the * query failed. *

*

* {@see sqlite_query} returns a buffered, seekable result * handle. This is useful for reasonably small queries where you need to * be able to randomly access the rows. Buffered result handles will * allocate memory to hold the entire result and will not return until it * has been fetched. If you only need sequential access to the data, it is * recommended that you use the much higher performance * {@see sqlite_unbuffered_query} instead. */ function sqlite_query($query, $dbhandle, $result_type = SQLITE_BOTH, &$error_msg = null) {} /** * (PHP 5, PECL sqlite >= 1.0.3)
* Executes a result-less query against a given database * @link https://php.net/manual/en/function.sqlite-exec.php * @param string $query

* The query to be executed. *

*

* Data inside the query should be properly escaped. *

* @param resource $dbhandle

* The SQLite Database resource; returned from * {@see sqlite_open()} when used procedurally. This parameter * is not required when using the object-oriented method. *

* @param string &$error_msg [optional]

* The specified variable will be filled if an error occurs. This is * specially important because SQL syntax errors can't be fetched using * the * {@see sqlite_last_error} function. *

* @return bool

This function will return a boolean result; true for success or false for failure. * If you need to run a query that returns rows, see sqlite_query.

*/ function sqlite_exec($dbhandle, $query, &$error_msg = null) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Execute a query against a given database and returns an array * @link https://php.net/manual/en/function.sqlite-array-query.php * @param string $query

* The query to be executed. *

*

* Data inside the query should be properly escaped. *

* @param resource $dbhandle

* The SQLite Database resource; returned from * {@see sqlite_open()} * when used procedurally. This parameter is not required * when using the object-oriented method. *

* @param int $result_type [optional]

The optional result_type * parameter accepts a constant and determines how the returned array will be * indexed. Using SQLITE_ASSOC will return only associative * indices (named fields) while SQLITE_NUM will return * only numerical indices (ordinal field numbers). SQLITE_BOTH * will return both associative and numerical indices. * SQLITE_BOTH is the default for this function.

* @param bool $decode_binary [optional]

When the decode_binary * parameter is set to TRUE (the default), PHP will decode the binary encoding * it applied to the data if it was encoded using the * {@link sqlite_escape_string()}. You should normally leave this * value at its default, unless you are interoperating with databases created by * other sqlite capable applications.

* @return array|false an array of the entire result set; false otherwise. *

The column names returned by * SQLITE_ASSOC and SQLITE_BOTH will be * case-folded according to the value of the * {@link php.net/en/sqlite.configuration.php#ini.sqlite.assoc-case sqlite.assoc_case} configuration * option.

*/ function sqlite_array_query($dbhandle, $query, $result_type = null, $decode_binary = null) {} /** * (PHP 5, PECL sqlite >= 1.0.1)
* Executes a query and returns either an array for one single column or the value of the first row * @link https://php.net/manual/en/function.sqlite-single-query.php * @param resource $db * @param string $query * @param bool $first_row_only [optional] * @param bool $decode_binary [optional] * @return array */ function sqlite_single_query($db, $query, $first_row_only = null, $decode_binary = null) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Fetches the next row from a result set as an array * @link https://php.net/manual/en/function.sqlite-fetch-array.php * @param resource $result

The SQLite result resource. This parameter is not required when using the object-oriented method.

* @param int $result_type [optional] * @param bool $decode_binary [optional] * @return array|false

an array of the next row from a result set; false if the * next position is beyond the final row.

*/ function sqlite_fetch_array($result, $result_type = SQLITE_BOTH, $decode_binary = null) {} /** * Fetches the next row from a result set as an object * @link https://php.net/manual/en/function.sqlite-fetch-object.php * @param resource $result * @param string $class_name [optional] * @param null|array $ctor_params [optional] * @param bool $decode_binary [optional] * @return object */ function sqlite_fetch_object($result, $class_name = null, ?array $ctor_params = null, $decode_binary = null) {} /** * (PHP 5, PECL sqlite >= 1.0.1)
* Fetches the first column of a result set as a string * @link https://php.net/manual/en/function.sqlite-fetch-single.php * @param resource $result

The SQLite result resource. This parameter is not required when using the object-oriented method.

* @param bool $decode_binary [optional]

When the decode_binary * parameter is set to TRUE (the default), PHP will decode the binary encoding * it applied to the data if it was encoded using the * {@see sqlite_escape_string()}. You should normally leave this * value at its default, unless you are interoperating with databases created by * other sqlite capable applications.

* @return string

the first column value, as a string.

*/ function sqlite_fetch_single($result, $decode_binary = null) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Alias: * {@see sqlite_fetch_single} * @link https://php.net/manual/en/function.sqlite-fetch-string.php * @param resource $result

The SQLite result resource. This parameter is not required when using the object-oriented method.

* @param bool $decode_binary [optional]

When the decode_binary * parameter is set to TRUE (the default), PHP will decode the binary encoding * it applied to the data if it was encoded using the * {@see sqlite_escape_string()}. You should normally leave this * value at its default, unless you are interoperating with databases created by * other sqlite capable applications.

* @return string

the first column value, as a string.

*/ function sqlite_fetch_string($result, $decode_binary) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Fetches all rows from a result set as an array of arrays * @link https://php.net/manual/en/function.sqlite-fetch-all.php * @param int $result_type [optional] * @param bool $decode_binary [optional] * @return array

an array of the remaining rows in a result set. If called right * after * {@see sqlite_query}, it returns all rows. If called * after * {@see sqlite_fetch_array}, it returns the rest. If * there are no rows in a result set, it returns an empty array.

*

The column names returned by SQLITE_ASSOC and SQLITE_BOTH will be case-folded according to the value of the * {@link https://php.net/manual/en/sqlite.configuration.php#ini.sqlite.assoc-case sqlite.assoc_case} configuration option.

*/ function sqlite_fetch_all($result_type = null, $decode_binary = null) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Fetches the current row from a result set as an array * @link https://php.net/manual/en/function.sqlite-current.php * @param resource $result

The SQLite result resource. This parameter is not required when using the object-oriented method.

* @param int $result_type [optional]

The optional result_type parameter accepts a constant and determines how the returned array will be indexed. Using SQLITE_ASSOC will return only associative indices (named fields) while SQLITE_NUM will return only numerical indices (ordinal field numbers). SQLITE_BOTH will return both associative and numerical indices. SQLITE_BOTH is the default for this function.

* @param bool $decode_binary [optional]

When the decode_binary parameter is set to TRUE (the default), PHP will decode the binary encoding it applied to the data if it was encoded using the sqlite_escape_string(). You should normally leave this value at its default, unless you are interoperating with databases created by other sqlite capable applications.

* @return array|false an array of the current row from a result set; false if the * current position is beyond the final row. */ function sqlite_current($result, $result_type = null, $decode_binary = null) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Fetches a column from the current row of a result set * @link https://php.net/manual/en/function.sqlite-column.php * @param resource $result

The SQLite result resource. This parameter is not required when using the object-oriented method.

* @param mixed $index_or_name

* The column index or name to fetch. *

* @param bool $decode_binary [optional]

When the decode_binary * parameter is set to TRUE (the default), PHP will decode the binary encoding * it applied to the data if it was encoded using the * {@see sqlite_escape_string()}. You should normally leave this * value at its default, unless you are interoperating with databases created by * other sqlite capable applications.

* @return mixed the column value. */ function sqlite_column($result, $index_or_name, $decode_binary = null) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Returns the version of the linked SQLite library * @link https://php.net/manual/en/function.sqlite-libversion.php * @return string the library version, as a string. */ function sqlite_libversion() {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Returns the encoding of the linked SQLite library * @link https://php.net/manual/en/function.sqlite-libencoding.php * @return string the library encoding. */ function sqlite_libencoding() {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Returns the number of rows that were changed by the most * recent SQL statement * @link https://php.net/manual/en/function.sqlite-changes.php * @param $db * @return int the number of changed rows. */ function sqlite_changes($db) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Returns the rowid of the most recently inserted row * @link https://php.net/manual/en/function.sqlite-last-insert-rowid.php * @param resource $dbhandle

The SQLite Database resource; returned from * {@see sqlite_open()} when used procedurally. This parameter is not required when using the object-oriented method.

* @return int the row id, as an integer. */ function sqlite_last_insert_rowid($dbhandle) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Returns the number of rows in a buffered result set * @link https://php.net/manual/en/function.sqlite-num-rows.php * @param resource $result

* The SQLite result resource. This parameter is not required when using * the object-oriented method. *

*

Note:

This function cannot be used with * unbuffered result handles.

* @return int the number of rows, as an integer. */ function sqlite_num_rows($result) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Returns the number of fields in a result set * @link https://php.net/manual/en/function.sqlite-num-fields.php * @param resource $result

The SQLite result resource. This parameter is not required when using the object-oriented method.

* @return int the number of fields, as an integer. */ function sqlite_num_fields($result) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Returns the name of a particular field * @link https://php.net/manual/en/function.sqlite-field-name.php * @param resource $result

The SQLite result resource. This parameter is not required when using the object-oriented method.

* @param int $field_index

* The ordinal column number in the result set. *

* @return string the name of a field in an SQLite result set, given the ordinal * column number; false on error. */ function sqlite_field_name($result, $field_index) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Seek to a particular row number of a buffered result set * @link https://php.net/manual/en/function.sqlite-seek.php * @param resource $result

* The SQLite result resource. This parameter is not required when using * the object-oriented method. *

*

Note:

This function cannot be used with * unbuffered result handles.

* @param int $rownum

* The ordinal row number to seek to. The row number is zero-based (0 is * the first row). *

* @return bool false if the row does not exist, true otherwise. */ function sqlite_seek($result, $rownum) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Seek to the first row number * @link https://php.net/manual/en/function.sqlite-rewind.php * @param resource $result

* The SQLite result resource. This parameter is not required when using * the object-oriented method. *

*

Note:

This function cannot be used with * unbuffered result handles.

* @return bool false if there are no rows in the result set, true otherwise. */ function sqlite_rewind($result) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Seek to the next row number * @link https://php.net/manual/en/function.sqlite-next.php * @param resource $result

* The SQLite result resource. This parameter is not required when using * the object-oriented method. *

*

Note:

This function cannot be used with * unbuffered result handles.

* @return bool TRUE on success, or FALSE if there are no more rows. */ function sqlite_next($result) {} /** * Seek to the previous row number of a result set * @link https://php.net/manual/en/function.sqlite-prev.php * @param resource $result

* The SQLite result resource. This parameter is not required when using * the object-oriented method. *

*

Note:

This function cannot be used with * unbuffered result handles.

* @return bool true on success, or false if there are no more previous rows. */ function sqlite_prev($result) {} /** * Returns whether more rows are available * @link https://php.net/manual/en/function.sqlite-valid.php * @param resource $result

* The SQLite result resource. This parameter is not required when using * the object-oriented method. *

*

Note:

This function cannot be used with * unbuffered result handles.

* @return bool TRUE if there are more rows available from the * result handle, or FALSE otherwise. */ function sqlite_valid($result) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Finds whether or not more rows are available * @link https://php.net/manual/en/function.sqlite-has-more.php * @param resource $result

* The SQLite result resource. *

* @return bool TRUE if there are more rows available from the * result handle, or FALSE otherwise. */ function sqlite_has_more($result) {} /** * Returns whether or not a previous row is available * @link https://php.net/manual/en/function.sqlite-has-prev.php * @param resource $result

* The SQLite result resource. This parameter is not required when using * the object-oriented method. *

* @return bool TRUE if there are more previous rows available from the * result handle, or FALSE otherwise. */ function sqlite_has_prev($result) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Escapes a string for use as a query parameter * @link https://php.net/manual/en/function.sqlite-escape-string.php * @param string $item

* The string being quoted. *

*

* If the item contains a NUL * character, or if it begins with a character whose ordinal value is * 0x01, PHP will apply a binary encoding scheme so that * you can safely store and retrieve binary data. *

* @return string an escaped string for use in an SQLite SQL statement. */ function sqlite_escape_string($item) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Set busy timeout duration, or disable busy handlers * @link https://php.net/manual/en/function.sqlite-busy-timeout.php * @param resource $dbhandle

The SQLite Database resource; returned from * {@see sqlite_open()} when used procedurally. * This parameter is not required when using the object-oriented method.

* @param int $milliseconds

* The number of milliseconds. When set to * 0, busy handlers will be disabled and SQLite will * return immediately with a SQLITE_BUSY status code * if another process/thread has the database locked for an update. *

*

* PHP sets the default busy timeout to be 60 seconds when the database is * opened. *

*

* There are one thousand (1000) milliseconds in one second. *

* @return void */ function sqlite_busy_timeout($dbhandle, $milliseconds) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Returns the error code of the last error for a database * @link https://php.net/manual/en/function.sqlite-last-error.php * @param resource $dbhandle

The SQLite Database resource; returned from * {@see sqlite_open()} when used procedurally. * This parameter is not required when using the object-oriented method.

* @return int an error code, or 0 if no error occurred. */ function sqlite_last_error($dbhandle) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Returns the textual description of an error code * @link https://php.net/manual/en/function.sqlite-error-string.php * @param int $error_code

* The error code being used, which might be passed in from * {@see sqlite_last_error}. *

* @return string a human readable description of the error_code, * as a string. */ function sqlite_error_string($error_code) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Execute a query that does not prefetch and buffer all data * @link https://php.net/manual/en/function.sqlite-unbuffered-query.php * @param resource $dbhandle

The SQLite Database resource; returned from * {@see sqlite_open()} when used procedurally. * This parameter is not required when using the object-oriented method.

* @param string $query

* The query to be executed. *

*

* Data inside the query should be properly escaped. *

* @param int $result_type [optional] * @param string &$error_msg [optional]

* The specified variable will be filled if an error occurs. This is * specially important because SQL syntax errors can't be fetched using * the sqlite_last_error function. *

* @return SQLiteUnbuffered|false a result handle or false on failure. *

* sqlite_unbuffered_query returns a sequential * forward-only result set that can only be used to read each row, one after * the other. *

*/ function sqlite_unbuffered_query($dbhandle, $query, $result_type = SQLITE_BOTH, &$error_msg = null) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Register an aggregating UDF for use in SQL statements * @link https://php.net/manual/en/function.sqlite-create-aggregate.php * @param resource $dbhandle

The SQLite Database resource; returned from * {@see sqlite_open()} when used procedurally. * This parameter is not required when using the object-oriented method.

* @param string $function_name

* The name of the function used in SQL statements. *

* @param callable $step_func

* Callback function called for each row of the result set. *

* @param callable $finalize_func

* Callback function to aggregate the "stepped" data from each row. *

* @param int $num_args [optional]

* Hint to the SQLite parser if the callback function accepts a * predetermined number of arguments. *

* @return void */ function sqlite_create_aggregate($dbhandle, $function_name, $step_func, $finalize_func, $num_args = null) {} /** * (PHP 5, sqlite >= 1.0.0)
* Registers a "regular" User Defined Function for use in SQL statements * @link https://php.net/manual/en/function.sqlite-create-function.php * @param resource $dbhandle

The SQLite Database resource; returned from * {@see sqlite_open()} when used procedurally. * This parameter is not required when using the object-oriented method.

* @param string $function_name

* The name of the function used in SQL statements. *

* @param callable $callback

* Callback function to handle the defined SQL function. *

* Callback functions should return a type understood by SQLite (i.e. * scalar type). * @param int $num_args [optional]

* Hint to the SQLite parser if the callback function accepts a * predetermined number of arguments. *

* @return void */ function sqlite_create_function($dbhandle, $function_name, $callback, $num_args = null) {} /** * Opens a SQLite database and returns a SQLiteDatabase object * @link https://php.net/manual/en/function.sqlite-factory.php * @param string $filename

* The filename of the SQLite database. *

* @param int $mode [optional]

* The mode of the file. Intended to be used to open the database in * read-only mode. Presently, this parameter is ignored by the sqlite * library. The default value for mode is the octal value * 0666 and this is the recommended value. *

* @param string &$error_message [optional]

* Passed by reference and is set to hold a descriptive error message * explaining why the database could not be opened if there was an error. *

* @return SQLiteDatabase|null a SQLiteDatabase object on success, null on error. */ function sqlite_factory($filename, $mode = null, &$error_message = null) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Encode binary data before returning it from an UDF * @link https://php.net/manual/en/function.sqlite-udf-encode-binary.php * @param string $data

* The string being encoded. *

* @return string The encoded string. */ function sqlite_udf_encode_binary($data) {} /** * (PHP 5, PECL sqlite >= 1.0.0)
* Decode binary data passed as parameters to an UDF * @link https://php.net/manual/en/function.sqlite-udf-decode-binary.php * @param string $data

* The encoded data that will be decoded, data that was applied by either * sqlite_udf_encode_binary or * sqlite_escape_string. *

* @return string The decoded string. */ function sqlite_udf_decode_binary($data) {} /** * Return an array of column types from a particular table * @link https://php.net/manual/en/function.sqlite-fetch-column-types.php * @param string $table_name

* The table name to query. *

* @param resource $dbhandle

The SQLite Database resource; returned from * {@see sqlite_open()} when used procedurally. * This parameter is not required when using the object-oriented method.

* @param int $result_type [optional]

* The optional result_type parameter accepts a * constant and determines how the returned array will be indexed. Using * SQLITE_ASSOC will return only associative indices * (named fields) while SQLITE_NUM will return only * numerical indices (ordinal field numbers). * SQLITE_BOTH will return both associative and * numerical indices. SQLITE_ASSOC is the default for * this function. *

* @return array|false an array of column data types; false on error. */ function sqlite_fetch_column_types($dbhandle, $table_name, $result_type = null) {} /** * Columns are returned into the array having both a numerical index * and the field name as the array index. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_BOTH', 3); /** * Columns are returned into the array having a numerical index to the * fields. This index starts with 0, the first field in the result. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_NUM', 2); /** * Columns are returned into the array having the field name as the array * index. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_ASSOC', 1); /** * Successful result. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_OK', 0); /** * SQL error or missing database. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_ERROR', 1); /** * An internal logic error in SQLite. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_INTERNAL', 2); /** * Access permission denied. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_PERM', 3); /** * Callback routine requested an abort. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_ABORT', 4); /** * The database file is locked. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_BUSY', 5); /** * A table in the database is locked. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_LOCKED', 6); /** * Memory allocation failed. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_NOMEM', 7); /** * Attempt to write a readonly database. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_READONLY', 8); /** * Operation terminated internally. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_INTERRUPT', 9); /** * Disk I/O error occurred. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_IOERR', 10); /** * The database disk image is malformed. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_CORRUPT', 11); /** * (Internal) Table or record not found. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_NOTFOUND', 12); /** * Insertion failed because database is full. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_FULL', 13); /** * Unable to open the database file. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_CANTOPEN', 14); /** * Database lock protocol error. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_PROTOCOL', 15); /** * (Internal) Database table is empty. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_EMPTY', 16); /** * The database schema changed. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_SCHEMA', 17); /** * Too much data for one row of a table. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_TOOBIG', 18); /** * Abort due to constraint violation. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_CONSTRAINT', 19); /** * Data type mismatch. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_MISMATCH', 20); /** * Library used incorrectly. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_MISUSE', 21); /** * Uses of OS features not supported on host. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_NOLFS', 22); /** * Authorized failed. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_AUTH', 23); /** * File opened that is not a database file. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_NOTADB', 26); /** * Auxiliary database format error. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_FORMAT', 24); /** * Internal process has another row ready. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_ROW', 100); /** * Internal process has finished executing. * @link https://php.net/manual/en/sqlite.constants.php */ define('SQLITE_DONE', 101); *
SNMP_VALUE_LIBRARY
The return values will be as returned by the Net-SNMP library.
*
SNMP_VALUE_PLAIN
The return values will be the plain value without the SNMP type hint.
*
SNMP_VALUE_OBJECT
The return values will be objects with the properties "value" and "type", where the latter is one of the SNMP_OCTET_STR, SNMP_COUNTER etc. constants. The way "value" is returned is based on which one of SNMP_VALUE_LIBRARY, SNMP_VALUE_PLAIN is set
*
* @link https://secure.php.net/manual/en/class.snmp.php#snmp.props.max-oids */ public $valueretrieval; /** * @var bool Value of quick_print within the NET-SNMP library *

Sets the value of quick_print within the NET-SNMP library. When this is set (1), the SNMP library will return 'quick printed' values. This means that just the value will be printed. When quick_print is not enabled (default) the UCD SNMP library prints extra information including the type of the value (i.e. IpAddress or OID). Additionally, if quick_print is not enabled, the library prints additional hex values for all strings of three characters or less. * @link https://secure.php.net/manual/en/class.snmp.php#snmp.props.quick-print */ public $quick_print; /** * @var bool Controls the way enum values are printed *

Parameter toggles if walk/get etc. should automatically lookup enum values in the MIB and return them together with their human readable string. * @link https://secure.php.net/manual/en/class.snmp.php#snmp.props.enum-print */ public $enum_print; /** * @var int Controls OID output format *

OID .1.3.6.1.2.1.1.3.0 representation for various oid_output_format values *

*
SNMP_OID_OUTPUT_FULL
.iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance
*
SNMP_OID_OUTPUT_NUMERIC
.1.3.6.1.2.1.1.3.0
*
SNMP_OID_OUTPUT_MODULE
DISMAN-EVENT-MIB::sysUpTimeInstance
*
SNMP_OID_OUTPUT_SUFFIX
sysUpTimeInstance
*
SNMP_OID_OUTPUT_UCD
system.sysUpTime.sysUpTimeInstance
*
SNMP_OID_OUTPUT_NONE
Undefined
*
* @link https://secure.php.net/manual/en/class.snmp.php#snmp.props.oid-output-format */ public $oid_output_format; /** * @var bool Controls disabling check for increasing OID while walking OID tree *

Some SNMP agents are known for returning OIDs out of order but can complete the walk anyway. Other agents return OIDs that are out of order and can cause SNMP::walk() to loop indefinitely until memory limit will be reached. PHP SNMP library by default performs OID increasing check and stops walking on OID tree when it detects possible loop with issuing warning about non-increasing OID faced. Set oid_increasing_check to FALSE to disable this check. * @link https://secure.php.net/manual/en/class.snmp.php#snmp.props.oid-increasing-check */ public $oid_increasing_check; /** * @var int Controls which failures will raise SNMPException instead of warning. Use bitwise OR'ed SNMP::ERRNO_* constants. By default all SNMP exceptions are disabled. * @link https://secure.php.net/manual/en/class.snmp.php#snmp.props.exceptions-enabled */ public $exceptions_enabled; /** * @var array Read-only property with remote agent configuration: hostname, port, default timeout, default retries count * @link https://secure.php.net/manual/en/class.snmp.php#snmp.props.info */ public $info; public const VERSION_1 = 0; public const VERSION_2c = 1; public const VERSION_2C = 1; public const VERSION_3 = 3; public const ERRNO_NOERROR = 0; public const ERRNO_ANY = 126; public const ERRNO_GENERIC = 2; public const ERRNO_TIMEOUT = 4; public const ERRNO_ERROR_IN_REPLY = 8; public const ERRNO_OID_NOT_INCREASING = 16; public const ERRNO_OID_PARSING_ERROR = 32; public const ERRNO_MULTIPLE_SET_QUERIES = 64; /** * Creates SNMP instance representing session to remote SNMP agent * @link https://php.net/manual/en/snmp.construct.php * @param int $version

SNMP protocol version: * SNMP::VERSION_1, * SNMP::VERSION_2C, * SNMP::VERSION_3.

* @param string $hostname The SNMP agent. hostname may be suffixed with * optional SNMP agent port after colon. IPv6 addresses must be enclosed in square * brackets if used with port. If FQDN is used for hostname * it will be resolved by php-snmp library, not by Net-SNMP engine. Usage * of IPv6 addresses when specifying FQDN may be forced by enclosing FQDN * into square brackets. Here it is some examples: * * * * * * * * * * * *
IPv4 with default port127.0.0.1
IPv6 with default port::1 or [::1]
IPv4 with specific port127.0.0.1:1161
IPv6 with specific port[::1]:1161
FQDN with default porthost.domain
FQDN with specific porthost.domain:1161
FQDN with default port, force usage of IPv6 address[host.domain]
FQDN with specific port, force usage of IPv6 address[host.domain]:1161
* @param string $community

The purpuse of community is * SNMP version specific:

* * * * * * *
SNMP::VERSION_1SNMP community
SNMP::VERSION_2CSNMP community
SNMP::VERSION_3SNMPv3 securityName
* @param int $timeout [optional] The number of microseconds until the first timeout. * @param int $retries [optional] The number of retries in case timeout occurs. * @since 5.4 */ public function __construct($version, $hostname, $community, $timeout = 1000000, $retries = 5) {} /** * Close SNMP session * @link https://php.net/manual/en/snmp.close.php * @return bool TRUE on success or FALSE on failure. * @since 5.4 */ public function close() {} /** * Configures security-related SNMPv3 session parameters * @link https://php.net/manual/en/snmp.setsecurity.php * @param string $sec_level the security level (noAuthNoPriv|authNoPriv|authPriv) * @param string $auth_protocol [optional] the authentication protocol (MD5 or SHA) * @param string $auth_passphrase [optional] the authentication pass phrase * @param string $priv_protocol [optional] the privacy protocol (DES or AES) * @param string $priv_passphrase [optional] the privacy pass phrase * @param string $contextName [optional] the context name * @param string $contextEngineID [optional] the context EngineID * @return bool TRUE on success or FALSE on failure. * @since 5.4 */ public function setSecurity($sec_level, $auth_protocol, $auth_passphrase, $priv_protocol, $priv_passphrase, $contextName, $contextEngineID) {} /** * Fetch an SNMP object * @link https://php.net/manual/en/snmp.get.php * @param mixed $object_id The SNMP object (OID) or objects * @param bool $preserve_keys [optional] When object_id is a array and preserve_keys set to TRUE keys in results will be taken exactly as in object_id, otherwise SNMP::oid_output_format property is used to determinate the form of keys. * @return mixed SNMP objects requested as string or array * depending on object_id type or FALSE on error. * @since 5.4 */ public function get($object_id, $preserve_keys = false) {} /** * Fetch an SNMP object which * follows the given object id * @link https://php.net/manual/en/snmp.getnext.php * @param mixed $object_id

* The SNMP object (OID) or objects *

* @return mixed SNMP objects requested as string or array * depending on object_id type or FALSE on error. * @since 5.4 */ public function getnext($object_id) {} /** * Fetch SNMP object subtree * @link https://php.net/manual/en/snmp.walk.php * @param string $object_id

Root of subtree to be fetched

* @param bool $suffix_as_keys [optional]

By default full OID notation is used for keys in output array. If set to TRUE subtree prefix will be removed from keys leaving only suffix of object_id.

* @param int $max_repetitions [optional]

This specifies the maximum number of iterations over the repeating variables. The default is to use this value from SNMP object.

* @param int $non_repeaters [optional]

This specifies the number of supplied variables that should not be iterated over. The default is to use this value from SNMP object.

* @return array|false associative array of the SNMP object ids and their values on success or FALSE on error. * When a SNMP error occures SNMP::getErrno and * SNMP::getError can be used for retrieving error * number (specific to SNMP extension, see class constants) and error message * respectively. * @since 5.4 */ public function walk($object_id, $suffix_as_keys = false, $max_repetitions, $non_repeaters) {} /** * Set the value of an SNMP object * @link https://php.net/manual/en/snmp.set.php * @param string $object_id

The SNMP object id

* @since 5.4 * *

When count of OIDs in object_id array is greater than * max_oids object property set method will have to use multiple queries * to perform requested value updates. In this case type and value checks * are made per-chunk so second or subsequent requests may fail due to * wrong type or value for OID requested. To mark this a warning is * raised when count of OIDs in object_id array is greater than max_oids. * When count of OIDs in object_id array is greater than max_oids object property set method will have to use multiple queries to perform requested value updates. In this case type and value checks are made per-chunk so second or subsequent requests may fail due to wrong type or value for OID requested. To mark this a warning is raised when count of OIDs in object_id array is greater than max_oids.

* @param mixed $type

The MIB defines the type of each object id. It has to be specified as a single character from the below list.

* types: * * * * * * * * * * * * * * *
=The type is taken from the MIB
iINTEGER
uINTEGER
sSTRING
xHEX STRING
dDECIMAL STRING
nNULLOBJ
oOBJID
tTIMETICKS
aIPADDRESS
bBITS
*

* If OPAQUE_SPECIAL_TYPES was defined while compiling the SNMP library, the following are also valid: *

* types: * * * * * * * *
Uunsigned int64
Isigned int64
Ffloat
Ddouble
*

* Most of these will use the obvious corresponding ASN.1 type. 's', 'x', 'd' and 'b' are all different ways of specifying an OCTET STRING value, and * the 'u' unsigned type is also used for handling Gauge32 values. *

* *

* If the MIB-Files are loaded by into the MIB Tree with "snmp_read_mib" or by specifying it in the libsnmp config, '=' may be used as * the type parameter for all object ids as the type can then be automatically read from the MIB. *

* *

* Note that there are two ways to set a variable of the type BITS like e.g. * "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}": *

*
    *
  • * Using type "b" and a list of bit numbers. This method is not recommended since GET query for the same OID would return e.g. 0xF8. *
  • *
  • * Using type "x" and a hex number but without(!) the usual "0x" prefix. *
  • *
*

* See examples section for more details. *

* @param mixed $value

* The new value.

* @return bool TRUE on success or FALSE on failure. */ public function set($object_id, $type, $value) {} /** * Get last error code * @link https://php.net/manual/en/snmp.geterrno.php * @return int one of SNMP error code values described in constants chapter. * @since 5.4 */ public function getErrno() {} /** * Get last error message * @link https://php.net/manual/en/snmp.geterror.php * @return string String describing error from last SNMP request. * @since 5.4 */ public function getError() {} } /** * Represents an error raised by SNMP. You should not throw a * SNMPException from your own code. * See Exceptions for more * information about Exceptions in PHP. * @link https://php.net/manual/en/class.snmpexception.php */ class SNMPException extends RuntimeException { /** * @var string Textual error message. Exception::getMessage() to access it. */ protected $message; /** * @var string SNMP library error code. Use Exception::getCode() to access it. */ protected $code; } /** * Fetch an SNMP object * @link https://php.net/manual/en/function.snmpget.php * @param string $hostname

* The SNMP agent. *

* @param string $community

* The read community. *

* @param string $object_id

* The SNMP object. *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

* The number of times to retry if timeouts occur. *

* @return string|false SNMP object value on success or FALSE on error. */ function snmpget($hostname, $community, $object_id, $timeout = 1000000, $retries = 5) {} /** * Fetch the SNMP object which follows the given object id * @link https://php.net/manual/en/function.snmpgetnext.php * @param string $host

The hostname of the SNMP agent (server).

* @param string $community

The read community.

* @param string $object_id

The SNMP object id which precedes the wanted one.

* @param int $timeout [optional]

The number of microseconds until the first timeout.

* @param int $retries [optional]

The number of times to retry if timeouts occur.

* @return string|false SNMP object value on success or FALSE on error. * In case of an error, an E_WARNING message is shown. */ function snmpgetnext($host, $community, $object_id, $timeout = 1000000, $retries = 5) {} /** * Fetch all the SNMP objects from an agent * @link https://php.net/manual/en/function.snmpwalk.php * @param string $hostname

* The SNMP agent (server). *

* @param string $community

* The read community. *

* @param string $object_id

* If NULL, object_id is taken as the root of * the SNMP objects tree and all objects under that tree are returned as * an array. *

*

* If object_id is specified, all the SNMP objects * below that object_id are returned. *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

The number of times to retry if timeouts occur.

* @return array an array of SNMP object values starting from the * object_id as root or FALSE on error. */ function snmpwalk($hostname, $community, $object_id, $timeout = 1000000, $retries = 5) {} /** * Return all objects including their respective object ID within the specified one * @link https://php.net/manual/en/function.snmprealwalk.php * @param string $host

The hostname of the SNMP agent (server).

* @param string $community

The read community.

* @param string $object_id

The SNMP object id which precedes the wanted one.

* @param int $timeout [optional]

The number of microseconds until the first timeout.

* @param int $retries [optional]

The number of times to retry if timeouts occur.

* @return array|false an associative array of the SNMP object ids and their values on success or FALSE on error. * In case of an error, an E_WARNING message is shown. */ function snmprealwalk($host, $community, $object_id, $timeout = 1000000, $retries = 5) {} /** * Query for a tree of information about a network entity * @link https://php.net/manual/en/function.snmpwalkoid.php * @param string $hostname

* The SNMP agent. *

* @param string $community

* The read community. *

* @param string $object_id

* If NULL, object_id is taken as the root of * the SNMP objects tree and all objects under that tree are returned as * an array. *

*

* If object_id is specified, all the SNMP objects * below that object_id are returned. *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

* The number of times to retry if timeouts occur. *

* @return array an associative array with object ids and their respective * object value starting from the object_id * as root or FALSE on error. */ function snmpwalkoid($hostname, $community, $object_id, $timeout = 1000000, $retries = 5) {} /** * Set the value of an SNMP object * @link https://php.net/manual/en/function.snmpset.php * @param string $host

* The hostname of the SNMP agent (server). *

* @param string $community

* The write community. *

* @param string $object_id

* The SNMP object id. *

* @param string $type The MIB defines the type of each object id. It has to be specified as a single character from the below list. *

* types * =The type is taken from the MIB * iINTEGER * uINTEGER * sSTRING * xHEX STRING * dDECIMAL STRING * nNULLOBJ * oOBJID * tTIMETICKS * aIPADDRESS * bBITS * * If OPAQUE_SPECIAL_TYPES was defined while compiling the SNMP library, the following are also valid: *

* types * Uunsigned int64 * Isigned int64 * Ffloat * Ddouble * * Most of these will use the obvious corresponding ASN.1 type. 's', 'x', 'd' and 'b' are all different ways of specifying an OCTET STRING value, and * the 'u' unsigned type is also used for handling Gauge32 values. *

* If the MIB-Files are loaded by into the MIB Tree with "snmp_read_mib" or by specifying it in the libsnmp config, '=' may be used as * the type parameter for all object ids as the type can then be automatically read from the MIB. *

* Note that there are two ways to set a variable of the type BITS like e.g. * "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}": *

* Using type "b" and a list of bit numbers. This method is not recommended since GET query for the same OID would return e.g. 0xF8. * Using type "x" and a hex number but without(!) the usual "0x" prefix. * See examples section for more details. *

* @param mixed $value

* The new value. *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

* The number of times to retry if timeouts occur. *

* @return bool TRUE on success or FALSE on failure. *

* If the SNMP host rejects the data type, an E_WARNING message like "Warning: Error in packet. Reason: (badValue) The value given has the wrong type or length." is shown. * If an unknown or invalid OID is specified the warning probably reads "Could not add variable". *

*/ function snmpset($host, $community, $object_id, $type, $value, $timeout = 1000000, $retries = 5) {} /** * Fetches the current value of the UCD library's quick_print setting * @link https://php.net/manual/en/function.snmp-get-quick-print.php * @return bool TRUE if quick_print is on, FALSE otherwise. */ function snmp_get_quick_print() {} /** * Set the value of quick_print within the UCD SNMP library * @link https://php.net/manual/en/function.snmp-set-quick-print.php * @param bool $quick_print * @return bool No value is returned. */ function snmp_set_quick_print($quick_print) {} /** * Return all values that are enums with their enum value instead of the raw integer * @link https://php.net/manual/en/function.snmp-set-enum-print.php * @param int $enum_print

* As the value is interpreted as boolean by the Net-SNMP library, it can only be "0" or "1". *

* @return bool */ function snmp_set_enum_print($enum_print) {} /** * Set the OID output format * @link https://php.net/manual/en/function.snmp-set-oid-output-format.php * @param int $oid_format [optional] * OID .1.3.6.1.2.1.1.3.0 representation for various oid_format values * * *
SNMP_OID_OUTPUT_FULL.iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance
SNMP_OID_OUTPUT_NUMERIC.1.3.6.1.2.1.1.3.0
*

Begining from PHP 5.4.0 four additional constants available: * * * * * *
SNMP_OID_OUTPUT_MODULEDISMAN-EVENT-MIB::sysUpTimeInstance
SNMP_OID_OUTPUT_SUFFIXsysUpTimeInstance
SNMP_OID_OUTPUT_UCDsystem.sysUpTime.sysUpTimeInstance
SNMP_OID_OUTPUT_NONEUndefined
*

* @return bool No value is returned. */ function snmp_set_oid_output_format($oid_format = SNMP_OID_OUTPUT_MODULE) {} /** * Set the oid output format * @link https://php.net/manual/en/function.snmp-set-oid-numeric-print.php * @param int $oid_format * @return void */ function snmp_set_oid_numeric_print($oid_format) {} /** * Fetch an SNMP object * @link https://php.net/manual/en/function.snmp2-get.php * @param string $host

* The SNMP agent. *

* @param string $community

* The read community. *

* @param string $object_id

* The SNMP object. *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

* The number of times to retry if timeouts occur. *

* @return string|false SNMP object value on success or FALSE on error. */ function snmp2_get($host, $community, $object_id, $timeout = 1000000, $retries = 5) {} /** * Fetch the SNMP object which follows the given object id * @link https://php.net/manual/en/function.snmp2-getnext.php * @param string $host

* The hostname of the SNMP agent (server). *

* @param string $community

* The read community. *

* @param string $object_id

* The SNMP object id which precedes the wanted one. *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

* The number of times to retry if timeouts occur. *

* @return string|false SNMP object value on success or FALSE on error. * In case of an error, an E_WARNING message is shown. */ function snmp2_getnext($host, $community, $object_id, $timeout = 1000000, $retries = 5) {} /** * Fetch all the SNMP objects from an agent * @link https://php.net/manual/en/function.snmp2-walk.php * @param string $host

* The SNMP agent (server). *

* @param string $community

* The read community. *

* @param string $object_id

* If NULL, object_id is taken as the root of * the SNMP objects tree and all objects under that tree are returned as * an array. *

*

* If object_id is specified, all the SNMP objects * below that object_id are returned. *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

* The number of times to retry if timeouts occur. *

* @return array an array of SNMP object values starting from the * object_id as root or FALSE on error. */ function snmp2_walk($host, $community, $object_id, $timeout = 1000000, $retries = 5) {} /** * Return all objects including their respective object ID within the specified one * @link https://php.net/manual/en/function.snmp2-real-walk.php * @param string $host

* The hostname of the SNMP agent (server). *

* @param string $community

* The read community. *

* @param string $object_id

* The SNMP object id which precedes the wanted one. *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

* The number of times to retry if timeouts occur. *

* @return array|false an associative array of the SNMP object ids and their values on success or FALSE on error. * In case of an error, an E_WARNING message is shown. */ function snmp2_real_walk($host, $community, $object_id, $timeout = 1000000, $retries = 5) {} /** * Set the value of an SNMP object * @link https://php.net/manual/en/function.snmp2-set.php * @param string $host

* The hostname of the SNMP agent (server). *

* @param string $community

* The write community. *

* @param string $object_id

* The SNMP object id. *

* @param string $type

The MIB defines the type of each object id. It has to be specified as a single character from the below list. *

*

types:

* * * * * * * * * * * * *
=The type is taken from the MIB
iINTEGER
uINTEGER
sSTRING
xHEX STRING
dDECIMAL STRING
nNULLOBJ
oOBJID
tTIMETICKS
aIPADDRESS
bBITS
*

If OPAQUE_SPECIAL_TYPES was defined while compiling the SNMP library, the following are also valid: *

*

types:

* * * * * *
Uunsigned int64
Isigned int64
Ffloat
Ddouble
*

Most of these will use the obvious corresponding ASN.1 type. 's', 'x', 'd' and 'b' are all different ways of specifying an OCTET STRING value, and * the 'u' unsigned type is also used for handling Gauge32 values. *

* If the MIB-Files are loaded by into the MIB Tree with "snmp_read_mib" or by specifying it in the libsnmp config, '=' may be used as * the type parameter for all object ids as the type can then be automatically read from the MIB. *

* Note that there are two ways to set a variable of the type BITS like e.g. * "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}": *

* Using type "b" and a list of bit numbers. This method is not recommended since GET query for the same OID would return e.g. 0xF8. * Using type "x" and a hex number but without(!) the usual "0x" prefix. * See examples section for more details. *

* @param string $value

* The new value. *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

* The number of times to retry if timeouts occur. *

* @return bool TRUE on success or FALSE on failure. *

* If the SNMP host rejects the data type, an E_WARNING message like "Warning: Error in packet. Reason: (badValue) The value given has the wrong type or length." is shown. * If an unknown or invalid OID is specified the warning probably reads "Could not add variable". *

*/ function snmp2_set($host, $community, $object_id, $type, $value, $timeout = 1000000, $retries = 5) {} /** * Fetch an SNMP object * @link https://php.net/manual/en/function.snmp3-get.php * @param string $host

* The hostname of the SNMP agent (server). *

* @param string $sec_name

* the security name, usually some kind of username *

* @param string $sec_level

* the security level (noAuthNoPriv|authNoPriv|authPriv) *

* @param string $auth_protocol

* the authentication protocol (MD5 or SHA) *

* @param string $auth_passphrase

* the authentication pass phrase *

* @param string $priv_protocol

* the privacy protocol (DES or AES) *

* @param string $priv_passphrase

* the privacy pass phrase *

* @param string $object_id

* The SNMP object id. *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

* The number of times to retry if timeouts occur. *

* @return string|false SNMP object value on success or FALSE on error. */ function snmp3_get($host, $sec_name, $sec_level, $auth_protocol, $auth_passphrase, $priv_protocol, $priv_passphrase, $object_id, $timeout = 1000000, $retries = 5) {} /** * Fetch the SNMP object which follows the given object id * @link https://php.net/manual/en/function.snmp3-getnext.php * @param string $host

* The hostname of the * SNMP agent (server). *

* @param string $sec_name

* the security name, usually some kind of username *

* @param string $sec_level

* the security level (noAuthNoPriv|authNoPriv|authPriv) *

* @param string $auth_protocol

* the authentication protocol (MD5 or SHA) *

* @param string $auth_passphrase

* the authentication pass phrase *

* @param string $priv_protocol

* the privacy protocol (DES or AES) *

* @param string $priv_passphrase

* the privacy pass phrase *

* @param string $object_id

* The SNMP object id. *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

* The number of times to retry if timeouts occur. *

* @return string|false SNMP object value on success or FALSE on error. * In case of an error, an E_WARNING message is shown. */ function snmp3_getnext($host, $sec_name, $sec_level, $auth_protocol, $auth_passphrase, $priv_protocol, $priv_passphrase, $object_id, $timeout = 1000000, $retries = 5) {} /** * Fetch all the SNMP objects from an agent * @link https://php.net/manual/en/function.snmp3-walk.php * @param string $host

* The hostname of the SNMP agent (server). *

* @param string $sec_name

* the security name, usually some kind of username *

* @param string $sec_level

* the security level (noAuthNoPriv|authNoPriv|authPriv) *

* @param string $auth_protocol

* the authentication protocol (MD5 or SHA) *

* @param string $auth_passphrase

* the authentication pass phrase *

* @param string $priv_protocol

* the privacy protocol (DES or AES) *

* @param string $priv_passphrase

* the privacy pass phrase *

* @param string $object_id

* If NULL, object_id is taken as the root of * the SNMP objects tree and all objects under that tree are returned as * an array. *

*

* If object_id is specified, all the SNMP objects * below that object_id are returned. *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

* The number of times to retry if timeouts occur. *

* @return array an array of SNMP object values starting from the * object_id as root or FALSE on error. */ function snmp3_walk($host, $sec_name, $sec_level, $auth_protocol, $auth_passphrase, $priv_protocol, $priv_passphrase, $object_id, $timeout = 1000000, $retries = 5) {} /** * Return all objects including their respective object ID within the specified one * @link https://php.net/manual/en/function.snmp3-real-walk.php * @param string $host

* The hostname of the * SNMP agent (server). *

* @param string $sec_name

* the security name, usually some kind of username *

* @param string $sec_level

* the security level (noAuthNoPriv|authNoPriv|authPriv) *

* @param string $auth_protocol

* the authentication protocol (MD5 or SHA) *

* @param string $auth_passphrase

* the authentication pass phrase *

* @param string $priv_protocol

* the privacy protocol (DES or AES) *

* @param string $priv_passphrase

* the privacy pass phrase *

* @param string $object_id

* The SNMP object id. *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

* The number of times to retry if timeouts occur. *

* @return array an associative array of the * SNMP object ids and their values on success or FALSE on error. * In case of an error, an E_WARNING message is shown. */ function snmp3_real_walk($host, $sec_name, $sec_level, $auth_protocol, $auth_passphrase, $priv_protocol, $priv_passphrase, $object_id, $timeout = null, $retries = null) {} /** * Set the value of an SNMP object * @link https://php.net/manual/en/function.snmp3-set.php * @param string $host

* The hostname of the SNMP agent (server). *

* @param string $sec_name

* the security name, usually some kind of username *

* @param string $sec_level

* the security level (noAuthNoPriv|authNoPriv|authPriv) *

* @param string $auth_protocol

* the authentication protocol (MD5 or SHA) *

* @param string $auth_passphrase

* the authentication pass phrase *

* @param string $priv_protocol

* the privacy protocol (DES or AES) *

* @param string $priv_passphrase

* the privacy pass phrase *

* @param string $object_id

* The SNMP object id. *

* @param string $type

The MIB defines the type of each object id. It has to be specified as a single character from the below list.

*

types:

* * * * * * * * * * * * *
=The type is taken from the MIB
iINTEGER
uINTEGER
sSTRING
xHEX STRING
dDECIMAL STRING
nNULLOBJ
oOBJID
tTIMETICKS
aIPADDRESS
bBITS
*

If OPAQUE_SPECIAL_TYPES was defined while compiling the SNMP library, the following are also valid: *

*

types:

* * * * * *
Uunsigned int64
Isigned int64
Ffloat
Ddouble
*

Most of these will use the obvious corresponding ASN.1 type. 's', 'x', 'd' and 'b' are all different ways of specifying an OCTET STRING value, and * the 'u' unsigned type is also used for handling Gauge32 values. *

*

* If the MIB-Files are loaded by into the MIB Tree with "snmp_read_mib" or by specifying it in the libsnmp config, '=' may be used as * the type parameter for all object ids as the type can then be automatically read from the MIB. *

*

* Note that there are two ways to set a variable of the type BITS like e.g. * "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}": *

*

* Using type "b" and a list of bit numbers. This method is not recommended since GET query for the same OID would return e.g. 0xF8. * Using type "x" and a hex number but without(!) the usual "0x" prefix. * See examples section for more details. *

* @param string $value

* The new value *

* @param int $timeout [optional]

* The number of microseconds until the first timeout. *

* @param int $retries [optional]

* The number of times to retry if timeouts occur. *

* @return bool TRUE on success or FALSE on failure. *

* If the SNMP host rejects the data type, an E_WARNING message like "Warning: Error in packet. Reason: (badValue) The value given has the wrong type or length." is shown. * If an unknown or invalid OID is specified the warning probably reads "Could not add variable". *

*/ function snmp3_set($host, $sec_name, $sec_level, $auth_protocol, $auth_passphrase, $priv_protocol, $priv_passphrase, $object_id, $type, $value, $timeout = 1000000, $retries = 5) {} /** * Specify the method how the SNMP values will be returned * @link https://php.net/manual/en/function.snmp-set-valueretrieval.php * @param int $method * types * * * * * * * * * * * * *
SNMP_VALUE_LIBRARYThe return values will be as returned by the Net-SNMP library.
SNMP_VALUE_PLAINThe return values will be the plain value without the SNMP type hint.
SNMP_VALUE_OBJECT * The return values will be objects with the properties "value" and "type", where the latter * is one of the SNMP_OCTET_STR, SNMP_COUNTER etc. constants. The * way "value" is returned is based on which one of constants * SNMP_VALUE_LIBRARY, SNMP_VALUE_PLAIN is set. *
* @return bool */ function snmp_set_valueretrieval($method) {} /** * Return the method how the SNMP values will be returned * @link https://php.net/manual/en/function.snmp-get-valueretrieval.php * @return int OR-ed combitantion of constants ( SNMP_VALUE_LIBRARY or * SNMP_VALUE_PLAIN ) with * possible SNMP_VALUE_OBJECT set. */ function snmp_get_valueretrieval() {} /** * Reads and parses a MIB file into the active MIB tree * @link https://php.net/manual/en/function.snmp-read-mib.php * @param string $filename

The filename of the MIB.

* @return bool */ function snmp_read_mib($filename) {} /** * As of 5.4 * @link https://php.net/manual/en/snmp.constants.php */ define('SNMP_OID_OUTPUT_SUFFIX', 1); /** * As of 5.4 * @link https://php.net/manual/en/snmp.constants.php */ define('SNMP_OID_OUTPUT_MODULE', 2); /** * As of 5.2 * @link https://php.net/manual/en/snmp.constants.php */ define('SNMP_OID_OUTPUT_FULL', 3); /** * As of 5.2 * @link https://php.net/manual/en/snmp.constants.php */ define('SNMP_OID_OUTPUT_NUMERIC', 4); /** * As of 5.4 * @link https://php.net/manual/en/snmp.constants.php */ define('SNMP_OID_OUTPUT_UCD', 5); /** * As of 5.4 * @link https://php.net/manual/en/snmp.constants.php */ define('SNMP_OID_OUTPUT_NONE', 6); define('SNMP_VALUE_LIBRARY', 0); define('SNMP_VALUE_PLAIN', 1); define('SNMP_VALUE_OBJECT', 2); define('SNMP_BIT_STR', 3); define('SNMP_OCTET_STR', 4); define('SNMP_OPAQUE', 68); define('SNMP_NULL', 5); define('SNMP_OBJECT_ID', 6); define('SNMP_IPADDRESS', 64); define('SNMP_COUNTER', 66); define('SNMP_UNSIGNED', 66); define('SNMP_TIMETICKS', 67); define('SNMP_UINTEGER', 71); define('SNMP_INTEGER', 2); define('SNMP_COUNTER64', 70); // End of snmp v.0.1 getCode(). * This can be compared against the `SIMDJSON_ERR_*` constants. * * Before simdjson 2.1.0, a regular RuntimeException with an error code of 0 was thrown. */ class SimdJsonException extends RuntimeException {} /** * Thrown for error conditions on fields such as $depth that are not expected to be * from user-provided JSON, with similar behavior to php 8.0. * * NOTE: https://www.php.net/valueerror was added in php 8.0. * In older php versions, this extends Error instead. * * When support for php 8.0 is dropped completely, * a major release of simdjson will likely switch to a standard ValueError. */ class SimdJsonValueError extends ValueError {} #!/usr/bin/env bash echo "Installing composer packages..." docker-compose -f docker-compose.yml run test_runner composer install --ignore-platform-reqs echo "Checking stub map..." docker-compose -f docker-compose.yml run test_runner vendor/bin/phpunit --testsuite Check_Stub_Map phpVersions=("7.1" "7.2" "7.3" "7.4" "8.0" "8.1") for i in "${phpVersions[@]}" do export PHP_VERSION=$i SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" cd "$SCRIPT_DIR" || exit echo "Building docker container for PHP_$i..." docker-compose -f docker-compose.yml build echo "Dumping reflection data to file $SCRIPT_DIR/ReflectionData.json for PHP_$i..." docker-compose -f docker-compose.yml run -e PHP_VERSION="$i" php_under_test /usr/local/bin/php tests/Tools/dump-reflection-to-file.php ReflectionData.json echo "Running tests agains PHP_$i..." docker-compose -f docker-compose.yml run -e PHP_VERSION="$i" test_runner vendor/bin/phpunit --testsuite PHP_"$i" echo "Removing file $SCRIPT_DIR/ReflectionData.json with reflection data for PHP_$i..." rm -f "$SCRIPT_DIR/ReflectionData.json" done * A mailbox name consists of a server and a mailbox path on this server. * The special name INBOX stands for the current users * personal mailbox. Mailbox names that contain international characters * besides those in the printable ASCII space have to be encoded width * imap_utf7_encode. *

*

* The server part, which is enclosed in '{' and '}', consists of the servers * name or ip address, an optional port (prefixed by ':'), and an optional * protocol specification (prefixed by '/'). *

*

* The server part is mandatory in all mailbox * parameters. *

*

* All names which start with { are remote names, and are * in the form "{" remote_system_name [":" port] [flags] "}" * [mailbox_name] where: * remote_system_name - Internet domain name or * bracketed IP address of server.

* @param string $user

* The user name *

* @param string $password

* The password associated with the username *

* @param int $flags [optional]

* The options are a bit mask with one or more of * the following: * OP_READONLY - Open mailbox read-only

* @param int $retries [optional]

* Number of maximum connect attempts *

* @param null|array $options

* Connection parameters, the following (string) keys maybe used * to set one or more connection parameters: * DISABLE_AUTHENTICATOR - Disable authentication properties

* @return resource|false an IMAP stream on success or FALSE on error. */ #[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection|false'], default: 'resource|false')] function imap_open(string $mailbox, string $user, string $password, int $flags = 0, int $retries = 0, array $options = []) {} /** * Reopen IMAP stream to new mailbox * @link https://php.net/manual/en/function.imap-reopen.php * @param resource $imap * @param string $mailbox

* The mailbox name, see imap_open for more * information *

* @param int $flags [optional]

* The options are a bit mask with one or more of * the following: * OP_READONLY - Open mailbox read-only

* @param int $retries [optional]

* Number of maximum connect attempts *

* @return bool TRUE if the stream is reopened, FALSE otherwise. */ function imap_reopen( #[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $mailbox, int $flags = 0, int $retries = 0 ): bool {} /** * Close an IMAP stream * @link https://php.net/manual/en/function.imap-close.php * @param resource $imap * @param int $flags [optional]

* If set to CL_EXPUNGE, the function will silently * expunge the mailbox before closing, removing all messages marked for * deletion. You can achieve the same thing by using * imap_expunge *

*/ #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] function imap_close(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, int $flags = 0) {} /** * Gets the number of messages in the current mailbox * @link https://php.net/manual/en/function.imap-num-msg.php * @param resource $imap * @return int|false Return the number of messages in the current mailbox, as an integer. */ function imap_num_msg(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap): int|false {} /** * Gets the number of recent messages in current mailbox * @link https://php.net/manual/en/function.imap-num-recent.php * @param resource $imap * @return int the number of recent messages in the current mailbox, as an * integer. */ function imap_num_recent(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap): int {} /** * Returns headers for all messages in a mailbox * @link https://php.net/manual/en/function.imap-headers.php * @param resource $imap * @return array|false an array of string formatted with header info. One * element per mail message. */ function imap_headers(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap): array|false {} /** * Read the header of the message * @link https://php.net/manual/en/function.imap-headerinfo.php * @param resource|IMAP\Connection $imap An IMAP stream returned by imap_open(). * @param int $message_num The message number * @param int $from_length [optional] Number of characters for the fetchfrom property. Must be greater than or equal to zero. * @param int $subject_length [optional] Number of characters for the fetchsubject property Must be greater than or equal to zero. * @param $default_host [optional] * @return stdClass|false Returns the information in an object with following properties: *
*
toaddress
full to: line, up to 1024 characters
*
to
an array of objects from the To: line, with the following properties: personal, adl, mailbox, and host
*
fromaddress
full from: line, up to 1024 characters
*
from
an array of objects from the From: line, with the following properties: personal, adl, mailbox, and host
*
ccaddress
full cc: line, up to 1024 characters
*
cc
an array of objects from the Cc: line, with the following properties: personal, adl, mailbox, and host
*
bccaddress
full bcc: line, up to 1024 characters
*
bcc
an array of objects from the Bcc: line, with the following properties: personal, adl, mailbox, and host
*
reply_toaddress
full Reply-To: line, up to 1024 characters
*
reply_to
an array of objects from the Reply-To: line, with the following properties: personal, adl, mailbox, and host
*
senderaddress
full sender: line, up to 1024 characters
*
sender
an array of objects from the Sender: line, with the following properties: personal, adl, mailbox, and host
*
return_pathaddress
full Return-Path: line, up to 1024 characters
*
return_path
an array of objects from the Return-Path: line, with the following properties: personal, adl, mailbox, and host
*
remail -
*
date
The message date as found in its headers
*
Date
Same as date
*
subject
The message subject
*
Subject
Same a subject
*
in_reply_to -
*
message_id -
*
newsgroups -
*
followup_to -
*
references -
*
Recent
R if recent and seen, N if recent and not seen, ' ' if not recent.
*
Unseen
U if not seen AND not recent, ' ' if seen OR not seen and recent
*
Flagged
F if flagged, ' ' if not flagged
*
Answered
A if answered, ' ' if unanswered
*
Deleted
D if deleted, ' ' if not deleted
*
Draft
X if draft, ' ' if not draft
*
Msgno
The message number
*
MailDate -
*
Size
The message size
*
udate
mail message date in Unix time
*
fetchfrom
from line formatted to fit fromlength characters
*
fetchsubject
subject line formatted to fit subjectlength characters
*
*/ function imap_headerinfo( #[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, int $message_num, int $from_length = 0, int $subject_length = 0, #[PhpStormStubsElementAvailable(to: '7.4')] $default_host = null ): stdClass|false {} /** * Parse mail headers from a string * @link https://php.net/manual/en/function.imap-rfc822-parse-headers.php * @param string $headers

* The parsed headers data *

* @param string $default_hostname [optional]

* The default host name *

* @return object|stdClass an object similar to the one returned by * imap_header, except for the flags and other * properties that come from the IMAP server. */ function imap_rfc822_parse_headers(string $headers, string $default_hostname = "UNKNOWN"): stdClass {} /** * Returns a properly formatted email address given the mailbox, host, and personal info * @link https://php.net/manual/en/function.imap-rfc822-write-address.php * @param string $mailbox

* The mailbox name, see imap_open for more * information *

* @param string $hostname

* The email host part *

* @param string $personal

* The name of the account owner *

* @return string|false a string properly formatted email address as defined in RFC2822. */ function imap_rfc822_write_address(string $mailbox, string $hostname, string $personal): string|false {} /** * Parses an address string * @link https://php.net/manual/en/function.imap-rfc822-parse-adrlist.php * @param string $string

* A string containing addresses *

* @param string $default_hostname

* The default host name *

* @return array an array of objects. The objects properties are: *

* mailbox - the mailbox name (username) * host - the host name * personal - the personal name * adl - at domain source route *

*/ function imap_rfc822_parse_adrlist(string $string, string $default_hostname): array {} /** * Read the message body * @link https://php.net/manual/en/function.imap-body.php * @param resource $imap * @param int $message_num

* The message number *

* @param int $flags [optional]

* The optional options are a bit mask * with one or more of the following: * FT_UID - The msg_number is a UID

* @return string|false the body of the specified message, as a string. */ function imap_body( #[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, int $message_num, int $flags = 0 ): string|false {} /** * Read the structure of a specified body section of a specific message * @link https://php.net/manual/en/function.imap-bodystruct.php * @param resource $imap * @param int $message_num

* The message number *

* @param string $section

* The body section to read *

* @return object the information in an object, for a detailed description * of the object structure and properties see * imap_fetchstructure. */ #[LanguageLevelTypeAware(['8.1' => 'stdClass|false'], default: 'object')] function imap_bodystruct(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, int $message_num, string $section) {} /** * Fetch a particular section of the body of the message * @link https://php.net/manual/en/function.imap-fetchbody.php * @param resource $imap * @param int $message_num

* The message number *

* @param string $section

* The part number. It is a string of integers delimited by period which * index into a body part list as per the IMAP4 specification *

* @param int $flags [optional]

* A bitmask with one or more of the following: * FT_UID - The msg_number is a UID

* @return string|false a particular section of the body of the specified messages as a * text string. */ function imap_fetchbody( #[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, int $message_num, string $section, int $flags = 0 ): string|false {} /** * Fetch MIME headers for a particular section of the message * @link https://php.net/manual/en/function.imap-fetchmime.php * @param resource $imap * @param int $message_num

* The message number *

* @param string $section

* The part number. It is a string of integers delimited by period which * index into a body part list as per the IMAP4 specification *

* @param int $flags [optional]

* A bitmask with one or more of the following: * FT_UID - The msg_number is a UID

* @return string|false the MIME headers of a particular section of the body of the specified messages as a * text string. * @since 5.3.6 */ function imap_fetchmime( #[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, int $message_num, string $section, int $flags = 0 ): string|false {} /** * Save a specific body section to a file * @link https://php.net/manual/en/function.imap-savebody.php * @param resource $imap * @param mixed $file

* The path to the saved file as a string, or a valid file descriptor * returned by fopen. *

* @param int $message_num

* The message number *

* @param string $section [optional]

* The part number. It is a string of integers delimited by period which * index into a body part list as per the IMAP4 specification *

* @param int $flags [optional]

* A bitmask with one or more of the following: * FT_UID - The msg_number is a UID

* @return bool TRUE on success or FALSE on failure. * @since 5.1.3 */ function imap_savebody( #[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, $file, int $message_num, string $section = "", int $flags = 0 ): bool {} /** * Returns header for a message * @link https://php.net/manual/en/function.imap-fetchheader.php * @param resource $imap * @param int $message_num

* The message number *

* @param int $flags [optional]

* The possible options are: * FT_UID - The msgno * argument is a UID

* @return string|false the header of the specified message as a text string. */ function imap_fetchheader( #[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, int $message_num, int $flags = 0 ): string|false {} /** * Read the structure of a particular message * @link https://php.net/manual/en/function.imap-fetchstructure.php * @param resource $imap * @param int $message_num

* The message number *

* @param int $flags [optional]

* This optional parameter only has a single option, * FT_UID, which tells the function to treat the * msg_number argument as a * UID. *

* @return object|stdClass|false an object includes the envelope, internal date, size, flags and * body structure along with a similar object for each mime attachment. The * structure of the returned objects is as follows: *

*

* * Returned Objects for imap_fetchstructure * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
typePrimary body type
encodingBody transfer encoding
ifsubtypeTRUE if there is a subtype string
subtypeMIME subtype
ifdescriptionTRUE if there is a description string
descriptionContent description string
ifidTRUE if there is an identification string
idIdentification string
linesNumber of lines
bytesNumber of bytes
ifdispositionTRUE if there is a disposition string
dispositionDisposition string
ifdparametersTRUE if the dparameters array exists
dparametersAn array of objects where each object has an * "attribute" and a "value" * property corresponding to the parameters on the * Content-disposition MIME * header.
ifparametersTRUE if the parameters array exists
parametersAn array of objects where each object has an * "attribute" and a "value" * property.
partsAn array of objects identical in structure to the top-level * object, each of which corresponds to a MIME body * part.
*

*

* * Primary body type (may vary with used library) * * * * * * * * *
0text
1multipart
2message
3application
4audio
5image
6video
7other
*

*

* * Transfer encodings (may vary with used library) * * * * * * *
07BIT
18BIT
2BINARY
3BASE64
4QUOTED-PRINTABLE
5OTHER
*/ function imap_fetchstructure(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, int $message_num, int $flags = 0): stdClass|false {} /** * Clears IMAP cache * @link https://php.net/manual/en/function.imap-gc.php * @param resource $imap * @param int $flags

* Specifies the cache to purge. It may one or a combination * of the following constants: * IMAP_GC_ELT (message cache elements), * IMAP_GC_ENV (enveloppe and bodies), * IMAP_GC_TEXTS (texts). *

*/ #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] function imap_gc( #[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] int $flags = 0, #[PhpStormStubsElementAvailable(from: '8.0')] int $flags ) {} /** * Delete all messages marked for deletion * @link https://php.net/manual/en/function.imap-expunge.php * @param resource $imap */ #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] function imap_expunge(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap) {} /** * Mark a message for deletion from current mailbox * @link https://php.net/manual/en/function.imap-delete.php * @param resource $imap * @param string $message_nums

* The message number *

* @param int $flags [optional]

* You can set the FT_UID which tells the function * to treat the msg_number argument as an * UID. *

*/ #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] function imap_delete(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $message_nums, int $flags = 0) {} /** * Unmark the message which is marked deleted * @link https://php.net/manual/en/function.imap-undelete.php * @param resource $imap * @param string $message_nums

* The message number *

* @param int $flags [optional] */ #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] function imap_undelete(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $message_nums, int $flags = 0) {} /** * Check current mailbox * @link https://php.net/manual/en/function.imap-check.php * @param resource $imap * @return object|stdClass|false the information in an object with following properties: * Date - current system time formatted according to RFC2822 * Driver - protocol used to access this mailbox: * POP3, IMAP, NNTP * Mailbox - the mailbox name * Nmsgs - number of messages in the mailbox * Recent - number of recent messages in the mailbox *

*

* Returns FALSE on failure. */ function imap_check(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap): stdClass|false {} /** * Returns the list of mailboxes that matches the given text * @link https://php.net/manual/en/function.imap-listscan.php * @param resource $imap * @param string $reference

* ref should normally be just the server * specification as described in imap_open *

* @param string $pattern Specifies where in the mailbox hierarchy * to start searching.

There are two special characters you can * pass as part of the pattern: * '*' and '%'. * '*' means to return all mailboxes. If you pass * pattern as '*', you will * get a list of the entire mailbox hierarchy. * '%' * means to return the current level only. * '%' as the pattern * parameter will return only the top level * mailboxes; '~/mail/%' on UW_IMAPD will return every mailbox in the ~/mail directory, but none in subfolders of that directory.

* @param string $content

* The searched string *

* @return array|false an array containing the names of the mailboxes that have * content in the text of the mailbox. */ function imap_listscan(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $reference, string $pattern, string $content): array|false {} /** * Copy specified messages to a mailbox * @link https://php.net/manual/en/function.imap-mail-copy.php * @param resource $imap * @param string $message_nums

* msglist is a range not just message * numbers (as described in RFC2060). *

* @param string $mailbox

* The mailbox name, see imap_open for more * information *

* @param int $flags [optional]

* options is a bitmask of one or more of * CP_UID - the sequence numbers contain UIDS

* @return bool TRUE on success or FALSE on failure. */ function imap_mail_copy(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $message_nums, string $mailbox, int $flags = 0): bool {} /** * Move specified messages to a mailbox * @link https://php.net/manual/en/function.imap-mail-move.php * @param resource $imap * @param string $message_nums

* msglist is a range not just message numbers * (as described in RFC2060). *

* @param string $mailbox

* The mailbox name, see imap_open for more * information *

* @param int $flags [optional]

* options is a bitmask and may contain the single option: * CP_UID - the sequence numbers contain UIDS

* @return bool TRUE on success or FALSE on failure. */ function imap_mail_move(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $message_nums, string $mailbox, int $flags = 0): bool {} /** * Create a MIME message based on given envelope and body sections * @link https://php.net/manual/en/function.imap-mail-compose.php * @param array $envelope

* An associative array of headers fields. Valid keys are: "remail", * "return_path", "date", "from", "reply_to", "in_reply_to", "subject", * "to", "cc", "bcc", "message_id" and "custom_headers" (which contains * associative array of other headers). *

* @param array $bodies

* An indexed array of bodies *

*

* A body is an associative array which can consist of the following keys: * "type", "encoding", "charset", "type.parameters", "subtype", "id", * "description", "disposition.type", "disposition", "contents.data", * "lines", "bytes" and "md5". *

* @return string|false the MIME message. */ function imap_mail_compose(array $envelope, array $bodies): string|false {} /** * Create a new mailbox * @link https://php.net/manual/en/function.imap-createmailbox.php * @param resource $imap * @param string $mailbox

* The mailbox name, see imap_open for more * information. Names containing international characters should be * encoded by imap_utf7_encode *

* @return bool TRUE on success or FALSE on failure. */ function imap_createmailbox(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $mailbox): bool {} /** * Rename an old mailbox to new mailbox * @link https://php.net/manual/en/function.imap-renamemailbox.php * @param resource $imap * @param string $from

* The old mailbox name, see imap_open for more * information *

* @param string $to

* The new mailbox name, see imap_open for more * information *

* @return bool TRUE on success or FALSE on failure. */ function imap_renamemailbox(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $from, string $to): bool {} /** * Delete a mailbox * @link https://php.net/manual/en/function.imap-deletemailbox.php * @param resource $imap * @param string $mailbox

* The mailbox name, see imap_open for more * information *

* @return bool TRUE on success or FALSE on failure. */ function imap_deletemailbox(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $mailbox): bool {} /** * Subscribe to a mailbox * @link https://php.net/manual/en/function.imap-subscribe.php * @param resource $imap * @param string $mailbox

* The mailbox name, see imap_open for more * information *

* @return bool TRUE on success or FALSE on failure. */ function imap_subscribe(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $mailbox): bool {} /** * Unsubscribe from a mailbox * @link https://php.net/manual/en/function.imap-unsubscribe.php * @param resource $imap * @param string $mailbox

* The mailbox name, see imap_open for more * information *

* @return bool TRUE on success or FALSE on failure. */ function imap_unsubscribe(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $mailbox): bool {} /** * Append a string message to a specified mailbox * @link https://php.net/manual/en/function.imap-append.php * @param resource $imap * @param string $folder

* The mailbox name, see imap_open for more * information *

* @param string $message

* The message to be append, as a string *

*

* When talking to the Cyrus IMAP server, you must use "\r\n" as * your end-of-line terminator instead of "\n" or the operation will * fail *

* @param string $options [optional]

* If provided, the options will also be written * to the mailbox *

* @param string $internal_date [optional]

* If this parameter is set, it will set the INTERNALDATE on the appended message. The parameter should be a date string that conforms to the rfc2060 specifications for a date_time value. *

* @return bool TRUE on success or FALSE on failure. */ function imap_append(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $folder, string $message, ?string $options = null, ?string $internal_date = null): bool {} /** * Check if the IMAP stream is still active * @link https://php.net/manual/en/function.imap-ping.php * @param resource $imap * @return bool TRUE if the stream is still alive, FALSE otherwise. */ function imap_ping(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap): bool {} /** * Decode BASE64 encoded text * @link https://php.net/manual/en/function.imap-base64.php * @param string $string

* The encoded text *

* @return string|false the decoded message as a string. */ function imap_base64(string $string): string|false {} /** * Convert a quoted-printable string to an 8 bit string * @link https://php.net/manual/en/function.imap-qprint.php * @param string $string

* A quoted-printable string *

* @return string|false an 8 bits string. */ function imap_qprint(string $string): string|false {} /** * Convert an 8bit string to a quoted-printable string * @link https://php.net/manual/en/function.imap-8bit.php * @param string $string

* The 8bit string to convert *

* @return string|false a quoted-printable string. */ function imap_8bit(string $string): string|false {} /** * Convert an 8bit string to a base64 string * @link https://php.net/manual/en/function.imap-binary.php * @param string $string

* The 8bit string *

* @return string|false a base64 encoded string. */ function imap_binary(string $string): string|false {} /** * Converts MIME-encoded text to UTF-8 * @link https://php.net/manual/en/function.imap-utf8.php * @param string $mime_encoded_text

* A MIME encoded string. MIME encoding method and the UTF-8 * specification are described in RFC2047 and RFC2044 respectively. *

* @return string an UTF-8 encoded string. */ function imap_utf8(string $mime_encoded_text): string {} /** * Returns status information on a mailbox * @link https://php.net/manual/en/function.imap-status.php * @param resource $imap * @param string $mailbox

* The mailbox name, see imap_open for more * information *

* @param int $flags

* Valid flags are: * SA_MESSAGES - set $status->messages to the * number of messages in the mailbox * @return object This function returns an object containing status information. * The object has the following properties: messages, * recent, unseen, * uidnext, and uidvalidity. *

*

* flags is also set, which contains a bitmask which can * be checked against any of the above constants.

*/ #[LanguageLevelTypeAware(['8.1' => 'stdClass|false'], default: 'object')] function imap_status(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $mailbox, int $flags) {} /** * @param $stream_id * @param $options */ function imap_status_current($stream_id, $options) {} /** * Get information about the current mailbox * @link https://php.net/manual/en/function.imap-mailboxmsginfo.php * @param resource $imap * @return object|stdClass|false the information in an object with following properties: * * Mailbox properties * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Datedate of last change (current datetime)
Driverdriver
Mailboxname of the mailbox
Nmsgsnumber of messages
Recentnumber of recent messages
Unreadnumber of unread messages
Deletednumber of deleted messages
Sizemailbox size
*

*

* Returns FALSE on failure. */ function imap_mailboxmsginfo(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap): stdClass {} /** * Sets flags on messages * @link https://php.net/manual/en/function.imap-setflag-full.php * @param resource $imap * @param string $sequence

* A sequence of message numbers. You can enumerate desired messages * with the X,Y syntax, or retrieve all messages * within an interval with the X:Y syntax *

* @param string $flag

* The flags which you can set are \Seen, * \Answered, \Flagged, * \Deleted, and \Draft as * defined by RFC2060. *

* @param int $options [optional]

* A bit mask that may contain the single option: * ST_UID - The sequence argument contains UIDs * instead of sequence numbers

*/ #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] function imap_setflag_full(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $sequence, string $flag, int $options = NIL) {} /** * Clears flags on messages * @link https://php.net/manual/en/function.imap-clearflag-full.php * @param resource $imap * @param string $sequence

* A sequence of message numbers. You can enumerate desired messages * with the X,Y syntax, or retrieve all messages * within an interval with the X:Y syntax *

* @param string $flag

* The flags which you can unset are "\\Seen", "\\Answered", "\\Flagged", * "\\Deleted", and "\\Draft" (as defined by RFC2060) *

* @param int $options [optional]

* options are a bit mask and may contain * the single option: * ST_UID - The sequence argument contains UIDs * instead of sequence numbers

*/ #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] function imap_clearflag_full(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $sequence, string $flag, int $options = 0) {} /** * Gets and sort messages * @link https://php.net/manual/en/function.imap-sort.php * @param resource $imap * @param int $criteria

* Criteria can be one (and only one) of the following: * SORTDATE - message Date

* @param bool $reverse

* Set this to 1 for reverse sorting *

* @param int $flags [optional]

* The options are a bitmask of one or more of the * following: * SE_UID - Return UIDs instead of sequence numbers

* @param string|null $search_criteria [optional] * @param string|null $charset [optional] * @return array|false an array of message numbers sorted by the given * parameters. */ function imap_sort( #[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, int $criteria, #[LanguageLevelTypeAware(['8.0' => 'bool'], default: 'int')] $reverse, int $flags = 0, ?string $search_criteria = null, ?string $charset = null ): array|false {} /** * This function returns the UID for the given message sequence number * @link https://php.net/manual/en/function.imap-uid.php * @param resource $imap * @param int $message_num

* The message number. *

* @return int|false The UID of the given message. */ function imap_uid(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, int $message_num): int|false {} /** * Gets the message sequence number for the given UID * @link https://php.net/manual/en/function.imap-msgno.php * @param resource $imap * @param int $message_uid

* The message UID *

* @return int the message sequence number for the given * uid. */ function imap_msgno(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, int $message_uid): int {} /** * Read the list of mailboxes * @link https://php.net/manual/en/function.imap-list.php * @param resource $imap * @param string $reference

* ref should normally be just the server * specification as described in imap_open. *

* @param string $pattern Specifies where in the mailbox hierarchy * to start searching.

There are two special characters you can * pass as part of the pattern: * '*' and '%'. * '*' means to return all mailboxes. If you pass * pattern as '*', you will * get a list of the entire mailbox hierarchy. * '%' * means to return the current level only. * '%' as the pattern * parameter will return only the top level * mailboxes; '~/mail/%' on UW_IMAPD will return every mailbox in the ~/mail directory, but none in subfolders of that directory.

* @return array|false an array containing the names of the mailboxes. */ function imap_list(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $reference, string $pattern): array|false {} /** * List all the subscribed mailboxes * @link https://php.net/manual/en/function.imap-lsub.php * @param resource $imap * @param string $reference

* ref should normally be just the server * specification as described in imap_open *

* @param string $pattern Specifies where in the mailbox hierarchy * to start searching.

There are two special characters you can * pass as part of the pattern: * '*' and '%'. * '*' means to return all mailboxes. If you pass * pattern as '*', you will * get a list of the entire mailbox hierarchy. * '%' * means to return the current level only. * '%' as the pattern * parameter will return only the top level * mailboxes; '~/mail/%' on UW_IMAPD will return every mailbox in the ~/mail directory, but none in subfolders of that directory.

* @return array|false an array of all the subscribed mailboxes. */ function imap_lsub(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $reference, string $pattern): array|false {} /** * Read an overview of the information in the headers of the given message * @link https://php.net/manual/en/function.imap-fetch-overview.php * @param resource $imap * @param string $sequence

* A message sequence description. You can enumerate desired messages * with the X,Y syntax, or retrieve all messages * within an interval with the X:Y syntax *

* @param int $flags [optional]

* sequence will contain a sequence of message * indices or UIDs, if this parameter is set to * FT_UID. *

* @return array|false an array of objects describing one message header each. * The object will only define a property if it exists. The possible * properties are: * subject - the messages subject * from - who sent it * to - recipient * date - when was it sent * message_id - Message-ID * references - is a reference to this message id * in_reply_to - is a reply to this message id * size - size in bytes * uid - UID the message has in the mailbox * msgno - message sequence number in the mailbox * recent - this message is flagged as recent * flagged - this message is flagged * answered - this message is flagged as answered * deleted - this message is flagged for deletion * seen - this message is flagged as already read * draft - this message is flagged as being a draft */ function imap_fetch_overview(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $sequence, int $flags = 0): array|false {} /** * Returns all IMAP alert messages that have occurred * @link https://php.net/manual/en/function.imap-alerts.php * @return array|false an array of all of the IMAP alert messages generated or FALSE if * no alert messages are available. */ function imap_alerts(): array|false {} /** * Returns all of the IMAP errors that have occurred * @link https://php.net/manual/en/function.imap-errors.php * @return array|false This function returns an array of all of the IMAP error messages * generated since the last imap_errors call, * or the beginning of the page. Returns FALSE if no error messages are * available. */ function imap_errors(): array|false {} /** * Gets the last IMAP error that occurred during this page request * @link https://php.net/manual/en/function.imap-last-error.php * @return string|false the full text of the last IMAP error message that occurred on the * current page. Returns FALSE if no error messages are available. */ function imap_last_error(): string|false {} /** * This function returns an array of messages matching the given search criteria * @link https://php.net/manual/en/function.imap-search.php * @param resource $imap * @param string $criteria

* A string, delimited by spaces, in which the following keywords are * allowed. Any multi-word arguments (e.g. * FROM "joey smith") must be quoted. Results will match * all criteria entries. * ALL - return all messages matching the rest of the criteria

* @param int $flags [optional]

* Valid values for options are * SE_UID, which causes the returned array to * contain UIDs instead of messages sequence numbers. *

* @param string $charset * @return array|false an array of message numbers or UIDs. *

* Return FALSE if it does not understand the search * criteria or no messages have been found. *

*/ function imap_search( #[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $criteria, int $flags = SE_FREE, string $charset = "" ): array|false {} /** * Decodes a modified UTF-7 encoded string * @link https://php.net/manual/en/function.imap-utf7-decode.php * @param string $string

* A modified UTF-7 encoding string, as defined in RFC 2060, section 5.1.3 (original UTF-7 * was defined in RFC1642). *

* @return string|false a string that is encoded in ISO-8859-1 and consists of the same * sequence of characters in text, or FALSE * if text contains invalid modified UTF-7 sequence * or text contains a character that is not part of * ISO-8859-1 character set. */ function imap_utf7_decode(string $string): string|false {} /** * Converts ISO-8859-1 string to modified UTF-7 text * @link https://php.net/manual/en/function.imap-utf7-encode.php * @param string $string

* An ISO-8859-1 string. *

* @return string data encoded with the modified UTF-7 * encoding as defined in RFC 2060, * section 5.1.3 (original UTF-7 was defined in RFC1642). */ function imap_utf7_encode(string $string): string {} /** * Decode MIME header elements * @link https://php.net/manual/en/function.imap-mime-header-decode.php * @param string $string

* The MIME text *

* @return array|false The decoded elements are returned in an array of objects, where each * object has two properties, charset and * text. *

*

* If the element hasn't been encoded, and in other words is in * plain US-ASCII, the charset property of that element is * set to default. */ function imap_mime_header_decode(string $string): array|false {} /** * Returns a tree of threaded message * @link https://php.net/manual/en/function.imap-thread.php * @param resource $imap * @param int $flags [optional] * @return array|false imap_thread returns an associative array containing * a tree of messages threaded by REFERENCES, or FALSE * on error. *

*

* Every message in the current mailbox will be represented by three entries * in the resulting array: *

* $thread["XX.num"] - current message number *

*

* $thread["XX.next"] *

*

* $thread["XX.branch"] *

*/ function imap_thread(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, int $flags = SE_FREE): array|false {} /** * Set or fetch imap timeout * @link https://php.net/manual/en/function.imap-timeout.php * @param int $timeout_type

* One of the following: * IMAP_OPENTIMEOUT, * IMAP_READTIMEOUT, * IMAP_WRITETIMEOUT, or * IMAP_CLOSETIMEOUT. *

* @param int $timeout [optional]

* The timeout, in seconds. *

* @return int|bool If the timeout parameter is set, this function * returns TRUE on success and FALSE on failure. *

*

* If timeout is not provided or evaluates to -1, * the current timeout value of timeout_type is * returned as an integer. */ function imap_timeout(int $timeout_type, int $timeout = -1): int|bool {} /** * Retrieve the quota level settings, and usage statics per mailbox * @link https://php.net/manual/en/function.imap-get-quota.php * @param resource $imap * @param string $quota_root

* quota_root should normally be in the form of * user.name where name is the mailbox you wish to * retrieve information about. *

* @return array|false an array with integer values limit and usage for the given * mailbox. The value of limit represents the total amount of space * allowed for this mailbox. The usage value represents the mailboxes * current level of capacity. Will return FALSE in the case of failure. *

*

* As of PHP 4.3, the function more properly reflects the * functionality as dictated by the RFC2087. * The array return value has changed to support an unlimited number of returned * resources (i.e. messages, or sub-folders) with each named resource receiving * an individual array key. Each key value then contains an another array with * the usage and limit values within it. *

*

* For backwards compatibility reasons, the original access methods are * still available for use, although it is suggested to update. */ #[ArrayShape(["usage" => "int", "limit" => "int"])] function imap_get_quota(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $quota_root): array|false {} /** * Retrieve the quota settings per user * @link https://php.net/manual/en/function.imap-get-quotaroot.php * @param resource $imap * @param string $mailbox

* quota_root should normally be in the form of * which mailbox (i.e. INBOX). *

* @return array|false an array of integer values pertaining to the specified user * mailbox. All values contain a key based upon the resource name, and a * corresponding array with the usage and limit values within. *

*

* This function will return FALSE in the case of call failure, and an * array of information about the connection upon an un-parsable response * from the server. */ function imap_get_quotaroot(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $mailbox): array|false {} /** * Sets a quota for a given mailbox * @link https://php.net/manual/en/function.imap-set-quota.php * @param resource $imap * @param string $quota_root

* The mailbox to have a quota set. This should follow the IMAP standard * format for a mailbox: user.name. *

* @param int $mailbox_size

* The maximum size (in KB) for the quota_root *

* @return bool TRUE on success or FALSE on failure. */ function imap_set_quota(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $quota_root, int $mailbox_size): bool {} /** * Sets the ACL for a given mailbox * @link https://php.net/manual/en/function.imap-setacl.php * @param resource $imap * @param string $mailbox

* The mailbox name, see imap_open for more * information *

* @param string $user_id

* The user to give the rights to. *

* @param string $rights

* The rights to give to the user. Passing an empty string will delete * acl. *

* @return bool TRUE on success or FALSE on failure. */ function imap_setacl(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $mailbox, string $user_id, string $rights): bool {} /** * Gets the ACL for a given mailbox * @link https://php.net/manual/en/function.imap-getacl.php * @param resource $imap * @param string $mailbox

* The mailbox name, see imap_open for more * information *

* @return array|false an associative array of "folder" => "acl" pairs. */ function imap_getacl(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $mailbox): array|false {} /** * @param $stream_id * @param $mailbox */ function imap_myrights($stream_id, $mailbox) {} /** * @param $stream_id * @param $mailbox * @param $entry * @param $attr * @param $value */ function imap_setannotation($stream_id, $mailbox, $entry, $attr, $value) {} /** * @param $stream_id * @param $mailbox * @param $entry * @param $attr */ function imap_getannotation($stream_id, $mailbox, $entry, $attr) {} /** * Send an email message * @link https://php.net/manual/en/function.imap-mail.php * @param string $to

* The receiver *

* @param string $subject

* The mail subject *

* @param string $message

* The mail body, see imap_mail_compose *

* @param string $additional_headers [optional]

* As string with additional headers to be set on the mail *

* @param string $cc [optional] * @param string $bcc [optional]

* The receivers specified in bcc will get the * mail, but are excluded from the headers. *

* @param string $return_path [optional]

* Use this parameter to specify return path upon mail delivery failure. * This is useful when using PHP as a mail client for multiple users. *

* @return bool TRUE on success or FALSE on failure. */ function imap_mail(string $to, string $subject, string $message, ?string $additional_headers = null, ?string $cc = null, ?string $bcc = null, ?string $return_path = null): bool {} /** * Alias of imap_headerinfo * @link https://php.net/manual/en/function.imap-header.php * @param resource $stream_id An IMAP stream returned by imap_open(). * @param int $msg_no The message number * @param int $from_length [optional] Number of characters for the fetchfrom property. Must be greater than or equal to zero. * @param int $subject_length [optional] Number of characters for the fetchsubject property Must be greater than or equal to zero. * @param $default_host [optional] * @return object Returns the information in an object with following properties: *
*
toaddress
full to: line, up to 1024 characters
*
to
an array of objects from the To: line, with the following properties: personal, adl, mailbox, and host
*
fromaddress
full from: line, up to 1024 characters
*
from
an array of objects from the From: line, with the following properties: personal, adl, mailbox, and host
*
ccaddress
full cc: line, up to 1024 characters
*
cc
an array of objects from the Cc: line, with the following properties: personal, adl, mailbox, and host
*
bccaddress
full bcc: line, up to 1024 characters
*
bcc
an array of objects from the Bcc: line, with the following properties: personal, adl, mailbox, and host
*
reply_toaddress
full Reply-To: line, up to 1024 characters
*
reply_to
an array of objects from the Reply-To: line, with the following properties: personal, adl, mailbox, and host
*
senderaddress
full sender: line, up to 1024 characters
*
sender
an array of objects from the Sender: line, with the following properties: personal, adl, mailbox, and host
*
return_pathaddress
full Return-Path: line, up to 1024 characters
*
return_path
an array of objects from the Return-Path: line, with the following properties: personal, adl, mailbox, and host
*
remail -
*
date
The message date as found in its headers
*
Date
Same as date
*
subject
The message subject
*
Subject
Same a subject
*
in_reply_to -
*
message_id -
*
newsgroups -
*
followup_to -
*
references -
*
Recent
R if recent and seen, N if recent and not seen, ' ' if not recent.
*
Unseen
U if not seen AND not recent, ' ' if seen OR not seen and recent
*
Flagged
F if flagged, ' ' if not flagged
*
Answered
A if answered, ' ' if unanswered
*
Deleted
D if deleted, ' ' if not deleted
*
Draft
X if draft, ' ' if not draft
*
Msgno
The message number
*
MailDate -
*
Size
The message size
*
udate
mail message date in Unix time
*
fetchfrom
from line formatted to fit fromlength characters
*
fetchsubject
subject line formatted to fit subjectlength characters
*
*/ #[PhpStormStubsElementAvailable(to: '7.4')] function imap_header($stream_id, $msg_no, $from_length = 0, $subject_length = 0, $default_host = null) {} /** * Alias of imap_list * @link https://php.net/manual/en/function.imap-listmailbox.php * @param resource $imap * @param string $reference * @param string $pattern * @return array|false */ function imap_listmailbox(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $reference, string $pattern): array|false {} /** * Read the list of mailboxes, returning detailed information on each one * @link https://php.net/manual/en/function.imap-getmailboxes.php * @param resource $imap * @param string $reference

* ref should normally be just the server * specification as described in imap_open *

* @param string $pattern Specifies where in the mailbox hierarchy * to start searching.

There are two special characters you can * pass as part of the pattern: * '*' and '%'. * '*' means to return all mailboxes. If you pass * pattern as '*', you will * get a list of the entire mailbox hierarchy. * '%' * means to return the current level only. * '%' as the pattern * parameter will return only the top level * mailboxes; '~/mail/%' on UW_IMAPD will return every mailbox in the ~/mail directory, but none in subfolders of that directory.

* @return array|false an array of objects containing mailbox information. Each * object has the attributes name, specifying * the full name of the mailbox; delimiter, * which is the hierarchy delimiter for the part of the hierarchy * this mailbox is in; and * attributes. Attributes * is a bitmask that can be tested against: *

* LATT_NOINFERIORS - This mailbox contains, and may not contain any * "children" (there are no mailboxes below this one). Calling * imap_createmailbox will not work on this mailbox. *

*

* LATT_NOSELECT - This is only a container, * not a mailbox - you cannot open it. *

*

* LATT_MARKED - This mailbox is marked. This means that it may * contain new messages since the last time it was checked. Not provided by all IMAP * servers. *

*

* LATT_UNMARKED - This mailbox is not marked, does not contain new * messages. If either MARKED or UNMARKED is * provided, you can assume the IMAP server supports this feature for this mailbox. *

*/ function imap_getmailboxes(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $reference, string $pattern): array|false {} /** * Alias of imap_listscan * @link https://php.net/manual/en/function.imap-scanmailbox.php * @param $imap * @param $reference * @param $pattern * @param $content */ function imap_scanmailbox(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $reference, string $pattern, string $content): array|false {} /** * Alias of imap_lsub * @link https://php.net/manual/en/function.imap-listsubscribed.php * @param resource $imap * @param string $reference * @param string $pattern * @return array|false */ function imap_listsubscribed(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $reference, string $pattern): array|false {} /** * List all the subscribed mailboxes * @link https://php.net/manual/en/function.imap-getsubscribed.php * @param resource $imap * @param string $reference

* ref should normally be just the server * specification as described in imap_open *

* @param string $pattern Specifies where in the mailbox hierarchy * to start searching.

There are two special characters you can * pass as part of the pattern: * '*' and '%'. * '*' means to return all mailboxes. If you pass * pattern as '*', you will * get a list of the entire mailbox hierarchy. * '%' * means to return the current level only. * '%' as the pattern * parameter will return only the top level * mailboxes; '~/mail/%' on UW_IMAPD will return every mailbox in the ~/mail directory, but none in subfolders of that directory.

* @return array|false an array of objects containing mailbox information. Each * object has the attributes name, specifying * the full name of the mailbox; delimiter, * which is the hierarchy delimiter for the part of the hierarchy * this mailbox is in; and * attributes. Attributes * is a bitmask that can be tested against: * LATT_NOINFERIORS - This mailbox has no * "children" (there are no mailboxes below this one). * LATT_NOSELECT - This is only a container, * not a mailbox - you cannot open it. * LATT_MARKED - This mailbox is marked. * Only used by UW-IMAPD. * LATT_UNMARKED - This mailbox is not marked. * Only used by UW-IMAPD. */ function imap_getsubscribed(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $reference, string $pattern): array|false {} /** * (PHP 4, PHP 5)
* Alias of imap_body() * @param resource $imap An IMAP stream returned by imap_open() * @param int $message_num message number * @param int $flags [optional] A bitmask with one or more of the following:
    *
  • FT_UID - The msg_number is a UID *
  • FT_PEEK - Do not set the \Seen flag if not already set *
  • FT_INTERNAL - The return string is in internal format, will not canonicalize to CRLF.

* @return string|false body of the specified message */ function imap_fetchtext(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, int $message_num, int $flags = 0): string|false {} /** * Alias of imap_listscan * @link https://php.net/manual/en/function.imap-scan.php * @param $imap * @param $reference * @param $pattern * @param $content */ function imap_scan(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $reference, string $pattern, string $content): array|false {} /** * Alias of imap_createmailbox * @link https://php.net/manual/en/function.imap-create.php * @param $imap * @param $mailbox */ function imap_create(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $mailbox): bool {} /** * Alias of imap_renamemailbox * @link https://php.net/manual/en/function.imap-rename.php * @param $imap * @param $from * @param $to */ function imap_rename(#[LanguageLevelTypeAware(['8.1' => 'IMAP\Connection'], default: 'resource')] $imap, string $from, string $to): bool {} /** * Decode a modified UTF-7 string to UTF-8 * * @link https://www.php.net/manual/en/function.imap-mutf7-to-utf8.php * * @param string $string * @return string|false */ function imap_mutf7_to_utf8(string $string): string|false {} /** * Encode a UTF-8 string to modified UTF-7 * * @link https://www.php.net/manual/en/function.imap-utf8-to-mutf7.php * * @param string $string * @return string|false */ function imap_utf8_to_mutf7(string $string): string|false {} /** * @since 8.2 */ function imap_is_open(IMAP\Connection $imap): bool {} /** * @deprecated 8.1 */ define('NIL', 0); define('IMAP_OPENTIMEOUT', 1); define('IMAP_READTIMEOUT', 2); define('IMAP_WRITETIMEOUT', 3); define('IMAP_CLOSETIMEOUT', 4); define('OP_DEBUG', 1); /** * Open mailbox read-only * @link https://php.net/manual/en/imap.constants.php */ define('OP_READONLY', 2); /** * Don't use or update a .newsrc for news * (NNTP only) * @link https://php.net/manual/en/imap.constants.php */ define('OP_ANONYMOUS', 4); define('OP_SHORTCACHE', 8); define('OP_SILENT', 16); define('OP_PROTOTYPE', 32); /** * For IMAP and NNTP * names, open a connection but don't open a mailbox. * @link https://php.net/manual/en/imap.constants.php */ define('OP_HALFOPEN', 64); define('OP_EXPUNGE', 128); define('OP_SECURE', 256); /** * silently expunge the mailbox before closing when * calling imap_close * @link https://php.net/manual/en/imap.constants.php */ define('CL_EXPUNGE', 32768); /** * The parameter is a UID * @link https://php.net/manual/en/imap.constants.php */ define('FT_UID', 1); /** * Do not set the \Seen flag if not already set * @link https://php.net/manual/en/imap.constants.php */ define('FT_PEEK', 2); define('FT_NOT', 4); /** * The return string is in internal format, will not canonicalize to CRLF. * @link https://php.net/manual/en/imap.constants.php */ define('FT_INTERNAL', 8); define('FT_PREFETCHTEXT', 32); /** * The sequence argument contains UIDs instead of sequence numbers * @link https://php.net/manual/en/imap.constants.php */ define('ST_UID', 1); define('ST_SILENT', 2); define('ST_SET', 4); /** * the sequence numbers contain UIDS * @link https://php.net/manual/en/imap.constants.php */ define('CP_UID', 1); /** * Delete the messages from the current mailbox after copying * with imap_mail_copy * @link https://php.net/manual/en/imap.constants.php */ define('CP_MOVE', 2); /** * Return UIDs instead of sequence numbers * @link https://php.net/manual/en/imap.constants.php */ define('SE_UID', 1); define('SE_FREE', 2); /** * Don't prefetch searched messages * @link https://php.net/manual/en/imap.constants.php */ define('SE_NOPREFETCH', 4); define('SO_FREE', 8); define('SO_NOSERVER', 8); define('SA_MESSAGES', 1); define('SA_RECENT', 2); define('SA_UNSEEN', 4); define('SA_UIDNEXT', 8); define('SA_UIDVALIDITY', 16); define('SA_ALL', 31); /** * This mailbox has no "children" (there are no * mailboxes below this one). * @link https://php.net/manual/en/imap.constants.php */ define('LATT_NOINFERIORS', 1); /** * This is only a container, not a mailbox - you * cannot open it. * @link https://php.net/manual/en/imap.constants.php */ define('LATT_NOSELECT', 2); /** * This mailbox is marked. Only used by UW-IMAPD. * @link https://php.net/manual/en/imap.constants.php */ define('LATT_MARKED', 4); /** * This mailbox is not marked. Only used by * UW-IMAPD. * @link https://php.net/manual/en/imap.constants.php */ define('LATT_UNMARKED', 8); define('LATT_REFERRAL', 16); define('LATT_HASCHILDREN', 32); define('LATT_HASNOCHILDREN', 64); /** * Sort criteria for imap_sort: * message Date * @link https://php.net/manual/en/imap.constants.php */ define('SORTDATE', 0); /** * Sort criteria for imap_sort: * arrival date * @link https://php.net/manual/en/imap.constants.php */ define('SORTARRIVAL', 1); /** * Sort criteria for imap_sort: * mailbox in first From address * @link https://php.net/manual/en/imap.constants.php */ define('SORTFROM', 2); /** * Sort criteria for imap_sort: * message subject * @link https://php.net/manual/en/imap.constants.php */ define('SORTSUBJECT', 3); /** * Sort criteria for imap_sort: * mailbox in first To address * @link https://php.net/manual/en/imap.constants.php */ define('SORTTO', 4); /** * Sort criteria for imap_sort: * mailbox in first cc address * @link https://php.net/manual/en/imap.constants.php */ define('SORTCC', 5); /** * Sort criteria for imap_sort: * size of message in octets * @link https://php.net/manual/en/imap.constants.php */ define('SORTSIZE', 6); define('TYPETEXT', 0); define('TYPEMULTIPART', 1); define('TYPEMESSAGE', 2); define('TYPEAPPLICATION', 3); define('TYPEAUDIO', 4); define('TYPEIMAGE', 5); define('TYPEVIDEO', 6); define('TYPEMODEL', 7); define('TYPEOTHER', 8); define('ENC7BIT', 0); define('ENC8BIT', 1); define('ENCBINARY', 2); define('ENCBASE64', 3); define('ENCQUOTEDPRINTABLE', 4); define('ENCOTHER', 5); /** * Garbage collector, clear message cache elements. * @link https://php.net/manual/en/imap.constants.php */ define('IMAP_GC_ELT', 1); /** * Garbage collector, clear envelopes and bodies. * @link https://php.net/manual/en/imap.constants.php */ define('IMAP_GC_ENV', 2); /** * Garbage collector, clear texts. * @link https://php.net/manual/en/imap.constants.php */ define('IMAP_GC_TEXTS', 4); * Add a watch to an initialized inotify instance * * @link https://php.net/manual/en/function.inotify-add-watch.php * * @param resource $inotify_instance

resource returned by {@link https://php.net/manual/en/function.inotify-init.php inotify_init()}

* @param string $pathname

File or directory to watch

* @param int $mask

Events to watch for. See {@link https://php.net/manual/en/inotify.constants.php Predefined Constants}.

* * @return int a unique (inotify instance-wide) watch descriptor. */ function inotify_add_watch($inotify_instance, $pathname, $mask) {} /** * (PHP >= 5.2.0, PECL inotify >= 0.1.2)
* Initialize an inotify instance for use with {@see inotify_add_watch} * * @link https://php.net/manual/en/function.inotify-init.php * @return resource|false a stream resource or FALSE on error. */ function inotify_init() {} /** * (PHP >= 5.2.0, PECL inotify >= 0.1.2)
* This function allows to know if {@see inotify_read} will block or not. * If a number upper than zero is returned, there are pending events * and {@see inotify_read} will not block. * * @link https://php.net/manual/en/function.inotify-queue-len.php * * @param resource $inotify_instance

resource returned by {@link https://php.net/manual/en/function.inotify-init.php inotify_init()}

* * @return int a number greater than zero if events are pending, otherwise zero. */ function inotify_queue_len($inotify_instance) {} /** * (PHP >= 5.2.0, PECL inotify >= 0.1.2)
* Read inotify events from an inotify instance. * * @link https://php.net/manual/en/function.inotify-read.php * * @param resource $inotify_instance

resource returned by {@link https://php.net/manual/en/function.inotify-init.php inotify_init()}

* * @return array|false an array of inotify events or FALSE if no events * were pending and inotify_instance is non-blocking. Each event * is an array with the following keys: * *
    *
  • wd is a watch descriptor returned by inotify_add_watch()
  • *
  • mask is a bit mask of events
  • *
  • cookie is a unique id to connect related events (e.g. IN_MOVE_FROM and IN_MOVE_TO)
  • *
  • name is the name of a file (e.g. if a file was modified in a watched directory)
  • *
*/ function inotify_read($inotify_instance) {} /** * (PHP >= 5.2.0, PECL inotify >= 0.1.2)
* Removes the watch $watch_descriptor from the inotify instance $inotify_instance. * * @link https://secure.php.net/manual/en/function.inotify-rm-watch.php * * @param resource $inotify_instance

resource returned by {@link https://php.net/manual/en/function.inotify-init.php inotify_init()}

* @param int $mask

watch to remove from the instance

* * @return bool TRUE on success or FALSE on failure. */ function inotify_rm_watch($inotify_instance, $mask) {} /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_ACCESS = 1; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_MODIFY = 2; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_ATTRIB = 4; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_CLOSE_WRITE = 8; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_CLOSE_NOWRITE = 16; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_OPEN = 32; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_MOVED_FROM = 64; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_MOVED_TO = 128; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_CREATE = 256; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_DELETE = 512; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_DELETE_SELF = 1024; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_MOVE_SELF = 2048; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_UNMOUNT = 8192; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_Q_OVERFLOW = 16384; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_IGNORED = 32768; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_CLOSE = 24; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_MOVE = 192; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_ALL_EVENTS = 4095; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_ONLYDIR = 16777216; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_DONT_FOLLOW = 33554432; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_MASK_ADD = 536870912; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_ISDIR = 1073741824; /** * @link https://php.net/manual/en/inotify.constants.php */ const IN_ONESHOT = 2147483648; // End of inotify v.0.1.6 'FTP\Connection'], default: 'resource')] $ftp, string $remote_filename, string $local_filename, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '5.3', to: '7.2')] int $mode, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '7.3')] int $mode = FTP_BINARY ): bool {} /** * returns a list of files in the given directory * @param resource $ftp * @param string $directory * @return array|false * @since 7.2 */ function ftp_mlsd(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $directory): array|false {} /** * Opens an FTP connection * @link https://php.net/manual/en/function.ftp-connect.php * @param string $hostname

* The FTP server address. This parameter shouldn't have any trailing * slashes and shouldn't be prefixed with ftp://. *

* @param int $port [optional]

* This parameter specifies an alternate port to connect to. If it is * omitted or set to zero, then the default FTP port, 21, will be used. *

* @param int $timeout [optional]

* This parameter specifies the timeout for all subsequent network operations. * If omitted, the default value is 90 seconds. The timeout can be changed and * queried at any time with ftp_set_option and * ftp_get_option. *

* @return resource|false a FTP stream on success or FALSE on error. */ #[LanguageLevelTypeAware(['8.1' => 'FTP\Connection|false'], default: 'resource|false')] function ftp_connect(string $hostname, int $port = 21, int $timeout = 90) {} /** * Opens a Secure SSL-FTP connection * @link https://php.net/manual/en/function.ftp-ssl-connect.php * @param string $hostname

* The FTP server address. This parameter shouldn't have any trailing * slashes and shouldn't be prefixed with ftp://. *

* @param int $port [optional]

* This parameter specifies an alternate port to connect to. If it is * omitted or set to zero, then the default FTP port, 21, will be used. *

* @param int $timeout [optional]

* This parameter specifies the timeout for all subsequent network operations. * If omitted, the default value is 90 seconds. The timeout can be changed and * queried at any time with ftp_set_option and * ftp_get_option. *

* @return resource|false a SSL-FTP stream on success or FALSE on error. */ #[LanguageLevelTypeAware(['8.1' => 'FTP\Connection|false'], default: 'resource|false')] function ftp_ssl_connect(string $hostname, int $port = 21, int $timeout = 90) {} /** * Logs in to an FTP connection * @link https://php.net/manual/en/function.ftp-login.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $username

* The username (USER). *

* @param string $password

* The password (PASS). *

* @return bool TRUE on success or FALSE on failure. * If login fails, PHP will also throw a warning. */ function ftp_login(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $username, string $password): bool {} /** * Returns the current directory name * @link https://php.net/manual/en/function.ftp-pwd.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @return string|false the current directory name or FALSE on error. */ function ftp_pwd(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp): string|false {} /** * Changes to the parent directory * @link https://php.net/manual/en/function.ftp-cdup.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @return bool TRUE on success or FALSE on failure. */ function ftp_cdup(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp): bool {} /** * Changes the current directory on a FTP server * @link https://php.net/manual/en/function.ftp-chdir.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $directory

* The target directory. *

* @return bool TRUE on success or FALSE on failure. * If changing directory fails, PHP will also throw a warning. */ function ftp_chdir(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $directory): bool {} /** * Requests execution of a command on the FTP server * @link https://php.net/manual/en/function.ftp-exec.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $command

* The command to execute. *

* @return bool TRUE if the command was successful (server sent response code: * 200); otherwise returns FALSE. */ function ftp_exec(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $command): bool {} /** * Sends an arbitrary command to an FTP server * @link https://php.net/manual/en/function.ftp-raw.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $command

* The command to execute. *

* @return string[] the server's response as an array of strings. * No parsing is performed on the response string, nor does * ftp_raw determine if the command succeeded. */ #[LanguageLevelTypeAware(['8.0' => 'array|null'], default: 'array')] function ftp_raw(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $command) {} /** * Creates a directory * @link https://php.net/manual/en/function.ftp-mkdir.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $directory

* The name of the directory that will be created. *

* @return string|false the newly created directory name on success or FALSE on error. */ function ftp_mkdir(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $directory): string|false {} /** * Removes a directory * @link https://php.net/manual/en/function.ftp-rmdir.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $directory

* The directory to delete. This must be either an absolute or relative * path to an empty directory. *

* @return bool TRUE on success or FALSE on failure. */ function ftp_rmdir(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $directory): bool {} /** * Set permissions on a file via FTP * @link https://php.net/manual/en/function.ftp-chmod.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param int $permissions

* The new permissions, given as an octal value. *

* @param string $filename

* The remote file. *

* @return int|false the new file permissions on success or FALSE on error. */ function ftp_chmod(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, int $permissions, string $filename): int|false {} /** * Allocates space for a file to be uploaded * @link https://php.net/manual/en/function.ftp-alloc.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param int $size

* The number of bytes to allocate. *

* @param string &$response [optional]

* A textual representation of the servers response will be returned by * reference in result if a variable is provided. *

* @return bool TRUE on success or FALSE on failure. */ function ftp_alloc(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, int $size, &$response): bool {} /** * Returns a list of files in the given directory * @link https://php.net/manual/en/function.ftp-nlist.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $directory

* The directory to be listed. This parameter can also include arguments, eg. * ftp_nlist($conn_id, "-la /your/dir"); * Note that this parameter isn't escaped so there may be some issues with * filenames containing spaces and other characters. *

* @return string[]|false an array of filenames from the specified directory on success or * FALSE on error. */ function ftp_nlist(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $directory): array|false {} /** * Returns a detailed list of files in the given directory * @link https://php.net/manual/en/function.ftp-rawlist.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $directory

* The directory path. May include arguments for the LIST * command. *

* @param bool $recursive [optional]

* If set to TRUE, the issued command will be LIST -R. *

* @return string[]|false an array where each element corresponds to one line of text. *

* The output is not parsed in any way. The system type identifier returned by * ftp_systype can be used to determine how the results * should be interpreted. *

*/ function ftp_rawlist(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $directory, bool $recursive = false): array|false {} /** * Returns the system type identifier of the remote FTP server * @link https://php.net/manual/en/function.ftp-systype.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @return string|false the remote system type, or FALSE on error. */ function ftp_systype(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp): string|false {} /** * Turns passive mode on or off * @link https://php.net/manual/en/function.ftp-pasv.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param bool $enable

* If TRUE, the passive mode is turned on, else it's turned off. *

* @return bool TRUE on success or FALSE on failure. */ function ftp_pasv(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, bool $enable): bool {} /** * Downloads a file from the FTP server * @link https://php.net/manual/en/function.ftp-get.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $local_filename

* The local file path (will be overwritten if the file already exists). *

* @param string $remote_filename

* The remote file path. *

* @param int $mode

* The transfer mode. Must be either FTP_ASCII or FTP_BINARY. Optional since PHP 7.3 *

* @param int $offset [optional]

* The position in the remote file to start downloading from. *

* @return bool TRUE on success or FALSE on failure. */ function ftp_get( #[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $local_filename, string $remote_filename, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '5.3', to: '7.2')] int $mode, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '7.3')] int $mode = FTP_BINARY, int $offset = 0 ): bool {} /** * Downloads a file from the FTP server and saves to an open file * @link https://php.net/manual/en/function.ftp-fget.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param resource $stream

* An open file pointer in which we store the data. *

* @param string $remote_filename

* The remote file path. *

* @param int $mode

* The transfer mode. Must be either FTP_ASCII or FTP_BINARY. Since PHP 7.3 parameter is optional *

* @param int $offset [optional]

* The position in the remote file to start downloading from. *

* @return bool TRUE on success or FALSE on failure. */ function ftp_fget( #[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, $stream, string $remote_filename, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '5.3', to: '7.2')] int $mode, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '7.3')] int $mode = FTP_BINARY, int $offset = 0 ): bool {} /** * Uploads a file to the FTP server * @link https://php.net/manual/en/function.ftp-put.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $remote_filename

* The remote file path. *

* @param string $local_filename

* The local file path. *

* @param int $mode

* The transfer mode. Must be either FTP_ASCII or FTP_BINARY. Optional since PHP 7.3 *

* @param int $offset [optional]

The position in the remote file to start uploading to.

* @return bool TRUE on success or FALSE on failure. */ function ftp_put( #[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $remote_filename, string $local_filename, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '5.3', to: '7.2')] int $mode, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '7.3')] int $mode = FTP_BINARY, int $offset = 0 ): bool {} /** * Uploads from an open file to the FTP server * @link https://php.net/manual/en/function.ftp-fput.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $remote_filename

* The remote file path. *

* @param resource $stream

* An open file pointer on the local file. Reading stops at end of file. *

* @param int $mode

* The transfer mode. Must be either FTP_ASCII or FTP_BINARY. Optional since PHP 7.3 *

* @param int $offset [optional]

The position in the remote file to start uploading to.

* @return bool TRUE on success or FALSE on failure. */ function ftp_fput( #[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $remote_filename, $stream, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '5.3', to: '7.2')] int $mode, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '7.3')] int $mode = FTP_BINARY, int $offset = 0 ): bool {} /** * Returns the size of the given file * @link https://php.net/manual/en/function.ftp-size.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $filename

* The remote file. *

* @return int the file size on success, or -1 on error. */ function ftp_size(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $filename): int {} /** * Returns the last modified time of the given file * @link https://php.net/manual/en/function.ftp-mdtm.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $filename

* The file from which to extract the last modification time. *

* @return int the last modified time as a Unix timestamp on success, or -1 on * error. */ function ftp_mdtm(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $filename): int {} /** * Renames a file or a directory on the FTP server * @link https://php.net/manual/en/function.ftp-rename.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $from

* The old file/directory name. *

* @param string $to

* The new name. *

* @return bool TRUE on success or FALSE on failure. */ function ftp_rename(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $from, string $to): bool {} /** * Deletes a file on the FTP server * @link https://php.net/manual/en/function.ftp-delete.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $filename

* The file to delete. *

* @return bool TRUE on success or FALSE on failure. */ function ftp_delete(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $filename): bool {} /** * Sends a SITE command to the server * @link https://php.net/manual/en/function.ftp-site.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $command

* The SITE command. Note that this parameter isn't escaped so there may * be some issues with filenames containing spaces and other characters. *

* @return bool TRUE on success or FALSE on failure. */ function ftp_site(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $command): bool {} /** * Closes an FTP connection * @link https://php.net/manual/en/function.ftp-close.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @return bool TRUE on success or FALSE on failure. */ function ftp_close(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp): bool {} /** * Set miscellaneous runtime FTP options * @link https://php.net/manual/en/function.ftp-set-option.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param int $option

* Currently, the following options are supported: * * Supported runtime FTP options * * * * * * * * *
FTP_TIMEOUT_SEC * Changes the timeout in seconds used for all network related * functions. value must be an integer that * is greater than 0. The default timeout is 90 seconds. *
FTP_AUTOSEEK * When enabled, GET or PUT requests with a * resumepos or startpos * parameter will first seek to the requested position within the file. * This is enabled by default. *
*

* @param mixed $value

* This parameter depends on which option is chosen * to be altered. *

* @return bool TRUE if the option could be set; FALSE if not. A warning * message will be thrown if the option is not * supported or the passed value doesn't match the * expected value for the given option. */ function ftp_set_option(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, #[EV(flags: [FTP_TIMEOUT_SEC, FTP_AUTOSEEK, FTP_USEPASVADDRESS])] int $option, $value): bool {} /** * Retrieves various runtime behaviours of the current FTP stream * @link https://php.net/manual/en/function.ftp-get-option.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param int $option

* Currently, the following options are supported: * * Supported runtime FTP options * * * * * * * * *
FTP_TIMEOUT_SEC * Returns the current timeout used for network related operations. *
FTP_AUTOSEEK * Returns TRUE if this option is on, FALSE otherwise. *
*

* @return int|bool the value on success or FALSE if the given * option is not supported. In the latter case, a * warning message is also thrown. */ function ftp_get_option(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, #[EV(flags: [FTP_TIMEOUT_SEC, FTP_AUTOSEEK])] int $option): int|bool {} /** * Retrieves a file from the FTP server and writes it to an open file (non-blocking) * @link https://php.net/manual/en/function.ftp-nb-fget.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param resource $stream

* An open file pointer in which we store the data. *

* @param string $remote_filename

* The remote file path. *

* @param int $mode

* The transfer mode. Must be either FTP_ASCII or FTP_BINARY. Optional since PHP 7.3 *

* @param int $offset [optional]

The position in the remote file to start downloading from.

* @return int FTP_FAILED or FTP_FINISHED * or FTP_MOREDATA. */ #[EV([FTP_FAILED, FTP_FINISHED, FTP_MOREDATA])] function ftp_nb_fget( #[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, $stream, string $remote_filename, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '5.3', to: '7.2')] int $mode, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '7.3')] int $mode = FTP_BINARY, int $offset = 0 ): int {} /** * Retrieves a file from the FTP server and writes it to a local file (non-blocking) * @link https://php.net/manual/en/function.ftp-nb-get.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $local_filename

* The local file path (will be overwritten if the file already exists). *

* @param string $remote_filename

* The remote file path. *

* @param int $mode

* The transfer mode. Must be either FTP_ASCII or FTP_BINARY. Optional since PHP 7.3 *

* @param int $offset [optional]

The position in the remote file to start downloading from.

* @return int|false FTP_FAILED or FTP_FINISHED * or FTP_MOREDATA. */ #[EV([FTP_FAILED, FTP_FINISHED, FTP_MOREDATA])] #[LanguageLevelTypeAware(["8.1" => "int|false"], default: "int")] function ftp_nb_get( #[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $local_filename, string $remote_filename, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '5.3', to: '7.2')] int $mode, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '7.3')] int $mode = FTP_BINARY, int $offset = 0 ) {} /** * Continues retrieving/sending a file (non-blocking) * @link https://php.net/manual/en/function.ftp-nb-continue.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @return int FTP_FAILED or FTP_FINISHED * or FTP_MOREDATA. */ #[EV([FTP_FAILED, FTP_FINISHED, FTP_MOREDATA])] function ftp_nb_continue(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp): int {} /** * Stores a file on the FTP server (non-blocking) * @link https://php.net/manual/en/function.ftp-nb-put.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $remote_filename

* The remote file path. *

* @param string $local_filename

* The local file path. *

* @param int $mode

* The transfer mode. Must be either FTP_ASCII or FTP_BINARY. Optional since PHP 7.3 *

* @param int $offset [optional]

The position in the remote file to start uploading to.

* @return int|false FTP_FAILED or FTP_FINISHED * or FTP_MOREDATA. */ #[EV([FTP_FAILED, FTP_FINISHED, FTP_MOREDATA])] function ftp_nb_put( #[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $remote_filename, string $local_filename, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '5.3', to: '7.2')] int $mode, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '7.3')] int $mode = FTP_BINARY, int $offset = 0 ): int|false {} /** * Stores a file from an open file to the FTP server (non-blocking) * @link https://php.net/manual/en/function.ftp-nb-fput.php * @param resource $ftp

* The link identifier of the FTP connection. *

* @param string $remote_filename

* The remote file path. *

* @param resource $stream

* An open file pointer on the local file. Reading stops at end of file. *

* @param int $mode

* The transfer mode. Must be either FTP_ASCII or FTP_BINARY. Optional since PHP 7.3 *

* @param int $offset [optional]

The position in the remote file to start uploading to.

* @return int FTP_FAILED or FTP_FINISHED * or FTP_MOREDATA. */ #[EV([FTP_FAILED, FTP_FINISHED, FTP_MOREDATA])] function ftp_nb_fput( #[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp, string $remote_filename, $stream, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '5.3', to: '7.2')] int $mode, #[EV([FTP_ASCII, FTP_BINARY])] #[PhpStormStubsElementAvailable(from: '7.3')] int $mode = FTP_BINARY, int $offset = 0 ): int {} /** * Alias of ftp_close * @link https://php.net/manual/en/function.ftp-quit.php * @param resource $ftp * @return bool TRUE on success or FALSE on failure. */ function ftp_quit(#[LanguageLevelTypeAware(['8.1' => 'FTP\Connection'], default: 'resource')] $ftp): bool {} /** *

* @link https://php.net/manual/en/ftp.constants.php */ define('FTP_ASCII', 1); /** *

* @link https://php.net/manual/en/ftp.constants.php */ define('FTP_TEXT', 1); /** *

* @link https://php.net/manual/en/ftp.constants.php */ define('FTP_BINARY', 2); /** *

* @link https://php.net/manual/en/ftp.constants.php */ define('FTP_IMAGE', 2); /** *

* Automatically determine resume position and start position for GET and PUT requests * (only works if FTP_AUTOSEEK is enabled) *

* @link https://php.net/manual/en/ftp.constants.php */ define('FTP_AUTORESUME', -1); /** *

* See ftp_set_option for information. *

* @link https://php.net/manual/en/ftp.constants.php */ define('FTP_TIMEOUT_SEC', 0); /** *

* See ftp_set_option for information. *

* @link https://php.net/manual/en/ftp.constants.php */ define('FTP_AUTOSEEK', 1); define('FTP_USEPASVADDRESS', 2); /** *

* Asynchronous transfer has failed *

* @link https://php.net/manual/en/ftp.constants.php */ define('FTP_FAILED', 0); /** *

* Asynchronous transfer has finished *

* @link https://php.net/manual/en/ftp.constants.php */ define('FTP_FINISHED', 1); /** *

* Asynchronous transfer is still active *

* @link https://php.net/manual/en/ftp.constants.php */ define('FTP_MOREDATA', 2); // End of ftp v. * The MySQL server. It can also include a port number. e.g. * "hostname:port" or a path to a local socket e.g. ":/path/to/socket" for * the localhost. *

*

* If the PHP directive * mysql.default_host is undefined (default), then the default * value is 'localhost:3306'. In "ini.sql.safe-mode", this parameter is ignored * and value 'localhost:3306' is always used. *

* @param string $username [optional]

* The username. Default value is defined by mysql.default_user. In * "ini.sql.safe-mode", this parameter is ignored and the name of the user that * owns the server process is used. *

* @param string $password [optional]

* The password. Default value is defined by mysql.default_password. In * "ini.sql.safe-mode", this parameter is ignored and empty password is used. *

* @param bool $new_link [optional]

* If a second call is made to mysql_connect * with the same arguments, no new link will be established, but * instead, the link identifier of the already opened link will be * returned. The new_link parameter modifies this * behavior and makes mysql_connect always open * a new link, even if mysql_connect was called * before with the same parameters. * In "ini.sql.safe-mode", this parameter is ignored. *

* @param int $client_flags [optional]

* The client_flags parameter can be a combination * of the following constants: * 128 (enable LOAD DATA LOCAL handling), * MYSQL_CLIENT_SSL, * MYSQL_CLIENT_COMPRESS, * MYSQL_CLIENT_IGNORE_SPACE or * MYSQL_CLIENT_INTERACTIVE. * Read the section about for further information. * In "ini.sql.safe-mode", this parameter is ignored. *

* @return resource|false a MySQL link identifier on success or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_connect($server = 'ini_get("mysql.default_host")', $username = 'ini_get("mysql.default_user")', $password = 'ini_get("mysql.default_password")', $new_link = false, $client_flags = 0) {} /** * Open a persistent connection to a MySQL server * @link https://php.net/manual/en/function.mysql-pconnect.php * @param string $server [optional]

* The MySQL server. It can also include a port number. e.g. * "hostname:port" or a path to a local socket e.g. ":/path/to/socket" for * the localhost. *

*

* If the PHP directive * mysql.default_host is undefined (default), then the default * value is 'localhost:3306' *

* @param string $username [optional]

* The username. Default value is the name of the user that owns the * server process. *

* @param string $password [optional]

* The password. Default value is an empty password. *

* @param int $client_flags [optional]

* The client_flags parameter can be a combination * of the following constants: * 128 (enable LOAD DATA LOCAL handling), * MYSQL_CLIENT_SSL, * MYSQL_CLIENT_COMPRESS, * MYSQL_CLIENT_IGNORE_SPACE or * MYSQL_CLIENT_INTERACTIVE. *

* @return resource|false a MySQL persistent link identifier on success, or false on * failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_pconnect($server = 'ini_get("mysql.default_host")', $username = 'ini_get("mysql.default_user")', $password = 'ini_get("mysql.default_password")', $client_flags = null) {} /** * Close MySQL connection * @link https://php.net/manual/en/function.mysql-close.php * @param resource $link_identifier [optional] * @return bool true on success or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_close($link_identifier = null) {} /** * Select a MySQL database * @link https://php.net/manual/en/function.mysql-select-db.php * @param string $database_name

* The name of the database that is to be selected. *

* @param resource $link_identifier [optional] * @return bool true on success or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_select_db($database_name, $link_identifier = null) {} /** * Send a MySQL query * @link https://php.net/manual/en/function.mysql-query.php * @param string $query

* An SQL query *

*

* The query string should not end with a semicolon. * Data inside the query should be properly escaped. *

* @param resource $link_identifier [optional] * @return resource|bool For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, * mysql_query * returns a resource on success, or false on * error. *

*

* For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, * mysql_query returns true on success * or false on error. *

*

* The returned result resource should be passed to * mysql_fetch_array, and other * functions for dealing with result tables, to access the returned data. *

*

* Use mysql_num_rows to find out how many rows * were returned for a SELECT statement or * mysql_affected_rows to find out how many * rows were affected by a DELETE, INSERT, REPLACE, or UPDATE * statement. *

*

* mysql_query will also fail and return false * if the user does not have permission to access the table(s) referenced by * the query. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_query($query, $link_identifier = null) {} /** * @deprecated 5.5 * Send an SQL query to MySQL without fetching and buffering the result rows. * @link https://php.net/manual/en/function.mysql-unbuffered-query.php * @param string $query

* The SQL query to execute. *

*

* Data inside the query should be properly escaped. *

* @param resource $link_identifier [optional] * @return resource|bool For SELECT, SHOW, DESCRIBE or EXPLAIN statements, * mysql_unbuffered_query * returns a resource on success, or false on * error. *

*

* For other type of SQL statements, UPDATE, DELETE, DROP, etc, * mysql_unbuffered_query returns true on success * or false on error. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_unbuffered_query($query, $link_identifier = null) {} /** * Selects a database and executes a query on it * @link https://php.net/manual/en/function.mysql-db-query.php * @param string $database

* The name of the database that will be selected. *

* @param string $query

* The MySQL query. *

*

* Data inside the query should be properly escaped. *

* @param resource $link_identifier [optional] * @return resource|bool a positive MySQL result resource to the query result, * or false on error. The function also returns true/false for * INSERT/UPDATE/DELETE * queries to indicate success/failure. * @removed 7.0 * @see mysql_select_db() * @see mysql_query() */ #[Deprecated('Use mysql_select_db() and mysql_query() instead', since: '5.3')] function mysql_db_query($database, $query, $link_identifier = null) {} /** * List databases available on a MySQL server * @link https://php.net/manual/en/function.mysql-list-dbs.php * @param resource $link_identifier [optional] * @return resource|false a result pointer resource on success, or false on * failure. Use the mysql_tablename function to traverse * this result pointer, or any function for result tables, such as * mysql_fetch_array. * @removed 7.0 */ #[Deprecated(since: '5.4')] function mysql_list_dbs($link_identifier = null) {} /** * List tables in a MySQL database * @link https://php.net/manual/en/function.mysql-list-tables.php * @param string $database

* The name of the database *

* @param resource $link_identifier [optional] * @return resource|false A result pointer resource on success or false on failure. *

* Use the mysql_tablename function to * traverse this result pointer, or any function for result tables, * such as mysql_fetch_array. *

* @removed 7.0 */ #[Deprecated(since: '5.3')] function mysql_list_tables($database, $link_identifier = null) {} /** * List MySQL table fields * @link https://php.net/manual/en/function.mysql-list-fields.php * @param string $database_name

* The name of the database that's being queried. *

* @param string $table_name

* The name of the table that's being queried. *

* @param resource $link_identifier [optional] * @return resource|false A result pointer resource on success, or false on * failure. *

*

* The returned result can be used with mysql_field_flags, * mysql_field_len, * mysql_field_name * mysql_field_type. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_list_fields($database_name, $table_name, $link_identifier = null) {} /** * List MySQL processes * @link https://php.net/manual/en/function.mysql-list-processes.php * @param resource $link_identifier [optional] * @return resource|false A result pointer resource on success or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_list_processes($link_identifier = null) {} /** * Returns the text of the error message from previous MySQL operation * @link https://php.net/manual/en/function.mysql-error.php * @param resource $link_identifier [optional] * @return string the error text from the last MySQL function, or * '' (empty string) if no error occurred. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_error($link_identifier = null) {} /** * Returns the numerical value of the error message from previous MySQL operation * @link https://php.net/manual/en/function.mysql-errno.php * @param resource $link_identifier [optional] * @return int the error number from the last MySQL function, or * 0 (zero) if no error occurred. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_errno($link_identifier = null) {} /** * Get number of affected rows in previous MySQL operation * @link https://php.net/manual/en/function.mysql-affected-rows.php * @param resource $link_identifier [optional] * @return int the number of affected rows on success, and -1 if the last query * failed. *

*

* If the last query was a DELETE query with no WHERE clause, all * of the records will have been deleted from the table but this * function will return zero with MySQL versions prior to 4.1.2. *

*

* When using UPDATE, MySQL will not update columns where the new value is the * same as the old value. This creates the possibility that * mysql_affected_rows may not actually equal the number * of rows matched, only the number of rows that were literally affected by * the query. *

*

* The REPLACE statement first deletes the record with the same primary key * and then inserts the new record. This function returns the number of * deleted records plus the number of inserted records. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_affected_rows($link_identifier = null) {} /** * Get the ID generated in the last query * @link https://php.net/manual/en/function.mysql-insert-id.php * @param resource $link_identifier [optional] * @return int The ID generated for an AUTO_INCREMENT column by the previous * query on success, 0 if the previous * query does not generate an AUTO_INCREMENT value, or false if * no MySQL connection was established. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_insert_id($link_identifier = null) {} /** * Get result data * @link https://php.net/manual/en/function.mysql-result.php * @param resource $result * @param int $row

* The row number from the result that's being retrieved. Row numbers * start at 0. *

* @param mixed $field [optional]

* The name or offset of the field being retrieved. *

*

* It can be the field's offset, the field's name, or the field's table * dot field name (tablename.fieldname). If the column name has been * aliased ('select foo as bar from...'), use the alias instead of the * column name. If undefined, the first field is retrieved. *

* @return string The contents of one cell from a MySQL result set on success, or * false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_result($result, $row, $field = 0) {} /** * Get number of rows in result * @link https://php.net/manual/en/function.mysql-num-rows.php * @param resource $result

The result resource that is being evaluated. This result comes from a call to mysql_query().

* @return int|false

The number of rows in the result set on success or FALSE on failure.

* @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_num_rows($result) {} /** * Get number of fields in result * @link https://php.net/manual/en/function.mysql-num-fields.php * @param resource $result * @return int the number of fields in the result set resource on * success or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_num_fields($result) {} /** * Get a result row as an enumerated array * @link https://php.net/manual/en/function.mysql-fetch-row.php * @param resource $result * @return array an numerical array of strings that corresponds to the fetched row, or * false if there are no more rows. *

*

* mysql_fetch_row fetches one row of data from * the result associated with the specified result identifier. The * row is returned as an array. Each result column is stored in an * array offset, starting at offset 0. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_fetch_row($result) {} /** * Fetch a result row as an associative array, a numeric array, or both * @link https://php.net/manual/en/function.mysql-fetch-array.php * @param resource $result * @param int $result_type [optional]

* The type of array that is to be fetched. It's a constant and can * take the following values: MYSQL_ASSOC, * MYSQL_NUM, and * MYSQL_BOTH. *

* @return array|false an array of strings that corresponds to the fetched row, or false * if there are no more rows. The type of returned array depends on * how result_type is defined. By using * MYSQL_BOTH (default), you'll get an array with both * associative and number indices. Using MYSQL_ASSOC, you * only get associative indices (as mysql_fetch_assoc * works), using MYSQL_NUM, you only get number indices * (as mysql_fetch_row works). *

*

* If two or more columns of the result have the same field names, * the last column will take precedence. To access the other column(s) * of the same name, you must use the numeric index of the column or * make an alias for the column. For aliased columns, you cannot * access the contents with the original column name. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_fetch_array($result, $result_type = MYSQL_BOTH) {} /** * Fetch a result row as an associative array * @link https://php.net/manual/en/function.mysql-fetch-assoc.php * @param resource $result * @return array an associative array of strings that corresponds to the fetched row, or * false if there are no more rows. *

*

* If two or more columns of the result have the same field names, * the last column will take precedence. To access the other * column(s) of the same name, you either need to access the * result with numeric indices by using * mysql_fetch_row or add alias names. * See the example at the mysql_fetch_array * description about aliases. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_fetch_assoc($result) {} /** * @template T * * Fetch a result row as an object * @link https://php.net/manual/en/function.mysql-fetch-object.php * @param resource $result * @param class-string $class_name [optional]

* The name of the class to instantiate, set the properties of and return. * If not specified, a stdClass object is returned. *

* @param array $params [optional]

* An optional array of parameters to pass to the constructor * for class_name objects. *

* @return T|stdClass an object with string properties that correspond to the * fetched row, or false if there are no more rows. *

*

* mysql_fetch_row fetches one row of data from * the result associated with the specified result identifier. The * row is returned as an array. Each result column is stored in an * array offset, starting at offset 0. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_fetch_object($result, $class_name = 'stdClass', array $params = null) {} /** * Move internal result pointer * @link https://php.net/manual/en/function.mysql-data-seek.php * @param resource $result * @param int $row_number

* The desired row number of the new result pointer. *

* @return bool true on success or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_data_seek($result, $row_number) {} /** * Get the length of each output in a result * @link https://php.net/manual/en/function.mysql-fetch-lengths.php * @param resource $result * @return array|false An array of lengths on success or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_fetch_lengths($result) {} /** * Get column information from a result and return as an object * @link https://php.net/manual/en/function.mysql-fetch-field.php * @param resource $result * @param int $field_offset [optional]

* The numerical field offset. If the field offset is not specified, the * next field that was not yet retrieved by this function is retrieved. * The field_offset starts at 0. *

* @return object an object containing field information. The properties * of the object are: *

*

* name - column name * table - name of the table the column belongs to * def - default value of the column * max_length - maximum length of the column * not_null - 1 if the column cannot be null * primary_key - 1 if the column is a primary key * unique_key - 1 if the column is a unique key * multiple_key - 1 if the column is a non-unique key * numeric - 1 if the column is numeric * blob - 1 if the column is a BLOB * type - the type of the column * unsigned - 1 if the column is unsigned * zerofill - 1 if the column is zero-filled * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_fetch_field($result, $field_offset = 0) {} /** * Set result pointer to a specified field offset * @link https://php.net/manual/en/function.mysql-field-seek.php * @param resource $result * @param int $field_offset * @return bool true on success or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_field_seek($result, $field_offset) {} /** * Free result memory * @link https://php.net/manual/en/function.mysql-free-result.php * @param resource $result * @return bool true on success or false on failure. *

* If a non-resource is used for the result, an * error of level E_WARNING will be emitted. It's worth noting that * mysql_query only returns a resource * for SELECT, SHOW, EXPLAIN, and DESCRIBE queries. *

* @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_free_result($result) {} /** * Get the name of the specified field in a result * @link https://php.net/manual/en/function.mysql-field-name.php * @param resource $result * @param int $field_offset * @return string|false The name of the specified field index on success or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_field_name($result, $field_offset) {} /** * Get name of the table the specified field is in * @link https://php.net/manual/en/function.mysql-field-table.php * @param resource $result * @param int $field_offset * @return string The name of the table on success. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_field_table($result, $field_offset) {} /** * Returns the length of the specified field * @link https://php.net/manual/en/function.mysql-field-len.php * @param resource $result * @param int $field_offset * @return int|false The length of the specified field index on success or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_field_len($result, $field_offset) {} /** * Get the type of the specified field in a result * @link https://php.net/manual/en/function.mysql-field-type.php * @param resource $result * @param int $field_offset * @return string The returned field type * will be one of "int", "real", * "string", "blob", and others as * detailed in the MySQL * documentation. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_field_type($result, $field_offset) {} /** * Get the flags associated with the specified field in a result * @link https://php.net/manual/en/function.mysql-field-flags.php * @param resource $result * @param int $field_offset * @return string|false a string of flags associated with the result or false on failure. *

* The following flags are reported, if your version of MySQL * is current enough to support them: "not_null", * "primary_key", "unique_key", * "multiple_key", "blob", * "unsigned", "zerofill", * "binary", "enum", * "auto_increment" and "timestamp". *

* @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_field_flags($result, $field_offset) {} /** * Escapes a string for use in a mysql_query * @link https://php.net/manual/en/function.mysql-escape-string.php * @param string $unescaped_string

* The string that is to be escaped. *

* @return string the escaped string. * @removed 7.0 */ #[Deprecated(replacement: 'mysql_real_escape_string(%parameter0%)', since: '5.3')] function mysql_escape_string($unescaped_string) {} /** * Escapes special characters in a string for use in an SQL statement * @link https://php.net/manual/en/function.mysql-real-escape-string.php * @param string $unescaped_string

* The string that is to be escaped. *

* @param resource $link_identifier [optional] * @return string|false the escaped string, or false on error. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_real_escape_string($unescaped_string, $link_identifier = null) {} /** * Get current system status * @link https://php.net/manual/en/function.mysql-stat.php * @param resource $link_identifier [optional] * @return string a string with the status for uptime, threads, queries, open tables, * flush tables and queries per second. For a complete list of other status * variables, you have to use the SHOW STATUS SQL command. * If link_identifier is invalid, null is returned. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_stat($link_identifier = null) {} /** * Return the current thread ID * @link https://php.net/manual/en/function.mysql-thread-id.php * @param resource $link_identifier [optional] * @return int|false The thread ID on success or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_thread_id($link_identifier = null) {} /** * Returns the name of the character set * @link https://php.net/manual/en/function.mysql-client-encoding.php * @param resource $link_identifier [optional] * @return string the default character set name for the current connection. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_client_encoding($link_identifier = null) {} /** * Ping a server connection or reconnect if there is no connection * @link https://php.net/manual/en/function.mysql-ping.php * @param resource $link_identifier [optional] * @return bool true if the connection to the server MySQL server is working, * otherwise false. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_ping($link_identifier = null) {} /** * Get MySQL client info * @link https://php.net/manual/en/function.mysql-get-client-info.php * @return string The MySQL client version. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_get_client_info() {} /** * Get MySQL host info * @link https://php.net/manual/en/function.mysql-get-host-info.php * @param resource $link_identifier [optional] * @return string a string describing the type of MySQL connection in use for the * connection or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_get_host_info($link_identifier = null) {} /** * Get MySQL protocol info * @link https://php.net/manual/en/function.mysql-get-proto-info.php * @param resource $link_identifier [optional] * @return int|false the MySQL protocol on success or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_get_proto_info($link_identifier = null) {} /** * Get MySQL server info * @link https://php.net/manual/en/function.mysql-get-server-info.php * @param resource $link_identifier [optional] * @return string|false the MySQL server version on success or false on failure. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_get_server_info($link_identifier = null) {} /** * Get information about the most recent query * @link https://php.net/manual/en/function.mysql-info.php * @param resource $link_identifier [optional] * @return string|false information about the statement on success, or false on * failure. See the example below for which statements provide information, * and what the returned value may look like. Statements that are not listed * will return false. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_info($link_identifier = null) {} /** * Sets the client character set * @link https://php.net/manual/en/function.mysql-set-charset.php * @param string $charset

* A valid character set name. *

* @param resource $link_identifier [optional] * @return bool true on success or false on failure. * @since 5.2.3 * @removed 7.0 * @see mysqli_set_charset() */ #[Deprecated(replacement: 'Use mysqli_set_charset instead', since: '5.5')] function mysql_set_charset($charset, $link_identifier = null) {} /** * @param $database_name * @param $query * @param $link_identifier [optional] * @removed 7.0 */ #[Deprecated(replacement: "mysql_db_query(%parametersList%)", since: '5.3')] function mysql($database_name, $query, $link_identifier) {} /** * @param $result * @param $field_index * @removed 7.0 */ #[Deprecated(replacement: 'mysql_field_name(%parametersList%)', since: '5.5')] function mysql_fieldname($result, $field_index) {} /** * @param $result * @param $field_offset * @removed 7.0 */ #[Deprecated(replacement: 'mysql_field_table(%parametersList%)', since: '5.5')] function mysql_fieldtable($result, $field_offset) {} /** * @param $result * @param $field_offset * @removed 7.0 */ #[Deprecated(replacement: 'mysql_field_len(%parametersList%)', since: '5.5')] function mysql_fieldlen($result, $field_offset) {} /** * @param $result * @param $field_offset * @removed 7.0 */ #[Deprecated(replacement: 'mysql_field_type(%parametersList%)', since: '5.5')] function mysql_fieldtype($result, $field_offset) {} /** * @param $result * @param $field_offset * @removed 7.0 */ #[Deprecated(replacement: 'mysql_field_flags(%parametersList%)', since: '5.5')] function mysql_fieldflags($result, $field_offset) {} /** * @param $database_name * @param $link_identifier [optional] * @removed 7.0 */ #[Deprecated(replacement: 'mysql_select_db(%parametersList%)', since: '5.5')] function mysql_selectdb($database_name, $link_identifier) {} /** * @param $result * @removed 7.0 */ #[Deprecated(replacement: 'mysql_free_result(%parametersList%)', since: '5.5')] function mysql_freeresult($result) {} /** * @param $result * @removed 7.0 */ #[Deprecated(replacement: 'mysql_num_fields(%parametersList%)', since: '5.5')] function mysql_numfields($result) {} /** * (PHP 4, PHP 5) * Alias of mysql_num_rows() * @link https://php.net/manual/en/function.mysql-num-rows.php * @param resource $result

The result resource that is being evaluated. This result comes from a call to mysql_query().

* @return int|false

The number of rows in the result set on success or FALSE on failure.

* @removed 7.0 */ #[Deprecated(replacement: 'mysql_num_rows(%parametersList%)', since: '5.5')] function mysql_numrows($result) {} /** * @param $link_identifier [optional] * @removed 7.0 */ #[Deprecated(replacement: 'mysql_list_dbs(%parametersList%)', since: '5.5')] function mysql_listdbs($link_identifier) {} /** * @param $database_name * @param $link_identifier [optional] * @removed 7.0 */ #[Deprecated(replacement: 'mysql_list_tables(%parametersList%)', since: '5.5')] function mysql_listtables($database_name, $link_identifier) {} /** * @param $database_name * @param $table_name * @param $link_identifier [optional] * @removed 7.0 */ #[Deprecated(replacement: 'mysql_list_fields(%parametersList%)', since: '5.5')] function mysql_listfields($database_name, $table_name, $link_identifier) {} /** * Retrieves database name from the call to {@see mysql_list_dbs} * @link https://php.net/manual/en/function.mysql-db-name.php * @param resource $result

* The result pointer from a call to mysql_list_dbs. *

* @param int $row

* The index into the result set. *

* @param mixed $field [optional]

* The field name. *

* @return string|false the database name on success, and false on failure. If false * is returned, use mysql_error to determine the nature * of the error. * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_db_name($result, $row, $field = null) {} /** * @param $result * @param $row * @param $field [optional] * @removed 7.0 */ #[Deprecated(replacement: 'mysql_db_name(%parametersList%)', since: '5.5')] function mysql_dbname($result, $row, $field) {} /** * Get table name of field * @link https://php.net/manual/en/function.mysql-tablename.php * @param resource $result

* A result pointer resource that's returned from * mysql_list_tables. *

* @param int $i

* The integer index (row/table number) *

* @return string|false The name of the table on success or false on failure. *

* Use the mysql_tablename function to * traverse this result pointer, or any function for result tables, * such as mysql_fetch_array. *

* @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_tablename($result, $i) {} /** * @param $result * @param $row * @param $field [optional] * @removed 7.0 */ #[Deprecated(since: '5.5')] function mysql_table_name($result, $row, $field) {} /** * Columns are returned into the array having the fieldname as the array * index. * @link https://php.net/manual/en/mysql.constants.php * @deprecated 5.5 * @removed 7.0 */ define('MYSQL_ASSOC', 1); /** * Columns are returned into the array having a numerical index to the * fields. This index starts with 0, the first field in the result. * @link https://php.net/manual/en/mysql.constants.php * @deprecated 5.5 * @removed 7.0 */ define('MYSQL_NUM', 2); /** * Columns are returned into the array having both a numerical index * and the fieldname as the array index. * @link https://php.net/manual/en/mysql.constants.php * @deprecated 5.5 * @removed 7.0 */ define('MYSQL_BOTH', 3); /** * Use compression protocol * @link https://php.net/manual/en/mysql.constants.php * @deprecated 5.5 * @removed 7.0 */ define('MYSQL_CLIENT_COMPRESS', 32); /** * Use SSL encryption. This flag is only available with version 4.x * of the MySQL client library or newer. Version 3.23.x is bundled both * with PHP 4 and Windows binaries of PHP 5. * @link https://php.net/manual/en/mysql.constants.php * @deprecated 5.5 * @removed 7.0 */ define('MYSQL_CLIENT_SSL', 2048); /** * Allow interactive_timeout seconds (instead of wait_timeout) of * inactivity before closing the connection. * @link https://php.net/manual/en/mysql.constants.php * @deprecated 5.5 * @removed 7.0 */ define('MYSQL_CLIENT_INTERACTIVE', 1024); /** * Allow space after function names * @link https://php.net/manual/en/mysql.constants.php * @deprecated 5.5 * @removed 7.0 */ define('MYSQL_CLIENT_IGNORE_SPACE', 256); // End of mysql v.1.0 * the severity of the error (one of the following constants: * LIBXML_ERR_WARNING, * LIBXML_ERR_ERROR or * LIBXML_ERR_FATAL) *

* @var int */ public int $level; /** *

* The error's code. *

* @var int */ public int $code; /** *

* The column where the error occurred. *

*

Note: *

* This property isn't entirely implemented in libxml and therefore * 0 is often returned. *

* @var int */ public int $column; /** *

* The error message, if any. *

* @var string */ public string $message; /** *

The filename, or empty if the XML was loaded from a string.

* @var string */ public string $file; /** *

* The line where the error occurred. *

* @var int */ public int $line; } /** * Set the streams context for the next libxml document load or write * @link https://php.net/manual/en/function.libxml-set-streams-context.php * @param resource $context

* The stream context resource (created with * stream_context_create) *

* @return void No value is returned. */ function libxml_set_streams_context($context): void {} /** * Disable libxml errors and allow user to fetch error information as needed * @link https://php.net/manual/en/function.libxml-use-internal-errors.php * @param bool|null $use_errors

* Enable (TRUE) user error handling or disable (FALSE) user error handling. Disabling will also clear any existing libxml errors. *

* @return bool This function returns the previous value of * use_errors. */ function libxml_use_internal_errors( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] bool $use_errors = false, #[PhpStormStubsElementAvailable(from: '8.0')] ?bool $use_errors = null ): bool {} /** * Retrieve last error from libxml * @link https://php.net/manual/en/function.libxml-get-last-error.php * @return LibXMLError|false a LibXMLError object if there is any error in the * buffer, FALSE otherwise. */ #[Pure(true)] function libxml_get_last_error(): LibXMLError|false {} /** * Clear libxml error buffer * @link https://php.net/manual/en/function.libxml-clear-errors.php * @return void No value is returned. */ function libxml_clear_errors(): void {} /** * Retrieve array of errors * @link https://php.net/manual/en/function.libxml-get-errors.php * @return LibXMLError[] an array with LibXMLError objects if there are any * errors in the buffer, or an empty array otherwise. */ #[Pure(true)] function libxml_get_errors(): array {} /** * Disable the ability to load external entities * @link https://php.net/manual/en/function.libxml-disable-entity-loader.php * @param bool $disable [optional]

* Disable (TRUE) or enable (FALSE) libxml extensions (such as * , * and ) to load external entities. *

* @return bool the previous value. * @since 5.2.11 */ #[Deprecated(since: "8.0")] function libxml_disable_entity_loader(bool $disable = true): bool {} /** * Changes the default external entity loader * @link https://php.net/manual/en/function.libxml-set-external-entity-loader.php * @param callable|null $resolver_function

* A callable that takes three arguments. Two strings, a public id * and system id, and a context (an array with four keys) as the third argument. * This callback should return a resource, a string from which a resource can be * opened, or NULL. *

* @return bool * @since 5.4 */ function libxml_set_external_entity_loader(?callable $resolver_function): bool {} /** * Returns the currently installed external entity loader, i.e. the value which was passed to * libxml_set_external_entity_loader() or null if no loader was installed and the default entity loader will be used. * This allows libraries to save and restore the loader, controlling entity expansion without interfering with the rest * of the application. * * @return callable|null * @since 8.2 */ function libxml_get_external_entity_loader(): ?callable {} /** * libxml version like 20605 or 20617 * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_VERSION', 20901); /** * libxml version like 2.6.5 or 2.6.17 * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_DOTTED_VERSION', "2.9.1"); define('LIBXML_LOADED_VERSION', 20901); /** * Substitute entities * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_NOENT', 2); /** * Load the external subset * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_DTDLOAD', 4); /** * Default DTD attributes * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_DTDATTR', 8); /** * Validate with the DTD * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_DTDVALID', 16); /** * Suppress error reports * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_NOERROR', 32); /** * Suppress warning reports * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_NOWARNING', 64); /** * Remove blank nodes * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_NOBLANKS', 256); /** * Implement XInclude substitution * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_XINCLUDE', 1024); /** * Remove redundant namespaces declarations * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_NSCLEAN', 8192); /** * Merge CDATA as text nodes * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_NOCDATA', 16384); /** * Disable network access when loading documents * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_NONET', 2048); /** * Sets XML_PARSE_PEDANTIC flag, which enables pedentic error reporting. * @link https://php.net/manual/en/libxml.constants.php * @since 5.4 */ define('LIBXML_PEDANTIC', 128); /** * Activate small nodes allocation optimization. This may speed up your * application without needing to change the code. *

* Only available in Libxml >= 2.6.21 *

* @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_COMPACT', 65536); /** * Allows line numbers greater than 65535 to be reported correctly. *

* Only available in Libxml >= 2.9.0 *

* @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_BIGLINES', 65535); /** * Drop the XML declaration when saving a document *

* Only available in Libxml >= 2.6.21 *

* @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_NOXMLDECL', 2); /** * Sets XML_PARSE_HUGE flag, which relaxes any hardcoded limit from the parser. This affects * limits like maximum depth of a document or the entity recursion, as well as limits of the * size of text nodes. *

* Only available in Libxml >= 2.7.0 (as of PHP >= 5.3.2 and PHP >= 5.2.12) *

* @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_PARSEHUGE', 524288); /** * Expand empty tags (e.g. <br/> to * <br></br>) *

* This option is currently just available in the * and * functions. *

* @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_NOEMPTYTAG', 4); /** * Create default/fixed value nodes during XSD schema validation *

* Only available in Libxml >= 2.6.14 (as of PHP >= 5.5.2) *

* @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_SCHEMA_CREATE', 1); /** * Sets HTML_PARSE_NOIMPLIED flag, which turns off the * automatic adding of implied html/body... elements. *

* Only available in Libxml >= 2.7.7 (as of PHP >= 5.4.0) *

* @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_HTML_NOIMPLIED', 8192); /** * Sets HTML_PARSE_NODEFDTD flag, which prevents a default doctype * being added when one is not found. *

* Only available in Libxml >= 2.7.8 (as of PHP >= 5.4.0) *

* @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_HTML_NODEFDTD', 4); /** * No errors * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_ERR_NONE', 0); /** * A simple warning * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_ERR_WARNING', 1); /** * A recoverable error * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_ERR_ERROR', 2); /** * A fatal error * @link https://php.net/manual/en/libxml.constants.php */ define('LIBXML_ERR_FATAL', 3); /** * @since 8.4 */ define('LIBXML_RECOVER', 1); // End of libxml v. ] value) {stmts} (children: expr, value, key, stmts) */ const AST_FOREACH = 1025; /** A global function declaration. (children: name, docComment, params, stmts, returnType, __declId) */ const AST_FUNC_DECL = 67; /** A usage of a global variable of the form `global var`. (children: var) */ const AST_GLOBAL = 277; /** A goto statement of the form `goto label;` (children: label) */ const AST_GOTO = 285; /** A use statement (for classes, namespaces, functions, and/or constants) containing a list of one or more elements. (children: prefix, uses) */ const AST_GROUP_USE = 545; /** A `__halt_compiler;` statement. (children: offset) */ const AST_HALT_COMPILER = 282; /** A list of `ast\AST_IF_ELEM` nodes for a chain of 1 or more `if`/`elseif`/`else` statements (numerically indexed children) */ const AST_IF = 133; /** An `if`/`elseif`/`elseif` statement of the form `if (cond) stmts` (children: cond, stmts) */ const AST_IF_ELEM = 535; /** An `include*(expr)`, `require*(expr)`, or `eval(expr)` statement. The type can be determined from the flags (`ast\flags\EXEC_*`). (children: expr) */ const AST_INCLUDE_OR_EVAL = 269; /** An `expr instanceof class` expression. (children: expr, class) */ const AST_INSTANCEOF = 528; /** An `isset(var)` expression. (children: var) */ const AST_ISSET = 263; /** A `name:` expression (a target for `goto name`). (children: name) */ const AST_LABEL = 280; /** Used for `list() = ` unpacking, etc. Predates AST version 50. (numerically indexed children) */ const AST_LIST = 255; /** A magic constant (depends on flags that are one of `ast\flags\MAGIC_*`) */ const AST_MAGIC_CONST = 0; /** A match expression of the form `match(cond) { stmts }` (children: cond, stmts) */ const AST_MATCH = 548; /** An arm of a match expression of the form `cond => expr` (children: cond, expr) */ const AST_MATCH_ARM = 549; /** Numerically indexed children of the kind `ast\AST_MATCH_ARM` for the statements of a match expression */ const AST_MATCH_ARM_LIST = 147; /** A method declaration. (children: name, docComment, params, stmts, returnType, __declId) */ const AST_METHOD = 69; /** An invocation of an instance method, of the form `expr->method(args)` (children: expr, method, args) */ const AST_METHOD_CALL = 768; /** A reference to a method when using a trait inside a class declaration. (children: class, method) */ const AST_METHOD_REFERENCE = 541; /** A name token (e.g. of a constant/class/class type) (children: name) */ const AST_NAME = 2048; /** A named argument in an argument list of a function/method call. (children: name, expr) */ const AST_NAMED_ARG = 550; /** A namespace declaration of the form `namespace name;` or `namespace name { stmts }`. (children: name, stmts) */ const AST_NAMESPACE = 542; /** A list of names (e.g. for catching multiple classes in a `catch` statement) (numerically indexed children) */ const AST_NAME_LIST = 141; /** An object creation expression of the form `new class(args)` (children: class, args) */ const AST_NEW = 527; /** A nullable node with a child node of kind `ast\AST_TYPE` or `ast\AST_NAME` (children: type) */ const AST_NULLABLE_TYPE = 2050; /** A nullsafe method call of the form `expr?->method(args)`. (children: expr, method, args) */ const AST_NULLSAFE_METHOD_CALL = 769; /** A nullsafe property read of the form `expr?->prop`. (children: expr, prop) */ const AST_NULLSAFE_PROP = 514; /** A parameter of a function, closure, or method declaration. (children: type, name, default) */ const AST_PARAM = 1280; /** The list of parameters of a function, closure, or method declaration. (numerically indexed children) */ const AST_PARAM_LIST = 136; /** A `var--` expression. (children: var) */ const AST_POST_DEC = 274; /** A `var++` expression. (children: var) */ const AST_POST_INC = 273; /** A `--var` expression. (children: var) */ const AST_PRE_DEC = 272; /** A `++var` expression. (children: var) */ const AST_PRE_INC = 271; /** A `print expr` expression. (children: expr) */ const AST_PRINT = 268; /** An instance property usage of the form `expr->prop` (children: expr, prop) */ const AST_PROP = 513; /** A single group of property declarations inside a class. (numerically indexed children) */ const AST_PROP_DECL = 138; /** A class property declaration. (children: name, default, docComment) */ const AST_PROP_ELEM = 775; /** A class property group declaration with optional type information for the group (in PHP 7.4+). Used in AST version 70+ (children: type, props, __declId) */ const AST_PROP_GROUP = 774; /** Used for `&$v` in `foreach ($a as &$v)` (children: var) */ const AST_REF = 281; /** A `return;` or `return expr` statement. (children: expr) */ const AST_RETURN = 279; /** A `\`some_shell_command\`` expression. (children: expr) */ const AST_SHELL_EXEC = 265; /** A declaration of a static local variable of the form `static var = default`. (children: var, default) */ const AST_STATIC = 532; /** A call of a static method, of the form `class::method(args)`. (children: class, method, args) */ const AST_STATIC_CALL = 770; /** A usage of a static property, of the form `class::prop`. (children: class, prop) */ const AST_STATIC_PROP = 515; /** A list of statements. The statements are usually nodes but can be non-nodes, e.g. `;2;`. (numerically indexed children) */ const AST_STMT_LIST = 132; /** A switch statement of the form `switch(cond) { stmts }`. `stmts` is a node of the kind `ast\AST_SWITCH_LIST`. (children: cond, stmts) */ const AST_SWITCH = 536; /** A case statement of a switch, of the form `case cond: stmts` (children: cond, stmts) */ const AST_SWITCH_CASE = 537; /** The full list of nodes inside a switch statement body, each of kind `ast\AST_SWITCH_CASE`. (numerically indexed children) */ const AST_SWITCH_LIST = 134; /** A throw statement of the form `throw expr;` (children: expr) */ const AST_THROW = 284; /** The optional adaptations to a statement using a trait inside a class (numerically indexed children) */ const AST_TRAIT_ADAPTATIONS = 142; /** Adds an alias inside of a use of a trait (`method as alias`) (children: method, alias) */ const AST_TRAIT_ALIAS = 544; /** Indicates the precedent of a trait over another trait (`method INSTEADOF insteadof`) (children: method, insteadof) */ const AST_TRAIT_PRECEDENCE = 540; /** A try/catch(es)/finally block. (children: try, catches, finally) */ const AST_TRY = 772; /** A type such as `bool`. Other types such as specific classes are represented as `ast\AST_NAME`s (depends on flags of `ast\flags\TYPE_*`) */ const AST_TYPE = 1; /** A union type made up of individual types, such as `bool|int` (numerically indexed children) */ const AST_TYPE_UNION = 144; /** A unary operation of the form `op expr` (e.g. `-expr`, the flags can be one of `ast\flags\UNARY_*`) (children: expr) */ const AST_UNARY_OP = 270; /** An expression unpacking an array/iterable (i.e. `...expr`) (children: expr) */ const AST_UNPACK = 258; /** `unset(var)` - A statement unsetting the expression `var` (children: var) */ const AST_UNSET = 278; /** A list of uses of classes/namespaces, functions, and constants. The child nodes are of the kind `ast\AST_USE_ELEM` (numerically indexed children) */ const AST_USE = 143; /** A single use statement for a group of (children: name, alias) */ const AST_USE_ELEM = 543; /** Represents `use traits {[adaptations]}` within a class declaration (children: traits, adaptations) */ const AST_USE_TRAIT = 539; /** An occurrence of a variable `$name` or `${name}`. (children: name) */ const AST_VAR = 256; /** A while loop of the form `while (cond) { stmts }` (children: cond, stmts) */ const AST_WHILE = 533; /** An expression of the form `yield [key =>] value` (children: value, key) */ const AST_YIELD = 529; /** An expression of the form `yield from expr` (children: expr) */ const AST_YIELD_FROM = 275; } namespace ast\flags { /** Marks an `ast\AST_ARRAY_ELEM` as a reference */ const ARRAY_ELEM_REF = 1; /** Marks an `ast\AST_ARRAY` as using the `list(...)` syntax */ const ARRAY_SYNTAX_LIST = 1; /** Marks an `ast\AST_ARRAY` as using the `array(...)` syntax */ const ARRAY_SYNTAX_LONG = 2; /** Marks an `ast\AST_ARRAY` as using the `[...]` syntax */ const ARRAY_SYNTAX_SHORT = 3; /** Marks an ast\AST_BINARY_OP as being a `+` */ const BINARY_ADD = 1; /** Marks an ast\AST_BINARY_OP as being a `&` */ const BINARY_BITWISE_AND = 10; /** Marks an ast\AST_BINARY_OP as being a `|` */ const BINARY_BITWISE_OR = 9; /** Marks an ast\AST_BINARY_OP as being a `^` */ const BINARY_BITWISE_XOR = 11; /** Marks an ast\AST_BINARY_OP as being a `&&` or `and` */ const BINARY_BOOL_AND = 259; /** Marks an ast\AST_BINARY_OP as being a `||` or `or` */ const BINARY_BOOL_OR = 258; /** Marks an ast\AST_BINARY_OP as being an `xor` */ const BINARY_BOOL_XOR = 15; /** Marks an ast\AST_BINARY_OP as being a `??` */ const BINARY_COALESCE = 260; /** Marks an ast\AST_BINARY_OP as being a `.` */ const BINARY_CONCAT = 8; /** Marks an ast\AST_BINARY_OP as being a `/` */ const BINARY_DIV = 4; /** Marks an ast\AST_BINARY_OP as being a `==` */ const BINARY_IS_EQUAL = 18; /** Marks an ast\AST_BINARY_OP as being a `>` */ const BINARY_IS_GREATER = 256; /** Marks an ast\AST_BINARY_OP as being a `>=` */ const BINARY_IS_GREATER_OR_EQUAL = 257; /** Marks an ast\AST_BINARY_OP as being a `===` */ const BINARY_IS_IDENTICAL = 16; /** Marks an ast\AST_BINARY_OP as being a `!=` */ const BINARY_IS_NOT_EQUAL = 19; /** Marks an ast\AST_BINARY_OP as being a `!==` */ const BINARY_IS_NOT_IDENTICAL = 17; /** Marks an ast\AST_BINARY_OP as being a `<` */ const BINARY_IS_SMALLER = 20; /** Marks an ast\AST_BINARY_OP as being a `<=` */ const BINARY_IS_SMALLER_OR_EQUAL = 21; /** Marks an ast\AST_BINARY_OP as being a `%` */ const BINARY_MOD = 5; /** Marks an ast\AST_BINARY_OP as being a `*` */ const BINARY_MUL = 3; /** Marks an ast\AST_BINARY_OP as being a `**` */ const BINARY_POW = 12; /** Marks an ast\AST_BINARY_OP as being a `<<` */ const BINARY_SHIFT_LEFT = 6; /** Marks an ast\AST_BINARY_OP as being a `>>` */ const BINARY_SHIFT_RIGHT = 7; /** Marks an ast\AST_BINARY_OP as being a `<=>` */ const BINARY_SPACESHIP = 170; /** Marks an ast\AST_BINARY_OP as being a `-` */ const BINARY_SUB = 2; /** Marks a `ast\AST_CLASS` (class-like declaration) as being abstract */ const CLASS_ABSTRACT = 64; /** Marks a `ast\AST_CLASS` (class-like declaration) as being anonymous */ const CLASS_ANONYMOUS = 4; /** Marks a `ast\AST_CLASS` (class-like declaration) as being final */ const CLASS_FINAL = 32; /** Marks a `ast\AST_CLASS` (class-like declaration) as being an interface */ const CLASS_INTERFACE = 1; /** Marks a `ast\AST_CLASS` (class-like declaration) as being a trait */ const CLASS_TRAIT = 2; /** Marks an `ast\AST_CLOSURE_USE` as using a variable by reference */ const CLOSURE_USE_REF = 1; /** Marks an `ast\AST_DIM` as using the alternative `expr{dim}` syntax */ const DIM_ALTERNATIVE_SYNTAX = 2; /** Marks an `ast\AST_EXEC` as being an `eval(...)` */ const EXEC_EVAL = 1; /** Marks an `ast\AST_EXEC` as being an `include` */ const EXEC_INCLUDE = 2; /** Marks an `ast\AST_EXEC` as being an `include_once` */ const EXEC_INCLUDE_ONCE = 4; /** Marks an `ast\AST_EXEC` as being a `require` */ const EXEC_REQUIRE = 8; /** Marks an `ast\AST_EXEC` as being a `require_once` */ const EXEC_REQUIRE_ONCE = 16; /** Marks an `ast\AST_FUNC_DECL` as being a generator */ const FUNC_GENERATOR = 16777216; /** Marks an `ast\AST_FUNC_DECL` as returning a value by reference */ const FUNC_RETURNS_REF = 4096; /** Marks an `ast\AST_MAGIC_CONST` as being `__CLASS__` */ const MAGIC_CLASS = 378; /** Marks an `ast\AST_MAGIC_CONST` as being `__DIR__` */ const MAGIC_DIR = 377; /** Marks an `ast\AST_MAGIC_CONST` as being `__FILE__` */ const MAGIC_FILE = 376; /** Marks an `ast\AST_MAGIC_CONST` as being `__FUNCTION__` */ const MAGIC_FUNCTION = 381; /** Marks an `ast\AST_MAGIC_CONST` as being `__LINE__` */ const MAGIC_LINE = 375; /** Marks an `ast\AST_MAGIC_CONST` as being `__METHOD__` */ const MAGIC_METHOD = 380; /** Marks an `ast\AST_MAGIC_CONST` as being `__NAMESPACE__` */ const MAGIC_NAMESPACE = 382; /** Marks an `ast\AST_MAGIC_CONST` as being `__TRAIT__` */ const MAGIC_TRAIT = 379; /** Marks an element declaration as being `abstract` */ const MODIFIER_ABSTRACT = 64; /** Marks an element declaration as being `final` */ const MODIFIER_FINAL = 32; /** Marks an element declaration as being `private` */ const MODIFIER_PRIVATE = 4; /** Marks an element declaration as being `protected` */ const MODIFIER_PROTECTED = 2; /** Marks an element declaration as being `public` */ const MODIFIER_PUBLIC = 1; /** Marks an element declaration as being `static` */ const MODIFIER_STATIC = 16; /** Marks an `ast\AST_NAME` as being fully qualified (`\Name`) */ const NAME_FQ = 0; /** Marks an `ast\AST_NAME` as being not fully qualified (`Name`) */ const NAME_NOT_FQ = 1; /** Marks an `ast\AST_NAME` as being relative to the current namespace (`namespace\Name`) */ const NAME_RELATIVE = 2; /** Marks a promoted constructor property as being `private` */ const PARAM_MODIFIER_PRIVATE = 4; /** Marks a promoted constructor property as being `protected` */ const PARAM_MODIFIER_PROTECTED = 2; /** Marks a promoted constructor property as being `public` */ const PARAM_MODIFIER_PUBLIC = 1; /** Marks an `ast\AST_PARAM` as being a reference (`&$x`) */ const PARAM_REF = 8; /** Marks an `ast\AST_PARAM` as being variadic (`...$x`) */ const PARAM_VARIADIC = 16; /** Marks a `ast\AST_CONDITIONAL` as being parenthesized (`(cond ? true : false)`) */ const PARENTHESIZED_CONDITIONAL = 1; /** Marks a function-like as returning an argument by reference */ const RETURNS_REF = 4096; /** Marks an `ast\AST_TYPE` as being `array` */ const TYPE_ARRAY = 7; /** Marks an `ast\AST_TYPE` as being `bool` */ const TYPE_BOOL = 17; /** Marks an `ast\AST_TYPE` as being `callable` */ const TYPE_CALLABLE = 12; /** Marks an `ast\AST_TYPE` as being `float` */ const TYPE_DOUBLE = 5; /** Marks an `ast\AST_TYPE` as being `false` (for union types) */ const TYPE_FALSE = 2; /** Marks an `ast\AST_TYPE` as being `iterable` */ const TYPE_ITERABLE = 13; /** Marks an `ast\AST_TYPE` as being `int` */ const TYPE_LONG = 4; /** Marks an `ast\AST_TYPE` as being `mixed` */ const TYPE_MIXED = 16; /** Marks an `ast\AST_TYPE` as being `null` (for union types) */ const TYPE_NULL = 1; /** Marks an `ast\AST_TYPE` as being `object` */ const TYPE_OBJECT = 8; /** Marks an `ast\AST_TYPE` as being `static` (for return types) */ const TYPE_STATIC = 15; /** Marks an `ast\AST_TYPE` as being `string` */ const TYPE_STRING = 6; /** Marks an `ast\AST_TYPE` as being `void` (for return types) */ const TYPE_VOID = 14; /** Marks an `ast\AST_UNARY_OP` as being `~expr` */ const UNARY_BITWISE_NOT = 13; /** Marks an `ast\AST_UNARY_OP` as being `!expr` */ const UNARY_BOOL_NOT = 14; /** Marks an `ast\AST_UNARY_OP` as being `-expr` */ const UNARY_MINUS = 262; /** Marks an `ast\AST_UNARY_OP` as being `+expr` */ const UNARY_PLUS = 261; /** Marks an `ast\AST_UNARY_OP` as being `@expr` */ const UNARY_SILENCE = 260; /** Marks an `ast\AST_USE` or `ast\AST_GROUP_USE` (namespace use statement) as being `use const name;` */ const USE_CONST = 4; /** Marks an `ast\AST_USE` or `ast\AST_GROUP_USE` (namespace use statement) as being `use function name;` */ const USE_FUNCTION = 2; /** Marks an `ast\AST_USE` or `ast\AST_GROUP_USE` (namespace use statement) as being `use name;` */ const USE_NORMAL = 1; } true, // if the specified database does not exist will create a new one 'error_if_exists' => false, // if the opened database exists will throw exception 'paranoid_checks' => false, 'block_cache_size' => 8 * (2 << 20), 'write_buffer_size' => 4 << 20, 'block_size' => 4096, 'max_open_files' => 1000, 'block_restart_interval' => 16, 'compression' => LEVELDB_SNAPPY_COMPRESSION, 'comparator' => null, // any callable parameter return 0, -1, 1 ], array $read_options = [ 'verify_check_sum' => false, //may be set to true to force checksum verification of all data that is read from the file system on behalf of a particular read. By default, no such verification is done. 'fill_cache' => true, //When performing a bulk read, the application may set this to false to disable the caching so that the data processed by the bulk read does not end up displacing most of the cached contents. ], array $write_options = [ //Only one element named sync in the write option array. By default, each write to leveldb is asynchronous. 'sync' => false ]) {} /** * @param string $key * @param array $read_options * * @return string|false */ public function get($key, array $read_options = []) {} /** * Alias of LevelDB::put() * * @param string $key * @param string $value * @param array $write_options */ public function set($key, $value, array $write_options = []) {} /** * @param string $key * @param string $value * @param array $write_options */ public function put($key, $value, array $write_options = []) {} /** * @param string $key * @param array $write_options * * @return bool */ public function delete($key, array $write_options = []) {} /** * Executes all of the operations added in the write batch. * * @param LevelDBWriteBatch $batch * @param array $write_options */ public function write(LevelDBWriteBatch $batch, array $write_options = []) {} /** * Valid properties: * - leveldb.stats: returns the status of the entire db * - leveldb.num-files-at-level: returns the number of files for each level. For example, you can use leveldb.num-files-at-level0 the number of files for zero level. * - leveldb.sstables: returns current status of sstables * * @param string $name * * @return mixed */ public function getProperty($name) {} public function getApproximateSizes($start, $limit) {} public function compactRange($start, $limit) {} public function close() {} /** * @param array $options * * @return LevelDBIterator */ public function getIterator(array $options = []) {} /** * @return LevelDBSnapshot */ public function getSnapshot() {} public static function destroy($name, array $options = []) {} public static function repair($name, array $options = []) {} } class LevelDBIterator implements Iterator { public function __construct(LevelDB $db, array $read_options = []) {} public function valid() {} public function rewind() {} public function last() {} public function seek($key) {} public function next() {} public function prev() {} public function key() {} public function current() {} public function getError() {} public function destroy() {} } class LevelDBWriteBatch { public function __construct() {} public function set($key, $value, array $write_options = []) {} public function put($key, $value, array $write_options = []) {} public function delete($key, array $write_options = []) {} public function clear() {} } class LevelDBSnapshot { public function __construct(LevelDB $db) {} public function release() {} } class LevelDBException extends Exception {} * The connection_string can be empty to use all default parameters, or it * can contain one or more parameter settings separated by whitespace. * Each parameter setting is in the form keyword = value. Spaces around * the equal sign are optional. To write an empty value or a value * containing spaces, surround it with single quotes, e.g., keyword = * 'a value'. Single quotes and backslashes within the value must be * escaped with a backslash, i.e., \' and \\. *

*

* The currently recognized parameter keywords are: * host, hostaddr, port, * dbname (defaults to value of user), * user, * password, connect_timeout, * options, tty (ignored), sslmode, * requiressl (deprecated in favor of sslmode), and * service. Which of these arguments exist depends * on your PostgreSQL version. *

*

* The options parameter can be used to set command line parameters * to be invoked by the server. *

* @param int $flags

* If PGSQL_CONNECT_FORCE_NEW is passed, then a new connection * is created, even if the connection_string is identical to * an existing connection. *

* @return resource|false PostgreSQL connection resource on success, FALSE on failure. */ #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|false'], default: 'resource|false')] function pg_connect( string $connection_string, int $flags = 0, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] string $host = '', #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] string $port = '', #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] string $options = '', #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] string $tty = '', #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] string $dbname = '', ) {} /** * Open a persistent PostgreSQL connection * @link https://php.net/manual/en/function.pg-pconnect.php * @param string $connection_string

* The connection_string can be empty to use all default parameters, or it * can contain one or more parameter settings separated by whitespace. * Each parameter setting is in the form keyword = value. Spaces around * the equal sign are optional. To write an empty value or a value * containing spaces, surround it with single quotes, e.g., keyword = * 'a value'. Single quotes and backslashes within the value must be * escaped with a backslash, i.e., \' and \\. *

*

* The currently recognized parameter keywords are: * host, hostaddr, port, * dbname, user, * password, connect_timeout, * options, tty (ignored), sslmode, * requiressl (deprecated in favor of sslmode), and * service. Which of these arguments exist depends * on your PostgreSQL version. *

* @param int $flags

* If PGSQL_CONNECT_FORCE_NEW is passed, then a new connection * is created, even if the connection_string is identical to * an existing connection. *

* @return resource|false PostgreSQL connection resource on success, FALSE on failure. */ #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|false'], default: 'resource|false')] function pg_pconnect( string $connection_string, #[PhpStormStubsElementAvailable(from: '8.0')] int $flags = 0, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] string $host = '', #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] string $port = '', #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] string $options = '', #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] string $tty = '', #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] string $dbname = '', ) {} /** * Closes a PostgreSQL connection * @link https://php.net/manual/en/function.pg-close.php * @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

*/ #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] function pg_close(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection = null) {} /** * Poll the status of an in-progress asynchronous PostgreSQL connection attempt. * @link https://php.net/manual/en/function.pg-connect-poll.php * @param resource $connection

* PostgreSQL database connection resource. *

* @return int PGSQL_POLLING_FAILED, PGSQL_POLLING_READING, PGSQL_POLLING_WRITING, * PGSQL_POLLING_OK, or PGSQL_POLLING_ACTIVE. * @since 5.6 */ function pg_connect_poll( #[PhpStormStubsElementAvailable(from: '5.6', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection ): int {} /** * Get connection status * @link https://php.net/manual/en/function.pg-connection-status.php * @param resource $connection

* PostgreSQL database connection resource. *

* @return int PGSQL_CONNECTION_OK or * PGSQL_CONNECTION_BAD. */ function pg_connection_status(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection): int {} /** * Get connection is busy or not * @link https://php.net/manual/en/function.pg-connection-busy.php * @param resource $connection

* PostgreSQL database connection resource. *

* @return bool TRUE if the connection is busy, FALSE otherwise. */ function pg_connection_busy(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection): bool {} /** * Reset connection (reconnect) * @link https://php.net/manual/en/function.pg-connection-reset.php * @param resource $connection

* PostgreSQL database connection resource. *

* @return bool TRUE on success or FALSE on failure. */ function pg_connection_reset(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection): bool {} /** * Get a read only handle to the socket underlying a PostgreSQL connection * @link https://php.net/manual/en/function.pg-socket.php * @param resource $connection

* PostgreSQL database connection resource. *

* @return resource|false A socket resource on success or FALSE on failure. * @since 5.6 */ function pg_socket(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection) {} /** * Returns the host name associated with the connection * @link https://php.net/manual/en/function.pg-host.php * @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @return string|false A string containing the name of the host the * connection is to, or FALSE on error. */ function pg_host(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection = null): string {} /** * Get the database name * @link https://php.net/manual/en/function.pg-dbname.php * @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @return string|false A string containing the name of the database the * connection is to, or FALSE on error. */ function pg_dbname(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection = null): string {} /** * Return the port number associated with the connection * @link https://php.net/manual/en/function.pg-port.php * @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @return string A string containing the port number of the database server the connection is to, or empty string on error. */ function pg_port(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection = null): string {} /** * Return the TTY name associated with the connection * @link https://php.net/manual/en/function.pg-tty.php * @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @return string A string containing the debug TTY of * the connection, or FALSE on error. */ function pg_tty(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection = null): string {} /** * Get the options associated with the connection * @link https://php.net/manual/en/function.pg-options.php * @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @return string A string containing the connection * options, or FALSE on error. */ function pg_options(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection = null): string {} /** * Returns an array with client, protocol and server version (when available) * @link https://php.net/manual/en/function.pg-version.php * @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @return array an array with client, protocol * and server keys and values (if available). Returns * FALSE on error or invalid connection. */ #[ArrayShape(["client" => "string", "protocol" => "int", "server" => "string"])] function pg_version(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection = null): array {} /** * Ping database connection * @link https://php.net/manual/en/function.pg-ping.php * @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @return bool TRUE on success or FALSE on failure. */ function pg_ping(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection = null): bool {} /** * Looks up a current parameter setting of the server. * @link https://php.net/manual/en/function.pg-parameter-status.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $name [optional]

* Possible param_name values include server_version, * server_encoding, client_encoding, * is_superuser, session_authorization, * DateStyle, TimeZone, and * integer_datetimes. *

* @return string|false A string containing the value of the parameter, FALSE on failure or invalid * param_name. */ function pg_parameter_status(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $name): string|false {} /** * Returns the current in-transaction status of the server. * @link https://php.net/manual/en/function.pg-transaction-status.php * @param resource $connection

* PostgreSQL database connection resource. *

* @return int The status can be PGSQL_TRANSACTION_IDLE (currently idle), * PGSQL_TRANSACTION_ACTIVE (a command is in progress), * PGSQL_TRANSACTION_INTRANS (idle, in a valid transaction block), * or PGSQL_TRANSACTION_INERROR (idle, in a failed transaction block). * PGSQL_TRANSACTION_UNKNOWN is reported if the connection is bad. * PGSQL_TRANSACTION_ACTIVE is reported only when a query * has been sent to the server and not yet completed. */ function pg_transaction_status(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection): int {} /** * Execute a query * @link https://php.net/manual/en/function.pg-query.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $query [optional]

* The SQL statement or statements to be executed. When multiple statements are passed to the function, * they are automatically executed as one transaction, unless there are explicit BEGIN/COMMIT commands * included in the query string. However, using multiple transactions in one function call is not recommended. *

*

* String interpolation of user-supplied data is extremely dangerous and is * likely to lead to SQL * injection vulnerabilities. In most cases * pg_query_params should be preferred, passing * user-supplied values as parameters rather than substituting them into * the query string. *

*

* Any user-supplied data substituted directly into a query string should * be properly escaped. *

* @return resource|false A query result resource on success or FALSE on failure. */ #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result|false'], default: 'resource|false')] function pg_query( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $query ) {} /** * Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text. * @link https://php.net/manual/en/function.pg-query-params.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $query

* The parameterized SQL statement. Must contain only a single statement. * (multiple statements separated by semi-colons are not allowed.) If any parameters * are used, they are referred to as $1, $2, etc. *

*

* User-supplied values should always be passed as parameters, not * interpolated into the query string, where they form possible * SQL injection * attack vectors and introduce bugs when handling data containing quotes. * If for some reason you cannot use a parameter, ensure that interpolated * values are properly escaped. *

* @param array $params [optional]

* An array of parameter values to substitute for the $1, $2, etc. placeholders * in the original prepared query string. The number of elements in the array * must match the number of placeholders. *

*

* Values intended for bytea fields are not supported as * parameters. Use pg_escape_bytea instead, or use the * large object functions. *

* @return resource|false A query result resource on success or FALSE on failure. */ #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result|false'], default: 'resource|false')] function pg_query_params( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $query = '', #[PhpStormStubsElementAvailable(from: '8.0')] $query, array $params ) {} /** * Submits a request to create a prepared statement with the * given parameters, and waits for completion. * @link https://php.net/manual/en/function.pg-prepare.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $statement_name

* The name to give the prepared statement. Must be unique per-connection. If * "" is specified, then an unnamed statement is created, overwriting any * previously defined unnamed statement. *

* @param string $query [optional]

* The parameterized SQL statement. Must contain only a single statement. * (multiple statements separated by semi-colons are not allowed.) If any parameters * are used, they are referred to as $1, $2, etc. *

* @return resource|false A query result resource on success or FALSE on failure. */ #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result|false'], default: 'resource|false')] function pg_prepare( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] string $statement_name = '', #[PhpStormStubsElementAvailable(from: '8.0')] string $statement_name, string $query ) {} /** * Sends a request to execute a prepared statement with given parameters, and waits for the result. * @link https://php.net/manual/en/function.pg-execute.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $statement_name

* The name of the prepared statement to execute. if * "" is specified, then the unnamed statement is executed. The name must have * been previously prepared using pg_prepare, * pg_send_prepare or a PREPARE SQL * command. *

* @param array $params [optional]

* An array of parameter values to substitute for the $1, $2, etc. placeholders * in the original prepared query string. The number of elements in the array * must match the number of placeholders. *

*

* Elements are converted to strings by calling this function. *

* @return resource|false A query result resource on success or FALSE on failure. */ #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result|false'], default: 'resource|false')] function pg_execute( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] string $statement_name = '', #[PhpStormStubsElementAvailable(from: '8.0')] $statement_name, array $params ) {} /** * Sends asynchronous query * @link https://php.net/manual/en/function.pg-send-query.php * @param resource $connection

* PostgreSQL database connection resource. *

* @param string $query

* The SQL statement or statements to be executed. *

*

* Data inside the query should be properly escaped. *

* @return int|bool TRUE on success or FALSE on failure.

*

* Use pg_get_result to determine the query result. */ function pg_send_query( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $query ): int|bool {} /** * Submits a command and separate parameters to the server without waiting for the result(s). * @link https://php.net/manual/en/function.pg-send-query-params.php * @param resource $connection

* PostgreSQL database connection resource. *

* @param string $query

* The parameterized SQL statement. Must contain only a single statement. * (multiple statements separated by semi-colons are not allowed.) If any parameters * are used, they are referred to as $1, $2, etc. *

* @param array $params

* An array of parameter values to substitute for the $1, $2, etc. placeholders * in the original prepared query string. The number of elements in the array * must match the number of placeholders. *

* @return int|bool TRUE on success or FALSE on failure.

*

* Use pg_get_result to determine the query result. */ function pg_send_query_params( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $query, array $params ): int|bool {} /** * Sends a request to create a prepared statement with the given parameters, without waiting for completion. * @link https://php.net/manual/en/function.pg-send-prepare.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $statement_name

* The name to give the prepared statement. Must be unique per-connection. If * "" is specified, then an unnamed statement is created, overwriting any * previously defined unnamed statement. *

* @param string $query

* The parameterized SQL statement. Must contain only a single statement. * (multiple statements separated by semi-colons are not allowed.) If any parameters * are used, they are referred to as $1, $2, etc. *

* @return int|bool TRUE on success, FALSE on failure. Use pg_get_result * to determine the query result. */ function pg_send_prepare( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $statement_name, string $query ): int|bool {} /** * Sends a request to execute a prepared statement with given parameters, without waiting for the result(s). * @link https://php.net/manual/en/function.pg-send-execute.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $statement_name

* The name of the prepared statement to execute. if * "" is specified, then the unnamed statement is executed. The name must have * been previously prepared using pg_prepare, * pg_send_prepare or a PREPARE SQL * command. *

* @param array $params

* An array of parameter values to substitute for the $1, $2, etc. placeholders * in the original prepared query string. The number of elements in the array * must match the number of placeholders. *

* @return int|bool TRUE on success, FALSE on failure. Use pg_get_result * to determine the query result. */ function pg_send_execute( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $statement_name, array $params ): int|bool {} /** * Cancel an asynchronous query * @link https://php.net/manual/en/function.pg-cancel-query.php * @param resource $connection

* PostgreSQL database connection resource. *

* @return bool TRUE on success or FALSE on failure. */ function pg_cancel_query(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection): bool {} /** * Returns values from a result resource * @link https://php.net/manual/en/function.pg-fetch-result.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $row

* Row number in result to fetch. Rows are numbered from 0 upwards. If omitted, * next row is fetched. *

* @param mixed $field [optional]

* A string representing the name of the field (column) to fetch, otherwise * an int representing the field number to fetch. Fields are * numbered from 0 upwards. *

* @return string|false|null Boolean is returned as "t" or "f". All * other types, including arrays are returned as strings formatted * in the same default PostgreSQL manner that you would see in the * psql program. Database NULL * values are returned as NULL. *

*

* FALSE is returned if row exceeds the number * of rows in the set, or on any other error. */ function pg_fetch_result( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $row = 0, #[PhpStormStubsElementAvailable(from: '8.0')] $row, string|int $field ): string|false|null {} /** * Get a row as an enumerated array * @link https://php.net/manual/en/function.pg-fetch-row.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $row [optional]

* Row number in result to fetch. Rows are numbered from 0 upwards. If * omitted or NULL, the next row is fetched. *

* @param int $mode [optional] * @return array|false An array, indexed from 0 upwards, with each value * represented as a string. Database NULL * values are returned as NULL. *

*

* FALSE is returned if row exceeds the number * of rows in the set, there are no more rows, or on any other error. */ function pg_fetch_row(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, ?int $row = null, int $mode = 2): array|false {} /** * Fetch a row as an associative array * @link https://php.net/manual/en/function.pg-fetch-assoc.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $row [optional]

* Row number in result to fetch. Rows are numbered from 0 upwards. If * omitted or NULL, the next row is fetched. *

* @return array|false An array indexed associatively (by field name). * Each value in the array is represented as a * string. Database NULL * values are returned as NULL. *

*

* FALSE is returned if row exceeds the number * of rows in the set, there are no more rows, or on any other error. */ function pg_fetch_assoc(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, ?int $row = null): array|false {} /** * Fetch a row as an array * @link https://php.net/manual/en/function.pg-fetch-array.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $row [optional]

* Row number in result to fetch. Rows are numbered from 0 upwards. If * omitted or NULL, the next row is fetched. *

* @param int $mode [optional]

* An optional parameter that controls * how the returned array is indexed. * result_type is a constant and can take the * following values: PGSQL_ASSOC, * PGSQL_NUM and PGSQL_BOTH. * Using PGSQL_NUM, pg_fetch_array * will return an array with numerical indices, using * PGSQL_ASSOC it will return only associative indices * while PGSQL_BOTH, the default, will return both * numerical and associative indices. *

* @return array|false An array indexed numerically (beginning with 0) or * associatively (indexed by field name), or both. * Each value in the array is represented as a * string. Database NULL * values are returned as NULL. *

*

* FALSE is returned if row exceeds the number * of rows in the set, there are no more rows, or on any other error. */ function pg_fetch_array(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, ?int $row = null, int $mode = PGSQL_BOTH): array|false {} /** * Fetch a row as an object * @link https://php.net/manual/en/function.pg-fetch-object.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int|null $row [optional]

* Row number in result to fetch. Rows are numbered from 0 upwards. If * omitted or NULL, the next row is fetched. *

* @param string $class [optional]

* Ignored and deprecated. *

* @param array $constructor_args [optional]

*

* @return object|false An object with one attribute for each field * name in the result. Database NULL * values are returned as NULL. *

*

* FALSE is returned if row exceeds the number * of rows in the set, there are no more rows, or on any other error. */ function pg_fetch_object( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, ?int $row = null, string $class = 'stdClass', #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $l = null, array $constructor_args = [] ): object|false {} /** * Fetches all rows from a result as an array * @link https://php.net/manual/en/function.pg-fetch-all.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $mode [optional]

* An optional parameter that controls * how the returned array is indexed. * result_type is a constant and can take the * following values: PGSQL_ASSOC, * PGSQL_NUM and PGSQL_BOTH. * Using PGSQL_NUM, pg_fetch_array * will return an array with numerical indices, using * PGSQL_ASSOC it will return only associative indices * while PGSQL_BOTH, the default, will return both * numerical and associative indices. *

* @return array|false An array with all rows in the result. Each row is an array * of field values indexed by field name. *

*

* FALSE is returned if there are no rows in the result, or on any * other error. */ #[LanguageLevelTypeAware(['8.0' => 'array'], default: 'array|false')] function pg_fetch_all(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, int $mode = PGSQL_ASSOC) {} /** * Fetches all rows in a particular result column as an array * @link https://php.net/manual/en/function.pg-fetch-all-columns.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $field [optional]

* Column number, zero-based, to be retrieved from the result resource. Defaults * to the first column if not specified. *

* @return array An array with all values in the result column. *

* FALSE is returned if column is larger than the number * of columns in the result, or on any other error. *

*/ function pg_fetch_all_columns(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, int $field = 0): array {} /** * Returns number of affected records (tuples) * @link https://php.net/manual/en/function.pg-affected-rows.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @return int The number of rows affected by the query. If no tuple is * affected, it will return 0. */ function pg_affected_rows(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result): int {} /** * Get asynchronous query result * @link https://php.net/manual/en/function.pg-get-result.php * @param resource $connection

* PostgreSQL database connection resource. *

* @return resource|false The result resource, or FALSE if no more results are available. */ #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result|false'], default: 'resource|false')] function pg_get_result(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection) {} /** * Set internal row offset in result resource * @link https://php.net/manual/en/function.pg-result-seek.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $row

* Row to move the internal offset to in the result resource. * Rows are numbered starting from zero. *

* @return bool TRUE on success or FALSE on failure. */ function pg_result_seek(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, int $row): bool {} /** * Get status of query result * @link https://php.net/manual/en/function.pg-result-status.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $mode [optional]

* Either PGSQL_STATUS_LONG to return the numeric status * of the result, or PGSQL_STATUS_STRING * to return the command tag of the result. * If not specified, PGSQL_STATUS_LONG is the default. *

* @return string|int Possible return values are PGSQL_EMPTY_QUERY, * PGSQL_COMMAND_OK, PGSQL_TUPLES_OK, PGSQL_COPY_OUT, * PGSQL_COPY_IN, PGSQL_BAD_RESPONSE, PGSQL_NONFATAL_ERROR and * PGSQL_FATAL_ERROR if PGSQL_STATUS_LONG is * specified. Otherwise, a string containing the PostgreSQL command tag is returned. */ function pg_result_status(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, int $mode = PGSQL_STATUS_LONG): string|int {} /** * Free result memory * @link https://php.net/manual/en/function.pg-free-result.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @return bool TRUE on success or FALSE on failure. */ function pg_free_result(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result): bool {} /** * Returns the last row's OID * @link https://php.net/manual/en/function.pg-last-oid.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @return string|int|false A string containing the OID assigned to the most recently inserted * row in the specified connection, or FALSE on error or * no available OID. */ function pg_last_oid(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result): string|int|false {} /** * Returns the number of rows in a result * @link https://php.net/manual/en/function.pg-num-rows.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @return int The number of rows in the result. On error, -1 is returned. */ function pg_num_rows(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result): int {} /** * Returns the number of fields in a result * @link https://php.net/manual/en/function.pg-num-fields.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @return int The number of fields (columns) in the result. On error, -1 is returned. */ function pg_num_fields(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result): int {} /** * Returns the name of a field * @link https://php.net/manual/en/function.pg-field-name.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $field

* Field number, starting from 0. *

* @return string|false The field name, or FALSE on error. */ function pg_field_name(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, int $field): string {} /** * Returns the field number of the named field * @link https://php.net/manual/en/function.pg-field-num.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param string $field

* The name of the field. *

* @return int The field number (numbered from 0), or -1 on error. */ function pg_field_num(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, string $field): int {} /** * Returns the internal storage size of the named field * @link https://php.net/manual/en/function.pg-field-size.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $field

* Field number, starting from 0. *

* @return int The internal field storage size (in bytes). -1 indicates a variable * length field. FALSE is returned on error. */ function pg_field_size(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, int $field): int {} /** * Returns the type name for the corresponding field number * @link https://php.net/manual/en/function.pg-field-type.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $field

* Field number, starting from 0. *

* @return string|false A string containing the base name of the field's type, or FALSE * on error. */ function pg_field_type(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, int $field): string {} /** * Returns the type ID (OID) for the corresponding field number * @link https://php.net/manual/en/function.pg-field-type-oid.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $field

* Field number, starting from 0. *

* @return string|int The OID of the field's base type. FALSE is returned on error. */ function pg_field_type_oid(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, int $field): string|int {} /** * Returns the printed length * @link https://php.net/manual/en/function.pg-field-prtlen.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $row * @param mixed $field [optional] * @return int|false The field printed length, or FALSE on error. */ function pg_field_prtlen( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $row = 0, #[PhpStormStubsElementAvailable(from: '8.0')] $row, string|int $field ): int|false {} /** * Test if a field is SQL NULL * @link https://php.net/manual/en/function.pg-field-is-null.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $row

* Row number in result to fetch. Rows are numbered from 0 upwards. If omitted, * current row is fetched. *

* @param mixed $field [optional]

* Field number (starting from 0) as an integer or * the field name as a string. *

* @return int|false 1 if the field in the given row is SQL NULL, 0 * if not. FALSE is returned if the row is out of range, or upon any other error. */ function pg_field_is_null( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $row = 0, #[PhpStormStubsElementAvailable(from: '8.0')] $row, string|int $field ): int|false {} /** * Returns the name or oid of the tables field * @link https://php.net/manual/en/function.pg-field-table.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @param int $field

* Field number, starting from 0. *

* @param bool $oid_only [optional]

* By default the tables name that field belongs to is returned but * if oid_only is set to TRUE, then the * oid will instead be returned. *

* @return string|int|false On success either the fields table name or oid. Or, FALSE on failure. */ function pg_field_table(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, int $field, bool $oid_only = false): string|int|false {} /** * Gets SQL NOTIFY message * @link https://php.net/manual/en/function.pg-get-notify.php * @param resource $connection

* PostgreSQL database connection resource. *

* @param int $mode [optional]

* An optional parameter that controls * how the returned array is indexed. * result_type is a constant and can take the * following values: PGSQL_ASSOC, * PGSQL_NUM and PGSQL_BOTH. * Using PGSQL_NUM, pg_get_notify * will return an array with numerical indices, using * PGSQL_ASSOC it will return only associative indices * while PGSQL_BOTH, the default, will return both * numerical and associative indices. *

* @return array|false An array containing the NOTIFY message name and backend PID. * Otherwise if no NOTIFY is waiting, then FALSE is returned. */ #[ArrayShape(["message" => "string", "pid" => "int", "payload" => "string"])] function pg_get_notify( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, int $mode = 1 ): array|false {} /** * Gets the backend's process ID * @link https://php.net/manual/en/function.pg-get-pid.php * @param resource $connection

* PostgreSQL database connection resource. *

* @return int The backend database process ID. */ function pg_get_pid( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, ): int {} /** * Get error message associated with result * @link https://php.net/manual/en/function.pg-result-error.php * @param resource $result

* PostgreSQL query result resource, returned by pg_query, * pg_query_params or pg_execute * (among others). *

* @return string|false a string if there is an error associated with the * result parameter, FALSE otherwise. */ function pg_result_error(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result): string|false {} /** * Returns an individual field of an error report. * @link https://php.net/manual/en/function.pg-result-error-field.php * @param resource $result

* A PostgreSQL query result resource from a previously executed * statement. *

* @param int $field_code

* Possible fieldcode values are: PGSQL_DIAG_SEVERITY, * PGSQL_DIAG_SQLSTATE, PGSQL_DIAG_MESSAGE_PRIMARY, * PGSQL_DIAG_MESSAGE_DETAIL, * PGSQL_DIAG_MESSAGE_HINT, PGSQL_DIAG_STATEMENT_POSITION, * PGSQL_DIAG_INTERNAL_POSITION (PostgreSQL 8.0+ only), * PGSQL_DIAG_INTERNAL_QUERY (PostgreSQL 8.0+ only), * PGSQL_DIAG_CONTEXT, PGSQL_DIAG_SOURCE_FILE, * PGSQL_DIAG_SOURCE_LINE or * PGSQL_DIAG_SOURCE_FUNCTION. *

* @return string|null|false A string containing the contents of the error field, NULL if the field does not exist or FALSE * on failure. */ function pg_result_error_field( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, int $field_code ): string|false|null {} /** * Get the last error message string of a connection * @link https://php.net/manual/en/function.pg-last-error.php * @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @return string A string containing the last error message on the * given connection, or FALSE on error. */ function pg_last_error(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection = null): string {} /** * Returns the last notice message from PostgreSQL server * @link https://php.net/manual/en/function.pg-last-notice.php * @param resource $connection

* PostgreSQL database connection resource. *

* @param int $mode [optional]

* One of PGSQL_NOTICE_LAST (to return last notice), * PGSQL_NOTICE_ALL (to return all notices), or * PGSQL_NOTICE_CLEAR (to clear notices). *

* @return array|string|bool A string containing the last notice on the * given connection with PGSQL_NOTICE_LAST, * an array with PGSQL_NOTICE_ALL, * a bool with PGSQL_NOTICE_CLEAR, or * FALSE on error. */ function pg_last_notice(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, int $mode = PGSQL_NOTICE_LAST): array|string|bool {} /** * Send a NULL-terminated string to PostgreSQL backend * @link https://php.net/manual/en/function.pg-put-line.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $query [optional]

* A line of text to be sent directly to the PostgreSQL backend. A NULL * terminator is added automatically. *

* @return bool TRUE on success or FALSE on failure. */ function pg_put_line( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $query ): bool {} /** * Sync with PostgreSQL backend * @link https://php.net/manual/en/function.pg-end-copy.php * @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @return bool TRUE on success or FALSE on failure. */ function pg_end_copy(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection = null): bool {} /** * Copy a table to an array * @link https://php.net/manual/en/function.pg-copy-to.php * @param resource $connection

* PostgreSQL database connection resource. *

* @param string $table_name

* Name of the table from which to copy the data into rows. *

* @param string $separator [optional]

* The token that separates values for each field in each element of * rows. Default is TAB. *

* @param string $null_as [optional]

* How SQL NULL values are represented in the * rows. Default is \N ("\\N"). *

* @return array|false An array with one element for each line of COPY data. * It returns FALSE on failure. */ function pg_copy_to( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $table_name, string $separator = ' ', string $null_as = '\\\\N' ): array|false {} /** * Insert records into a table from an array * @link https://php.net/manual/en/function.pg-copy-from.php * @param resource $connection

* PostgreSQL database connection resource. *

* @param string $table_name

* Name of the table into which to copy the rows. *

* @param array $rows

* An array of data to be copied into table_name. * Each value in rows becomes a row in table_name. * Each value in rows should be a delimited string of the values * to insert into each field. Values should be linefeed terminated. *

* @param string $separator [optional]

* The token that separates values for each field in each element of * rows. Default is TAB. *

* @param string $null_as [optional]

* How SQL NULL values are represented in the * rows. Default is \N ("\\N"). *

* @return bool TRUE on success or FALSE on failure. */ function pg_copy_from( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $table_name, array $rows, string $separator = ' ', string $null_as = '\\\\N' ): bool {} /** * Enable tracing a PostgreSQL connection * @link https://php.net/manual/en/function.pg-trace.php * @param string $filename

* The full path and file name of the file in which to write the * trace log. Same as in fopen. *

* @param string $mode [optional]

* An optional file access mode, same as for fopen. *

* @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param int $trace_mode Since PHP 8.3 optional trace mode * @return bool TRUE on success or FALSE on failure. */ function pg_trace( string $filename, string $mode = "w", #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.3')] int $trace_mode = 0 ): bool {} /** * Disable tracing of a PostgreSQL connection * @link https://php.net/manual/en/function.pg-untrace.php * @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

*/ #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] function pg_untrace(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection = null) {} /** * Create a large object * @link https://php.net/manual/en/function.pg-lo-create.php * @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param mixed $oid [optional]

* If an object_id is given the function * will try to create a large object with this id, else a free * object id is assigned by the server. The parameter * was added in PHP 5.3 and relies on functionality that first * appeared in PostgreSQL 8.1. *

* @return string|int|false A large object OID or FALSE on error. */ function pg_lo_create(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, $oid): string|int|false {} /** * Delete a large object * @link https://php.net/manual/en/function.pg-lo-unlink.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param int $oid [optional]

* The OID of the large object in the database. *

* @return bool TRUE on success or FALSE on failure. */ function pg_lo_unlink( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, $oid ): bool {} /** * Open a large object * @link https://php.net/manual/en/function.pg-lo-open.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param int $oid [optional]

* The OID of the large object in the database. *

* @param string $mode [optional]

* Can be either "r" for read-only, "w" for write only or "rw" for read and * write. *

* @return resource|false A large object resource or FALSE on error. */ #[LanguageLevelTypeAware(['8.1' => 'PgSql\Lob|false'], default: 'resource|false')] function pg_lo_open( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, $oid, string $mode ) {} /** * Close a large object * @link https://php.net/manual/en/function.pg-lo-close.php * @param resource $lob * @return bool TRUE on success or FALSE on failure. */ function pg_lo_close(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Lob'], default: 'resource')] $lob): bool {} /** * Read a large object * @link https://php.net/manual/en/function.pg-lo-read.php * @param resource $lob

* PostgreSQL large object (LOB) resource, returned by pg_lo_open. *

* @param int $length [optional]

* An optional maximum number of bytes to return. *

* @return string|false A string containing len bytes from the * large object, or FALSE on error. */ function pg_lo_read(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Lob'], default: 'resource')] $lob, int $length = 8192): string|false {} /** * Write to a large object * @link https://php.net/manual/en/function.pg-lo-write.php * @param resource $lob

* PostgreSQL large object (LOB) resource, returned by pg_lo_open. *

* @param string $data

* The data to be written to the large object. If len is * specified and is less than the length of data, only * len bytes will be written. *

* @param int $length [optional]

* An optional maximum number of bytes to write. Must be greater than zero * and no greater than the length of data. Defaults to * the length of data. *

* @return int|false The number of bytes written to the large object, or FALSE on error. */ function pg_lo_write(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Lob'], default: 'resource')] $lob, string $data, ?int $length = null): int|false {} /** * Reads an entire large object and send straight to browser * @link https://php.net/manual/en/function.pg-lo-read-all.php * @param resource $lob

* PostgreSQL large object (LOB) resource, returned by pg_lo_open. *

* @return int|false Number of bytes read or FALSE on error. */ function pg_lo_read_all(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Lob'], default: 'resource')] $lob): int {} /** * Import a large object from file * @link https://php.net/manual/en/function.pg-lo-import.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $pathname

* The full path and file name of the file on the client * filesystem from which to read the large object data. *

* @param mixed $object_id [optional]

* If an object_id is given the function * will try to create a large object with this id, else a free * object id is assigned by the server. The parameter * was added in PHP 5.3 and relies on functionality that first * appeared in PostgreSQL 8.1. *

* @return string|int|false The OID of the newly created large object, or * FALSE on failure. */ function pg_lo_import( #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, $pathname, $object_id = null ): string|int|false {} /** * Export a large object to file * @link https://php.net/manual/en/function.pg-lo-export.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param int $oid

* The OID of the large object in the database. *

* @param string $pathname

* The full path and file name of the file in which to write the * large object on the client filesystem. *

* @return bool TRUE on success or FALSE on failure. */ function pg_lo_export( #[PhpStormStubsElementAvailable('8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, $oid, $pathname ): bool {} /** * Seeks position within a large object * @link https://php.net/manual/en/function.pg-lo-seek.php * @param resource $lob

* PostgreSQL large object (LOB) resource, returned by pg_lo_open. *

* @param int $offset

* The number of bytes to seek. *

* @param int $whence [optional]

* One of the constants PGSQL_SEEK_SET (seek from object start), * PGSQL_SEEK_CUR (seek from current position) * or PGSQL_SEEK_END (seek from object end) . *

* @return bool TRUE on success or FALSE on failure. */ function pg_lo_seek(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Lob'], default: 'resource')] $lob, int $offset, int $whence = PGSQL_SEEK_CUR): bool {} /** * Returns current seek position a of large object * @link https://php.net/manual/en/function.pg-lo-tell.php * @param resource $lob

* PostgreSQL large object (LOB) resource, returned by pg_lo_open. *

* @return int The current seek offset (in number of bytes) from the beginning of the large * object. If there is an error, the return value is negative. */ function pg_lo_tell(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Lob'], default: 'resource')] $lob): int {} /** * Truncates a large object * @link https://www.php.net/manual/en/function.pg-lo-truncate.php * @param resource $lob

* PostgreSQL large object (LOB) resource, returned by pg_lo_open. *

* @param int $size The number of bytes to truncate. * @return bool Returns true on success or false on failure. */ function pg_lo_truncate( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Lob'], default: 'resource')] $lob, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] int $size = 0, #[PhpStormStubsElementAvailable(from: '8.0')] int $size ): bool {} /** * Escape a string for query * @link https://php.net/manual/en/function.pg-escape-string.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $string [optional]

* A string containing text to be escaped. *

* @return string A string containing the escaped data. */ function pg_escape_string( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $string ): string {} /** * Escape a string for insertion into a bytea field * @link https://php.net/manual/en/function.pg-escape-bytea.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $string [optional]

* A string containing text or binary data to be inserted into a bytea * column. *

* @return string A string containing the escaped data. */ function pg_escape_bytea( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $string ): string {} /** * Escape a identifier for insertion into a text field * @link https://php.net/manual/en/function.pg-escape-identifier.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $string [optional]

* A string containing text to be escaped. *

* @return string|false A string containing the escaped data. * @since 5.4.4 */ function pg_escape_identifier( #[PhpStormStubsElementAvailable(from: '5.4', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $string ): string|false {} /** * Escape a literal for insertion into a text field * @link https://php.net/manual/en/function.pg-escape-literal.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $string [optional]

* A string containing text to be escaped. *

* @return string|false A string containing the escaped data. * @since 5.4.4 */ function pg_escape_literal( #[PhpStormStubsElementAvailable(from: '5.4', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $string ): string|false {} /** * Unescape binary for bytea type * @link https://php.net/manual/en/function.pg-unescape-bytea.php * @param string $string

* A string containing PostgreSQL bytea data to be converted into * a PHP binary string. *

* @return string A string containing the unescaped data. */ function pg_unescape_bytea(string $string): string {} /** * Determines the verbosity of messages returned by pg_last_error * and pg_result_error. * @link https://php.net/manual/en/function.pg-set-error-verbosity.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param int $verbosity [optional]

* The required verbosity: PGSQL_ERRORS_TERSE, * PGSQL_ERRORS_DEFAULT * or PGSQL_ERRORS_VERBOSE. *

* @return int|false The previous verbosity level: PGSQL_ERRORS_TERSE, * PGSQL_ERRORS_DEFAULT * or PGSQL_ERRORS_VERBOSE. */ function pg_set_error_verbosity( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, int $verbosity ): int|false {} /** * Gets the client encoding * @link https://php.net/manual/en/function.pg-client-encoding.php * @param resource $connection [optional]

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @return string|false The client encoding, or FALSE on error. */ function pg_client_encoding(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection = null): string {} /** * Set the client encoding * @link https://php.net/manual/en/function.pg-set-client-encoding.php * @param resource $connection

* PostgreSQL database connection resource. When * connection is not present, the default connection * is used. The default connection is the last connection made by * pg_connect or pg_pconnect. *

* @param string $encoding [optional]

* The required client encoding. One of SQL_ASCII, EUC_JP, * EUC_CN, EUC_KR, EUC_TW, * UNICODE, MULE_INTERNAL, LATINX (X=1...9), * KOI8, WIN, ALT, SJIS, * BIG5 or WIN1250. *

*

* The exact list of available encodings depends on your PostgreSQL version, so check your * PostgreSQL manual for a more specific list. *

* @return int 0 on success or -1 on error. */ function pg_set_client_encoding( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $encoding ): int {} /** * Get meta data for table * @link https://php.net/manual/en/function.pg-meta-data.php * @param resource $connection

* PostgreSQL database connection resource. *

* @param string $table_name

* The name of the table. *

* @return array|false An array of the table definition, or FALSE on error. */ function pg_meta_data( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $table_name, #[PhpStormStubsElementAvailable(from: '8.0')] bool $extended = false ): array|false {} /** * Convert associative array values into suitable for SQL statement * @link https://php.net/manual/en/function.pg-convert.php * @param resource $connection

* PostgreSQL database connection resource. *

* @param string $table_name

* Name of the table against which to convert types. *

* @param array $values

* Data to be converted. *

* @param int $flags [optional]

* Any number of PGSQL_CONV_IGNORE_DEFAULT, * PGSQL_CONV_FORCE_NULL or * PGSQL_CONV_IGNORE_NOT_NULL, combined. *

* @return array|false An array of converted values, or FALSE on error. */ function pg_convert( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $table_name, array $values, int $flags = 0 ): array|false {} /** * Insert array into table * @link https://php.net/manual/en/function.pg-insert.php * @param resource $connection

* PostgreSQL database connection resource. *

* @param string $table_name

* Name of the table into which to insert rows. The table table_name must at least * have as many columns as assoc_array has elements. *

* @param array $values

* An array whose keys are field names in the table table_name, * and whose values are the values of those fields that are to be inserted. *

* @param int $flags [optional]

* Any number of PGSQL_CONV_OPTS, * PGSQL_DML_NO_CONV, * PGSQL_DML_EXEC, * PGSQL_DML_ASYNC or * PGSQL_DML_STRING combined. If PGSQL_DML_STRING is part of the * options then query string is returned. *

* @return mixed TRUE on success or FALSE on failure. Returns string if PGSQL_DML_STRING is passed * via options. */ #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result|string|bool'], default: 'resource|string|bool')] function pg_insert( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $table_name, array $values, int $flags = PGSQL_DML_EXEC ) {} /** * Update table * @link https://php.net/manual/en/function.pg-update.php * @param resource $connection

* PostgreSQL database connection resource. *

* @param string $table_name

* Name of the table into which to update rows. *

* @param array $values

* An array whose keys are field names in the table table_name, * and whose values are what matched rows are to be updated to. *

* @param array $conditions

* An array whose keys are field names in the table table_name, * and whose values are the conditions that a row must meet to be updated. *

* @param int $flags [optional]

* Any number of PGSQL_CONV_OPTS, * PGSQL_DML_NO_CONV, * PGSQL_DML_EXEC or * PGSQL_DML_STRING combined. If PGSQL_DML_STRING is part of the * options then query string is returned. *

* @return string|bool TRUE on success or FALSE on failure. Returns string if PGSQL_DML_STRING is passed * via options. */ function pg_update( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $table_name, array $values, array $conditions, int $flags = PGSQL_DML_EXEC ): string|bool {} /** * Deletes records * @link https://php.net/manual/en/function.pg-delete.php * @param resource $connection

* PostgreSQL database connection resource. *

* @param string $table_name

* Name of the table from which to delete rows. *

* @param array $conditions

* An array whose keys are field names in the table table_name, * and whose values are the values of those fields that are to be deleted. *

* @param int $flags [optional]

* Any number of PGSQL_CONV_FORCE_NULL, * PGSQL_DML_NO_CONV, * PGSQL_DML_EXEC or * PGSQL_DML_STRING combined. If PGSQL_DML_STRING is part of the * options then query string is returned. *

* @return string|bool TRUE on success or FALSE on failure. Returns string if PGSQL_DML_STRING is passed * via options. */ function pg_delete( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $table_name, array $conditions, int $flags = PGSQL_DML_EXEC ): string|bool {} /** * Select records * @link https://php.net/manual/en/function.pg-select.php * @param resource|PgSql\Connection $connection

* PostgreSQL database connection resource. *

* @param string $table_name

* Name of the table from which to select rows. *

* @param array $conditions

* An array whose keys are field names in the table table_name, * and whose values are the conditions that a row must meet to be retrieved. *

* @param int $flags [optional]

* Any number of PGSQL_CONV_FORCE_NULL, * PGSQL_DML_NO_CONV, * PGSQL_DML_EXEC, * PGSQL_DML_ASYNC or * PGSQL_DML_STRING combined. If PGSQL_DML_STRING is part of the * options then query string is returned. *

* @param int $mode [optional]

* An optional parameter that controls * how the returned array is indexed. * result_type is a constant and can take the * following values: PGSQL_ASSOC, * PGSQL_NUM and PGSQL_BOTH. * Using PGSQL_NUM, pg_fetch_array * will return an array with numerical indices, using * PGSQL_ASSOC it will return only associative indices * while PGSQL_BOTH, the default, will return both * numerical and associative indices. *

* @return array|string|false TRUE on success or FALSE on failure. Returns string if PGSQL_DML_STRING is passed * via options. */ function pg_select( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $table_name, array $conditions = [], int $flags = PGSQL_DML_EXEC, int $mode = PGSQL_ASSOC ): array|string|false {} /** * @param $connection * @param $query [optional] * @return mixed */ #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result|false'], default: 'resource|false')] function pg_exec( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $query ) {} /** * @param $result * @return string|int|false * @deprecated 8.0 */ function pg_getlastoid(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result): string|int|false {} /** * @param $result * @return int * @deprecated 8.0 */ function pg_cmdtuples(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result): int {} // TODO remove /** * @param $connection [optional] * @return string * @deprecated 8.0 */ function pg_errormessage(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection): string {} /** * @param $result * @return int * @deprecated 8.0 */ function pg_numrows(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result): int {} /** * @param $result * @return int * @deprecated 8.0 */ function pg_numfields(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result): int {} /** * @param $result * @param $field * @return string * @deprecated 8.0 */ function pg_fieldname(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, int $field): string {} /** * @param $result * @param $field * @return int * @deprecated 8.0 */ function pg_fieldsize(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, int $field): int {} /** * @param $result * @param $field * @return string * @deprecated 8.0 */ function pg_fieldtype(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, int $field): string {} /** * @param $result * @param $field * @return int * @deprecated 8.0 */ function pg_fieldnum(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, string $field): int {} /** * @param $result * @param $row * @param $field [optional] * @return int|false * @deprecated 8.0 */ function pg_fieldprtlen( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $row = 0, #[PhpStormStubsElementAvailable(from: '8.0')] $row, string|int $field ): int|false {} /** * @param $result * @param $row * @param $field [optional] * @return int|false * @deprecated 8.0 */ function pg_fieldisnull( #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $row = 0, #[PhpStormStubsElementAvailable(from: '8.0')] $row, string|int $field ): int|false {} /** * @param $result * @return bool * @deprecated 8.0 */ function pg_freeresult(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result): bool {} /** * @param PgSql\Result|resource $result * @param $row * @param $field [optional] * @deprecated 8.0 */ function pg_result( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Result'], default: 'resource')] $result, #[PhpStormStubsElementAvailable(from: '8.0')] $row, #[PhpStormStubsElementAvailable(from: '8.0')] string|int $field ): string|null|false {} /** * @param $lob * @deprecated 8.0 */ function pg_loreadall(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Lob'], default: 'resource')] $lob): int {} // TODO remove /** * @param $connection [optional] * @param $oid [optional] * @return string|int|false * @deprecated 8.0 */ function pg_locreate(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, $oid): string|int|false {} /** * @param $connection * @param $oid [optional] * @return bool * @deprecated 8.0 */ function pg_lounlink( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, $oid ): bool {} /** * @param $connection * @param $oid [optional] * @param $mode [optional] * @return resource * @deprecated 8.0 */ #[LanguageLevelTypeAware(['8.1' => 'PgSql\Lob|false'], default: 'resource|false')] function pg_loopen( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, $oid, string $mode ) {} /** * @param $lob * @return bool * @deprecated 8.0 */ function pg_loclose(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Lob'], default: 'resource')] $lob): bool {} /** * @param $lob * @param $length * @return string|false * @deprecated 8.0 */ function pg_loread(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Lob'], default: 'resource')] $lob, int $length = 8192): string|false {} /** * @param $lob * @param $data * @param $length [optional] * @return int|false * @deprecated 8.0 */ function pg_lowrite(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Lob'], default: 'resource')] $lob, string $data, ?int $length): int|false {} /** * @param $connection * @param $filename [optional] * @param $oid [optional] * @return string|int|false * @deprecated 8.0 */ function pg_loimport( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, $filename, $oid ): string|int|false {} /** * @param $connection * @param $oid [optional] * @param $filename [optional] * @return bool * @deprecated 8.0 */ function pg_loexport( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, $oid, $filename ): bool {} /** * @param $connection [optional] * @return string * @deprecated 8.0 */ function pg_clientencoding(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection|null'], default: 'resource')] $connection): string {} /** * @param $connection * @param $encoding [optional] * @return int * @deprecated 8.0 */ function pg_setclientencoding( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $connection = null, #[PhpStormStubsElementAvailable(from: '8.0')] #[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection, string $encoding ): int {} /** * Reads input on the connection * @link https://www.php.net/manual/en/function.pg-consume-input.php * @param PgSql\Connection|resource $connection * @return bool true if no error occurred, or false if there was an error. * Note that true does not necessarily indicate that input was waiting to be read. */ function pg_consume_input(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection): bool {} /** * Flush outbound query data on the connection * @link https://www.php.net/manual/en/function.pg-flush.php * @param PgSql\Connection|resource $connection * @return int|bool Returns true if the flush was successful or no data was waiting to be flushed, 0 if part of the pending * data was flushed but more remains or false on failure. */ function pg_flush(#[LanguageLevelTypeAware(['8.1' => 'PgSql\Connection'], default: 'resource')] $connection): int|bool {} /** * @since 8.3 */ function pg_set_error_context_visibility(PgSql\Connection $connection, int $visibility): int {} /** * @since 8.3 */ function pg_pipeline_status(PgSql\Connection $connection): int {} /** * @since 8.3 */ function pg_pipeline_sync(PgSql\Connection $connection): bool {} /** * @since 8.3 */ function pg_exit_pipeline_mode(PgSql\Connection $connection): bool {} /** * @since 8.3 */ function pg_enter_pipeline_mode(PgSql\Connection $connection): bool {} /** * @since 8.4 */ function pg_result_memory_size(PgSql\Result $result): int {} /** * @since 8.4 */ function pg_change_password(PgSql\Connection $connection, string $user, #[\SensitiveParameter] string $password): bool {} /** * @since 8.4 */ function pg_put_copy_data(PgSql\Connection $connection, string $cmd): int {} /** * @since 8.4 * @param resource $socket */ function pg_socket_poll($socket, int $read, int $write, int $timeout = -1): int {} /** * @since 8.4 */ function pg_put_copy_end(PgSql\Connection $connection, ?string $error = null): int {} /** * @since 8.4 * @return array */ function pg_jit(?PgSql\Connection $connection = null): array {} define('PGSQL_LIBPQ_VERSION', "16.2"); define('PGSQL_LIBPQ_VERSION_STR', "16.2"); /** * Passed to pg_connect to force the creation of a new connection, * rather than re-using an existing identical connection. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_CONNECT_FORCE_NEW', 2); /** * Passed to pg_fetch_array. Return an associative array of field * names and values. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_ASSOC', 1); /** * Passed to pg_fetch_array. Return a numerically indexed array of field * numbers and values. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_NUM', 2); /** * Passed to pg_fetch_array. Return an array of field values * that is both numerically indexed (by field number) and associated (by field name). * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_BOTH', 3); /** * Returned by pg_connection_status indicating that the database * connection is in an invalid state. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_CONNECTION_BAD', 1); /** * Returned by pg_connection_status indicating that the database * connection is in a valid state. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_CONNECTION_OK', 0); /** * Returned by pg_transaction_status. Connection is * currently idle, not in a transaction. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_TRANSACTION_IDLE', 0); /** * Returned by pg_transaction_status. A command * is in progress on the connection. A query has been sent via the connection * and not yet completed. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_TRANSACTION_ACTIVE', 1); /** * Returned by pg_transaction_status. The connection * is idle, in a transaction block. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_TRANSACTION_INTRANS', 2); /** * Returned by pg_transaction_status. The connection * is idle, in a failed transaction block. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_TRANSACTION_INERROR', 3); /** * Returned by pg_transaction_status. The connection * is bad. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_TRANSACTION_UNKNOWN', 4); /** * Passed to pg_set_error_verbosity. * Specified that returned messages include severity, primary text, * and position only; this will normally fit on a single line. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_ERRORS_TERSE', 0); /** * Passed to pg_set_error_verbosity. * The default mode produces messages that include the above * plus any detail, hint, or context fields (these may span * multiple lines). * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_ERRORS_DEFAULT', 1); /** * Passed to pg_set_error_verbosity. * The verbose mode includes all available fields. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_ERRORS_VERBOSE', 2); /** * Passed to pg_lo_seek. Seek operation is to begin * from the start of the object. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_SEEK_SET', 0); /** * Passed to pg_lo_seek. Seek operation is to begin * from the current position. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_SEEK_CUR', 1); /** * Passed to pg_lo_seek. Seek operation is to begin * from the end of the object. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_SEEK_END', 2); /** * Passed to pg_result_status. Indicates that * numerical result code is desired. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_STATUS_LONG', 1); /** * Passed to pg_result_status. Indicates that * textual result command tag is desired. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_STATUS_STRING', 2); /** * Returned by pg_result_status. The string sent to the server * was empty. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_EMPTY_QUERY', 0); /** * Returned by pg_result_status. Successful completion of a * command returning no data. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_COMMAND_OK', 1); /** * Returned by pg_result_status. Successful completion of a command * returning data (such as a SELECT or SHOW). * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_TUPLES_OK', 2); /** * Returned by pg_result_status. Copy Out (from server) data * transfer started. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_COPY_OUT', 3); /** * Returned by pg_result_status. Copy In (to server) data * transfer started. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_COPY_IN', 4); /** * Returned by pg_result_status. The server's response * was not understood. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_BAD_RESPONSE', 5); /** * Returned by pg_result_status. A nonfatal error * (a notice or warning) occurred. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_NONFATAL_ERROR', 6); /** * Returned by pg_result_status. A fatal error * occurred. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_FATAL_ERROR', 7); /** * Passed to pg_result_error_field. * The severity; the field contents are ERROR, * FATAL, or PANIC (in an error message), or * WARNING, NOTICE, DEBUG, * INFO, or LOG (in a notice message), or a localized * translation of one of these. Always present. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_DIAG_SEVERITY', 83); /** * Passed to pg_result_error_field. * The SQLSTATE code for the error. The SQLSTATE code identifies the type of error * that has occurred; it can be used by front-end applications to perform specific * operations (such as error handling) in response to a particular database error. * This field is not localizable, and is always present. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_DIAG_SQLSTATE', 67); /** * Passed to pg_result_error_field. * The primary human-readable error message (typically one line). Always present. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_DIAG_MESSAGE_PRIMARY', 77); /** * Passed to pg_result_error_field. * Detail: an optional secondary error message carrying more detail about the problem. May run to multiple lines. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_DIAG_MESSAGE_DETAIL', 68); /** * Passed to pg_result_error_field. * Hint: an optional suggestion what to do about the problem. This is intended to differ from detail in that it * offers advice (potentially inappropriate) rather than hard facts. May run to multiple lines. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_DIAG_MESSAGE_HINT', 72); /** * Passed to pg_result_error_field. * A string containing a decimal integer indicating an error cursor position as an index into the original * statement string. The first character has index 1, and positions are measured in characters not bytes. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_DIAG_STATEMENT_POSITION', 80); /** * Passed to pg_result_error_field. * This is defined the same as the PG_DIAG_STATEMENT_POSITION field, but * it is used when the cursor position refers to an internally generated * command rather than the one submitted by the client. The * PG_DIAG_INTERNAL_QUERY field will always appear when this * field appears. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_DIAG_INTERNAL_POSITION', 112); /** * Passed to pg_result_error_field. * The text of a failed internally-generated command. This could be, for example, a * SQL query issued by a PL/pgSQL function. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_DIAG_INTERNAL_QUERY', 113); /** * Passed to pg_result_error_field. * An indication of the context in which the error occurred. Presently * this includes a call stack traceback of active procedural language * functions and internally-generated queries. The trace is one entry * per line, most recent first. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_DIAG_CONTEXT', 87); /** * Passed to pg_result_error_field. * The file name of the PostgreSQL source-code location where the error * was reported. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_DIAG_SOURCE_FILE', 70); /** * Passed to pg_result_error_field. * The line number of the PostgreSQL source-code location where the * error was reported. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_DIAG_SOURCE_LINE', 76); /** * Passed to pg_result_error_field. * The name of the PostgreSQL source-code function reporting the error. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_DIAG_SOURCE_FUNCTION', 82); /** * Passed to pg_convert. * Ignore default values in the table during conversion. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_CONV_IGNORE_DEFAULT', 2); /** * Passed to pg_convert. * Use SQL NULL in place of an empty string. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_CONV_FORCE_NULL', 4); /** * Passed to pg_convert. * Ignore conversion of NULL into SQL NOT NULL columns. * @link https://php.net/manual/en/pgsql.constants.php */ define('PGSQL_CONV_IGNORE_NOT_NULL', 8); define('PGSQL_DML_NO_CONV', 256); define('PGSQL_DML_EXEC', 512); define('PGSQL_DML_ASYNC', 1024); define('PGSQL_DML_STRING', 2048); /** * @link https://php.net/manual/en/function.pg-last-notice.php * @since 7.1 */ define('PGSQL_NOTICE_LAST', 1); /** * @link https://php.net/manual/en/function.pg-last-notice.php * @since 7.1 */ define('PGSQL_NOTICE_ALL', 2); /** * @link https://php.net/manual/en/function.pg-last-notice.php * @since 7.1 */ define('PGSQL_NOTICE_CLEAR', 3); const PGSQL_CONNECT_ASYNC = 4; const PGSQL_CONNECTION_AUTH_OK = 5; const PGSQL_CONNECTION_AWAITING_RESPONSE = 4; const PGSQL_CONNECTION_MADE = 3; const PGSQL_CONNECTION_SETENV = 6; const PGSQL_CONNECTION_STARTED = 2; const PGSQL_DML_ESCAPE = 4096; const PGSQL_POLLING_ACTIVE = 4; const PGSQL_POLLING_FAILED = 0; const PGSQL_POLLING_OK = 3; const PGSQL_POLLING_READING = 1; const PGSQL_POLLING_WRITING = 2; const PGSQL_DIAG_SCHEMA_NAME = 115; const PGSQL_DIAG_TABLE_NAME = 116; const PGSQL_DIAG_COLUMN_NAME = 99; const PGSQL_DIAG_DATATYPE_NAME = 100; const PGSQL_DIAG_CONSTRAINT_NAME = 110; const PGSQL_DIAG_SEVERITY_NONLOCALIZED = 86; const PGSQL_ERRORS_SQLSTATE = 0; const PGSQL_TRACE_REGRESS_MODE = 2; const PGSQL_PIPELINE_SYNC = 10; const PGSQL_PIPELINE_ON = 1; const PGSQL_PIPELINE_OFF = 0; const PGSQL_PIPELINE_ABORTED = 2; const PGSQL_SHOW_CONTEXT_NEVER = 0; const PGSQL_SHOW_CONTEXT_ERRORS = 1; const PGSQL_SHOW_CONTEXT_ALWAYS = 2; // End of pgsql v. * @link https://github.com/iMega/grpc-phpdoc */ /** * Grpc * @see https://grpc.io * @see https://github.com/grpc/grpc/tree/master/src/php/ext/grpc */ namespace Grpc; /** * Register call error constants */ /** * everything went ok */ const CALL_OK = 0; /** * something failed, we don't know what */ const CALL_ERROR = 1; /** * this method is not available on the server */ const CALL_ERROR_NOT_ON_SERVER = 2; /** * this method is not available on the client */ const CALL_ERROR_NOT_ON_CLIENT = 3; /** * this method must be called before server_accept */ const CALL_ERROR_ALREADY_ACCEPTED = 4; /** * this method must be called before invoke */ const CALL_ERROR_ALREADY_INVOKED = 5; /** * this method must be called after invoke */ const CALL_ERROR_NOT_INVOKED = 6; /** * this call is already finished * (writes_done or write_status has already been called) */ const CALL_ERROR_ALREADY_FINISHED = 7; /** * there is already an outstanding read/write operation on the call */ const CALL_ERROR_TOO_MANY_OPERATIONS = 8; /** * the flags value was illegal for this call */ const CALL_ERROR_INVALID_FLAGS = 9; /** * invalid metadata was passed to this call */ const CALL_ERROR_INVALID_METADATA = 10; /** * invalid message was passed to this call */ const CALL_ERROR_INVALID_MESSAGE = 11; /** * completion queue for notification has not been registered with the * server */ const CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE = 12; /** * this batch of operations leads to more operations than allowed */ const CALL_ERROR_BATCH_TOO_BIG = 13; /** * payload type requested is not the type registered */ const CALL_ERROR_PAYLOAD_TYPE_MISMATCH = 14; /* * Register write flags */ /** * Hint that the write may be buffered and need not go out on the wire * immediately. GRPC is free to buffer the message until the next non-buffered * write, or until writes_done, but it need not buffer completely or at all. */ const WRITE_BUFFER_HINT = 1; /** * Force compression to be disabled for a particular write * (start_write/add_metadata). Illegal on invoke/accept. */ const WRITE_NO_COMPRESS = 2; /* * Register status constants */ /** * Not an error; returned on success */ const STATUS_OK = 0; /** * The operation was cancelled (typically by the caller). */ const STATUS_CANCELLED = 1; /** * Unknown error. An example of where this error may be returned is * if a Status value received from another address space belongs to * an error-space that is not known in this address space. Also * errors raised by APIs that do not return enough error information * may be converted to this error. */ const STATUS_UNKNOWN = 2; /** * Client specified an invalid argument. Note that this differs * from FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments * that are problematic regardless of the state of the system * (e.g., a malformed file name). */ const STATUS_INVALID_ARGUMENT = 3; /** * Deadline expired before operation could complete. For operations * that change the state of the system, this error may be returned * even if the operation has completed successfully. For example, a * successful response from a server could have been delayed long * enough for the deadline to expire. */ const STATUS_DEADLINE_EXCEEDED = 4; /** * Some requested entity (e.g., file or directory) was not found. */ const STATUS_NOT_FOUND = 5; /* Some entity that we attempted to create (e.g., file or directory) * already exists. */ const STATUS_ALREADY_EXISTS = 6; /** * The caller does not have permission to execute the specified * operation. PERMISSION_DENIED must not be used for rejections * caused by exhausting some resource (use RESOURCE_EXHAUSTED * instead for those errors). PERMISSION_DENIED must not be * used if the caller can not be identified (use UNAUTHENTICATED * instead for those errors). */ const STATUS_PERMISSION_DENIED = 7; /** * The request does not have valid authentication credentials for the * operation. */ const STATUS_UNAUTHENTICATED = 16; /** * Some resource has been exhausted, perhaps a per-user quota, or * perhaps the entire file system is out of space. */ const STATUS_RESOURCE_EXHAUSTED = 8; /** * Operation was rejected because the system is not in a state * required for the operation's execution. For example, directory * to be deleted may be non-empty, an rmdir operation is applied to * a non-directory, etc. * * A litmus test that may help a service implementor in deciding * between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE: * (a) Use UNAVAILABLE if the client can retry just the failing call. * (b) Use ABORTED if the client should retry at a higher-level * (e.g., restarting a read-modify-write sequence). * (c) Use FAILED_PRECONDITION if the client should not retry until * the system state has been explicitly fixed. E.g., if an "rmdir" * fails because the directory is non-empty, FAILED_PRECONDITION * should be returned since the client should not retry unless * they have first fixed up the directory by deleting files from it. * (d) Use FAILED_PRECONDITION if the client performs conditional * REST Get/Update/Delete on a resource and the resource on the * server does not match the condition. E.g., conflicting * read-modify-write on the same resource. */ const STATUS_FAILED_PRECONDITION = 9; /** * The operation was aborted, typically due to a concurrency issue * like sequencer check failures, transaction aborts, etc. * * See litmus test above for deciding between FAILED_PRECONDITION, * ABORTED, and UNAVAILABLE. */ const STATUS_ABORTED = 10; /** * Operation was attempted past the valid range. E.g., seeking or * reading past end of file. * * Unlike INVALID_ARGUMENT, this error indicates a problem that may * be fixed if the system state changes. For example, a 32-bit file * system will generate INVALID_ARGUMENT if asked to read at an * offset that is not in the range [0,2^32-1], but it will generate * OUT_OF_RANGE if asked to read from an offset past the current * file size. * * There is a fair bit of overlap between FAILED_PRECONDITION and * OUT_OF_RANGE. We recommend using OUT_OF_RANGE (the more specific * error) when it applies so that callers who are iterating through * a space can easily look for an OUT_OF_RANGE error to detect when * they are done. */ const STATUS_OUT_OF_RANGE = 11; /** * Operation is not implemented or not supported/enabled in this service. */ const STATUS_UNIMPLEMENTED = 12; /** * Internal errors. Means some invariants expected by underlying * system has been broken. If you see one of these errors, * something is very broken. */ const STATUS_INTERNAL = 13; /** * The service is currently unavailable. This is a most likely a * transient condition and may be corrected by retrying with * a backoff. * * See litmus test above for deciding between FAILED_PRECONDITION, * ABORTED, and UNAVAILABLE. */ const STATUS_UNAVAILABLE = 14; /** * Unrecoverable data loss or corruption. */ const STATUS_DATA_LOSS = 15; /* * Register op type constants */ /** * Send initial metadata: one and only one instance MUST be sent for each * call, unless the call was cancelled - in which case this can be skipped. * This op completes after all bytes of metadata have been accepted by * outgoing flow control. */ const OP_SEND_INITIAL_METADATA = 0; /** * Send a message: 0 or more of these operations can occur for each call. * This op completes after all bytes for the message have been accepted by * outgoing flow control. */ const OP_SEND_MESSAGE = 1; /** Send a close from the client: one and only one instance MUST be sent from * the client, unless the call was cancelled - in which case this can be * skipped. * This op completes after all bytes for the call (including the close) * have passed outgoing flow control. */ const OP_SEND_CLOSE_FROM_CLIENT = 2; /** * Send status from the server: one and only one instance MUST be sent from * the server unless the call was cancelled - in which case this can be * skipped. * This op completes after all bytes for the call (including the status) * have passed outgoing flow control. */ const OP_SEND_STATUS_FROM_SERVER = 3; /** * Receive initial metadata: one and only one MUST be made on the client, * must not be made on the server. * This op completes after all initial metadata has been read from the * peer. */ const OP_RECV_INITIAL_METADATA = 4; /** * Receive a message: 0 or more of these operations can occur for each call. * This op completes after all bytes of the received message have been * read, or after a half-close has been received on this call. */ const OP_RECV_MESSAGE = 5; /** * Receive status on the client: one and only one must be made on the client. * This operation always succeeds, meaning ops paired with this operation * will also appear to succeed, even though they may not have. In that case * the status will indicate some failure. * This op completes after all activity on the call has completed. */ const OP_RECV_STATUS_ON_CLIENT = 6; /** * Receive close on the server: one and only one must be made on the * server. * This op completes after the close has been received by the server. * This operation always succeeds, meaning ops paired with this operation * will also appear to succeed, even though they may not have. */ const OP_RECV_CLOSE_ON_SERVER = 7; /* * Register connectivity state constants */ /** * channel is idle */ const CHANNEL_IDLE = 0; /** * channel is connecting */ const CHANNEL_CONNECTING = 1; /** * channel is ready for work */ const CHANNEL_READY = 2; /** * channel has seen a failure but expects to recover */ const CHANNEL_TRANSIENT_FAILURE = 3; /** * channel has seen a failure that it cannot recover from */ const CHANNEL_SHUTDOWN = 4; const CHANNEL_FATAL_FAILURE = 4; /** * Class Server * @see https://github.com/grpc/grpc/tree/master/src/php/ext/grpc */ class Server { /** * Constructs a new instance of the Server class * * @param array $args The arguments to pass to the server (optional) */ public function __construct(array $args) {} /** * Request a call on a server. Creates a single GRPC_SERVER_RPC_NEW event. * * @param int $tag_new The tag to associate with the new request * @param int $tag_cancel The tag to use if the call is cancelled */ public function requestCall($tag_new, $tag_cancel) {} /** * Add a http2 over tcp listener. * * @param string $addr The address to add * * @return bool true on success, false on failure */ public function addHttp2Port($addr) {} /** * Add a secure http2 over tcp listener. * * @param string $addr The address to add * @param ServerCredentials $creds_obj * * @return bool true on success, false on failure */ public function addSecureHttp2Port($addr, $creds_obj) {} /** * Start a server - tells all listeners to start listening */ public function start() {} } /** * Class ServerCredentials * @see https://github.com/grpc/grpc/tree/master/src/php/ext/grpc */ class ServerCredentials { /** * Create SSL credentials. * * @param string $pem_root_certs PEM encoding of the server root certificates * @param string $pem_private_key PEM encoding of the client's private key * @param string $pem_cert_chain PEM encoding of the client's certificate chain * * @return object Credentials The new SSL credentials object * @throws \InvalidArgumentException */ public static function createSsl( $pem_root_certs, $pem_private_key, $pem_cert_chain ) {} } /** * Class Channel * @see https://github.com/grpc/grpc/tree/master/src/php/ext/grpc */ class Channel { /** * Construct an instance of the Channel class. If the $args array contains a * "credentials" key mapping to a ChannelCredentials object, a secure channel * will be created with those credentials. * * @param string $target The hostname to associate with this channel * @param array $args The arguments to pass to the Channel (optional) * * @throws \InvalidArgumentException */ public function __construct($target, $args = []) {} /** * Get the endpoint this call/stream is connected to * * @return string The URI of the endpoint */ public function getTarget() {} /** * Get the connectivity state of the channel * * @param bool $try_to_connect try to connect on the channel * * @return int The grpc connectivity state * @throws \InvalidArgumentException */ public function getConnectivityState($try_to_connect = false) {} /** * Watch the connectivity state of the channel until it changed * * @param int $last_state The previous connectivity state of the channel * @param Timeval $deadline_obj The deadline this function should wait until * * @return bool If the connectivity state changes from last_state * before deadline * @throws \InvalidArgumentException */ public function watchConnectivityState($last_state, Timeval $deadline_obj) {} /** * Close the channel */ public function close() {} } /** * Class ChannelCredentials * @see https://github.com/grpc/grpc/tree/master/src/php/ext/grpc */ class ChannelCredentials { /** * Set default roots pem. * * @param string $pem_roots PEM encoding of the server root certificates * * @throws \InvalidArgumentException */ public static function setDefaultRootsPem($pem_roots) {} /** * Create a default channel credentials object. * * @return ChannelCredentials The new default channel credentials object */ public static function createDefault() {} /** * Create SSL credentials. * * @param string|null $pem_root_certs PEM encoding of the server root certificates * @param string|null $pem_private_key PEM encoding of the client's private key * @param string|null $pem_cert_chain PEM encoding of the client's certificate chain * * @return ChannelCredentials The new SSL credentials object * @throws \InvalidArgumentException */ public static function createSsl( string $pem_root_certs = null, string $pem_private_key = null, string $pem_cert_chain = null ) {} /** * Create composite credentials from two existing credentials. * * @param ChannelCredentials $cred1 The first credential * @param CallCredentials $cred2 The second credential * * @return ChannelCredentials The new composite credentials object * @throws \InvalidArgumentException */ public static function createComposite( ChannelCredentials $cred1, CallCredentials $cred2 ) {} /** * Create insecure channel credentials * * @return null */ public static function createInsecure() {} } /** * Class Call * @see https://github.com/grpc/grpc/tree/master/src/php/ext/grpc */ class Call { /** * Constructs a new instance of the Call class. * * @param Channel $channel The channel to associate the call with. * Must not be closed. * @param string $method The method to call * @param Timeval $absolute_deadline The deadline for completing the call * @param null|string $host_override The host is set by user (optional) * * @throws \InvalidArgumentException */ public function __construct( Channel $channel, $method, Timeval $absolute_deadline, $host_override = null ) {} /** * Start a batch of RPC actions. * * @param array $batch Array of actions to take * * @return object Object with results of all actions * @throws \InvalidArgumentException * @throws \LogicException */ public function startBatch(array $batch) {} /** * Set the CallCredentials for this call. * * @param CallCredentials $creds_obj The CallCredentials object * * @return int The error code * @throws \InvalidArgumentException */ public function setCredentials(CallCredentials $creds_obj) {} /** * Get the endpoint this call/stream is connected to * * @return string The URI of the endpoint */ public function getPeer() {} /** * Cancel the call. This will cause the call to end with STATUS_CANCELLED if it * has not already ended with another status. */ public function cancel() {} } /** * Class CallCredentials * @see https://github.com/grpc/grpc/tree/master/src/php/ext/grpc */ class CallCredentials { /** * Create composite credentials from two existing credentials. * * @param CallCredentials $cred1 The first credential * @param CallCredentials $cred2 The second credential * * @return CallCredentials The new composite credentials object * @throws \InvalidArgumentException */ public static function createComposite( CallCredentials $cred1, CallCredentials $cred2 ) {} /** * Create a call credentials object from the plugin API * * @param \Closure $callback The callback function * * @return CallCredentials The new call credentials object * @throws \InvalidArgumentException */ public static function createFromPlugin(\Closure $callback) {} } /** * Class Timeval * * @see https://github.com/grpc/grpc/tree/master/src/php/ext/grpc */ class Timeval { /** * Constructs a new instance of the Timeval class * * @param int $usec The number of microseconds in the interval */ public function __construct($usec) {} /** * Adds another Timeval to this one and returns the sum. Calculations saturate * at infinities. * * @param Timeval $other The other Timeval object to add * * @return Timeval A new Timeval object containing the sum * @throws \InvalidArgumentException */ public function add(Timeval $other) {} /** * Return negative, 0, or positive according to whether a < b, a == b, or a > b * respectively. * * @param Timeval $a The first time to compare * @param Timeval $b The second time to compare * * @return int * @throws \InvalidArgumentException */ public static function compare(Timeval $a, Timeval $b) {} /** * Returns the infinite future time value as a timeval object * * @return Timeval Infinite future time value */ public static function infFuture() {} /** * Returns the infinite past time value as a timeval object * * @return Timeval Infinite past time value */ public static function infPast() {} /** * Returns the current time as a timeval object * * @return Timeval The current time */ public static function now() {} /** * Checks whether the two times are within $threshold of each other * * @param Timeval $a The first time to compare * @param Timeval $b The second time to compare * @param Timeval $threshold The threshold to check against * * @return bool True if $a and $b are within $threshold, False otherwise * @throws \InvalidArgumentException */ public static function similar(Timeval $a, Timeval $b, Timeval $threshold) {} /** * Sleep until this time, interpreted as an absolute timeout */ public function sleepUntil() {} /** * Subtracts another Timeval from this one and returns the difference. * Calculations saturate at infinities. * * @param Timeval $other The other Timeval object to subtract * * @return Timeval A new Timeval object containing the sum * @throws \InvalidArgumentException */ public function subtract(Timeval $other) {} /** * Returns the zero time interval as a timeval object * * @return Timeval Zero length time interval */ public static function zero() {} } * Resource holding the key. *

* @return void */ #[Deprecated(since: '8.0')] function openssl_pkey_free(#[LanguageLevelTypeAware(["8.0" => "OpenSSLAsymmetricKey"], default: "resource")] $key): void {} /** * Generates a new private key * @link https://php.net/manual/en/function.openssl-pkey-new.php * @param array|null $options [optional]

* You can finetune the key generation (such as specifying the number of * bits) using configargs. See * openssl_csr_new for more information about * configargs. *

* @return OpenSSLAsymmetricKey|resource|false a resource identifier for the pkey on success, or false on * error. */ #[LanguageLevelTypeAware(["8.0" => "OpenSSLAsymmetricKey|false"], default: "resource|false")] function openssl_pkey_new(?array $options) {} /** * Gets an exportable representation of a key into a string * @link https://php.net/manual/en/function.openssl-pkey-export.php * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $key * @param string &$output * @param string|null $passphrase [optional]

* The key is optionally protected by passphrase. *

* @param array|null $options [optional]

* configargs can be used to fine-tune the export * process by specifying and/or overriding options for the openssl * configuration file. See openssl_csr_new for more * information about configargs. *

* @return bool true on success or false on failure. */ function openssl_pkey_export( #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $key, &$output, ?string $passphrase, ?array $options ): bool {} /** * Gets an exportable representation of a key into a file * @link https://php.net/manual/en/function.openssl-pkey-export-to-file.php * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $key * @param string $output_filename

* Path to the output file. *

* @param string|null $passphrase [optional]

* The key can be optionally protected by a * passphrase. *

* @param array|null $options [optional]

* configargs can be used to fine-tune the export * process by specifying and/or overriding options for the openssl * configuration file. See openssl_csr_new for more * information about configargs. *

* @return bool true on success or false on failure. */ function openssl_pkey_export_to_file( #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $key, string $output_filename, ?string $passphrase, ?array $options ): bool {} /** * Get a private key * @link https://php.net/manual/en/function.openssl-pkey-get-private.php * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key *

* key can be one of the following: *

    *
  1. a string having the format * file://path/to/file.pem. The named file must * contain a PEM encoded certificate/private key (it may contain both). *
  2. *
  3. A PEM formatted private key.
  4. *

* @param string|null $passphrase

* The optional parameter passphrase must be used * if the specified key is encrypted (protected by a passphrase). *

* @return OpenSSLAsymmetricKey|resource|false Returns a positive key resource identifier on success, or FALSE on error. */ #[LanguageLevelTypeAware(["8.0" => "OpenSSLAsymmetricKey|false"], default: "resource|false")] function openssl_pkey_get_private( #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $private_key, ?string $passphrase = null ) {} /** * Extract public key from certificate and prepare it for use * @link https://php.net/manual/en/function.openssl-pkey-get-public.php * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $public_key

certificate can be one of the following: *

    *
  1. an X.509 certificate resource
  2. *
  3. a string having the format * file://path/to/file.pem. The named file must * contain a PEM encoded certificate/public key (it may contain both). *
  4. *
  5. A PEM formatted public key.
  6. *

* @return OpenSSLAsymmetricKey|resource|false a positive key resource identifier on success, or false on error. */ #[LanguageLevelTypeAware(["8.0" => "OpenSSLAsymmetricKey|false"], default: "resource|false")] function openssl_pkey_get_public(#[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $public_key) {} /** * Returns an array with the key details * @link https://php.net/manual/en/function.openssl-pkey-get-details.php * @param OpenSSLAsymmetricKey|resource $key

* Resource holding the key. *

* @return array|false an array with the key details in success or false in failure. * Returned array has indexes bits (number of bits), * key (string representation of the public key) and * type (type of the key which is one of * OPENSSL_KEYTYPE_RSA, * OPENSSL_KEYTYPE_DSA, * OPENSSL_KEYTYPE_DH, * OPENSSL_KEYTYPE_EC or -1 meaning unknown). *

*

* Depending on the key type used, additional details may be returned. Note that * some elements may not always be available. */ #[ArrayShape(["bits" => "int", "key" => "string", "rsa" => "array", "dsa" => "array", "dh" => "array", "ec" => "array", "type" => "int"])] function openssl_pkey_get_details(#[LanguageLevelTypeAware(["8.0" => "OpenSSLAsymmetricKey"], default: "resource")] $key): array|false {} /** * Free key resource * @link https://php.net/manual/en/function.openssl-free-key.php * @param OpenSSLAsymmetricKey|resource $key * @return void */ #[Deprecated(since: '8.0')] function openssl_free_key(#[LanguageLevelTypeAware(["8.0" => "OpenSSLAsymmetricKey"], default: "resource")] $key): void {} /** * Alias of openssl_pkey_get_private * @link https://php.net/manual/en/function.openssl-get-privatekey.php * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key *

* key can be one of the following: *

    *
  1. a string having the format * file://path/to/file.pem. The named file must * contain a PEM encoded certificate/private key (it may contain both). *
  2. *
  3. A PEM formatted private key.
  4. *

* @param string|null $passphrase [optional]

* The optional parameter passphrase must be used * if the specified key is encrypted (protected by a passphrase). *

* @return OpenSSLAsymmetricKey|resource|false Returns a positive key resource identifier on success, or FALSE on error. */ #[LanguageLevelTypeAware(["8.0" => "OpenSSLAsymmetricKey|false"], default: "resource|false")] function openssl_get_privatekey( #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $private_key, ?string $passphrase ) {} /** * Alias of openssl_pkey_get_public * @link https://php.net/manual/en/function.openssl-get-publickey.php * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $public_key

* certificate can be one of the following: *

    *
  1. an X.509 certificate resource
  2. *
  3. a string having the format * file://path/to/file.pem. The named file must * contain a PEM encoded certificate/public key (it may contain both). *
  4. *
  5. A PEM formatted public key.
  6. *

* @return OpenSSLAsymmetricKey|false a positive key resource identifier on success, or FALSE on error. */ #[LanguageLevelTypeAware(["8.0" => "OpenSSLAsymmetricKey|false"], default: "resource|false")] function openssl_get_publickey(#[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $public_key) {} /** * Generate a new signed public key and challenge * @link https://php.net/manual/en/function.openssl-spki-new.php * @param OpenSSLAsymmetricKey|resource $private_key

* privkey should be set to a private key that was * previously generated by {@link https://php.net/en/manual/function.openssl-pkey-new.php openssl_pkey_new()} (or * otherwise obtained from the other openssl_pkey family of functions). * The corresponding public portion of the key will be used to sign the * CSR. *

* @param string $challenge

The challenge associated to associate with the SPKAC

* @param int $digest_algo

The digest algorithm. See openssl_get_md_method().

* @return string|false Returns a signed public key and challenge string or NULL on failure. * @since 5.6 */ function openssl_spki_new(#[LanguageLevelTypeAware(["8.0" => "OpenSSLAsymmetricKey"], default: "resource")] $private_key, string $challenge, int $digest_algo = 2): string|false {} /** * Verifies a signed public key and challenge * @link https://php.net/manual/en/function.openssl-spki-verify.php * @param string $spki

Expects a valid signed public key and challenge

* @return bool Returns a boolean on success or failure. * @since 5.6 */ function openssl_spki_verify(string $spki): bool {} /** * Exports the challenge associated with a signed public key and challenge * @link https://php.net/manual/en/function.openssl-spki-export-challenge.php * @param string $spki

Expects a valid signed public key and challenge

* @return string|false Returns the associated challenge string or NULL on failure. * @since 5.6 */ function openssl_spki_export_challenge(string $spki): string|false {} /** * Exports a valid PEM formatted public key signed public key and challenge * @link https://php.net/manual/en/function.openssl-spki-export.php * @param string $spki

Expects a valid signed public key and challenge

* @return string|false Returns the associated PEM formatted public key or NULL on failure. * @since 5.6 */ function openssl_spki_export(string $spki): string|false {} /** * Parse an X.509 certificate and return a resource identifier for * it * @link https://php.net/manual/en/function.openssl-x509-read.php * @param OpenSSLCertificate|string|resource $certificate * @return OpenSSLCertificate|resource|false a resource identifier on success or false on failure. */ #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|false"], default: "resource|false")] function openssl_x509_read(#[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|string"], default: "resource|string")] $certificate) {} /** * @param string $certificate * @param string $digest_algo [optional] hash method * @param bool $binary [optional] * @return string|false FALSE on failure * @since 5.6 */ function openssl_x509_fingerprint(#[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|string"], default: "resource|string")] $certificate, string $digest_algo = 'sha1', bool $binary = false): string|false {} /** * Free certificate resource * @link https://php.net/manual/en/function.openssl-x509-free.php * @param OpenSSLCertificate|resource|string $certificate * @return void */ #[Deprecated(since: '8.0')] function openssl_x509_free(#[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate"], default: "resource|string")] $certificate): void {} /** * Parse an X509 certificate and return the information as an array * @link https://php.net/manual/en/function.openssl-x509-parse.php * @param OpenSSLCertificate|string|resource $certificate * @param bool $short_names [optional]

* shortnames controls how the data is indexed in the * array - if shortnames is true (the default) then * fields will be indexed with the short name form, otherwise, the long name * form will be used - e.g.: CN is the shortname form of commonName. *

* @return array|false The structure of the returned data is (deliberately) not * yet documented, as it is still subject to change. */ #[ArrayShape([ 'name' => 'string', 'subject' => 'string', 'hash' => 'string', 'issuer' => 'string', 'version' => 'int', 'serialNumber' => 'string', 'serialNumberHex' => 'string', 'validFrom' => 'string', 'validTo' => 'string', 'validFrom_time_t' => 'int', 'validTo_time_t' => 'int', 'alias' => 'string', 'signatureTypeSN' => 'string', 'signatureTypeLN' => 'string', 'signatureTypeNID' => 'int', 'purposes' => 'array', 'extensions' => 'array' ])] function openssl_x509_parse( #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|string"], default: "resource|string")] $certificate, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] bool $shortname, #[PhpStormStubsElementAvailable(from: '7.1')] bool $short_names = true ): array|false {} /** * Verifies if a certificate can be used for a particular purpose * @link https://php.net/manual/en/function.openssl-x509-checkpurpose.php * @param OpenSSLCertificate|string|resource $certificate

* The examined certificate. *

* @param int $purpose

* * openssl_x509_checkpurpose purposes * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ConstantDescription
X509_PURPOSE_SSL_CLIENTCan the certificate be used for the client side of an SSL * connection?
X509_PURPOSE_SSL_SERVERCan the certificate be used for the server side of an SSL * connection?
X509_PURPOSE_NS_SSL_SERVERCan the cert be used for Netscape SSL server?
X509_PURPOSE_SMIME_SIGNCan the cert be used to sign S/MIME email?
X509_PURPOSE_SMIME_ENCRYPTCan the cert be used to encrypt S/MIME email?
X509_PURPOSE_CRL_SIGNCan the cert be used to sign a certificate revocation list * (CRL)?
X509_PURPOSE_ANYCan the cert be used for Any/All purposes?
* These options are not bitfields - you may specify one only! *

* @param array $ca_info

* cainfo should be an array of trusted CA files/dirs * as described in Certificate * Verification. *

* @param string|null $untrusted_certificates_file [optional]

* If specified, this should be the name of a PEM encoded file holding * certificates that can be used to help verify the certificate, although * no trust is placed in the certificates that come from that file. *

* @return int|bool true if the certificate can be used for the intended purpose, * false if it cannot, or -1 on error. */ function openssl_x509_checkpurpose( #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|string"], default: "resource|string")] $certificate, int $purpose, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] array $ca_info, #[PhpStormStubsElementAvailable(from: '7.1')] array $ca_info = [], ?string $untrusted_certificates_file ): int|bool {} /** * Checks if a private key corresponds to a certificate * @link https://php.net/manual/en/function.openssl-x509-check-private-key.php * @param OpenSSLCertificate|string|resource $certificate

* The certificate. *

* @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key

* The private key. *

* @return bool true if key is the private key that * corresponds to cert, or false otherwise. */ function openssl_x509_check_private_key( #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|string"], default: "resource|string")] $certificate, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $private_key ): bool {} /** * Exports a certificate as a string * @link https://php.net/manual/en/function.openssl-x509-export.php * @param OpenSSLCertificate|string|resource $certificate * @param string &$output

* On success, this will hold the PEM. *

* @param bool $no_text [optional] * @return bool true on success or false on failure. */ function openssl_x509_export(#[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|string"], default: "resource|string")] $certificate, &$output, bool $no_text = true): bool {} /** * Exports a certificate to file * @link https://php.net/manual/en/function.openssl-x509-export-to-file.php * @param OpenSSLCertificate|string|resource $certificate * @param string $output_filename

* Path to the output file. *

* @param bool $no_text [optional] * @return bool true on success or false on failure. */ function openssl_x509_export_to_file(#[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|string"], default: "resource|string")] $certificate, string $output_filename, bool $no_text = true): bool {} /** * Verifies digital signature of x509 certificate against a public key * @link https://www.php.net/manual/en/function.openssl-x509-verify.php * @param OpenSSLCertificate|string|resource $certificate * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $public_key * @return int Returns 1 if the signature is correct, 0 if it is incorrect, and -1 on error. * @since 7.4 */ function openssl_x509_verify( #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|string"], default: "resource|string")] $certificate, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $public_key ): int {} /** * Exports a PKCS#12 Compatible Certificate Store File to variable. * @link https://php.net/manual/en/function.openssl-pkcs12-export.php * @param OpenSSLCertificate|string|resource $certificate * @param string &$output

* On success, this will hold the PKCS#12. *

* @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key

* Private key component of PKCS#12 file. *

* @param string $passphrase

* Encryption password for unlocking the PKCS#12 file. *

* @param array $options * @return bool true on success or false on failure. * @since 5.2.2 */ function openssl_pkcs12_export( #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|string"], default: "resource|string")] $certificate, &$output, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $private_key, string $passphrase, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] $args, #[PhpStormStubsElementAvailable(from: '7.1')] array $options = [] ): bool {} /** * Exports a PKCS#12 Compatible Certificate Store File * @link https://php.net/manual/en/function.openssl-pkcs12-export-to-file.php * @param OpenSSLCertificate|string|resource $certificate * @param string $output_filename

* Path to the output file. *

* @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key

* Private key component of PKCS#12 file. *

* @param string $passphrase

* Encryption password for unlocking the PKCS#12 file. *

* @param array $options * @return bool true on success or false on failure. * @since 5.2.2 */ function openssl_pkcs12_export_to_file(#[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|string"], default: "resource|string")] $certificate, string $output_filename, $private_key, string $passphrase, array $options = []): bool {} /** * Parse a PKCS#12 Certificate Store into an array * @link https://php.net/manual/en/function.openssl-pkcs12-read.php * @param string $pkcs12 * @param array &$certificates

* On success, this will hold the Certificate Store Data. *

* @param string $passphrase

* Encryption password for unlocking the PKCS#12 file. *

* @return bool true on success or false on failure. * @since 5.2.2 */ function openssl_pkcs12_read(string $pkcs12, &$certificates, string $passphrase): bool {} /** * Generates a CSR * @link https://php.net/manual/en/function.openssl-csr-new.php * @param array $distinguished_names

* The Distinguished Name to be used in the certificate. *

* @param OpenSSLAsymmetricKey &$private_key

* privkey should be set to a private key that was * previously generated by openssl_pkey_new (or * otherwise obtained from the other openssl_pkey family of functions). * The corresponding public portion of the key will be used to sign the * CSR. *

* @param array|null $options [optional]

* By default, the information in your system openssl.conf * is used to initialize the request; you can specify a configuration file * section by setting the config_section_section key of * configargs. You can also specify an alternative * openssl configuration file by setting the value of the * config key to the path of the file you want to use. * The following keys, if present in configargs * behave as their equivalents in the openssl.conf, as * listed in the table below. * * Configuration overrides * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
configargs keytypeopenssl.conf equivalentdescription
digest_algstringdefault_mdSelects which digest method to use
x509_extensionsstringx509_extensionsSelects which extensions should be used when creating an x509 * certificate
req_extensionsstringreq_extensionsSelects which extensions should be used when creating a CSR
private_key_bitsintegerdefault_bitsSpecifies how many bits should be used to generate a private * key
private_key_typeintegernoneSpecifies the type of private key to create. This can be one * of OPENSSL_KEYTYPE_DSA, * OPENSSL_KEYTYPE_DH or * OPENSSL_KEYTYPE_RSA. * The default value is OPENSSL_KEYTYPE_RSA which * is currently the only supported key type. *
encrypt_keybooleanencrypt_keyShould an exported key (with passphrase) be encrypted?
encrypt_key_cipherintegernone * One of cipher constants. *
*

* @param array|null $extra_attributes [optional]

* extraattribs is used to specify additional * configuration options for the CSR. Both dn and * extraattribs are associative arrays whose keys are * converted to OIDs and applied to the relevant part of the request. *

* @return OpenSSLCertificateSigningRequest|resource|false the CSR. */ #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificateSigningRequest|false"], default: "resource|false")] function openssl_csr_new( array $distinguished_names, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey'], default: 'resource')] &$private_key, ?array $options, ?array $extra_attributes ) {} /** * Exports a CSR as a string * @link https://php.net/manual/en/function.openssl-csr-export.php * @param OpenSSLCertificateSigningRequest|string|resource $csr * @param string &$output * @param bool $no_text [optional] * @return bool true on success or false on failure. */ function openssl_csr_export(#[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificateSigningRequest|string"], default: "resource|string")] $csr, &$output, bool $no_text = true): bool {} /** * Exports a CSR to a file * @link https://php.net/manual/en/function.openssl-csr-export-to-file.php * @param OpenSSLCertificateSigningRequest|string|resource $csr * @param string $output_filename

* Path to the output file. *

* @param bool $no_text [optional] * @return bool true on success or false on failure. */ function openssl_csr_export_to_file(#[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificateSigningRequest|string"], default: "resource|string")] $csr, string $output_filename, bool $no_text = true): bool {} /** * Sign a CSR with another certificate (or itself) and generate a certificate * @link https://php.net/manual/en/function.openssl-csr-sign.php * @param OpenSSLCertificateSigningRequest|string|resource $csr

* A CSR previously generated by openssl_csr_new. * It can also be the path to a PEM encoded CSR when specified as * file://path/to/csr or an exported string generated * by openssl_csr_export. *

* @param OpenSSLCertificate|resource|string|null $ca_certificate

* The generated certificate will be signed by cacert. * If cacert is null, the generated certificate * will be a self-signed certificate. *

* @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key

* priv_key is the private key that corresponds to * cacert. *

* @param int $days

* days specifies the length of time for which the * generated certificate will be valid, in days. *

* @param array|null $options [optional]

* You can finetune the CSR signing by configargs. * See openssl_csr_new for more information about * configargs. *

* @param int $serial [optional]

* An optional the serial number of issued certificate. If not specified * it will default to 0. *

* @return OpenSSLCertificate|resource|false an x509 certificate resource on success, false on failure. */ #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|false"], default: "resource|false")] function openssl_csr_sign( #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificateSigningRequest|string"], default: "resource|string")] $csr, #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|string|null"], default: "resource|string|null")] $ca_certificate, #[LanguageLevelTypeAware(["8.0" => "OpenSSLAsymmetricKey|OpenSSLCertificate|array|string"], default: "resource|array|string")] $private_key, int $days, ?array $options, int $serial = 0, #[PhpStormStubsElementAvailable(from: '8.4')] ?string $serial_hex = null ) {} /** * Returns the subject of a CERT * @link https://php.net/manual/en/function.openssl-csr-get-subject.php * @param OpenSSLCertificateSigningRequest|string|resource $csr * @param bool $short_names [optional] * @return array|false */ function openssl_csr_get_subject( #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificateSigningRequest|string"], default: "resource|string")] $csr, #[PhpStormStubsElementAvailable(from: '7.1')] bool $short_names = true ): array|false {} /** * Returns the public key of a CERT * @link https://php.net/manual/en/function.openssl-csr-get-public-key.php * @param OpenSSLCertificateSigningRequest|string|resource $csr * @param bool $short_names [optional] * @return OpenSSLAsymmetricKey|resource|false */ #[LanguageLevelTypeAware(["8.0" => "OpenSSLAsymmetricKey|false"], default: "resource|false")] function openssl_csr_get_public_key( #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificateSigningRequest|string"], default: "resource|string")] $csr, #[PhpStormStubsElementAvailable(from: '7.1')] bool $short_names = true ) {} /** * Computes a digest * @link https://php.net/manual/en/function.openssl-digest.php * @param string $data

* The data. *

* @param string $digest_algo

* The digest method. *

* @param bool $binary [optional]

* Setting to true will return as raw output data, otherwise the return * value is binhex encoded. *

* @return string|false the digested hash value on success or false on failure. */ function openssl_digest(string $data, string $digest_algo, bool $binary = false): string|false {} /** * Encrypts data * @link https://php.net/manual/en/function.openssl-encrypt.php * @param string $data

* The data. *

* @param string $cipher_algo

* The cipher method. For a list of available cipher methods, use {@see openssl_get_cipher_methods()}. *

* @param string $passphrase

* The key. *

* @param int $options [optional]

* options is a bitwise disjunction of the flags OPENSSL_RAW_DATA and OPENSSL_ZERO_PADDING. *

* @param string $iv [optional]

* A non-NULL Initialization Vector. *

* @param string &$tag [optional]

The authentication tag passed by reference when using AEAD cipher mode (GCM or CCM).

* @param string $aad [optional]

Additional authentication data.

* @param int $tag_length [optional]

* The length of the authentication tag. Its value can be between 4 and 16 for GCM mode. *

* @return string|false the encrypted string on success or false on failure. */ function openssl_encrypt( string $data, string $cipher_algo, string $passphrase, int $options = 0, string $iv = "", #[PhpStormStubsElementAvailable(from: '7.1')] &$tag, #[PhpStormStubsElementAvailable(from: '7.1')] string $aad = "", #[PhpStormStubsElementAvailable(from: '7.1')] int $tag_length = 16 ): string|false {} /** * Decrypts data * @link https://php.net/manual/en/function.openssl-decrypt.php * @param string $data

* The data. *

* @param string $cipher_algo

* The cipher method. *

* @param string $passphrase

* The password. *

* @param int $options [optional]

* Setting to true will take a raw encoded string, * otherwise a base64 string is assumed for the * data parameter. *

* @param string $iv [optional]

* A non-NULL Initialization Vector. *

* @param string|null $tag

* The authentication tag in AEAD cipher mode. If it is incorrect, the authentication fails and the function returns FALSE. *

* @param string $aad [optional]

Additional authentication data.

* @return string|false The decrypted string on success or false on failure. */ function openssl_decrypt( string $data, string $cipher_algo, string $passphrase, int $options = 0, string $iv = "", #[PhpStormStubsElementAvailable(from: '7.1')] #[LanguageLevelTypeAware(['8.1' => 'string|null'], default: 'string')] $tag = null, #[PhpStormStubsElementAvailable(from: '7.1')] string $aad = "" ): string|false {} /** * (PHP 5 >= PHP 5.3.3)
* Gets the cipher iv length * @link https://php.net/manual/en/function.openssl-cipher-iv-length.php * @param string $cipher_algo

* The method. *

* @return int|false the cipher length on success, or false on failure. */ function openssl_cipher_iv_length(string $cipher_algo): int|false {} /** * This function works in exactly the same way as openssl_cipher_iv_length but for a key length. This is especially * useful to make sure that the right key length is provided to openssl_encrypt and openssl_decrypt. * @param string $cipher_algo * @return int|false * @since 8.2 */ function openssl_cipher_key_length(string $cipher_algo): int|false {} /** * Generate signature * @link https://php.net/manual/en/function.openssl-sign.php * @param string $data * @param string &$signature

* If the call was successful the signature is returned in * signature. *

* @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key * @param string|int $algorithm [optional]

* For more information see the list of Signature Algorithms. *

* @return bool true on success or false on failure. */ function openssl_sign( string $data, &$signature, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $private_key, string|int $algorithm = OPENSSL_ALGO_SHA1 ): bool {} /** * Verify signature * @link https://php.net/manual/en/function.openssl-verify.php * @param string $data * @param string $signature * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $public_key * @param string|int $algorithm [optional]

* For more information see the list of Signature Algorithms. *

* @return int|false 1 if the signature is correct, 0 if it is incorrect, and * -1 on error. */ function openssl_verify( string $data, string $signature, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $public_key, string|int $algorithm = OPENSSL_ALGO_SHA1 ): int|false {} /** * Seal (encrypt) data * @link https://php.net/manual/en/function.openssl-seal.php * @param string $data * @param string &$sealed_data * @param array &$encrypted_keys * @param array $public_key * @param string $cipher_algo * @param string &$iv * @return int|false the length of the sealed data on success, or false on error. * If successful the sealed data is returned in * sealed_data, and the envelope keys in * env_keys. */ function openssl_seal( string $data, &$sealed_data, &$encrypted_keys, array $public_key, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] string $cipher_algo = '', #[PhpStormStubsElementAvailable(from: '8.0')] string $cipher_algo, #[PhpStormStubsElementAvailable(from: '7.0')] &$iv = null ): int|false {} /** * Open sealed data * @link https://php.net/manual/en/function.openssl-open.php * @param string $data * @param string &$output

* If the call is successful the opened data is returned in this * parameter. *

* @param string $encrypted_key * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key * @param string $cipher_algo The cipher method. * @param string|null $iv [optional] The initialization vector. * @return bool true on success or false on failure. */ function openssl_open( string $data, &$output, string $encrypted_key, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $private_key, #[PhpStormStubsElementAvailable(from: '7.0', to: '7.4')] string $cipher_algo = '', #[PhpStormStubsElementAvailable(from: '8.0')] string $cipher_algo, #[PhpStormStubsElementAvailable(from: '7.0')] ?string $iv ): bool {} /** * Generates a PKCS5 v2 PBKDF2 string, defaults to SHA-1 * @link https://secure.php.net/manual/en/function.openssl-pbkdf2.php * @param string $password * @param string $salt * @param int $key_length * @param int $iterations * @param string $digest_algo [optional] * @return string|false Returns string or FALSE on failure. * @since 5.5 */ function openssl_pbkdf2(string $password, string $salt, int $key_length, int $iterations, string $digest_algo = 'sha1'): string|false {} /** * Verifies the signature of an S/MIME signed message * @link https://php.net/manual/en/function.openssl-pkcs7-verify.php * @param string $input_filename

* Path to the message. *

* @param int $flags

* flags can be used to affect how the signature is * verified - see PKCS7 constants * for more information. *

* @param string|null $signers_certificates_filename [optional]

* If the outfilename is specified, it should be a * string holding the name of a file into which the certificates of the * persons that signed the messages will be stored in PEM format. *

* @param array $ca_info

* If the cainfo is specified, it should hold * information about the trusted CA certificates to use in the verification * process - see certificate * verification for more information about this parameter. *

* @param string|null $untrusted_certificates_filename [optional]

* If the extracerts is specified, it is the filename * of a file containing a bunch of certificates to use as untrusted CAs. *

* @param string|null $content [optional]

* You can specify a filename with content that will * be filled with the verified data, but with the signature information * stripped. * @param string|null $output_filename [optional] *

* @return bool|int true if the signature is verified, false if it is not correct * (the message has been tampered with, or the signing certificate is invalid), * or -1 on error. */ function openssl_pkcs7_verify( string $input_filename, int $flags, ?string $signers_certificates_filename, array $ca_info = [], ?string $untrusted_certificates_filename, ?string $content, #[PhpStormStubsElementAvailable("7.2")] ?string $output_filename ): int|bool {} /** * Decrypts an S/MIME encrypted message * @link https://php.net/manual/en/function.openssl-pkcs7-decrypt.php * @param string $input_filename * @param string $output_filename

* The decrypted message is written to the file specified by * outfilename. *

* @param OpenSSLCertificate|string|resource $certificate * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string|null $private_key [optional] * @return bool true on success or false on failure. */ function openssl_pkcs7_decrypt( string $input_filename, string $output_filename, $certificate, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string|null'], default: 'resource|array|string|null')] $private_key ): bool {} /** * Sign an S/MIME message * @link https://php.net/manual/en/function.openssl-pkcs7-sign.php * @param string $input_filename * @param string $output_filename * @param OpenSSLCertificate|string|resource $certificate * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key * @param array|null $headers

* headers is an array of headers that * will be prepended to the data after it has been signed (see * openssl_pkcs7_encrypt for more information about * the format of this parameter). *

* @param int $flags [optional]

* flags can be used to alter the output - see PKCS7 constants. *

* @param string|null $untrusted_certificates_filename [optional]

* extracerts specifies the name of a file containing * a bunch of extra certificates to include in the signature which can for * example be used to help the recipient to verify the certificate that you used. *

* @return bool true on success or false on failure. */ function openssl_pkcs7_sign( string $input_filename, string $output_filename, #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|string"], default: "resource|string")] $certificate, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $private_key, ?array $headers, int $flags = PKCS7_DETACHED, ?string $untrusted_certificates_filename ): bool {} /** * Encrypt an S/MIME message * @link https://php.net/manual/en/function.openssl-pkcs7-encrypt.php * @param string $input_filename * @param string $output_filename * @param OpenSSLCertificate|array|string|resource $certificate

* Either a lone X.509 certificate, or an array of X.509 certificates. *

* @param array|null $headers

* headers is an array of headers that * will be prepended to the data after it has been encrypted. *

*

* headers can be either an associative array * keyed by header name, or an indexed array, where each element contains * a single header line. *

* @param int $flags [optional]

* flags can be used to specify options that affect * the encoding process - see PKCS7 * constants. *

* @param int $cipher_algo [optional]

* One of cipher constants. *

* @return bool true on success or false on failure. */ function openssl_pkcs7_encrypt( string $input_filename, string $output_filename, #[LanguageLevelTypeAware(["8.0" => "OpenSSLCertificate|array|string"], default: "resource|array|string")] $certificate, ?array $headers, int $flags = 0, int $cipher_algo = OPENSSL_CIPHER_AES_128_CBC ): bool {} /** * Encrypts data with private key * @link https://php.net/manual/en/function.openssl-private-encrypt.php * @param string $data * @param string &$encrypted_data * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key * @param int $padding [optional]

* padding can be one of * OPENSSL_PKCS1_PADDING, * OPENSSL_NO_PADDING. *

* @return bool true on success or false on failure. */ function openssl_private_encrypt( string $data, &$encrypted_data, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $private_key, int $padding = OPENSSL_PKCS1_PADDING ): bool {} /** * Decrypts data with private key * @link https://php.net/manual/en/function.openssl-private-decrypt.php * @param string $data * @param string &$decrypted_data * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key

* key must be the private key corresponding that * was used to encrypt the data. *

* @param int $padding [optional]

* padding can be one of * OPENSSL_PKCS1_PADDING, * OPENSSL_SSLV23_PADDING, * OPENSSL_PKCS1_OAEP_PADDING, * OPENSSL_NO_PADDING. *

* @return bool true on success or false on failure. */ function openssl_private_decrypt( string $data, &$decrypted_data, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $private_key, int $padding = OPENSSL_PKCS1_PADDING ): bool {} /** * Encrypts data with public key * @link https://php.net/manual/en/function.openssl-public-encrypt.php * @param string $data * @param string &$encrypted_data

* This will hold the result of the encryption. *

* @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $public_key

* The public key. *

* @param int $padding [optional]

* padding can be one of * OPENSSL_PKCS1_PADDING, * OPENSSL_SSLV23_PADDING, * OPENSSL_PKCS1_OAEP_PADDING, * OPENSSL_NO_PADDING. *

* @return bool true on success or false on failure. */ function openssl_public_encrypt( string $data, &$encrypted_data, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $public_key, int $padding = OPENSSL_PKCS1_PADDING ): bool {} /** * Decrypts data with public key * @link https://php.net/manual/en/function.openssl-public-decrypt.php * @param string $data * @param string &$decrypted_data * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $public_key

* key must be the public key corresponding that * was used to encrypt the data. *

* @param int $padding [optional]

* padding can be one of * OPENSSL_PKCS1_PADDING, * OPENSSL_NO_PADDING. *

* @return bool true on success or false on failure. */ function openssl_public_decrypt( string $data, &$decrypted_data, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $public_key, int $padding = OPENSSL_PKCS1_PADDING ): bool {} /** * Gets available digest methods * @link https://php.net/manual/en/function.openssl-get-md-methods.php * @param bool $aliases [optional]

* Set to true if digest aliases should be included within the * returned array. *

* @return array An array of available digest methods. */ function openssl_get_md_methods(bool $aliases = false): array {} /** * Gets available cipher methods * @link https://php.net/manual/en/function.openssl-get-cipher-methods.php * @param bool $aliases [optional]

* Set to true if cipher aliases should be included within the * returned array. *

* @return array An array of available cipher methods. */ function openssl_get_cipher_methods(bool $aliases = false): array {} /** * Computes shared secret for public value of remote DH key and local DH key * @link https://php.net/manual/en/function.openssl-dh-compute-key.php * @param string $public_key

* Public key *

* @param OpenSSLAsymmetricKey|resource $private_key

* DH key *

* @return string|false computed key on success or false on failure. * @since 5.3 */ function openssl_dh_compute_key(string $public_key, #[LanguageLevelTypeAware(["8.0" => "OpenSSLAsymmetricKey"], default: "resource")] $private_key): string|false {} /** * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $public_key * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key * @param int $key_length * @return string|false * @since 7.3 */ function openssl_pkey_derive( $public_key, #[LanguageLevelTypeAware(['8.0' => 'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'], default: 'resource|array|string')] $private_key, int $key_length = 0 ): string|false {} /** * Generates a string of pseudo-random bytes, with the number of bytes determined by the length parameter. *

It also indicates if a cryptographically strong algorithm was used to produce the pseudo-random bytes, * and does this via the optional crypto_strong parameter. It's rare for this to be FALSE, but some systems may be broken or old.

* @link https://php.net/manual/en/function.openssl-random-pseudo-bytes.php * @param positive-int $length

* The length of the desired string of bytes. Must be a positive integer. PHP will * try to cast this parameter to a non-null integer to use it. *

* @param bool &$strong_result [optional]

* If passed into the function, this will hold a boolean value that determines * if the algorithm used was "cryptographically strong", e.g., safe for usage with GPG, * passwords, etc. true if it did, otherwise false *

* @return string|false the generated string of bytes on success, or false on failure. */ #[LanguageLevelTypeAware(["7.4" => "string"], default: "string|false")] function openssl_random_pseudo_bytes(int $length, &$strong_result) {} /** * Return openSSL error message * @link https://php.net/manual/en/function.openssl-error-string.php * @return string|false an error message string, or false if there are no more error * messages to return. */ function openssl_error_string(): string|false {} /** * Retrieve the available certificate locations * @link https://php.net/manual/en/function.openssl-get-cert-locations.php * @return array an array with the available certificate locations * @since 5.6 */ #[ArrayShape([ 'default_cert_file' => 'string', 'default_cert_file_env' => 'string', 'default_cert_dir' => 'string', 'default_cert_dir_env' => 'string', 'default_private_dir' => 'string', 'default_default_cert_area' => 'string', 'ini_cafile' => 'string', 'ini_capath' => 'string' ])] function openssl_get_cert_locations(): array {} function openssl_get_curve_names(): array|false {} /** * @param string $data * @param array &$certificates * @return bool * @since 7.2 */ function openssl_pkcs7_read(string $data, &$certificates): bool {} /** * Verifies that the data block is intact, the signer is who they say they are, and returns the certs of the signers. * @param string $input_filename * @param int $flags [optional] * @param string|null $certificates [optional] * @param array $ca_info * @param string|null $untrusted_certificates_filename [optional] * @param string|null $content [optional] * @param string|null $pk7 [optional] * @param string|null $sigfile [optional] * @param int $encoding [optional] * @return bool * @since 8.0 */ function openssl_cms_verify(string $input_filename, int $flags = 0, ?string $certificates, array $ca_info = [], ?string $untrusted_certificates_filename, ?string $content, ?string $pk7, ?string $sigfile, int $encoding = OPENSSL_ENCODING_SMIME): bool {} /** * Encrypts the message in the file with the certificates and outputs the result to the supplied file. * @param string $input_filename * @param string $output_filename * @param resource|string|array $certificate * @param null|array $headers * @param int $flags * @param int $encoding * @param int $cipher_algo * @return bool * @since 8.0 */ function openssl_cms_encrypt(string $input_filename, string $output_filename, $certificate, ?array $headers, int $flags = 0, int $encoding = OPENSSL_ENCODING_SMIME, int $cipher_algo = OPENSSL_CIPHER_AES_128_CBC): bool {} /** * Signs the MIME message in the file with a cert and key and output the result to the supplied file. * @param string $input_filename * @param string $output_filename * @param OpenSSLCertificate|string $certificate * @param OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key * @param array|null $headers * @param int $flags [optional] * @param int $encoding [optional] * @param string|null $untrusted_certificates_filename [optional] * @return bool * @since 8.0 */ function openssl_cms_sign(string $input_filename, string $output_filename, OpenSSLCertificate|string $certificate, $private_key, ?array $headers, int $flags = 0, int $encoding = OPENSSL_ENCODING_SMIME, ?string $untrusted_certificates_filename): bool {} /** * Decrypts the S/MIME message in the file and outputs the results to the supplied file. * @param string $input_filename * @param string $output_filename * @param resource|string $certificate * @param resource|string|array $private_key * @param int $encoding * @return bool * @since 8.0 */ function openssl_cms_decrypt(string $input_filename, string $output_filename, $certificate, $private_key = null, int $encoding = OPENSSL_ENCODING_SMIME): bool {} /** * Exports the CMS file to an array of PEM certificates. * @param string $input_filename * @param array &$certificates * @return bool * @since 8.0 */ function openssl_cms_read(string $input_filename, &$certificates): bool {} define('OPENSSL_VERSION_TEXT', "OpenSSL 1.0.0e 6 Sep 2011"); define('OPENSSL_VERSION_NUMBER', 268435551); define('X509_PURPOSE_SSL_CLIENT', 1); define('X509_PURPOSE_SSL_SERVER', 2); define('X509_PURPOSE_NS_SSL_SERVER', 3); define('X509_PURPOSE_SMIME_SIGN', 4); define('X509_PURPOSE_SMIME_ENCRYPT', 5); define('X509_PURPOSE_CRL_SIGN', 6); define('X509_PURPOSE_ANY', 7); /** * @since 8.4 */ define('X509_PURPOSE_OCSP_HELPER', 8); /** * @since 8.4 */ define('X509_PURPOSE_TIMESTAMP_SIGN', 9); /** * Used as default algorithm by openssl_sign and * openssl_verify. * @link https://php.net/manual/en/openssl.constants.php */ define('OPENSSL_ALGO_SHA1', 1); define('OPENSSL_ALGO_MD5', 2); define('OPENSSL_ALGO_MD4', 3); define('OPENSSL_ALGO_MD2', 4); define('OPENSSL_ALGO_DSS1', 5); define('OPENSSL_ALGO_SHA224', 6); define('OPENSSL_ALGO_SHA256', 7); define('OPENSSL_ALGO_SHA384', 8); define('OPENSSL_ALGO_SHA512', 9); define('OPENSSL_ALGO_RMD160', 10); /** * When signing a message, use cleartext signing with the MIME * type "multipart/signed". This is the default * if you do not specify any flags to * openssl_pkcs7_sign. * If you turn this option off, the message will be signed using * opaque signing, which is more resistant to translation by mail relays * but cannot be read by mail agents that do not support S/MIME. * @link https://php.net/manual/en/openssl.constants.php */ define('PKCS7_DETACHED', 64); /** * Adds text/plain content type headers to encrypted/signed * message. If decrypting or verifying, it strips those headers from * the output - if the decrypted or verified message is not of MIME type * text/plain then an error will occur. * @link https://php.net/manual/en/openssl.constants.php */ define('PKCS7_TEXT', 1); /** * When verifying a message, certificates (if * any) included in the message are normally searched for the * signing certificate. With this option only the * certificates specified in the extracerts * parameter of openssl_pkcs7_verify are * used. The supplied certificates can still be used as * untrusted CAs however. * @link https://php.net/manual/en/openssl.constants.php */ define('PKCS7_NOINTERN', 16); /** * Do not verify the signers certificate of a signed * message. * @link https://php.net/manual/en/openssl.constants.php */ define('PKCS7_NOVERIFY', 32); /** * Do not chain verification of signers certificates: that is * don't use the certificates in the signed message as untrusted CAs. * @link https://php.net/manual/en/openssl.constants.php */ define('PKCS7_NOCHAIN', 8); /** * When signing a message the signer's certificate is normally * included - with this option it is excluded. This will reduce the * size of the signed message but the verifier must have a copy of the * signers certificate available locally (passed using the * extracerts to * openssl_pkcs7_verify for example). * @link https://php.net/manual/en/openssl.constants.php */ define('PKCS7_NOCERTS', 2); /** * Normally when a message is signed, a set of attributes are * included which include the signing time and the supported symmetric * algorithms. With this option they are not included. * @link https://php.net/manual/en/openssl.constants.php */ define('PKCS7_NOATTR', 256); /** * Normally the input message is converted to "canonical" format * which is effectively using CR and LF * as end of line: as required by the S/MIME specification. When this * option is present, no translation occurs. This is useful when * handling binary data which may not be in MIME format. * @link https://php.net/manual/en/openssl.constants.php */ define('PKCS7_BINARY', 128); /** * @since 8.3 */ define('PKCS7_NOOLDMIMETYPE', 1024); /** * Don't try and verify the signatures on a message * @link https://php.net/manual/en/openssl.constants.php */ define('PKCS7_NOSIGS', 4); define('OPENSSL_PKCS1_PADDING', 1); define('OPENSSL_SSLV23_PADDING', 2); define('OPENSSL_NO_PADDING', 3); define('OPENSSL_PKCS1_OAEP_PADDING', 4); define('OPENSSL_CIPHER_RC2_40', 0); define('OPENSSL_CIPHER_RC2_128', 1); define('OPENSSL_CIPHER_RC2_64', 2); define('OPENSSL_CIPHER_DES', 3); define('OPENSSL_CIPHER_3DES', 4); define('OPENSSL_KEYTYPE_RSA', 0); define('OPENSSL_KEYTYPE_DSA', 1); define('OPENSSL_KEYTYPE_DH', 2); define('OPENSSL_KEYTYPE_EC', 3); /** * @since 8.4 */ define('OPENSSL_KEYTYPE_X25519', 4); /** * @since 8.4 */ define('OPENSSL_KEYTYPE_ED25519', 5); /** * @since 8.4 */ define('OPENSSL_KEYTYPE_X448', 6); /** * @since 8.4 */ define('OPENSSL_KEYTYPE_ED448', 7); /** * Whether SNI support is available or not. * @link https://php.net/manual/en/openssl.constants.php */ define('OPENSSL_TLSEXT_SERVER_NAME', 1); // End of openssl v. /** @link https://php.net/manual/en/openssl.ciphers.php */ define('OPENSSL_CIPHER_AES_128_CBC', 5); /** @link https://php.net/manual/en/openssl.ciphers.php */ define('OPENSSL_CIPHER_AES_192_CBC', 6); /** @link https://php.net/manual/en/openssl.ciphers.php */ define('OPENSSL_CIPHER_AES_256_CBC', 7); define('OPENSSL_RAW_DATA', 1); define('OPENSSL_ZERO_PADDING', 2); define('OPENSSL_DONT_ZERO_PAD_KEY', 4); /** * @since 8.0 */ define('OPENSSL_CMS_DETACHED', 64); /** * @since 8.0 */ define('OPENSSL_CMS_TEXT', 1); /** * @since 8.0 */ define('OPENSSL_CMS_NOINTERN', 16); /** * @since 8.0 */ define('OPENSSL_CMS_NOVERIFY', 32); /** * @since 8.0 */ define('OPENSSL_CMS_NOCERTS', 2); /** * @since 8.0 */ define('OPENSSL_CMS_NOATTR', 256); /** * @since 8.0 */ define('OPENSSL_CMS_BINARY', 128); /** * @since 8.0 */ define('OPENSSL_CMS_NOSIGS', 12); /** * @since 8.0 */ define('OPENSSL_ENCODING_DER', 0); /** * @since 8.0 */ define('OPENSSL_ENCODING_SMIME', 1); /** * @since 8.0 */ define('OPENSSL_ENCODING_PEM', 2); define('OPENSSL_DEFAULT_STREAM_CIPHERS', "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:" . "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:" . "DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:" . "ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:" . "ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:" . "DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:" . "AES256-GCM-SHA384:AES128:AES256:HIGH:!SSLv2:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!RC4:!ADH"); /** * @since 8.3 */ define('OPENSSL_CMS_OLDMIMETYPE', 1024); /** * @since 8.0 */ final class OpenSSLCertificate { /** * Cannot directly construct OpenSSLCertificate, use openssl_x509_read() instead * @see openssl_x509_read() */ private function __construct() {} } /** * @since 8.0 */ final class OpenSSLCertificateSigningRequest { /** * Cannot directly construct OpenSSLCertificateSigningRequest, use openssl_csr_new() instead * @see openssl_csr_new() */ private function __construct() {} } /** * @since 8.0 */ final class OpenSSLAsymmetricKey { /** * Cannot directly construct OpenSSLAsymmetricKey, use openssl_pkey_new() instead * @see openssl_pkey_new() */ private function __construct() {} } * URI of the WSDL file or NULL if working in * non-WSDL mode. *

*

* During development, WSDL caching may be disabled by the * use of the soap.wsdl_cache_ttl php.ini setting * otherwise changes made to the WSDL file will have no effect until * soap.wsdl_cache_ttl is expired. *

* @param array $options [optional]

* An array of options. If working in WSDL mode, this parameter is optional. * If working in non-WSDL mode, the location and * uri options must be set, where location * is the URL of the SOAP server to send the request to, and uri * is the target namespace of the SOAP service. *

*

* The style and use options only work in * non-WSDL mode. In WSDL mode, they come from the WSDL file. *

*

* The soap_version option should be one of either * SOAP_1_1 or SOAP_1_2 to * select SOAP 1.1 or 1.2, respectively. If omitted, 1.1 is used. *

*

* For HTTP authentication, the login and * password options can be used to supply credentials. * For making an HTTP connection through * a proxy server, the options proxy_host, * proxy_port, proxy_login * and proxy_password are also available. * For HTTPS client certificate authentication use * local_cert and passphrase options. An * authentication may be supplied in the authentication * option. The authentication method may be either * SOAP_AUTHENTICATION_BASIC (default) or * SOAP_AUTHENTICATION_DIGEST. *

*

* The compression option allows to use compression * of HTTP SOAP requests and responses. *

*

* The encoding option defines internal character * encoding. This option does not change the encoding of SOAP requests (it is * always utf-8), but converts strings into it. *

*

* The trace option enables tracing of request so faults * can be backtraced. This defaults to FALSE *

*

* The classmap option can be used to map some WSDL * types to PHP classes. This option must be an array with WSDL types * as keys and names of PHP classes as values. *

*

* Setting the boolean trace option enables use of the * methods * SoapClient->__getLastRequest, * SoapClient->__getLastRequestHeaders, * SoapClient->__getLastResponse and * SoapClient->__getLastResponseHeaders. *

*

* The exceptions option is a boolean value defining whether * soap errors throw exceptions of type * SoapFault. *

*

* The connection_timeout option defines a timeout in seconds * for the connection to the SOAP service. This option does not define a timeout * for services with slow responses. To limit the time to wait for calls to finish the * default_socket_timeout setting * is available. *

*

* The typemap option is an array of type mappings. * Type mapping is an array with keys type_name, * type_ns (namespace URI), from_xml * (callback accepting one string parameter) and to_xml * (callback accepting one object parameter). *

*

* The cache_wsdl option is one of * WSDL_CACHE_NONE, * WSDL_CACHE_DISK, * WSDL_CACHE_MEMORY or * WSDL_CACHE_BOTH. *

*

* The user_agent option specifies string to use in * User-Agent header. *

*

* The stream_context option is a resource * for context. *

*

* The features option is a bitmask of * SOAP_SINGLE_ELEMENT_ARRAYS, * SOAP_USE_XSI_ARRAY_TYPE, * SOAP_WAIT_ONE_WAY_CALLS. *

*

* The keep_alive option is a boolean value defining whether * to send the Connection: Keep-Alive header or * Connection: close. *

*

* The ssl_method option is one of * SOAP_SSL_METHOD_TLS, * SOAP_SSL_METHOD_SSLv2, * SOAP_SSL_METHOD_SSLv3 or * SOAP_SSL_METHOD_SSLv23. *

* @since 5.0.1 * * @removed 8.0 */ public function SoapClient($wsdl, array $options = null) {} /** * SoapClient constructor * @link https://php.net/manual/en/soapclient.construct.php * @param string|null $wsdl

* URI of the WSDL file or NULL if working in * non-WSDL mode. *

*

* During development, WSDL caching may be disabled by the * use of the soap.wsdl_cache_ttl php.ini setting * otherwise changes made to the WSDL file will have no effect until * soap.wsdl_cache_ttl is expired. *

* @param array $options [optional]

* An array of options. If working in WSDL mode, this parameter is optional. * If working in non-WSDL mode, the location and * uri options must be set, where location * is the URL of the SOAP server to send the request to, and uri * is the target namespace of the SOAP service. *

*

* The style and use options only work in * non-WSDL mode. In WSDL mode, they come from the WSDL file. *

*

* The soap_version option should be one of either * SOAP_1_1 or SOAP_1_2 to * select SOAP 1.1 or 1.2, respectively. If omitted, 1.1 is used. *

*

* For HTTP authentication, the login and * password options can be used to supply credentials. * For making an HTTP connection through * a proxy server, the options proxy_host, * proxy_port, proxy_login * and proxy_password are also available. * For HTTPS client certificate authentication use * local_cert and passphrase options. An * authentication may be supplied in the authentication * option. The authentication method may be either * SOAP_AUTHENTICATION_BASIC (default) or * SOAP_AUTHENTICATION_DIGEST. *

*

* The compression option allows to use compression * of HTTP SOAP requests and responses. *

*

* The encoding option defines internal character * encoding. This option does not change the encoding of SOAP requests (it is * always utf-8), but converts strings into it. *

*

* The trace option enables tracing of request so faults * can be backtraced. This defaults to FALSE *

*

* The classmap option can be used to map some WSDL * types to PHP classes. This option must be an array with WSDL types * as keys and names of PHP classes as values. *

*

* Setting the boolean trace option enables use of the * methods * SoapClient->__getLastRequest, * SoapClient->__getLastRequestHeaders, * SoapClient->__getLastResponse and * SoapClient->__getLastResponseHeaders. *

*

* The exceptions option is a boolean value defining whether * soap errors throw exceptions of type * SoapFault. *

*

* The connection_timeout option defines a timeout in seconds * for the connection to the SOAP service. This option does not define a timeout * for services with slow responses. To limit the time to wait for calls to finish the * default_socket_timeout setting * is available. *

*

* The typemap option is an array of type mappings. * Type mapping is an array with keys type_name, * type_ns (namespace URI), from_xml * (callback accepting one string parameter) and to_xml * (callback accepting one object parameter). *

*

* The cache_wsdl option is one of * WSDL_CACHE_NONE, * WSDL_CACHE_DISK, * WSDL_CACHE_MEMORY or * WSDL_CACHE_BOTH. *

*

* The user_agent option specifies string to use in * User-Agent header. *

*

* The stream_context option is a resource * for context. *

*

* The features option is a bitmask of * SOAP_SINGLE_ELEMENT_ARRAYS, * SOAP_USE_XSI_ARRAY_TYPE, * SOAP_WAIT_ONE_WAY_CALLS. *

*

* The keep_alive option is a boolean value defining whether * to send the Connection: Keep-Alive header or * Connection: close. *

*

* The ssl_method option is one of * SOAP_SSL_METHOD_TLS, * SOAP_SSL_METHOD_SSLv2, * SOAP_SSL_METHOD_SSLv3 or * SOAP_SSL_METHOD_SSLv23. *

* @throws SoapFault A SoapFault exception will be thrown if the wsdl URI cannot be loaded. * @since 5.0.1 */ public function __construct( #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $wsdl, array $options = [] ) {} /** * @link https://php.net/manual/en/soapclient.call.php * @param string $name * @param array $args * @return mixed * @since 5.0.1 */ #[Deprecated] #[TentativeType] public function __call( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name, array $args ): mixed {} /** * Calls a SOAP function * @link https://php.net/manual/en/soapclient.soapcall.php * @param string $name

* The name of the SOAP function to call. *

* @param array $args

* An array of the arguments to pass to the function. This can be either * an ordered or an associative array. Note that most SOAP servers require * parameter names to be provided, in which case this must be an * associative array. *

* @param array $options [optional]

* An associative array of options to pass to the client. *

*

* The location option is the URL of the remote Web service. *

*

* The uri option is the target namespace of the SOAP service. *

*

* The soapaction option is the action to call. *

* @param mixed $inputHeaders [optional]

* An array of headers to be sent along with the SOAP request. *

* @param array &$outputHeaders [optional]

* If supplied, this array will be filled with the headers from the SOAP response. *

* @return mixed SOAP functions may return one, or multiple values. If only one value is returned * by the SOAP function, the return value of __soapCall will be * a simple value (e.g. an integer, a string, etc). If multiple values are * returned, __soapCall will return * an associative array of named output parameters. *

*

* On error, if the SoapClient object was constructed with the exceptions * option set to FALSE, a SoapFault object will be returned. If this * option is not set, or is set to TRUE, then a SoapFault object will * be thrown as an exception. * @throws SoapFault A SoapFault exception will be thrown if an error occurs * and the SoapClient was constructed with the exceptions option not set, or * set to TRUE. * @since 5.0.1 */ #[TentativeType] public function __soapCall( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name, array $args, #[LanguageLevelTypeAware(['8.0' => 'array|null'], default: '')] $options = null, $inputHeaders = null, &$outputHeaders = null ): mixed {} /** * Returns last SOAP request * @link https://php.net/manual/en/soapclient.getlastrequest.php * @return string|null The last SOAP request, as an XML string. * @since 5.0.1 */ #[TentativeType] public function __getLastRequest(): ?string {} /** * Returns last SOAP response * @link https://php.net/manual/en/soapclient.getlastresponse.php * @return string|null The last SOAP response, as an XML string. * @since 5.0.1 */ #[TentativeType] public function __getLastResponse(): ?string {} /** * Returns the SOAP headers from the last request * @link https://php.net/manual/en/soapclient.getlastrequestheaders.php * @return string|null The last SOAP request headers. * @since 5.0.1 */ #[TentativeType] public function __getLastRequestHeaders(): ?string {} /** * Returns the SOAP headers from the last response * @link https://php.net/manual/en/soapclient.getlastresponseheaders.php * @return string|null The last SOAP response headers. * @since 5.0.1 */ #[TentativeType] public function __getLastResponseHeaders(): ?string {} /** * Returns list of available SOAP functions * @link https://php.net/manual/en/soapclient.getfunctions.php * @return array|null The array of SOAP function prototypes, detailing the return type, * the function name and type-hinted parameters. * @since 5.0.1 */ #[TentativeType] public function __getFunctions(): ?array {} /** * Returns a list of SOAP types * @link https://php.net/manual/en/soapclient.gettypes.php * @return array|null The array of SOAP types, detailing all structures and types. * @since 5.0.1 */ #[TentativeType] public function __getTypes(): ?array {} /** * Returns a list of all cookies * @link https://php.net/manual/en/soapclient.getcookies.php * @return array The array of all cookies * @since 5.4.3 */ #[TentativeType] public function __getCookies(): array {} /** * Performs a SOAP request * @link https://php.net/manual/en/soapclient.dorequest.php * @param string $request

* The XML SOAP request. *

* @param string $location

* The URL to request. *

* @param string $action

* The SOAP action. *

* @param int $version

* The SOAP version. *

* @param bool|int $oneWay [optional]

* If $oneWay is set to 1, this method returns nothing. * Use this where a response is not expected. *

* @return string|null The XML SOAP response. * @since 5.0.1 */ #[TentativeType] public function __doRequest( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $request, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $location, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $action, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $version, #[LanguageLevelTypeAware(["8.0" => 'bool'], default: 'int')] $oneWay = false ): ?string {} /** * The __setCookie purpose * @link https://php.net/manual/en/soapclient.setcookie.php * @param string $name

* The name of the cookie. *

* @param string $value [optional]

* The value of the cookie. If not specified, the cookie will be deleted. *

* @return void No value is returned. * @since 5.0.4 */ #[TentativeType] public function __setCookie( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name, #[LanguageLevelTypeAware(["8.0" => "string|null"], default: "string")] $value ): void {} /** * Sets the location of the Web service to use * @link https://php.net/manual/en/soapclient.setlocation.php * @param string $location [optional]

* The new endpoint URL. *

* @return string|null The old endpoint URL. * @since 5.0.1 */ #[TentativeType] public function __setLocation(#[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $location = null): ?string {} /** * Sets SOAP headers for subsequent calls * @link https://php.net/manual/en/soapclient.setsoapheaders.php * @param mixed $headers

* The headers to be set. It could be SoapHeader * object or array of SoapHeader objects. * If not specified or set to NULL, the headers will be deleted. *

* @return bool TRUE on success or FALSE on failure. * @since 5.0.5 */ #[TentativeType] public function __setSoapHeaders( #[PhpStormStubsElementAvailable(from: '5.3', to: '5.6')] $headers, #[PhpStormStubsElementAvailable(from: '7.0')] $headers = null ): bool {} } /** * A class representing a variable or object for use with SOAP services. * @link https://php.net/manual/en/class.soapvar.php */ class SoapVar { /** * @var int * @since 8.1 */ public int $enc_type; /** * @var mixed * @since 8.1 */ public mixed $enc_value; /** * @var string|null * @since 8.1 */ public string|null $enc_stype; /** * @var string|null * @since 8.1 */ public string|null $enc_ns; /** * @var string|null * @since 8.1 */ public string|null $enc_name; /** * @var string|null * @since 8.1 */ public string|null $enc_namens; /** * SoapVar constructor * @link https://php.net/manual/en/soapvar.construct.php * @param mixed $data

* The data to pass or return. *

* @param int|null $encoding

* The encoding ID, one of the XSD_... constants. *

* @param string $typeName [optional]

* The type name. *

* @param string $typeNamespace [optional]

* The type namespace. *

* @param string $nodeName [optional]

* The XML node name. *

* @param string $nodeNamespace [optional]

* The XML node namespace. *

* @since 5.0.1 */ public function __construct( #[LanguageLevelTypeAware(["8.0" => 'mixed'], default: '')] $data, #[LanguageLevelTypeAware(["7.1" => "int|null"], default: "int")] $encoding, #[LanguageLevelTypeAware(["8.0" => "string|null"], default: "string")] $typeName, #[LanguageLevelTypeAware(["8.0" => 'string|null'], default: '')] $typeNamespace = null, #[LanguageLevelTypeAware(["8.0" => 'string|null'], default: '')] $nodeName = null, #[LanguageLevelTypeAware(["8.0" => 'string|null'], default: '')] $nodeNamespace = null ) {} /** * SoapVar constructor * @link https://php.net/manual/en/soapvar.construct.php * @param mixed $data

* The data to pass or return. *

* @param int|null $encoding

* The encoding ID, one of the XSD_... constants. *

* @param string $type_name [optional]

* The type name. *

* @param string $type_namespace [optional]

* The type namespace. *

* @param string $node_name [optional]

* The XML node name. *

* @param string $node_namespace [optional]

* The XML node namespace. *

* @since 5.0.1 * @removed 8.0 */ public function SoapVar($data, $encoding, $type_name = '', $type_namespace = '', $node_name = '', $node_namespace = '') {} } /** * The SoapServer class provides a server for the SOAP 1.1 and SOAP 1.2 protocols. It can be used with or without a WSDL service description. * @link https://php.net/manual/en/class.soapserver.php */ class SoapServer { /** * SoapServer constructor * @link https://php.net/manual/en/soapserver.soapserver.php * @param mixed $wsdl

* To use the SoapServer in WSDL mode, pass the URI of a WSDL file. * Otherwise, pass NULL and set the uri option to the * target namespace for the server. *

* @param array $options [optional]

* Allow setting a default SOAP version (soap_version), * internal character encoding (encoding), * and actor URI (actor). *

*

* The classmap option can be used to map some WSDL * types to PHP classes. This option must be an array with WSDL types * as keys and names of PHP classes as values. *

*

* The typemap option is an array of type mappings. * Type mapping is an array with keys type_name, * type_ns (namespace URI), from_xml * (callback accepting one string parameter) and to_xml * (callback accepting one object parameter). *

*

* The cache_wsdl option is one of * WSDL_CACHE_NONE, * WSDL_CACHE_DISK, * WSDL_CACHE_MEMORY or * WSDL_CACHE_BOTH. *

*

* There is also a features option which can be set to * SOAP_WAIT_ONE_WAY_CALLS, * SOAP_SINGLE_ELEMENT_ARRAYS, * SOAP_USE_XSI_ARRAY_TYPE. *

* @since 5.0.1 */ public function __construct( #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $wsdl, array $options = [] ) {} /** * SoapServer constructor * @link https://php.net/manual/en/soapserver.soapserver.php * @param mixed $wsdl

* To use the SoapServer in WSDL mode, pass the URI of a WSDL file. * Otherwise, pass NULL and set the uri option to the * target namespace for the server. *

* @param array $options [optional]

* Allow setting a default SOAP version (soap_version), * internal character encoding (encoding), * and actor URI (actor). *

*

* The classmap option can be used to map some WSDL * types to PHP classes. This option must be an array with WSDL types * as keys and names of PHP classes as values. *

*

* The typemap option is an array of type mappings. * Type mapping is an array with keys type_name, * type_ns (namespace URI), from_xml * (callback accepting one string parameter) and to_xml * (callback accepting one object parameter). *

*

* The cache_wsdl option is one of * WSDL_CACHE_NONE, * WSDL_CACHE_DISK, * WSDL_CACHE_MEMORY or * WSDL_CACHE_BOTH. *

*

* There is also a features option which can be set to * SOAP_WAIT_ONE_WAY_CALLS, * SOAP_SINGLE_ELEMENT_ARRAYS, * SOAP_USE_XSI_ARRAY_TYPE. *

* @since 5.0.1 * @removed 8.0 */ public function SoapServer($wsdl, array $options = null) {} /** * Sets SoapServer persistence mode * @link https://php.net/manual/en/soapserver.setpersistence.php * @param int $mode

* One of the SOAP_PERSISTENCE_XXX constants. *

*

* SOAP_PERSISTENCE_REQUEST - SoapServer data does not persist between * requests. This is the default behavior of any SoapServer * object after setClass is called. *

*

* SOAP_PERSISTENCE_SESSION - SoapServer data persists between requests. * This is accomplished by serializing the SoapServer class data into * $_SESSION['_bogus_session_name'], because of this * session_start must be called before this persistence mode is set. *

* @return void No value is returned. * @since 5.1.2 */ #[TentativeType] public function setPersistence(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $mode): void {} /** * Sets the class which handles SOAP requests * @link https://php.net/manual/en/soapserver.setclass.php * @param string $class

* The name of the exported class. *

* @param mixed ...$args [optional] These optional parameters will be passed to the default class constructor during object creation. * @return void No value is returned. * @since 5.0.1 */ #[TentativeType] public function setClass( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $class, #[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] ...$args ): void {} /** * Sets the object which will be used to handle SOAP requests * @link https://php.net/manual/en/soapserver.setobject.php * @param object $object

* The object to handle the requests. *

* @return void No value is returned. */ #[TentativeType] public function setObject(#[LanguageLevelTypeAware(['8.0' => 'object'], default: '')] $object): void {} /** * Adds one or more functions to handle SOAP requests * @link https://php.net/manual/en/soapserver.addfunction.php * @param mixed $functions

* To export one function, pass the function name into this parameter as * a string. *

*

* To export several functions, pass an array of function names. *

*

* To export all the functions, pass a special constant SOAP_FUNCTIONS_ALL. *

*

* functions must receive all input arguments in the same * order as defined in the WSDL file (They should not receive any output parameters * as arguments) and return one or more values. To return several values they must * return an array with named output parameters. *

* @return void No value is returned. * @since 5.0.1 */ #[TentativeType] public function addFunction($functions): void {} /** * Returns list of defined functions * @link https://php.net/manual/en/soapserver.getfunctions.php * @return array An array of the defined functions. * @since 5.0.1 */ #[TentativeType] public function getFunctions(): array {} /** * Handles a SOAP request * @link https://php.net/manual/en/soapserver.handle.php * @param string $request [optional]

* The SOAP request. If this argument is omitted, the request is assumed to be * in the raw POST data of the HTTP request. *

* @return void No value is returned. * @since 5.0.1 */ #[TentativeType] public function handle(#[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $request = null): void {} /** * Issue SoapServer fault indicating an error * @link https://php.net/manual/en/soapserver.fault.php * @param string $code

* The error code to return *

* @param string $string

* A brief description of the error *

* @param string $actor [optional]

* A string identifying the actor that caused the fault. *

* @param string $details [optional]

* More details of the fault *

* @param string $name [optional]

* The name of the fault. This can be used to select a name from a WSDL file. *

* @return void No value is returned. * @since 5.0.1 */ #[TentativeType] public function fault( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $code, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $string, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $actor = '', #[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $details = null, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name = '' ): void {} /** * Add a SOAP header to the response * @link https://php.net/manual/en/soapserver.addsoapheader.php * @param SoapHeader $header

* The header to be returned. *

* @return void No value is returned. * @since 5.0.1 */ #[TentativeType] public function addSoapHeader(SoapHeader $header): void {} } /** * Represents a SOAP fault. * @link https://php.net/manual/en/class.soapfault.php */ class SoapFault extends Exception { /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string|null'], default: '')] public $faultcode; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $faultstring; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string|null'], default: '')] public $faultactor; /** * @var mixed */ #[LanguageLevelTypeAware(['8.1' => 'mixed'], default: '')] public $detail; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $faultname; /** * @var mixed */ #[LanguageLevelTypeAware(['8.1' => 'mixed'], default: '')] public $headerfault; /** * @var string|null * @since 8.1 */ public string|null $faultcodens; /** * @var string|null * @since 8.1 */ public string|null $_name; /** * SoapFault constructor * @link https://php.net/manual/en/soapfault.soapfault.php * @param string $code

* The error code of the SoapFault. *

* @param string $string

* The error message of the SoapFault. *

* @param string $actor [optional]

* A string identifying the actor that caused the error. *

* @param mixed $details [optional]

* More details about the cause of the error. *

* @param string $name [optional]

* Can be used to select the proper fault encoding from WSDL. *

* @param mixed $headerFault [optional]

* Can be used during SOAP header handling to report an error in the * response header. *

* @since 5.0.1 */ #[Pure] public function __construct( #[LanguageLevelTypeAware(['8.0' => 'array|string|null'], default: '')] $code, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $string, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $actor = null, #[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $details = null, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $name = null, #[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $headerFault = null ) {} /** * SoapFault constructor * @link https://php.net/manual/en/soapfault.soapfault.php * @param string $faultcode

* The error code of the SoapFault. *

* @param string $faultstring

* The error message of the SoapFault. *

* @param string $faultactor [optional]

* A string identifying the actor that caused the error. *

* @param string $detail [optional]

* More details about the cause of the error. *

* @param string $faultname [optional]

* Can be used to select the proper fault encoding from WSDL. *

* @param mixed $headerfault [optional]

* Can be used during SOAP header handling to report an error in the * response header. *

* @since 5.0.1 * @removed 8.0 */ public function SoapFault($faultcode, $faultstring, $faultactor = null, $detail = null, $faultname = null, $headerfault = null) {} /** * Obtain a string representation of a SoapFault * @link https://php.net/manual/en/soapfault.tostring.php * @return string A string describing the SoapFault. * @since 5.0.1 */ #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] public function __toString() {} } /** * Represents parameter to a SOAP call. * @link https://php.net/manual/en/class.soapparam.php */ class SoapParam { /** * @var string * @since 8.1 */ public string $param_name; /** * @var mixed * @since 8.1 */ public mixed $param_data; /** * SoapParam constructor * @link https://php.net/manual/en/soapparam.soapparam.php * @param mixed $data

* The data to pass or return. This parameter can be passed directly as PHP * value, but in this case it will be named as paramN and * the SOAP service may not understand it. *

* @param string $name

* The parameter name. *

* @since 5.0.1 */ public function __construct( #[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $data, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name ) {} /** * SoapParam constructor * @link https://php.net/manual/en/soapparam.soapparam.php * @param mixed $data

* The data to pass or return. This parameter can be passed directly as PHP * value, but in this case it will be named as paramN and * the SOAP service may not understand it. *

* @param string $name

* The parameter name. *

* @since 5.0.1 * @removed 8.0 */ public function SoapParam($data, $name) {} } /** * Represents a SOAP header. * @link https://php.net/manual/en/class.soapheader.php */ class SoapHeader { /** * @var string * @since 8.1 */ public string $namespace; /** * @var string * @since 8.1 */ public string $name; /** * @var mixed * @since 8.1 */ public mixed $data; /** * @var bool * @since 8.1 */ public bool $mustUnderstand; /** * @var string|int|null * @since 8.1 */ public string|int|null $actor; /** * SoapHeader constructor * @link https://www.php.net/manual/en/soapheader.construct.php * @param string $namespace

* The namespace of the SOAP header element. *

* @param string $name

* The name of the SoapHeader object. *

* @param mixed $data [optional]

* A SOAP header's content. It can be a PHP value or a * SoapVar object. *

* @param bool $mustUnderstand [optional] * @param string $actor [optional]

* Value of the actor attribute of the SOAP header * element. *

* @since 5.0.1 */ public function __construct( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $namespace, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name, #[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $data, #[LanguageLevelTypeAware(['8.0' => 'bool'], default: '')] $mustUnderstand = false, #[LanguageLevelTypeAware(['8.0' => 'string|int|null'], default: '')] $actor = null ) {} /** * SoapHeader constructor * @link https://php.net/manual/en/soapheader.soapheader.php * @param string $namespace

* The namespace of the SOAP header element. *

* @param string $name

* The name of the SoapHeader object. *

* @param mixed $data [optional]

* A SOAP header's content. It can be a PHP value or a * SoapVar object. *

* @param bool $mustunderstand [optional] * @param string $actor [optional]

* Value of the actor attribute of the SOAP header * element. *

* @since 5.0.1 * @removed 8.0 */ public function SoapHeader($namespace, $name, $data = null, $mustunderstand = false, $actor = null) {} } /** * Set whether to use the SOAP error handler * @link https://php.net/manual/en/function.use-soap-error-handler.php * @param bool $enable [optional]

* Set to TRUE to send error details to clients. *

* @return bool the original value. */ function use_soap_error_handler(bool $enable = true): bool {} /** * Checks if a SOAP call has failed * @link https://php.net/manual/en/function.is-soap-fault.php * @param mixed $object

* The object to test. *

* @return bool This will return TRUE on error, and FALSE otherwise. */ function is_soap_fault(mixed $object): bool {} define('SOAP_1_1', 1); define('SOAP_1_2', 2); define('SOAP_PERSISTENCE_SESSION', 1); define('SOAP_PERSISTENCE_REQUEST', 2); define('SOAP_FUNCTIONS_ALL', 999); define('SOAP_ENCODED', 1); define('SOAP_LITERAL', 2); define('SOAP_RPC', 1); define('SOAP_DOCUMENT', 2); define('SOAP_ACTOR_NEXT', 1); define('SOAP_ACTOR_NONE', 2); define('SOAP_ACTOR_UNLIMATERECEIVER', 3); define('SOAP_COMPRESSION_ACCEPT', 32); define('SOAP_COMPRESSION_GZIP', 0); define('SOAP_COMPRESSION_DEFLATE', 16); define('SOAP_AUTHENTICATION_BASIC', 0); define('SOAP_AUTHENTICATION_DIGEST', 1); define('UNKNOWN_TYPE', 999998); define('XSD_STRING', 101); define('XSD_BOOLEAN', 102); define('XSD_DECIMAL', 103); define('XSD_FLOAT', 104); define('XSD_DOUBLE', 105); define('XSD_DURATION', 106); define('XSD_DATETIME', 107); define('XSD_TIME', 108); define('XSD_DATE', 109); define('XSD_GYEARMONTH', 110); define('XSD_GYEAR', 111); define('XSD_GMONTHDAY', 112); define('XSD_GDAY', 113); define('XSD_GMONTH', 114); define('XSD_HEXBINARY', 115); define('XSD_BASE64BINARY', 116); define('XSD_ANYURI', 117); define('XSD_QNAME', 118); define('XSD_NOTATION', 119); define('XSD_NORMALIZEDSTRING', 120); define('XSD_TOKEN', 121); define('XSD_LANGUAGE', 122); define('XSD_NMTOKEN', 123); define('XSD_NAME', 124); define('XSD_NCNAME', 125); define('XSD_ID', 126); define('XSD_IDREF', 127); define('XSD_IDREFS', 128); define('XSD_ENTITY', 129); define('XSD_ENTITIES', 130); define('XSD_INTEGER', 131); define('XSD_NONPOSITIVEINTEGER', 132); define('XSD_NEGATIVEINTEGER', 133); define('XSD_LONG', 134); define('XSD_INT', 135); define('XSD_SHORT', 136); define('XSD_BYTE', 137); define('XSD_NONNEGATIVEINTEGER', 138); define('XSD_UNSIGNEDLONG', 139); define('XSD_UNSIGNEDINT', 140); define('XSD_UNSIGNEDSHORT', 141); define('XSD_UNSIGNEDBYTE', 142); define('XSD_POSITIVEINTEGER', 143); define('XSD_NMTOKENS', 144); define('XSD_ANYTYPE', 145); define('XSD_ANYXML', 147); define('APACHE_MAP', 200); define('SOAP_ENC_OBJECT', 301); define('SOAP_ENC_ARRAY', 300); define('XSD_1999_TIMEINSTANT', 401); define('XSD_NAMESPACE', "http://www.w3.org/2001/XMLSchema"); define('XSD_1999_NAMESPACE', "http://www.w3.org/1999/XMLSchema"); define('SOAP_SINGLE_ELEMENT_ARRAYS', 1); define('SOAP_WAIT_ONE_WAY_CALLS', 2); define('SOAP_USE_XSI_ARRAY_TYPE', 4); define('WSDL_CACHE_NONE', 0); define('WSDL_CACHE_DISK', 1); define('WSDL_CACHE_MEMORY', 2); define('WSDL_CACHE_BOTH', 3); /** * @link https://php.net/manual/en/soap.constants.php * @since 5.5 */ define('SOAP_SSL_METHOD_TLS', 0); /** * @link https://php.net/manual/en/soap.constants.php * @since 5.5 */ define('SOAP_SSL_METHOD_SSLv2', 1); /** * @link https://php.net/manual/en/soap.constants.php * @since 5.5 */ define('SOAP_SSL_METHOD_SSLv3', 2); /** * @link https://php.net/manual/en/soap.constants.php * @since 5.5 */ define('SOAP_SSL_METHOD_SSLv23', 3); // End of soap v. value pairs in increasing key order, but not necessarily continuous. * @return float the predicted value. This will be a class label in the case of classification, a real value in the case of regression. Throws SVMException on error * @throws SVMException Throws SVMException on error * @link https://www.php.net/manual/en/svmmodel.predict-probability.php */ public function predict_probability(array $data): float {} /** * Predict a value for previously unseen data * * This function accepts an array of data and attempts to predict the class or regression value based on the model extracted from previously trained data. * @param array $data The array to be classified. This should be a series of key => value pairs in increasing key order, but not necessarily continuous. * @return float the predicted value. This will be a class label in the case of classification, a real value in the case of regression. Throws SVMException on error * @throws SVMException Throws SVMException on error * @link https://www.php.net/manual/en/svmmodel.predict.php */ public function predict(array $data): float {} /** * Save a model to a file, for later use * @param string $filename The file to save the model to. * @return bool Throws SVMException on error. Returns true on success. * @throws SVMException Throws SVMException on error * @link https://www.php.net/manual/en/svmmodel.save.php */ public function save(string $filename): bool {} } data pairs. A URL to a file containing a SVM Light formatted problem, with the each line being a new training example, the start of each line containing the class (1, -1) then a series of tab separated data values shows as key:value. A opened stream pointing to a data source formatted as in the file above. * @param array|null $weights Weights are an optional set of weighting parameters for the different classes, to help account for unbalanced training sets. For example, if the classes were 1 and -1, and -1 had significantly more example than one, the weight for -1 could be 0.5. Weights should be in the range 0-1. * @return SVMModel Returns an SVMModel that can be used to classify previously unseen data. Throws SVMException on error * @throws SMVException * @link https://www.php.net/manual/en/svm.train.php */ public function train(array $problem, array $weights = null): SVMModel {} } ) constants. Otherwise it will * return the string that Redis returns. * * @param mixed $key * @return Cluster|int|string|false */ #[\Relay\Attributes\RedisCommand] public function type(mixed $key): Cluster|int|string|bool {} /** * Removes the specified keys without blocking Redis. * * @param mixed $keys,... * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function unlink(mixed ...$keys): Cluster|int|false {} /** * Unsubscribes from the given channels, or from all of them if none is given. * * @param array $channels * @return bool */ #[\Relay\Attributes\RedisCommand] public function unsubscribe(array $channels = []): bool {} /** * Flushes all the previously watched keys for a transaction. * If you call EXEC or DISCARD, there's no need to manually call UNWATCH. * * @return Cluster|bool */ #[\Relay\Attributes\RedisCommand] public function unwatch(): Cluster|bool {} /** * Marks the given keys to be watched for conditional execution of a transaction. * * @param mixed $key * @param mixed $other_keys,... * @return Cluster|bool */ #[\Relay\Attributes\RedisCommand] public function watch(mixed $key, mixed ...$other_keys): Cluster|bool {} /** * Acknowledge one or more IDs as having been processed by the consumer group. * * @param mixed $key * @param string $group * @param array $ids * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function xack(mixed $key, string $group, array $ids): Cluster|int|false {} /** * Append a message to a stream. * * @param string $key * @param string $id * @param int $maxlen * @param bool $approx * @param bool $nomkstream * @return Cluster|string|false */ #[\Relay\Attributes\RedisCommand] public function xadd(mixed $key, string $id, array $values, int $maxlen = 0, bool $approx = false, bool $nomkstream = false): Cluster|string|false {} /** * Automatically take ownership of stream message(s) by metrics * * @param string $key * @param string $group * @param string $consumer * @param int $min_idle * @param string $start * @param int $count * @param bool $justid * @return Cluster|array|bool */ #[\Relay\Attributes\RedisCommand] public function xautoclaim(mixed $key, string $group, string $consumer, int $min_idle, string $start, int $count = -1, bool $justid = false): Cluster|bool|array {} /** * Claim ownership of stream message(s). * * @param string $key * @param string $group * @param string $consumer * @param int $min_idle * @param array $ids * @param array $options * @return Cluster|array|bool */ #[\Relay\Attributes\RedisCommand] public function xclaim(mixed $key, string $group, string $consumer, int $min_idle, array $ids, array $options): Cluster|array|bool {} /** * Remove one or more specific IDs from a stream. * * @param string $key * @param array $ids * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function xdel(mixed $key, array $ids): Cluster|int|false {} /** * Perform utility operations having to do with consumer groups * * @param string $operation * @param mixed $key * @param string $group * @param string $id_or_consumer * @param bool $mkstream * @param int $entries_read * @return mixed */ #[\Relay\Attributes\RedisCommand] public function xgroup(string $operation, mixed $key = null, string $group = null, string $id_or_consumer = null, bool $mkstream = false, int $entries_read = -2): mixed {} /** * Retrieve information about a stream key. * * @param string $operation * @param string|null $arg1 * @param string|null $arg2 * @param int $count * @return mixed */ #[\Relay\Attributes\RedisCommand] public function xinfo(string $operation, string|null $arg1 = null, string|null $arg2 = null, int $count = -1): mixed {} /** * Get the length of a stream. * * @param mixed $key * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function xlen(mixed $key): Cluster|int|false {} /** * Query pending entries in a stream. * * @param string $key * @param string $group * @param string|null $start * @param string|null $end * @param int $count * @param string|null $consumer * @param int $idle * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function xpending(mixed $key, string $group, string|null $start = null, string|null $end = null, int $count = -1, string|null $consumer = null, int $idle = 0): Cluster|array|false {} /** * Lists elements in a stream. * * @param mixed $key * @param string $start * @param string $end * @param int $count = -1 * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function xrange(mixed $key, string $start, string $end, int $count = -1): Cluster|array|false {} /** * Read messages from a stream. * * @param array $streams * @param int $count * @param int $block * @return Cluster|array|bool|null */ #[\Relay\Attributes\RedisCommand] public function xread(array $streams, int $count = -1, int $block = -1): Cluster|array|bool|null {} /** * Read messages from a stream using a consumer group. * * @param mixed $key * @param string $consumer * @param array $streams * @param int $count * @param int $block * @return Cluster|array|bool|null */ #[\Relay\Attributes\RedisCommand] public function xreadgroup(mixed $key, string $consumer, array $streams, int $count = 1, int $block = 1): Cluster|array|bool|null {} /** * Get a range of entries from a STREAM ke in reverse chronological order. * * @param mixed $key * @param string $end * @param string $start * @param int $count * @return Cluster|array|bool */ #[\Relay\Attributes\RedisCommand] public function xrevrange(mixed $key, string $end, string $start, int $count = -1): Cluster|array|bool {} /** * Truncate a STREAM key in various ways. * * @param mixed $key * @param string $threshold * @param bool $approx * @param bool $minid * @param int $limit * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function xtrim(mixed $key, string $threshold, bool $approx = false, bool $minid = false, int $limit = -1): Cluster|int|false {} /** * Adds all the specified members with the specified scores to the sorted set stored at key. * * @param mixed $key * @param mixed $args,... * @return mixed */ #[\Relay\Attributes\RedisCommand] public function zadd(mixed $key, mixed ...$args): mixed {} /** * Returns the sorted set cardinality (number of elements) of the sorted set stored at key. * * @param mixed $key * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function zcard(mixed $key): Cluster|int|false {} /** * Returns the number of elements in the sorted set at key with a score between min and max. * * @param mixed $key * @param mixed $min * @param mixed $max * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function zcount(mixed $key, mixed $min, mixed $max): Cluster|int|false {} /** * This command is similar to ZDIFFSTORE, but instead of storing the * resulting sorted set, it is returned to the client. * * @param array $keys * @param array|null $options * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function zdiff(array $keys, array|null $options = null): Cluster|array|false {} /** * Computes the difference between the first and all successive * input sorted sets and stores the result in destination. * * @param mixed $dstkey * @param array $keys * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function zdiffstore(mixed $dstkey, array $keys): Cluster|int|false {} /** * Increments the score of member in the sorted set stored at key by increment. * * @param mixed $key * @param float $score * @param mixed $member * @return Cluster|float|false */ #[\Relay\Attributes\RedisCommand] public function zincrby(mixed $key, float $score, mixed $member): Cluster|float|false {} /** * This command is similar to ZINTERSTORE, but instead of storing * the resulting sorted set, it is returned to the client. * * @param array $keys * @param array|null $weights * @param mixed $options * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function zinter(array $keys, array|null $weights = null, mixed $options = null): Cluster|array|false {} /** * Intersect multiple sorted sets and return the cardinality of the result. * * @param array $keys * @param int $limit * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function zintercard(array $keys, int $limit = -1): Cluster|int|false {} /** * Computes the intersection of numkeys sorted sets given by the * specified keys, and stores the result in destination. * * @param mixed $dstkey * @param array $keys * @param array|null $weights * @param mixed $options * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function zinterstore(mixed $dstkey, array $keys, array|null $weights = null, mixed $options = null): Cluster|int|false {} /** * When all the elements in a sorted set are inserted with the same score, * in order to force lexicographical ordering, this command returns the * number of elements in the sorted set at key with a value between min and max. * * @param mixed $key * @param mixed $min * @param mixed $max * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function zlexcount(mixed $key, mixed $min, mixed $max): Cluster|int|false {} /** * Pops one or more elements, that are member-score pairs, from the * first non-empty sorted set in the provided list of key names. * * @param array $keys * @param string $from * @param int $count * @return Cluster|array|null|false */ #[\Relay\Attributes\RedisCommand] public function zmpop(array $keys, string $from, int $count = 1): Cluster|array|null|false {} /** * Returns the scores associated with the specified members in the sorted set stored at key. * * @param mixed $key * @param mixed $members,... * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function zmscore(mixed $key, mixed ...$members): Cluster|array|false {} /** * Removes and returns up to count members with the highest * scores in the sorted set stored at key. * * @param mixed $key * @param int $count * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function zpopmax(mixed $key, int $count = 1): Cluster|array|false {} /** * Removes and returns up to count members with the lowest * scores in the sorted set stored at key. * * @param mixed $key * @param int $count * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function zpopmin(mixed $key, int $count = 1): Cluster|array|false {} /** * When called with just the key argument, return a random element from the sorted set value stored at key. * If the provided count argument is positive, return an array of distinct elements. * * @param mixed $key * @param array|null $options * @return mixed */ #[\Relay\Attributes\RedisCommand] public function zrandmember(mixed $key, array|null $options = null): mixed {} /** * Returns the specified range of elements in the sorted set stored at key. * * @param mixed $key * @param string $start * @param string $end * @param mixed $options * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function zrange(mixed $key, string $start, string $end, mixed $options = null): Cluster|array|false {} /** * When all the elements in a sorted set are inserted with the same score, * in order to force lexicographical ordering, this command returns all * the elements in the sorted set at key with a value between min and max. * * @param mixed $key * @param mixed $min * @param mixed $max * @param int $offset * @param int $count * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function zrangebylex(mixed $key, mixed $min, mixed $max, int $offset = -1, int $count = -1): Cluster|array|false {} /** * Returns all the elements in the sorted set at key with a score between * min and max (including elements with score equal to min or max). * * @param mixed $key * @param mixed $start * @param mixed $end * @param mixed $options * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function zrangebyscore(mixed $key, mixed $start, mixed $end, mixed $options = null): Cluster|array|false {} /** * Returns all the elements in the sorted set at key with a score between * max and min (including elements with score equal to max or min). * * @param mixed $dstkey * @param mixed $srckey * @param mixed $start * @param mixed $end * @param mixed $options * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function zrangestore(mixed $dstkey, mixed $srckey, mixed $start, mixed $end, mixed $options = null): Cluster|int|false {} /** * Returns the rank of member in the sorted set stored at key, with the scores * ordered from low to high. The rank (or index) is 0-based, which means * that the member with the lowest score has rank 0. * * @param mixed $key * @param mixed $rank * @param bool $withscore * @return Cluster|array|int|false */ #[\Relay\Attributes\RedisCommand] public function zrank(mixed $key, mixed $rank, bool $withscore = false): Cluster|array|int|false {} /** * Removes the specified members from the sorted set stored at key. * Non existing members are ignored. * * @param mixed $key * @param mixed $args,... * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function zrem(mixed $key, mixed ...$args): Cluster|int|false {} /** * When all the elements in a sorted set are inserted with the same score, * in order to force lexicographical ordering, this command removes all * elements in the sorted set stored at key between the * lexicographical range specified by min and max. * * @param mixed $key * @param mixed $min * @param mixed $max * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function zremrangebylex(mixed $key, mixed $min, mixed $max): Cluster|int|false {} /** * Removes all elements in the sorted set stored at key with rank between * start and stop. Both start and stop are 0 -based indexes with 0 being * the element with the lowest score. * * @param mixed $key * @param int $start * @param int $end * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function zremrangebyrank(mixed $key, int $start, int $end): Cluster|int|false {} /** * Removes all elements in the sorted set stored at key with * a score between min and max (inclusive). * * @param mixed $key * @param mixed $min * @param mixed $max * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function zremrangebyscore(mixed $key, mixed $min, mixed $max): Cluster|int|false {} /** * Returns the specified range of elements in the sorted set stored at key. * * @param mixed $key * @param int $start * @param int $end * @param mixed $options * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function zrevrange(mixed $key, int $start, int $end, mixed $options = null): Cluster|array|false {} /** * When all the elements in a sorted set are inserted with the same score, * in order to force lexicographical ordering, this command returns all * the elements in the sorted set at key with a value between max and min. * * @param mixed $key * @param mixed $max * @param mixed $min * @param int $offset * @param int $count * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function zrevrangebylex(mixed $key, mixed $max, mixed $min, int $offset = -1, int $count = -1): Cluster|array|false {} /** * Returns all the elements in the sorted set at key with a score between * max and min (including elements with score equal to max or min). * * @param mixed $key * @param mixed $start * @param mixed $end * @param mixed $options * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function zrevrangebyscore(mixed $key, mixed $start, mixed $end, mixed $options = null): Cluster|array|false {} /** * Returns the rank of member in the sorted set stored at key, with the scores * ordered from high to low. The rank (or index) is 0-based, which means * that the member with the highest score has rank 0. * * @param mixed $key * @param mixed $rank * @param bool $withscore * @return Cluster|array|int|false */ #[\Relay\Attributes\RedisCommand] public function zrevrank(mixed $key, mixed $rank, bool $withscore = false): Cluster|array|int|false {} /** * Iterates elements of Sorted Set types and their associated scores. * * @param mixed $key * @param mixed $iterator * @param mixed $match * @param int $count * @return array|false */ #[\Relay\Attributes\RedisCommand] public function zscan(mixed $key, mixed &$iterator, mixed $match = null, int $count = 0): array|false {} /** * Returns the score of member in the sorted set at key. * * @param mixed $key * @param mixed $member * @return Cluster|float|false */ #[\Relay\Attributes\RedisCommand] public function zscore(mixed $key, mixed $member): Cluster|float|false {} /** * This command is similar to ZUNIONSTORE, but instead of storing * the resulting sorted set, it is returned to the client. * * @param array $keys * @param array|null $weights * @param mixed $options * @return Cluster|array|false */ #[\Relay\Attributes\RedisCommand] public function zunion(array $keys, array|null $weights = null, mixed $options = null): Cluster|array|false {} /** * Computes the union of numkeys sorted sets given by the * specified keys, and stores the result in destination. * * @param mixed $dstkey * @param array $keys * @param array|null $weights * @param mixed $options * @return Cluster|int|false */ #[\Relay\Attributes\RedisCommand] public function zunionstore(mixed $dstkey, array $keys, array|null $weights = null, mixed $options = null): Cluster|int|false {} } ) constants. Otherwise it will * return the string that Redis returns. * * @param mixed $key * @return Relay|int|string|false */ #[\Relay\Attributes\RedisCommand] public function type(mixed $key): Relay|int|string|bool {} /** * Atomically returns and removes the first/last element of the list * stored at source, and pushes the element at the first/last * element of the list stored at destination. * * @param mixed $srckey * @param mixed $dstkey * @param string $srcpos * @param string $dstpos * @return Relay|string|null|false */ #[\Relay\Attributes\RedisCommand] public function lmove(mixed $srckey, mixed $dstkey, string $srcpos, string $dstpos): Relay|string|null|false {} /** * BLMOVE is the blocking variant of LMOVE. When source contains elements, * this command behaves exactly like LMOVE. When used inside a * MULTI/EXEC block, this command behaves exactly like LMOVE. * * @param mixed $srckey * @param mixed $dstkey * @param string $srcpos * @param string $dstpos * @param float $timeout * @return Relay|string|null|false */ #[\Relay\Attributes\RedisCommand] public function blmove(mixed $srckey, mixed $dstkey, string $srcpos, string $dstpos, float $timeout): Relay|string|null|false {} /** * Returns the specified elements of the list stored at key. * * @param mixed $key * @param int $start * @param int $stop * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function lrange(mixed $key, int $start, int $stop): Relay|array|false {} /** * Insert all the specified values at the head of the list stored at key. * * @param mixed $key * @param mixed $mem * @param mixed $mems,... * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function lpush(mixed $key, mixed $mem, mixed ...$mems): Relay|int|false {} /** * Insert all the specified values at the tail of the list stored at key. * * @param mixed $key * @param mixed $mem * @param mixed $mems,... * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function rpush(mixed $key, mixed $mem, mixed ...$mems): Relay|int|false {} /** * Inserts specified values at the head of the list stored at key, * only if key already exists and holds a list. * * @param mixed $key * @param mixed $mem * @param mixed $mems,... * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function lpushx(mixed $key, mixed $mem, mixed ...$mems): Relay|int|false {} /** * Inserts specified values at the tail of the list stored at key, * only if key already exists and holds a list. * * @param mixed $key * @param mixed $mem * @param mixed $mems,... * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function rpushx(mixed $key, mixed $mem, mixed ...$mems): Relay|int|false {} /** * Sets the list element at index to element. * * @param mixed $key * @param int $index * @param mixed $mem * @return Relay|bool */ #[\Relay\Attributes\RedisCommand] public function lset(mixed $key, int $index, mixed $mem): Relay|bool {} /** * Removes and returns the first elements of the list stored at key. * * @param mixed $key * @param int $count * @return mixed */ #[\Relay\Attributes\RedisCommand] public function lpop(mixed $key, int $count = 1): mixed {} /** * The command returns the index of matching elements inside a Redis list. * * @param mixed $key * @param mixed $value * @param array $options * @return Relay|int|array|false|null */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function lpos(mixed $key, mixed $value, ?array $options = null): Relay|int|array|false|null {} /** * Removes and returns the last elements of the list stored at key. * * @param mixed $key * @param int $count * @return mixed */ #[\Relay\Attributes\RedisCommand] public function rpop(mixed $key, int $count = 1): mixed {} /** * Atomically returns and removes the last element (tail) of the list stored at source, * and pushes the element at the first element (head) of the list stored at destination. * * @param mixed $source * @param mixed $dest * @return mixed */ #[\Relay\Attributes\RedisCommand] public function rpoplpush(mixed $source, mixed $dest): mixed {} /** * Atomically returns and removes the last element (tail) of the list stored at source, * and pushes the element at the first element (head) of the list stored at destination. * This command will block for an element up to the provided timeout. * * @param mixed $source * @param mixed $dest * @param float $timeout * @return mixed */ #[\Relay\Attributes\RedisCommand] public function brpoplpush(mixed $source, mixed $dest, float $timeout): mixed {} /** * BLPOP is a blocking list pop primitive. It is the blocking version of LPOP because * it blocks the connection when there are no elements to pop from any of the given lists. * * @param string|array $key * @param string|float $timeout_or_key * @param array $extra_args,... * @return Relay|array|null|false */ #[\Relay\Attributes\RedisCommand] public function blpop(string|array $key, string|float $timeout_or_key, mixed ...$extra_args): Relay|array|null|false {} /** * Pop elements from a list, or block until one is available * * @param float $timeout * @param array $keys * @param string $from * @param int $count * @return Relay|array|null|false */ #[\Relay\Attributes\RedisCommand] public function blmpop(float $timeout, array $keys, string $from, int $count = 1): Relay|array|null|false {} /** * Remove and return members with scores in a sorted set or block until one is available * * @param float $timeout * @param array $keys * @param string $from * @param int $count * @return Relay|array|null|false */ #[\Relay\Attributes\RedisCommand] public function bzmpop(float $timeout, array $keys, string $from, int $count = 1): Relay|array|null|false {} /** * Pops one or more elements from the first non-empty list key from the list of provided key names. * * @param array $keys * @param string $from * @param int $count * @return Relay|array|null|false */ #[\Relay\Attributes\RedisCommand] public function lmpop(array $keys, string $from, int $count = 1): Relay|array|null|false {} /** * Pops one or more elements, that are member-score pairs, from the * first non-empty sorted set in the provided list of key names. * * @param array $keys * @param string $from * @param int $count * @return Relay|array|null|false */ #[\Relay\Attributes\RedisCommand] public function zmpop(array $keys, string $from, int $count = 1): Relay|array|null|false {} /** * BRPOP is a blocking list pop primitive. It is the blocking version of RPOP because * it blocks the connection when there are no elements to pop from any of the given lists. * * @param string|array $key * @param string|float $timeout_or_key * @param array $extra_args,... * @return Relay|array|null|false */ #[\Relay\Attributes\RedisCommand] public function brpop(string|array $key, string|float $timeout_or_key, mixed ...$extra_args): Relay|array|null|false {} /** * BZPOPMAX is the blocking variant of the sorted set ZPOPMAX primitive. * * @param string|array $key * @param string|float $timeout_or_key * @param array $extra_args,... * @return Relay|array|null|false */ #[\Relay\Attributes\RedisCommand] public function bzpopmax(string|array $key, string|float $timeout_or_key, mixed ...$extra_args): Relay|array|null|false {} /** * BZPOPMIN is the blocking variant of the sorted set ZPOPMIN primitive. * * @param string|array $key * @param string|float $timeout_or_key * @param array $extra_args,... * @return Relay|array|null|false */ #[\Relay\Attributes\RedisCommand] public function bzpopmin(string|array $key, string|float $timeout_or_key, mixed ...$extra_args): Relay|array|null|false {} /** * This is a container command for object introspection commands. * * @param string $op * @param mixed $key * @return mixed */ #[\Relay\Attributes\RedisCommand] public function object(string $op, mixed $key): mixed {} /** * Return the positions (longitude,latitude) of all the specified members * of the geospatial index represented by the sorted set at key. * * @param mixed $key * @param mixed $members,... * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function geopos(mixed $key, mixed ...$members): Relay|array|false {} /** * Removes the first count occurrences of elements equal to element from the list stored at key. * * @param mixed $key * @param mixed $mem * @param int $count * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function lrem(mixed $key, mixed $mem, int $count = 0): Relay|int|false {} /** * Returns the element at index index in the list stored at key. * * @param mixed $key * @param int $index * @return mixed */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function lindex(mixed $key, int $index): mixed {} /** * Inserts element in the list stored at key either before or after the reference value pivot. * * @param mixed $key * @param string $op * @param mixed $pivot * @param mixed $element * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function linsert(mixed $key, string $op, mixed $pivot, mixed $element): Relay|int|false {} /** * Trim an existing list so that it will contain only the specified range of elements specified. * * @param mixed $key * @param int $start * @param int $end * @return Relay|bool */ #[\Relay\Attributes\RedisCommand] public function ltrim(mixed $key, int $start, int $end): Relay|bool {} /** * Returns the value associated with field in the hash stored at key. * * @param mixed $hash * @param mixed $member * @return mixed */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function hget(mixed $hash, mixed $member): mixed {} /** * Returns the string length of the value associated with field in the hash stored at key. * * @param mixed $hash * @param mixed $member * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function hstrlen(mixed $hash, mixed $member): Relay|int|false {} /** * Returns all fields and values of the hash stored at key. * * @param mixed $hash * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function hgetall(mixed $hash): Relay|array|false {} /** * Returns all field names in the hash stored at key. * * @param mixed $hash * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function hkeys(mixed $hash): Relay|array|false {} /** * Returns all values in the hash stored at key. * * @param mixed $hash * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function hvals(mixed $hash): Relay|array|false {} /** * Returns the values associated with the specified fields in the hash stored at key. * * @param mixed $hash * @param array $members * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function hmget(mixed $hash, array $members): Relay|array|false {} /** * When called with just the key argument, return a random field from the hash value stored at key. * * @param mixed $hash * @param array $options * @return Relay|array|string|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function hrandfield(mixed $hash, ?array $options = null): Relay|array|string|false {} /** * Sets the specified fields to their respective values in the hash stored at key. * * @param mixed $hash * @param array $members * @return Relay|bool */ #[\Relay\Attributes\RedisCommand] public function hmset(mixed $hash, array $members): Relay|bool {} /** * Returns if field is an existing field in the hash stored at key. * * @param mixed $hash * @param mixed $member * @return Relay|bool */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function hexists(mixed $hash, mixed $member): Relay|bool {} /** * Sets field in the hash stored at key to value, only if field does not yet exist. * * @param mixed $hash * @param mixed $member * @param mixed $value * @return Relay|bool */ #[\Relay\Attributes\RedisCommand] public function hsetnx(mixed $hash, mixed $member, mixed $value): Relay|bool {} /** * Sets field in the hash stored at key to value. * * @param mixed $key * @param mixed $mem * @param mixed $val * @param mixed $kvals,... * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function hset(mixed $key, mixed $mem, mixed $val, mixed ...$kvals): Relay|int|false {} /** * Removes the specified fields from the hash stored at key. * * @param mixed $key * @param mixed $mem * @param string $mems,... * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function hdel(mixed $key, mixed $mem, string ...$mems): Relay|int|false {} /** * Increments the number stored at field in the hash stored at key by increment. * * @param mixed $key * @param mixed $mem * @param int $value * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function hincrby(mixed $key, mixed $mem, int $value): Relay|int|false {} /** * Increment the specified field of a hash stored at key, and representing * a floating point number, by the specified increment. * * @param mixed $key * @param mixed $mem * @param float $value * @return Relay|float|bool */ #[\Relay\Attributes\RedisCommand] public function hincrbyfloat(mixed $key, mixed $mem, float $value): Relay|float|bool {} /** * Increments the number stored at key by one. * * @param mixed $key * @param int $by * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function incr(mixed $key, int $by = 1): Relay|int|false {} /** * Decrements the number stored at key by one. * * @param mixed $key * @param int $by * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function decr(mixed $key, int $by = 1): Relay|int|false {} /** * Increments the number stored at key by increment. * * @param mixed $key * @param int $value * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function incrby(mixed $key, int $value): Relay|int|false {} /** * Decrements the number stored at key by decrement. * * @param mixed $key * @param int $value * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function decrby(mixed $key, int $value): Relay|int|false {} /** * Increment the string representing a floating point number stored at key by the specified increment. * * @param mixed $key * @param float $value * @return Relay|float|false */ #[\Relay\Attributes\RedisCommand] public function incrbyfloat(mixed $key, float $value): Relay|float|false {} /** * Returns the members of the set resulting from the difference between the first set and all the successive sets. * * @param mixed $key * @param mixed $other_keys,... * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function sdiff(mixed $key, mixed ...$other_keys): Relay|array|false {} /** * This command is equal to SDIFF, but instead of returning the resulting set, it is stored in destination. * If destination already exists, it is overwritten. * * @param mixed $key * @param mixed $other_keys,... * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function sdiffstore(mixed $key, mixed ...$other_keys): Relay|int|false {} /** * Returns the members of the set resulting from the intersection of all the given sets. * * @param mixed $key * @param mixed $other_keys,... * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function sinter(mixed $key, mixed ...$other_keys): Relay|array|false {} /** * Intersect multiple sets and return the cardinality of the result. * * @param array $keys * @param int $limit * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function sintercard(array $keys, int $limit = -1): Relay|int|false {} /** * This command is equal to SINTER, but instead of returning the resulting set, it is stored in destination. * If destination already exists, it is overwritten. * * @param mixed $key * @param mixed $other_keys,... * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function sinterstore(mixed $key, mixed ...$other_keys): Relay|int|false {} /** * Returns the members of the set resulting from the union of all the given sets. * * @param mixed $key * @param mixed $other_keys,... * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function sunion(mixed $key, mixed ...$other_keys): Relay|array|false {} /** * This command is equal to SUNION, but instead of returning the resulting set, it is stored in destination. * If destination already exists, it is overwritten. * * @param mixed $key * @param mixed $other_keys,... * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function sunionstore(mixed $key, mixed ...$other_keys): Relay|int|false {} /** * Subscribes to the specified channels. * * @param array $channels * @param callable $callback * @return bool */ #[\Relay\Attributes\RedisCommand] public function subscribe(array $channels, callable $callback): bool {} /** * Unsubscribes from the given channels, or from all of them if none is given. * * @param array $channels * @return bool */ #[\Relay\Attributes\RedisCommand] public function unsubscribe(array $channels = []): bool {} /** * Subscribes to the given patterns. * * @param array $patterns * @param callable $callback * @return bool */ #[\Relay\Attributes\RedisCommand] public function psubscribe(array $patterns, callable $callback): bool {} /** * Unsubscribes from the given patterns, or from all of them if none is given. * * @param array $patterns * @return bool */ #[\Relay\Attributes\RedisCommand] public function punsubscribe(array $patterns = []): bool {} /** * Subscribes to the specified shard channels. * * @param array $channels * @param callable $callback * @return bool */ #[\Relay\Attributes\RedisCommand] public function ssubscribe(array $channels, callable $callback): bool {} /** * Unsubscribes from the given shard channels, or from all of them if none is given. * * @param array $channels * @return bool */ #[\Relay\Attributes\RedisCommand] public function sunsubscribe(array $channels = []): bool {} /** * Alters the last access time of a key(s). * * @param array|string $key_or_array * @param mixed $more_keys,... * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function touch(array|string $key_or_array, mixed ...$more_keys): Relay|int|false {} /** * A pipeline block is simply transmitted faster to the server (like `MULTI`), but without any guarantee of atomicity. * * @return Relay|bool */ #[\Relay\Attributes\Local] public function pipeline(): Relay|bool {} /** * Marks the start of a transaction block. Subsequent commands will be queued for atomic execution using EXEC. * * Accepts `Relay::MULTI` and `Relay::PIPELINE` modes. * * @param int $mode * @return Relay|bool */ #[\Relay\Attributes\RedisCommand] public function multi(int $mode = 0): Relay|bool {} /** * Executes all previously queued commands in a transaction and restores the connection state to normal. * * @return Relay|array|bool */ #[\Relay\Attributes\RedisCommand] public function exec(): Relay|array|bool {} /** * Wait for the synchronous replication of all the write * commands sent in the context of the current connection. * * @param int $replicas * @param int $timeout * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function wait(int $replicas, $timeout): Relay|int|false {} /** * Marks the given keys to be watched for conditional execution of a transaction. * * @param mixed $key * @param mixed $other_keys,... * @return Relay|bool */ #[\Relay\Attributes\RedisCommand] public function watch(mixed $key, mixed ...$other_keys): Relay|bool {} /** * Flushes all the previously watched keys for a transaction. * If you call EXEC or DISCARD, there's no need to manually call UNWATCH. * * @return Relay|bool */ #[\Relay\Attributes\RedisCommand] public function unwatch(): Relay|bool {} /** * Flushes all previously queued commands in a transaction and restores the connection state to normal. * If WATCH was used, DISCARD unwatches all keys watched by the connection. * * @return bool */ #[\Relay\Attributes\RedisCommand] public function discard(): bool {} /** * Get the mode Relay is currently in. * `Relay::ATOMIC`, `Relay::PIPELINE` or `Relay::MULTI`. * * @param bool $masked * @return int */ #[\Relay\Attributes\Local] public function getMode(bool $masked = false): int {} /** * Clear the accumulated sent and received bytes. * * @return void */ #[\Relay\Attributes\Local] public function clearBytes(): void {} /** * Scan the keyspace for matching keys. * * @param mixed $iterator * @param mixed $match * @param int $count * @param string|null $type * @return array|false */ #[\Relay\Attributes\RedisCommand] public function scan(mixed &$iterator, mixed $match = null, int $count = 0, ?string $type = null): array|false {} /** * Iterates fields of Hash types and their associated values. * * @param mixed $key * @param mixed $iterator * @param mixed $match * @param int $count * @return array|false */ #[\Relay\Attributes\RedisCommand] public function hscan(mixed $key, mixed &$iterator, mixed $match = null, int $count = 0): array|false {} /** * Iterates elements of Sets types. * * @param mixed $key * @param mixed $iterator * @param mixed $match * @param int $count * @return array|false */ #[\Relay\Attributes\RedisCommand] public function sscan(mixed $key, mixed &$iterator, mixed $match = null, int $count = 0): array|false {} /** * Iterates elements of Sorted Set types and their associated scores. * * @param mixed $key * @param mixed $iterator * @param mixed $match * @param int $count * @return array|false */ #[\Relay\Attributes\RedisCommand] public function zscan(mixed $key, mixed &$iterator, mixed $match = null, int $count = 0): array|false {} /** * Returns all keys matching pattern. * * @param mixed $pattern * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function keys(mixed $pattern): Relay|array|false {} /** * Interact with the Redis slowlog. * * @param string $operation * @param string $extra_args,... * @return Relay|array|int|bool */ #[\Relay\Attributes\RedisCommand] public function slowlog(string $operation, string ...$extra_args): Relay|array|int|bool {} /** * Returns all the members of the set value stored at `$key`. * * @param mixed $set * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function smembers(mixed $set): Relay|array|false {} /** * Returns if `$member` is a member of the set stored at `$key`. * * @param mixed $set * @param mixed $member * @return Relay|bool */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function sismember(mixed $set, mixed $member): Relay|bool {} /** * Returns whether each member is a member of the set stored at `$key`. * * @param mixed $set * @param mixed $members,... * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function smismember(mixed $set, mixed ...$members): Relay|array|false {} /** * Remove the specified members from the set stored at `$key`. * * @param mixed $set * @param mixed $member * @param mixed $members,... * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function srem(mixed $set, mixed $member, mixed ...$members): Relay|int|false {} /** * Add the specified members to the set stored at `$key`. * * @param mixed $set * @param mixed $member * @param mixed $members,... * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function sadd(mixed $set, mixed $member, mixed ...$members): Relay|int|false {} /** * Sort the elements in a list, set or sorted set. * * @param mixed $key * @param array $options * @return Relay|array|int|false */ #[\Relay\Attributes\RedisCommand] public function sort(mixed $key, array $options = []): Relay|array|int|false {} /** * Sort the elements in a list, set or sorted set. Read-only variant of SORT. * * @param mixed $key * @param array $options * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function sort_ro(mixed $key, array $options = []): Relay|array|false {} /** * Move member from the set at source to the set at destination. * * @param mixed $srcset * @param mixed $dstset * @param mixed $member * @return Relay|bool */ #[\Relay\Attributes\RedisCommand] public function smove(mixed $srcset, mixed $dstset, mixed $member): Relay|bool {} /** * Removes and returns one or more random members from the set value store at `$key`. * * @param mixed $set * @param int $count * @return mixed */ #[\Relay\Attributes\RedisCommand] public function spop(mixed $set, int $count = 1): mixed {} /** * Returns one or multiple random members from a set. * * @param mixed $set * @param int $count * @return mixed */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function srandmember(mixed $set, int $count = 1): mixed {} /** * Returns the set cardinality (number of elements) of the set stored at `$key`. * * @param mixed $key * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function scard(mixed $key): Relay|int|false {} /** * Execute a script management command. * * @param string $command * @param string $args,... * @return mixed */ #[\Relay\Attributes\RedisCommand] public function script(string $command, string ...$args): mixed {} /** * Returns the length of the string value stored at `$key`. * * @param mixed $key * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function strlen(mixed $key): Relay|int|false {} /** * Returns the number of fields contained in the hash stored at `$key`. * * @param mixed $key * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function hlen(mixed $key): Relay|int|false {} /** * Returns the length of the list stored at `$key`. * * @param mixed $key * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function llen(mixed $key): Relay|int|false {} /** * Acknowledge one or more IDs as having been processed by the consumer group. * * @param mixed $key * @param string $group * @param array $ids * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function xack(mixed $key, string $group, array $ids): Relay|int|false {} /** * Append a message to a stream. * * @param string $key * @param string $id * @param int $maxlen * @param bool $approx * @param bool $nomkstream * @return Relay|string|false */ public function xadd( string $key, string $id, array $values, int $maxlen = 0, bool $approx = false, bool $nomkstream = false ): Relay|string|false {} /** * Claim ownership of stream message(s). * * @param string $key * @param string $group * @param string $consumer * @param int $min_idle * @param array $ids * @param array $options * @return Relay|array|bool */ #[\Relay\Attributes\RedisCommand] public function xclaim( string $key, string $group, string $consumer, int $min_idle, array $ids, array $options ): Relay|array|bool {} /** * Automatically take ownership of stream message(s) by metrics * * @param string $key * @param string $group * @param string $consumer * @param int $min_idle * @param string $start * @param int $count * @param bool $justid * @return Relay|array|bool */ #[\Relay\Attributes\RedisCommand] public function xautoclaim( string $key, string $group, string $consumer, int $min_idle, string $start, int $count = -1, bool $justid = false ): Relay|bool|array {} /** * Get the length of a stream. * * @param string $key * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function xlen(string $key): Relay|int|false {} /** * Perform utility operations having to do with consumer groups * * @param string $operation * @param mixed $key * @param string $group * @param string $id_or_consumer * @param bool $mkstream * @param int $entries_read * @return mixed */ #[\Relay\Attributes\RedisCommand] public function xgroup( string $operation, mixed $key = null, string $group = null, string $id_or_consumer = null, bool $mkstream = false, int $entries_read = -2 ): mixed {} /** * Remove one or more specific IDs from a stream. * * @param string $key * @param array $ids * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function xdel(string $key, array $ids): Relay|int|false {} /** * Retrieve information about a stream key. * * @param string $operation * @param string|null $arg1 * @param string|null $arg2 * @param int $count * @return mixed */ #[\Relay\Attributes\RedisCommand] public function xinfo(string $operation, ?string $arg1 = null, ?string $arg2 = null, int $count = -1): mixed {} /** * Query pending entries in a stream. * * @param string $key * @param string $group * @param string|null $start * @param string|null $end * @param int $count * @param string|null $consumer * @param int $idle * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function xpending( string $key, string $group, ?string $start = null, ?string $end = null, int $count = -1, ?string $consumer = null, int $idle = 0 ): Relay|array|false {} /** * Lists elements in a stream. * * @param mixed $key * @param string $start * @param string $end * @param int $count = -1 * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function xrange(mixed $key, string $start, string $end, int $count = -1): Relay|array|false {} /** * Get a range of entries from a STREAM ke in reverse chronological order. * * @param string $key * @param string $end * @param string $start * @param int $count * @return Relay|array|bool */ #[\Relay\Attributes\RedisCommand] public function xrevrange(string $key, string $end, string $start, int $count = -1): Relay|array|bool {} /** * Read messages from a stream. * * @param array $streams * @param int $count * @param int $block * @return Relay|array|bool|null */ #[\Relay\Attributes\RedisCommand] public function xread(array $streams, int $count = -1, int $block = -1): Relay|array|bool|null {} /** * Read messages from a stream using a consumer group. * * @param string $group * @param string $consumer * @param array $streams * @param int $count * @param int $block * @return Relay|array|bool|null */ #[\Relay\Attributes\RedisCommand] public function xreadgroup( string $group, string $consumer, array $streams, int $count = 1, int $block = 1 ): Relay|array|bool|null {} /** * Truncate a STREAM key in various ways. * * @param string $key * @param string $threshold * @param bool $approx * @param bool $minid * @param int $limit * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function xtrim( string $key, string $threshold, bool $approx = false, bool $minid = false, int $limit = -1 ): Relay|int|false {} /** * Adds all the specified members with the specified scores to the sorted set stored at key. * * @param mixed $key * @param mixed $args,... * @return mixed */ #[\Relay\Attributes\RedisCommand] public function zadd(mixed $key, mixed ...$args): mixed {} /** * When called with just the key argument, return a random element from the sorted set value stored at key. * If the provided count argument is positive, return an array of distinct elements. * * @param mixed $key * @param array|null $options * @return mixed */ #[\Relay\Attributes\RedisCommand] public function zrandmember(mixed $key, ?array $options = null): mixed {} /** * Returns the specified range of elements in the sorted set stored at key. * * @param mixed $key * @param string $start * @param string $end * @param mixed $options * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function zrange(mixed $key, string $start, string $end, mixed $options = null): Relay|array|false {} /** * Returns the specified range of elements in the sorted set stored at key. * * @param mixed $key * @param int $start * @param int $end * @param mixed $options * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function zrevrange(mixed $key, int $start, int $end, mixed $options = null): Relay|array|false {} /** * Returns all the elements in the sorted set at key with a score between * min and max (including elements with score equal to min or max). * * @param mixed $key * @param mixed $start * @param mixed $end * @param mixed $options * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function zrangebyscore(mixed $key, mixed $start, mixed $end, mixed $options = null): Relay|array|false {} /** * Returns all the elements in the sorted set at key with a score between * max and min (including elements with score equal to max or min). * * @param mixed $key * @param mixed $start * @param mixed $end * @param mixed $options * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function zrevrangebyscore(mixed $key, mixed $start, mixed $end, mixed $options = null): Relay|array|false {} /** * Returns all the elements in the sorted set at key with a score between * max and min (including elements with score equal to max or min). * * @param mixed $dst * @param mixed $src * @param mixed $start * @param mixed $end * @param mixed $options * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function zrangestore(mixed $dst, mixed $src, mixed $start, mixed $end, mixed $options = null): Relay|int|false {} /** * When all the elements in a sorted set are inserted with the same score, * in order to force lexicographical ordering, this command returns all * the elements in the sorted set at key with a value between min and max. * * @param mixed $key * @param mixed $min * @param mixed $max * @param int $offset * @param int $count * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function zrangebylex(mixed $key, mixed $min, mixed $max, int $offset = -1, int $count = -1): Relay|array|false {} /** * When all the elements in a sorted set are inserted with the same score, * in order to force lexicographical ordering, this command returns all * the elements in the sorted set at key with a value between max and min. * * @param mixed $key * @param mixed $max * @param mixed $min * @param int $offset * @param int $count * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function zrevrangebylex(mixed $key, mixed $max, mixed $min, int $offset = -1, int $count = -1): Relay|array|false {} /** * Returns the rank of member in the sorted set stored at key, with the scores * ordered from low to high. The rank (or index) is 0-based, which means * that the member with the lowest score has rank 0. * * @param mixed $key * @param mixed $rank * @param bool $withscore * @return Relay|array|int|false */ #[\Relay\Attributes\RedisCommand] public function zrank(mixed $key, mixed $rank, bool $withscore = false): Relay|array|int|false {} /** * Returns the rank of member in the sorted set stored at key, with the scores * ordered from high to low. The rank (or index) is 0-based, which means * that the member with the highest score has rank 0. * * @param mixed $key * @param mixed $rank * @param bool $withscore * @return Relay|array|int|false */ #[\Relay\Attributes\RedisCommand] public function zrevrank(mixed $key, mixed $rank, bool $withscore = false): Relay|array|int|false {} /** * Removes the specified members from the sorted set stored at key. * Non existing members are ignored. * * @param mixed $key * @param mixed $args,... * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function zrem(mixed $key, mixed ...$args): Relay|int|false {} /** * When all the elements in a sorted set are inserted with the same score, * in order to force lexicographical ordering, this command removes all * elements in the sorted set stored at key between the * lexicographical range specified by min and max. * * @param mixed $key * @param mixed $min * @param mixed $max * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function zremrangebylex(mixed $key, mixed $min, mixed $max): Relay|int|false {} /** * Removes all elements in the sorted set stored at key with rank between * start and stop. Both start and stop are 0 -based indexes with 0 being * the element with the lowest score. * * @param mixed $key * @param int $start * @param int $end * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function zremrangebyrank(mixed $key, int $start, int $end): Relay|int|false {} /** * Removes all elements in the sorted set stored at key with * a score between min and max (inclusive). * * @param mixed $key * @param mixed $min * @param mixed $max * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function zremrangebyscore(mixed $key, mixed $min, mixed $max): Relay|int|false {} /** * Returns the sorted set cardinality (number of elements) of the sorted set stored at key. * * @param mixed $key * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached] public function zcard(mixed $key): Relay|int|false {} /** * Returns the number of elements in the sorted set at key with a score between min and max. * * @param mixed $key * @param mixed $min * @param mixed $max * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function zcount(mixed $key, mixed $min, mixed $max): Relay|int|false {} /** * This command is similar to ZDIFFSTORE, but instead of storing the * resulting sorted set, it is returned to the client. * * @param array $keys * @param array $options * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function zdiff(array $keys, ?array $options = null): Relay|array|false {} /** * Computes the difference between the first and all successive * input sorted sets and stores the result in destination. * * @param mixed $dst * @param array $keys * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function zdiffstore(mixed $dst, array $keys): Relay|int|false {} /** * Increments the score of member in the sorted set stored at key by increment. * * @param mixed $key * @param float $score * @param mixed $mem * @return Relay|float|false */ #[\Relay\Attributes\RedisCommand] public function zincrby(mixed $key, float $score, mixed $mem): Relay|float|false {} /** * When all the elements in a sorted set are inserted with the same score, * in order to force lexicographical ordering, this command returns the * number of elements in the sorted set at key with a value between min and max. * * @param mixed $key * @param mixed $min * @param mixed $max * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function zlexcount(mixed $key, mixed $min, mixed $max): Relay|int|false {} /** * Returns the scores associated with the specified members in the sorted set stored at key. * * @param mixed $key * @param mixed $mems,... * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function zmscore(mixed $key, mixed ...$mems): Relay|array|false {} /** * Returns the score of member in the sorted set at key. * * @param mixed $key * @param mixed $member * @return Relay|float|false */ #[\Relay\Attributes\RedisCommand] public function zscore(mixed $key, mixed $member): Relay|float|false {} /** * This command is similar to ZINTERSTORE, but instead of storing * the resulting sorted set, it is returned to the client. * * @param array $keys * @param array $weights * @param mixed $options * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function zinter(array $keys, ?array $weights = null, mixed $options = null): Relay|array|false {} /** * Intersect multiple sorted sets and return the cardinality of the result. * * @param array $keys * @param int $limit * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function zintercard(array $keys, int $limit = -1): Relay|int|false {} /** * Computes the intersection of numkeys sorted sets given by the * specified keys, and stores the result in destination. * * @param mixed $dst * @param array $keys * @param array $weights * @param mixed $options * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function zinterstore(mixed $dst, array $keys, ?array $weights = null, mixed $options = null): Relay|int|false {} /** * This command is similar to ZUNIONSTORE, but instead of storing * the resulting sorted set, it is returned to the client. * * @param array $keys * @param array $weights * @param mixed $options * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function zunion(array $keys, ?array $weights = null, mixed $options = null): Relay|array|false {} /** * Computes the union of numkeys sorted sets given by the * specified keys, and stores the result in destination. * * @param mixed $dst * @param array $keys * @param array $weights * @param mixed $options * @return Relay|int|false */ #[\Relay\Attributes\RedisCommand] public function zunionstore(mixed $dst, array $keys, ?array $weights = null, mixed $options = null): Relay|int|false {} /** * Removes and returns up to count members with the lowest * scores in the sorted set stored at key. * * @param mixed $key * @param int $count * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function zpopmin(mixed $key, int $count = 1): Relay|array|false {} /** * Removes and returns up to count members with the highest * scores in the sorted set stored at key. * * @param mixed $key * @param int $count * @return Relay|array|false */ #[\Relay\Attributes\RedisCommand] public function zpopmax(mixed $key, int $count = 1): Relay|array|false {} /** * Returns keys cached in runtime memory. * * @internal Temporary debug helper. Do not use. * @return mixed */ #[\Relay\Attributes\Local] public function _getKeys() {} /** * Returns information about the license. * * @return array */ #[\Relay\Attributes\Local] public static function license(): array {} } * Checks out a working copy from the repository * @link https://php.net/manual/en/function.svn-checkout.php * @param string $repos

* String URL path to directory in repository to check out. *

* @param string $targetpath

* String local path to directory to check out in to *

* Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script's working directory, use realpath or dirname(__FILE__). * @param int $revision [optional]

* Integer revision number of repository to check out. Default is * HEAD, the most recent revision. *

* @param int $flags [optional]

* Any combination of SVN_NON_RECURSIVE and * SVN_IGNORE_EXTERNALS. *

* @return bool TRUE on success or FALSE on failure. */ function svn_checkout($repos, $targetpath, $revision = SVN_REVISION_HEAD, $flags = 0) {} /** * (PECL svn >= 0.1.0)
* Returns the contents of a file in a repository * @link https://php.net/manual/en/function.svn-cat.php * @param string $repos_url

* String URL path to item in a repository. *

* @param int $revision_no [optional]

* Integer revision number of item to retrieve, default is the HEAD * revision. *

* @return string the string contents of the item from the repository on * success, and FALSE on failure. */ function svn_cat($repos_url, $revision_no = SVN_REVISION_HEAD) {} /** * (PECL svn >= 0.1.0)
* Returns list of directory contents in repository URL, optionally at revision number * @link https://php.net/manual/en/function.svn-ls.php * @param string $repos_url * @param int $revision_no [optional] * @param bool $recurse [optional]

* Enables recursion. *

* @param bool $peg [optional] * @return array On success, this function returns an array file listing in the format * of: *
 * [0] => Array
 * (
 * [created_rev] => integer revision number of last edit
 * [last_author] => string author name of last edit
 * [size] => integer byte file size of file
 * [time] => string date of last edit in form 'M d H:i'
 * or 'M d Y', depending on how old the file is
 * [time_t] => integer unix timestamp of last edit
 * [name] => name of file/directory
 * [type] => type, can be 'file' or 'dir'
 * )
 * [1] => ...
 * 
*/ function svn_ls($repos_url, $revision_no = SVN_REVISION_HEAD, $recurse = false, $peg = false) {} /** * (PECL svn >= 0.1.0)
* Returns the commit log messages of a repository URL * @link https://php.net/manual/en/function.svn-log.php * @param string $repos_url

* Repository URL of the item to retrieve log history from. *

* @param int $start_revision [optional]

* Revision number of the first log to retrieve. Use * SVN_REVISION_HEAD to retrieve the log from * the most recent revision. *

* @param int $end_revision [optional]

* Revision number of the last log to retrieve. Defaults to * start_revision if specified or to * SVN_REVISION_INITIAL otherwise. *

* @param int $limit [optional]

* Number of logs to retrieve. *

* @param int $flags [optional]

* Any combination of SVN_OMIT_MESSAGES, * SVN_DISCOVER_CHANGED_PATHS and * SVN_STOP_ON_COPY. *

* @return array On success, this function returns an array file listing in the format * of: *
 * [0] => Array, ordered most recent (highest) revision first
 * (
 * [rev] => integer revision number
 * [author] => string author name
 * [msg] => string log message
 * [date] => string date formatted per ISO 8601, i.e. date('c')
 * [paths] => Array, describing changed files
 * (
 * [0] => Array
 * (
 * [action] => string letter signifying change
 * [path] => absolute repository path of changed file
 * )
 * [1] => ...
 * )
 * )
 * [1] => ...
 * 
*

*

* The output will always be a numerically indexed array of arrays, * even when there are none or only one log message(s). *

*

* The value of action is a subset of the * status output * in the first column, where possible values are: *

* * Actions * * * * * * * * * * * * * * * * * * * * *
LetterDescription
MItem/props was modified
AItem was added
DItem was deleted
RItem was replaced
*

* If no changes were made to the item, an empty array is returned. */ function svn_log($repos_url, $start_revision = null, $end_revision = null, $limit = 0, $flags = SVN_DISCOVER_CHANGED_PATHS|SVN_STOP_ON_COPY) {} /** * (PECL svn >= 0.1.0)
* Sets an authentication parameter * @link https://php.net/manual/en/function.svn-auth-set-parameter.php * @param string $key

* String key name. Use the authentication constants * defined by this extension to specify a key. *

* @param string $value

* String value to set to parameter at key. Format of value varies * with the parameter. *

* @return void No value is returned. */ function svn_auth_set_parameter($key, $value) {} /** * (PECL svn >= 0.1.0)
* Retrieves authentication parameter * @link https://php.net/manual/en/function.svn-auth-get-parameter.php * @param string $key

* String key name. Use the authentication constants * defined by this extension to specify a key. *

* @return string|null the string value of the parameter at key; * returns NULL if parameter does not exist. */ function svn_auth_get_parameter($key) {} /** * (PECL svn >= 0.1.0)
* Returns the version of the SVN client libraries * @link https://php.net/manual/en/function.svn-client-version.php * @return string String version number, usually in form of x.y.z. */ function svn_client_version() {} function svn_config_ensure() {} /** * (PECL svn >= 0.1.0)
* Recursively diffs two paths * @link https://php.net/manual/en/function.svn-diff.php * @param string $path1

* First path to diff. This can be a URL to a file/directory in an SVN * repository or a local file/directory path. *

* Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script's working directory, use realpath or dirname(__FILE__). * If a local file path has only backslashes and no forward slashes, * this extension will fail to find the path. Always * replace all backslashes with forward slashes when using this * function. * @param int $rev1

* First path's revision number. Use SVN_REVISION_HEAD * to specify the most recent revision. *

* @param string $path2

* Second path to diff. See path1 for description. *

* @param int $rev2

* Second path's revision number. See rev1 * for description. *

* @return array an array-list consisting of two streams: the first is the diff output * and the second contains error stream output. The streams can be * read using fread. Returns FALSE or NULL on * error. *

*

* The diff output will, by default, be in the form of Subversion's * custom unified diff format, but an * external * diff engine may be * used depending on Subversion's configuration. */ function svn_diff($path1, $rev1, $path2, $rev2) {} /** * (PECL svn >= 0.1.0)
* Recursively cleanup a working copy directory, finishing incomplete operations and removing locks * @link https://php.net/manual/en/function.svn-cleanup.php * @param string $workingdir

* String path to local working directory to cleanup *

* Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script's working directory, use realpath or dirname(__FILE__). * @return bool TRUE on success or FALSE on failure. */ function svn_cleanup($workingdir) {} /** * (PECL svn >= 0.3.0)
* Revert changes to the working copy * @link https://php.net/manual/en/function.svn-revert.php * @param string $path

* The path to the working repository. *

* @param bool $recursive [optional]

* Optionally make recursive changes. *

* @return bool TRUE on success or FALSE on failure. */ function svn_revert($path, $recursive = false) {} function svn_resolved() {} /** * (PECL svn >= 0.1.0)
* Sends changes from the local working copy to the repository * @link https://php.net/manual/en/function.svn-commit.php * @param string $log

* String log text to commit *

* @param array $targets

* Array of local paths of files to be committed *

* This parameter must be an array, a string for a single * target is not acceptable. * Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script's working directory, use realpath or dirname(__FILE__). * @param bool $recursive [optional]

* Boolean flag to disable recursive committing of * directories in the targets array. * Default is TRUE. *

* @return array array in form of: *
 * array(
 * 0 => integer revision number of commit
 * 1 => string ISO 8601 date and time of commit
 * 2 => name of committer
 * )
 * 
*

* Returns FALSE on failure. *

*/ function svn_commit($log, array $targets, $recursive = true) {} function svn_lock() {} function svn_unlock() {} /** * (PECL svn >= 0.1.0)
* Schedules the addition of an item in a working directory * @link https://php.net/manual/en/function.svn-add.php * @param string $path

* Path of item to add. *

* Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script's working directory, use realpath or dirname(__FILE__). * @param bool $recursive [optional]

* If item is directory, whether or not to recursively add * all of its contents. Default is TRUE *

* @param bool $force [optional]

* If true, Subversion will recurse into already versioned directories * in order to add unversioned files that may be hiding in those * directories. Default is FALSE *

* @return bool TRUE on success or FALSE on failure. */ function svn_add($path, $recursive = true, $force = false) {} /** * (PECL svn >= 0.1.0)
* Returns the status of working copy files and directories * @link https://php.net/manual/en/function.svn-status.php * @param string $path

* Local path to file or directory to retrieve status of. *

* Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script's working directory, use realpath or dirname(__FILE__). * @param int $flags [optional]

* Any combination of SVN_NON_RECURSIVE, * SVN_ALL (regardless of modification status), * SVN_SHOW_UPDATES (entries will be added for items * that are out-of-date), SVN_NO_IGNORE (disregard * svn:ignore properties when scanning for new files) * and SVN_IGNORE_EXTERNALS. *

* @return array a numerically indexed array of associative arrays detailing * the status of items in the repository: *

*
 * Array (
 * [0] => Array (
 * // information on item
 * )
 * [1] => ...
 * )
 * 
*

* The information on the item is an associative array that can contain * the following keys: *

* path * String path to file/directory of this entry on local filesystem. * text_status * Status of item's text. Refer to status constants for possible values. * repos_text_status * Status of item's text in repository. Only accurate if * update was set to TRUE. * Refer to status constants for possible values. * prop_status * Status of item's properties. Refer to status constants for possible values. * repos_prop_status * Status of item's property in repository. Only accurate if * update was set to TRUE. Refer to status constants for possible values. * locked * Whether or not the item is locked. (Only set if TRUE.) * copied * Whether or not the item was copied (scheduled for addition with * history). (Only set if TRUE.) * switched * Whether or not the item was switched using the switch command. * (Only set if TRUE) *

* These keys are only set if the item is versioned: *

* name * Base name of item in repository. * url * URL of item in repository. * repos * Base URL of repository. * revision * Integer revision of item in working copy. * kind * Type of item, i.e. file or directory. Refer to type constants for possible values. * schedule * Scheduled action for item, i.e. addition or deletion. Constants * for these magic numbers are not available, they can * be emulated by using: * * if (!defined('svn_wc_schedule_normal')) { * define('svn_wc_schedule_normal', 0); // nothing special * define('svn_wc_schedule_add', 1); // item will be added * define('svn_wc_schedule_delete', 2); // item will be deleted * define('svn_wc_schedule_replace', 3); // item will be added and deleted * } * * deleted * Whether or not the item was deleted, but parent revision lags * behind. (Only set if TRUE.) * absent * Whether or not the item is absent, that is, Subversion knows that * there should be something there but there isn't. (Only set if * TRUE.) * incomplete * Whether or not the entries file for a directory is incomplete. * (Only set if TRUE.) * cmt_date * Integer Unix timestamp of last commit date. (Unaffected by update.) * cmt_rev * Integer revision of last commit. (Unaffected by update.) * cmt_author * String author of last commit. (Unaffected by update */ function svn_status($path, $flags = 0) {} /** * (PECL svn >= 0.1.0)
* Update working copy * @link https://php.net/manual/en/function.svn-update.php * @param string $path

* Path to local working copy. *

* Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script's working directory, use realpath or dirname(__FILE__). * @param int $revno [optional]

* Revision number to update to, default is SVN_REVISION_HEAD. *

* @param bool $recurse [optional]

* Whether or not to recursively update directories. *

* @return int|false new revision number on success, returns FALSE on failure. */ function svn_update($path, $revno = SVN_REVISION_HEAD, $recurse = true) {} /** * (PECL svn >= 0.2.0)
* Imports an unversioned path into a repository * @link https://php.net/manual/en/function.svn-import.php * @param string $path

* Path of file or directory to import. *

* Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script's working directory, use realpath or dirname(__FILE__). * @param string $url

* Repository URL to import into. *

* @param bool $nonrecursive

* Whether or not to refrain from recursively processing directories. *

* @return bool TRUE on success or FALSE on failure. */ function svn_import($path, $url, $nonrecursive) {} function svn_info() {} /** * (PECL svn >= 0.3.0)
* Export the contents of a SVN directory * @link https://php.net/manual/en/function.svn-export.php * @param string $frompath

* The path to the current repository. *

* @param string $topath

* The path to the new repository. *

* @param bool $working_copy [optional]

* If TRUE, it will export uncommitted files from the working copy. *

* @param int $revision_no [optional] * @return bool TRUE on success or FALSE on failure. */ function svn_export($frompath, $topath, $working_copy = true, $revision_no = -1) {} function svn_copy() {} function svn_switch() {} /** * (PECL svn >= 0.3.0)
* Get the SVN blame for a file * @link https://php.net/manual/en/function.svn-blame.php * @param string $repository_url

* The repository URL. *

* @param int $revision_no [optional]

* The revision number. *

* @return array An array of SVN blame information separated by line * which includes the revision number, line number, line of code, * author, and date. */ function svn_blame($repository_url, $revision_no = SVN_REVISION_HEAD) {} /** * (PECL svn >= 0.4.0)
* Delete items from a working copy or repository. * @link https://php.net/manual/en/function.svn-delete.php * @param string $path

* Path of item to delete. *

* Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script's working directory, use realpath or dirname(__FILE__). * @param bool $force [optional]

* If TRUE, the file will be deleted even if it has local modifications. * Otherwise, local modifications will result in a failure. Default is * FALSE *

* @return bool TRUE on success or FALSE on failure. */ function svn_delete($path, $force = false) {} /** * (PECL svn >= 0.4.0)
* Creates a directory in a working copy or repository * @link https://php.net/manual/en/function.svn-mkdir.php * @param string $path

* The path to the working copy or repository. *

* @param string $log_message [optional] * @return bool TRUE on success or FALSE on failure. */ function svn_mkdir($path, $log_message = null) {} /** * @link https://php.net/manual/en/ref.svn.php * @param string $src_path * @param string $dst_path * @param bool $force [optional] * @return mixed */ function svn_move($src_path, $dst_path, $force = false) {} /** * @link https://php.net/manual/en/ref.svn.php * @param string $path * @param bool $recurse [optional] * @param int $revision [optional] * @return mixed */ function svn_proplist($path, $recurse = false, $revision) {} /** * @param string $path * @param string $property_name * @param bool $recurse [optional] * @param int $revision [optional] * @return mixed */ function svn_propget($path, $property_name, $recurse = false, $revision) {} /** * (PECL svn >= 0.1.0)
* Create a new subversion repository at path * @link https://php.net/manual/en/function.svn-repos-create.php * @param string $path

* Its description *

* @param null|array $config [optional]

* Its description *

* @param null|array $fsconfig [optional]

* Its description *

* @return resource What the function returns, first on success, then on failure. */ function svn_repos_create($path, ?array $config = null, ?array $fsconfig = null) {} /** * (PECL svn >= 0.1.0)
* Run recovery procedures on the repository located at path. * @link https://php.net/manual/en/function.svn-repos-recover.php * @param string $path

* Its description *

* @return bool What the function returns, first on success, then on failure. */ function svn_repos_recover($path) {} /** * (PECL svn >= 0.1.0)
* Make a hot-copy of the repos at repospath; copy it to destpath * @link https://php.net/manual/en/function.svn-repos-hotcopy.php * @param string $repospath

* Its description *

* @param string $destpath

* Its description *

* @param bool $cleanlogs

* Its description *

* @return bool What the function returns, first on success, then on failure. */ function svn_repos_hotcopy($repospath, $destpath, $cleanlogs) {} /** * (PECL svn >= 0.1.0)
* Open a shared lock on a repository. * @link https://php.net/manual/en/function.svn-repos-open.php * @param string $path

* Its description *

* @return resource What the function returns, first on success, then on failure. */ function svn_repos_open($path) {} /** * (PECL svn >= 0.1.0)
* Gets a handle on the filesystem for a repository * @link https://php.net/manual/en/function.svn-repos-fs.php * @param resource $repos

* Its description *

* @return resource What the function returns, first on success, then on failure. */ function svn_repos_fs($repos) {} /** * (PECL svn >= 0.2.0)
* Create a new transaction * @link https://php.net/manual/en/function.svn-repos-fs-begin-txn-for-commit.php * @param resource $repos

* Its description *

* @param int $rev

* Its description *

* @param string $author

* Its description *

* @param string $log_msg

* Its description *

* @return resource What the function returns, first on success, then on failure. */ function svn_repos_fs_begin_txn_for_commit($repos, $rev, $author, $log_msg) {} /** * (PECL svn >= 0.2.0)
* Commits a transaction and returns the new revision * @link https://php.net/manual/en/function.svn-repos-fs-commit-txn.php * @param resource $txn

* Its description *

* @return int What the function returns, first on success, then on failure. */ function svn_repos_fs_commit_txn($txn) {} /** * (PECL svn >= 0.1.0)
* Get a handle on a specific version of the repository root * @link https://php.net/manual/en/function.svn-fs-revision-root.php * @param resource $fs

* Its description *

* @param int $revnum

* Its description *

* @return resource What the function returns, first on success, then on failure. */ function svn_fs_revision_root($fs, $revnum) {} /** * (PECL svn >= 0.1.0)
* Determines what kind of item lives at path in a given repository fsroot * @link https://php.net/manual/en/function.svn-fs-check-path.php * @param resource $fsroot

* Its description *

* @param string $path

* Its description *

* @return int What the function returns, first on success, then on failure. */ function svn_fs_check_path($fsroot, $path) {} /** * (PECL svn >= 0.1.0)
* Fetches the value of a named property * @link https://php.net/manual/en/function.svn-fs-revision-prop.php * @param resource $fs

* Its description *

* @param int $revnum

* Its description *

* @param string $propname

* Its description *

* @return string What the function returns, first on success, then on failure. */ function svn_fs_revision_prop($fs, $revnum, $propname) {} /** * (PECL svn >= 0.1.0)
* Enumerates the directory entries under path; returns a hash of dir names to file type * @link https://php.net/manual/en/function.svn-fs-dir-entries.php * @param resource $fsroot

* Its description *

* @param string $path

* Its description *

* @return array What the function returns, first on success, then on failure. */ function svn_fs_dir_entries($fsroot, $path) {} /** * (PECL svn >= 0.1.0)
* Returns the revision in which path under fsroot was created * @link https://php.net/manual/en/function.svn-fs-node-created-rev.php * @param resource $fsroot

* Its description *

* @param string $path

* Its description *

* @return int What the function returns, first on success, then on failure. */ function svn_fs_node_created_rev($fsroot, $path) {} /** * (PECL svn >= 0.1.0)
* Returns the number of the youngest revision in the filesystem * @link https://php.net/manual/en/function.svn-fs-youngest-rev.php * @param resource $fs

* Its description *

* @return int What the function returns, first on success, then on failure. */ function svn_fs_youngest_rev($fs) {} /** * (PECL svn >= 0.1.0)
* Returns a stream to access the contents of a file from a given version of the fs * @link https://php.net/manual/en/function.svn-fs-file-contents.php * @param resource $fsroot

* Its description *

* @param string $path

* Its description *

* @return resource What the function returns, first on success, then on failure. */ function svn_fs_file_contents($fsroot, $path) {} /** * (PECL svn >= 0.1.0)
* Returns the length of a file from a given version of the fs * @link https://php.net/manual/en/function.svn-fs-file-length.php * @param resource $fsroot

* Its description *

* @param string $path

* Its description *

* @return int What the function returns, first on success, then on failure. */ function svn_fs_file_length($fsroot, $path) {} /** * (PECL svn >= 0.2.0)
* Creates and returns a transaction root * @link https://php.net/manual/en/function.svn-fs-txn-root.php * @param resource $txn

* Its description *

* @return resource What the function returns, first on success, then on failure. */ function svn_fs_txn_root($txn) {} /** * (PECL svn >= 0.2.0)
* Creates a new empty file, returns true if all is ok, false otherwise * @link https://php.net/manual/en/function.svn-fs-make-file.php * @param resource $root

* Its description *

* @param string $path

* Its description *

* @return bool What the function returns, first on success, then on failure. */ function svn_fs_make_file($root, $path) {} /** * (PECL svn >= 0.2.0)
* Creates a new empty directory, returns true if all is ok, false otherwise * @link https://php.net/manual/en/function.svn-fs-make-dir.php * @param resource $root

* Its description *

* @param string $path

* Its description *

* @return bool What the function returns, first on success, then on failure. */ function svn_fs_make_dir($root, $path) {} /** * (PECL svn >= 0.2.0)
* Creates and returns a stream that will be used to replace * @link https://php.net/manual/en/function.svn-fs-apply-text.php * @param resource $root

* Its description *

* @param string $path

* Its description *

* @return resource What the function returns, first on success, then on failure. */ function svn_fs_apply_text($root, $path) {} /** * (PECL svn >= 0.2.0)
* Copies a file or a directory, returns true if all is ok, false otherwise * @link https://php.net/manual/en/function.svn-fs-copy.php * @param resource $from_root

* Its description *

* @param string $from_path

* Its description *

* @param resource $to_root

* Its description *

* @param string $to_path

* Its description *

* @return bool What the function returns, first on success, then on failure. */ function svn_fs_copy($from_root, $from_path, $to_root, $to_path) {} /** * (PECL svn >= 0.2.0)
* Deletes a file or a directory, return true if all is ok, false otherwise * @link https://php.net/manual/en/function.svn-fs-delete.php * @param resource $root

* Its description *

* @param string $path

* Its description *

* @return bool What the function returns, first on success, then on failure. */ function svn_fs_delete($root, $path) {} /** * (PECL svn >= 0.2.0)
* Create a new transaction * @link https://php.net/manual/en/function.svn-fs-begin-txn2.php * @param resource $repos

* Its description *

* @param int $rev

* Its description *

* @return resource What the function returns, first on success, then on failure. */ function svn_fs_begin_txn2($repos, $rev) {} /** * (PECL svn >= 0.2.0)
* Return true if the path points to a directory, false otherwise * @link https://php.net/manual/en/function.svn-fs-is-dir.php * @param resource $root

* Its description *

* @param string $path

* Its description *

* @return bool What the function returns, first on success, then on failure. */ function svn_fs_is_dir($root, $path) {} /** * (PECL svn >= 0.2.0)
* Return true if the path points to a file, false otherwise * @link https://php.net/manual/en/function.svn-fs-is-file.php * @param resource $root

* Its description *

* @param string $path

* Its description *

* @return bool What the function returns, first on success, then on failure. */ function svn_fs_is_file($root, $path) {} /** * (PECL svn >= 0.1.0)
* Returns the value of a property for a node * @link https://php.net/manual/en/function.svn-fs-node-prop.php * @param resource $fsroot

* Its description *

* @param string $path

* Its description *

* @param string $propname

* Its description *

* @return string What the function returns, first on success, then on failure. */ function svn_fs_node_prop($fsroot, $path, $propname) {} /** * (PECL svn >= 0.2.0)
* Return true if everything is ok, false otherwise * @link https://php.net/manual/en/function.svn-fs-change-node-prop.php * @param resource $root

* Its description *

* @param string $path

* Its description *

* @param string $name

* Its description *

* @param string $value

* Its description *

* @return bool What the function returns, first on success, then on failure. */ function svn_fs_change_node_prop($root, $path, $name, $value) {} /** * (PECL svn >= 0.2.0)
* Return true if content is different, false otherwise * @link https://php.net/manual/en/function.svn-fs-contents-changed.php * @param resource $root1

* Its description *

* @param string $path1

* Its description *

* @param resource $root2

* Its description *

* @param string $path2

* Its description *

* @return bool What the function returns, first on success, then on failure. */ function svn_fs_contents_changed($root1, $path1, $root2, $path2) {} /** * (PECL svn >= 0.2.0)
* Return true if props are different, false otherwise * @link https://php.net/manual/en/function.svn-fs-props-changed.php * @param resource $root1

* Its description *

* @param string $path1

* Its description *

* @param resource $root2

* Its description *

* @param string $path2

* Its description *

* @return bool What the function returns, first on success, then on failure. */ function svn_fs_props_changed($root1, $path1, $root2, $path2) {} /** * (PECL svn >= 0.2.0)
* Abort a transaction, returns true if everything is okay, false otherwise * @link https://php.net/manual/en/function.svn-fs-abort-txn.php * @param resource $txn

* Its description *

* @return bool What the function returns, first on success, then on failure. */ function svn_fs_abort_txn($txn) {} /** * Property for default username to use when performing basic authentication * @link https://php.net/manual/en/svn.constants.php */ define('SVN_AUTH_PARAM_DEFAULT_USERNAME', "svn:auth:username"); /** * Property for default password to use when performing basic authentication * @link https://php.net/manual/en/svn.constants.php */ define('SVN_AUTH_PARAM_DEFAULT_PASSWORD', "svn:auth:password"); define('SVN_AUTH_PARAM_NON_INTERACTIVE', "svn:auth:non-interactive"); define('SVN_AUTH_PARAM_DONT_STORE_PASSWORDS', "svn:auth:dont-store-passwords"); define('SVN_AUTH_PARAM_NO_AUTH_CACHE', "svn:auth:no-auth-cache"); define('SVN_AUTH_PARAM_SSL_SERVER_FAILURES', "svn:auth:ssl:failures"); define('SVN_AUTH_PARAM_SSL_SERVER_CERT_INFO', "svn:auth:ssl:cert-info"); define('SVN_AUTH_PARAM_CONFIG', "svn:auth:config-category-servers"); define('SVN_AUTH_PARAM_SERVER_GROUP', "svn:auth:server-group"); define('SVN_AUTH_PARAM_CONFIG_DIR', "svn:auth:config-dir"); /** * Custom property for ignoring SSL cert verification errors * @link https://php.net/manual/en/svn.constants.php */ define('PHP_SVN_AUTH_PARAM_IGNORE_SSL_VERIFY_ERRORS', "php:svn:auth:ignore-ssl-verify-errors"); /** * Configuration key that determines filesystem type * @link https://php.net/manual/en/svn.constants.php */ define('SVN_FS_CONFIG_FS_TYPE', "fs-type"); /** * Filesystem is Berkeley-DB implementation * @link https://php.net/manual/en/svn.constants.php */ define('SVN_FS_TYPE_BDB', "bdb"); /** * Filesystem is native-filesystem implementation * @link https://php.net/manual/en/svn.constants.php */ define('SVN_FS_TYPE_FSFS', "fsfs"); /** * svn:date * @link https://php.net/manual/en/svn.constants.php */ define('SVN_PROP_REVISION_DATE', "svn:date"); /** * svn:original-date * @link https://php.net/manual/en/svn.constants.php */ define('SVN_PROP_REVISION_ORIG_DATE', "svn:original-date"); /** * svn:author * @link https://php.net/manual/en/svn.constants.php */ define('SVN_PROP_REVISION_AUTHOR', "svn:author"); /** * svn:log * @link https://php.net/manual/en/svn.constants.php */ define('SVN_PROP_REVISION_LOG', "svn:log"); define('SVN_REVISION_INITIAL', 1); /** * Magic number (-1) specifying the HEAD revision * @link https://php.net/manual/en/svn.constants.php */ define('SVN_REVISION_HEAD', -1); define('SVN_REVISION_BASE', -2); define('SVN_REVISION_COMMITTED', -3); define('SVN_REVISION_PREV', -4); define('SVN_REVISION_UNSPECIFIED', -5); define('SVN_NON_RECURSIVE', 1); define('SVN_DISCOVER_CHANGED_PATHS', 2); define('SVN_OMIT_MESSAGES', 4); define('SVN_STOP_ON_COPY', 8); define('SVN_ALL', 16); define('SVN_SHOW_UPDATES', 32); define('SVN_NO_IGNORE', 64); /** * Status does not exist * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_NONE', 1); /** * Item is not versioned in working copy * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_UNVERSIONED', 2); /** * Item exists, nothing else is happening * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_NORMAL', 3); /** * Item is scheduled for addition * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_ADDED', 4); /** * Item is versioned but missing from the working copy * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_MISSING', 5); /** * Item is scheduled for deletion * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_DELETED', 6); /** * Item was deleted and then re-added * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_REPLACED', 7); /** * Item (text or properties) was modified * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_MODIFIED', 8); /** * Item's local modifications were merged with repository modifications * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_MERGED', 9); /** * Item's local modifications conflicted with repository modifications * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_CONFLICTED', 10); /** * Item is unversioned but configured to be ignored * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_IGNORED', 11); /** * Unversioned item is in the way of a versioned resource * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_OBSTRUCTED', 12); /** * Unversioned path that is populated using svn:externals * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_EXTERNAL', 13); /** * Directory does not contain complete entries list * @link https://php.net/manual/en/svn.constants.php */ define('SVN_WC_STATUS_INCOMPLETE', 14); /** * Absent * @link https://php.net/manual/en/svn.constants.php */ define('SVN_NODE_NONE', 0); /** * File * @link https://php.net/manual/en/svn.constants.php */ define('SVN_NODE_FILE', 1); /** * Directory * @link https://php.net/manual/en/svn.constants.php */ define('SVN_NODE_DIR', 2); /** * Something Subversion cannot identify * @link https://php.net/manual/en/svn.constants.php */ define('SVN_NODE_UNKNOWN', 3); define('SVN_WC_SCHEDULE_NORMAL', 0); define('SVN_WC_SCHEDULE_ADD', 1); define('SVN_WC_SCHEDULE_DELETE', 2); define('SVN_WC_SCHEDULE_REPLACE', 3); 'string'], default: '')] protected $sqlstate; /** * The error code * * @var int */ protected $code; /** * @since 8.1 */ public function getSqlState(): string {} } /** * MySQLi Driver. * @link https://php.net/manual/en/class.mysqli-driver.php */ final class mysqli_driver { /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $client_info; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $client_version; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $driver_version; /** * @var string */ public $embedded; /** * @var bool */ #[LanguageLevelTypeAware(['8.1' => 'bool'], default: '')] public $reconnect; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $report_mode; } /** * Represents a connection between PHP and a MySQL database. * @link https://php.net/manual/en/class.mysqli.php */ class mysqli { /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'string|int'], default: '')] public $affected_rows; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $client_info; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $client_version; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $connect_errno; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string|null'], default: '')] public $connect_error; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $errno; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $error; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $field_count; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $host_info; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string|null'], default: '')] public $info; /** * @var int|string */ #[LanguageLevelTypeAware(['8.1' => 'int|string'], default: '')] public $insert_id; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $server_info; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $server_version; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $sqlstate; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $protocol_version; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $thread_id; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $warning_count; /** * @var array A list of errors, each as an associative array containing the errno, error, and sqlstate. * @link https://secure.php.net/manual/en/mysqli.error-list.php */ #[LanguageLevelTypeAware(['8.1' => 'array'], default: '')] public $error_list; public $stat; /** * Open a new connection to the MySQL server * @link https://php.net/manual/en/mysqli.construct.php * @param string $hostname [optional] Can be either a host name or an IP address. Passing the NULL value or the string "localhost" to this parameter, the local host is assumed. When possible, pipes will be used instead of the TCP/IP protocol. Prepending host by p: opens a persistent connection. mysqli_change_user() is automatically called on connections opened from the connection pool. Defaults to ini_get("mysqli.default_host") * @param string $username [optional] The MySQL user name. Defaults to ini_get("mysqli.default_user") * @param string $password [optional] If not provided or NULL, the MySQL server will attempt to authenticate the user against those user records which have no password only. This allows one username to be used with different permissions (depending on if a password as provided or not). Defaults to ini_get("mysqli.default_pw") * @param string $database [optional] If provided will specify the default database to be used when performing queries. Defaults to "" * @param int $port [optional] Specifies the port number to attempt to connect to the MySQL server. Defaults to ini_get("mysqli.default_port") * @param string $socket [optional] Specifies the socket or named pipe that should be used. Defaults to ini_get("mysqli.default_socket") */ public function __construct( #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $hostname = null, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $username = null, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $password = null, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $database = null, #[LanguageLevelTypeAware(['8.0' => 'int|null'], default: '')] $port = null, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $socket = null ) {} /** * Turns on or off auto-committing database modifications * @link https://php.net/manual/en/mysqli.autocommit.php * @param bool $enable

* Whether to turn on auto-commit or not. *

* @return bool true on success or false on failure. */ #[TentativeType] public function autocommit(#[LanguageLevelTypeAware(['8.0' => 'bool'], default: '')] $enable): bool {} /** * Starts a transaction * @link https://secure.php.net/manual/en/mysqli.begin-transaction.php * @param int $flags [optional] * @param string $name [optional] * @return bool true on success or false on failure. * @since 5.5 */ #[TentativeType] public function begin_transaction( #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $flags = 0, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $name = null ): bool {} /** * Changes the user of the specified database connection * @link https://php.net/manual/en/mysqli.change-user.php * @param string $username

* The MySQL user name. *

* @param string $password

* The MySQL password. *

* @param string|null $database

* The database to change to. *

*

* If desired, the null value may be passed resulting in only changing * the user and not selecting a database. To select a database in this * case use the mysqli_select_db function. *

* @return bool true on success or false on failure. */ #[TentativeType] public function change_user( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $username, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $password, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $database ): bool {} /** * Returns the current character set of the database connection * @link https://php.net/manual/en/mysqli.character-set-name.php * @return string The current character set of the connection */ #[TentativeType] public function character_set_name(): string {} /** * @removed 5.4 */ #[Deprecated(since: '5.3')] public function client_encoding() {} /** * Closes a previously opened database connection * @link https://php.net/manual/en/mysqli.close.php * @return bool true on success or false on failure. */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public function close() {} /** * Commits the current transaction * @link https://php.net/manual/en/mysqli.commit.php * @param int $flags A bitmask of MYSQLI_TRANS_COR_* constants. * @param string|null $name If provided then COMMIT $name is executed. * @return bool true on success or false on failure. */ #[TentativeType] public function commit( #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $flags = 0, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $name = null ): bool {} /** * @link https://php.net/manual/en/function.mysqli-connect.php * @param string|null $hostname [optional] * @param string|null $username [optional] * @param string|null $password [optional] * @param string|null $database [optional] * @param int|null $port [optional] * @param string|null $socket [optional] * @return bool */ #[TentativeType] public function connect( #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $hostname = null, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $username = null, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $password = null, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $database = null, #[LanguageLevelTypeAware(['8.0' => 'int|null'], default: '')] $port = null, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $socket = null ): bool {} /** * Dump debugging information into the log * @link https://php.net/manual/en/mysqli.dump-debug-info.php * @return bool true on success or false on failure. */ #[TentativeType] public function dump_debug_info(): bool {} /** * Performs debugging operations * @link https://php.net/manual/en/mysqli.debug.php * @param string $options

* A string representing the debugging operation to perform *

* @return bool true. */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public function debug(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $options) {} /** * Returns a character set object * @link https://php.net/manual/en/mysqli.get-charset.php * @return object|null The function returns a character set object with the following properties: * charset *

Character set name

* collation *

Collation name

* dir *

Directory the charset description was fetched from (?) or "" for built-in character sets

* min_length *

Minimum character length in bytes

* max_length *

Maximum character length in bytes

* number *

Internal character set number

* state *

Character set status (?)

*/ #[TentativeType] public function get_charset(): ?object {} /** * @param mysqli $mysql * @param string $query * @param array|null $params * @return mysqli_result|bool * @see mysqli_execute_query * @since 8.2 */ public function execute_query(string $query, ?array $params = null): mysqli_result|bool {} /** * Returns the MySQL client version as a string * @link https://php.net/manual/en/mysqli.get-client-info.php * @return string A string that represents the MySQL client library version */ #[TentativeType] public function get_client_info(): string {} /** * Returns statistics about the client connection * @link https://php.net/manual/en/mysqli.get-connection-stats.php * @return array an array with connection stats. */ #[TentativeType] public function get_connection_stats(): array {} /** * Returns the version of the MySQL server * @link https://php.net/manual/en/mysqli.get-server-info.php * @return string A character string representing the server version. */ #[TentativeType] public function get_server_info(): string {} /** * Get result of SHOW WARNINGS * @link https://php.net/manual/en/mysqli.get-warnings.php * @return mysqli_warning|false */ #[TentativeType] public function get_warnings(): mysqli_warning|false {} /** * Initializes MySQLi object * @link https://php.net/manual/en/mysqli.init.php * @return bool|null * @deprecated 8.1 */ public function init() {} /** * Asks the server to kill a MySQL thread * @link https://php.net/manual/en/mysqli.kill.php * @param int $process_id * @return bool true on success or false on failure. */ #[TentativeType] public function kill(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $process_id): bool {} /** * Performs one or more queries on the database * @link https://php.net/manual/en/mysqli.multi-query.php * @param string $query

* A string containing the queries to be executed. * Multiple queries must be separated by a semicolon. *

*

* If the query contains any variable input then parameterized * prepared statements should be used instead. Alternatively, * the data must be properly formatted and all strings must be * escaped using the mysqli_real_escape_string function. *

* @return bool false if the first statement failed. * To retrieve subsequent errors from other statements you have to call * mysqli_next_result first. */ #[TentativeType] public function multi_query(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $query): bool {} /** * @link https://php.net/manual/en/mysqli.construct.php * @param string $host [optional] * @param string $username [optional] * @param string $password [optional] * @param string $database [optional] * @param int $port [optional] * @param string $socket [optional] * * @removed 8.0 */ public function mysqli($host = null, $username = null, $password = null, $database = null, $port = null, $socket = null) {} /** * Check if there are any more query results from a multi query * @link https://php.net/manual/en/mysqli.more-results.php * @return bool true on success or false on failure. */ #[TentativeType] public function more_results(): bool {} /** * Prepare next result from multi_query * @link https://php.net/manual/en/mysqli.next-result.php * @return bool true on success or false on failure. */ #[TentativeType] public function next_result(): bool {} /** * Set options * @link https://php.net/manual/en/mysqli.options.php * @param int $option

* The option that you want to set. It can be one of the following values: * * Valid options * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
NameDescription
MYSQLI_OPT_CONNECT_TIMEOUTconnection timeout in seconds (supported on Windows with TCP/IP since PHP 5.3.1)
MYSQLI_OPT_LOCAL_INFILEenable/disable use of LOAD LOCAL INFILE
MYSQLI_INIT_COMMANDcommand to execute after when connecting to MySQL server
MYSQLI_READ_DEFAULT_FILE * Read options from named option file instead of my.cnf *
MYSQLI_READ_DEFAULT_GROUP * Read options from the named group from my.cnf * or the file specified with MYSQL_READ_DEFAULT_FILE *
MYSQLI_SERVER_PUBLIC_KEY * RSA public key file used with the SHA-256 based authentication. *
*

* @param string|int $value

* The value for the option. *

* @return bool true on success or false on failure. */ #[TentativeType] public function options(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $option, $value): bool {} /** * Pings a server connection, or tries to reconnect if the connection has gone down * @link https://php.net/manual/en/mysqli.ping.php * @return bool true on success or false on failure. */ #[TentativeType] public function ping(): bool {} /** * Prepares an SQL statement for execution * @link https://php.net/manual/en/mysqli.prepare.php * @param string $query

* The query, as a string. It must consist of a single SQL statement. *

*

* The SQL statement may contain zero or more parameter markers * represented by question mark (?) characters * at the appropriate positions. *

*

* The markers are legal only in certain places in SQL statements. * For example, they are permitted in the VALUES() * list of an INSERT statement (to specify column * values for a row), or in a comparison with a column in a * WHERE clause to specify a comparison value. *

*

* However, they are not permitted for identifiers (such as table or * column names), or to specify both operands of a binary operator such as the = equal * sign. The latter restriction is necessary because it would be * impossible to determine the parameter type. * In general, parameters are legal * only in Data Manipulation Language (DML) statements, and not in Data * Definition Language (DDL) statements. *

* @return mysqli_stmt|false mysqli_prepare returns a statement object or false if an error occurred. */ #[TentativeType] public function prepare(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $query): mysqli_stmt|false {} /** * Performs a query on the database * @link https://php.net/manual/en/mysqli.query.php * @param string $query

* The query string. *

*

* If the query contains any variable input then parameterized * prepared statements should be used instead. Alternatively, * the data must be properly formatted and all strings must be * escaped using the mysqli_real_escape_string function. *

* @param int $result_mode [optional]

* The result mode can be one of 3 constants indicating * how the result will be returned from the MySQL server. *

*

* MYSQLI_STORE_RESULT (default) - returns a mysqli_result * object with buffered result set. *

*

* MYSQLI_USE_RESULT - returns a mysqli_result object * with unbuffered result set. As long as there are pending records * waiting to be fetched, the connection line will be busy and all * subsequent calls will return error Commands out of sync. To avoid * the error all records must be fetched from the server or the result * set must be discarded by calling mysqli_free_result. *

*

* MYSQLI_ASYNC (available with mysqlnd) - the query is performed * asynchronously and no result set is immediately returned. * mysqli_poll is then used to get results from such queries. * Used in combination with either * MYSQLI_STORE_RESULT or MYSQLI_USE_RESULT constant. *

* @return mysqli_result|bool Returns false on failure. * For successful queries which produce a result set, * such as SELECT, SHOW, DESCRIBE or EXPLAIN, * mysqli_query will return a mysqli_result object. * For other successful queries mysqli_query will * return true. */ #[TentativeType] public function query( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $query, #[PhpStormStubsElementAvailable(from: '7.1')] int $result_mode = MYSQLI_STORE_RESULT ): mysqli_result|bool {} /** * Opens a connection to a mysql server * @link https://php.net/manual/en/mysqli.real-connect.php * @param string $hostname [optional]

* Can be either a host name or an IP address. Passing the null value * or the string "localhost" to this parameter, the local host is * assumed. When possible, pipes will be used instead of the TCP/IP * protocol. *

* @param string $username [optional]

* The MySQL user name. *

* @param string $password [optional]

* If provided or null, the MySQL server will attempt to authenticate * the user against those user records which have no password only. This * allows one username to be used with different permissions (depending * on if a password as provided or not). *

* @param string $database [optional]

* If provided will specify the default database to be used when * performing queries. *

* @param int $port [optional]

* Specifies the port number to attempt to connect to the MySQL server. *

* @param string $socket [optional]

* Specifies the socket or named pipe that should be used. *

*

* Specifying the socket parameter will not * explicitly determine the type of connection to be used when * connecting to the MySQL server. How the connection is made to the * MySQL database is determined by the host * parameter. *

* @param int $flags [optional]

* With the parameter flags you can set different * connection options: *

* * Supported flags * * * * * * * * * * * * * * * * * * * * * * * * *
NameDescription
MYSQLI_CLIENT_COMPRESSUse compression protocol
MYSQLI_CLIENT_FOUND_ROWSreturn number of matched rows, not the number of affected rows
MYSQLI_CLIENT_IGNORE_SPACEAllow spaces after function names. Makes all function names reserved words.
MYSQLI_CLIENT_INTERACTIVE * Allow interactive_timeout seconds (instead of * wait_timeout seconds) of inactivity before closing the connection *
MYSQLI_CLIENT_SSLUse SSL (encryption)
*

* For security reasons the MULTI_STATEMENT flag is * not supported in PHP. If you want to execute multiple queries use the * mysqli_multi_query function. *

* @return bool true on success or false on failure. */ #[TentativeType] public function real_connect( #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $hostname = null, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $username = null, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $password = null, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $database = null, #[LanguageLevelTypeAware(['8.0' => 'int|null'], default: '')] $port = null, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $socket = null, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $flags = 0 ): bool {} /** * Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection * @link https://php.net/manual/en/mysqli.real-escape-string.php * @param string $string

* The string to be escaped. *

*

* Characters encoded are NUL (ASCII 0), \n, \r, \, ', ", and * Control-Z. *

* @return string an escaped string. */ #[TentativeType] public function real_escape_string(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $string): string {} /** * Poll connections * @link https://php.net/manual/en/mysqli.poll.php * @param array &$read

*

* @param array &$error

*

* @param array &$reject

*

* @param int $seconds

* Number of seconds to wait, must be non-negative. *

* @param int $microseconds [optional]

* Number of microseconds to wait, must be non-negative. *

* @return int|false number of ready connections in success, false otherwise. */ #[TentativeType] public static function poll( #[LanguageLevelTypeAware(['8.0' => 'array|null'], default: '')] &$read, #[LanguageLevelTypeAware(['8.0' => 'array|null'], default: '')] &$error, #[LanguageLevelTypeAware(['8.0' => 'array'], default: '')] &$reject, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $seconds, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $microseconds = 0 ): int|false {} /** * Get result from async query * @link https://php.net/manual/en/mysqli.reap-async-query.php * @return mysqli_result|false mysqli_result in success, false otherwise. */ #[TentativeType] public function reap_async_query(): mysqli_result|bool {} /** * Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection * @param string $string The string to be escaped. * Characters encoded are NUL (ASCII 0), \n, \r, \, ', ", and Control-Z. * @return string * @link https://secure.php.net/manual/en/mysqli.real-escape-string.php */ #[TentativeType] public function escape_string(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $string): string {} /** * Execute an SQL query * @link https://php.net/manual/en/mysqli.real-query.php * @param string $query

* The query, as a string. *

*

* If the query contains any variable input then parameterized * prepared statements should be used instead. Alternatively, * the data must be properly formatted and all strings must be * escaped using the mysqli_real_escape_string function. *

* @return bool true on success or false on failure. */ #[TentativeType] public function real_query(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $query): bool {} /** * Removes the named savepoint from the set of savepoints of the current transaction * @link https://php.net/manual/en/mysqli.release-savepoint.php * @param string $name The identifier of the savepoint. * @return bool Returns TRUE on success or FALSE on failure. * @since 5.5 */ #[TentativeType] public function release_savepoint(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name): bool {} /** * Rolls back current transaction * @link https://php.net/manual/en/mysqli.rollback.php * @param int $flags [optional] A bitmask of MYSQLI_TRANS_COR_* constants. * @param string $name [optional] If provided then ROLLBACK $name is executed. * @return bool true on success or false on failure. * @since 5.5 Added flags and name parameters. */ #[TentativeType] public function rollback( #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $flags = 0, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $name = null ): bool {} /** * Set a named transaction savepoint * @link https://secure.php.net/manual/en/mysqli.savepoint.php * @param string $name * @return bool Returns TRUE on success or FALSE on failure. * @since 5.5 */ #[TentativeType] public function savepoint(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name): bool {} /** * Selects the default database for database queries * @link https://php.net/manual/en/mysqli.select-db.php * @param string $database

* The database name. *

* @return bool true on success or false on failure. */ #[TentativeType] public function select_db(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $database): bool {} /** * Sets the client character set * @link https://php.net/manual/en/mysqli.set-charset.php * @param string $charset

* The desired character set. *

* @return bool true on success or false on failure */ #[TentativeType] public function set_charset(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $charset): bool {} /** * @link https://php.net/manual/en/function.mysqli-set-opt * @param int $option * @param string|int $value */ #[TentativeType] public function set_opt(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $option, $value): bool {} /** * Used for establishing secure connections using SSL * @link https://secure.php.net/manual/en/mysqli.ssl-set.php * @param string|null $key

* The path name to the key file. *

* @param string|null $certificate

* The path name to the certificate file. *

* @param string|null $ca_certificate

* The path name to the certificate authority file. *

* @param string|null $ca_path

* The pathname to a directory that contains trusted SSL CA certificates in PEM format. *

* @param string|null $cipher_algos

* A list of allowable ciphers to use for SSL encryption. *

* @return bool This function always returns TRUE value. */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public function ssl_set( #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $key, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $certificate, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $ca_certificate, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $ca_path, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $cipher_algos ) {} /** * Gets the current system status * @link https://php.net/manual/en/mysqli.stat.php * @return string|false A string describing the server status. false if an error occurred. */ #[TentativeType] public function stat(): string|false {} /** * Initializes a statement and returns an object for use with mysqli_stmt_prepare * @link https://php.net/manual/en/mysqli.stmt-init.php * @return mysqli_stmt an object. */ #[TentativeType] public function stmt_init(): mysqli_stmt|false {} /** * Transfers a result set from the last query * @link https://php.net/manual/en/mysqli.store-result.php * @param int $mode [optional] The option that you want to set * @return mysqli_result|false a buffered result object or false if an error occurred. *

*

* mysqli_store_result returns false in case the query * didn't return a result set (if the query was, for example an INSERT * statement). This function also returns false if the reading of the * result set failed. You can check if you have got an error by checking * if mysqli_error doesn't return an empty string, if * mysqli_errno returns a non zero value, or if * mysqli_field_count returns a non zero value. * Also possible reason for this function returning false after * successful call to mysqli_query can be too large * result set (memory for it cannot be allocated). If * mysqli_field_count returns a non-zero value, the * statement should have produced a non-empty result set. */ #[TentativeType] public function store_result(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $mode = 0): mysqli_result|false {} /** * Returns whether thread safety is given or not * @link https://php.net/manual/en/mysqli.thread-safe.php * @return bool true if the client library is thread-safe, otherwise false. */ #[TentativeType] public function thread_safe(): bool {} /** * Initiate a result set retrieval * @link https://php.net/manual/en/mysqli.use-result.php * @return mysqli_result|false an unbuffered result object or false if an error occurred. */ #[TentativeType] public function use_result(): mysqli_result|false {} /** * @link https://php.net/manual/en/mysqli.refresh * @param int $flags MYSQLI_REFRESH_* * @return bool TRUE if the refresh was a success, otherwise FALSE * @since 5.3 */ #[TentativeType] public function refresh(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $flags): bool {} } /** * Represents one or more MySQL warnings. * @link https://php.net/manual/en/class.mysqli-warning.php */ final class mysqli_warning { /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $message; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $sqlstate; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $errno; /** * The __construct purpose * @link https://php.net/manual/en/mysqli-warning.construct.php */ #[PhpStormStubsElementAvailable(from: '8.0')] private function __construct() {} /** * The __construct purpose * @link https://php.net/manual/en/mysqli-warning.construct.php */ #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] protected function __construct() {} /** * Move to the next warning * @link https://php.net/manual/en/mysqli-warning.next.php * @return bool True if it successfully moved to the next warning */ public function next(): bool {} } /** * Represents the result set obtained from a query against the database. * Implements Traversable since 5.4 * @link https://php.net/manual/en/class.mysqli-result.php */ class mysqli_result implements IteratorAggregate { /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $current_field; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $field_count; /** * @var array|null */ #[LanguageLevelTypeAware(['8.1' => 'array|null'], default: '')] public $lengths; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int|string'], default: '')] public $num_rows; /** * @var mixed */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $type; /** * Constructor (no docs available) * @param object $mysql * @param int $result_mode [optional] */ public function __construct( #[PhpStormStubsElementAvailable(from: '8.0')] mysqli $mysql, #[PhpStormStubsElementAvailable(from: '8.0')] int $result_mode = MYSQLI_STORE_RESULT ) {} /** * Frees the memory associated with a result * @return void * @link https://php.net/manual/en/mysqli-result.free.php */ #[TentativeType] public function close(): void {} /** * Frees the memory associated with a result * @link https://php.net/manual/en/mysqli-result.free.php * @return void */ #[TentativeType] public function free(): void {} /** * Adjusts the result pointer to an arbitrary row in the result * @link https://php.net/manual/en/mysqli-result.data-seek.php * @param int $offset

* The field offset. Must be between zero and the total number of rows * minus one (0..mysqli_num_rows - 1). *

* @return bool true on success or false on failure. */ #[TentativeType] public function data_seek(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $offset): bool {} /** * Returns the next field in the result set * @link https://php.net/manual/en/mysqli-result.fetch-field.php * @return object|false an object which contains field definition information or false * if no field information is available. *

*

* * Object properties * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
PropertyDescription
nameThe name of the column
orgnameOriginal column name if an alias was specified
tableThe name of the table this field belongs to (if not calculated)
orgtableOriginal table name if an alias was specified
defReserved for default value, currently always ""
dbDatabase (since PHP 5.3.6)
catalogThe catalog name, always "def" (since PHP 5.3.6)
max_lengthThe maximum width of the field for the result set.
lengthThe width of the field, as specified in the table definition.
charsetnrThe character set number for the field.
flagsAn integer representing the bit-flags for the field.
typeThe data type used for this field
decimalsThe number of decimals used (for integer fields)
*/ #[TentativeType] public function fetch_field(): object|false {} /** * Returns an array of objects representing the fields in a result set * @link https://php.net/manual/en/mysqli-result.fetch-fields.php * @return array an array of objects containing field definition information. *

*

* * Object properties * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
PropertyDescription
nameThe name of the column
orgnameOriginal column name if an alias was specified
tableThe name of the table this field belongs to (if not calculated)
orgtableOriginal table name if an alias was specified
defThe default value for this field, represented as a string
max_lengthThe maximum width of the field for the result set.
lengthThe width of the field, as specified in the table definition.
charsetnrThe character set number for the field.
flagsAn integer representing the bit-flags for the field.
typeThe data type used for this field
decimalsThe number of decimals used (for integer fields)
*/ #[TentativeType] public function fetch_fields(): array {} /** * Fetch meta-data for a single field * @link https://php.net/manual/en/mysqli-result.fetch-field-direct.php * @param int $index

* The field number. This value must be in the range from * 0 to number of fields - 1. *

* @return object|false an object which contains field definition information or false * if no field information for specified fieldnr is * available. *

*

* * Object attributes * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
AttributeDescription
nameThe name of the column
orgnameOriginal column name if an alias was specified
tableThe name of the table this field belongs to (if not calculated)
orgtableOriginal table name if an alias was specified
defThe default value for this field, represented as a string
max_lengthThe maximum width of the field for the result set.
lengthThe width of the field, as specified in the table definition.
charsetnrThe character set number for the field.
flagsAn integer representing the bit-flags for the field.
typeThe data type used for this field
decimalsThe number of decimals used (for integer fields)
*/ #[TentativeType] public function fetch_field_direct(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $index): object|false {} /** * Fetches all result rows as an associative array, a numeric array, or both * @link https://php.net/manual/en/mysqli-result.fetch-all.php * @param int $mode [optional]

* This optional parameter is a constant indicating what type of array * should be produced from the current row data. The possible values for * this parameter are the constants MYSQLI_ASSOC, * MYSQLI_NUM, or MYSQLI_BOTH. *

* @return array an array of associative or numeric arrays holding result rows. */ #[TentativeType] public function fetch_all(#[PhpStormStubsElementAvailable(from: '7.0')] int $mode = MYSQLI_NUM): array {} /** * Fetch the next row of a result set as an associative, a numeric array, or both * @link https://php.net/manual/en/mysqli-result.fetch-array.php * @param int $mode [optional]

* This optional parameter is a constant indicating what type of array * should be produced from the current row data. The possible values for * this parameter are the constants MYSQLI_ASSOC, * MYSQLI_NUM, or MYSQLI_BOTH. *

*

* By using the MYSQLI_ASSOC constant this function * will behave identically to the mysqli_fetch_assoc, * while MYSQLI_NUM will behave identically to the * mysqli_fetch_row function. The final option * MYSQLI_BOTH will create a single array with the * attributes of both. *

* @return array|false|null an array representing the fetched row, null if there * are no more rows in the result set, or false on failure. */ #[TentativeType] public function fetch_array(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $mode = MYSQLI_BOTH): array|false|null {} /** * Fetch the next row of a result set as an associative array * @link https://php.net/manual/en/mysqli-result.fetch-assoc.php * @return array|false|null an associative array representing the fetched row, * where each key in the array represents the name of one of the result set's columns, null if there * are no more rows in the result set, or false on failure. */ #[TentativeType] public function fetch_assoc(): array|false|null {} /** * @template T * * Fetch the next row of a result set as an object * @link https://php.net/manual/en/mysqli-result.fetch-object.php * @param class-string $class [optional]

* The name of the class to instantiate, set the properties of and return. * If not specified, a stdClass object is returned. *

* @param null|array $constructor_args [optional]

* An optional array of parameters to pass to the constructor * for class_name objects. *

* @return T|stdClass|false|null an object representing the fetched row, where each property * represents the name of the result set's column, null if there * are no more rows in the result set, or false on failure. */ #[TentativeType] public function fetch_object(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $class = 'stdClass', array $constructor_args = []): object|false|null {} /** * Fetch the next row of a result set as an enumerated array * @link https://php.net/manual/en/mysqli-result.fetch-row.php * @return array|false|null an enumerated array representing * the fetched row, null if there * are no more rows in the result set, or false on failure. */ #[TentativeType] public function fetch_row(): array|false|null {} /** * Fetch a single column from the next row of a result set * * @param int $column [optional]

* 0-indexed number of the column you wish to retrieve from the row. * If no value is supplied, the first column will be returned. *

* @return string|int|float|false|null a single column from * the next row of a result set or false if there are no more rows. */ #[PhpStormStubsElementAvailable('8.1')] public function fetch_column(int $column = 0): string|int|float|false|null {} /** * Set result pointer to a specified field offset * @link https://php.net/manual/en/mysqli-result.field-seek.php * @param int $index

* The field number. This value must be in the range from * 0 to number of fields - 1. *

*/ #[TentativeType] #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] public function field_seek(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $index) {} /** * Frees the memory associated with a result * @return void * @link https://php.net/manual/en/mysqli-result.free.php */ #[TentativeType] public function free_result(): void {} /** * @return Iterator * @since 8.0 */ public function getIterator(): Iterator {} } /** * Represents a prepared statement. * @link https://php.net/manual/en/class.mysqli-stmt.php */ class mysqli_stmt { /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int|string'], default: '')] public $affected_rows; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int|string'], default: '')] public $insert_id; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int|string'], default: '')] public $num_rows; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $param_count; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $field_count; /** * @var int */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $errno; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $error; /** * @var array */ #[LanguageLevelTypeAware(['8.1' => 'array'], default: '')] public $error_list; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $sqlstate; /** * @var string */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] public $id; /** * mysqli_stmt constructor * @param mysqli $mysql * @param string $query [optional] */ public function __construct($mysql, $query) {} /** * Used to get the current value of a statement attribute * @link https://php.net/manual/en/mysqli-stmt.attr-get.php * @param int $attribute The attribute that you want to get. * @return int Returns the value of the attribute. */ #[TentativeType] public function attr_get(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $attribute): int {} /** * Used to modify the behavior of a prepared statement * @link https://php.net/manual/en/mysqli-stmt.attr-set.php * @param int $attribute

* The attribute that you want to set. It can have one of the following values: * * Attribute values * * * * * * * * * * * * * * * * *
CharacterDescription
MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH * If set to 1, causes mysqli_stmt_store_result to * update the metadata MYSQL_FIELD->max_length value. *
MYSQLI_STMT_ATTR_CURSOR_TYPE * Type of cursor to open for statement when mysqli_stmt_execute * is invoked. mode can be MYSQLI_CURSOR_TYPE_NO_CURSOR * (the default) or MYSQLI_CURSOR_TYPE_READ_ONLY. *
MYSQLI_STMT_ATTR_PREFETCH_ROWS * Number of rows to fetch from server at a time when using a cursor. * mode can be in the range from 1 to the maximum * value of unsigned long. The default is 1. *
*

*

* If you use the MYSQLI_STMT_ATTR_CURSOR_TYPE option with * MYSQLI_CURSOR_TYPE_READ_ONLY, a cursor is opened for the * statement when you invoke mysqli_stmt_execute. If there * is already an open cursor from a previous mysqli_stmt_execute call, * it closes the cursor before opening a new one. mysqli_stmt_reset * also closes any open cursor before preparing the statement for re-execution. * mysqli_stmt_free_result closes any open cursor. *

*

* If you open a cursor for a prepared statement, mysqli_stmt_store_result * is unnecessary. *

* @param int $value

The value to assign to the attribute.

* @return bool */ #[TentativeType] public function attr_set( #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $attribute, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $value ): bool {} /** * Binds variables to a prepared statement as parameters * @link https://php.net/manual/en/mysqli-stmt.bind-param.php * @param string $types

* A string that contains one or more characters which specify the types * for the corresponding bind variables: * * Type specification chars * * * * * * * * * * * * * * * * * * * * *
CharacterDescription
icorresponding variable has type integer
dcorresponding variable has type double
scorresponding variable has type string
bcorresponding variable is a blob and will be sent in packets
*

* @param mixed &$var1

* The number of variables and length of string * types must match the parameters in the statement. *

* @param mixed &...$_ [optional] * @return bool true on success or false on failure. */ public function bind_param($types, &$var1, &...$_) {} /** * Binds variables to a prepared statement for result storage * @link https://php.net/manual/en/mysqli-stmt.bind-result.php * @param mixed &$var1 The variable to be bound. * @param mixed &...$_ The variables to be bound. * @return bool true on success or false on failure. */ public function bind_result(&$var1, &...$_) {} /** * Closes a prepared statement * @link https://php.net/manual/en/mysqli-stmt.close.php * @return bool true on success or false on failure. */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public function close() {} /** * Seeks to an arbitrary row in statement result set * @link https://php.net/manual/en/mysqli-stmt.data-seek.php * @param int $offset

* Must be between zero and the total number of rows minus one (0.. * mysqli_stmt_num_rows - 1). *

* @return void */ #[TentativeType] public function data_seek(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $offset): void {} /** * Executes a prepared statement * @link https://php.net/manual/en/mysqli-stmt.execute.php * @param array|null $params [optional] An optional list array with as many elements * as there are bound parameters in the SQL statement being executed. Each value is treated as a string. * @return bool true on success or false on failure. */ #[TentativeType] public function execute(#[PhpStormStubsElementAvailable('8.1')] ?array $params = null): bool {} /** * Fetch results from a prepared statement into the bound variables * @link https://php.net/manual/en/mysqli-stmt.fetch.php * @return bool|null */ #[TentativeType] public function fetch(): ?bool {} /** * Get result of SHOW WARNINGS * @link https://php.net/manual/en/mysqli-stmt.get-warnings.php * @return object|false */ #[TentativeType] public function get_warnings(): mysqli_warning|false {} /** * Returns result set metadata from a prepared statement * @link https://php.net/manual/en/mysqli-stmt.result-metadata.php * @return mysqli_result|false a result object or false if an error occurred. */ #[TentativeType] public function result_metadata(): mysqli_result|false {} /** * Check if there are more query results from a multiple query * @link https://php.net/manual/en/mysqli-stmt.more-results.php * @return bool */ #[TentativeType] public function more_results(): bool {} /** * Reads the next result from a multiple query * @link https://php.net/manual/en/mysqli-stmt.next-result.php * @return bool */ #[TentativeType] public function next_result(): bool {} /** * Return the number of rows in statements result set * @link https://php.net/manual/en/mysqli-stmt.num-rows.php * @return string|int An integer representing the number of rows in result set. */ #[TentativeType] public function num_rows(): string|int {} /** * Send data in blocks * @link https://php.net/manual/en/mysqli-stmt.send-long-data.php * @param int $param_num

* Indicates which parameter to associate the data with. Parameters are * numbered beginning with 0. *

* @param string $data

* A string containing data to be sent. *

* @return bool true on success or false on failure. */ #[TentativeType] public function send_long_data( #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $param_num, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $data ): bool {} /** * No documentation available * @removed 5.4 */ #[Deprecated(since: '5.3')] public function stmt() {} /** * Frees stored result memory for the given statement handle * @link https://php.net/manual/en/mysqli-stmt.free-result.php * @return void */ #[TentativeType] public function free_result(): void {} /** * Resets a prepared statement * @link https://php.net/manual/en/mysqli-stmt.reset.php * @return bool true on success or false on failure. */ #[TentativeType] public function reset(): bool {} /** * Prepare an SQL statement for execution * @link https://php.net/manual/en/mysqli-stmt.prepare.php * @param string $query

* The query, as a string. It must consist of a single SQL statement. *

*

* The SQL statement may contain zero or more parameter markers * represented by question mark (?) characters at the appropriate positions. *

*

* The markers are legal only in certain places in SQL statements. * For example, they are permitted in the VALUES() list of an INSERT statement * (to specify column values for a row), or in a comparison with a column in * a WHERE clause to specify a comparison value. *

*

* However, they are not permitted for identifiers (such as table or column names), * or to specify both operands of a binary operator such as the = * equal sign. The latter restriction is necessary because it would be impossible * to determine the parameter type. In general, parameters are legal only in Data * Manipulation Language (DML) statements, and not in Data Definition Language * (DDL) statements. *

* @return bool true on success or false on failure. */ #[TentativeType] public function prepare(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $query): bool {} /** * Stores a result set in an internal buffer * @link https://php.net/manual/en/mysqli-stmt.store-result.php * @return bool true on success or false on failure. */ #[TentativeType] public function store_result(): bool {} /** * Gets a result set from a prepared statement as a mysqli_result object * @link https://php.net/manual/en/mysqli-stmt.get-result.php * @return mysqli_result|false Returns a resultset or FALSE on failure */ #[TentativeType] public function get_result(): mysqli_result|false {} } /** * Gets the number of affected rows in a previous MySQL operation * @link https://secure.php.net/manual/en/mysqli.affected-rows.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return string|int An integer greater than zero indicates the number of rows affected or retrieved. * Zero indicates that no records were updated for an UPDATE statement, * no rows matched the WHERE clause in the query or that no query has yet been executed. -1 indicates that the query returned an error * or that mysqli_affected_rows was called for an unbuffered SELECT query. */ function mysqli_affected_rows(mysqli $mysql): string|int {} /** * Turns on or off auto-committing database modifications * @link https://secure.php.net/manual/en/mysqli.autocommit.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param bool $enable Whether to turn on auto-commit or not. * @return bool */ function mysqli_autocommit(mysqli $mysql, bool $enable): bool {} /** * Starts a transaction * @link https://secure.php.net/manual/en/mysqli.begin-transaction.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param int $flags [optional] * @param string|null $name [optional] * @return bool true on success or false on failure. * @since 5.5 */ function mysqli_begin_transaction(mysqli $mysql, int $flags = 0, ?string $name): bool {} /** * Changes the user of the specified database connection * @link https://php.net/manual/en/mysqli.change-user.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param string $username The MySQL user name. * @param string $password The MySQL password. * @param string|null $database The database to change to. If desired, the NULL value may be passed resulting in only changing the user and not selecting a database. * @return bool */ function mysqli_change_user(mysqli $mysql, string $username, string $password, ?string $database): bool {} /** * Returns the current character set of the database connection * @link https://php.net/manual/en/mysqli.character-set-name.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return string The current character set of the connection */ function mysqli_character_set_name(mysqli $mysql): string {} /** * Closes a previously opened database connection * @link https://php.net/manual/en/mysqli.close.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return bool */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function mysqli_close(mysqli $mysql): bool {} /** * Commits the current transaction * @link https://php.net/manual/en/mysqli.commit.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param int $flags [optional] A bitmask of MYSQLI_TRANS_COR_* constants * @param string|null $name [optional] If provided then COMMITname is executed * @return bool */ function mysqli_commit(mysqli $mysql, int $flags = 0, ?string $name = null): bool {} /** * Open a new connection to the MySQL server * Alias of mysqli::__construct * @link https://php.net/manual/en/mysqli.construct.php * @param string|null $hostname Can be either a host name or an IP address. Passing the NULL value or the string "localhost" to this parameter, the local host is assumed. When possible, pipes will be used instead of the TCP/IP protocol. * @param string|null $username The MySQL user name. * @param string|null $password If not provided or NULL, the MySQL server will attempt to authenticate the user against those user records which have no password only. * @param string|null $database If provided will specify the default database to be used when performing queries. * @param int|null $port Specifies the port number to attempt to connect to the MySQL server. * @param string|null $socket Specifies the socket or named pipe that should be used. * @return mysqli|false object which represents the connection to a MySQL Server or false if an error occurred. */ function mysqli_connect(?string $hostname = null, ?string $username = null, ?string $password = null, ?string $database = null, ?int $port = null, ?string $socket = null): mysqli|false {} /** * Returns the error code from last connect call * @link https://php.net/manual/en/mysqli.connect-errno.php * @return int Last error code number from the last call to mysqli_connect(). Zero means no error occurred. */ function mysqli_connect_errno(): int {} /** * Returns a string description of the last connect error * @link https://php.net/manual/en/mysqli.connect-error.php * @return string|null Last error message string from the last call to mysqli_connect(). */ function mysqli_connect_error(): ?string {} /** * Adjusts the result pointer to an arbitrary row in the result * @link https://php.net/manual/en/mysqli-result.data-seek.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @param int $offset * @return bool Returns TRUE on success or FALSE on failure. */ function mysqli_data_seek(mysqli_result $result, int $offset): bool {} /** * Dump debugging information into the log * @link https://php.net/manual/en/mysqli.dump-debug-info.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return bool */ function mysqli_dump_debug_info(mysqli $mysql): bool {} /** * Performs debugging operations using the Fred Fish debugging library. * @link https://php.net/manual/en/mysqli.debug.php * @param string $options * @return bool */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function mysqli_debug(string $options): bool {} /** * Returns the error code for the most recent function call * @link https://php.net/manual/en/mysqli.errno.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return int An error code value for the last call, if it failed. zero means no error occurred. */ function mysqli_errno(mysqli $mysql): int {} /** * Returns a list of errors from the last command executed * @link https://php.net/manual/en/mysqli.error-list.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return array A list of errors, each as an associative array containing the errno, error, and sqlstate. * @since 5.4 */ #[ArrayShape([ "errno" => "int", "sqlstate" => "string", "error" => "string", ])] function mysqli_error_list(mysqli $mysql): array {} /** * Returns a list of errors from the last statement executed * @link https://secure.php.net/manual/en/mysqli-stmt.error-list.php * @param mysqli_stmt $statement A statement identifier returned by mysqli_stmt_init(). * @return array A list of errors, each as an associative array containing the errno, error, and sqlstate. * @since 5.4 */ function mysqli_stmt_error_list(mysqli_stmt $statement): array {} /** * Returns a string description of the last error * @link https://secure.php.net/manual/en/mysqli.error.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return string */ function mysqli_error(mysqli $mysql): string {} /** * Executes a prepared statement * @link https://php.net/manual/en/mysqli-stmt.execute.php * @param mysqli_stmt $statement * @param array|null $params [optional] An optional list array with as many elements * as there are bound parameters in the SQL statement being executed. Each value is treated as a string. * @return bool true on success or false on failure. */ function mysqli_stmt_execute(mysqli_stmt $statement, #[PhpStormStubsElementAvailable('8.1')] ?array $params = null): bool {} /** * Executes a prepared statement * Alias for mysqli_stmt_execute * @link https://php.net/manual/en/function.mysqli-execute.php * @param mysqli_stmt $statement * @param array|null $params [optional] An optional list array with as many elements * as there are bound parameters in the SQL statement being executed. Each value is treated as a string. * @return bool */ function mysqli_execute(mysqli_stmt $statement, #[PhpStormStubsElementAvailable('8.1')] ?array $params = null): bool {} /** * @param mysqli $mysql * @param string $query * @param array|null $params * @return mysqli_result|bool * @since 8.2 */ function mysqli_execute_query(mysqli $mysql, string $query, ?array $params = null): mysqli_result|bool {} /** * Returns the next field in the result set * @link https://secure.php.net/manual/en/mysqli-result.fetch-field.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @return object|false Returns an object which contains field definition information or FALSE if no field information is available. */ function mysqli_fetch_field(mysqli_result $result): object|false {} /** * Returns an array of objects representing the fields in a result set * @link https://secure.php.net/manual/en/mysqli-result.fetch-fields.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @return array Returns an array of objects which contains field definition information. */ function mysqli_fetch_fields(mysqli_result $result): array {} /** * Fetch meta-data for a single field * @link https://secure.php.net/manual/en/mysqli-result.fetch-field-direct.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @param int $index The field number. This value must be in the range from 0 to number of fields - 1. * @return object|false Returns an object which contains field definition information or FALSE if no field information for specified fieldnr is available. */ function mysqli_fetch_field_direct(mysqli_result $result, int $index): object|false {} /** * Returns the lengths of the columns of the current row in the result set * @link https://php.net/manual/en/mysqli-result.lengths.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @return int[]|false An array of integers representing the size of each column (not including any terminating null characters). FALSE if an error occurred. */ function mysqli_fetch_lengths(mysqli_result $result): array|false {} /** * Fetch all result rows as an associative array, a numeric array, or both * @link https://php.net/manual/en/mysqli-result.fetch-all.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @param int $mode * @return array Returns an array of associative or numeric arrays holding result rows. */ function mysqli_fetch_all( mysqli_result $result, #[PhpStormStubsElementAvailable(from: '7.0')] int $mode = MYSQLI_NUM ): array {} /** * Fetch the next row of a result set as an associative, a numeric array, or both * @link https://php.net/manual/en/mysqli-result.fetch-array.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @param int $mode * @return array|false|null an array representing the fetched row, * null if there are no more rows in the result set, or false on failure. */ function mysqli_fetch_array(mysqli_result $result, int $mode = MYSQLI_BOTH): array|false|null {} /** * Fetch the next row of a result set as an associative array * @link https://php.net/manual/en/mysqli-result.fetch-assoc.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @return array|false|null an associative array representing the fetched row, * where each key in the array represents the name of one of the result set's columns, * null if there are no more rows in the result set, or false on failure. */ function mysqli_fetch_assoc(mysqli_result $result): array|null|false {} /** * @template T * * Fetch the next row of a result set as an object * @link https://php.net/manual/en/mysqli-result.fetch-object.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @param class-string $class [optional] The name of the class to instantiate, set the properties of and return. If not specified, a stdClass object is returned. * @param array $constructor_args [optional] An optional array of parameters to pass to the constructor for class_name objects. * @return T|stdClass|null|false an object representing the fetched row, * where each property represents the name of the result set's column, * null if there are no more rows in the result set, or false on failure. */ function mysqli_fetch_object(mysqli_result $result, string $class = 'stdClass', array $constructor_args = []): object|null|false {} /** * Fetch the next row of a result set as an enumerated array * @link https://php.net/manual/en/mysqli-result.fetch-row.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @return array|null|false an enumerated array representing the fetched row, * null if there are no more rows in the result set, or false on failure. * @link https://php.net/manual/en/mysqli-result.fetch-row.php */ function mysqli_fetch_row(mysqli_result $result): array|false|null {} /** * Fetch a single column from the next row of a result set * @link https://php.net/manual/en/mysqli-result.fetch-column.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @param int $column [optional]

* 0-indexed number of the column you wish to retrieve from the row. * If no value is supplied, the first column will be returned. *

* @return string|int|float|false|null a single column from * the next row of a result set or false if there are no more rows. */ #[PhpStormStubsElementAvailable('8.1')] function mysqli_fetch_column(mysqli_result $result, int $column = 0): string|int|float|false|null {} /** * Returns the number of columns for the most recent query * @link https://php.net/manual/en/mysqli.field-count.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return int An integer representing the number of fields in a result set. */ function mysqli_field_count(mysqli $mysql): int {} /** * Set result pointer to a specified field offset * @link https://php.net/manual/en/mysqli-result.field-seek.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @param int $index The field number. This value must be in the range from 0 to number of fields - 1. */ #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] function mysqli_field_seek(mysqli_result $result, int $index) {} /** * Get current field offset of a result pointer * @link https://php.net/manual/en/mysqli-result.current-field.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @return int */ function mysqli_field_tell(mysqli_result $result): int {} /** * Frees the memory associated with a result * @link https://php.net/manual/en/mysqli-result.free.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @return void */ function mysqli_free_result(mysqli_result $result): void {} /** * Returns client Zval cache statistics * Available only with mysqlnd. * @link https://php.net/manual/en/function.mysqli-get-cache-stats.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return array|false an array with client Zval cache stats if success, false otherwise. * @removed 5.4 */ function mysqli_get_cache_stats(mysqli $mysql) {} /** * Returns statistics about the client connection * @link https://php.net/manual/en/mysqli.get-connection-stats.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return array an array with connection stats. */ function mysqli_get_connection_stats(mysqli $mysql): array {} /** * Returns client per-process statistics * @link https://php.net/manual/en/function.mysqli-get-client-stats.php * @return array an array with client stats. */ function mysqli_get_client_stats(): array {} /** * Returns a character set object * @link https://php.net/manual/en/mysqli.get-charset.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return object|null */ function mysqli_get_charset(mysqli $mysql): ?object {} /** * Get MySQL client info * @link https://php.net/manual/en/mysqli.get-client-info.php * @param mysqli|null $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return string|null A string that represents the MySQL client library version */ #[LanguageLevelTypeAware(['8.0' => 'string'], default: '?string')] function mysqli_get_client_info( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.1')] mysqli $mysql, #[PhpStormStubsElementAvailable(from: '8.0')] ?mysqli $mysql = null ) {} /** * Returns the MySQL client version as an integer * @link https://php.net/manual/en/mysqli.get-client-version.php * @return int */ function mysqli_get_client_version(#[PhpStormStubsElementAvailable(from: '5.3', to: '7.3')] $link): int {} /** * Returns a string representing the type of connection used * @link https://php.net/manual/en/mysqli.get-host-info.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return string A character string representing the server hostname and the connection type. */ function mysqli_get_host_info(mysqli $mysql): string {} /** * Return information about open and cached links * @link https://php.net/manual/en/function.mysqli-get-links-stats.php * @return array mysqli_get_links_stats() returns an associative array with three elements, keyed as follows: *
*
* total
*
*

* An integer indicating the total number of open links in * any state. *

*
* *
* active_plinks
*
*

* An integer representing the number of active persistent * connections. *

*
* *
* cached_plinks
*
*

* An integer representing the number of inactive persistent * connections. *

*
* *
* @since 5.6 */ #[ArrayShape(["total" => "int", "active_plinks" => "int", "cached_plinks" => "int"])] function mysqli_get_links_stats(): array {} /** * Returns the version of the MySQL protocol used * @link https://php.net/manual/en/mysqli.get-proto-info.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return int Returns an integer representing the protocol version */ function mysqli_get_proto_info(mysqli $mysql): int {} /** * Returns the version of the MySQL server * @link https://php.net/manual/en/mysqli.get-server-info.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return string A character string representing the server version. */ function mysqli_get_server_info(mysqli $mysql): string {} /** * Returns the version of the MySQL server as an integer * @link https://php.net/manual/en/mysqli.get-server-version.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return int An integer representing the server version. * The form of this version number is main_version * 10000 + minor_version * 100 + sub_version (i.e. version 4.1.0 is 40100). */ function mysqli_get_server_version(mysqli $mysql): int {} /** * Get result of SHOW WARNINGS * @link https://php.net/manual/en/mysqli.get-warnings.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return mysqli_warning|false */ function mysqli_get_warnings(mysqli $mysql): mysqli_warning|false {} /** * Initializes MySQLi and returns a resource for use with mysqli_real_connect() * @link https://php.net/manual/en/mysqli.init.php * @return mysqli|false * @see mysqli_real_connect() */ function mysqli_init(): mysqli|false {} /** * Retrieves information about the most recently executed query * @link https://php.net/manual/en/mysqli.info.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return string|null A character string representing additional information about the most recently executed query. */ function mysqli_info(mysqli $mysql): ?string {} /** * Returns the value generated for an AUTO_INCREMENT column by the last query * @link https://php.net/manual/en/mysqli.insert-id.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return int|string The value of the AUTO_INCREMENT field that was updated by the previous query. Returns zero if there was no previous query on the connection or if the query did not update an AUTO_INCREMENT value. * If the number is greater than the maximum int value, it will be returned as a string. */ function mysqli_insert_id(mysqli $mysql): string|int {} /** * Asks the server to kill a MySQL thread * @link https://php.net/manual/en/mysqli.kill.php * @see mysqli_thread_id() * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param int $process_id * @return bool */ #[Deprecated("The function is deprecated", since: "8.4")] function mysqli_kill(mysqli $mysql, int $process_id): bool {} /** * Unsets user defined handler for load local infile command * @link https://php.net/manual/en/mysqli.set-local-infile-default.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return void * @removed 5.5 */ function mysqli_set_local_infile_default(mysqli $mysql) {} /** * Set callback function for LOAD DATA LOCAL INFILE command * @link https://php.net/manual/en/mysqli.set-local-infile-handler.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param callable $read_func * @return bool * @removed 5.5 */ function mysqli_set_local_infile_handler(mysqli $mysql, callable $read_func): bool {} /** * Check if there are any more query results from a multi query * @link https://php.net/manual/en/mysqli.more-results.php * @see mysqli_multi_query() * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return bool */ function mysqli_more_results(mysqli $mysql): bool {} /** * Performs one or more queries on the database * @link https://php.net/manual/en/mysqli.multi-query.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param string $query A string containing the queries to be executed. Multiple queries must be separated by a semicolon. * @return bool Returns FALSE if the first statement failed. To retrieve subsequent errors from other statements you have to call mysqli_next_result() first. */ function mysqli_multi_query( mysqli $mysql, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] string $query, #[PhpStormStubsElementAvailable(from: '7.1', to: '7.4')] string $query = null, #[PhpStormStubsElementAvailable(from: '8.0')] string $query ): bool {} /** * Prepare next result from multi_query * @link https://php.net/manual/en/mysqli.next-result.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return bool */ function mysqli_next_result(mysqli $mysql): bool {} /** * Gets the number of fields in the result set * @link https://php.net/manual/en/mysqli-result.field-count.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @return int */ function mysqli_num_fields(mysqli_result $result): int {} /** * Gets the number of rows in a result * @link https://php.net/manual/en/mysqli-result.num-rows.php * @param mysqli_result $result A mysqli_result object returned by mysqli_query(), * mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result(). * @return string|int Returns number of rows in the result set. */ function mysqli_num_rows(mysqli_result $result): string|int {} /** * Set options * @link https://php.net/manual/en/mysqli.options.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param int $option * @param string|int $value * @return bool */ function mysqli_options(mysqli $mysql, int $option, $value): bool {} /** * Pings a server connection, or tries to reconnect if the connection has gone down * @link https://php.net/manual/en/mysqli.ping.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return bool */ #[Deprecated("The function is deprecated", since: "8.4")] function mysqli_ping(mysqli $mysql): bool {} /** * Poll connections * @link https://php.net/manual/en/mysqli.poll.php * @param array|null &$read * @param array|null &$error * @param array &$reject * @param int $seconds * @param int $microseconds [optional] * @return int|false number of ready connections upon success, FALSE otherwise. */ function mysqli_poll(?array &$read, ?array &$error, array &$reject, int $seconds, int $microseconds = 0): int|false {} /** * Prepares an SQL statement for execution * @link https://php.net/manual/en/mysqli.prepare.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param string $query The query, as a string. It must consist of a single SQL statement. * The SQL statement may contain zero or more parameter markers represented by question mark (?) characters at the appropriate positions. * @return mysqli_stmt|false A statement object or FALSE if an error occurred. */ function mysqli_prepare(mysqli $mysql, string $query): mysqli_stmt|false {} /** * Enables or disables internal report functions * @link https://php.net/manual/en/function.mysqli-report.php * @param int $flags

* * Supported flags * * * * * * * * * * * * * * * * * * * * * * * * *
NameDescription
MYSQLI_REPORT_OFFTurns reporting off
MYSQLI_REPORT_ERRORReport errors from mysqli function calls
MYSQLI_REPORT_STRICT * Throw mysqli_sql_exception for errors * instead of warnings *
MYSQLI_REPORT_INDEXReport if no index or bad index was used in a query
MYSQLI_REPORT_ALLSet all options (report all)
*

* @return bool */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] function mysqli_report(int $flags) {} /** * Performs a query on the database * @link https://php.net/manual/en/mysqli.query.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param string $query An SQL query * @param int $result_mode * @return mysqli_result|bool * For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries, mysqli_query() will return a mysqli_result object. * For other successful queries mysqli_query() will return TRUE. * Returns FALSE on failure. */ function mysqli_query( mysqli $mysql, string $query, #[PhpStormStubsElementAvailable(from: '7.1')] int $result_mode = MYSQLI_STORE_RESULT ): mysqli_result|bool {} /** * Opens a connection to a mysql server * @link https://php.net/manual/en/mysqli.real-connect.php * @see mysqli_connect() * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param string|null $hostname [optional] * @param string|null $username [optional] * @param string|null $password [optional] * @param string|null $database [optional] * @param int|null $port [optional] * @param string|null $socket [optional] * @param int $flags * @return bool */ function mysqli_real_connect(mysqli $mysql, ?string $hostname, ?string $username, ?string $password, ?string $database, ?int $port, ?string $socket, int $flags = 0): bool {} /** * Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection * @link https://php.net/manual/en/mysqli.real-escape-string.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param string $string The string to be escaped. Characters encoded are NUL (ASCII 0), \n, \r, \, ', ", and Control-Z. * @return string */ function mysqli_real_escape_string(mysqli $mysql, string $string): string {} /** * Execute an SQL query * @link https://php.net/manual/en/mysqli.real-query.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param string $query * @return bool */ function mysqli_real_query( mysqli $mysql, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] string $query, #[PhpStormStubsElementAvailable(from: '7.1', to: '7.4')] string $query = null, #[PhpStormStubsElementAvailable(from: '8.0')] string $query ): bool {} /** * Get result from async query * Available only with mysqlnd. * @link https://php.net/manual/en/mysqli.reap-async-query.php * @see mysqli_poll() * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return mysqli_result|bool mysqli_result in success, FALSE otherwise. */ function mysqli_reap_async_query(mysqli $mysql): mysqli_result|bool {} /** * Removes the named savepoint from the set of savepoints of the current transaction * @link https://secure.php.net/manual/en/mysqli.release-savepoint.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param string $name * @return bool Returns TRUE on success or FALSE on failure. * @since 5.5 */ function mysqli_release_savepoint(mysqli $mysql, string $name): bool {} /** * Rolls back current transaction * @link https://php.net/manual/en/mysqli.rollback.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param int $flags [optional] A bitmask of MYSQLI_TRANS_COR_* constants * @param string|null $name [optional] If provided then ROLLBACKname is executed * @return bool */ function mysqli_rollback(mysqli $mysql, int $flags = 0, ?string $name): bool {} /** * Set a named transaction savepoint * @link https://secure.php.net/manual/en/mysqli.savepoint.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param string $name * @return bool Returns TRUE on success or FALSE on failure. * @since 5.5 */ function mysqli_savepoint(mysqli $mysql, string $name): bool {} /** * Selects the default database for database queries * @link https://php.net/manual/en/mysqli.select-db.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param string $database * @return bool */ function mysqli_select_db(mysqli $mysql, string $database): bool {} /** * Sets the client character set * @link https://php.net/manual/en/mysqli.set-charset.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param string $charset * @return bool */ function mysqli_set_charset(mysqli $mysql, string $charset): bool {} /** * Returns the total number of rows changed, deleted, inserted, or matched by the last statement executed * @link https://php.net/manual/en/mysqli-stmt.affected-rows.php * @param mysqli_stmt $statement * @return int|string If the number of affected rows is greater than maximum PHP int value, the number of affected rows will be returned as a string value. */ function mysqli_stmt_affected_rows(mysqli_stmt $statement): string|int {} /** * Used to get the current value of a statement attribute * @link https://php.net/manual/en/mysqli-stmt.attr-get.php * @param mysqli_stmt $statement * @param int $attribute * @return int|false Returns FALSE if the attribute is not found, otherwise returns the value of the attribute. */ #[LanguageLevelTypeAware(["8.0" => "int"], default: "int|false")] function mysqli_stmt_attr_get(mysqli_stmt $statement, int $attribute): false|int {} /** * Used to modify the behavior of a prepared statement * @link https://php.net/manual/en/mysqli-stmt.attr-set.php * @param mysqli_stmt $statement * @param int $attribute * @param int $value * @return bool */ function mysqli_stmt_attr_set(mysqli_stmt $statement, int $attribute, int $value): bool {} /** * Returns the number of fields in the given statement * @link https://php.net/manual/en/mysqli-stmt.field-count.php * @param mysqli_stmt $statement * @return int */ function mysqli_stmt_field_count(mysqli_stmt $statement): int {} /** * Initializes a statement and returns an object for use with mysqli_stmt_prepare * @link https://php.net/manual/en/mysqli.stmt-init.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return mysqli_stmt|false */ function mysqli_stmt_init(mysqli $mysql): mysqli_stmt|false {} /** * Prepares an SQL statement for execution * @link https://php.net/manual/en/mysqli-stmt.prepare.php * @param mysqli_stmt $statement * @param string $query * @return bool */ function mysqli_stmt_prepare(mysqli_stmt $statement, string $query): bool {} /** * Returns result set metadata from a prepared statement * @link https://php.net/manual/en/mysqli-stmt.result-metadata.php * @param mysqli_stmt $statement * @return mysqli_result|false Returns a result object or FALSE if an error occurred */ function mysqli_stmt_result_metadata(mysqli_stmt $statement): mysqli_result|false {} /** * Send data in blocks * @link https://php.net/manual/en/mysqli-stmt.send-long-data.php * @param mysqli_stmt $statement * @param int $param_num * @param string $data * @return bool */ function mysqli_stmt_send_long_data(mysqli_stmt $statement, int $param_num, string $data): bool {} /** * Binds variables to a prepared statement as parameters * @link https://php.net/manual/en/mysqli-stmt.bind-param.php * @param mysqli_stmt $statement A statement identifier returned by mysqli_stmt_init() * @param string $types

* A string that contains one or more characters which specify the types * for the corresponding bind variables: * * Type specification chars * * * * * * * * * * * * * * * * * * * * *
CharacterDescription
icorresponding variable has type integer
dcorresponding variable has type double
scorresponding variable has type string
bcorresponding variable is a blob and will be sent in packets
*

* @param mixed &$var1

* The number of variables and length of string * types must match the parameters in the statement. *

* @param mixed &...$vars * @return bool true on success or false on failure. */ function mysqli_stmt_bind_param( mysqli_stmt $statement, string $types, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] mixed &$vars, mixed &...$vars ): bool {} /** * Binds variables to a prepared statement for result storage * @link https://php.net/manual/en/mysqli-stmt.bind-result.php * @param mysqli_stmt $statement Statement * @param mixed &...$vars The variables to be bound. * @return bool */ function mysqli_stmt_bind_result( mysqli_stmt $statement, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] mixed &$vars, mixed &...$vars ): bool {} /** * Fetch results from a prepared statement into the bound variables * @link https://php.net/manual/en/mysqli-stmt.fetch.php * @param mysqli_stmt $statement * @return bool|null */ function mysqli_stmt_fetch(mysqli_stmt $statement): ?bool {} /** * Frees stored result memory for the given statement handle * @link https://php.net/manual/en/mysqli-stmt.free-result.php * @param mysqli_stmt $statement * @return void */ function mysqli_stmt_free_result(mysqli_stmt $statement): void {} /** * Gets a result set from a prepared statement as a mysqli_result object * @link https://php.net/manual/en/mysqli-stmt.get-result.php * @param mysqli_stmt $statement * @return mysqli_result|false Returns false on failure. For successful queries which produce a result set, * such as SELECT, SHOW, DESCRIBE or EXPLAIN, mysqli_stmt_get_result() will return a mysqli_result object. * For other successful queries, mysqli_stmt_get_result() will return false. */ function mysqli_stmt_get_result(mysqli_stmt $statement): mysqli_result|false {} /** * Get result of SHOW WARNINGS * @link https://php.net/manual/en/mysqli-stmt.get-warnings.php * @param mysqli_stmt $statement * @return mysqli_warning|false (not documented, but it's probably a mysqli_warning object) */ function mysqli_stmt_get_warnings(mysqli_stmt $statement): mysqli_warning|false {} /** * Get the ID generated from the previous INSERT operation * @link https://php.net/manual/en/mysqli-stmt.insert-id.php * @param mysqli_stmt $statement * @return string|int */ function mysqli_stmt_insert_id(mysqli_stmt $statement): string|int {} /** * Resets a prepared statement * @link https://php.net/manual/en/mysqli-stmt.reset.php * @param mysqli_stmt $statement * @return bool */ function mysqli_stmt_reset(mysqli_stmt $statement): bool {} /** * Returns the number of parameter for the given statement * @link https://php.net/manual/en/mysqli-stmt.param-count.php * @param mysqli_stmt $statement * @return int */ function mysqli_stmt_param_count(mysqli_stmt $statement): int {} /** * Returns the SQLSTATE error from previous MySQL operation * @link https://php.net/manual/en/mysqli.sqlstate.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return string Returns a string containing the SQLSTATE error code for the last error. The error code consists of five characters. '00000' means no error. */ function mysqli_sqlstate(mysqli $mysql): string {} /** * Gets the current system status * @link https://php.net/manual/en/mysqli.stat.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return string|false A string describing the server status. FALSE if an error occurred. */ function mysqli_stat(mysqli $mysql): string|false {} /** * Used for establishing secure connections using SSL * @link https://secure.php.net/manual/en/mysqli.ssl-set.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param string|null $key The path name to the key file * @param string|null $certificate The path name to the certificate file * @param string|null $ca_certificate The path name to the certificate authority file * @param string|null $ca_path The pathname to a directory that contains trusted SSL CA certificates in PEM format * @param string|null $cipher_algos A list of allowable ciphers to use for SSL encryption * @return bool This function always returns TRUE value. */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function mysqli_ssl_set( mysqli $mysql, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: 'string')] $key, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: 'string')] $certificate, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: 'string')] $ca_certificate, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: 'string')] $ca_path, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: 'string')] $cipher_algos ): bool {} /** * Closes a prepared statement * @link https://php.net/manual/en/mysqli-stmt.close.php * @param mysqli_stmt $statement * @return bool */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function mysqli_stmt_close(mysqli_stmt $statement): bool {} /** * Seeks to an arbitrary row in statement result set * @link https://php.net/manual/en/mysqli-stmt.data-seek.php * @param mysqli_stmt $statement * @param int $offset * @return void */ function mysqli_stmt_data_seek(mysqli_stmt $statement, int $offset): void {} /** * Returns the error code for the most recent statement call * @link https://php.net/manual/en/mysqli-stmt.errno.php * @param mysqli_stmt $statement * @return int */ function mysqli_stmt_errno(mysqli_stmt $statement): int {} /** * Returns a string description for last statement error * @link https://php.net/manual/en/mysqli-stmt.error.php * @param mysqli_stmt $statement * @return string */ function mysqli_stmt_error(mysqli_stmt $statement): string {} /** * Check if there are more query results from a multiple query * @link https://php.net/manual/en/mysqli-stmt.more-results.php * @param mysqli_stmt $statement * @return bool */ function mysqli_stmt_more_results(mysqli_stmt $statement): bool {} /** * Reads the next result from a multiple query * @link https://php.net/manual/en/mysqli-stmt.next-result.php * @param mysqli_stmt $statement * @return bool */ function mysqli_stmt_next_result(mysqli_stmt $statement): bool {} /** * Return the number of rows in statements result set * @link https://php.net/manual/en/mysqli-stmt.num-rows.php * @param mysqli_stmt $statement * @return string|int */ function mysqli_stmt_num_rows(mysqli_stmt $statement): string|int {} /** * Returns SQLSTATE error from previous statement operation * @link https://php.net/manual/en/mysqli-stmt.sqlstate.php * @param mysqli_stmt $statement * @return string Returns a string containing the SQLSTATE error code for the last error. The error code consists of five characters. '00000' means no error. */ function mysqli_stmt_sqlstate(mysqli_stmt $statement): string {} /** * Transfers a result set from a prepared statement * @link https://php.net/manual/en/mysqli-stmt.store-result.php * @param mysqli_stmt $statement * @return bool */ function mysqli_stmt_store_result(mysqli_stmt $statement): bool {} /** * Transfers a result set from the last query * @link https://php.net/manual/en/mysqli.store-result.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param int $mode [optional] The option that you want to set * @return mysqli_result|false */ function mysqli_store_result(mysqli $mysql, int $mode = 0): mysqli_result|false {} /** * Returns the thread ID for the current connection * @link https://php.net/manual/en/mysqli.thread-id.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return int Returns the Thread ID for the current connection. */ function mysqli_thread_id(mysqli $mysql): int {} /** * Returns whether thread safety is given or not * @link https://php.net/manual/en/mysqli.thread-safe.php * @return bool */ function mysqli_thread_safe(): bool {} /** * Initiate a result set retrieval * @link https://php.net/manual/en/mysqli.use-result.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return mysqli_result|false */ function mysqli_use_result(mysqli $mysql): mysqli_result|false {} /** * Returns the number of warnings from the last query for the given link * @link https://php.net/manual/en/mysqli.warning-count.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return int */ function mysqli_warning_count(mysqli $mysql): int {} /** * Flushes tables or caches, or resets the replication server information * @link https://php.net/manual/en/mysqli.refresh.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param int $flags * @return bool */ #[Deprecated("The function is deprecated", since: "8.4")] function mysqli_refresh(mysqli $mysql, int $flags): bool {} /** * Alias for mysqli_stmt_bind_param * @link https://php.net/manual/en/function.mysqli-bind-param.php * @param mysqli_stmt $statement * @param string $types * @removed 5.4 */ #[Deprecated(since: '5.3')] function mysqli_bind_param(mysqli_stmt $statement, string $types) {} /** * Alias for mysqli_stmt_bind_result * @link https://php.net/manual/en/function.mysqli-bind-result.php * @param mysqli_stmt $statement * @param string $types * @param mixed &$var1 * @removed 5.4 */ #[Deprecated(since: '5.3')] function mysqli_bind_result(mysqli_stmt $statement, string $types, mixed &$var1) {} /** * Alias of mysqli_character_set_name * @link https://php.net/manual/en/function.mysqli-client-encoding.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @return string * @removed 5.4 */ #[Deprecated(since: '5.3')] function mysqli_client_encoding(mysqli $mysql): string {} /** * Alias of mysqli_real_escape_string * @link https://php.net/manual/en/function.mysqli-escape-string.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param string $string The string to be escaped * @return string */ function mysqli_escape_string( mysqli $mysql, string $string, #[PhpStormStubsElementAvailable(from: '7.1', to: '7.4')] $resultmode = null ): string {} /** * Alias for mysqli_stmt_fetch * @link https://php.net/manual/en/function.mysqli-fetch.php * @param mysqli_stmt $statement * @return bool * @removed 5.4 */ #[Deprecated(since: '5.3')] function mysqli_fetch(mysqli_stmt $statement): bool {} /** * Alias for mysqli_stmt_param_count * @link https://php.net/manual/en/function.mysqli-param-count.php * @param mysqli_stmt $statement * @return int * @removed 5.4 */ #[Deprecated(since: '5.3')] function mysqli_param_count(mysqli_stmt $statement): int {} /** * Alias for mysqli_stmt_result_metadata * @link https://php.net/manual/en/function.mysqli-get-metadata.php * @param mysqli_stmt $statement * @return mysqli_result|false Returns a result object or FALSE if an error occurred * @removed 5.4 */ #[Deprecated(since: '5.3')] function mysqli_get_metadata(mysqli_stmt $statement): false|mysqli_result {} /** * Alias for mysqli_stmt_send_long_data * @link https://php.net/manual/en/function.mysqli-send-long-data.php * @param mysqli_stmt $statement * @param int $param_num * @param string $data * @return bool * @removed 5.4 */ #[Deprecated(since: '5.3')] function mysqli_send_long_data(mysqli_stmt $statement, int $param_num, string $data): bool {} /** * Alias of mysqli_options * @link https://php.net/manual/en/function.mysqli-set-opt.php * @param mysqli $mysql A link identifier returned by mysqli_connect() or mysqli_init() * @param int $option * @param string|int $value * @return bool */ function mysqli_set_opt( #[PhpStormStubsElementAvailable(from: '8.0')] mysqli $mysql, #[PhpStormStubsElementAvailable(from: '8.0')] int $option, #[PhpStormStubsElementAvailable(from: '8.0')] $value ): bool {} /** *

* Read options from the named group from my.cnf * or the file specified with MYSQLI_READ_DEFAULT_FILE *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_READ_DEFAULT_GROUP', 5); /** *

* Read options from the named option file instead of from my.cnf *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_READ_DEFAULT_FILE', 4); /** *

* Connect timeout in seconds *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_OPT_CONNECT_TIMEOUT', 0); /** *

* Enables command LOAD LOCAL INFILE *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_OPT_LOCAL_INFILE', 8); /** *

* RSA public key file used with the SHA-256 based authentication. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_SERVER_PUBLIC_KEY', 35); /** *

* Command to execute when connecting to MySQL server. Will automatically be re-executed when reconnecting. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_INIT_COMMAND', 3); define('MYSQLI_OPT_NET_CMD_BUFFER_SIZE', 202); define('MYSQLI_OPT_NET_READ_BUFFER_SIZE', 203); define('MYSQLI_OPT_INT_AND_FLOAT_NATIVE', 201); /** *

* Use SSL (encrypted protocol). This option should not be set by application programs; * it is set internally in the MySQL client library *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_CLIENT_SSL', 2048); /** *

* Use compression protocol *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_CLIENT_COMPRESS', 32); /** *

* Allow interactive_timeout seconds * (instead of wait_timeout seconds) of inactivity before * closing the connection. The client's session * wait_timeout variable will be set to * the value of the session interactive_timeout variable. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_CLIENT_INTERACTIVE', 1024); /** *

* Allow spaces after function names. Makes all functions names reserved words. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_CLIENT_IGNORE_SPACE', 256); /** *

* Don't allow the db_name.tbl_name.col_name syntax. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_CLIENT_NO_SCHEMA', 16); define('MYSQLI_CLIENT_FOUND_ROWS', 2); /** *

* For using buffered resultsets *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_STORE_RESULT', 0); /** *

* For using unbuffered resultsets *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_USE_RESULT', 1); define('MYSQLI_ASYNC', 8); /** *

* Columns are returned into the array having the fieldname as the array index. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_ASSOC', 1); /** *

* Columns are returned into the array having an enumerated index. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_NUM', 2); /** *

* Columns are returned into the array having both a numerical index and the fieldname as the associative index. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_BOTH', 3); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH', 0); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_STMT_ATTR_CURSOR_TYPE', 1); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_CURSOR_TYPE_NO_CURSOR', 0); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_CURSOR_TYPE_READ_ONLY', 1); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_CURSOR_TYPE_FOR_UPDATE', 2); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_CURSOR_TYPE_SCROLLABLE', 4); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_STMT_ATTR_PREFETCH_ROWS', 2); /** *

* Indicates that a field is defined as NOT NULL *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_NOT_NULL_FLAG', 1); /** *

* Field is part of a primary index *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_PRI_KEY_FLAG', 2); /** *

* Field is part of a unique index. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_UNIQUE_KEY_FLAG', 4); /** *

* Field is part of an index. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_MULTIPLE_KEY_FLAG', 8); /** *

* Field is defined as BLOB *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_BLOB_FLAG', 16); /** *

* Field is defined as UNSIGNED *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_UNSIGNED_FLAG', 32); /** *

* Field is defined as ZEROFILL *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_ZEROFILL_FLAG', 64); /** *

* Field is defined as AUTO_INCREMENT *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_AUTO_INCREMENT_FLAG', 512); /** *

* Field is defined as TIMESTAMP *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TIMESTAMP_FLAG', 1024); /** *

* Field is defined as SET *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_SET_FLAG', 2048); /** *

* Field is defined as NUMERIC *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_NUM_FLAG', 32768); /** *

* Field is part of an multi-index *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_PART_KEY_FLAG', 16384); /** *

* Field is part of GROUP BY *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_GROUP_FLAG', 32768); /** *

* Field is defined as ENUM. Available since PHP 5.3.0. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_ENUM_FLAG', 256); define('MYSQLI_BINARY_FLAG', 128); define('MYSQLI_NO_DEFAULT_VALUE_FLAG', 4096); define('MYSQLI_ON_UPDATE_NOW_FLAG', 8192); define('MYSQLI_TRANS_START_READ_ONLY', 4); define('MYSQLI_TRANS_START_READ_WRITE', 2); define('MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT', 1); /** *

* Field is defined as DECIMAL *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_DECIMAL', 0); /** *

* Field is defined as TINYINT *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_TINY', 1); /** *

* Field is defined as SMALLINT *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_SHORT', 2); /** *

* Field is defined as INT *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_LONG', 3); /** *

* Field is defined as FLOAT *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_FLOAT', 4); /** *

* Field is defined as DOUBLE *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_DOUBLE', 5); /** *

* Field is defined as DEFAULT NULL *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_NULL', 6); /** *

* Field is defined as TIMESTAMP *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_TIMESTAMP', 7); /** *

* Field is defined as BIGINT *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_LONGLONG', 8); /** *

* Field is defined as MEDIUMINT *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_INT24', 9); /** *

* Field is defined as DATE *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_DATE', 10); /** *

* Field is defined as TIME *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_TIME', 11); /** *

* Field is defined as DATETIME *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_DATETIME', 12); /** *

* Field is defined as YEAR *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_YEAR', 13); /** *

* Field is defined as DATE *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_NEWDATE', 14); /** *

* Field is defined as ENUM *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_ENUM', 247); /** *

* Field is defined as SET *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_SET', 248); /** *

* Field is defined as TINYBLOB *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_TINY_BLOB', 249); /** *

* Field is defined as MEDIUMBLOB *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_MEDIUM_BLOB', 250); /** *

* Field is defined as LONGBLOB *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_LONG_BLOB', 251); /** *

* Field is defined as BLOB *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_BLOB', 252); /** *

* Field is defined as VARCHAR *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_VAR_STRING', 253); /** *

* Field is defined as STRING *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_STRING', 254); /** *

* Field is defined as CHAR *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_CHAR', 1); /** *

* Field is defined as INTERVAL *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_INTERVAL', 247); /** *

* Field is defined as GEOMETRY *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_GEOMETRY', 255); /** *

* Precision math DECIMAL or NUMERIC field (MySQL 5.0.3 and up) *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_NEWDECIMAL', 246); /** *

* Field is defined as BIT (MySQL 5.0.3 and up) *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_TYPE_BIT', 16); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_SET_CHARSET_NAME', 7); /** *

* No more data available for bind variable *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_NO_DATA', 100); /** *

* Data truncation occurred. Available since PHP 5.1.0 and MySQL 5.0.5. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_DATA_TRUNCATED', 101); /** *

* Report if no index or bad index was used in a query. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_REPORT_INDEX', 4); /** *

* Report errors from mysqli function calls. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_REPORT_ERROR', 1); /** *

* Throw a mysqli_sql_exception for errors instead of warnings. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_REPORT_STRICT', 2); /** *

* Set all options on (report all). *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_REPORT_ALL', 255); /** *

* Turns reporting off. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_REPORT_OFF', 0); /** *

* Is set to 1 if mysqli_debug functionality is enabled. *

* @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_DEBUG_TRACE_ENABLED', 0); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED', 16); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_SERVER_QUERY_NO_INDEX_USED', 32); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_REFRESH_GRANT', 1); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_REFRESH_LOG', 2); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_REFRESH_TABLES', 4); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_REFRESH_HOSTS', 8); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_REFRESH_STATUS', 16); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_REFRESH_THREADS', 32); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_REFRESH_SLAVE', 64); /** * @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_REFRESH_MASTER', 128); define('MYSQLI_SERVER_QUERY_WAS_SLOW', 2048); define('MYSQLI_REFRESH_BACKUP_LOG', 2097152); // End of mysqli v.0.1 /** @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_OPT_SSL_VERIFY_SERVER_CERT', 21); /** @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_SET_CHARSET_DIR', 6); /** @link https://php.net/manual/en/mysqli.constants.php */ define('MYSQLI_SERVER_PS_OUT_PARAMS', 4096); define('MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT', 1073741824); define('MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT', 64); define('MYSQLI_CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS', 4194304); define('MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS', 37); define('MYSQLI_OPT_READ_TIMEOUT', 11); define('MYSQLI_STORE_RESULT_COPY_DATA', 16); define('MYSQLI_TYPE_JSON', 245); define('MYSQLI_TRANS_COR_AND_CHAIN', 1); define('MYSQLI_TRANS_COR_AND_NO_CHAIN', 2); define('MYSQLI_TRANS_COR_RELEASE', 4); define('MYSQLI_TRANS_COR_NO_RELEASE', 8); define('MYSQLI_OPT_LOAD_DATA_LOCAL_DIR', 43); define('MYSQLI_REFRESH_REPLICA', 64); /** * @since 8.1 */ define('MYSQLI_IS_MARIADB', 0); /** * @since 8.4 */ define('MYSQLI_TYPE_VECTOR', 242);TRUE on success or FALSE on failure. * @since 5.1.2 */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public function close() {} /** * Get the value of a named attribute * @link https://php.net/manual/en/xmlreader.getattribute.php * @param string $name

* The name of the attribute. *

* @return string|null The value of the attribute, or NULL if no attribute with the given * name is found or not positioned on an element node. * @since 5.1.2 */ #[TentativeType] public function getAttribute(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name): ?string {} /** * Get the value of an attribute by index * @link https://php.net/manual/en/xmlreader.getattributeno.php * @param int $index

* The position of the attribute. *

* @return string|null The value of the attribute, or NULL if no attribute exists * at index or not positioned of element. * @since 5.1.2 */ #[TentativeType] public function getAttributeNo(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $index): ?string {} /** * Get the value of an attribute by localname and URI * @link https://php.net/manual/en/xmlreader.getattributens.php * @param string $name

* The local name. *

* @param string $namespace

* The namespace URI. *

* @return string|null The value of the attribute, or NULL if no attribute with the * given localName and * namespaceURI is found or not positioned of element. * @since 5.1.2 */ #[TentativeType] public function getAttributeNs( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $namespace ): ?string {} /** * Indicates if specified property has been set * @link https://php.net/manual/en/xmlreader.getparserproperty.php * @param int $property

* One of the parser option * constants. *

* @return bool TRUE on success or FALSE on failure. * @since 5.1.2 */ #[TentativeType] public function getParserProperty(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $property): bool {} /** * Indicates if the parsed document is valid * @link https://php.net/manual/en/xmlreader.isvalid.php * @return bool TRUE on success or FALSE on failure. * @since 5.1.2 */ #[TentativeType] public function isValid(): bool {} /** * Lookup namespace for a prefix * @link https://php.net/manual/en/xmlreader.lookupnamespace.php * @param string $prefix

* String containing the prefix. *

* @return string|null TRUE on success or FALSE on failure. * @since 5.1.2 */ #[TentativeType] public function lookupNamespace(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $prefix): ?string {} /** * Move cursor to an attribute by index * @link https://php.net/manual/en/xmlreader.movetoattributeno.php * @param int $index

* The position of the attribute. *

* @return bool TRUE on success or FALSE on failure. * @since 5.1.2 */ #[TentativeType] public function moveToAttributeNo(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $index): bool {} /** * Move cursor to a named attribute * @link https://php.net/manual/en/xmlreader.movetoattribute.php * @param string $name

* The name of the attribute. *

* @return bool TRUE on success or FALSE on failure. * @since 5.1.2 */ #[TentativeType] public function moveToAttribute(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name): bool {} /** * Move cursor to a named attribute * @link https://php.net/manual/en/xmlreader.movetoattributens.php * @param string $name

* The local name. *

* @param string $namespace

* The namespace URI. *

* @return bool TRUE on success or FALSE on failure. * @since 5.1.2 */ #[TentativeType] public function moveToAttributeNs( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $namespace ): bool {} /** * Position cursor on the parent Element of current Attribute * @link https://php.net/manual/en/xmlreader.movetoelement.php * @return bool TRUE if successful and FALSE if it fails or not positioned on * Attribute when this method is called. * @since 5.1.2 */ #[TentativeType] public function moveToElement(): bool {} /** * Position cursor on the first Attribute * @link https://php.net/manual/en/xmlreader.movetofirstattribute.php * @return bool TRUE on success or FALSE on failure. * @since 5.1.2 */ #[TentativeType] public function moveToFirstAttribute(): bool {} /** * Position cursor on the next Attribute * @link https://php.net/manual/en/xmlreader.movetonextattribute.php * @return bool TRUE on success or FALSE on failure. * @since 5.1.2 */ #[TentativeType] public function moveToNextAttribute(): bool {} /** * Set the URI containing the XML to parse * @link https://php.net/manual/en/xmlreader.open.php * @param string $uri

* URI pointing to the document. *

* @param string $encoding [optional]

* The document encoding or NULL. *

* @param int $flags [optional]

* A bitmask of the LIBXML_* * constants. *

* @return XMLReader|bool TRUE on success or FALSE on failure. If called statically, returns an * XMLReader or FALSE on failure. * @since 5.1.2 */ public static function open( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $uri, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $encoding = null, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $flags = 0 ) {} /** * Move to next node in document * @link https://php.net/manual/en/xmlreader.read.php * @return bool TRUE on success or FALSE on failure. * @since 5.1.2 */ #[TentativeType] public function read(): bool {} /** * Move cursor to next node skipping all subtrees * @link https://php.net/manual/en/xmlreader.next.php * @param string $name [optional]

* The name of the next node to move to. *

* @return bool TRUE on success or FALSE on failure. * @since 5.1.2 */ #[TentativeType] public function next(#[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $name = null): bool {} /** * Retrieve XML from current node * @link https://php.net/manual/en/xmlreader.readinnerxml.php * @return string the contents of the current node as a string. Empty string on failure. */ #[TentativeType] public function readInnerXml(): string {} /** * Retrieve XML from current node, including it self * @link https://php.net/manual/en/xmlreader.readouterxml.php * @return string the contents of current node, including itself, as a string. Empty string on failure. */ #[TentativeType] public function readOuterXml(): string {} /** * Reads the contents of the current node as a string * @link https://php.net/manual/en/xmlreader.readstring.php * @return string the content of the current node as a string. Empty string on * failure. */ #[TentativeType] public function readString(): string {} /** * Validate document against XSD * @link https://php.net/manual/en/xmlreader.setschema.php * @param string $filename

* The filename of the XSD schema. *

* @return bool TRUE on success or FALSE on failure. */ #[TentativeType] public function setSchema(#[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $filename): bool {} /** * Set parser options * @link https://php.net/manual/en/xmlreader.setparserproperty.php * @param int $property

* One of the parser option * constants. *

* @param bool $value

* If set to TRUE the option will be enabled otherwise will * be disabled. *

* @return bool TRUE on success or FALSE on failure. * @since 5.1.2 */ #[TentativeType] public function setParserProperty( #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $property, #[LanguageLevelTypeAware(['8.0' => 'bool'], default: '')] $value ): bool {} /** * Set the filename or URI for a RelaxNG Schema * @link https://php.net/manual/en/xmlreader.setrelaxngschema.php * @param string $filename

* filename or URI pointing to a RelaxNG Schema. *

* @return bool TRUE on success or FALSE on failure. */ #[TentativeType] public function setRelaxNGSchema(#[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $filename): bool {} /** * Set the data containing a RelaxNG Schema * @link https://php.net/manual/en/xmlreader.setrelaxngschemasource.php * @param string $source

* String containing the RelaxNG Schema. *

* @return bool TRUE on success or FALSE on failure. * @since 5.1.2 */ #[TentativeType] public function setRelaxNGSchemaSource(#[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $source): bool {} /** * Set the data containing the XML to parse * @link https://php.net/manual/en/xmlreader.xml.php * @param string $source

* String containing the XML to be parsed. *

* @param string $encoding [optional]

* The document encoding or NULL. *

* @param int $flags [optional]

* A bitmask of the LIBXML_* * constants. *

* @return XMLReader|bool TRUE on success or FALSE on failure. If called statically, returns an * XMLReader or FALSE on failure. * @since 5.1.2 */ public static function XML( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $source, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $encoding = null, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $flags = 0 ) {} /** * Returns a copy of the current node as a DOM object * @link https://php.net/manual/en/xmlreader.expand.php * @param null|DOMNode $baseNode [optional] * @return DOMNode|false The resulting DOMNode or FALSE on error. * @since 5.1.2 */ #[TentativeType] public function expand( #[PhpStormStubsElementAvailable(from: '7.0')] #[LanguageLevelTypeAware(['8.0' => 'DOMNode|null'], default: '')] $baseNode = null ): DOMNode|false {} /** * @since 8.4 */ public static function fromUri(string $uri, ?string $encoding = null, int $flags = 0): static {} /** * @since 8.4 */ public static function fromStream($stream, ?string $encoding = null, int $flags = 0, ?string $documentUri = null): static {} /** * @since 8.4 */ public static function fromString(string $source, ?string $encoding = null, int $flags = 0): static {} } // End of xmlreader v.0.2 Instead of embedding of a long C definition into PHP string, * and creating FFI through FFI::cdef(), it's possible to separate * it into a C header file. Note, that C preprocessor directives * (e.g. #define or #ifdef) are not supported. And only a couple of * special macros may be used especially for FFI.

* * * #define FFI_LIB "libc.so.6" * * int printf(const char *format, ...); * * * Here, FFI_LIB specifies, that the given library should be loaded. * * * $ffi = FFI::load(__DIR__ . "/printf.h"); * $ffi->printf("Hello world!\n"); * * * @param string $filename * @return FFI|null */ public static function load(string $filename): ?FFI {} /** * FFI definition parsing and shared library loading may take * significant time. It's not useful to do it on each HTTP request in * WEB environment. However, it's possible to pre-load FFI definitions * and libraries at php startup, and instantiate FFI objects when * necessary. Header files may be extended with FFI_SCOPE define * (default pre-loading scope is "C"). This name is going to be * used as FFI::scope() argument. It's possible to pre-load few * files into a single scope. * * * #define FFI_LIB "libc.so.6" * #define FFI_SCOPE "libc" * * int printf(const char *format, ...); * * * These files are loaded through the same FFI::load() load function, * executed from file loaded by opcache.preload php.ini directive. * * * ffi.preload=/etc/php/ffi/printf.h * * * Finally, FFI::scope() instantiate an FFI object, that implements * all C definition from the given scope. * * * $ffi = FFI::scope("libc"); * $ffi->printf("Hello world!\n"); * * * @param string $name * @return FFI */ public static function scope(string $name): FFI {} /** * Method that creates an arbitrary C structure. * * @param string|CType $type * @param bool $owned * @param bool $persistent * @return CData|null * @throws ParserException */ public static function new($type, bool $owned = true, bool $persistent = false): ?CData {} /** * Manually removes previously created "not-owned" data structure. * * @param CData $ptr * @return void */ public static function free(CData $ptr): void {} /** * Casts given $pointer to another C type, specified by C declaration * string or FFI\CType object. * * This function may be called statically and use only predefined * types, or as a method of previously created FFI object. In last * case the first argument may reuse all type and tag names * defined in FFI::cdef(). * * @param CType|string $type * @param CData|int|float|bool|null $ptr * @return CData|null */ public static function cast($type, $ptr): ?CData {} /** * This function creates and returns a FFI\CType object, representng * type of the given C type declaration string. * * FFI::type() may be called statically and use only predefined types, * or as a method of previously created FFI object. In last case the * first argument may reuse all type and tag names defined in * FFI::cdef(). * * @param string $type * @return CType|null */ public static function type(string $type): ?CType {} /** * This function returns the FFI\CType object, representing the type of * the given FFI\CData object. * * @param CData $ptr * @return CType */ public static function typeof(CData $ptr): CType {} /** * Constructs a new C array type with elements of $type and * dimensions specified by $dimensions. * * @param CType $type * @param int[] $dimensions * @return CType */ public static function arrayType(CType $type, array $dimensions): CType {} /** * Returns C pointer to the given C data structure. The pointer is * not "owned" and won't be free. Anyway, this is a potentially * unsafe operation, because the life-time of the returned pointer * may be longer than life-time of the source object, and this may * cause dangling pointer dereference (like in regular C). * * @param CData $ptr * @return CData */ public static function addr(CData $ptr): CData {} /** * Returns size of C data type of the given FFI\CData or FFI\CType. * * @param CData|CType $ptr * @return int */ public static function sizeof($ptr): int {} /** * Returns size of C data type of the given FFI\CData or FFI\CType. * * @param CData|CType $ptr * @return int */ public static function alignof($ptr): int {} /** * Copies $size bytes from memory area $source to memory area $target. * $source may be any native data structure (FFI\CData) or PHP string. * * @param CData $to * @param CData|string $from * @param int $size */ public static function memcpy(CData $to, $from, int $size): void {} /** * Compares $size bytes from memory area $ptr1 and $ptr2. * * @param CData|string $ptr1 * @param CData|string $ptr2 * @param int $size * @return int */ public static function memcmp($ptr1, $ptr2, int $size): int {} /** * Fills the $size bytes of the memory area pointed to by $target with * the constant byte $byte. * * @param CData $ptr * @param int $value * @param int $size */ public static function memset(CData $ptr, int $value, int $size): void {} /** * Creates a PHP string from $size bytes of memory area pointed by * $source. If size is omitted, $source must be zero terminated * array of C chars. * * @param CData $ptr * @param int|null $size * @return string */ public static function string(CData $ptr, ?int $size = null): string {} /** * Checks whether the FFI\CData is a null pointer. * * @param CData $ptr * @return bool */ public static function isNull(CData $ptr): bool {} } } namespace FFI { /** * General FFI exception. * * @since 7.4 */ class Exception extends \Error {} /** * An exception that occurs when parsing invalid header files. * * @since 7.4 */ class ParserException extends Exception {} /** * Proxy object that provides access to compiled structures. * * In the case that CData is a wrapper over a scalar, it contains an * additional "cdata" property. * * @property int|float|bool|null|string|CData $cdata * * In the case that the CData is a wrapper over an arbitrary C structure, * then it allows reading and writing to the fields defined by * this structure. * * @method mixed __get(string $name) * @method mixed __set(string $name, mixed $value) * * In the case that CData is a wrapper over an array, it is an * implementation of the {@see \Traversable}, {@see \Countable}, * and {@see \ArrayAccess} * * @mixin \Traversable * @mixin \Countable * @mixin \ArrayAccess * * In the case when CData is a wrapper over a function pointer, it can * be called. * * @method mixed __invoke(mixed ...$args) * * @since 7.4 */ class CData { /** * Note that this method does not physically exist and is only required * for correct type inference. * * @param int $offset * @return bool */ private function offsetExists(int $offset) {} /** * Note that this method does not physically exist and is only required * for correct type inference. * * @param int $offset * @return CData|int|float|bool|null|string */ private function offsetGet(int $offset) {} /** * Note that this method does not physically exist and is only required * for correct type inference. * * @param int $offset * @param CData|int|float|bool|null|string $value */ private function offsetSet(int $offset, $value) {} /** * Note that this method does not physically exist and is only required * for correct type inference. * * @param int $offset */ private function offsetUnset(int $offset) {} /** * Note that this method does not physically exist and is only required * for correct type inference. * * @return int */ private function count(): int {} } /** * Class containing C type information. * * @since 7.4 */ class CType { /** * @since 8.1 */ public const TYPE_VOID = 0; /** * @since 8.1 */ public const TYPE_FLOAT = 1; /** * @since 8.1 */ public const TYPE_DOUBLE = 2; /** * Please note that this constant may NOT EXIST if there is * no long double support on the current platform. * * @since 8.1 */ public const TYPE_LONGDOUBLE = 3; /** * @since 8.1 */ public const TYPE_UINT8 = 4; /** * @since 8.1 */ public const TYPE_SINT8 = 5; /** * @since 8.1 */ public const TYPE_UINT16 = 6; /** * @since 8.1 */ public const TYPE_SINT16 = 7; /** * @since 8.1 */ public const TYPE_UINT32 = 8; /** * @since 8.1 */ public const TYPE_SINT32 = 9; /** * @since 8.1 */ public const TYPE_UINT64 = 10; /** * @since 8.1 */ public const TYPE_SINT64 = 11; /** * @since 8.1 */ public const TYPE_ENUM = 12; /** * @since 8.1 */ public const TYPE_BOOL = 13; /** * @since 8.1 */ public const TYPE_CHAR = 14; /** * @since 8.1 */ public const TYPE_POINTER = 15; /** * @since 8.1 */ public const TYPE_FUNC = 16; /** * @since 8.1 */ public const TYPE_ARRAY = 17; /** * @since 8.1 */ public const TYPE_STRUCT = 18; /** * @since 8.1 */ public const ATTR_CONST = 1; /** * @since 8.1 */ public const ATTR_INCOMPLETE_TAG = 2; /** * @since 8.1 */ public const ATTR_VARIADIC = 4; /** * @since 8.1 */ public const ATTR_INCOMPLETE_ARRAY = 8; /** * @since 8.1 */ public const ATTR_VLA = 16; /** * @since 8.1 */ public const ATTR_UNION = 32; /** * @since 8.1 */ public const ATTR_PACKED = 64; /** * @since 8.1 */ public const ATTR_MS_STRUCT = 128; /** * @since 8.1 */ public const ATTR_GCC_STRUCT = 256; /** * @since 8.1 */ public const ABI_DEFAULT = 0; /** * @since 8.1 */ public const ABI_CDECL = 1; /** * @since 8.1 */ public const ABI_FASTCALL = 2; /** * @since 8.1 */ public const ABI_THISCALL = 3; /** * @since 8.1 */ public const ABI_STDCALL = 4; /** * @since 8.1 */ public const ABI_PASCAL = 5; /** * @since 8.1 */ public const ABI_REGISTER = 6; /** * @since 8.1 */ public const ABI_MS = 7; /** * @since 8.1 */ public const ABI_SYSV = 8; /** * @since 8.1 */ public const ABI_VECTORCALL = 9; /** * Returns the name of the type. * * @since 8.0 * @return string */ public function getName(): string {} /** * Returns the identifier of the root type. * * Value may be one of: * - {@see CType::TYPE_VOID} * - {@see CType::TYPE_FLOAT} * - {@see CType::TYPE_DOUBLE} * - {@see CType::TYPE_LONGDOUBLE} * - {@see CType::TYPE_UINT8} * - {@see CType::TYPE_SINT8} * - {@see CType::TYPE_UINT16} * - {@see CType::TYPE_SINT16} * - {@see CType::TYPE_UINT32} * - {@see CType::TYPE_SINT32} * - {@see CType::TYPE_UINT64} * - {@see CType::TYPE_SINT64} * - {@see CType::TYPE_ENUM} * - {@see CType::TYPE_BOOL} * - {@see CType::TYPE_CHAR} * - {@see CType::TYPE_POINTER} * - {@see CType::TYPE_FUNC} * - {@see CType::TYPE_ARRAY} * - {@see CType::TYPE_STRUCT} * * @since 8.1 * @return int */ public function getKind(): int {} /** * Returns the size of the type in bytes. * * @since 8.1 * @return int */ public function getSize(): int {} /** * Returns the alignment of the type in bytes. * * @since 8.1 * @return int */ public function getAlignment(): int {} /** * Returns the bit-mask of type attributes. * * @since 8.1 * @return int */ public function getAttributes(): int {} /** * Returns the identifier of the enum value type. * * Value may be one of: * - {@see CType::TYPE_UINT32} * - {@see CType::TYPE_UINT64} * * @since 8.1 * @return int * @throws Exception In the case that the type is not an enumeration. */ public function getEnumKind(): int {} /** * Returns the type of array elements. * * @since 8.1 * @return CType * @throws Exception In the case that the type is not an array. */ public function getArrayElementType(): CType {} /** * Returns the size of an array. * * @since 8.1 * @return int * @throws Exception In the case that the type is not an array. */ public function getArrayLength(): int {} /** * Returns the original type of the pointer. * * @since 8.1 * @return CType * @throws Exception In the case that the type is not a pointer. */ public function getPointerType(): CType {} /** * Returns the field string names of a structure or union. * * @since 8.1 * @return array * @throws Exception In the case that the type is not a struct or union. */ public function getStructFieldNames(): array {} /** * Returns the offset of the structure by the name of this field. In * the case that the type is a union, then for each field of this type * the offset will be equal to 0. * * @since 8.1 * @param string $name * @return int * @throws Exception In the case that the type is not a struct or union. */ public function getStructFieldOffset(string $name): int {} /** * Returns the field type of a structure or union. * * @since 8.1 * @param string $name * @return CType * @throws Exception In the case that the type is not a struct or union. */ public function getStructFieldType(string $name): CType {} /** * Returns the application binary interface (ABI) identifier with which * you can call the function. * * Value may be one of: * - {@see CType::ABI_DEFAULT} * - {@see CType::ABI_CDECL} * - {@see CType::ABI_FASTCALL} * - {@see CType::ABI_THISCALL} * - {@see CType::ABI_STDCALL} * - {@see CType::ABI_PASCAL} * - {@see CType::ABI_REGISTER} * - {@see CType::ABI_MS} * - {@see CType::ABI_SYSV} * - {@see CType::ABI_VECTORCALL} * * @since 8.1 * @return int * @throws Exception In the case that the type is not a function. */ public function getFuncABI(): int {} /** * Returns the return type of the function. * * @since 8.1 * @return CType * @throws Exception In the case that the type is not a function. */ public function getFuncReturnType(): CType {} /** * Returns the number of arguments to the function. * * @since 8.1 * @return int * @throws Exception In the case that the type is not a function. */ public function getFuncParameterCount(): int {} /** * Returns the type of the function argument by its numeric index. * * @since 8.1 * @param int $index * @return CType * @throws Exception In the case that the type is not a function. */ public function getFuncParameterType(int $index): CType {} } } Makes an exact copy of the Imagick object * @link https://php.net/manual/en/class.imagick.php */ class Imagick implements Iterator, Countable { public const COLOR_BLACK = 11; public const COLOR_BLUE = 12; public const COLOR_CYAN = 13; public const COLOR_GREEN = 14; public const COLOR_RED = 15; public const COLOR_YELLOW = 16; public const COLOR_MAGENTA = 17; public const COLOR_OPACITY = 18; public const COLOR_ALPHA = 19; public const COLOR_FUZZ = 20; public const IMAGICK_EXTNUM = 30403; public const IMAGICK_EXTVER = "3.4.3"; public const QUANTUM_RANGE = 65535; public const USE_ZEND_MM = 0; public const COMPOSITE_DEFAULT = 40; public const COMPOSITE_UNDEFINED = 0; public const COMPOSITE_NO = 1; public const COMPOSITE_ADD = 2; public const COMPOSITE_ATOP = 3; public const COMPOSITE_BLEND = 4; public const COMPOSITE_BUMPMAP = 5; public const COMPOSITE_CLEAR = 7; public const COMPOSITE_COLORBURN = 8; public const COMPOSITE_COLORDODGE = 9; public const COMPOSITE_COLORIZE = 10; public const COMPOSITE_COPYBLACK = 11; public const COMPOSITE_COPYBLUE = 12; public const COMPOSITE_COPY = 13; public const COMPOSITE_COPYCYAN = 14; public const COMPOSITE_COPYGREEN = 15; public const COMPOSITE_COPYMAGENTA = 16; public const COMPOSITE_COPYOPACITY = 17; public const COMPOSITE_COPYRED = 18; public const COMPOSITE_COPYYELLOW = 19; public const COMPOSITE_DARKEN = 20; public const COMPOSITE_DSTATOP = 21; public const COMPOSITE_DST = 22; public const COMPOSITE_DSTIN = 23; public const COMPOSITE_DSTOUT = 24; public const COMPOSITE_DSTOVER = 25; public const COMPOSITE_DIFFERENCE = 26; public const COMPOSITE_DISPLACE = 27; public const COMPOSITE_DISSOLVE = 28; public const COMPOSITE_EXCLUSION = 29; public const COMPOSITE_HARDLIGHT = 30; public const COMPOSITE_HUE = 31; public const COMPOSITE_IN = 32; public const COMPOSITE_LIGHTEN = 33; public const COMPOSITE_LUMINIZE = 35; public const COMPOSITE_MINUS = 36; public const COMPOSITE_MODULATE = 37; public const COMPOSITE_MULTIPLY = 38; public const COMPOSITE_OUT = 39; public const COMPOSITE_OVER = 40; public const COMPOSITE_OVERLAY = 41; public const COMPOSITE_PLUS = 42; public const COMPOSITE_REPLACE = 43; public const COMPOSITE_SATURATE = 44; public const COMPOSITE_SCREEN = 45; public const COMPOSITE_SOFTLIGHT = 46; public const COMPOSITE_SRCATOP = 47; public const COMPOSITE_SRC = 48; public const COMPOSITE_SRCIN = 49; public const COMPOSITE_SRCOUT = 50; public const COMPOSITE_SRCOVER = 51; public const COMPOSITE_SUBTRACT = 52; public const COMPOSITE_THRESHOLD = 53; public const COMPOSITE_XOR = 54; public const COMPOSITE_CHANGEMASK = 6; public const COMPOSITE_LINEARLIGHT = 34; public const COMPOSITE_DIVIDE = 55; public const COMPOSITE_DISTORT = 56; public const COMPOSITE_BLUR = 57; public const COMPOSITE_PEGTOPLIGHT = 58; public const COMPOSITE_VIVIDLIGHT = 59; public const COMPOSITE_PINLIGHT = 60; public const COMPOSITE_LINEARDODGE = 61; public const COMPOSITE_LINEARBURN = 62; public const COMPOSITE_MATHEMATICS = 63; public const COMPOSITE_MODULUSADD = 2; public const COMPOSITE_MODULUSSUBTRACT = 52; public const COMPOSITE_MINUSDST = 36; public const COMPOSITE_DIVIDEDST = 55; public const COMPOSITE_DIVIDESRC = 64; public const COMPOSITE_MINUSSRC = 65; public const COMPOSITE_DARKENINTENSITY = 66; public const COMPOSITE_LIGHTENINTENSITY = 67; public const MONTAGEMODE_FRAME = 1; public const MONTAGEMODE_UNFRAME = 2; public const MONTAGEMODE_CONCATENATE = 3; public const STYLE_NORMAL = 1; public const STYLE_ITALIC = 2; public const STYLE_OBLIQUE = 3; public const STYLE_ANY = 4; public const FILTER_UNDEFINED = 0; public const FILTER_POINT = 1; public const FILTER_BOX = 2; public const FILTER_TRIANGLE = 3; public const FILTER_HERMITE = 4; public const FILTER_HANNING = 5; public const FILTER_HAMMING = 6; public const FILTER_BLACKMAN = 7; public const FILTER_GAUSSIAN = 8; public const FILTER_QUADRATIC = 9; public const FILTER_CUBIC = 10; public const FILTER_CATROM = 11; public const FILTER_MITCHELL = 12; public const FILTER_LANCZOS = 22; public const FILTER_BESSEL = 13; public const FILTER_SINC = 14; public const FILTER_KAISER = 16; public const FILTER_WELSH = 17; public const FILTER_PARZEN = 18; public const FILTER_LAGRANGE = 21; public const FILTER_SENTINEL = 31; public const FILTER_BOHMAN = 19; public const FILTER_BARTLETT = 20; public const FILTER_JINC = 13; public const FILTER_SINCFAST = 15; public const FILTER_ROBIDOUX = 26; public const FILTER_LANCZOSSHARP = 23; public const FILTER_LANCZOS2 = 24; public const FILTER_LANCZOS2SHARP = 25; public const FILTER_ROBIDOUXSHARP = 27; public const FILTER_COSINE = 28; public const FILTER_SPLINE = 29; public const FILTER_LANCZOSRADIUS = 30; public const IMGTYPE_UNDEFINED = 0; public const IMGTYPE_BILEVEL = 1; public const IMGTYPE_GRAYSCALE = 2; public const IMGTYPE_GRAYSCALEMATTE = 3; public const IMGTYPE_PALETTE = 4; public const IMGTYPE_PALETTEMATTE = 5; public const IMGTYPE_TRUECOLOR = 6; public const IMGTYPE_TRUECOLORMATTE = 7; public const IMGTYPE_COLORSEPARATION = 8; public const IMGTYPE_COLORSEPARATIONMATTE = 9; public const IMGTYPE_OPTIMIZE = 10; public const IMGTYPE_PALETTEBILEVELMATTE = 11; public const RESOLUTION_UNDEFINED = 0; public const RESOLUTION_PIXELSPERINCH = 1; public const RESOLUTION_PIXELSPERCENTIMETER = 2; public const COMPRESSION_UNDEFINED = 0; public const COMPRESSION_NO = 1; public const COMPRESSION_BZIP = 2; public const COMPRESSION_FAX = 6; public const COMPRESSION_GROUP4 = 7; public const COMPRESSION_JPEG = 8; public const COMPRESSION_JPEG2000 = 9; public const COMPRESSION_LOSSLESSJPEG = 10; public const COMPRESSION_LZW = 11; public const COMPRESSION_RLE = 12; public const COMPRESSION_ZIP = 13; public const COMPRESSION_DXT1 = 3; public const COMPRESSION_DXT3 = 4; public const COMPRESSION_DXT5 = 5; public const COMPRESSION_ZIPS = 14; public const COMPRESSION_PIZ = 15; public const COMPRESSION_PXR24 = 16; public const COMPRESSION_B44 = 17; public const COMPRESSION_B44A = 18; public const COMPRESSION_LZMA = 19; public const COMPRESSION_JBIG1 = 20; public const COMPRESSION_JBIG2 = 21; public const PAINT_POINT = 1; public const PAINT_REPLACE = 2; public const PAINT_FLOODFILL = 3; public const PAINT_FILLTOBORDER = 4; public const PAINT_RESET = 5; public const GRAVITY_NORTHWEST = 1; public const GRAVITY_NORTH = 2; public const GRAVITY_NORTHEAST = 3; public const GRAVITY_WEST = 4; public const GRAVITY_CENTER = 5; public const GRAVITY_EAST = 6; public const GRAVITY_SOUTHWEST = 7; public const GRAVITY_SOUTH = 8; public const GRAVITY_SOUTHEAST = 9; public const GRAVITY_FORGET = 0; public const GRAVITY_STATIC = 10; public const STRETCH_NORMAL = 1; public const STRETCH_ULTRACONDENSED = 2; public const STRETCH_EXTRACONDENSED = 3; public const STRETCH_CONDENSED = 4; public const STRETCH_SEMICONDENSED = 5; public const STRETCH_SEMIEXPANDED = 6; public const STRETCH_EXPANDED = 7; public const STRETCH_EXTRAEXPANDED = 8; public const STRETCH_ULTRAEXPANDED = 9; public const STRETCH_ANY = 10; public const ALIGN_UNDEFINED = 0; public const ALIGN_LEFT = 1; public const ALIGN_CENTER = 2; public const ALIGN_RIGHT = 3; public const DECORATION_NO = 1; public const DECORATION_UNDERLINE = 2; public const DECORATION_OVERLINE = 3; public const DECORATION_LINETROUGH = 4; public const DECORATION_LINETHROUGH = 4; public const NOISE_UNIFORM = 1; public const NOISE_GAUSSIAN = 2; public const NOISE_MULTIPLICATIVEGAUSSIAN = 3; public const NOISE_IMPULSE = 4; public const NOISE_LAPLACIAN = 5; public const NOISE_POISSON = 6; public const NOISE_RANDOM = 7; public const CHANNEL_UNDEFINED = 0; public const CHANNEL_RED = 1; public const CHANNEL_GRAY = 1; public const CHANNEL_CYAN = 1; public const CHANNEL_GREEN = 2; public const CHANNEL_MAGENTA = 2; public const CHANNEL_BLUE = 4; public const CHANNEL_YELLOW = 4; public const CHANNEL_ALPHA = 8; public const CHANNEL_OPACITY = 8; public const CHANNEL_MATTE = 8; public const CHANNEL_BLACK = 32; public const CHANNEL_INDEX = 32; public const CHANNEL_ALL = 134217727; public const CHANNEL_DEFAULT = 134217719; public const CHANNEL_RGBA = 15; public const CHANNEL_TRUEALPHA = 64; public const CHANNEL_RGBS = 128; public const CHANNEL_GRAY_CHANNELS = 128; public const CHANNEL_SYNC = 256; public const CHANNEL_COMPOSITES = 47; public const METRIC_UNDEFINED = 0; public const METRIC_ABSOLUTEERRORMETRIC = 1; public const METRIC_MEANABSOLUTEERROR = 2; public const METRIC_MEANERRORPERPIXELMETRIC = 3; public const METRIC_MEANSQUAREERROR = 4; public const METRIC_PEAKABSOLUTEERROR = 5; public const METRIC_PEAKSIGNALTONOISERATIO = 6; public const METRIC_ROOTMEANSQUAREDERROR = 7; public const METRIC_NORMALIZEDCROSSCORRELATIONERRORMETRIC = 8; public const METRIC_FUZZERROR = 9; public const PIXEL_CHAR = 1; public const PIXEL_DOUBLE = 2; public const PIXEL_FLOAT = 3; public const PIXEL_INTEGER = 4; public const PIXEL_LONG = 5; public const PIXEL_QUANTUM = 6; public const PIXEL_SHORT = 7; public const EVALUATE_UNDEFINED = 0; public const EVALUATE_ADD = 1; public const EVALUATE_AND = 2; public const EVALUATE_DIVIDE = 3; public const EVALUATE_LEFTSHIFT = 4; public const EVALUATE_MAX = 5; public const EVALUATE_MIN = 6; public const EVALUATE_MULTIPLY = 7; public const EVALUATE_OR = 8; public const EVALUATE_RIGHTSHIFT = 9; public const EVALUATE_SET = 10; public const EVALUATE_SUBTRACT = 11; public const EVALUATE_XOR = 12; public const EVALUATE_POW = 13; public const EVALUATE_LOG = 14; public const EVALUATE_THRESHOLD = 15; public const EVALUATE_THRESHOLDBLACK = 16; public const EVALUATE_THRESHOLDWHITE = 17; public const EVALUATE_GAUSSIANNOISE = 18; public const EVALUATE_IMPULSENOISE = 19; public const EVALUATE_LAPLACIANNOISE = 20; public const EVALUATE_MULTIPLICATIVENOISE = 21; public const EVALUATE_POISSONNOISE = 22; public const EVALUATE_UNIFORMNOISE = 23; public const EVALUATE_COSINE = 24; public const EVALUATE_SINE = 25; public const EVALUATE_ADDMODULUS = 26; public const EVALUATE_MEAN = 27; public const EVALUATE_ABS = 28; public const EVALUATE_EXPONENTIAL = 29; public const EVALUATE_MEDIAN = 30; public const EVALUATE_SUM = 31; public const COLORSPACE_UNDEFINED = 0; public const COLORSPACE_RGB = 1; public const COLORSPACE_GRAY = 2; public const COLORSPACE_TRANSPARENT = 3; public const COLORSPACE_OHTA = 4; public const COLORSPACE_LAB = 5; public const COLORSPACE_XYZ = 6; public const COLORSPACE_YCBCR = 7; public const COLORSPACE_YCC = 8; public const COLORSPACE_YIQ = 9; public const COLORSPACE_YPBPR = 10; public const COLORSPACE_YUV = 11; public const COLORSPACE_CMYK = 12; public const COLORSPACE_SRGB = 13; public const COLORSPACE_HSB = 14; public const COLORSPACE_HSL = 15; public const COLORSPACE_HWB = 16; public const COLORSPACE_REC601LUMA = 17; public const COLORSPACE_REC709LUMA = 19; public const COLORSPACE_LOG = 21; public const COLORSPACE_CMY = 22; public const COLORSPACE_LUV = 23; public const COLORSPACE_HCL = 24; public const COLORSPACE_LCH = 25; public const COLORSPACE_LMS = 26; public const COLORSPACE_LCHAB = 27; public const COLORSPACE_LCHUV = 28; public const COLORSPACE_SCRGB = 29; public const COLORSPACE_HSI = 30; public const COLORSPACE_HSV = 31; public const COLORSPACE_HCLP = 32; public const COLORSPACE_YDBDR = 33; public const COLORSPACE_REC601YCBCR = 18; public const COLORSPACE_REC709YCBCR = 20; public const VIRTUALPIXELMETHOD_UNDEFINED = 0; public const VIRTUALPIXELMETHOD_BACKGROUND = 1; public const VIRTUALPIXELMETHOD_CONSTANT = 2; public const VIRTUALPIXELMETHOD_EDGE = 4; public const VIRTUALPIXELMETHOD_MIRROR = 5; public const VIRTUALPIXELMETHOD_TILE = 7; public const VIRTUALPIXELMETHOD_TRANSPARENT = 8; public const VIRTUALPIXELMETHOD_MASK = 9; public const VIRTUALPIXELMETHOD_BLACK = 10; public const VIRTUALPIXELMETHOD_GRAY = 11; public const VIRTUALPIXELMETHOD_WHITE = 12; public const VIRTUALPIXELMETHOD_HORIZONTALTILE = 13; public const VIRTUALPIXELMETHOD_VERTICALTILE = 14; public const VIRTUALPIXELMETHOD_HORIZONTALTILEEDGE = 15; public const VIRTUALPIXELMETHOD_VERTICALTILEEDGE = 16; public const VIRTUALPIXELMETHOD_CHECKERTILE = 17; public const PREVIEW_UNDEFINED = 0; public const PREVIEW_ROTATE = 1; public const PREVIEW_SHEAR = 2; public const PREVIEW_ROLL = 3; public const PREVIEW_HUE = 4; public const PREVIEW_SATURATION = 5; public const PREVIEW_BRIGHTNESS = 6; public const PREVIEW_GAMMA = 7; public const PREVIEW_SPIFF = 8; public const PREVIEW_DULL = 9; public const PREVIEW_GRAYSCALE = 10; public const PREVIEW_QUANTIZE = 11; public const PREVIEW_DESPECKLE = 12; public const PREVIEW_REDUCENOISE = 13; public const PREVIEW_ADDNOISE = 14; public const PREVIEW_SHARPEN = 15; public const PREVIEW_BLUR = 16; public const PREVIEW_THRESHOLD = 17; public const PREVIEW_EDGEDETECT = 18; public const PREVIEW_SPREAD = 19; public const PREVIEW_SOLARIZE = 20; public const PREVIEW_SHADE = 21; public const PREVIEW_RAISE = 22; public const PREVIEW_SEGMENT = 23; public const PREVIEW_SWIRL = 24; public const PREVIEW_IMPLODE = 25; public const PREVIEW_WAVE = 26; public const PREVIEW_OILPAINT = 27; public const PREVIEW_CHARCOALDRAWING = 28; public const PREVIEW_JPEG = 29; public const RENDERINGINTENT_UNDEFINED = 0; public const RENDERINGINTENT_SATURATION = 1; public const RENDERINGINTENT_PERCEPTUAL = 2; public const RENDERINGINTENT_ABSOLUTE = 3; public const RENDERINGINTENT_RELATIVE = 4; public const INTERLACE_UNDEFINED = 0; public const INTERLACE_NO = 1; public const INTERLACE_LINE = 2; public const INTERLACE_PLANE = 3; public const INTERLACE_PARTITION = 4; public const INTERLACE_GIF = 5; public const INTERLACE_JPEG = 6; public const INTERLACE_PNG = 7; public const FILLRULE_UNDEFINED = 0; public const FILLRULE_EVENODD = 1; public const FILLRULE_NONZERO = 2; public const PATHUNITS_UNDEFINED = 0; public const PATHUNITS_USERSPACE = 1; public const PATHUNITS_USERSPACEONUSE = 2; public const PATHUNITS_OBJECTBOUNDINGBOX = 3; public const LINECAP_UNDEFINED = 0; public const LINECAP_BUTT = 1; public const LINECAP_ROUND = 2; public const LINECAP_SQUARE = 3; public const LINEJOIN_UNDEFINED = 0; public const LINEJOIN_MITER = 1; public const LINEJOIN_ROUND = 2; public const LINEJOIN_BEVEL = 3; public const RESOURCETYPE_UNDEFINED = 0; public const RESOURCETYPE_AREA = 1; public const RESOURCETYPE_DISK = 2; public const RESOURCETYPE_FILE = 3; public const RESOURCETYPE_MAP = 4; public const RESOURCETYPE_MEMORY = 5; public const RESOURCETYPE_TIME = 7; public const RESOURCETYPE_THROTTLE = 8; public const RESOURCETYPE_THREAD = 6; public const DISPOSE_UNRECOGNIZED = 0; public const DISPOSE_UNDEFINED = 0; public const DISPOSE_NONE = 1; public const DISPOSE_BACKGROUND = 2; public const DISPOSE_PREVIOUS = 3; public const INTERPOLATE_UNDEFINED = 0; public const INTERPOLATE_AVERAGE = 1; public const INTERPOLATE_BICUBIC = 2; public const INTERPOLATE_BILINEAR = 3; public const INTERPOLATE_FILTER = 4; public const INTERPOLATE_INTEGER = 5; public const INTERPOLATE_MESH = 6; public const INTERPOLATE_NEARESTNEIGHBOR = 7; public const INTERPOLATE_SPLINE = 8; public const LAYERMETHOD_UNDEFINED = 0; public const LAYERMETHOD_COALESCE = 1; public const LAYERMETHOD_COMPAREANY = 2; public const LAYERMETHOD_COMPARECLEAR = 3; public const LAYERMETHOD_COMPAREOVERLAY = 4; public const LAYERMETHOD_DISPOSE = 5; public const LAYERMETHOD_OPTIMIZE = 6; public const LAYERMETHOD_OPTIMIZEPLUS = 8; public const LAYERMETHOD_OPTIMIZETRANS = 9; public const LAYERMETHOD_COMPOSITE = 12; public const LAYERMETHOD_OPTIMIZEIMAGE = 7; public const LAYERMETHOD_REMOVEDUPS = 10; public const LAYERMETHOD_REMOVEZERO = 11; public const LAYERMETHOD_TRIMBOUNDS = 16; public const ORIENTATION_UNDEFINED = 0; public const ORIENTATION_TOPLEFT = 1; public const ORIENTATION_TOPRIGHT = 2; public const ORIENTATION_BOTTOMRIGHT = 3; public const ORIENTATION_BOTTOMLEFT = 4; public const ORIENTATION_LEFTTOP = 5; public const ORIENTATION_RIGHTTOP = 6; public const ORIENTATION_RIGHTBOTTOM = 7; public const ORIENTATION_LEFTBOTTOM = 8; public const DISTORTION_UNDEFINED = 0; public const DISTORTION_AFFINE = 1; public const DISTORTION_AFFINEPROJECTION = 2; public const DISTORTION_ARC = 9; public const DISTORTION_BILINEAR = 6; public const DISTORTION_PERSPECTIVE = 4; public const DISTORTION_PERSPECTIVEPROJECTION = 5; public const DISTORTION_SCALEROTATETRANSLATE = 3; public const DISTORTION_POLYNOMIAL = 8; public const DISTORTION_POLAR = 10; public const DISTORTION_DEPOLAR = 11; public const DISTORTION_BARREL = 14; public const DISTORTION_SHEPARDS = 16; public const DISTORTION_SENTINEL = 18; public const DISTORTION_BARRELINVERSE = 15; public const DISTORTION_BILINEARFORWARD = 6; public const DISTORTION_BILINEARREVERSE = 7; public const DISTORTION_RESIZE = 17; public const DISTORTION_CYLINDER2PLANE = 12; public const DISTORTION_PLANE2CYLINDER = 13; public const LAYERMETHOD_MERGE = 13; public const LAYERMETHOD_FLATTEN = 14; public const LAYERMETHOD_MOSAIC = 15; public const ALPHACHANNEL_ACTIVATE = 1; public const ALPHACHANNEL_RESET = 7; public const ALPHACHANNEL_SET = 8; public const ALPHACHANNEL_UNDEFINED = 0; public const ALPHACHANNEL_COPY = 3; public const ALPHACHANNEL_DEACTIVATE = 4; public const ALPHACHANNEL_EXTRACT = 5; public const ALPHACHANNEL_OPAQUE = 6; public const ALPHACHANNEL_SHAPE = 9; public const ALPHACHANNEL_TRANSPARENT = 10; public const SPARSECOLORMETHOD_UNDEFINED = 0; public const SPARSECOLORMETHOD_BARYCENTRIC = 1; public const SPARSECOLORMETHOD_BILINEAR = 7; public const SPARSECOLORMETHOD_POLYNOMIAL = 8; public const SPARSECOLORMETHOD_SPEPARDS = 16; public const SPARSECOLORMETHOD_VORONOI = 18; public const SPARSECOLORMETHOD_INVERSE = 19; public const DITHERMETHOD_UNDEFINED = 0; public const DITHERMETHOD_NO = 1; public const DITHERMETHOD_RIEMERSMA = 2; public const DITHERMETHOD_FLOYDSTEINBERG = 3; public const FUNCTION_UNDEFINED = 0; public const FUNCTION_POLYNOMIAL = 1; public const FUNCTION_SINUSOID = 2; public const ALPHACHANNEL_BACKGROUND = 2; public const FUNCTION_ARCSIN = 3; public const FUNCTION_ARCTAN = 4; public const ALPHACHANNEL_FLATTEN = 11; public const ALPHACHANNEL_REMOVE = 12; public const STATISTIC_GRADIENT = 1; public const STATISTIC_MAXIMUM = 2; public const STATISTIC_MEAN = 3; public const STATISTIC_MEDIAN = 4; public const STATISTIC_MINIMUM = 5; public const STATISTIC_MODE = 6; public const STATISTIC_NONPEAK = 7; public const STATISTIC_STANDARD_DEVIATION = 8; public const MORPHOLOGY_CONVOLVE = 1; public const MORPHOLOGY_CORRELATE = 2; public const MORPHOLOGY_ERODE = 3; public const MORPHOLOGY_DILATE = 4; public const MORPHOLOGY_ERODE_INTENSITY = 5; public const MORPHOLOGY_DILATE_INTENSITY = 6; public const MORPHOLOGY_DISTANCE = 7; public const MORPHOLOGY_OPEN = 8; public const MORPHOLOGY_CLOSE = 9; public const MORPHOLOGY_OPEN_INTENSITY = 10; public const MORPHOLOGY_CLOSE_INTENSITY = 11; public const MORPHOLOGY_SMOOTH = 12; public const MORPHOLOGY_EDGE_IN = 13; public const MORPHOLOGY_EDGE_OUT = 14; public const MORPHOLOGY_EDGE = 15; public const MORPHOLOGY_TOP_HAT = 16; public const MORPHOLOGY_BOTTOM_HAT = 17; public const MORPHOLOGY_HIT_AND_MISS = 18; public const MORPHOLOGY_THINNING = 19; public const MORPHOLOGY_THICKEN = 20; public const MORPHOLOGY_VORONOI = 21; public const MORPHOLOGY_ITERATIVE = 22; public const KERNEL_UNITY = 1; public const KERNEL_GAUSSIAN = 2; public const KERNEL_DIFFERENCE_OF_GAUSSIANS = 3; public const KERNEL_LAPLACIAN_OF_GAUSSIANS = 4; public const KERNEL_BLUR = 5; public const KERNEL_COMET = 6; public const KERNEL_LAPLACIAN = 7; public const KERNEL_SOBEL = 8; public const KERNEL_FREI_CHEN = 9; public const KERNEL_ROBERTS = 10; public const KERNEL_PREWITT = 11; public const KERNEL_COMPASS = 12; public const KERNEL_KIRSCH = 13; public const KERNEL_DIAMOND = 14; public const KERNEL_SQUARE = 15; public const KERNEL_RECTANGLE = 16; public const KERNEL_OCTAGON = 17; public const KERNEL_DISK = 18; public const KERNEL_PLUS = 19; public const KERNEL_CROSS = 20; public const KERNEL_RING = 21; public const KERNEL_PEAKS = 22; public const KERNEL_EDGES = 23; public const KERNEL_CORNERS = 24; public const KERNEL_DIAGONALS = 25; public const KERNEL_LINE_ENDS = 26; public const KERNEL_LINE_JUNCTIONS = 27; public const KERNEL_RIDGES = 28; public const KERNEL_CONVEX_HULL = 29; public const KERNEL_THIN_SE = 30; public const KERNEL_SKELETON = 31; public const KERNEL_CHEBYSHEV = 32; public const KERNEL_MANHATTAN = 33; public const KERNEL_OCTAGONAL = 34; public const KERNEL_EUCLIDEAN = 35; public const KERNEL_USER_DEFINED = 36; public const KERNEL_BINOMIAL = 37; public const DIRECTION_LEFT_TO_RIGHT = 2; public const DIRECTION_RIGHT_TO_LEFT = 1; public const NORMALIZE_KERNEL_NONE = 0; public const NORMALIZE_KERNEL_VALUE = 8192; public const NORMALIZE_KERNEL_CORRELATE = 65536; public const NORMALIZE_KERNEL_PERCENT = 4096; /** * (PECL imagick 2.0.0)
* Removes repeated portions of images to optimize * @link https://php.net/manual/en/imagick.optimizeimagelayers.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function optimizeImageLayers() {} /** * (PECL imagick 2.0.0)
* Returns the maximum bounding region between images * @link https://php.net/manual/en/imagick.compareimagelayers.php * @param int $method

* One of the layer method constants. *

* @return Imagick TRUE on success. * @throws ImagickException on error. */ public function compareImageLayers($method) {} /** * (PECL imagick 2.0.0)
* Quickly fetch attributes * @link https://php.net/manual/en/imagick.pingimageblob.php * @param string $image

* A string containing the image. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function pingImageBlob($image) {} /** * (PECL imagick 2.0.0)
* Get basic image attributes in a lightweight manner * @link https://php.net/manual/en/imagick.pingimagefile.php * @param resource $filehandle

* An open filehandle to the image. *

* @param string $fileName [optional]

* Optional filename for this image. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function pingImageFile($filehandle, $fileName = null) {} /** * (PECL imagick 2.0.0)
* Creates a vertical mirror image * @link https://php.net/manual/en/imagick.transposeimage.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function transposeImage() {} /** * (PECL imagick 2.0.0)
* Creates a horizontal mirror image * @link https://php.net/manual/en/imagick.transverseimage.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function transverseImage() {} /** * (PECL imagick 2.0.0)
* Remove edges from the image * @link https://php.net/manual/en/imagick.trimimage.php * @param float $fuzz

* By default target must match a particular pixel color exactly. * However, in many cases two colors may differ by a small amount. * The fuzz member of image defines how much tolerance is acceptable * to consider two colors as the same. This parameter represents the variation * on the quantum range. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function trimImage($fuzz) {} /** * (PECL imagick 2.0.0)
* Applies wave filter to the image * @link https://php.net/manual/en/imagick.waveimage.php * @param float $amplitude

* The amplitude of the wave. *

* @param float $length

* The length of the wave. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function waveImage($amplitude, $length) {} /** * (PECL imagick 2.0.0)
* Adds vignette filter to the image * @link https://php.net/manual/en/imagick.vignetteimage.php * @param float $blackPoint

* The black point. *

* @param float $whitePoint

* The white point *

* @param int $x

* X offset of the ellipse *

* @param int $y

* Y offset of the ellipse *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function vignetteImage($blackPoint, $whitePoint, $x, $y) {} /** * (PECL imagick 2.0.0)
* Discards all but one of any pixel color * @link https://php.net/manual/en/imagick.uniqueimagecolors.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function uniqueImageColors() {} /** * (PECL imagick 2.0.0)
* Return if the image has a matte channel * @link https://php.net/manual/en/imagick.getimagematte.php * @return bool TRUE on success or FALSE on failure. * @throws ImagickException on error. */ #[Deprecated] #[Pure] public function getImageMatte() {} /** * (PECL imagick 2.0.0)
* Sets the image matte channel * @link https://php.net/manual/en/imagick.setimagematte.php * @param bool $matte

* True activates the matte channel and false disables it. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageMatte($matte) {} /** * Adaptively resize image with data dependent triangulation * * If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.
* If false, the calculations should produce the same results as ImageMagick CLI does.
*
* Note: The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. * In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given. * @link https://php.net/manual/en/imagick.adaptiveresizeimage.php * @param int $columns The number of columns in the scaled image. * @param int $rows The number of rows in the scaled image. * @param bool $bestfit [optional] Whether to fit the image inside a bounding box.
* The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given. * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE * @return bool TRUE on success * @throws ImagickException Throws ImagickException on error * @since 2.0.0 */ public function adaptiveResizeImage($columns, $rows, $bestfit = false, $legacy = false) {} /** * (PECL imagick 2.0.0)
* Simulates a pencil sketch * @link https://php.net/manual/en/imagick.sketchimage.php * @param float $radius

* The radius of the Gaussian, in pixels, not counting the center pixel *

* @param float $sigma

* The standard deviation of the Gaussian, in pixels. *

* @param float $angle

* Apply the effect along this angle. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function sketchImage($radius, $sigma, $angle) {} /** * (PECL imagick 2.0.0)
* Creates a 3D effect * @link https://php.net/manual/en/imagick.shadeimage.php * @param bool $gray

* A value other than zero shades the intensity of each pixel. *

* @param float $azimuth

* Defines the light source direction. *

* @param float $elevation

* Defines the light source direction. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function shadeImage($gray, $azimuth, $elevation) {} /** * (PECL imagick 2.0.0)
* Returns the size offset * @link https://php.net/manual/en/imagick.getsizeoffset.php * @return int the size offset associated with the Imagick object. * @throws ImagickException on error. */ #[Pure] public function getSizeOffset() {} /** * (PECL imagick 2.0.0)
* Sets the size and offset of the Imagick object * @link https://php.net/manual/en/imagick.setsizeoffset.php * @param int $columns

* The width in pixels. *

* @param int $rows

* The height in pixels. *

* @param int $offset

* The image offset. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setSizeOffset($columns, $rows, $offset) {} /** * (PECL imagick 2.0.0)
* Adds adaptive blur filter to image * @link https://php.net/manual/en/imagick.adaptiveblurimage.php * @param float $radius

* The radius of the Gaussian, in pixels, not counting the center pixel. * Provide a value of 0 and the radius will be chosen automagically. *

* @param float $sigma

* The standard deviation of the Gaussian, in pixels. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function adaptiveBlurImage($radius, $sigma, $channel = Imagick::CHANNEL_DEFAULT) {} /** * (PECL imagick 2.0.0)
* Enhances the contrast of a color image * @link https://php.net/manual/en/imagick.contraststretchimage.php * @param float $black_point

* The black point. *

* @param float $white_point

* The white point. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Imagick::CHANNEL_ALL. Refer to this * list of channel constants. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function contrastStretchImage($black_point, $white_point, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Adaptively sharpen the image * @link https://php.net/manual/en/imagick.adaptivesharpenimage.php * @param float $radius

* The radius of the Gaussian, in pixels, not counting the center pixel. Use 0 for auto-select. *

* @param float $sigma

* The standard deviation of the Gaussian, in pixels. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function adaptiveSharpenImage($radius, $sigma, $channel = Imagick::CHANNEL_DEFAULT) {} /** * (PECL imagick 2.0.0)
* Creates a high-contrast, two-color image * @link https://php.net/manual/en/imagick.randomthresholdimage.php * @param float $low

* The low point *

* @param float $high

* The high point *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function randomThresholdImage($low, $high, $channel = Imagick::CHANNEL_ALL) {} /** * @param $xRounding * @param $yRounding * @param $strokeWidth [optional] * @param $displace [optional] * @param $sizeCorrection [optional] * @throws ImagickException on error. */ public function roundCornersImage($xRounding, $yRounding, $strokeWidth, $displace, $sizeCorrection) {} /** * (PECL imagick 2.0.0)
* Rounds image corners * Alias to {@see Imagick::roundCornersImage} * @link https://php.net/manual/en/imagick.roundcorners.php * @param float $x_rounding

* x rounding *

* @param float $y_rounding

* y rounding *

* @param float $stroke_width [optional]

* stroke width *

* @param float $displace [optional]

* image displace *

* @param float $size_correction [optional]

* size correction *

* @return bool TRUE on success. * @throws ImagickException on error. */ #[Deprecated(replacement: "%class%->roundCornersImage(%parametersList%)")] public function roundCorners($x_rounding, $y_rounding, $stroke_width = 10.0, $displace = 5.0, $size_correction = -6.0) {} /** * (PECL imagick 2.0.0)
* Set the iterator position * @link https://php.net/manual/en/imagick.setiteratorindex.php * @param int $index

* The position to set the iterator to *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setIteratorIndex($index) {} /** * (PECL imagick 2.0.0)
* Gets the index of the current active image * @link https://php.net/manual/en/imagick.getiteratorindex.php * @return int an integer containing the index of the image in the stack. */ #[Pure] public function getIteratorIndex() {} /** * (PECL imagick 2.0.0)
* Convenience method for setting crop size and the image geometry * @link https://php.net/manual/en/imagick.transformimage.php * @param string $crop

* A crop geometry string. This geometry defines a subregion of the image to crop. *

* @param string $geometry

* An image geometry string. This geometry defines the final size of the image. *

* @return Imagick TRUE on success. * @throws ImagickException on error. */ public function transformImage($crop, $geometry) {} /** * (PECL imagick 2.0.0)
* Sets the image opacity level * @link https://php.net/manual/en/imagick.setimageopacity.php * @param float $opacity

* The level of transparency: 1.0 is fully opaque and 0.0 is fully * transparent. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageOpacity($opacity) {} /** * (PECL imagick 2.2.2)
* Performs an ordered dither * @link https://php.net/manual/en/imagick.orderedposterizeimage.php * @param string $threshold_map

* A string containing the name of the threshold dither map to use *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function orderedPosterizeImage($threshold_map, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Simulates a Polaroid picture * @link https://php.net/manual/en/imagick.polaroidimage.php * @param ImagickDraw $properties

* The polaroid properties *

* @param float $angle

* The polaroid angle *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function polaroidImage(ImagickDraw $properties, $angle) {} /** * (PECL imagick 2.0.0)
* Returns the named image property * @link https://php.net/manual/en/imagick.getimageproperty.php * @param string $name

* name of the property (for example Exif:DateTime) *

* @return string|false a string containing the image property, false if a * property with the given name does not exist. * @throws ImagickException on error. */ #[Pure] public function getImageProperty($name) {} /** * (PECL imagick 2.0.0)
* Sets an image property * @link https://php.net/manual/en/imagick.setimageproperty.php * @param string $name * @param string $value * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageProperty($name, $value) {} /** * (PECL imagick 2.0.0)
* Sets the image interpolate pixel method * @link https://php.net/manual/en/imagick.setimageinterpolatemethod.php * @param int $method

* The method is one of the Imagick::INTERPOLATE_* constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageInterpolateMethod($method) {} /** * (PECL imagick 2.0.0)
* Returns the interpolation method * @link https://php.net/manual/en/imagick.getimageinterpolatemethod.php * @return int the interpolate method on success. * @throws ImagickException on error. */ #[Pure] public function getImageInterpolateMethod() {} /** * (PECL imagick 2.0.0)
* Stretches with saturation the image intensity * @link https://php.net/manual/en/imagick.linearstretchimage.php * @param float $blackPoint

* The image black point *

* @param float $whitePoint

* The image white point *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function linearStretchImage($blackPoint, $whitePoint) {} /** * (PECL imagick 2.0.0)
* Returns the image length in bytes * @link https://php.net/manual/en/imagick.getimagelength.php * @return int an int containing the current image size. * @throws ImagickException on error. */ #[Pure] public function getImageLength() {} /** * (No version information available, might only be in SVN)
* Set image size * @link https://php.net/manual/en/imagick.extentimage.php * @param int $width

* The new width *

* @param int $height

* The new height *

* @param int $x

* X position for the new size *

* @param int $y

* Y position for the new size *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function extentImage($width, $height, $x, $y) {} /** * (PECL imagick 2.0.0)
* Gets the image orientation * @link https://php.net/manual/en/imagick.getimageorientation.php * @return int an int on success. * @throws ImagickException on error. */ #[Pure] public function getImageOrientation() {} /** * (PECL imagick 2.0.0)
* Sets the image orientation * @link https://php.net/manual/en/imagick.setimageorientation.php * @param int $orientation

* One of the orientation constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageOrientation($orientation) {} /** * (PECL imagick 2.1.0)
* Changes the color value of any pixel that matches target * @link https://php.net/manual/en/imagick.paintfloodfillimage.php * @param mixed $fill

* ImagickPixel object or a string containing the fill color *

* @param float $fuzz

* The amount of fuzz. For example, set fuzz to 10 and the color red at * intensities of 100 and 102 respectively are now interpreted as the * same color for the purposes of the floodfill. *

* @param mixed $bordercolor

* ImagickPixel object or a string containing the border color *

* @param int $x

* X start position of the floodfill *

* @param int $y

* Y start position of the floodfill *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ #[Deprecated] public function paintFloodfillImage($fill, $fuzz, $bordercolor, $x, $y, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Replaces colors in the image from a color lookup table. Optional second parameter to replace colors in a specific channel. This method is available if Imagick has been compiled against ImageMagick version 6.3.6 or newer. * @link https://php.net/manual/en/imagick.clutimage.php * @param Imagick $lookup_table

* Imagick object containing the color lookup table *

* @param int $channel [optional]

* The Channeltype * constant. When not supplied, default channels are replaced. *

* @return bool TRUE on success. * @throws ImagickException on error. * @since 2.0.0 */ public function clutImage(Imagick $lookup_table, $channel = Imagick::CHANNEL_DEFAULT) {} /** * (PECL imagick 2.0.0)
* Returns the image properties * @link https://php.net/manual/en/imagick.getimageproperties.php * @param string $pattern [optional]

* The pattern for property names. *

* @param bool $only_names [optional]

* Whether to return only property names. If FALSE then also the values are returned *

* @return array an array containing the image properties or property names. * @throws ImagickException on error. */ #[Pure] public function getImageProperties($pattern = "*", $only_names = true) {} /** * (PECL imagick 2.2.0)
* Returns the image profiles * @link https://php.net/manual/en/imagick.getimageprofiles.php * @param string $pattern [optional]

* The pattern for profile names. *

* @param bool $include_values [optional]

* Whether to return only profile names. If FALSE then only profile names will be returned. *

* @return array an array containing the image profiles or profile names. * @throws ImagickException on error. */ #[Pure] public function getImageProfiles($pattern = "*", $include_values = true) {} /** * (PECL imagick 2.0.1)
* Distorts an image using various distortion methods * @link https://php.net/manual/en/imagick.distortimage.php * @param int $method

* The method of image distortion. See distortion constants *

* @param array $arguments

* The arguments for this distortion method *

* @param bool $bestfit

* Attempt to resize destination to fit distorted source *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function distortImage($method, array $arguments, $bestfit) {} /** * (No version information available, might only be in SVN)
* Writes an image to a filehandle * @link https://php.net/manual/en/imagick.writeimagefile.php * @param resource $filehandle

* Filehandle where to write the image *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function writeImageFile($filehandle) {} /** * (No version information available, might only be in SVN)
* Writes frames to a filehandle * @link https://php.net/manual/en/imagick.writeimagesfile.php * @param resource $filehandle

* Filehandle where to write the images *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function writeImagesFile($filehandle) {} /** * (No version information available, might only be in SVN)
* Reset image page * @link https://php.net/manual/en/imagick.resetimagepage.php * @param string $page

* The page definition. For example 7168x5147+0+0 *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function resetImagePage($page) {} /** * (No version information available, might only be in SVN)
* Sets image clip mask * @link https://php.net/manual/en/imagick.setimageclipmask.php * @param Imagick $clip_mask

* The Imagick object containing the clip mask *

* @return bool TRUE on success. */ public function setImageClipMask(Imagick $clip_mask) {} /** * (No version information available, might only be in SVN)
* Gets image clip mask * @link https://php.net/manual/en/imagick.getimageclipmask.php * @return Imagick an Imagick object containing the clip mask. * @throws ImagickException on error. */ #[Pure] public function getImageClipMask() {} /** * (No version information available, might only be in SVN)
* Animates an image or images * @link https://php.net/manual/en/imagick.animateimages.php * @param string $x_server

* X server address *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function animateImages($x_server) {} /** * (No version information available, might only be in SVN)
* Recolors image * @link https://php.net/manual/en/imagick.recolorimage.php * @param array $matrix

* The matrix containing the color values *

* @return bool TRUE on success. * @throws ImagickException on error. */ #[Deprecated] public function recolorImage(array $matrix) {} /** * (PECL imagick 2.1.0)
* Sets font * @link https://php.net/manual/en/imagick.setfont.php * @param string $font

* Font name or a filename *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setFont($font) {} /** * (PECL imagick 2.1.0)
* Gets font * @link https://php.net/manual/en/imagick.getfont.php * @return string|false the string containing the font name or FALSE if not font is set. */ #[Pure] public function getFont() {} /** * (PECL imagick 2.1.0)
* Sets point size * @link https://php.net/manual/en/imagick.setpointsize.php * @param float $point_size

* Point size *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setPointSize($point_size) {} /** * (No version information available, might only be in SVN)
* Gets point size * @link https://php.net/manual/en/imagick.getpointsize.php * @return float a float containing the point size. */ #[Pure] public function getPointSize() {} /** * (PECL imagick 2.1.0)
* Merges image layers * @link https://php.net/manual/en/imagick.mergeimagelayers.php * @param int $layer_method

* One of the Imagick::LAYERMETHOD_* constants *

* @return Imagick Returns an Imagick object containing the merged image. * @throws ImagickException */ public function mergeImageLayers($layer_method) {} /** * (No version information available, might only be in SVN)
* Sets image alpha channel * @link https://php.net/manual/en/imagick.setimagealphachannel.php * @param int $mode

* One of the Imagick::ALPHACHANNEL_* constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageAlphaChannel($mode) {} /** * (No version information available, might only be in SVN)
* Changes the color value of any pixel that matches target * @link https://php.net/manual/en/imagick.floodfillpaintimage.php * @param mixed $fill

* ImagickPixel object or a string containing the fill color *

* @param float $fuzz

* The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color. *

* @param mixed $target

* ImagickPixel object or a string containing the target color to paint *

* @param int $x

* X start position of the floodfill *

* @param int $y

* Y start position of the floodfill *

* @param bool $invert

* If TRUE paints any pixel that does not match the target color. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function floodFillPaintImage($fill, $fuzz, $target, $x, $y, $invert, $channel = Imagick::CHANNEL_DEFAULT) {} /** * (No version information available, might only be in SVN)
* Changes the color value of any pixel that matches target * @link https://php.net/manual/en/imagick.opaquepaintimage.php * @param mixed $target

* ImagickPixel object or a string containing the color to change *

* @param mixed $fill

* The replacement color *

* @param float $fuzz

* The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color. *

* @param bool $invert

* If TRUE paints any pixel that does not match the target color. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function opaquePaintImage($target, $fill, $fuzz, $invert, $channel = Imagick::CHANNEL_DEFAULT) {} /** * (No version information available, might only be in SVN)
* Paints pixels transparent * @link https://php.net/manual/en/imagick.transparentpaintimage.php * @param mixed $target

* The target color to paint *

* @param float $alpha

* The level of transparency: 1.0 is fully opaque and 0.0 is fully transparent. *

* @param float $fuzz

* The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color. *

* @param bool $invert

* If TRUE paints any pixel that does not match the target color. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function transparentPaintImage($target, $alpha, $fuzz, $invert) {} /** * (No version information available, might only be in SVN)
* Animates an image or images * @link https://php.net/manual/en/imagick.liquidrescaleimage.php * @param int $width

* The width of the target size *

* @param int $height

* The height of the target size *

* @param float $delta_x

* How much the seam can traverse on x-axis. * Passing 0 causes the seams to be straight. *

* @param float $rigidity

* Introduces a bias for non-straight seams. This parameter is * typically 0. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function liquidRescaleImage($width, $height, $delta_x, $rigidity) {} /** * (No version information available, might only be in SVN)
* Enciphers an image * @link https://php.net/manual/en/imagick.encipherimage.php * @param string $passphrase

* The passphrase *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function encipherImage($passphrase) {} /** * (No version information available, might only be in SVN)
* Deciphers an image * @link https://php.net/manual/en/imagick.decipherimage.php * @param string $passphrase

* The passphrase *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function decipherImage($passphrase) {} /** * (No version information available, might only be in SVN)
* Sets the gravity * @link https://php.net/manual/en/imagick.setgravity.php * @param int $gravity

* The gravity property. Refer to the list of * gravity constants. *

* @return bool No value is returned. * @throws ImagickException on error. */ public function setGravity($gravity) {} /** * (No version information available, might only be in SVN)
* Gets the gravity * @link https://php.net/manual/en/imagick.getgravity.php * @return int the gravity property. Refer to the list of * gravity constants. */ #[Pure] public function getGravity() {} /** * (PECL imagick 2.2.1)
* Gets channel range * @link https://php.net/manual/en/imagick.getimagechannelrange.php * @param int $channel

* Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants *

* @return float[] an array containing minima and maxima values of the channel(s). * @throws ImagickException on error. */ #[ArrayShape(["minima" => "float", "maxima" => "float"])] #[Pure] public function getImageChannelRange($channel) {} /** * (No version information available, might only be in SVN)
* Gets the image alpha channel * @link https://php.net/manual/en/imagick.getimagealphachannel.php * @return int a constant defining the current alpha channel value. Refer to this * list of alpha channel constants. * @throws ImagickException on error. */ #[Pure] public function getImageAlphaChannel() {} /** * (No version information available, might only be in SVN)
* Gets channel distortions * @link https://php.net/manual/en/imagick.getimagechanneldistortions.php * @param Imagick $reference

* Imagick object containing the reference image *

* @param int $metric

* Refer to this list of metric type constants. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants *

* @return float a float describing the channel distortion. * @throws ImagickException on error. */ #[Pure] public function getImageChannelDistortions(Imagick $reference, $metric, $channel = Imagick::CHANNEL_DEFAULT) {} /** * (No version information available, might only be in SVN)
* Sets the image gravity * @link https://php.net/manual/en/imagick.setimagegravity.php * @param int $gravity

* The gravity property. Refer to the list of * gravity constants. *

* @return bool No value is returned. * @throws ImagickException on error. */ public function setImageGravity($gravity) {} /** * (No version information available, might only be in SVN)
* Gets the image gravity * @link https://php.net/manual/en/imagick.getimagegravity.php * @return int the images gravity property. Refer to the list of * gravity constants. * @throws ImagickException on error. */ #[Pure] public function getImageGravity() {} /** * (No version information available, might only be in SVN)
* Imports image pixels * @link https://php.net/manual/en/imagick.importimagepixels.php * @param int $x

* The image x position *

* @param int $y

* The image y position *

* @param int $width

* The image width *

* @param int $height

* The image height *

* @param string $map

* Map of pixel ordering as a string. This can be for example RGB. * The value can be any combination or order of R = red, G = green, B = blue, A = alpha (0 is transparent), * O = opacity (0 is opaque), C = cyan, Y = yellow, M = magenta, K = black, I = intensity (for grayscale), P = pad. *

* @param int $storage

* The pixel storage method. * Refer to this list of pixel constants. *

* @param array $pixels

* The array of pixels *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function importImagePixels($x, $y, $width, $height, $map, $storage, array $pixels) {} /** * (No version information available, might only be in SVN)
* Removes skew from the image * @link https://php.net/manual/en/imagick.deskewimage.php * @param float $threshold

* Deskew threshold *

* @return bool * @throws ImagickException on error. */ public function deskewImage($threshold) {} /** * (No version information available, might only be in SVN)
* Segments an image * @link https://php.net/manual/en/imagick.segmentimage.php * @param int $COLORSPACE

* One of the COLORSPACE constants. *

* @param float $cluster_threshold

* A percentage describing minimum number of pixels * contained in hexedra before it is considered valid. *

* @param float $smooth_threshold

* Eliminates noise from the histogram. *

* @param bool $verbose [optional]

* Whether to output detailed information about recognised classes. *

* @return bool * @throws ImagickException on error. */ public function segmentImage($COLORSPACE, $cluster_threshold, $smooth_threshold, $verbose = false) {} /** * (No version information available, might only be in SVN)
* Interpolates colors * @link https://php.net/manual/en/imagick.sparsecolorimage.php * @param int $SPARSE_METHOD

* Refer to this list of sparse method constants *

* @param array $arguments

* An array containing the coordinates. * The array is in format array(1,1, 2,45) *

* @param int $channel [optional] * @return bool TRUE on success. * @throws ImagickException on error. */ public function sparseColorImage($SPARSE_METHOD, array $arguments, $channel = Imagick::CHANNEL_DEFAULT) {} /** * (No version information available, might only be in SVN)
* Remaps image colors * @link https://php.net/manual/en/imagick.remapimage.php * @param Imagick $replacement

* An Imagick object containing the replacement colors *

* @param int $DITHER

* Refer to this list of dither method constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function remapImage(Imagick $replacement, $DITHER) {} /** * (No version information available, might only be in SVN)
* Exports raw image pixels * @link https://php.net/manual/en/imagick.exportimagepixels.php * @param int $x

* X-coordinate of the exported area *

* @param int $y

* Y-coordinate of the exported area *

* @param int $width

* Width of the exported aread *

* @param int $height

* Height of the exported area *

* @param string $map

* Ordering of the exported pixels. For example "RGB". * Valid characters for the map are R, G, B, A, O, C, Y, M, K, I and P. *

* @param int $STORAGE

* Refer to this list of pixel type constants *

* @return int[] an array containing the pixels values. * @throws ImagickException on error. */ public function exportImagePixels($x, $y, $width, $height, $map, $STORAGE) {} /** * (No version information available, might only be in SVN)
* The getImageChannelKurtosis purpose * @link https://php.net/manual/en/imagick.getimagechannelkurtosis.php * @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants *

* @return float[] an array with kurtosis and skewness * members. * @throws ImagickException on error. */ #[ArrayShape(["kurtosis" => "float", "skewness" => "float"])] #[Pure] public function getImageChannelKurtosis($channel = Imagick::CHANNEL_DEFAULT) {} /** * (No version information available, might only be in SVN)
* Applies a function on the image * @link https://php.net/manual/en/imagick.functionimage.php * @param int $function

* Refer to this list of function constants *

* @param array $arguments

* Array of arguments to pass to this function. *

* @param int $channel [optional] * @return bool TRUE on success. * @throws ImagickException on error. */ public function functionImage($function, array $arguments, $channel = Imagick::CHANNEL_DEFAULT) {} /** * Transform image colorspace * @param $COLORSPACE * @return bool TRUE on success. * @throws ImagickException on error. */ public function transformImageColorspace($COLORSPACE) {} /** * (No version information available, might only be in SVN)
* Replaces colors in the image * @link https://php.net/manual/en/imagick.haldclutimage.php * @param Imagick $clut

* Imagick object containing the Hald lookup image. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function haldClutImage(Imagick $clut, $channel = Imagick::CHANNEL_DEFAULT) {} /** * Adjusts the levels of a particular image channel by scaling the minimum and maximum values to the full quantum range. * @param $CHANNEL [optional] * @return bool TRUE on success. * @throws ImagickException on error. */ public function autoLevelImage($CHANNEL) {} /** * @link https://www.php.net/manual/en/imagick.blueshiftimage.php * @param float $factor [optional] * @return bool * @throws ImagickException on error. */ public function blueShiftImage($factor) {} /** * (No version information available, might only be in SVN)
* Get image artifact * @link https://php.net/manual/en/imagick.getimageartifact.php * @param string $artifact

* The name of the artifact *

* @return string the artifact value on success. * @throws ImagickException on error. */ #[Pure] public function getImageArtifact($artifact) {} /** * (No version information available, might only be in SVN)
* Set image artifact * @link https://php.net/manual/en/imagick.setimageartifact.php * @param string $artifact

* The name of the artifact *

* @param string $value

* The value of the artifact *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageArtifact($artifact, $value) {} /** * (No version information available, might only be in SVN)
* Delete image artifact * @link https://php.net/manual/en/imagick.deleteimageartifact.php * @param string $artifact

* The name of the artifact to delete *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function deleteImageArtifact($artifact) {} /** * (PECL imagick 0.9.10-0.9.9)
* Gets the colorspace * @link https://php.net/manual/en/imagick.getcolorspace.php * @return int an integer which can be compared against COLORSPACE constants. */ #[Pure] public function getColorspace() {} /** * (No version information available, might only be in SVN)
* Set colorspace * @link https://php.net/manual/en/imagick.setcolorspace.php * @param int $COLORSPACE

* One of the COLORSPACE constants *

* @return bool TRUE on success. */ public function setColorspace($COLORSPACE) {} /** * @param $CHANNEL [optional] * @throws ImagickException on error. */ public function clampImage($CHANNEL) {} /** * @param bool $stack * @param int $offset * @return Imagick * @throws ImagickException on error. */ public function smushImages($stack, $offset) {} /** * (PECL imagick 2.0.0)
* The Imagick constructor * @link https://php.net/manual/en/imagick.construct.php * @param mixed $files

* The path to an image to load or an array of paths. Paths can include * wildcards for file names, or can be URLs. *

* @throws ImagickException Throws ImagickException on error. */ public function __construct($files = null) {} /** * @return string */ public function __toString() {} public function count() {} /** * (PECL imagick 2.0.0)
* Returns a MagickPixelIterator * @link https://php.net/manual/en/imagick.getpixeliterator.php * @return ImagickPixelIterator an ImagickPixelIterator on success. * @throws ImagickException on error. * @throws ImagickPixelIteratorException on error. */ #[Pure] public function getPixelIterator() {} /** * (PECL imagick 2.0.0)
* Get an ImagickPixelIterator for an image section * @link https://php.net/manual/en/imagick.getpixelregioniterator.php * @param int $x

* The x-coordinate of the region. *

* @param int $y

* The y-coordinate of the region. *

* @param int $columns

* The width of the region. *

* @param int $rows

* The height of the region. *

* @return ImagickPixelIterator an ImagickPixelIterator for an image section. * @throws ImagickException on error. * @throws ImagickPixelIteratorException on error. */ #[Pure] public function getPixelRegionIterator($x, $y, $columns, $rows) {} /** * (PECL imagick 0.9.0-0.9.9)
* Reads image from filename * @link https://php.net/manual/en/imagick.readimage.php * @param string $filename * @return bool TRUE on success. * @throws ImagickException Throws ImagickException on error. */ public function readImage($filename) {} /** * @param $filenames * @throws ImagickException Throws ImagickException on error. */ public function readImages($filenames) {} /** * (PECL imagick 2.0.0)
* Reads image from a binary string * @link https://php.net/manual/en/imagick.readimageblob.php * @param string $image * @param string $filename [optional] * @return bool TRUE on success. * @throws ImagickException Throws ImagickException on error. */ public function readImageBlob($image, $filename = null) {} /** * (PECL imagick 2.0.0)
* Sets the format of a particular image * @link https://php.net/manual/en/imagick.setimageformat.php * @param string $format

* String presentation of the image format. Format support * depends on the ImageMagick installation. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageFormat($format) {} /** * Scales the size of an image to the given dimensions. Passing zero as either of the arguments will preserve dimension while scaling.
* If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.
* If false, the calculations should produce the same results as ImageMagick CLI does. * @link https://php.net/manual/en/imagick.scaleimage.php * @param int $columns * @param int $rows * @param bool $bestfit [optional] The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given. * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE * @return bool TRUE on success. * @throws ImagickException Throws ImagickException on error * @since 2.0.0 */ public function scaleImage($columns, $rows, $bestfit = false, $legacy = false) {} /** * (PECL imagick 0.9.0-0.9.9)
* Writes an image to the specified filename * @link https://php.net/manual/en/imagick.writeimage.php * @param string $filename [optional]

* Filename where to write the image. The extension of the filename * defines the type of the file. * Format can be forced regardless of file extension using format: prefix, * for example "jpg:test.png". *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function writeImage($filename = null) {} /** * (PECL imagick 0.9.0-0.9.9)
* Writes an image or image sequence * @link https://php.net/manual/en/imagick.writeimages.php * @param string $filename * @param bool $adjoin * @return bool TRUE on success. * @throws ImagickException on error. */ public function writeImages($filename, $adjoin) {} /** * (PECL imagick 2.0.0)
* Adds blur filter to image * @link https://php.net/manual/en/imagick.blurimage.php * @param float $radius

* Blur radius *

* @param float $sigma

* Standard deviation *

* @param int $channel [optional]

* The Channeltype * constant. When not supplied, all channels are blurred. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function blurImage($radius, $sigma, $channel = null) {} /** * Changes the size of an image to the given dimensions and removes any associated profiles.
* If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.
* If false, the calculations should produce the same results as ImageMagick CLI does.
*
* Note: The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given. * @link https://php.net/manual/en/imagick.thumbnailimage.php * @param int $columns

* Image width *

* @param int $rows

* Image height *

* @param bool $bestfit [optional]

* Whether to force maximum values *

* The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given. * @param bool $fill [optional] * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE * @return bool TRUE on success. * @throws ImagickException on error. * @since 2.0.0 */ public function thumbnailImage($columns, $rows, $bestfit = false, $fill = false, $legacy = false) {} /** * Creates a cropped thumbnail at the requested size. * If legacy is true, uses the incorrect behaviour that was present until Imagick 3.4.0. * If false it uses the correct behaviour. * @link https://php.net/manual/en/imagick.cropthumbnailimage.php * @param int $width The width of the thumbnail * @param int $height The Height of the thumbnail * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE * @return bool TRUE on succes * @throws ImagickException Throws ImagickException on error * @since 2.0.0 */ public function cropThumbnailImage($width, $height, $legacy = false) {} /** * (PECL imagick 2.0.0)
* Returns the filename of a particular image in a sequence * @link https://php.net/manual/en/imagick.getimagefilename.php * @return string a string with the filename of the image. * @throws ImagickException on error. */ #[Pure] public function getImageFilename() {} /** * (PECL imagick 2.0.0)
* Sets the filename of a particular image * @link https://php.net/manual/en/imagick.setimagefilename.php * @param string $filename * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageFilename($filename) {} /** * (PECL imagick 2.0.0)
* Returns the format of a particular image in a sequence * @link https://php.net/manual/en/imagick.getimageformat.php * @return string a string containing the image format on success. * @throws ImagickException on error. */ #[Pure] public function getImageFormat() {} /** * @link https://secure.php.net/manual/en/imagick.getimagemimetype.php * @return string Returns the image mime-type. * @throws ImagickException on error. */ #[Pure] public function getImageMimeType() {} /** * (PECL imagick 2.0.0)
* Removes an image from the image list * @link https://php.net/manual/en/imagick.removeimage.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function removeImage() {} /** * (PECL imagick 2.0.0)
* Destroys the Imagick object * @link https://php.net/manual/en/imagick.destroy.php * @return bool TRUE on success. */ #[Deprecated(replacement: "%class%->clear()")] public function destroy() {} /** * (PECL imagick 2.0.0)
* Clears all resources associated to Imagick object * @link https://php.net/manual/en/imagick.clear.php * @return bool TRUE on success. */ public function clear() {} /** * (PECL imagick 2.0.0)
* Returns the image length in bytes * @link https://php.net/manual/en/imagick.getimagesize.php * @return int an int containing the current image size. * @throws ImagickException on error. */ #[Deprecated(replacement: "%class%->getImageLength()")] #[Pure] public function getImageSize() {} /** * (PECL imagick 2.0.0)
* Returns the image sequence as a blob * @link https://php.net/manual/en/imagick.getimageblob.php * @return string a string containing the image. * @throws ImagickException on error. */ #[Pure] public function getImageBlob() {} /** * (PECL imagick 2.0.0)
* Returns all image sequences as a blob * @link https://php.net/manual/en/imagick.getimagesblob.php * @return string a string containing the images. On failure, throws ImagickException on failure * @throws ImagickException on failure */ #[Pure] public function getImagesBlob() {} /** * (PECL imagick 2.0.0)
* Sets the Imagick iterator to the first image * @link https://php.net/manual/en/imagick.setfirstiterator.php * @return bool TRUE on success. */ public function setFirstIterator() {} /** * (PECL imagick 2.0.1)
* Sets the Imagick iterator to the last image * @link https://php.net/manual/en/imagick.setlastiterator.php * @return bool TRUE on success. */ public function setLastIterator() {} public function resetIterator() {} /** * (PECL imagick 2.0.0)
* Move to the previous image in the object * @link https://php.net/manual/en/imagick.previousimage.php * @return bool TRUE on success. */ public function previousImage() {} /** * (PECL imagick 2.0.0)
* Moves to the next image * @link https://php.net/manual/en/imagick.nextimage.php * @return bool TRUE on success. */ public function nextImage() {} /** * (PECL imagick 2.0.0)
* Checks if the object has a previous image * @link https://php.net/manual/en/imagick.haspreviousimage.php * @return bool TRUE if the object has more images when traversing the list in the * reverse direction, returns FALSE if there are none. */ public function hasPreviousImage() {} /** * (PECL imagick 2.0.0)
* Checks if the object has more images * @link https://php.net/manual/en/imagick.hasnextimage.php * @return bool TRUE if the object has more images when traversing the list in the * forward direction, returns FALSE if there are none. */ public function hasNextImage() {} /** * (PECL imagick 2.0.0)
* Set the iterator position * @link https://php.net/manual/en/imagick.setimageindex.php * @param int $index

* The position to set the iterator to *

* @return bool TRUE on success. * @throws ImagickException on error. */ #[Deprecated] public function setImageIndex($index) {} /** * (PECL imagick 2.0.0)
* Gets the index of the current active image * @link https://php.net/manual/en/imagick.getimageindex.php * @return int an integer containing the index of the image in the stack. */ #[Deprecated] #[Pure] public function getImageIndex() {} /** * (PECL imagick 2.0.0)
* Adds a comment to your image * @link https://php.net/manual/en/imagick.commentimage.php * @param string $comment

* The comment to add *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function commentImage($comment) {} /** * (PECL imagick 2.0.0)
* Extracts a region of the image * @link https://php.net/manual/en/imagick.cropimage.php * @param int $width

* The width of the crop *

* @param int $height

* The height of the crop *

* @param int $x

* The X coordinate of the cropped region's top left corner *

* @param int $y

* The Y coordinate of the cropped region's top left corner *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function cropImage($width, $height, $x, $y) {} /** * (PECL imagick 2.0.0)
* Adds a label to an image * @link https://php.net/manual/en/imagick.labelimage.php * @param string $label

* The label to add *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function labelImage($label) {} /** * (PECL imagick 2.0.0)
* Gets the width and height as an associative array * @link https://php.net/manual/en/imagick.getimagegeometry.php * @return int[] an array with the width/height of the image. * @throws ImagickException on error. */ #[ArrayShape(["width" => "int", "height" => "int"])] #[Pure] public function getImageGeometry() {} /** * (PECL imagick 2.0.0)
* Renders the ImagickDraw object on the current image * @link https://php.net/manual/en/imagick.drawimage.php * @param ImagickDraw $draw

* The drawing operations to render on the image. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function drawImage(ImagickDraw $draw) {} /** * (No version information available, might only be in SVN)
* Sets the image compression quality * @link https://php.net/manual/en/imagick.setimagecompressionquality.php * @param int $quality

* The image compression quality as an integer *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageCompressionQuality($quality) {} /** * (PECL imagick 2.2.2)
* Gets the current image's compression quality * @link https://php.net/manual/en/imagick.getimagecompressionquality.php * @return int integer describing the images compression quality */ #[Pure] public function getImageCompressionQuality() {} /** * (PECL imagick 2.0.0)
* Annotates an image with text * @link https://php.net/manual/en/imagick.annotateimage.php * @param ImagickDraw $draw_settings

* The ImagickDraw object that contains settings for drawing the text *

* @param float $x

* Horizontal offset in pixels to the left of text *

* @param float $y

* Vertical offset in pixels to the baseline of text *

* @param float $angle

* The angle at which to write the text *

* @param string $text

* The string to draw *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function annotateImage(ImagickDraw $draw_settings, $x, $y, $angle, $text) {} /** * (PECL imagick 2.0.0)
* Composite one image onto another * @link https://php.net/manual/en/imagick.compositeimage.php * @param Imagick $composite_object

* Imagick object which holds the composite image *

* @param int $composite Composite operator * @param int $x

* The column offset of the composited image *

* @param int $y

* The row offset of the composited image *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this list of channel constants. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function compositeImage(Imagick $composite_object, $composite, $x, $y, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Control the brightness, saturation, and hue * @link https://php.net/manual/en/imagick.modulateimage.php * @param float $brightness * @param float $saturation * @param float $hue * @return bool TRUE on success. * @throws ImagickException on error. */ public function modulateImage($brightness, $saturation, $hue) {} /** * (PECL imagick 2.0.0)
* Gets the number of unique colors in the image * @link https://php.net/manual/en/imagick.getimagecolors.php * @return int TRUE on success. * @throws ImagickException on error. */ #[Pure] public function getImageColors() {} /** * (PECL imagick 2.0.0)
* Creates a composite image * @link https://php.net/manual/en/imagick.montageimage.php * @param ImagickDraw $draw

* The font name, size, and color are obtained from this object. *

* @param string $tile_geometry

* The number of tiles per row and page (e.g. 6x4+0+0). *

* @param string $thumbnail_geometry

* Preferred image size and border size of each thumbnail * (e.g. 120x120+4+3>). *

* @param int $mode

* Thumbnail framing mode, see Montage Mode constants. *

* @param string $frame

* Surround the image with an ornamental border (e.g. 15x15+3+3). The * frame color is that of the thumbnail's matte color. *

* @return Imagick TRUE on success. * @throws ImagickException on error. */ public function montageImage(ImagickDraw $draw, $tile_geometry, $thumbnail_geometry, $mode, $frame) {} /** * (PECL imagick 2.0.0)
* Identifies an image and fetches attributes * @link https://php.net/manual/en/imagick.identifyimage.php * @param bool $appendRawOutput [optional] * @return array Identifies an image and returns the attributes. Attributes include * the image width, height, size, and others. * @throws ImagickException on error. */ public function identifyImage($appendRawOutput = false) {} /** * (PECL imagick 2.0.0)
* Changes the value of individual pixels based on a threshold * @link https://php.net/manual/en/imagick.thresholdimage.php * @param float $threshold * @param int $channel [optional] * @return bool TRUE on success. * @throws ImagickException on error. */ public function thresholdImage($threshold, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Selects a threshold for each pixel based on a range of intensity * @link https://php.net/manual/en/imagick.adaptivethresholdimage.php * @param int $width

* Width of the local neighborhood. *

* @param int $height

* Height of the local neighborhood. *

* @param int $offset

* The mean offset *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function adaptiveThresholdImage($width, $height, $offset) {} /** * (PECL imagick 2.0.0)
* Forces all pixels below the threshold into black * @link https://php.net/manual/en/imagick.blackthresholdimage.php * @param mixed $threshold

* The threshold below which everything turns black *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function blackThresholdImage($threshold) {} /** * (PECL imagick 2.0.0)
* Force all pixels above the threshold into white * @link https://php.net/manual/en/imagick.whitethresholdimage.php * @param mixed $threshold * @return bool TRUE on success. * @throws ImagickException on error. */ public function whiteThresholdImage($threshold) {} /** * (PECL imagick 2.0.0)
* Append a set of images * @link https://php.net/manual/en/imagick.appendimages.php * @param bool $stack [optional]

* Whether to stack the images vertically. * By default (or if FALSE is specified) images are stacked left-to-right. * If stack is TRUE, images are stacked top-to-bottom. *

* @return Imagick Imagick instance on success. * @throws ImagickException on error. */ public function appendImages($stack = false) {} /** * (PECL imagick 2.0.0)
* Simulates a charcoal drawing * @link https://php.net/manual/en/imagick.charcoalimage.php * @param float $radius

* The radius of the Gaussian, in pixels, not counting the center pixel *

* @param float $sigma

* The standard deviation of the Gaussian, in pixels *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function charcoalImage($radius, $sigma) {} /** * (PECL imagick 2.0.0)
* Enhances the contrast of a color image * @link https://php.net/manual/en/imagick.normalizeimage.php * @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function normalizeImage($channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Simulates an oil painting * @link https://php.net/manual/en/imagick.oilpaintimage.php * @param float $radius

* The radius of the circular neighborhood. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function oilPaintImage($radius) {} /** * (PECL imagick 2.0.0)
* Reduces the image to a limited number of color level * @link https://php.net/manual/en/imagick.posterizeimage.php * @param int $levels * @param bool $dither * @return bool TRUE on success. * @throws ImagickException on error. */ public function posterizeImage($levels, $dither) {} /** * (PECL imagick 2.0.0)
* Radial blurs an image * @link https://php.net/manual/en/imagick.radialblurimage.php * @param float $angle * @param int $channel [optional] * @return bool TRUE on success. * @throws ImagickException on error. */ public function radialBlurImage($angle, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Creates a simulated 3d button-like effect * @link https://php.net/manual/en/imagick.raiseimage.php * @param int $width * @param int $height * @param int $x * @param int $y * @param bool $raise * @return bool TRUE on success. * @throws ImagickException on error. */ public function raiseImage($width, $height, $x, $y, $raise) {} /** * (PECL imagick 2.0.0)
* Resample image to desired resolution * @link https://php.net/manual/en/imagick.resampleimage.php * @param float $x_resolution * @param float $y_resolution * @param int $filter * @param float $blur * @return bool TRUE on success. * @throws ImagickException on error. */ public function resampleImage($x_resolution, $y_resolution, $filter, $blur) {} /** * Scales an image to the desired dimensions with one of these filters:
* If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.
* If false, the calculations should produce the same results as ImageMagick CLI does.
*
* Note: The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched.
* In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given. * @link https://php.net/manual/en/imagick.resizeimage.php * @param int $columns Width of the image * @param int $rows Height of the image * @param int $filter Refer to the list of filter constants. * @param float $blur The blur factor where > 1 is blurry, < 1 is sharp. * @param bool $bestfit [optional] Added since 2.1.0. Added optional fit parameter. This method now supports proportional scaling. Pass zero as either parameter for proportional scaling * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE * @return bool TRUE on success * @throws ImagickException on error. * @since 2.0.0 */ public function resizeImage($columns, $rows, $filter, $blur, $bestfit = false, $legacy = false) {} /** * (PECL imagick 2.0.0)
* Offsets an image * @link https://php.net/manual/en/imagick.rollimage.php * @param int $x

* The X offset. *

* @param int $y

* The Y offset. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function rollImage($x, $y) {} /** * (PECL imagick 2.0.0)
* Rotates an image * @link https://php.net/manual/en/imagick.rotateimage.php * @param mixed $background

* The background color *

* @param float $degrees

* The number of degrees to rotate the image *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function rotateImage($background, $degrees) {} /** * (PECL imagick 2.0.0)
* Scales an image with pixel sampling * @link https://php.net/manual/en/imagick.sampleimage.php * @param int $columns * @param int $rows * @return bool TRUE on success. * @throws ImagickException on error. */ public function sampleImage($columns, $rows) {} /** * (PECL imagick 2.0.0)
* Applies a solarizing effect to the image * @link https://php.net/manual/en/imagick.solarizeimage.php * @param int $threshold * @return bool TRUE on success. * @throws ImagickException on error. */ public function solarizeImage($threshold) {} /** * (PECL imagick 2.0.0)
* Simulates an image shadow * @link https://php.net/manual/en/imagick.shadowimage.php * @param float $opacity * @param float $sigma * @param int $x * @param int $y * @return bool TRUE on success. * @throws ImagickException on error. */ public function shadowImage($opacity, $sigma, $x, $y) {} /** * @param string $key * @param string $value * @return bool * @throws ImagickException on error. */ #[Deprecated] public function setImageAttribute($key, $value) {} /** * (PECL imagick 2.0.0)
* Sets the image background color * @link https://php.net/manual/en/imagick.setimagebackgroundcolor.php * @param mixed $background * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageBackgroundColor($background) {} /** * (PECL imagick 2.0.0)
* Sets the image composite operator * @link https://php.net/manual/en/imagick.setimagecompose.php * @param int $compose * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageCompose($compose) {} /** * (PECL imagick 2.0.0)
* Sets the image compression * @link https://php.net/manual/en/imagick.setimagecompression.php * @param int $compression

* One of the COMPRESSION constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageCompression($compression) {} /** * (PECL imagick 2.0.0)
* Sets the image delay * @link https://php.net/manual/en/imagick.setimagedelay.php * @param int $delay

* The amount of time expressed in 'ticks' that the image should be * displayed for. For animated GIFs there are 100 ticks per second, so a * value of 20 would be 20/100 of a second aka 1/5th of a second. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageDelay($delay) {} /** * (PECL imagick 2.0.0)
* Sets the image depth * @link https://php.net/manual/en/imagick.setimagedepth.php * @param int $depth * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageDepth($depth) {} /** * (PECL imagick 2.0.0)
* Sets the image gamma * @link https://php.net/manual/en/imagick.setimagegamma.php * @param float $gamma * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageGamma($gamma) {} /** * (PECL imagick 2.0.0)
* Sets the image iterations * @link https://php.net/manual/en/imagick.setimageiterations.php * @param int $iterations

* The number of iterations the image should loop over. Set to '0' to loop * continuously. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageIterations($iterations) {} /** * (PECL imagick 2.0.0)
* Sets the image matte color * @link https://php.net/manual/en/imagick.setimagemattecolor.php * @param mixed $matte * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageMatteColor($matte) {} /** * (PECL imagick 2.0.0)
* Sets the page geometry of the image * @link https://php.net/manual/en/imagick.setimagepage.php * @param int $width * @param int $height * @param int $x * @param int $y * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImagePage($width, $height, $x, $y) {} /** * @param $filename * @throws ImagickException on error. */ public function setImageProgressMonitor($filename) {} /** * (PECL imagick 2.0.0)
* Sets the image resolution * @link https://php.net/manual/en/imagick.setimageresolution.php * @param float $x_resolution * @param float $y_resolution * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageResolution($x_resolution, $y_resolution) {} /** * (PECL imagick 2.0.0)
* Sets the image scene * @link https://php.net/manual/en/imagick.setimagescene.php * @param int $scene * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageScene($scene) {} /** * (PECL imagick 2.0.0)
* Sets the image ticks-per-second * @link https://php.net/manual/en/imagick.setimagetickspersecond.php * @param int $ticks_per_second

* The duration for which an image should be displayed expressed in ticks * per second. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageTicksPerSecond($ticks_per_second) {} /** * (PECL imagick 2.0.0)
* Sets the image type * @link https://php.net/manual/en/imagick.setimagetype.php * @param int $image_type * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageType($image_type) {} /** * (PECL imagick 2.0.0)
* Sets the image units of resolution * @link https://php.net/manual/en/imagick.setimageunits.php * @param int $units * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageUnits($units) {} /** * (PECL imagick 2.0.0)
* Sharpens an image * @link https://php.net/manual/en/imagick.sharpenimage.php * @param float $radius * @param float $sigma * @param int $channel [optional] * @return bool TRUE on success. * @throws ImagickException on error. */ public function sharpenImage($radius, $sigma, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Shaves pixels from the image edges * @link https://php.net/manual/en/imagick.shaveimage.php * @param int $columns * @param int $rows * @return bool TRUE on success. * @throws ImagickException on error. */ public function shaveImage($columns, $rows) {} /** * (PECL imagick 2.0.0)
* Creating a parallelogram * @link https://php.net/manual/en/imagick.shearimage.php * @param mixed $background

* The background color *

* @param float $x_shear

* The number of degrees to shear on the x axis *

* @param float $y_shear

* The number of degrees to shear on the y axis *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function shearImage($background, $x_shear, $y_shear) {} /** * (PECL imagick 2.0.0)
* Splices a solid color into the image * @link https://php.net/manual/en/imagick.spliceimage.php * @param int $width * @param int $height * @param int $x * @param int $y * @return bool TRUE on success. * @throws ImagickException on error. */ public function spliceImage($width, $height, $x, $y) {} /** * (PECL imagick 2.0.0)
* Fetch basic attributes about the image * @link https://php.net/manual/en/imagick.pingimage.php * @param string $filename

* The filename to read the information from. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function pingImage($filename) {} /** * (PECL imagick 2.0.0)
* Reads image from open filehandle * @link https://php.net/manual/en/imagick.readimagefile.php * @param resource $filehandle * @param string $fileName [optional] * @return bool TRUE on success. * @throws ImagickException on error. */ public function readImageFile($filehandle, $fileName = null) {} /** * (PECL imagick 2.0.0)
* Displays an image * @link https://php.net/manual/en/imagick.displayimage.php * @param string $servername

* The X server name *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function displayImage($servername) {} /** * (PECL imagick 2.0.0)
* Displays an image or image sequence * @link https://php.net/manual/en/imagick.displayimages.php * @param string $servername

* The X server name *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function displayImages($servername) {} /** * (PECL imagick 2.0.0)
* Randomly displaces each pixel in a block * @link https://php.net/manual/en/imagick.spreadimage.php * @param float $radius * @return bool TRUE on success. * @throws ImagickException on error. */ public function spreadImage($radius) {} /** * (PECL imagick 2.0.0)
* Swirls the pixels about the center of the image * @link https://php.net/manual/en/imagick.swirlimage.php * @param float $degrees * @return bool TRUE on success. * @throws ImagickException on error. */ public function swirlImage($degrees) {} /** * (PECL imagick 2.0.0)
* Strips an image of all profiles and comments * @link https://php.net/manual/en/imagick.stripimage.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function stripImage() {} /** * (PECL imagick 2.0.0)
* Returns formats supported by Imagick * @link https://php.net/manual/en/imagick.queryformats.php * @param string $pattern [optional] * @return array an array containing the formats supported by Imagick. */ public static function queryFormats($pattern = "*") {} /** * (PECL imagick 2.0.0)
* Returns the configured fonts * @link https://php.net/manual/en/imagick.queryfonts.php * @param string $pattern [optional]

* The query pattern *

* @return array an array containing the configured fonts. */ public static function queryFonts($pattern = "*") {} /** * (PECL imagick 2.0.0)
* Returns an array representing the font metrics * @link https://php.net/manual/en/imagick.queryfontmetrics.php * @param ImagickDraw $properties

* ImagickDraw object containing font properties *

* @param string $text

* The text *

* @param bool $multiline [optional]

* Multiline parameter. If left empty it is autodetected *

* @return array a multi-dimensional array representing the font metrics. * @throws ImagickException on error. */ public function queryFontMetrics(ImagickDraw $properties, $text, $multiline = null) {} /** * (PECL imagick 2.0.0)
* Hides a digital watermark within the image * @link https://php.net/manual/en/imagick.steganoimage.php * @param Imagick $watermark_wand * @param int $offset * @return Imagick TRUE on success. * @throws ImagickException on error. */ public function steganoImage(Imagick $watermark_wand, $offset) {} /** * (PECL imagick 2.0.0)
* Adds random noise to the image * @link https://php.net/manual/en/imagick.addnoiseimage.php * @param int $noise_type

* The type of the noise. Refer to this list of * noise constants. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function addNoiseImage($noise_type, $channel = Imagick::CHANNEL_DEFAULT) {} /** * (PECL imagick 2.0.0)
* Simulates motion blur * @link https://php.net/manual/en/imagick.motionblurimage.php * @param float $radius

* The radius of the Gaussian, in pixels, not counting the center pixel. *

* @param float $sigma

* The standard deviation of the Gaussian, in pixels. *

* @param float $angle

* Apply the effect along this angle. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. * The channel argument affects only if Imagick is compiled against ImageMagick version * 6.4.4 or greater. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function motionBlurImage($radius, $sigma, $angle, $channel = Imagick::CHANNEL_DEFAULT) {} /** * (PECL imagick 2.0.0)
* Forms a mosaic from images * @link https://php.net/manual/en/imagick.mosaicimages.php * @return Imagick TRUE on success. * @throws ImagickException on error. */ #[Deprecated] public function mosaicImages() {} /** * (PECL imagick 2.0.0)
* Method morphs a set of images * @link https://php.net/manual/en/imagick.morphimages.php * @param int $number_frames

* The number of in-between images to generate. *

* @return Imagick This method returns a new Imagick object on success. * Throw an ImagickException on error. * @throws ImagickException on error * @throws ImagickException on error. */ public function morphImages($number_frames) {} /** * (PECL imagick 2.0.0)
* Scales an image proportionally to half its size * @link https://php.net/manual/en/imagick.minifyimage.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function minifyImage() {} /** * (PECL imagick 2.0.0)
* Transforms an image * @link https://php.net/manual/en/imagick.affinetransformimage.php * @param ImagickDraw $matrix

* The affine matrix *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function affineTransformImage(ImagickDraw $matrix) {} /** * (PECL imagick 2.0.0)
* Average a set of images * @link https://php.net/manual/en/imagick.averageimages.php * @return Imagick a new Imagick object on success. * @throws ImagickException on error. */ #[Deprecated] public function averageImages() {} /** * (PECL imagick 2.0.0)
* Surrounds the image with a border * @link https://php.net/manual/en/imagick.borderimage.php * @param mixed $bordercolor

* ImagickPixel object or a string containing the border color *

* @param int $width

* Border width *

* @param int $height

* Border height *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function borderImage($bordercolor, $width, $height) {} /** * (PECL imagick 2.0.0)
* Removes a region of an image and trims * @link https://php.net/manual/en/imagick.chopimage.php * @param int $width

* Width of the chopped area *

* @param int $height

* Height of the chopped area *

* @param int $x

* X origo of the chopped area *

* @param int $y

* Y origo of the chopped area *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function chopImage($width, $height, $x, $y) {} /** * (PECL imagick 2.0.0)
* Clips along the first path from the 8BIM profile * @link https://php.net/manual/en/imagick.clipimage.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function clipImage() {} /** * (PECL imagick 2.0.0)
* Clips along the named paths from the 8BIM profile * @link https://php.net/manual/en/imagick.clippathimage.php * @param string $pathname

* The name of the path *

* @param bool $inside

* If TRUE later operations take effect inside clipping path. * Otherwise later operations take effect outside clipping path. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function clipPathImage($pathname, $inside) {} /** * Alias to {@see Imagick::clipPathImage} * @param string $pathname * @param string $inside * @throws ImagickException on error. */ public function clipImagePath($pathname, $inside) {} /** * (PECL imagick 2.0.0)
* Composites a set of images * @link https://php.net/manual/en/imagick.coalesceimages.php * @return Imagick a new Imagick object on success. * @throws ImagickException on error. */ public function coalesceImages() {} /** * (PECL imagick 2.0.0)
* Changes the color value of any pixel that matches target * @link https://php.net/manual/en/imagick.colorfloodfillimage.php * @param mixed $fill

* ImagickPixel object containing the fill color *

* @param float $fuzz

* The amount of fuzz. For example, set fuzz to 10 and the color red at * intensities of 100 and 102 respectively are now interpreted as the * same color for the purposes of the floodfill. *

* @param mixed $bordercolor

* ImagickPixel object containing the border color *

* @param int $x

* X start position of the floodfill *

* @param int $y

* Y start position of the floodfill *

* @return bool TRUE on success. * @throws ImagickException on error. */ #[Deprecated] public function colorFloodfillImage($fill, $fuzz, $bordercolor, $x, $y) {} /** * Blends the fill color with each pixel in the image. The 'opacity' color is a per channel strength factor for how strongly the color should be applied.
* If legacy is true, the behaviour of this function is incorrect, but consistent with how it behaved before Imagick version 3.4.0 * @link https://php.net/manual/en/imagick.colorizeimage.php * @param mixed $colorize

* ImagickPixel object or a string containing the colorize color *

* @param mixed $opacity

* ImagickPixel object or an float containing the opacity value. * 1.0 is fully opaque and 0.0 is fully transparent. *

* @param bool $legacy [optional] Added since 3.4.0. Default value FALSE * @return bool TRUE on success. * @throws ImagickException Throws ImagickException on error * @since 2.0.0 */ public function colorizeImage($colorize, $opacity, $legacy = false) {} /** * (PECL imagick 2.0.0)
* Returns the difference in one or more images * @link https://php.net/manual/en/imagick.compareimagechannels.php * @param Imagick $image

* Imagick object containing the image to compare. *

* @param int $channelType

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @param int $metricType

* One of the metric type constants. *

* @return array Array consisting of new_wand and * distortion. * @throws ImagickException on error. */ public function compareImageChannels(Imagick $image, $channelType, $metricType) {} /** * (PECL imagick 2.0.0)
* Compares an image to a reconstructed image * @link https://php.net/manual/en/imagick.compareimages.php * @param Imagick $compare

* An image to compare to. *

* @param int $metric

* Provide a valid metric type constant. Refer to this * list of metric constants. *

* @return array Array consisting of an Imagick object of the * reconstructed image and a float representing the difference. * @throws ImagickException Throws ImagickException on error. */ public function compareImages(Imagick $compare, $metric) {} /** * (PECL imagick 2.0.0)
* Change the contrast of the image * @link https://php.net/manual/en/imagick.contrastimage.php * @param bool $sharpen

* The sharpen value *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function contrastImage($sharpen) {} /** * (PECL imagick 2.0.0)
* Combines one or more images into a single image * @link https://php.net/manual/en/imagick.combineimages.php * @param int $channelType

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return Imagick TRUE on success. * @throws ImagickException on error. */ public function combineImages($channelType) {} /** * (PECL imagick 2.0.0)
* Applies a custom convolution kernel to the image * @link https://php.net/manual/en/imagick.convolveimage.php * @param array $kernel

* The convolution kernel *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function convolveImage(array $kernel, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Displaces an image's colormap * @link https://php.net/manual/en/imagick.cyclecolormapimage.php * @param int $displace

* The amount to displace the colormap. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function cycleColormapImage($displace) {} /** * (PECL imagick 2.0.0)
* Returns certain pixel differences between images * @link https://php.net/manual/en/imagick.deconstructimages.php * @return Imagick a new Imagick object on success. * @throws ImagickException on error. */ public function deconstructImages() {} /** * (PECL imagick 2.0.0)
* Reduces the speckle noise in an image * @link https://php.net/manual/en/imagick.despeckleimage.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function despeckleImage() {} /** * (PECL imagick 2.0.0)
* Enhance edges within the image * @link https://php.net/manual/en/imagick.edgeimage.php * @param float $radius

* The radius of the operation. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function edgeImage($radius) {} /** * (PECL imagick 2.0.0)
* Returns a grayscale image with a three-dimensional effect * @link https://php.net/manual/en/imagick.embossimage.php * @param float $radius

* The radius of the effect *

* @param float $sigma

* The sigma of the effect *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function embossImage($radius, $sigma) {} /** * (PECL imagick 2.0.0)
* Improves the quality of a noisy image * @link https://php.net/manual/en/imagick.enhanceimage.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function enhanceImage() {} /** * (PECL imagick 2.0.0)
* Equalizes the image histogram * @link https://php.net/manual/en/imagick.equalizeimage.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function equalizeImage() {} /** * (PECL imagick 2.0.0)
* Applies an expression to an image * @link https://php.net/manual/en/imagick.evaluateimage.php * @param int $op

* The evaluation operator *

* @param float $constant

* The value of the operator *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function evaluateImage($op, $constant, $channel = Imagick::CHANNEL_ALL) {} /** * Merges a sequence of images. This is useful for combining Photoshop layers into a single image. * This is replaced by: *
     * $im = $im->mergeImageLayers(\Imagick::LAYERMETHOD_FLATTEN)
     * 
* @link https://php.net/manual/en/imagick.flattenimages.php * @return Imagick Returns an Imagick object containing the merged image. * @throws ImagickException Throws ImagickException on error. * @since 2.0.0 */ #[Deprecated] public function flattenImages() {} /** * (PECL imagick 2.0.0)
* Creates a vertical mirror image * @link https://php.net/manual/en/imagick.flipimage.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function flipImage() {} /** * (PECL imagick 2.0.0)
* Creates a horizontal mirror image * @link https://php.net/manual/en/imagick.flopimage.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function flopImage() {} /** * (PECL imagick 2.0.0)
* Adds a simulated three-dimensional border * @link https://php.net/manual/en/imagick.frameimage.php * @param mixed $matte_color

* ImagickPixel object or a string representing the matte color *

* @param int $width

* The width of the border *

* @param int $height

* The height of the border *

* @param int $inner_bevel

* The inner bevel width *

* @param int $outer_bevel

* The outer bevel width *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function frameImage($matte_color, $width, $height, $inner_bevel, $outer_bevel) {} /** * (PECL imagick 2.0.0)
* Evaluate expression for each pixel in the image * @link https://php.net/manual/en/imagick.fximage.php * @param string $expression

* The expression. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return Imagick TRUE on success. * @throws ImagickException on error. */ public function fxImage($expression, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Gamma-corrects an image * @link https://php.net/manual/en/imagick.gammaimage.php * @param float $gamma

* The amount of gamma-correction. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function gammaImage($gamma, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Blurs an image * @link https://php.net/manual/en/imagick.gaussianblurimage.php * @param float $radius

* The radius of the Gaussian, in pixels, not counting the center pixel. *

* @param float $sigma

* The standard deviation of the Gaussian, in pixels. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function gaussianBlurImage($radius, $sigma, $channel = Imagick::CHANNEL_ALL) {} /** * @link https://www.php.net/manual/en/imagick.getimageattribute.php * @param string $key

The key of the attribute to get.

* @return string */ #[Deprecated] #[Pure] public function getImageAttribute($key) {} /** * (PECL imagick 2.0.0)
* Returns the image background color * @link https://php.net/manual/en/imagick.getimagebackgroundcolor.php * @return ImagickPixel an ImagickPixel set to the background color of the image. * @throws ImagickException on error. */ #[Pure] public function getImageBackgroundColor() {} /** * (PECL imagick 2.0.0)
* Returns the chromaticy blue primary point * @link https://php.net/manual/en/imagick.getimageblueprimary.php * @return float[] Array consisting of "x" and "y" coordinates of point. * @throws ImagickException on error. */ #[ArrayShape(["x" => "float", "y" => "float"])] #[Pure] public function getImageBluePrimary() {} /** * (PECL imagick 2.0.0)
* Returns the image border color * @link https://php.net/manual/en/imagick.getimagebordercolor.php * @return ImagickPixel TRUE on success. * @throws ImagickException on error. */ #[Pure] public function getImageBorderColor() {} /** * (PECL imagick 2.0.0)
* Gets the depth for a particular image channel * @link https://php.net/manual/en/imagick.getimagechanneldepth.php * @param int $channel

* Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants *

* @return int TRUE on success. * @throws ImagickException on error. */ #[Pure] public function getImageChannelDepth($channel) {} /** * (PECL imagick 2.0.0)
* Compares image channels of an image to a reconstructed image * @link https://php.net/manual/en/imagick.getimagechanneldistortion.php * @param Imagick $reference

* Imagick object to compare to. *

* @param int $channel

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @param int $metric

* One of the metric type constants. *

* @return float TRUE on success. * @throws ImagickException on error. */ #[Pure] public function getImageChannelDistortion(Imagick $reference, $channel, $metric) {} /** * (PECL imagick 2.0.0)
* Gets the extrema for one or more image channels * @link https://php.net/manual/en/imagick.getimagechannelextrema.php * @param int $channel

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return int[] * @throws ImagickException on error. */ #[ArrayShape(["minima" => "int", "maxima" => "int"])] #[Deprecated] #[Pure] public function getImageChannelExtrema($channel) {} /** * (PECL imagick 2.0.0)
* Gets the mean and standard deviation * @link https://php.net/manual/en/imagick.getimagechannelmean.php * @param int $channel

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return float[] * @throws ImagickException on error. */ #[ArrayShape(["mean" => "float", "standardDeviation" => "float"])] #[Pure] public function getImageChannelMean($channel) {} /** * (PECL imagick 2.0.0)
* Returns statistics for each channel in the image * @link https://php.net/manual/en/imagick.getimagechannelstatistics.php * @return array * @throws ImagickException on error. */ #[Pure] public function getImageChannelStatistics() {} /** * (PECL imagick 2.0.0)
* Returns the color of the specified colormap index * @link https://php.net/manual/en/imagick.getimagecolormapcolor.php * @param int $index

* The offset into the image colormap. *

* @return ImagickPixel TRUE on success. * @throws ImagickException on error. */ #[Pure] public function getImageColormapColor($index) {} /** * (PECL imagick 2.0.0)
* Gets the image colorspace * @link https://php.net/manual/en/imagick.getimagecolorspace.php * @return int TRUE on success. * @throws ImagickException on error. */ #[Pure] public function getImageColorspace() {} /** * (PECL imagick 2.0.0)
* Returns the composite operator associated with the image * @link https://php.net/manual/en/imagick.getimagecompose.php * @return int TRUE on success. * @throws ImagickException on error. */ #[Pure] public function getImageCompose() {} /** * (PECL imagick 2.0.0)
* Gets the image delay * @link https://php.net/manual/en/imagick.getimagedelay.php * @return int the image delay. * @throws ImagickException on error. */ #[Pure] public function getImageDelay() {} /** * (PECL imagick 0.9.1-0.9.9)
* Gets the image depth * @link https://php.net/manual/en/imagick.getimagedepth.php * @return int The image depth. * @throws ImagickException on error. */ #[Pure] public function getImageDepth() {} /** * (PECL imagick 2.0.0)
* Compares an image to a reconstructed image * @link https://php.net/manual/en/imagick.getimagedistortion.php * @param Imagick $reference

* Imagick object to compare to. *

* @param int $metric

* One of the metric type constants. *

* @return float the distortion metric used on the image (or the best guess * thereof). * @throws ImagickException on error. */ #[Pure] public function getImageDistortion(Imagick $reference, $metric) {} /** * (PECL imagick 2.0.0)
* Gets the extrema for the image * @link https://php.net/manual/en/imagick.getimageextrema.php * @return int[] an associative array with the keys "min" and "max". * @throws ImagickException on error. */ #[ArrayShape(["min" => "int", "max" => "int"])] #[Deprecated] #[Pure] public function getImageExtrema() {} /** * (PECL imagick 2.0.0)
* Gets the image disposal method * @link https://php.net/manual/en/imagick.getimagedispose.php * @return int the dispose method on success. * @throws ImagickException on error. */ #[Pure] public function getImageDispose() {} /** * (PECL imagick 2.0.0)
* Gets the image gamma * @link https://php.net/manual/en/imagick.getimagegamma.php * @return float the image gamma on success. * @throws ImagickException on error. */ #[Pure] public function getImageGamma() {} /** * (PECL imagick 2.0.0)
* Returns the chromaticy green primary point * @link https://php.net/manual/en/imagick.getimagegreenprimary.php * @return float[] an array with the keys "x" and "y" on success, throws an ImagickException on failure. * @throws ImagickException on failure * @throws ImagickException on error. */ #[ArrayShape(["x" => "float", "y" => "float"])] #[Pure] public function getImageGreenPrimary() {} /** * (PECL imagick 2.0.0)
* Returns the image height * @link https://php.net/manual/en/imagick.getimageheight.php * @return int the image height in pixels. * @throws ImagickException on error. */ #[Pure] public function getImageHeight() {} /** * (PECL imagick 2.0.0)
* Gets the image histogram * @link https://php.net/manual/en/imagick.getimagehistogram.php * @return array the image histogram as an array of ImagickPixel objects. * @throws ImagickException on error. */ #[Pure] public function getImageHistogram() {} /** * (PECL imagick 2.0.0)
* Gets the image interlace scheme * @link https://php.net/manual/en/imagick.getimageinterlacescheme.php * @return int the interlace scheme as an integer on success. * Trhow an ImagickException on error. * @throws ImagickException on error */ #[Deprecated] #[Pure] public function getImageInterlaceScheme() {} /** * (PECL imagick 2.0.0)
* Gets the image iterations * @link https://php.net/manual/en/imagick.getimageiterations.php * @return int the image iterations as an integer. * @throws ImagickException on error. */ #[Pure] public function getImageIterations() {} /** * (PECL imagick 2.0.0)
* Returns the image matte color * @link https://php.net/manual/en/imagick.getimagemattecolor.php * @return ImagickPixel ImagickPixel object on success. * @throws ImagickException on error. */ #[Pure] public function getImageMatteColor() {} /** * (PECL imagick 2.0.0)
* Returns the page geometry * @link https://php.net/manual/en/imagick.getimagepage.php * @return int[] the page geometry associated with the image in an array with the * keys "width", "height", "x", and "y". * @throws ImagickException on error. */ #[ArrayShape(["width" => "int", "height" => "int", "x" => "int", "y" => "int"])] #[Pure] public function getImagePage() {} /** * (PECL imagick 2.0.0)
* Returns the color of the specified pixel * @link https://php.net/manual/en/imagick.getimagepixelcolor.php * @param int $x

* The x-coordinate of the pixel *

* @param int $y

* The y-coordinate of the pixel *

* @return ImagickPixel an ImagickPixel instance for the color at the coordinates given. * @throws ImagickException on error. */ #[Pure] public function getImagePixelColor($x, $y) {} /** * (PECL imagick 2.0.0)
* Returns the named image profile * @link https://php.net/manual/en/imagick.getimageprofile.php * @param string $name

* The name of the profile to return. *

* @return string a string containing the image profile. * @throws ImagickException on error. */ #[Pure] public function getImageProfile($name) {} /** * (PECL imagick 2.0.0)
* Returns the chromaticity red primary point * @link https://php.net/manual/en/imagick.getimageredprimary.php * @return float[] the chromaticity red primary point as an array with the keys "x" * and "y". * Throw an ImagickException on error. * @throws ImagickException on error */ #[ArrayShape(["x" => "float", "y" => "float"])] #[Pure] public function getImageRedPrimary() {} /** * (PECL imagick 2.0.0)
* Gets the image rendering intent * @link https://php.net/manual/en/imagick.getimagerenderingintent.php * @return int the image rendering intent. * @throws ImagickException on error. */ #[Pure] public function getImageRenderingIntent() {} /** * (PECL imagick 2.0.0)
* Gets the image X and Y resolution * @link https://php.net/manual/en/imagick.getimageresolution.php * @return float[] the resolution as an array. * @throws ImagickException on error. */ #[ArrayShape(["x" => "float", "y" => "float"])] #[Pure] public function getImageResolution() {} /** * (PECL imagick 2.0.0)
* Gets the image scene * @link https://php.net/manual/en/imagick.getimagescene.php * @return int the image scene. * @throws ImagickException on error. */ #[Pure] public function getImageScene() {} /** * (PECL imagick 2.0.0)
* Generates an SHA-256 message digest * @link https://php.net/manual/en/imagick.getimagesignature.php * @return string a string containing the SHA-256 hash of the file. * @throws ImagickException on error. */ #[Pure] public function getImageSignature() {} /** * (PECL imagick 2.0.0)
* Gets the image ticks-per-second * @link https://php.net/manual/en/imagick.getimagetickspersecond.php * @return int the image ticks-per-second. * @throws ImagickException on error. */ #[Pure] public function getImageTicksPerSecond() {} /** * (PECL imagick 0.9.10-0.9.9)
* Gets the potential image type * @link https://php.net/manual/en/imagick.getimagetype.php * @return int the potential image type. * imagick::IMGTYPE_UNDEFINED * imagick::IMGTYPE_BILEVEL * imagick::IMGTYPE_GRAYSCALE * imagick::IMGTYPE_GRAYSCALEMATTE * imagick::IMGTYPE_PALETTE * imagick::IMGTYPE_PALETTEMATTE * imagick::IMGTYPE_TRUECOLOR * imagick::IMGTYPE_TRUECOLORMATTE * imagick::IMGTYPE_COLORSEPARATION * imagick::IMGTYPE_COLORSEPARATIONMATTE * imagick::IMGTYPE_OPTIMIZE * @throws ImagickException on error. */ #[Pure] public function getImageType() {} /** * (PECL imagick 2.0.0)
* Gets the image units of resolution * @link https://php.net/manual/en/imagick.getimageunits.php * @return int the image units of resolution. * @throws ImagickException on error. */ #[Pure] public function getImageUnits() {} /** * (PECL imagick 2.0.0)
* Returns the virtual pixel method * @link https://php.net/manual/en/imagick.getimagevirtualpixelmethod.php * @return int the virtual pixel method on success. * @throws ImagickException on error. */ #[Pure] public function getImageVirtualPixelMethod() {} /** * (PECL imagick 2.0.0)
* Returns the chromaticity white point * @link https://php.net/manual/en/imagick.getimagewhitepoint.php * @return float[] the chromaticity white point as an associative array with the keys * "x" and "y". * @throws ImagickException on error. */ #[ArrayShape(["x" => "float", "y" => "float"])] #[Pure] public function getImageWhitePoint() {} /** * (PECL imagick 2.0.0)
* Returns the image width * @link https://php.net/manual/en/imagick.getimagewidth.php * @return int the image width. * @throws ImagickException on error. */ #[Pure] public function getImageWidth() {} /** * (PECL imagick 2.0.0)
* Returns the number of images in the object * @link https://php.net/manual/en/imagick.getnumberimages.php * @return int the number of images associated with Imagick object. */ #[Pure] public function getNumberImages() {} /** * (PECL imagick 2.0.0)
* Gets the image total ink density * @link https://php.net/manual/en/imagick.getimagetotalinkdensity.php * @return float the image total ink density of the image. * Throw an ImagickException on error. * @throws ImagickException on error * @throws ImagickException on error. */ #[Pure] public function getImageTotalInkDensity() {} /** * (PECL imagick 2.0.0)
* Extracts a region of the image * @link https://php.net/manual/en/imagick.getimageregion.php * @param int $width

* The width of the extracted region. *

* @param int $height

* The height of the extracted region. *

* @param int $x

* X-coordinate of the top-left corner of the extracted region. *

* @param int $y

* Y-coordinate of the top-left corner of the extracted region. *

* @return Imagick Extracts a region of the image and returns it as a new wand. * @throws ImagickException on error. */ #[Pure] public function getImageRegion($width, $height, $x, $y) {} /** * (PECL imagick 2.0.0)
* Creates a new image as a copy * @link https://php.net/manual/en/imagick.implodeimage.php * @param float $radius

* The radius of the implode *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function implodeImage($radius) {} /** * (PECL imagick 2.0.0)
* Adjusts the levels of an image * @link https://php.net/manual/en/imagick.levelimage.php * @param float $blackPoint

* The image black point *

* @param float $gamma

* The gamma value *

* @param float $whitePoint

* The image white point *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function levelImage($blackPoint, $gamma, $whitePoint, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Scales an image proportionally 2x * @link https://php.net/manual/en/imagick.magnifyimage.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function magnifyImage() {} /** * (PECL imagick 2.0.0)
* Replaces the colors of an image with the closest color from a reference image. * @link https://php.net/manual/en/imagick.mapimage.php * @param Imagick $map * @param bool $dither * @return bool TRUE on success. * @throws ImagickException on error. */ #[Deprecated] public function mapImage(Imagick $map, $dither) {} /** * (PECL imagick 2.0.0)
* Changes the transparency value of a color * @link https://php.net/manual/en/imagick.mattefloodfillimage.php * @param float $alpha

* The level of transparency: 1.0 is fully opaque and 0.0 is fully * transparent. *

* @param float $fuzz

* The fuzz member of image defines how much tolerance is acceptable to * consider two colors as the same. *

* @param mixed $bordercolor

* An ImagickPixel object or string representing the border color. *

* @param int $x

* The starting x coordinate of the operation. *

* @param int $y

* The starting y coordinate of the operation. *

* @return bool TRUE on success. * @throws ImagickException on error. */ #[Deprecated] public function matteFloodfillImage($alpha, $fuzz, $bordercolor, $x, $y) {} /** * (PECL imagick 2.0.0)
* Applies a digital filter * @link https://php.net/manual/en/imagick.medianfilterimage.php * @param float $radius

* The radius of the pixel neighborhood. *

* @return bool TRUE on success. * @throws ImagickException on error. */ #[Deprecated] public function medianFilterImage($radius) {} /** * (PECL imagick 2.0.0)
* Negates the colors in the reference image * @link https://php.net/manual/en/imagick.negateimage.php * @param bool $gray

* Whether to only negate grayscale pixels within the image. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function negateImage($gray, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Change any pixel that matches color * @link https://php.net/manual/en/imagick.paintopaqueimage.php * @param mixed $target

* Change this target color to the fill color within the image. An * ImagickPixel object or a string representing the target color. *

* @param mixed $fill

* An ImagickPixel object or a string representing the fill color. *

* @param float $fuzz

* The fuzz member of image defines how much tolerance is acceptable to * consider two colors as the same. *

* @param int $channel [optional]

* Provide any channel constant that is valid for your channel mode. To * apply to more than one channel, combine channeltype constants using * bitwise operators. Refer to this * list of channel constants. *

* @return bool TRUE on success. * @throws ImagickException on error. */ #[Deprecated] public function paintOpaqueImage($target, $fill, $fuzz, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Changes any pixel that matches color with the color defined by fill * @link https://php.net/manual/en/imagick.painttransparentimage.php * @param mixed $target

* Change this target color to specified opacity value within the image. *

* @param float $alpha

* The level of transparency: 1.0 is fully opaque and 0.0 is fully * transparent. *

* @param float $fuzz

* The fuzz member of image defines how much tolerance is acceptable to * consider two colors as the same. *

* @return bool TRUE on success. * @throws ImagickException on error. */ #[Deprecated] public function paintTransparentImage($target, $alpha, $fuzz) {} /** * (PECL imagick 2.0.0)
* Quickly pin-point appropriate parameters for image processing * @link https://php.net/manual/en/imagick.previewimages.php * @param int $preview

* Preview type. See Preview type constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function previewImages($preview) {} /** * (PECL imagick 2.0.0)
* Adds or removes a profile from an image * @link https://php.net/manual/en/imagick.profileimage.php * @param string $name * @param string $profile * @return bool TRUE on success. * @throws ImagickException on error. */ public function profileImage($name, $profile) {} /** * (PECL imagick 2.0.0)
* Analyzes the colors within a reference image * @link https://php.net/manual/en/imagick.quantizeimage.php * @param int $numberColors * @param int $colorspace * @param int $treedepth * @param bool $dither * @param bool $measureError * @return bool TRUE on success. * @throws ImagickException on error. */ public function quantizeImage($numberColors, $colorspace, $treedepth, $dither, $measureError) {} /** * (PECL imagick 2.0.0)
* Analyzes the colors within a sequence of images * @link https://php.net/manual/en/imagick.quantizeimages.php * @param int $numberColors * @param int $colorspace * @param int $treedepth * @param bool $dither * @param bool $measureError * @return bool TRUE on success. * @throws ImagickException on error. */ public function quantizeImages($numberColors, $colorspace, $treedepth, $dither, $measureError) {} /** * (PECL imagick 2.0.0)
* Smooths the contours of an image * @link https://php.net/manual/en/imagick.reducenoiseimage.php * @param float $radius * @return bool TRUE on success. * @throws ImagickException on error. */ #[Deprecated] public function reduceNoiseImage($radius) {} /** * (PECL imagick 2.0.0)
* Removes the named image profile and returns it * @link https://php.net/manual/en/imagick.removeimageprofile.php * @param string $name * @return string a string containing the profile of the image. * @throws ImagickException on error. */ public function removeImageProfile($name) {} /** * (PECL imagick 2.0.0)
* Separates a channel from the image * @link https://php.net/manual/en/imagick.separateimagechannel.php * @param int $channel * @return bool TRUE on success. * @throws ImagickException on error. */ public function separateImageChannel($channel) {} /** * (PECL imagick 2.0.0)
* Sepia tones an image * @link https://php.net/manual/en/imagick.sepiatoneimage.php * @param float $threshold * @return bool TRUE on success. * @throws ImagickException on error. */ public function sepiaToneImage($threshold) {} /** * (PECL imagick 2.0.0)
* Sets the image bias for any method that convolves an image * @link https://php.net/manual/en/imagick.setimagebias.php * @param float $bias * @return bool TRUE on success. */ public function setImageBias($bias) {} /** * (PECL imagick 2.0.0)
* Sets the image chromaticity blue primary point * @link https://php.net/manual/en/imagick.setimageblueprimary.php * @param float $x * @param float $y * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageBluePrimary($x, $y) {} /** * (PECL imagick 2.0.0)
* Sets the image border color * @link https://php.net/manual/en/imagick.setimagebordercolor.php * @param mixed $border

* The border color *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageBorderColor($border) {} /** * (PECL imagick 2.0.0)
* Sets the depth of a particular image channel * @link https://php.net/manual/en/imagick.setimagechanneldepth.php * @param int $channel * @param int $depth * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageChannelDepth($channel, $depth) {} /** * (PECL imagick 2.0.0)
* Sets the color of the specified colormap index * @link https://php.net/manual/en/imagick.setimagecolormapcolor.php * @param int $index * @param ImagickPixel $color * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageColormapColor($index, ImagickPixel $color) {} /** * (PECL imagick 2.0.0)
* Sets the image colorspace * @link https://php.net/manual/en/imagick.setimagecolorspace.php * @param int $colorspace

* One of the COLORSPACE constants *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageColorspace($colorspace) {} /** * (PECL imagick 2.0.0)
* Sets the image disposal method * @link https://php.net/manual/en/imagick.setimagedispose.php * @param int $dispose * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageDispose($dispose) {} /** * (PECL imagick 2.0.0)
* Sets the image size * @link https://php.net/manual/en/imagick.setimageextent.php * @param int $columns * @param int $rows * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageExtent($columns, $rows) {} /** * (PECL imagick 2.0.0)
* Sets the image chromaticity green primary point * @link https://php.net/manual/en/imagick.setimagegreenprimary.php * @param float $x * @param float $y * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageGreenPrimary($x, $y) {} /** * (PECL imagick 2.0.0)
* Sets the image compression * @link https://php.net/manual/en/imagick.setimageinterlacescheme.php * @param int $interlace_scheme * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageInterlaceScheme($interlace_scheme) {} /** * (PECL imagick 2.0.0)
* Adds a named profile to the Imagick object * @link https://php.net/manual/en/imagick.setimageprofile.php * @param string $name * @param string $profile * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageProfile($name, $profile) {} /** * (PECL imagick 2.0.0)
* Sets the image chromaticity red primary point * @link https://php.net/manual/en/imagick.setimageredprimary.php * @param float $x * @param float $y * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageRedPrimary($x, $y) {} /** * (PECL imagick 2.0.0)
* Sets the image rendering intent * @link https://php.net/manual/en/imagick.setimagerenderingintent.php * @param int $rendering_intent * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageRenderingIntent($rendering_intent) {} /** * (PECL imagick 2.0.0)
* Sets the image virtual pixel method * @link https://php.net/manual/en/imagick.setimagevirtualpixelmethod.php * @param int $method * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageVirtualPixelMethod($method) {} /** * (PECL imagick 2.0.0)
* Sets the image chromaticity white point * @link https://php.net/manual/en/imagick.setimagewhitepoint.php * @param float $x * @param float $y * @return bool TRUE on success. * @throws ImagickException on error. */ public function setImageWhitePoint($x, $y) {} /** * (PECL imagick 2.0.0)
* Adjusts the contrast of an image * @link https://php.net/manual/en/imagick.sigmoidalcontrastimage.php * @param bool $sharpen * @param float $alpha * @param float $beta * @param int $channel [optional] * @return bool TRUE on success. * @throws ImagickException on error. */ public function sigmoidalContrastImage($sharpen, $alpha, $beta, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Composites two images * @link https://php.net/manual/en/imagick.stereoimage.php * @param Imagick $offset_wand * @return bool TRUE on success. * @throws ImagickException on error. */ public function stereoImage(Imagick $offset_wand) {} /** * (PECL imagick 2.0.0)
* Repeatedly tiles the texture image * @link https://php.net/manual/en/imagick.textureimage.php * @param Imagick $texture_wand * @return Imagick a new Imagick object that has the repeated texture applied. * @throws ImagickException on error. */ public function textureImage(Imagick $texture_wand) {} /** * pplies a color vector to each pixel in the image. The 'opacity' color is a per channel strength factor for how strongly the color should be applied. * If legacy is true, the behaviour of this function is incorrect, but consistent with how it behaved before Imagick version 3.4.0 * @link https://php.net/manual/en/imagick.tintimage.php * @param mixed $tint * @param mixed $opacity * @param bool $legacy [optional] * @return bool TRUE on success. * @throws ImagickException Throws ImagickException on error * @since 2.0.0 */ public function tintImage($tint, $opacity, $legacy = false) {} /** * (PECL imagick 2.0.0)
* Sharpens an image * @link https://php.net/manual/en/imagick.unsharpmaskimage.php * @param float $radius * @param float $sigma * @param float $amount * @param float $threshold * @param int $channel [optional] * @return bool TRUE on success. * @throws ImagickException on error. */ public function unsharpMaskImage($radius, $sigma, $amount, $threshold, $channel = Imagick::CHANNEL_ALL) {} /** * (PECL imagick 2.0.0)
* Returns a new Imagick object * @link https://php.net/manual/en/imagick.getimage.php * @return Imagick a new Imagick object with the current image sequence. * @throws ImagickException on error. */ #[Pure] public function getImage() {} /** * (PECL imagick 2.0.0)
* Adds new image to Imagick object image list * @link https://php.net/manual/en/imagick.addimage.php * @param Imagick $source

* The source Imagick object *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function addImage(Imagick $source) {} /** * (PECL imagick 2.0.0)
* Replaces image in the object * @link https://php.net/manual/en/imagick.setimage.php * @param Imagick $replace

* The replace Imagick object *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setImage(Imagick $replace) {} /** * (PECL imagick 2.0.0)
* Creates a new image * @link https://php.net/manual/en/imagick.newimage.php * @param int $cols

* Columns in the new image *

* @param int $rows

* Rows in the new image *

* @param mixed $background

* The background color used for this image *

* @param string $format [optional]

* Image format. This parameter was added in Imagick version 2.0.1. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function newImage($cols, $rows, $background, $format = null) {} /** * (PECL imagick 2.0.0)
* Creates a new image * @link https://php.net/manual/en/imagick.newpseudoimage.php * @param int $columns

* columns in the new image *

* @param int $rows

* rows in the new image *

* @param string $pseudoString

* string containing pseudo image definition. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function newPseudoImage($columns, $rows, $pseudoString) {} /** * (PECL imagick 2.0.0)
* Gets the object compression type * @link https://php.net/manual/en/imagick.getcompression.php * @return int the compression constant */ #[Pure] public function getCompression() {} /** * (PECL imagick 2.0.0)
* Gets the object compression quality * @link https://php.net/manual/en/imagick.getcompressionquality.php * @return int integer describing the compression quality */ #[Pure] public function getCompressionQuality() {} /** * (PECL imagick 2.0.0)
* Returns the ImageMagick API copyright as a string * @link https://php.net/manual/en/imagick.getcopyright.php * @return string a string containing the copyright notice of Imagemagick and * Magickwand C API. */ public static function getCopyright() {} /** * (PECL imagick 2.0.0)
* The filename associated with an image sequence * @link https://php.net/manual/en/imagick.getfilename.php * @return string a string on success. */ #[Pure] public function getFilename() {} /** * (PECL imagick 2.0.0)
* Returns the format of the Imagick object * @link https://php.net/manual/en/imagick.getformat.php * @return string the format of the image. */ #[Pure] public function getFormat() {} /** * (PECL imagick 2.0.0)
* Returns the ImageMagick home URL * @link https://php.net/manual/en/imagick.gethomeurl.php * @return string a link to the imagemagick homepage. */ public static function getHomeURL() {} /** * (PECL imagick 2.0.0)
* Gets the object interlace scheme * @link https://php.net/manual/en/imagick.getinterlacescheme.php * @return int Gets the wand interlace * scheme. */ #[Pure] public function getInterlaceScheme() {} /** * (PECL imagick 2.0.0)
* Returns a value associated with the specified key * @link https://php.net/manual/en/imagick.getoption.php * @param string $key

* The name of the option *

* @return string a value associated with a wand and the specified key. */ #[Pure] public function getOption($key) {} /** * (PECL imagick 2.0.0)
* Returns the ImageMagick package name * @link https://php.net/manual/en/imagick.getpackagename.php * @return string the ImageMagick package name as a string. */ public static function getPackageName() {} /** * (PECL imagick 2.0.0)
* Returns the page geometry * @link https://php.net/manual/en/imagick.getpage.php * @return int[] the page geometry associated with the Imagick object in * an associative array with the keys "width", "height", "x", and "y", * throwing ImagickException on error. * @throws ImagickException on error */ //width:int, height:int, x:int, y:int #[ArrayShape(["width" => "int", "height" => "int", "x" => "int", "y" => "int"])] #[Pure] public function getPage() {} /** * (PECL imagick 2.0.0)
* Gets the quantum depth * @link https://php.net/manual/en/imagick.getquantumdepth.php * @return array the Imagick quantum depth as a string. */ // quantumDepthLong:int, quantumDepthString:string #[ArrayShape(["quantumDepthLong" => "int", "quantumDepthString" => "string"])] public static function getQuantumDepth() {} /** * (PECL imagick 2.0.0)
* Returns the Imagick quantum range * @link https://php.net/manual/en/imagick.getquantumrange.php * @return array the Imagick quantum range as a string. */ #[ArrayShape(["quantumRangeLong" => "int", "quantumRangeString" => "string"])] public static function getQuantumRange() {} /** * (PECL imagick 2.0.0)
* Returns the ImageMagick release date * @link https://php.net/manual/en/imagick.getreleasedate.php * @return string the ImageMagick release date as a string. */ public static function getReleaseDate() {} /** * (PECL imagick 2.0.0)
* Returns the specified resource's memory usage * @link https://php.net/manual/en/imagick.getresource.php * @param int $type

* Refer to the list of resourcetype constants. *

* @return int the specified resource's memory usage in megabytes. */ public static function getResource($type) {} /** * (PECL imagick 2.0.0)
* Returns the specified resource limit * @link https://php.net/manual/en/imagick.getresourcelimit.php * @param int $type

* Refer to the list of resourcetype constants. *

* @return int the specified resource limit in megabytes. */ public static function getResourceLimit($type) {} /** * (PECL imagick 2.0.0)
* Gets the horizontal and vertical sampling factor * @link https://php.net/manual/en/imagick.getsamplingfactors.php * @return array an associative array with the horizontal and vertical sampling * factors of the image. */ #[Pure] public function getSamplingFactors() {} /** * (PECL imagick 2.0.0)
* Returns the size associated with the Imagick object * @link https://php.net/manual/en/imagick.getsize.php * @return int[] the size associated with the Imagick object as an array with the * keys "columns" and "rows". * @throws ImagickException on error. */ #[ArrayShape(["columns" => "int", "rows" => "int"])] #[Pure] public function getSize() {} /** * (PECL imagick 2.0.0)
* Returns the ImageMagick API version * @link https://php.net/manual/en/imagick.getversion.php * @return array the ImageMagick API version as a string and as a number. */ #[ArrayShape(["versionNumber" => "int", "versionString" => "string"])] public static function getVersion() {} /** * (PECL imagick 2.0.0)
* Sets the object's default background color * @link https://php.net/manual/en/imagick.setbackgroundcolor.php * @param mixed $background * @return bool TRUE on success. * @throws ImagickException on error. */ public function setBackgroundColor($background) {} /** * (PECL imagick 2.0.0)
* Sets the object's default compression type * @link https://php.net/manual/en/imagick.setcompression.php * @param int $compression * @return bool TRUE on success. * @throws ImagickException on error. */ public function setCompression($compression) {} /** * (PECL imagick 0.9.10-0.9.9)
* Sets the object's default compression quality * @link https://php.net/manual/en/imagick.setcompressionquality.php * @param int $quality * @return bool TRUE on success. * @throws ImagickException on error. */ public function setCompressionQuality($quality) {} /** * (PECL imagick 2.0.0)
* Sets the filename before you read or write the image * @link https://php.net/manual/en/imagick.setfilename.php * @param string $filename * @return bool TRUE on success. * @throws ImagickException on error. */ public function setFilename($filename) {} /** * (PECL imagick 2.0.0)
* Sets the format of the Imagick object * @link https://php.net/manual/en/imagick.setformat.php * @param string $format * @return bool TRUE on success. * @throws ImagickException on error. */ public function setFormat($format) {} /** * (PECL imagick 2.0.0)
* Sets the image compression * @link https://php.net/manual/en/imagick.setinterlacescheme.php * @param int $interlace_scheme * @return bool TRUE on success. * @throws ImagickException on error. */ public function setInterlaceScheme($interlace_scheme) {} /** * (PECL imagick 2.0.0)
* Set an option * @link https://php.net/manual/en/imagick.setoption.php * @param string $key * @param string $value * @return bool TRUE on success. * @throws ImagickException on error. */ public function setOption($key, $value) {} /** * (PECL imagick 2.0.0)
* Sets the page geometry of the Imagick object * @link https://php.net/manual/en/imagick.setpage.php * @param int $width * @param int $height * @param int $x * @param int $y * @return bool TRUE on success. * @throws ImagickException on error. */ public function setPage($width, $height, $x, $y) {} /** * (PECL imagick 2.0.0)
* Sets the limit for a particular resource in megabytes * @link https://php.net/manual/en/imagick.setresourcelimit.php * @param int $type

* Refer to the list of resourcetype constants. *

* @param int $limit

* The resource limit. The unit depends on the type of the resource being limited. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public static function setResourceLimit($type, $limit) {} /** * (PECL imagick 2.0.0)
* Sets the image resolution * @link https://php.net/manual/en/imagick.setresolution.php * @param float $x_resolution

* The horizontal resolution. *

* @param float $y_resolution

* The vertical resolution. *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function setResolution($x_resolution, $y_resolution) {} /** * (PECL imagick 2.0.0)
* Sets the image sampling factors * @link https://php.net/manual/en/imagick.setsamplingfactors.php * @param array $factors * @return bool TRUE on success. * @throws ImagickException on error. */ public function setSamplingFactors(array $factors) {} /** * (PECL imagick 2.0.0)
* Sets the size of the Imagick object * @link https://php.net/manual/en/imagick.setsize.php * @param int $columns * @param int $rows * @return bool TRUE on success. * @throws ImagickException on error. */ public function setSize($columns, $rows) {} /** * (PECL imagick 2.0.0)
* Sets the image type attribute * @link https://php.net/manual/en/imagick.settype.php * @param int $image_type * @return bool TRUE on success. * @throws ImagickException on error. */ public function setType($image_type) {} public function key() {} public function next() {} public function rewind() {} /** * (PECL imagick 2.0.0)
* Checks if the current item is valid * @link https://php.net/manual/en/imagick.valid.php * @return bool TRUE on success. * @throws ImagickException on error. */ public function valid() {} /** * (PECL imagick 2.0.0)
* Returns a reference to the current Imagick object * @link https://php.net/manual/en/imagick.current.php * @return Imagick self on success. */ public function current() {} /** * Change the brightness and/or contrast of an image. It converts the brightness and contrast parameters into slope and intercept and calls a polynomical function to apply to the image. * @link https://php.net/manual/en/imagick.brightnesscontrastimage.php * @param float $brightness * @param float $contrast * @param int $CHANNEL [optional] * @return void * @throws ImagickException on error. * @since 3.3.0 */ public function brightnessContrastImage($brightness, $contrast, $CHANNEL = Imagick::CHANNEL_DEFAULT) {} /** * Applies a user supplied kernel to the image according to the given morphology method. * @link https://php.net/manual/en/imagick.morphology.php * @param int $morphologyMethod Which morphology method to use one of the \Imagick::MORPHOLOGY_* constants. * @param int $iterations The number of iteration to apply the morphology function. A value of -1 means loop until no change found. How this is applied may depend on the morphology method. Typically this is a value of 1. * @param ImagickKernel $ImagickKernel * @param int $CHANNEL [optional] * @return void * @throws ImagickException on error. * @throws ImagickKernelException on error. * @since 3.3.0 */ public function morphology($morphologyMethod, $iterations, ImagickKernel $ImagickKernel, $CHANNEL = Imagick::CHANNEL_DEFAULT) {} /** * Applies a custom convolution kernel to the image. * @link https://php.net/manual/en/imagick.filter.php * @param ImagickKernel $ImagickKernel An instance of ImagickKernel that represents either a single kernel or a linked series of kernels. * @param int $CHANNEL [optional] Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants * @return void * @throws ImagickException on error. * @since 3.3.0 */ public function filter(ImagickKernel $ImagickKernel, $CHANNEL = Imagick::CHANNEL_DEFAULT) {} /** * Apply color transformation to an image. The method permits saturation changes, hue rotation, luminance to alpha, and various other effects. Although variable-sized transformation matrices can be used, typically one uses a 5x5 matrix for an RGBA image and a 6x6 for CMYKA (or RGBA with offsets). * The matrix is similar to those used by Adobe Flash except offsets are in column 6 rather than 5 (in support of CMYKA images) and offsets are normalized (divide Flash offset by 255) * @link https://php.net/manual/en/imagick.colormatriximage.php * @param array $color_matrix * @return void * @throws ImagickException on error. * @since 3.3.0 */ public function colorMatrixImage($color_matrix = Imagick::CHANNEL_DEFAULT) {} /** * Deletes an image property. * @link https://php.net/manual/en/imagick.deleteimageproperty.php * @param string $name The name of the property to delete. * @return void * @throws ImagickException on error. * @since 3.3.0 */ public function deleteImageProperty($name) {} /** * Implements the discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair. * @link https://php.net/manual/en/imagick.forwardfouriertransformimage.php * @param bool $magnitude If true, return as magnitude / phase pair otherwise a real / imaginary image pair. * @return void * @throws ImagickException on error. * @since 3.3.0 */ public function forwardFourierTransformimage($magnitude) {} /** * Gets the current image's compression type. * @link https://php.net/manual/en/imagick.getimagecompression.php * @return int * @since 3.3.0 */ #[Pure] public function getImageCompression() {} /** * Get the StringRegistry entry for the named key or false if not set. * @link https://php.net/manual/en/imagick.getregistry.php * @param string $key * @return string|false * @throws ImagickException Since version >= 3.4.3. Throws an exception if the key does not exist, rather than terminating the program. * @since 3.3.0 */ public static function getRegistry($key) {} /** * Returns the ImageMagick quantum range as an integer. * @link https://php.net/manual/en/imagick.getquantum.php * @return int * @since 3.3.0 */ public static function getQuantum() {} /** * Replaces any embedded formatting characters with the appropriate image property and returns the interpreted text. See https://www.imagemagick.org/script/escape.php for escape sequences. * @link https://php.net/manual/en/imagick.identifyformat.php * @see https://www.imagemagick.org/script/escape.php * @param string $embedText A string containing formatting sequences e.g. "Trim box: %@ number of unique colors: %k". * @return bool * @throws ImagickException on error. * @since 3.3.0 */ public function identifyFormat($embedText) {} /** * Implements the inverse discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair. * @link https://php.net/manual/en/imagick.inversefouriertransformimage.php * @param Imagick $complement The second image to combine with this one to form either the magnitude / phase or real / imaginary image pair. * @param bool $magnitude If true, combine as magnitude / phase pair otherwise a real / imaginary image pair. * @return void * @throws ImagickException on error. * @since 3.3.0 */ public function inverseFourierTransformImage($complement, $magnitude) {} /** * List all the registry settings. Returns an array of all the key/value pairs in the registry * @link https://php.net/manual/en/imagick.listregistry.php * @return array An array containing the key/values from the registry. * @since 3.3.0 */ public static function listRegistry() {} /** * Rotational blurs an image. * @link https://php.net/manual/en/imagick.rotationalblurimage.php * @param float $angle * @param int $CHANNEL * @return void * @throws ImagickException on error. * @since 3.3.0 */ public function rotationalBlurImage($angle, $CHANNEL = Imagick::CHANNEL_DEFAULT) {} /** * Selectively blur an image within a contrast threshold. It is similar to the unsharpen mask that sharpens everything with contrast above a certain threshold. * @link https://php.net/manual/en/imagick.selectiveblurimage.php * @param float $radius * @param float $sigma * @param float $threshold * @param int $CHANNEL Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants * @return void * @throws ImagickException on error. * @since 3.3.0 */ public function selectiveBlurImage($radius, $sigma, $threshold, $CHANNEL = Imagick::CHANNEL_DEFAULT) {} /** * Set whether antialiasing should be used for operations. On by default. * @param bool $antialias * @return int * @throws ImagickException on error. * @since 3.3.0 */ public function setAntiAlias($antialias) {} /** * @link https://php.net/manual/en/imagick.setimagebiasquantum.php * @param string $bias * @return void * @since 3.3.0 */ public function setImageBiasQuantum($bias) {} /** * Set a callback that will be called during the processing of the Imagick image. * @link https://php.net/manual/en/imagick.setprogressmonitor.php * @param callable $callback The progress function to call. It should return true if image processing should continue, or false if it should be cancelled. * The offset parameter indicates the progress and the span parameter indicates the total amount of work needed to be done. *
 bool callback ( mixed $offset , mixed $span ) 
* Caution * The values passed to the callback function are not consistent. In particular the span parameter can increase during image processing. Because of this calculating the percentage complete of an image operation is not trivial. * @return void * @throws ImagickException on error. * @since 3.3.0 */ public function setProgressMonitor($callback) {} /** * Sets the ImageMagick registry entry named key to value. This is most useful for setting "temporary-path" which controls where ImageMagick creates temporary images e.g. while processing PDFs. * @link https://php.net/manual/en/imagick.setregistry.php * @param string $key * @param string $value * @return void * @since 3.3.0 */ public static function setRegistry($key, $value) {} /** * Replace each pixel with corresponding statistic from the neighborhood of the specified width and height. * @link https://php.net/manual/en/imagick.statisticimage.php * @param int $type * @param int $width * @param int $height * @param int $channel [optional] * @return void * @throws ImagickException on error. * @since 3.3.0 */ public function statisticImage($type, $width, $height, $channel = Imagick::CHANNEL_DEFAULT) {} /** * Searches for a subimage in the current image and returns a similarity image such that an exact match location is * completely white and if none of the pixels match, black, otherwise some gray level in-between. * You can also pass in the optional parameters bestMatch and similarity. After calling the function similarity will * be set to the 'score' of the similarity between the subimage and the matching position in the larger image, * bestMatch will contain an associative array with elements x, y, width, height that describe the matching region. * * @link https://php.net/manual/en/imagick.subimagematch.php * @param Imagick $imagick * @param array &$bestMatch [optional] * @param float &$similarity [optional] A new image that displays the amount of similarity at each pixel. * @param float $similarity_threshold [optional] Only used if compiled with ImageMagick (library) > 7 * @param int $metric [optional] Only used if compiled with ImageMagick (library) > 7 * @return Imagick * @throws ImagickException on error. * @since 3.3.0 */ public function subImageMatch(Imagick $imagick, array &$bestMatch, &$similarity, $similarity_threshold, $metric) {} /** * Is an alias of Imagick::subImageMatch * * @param Imagick $imagick * @param array &$bestMatch [optional] * @param float &$similarity [optional] A new image that displays the amount of similarity at each pixel. * @param float $similarity_threshold [optional] * @param int $metric [optional] * @return Imagick * @throws ImagickException on error. * @see Imagick::subImageMatch() This function is an alias of subImageMatch() * @since 3.4.0 */ public function similarityImage(Imagick $imagick, array &$bestMatch, &$similarity, $similarity_threshold, $metric) {} /** * Returns any ImageMagick configure options that match the specified pattern (e.g. "*" for all). Options include NAME, VERSION, LIB_VERSION, etc. * @return string * @since 3.4.0 */ #[Pure] public function getConfigureOptions() {} /** * GetFeatures() returns the ImageMagick features that have been compiled into the runtime. * @return string * @since 3.4.0 */ #[Pure] public function getFeatures() {} /** * @return int * @since 3.4.0 */ #[Pure] public function getHDRIEnabled() {} /** * Sets the image channel mask. Returns the previous set channel mask. * Only works with Imagick >= 7 * @param int $channel * @throws ImagickException on error. * @since 3.4.0 */ public function setImageChannelMask($channel) {} /** * Merge multiple images of the same size together with the selected operator. https://www.imagemagick.org/Usage/layers/#evaluate-sequence * @param int $EVALUATE_CONSTANT * @return bool * @see https://www.imagemagick.org/Usage/layers/#evaluate-sequence * @throws ImagickException on error. * @since 3.4.0 */ public function evaluateImages($EVALUATE_CONSTANT) {} /** * Extracts the 'mean' from the image and adjust the image to try make set its gamma appropriately. * @param int $channel [optional] Default value Imagick::CHANNEL_ALL * @return bool * @throws ImagickException on error. * @since 3.4.1 */ public function autoGammaImage($channel = Imagick::CHANNEL_ALL) {} /** * Adjusts an image so that its orientation is suitable $ for viewing (i.e. top-left orientation). * @return bool * @throws ImagickException on error. * @since 3.4.1 */ public function autoOrient() {} /** * Composite one image onto another using the specified gravity. * * @param Imagick $imagick * @param int $COMPOSITE_CONSTANT * @param int $GRAVITY_CONSTANT * @return bool * @throws ImagickException on error. * @since 3.4.1 */ public function compositeImageGravity(Imagick $imagick, $COMPOSITE_CONSTANT, $GRAVITY_CONSTANT) {} /** * Attempts to increase the appearance of large-scale light-dark transitions. * * @param float $radius * @param float $strength * @return bool * @throws ImagickException on error. * @since 3.4.1 */ public function localContrastImage($radius, $strength) {} /** * Identifies the potential image type, returns one of the Imagick::IMGTYPE_* constants * @return int * @throws ImagickException on error. * @since 3.4.3 */ public function identifyImageType() {} /** * Sets the image to the specified alpha level. Will replace ImagickDraw::setOpacity() * * @param float $alpha * @return bool * @throws ImagickException on error. * @since 3.4.3 */ public function setImageAlpha($alpha) {} } /** * @method ImagickDraw clone() (PECL imagick 2.0.0)
Makes an exact copy of the specified ImagickDraw object * @link https://php.net/manual/en/class.imagickdraw.php */ class ImagickDraw { public function resetVectorGraphics() {} #[Pure] public function getTextKerning() {} /** * @param float $kerning */ public function setTextKerning($kerning) {} #[Pure] public function getTextInterWordSpacing() {} /** * @param $spacing */ public function setTextInterWordSpacing($spacing) {} #[Pure] public function getTextInterLineSpacing() {} /** * @param $spacing */ public function setTextInterLineSpacing($spacing) {} /** * (PECL imagick 2.0.0)
* The ImagickDraw constructor * @link https://php.net/manual/en/imagickdraw.construct.php */ public function __construct() {} /** * (PECL imagick 2.0.0)
* Sets the fill color to be used for drawing filled objects * @link https://php.net/manual/en/imagickdraw.setfillcolor.php * @param ImagickPixel $fill_pixel

* ImagickPixel to use to set the color *

* @return bool No value is returned. * @throws ImagickDrawException on error. */ public function setFillColor(ImagickPixel $fill_pixel) {} /** * (PECL imagick 2.0.0)
* Sets the opacity to use when drawing using the fill color or fill texture * @link https://php.net/manual/en/imagickdraw.setfillalpha.php * @param float $opacity

* fill alpha *

* @return bool No value is returned. */ #[Deprecated] public function setFillAlpha($opacity) {} /** * Sets the image resolution * @param float $x_resolution

The horizontal resolution.

* @param float $y_resolution

The vertical resolution.

* @return bool * @throws ImagickDrawException on error. */ public function setResolution($x_resolution, $y_resolution) {} /** * (PECL imagick 2.0.0)
* Sets the color used for stroking object outlines * @link https://php.net/manual/en/imagickdraw.setstrokecolor.php * @param ImagickPixel $stroke_pixel

* the stroke color *

* @return bool No value is returned. * @throws ImagickDrawException on error. */ public function setStrokeColor(ImagickPixel $stroke_pixel) {} /** * (PECL imagick 2.0.0)
* Specifies the opacity of stroked object outlines * @link https://php.net/manual/en/imagickdraw.setstrokealpha.php * @param float $opacity

* opacity *

* @return bool No value is returned. */ #[Deprecated] public function setStrokeAlpha($opacity) {} /** * (PECL imagick 2.0.0)
* Sets the width of the stroke used to draw object outlines * @link https://php.net/manual/en/imagickdraw.setstrokewidth.php * @param float $stroke_width

* stroke width *

* @return bool No value is returned. */ public function setStrokeWidth($stroke_width) {} /** * (PECL imagick 2.0.0)
* Clears the ImagickDraw * @link https://php.net/manual/en/imagickdraw.clear.php * @return bool an ImagickDraw object. */ public function clear() {} /** * (PECL imagick 2.0.0)
* Draws a circle * @link https://php.net/manual/en/imagickdraw.circle.php * @param float $ox

* origin x coordinate *

* @param float $oy

* origin y coordinate *

* @param float $px

* perimeter x coordinate *

* @param float $py

* perimeter y coordinate *

* @return bool No value is returned. */ public function circle($ox, $oy, $px, $py) {} /** * (PECL imagick 2.0.0)
* Draws text on the image * @link https://php.net/manual/en/imagickdraw.annotation.php * @param float $x

* The x coordinate where text is drawn *

* @param float $y

* The y coordinate where text is drawn *

* @param string $text

* The text to draw on the image *

* @return bool No value is returned. * @throws ImagickDrawException on error. */ public function annotation($x, $y, $text) {} /** * (PECL imagick 2.0.0)
* Controls whether text is antialiased * @link https://php.net/manual/en/imagickdraw.settextantialias.php * @param bool $antiAlias * @return bool No value is returned. */ public function setTextAntialias($antiAlias) {} /** * (PECL imagick 2.0.0)
* Specifies specifies the text code set * @link https://php.net/manual/en/imagickdraw.settextencoding.php * @param string $encoding

* the encoding name *

* @return bool No value is returned. */ public function setTextEncoding($encoding) {} /** * (PECL imagick 2.0.0)
* Sets the fully-specified font to use when annotating with text * @link https://php.net/manual/en/imagickdraw.setfont.php * @param string $font_name * @return bool TRUE on success. * @throws ImagickDrawException on error. * @throws ImagickException on error. */ public function setFont($font_name) {} /** * (PECL imagick 2.0.0)
* Sets the font family to use when annotating with text * @link https://php.net/manual/en/imagickdraw.setfontfamily.php * @param string $font_family

* the font family *

* @return bool TRUE on success. * @throws ImagickDrawException on error. * @throws ImagickException on error. */ public function setFontFamily($font_family) {} /** * (PECL imagick 2.0.0)
* Sets the font pointsize to use when annotating with text * @link https://php.net/manual/en/imagickdraw.setfontsize.php * @param float $pointsize

* the point size *

* @return bool No value is returned. */ public function setFontSize($pointsize) {} /** * (PECL imagick 2.0.0)
* Sets the font style to use when annotating with text * @link https://php.net/manual/en/imagickdraw.setfontstyle.php * @param int $style

* STYLETYPE_ constant *

* @return bool No value is returned. */ public function setFontStyle($style) {} /** * (PECL imagick 2.0.0)
* Sets the font weight * @link https://php.net/manual/en/imagickdraw.setfontweight.php * @param int $font_weight * @return bool * @throws ImagickDrawException on error. */ public function setFontWeight($font_weight) {} /** * (PECL imagick 2.0.0)
* Returns the font * @link https://php.net/manual/en/imagickdraw.getfont.php * @return string|false a string on success and false if no font is set. */ #[Pure] public function getFont() {} /** * (PECL imagick 2.0.0)
* Returns the font family * @link https://php.net/manual/en/imagickdraw.getfontfamily.php * @return string|false the font family currently selected or false if font family is not set. */ #[Pure] public function getFontFamily() {} /** * (PECL imagick 2.0.0)
* Returns the font pointsize * @link https://php.net/manual/en/imagickdraw.getfontsize.php * @return float the font size associated with the current ImagickDraw object. */ #[Pure] public function getFontSize() {} /** * (PECL imagick 2.0.0)
* Returns the font style * @link https://php.net/manual/en/imagickdraw.getfontstyle.php * @return int the font style constant (STYLE_) associated with the ImagickDraw object * or 0 if no style is set. */ #[Pure] public function getFontStyle() {} /** * (PECL imagick 2.0.0)
* Returns the font weight * @link https://php.net/manual/en/imagickdraw.getfontweight.php * @return int an int on success and 0 if no weight is set. */ #[Pure] public function getFontWeight() {} /** * (PECL imagick 2.0.0)
* Frees all associated resources * @link https://php.net/manual/en/imagickdraw.destroy.php * @return bool No value is returned. */ public function destroy() {} /** * (PECL imagick 2.0.0)
* Draws a rectangle * @link https://php.net/manual/en/imagickdraw.rectangle.php * @param float $x1

* x coordinate of the top left corner *

* @param float $y1

* y coordinate of the top left corner *

* @param float $x2

* x coordinate of the bottom right corner *

* @param float $y2

* y coordinate of the bottom right corner *

* @return bool No value is returned. */ public function rectangle($x1, $y1, $x2, $y2) {} /** * (PECL imagick 2.0.0)
* Draws a rounded rectangle * @link https://php.net/manual/en/imagickdraw.roundrectangle.php * @param float $x1

* x coordinate of the top left corner *

* @param float $y1

* y coordinate of the top left corner *

* @param float $x2

* x coordinate of the bottom right *

* @param float $y2

* y coordinate of the bottom right *

* @param float $rx

* x rounding *

* @param float $ry

* y rounding *

* @return bool No value is returned. */ public function roundRectangle($x1, $y1, $x2, $y2, $rx, $ry) {} /** * (PECL imagick 2.0.0)
* Draws an ellipse on the image * @link https://php.net/manual/en/imagickdraw.ellipse.php * @param float $ox * @param float $oy * @param float $rx * @param float $ry * @param float $start * @param float $end * @return bool No value is returned. */ public function ellipse($ox, $oy, $rx, $ry, $start, $end) {} /** * (PECL imagick 2.0.0)
* Skews the current coordinate system in the horizontal direction * @link https://php.net/manual/en/imagickdraw.skewx.php * @param float $degrees

* degrees to skew *

* @return bool No value is returned. */ public function skewX($degrees) {} /** * (PECL imagick 2.0.0)
* Skews the current coordinate system in the vertical direction * @link https://php.net/manual/en/imagickdraw.skewy.php * @param float $degrees

* degrees to skew *

* @return bool No value is returned. */ public function skewY($degrees) {} /** * (PECL imagick 2.0.0)
* Applies a translation to the current coordinate system * @link https://php.net/manual/en/imagickdraw.translate.php * @param float $x

* horizontal translation *

* @param float $y

* vertical translation *

* @return bool No value is returned. */ public function translate($x, $y) {} /** * (PECL imagick 2.0.0)
* Draws a line * @link https://php.net/manual/en/imagickdraw.line.php * @param float $sx

* starting x coordinate *

* @param float $sy

* starting y coordinate *

* @param float $ex

* ending x coordinate *

* @param float $ey

* ending y coordinate *

* @return bool No value is returned. */ public function line($sx, $sy, $ex, $ey) {} /** * (PECL imagick 2.0.0)
* Draws an arc * @link https://php.net/manual/en/imagickdraw.arc.php * @param float $sx

* Starting x ordinate of bounding rectangle *

* @param float $sy

* starting y ordinate of bounding rectangle *

* @param float $ex

* ending x ordinate of bounding rectangle *

* @param float $ey

* ending y ordinate of bounding rectangle *

* @param float $sd

* starting degrees of rotation *

* @param float $ed

* ending degrees of rotation *

* @return bool No value is returned. */ public function arc($sx, $sy, $ex, $ey, $sd, $ed) {} /** * (PECL imagick 2.0.0)
* Paints on the image's opacity channel * @link https://php.net/manual/en/imagickdraw.matte.php * @param float $x

* x coordinate of the matte *

* @param float $y

* y coordinate of the matte *

* @param int $paintMethod

* PAINT_ constant *

* @return bool TRUE on success or FALSE on failure. */ public function matte($x, $y, $paintMethod) {} /** * (PECL imagick 2.0.0)
* Draws a polygon * @link https://php.net/manual/en/imagickdraw.polygon.php * @param array $coordinates

* multidimensional array like array( array( 'x' => 3, 'y' => 4 ), array( 'x' => 2, 'y' => 6 ) ); *

* @return bool TRUE on success. * @throws ImagickDrawException on error. */ public function polygon(array $coordinates) {} /** * (PECL imagick 2.0.0)
* Draws a point * @link https://php.net/manual/en/imagickdraw.point.php * @param float $x

* point's x coordinate *

* @param float $y

* point's y coordinate *

* @return bool No value is returned. */ public function point($x, $y) {} /** * (PECL imagick 2.0.0)
* Returns the text decoration * @link https://php.net/manual/en/imagickdraw.gettextdecoration.php * @return int one of the DECORATION_ constants * and 0 if no decoration is set. */ #[Pure] public function getTextDecoration() {} /** * (PECL imagick 2.0.0)
* Returns the code set used for text annotations * @link https://php.net/manual/en/imagickdraw.gettextencoding.php * @return string a string specifying the code set * or false if text encoding is not set. */ #[Pure] public function getTextEncoding() {} #[Pure] public function getFontStretch() {} /** * (PECL imagick 2.0.0)
* Sets the font stretch to use when annotating with text * @link https://php.net/manual/en/imagickdraw.setfontstretch.php * @param int $fontStretch

* STRETCH_ constant *

* @return bool No value is returned. */ public function setFontStretch($fontStretch) {} /** * (PECL imagick 2.0.0)
* Controls whether stroked outlines are antialiased * @link https://php.net/manual/en/imagickdraw.setstrokeantialias.php * @param bool $stroke_antialias

* the antialias setting *

* @return bool No value is returned. */ public function setStrokeAntialias($stroke_antialias) {} /** * (PECL imagick 2.0.0)
* Specifies a text alignment * @link https://php.net/manual/en/imagickdraw.settextalignment.php * @param int $alignment

* ALIGN_ constant *

* @return bool No value is returned. */ public function setTextAlignment($alignment) {} /** * (PECL imagick 2.0.0)
* Specifies a decoration * @link https://php.net/manual/en/imagickdraw.settextdecoration.php * @param int $decoration

* DECORATION_ constant *

* @return bool No value is returned. */ public function setTextDecoration($decoration) {} /** * (PECL imagick 2.0.0)
* Specifies the color of a background rectangle * @link https://php.net/manual/en/imagickdraw.settextundercolor.php * @param ImagickPixel $under_color

* the under color *

* @return bool No value is returned. * @throws ImagickDrawException on error. */ public function setTextUnderColor(ImagickPixel $under_color) {} /** * (PECL imagick 2.0.0)
* Sets the overall canvas size * @link https://php.net/manual/en/imagickdraw.setviewbox.php * @param int $x1

* left x coordinate *

* @param int $y1

* left y coordinate *

* @param int $x2

* right x coordinate *

* @param int $y2

* right y coordinate *

* @return bool No value is returned. */ public function setViewbox($x1, $y1, $x2, $y2) {} /** * (PECL imagick 2.0.0)
* Adjusts the current affine transformation matrix * @link https://php.net/manual/en/imagickdraw.affine.php * @param array $affine

* Affine matrix parameters *

* @return bool No value is returned. * @throws ImagickDrawException on error. */ public function affine(array $affine) {} /** * (PECL imagick 2.0.0)
* Draws a bezier curve * @link https://php.net/manual/en/imagickdraw.bezier.php * @param array $coordinates

* Multidimensional array like array( array( 'x' => 1, 'y' => 2 ), * array( 'x' => 3, 'y' => 4 ) ) *

* @return bool No value is returned. * @throws ImagickDrawException on error. */ public function bezier(array $coordinates) {} /** * (PECL imagick 2.0.0)
* Composites an image onto the current image * @link https://php.net/manual/en/imagickdraw.composite.php * @param int $compose

* composition operator. One of COMPOSITE_ constants *

* @param float $x

* x coordinate of the top left corner *

* @param float $y

* y coordinate of the top left corner *

* @param float $width

* width of the composition image *

* @param float $height

* height of the composition image *

* @param Imagick $compositeWand

* the Imagick object where composition image is taken from *

* @return bool TRUE on success. * @throws ImagickException on error. */ public function composite($compose, $x, $y, $width, $height, Imagick $compositeWand) {} /** * (PECL imagick 2.0.0)
* Draws color on image * @link https://php.net/manual/en/imagickdraw.color.php * @param float $x

* x coordinate of the paint *

* @param float $y

* y coordinate of the paint *

* @param int $paintMethod

* one of the PAINT_ constants *

* @return bool No value is returned. */ public function color($x, $y, $paintMethod) {} /** * (PECL imagick 2.0.0)
* Adds a comment * @link https://php.net/manual/en/imagickdraw.comment.php * @param string $comment

* The comment string to add to vector output stream *

* @return bool No value is returned. */ public function comment($comment) {} /** * (PECL imagick 2.0.0)
* Obtains the current clipping path ID * @link https://php.net/manual/en/imagickdraw.getclippath.php * @return string|false a string containing the clip path ID or false if no clip path exists. */ #[Pure] public function getClipPath() {} /** * (PECL imagick 2.0.0)
* Returns the current polygon fill rule * @link https://php.net/manual/en/imagickdraw.getcliprule.php * @return int one of the FILLRULE_ constants. */ #[Pure] public function getClipRule() {} /** * (PECL imagick 2.0.0)
* Returns the interpretation of clip path units * @link https://php.net/manual/en/imagickdraw.getclipunits.php * @return int an int on success. */ #[Pure] public function getClipUnits() {} /** * (PECL imagick 2.0.0)
* Returns the fill color * @link https://php.net/manual/en/imagickdraw.getfillcolor.php * @return ImagickPixel an ImagickPixel object. */ #[Pure] public function getFillColor() {} /** * (PECL imagick 2.0.0)
* Returns the opacity used when drawing * @link https://php.net/manual/en/imagickdraw.getfillopacity.php * @return float The opacity. */ #[Pure] public function getFillOpacity() {} /** * (PECL imagick 2.0.0)
* Returns the fill rule * @link https://php.net/manual/en/imagickdraw.getfillrule.php * @return int a FILLRULE_ constant */ #[Pure] public function getFillRule() {} /** * (PECL imagick 2.0.0)
* Returns the text placement gravity * @link https://php.net/manual/en/imagickdraw.getgravity.php * @return int a GRAVITY_ constant on success and 0 if no gravity is set. */ #[Pure] public function getGravity() {} /** * (PECL imagick 2.0.0)
* Returns the current stroke antialias setting * @link https://php.net/manual/en/imagickdraw.getstrokeantialias.php * @return bool TRUE if antialiasing is on and false if it is off. */ #[Pure] public function getStrokeAntialias() {} /** * (PECL imagick 2.0.0)
* Returns the color used for stroking object outlines * @link https://php.net/manual/en/imagickdraw.getstrokecolor.php * @return ImagickPixel an ImagickPixel object which describes the color. */ #[Pure] public function getStrokeColor() {} /** * (PECL imagick 2.0.0)
* Returns an array representing the pattern of dashes and gaps used to stroke paths * @link https://php.net/manual/en/imagickdraw.getstrokedasharray.php * @return array an array on success and empty array if not set. */ #[Pure] public function getStrokeDashArray() {} /** * (PECL imagick 2.0.0)
* Returns the offset into the dash pattern to start the dash * @link https://php.net/manual/en/imagickdraw.getstrokedashoffset.php * @return float a float representing the offset and 0 if it's not set. */ #[Pure] public function getStrokeDashOffset() {} /** * (PECL imagick 2.0.0)
* Returns the shape to be used at the end of open subpaths when they are stroked * @link https://php.net/manual/en/imagickdraw.getstrokelinecap.php * @return int one of the LINECAP_ constants or 0 if stroke linecap is not set. */ #[Pure] public function getStrokeLineCap() {} /** * (PECL imagick 2.0.0)
* Returns the shape to be used at the corners of paths when they are stroked * @link https://php.net/manual/en/imagickdraw.getstrokelinejoin.php * @return int one of the LINEJOIN_ constants or 0 if stroke line join is not set. */ #[Pure] public function getStrokeLineJoin() {} /** * (PECL imagick 2.0.0)
* Returns the stroke miter limit * @link https://php.net/manual/en/imagickdraw.getstrokemiterlimit.php * @return int an int describing the miter limit * and 0 if no miter limit is set. */ #[Pure] public function getStrokeMiterLimit() {} /** * (PECL imagick 2.0.0)
* Returns the opacity of stroked object outlines * @link https://php.net/manual/en/imagickdraw.getstrokeopacity.php * @return float a float describing the opacity. */ #[Pure] public function getStrokeOpacity() {} /** * (PECL imagick 2.0.0)
* Returns the width of the stroke used to draw object outlines * @link https://php.net/manual/en/imagickdraw.getstrokewidth.php * @return float a float describing the stroke width. */ #[Pure] public function getStrokeWidth() {} /** * (PECL imagick 2.0.0)
* Returns the text alignment * @link https://php.net/manual/en/imagickdraw.gettextalignment.php * @return int one of the ALIGN_ constants and 0 if no align is set. */ #[Pure] public function getTextAlignment() {} /** * (PECL imagick 2.0.0)
* Returns the current text antialias setting * @link https://php.net/manual/en/imagickdraw.gettextantialias.php * @return bool TRUE if text is antialiased and false if not. */ #[Pure] public function getTextAntialias() {} /** * (PECL imagick 2.0.0)
* Returns a string containing vector graphics * @link https://php.net/manual/en/imagickdraw.getvectorgraphics.php * @return string a string containing the vector graphics. */ #[Pure] public function getVectorGraphics() {} /** * (PECL imagick 2.0.0)
* Returns the text under color * @link https://php.net/manual/en/imagickdraw.gettextundercolor.php * @return ImagickPixel an ImagickPixel object describing the color. * @throws ImagickDrawException on error. */ #[Pure] public function getTextUnderColor() {} /** * (PECL imagick 2.0.0)
* Adds a path element to the current path * @link https://php.net/manual/en/imagickdraw.pathclose.php * @return bool No value is returned. */ public function pathClose() {} /** * (PECL imagick 2.0.0)
* Draws a cubic Bezier curve * @link https://php.net/manual/en/imagickdraw.pathcurvetoabsolute.php * @param float $x1

* x coordinate of the first control point *

* @param float $y1

* y coordinate of the first control point *

* @param float $x2

* x coordinate of the second control point *

* @param float $y2

* y coordinate of the first control point *

* @param float $x

* x coordinate of the curve end *

* @param float $y

* y coordinate of the curve end *

* @return bool No value is returned. */ public function pathCurveToAbsolute($x1, $y1, $x2, $y2, $x, $y) {} /** * (PECL imagick 2.0.0)
* Draws a cubic Bezier curve * @link https://php.net/manual/en/imagickdraw.pathcurvetorelative.php * @param float $x1

* x coordinate of starting control point *

* @param float $y1

* y coordinate of starting control point *

* @param float $x2

* x coordinate of ending control point *

* @param float $y2

* y coordinate of ending control point *

* @param float $x

* ending x coordinate *

* @param float $y

* ending y coordinate *

* @return bool No value is returned. */ public function pathCurveToRelative($x1, $y1, $x2, $y2, $x, $y) {} /** * (PECL imagick 2.0.0)
* Draws a quadratic Bezier curve * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbezierabsolute.php * @param float $x1

* x coordinate of the control point *

* @param float $y1

* y coordinate of the control point *

* @param float $x

* x coordinate of the end point *

* @param float $y

* y coordinate of the end point *

* @return bool No value is returned. */ public function pathCurveToQuadraticBezierAbsolute($x1, $y1, $x, $y) {} /** * (PECL imagick 2.0.0)
* Draws a quadratic Bezier curve * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbezierrelative.php * @param float $x1

* starting x coordinate *

* @param float $y1

* starting y coordinate *

* @param float $x

* ending x coordinate *

* @param float $y

* ending y coordinate *

* @return bool No value is returned. */ public function pathCurveToQuadraticBezierRelative($x1, $y1, $x, $y) {} /** * (PECL imagick 2.0.0)
* Draws a quadratic Bezier curve * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbeziersmoothabsolute.php * @param float $x

* ending x coordinate *

* @param float $y

* ending y coordinate *

* @return bool No value is returned. */ public function pathCurveToQuadraticBezierSmoothAbsolute($x, $y) {} /** * (PECL imagick 2.0.0)
* Draws a quadratic Bezier curve * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbeziersmoothrelative.php * @param float $x

* ending x coordinate *

* @param float $y

* ending y coordinate *

* @return bool No value is returned. */ public function pathCurveToQuadraticBezierSmoothRelative($x, $y) {} /** * (PECL imagick 2.0.0)
* Draws a cubic Bezier curve * @link https://php.net/manual/en/imagickdraw.pathcurvetosmoothabsolute.php * @param float $x2

* x coordinate of the second control point *

* @param float $y2

* y coordinate of the second control point *

* @param float $x

* x coordinate of the ending point *

* @param float $y

* y coordinate of the ending point *

* @return bool No value is returned. */ public function pathCurveToSmoothAbsolute($x2, $y2, $x, $y) {} /** * (PECL imagick 2.0.0)
* Draws a cubic Bezier curve * @link https://php.net/manual/en/imagickdraw.pathcurvetosmoothrelative.php * @param float $x2

* x coordinate of the second control point *

* @param float $y2

* y coordinate of the second control point *

* @param float $x

* x coordinate of the ending point *

* @param float $y

* y coordinate of the ending point *

* @return bool No value is returned. */ public function pathCurveToSmoothRelative($x2, $y2, $x, $y) {} /** * (PECL imagick 2.0.0)
* Draws an elliptical arc * @link https://php.net/manual/en/imagickdraw.pathellipticarcabsolute.php * @param float $rx

* x radius *

* @param float $ry

* y radius *

* @param float $x_axis_rotation

* x axis rotation *

* @param bool $large_arc_flag

* large arc flag *

* @param bool $sweep_flag

* sweep flag *

* @param float $x

* x coordinate *

* @param float $y

* y coordinate *

* @return bool No value is returned. */ public function pathEllipticArcAbsolute($rx, $ry, $x_axis_rotation, $large_arc_flag, $sweep_flag, $x, $y) {} /** * (PECL imagick 2.0.0)
* Draws an elliptical arc * @link https://php.net/manual/en/imagickdraw.pathellipticarcrelative.php * @param float $rx

* x radius *

* @param float $ry

* y radius *

* @param float $x_axis_rotation

* x axis rotation *

* @param bool $large_arc_flag

* large arc flag *

* @param bool $sweep_flag

* sweep flag *

* @param float $x

* x coordinate *

* @param float $y

* y coordinate *

* @return bool No value is returned. */ public function pathEllipticArcRelative($rx, $ry, $x_axis_rotation, $large_arc_flag, $sweep_flag, $x, $y) {} /** * (PECL imagick 2.0.0)
* Terminates the current path * @link https://php.net/manual/en/imagickdraw.pathfinish.php * @return bool No value is returned. */ public function pathFinish() {} /** * (PECL imagick 2.0.0)
* Draws a line path * @link https://php.net/manual/en/imagickdraw.pathlinetoabsolute.php * @param float $x

* starting x coordinate *

* @param float $y

* ending x coordinate *

* @return bool No value is returned. */ public function pathLineToAbsolute($x, $y) {} /** * (PECL imagick 2.0.0)
* Draws a line path * @link https://php.net/manual/en/imagickdraw.pathlinetorelative.php * @param float $x

* starting x coordinate *

* @param float $y

* starting y coordinate *

* @return bool No value is returned. */ public function pathLineToRelative($x, $y) {} /** * (PECL imagick 2.0.0)
* Draws a horizontal line path * @link https://php.net/manual/en/imagickdraw.pathlinetohorizontalabsolute.php * @param float $x

* x coordinate *

* @return bool No value is returned. */ public function pathLineToHorizontalAbsolute($x) {} /** * (PECL imagick 2.0.0)
* Draws a horizontal line * @link https://php.net/manual/en/imagickdraw.pathlinetohorizontalrelative.php * @param float $x

* x coordinate *

* @return bool No value is returned. */ public function pathLineToHorizontalRelative($x) {} /** * (PECL imagick 2.0.0)
* Draws a vertical line * @link https://php.net/manual/en/imagickdraw.pathlinetoverticalabsolute.php * @param float $y

* y coordinate *

* @return bool No value is returned. */ public function pathLineToVerticalAbsolute($y) {} /** * (PECL imagick 2.0.0)
* Draws a vertical line path * @link https://php.net/manual/en/imagickdraw.pathlinetoverticalrelative.php * @param float $y

* y coordinate *

* @return bool No value is returned. */ public function pathLineToVerticalRelative($y) {} /** * (PECL imagick 2.0.0)
* Starts a new sub-path * @link https://php.net/manual/en/imagickdraw.pathmovetoabsolute.php * @param float $x

* x coordinate of the starting point *

* @param float $y

* y coordinate of the starting point *

* @return bool No value is returned. */ public function pathMoveToAbsolute($x, $y) {} /** * (PECL imagick 2.0.0)
* Starts a new sub-path * @link https://php.net/manual/en/imagickdraw.pathmovetorelative.php * @param float $x

* target x coordinate *

* @param float $y

* target y coordinate *

* @return bool No value is returned. */ public function pathMoveToRelative($x, $y) {} /** * (PECL imagick 2.0.0)
* Declares the start of a path drawing list * @link https://php.net/manual/en/imagickdraw.pathstart.php * @return bool No value is returned. */ public function pathStart() {} /** * (PECL imagick 2.0.0)
* Draws a polyline * @link https://php.net/manual/en/imagickdraw.polyline.php * @param array $coordinates

* array of x and y coordinates: array( array( 'x' => 4, 'y' => 6 ), array( 'x' => 8, 'y' => 10 ) ) *

* @return bool TRUE on success. * @throws ImagickDrawException on error. */ public function polyline(array $coordinates) {} /** * (PECL imagick 2.0.0)
* Terminates a clip path definition * @link https://php.net/manual/en/imagickdraw.popclippath.php * @return bool No value is returned. */ public function popClipPath() {} /** * (PECL imagick 2.0.0)
* Terminates a definition list * @link https://php.net/manual/en/imagickdraw.popdefs.php * @return bool No value is returned. */ public function popDefs() {} /** * (PECL imagick 2.0.0)
* Terminates a pattern definition * @link https://php.net/manual/en/imagickdraw.poppattern.php * @return bool TRUE on success or FALSE on failure. * @throws ImagickException on error. */ public function popPattern() {} /** * (PECL imagick 2.0.0)
* Starts a clip path definition * @link https://php.net/manual/en/imagickdraw.pushclippath.php * @param string $clip_mask_id

* Clip mask Id *

* @return bool No value is returned. */ public function pushClipPath($clip_mask_id) {} /** * (PECL imagick 2.0.0)
* Indicates that following commands create named elements for early processing * @link https://php.net/manual/en/imagickdraw.pushdefs.php * @return bool No value is returned. */ public function pushDefs() {} /** * (PECL imagick 2.0.0)
* Indicates that subsequent commands up to a ImagickDraw::opPattern() command comprise the definition of a named pattern * @link https://php.net/manual/en/imagickdraw.pushpattern.php * @param string $pattern_id

* the pattern Id *

* @param float $x

* x coordinate of the top-left corner *

* @param float $y

* y coordinate of the top-left corner *

* @param float $width

* width of the pattern *

* @param float $height

* height of the pattern *

* @return bool TRUE on success or FALSE on failure. */ public function pushPattern($pattern_id, $x, $y, $width, $height) {} /** * (PECL imagick 2.0.0)
* Renders all preceding drawing commands onto the image * @link https://php.net/manual/en/imagickdraw.render.php * @return bool TRUE on success or FALSE on failure. * @throws ImagickException on error. */ public function render() {} /** * (PECL imagick 2.0.0)
* Applies the specified rotation to the current coordinate space * @link https://php.net/manual/en/imagickdraw.rotate.php * @param float $degrees

* degrees to rotate *

* @return bool No value is returned. */ public function rotate($degrees) {} /** * (PECL imagick 2.0.0)
* Adjusts the scaling factor * @link https://php.net/manual/en/imagickdraw.scale.php * @param float $x

* horizontal factor *

* @param float $y

* vertical factor *

* @return bool No value is returned. */ public function scale($x, $y) {} /** * (PECL imagick 2.0.0)
* Associates a named clipping path with the image * @link https://php.net/manual/en/imagickdraw.setclippath.php * @param string $clip_mask

* the clipping path name *

* @return bool No value is returned. * @throws ImagickException on error. */ public function setClipPath($clip_mask) {} /** * (PECL imagick 2.0.0)
* Set the polygon fill rule to be used by the clipping path * @link https://php.net/manual/en/imagickdraw.setcliprule.php * @param int $fill_rule

* FILLRULE_ constant *

* @return bool No value is returned. */ public function setClipRule($fill_rule) {} /** * (PECL imagick 2.0.0)
* Sets the interpretation of clip path units * @link https://php.net/manual/en/imagickdraw.setclipunits.php * @param int $clip_units

* the number of clip units *

* @return bool No value is returned. */ public function setClipUnits($clip_units) {} /** * (PECL imagick 2.0.0)
* Sets the opacity to use when drawing using the fill color or fill texture * @link https://php.net/manual/en/imagickdraw.setfillopacity.php * @param float $fillOpacity

* the fill opacity *

* @return bool No value is returned. */ public function setFillOpacity($fillOpacity) {} /** * (PECL imagick 2.0.0)
* Sets the URL to use as a fill pattern for filling objects * @link https://php.net/manual/en/imagickdraw.setfillpatternurl.php * @param string $fill_url

* URL to use to obtain fill pattern. *

* @return bool TRUE on success or FALSE on failure. * @throws ImagickException on error. */ public function setFillPatternURL($fill_url) {} /** * (PECL imagick 2.0.0)
* Sets the fill rule to use while drawing polygons * @link https://php.net/manual/en/imagickdraw.setfillrule.php * @param int $fill_rule

* FILLRULE_ constant *

* @return bool No value is returned. */ public function setFillRule($fill_rule) {} /** * (PECL imagick 2.0.0)
* Sets the text placement gravity * @link https://php.net/manual/en/imagickdraw.setgravity.php * @param int $gravity

* GRAVITY_ constant *

* @return bool No value is returned. */ public function setGravity($gravity) {} /** * (PECL imagick 2.0.0)
* Sets the pattern used for stroking object outlines * @link https://php.net/manual/en/imagickdraw.setstrokepatternurl.php * @param string $stroke_url

* stroke URL *

* @return bool imagick.imagickdraw.return.success; * @throws ImagickException on error. */ public function setStrokePatternURL($stroke_url) {} /** * (PECL imagick 2.0.0)
* Specifies the offset into the dash pattern to start the dash * @link https://php.net/manual/en/imagickdraw.setstrokedashoffset.php * @param float $dash_offset

* dash offset *

* @return bool No value is returned. */ public function setStrokeDashOffset($dash_offset) {} /** * (PECL imagick 2.0.0)
* Specifies the shape to be used at the end of open subpaths when they are stroked * @link https://php.net/manual/en/imagickdraw.setstrokelinecap.php * @param int $linecap

* LINECAP_ constant *

* @return bool No value is returned. */ public function setStrokeLineCap($linecap) {} /** * (PECL imagick 2.0.0)
* Specifies the shape to be used at the corners of paths when they are stroked * @link https://php.net/manual/en/imagickdraw.setstrokelinejoin.php * @param int $linejoin

* LINEJOIN_ constant *

* @return bool No value is returned. */ public function setStrokeLineJoin($linejoin) {} /** * (PECL imagick 2.0.0)
* Specifies the miter limit * @link https://php.net/manual/en/imagickdraw.setstrokemiterlimit.php * @param int $miterlimit

* the miter limit *

* @return bool No value is returned. */ public function setStrokeMiterLimit($miterlimit) {} /** * (PECL imagick 2.0.0)
* Specifies the opacity of stroked object outlines * @link https://php.net/manual/en/imagickdraw.setstrokeopacity.php * @param float $stroke_opacity

* stroke opacity. 1.0 is fully opaque *

* @return bool No value is returned. */ public function setStrokeOpacity($stroke_opacity) {} /** * (PECL imagick 2.0.0)
* Sets the vector graphics * @link https://php.net/manual/en/imagickdraw.setvectorgraphics.php * @param string $xml

* xml containing the vector graphics *

* @return bool TRUE on success or FALSE on failure. */ public function setVectorGraphics($xml) {} /** * (PECL imagick 2.0.0)
* Destroys the current ImagickDraw in the stack, and returns to the previously pushed ImagickDraw * @link https://php.net/manual/en/imagickdraw.pop.php * @return bool TRUE on success and false on failure. * @throws ImagickException on error. */ public function pop() {} /** * (PECL imagick 2.0.0)
* Clones the current ImagickDraw and pushes it to the stack * @link https://php.net/manual/en/imagickdraw.push.php * @return bool TRUE on success or FALSE on failure. * @throws ImagickException on error. */ public function push() {} /** * (PECL imagick 2.0.0)
* Specifies the pattern of dashes and gaps used to stroke paths * @link https://php.net/manual/en/imagickdraw.setstrokedasharray.php * @param array $dashArray

* array of floats *

* @return bool TRUE on success. */ public function setStrokeDashArray(array $dashArray) {} /** * Sets the opacity to use when drawing using the fill or stroke color or texture. Fully opaque is 1.0. * * @param float $opacity * @return void * @since 3.4.1 */ public function setOpacity($opacity) {} /** * Returns the opacity used when drawing with the fill or stroke color or texture. Fully opaque is 1.0. * * @return float * @since 3.4.1 */ #[Pure] public function getOpacity() {} /** * Sets the image font resolution. * * @param float $x * @param float $y * @return bool * @throws ImagickException on error. * @since 3.4.1 */ public function setFontResolution($x, $y) {} /** * Gets the image X and Y resolution. * * @return array * @throws ImagickException on error. * @since 3.4.1 */ #[Pure] public function getFontResolution() {} /** * Returns the direction that will be used when annotating with text. * @return bool * @since 3.4.1 */ #[Pure] public function getTextDirection() {} /** * Sets the font style to use when annotating with text. The AnyStyle enumeration acts as a wild-card "don't care" option. * * @param int $direction * @return bool * @since 3.4.1 */ public function setTextDirection($direction) {} /** * Returns the border color used for drawing bordered objects. * * @return ImagickPixel * @since 3.4.1 */ #[Pure] public function getBorderColor() {} /** * Sets the border color to be used for drawing bordered objects. * @param ImagickPixel $color * @return bool * @throws ImagickDrawException on error. * @since 3.4.1 */ public function setBorderColor(ImagickPixel $color) {} /** * Obtains the vertical and horizontal resolution. * * @return string|null * @since 3.4.1 */ #[Pure] public function getDensity() {} /** * Sets the vertical and horizontal resolution. * @param string $density_string * @return bool * @throws ImagickException on error. * @since 3.4.1 */ public function setDensity($density_string) {} } /** * @link https://php.net/manual/en/class.imagickpixeliterator.php */ class ImagickPixelIterator implements Iterator { /** * (PECL imagick 2.0.0)
* The ImagickPixelIterator constructor * @link https://php.net/manual/en/imagickpixeliterator.construct.php * @param Imagick $wand * @throws ImagickPixelIteratorException on error. * @throws ImagickException on error. */ public function __construct(Imagick $wand) {} /** * (PECL imagick 2.0.0)
* Returns a new pixel iterator * @link https://php.net/manual/en/imagickpixeliterator.newpixeliterator.php * @param Imagick $wand * @return bool TRUE on success. Throwing ImagickPixelIteratorException. * @throws ImagickPixelIteratorException * @throws ImagickException */ #[Deprecated(replacement: "%class%->getPixelIterator(%parametersList%)")] public function newPixelIterator(Imagick $wand) {} /** * (PECL imagick 2.0.0)
* Returns a new pixel iterator * @link https://php.net/manual/en/imagickpixeliterator.newpixelregioniterator.php * @param Imagick $wand * @param int $x * @param int $y * @param int $columns * @param int $rows * @return bool a new ImagickPixelIterator on success; on failure, throws ImagickPixelIteratorException * @throws ImagickPixelIteratorException * @throws ImagickException */ #[Deprecated(replacement: "%class%->getPixelRegionIterator(%parametersList%)")] public function newPixelRegionIterator(Imagick $wand, $x, $y, $columns, $rows) {} /** * (PECL imagick 2.0.0)
* Returns the current pixel iterator row * @link https://php.net/manual/en/imagickpixeliterator.getiteratorrow.php * @return int the integer offset of the row, throwing ImagickPixelIteratorException on error. * @throws ImagickPixelIteratorException on error */ #[Pure] public function getIteratorRow() {} /** * (PECL imagick 2.0.0)
* Set the pixel iterator row * @link https://php.net/manual/en/imagickpixeliterator.setiteratorrow.php * @param int $row * @return bool TRUE on success. * @throws ImagickPixelIteratorException on error. */ public function setIteratorRow($row) {} /** * (PECL imagick 2.0.0)
* Sets the pixel iterator to the first pixel row * @link https://php.net/manual/en/imagickpixeliterator.setiteratorfirstrow.php * @return bool TRUE on success. * @throws ImagickPixelIteratorException on error. */ public function setIteratorFirstRow() {} /** * (PECL imagick 2.0.0)
* Sets the pixel iterator to the last pixel row * @link https://php.net/manual/en/imagickpixeliterator.setiteratorlastrow.php * @return bool TRUE on success. * @throws ImagickPixelIteratorException on error. */ public function setIteratorLastRow() {} /** * (PECL imagick 2.0.0)
* Returns the previous row * @link https://php.net/manual/en/imagickpixeliterator.getpreviousiteratorrow.php * @return array the previous row as an array of ImagickPixelWand objects from the * ImagickPixelIterator, throwing ImagickPixelIteratorException on error. * @throws ImagickPixelIteratorException on error */ #[Pure] public function getPreviousIteratorRow() {} /** * (PECL imagick 2.0.0)
* Returns the current row of ImagickPixel objects * @link https://php.net/manual/en/imagickpixeliterator.getcurrentiteratorrow.php * @return array a row as an array of ImagickPixel objects that can themselves be iterated. * @throws ImagickPixelIteratorException on error. */ #[Pure] public function getCurrentIteratorRow() {} /** * (PECL imagick 2.0.0)
* Returns the next row of the pixel iterator * @link https://php.net/manual/en/imagickpixeliterator.getnextiteratorrow.php * @return array the next row as an array of ImagickPixel objects, throwing * ImagickPixelIteratorException on error. * @throws ImagickPixelIteratorException on error */ #[Pure] public function getNextIteratorRow() {} /** * (PECL imagick 2.0.0)
* Resets the pixel iterator * @link https://php.net/manual/en/imagickpixeliterator.resetiterator.php * @return bool TRUE on success. * @throws ImagickPixelIteratorException on error. */ public function resetIterator() {} /** * (PECL imagick 2.0.0)
* Syncs the pixel iterator * @link https://php.net/manual/en/imagickpixeliterator.synciterator.php * @return bool TRUE on success. * @throws ImagickPixelIteratorException on error. */ public function syncIterator() {} /** * (PECL imagick 2.0.0)
* Deallocates resources associated with a PixelIterator * @link https://php.net/manual/en/imagickpixeliterator.destroy.php * @return bool TRUE on success. * @throws ImagickPixelIteratorException on error. */ public function destroy() {} /** * (PECL imagick 2.0.0)
* Clear resources associated with a PixelIterator * @link https://php.net/manual/en/imagickpixeliterator.clear.php * @return bool TRUE on success. * @throws ImagickPixelIteratorException on error. */ public function clear() {} /** * @param Imagick $Imagick * @throws ImagickPixelIteratorException on error. * @throws ImagickException on error. */ public static function getpixeliterator(Imagick $Imagick) {} /** * @param Imagick $Imagick * @param $x * @param $y * @param $columns * @param $rows * @throws ImagickPixelIteratorException on error. * @throws ImagickException on error. */ public static function getpixelregioniterator(Imagick $Imagick, $x, $y, $columns, $rows) {} /** * @throws ImagickPixelIteratorException on error. */ public function key() {} /** * @throws ImagickPixelIteratorException on error. */ public function next() {} /** * @throws ImagickPixelIteratorException on error. */ public function rewind() {} /** * @throws ImagickPixelIteratorException on error. */ public function current() {} /** * @throws ImagickPixelIteratorException on error. */ public function valid() {} } /** * @method clone() * @link https://php.net/manual/en/class.imagickpixel.php */ class ImagickPixel { /** * (PECL imagick 2.0.0)
* Returns the normalized HSL color of the ImagickPixel object * @link https://php.net/manual/en/imagickpixel.gethsl.php * @return float[] the HSL value in an array with the keys "hue", * "saturation", and "luminosity". Throws ImagickPixelException on failure. * @throws ImagickPixelException on failure */ #[ArrayShape(["hue" => "float", "saturation" => "float", "luminosity" => "float"])] #[Pure] public function getHSL() {} /** * (PECL imagick 2.0.0)
* Sets the normalized HSL color * @link https://php.net/manual/en/imagickpixel.sethsl.php * @param float $hue

* The normalized value for hue, described as a fractional arc * (between 0 and 1) of the hue circle, where the zero value is * red. *

* @param float $saturation

* The normalized value for saturation, with 1 as full saturation. *

* @param float $luminosity

* The normalized value for luminosity, on a scale from black at * 0 to white at 1, with the full HS value at 0.5 luminosity. *

* @return bool TRUE on success. * @throws ImagickPixelException on failure */ public function setHSL($hue, $saturation, $luminosity) {} /** * @throws ImagickPixelException on failure */ #[Pure] public function getColorValueQuantum() {} /** * @param $color_value * @throws ImagickPixelException on failure */ public function setColorValueQuantum($color_value) {} /** * Gets the colormap index of the pixel wand. * @throws ImagickPixelException on failure */ #[Pure] public function getIndex() {} /** * @param int $index * @throws ImagickPixelException on failure */ public function setIndex($index) {} /** * (PECL imagick 2.0.0)
* The ImagickPixel constructor * @link https://php.net/manual/en/imagickpixel.construct.php * @param string $color [optional]

* The optional color string to use as the initial value of this object. *

* @throws ImagickPixelException on failure */ public function __construct($color = null) {} /** * (PECL imagick 2.0.0)
* Sets the color * @link https://php.net/manual/en/imagickpixel.setcolor.php * @param string $color

* The color definition to use in order to initialise the * ImagickPixel object. *

* @return bool TRUE if the specified color was set, FALSE otherwise. * @throws ImagickPixelException on failure */ public function setColor($color) {} /** * (PECL imagick 2.0.0)
* Sets the normalized value of one of the channels * @link https://php.net/manual/en/imagickpixel.setcolorvalue.php * @param int $color

* One of the Imagick color constants e.g. \Imagick::COLOR_GREEN or \Imagick::COLOR_ALPHA. *

* @param float $value

* The value to set this channel to, ranging from 0 to 1. *

* @return bool TRUE on success. * @throws ImagickPixelException on failure */ public function setColorValue($color, $value) {} /** * (PECL imagick 2.0.0)
* Gets the normalized value of the provided color channel * @link https://php.net/manual/en/imagickpixel.getcolorvalue.php * @param int $color

* The color to get the value of, specified as one of the Imagick color * constants. This can be one of the RGB colors, CMYK colors, alpha and * opacity e.g (Imagick::COLOR_BLUE, Imagick::COLOR_MAGENTA). *

* @return float The value of the channel, as a normalized floating-point number, throwing * ImagickPixelException on error. * @throws ImagickPixelException on error */ #[Pure] public function getColorValue($color) {} /** * (PECL imagick 2.0.0)
* Clears resources associated with this object * @link https://php.net/manual/en/imagickpixel.clear.php * @return bool TRUE on success. * @throws ImagickPixelException on failure */ public function clear() {} /** * (PECL imagick 2.0.0)
* Deallocates resources associated with this object * @link https://php.net/manual/en/imagickpixel.destroy.php * @return bool TRUE on success. * @throws ImagickPixelException on failure */ public function destroy() {} /** * (PECL imagick 2.0.0)
* Check the distance between this color and another * @link https://php.net/manual/en/imagickpixel.issimilar.php * @param ImagickPixel $color

* The ImagickPixel object to compare this object against. *

* @param float $fuzz

* The maximum distance within which to consider these colors as similar. * The theoretical maximum for this value is the square root of three * (1.732). *

* @return bool TRUE on success. * @throws ImagickPixelException on failure */ public function isSimilar(ImagickPixel $color, $fuzz) {} /** * (No version information available, might only be in SVN)
* Check the distance between this color and another * @link https://php.net/manual/en/imagickpixel.ispixelsimilar.php * @param ImagickPixel $color

* The ImagickPixel object to compare this object against. *

* @param float $fuzz

* The maximum distance within which to consider these colors as similar. * The theoretical maximum for this value is the square root of three * (1.732). *

* @return bool TRUE on success. * @throws ImagickPixelException on failure */ public function isPixelSimilar(ImagickPixel $color, $fuzz) {} /** * (PECL imagick 2.0.0)
* Returns the color * @link https://php.net/manual/en/imagickpixel.getcolor.php * @param int $normalized [optional]

* Normalize the color values *

* @return array An array of channel values, each normalized if TRUE is given as param. Throws * ImagickPixelException on error. * @throws ImagickPixelException on error. */ #[ArrayShape(["r" => "int|float", "g" => "int|float", "b" => "int|float", "a" => "int|float"])] #[Pure] public function getColor($normalized = 0) {} /** * (PECL imagick 2.1.0)
* Returns the color as a string * @link https://php.net/manual/en/imagickpixel.getcolorasstring.php * @return string the color of the ImagickPixel object as a string. * @throws ImagickPixelException on failure */ #[Pure] public function getColorAsString() {} /** * (PECL imagick 2.0.0)
* Returns the color count associated with this color * @link https://php.net/manual/en/imagickpixel.getcolorcount.php * @return int the color count as an integer on success, throws * ImagickPixelException on failure. * @throws ImagickPixelException on failure. */ #[Pure] public function getColorCount() {} /** * @param int $colorCount * @throws ImagickPixelException on failure */ public function setColorCount($colorCount) {} /** * Returns true if the distance between two colors is less than the specified distance. The fuzz value should be in the range 0-QuantumRange.
* The maximum value represents the longest possible distance in the colorspace. e.g. from RGB(0, 0, 0) to RGB(255, 255, 255) for the RGB colorspace * @link https://php.net/manual/en/imagickpixel.ispixelsimilarquantum.php * @param string $color * @param string $fuzz * @return bool * @throws ImagickPixelException on failure * @since 3.3.0 */ public function isPixelSimilarQuantum($color, $fuzz) {} /** * Returns the color of the pixel in an array as Quantum values. If ImageMagick was compiled as HDRI these will be floats, otherwise they will be integers. * @link https://php.net/manual/en/imagickpixel.getcolorquantum.php * @return mixed The quantum value of the color element. Float if ImageMagick was compiled with HDRI, otherwise an int. * @throws ImagickPixelException on failure * @since 3.3.0 */ #[Pure] public function getColorQuantum() {} /** * Sets the color count associated with this color from another ImagickPixel object. * * @param ImagickPixel $srcPixel * @return bool * @throws ImagickPixelException on failure * @since 3.4.1 */ public function setColorFromPixel(ImagickPixel $srcPixel) {} } // End of imagick v.3.2.0RC1 // Start of Imagick v3.3.0RC1 /** * @link https://php.net/manual/en/class.imagickkernel.php */ class ImagickKernel { /** * Attach another kernel to this kernel to allow them to both be applied in a single morphology or filter function. Returns the new combined kernel. * @link https://php.net/manual/en/imagickkernel.addkernel.php * @param ImagickKernel $imagickKernel * @return void * @throws ImagickKernelException on error * @since 3.3.0 */ public function addKernel(ImagickKernel $imagickKernel) {} /** * Adds a given amount of the 'Unity' Convolution Kernel to the given pre-scaled and normalized Kernel. This in effect adds that amount of the original image into the resulting convolution kernel. The resulting effect is to convert the defined kernels into blended soft-blurs, unsharp kernels or into sharpening kernels. * @link https://php.net/manual/en/imagickkernel.addunitykernel.php * @return void * @throws ImagickKernelException on error * @since 3.3.0 */ public function addUnityKernel() {} /** * Create a kernel from a builtin in kernel. See https://www.imagemagick.org/Usage/morphology/#kernel for examples.
* Currently the 'rotation' symbols are not supported. Example: $diamondKernel = ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "2"); * @link https://php.net/manual/en/imagickkernel.frombuiltin.php * @param int $kernelType The type of kernel to build e.g. \Imagick::KERNEL_DIAMOND * @param string $kernelString A string that describes the parameters e.g. "4,2.5" * @return ImagickKernel * @since 3.3.0 */ public static function fromBuiltin($kernelType, $kernelString) {} /** * Create a kernel from a builtin in kernel. See https://www.imagemagick.org/Usage/morphology/#kernel for examples.
* Currently the 'rotation' symbols are not supported. Example: $diamondKernel = ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "2"); * @link https://php.net/manual/en/imagickkernel.frombuiltin.php * @see https://www.imagemagick.org/Usage/morphology/#kernel * @param array $matrix A matrix (i.e. 2d array) of values that define the kernel. Each element should be either a float value, or FALSE if that element shouldn't be used by the kernel. * @param array $origin [optional] Which element of the kernel should be used as the origin pixel. e.g. For a 3x3 matrix specifying the origin as [2, 2] would specify that the bottom right element should be the origin pixel. * @return ImagickKernel * @throws ImagickKernelException on error * @since 3.3.0 */ public static function fromMatrix($matrix, $origin) {} /** * Get the 2d matrix of values used in this kernel. The elements are either float for elements that are used or 'false' if the element should be skipped. * @link https://php.net/manual/en/imagickkernel.getmatrix.php * @return array A matrix (2d array) of the values that represent the kernel. * @throws ImagickKernelException on error * @since 3.3.0 */ #[Pure] public function getMatrix() {} /** * ScaleKernelInfo() scales the given kernel list by the given amount, with or without normalization of the sum of the kernel values (as per given flags).
* The exact behaviour of this function depends on the normalization type being used please see https://www.imagemagick.org/api/morphology.php#ScaleKernelInfo for details.
* Flag should be one of Imagick::NORMALIZE_KERNEL_VALUE, Imagick::NORMALIZE_KERNEL_CORRELATE, Imagick::NORMALIZE_KERNEL_PERCENT or not set. * @link https://php.net/manual/en/imagickkernel.scale.php * @see https://www.imagemagick.org/api/morphology.php#ScaleKernelInfo * @return void * @throws ImagickKernelException on error * @since 3.3.0 */ public function scale() {} /** * Separates a linked set of kernels and returns an array of ImagickKernels. * @link https://php.net/manual/en/imagickkernel.separate.php * @return void * @throws ImagickKernelException on error * @since 3.3.0 */ public function seperate() {} } FALSE if the server is terminating, giving the opportunity to the worker script to finish cleanly */ function frankenphp_handle_request(callable $callback): bool {} /** * Flushes all response data to the client and finishes the request. * This allows for time-consuming tasks to be performed without leaving the connection to the client open. * * Alias of fastcgi_finish_request. * * @link https://www.php.net/manual/en/function.fastcgi-finish-request.php * * @return bool Returns TRUE on success or FALSE on failure. */ function frankenphp_finish_request(): bool {} /** * Fetches all HTTP request headers from the current request. * * Alias of apache_request_headers. * * @link https://php.net/manual/en/function.apache-request-headers.php * * @return array An associative array of all the HTTP headers in the current request. */ function frankenphp_request_headers(): array {} /** * Fetches all HTTP response headers. * * Alias of apache_response_headers. * * @link https://php.net/manual/en/function.apache-response-headers.php * * @return array|false An array of all FrankenPHP response headers on success or FALSE on failure. */ function frankenphp_response_headers(): array|false {} */ /** * Unlike the mongo extension, this extension supports both PHP and HHVM and is developed atop the » libmongoc and » libbson libraries. It provides a minimal API for core driver functionality: commands, queries, writes, connection management, and BSON serialization. * Userland PHP libraries that depend on this extension may provide higher level APIs, such as query builders, individual command helper methods, and GridFS. Application developers should consider using this extension in conjunction with the » MongoDB PHP library, which implements the same higher level APIs found in MongoDB drivers for other languages. This separation of concerns allows the driver to focus on essential features for which an extension implementation is paramount for performance. * @link https://php.net/manual/en/set.mongodb.php */ define('MONGODB_VERSION', '1.16.0'); define('MONGODB_STABILITY', 'stable'); * Get array with contents of getaddrinfo about the given hostname. * @link https://www.php.net/manual/en/function.socket-addrinfo-lookup.php * @param string $host

* Hostname to search. *

* @param string $service [optional]

* The service to connect to. If service is a name, it is translated to the corresponding port number. *

* @param array $hints

* Hints provide criteria for selecting addresses returned. You may specify the hints as defined by getadrinfo. *

* @return AddressInfo[]|false of AddrInfo resource handles that can be used with the other socket_addrinfo functions. * @since 7.2 */ function socket_addrinfo_lookup(string $host, ?string $service, array $hints = []): array|false {} /** * Create a Socket resource, and connect it to the provided AddrInfo resource.
* The return value of this function may be used with the rest of the socket functions. * @link https://www.php.net/manual/en/function.socket-addrinfo-connect.php * @param resource|AddressInfo $address

* Resource created from {@see socket_addrinfo_lookup()} *

* @return resource|Socket|null|false Socket resource on success or NULL on failure. * @since 7.2 */ function socket_addrinfo_connect(AddressInfo $address): Socket|false {} /** * (PHP 7 >= 7.2.0)
* Create a Socket resource, and bind it to the provided AddrInfo resource.
* The return value of this function may be used with {@see socket_listen()}. * @link https://www.php.net/manual/en/function.socket-addrinfo-bind.php * @param resource|AddressInfo $address

* Resource created from {@see socket_addrinfo_lookup()} *

* @return resource|Socket|null|false Socket resource on success or NULL on failure. * @since 7.2 */ function socket_addrinfo_bind(AddressInfo $address): Socket|false {} /** * (PHP 7 >= 7.2.0)
* Get information about addrinfo * @link https://www.php.net/manual/en/function.socket-addrinfo-explain.php * @param resource|AddressInfo $address

* Resource created from {@see socket_addrinfo_lookup()} *

* @return array containing the fields in the addrinfo structure. * @since 7.2 */ #[ArrayShape([ 'ai_flags' => 'int', 'ai_family' => 'int', 'ai_socktype' => 'int', 'ai_protocol' => 'int', 'ai_canonname' => 'string', 'ai_addr' => [ 'sin_port' => 'int', 'sin_addr' => 'string', 'sin6_port' => 'int', 'sin6_addr' => 'string', ] ])] function socket_addrinfo_explain(AddressInfo $address): array {} /** * Runs the select() system call on the given arrays of sockets with a specified timeout * @link https://php.net/manual/en/function.socket-select.php * @param array|null &$read

* The sockets listed in the read array will be * watched to see if characters become available for reading (more * precisely, to see if a read will not block - in particular, a socket * resource is also ready on end-of-file, in which case a * socket_read will return a zero length string). *

* @param array|null &$write

* The sockets listed in the write array will be * watched to see if a write will not block. *

* @param array|null &$except

* The sockets listed in the except array will be * watched for exceptions. *

* @param int|null $seconds

* The tv_sec and tv_usec * together form the timeout parameter. The * timeout is an upper bound on the amount of time * elapsed before socket_select return. * tv_sec may be zero , causing * socket_select to return immediately. This is useful * for polling. If tv_sec is NULL (no timeout), * socket_select can block indefinitely. *

* @param int $microseconds [optional] * @return int|false On success socket_select returns the number of * socket resources contained in the modified arrays, which may be zero if * the timeout expires before anything interesting happens. On error FALSE * is returned. The error code can be retrieved with * socket_last_error. *

*

* Be sure to use the === operator when checking for an * error. Since the socket_select may return 0 the * comparison with == would evaluate to TRUE: * Understanding socket_select's result * * $e = NULL; * if (false === socket_select($r, $w, $e, 0)) { * echo "socket_select() failed, reason: " . * socket_strerror(socket_last_error()) . "\n"; * } * */ function socket_select(?array &$read, ?array &$write, ?array &$except, ?int $seconds, int $microseconds = 0): int|false {} /** * Create a socket (endpoint for communication) * @link https://php.net/manual/en/function.socket-create.php * @param int $domain

* The domain parameter specifies the protocol * family to be used by the socket. *

* * Available address/protocol families * * * * * * * * * * * * * * * * *
DomainDescription
AF_INET * IPv4 Internet based protocols. TCP and UDP are common protocols of * this protocol family. *
AF_INET6 * IPv6 Internet based protocols. TCP and UDP are common protocols of * this protocol family. *
AF_UNIX * Local communication protocol family. High efficiency and low * overhead make it a great form of IPC (Interprocess Communication). *
* @param int $type

* The type parameter selects the type of communication * to be used by the socket. *

* * Available socket types * * * * * * * * * * * * * * * * * * * * * * * * *
TypeDescription
SOCK_STREAM * Provides sequenced, reliable, full-duplex, connection-based byte streams. * An out-of-band data transmission mechanism may be supported. * The TCP protocol is based on this socket type. *
SOCK_DGRAM * Supports datagrams (connectionless, unreliable messages of a fixed maximum length). * The UDP protocol is based on this socket type. *
SOCK_SEQPACKET * Provides a sequenced, reliable, two-way connection-based data transmission path for * datagrams of fixed maximum length; a consumer is required to read an * entire packet with each read call. *
SOCK_RAW * Provides raw network protocol access. This special type of socket * can be used to manually construct any type of protocol. A common use * for this socket type is to perform ICMP requests (like ping). *
SOCK_RDM * Provides a reliable datagram layer that does not guarantee ordering. * This is most likely not implemented on your operating system. *
* @param int $protocol

* The protocol parameter sets the specific * protocol within the specified domain to be used * when communicating on the returned socket. The proper value can be * retrieved by name by using getprotobyname. If * the desired protocol is TCP, or UDP the corresponding constants * SOL_TCP, and SOL_UDP * can also be used. *

* * Common protocols * * * * * * * * * * * * * * * * *
NameDescription
icmp * The Internet Control Message Protocol is used primarily by gateways * and hosts to report errors in datagram communication. The "ping" * command (present in most modern operating systems) is an example * application of ICMP. *
udp * The User Datagram Protocol is a connectionless, unreliable, * protocol with fixed record lengths. Due to these aspects, UDP * requires a minimum amount of protocol overhead. *
tcp * The Transmission Control Protocol is a reliable, connection based, * stream oriented, full duplex protocol. TCP guarantees that all data packets * will be received in the order in which they were sent. If any packet is somehow * lost during communication, TCP will automatically retransmit the packet until * the destination host acknowledges that packet. For reliability and performance * reasons, the TCP implementation itself decides the appropriate octet boundaries * of the underlying datagram communication layer. Therefore, TCP applications must * allow for the possibility of partial record transmission. *
* @return resource|Socket|false socket_create returns a socket resource on success, * or FALSE on error. The actual error code can be retrieved by calling * socket_last_error. This error code may be passed to * socket_strerror to get a textual explanation of the * error. */ function socket_create(int $domain, int $type, int $protocol): Socket|false {} /** * @param resource|Socket $socket * @return resource|Socket|false */ function socket_export_stream(Socket $socket) {} /** * Opens a socket on port to accept connections * @link https://php.net/manual/en/function.socket-create-listen.php * @param int $port

* The port on which to listen on all interfaces. *

* @param int $backlog [optional]

* The backlog parameter defines the maximum length * the queue of pending connections may grow to. * SOMAXCONN may be passed as * backlog parameter, see * socket_listen for more information. *

* @return resource|Socket|false socket_create_listen returns a new socket resource * on success or FALSE on error. The error code can be retrieved with * socket_last_error. This code may be passed to * socket_strerror to get a textual explanation of the * error. */ function socket_create_listen(int $port, int $backlog = 128): Socket|false {} /** * Creates a pair of indistinguishable sockets and stores them in an array * @link https://php.net/manual/en/function.socket-create-pair.php * @param int $domain

* The domain parameter specifies the protocol * family to be used by the socket. See socket_create * for the full list. *

* @param int $type

* The type parameter selects the type of communication * to be used by the socket. See socket_create for the * full list. *

* @param int $protocol

* The protocol parameter sets the specific * protocol within the specified domain to be used * when communicating on the returned socket. The proper value can be retrieved by * name by using getprotobyname. If * the desired protocol is TCP, or UDP the corresponding constants * SOL_TCP, and SOL_UDP * can also be used. *

*

* See socket_create for the full list of supported * protocols. *

* @param array &$pair

* Reference to an array in which the two socket resources will be inserted. *

* @return bool TRUE on success or FALSE on failure. */ function socket_create_pair(int $domain, int $type, int $protocol, &$pair): bool {} /** * Accepts a connection on a socket * @link https://php.net/manual/en/function.socket-accept.php * @param resource|Socket $socket

* A valid socket resource created with socket_create. *

* @return resource|Socket|false a new socket resource on success, or FALSE on error. The actual * error code can be retrieved by calling * socket_last_error. This error code may be passed to * socket_strerror to get a textual explanation of the * error. */ function socket_accept(Socket $socket): Socket|false {} /** * Sets nonblocking mode for file descriptor fd * @link https://php.net/manual/en/function.socket-set-nonblock.php * @param resource|Socket $socket

* A valid socket resource created with socket_create * or socket_accept. *

* @return bool TRUE on success or FALSE on failure. */ function socket_set_nonblock(Socket $socket): bool {} /** * Sets blocking mode on a socket resource * @link https://php.net/manual/en/function.socket-set-block.php * @param resource|Socket $socket

* A valid socket resource created with socket_create * or socket_accept. *

* @return bool TRUE on success or FALSE on failure. */ function socket_set_block(Socket $socket): bool {} /** * Listens for a connection on a socket * @link https://php.net/manual/en/function.socket-listen.php * @param resource|Socket $socket

* A valid socket resource created with socket_create. *

* @param int $backlog [optional]

* A maximum of backlog incoming connections will be * queued for processing. If a connection request arrives with the queue * full the client may receive an error with an indication of * ECONNREFUSED, or, if the underlying protocol supports * retransmission, the request may be ignored so that retries may succeed. *

*

* The maximum number passed to the backlog * parameter highly depends on the underlying platform. On Linux, it is * silently truncated to SOMAXCONN. On win32, if * passed SOMAXCONN, the underlying service provider * responsible for the socket will set the backlog to a maximum * reasonable value. There is no standard provision to * find out the actual backlog value on this platform. *

* @return bool TRUE on success or FALSE on failure. The error code can be retrieved with * socket_last_error. This code may be passed to * socket_strerror to get a textual explanation of the * error. */ function socket_listen(Socket $socket, int $backlog = 0): bool {} /** * Closes a socket resource * @link https://php.net/manual/en/function.socket-close.php * @param resource|Socket $socket

* A valid socket resource created with socket_create * or socket_accept. *

* @return void No value is returned. */ function socket_close(Socket $socket): void {} /** * Write to a socket * @link https://php.net/manual/en/function.socket-write.php * @param resource|Socket $socket * @param string $data

* The buffer to be written. *

* @param int|null $length

* The optional parameter length can specify an * alternate length of bytes written to the socket. If this length is * greater than the buffer length, it is silently truncated to the length * of the buffer. *

* @return int|false the number of bytes successfully written to the socket or FALSE on failure. * The error code can be retrieved with * socket_last_error. This code may be passed to * socket_strerror to get a textual explanation of the * error. *

*

* It is perfectly valid for socket_write to * return zero which means no bytes have been written. Be sure to use the * === operator to check for FALSE in case of an * error. */ function socket_write(Socket $socket, string $data, ?int $length = null): int|false {} /** * Reads a maximum of length bytes from a socket * @link https://php.net/manual/en/function.socket-read.php * @param resource|Socket $socket

* A valid socket resource created with socket_create * or socket_accept. *

* @param int $length

* The maximum number of bytes read is specified by the * length parameter. Otherwise you can use * \r, \n, * or \0 to end reading (depending on the type * parameter, see below). *

* @param int $mode [optional]

* Optional type parameter is a named constant: * PHP_BINARY_READ (Default) - use the system * recv() function. Safe for reading binary data. * @return string|false socket_read returns the data as a string on success, * or FALSE on error (including if the remote host has closed the * connection). The error code can be retrieved with * socket_last_error. This code may be passed to * socket_strerror to get a textual representation of * the error. *

*

* socket_read returns a zero length string ("") * when there is no more data to read.

*/ function socket_read(Socket $socket, int $length, int $mode = PHP_BINARY_READ): string|false {} /** * Queries the local side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type * @link https://php.net/manual/en/function.socket-getsockname.php * @param resource|Socket $socket

* A valid socket resource created with socket_create * or socket_accept. *

* @param string &$address

* If the given socket is of type AF_INET * or AF_INET6, socket_getsockname * will return the local IP address in appropriate notation (e.g. * 127.0.0.1 or fe80::1) in the * address parameter and, if the optional * port parameter is present, also the associated port. *

*

* If the given socket is of type AF_UNIX, * socket_getsockname will return the Unix filesystem * path (e.g. /var/run/daemon.sock) in the * address parameter. *

* @param int &$port [optional]

* If provided, this will hold the associated port. *

* @return bool TRUE on success or FALSE on failure. socket_getsockname may also return * FALSE if the socket type is not any of AF_INET, * AF_INET6, or AF_UNIX, in which * case the last socket error code is not updated. */ function socket_getsockname(Socket $socket, &$address, &$port = null): bool {} /** * Queries the remote side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type * @link https://php.net/manual/en/function.socket-getpeername.php * @param resource|Socket $socket

* A valid socket resource created with socket_create * or socket_accept. *

* @param string &$address

* If the given socket is of type AF_INET or * AF_INET6, socket_getpeername * will return the peers (remote) IP address in * appropriate notation (e.g. 127.0.0.1 or * fe80::1) in the address * parameter and, if the optional port parameter is * present, also the associated port. *

*

* If the given socket is of type AF_UNIX, * socket_getpeername will return the Unix filesystem * path (e.g. /var/run/daemon.sock) in the * address parameter. *

* @param int &$port [optional]

* If given, this will hold the port associated to * address. *

* @return bool TRUE on success or FALSE on failure. socket_getpeername may also return * FALSE if the socket type is not any of AF_INET, * AF_INET6, or AF_UNIX, in which * case the last socket error code is not updated. */ function socket_getpeername(Socket $socket, &$address, &$port = null): bool {} /** * Initiates a connection on a socket * @link https://php.net/manual/en/function.socket-connect.php * @param resource|Socket $socket * @param string $address

* The address parameter is either an IPv4 address * in dotted-quad notation (e.g. 127.0.0.1) if * socket is AF_INET, a valid * IPv6 address (e.g. ::1) if IPv6 support is enabled and * socket is AF_INET6 * or the pathname of a Unix domain socket, if the socket family is * AF_UNIX. *

* @param int|null $port

* The port parameter is only used and is mandatory * when connecting to an AF_INET or an * AF_INET6 socket, and designates * the port on the remote host to which a connection should be made. *

* @return bool TRUE on success or FALSE on failure. The error code can be retrieved with * socket_last_error. This code may be passed to * socket_strerror to get a textual explanation of the * error. *

*

* If the socket is non-blocking then this function returns FALSE with an * error Operation now in progress. */ function socket_connect(Socket $socket, string $address, ?int $port = null): bool {} /** * Return a string describing a socket error * @link https://php.net/manual/en/function.socket-strerror.php * @param int $error_code

* A valid socket error number, likely produced by * socket_last_error. *

* @return string the error message associated with the errno * parameter. */ function socket_strerror(int $error_code): string {} /** * Binds a name to a socket * @link https://php.net/manual/en/function.socket-bind.php * @param resource|Socket $socket

* A valid socket resource created with socket_create. *

* @param string $address

* If the socket is of the AF_INET family, the * address is an IP in dotted-quad notation * (e.g. 127.0.0.1). *

*

* If the socket is of the AF_UNIX family, the * address is the path of a * Unix-domain socket (e.g. /tmp/my.sock). *

* @param int $port [optional]

* The port parameter is only used when * binding an AF_INET socket, and designates * the port on which to listen for connections. *

* @return bool TRUE on success or FALSE on failure. *

* The error code can be retrieved with socket_last_error. * This code may be passed to socket_strerror to get a * textual explanation of the error. *

*/ function socket_bind(Socket $socket, string $address, int $port = 0): bool {} /** * Receives data from a connected socket * @link https://php.net/manual/en/function.socket-recv.php * @param resource|Socket $socket

* The socket must be a socket resource previously * created by socket_create(). *

* @param string &$data

* The data received will be fetched to the variable specified with * buf. If an error occurs, if the * connection is reset, or if no data is * available, buf will be set to NULL. *

* @param int $length

* Up to len bytes will be fetched from remote host. *

* @param int $flags

* The value of flags can be any combination of * the following flags, joined with the binary OR (|) * operator. *

* * Possible values for flags * * * * * * * * * * * * * * * * * * * * *
FlagDescription
MSG_OOB * Process out-of-band data. *
MSG_PEEK * Receive data from the beginning of the receive queue without * removing it from the queue. *
MSG_WAITALL * Block until at least len are received. * However, if a signal is caught or the remote host disconnects, the * function may return less data. *
MSG_DONTWAIT * With this flag set, the function returns even if it would normally * have blocked. *
* @return int|false socket_recv returns the number of bytes received, * or FALSE if there was an error. The actual error code can be retrieved by * calling socket_last_error. This error code may be * passed to socket_strerror to get a textual explanation * of the error. */ function socket_recv(Socket $socket, &$data, int $length, int $flags): int|false {} /** * Sends data to a connected socket * @link https://php.net/manual/en/function.socket-send.php * @param resource|Socket $socket

* A valid socket resource created with socket_create * or socket_accept. *

* @param string $data

* A buffer containing the data that will be sent to the remote host. *

* @param int $length

* The number of bytes that will be sent to the remote host from * buf. *

* @param int $flags

* The value of flags can be any combination of * the following flags, joined with the binary OR (|) * operator. * * Possible values for flags * * * * * * * * * * * * * * * * *
MSG_OOB * Send OOB (out-of-band) data. *
MSG_EOR * Indicate a record mark. The sent data completes the record. *
MSG_EOF * Close the sender side of the socket and include an appropriate * notification of this at the end of the sent data. The sent data * completes the transaction. *
MSG_DONTROUTE * Bypass routing, use direct interface. *
*

* @return int|false socket_send returns the number of bytes sent, or FALSE on error. */ function socket_send(Socket $socket, string $data, int $length, int $flags): int|false {} /** * (PHP 5 >=5.5.0)
* Send a message * @link https://secure.php.net/manual/en/function.socket-sendmsg.php * @param resource|Socket $socket * @param array $message * @param int $flags * @return int|false * @since 5.5 */ function socket_sendmsg( Socket $socket, array $message, #[PhpStormStubsElementAvailable(from: '5.5', to: '7.4')] int $flags, #[PhpStormStubsElementAvailable(from: '8.0')] int $flags = 0 ): int|false {} /** * Receives data from a socket whether or not it is connection-oriented * @link https://php.net/manual/en/function.socket-recvfrom.php * @param resource|Socket $socket

* The socket must be a socket resource previously * created by socket_create(). *

* @param string &$data

* The data received will be fetched to the variable specified with * buf. *

* @param int $length

* Up to len bytes will be fetched from remote host. *

* @param int $flags

* The value of flags can be any combination of * the following flags, joined with the binary OR (|) * operator. *

* * Possible values for flags * * * * * * * * * * * * * * * * * * * * *
FlagDescription
MSG_OOB * Process out-of-band data. *
MSG_PEEK * Receive data from the beginning of the receive queue without * removing it from the queue. *
MSG_WAITALL * Block until at least len are received. * However, if a signal is caught or the remote host disconnects, the * function may return less data. *
MSG_DONTWAIT * With this flag set, the function returns even if it would normally * have blocked. *
* @param string &$address

* If the socket is of the type AF_UNIX type, * name is the path to the file. Else, for * unconnected sockets, name is the IP address of, * the remote host, or NULL if the socket is connection-oriented. *

* @param int &$port [optional]

* This argument only applies to AF_INET and * AF_INET6 sockets, and specifies the remote port * from which the data is received. If the socket is connection-oriented, * port will be NULL. *

* @return int|false socket_recvfrom returns the number of bytes received, * or FALSE if there was an error. The actual error code can be retrieved by * calling socket_last_error. This error code may be * passed to socket_strerror to get a textual explanation * of the error. */ function socket_recvfrom(Socket $socket, &$data, int $length, int $flags, &$address, &$port = null): int|false {} /** * Read a message * @link https://secure.php.net/manual/en/function.socket-recvmsg.php * @param resource|Socket $socket * @param array &$message * @param int $flags * @return int|false * @since 5.5 */ function socket_recvmsg( Socket $socket, array &$message, #[PhpStormStubsElementAvailable(from: '5.5', to: '7.4')] int $flags, #[PhpStormStubsElementAvailable(from: '8.0')] int $flags = 0 ): int|false {} /** * Sends a message to a socket, whether it is connected or not * @link https://php.net/manual/en/function.socket-sendto.php * @param resource|Socket $socket

* A valid socket resource created using socket_create. *

* @param string $data

* The sent data will be taken from buffer buf. *

* @param int $length

* len bytes from buf will be * sent. *

* @param int $flags

* The value of flags can be any combination of * the following flags, joined with the binary OR (|) * operator. * * Possible values for flags * * * * * * * * * * * * * * * * *
MSG_OOB * Send OOB (out-of-band) data. *
MSG_EOR * Indicate a record mark. The sent data completes the record. *
MSG_EOF * Close the sender side of the socket and include an appropriate * notification of this at the end of the sent data. The sent data * completes the transaction. *
MSG_DONTROUTE * Bypass routing, use direct interface. *
*

* @param string $address

* IP address of the remote host. *

* @param int|null $port

* port is the remote port number at which the data * will be sent. *

* @return int|false socket_sendto returns the number of bytes sent to the * remote host, or FALSE if an error occurred. */ function socket_sendto(Socket $socket, string $data, int $length, int $flags, string $address, ?int $port = null): int|false {} /** * Gets socket options for the socket * @link https://php.net/manual/en/function.socket-get-option.php * @param resource|Socket $socket

* A valid socket resource created with socket_create * or socket_accept. *

* @param int $level

* The level parameter specifies the protocol * level at which the option resides. For example, to retrieve options at * the socket level, a level parameter of * SOL_SOCKET would be used. Other levels, such as * TCP, can be used by * specifying the protocol number of that level. Protocol numbers can be * found by using the getprotobyname function. *

* @param int $option * Available Socket Options * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
OptionDescriptionType
SO_DEBUG * Reports whether debugging information is being recorded. * * int *
SO_BROADCAST * Reports whether transmission of broadcast messages is supported. * * int *
SO_REUSEADDR * Reports whether local addresses can be reused. * * int *
SO_KEEPALIVE * Reports whether connections are kept active with periodic transmission * of messages. If the connected socket fails to respond to these messages, * the connection is broken and processes writing to that socket are notified * with a SIGPIPE signal. * * int *
SO_LINGER *

* Reports whether the socket lingers on * socket_close if data is present. By default, * when the socket is closed, it attempts to send all unsent data. * In the case of a connection-oriented socket, * socket_close will wait for its peer to * acknowledge the data. *

*

* If l_onoff is non-zero and * l_linger is zero, all the * unsent data will be discarded and RST (reset) is sent to the * peer in the case of a connection-oriented socket. *

*

* On the other hand, if l_onoff is * non-zero and l_linger is non-zero, * socket_close will block until all the data * is sent or the time specified in l_linger * elapses. If the socket is non-blocking, * socket_close will fail and return an error. *

*
* array. The array will contain two keys: * l_onoff and * l_linger. *
SO_OOBINLINE * Reports whether the socket leaves out-of-band data inline. * * int *
SO_SNDBUF * Reports the size of the send buffer. * * int *
SO_RCVBUF * Reports the size of the receive buffer. * * int *
SO_ERROR * Reports information about error status and clears it. * * int (cannot be set by socket_set_option) *
SO_TYPE * Reports the socket type (e.g. * SOCK_STREAM). * * int (cannot be set by socket_set_option) *
SO_DONTROUTE * Reports whether outgoing messages bypass the standard routing facilities. * * int *
SO_RCVLOWAT * Reports the minimum number of bytes to process for socket * input operations. * * int *
SO_RCVTIMEO * Reports the timeout value for input operations. * * array. The array will contain two keys: * sec which is the seconds part on the timeout * value and usec which is the microsecond part * of the timeout value. *
SO_SNDTIMEO * Reports the timeout value specifying the amount of time that an output * function blocks because flow control prevents data from being sent. * * array. The array will contain two keys: * sec which is the seconds part on the timeout * value and usec which is the microsecond part * of the timeout value. *
SO_SNDLOWAT * Reports the minimum number of bytes to process for socket output operations. * * int *
TCP_NODELAY * Reports whether the Nagle TCP algorithm is disabled. * * int *
MCAST_JOIN_GROUP * Joins a multicast group. (added in PHP 5.4) * * array with keys "group", specifying * a string with an IPv4 or IPv6 multicast address and * "interface", specifying either an interface * number (type int) or a string with * the interface name, like "eth0". * 0 can be specified to indicate the interface * should be selected using routing rules. (can only be used in * socket_set_option) *
MCAST_LEAVE_GROUP * Leaves a multicast group. (added in PHP 5.4) * * array. See MCAST_JOIN_GROUP for * more information. (can only be used in * socket_set_option) *
MCAST_BLOCK_SOURCE * Blocks packets arriving from a specific source to a specific * multicast group, which must have been previously joined. * (added in PHP 5.4) * * array with the same keys as * MCAST_JOIN_GROUP, plus one extra key, * source, which maps to a string * specifying an IPv4 or IPv6 address of the source to be blocked. * (can only be used in socket_set_option) *
MCAST_UNBLOCK_SOURCE * Unblocks (start receiving again) packets arriving from a specific * source address to a specific multicast group, which must have been * previously joined. (added in PHP 5.4) * * array with the same format as * MCAST_BLOCK_SOURCE. * (can only be used in socket_set_option) *
MCAST_JOIN_SOURCE_GROUP * Receive packets destined to a specific multicast group whose source * address matches a specific value. (added in PHP 5.4) * * array with the same format as * MCAST_BLOCK_SOURCE. * (can only be used in socket_set_option) *
MCAST_LEAVE_SOURCE_GROUP * Stop receiving packets destined to a specific multicast group whose * soure address matches a specific value. (added in PHP 5.4) * * array with the same format as * MCAST_BLOCK_SOURCE. * (can only be used in socket_set_option) *
IP_MULTICAST_IF * The outgoing interface for IPv4 multicast packets. * (added in PHP 5.4) * * Either int specifying the interface number or a * string with an interface name, like * eth0. The value 0 can be used to * indicate the routing table is to used in the interface selection. * The function socket_get_option returns an * interface index. * Note that, unlike the C API, this option does NOT take an IP * address. This eliminates the interface difference between * IP_MULTICAST_IF and * IPV6_MULTICAST_IF. *
IPV6_MULTICAST_IF * The outgoing interface for IPv6 multicast packets. * (added in PHP 5.4) * * The same as IP_MULTICAST_IF. *
IP_MULTICAST_LOOP * The multicast loopback policy for IPv4 packets, which * determines whether multicast packets sent by this socket also reach * receivers in the same host that have joined the same multicast group * on the outgoing interface used by this socket. This is the case by * default. * (added in PHP 5.4) * * int (either 0 or * 1). For socket_set_option * any value will be accepted and will be converted to a boolean * following the usual PHP rules. *
IPV6_MULTICAST_LOOP * Analogous to IP_MULTICAST_LOOP, but for IPv6. * (added in PHP 5.4) * * int. See IP_MULTICAST_LOOP. *
IP_MULTICAST_TTL * The time-to-live of outgoing IPv4 multicast packets. This should be * a value between 0 (don't leave the interface) and 255. The default * value is 1 (only the local network is reached). * (added in PHP 5.4) * * int between 0 and 255. *
IPV6_MULTICAST_HOPS * Analogous to IP_MULTICAST_TTL, but for IPv6 * packets. The value -1 is also accepted, meaning the route default * should be used. * (added in PHP 5.4) * * int between -1 and 255. *
* @return array|int|false the value of the given option, or FALSE on errors. */ function socket_get_option(Socket $socket, int $level, int $option): array|int|false {} /** * Sets socket options for the socket * @link https://php.net/manual/en/function.socket-set-option.php * @param resource|Socket $socket

* A valid socket resource created with socket_create * or socket_accept. *

* @param int $level

* The level parameter specifies the protocol * level at which the option resides. For example, to retrieve options at * the socket level, a level parameter of * SOL_SOCKET would be used. Other levels, such as * TCP, can be used by specifying the protocol number of that level. * Protocol numbers can be found by using the * getprotobyname function. *

* @param int $option

* The available socket options are the same as those for the * socket_get_option function. *

* @param mixed $value

* The option value. *

* @return bool TRUE on success or FALSE on failure. */ function socket_set_option(Socket $socket, int $level, int $option, $value): bool {} /** * Shuts down a socket for receiving, sending, or both * @link https://php.net/manual/en/function.socket-shutdown.php * @param resource|Socket $socket

* A valid socket resource created with socket_create. *

* @param int $mode [optional]

* The value of how can be one of the following: * * possible values for how * * * * * * * * * * * * *
0 * Shutdown socket reading *
1 * Shutdown socket writing *
2 * Shutdown socket reading and writing *
*

* @return bool TRUE on success or FALSE on failure. */ function socket_shutdown(Socket $socket, int $mode = 2): bool {} /** * Returns the last error on the socket * @link https://php.net/manual/en/function.socket-last-error.php * @param resource|Socket $socket [optional]

* A valid socket resource created with socket_create. *

* @return int This function returns a socket error code. */ function socket_last_error(?Socket $socket = null): int {} /** * Clears the error on the socket or the last error code * @link https://php.net/manual/en/function.socket-clear-error.php * @param resource|Socket|null $socket [optional]

* A valid socket resource created with socket_create. *

* @return void No value is returned. */ function socket_clear_error(?Socket $socket = null): void {} /** * Import a stream * @link https://php.net/manual/en/function.socket-import-stream.php * @param resource|Socket $stream

* The stream resource to import. *

* @return resource|Socket|false|null FALSE or NULL on failure. * @since 5.4 */ function socket_import_stream($stream): Socket|false {} /** * Calculate message buffer size * @link https://php.net/manual/en/function.socket-cmsg-space.php * @param int $level * @param int $type * @param int $num [optional] * @return int|null * @since 5.5 */ function socket_cmsg_space( int $level, int $type, #[PhpStormStubsElementAvailable(from: '8.0')] int $num = 0 ): ?int {} /** * Alias of {@see socket_get_option} * @param Socket $socket * @param int $level * @param int $option */ function socket_getopt(Socket $socket, int $level, int $option): array|int|false {} /** * Alias of {@see socket_set_option} * @param Socket $socket * @param int $level * @param int $option * @param $value * @return bool */ function socket_setopt(Socket $socket, int $level, int $option, $value): bool {} /** * Exports the WSAPROTOCOL_INFO Structure * * @link https://www.php.net/manual/en/function.socket-wsaprotocol-info-export.php * * @param resource|Socket $socket * @param int $target_pid * @return string|false * * @since 7.3 */ function socket_wsaprotocol_info_export($socket, $target_pid) {} /** * Imports a Socket from another Process * * @link https://www.php.net/manual/en/function.socket-wsaprotocol-info-import.php * * @param string $info_id * @return resource|Socket|false * * @since 7.3 */ function socket_wsaprotocol_info_import($info_id) {} /** * Releases an exported WSAPROTOCOL_INFO Structure * * @link https://www.php.net/manual/en/function.socket-wsaprotocol-info-release.php * * @param string $info_id * @return bool * * @since 7.3 */ function socket_wsaprotocol_info_release($info_id) {} /** * @since 8.3 */ function socket_atmark(Socket $socket): bool {} define('AF_UNIX', 1); define('AF_INET', 2); /** * Only available if compiled with IPv6 support. * @link https://php.net/manual/en/sockets.constants.php */ define('AF_INET6', 10); define('SOCK_STREAM', 1); define('SOCK_DGRAM', 2); define('SOCK_RAW', 3); define('SOCK_SEQPACKET', 5); define('SOCK_RDM', 4); define('MSG_OOB', 1); define('MSG_WAITALL', 256); define('MSG_CTRUNC', 8); define('MSG_TRUNC', 32); define('MSG_PEEK', 2); define('MSG_DONTROUTE', 4); /** * Not available on Windows platforms. * @link https://php.net/manual/en/sockets.constants.php */ define('MSG_EOR', 128); /** * Not available on Windows platforms. * @link https://php.net/manual/en/sockets.constants.php */ define('MSG_EOF', 512); define('MSG_CONFIRM', 2048); define('MSG_ERRQUEUE', 8192); define('MSG_NOSIGNAL', 16384); define('MSG_DONTWAIT', 64); define('MSG_MORE', 32768); define('MSG_WAITFORONE', 65536); define('MSG_CMSG_CLOEXEC', 1073741824); define('SO_DEBUG', 1); define('SO_REUSEADDR', 2); /** * This constant is only available in PHP 5.4.10 or later on platforms that * support the SO_REUSEPORT socket option: this * includes Mac OS X and FreeBSD, but does not include Linux or Windows. * @link https://php.net/manual/en/sockets.constants.php */ define('SO_REUSEPORT', 15); define('SO_KEEPALIVE', 9); define('SO_DONTROUTE', 5); define('SO_LINGER', 13); define('SO_BROADCAST', 6); define('SO_OOBINLINE', 10); define('SO_SNDBUF', 7); define('SO_RCVBUF', 8); define('SO_SNDLOWAT', 19); define('SO_RCVLOWAT', 18); define('SO_SNDTIMEO', 21); define('SO_RCVTIMEO', 20); define('SO_TYPE', 3); define('SO_ERROR', 4); define('SO_BINDTODEVICE', 25); define('SO_ATTACH_REUSEPORT_CBPF', 51); define('SO_DETACH_FILTER', 27); define('SO_DETACH_BPF', 27); define('SOL_SOCKET', 1); define('SOL_UDPLITE', 136); define('SOMAXCONN', 128); /** * @since 8.1 */ define('SO_MARK', 36); /** * Used to disable Nagle TCP algorithm. * Added in PHP 5.2.7. * @link https://php.net/manual/en/sockets.constants.php */ define('TCP_NODELAY', 1); define('PHP_NORMAL_READ', 1); define('PHP_BINARY_READ', 2); /** * Joins a multicast group. * @since 5.4 * @link https://php.net/manual/en/function.socket-get-option.php */ define('MCAST_JOIN_GROUP', 42); /** * Leaves a multicast group. * @since 5.4 * @link https://php.net/manual/en/function.socket-get-option.php */ define('MCAST_LEAVE_GROUP', 45); /** * Blocks packets arriving from a specific source to a specific multicast group, * which must have been previously joined. * @since 5.4 * @link https://php.net/manual/en/function.socket-get-option.php */ define('MCAST_BLOCK_SOURCE', 43); /** * Unblocks (start receiving again) packets arriving from * a specific source address to a specific multicast group, * which must have been previously joined. * @since 5.4 * @link https://php.net/manual/en/function.socket-get-option.php */ define('MCAST_UNBLOCK_SOURCE', 44); /** * Receive packets destined to a specific multicast group * whose source address matches a specific value. * @since 5.4 * @link https://php.net/manual/en/function.socket-get-option.php */ define('MCAST_JOIN_SOURCE_GROUP', 46); /** * Stop receiving packets destined to a specific multicast group * whose soure address matches a specific value. * @since 5.4 * @link https://php.net/manual/en/function.socket-get-option.php */ define('MCAST_LEAVE_SOURCE_GROUP', 47); /** * The outgoing interface for IPv4 multicast packets. * @since 5.4 * @link https://php.net/manual/en/function.socket-get-option.php */ define('IP_MULTICAST_IF', 32); /** * The outgoing interface for IPv6 multicast packets. * @since 5.4 * @link https://php.net/manual/en/function.socket-get-option.php */ define('IP_MULTICAST_TTL', 33); /** * The multicast loopback policy for IPv4 packets, * which determines whether multicast packets sent by this socket * also reach receivers in the same host that have joined the same multicast group * on the outgoing interface used by this socket. This is the case by default. * @since 5.4 * @link https://php.net/manual/en/function.socket-get-option.php */ define('IP_MULTICAST_LOOP', 34); /** * Analogous to IP_MULTICAST_LOOP, but for IPv6. * @since 5.4 * @link https://php.net/manual/en/function.socket-get-option.php */ define('IPV6_MULTICAST_IF', 17); /** * The time-to-live of outgoing IPv4 multicast packets. * This should be a value between 0 (don't leave the interface) and 255. * The default value is 1 (only the local network is reached). * @since 5.4 * @link https://php.net/manual/en/function.socket-get-option.php */ define('IPV6_MULTICAST_HOPS', 18); /** * Analogous to IP_MULTICAST_TTL, but for IPv6 packets. * The value -1 is also accepted, meaning the route default should be used. * @since 5.4 * @link https://php.net/manual/en/function.socket-get-option.php */ define('IPV6_MULTICAST_LOOP', 19); define('IPV6_V6ONLY', 26); define('IP_BIND_ADDRESS_NO_PORT', 24); define('IP_MTU_DISCOVER', 10); define('IP_PMTUDISC_DO', 2); define('IP_PMTUDISC_DONT', 0); define('IP_PMTUDISC_WANT', 1); define('IP_PMTUDISC_PROBE', 3); define('IP_PMTUDISC_INTERFACE', 4); define('IP_PMTUDISC_OMIT', 5); /** * Operation not permitted. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EPERM', 1); /** * No such file or directory. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOENT', 2); /** * Interrupted system call. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EINTR', 4); /** * I/O error. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EIO', 5); /** * No such device or address. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENXIO', 6); /** * Arg list too long. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_E2BIG', 7); /** * Bad file number. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EBADF', 9); /** * Try again. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EAGAIN', 11); /** * Out of memory. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOMEM', 12); /** * Permission denied. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EACCES', 13); /** * Bad address. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EFAULT', 14); /** * Block device required. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOTBLK', 15); /** * Device or resource busy. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EBUSY', 16); /** * File exists. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EEXIST', 17); /** * Cross-device link. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EXDEV', 18); /** * No such device. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENODEV', 19); /** * Not a directory. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOTDIR', 20); /** * Is a directory. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EISDIR', 21); /** * Invalid argument. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EINVAL', 22); /** * File table overflow. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENFILE', 23); /** * Too many open files. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EMFILE', 24); /** * Not a typewriter. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOTTY', 25); /** * No space left on device. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOSPC', 28); /** * Illegal seek. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ESPIPE', 29); /** * Read-only file system. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EROFS', 30); /** * Too many links. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EMLINK', 31); /** * Broken pipe. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EPIPE', 32); /** * File name too long. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENAMETOOLONG', 36); /** * No record locks available. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOLCK', 37); /** * Function not implemented. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOSYS', 38); /** * Directory not empty. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOTEMPTY', 39); /** * Too many symbolic links encountered. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ELOOP', 40); /** * Operation would block. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EWOULDBLOCK', 11); /** * No message of desired type. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOMSG', 42); /** * Identifier removed. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EIDRM', 43); /** * Channel number out of range. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ECHRNG', 44); /** * Level 2 not synchronized. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EL2NSYNC', 45); /** * Level 3 halted. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EL3HLT', 46); /** * Level 3 reset. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EL3RST', 47); /** * Link number out of range. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ELNRNG', 48); /** * Protocol driver not attached. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EUNATCH', 49); /** * No CSI structure available. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOCSI', 50); /** * Level 2 halted. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EL2HLT', 51); /** * Invalid exchange. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EBADE', 52); /** * Invalid request descriptor. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EBADR', 53); /** * Exchange full. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EXFULL', 54); /** * No anode. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOANO', 55); /** * Invalid request code. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EBADRQC', 56); /** * Invalid slot. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EBADSLT', 57); /** * Device not a stream. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOSTR', 60); /** * No data available. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENODATA', 61); /** * Timer expired. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ETIME', 62); /** * Out of streams resources. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOSR', 63); /** * Machine is not on the network. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENONET', 64); /** * Object is remote. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EREMOTE', 66); /** * Link has been severed. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOLINK', 67); /** * Advertise error. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EADV', 68); /** * Srmount error. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ESRMNT', 69); /** * Communication error on send. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ECOMM', 70); /** * Protocol error. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EPROTO', 71); /** * Multihop attempted. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EMULTIHOP', 72); /** * Not a data message. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EBADMSG', 74); /** * Name not unique on network. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOTUNIQ', 76); /** * File descriptor in bad state. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EBADFD', 77); /** * Remote address changed. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EREMCHG', 78); /** * Interrupted system call should be restarted. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ERESTART', 85); /** * Streams pipe error. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ESTRPIPE', 86); /** * Too many users. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EUSERS', 87); /** * Socket operation on non-socket. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOTSOCK', 88); /** * Destination address required. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EDESTADDRREQ', 89); /** * Message too long. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EMSGSIZE', 90); /** * Protocol wrong type for socket. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EPROTOTYPE', 91); define('SOCKET_ENOPROTOOPT', 92); /** * Protocol not supported. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EPROTONOSUPPORT', 93); /** * Socket type not supported. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ESOCKTNOSUPPORT', 94); /** * Operation not supported on transport endpoint. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EOPNOTSUPP', 95); /** * Protocol family not supported. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EPFNOSUPPORT', 96); /** * Address family not supported by protocol. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EAFNOSUPPORT', 97); define('SOCKET_EADDRINUSE', 98); /** * Cannot assign requested address. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EADDRNOTAVAIL', 99); /** * Network is down. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENETDOWN', 100); /** * Network is unreachable. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENETUNREACH', 101); /** * Network dropped connection because of reset. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENETRESET', 102); /** * Software caused connection abort. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ECONNABORTED', 103); /** * Connection reset by peer. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ECONNRESET', 104); /** * No buffer space available. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOBUFS', 105); /** * Transport endpoint is already connected. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EISCONN', 106); /** * Transport endpoint is not connected. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOTCONN', 107); /** * Cannot send after transport endpoint shutdown. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ESHUTDOWN', 108); /** * Too many references: cannot splice. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ETOOMANYREFS', 109); /** * Connection timed out. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ETIMEDOUT', 110); /** * Connection refused. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ECONNREFUSED', 111); /** * Host is down. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EHOSTDOWN', 112); /** * No route to host. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EHOSTUNREACH', 113); /** * Operation already in progress. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EALREADY', 114); /** * Operation now in progress. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EINPROGRESS', 115); /** * Is a named type file. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EISNAM', 120); /** * Remote I/O error. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EREMOTEIO', 121); /** * Quota exceeded. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EDQUOT', 122); /** * No medium found. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_ENOMEDIUM', 123); /** * Wrong medium type. * @link https://php.net/manual/en/sockets.constants.php */ define('SOCKET_EMEDIUMTYPE', 124); define('IPPROTO_IP', 0); define('IPPROTO_IPV6', 41); define('SOL_TCP', 6); define('SOL_UDP', 17); define('IPV6_UNICAST_HOPS', 16); define('IPV6_RECVPKTINFO', 49); define('IPV6_PKTINFO', 50); define('IPV6_RECVHOPLIMIT', 51); define('IPV6_HOPLIMIT', 52); define('IPV6_RECVTCLASS', 66); define('IPV6_TCLASS', 67); define('SCM_RIGHTS', 1); define('SCM_CREDENTIALS', 2); define('SO_PASSCRED', 16); define('SOCKET_EPROCLIM', 10067); define('SOCKET_ESTALE', 10070); define('SOCKET_EDISCON', 10101); define('SOCKET_SYSNOTREADY', 10091); define('SOCKET_VERNOTSUPPORTED', 10092); define('SOCKET_NOTINITIALISED', 10093); define('SOCKET_HOST_NOT_FOUND', 11001); define('SOCKET_TRY_AGAIN', 11002); define('SOCKET_NO_RECOVERY', 11003); define('SOCKET_NO_DATA', 11004); define('SOCKET_NO_ADDRESS', 11004); define('AI_PASSIVE', 1); define('AI_CANONNAME', 2); define('AI_NUMERICHOST', 4); define('AI_ADDRCONFIG', 32); define('AI_NUMERICSERV', 1024); define('AI_V4MAPPED', 8); define('AI_ALL', 16); /** * @since 8.1 */ define('TCP_DEFER_ACCEPT', 9); /** * @since 8.2 */ define('SO_INCOMING_CPU', 49); /** * @since 8.2 */ define('SO_MEMINFO', 55); /** * @since 8.2 */ define('SO_BPF_EXTENSIONS', 48); /** * @since 8.2 */ define('SKF_AD_OFF', -4096); /** * @since 8.2 */ define('SKF_AD_PROTOCOL', 0); /** * @since 8.2 */ define('SKF_AD_PKTTYPE', 4); /** * @since 8.2 */ define('SKF_AD_IFINDEX', 8); /** * @since 8.2 */ define('SKF_AD_NLATTR', 12); /** * @since 8.2 */ define('SKF_AD_NLATTR_NEST', 16); /** * @since 8.2 */ define('SKF_AD_MARK', 20); /** * @since 8.2 */ define('SKF_AD_QUEUE', 24); /** * @since 8.2 */ define('SKF_AD_HATYPE', 28); /** * @since 8.2 */ define('SKF_AD_RXHASH', 32); /** * @since 8.2 */ define('SKF_AD_CPU', 36); /** * @since 8.2 */ define('SKF_AD_ALU_XOR_X', 40); /** * @since 8.2 */ define('SKF_AD_VLAN_TAG', 44); /** * @since 8.2 */ define('SKF_AD_VLAN_TAG_PRESENT', 48); /** * @since 8.2 */ define('SKF_AD_PAY_OFFSET', 52); /** * @since 8.2 */ define('SKF_AD_RANDOM', 56); /** * @since 8.2 */ define('SKF_AD_VLAN_TPID', 60); /** * @since 8.2 */ define('SKF_AD_MAX', 64); /** * @since 8.2 */ define('TCP_CONGESTION', 13); /** * @since 8.2 */ define('TCP_NOTSENT_LOWAT', 25); /** * @since 8.2 */ define('TCP_KEEPIDLE', 4); /** * @since 8.2 */ define('TCP_KEEPINTVL', 5); /** * @since 8.2 */ define('TCP_KEEPCNT', 6); /** * @since 8.3 */ define('TCP_QUICKACK', 12); /** * @since 8.3 */ define('TCP_REPAIR', 19); /** * Socket_set_option for the socket_send* functions. * It avoids copy b/w userland and kernel for both TCP and UDP protocols. * @since 8.2 */ define('SO_ZEROCOPY', 60); /** * Socket_set_option for the socket_send* functions. * It avoids copy b/w userland and kernel for both TCP and UDP protocols. * @since 8.2 */ define('MSG_ZEROCOPY', 67108864); /** * @since 8.4 */ define('SOCK_DCCP', 6); /** * @since 8.4 */ define('TCP_SYNCNT', 7); /** * @since 8.4 */ define('SOCK_CLOEXEC', 524288); /** * @since 8.4 */ define('SOCK_NONBLOCK', 2048); /** * @since 8.4 */ define('SO_BINDTOIFINDEX', 62); /** * @since 8.0 */ final class Socket { /** * Cannot directly construct Socket, use socket_create() instead * @see socket_create() */ private function __construct() {} } /** * @since 8.0 */ final class AddressInfo { /** * Cannot directly construct AddressInfo, use socket_addrinfo_lookup() instead * @see socket_addrinfo_lookup() */ private function __construct() {} } * Shall start recording coverage information * @return void */ function start() {} /** * (PHP >= 7.0, PECL pcov >= 1.0.0)
* Shall stop recording coverage information * @return void */ function stop() {} /** * (PHP >= 7.0, PECL pcov >= 1.0.0)
* Shall collect coverage information * @param int $type [optional]

* pcov\all shall collect coverage information for all files * pcov\inclusive shall collect coverage information for the specified files * pcov\exclusive shall collect coverage information for all but the specified files *

* @param array $filter

* path of files (realpath) that should be filtered *

* @return array */ function collect(int $type = all, array $filter = []) {} /** * (PHP >= 7.0, PECL pcov >= 1.0.0)
* Shall clear stored information * @param bool $files [optional]

* set true to clear file tables * Note: clearing the file tables may have surprising consequences *

* @return void */ function clear(bool $files = false) {} /** * (PHP >= 7.0, PECL pcov >= 1.0.0)
* Shall return list of files waiting to be collected * @return array */ function waiting() {} /** * (PHP >= 7.0, PECL pcov >= 1.0.0)
* Shall return the current size of the trace and cfg arena * @return int */ function memory() {} } * * Example:
* #[ArrayShape(["f" => "int", "string", "x" => "float"])] * This usage applied on an element effectively means that the array has 3 elements, the keys are "f", 1, and "x", and the corresponding types are "int", "string", and "float". */ #[Attribute(Attribute::TARGET_FUNCTION|Attribute::TARGET_METHOD|Attribute::TARGET_PARAMETER|Attribute::TARGET_PROPERTY)] class ArrayShape { public function __construct(array $shape) {} } *
  • Code completion - expected arguments are displayed on the top of the suggestions list when used in comparison expressions
  • *
  • Inspections [when used in a comparison with a value/assignment to/return from method] - the element absent from the expected values list produces the inspection warning
  • *
  • Code generation - for example, when generating the 'switch' statement, all possible expected values are inserted automatically
  • * * * Expected values can be any of the following: *
      *
    • numbers
    • *
    • string literals
    • *
    • constant references
    • *
    • class constant references
    • *
    * * Expected arguments can be specified in any of the following ways: *
      *
    • #[ExpectedValues(values: [1,2,3])] means that one of the following is expected: `1`, `2`, or `3`
    • *
    • #[ExpectedValues(values: MY_CONST] - default value of MY_CONST is expected to be array creation expression, in this case value of MY_CONST will be inlined
    • *
    • #[ExpectedValues(flags: [1,2,3])] means that a bitmask of the following is expected: `1`, `2`, or `3`
    • *
    • #[ExpectedValues(valuesFromClass: MyClass::class)] means that one of the constants from the class `MyClass` is expected
    • *
    • #[ExpectedValues(flagsFromClass: ExpectedValues::class)] means that a bitmask of the constants from the class `MyClass` is expected
    • *
    * * The attribute with the number of provided constructor arguments different from 1 will result in undefined behavior. * @since 8.0 */ #[Attribute(Attribute::TARGET_FUNCTION|Attribute::TARGET_METHOD|Attribute::TARGET_PARAMETER|Attribute::TARGET_PROPERTY)] class ExpectedValues { public function __construct(array $values = [], array $flags = [], string $valuesFromClass = null, string $flagsFromClass = null) {} } *
  • {@link Immutable::CONSTRUCTOR_WRITE_SCOPE}: write is allowed only in containing class constructor (default choice)
  • *
  • {@link Immutable::PRIVATE_WRITE_SCOPE}: write is allowed only in places where the property would be accessible if it had 'private' visibility modifier
  • *
  • {@link Immutable::PROTECTED_WRITE_SCOPE}: write is allowed only in places where the property would be accessible if it had 'protected' visibility modifier
  • * * @since 8.0 */ #[Attribute(Attribute::TARGET_PROPERTY|Attribute::TARGET_CLASS)] class Immutable { public const CONSTRUCTOR_WRITE_SCOPE = "constructor"; public const PRIVATE_WRITE_SCOPE = "private"; public const PROTECTED_WRITE_SCOPE = "protected"; public function __construct(#[ExpectedValues(valuesFromClass: Immutable::class)] $allowedWriteScope = self::CONSTRUCTOR_WRITE_SCOPE) {} } #[ObjectShape(["age" => "int", "name" => "string"])] * * This usage applied on an element effectively means that the object has 2 fields, the names are "age" and "name", and the corresponding types are "int" and "string". */ #[Attribute(Attribute::TARGET_FUNCTION|Attribute::TARGET_METHOD|Attribute::TARGET_PARAMETER|Attribute::TARGET_PROPERTY)] class ObjectShape { public function __construct(array $shape) {} } *
  • %parametersList%: parameters of the function call. For example, for the "f(1,2)" call, %parametersList% will be "1,2"
  • *
  • %parameter0%,%parameter1%,%parameter2%,...: parameters of the function call. For example, for the "f(1,2)" call, %parameter1% will be "2"
  • *
  • %name%: For "\x\f(1,2)", %name% will be "\x\f", for "$this->ff()", %name% will be "ff"
  • *
  • %class%: If the attribute is provided for method "m", then for "$this->f()->m()", %class% will be "$this->f()"
  • * * The following example shows how to wrap a function call in another call and swap arguments:
    * "#[Deprecated(replacement: "wrappedCall(%name%(%parameter1%, %parameter0%))")] f($a, $b){}
    * f(1,2) will be replaced with wrappedCall(f(2,1)) * @param string $since Element is deprecated starting with the provided PHP language level, applicable only for PhpStorm stubs entries */ public function __construct( $reason = "", $replacement = "", #[ExpectedValues(self::PHP_VERSIONS)] $since = "5.6" ) {} } *

    * @return int */ function ncurses_addch($ch) {} /** * Set fore- and background color * @link https://php.net/manual/en/function.ncurses-color-set.php * @param int $pair

    *

    * @return int */ function ncurses_color_set($pair) {} /** * Delete a ncurses window * @link https://php.net/manual/en/function.ncurses-delwin.php * @param resource $window

    *

    * @return bool */ function ncurses_delwin($window) {} /** * Stop using ncurses, clean up the screen * @link https://php.net/manual/en/function.ncurses-end.php * @return int */ function ncurses_end() {} /** * Read a character from keyboard * @link https://php.net/manual/en/function.ncurses-getch.php * @return int */ function ncurses_getch() {} /** * Check if terminal has colors * @link https://php.net/manual/en/function.ncurses-has-colors.php * @return bool Return true if the terminal has color capacities, false otherwise. */ function ncurses_has_colors() {} /** * Initialize ncurses * @link https://php.net/manual/en/function.ncurses-init.php * @return void */ function ncurses_init() {} /** * Allocate a color pair * @link https://php.net/manual/en/function.ncurses-init-pair.php * @param int $pair

    *

    * @param int $fg

    *

    * @param int $bg

    *

    * @return int */ function ncurses_init_pair($pair, $fg, $bg) {} /** * Gets the RGB value for color * @link https://php.net/manual/en/function.ncurses-color-content.php * @param int $color

    *

    * @param int &$r

    *

    * @param int &$g

    *

    * @param int &$b

    *

    * @return int */ function ncurses_color_content($color, &$r, &$g, &$b) {} /** * Gets the RGB value for color * @link https://php.net/manual/en/function.ncurses-pair-content.php * @param int $pair

    *

    * @param int &$f

    *

    * @param int &$b

    *

    * @return int */ function ncurses_pair_content($pair, &$f, &$b) {} /** * Move output position * @link https://php.net/manual/en/function.ncurses-move.php * @param int $y

    *

    * @param int $x

    *

    * @return int */ function ncurses_move($y, $x) {} /** * Create a new window * @link https://php.net/manual/en/function.ncurses-newwin.php * @param int $rows

    * Number of rows *

    * @param int $cols

    * Number of columns *

    * @param int $y

    * y-ccordinate of the origin *

    * @param int $x

    * x-ccordinate of the origin *

    * @return resource a resource ID for the new window. */ function ncurses_newwin($rows, $cols, $y, $x) {} /** * Refresh screen * @link https://php.net/manual/en/function.ncurses-refresh.php * @param int $ch

    *

    * @return int */ function ncurses_refresh($ch) {} /** * Start using colors * @link https://php.net/manual/en/function.ncurses-start-color.php * @return int */ function ncurses_start_color() {} /** * Start using 'standout' attribute * @link https://php.net/manual/en/function.ncurses-standout.php * @return int */ function ncurses_standout() {} /** * Stop using 'standout' attribute * @link https://php.net/manual/en/function.ncurses-standend.php * @return int */ function ncurses_standend() {} /** * Returns baudrate of terminal * @link https://php.net/manual/en/function.ncurses-baudrate.php * @return int */ function ncurses_baudrate() {} /** * Let the terminal beep * @link https://php.net/manual/en/function.ncurses-beep.php * @return int */ function ncurses_beep() {} /** * Check if we can change terminals colors * @link https://php.net/manual/en/function.ncurses-can-change-color.php * @return bool Return true if the terminal has color capabilities and you can change * the colors, false otherwise. */ function ncurses_can_change_color() {} /** * Switch of input buffering * @link https://php.net/manual/en/function.ncurses-cbreak.php * @return bool true or NCURSES_ERR if any error occurred. */ function ncurses_cbreak() {} /** * Clear screen * @link https://php.net/manual/en/function.ncurses-clear.php * @return bool */ function ncurses_clear() {} /** * Clear screen from current position to bottom * @link https://php.net/manual/en/function.ncurses-clrtobot.php * @return bool */ function ncurses_clrtobot() {} /** * Clear screen from current position to end of line * @link https://php.net/manual/en/function.ncurses-clrtoeol.php * @return bool */ function ncurses_clrtoeol() {} /** * Saves terminals (program) mode * @link https://php.net/manual/en/function.ncurses-def-prog-mode.php * @return bool false on success, otherwise true. */ function ncurses_def_prog_mode() {} /** * Resets the prog mode saved by def_prog_mode * @link https://php.net/manual/en/function.ncurses-reset-prog-mode.php * @return int */ function ncurses_reset_prog_mode() {} /** * Saves terminals (shell) mode * @link https://php.net/manual/en/function.ncurses-def-shell-mode.php * @return bool false on success, true otherwise. */ function ncurses_def_shell_mode() {} /** * Resets the shell mode saved by def_shell_mode * @link https://php.net/manual/en/function.ncurses-reset-shell-mode.php * @return int */ function ncurses_reset_shell_mode() {} /** * Delete character at current position, move rest of line left * @link https://php.net/manual/en/function.ncurses-delch.php * @return bool false on success, true otherwise. */ function ncurses_delch() {} /** * Delete line at current position, move rest of screen up * @link https://php.net/manual/en/function.ncurses-deleteln.php * @return bool false on success, otherwise true. */ function ncurses_deleteln() {} /** * Write all prepared refreshes to terminal * @link https://php.net/manual/en/function.ncurses-doupdate.php * @return bool */ function ncurses_doupdate() {} /** * Activate keyboard input echo * @link https://php.net/manual/en/function.ncurses-echo.php * @return bool false on success, true if any error occurred. */ function ncurses_echo() {} /** * Erase terminal screen * @link https://php.net/manual/en/function.ncurses-erase.php * @return bool */ function ncurses_erase() {} /** * Erase window contents * @link https://php.net/manual/en/function.ncurses-werase.php * @param resource $window

    *

    * @return int */ function ncurses_werase($window) {} /** * Returns current erase character * @link https://php.net/manual/en/function.ncurses-erasechar.php * @return string The current erase char, as a string. */ function ncurses_erasechar() {} /** * Flash terminal screen (visual bell) * @link https://php.net/manual/en/function.ncurses-flash.php * @return bool false on success, otherwise true. */ function ncurses_flash() {} /** * Flush keyboard input buffer * @link https://php.net/manual/en/function.ncurses-flushinp.php * @return bool false on success, otherwise true. */ function ncurses_flushinp() {} /** * Check for insert- and delete-capabilities * @link https://php.net/manual/en/function.ncurses-has-ic.php * @return bool true if the terminal has insert/delete-capabilities, false * otherwise. */ function ncurses_has_ic() {} /** * Check for line insert- and delete-capabilities * @link https://php.net/manual/en/function.ncurses-has-il.php * @return bool true if the terminal has insert/delete-line capabilities, * false otherwise. */ function ncurses_has_il() {} /** * Get character and attribute at current position * @link https://php.net/manual/en/function.ncurses-inch.php * @return string the character, as a string. */ function ncurses_inch() {} /** * Insert a line, move rest of screen down * @link https://php.net/manual/en/function.ncurses-insertln.php * @return int */ function ncurses_insertln() {} /** * Ncurses is in endwin mode, normal screen output may be performed * @link https://php.net/manual/en/function.ncurses-isendwin.php * @return bool true, if ncurses_endwin has been called * without any subsequent calls to ncurses_wrefresh, * false otherwise. */ function ncurses_isendwin() {} /** * Returns current line kill character * @link https://php.net/manual/en/function.ncurses-killchar.php * @return string the kill character, as a string. */ function ncurses_killchar() {} /** * Translate newline and carriage return / line feed * @link https://php.net/manual/en/function.ncurses-nl.php * @return bool */ function ncurses_nl() {} /** * Switch terminal to cooked mode * @link https://php.net/manual/en/function.ncurses-nocbreak.php * @return bool true if any error occurred, otherwise false. */ function ncurses_nocbreak() {} /** * Switch off keyboard input echo * @link https://php.net/manual/en/function.ncurses-noecho.php * @return bool true if any error occurred, false otherwise. */ function ncurses_noecho() {} /** * Do not translate newline and carriage return / line feed * @link https://php.net/manual/en/function.ncurses-nonl.php * @return bool */ function ncurses_nonl() {} /** * Switch terminal out of raw mode * @link https://php.net/manual/en/function.ncurses-noraw.php * @return bool true if any error occurred, otherwise false. */ function ncurses_noraw() {} /** * Switch terminal into raw mode * @link https://php.net/manual/en/function.ncurses-raw.php * @return bool true if any error occurred, otherwise false. */ function ncurses_raw() {} /** * Enables/Disable 8-bit meta key information * @link https://php.net/manual/en/function.ncurses-meta.php * @param resource $window

    *

    * @param $bit8 bool

    *

    * @return int */ function ncurses_meta($window, $bit8) {} /** * Restores saved terminal state * @link https://php.net/manual/en/function.ncurses-resetty.php * @return bool Always returns false. */ function ncurses_resetty() {} /** * Saves terminal state * @link https://php.net/manual/en/function.ncurses-savetty.php * @return bool Always returns false. */ function ncurses_savetty() {} /** * Returns a logical OR of all attribute flags supported by terminal * @link https://php.net/manual/en/function.ncurses-termattrs.php * @return bool */ function ncurses_termattrs() {} /** * Assign terminal default colors to color id -1 * @link https://php.net/manual/en/function.ncurses-use-default-colors.php * @return bool */ function ncurses_use_default_colors() {} /** * Returns current soft label key attribute * @link https://php.net/manual/en/function.ncurses-slk-attr.php * @return int The attribute, as an integer. */ function ncurses_slk_attr() {} /** * Clears soft labels from screen * @link https://php.net/manual/en/function.ncurses-slk-clear.php * @return bool true on errors, false otherwise. */ function ncurses_slk_clear() {} /** * Copies soft label keys to virtual screen * @link https://php.net/manual/en/function.ncurses-slk-noutrefresh.php * @return bool */ function ncurses_slk_noutrefresh() {} /** * Copies soft label keys to screen * @link https://php.net/manual/en/function.ncurses-slk-refresh.php * @return int */ function ncurses_slk_refresh() {} /** * Restores soft label keys * @link https://php.net/manual/en/function.ncurses-slk-restore.php * @return int */ function ncurses_slk_restore() {} /** * Forces output when ncurses_slk_noutrefresh is performed * @link https://php.net/manual/en/function.ncurses-slk-touch.php * @return int */ function ncurses_slk_touch() {} /** * Turn off the given attributes * @link https://php.net/manual/en/function.ncurses-attroff.php * @param int $attributes

    *

    * @return int */ function ncurses_attroff($attributes) {} /** * Turn on the given attributes * @link https://php.net/manual/en/function.ncurses-attron.php * @param int $attributes

    *

    * @return int */ function ncurses_attron($attributes) {} /** * Set given attributes * @link https://php.net/manual/en/function.ncurses-attrset.php * @param int $attributes

    *

    * @return int */ function ncurses_attrset($attributes) {} /** * Set background property for terminal screen * @link https://php.net/manual/en/function.ncurses-bkgd.php * @param int $attrchar

    *

    * @return int */ function ncurses_bkgd($attrchar) {} /** * Set cursor state * @link https://php.net/manual/en/function.ncurses-curs-set.php * @param int $visibility

    *

    * @return int */ function ncurses_curs_set($visibility) {} /** * Delay output on terminal using padding characters * @link https://php.net/manual/en/function.ncurses-delay-output.php * @param int $milliseconds

    *

    * @return int */ function ncurses_delay_output($milliseconds) {} /** * Single character output including refresh * @link https://php.net/manual/en/function.ncurses-echochar.php * @param int $character

    *

    * @return int */ function ncurses_echochar($character) {} /** * Put terminal into halfdelay mode * @link https://php.net/manual/en/function.ncurses-halfdelay.php * @param int $tenth

    *

    * @return int */ function ncurses_halfdelay($tenth) {} /** * Check for presence of a function key on terminal keyboard * @link https://php.net/manual/en/function.ncurses-has-key.php * @param int $keycode

    *

    * @return int */ function ncurses_has_key($keycode) {} /** * Insert character moving rest of line including character at current position * @link https://php.net/manual/en/function.ncurses-insch.php * @param int $character

    *

    * @return int */ function ncurses_insch($character) {} /** * Insert lines before current line scrolling down (negative numbers delete and scroll up) * @link https://php.net/manual/en/function.ncurses-insdelln.php * @param int $count

    *

    * @return int */ function ncurses_insdelln($count) {} /** * Set timeout for mouse button clicks * @link https://php.net/manual/en/function.ncurses-mouseinterval.php * @param int $milliseconds

    *

    * @return int */ function ncurses_mouseinterval($milliseconds) {} /** * Sleep * @link https://php.net/manual/en/function.ncurses-napms.php * @param int $milliseconds

    *

    * @return int */ function ncurses_napms($milliseconds) {} /** * Scroll window content up or down without changing current position * @link https://php.net/manual/en/function.ncurses-scrl.php * @param int $count

    *

    * @return int */ function ncurses_scrl($count) {} /** * Turn off the given attributes for soft function-key labels * @link https://php.net/manual/en/function.ncurses-slk-attroff.php * @param int $intarg

    *

    * @return int */ function ncurses_slk_attroff($intarg) {} /** * Turn on the given attributes for soft function-key labels * @link https://php.net/manual/en/function.ncurses-slk-attron.php * @param int $intarg

    *

    * @return int */ function ncurses_slk_attron($intarg) {} /** * Set given attributes for soft function-key labels * @link https://php.net/manual/en/function.ncurses-slk-attrset.php * @param int $intarg

    *

    * @return int */ function ncurses_slk_attrset($intarg) {} /** * Sets color for soft label keys * @link https://php.net/manual/en/function.ncurses-slk-color.php * @param int $intarg

    *

    * @return int */ function ncurses_slk_color($intarg) {} /** * Initializes soft label key functions * @link https://php.net/manual/en/function.ncurses-slk-init.php * @param int $format

    * If ncurses_initscr eventually uses a line from * stdscr to emulate the soft labels, then this parameter determines how * the labels are arranged of the screen. *

    *

    * 0 indicates a 3-2-3 arrangement of the labels, 1 indicates a 4-4 * arrangement and 2 indicates the PC like 4-4-4 mode, but in addition an * index line will be created. *

    * @return bool */ function ncurses_slk_init($format) {} /** * Sets function key labels * @link https://php.net/manual/en/function.ncurses-slk-set.php * @param int $labelnr

    *

    * @param string $label

    *

    * @param int $format

    *

    * @return bool */ function ncurses_slk_set($labelnr, $label, $format) {} /** * Specify different filedescriptor for typeahead checking * @link https://php.net/manual/en/function.ncurses-typeahead.php * @param int $fd

    *

    * @return int */ function ncurses_typeahead($fd) {} /** * Put a character back into the input stream * @link https://php.net/manual/en/function.ncurses-ungetch.php * @param int $keycode

    *

    * @return int */ function ncurses_ungetch($keycode) {} /** * Display the string on the terminal in the video attribute mode * @link https://php.net/manual/en/function.ncurses-vidattr.php * @param int $intarg

    *

    * @return int */ function ncurses_vidattr($intarg) {} /** * Refresh window on terminal screen * @link https://php.net/manual/en/function.ncurses-wrefresh.php * @param resource $window

    *

    * @return int */ function ncurses_wrefresh($window) {} /** * Control use of extended names in terminfo descriptions * @link https://php.net/manual/en/function.ncurses-use-extended-names.php * @param bool $flag

    *

    * @return int */ function ncurses_use_extended_names($flag) {} /** * Control screen background * @link https://php.net/manual/en/function.ncurses-bkgdset.php * @param int $attrchar

    *

    * @return void */ function ncurses_bkgdset($attrchar) {} /** * Set LINES for iniscr() and newterm() to 1 * @link https://php.net/manual/en/function.ncurses-filter.php * @return void */ function ncurses_filter() {} /** * Do not flush on signal characters * @link https://php.net/manual/en/function.ncurses-noqiflush.php * @return void */ function ncurses_noqiflush() {} /** * Flush on signal characters * @link https://php.net/manual/en/function.ncurses-qiflush.php * @return void */ function ncurses_qiflush() {} /** * Set timeout for special key sequences * @link https://php.net/manual/en/function.ncurses-timeout.php * @param int $millisec

    *

    * @return void */ function ncurses_timeout($millisec) {} /** * Control use of environment information about terminal size * @link https://php.net/manual/en/function.ncurses-use-env.php * @param bool $flag

    *

    * @return void */ function ncurses_use_env($flag) {} /** * Output text at current position * @link https://php.net/manual/en/function.ncurses-addstr.php * @param string $text

    *

    * @return int */ function ncurses_addstr($text) {} /** * Apply padding information to the string and output it * @link https://php.net/manual/en/function.ncurses-putp.php * @param string $text

    *

    * @return int */ function ncurses_putp($text) {} /** * Dump screen content to file * @link https://php.net/manual/en/function.ncurses-scr-dump.php * @param string $filename

    *

    * @return int */ function ncurses_scr_dump($filename) {} /** * Initialize screen from file dump * @link https://php.net/manual/en/function.ncurses-scr-init.php * @param string $filename

    *

    * @return int */ function ncurses_scr_init($filename) {} /** * Restore screen from file dump * @link https://php.net/manual/en/function.ncurses-scr-restore.php * @param string $filename

    *

    * @return int */ function ncurses_scr_restore($filename) {} /** * Inherit screen from file dump * @link https://php.net/manual/en/function.ncurses-scr-set.php * @param string $filename

    *

    * @return int */ function ncurses_scr_set($filename) {} /** * Move current position and add character * @link https://php.net/manual/en/function.ncurses-mvaddch.php * @param int $y

    *

    * @param int $x

    *

    * @param int $c

    *

    * @return int */ function ncurses_mvaddch($y, $x, $c) {} /** * Move position and add attributed string with specified length * @link https://php.net/manual/en/function.ncurses-mvaddchnstr.php * @param int $y

    *

    * @param int $x

    *

    * @param string $s

    *

    * @param int $n

    *

    * @return int */ function ncurses_mvaddchnstr($y, $x, $s, $n) {} /** * Add attributed string with specified length at current position * @link https://php.net/manual/en/function.ncurses-addchnstr.php * @param string $s

    *

    * @param int $n

    *

    * @return int */ function ncurses_addchnstr($s, $n) {} /** * Move position and add attributed string * @link https://php.net/manual/en/function.ncurses-mvaddchstr.php * @param int $y

    *

    * @param int $x

    *

    * @param string $s

    *

    * @return int */ function ncurses_mvaddchstr($y, $x, $s) {} /** * Add attributed string at current position * @link https://php.net/manual/en/function.ncurses-addchstr.php * @param string $s

    *

    * @return int */ function ncurses_addchstr($s) {} /** * Move position and add string with specified length * @link https://php.net/manual/en/function.ncurses-mvaddnstr.php * @param int $y

    *

    * @param int $x

    *

    * @param string $s

    *

    * @param int $n

    *

    * @return int */ function ncurses_mvaddnstr($y, $x, $s, $n) {} /** * Add string with specified length at current position * @link https://php.net/manual/en/function.ncurses-addnstr.php * @param string $s

    *

    * @param int $n

    *

    * @return int */ function ncurses_addnstr($s, $n) {} /** * Move position and add string * @link https://php.net/manual/en/function.ncurses-mvaddstr.php * @param int $y

    *

    * @param int $x

    *

    * @param string $s

    *

    * @return int */ function ncurses_mvaddstr($y, $x, $s) {} /** * Move position and delete character, shift rest of line left * @link https://php.net/manual/en/function.ncurses-mvdelch.php * @param int $y

    *

    * @param int $x

    *

    * @return int */ function ncurses_mvdelch($y, $x) {} /** * Move position and get character at new position * @link https://php.net/manual/en/function.ncurses-mvgetch.php * @param int $y

    *

    * @param int $x

    *

    * @return int */ function ncurses_mvgetch($y, $x) {} /** * Move position and get attributed character at new position * @link https://php.net/manual/en/function.ncurses-mvinch.php * @param int $y

    *

    * @param int $x

    *

    * @return int */ function ncurses_mvinch($y, $x) {} /** * Add string at new position in window * @link https://php.net/manual/en/function.ncurses-mvwaddstr.php * @param resource $window

    *

    * @param int $y

    *

    * @param int $x

    *

    * @param string $text

    *

    * @return int */ function ncurses_mvwaddstr($window, $y, $x, $text) {} /** * Insert string at current position, moving rest of line right * @link https://php.net/manual/en/function.ncurses-insstr.php * @param string $text

    *

    * @return int */ function ncurses_insstr($text) {} /** * Reads string from terminal screen * @link https://php.net/manual/en/function.ncurses-instr.php * @param string &$buffer

    * The characters. Attributes will be stripped. *

    * @return int the number of characters. */ function ncurses_instr(&$buffer) {} /** * Set new position and draw a horizontal line using an attributed character and max. n characters long * @link https://php.net/manual/en/function.ncurses-mvhline.php * @param int $y

    *

    * @param int $x

    *

    * @param int $attrchar

    *

    * @param int $n

    *

    * @return int */ function ncurses_mvhline($y, $x, $attrchar, $n) {} /** * Move cursor immediately * @link https://php.net/manual/en/function.ncurses-mvcur.php * @param int $old_y

    *

    * @param int $old_x

    *

    * @param int $new_y

    *

    * @param int $new_x

    *

    * @return int */ function ncurses_mvcur($old_y, $old_x, $new_y, $new_x) {} /** * Set new RGB value for color * @link https://php.net/manual/en/function.ncurses-init-color.php * @param int $color

    *

    * @param int $r

    *

    * @param int $g

    *

    * @param int $b

    *

    * @return int */ function ncurses_init_color($color, $r, $g, $b) {} /** * Draw a border around the screen using attributed characters * @link https://php.net/manual/en/function.ncurses-border.php * @param int $left

    *

    * @param int $right

    *

    * @param int $top

    *

    * @param int $bottom

    *

    * @param int $tl_corner

    * Top left corner *

    * @param int $tr_corner

    * Top right corner *

    * @param int $bl_corner

    * Bottom left corner *

    * @param int $br_corner

    * Bottom right corner *

    * @return int */ function ncurses_border($left, $right, $top, $bottom, $tl_corner, $tr_corner, $bl_corner, $br_corner) {} /** * Define default colors for color 0 * @link https://php.net/manual/en/function.ncurses-assume-default-colors.php * @param int $fg

    *

    * @param int $bg

    *

    * @return int */ function ncurses_assume_default_colors($fg, $bg) {} /** * Define a keycode * @link https://php.net/manual/en/function.ncurses-define-key.php * @param string $definition

    *

    * @param int $keycode

    *

    * @return int */ function ncurses_define_key($definition, $keycode) {} /** * Draw a horizontal line at current position using an attributed character and max. n characters long * @link https://php.net/manual/en/function.ncurses-hline.php * @param int $charattr

    *

    * @param int $n

    *

    * @return int */ function ncurses_hline($charattr, $n) {} /** * Draw a vertical line at current position using an attributed character and max. n characters long * @link https://php.net/manual/en/function.ncurses-vline.php * @param int $charattr

    *

    * @param int $n

    *

    * @return int */ function ncurses_vline($charattr, $n) {} /** * Enable or disable a keycode * @link https://php.net/manual/en/function.ncurses-keyok.php * @param int $keycode

    *

    * @param bool $enable

    *

    * @return int */ function ncurses_keyok($keycode, $enable) {} /** * Returns terminals (short)-name * @link https://php.net/manual/en/function.ncurses-termname.php * @return string|null the shortname of the terminal, truncated to 14 characters. * On errors, returns null. */ function ncurses_termname() {} /** * Returns terminals description * @link https://php.net/manual/en/function.ncurses-longname.php * @return string|null the description, as a string truncated to 128 characters. * On errors, returns null. */ function ncurses_longname() {} /** * Sets mouse options * @link https://php.net/manual/en/function.ncurses-mousemask.php * @param int $newmask

    * Mouse mask options can be set with the following predefined constants: *

    NCURSES_BUTTON1_PRESSED

    * @param int &$oldmask

    * This will be set to the previous value of the mouse event mask. *

    * @return int a mask to indicated which of the in parameter * newmask specified mouse events can be reported. On * complete failure, it returns 0. *

    */ function ncurses_mousemask($newmask, &$oldmask) {} /** * Reads mouse event * @link https://php.net/manual/en/function.ncurses-getmouse.php * @param array &$mevent

    * Event options will be delivered in this parameter which has to be an * array, passed by reference (see example below). *

    *

    * On success an associative array with following keys will be delivered: *

    * "id" : Id to distinguish multiple devices *

    * @return bool false if a mouse event is actually visible in the given window, * otherwise returns true. *

    */ function ncurses_getmouse(array &$mevent) {} /** * Pushes mouse event to queue * @link https://php.net/manual/en/function.ncurses-ungetmouse.php * @param array $mevent

    * An associative array specifying the event options: * "id" : Id to distinguish multiple devices *

    * @return bool false on success, true otherwise. */ function ncurses_ungetmouse(array $mevent) {} /** * Transforms coordinates * @link https://php.net/manual/en/function.ncurses-mouse-trafo.php * @param int &$y

    *

    * @param int &$x

    *

    * @param bool $toscreen

    *

    * @return bool */ function ncurses_mouse_trafo(&$y, &$x, $toscreen) {} /** * Transforms window/stdscr coordinates * @link https://php.net/manual/en/function.ncurses-wmouse-trafo.php * @param resource $window

    *

    * @param int &$y

    *

    * @param int &$x

    *

    * @param bool $toscreen

    *

    * @return bool */ function ncurses_wmouse_trafo($window, &$y, &$x, $toscreen) {} /** * Outputs text at current position in window * @link https://php.net/manual/en/function.ncurses-waddstr.php * @param resource $window

    *

    * @param string $str

    *

    * @param int $n [optional]

    *

    * @return int */ function ncurses_waddstr($window, $str, $n = null) {} /** * Copies window to virtual screen * @link https://php.net/manual/en/function.ncurses-wnoutrefresh.php * @param resource $window

    *

    * @return int */ function ncurses_wnoutrefresh($window) {} /** * Clears window * @link https://php.net/manual/en/function.ncurses-wclear.php * @param resource $window

    *

    * @return int */ function ncurses_wclear($window) {} /** * Sets windows color pairings * @link https://php.net/manual/en/function.ncurses-wcolor-set.php * @param resource $window

    *

    * @param int $color_pair

    *

    * @return int */ function ncurses_wcolor_set($window, $color_pair) {} /** * Reads a character from keyboard (window) * @link https://php.net/manual/en/function.ncurses-wgetch.php * @param resource $window

    *

    * @return int */ function ncurses_wgetch($window) {} /** * Turns keypad on or off * @link https://php.net/manual/en/function.ncurses-keypad.php * @param resource $window

    *

    * @param bool $bf

    *

    * @return int */ function ncurses_keypad($window, $bf) {} /** * Moves windows output position * @link https://php.net/manual/en/function.ncurses-wmove.php * @param resource $window

    *

    * @param int $y

    *

    * @param int $x

    *

    * @return int */ function ncurses_wmove($window, $y, $x) {} /** * Creates a new pad (window) * @link https://php.net/manual/en/function.ncurses-newpad.php * @param int $rows

    *

    * @param int $cols

    *

    * @return resource */ function ncurses_newpad($rows, $cols) {} /** * Copies a region from a pad into the virtual screen * @link https://php.net/manual/en/function.ncurses-prefresh.php * @param resource $pad

    *

    * @param int $pminrow

    *

    * @param int $pmincol

    *

    * @param int $sminrow

    *

    * @param int $smincol

    *

    * @param int $smaxrow

    *

    * @param int $smaxcol

    *

    * @return int */ function ncurses_prefresh($pad, $pminrow, $pmincol, $sminrow, $smincol, $smaxrow, $smaxcol) {} /** * Copies a region from a pad into the virtual screen * @link https://php.net/manual/en/function.ncurses-pnoutrefresh.php * @param resource $pad

    *

    * @param int $pminrow

    *

    * @param int $pmincol

    *

    * @param int $sminrow

    *

    * @param int $smincol

    *

    * @param int $smaxrow

    *

    * @param int $smaxcol

    *

    * @return int */ function ncurses_pnoutrefresh($pad, $pminrow, $pmincol, $sminrow, $smincol, $smaxrow, $smaxcol) {} /** * Enter standout mode for a window * @link https://php.net/manual/en/function.ncurses-wstandout.php * @param resource $window

    *

    * @return int */ function ncurses_wstandout($window) {} /** * End standout mode for a window * @link https://php.net/manual/en/function.ncurses-wstandend.php * @param resource $window

    *

    * @return int */ function ncurses_wstandend($window) {} /** * Set the attributes for a window * @link https://php.net/manual/en/function.ncurses-wattrset.php * @param resource $window

    *

    * @param int $attrs

    *

    * @return int */ function ncurses_wattrset($window, $attrs) {} /** * Turns on attributes for a window * @link https://php.net/manual/en/function.ncurses-wattron.php * @param resource $window

    *

    * @param int $attrs

    *

    * @return int */ function ncurses_wattron($window, $attrs) {} /** * Turns off attributes for a window * @link https://php.net/manual/en/function.ncurses-wattroff.php * @param resource $window

    *

    * @param int $attrs

    *

    * @return int */ function ncurses_wattroff($window, $attrs) {} /** * Adds character at current position in a window and advance cursor * @link https://php.net/manual/en/function.ncurses-waddch.php * @param resource $window

    *

    * @param int $ch

    *

    * @return int */ function ncurses_waddch($window, $ch) {} /** * Draws a border around the window using attributed characters * @link https://php.net/manual/en/function.ncurses-wborder.php * @param resource $window

    * The window on which we operate *

    * @param int $left

    *

    * @param int $right

    *

    * @param int $top

    *

    * @param int $bottom

    *

    * @param int $tl_corner

    * Top left corner *

    * @param int $tr_corner

    * Top right corner *

    * @param int $bl_corner

    * Bottom left corner *

    * @param int $br_corner

    * Bottom right corner *

    * @return int */ function ncurses_wborder($window, $left, $right, $top, $bottom, $tl_corner, $tr_corner, $bl_corner, $br_corner) {} /** * Draws a horizontal line in a window at current position using an attributed character and max. n characters long * @link https://php.net/manual/en/function.ncurses-whline.php * @param resource $window

    *

    * @param int $charattr

    *

    * @param int $n

    *

    * @return int */ function ncurses_whline($window, $charattr, $n) {} /** * Draws a vertical line in a window at current position using an attributed character and max. n characters long * @link https://php.net/manual/en/function.ncurses-wvline.php * @param resource $window

    *

    * @param int $charattr

    *

    * @param int $n

    *

    * @return int */ function ncurses_wvline($window, $charattr, $n) {} /** * Returns the current cursor position for a window * @link https://php.net/manual/en/function.ncurses-getyx.php * @param resource $window

    *

    * @param int &$y

    *

    * @param int &$x

    *

    * @return void */ function ncurses_getyx($window, &$y, &$x) {} /** * Returns the size of a window * @link https://php.net/manual/en/function.ncurses-getmaxyx.php * @param resource $window

    * The measured window *

    * @param int &$y

    * This will be set to the window height *

    * @param int &$x

    * This will be set to the window width *

    * @return void */ function ncurses_getmaxyx($window, &$y, &$x) {} /** * Refreshes the virtual screen to reflect the relations between panels in the stack * @link https://php.net/manual/en/function.ncurses-update-panels.php * @return void */ function ncurses_update_panels() {} /** * Returns the window associated with panel * @link https://php.net/manual/en/function.ncurses-panel-window.php * @param resource $panel

    *

    * @return resource */ function ncurses_panel_window($panel) {} /** * Returns the panel below panel * @link https://php.net/manual/en/function.ncurses-panel-below.php * @param resource $panel

    *

    * @return resource */ function ncurses_panel_below($panel) {} /** * Returns the panel above panel * @link https://php.net/manual/en/function.ncurses-panel-above.php * @param resource $panel

    *

    * @return resource If panel is null, returns the bottom panel in the stack. */ function ncurses_panel_above($panel) {} /** * Replaces the window associated with panel * @link https://php.net/manual/en/function.ncurses-replace-panel.php * @param resource $panel

    *

    * @param resource $window

    *

    * @return int */ function ncurses_replace_panel($panel, $window) {} /** * Moves a panel so that its upper-left corner is at [startx, starty] * @link https://php.net/manual/en/function.ncurses-move-panel.php * @param resource $panel

    *

    * @param int $startx

    *

    * @param int $starty

    *

    * @return int */ function ncurses_move_panel($panel, $startx, $starty) {} /** * Moves a visible panel to the bottom of the stack * @link https://php.net/manual/en/function.ncurses-bottom-panel.php * @param resource $panel

    *

    * @return int */ function ncurses_bottom_panel($panel) {} /** * Moves a visible panel to the top of the stack * @link https://php.net/manual/en/function.ncurses-top-panel.php * @param resource $panel

    *

    * @return int */ function ncurses_top_panel($panel) {} /** * Places an invisible panel on top of the stack, making it visible * @link https://php.net/manual/en/function.ncurses-show-panel.php * @param resource $panel

    *

    * @return int */ function ncurses_show_panel($panel) {} /** * Remove panel from the stack, making it invisible * @link https://php.net/manual/en/function.ncurses-hide-panel.php * @param resource $panel

    *

    * @return int */ function ncurses_hide_panel($panel) {} /** * Remove panel from the stack and delete it (but not the associated window) * @link https://php.net/manual/en/function.ncurses-del-panel.php * @param resource $panel

    *

    * @return bool */ function ncurses_del_panel($panel) {} /** * Create a new panel and associate it with window * @link https://php.net/manual/en/function.ncurses-new-panel.php * @param resource $window

    *

    * @return resource */ function ncurses_new_panel($window) {} define('NCURSES_COLOR_BLACK', 0); define('NCURSES_COLOR_RED', 1); define('NCURSES_COLOR_GREEN', 2); define('NCURSES_COLOR_YELLOW', 3); define('NCURSES_COLOR_BLUE', 4); define('NCURSES_COLOR_MAGENTA', 5); define('NCURSES_COLOR_CYAN', 6); define('NCURSES_COLOR_WHITE', 7); define('NCURSES_KEY_DOWN', 258); define('NCURSES_KEY_UP', 259); define('NCURSES_KEY_LEFT', 260); define('NCURSES_KEY_RIGHT', 261); define('NCURSES_KEY_HOME', 262); define('NCURSES_KEY_END', 360); define('NCURSES_KEY_BACKSPACE', 263); define('NCURSES_KEY_MOUSE', 409); define('NCURSES_KEY_F0', 264); define('NCURSES_KEY_F1', 265); define('NCURSES_KEY_F2', 266); define('NCURSES_KEY_F3', 267); define('NCURSES_KEY_F4', 268); define('NCURSES_KEY_F5', 269); define('NCURSES_KEY_F6', 270); define('NCURSES_KEY_F7', 271); define('NCURSES_KEY_F8', 272); define('NCURSES_KEY_F9', 273); define('NCURSES_KEY_F10', 274); define('NCURSES_KEY_F11', 275); define('NCURSES_KEY_F12', 276); define('NCURSES_KEY_DL', 328); define('NCURSES_KEY_IL', 329); define('NCURSES_KEY_DC', 330); define('NCURSES_KEY_IC', 331); define('NCURSES_KEY_EIC', 332); define('NCURSES_KEY_CLEAR', 333); define('NCURSES_KEY_EOS', 334); define('NCURSES_KEY_EOL', 335); define('NCURSES_KEY_SF', 336); define('NCURSES_KEY_SR', 337); define('NCURSES_KEY_NPAGE', 338); define('NCURSES_KEY_PPAGE', 339); define('NCURSES_KEY_STAB', 340); define('NCURSES_KEY_CTAB', 341); define('NCURSES_KEY_CATAB', 342); define('NCURSES_KEY_ENTER', 343); define('NCURSES_KEY_SRESET', 344); define('NCURSES_KEY_RESET', 345); define('NCURSES_KEY_PRINT', 346); define('NCURSES_KEY_LL', 347); define('NCURSES_KEY_A1', 348); define('NCURSES_KEY_A3', 349); define('NCURSES_KEY_B2', 350); define('NCURSES_KEY_C1', 351); define('NCURSES_KEY_C3', 352); define('NCURSES_KEY_BTAB', 353); define('NCURSES_KEY_BEG', 354); define('NCURSES_KEY_CANCEL', 355); define('NCURSES_KEY_CLOSE', 356); define('NCURSES_KEY_COMMAND', 357); define('NCURSES_KEY_COPY', 358); define('NCURSES_KEY_CREATE', 359); define('NCURSES_KEY_EXIT', 361); define('NCURSES_KEY_FIND', 362); define('NCURSES_KEY_HELP', 363); define('NCURSES_KEY_MARK', 364); define('NCURSES_KEY_MESSAGE', 365); define('NCURSES_KEY_MOVE', 366); define('NCURSES_KEY_NEXT', 367); define('NCURSES_KEY_OPEN', 368); define('NCURSES_KEY_OPTIONS', 369); define('NCURSES_KEY_PREVIOUS', 370); define('NCURSES_KEY_REDO', 371); define('NCURSES_KEY_REFERENCE', 372); define('NCURSES_KEY_REFRESH', 373); define('NCURSES_KEY_REPLACE', 374); define('NCURSES_KEY_RESTART', 375); define('NCURSES_KEY_RESUME', 376); define('NCURSES_KEY_SAVE', 377); define('NCURSES_KEY_SBEG', 378); define('NCURSES_KEY_SCANCEL', 379); define('NCURSES_KEY_SCOMMAND', 380); define('NCURSES_KEY_SCOPY', 381); define('NCURSES_KEY_SCREATE', 382); define('NCURSES_KEY_SDC', 383); define('NCURSES_KEY_SDL', 384); define('NCURSES_KEY_SELECT', 385); define('NCURSES_KEY_SEND', 386); define('NCURSES_KEY_SEOL', 387); define('NCURSES_KEY_SEXIT', 388); define('NCURSES_KEY_SFIND', 389); define('NCURSES_KEY_SHELP', 390); define('NCURSES_KEY_SHOME', 391); define('NCURSES_KEY_SIC', 392); define('NCURSES_KEY_SLEFT', 393); define('NCURSES_KEY_SMESSAGE', 394); define('NCURSES_KEY_SMOVE', 395); define('NCURSES_KEY_SNEXT', 396); define('NCURSES_KEY_SOPTIONS', 397); define('NCURSES_KEY_SPREVIOUS', 398); define('NCURSES_KEY_SPRINT', 399); define('NCURSES_KEY_SREDO', 400); define('NCURSES_KEY_SREPLACE', 401); define('NCURSES_KEY_SRIGHT', 402); define('NCURSES_KEY_SRSUME', 403); define('NCURSES_KEY_SSAVE', 404); define('NCURSES_KEY_SSUSPEND', 405); define('NCURSES_KEY_SUNDO', 406); define('NCURSES_KEY_SUSPEND', 407); define('NCURSES_KEY_UNDO', 408); define('NCURSES_KEY_RESIZE', 410); define('NCURSES_A_NORMAL', 0); define('NCURSES_A_STANDOUT', 65536); define('NCURSES_A_UNDERLINE', 131072); define('NCURSES_A_REVERSE', 262144); define('NCURSES_A_BLINK', 524288); define('NCURSES_A_DIM', 1048576); define('NCURSES_A_BOLD', 2097152); define('NCURSES_A_PROTECT', 16777216); define('NCURSES_A_INVIS', 8388608); define('NCURSES_A_ALTCHARSET', 4194304); define('NCURSES_A_CHARTEXT', 255); define('NCURSES_BUTTON1_PRESSED', 2); define('NCURSES_BUTTON1_RELEASED', 1); define('NCURSES_BUTTON1_CLICKED', 4); define('NCURSES_BUTTON1_DOUBLE_CLICKED', 8); define('NCURSES_BUTTON1_TRIPLE_CLICKED', 16); define('NCURSES_BUTTON2_PRESSED', 128); define('NCURSES_BUTTON2_RELEASED', 64); define('NCURSES_BUTTON2_CLICKED', 256); define('NCURSES_BUTTON2_DOUBLE_CLICKED', 512); define('NCURSES_BUTTON2_TRIPLE_CLICKED', 1024); define('NCURSES_BUTTON3_PRESSED', 8192); define('NCURSES_BUTTON3_RELEASED', 4096); define('NCURSES_BUTTON3_CLICKED', 16384); define('NCURSES_BUTTON3_DOUBLE_CLICKED', 32768); define('NCURSES_BUTTON3_TRIPLE_CLICKED', 65536); define('NCURSES_BUTTON4_PRESSED', 524288); define('NCURSES_BUTTON4_RELEASED', 262144); define('NCURSES_BUTTON4_CLICKED', 1048576); define('NCURSES_BUTTON4_DOUBLE_CLICKED', 2097152); define('NCURSES_BUTTON4_TRIPLE_CLICKED', 4194304); define('NCURSES_BUTTON_SHIFT', 33554432); define('NCURSES_BUTTON_CTRL', 16777216); define('NCURSES_BUTTON_ALT', 67108864); define('NCURSES_ALL_MOUSE_EVENTS', 134217727); define('NCURSES_REPORT_MOUSE_POSITION', 134217728); // End of ncurses v. * COM class constructor. * @param string $module_name * @param string $server_name [optional] * @param int $codepage [optional] * @param string $typelib [optional] */ public function __construct($module_name, $server_name = null, $codepage = CP_ACP, $typelib = null) {} public function __get($name) {} public function __set($name, $value) {} public function __call($name, $args) {} } /** * The DOTNET class allows you to instantiate a class from a .Net assembly and call its methods and access its properties. * @link https://php.net/manual/en/class.dotnet.php */ class DOTNET { /** * (PHP 4 >= 4.1.0, PHP 5, PHP 7)
    * COM class constructor. * @param string $assembly_name * @param string $class_name * @param int $codepage [optional] */ public function __construct($assembly_name, string $class_name, $codepage = CP_ACP) {} public function __get($name) {} public function __set($name, $value) {} public function __call($name, $args) {} } /** * The VARIANT is COM's equivalent of the PHP zval; it is a structure that can contain a value with a range of different possible types. The VARIANT class provided by the COM extension allows you to have more control over the way that PHP passes values to and from COM. * @link https://php.net/manual/en/class.variant.php */ class VARIANT { /** * (PHP 4 >= 4.1.0, PHP 5, PHP 7)
    * COM class constructor. * @param mixed $value [optional] * @param int $type [optional] * @param int $codepage [optional] */ public function __construct($value = null, int $type = VT_EMPTY, $codepage = CP_ACP) {} public function __get($name) {} public function __set($name, $value) {} public function __call($name, $args) {} } /** * This extension will throw instances of the class com_exception whenever there is a potentially fatal error reported by COM. All COM exceptions have a well-defined code property that corresponds to the HRESULT return value from the various COM operations. You may use this code to make programmatic decisions on how to handle the exception. * @link https://php.net/manual/en/com.error-handling.php */ class com_exception extends \Exception {} /** * (PHP 5, PHP 7)
    * Generate a globally unique identifier (GUID) * @link https://php.net/manual/en/function.com-create-guid.php * @return string */ function com_create_guid() {} /** * (PHP 4 >= 4.2.0, PHP 5, PHP 7)
    * Connect events from a COM object to a PHP object * @link https://php.net/manual/en/function.com-event-sink.php * @param \VARIANT $comobject * @param object $sinkobject * @param string $sinkinterface [optional] * @return bool */ function com_event_sink($comobject, $sinkobject, $sinkinterface = null) {} /** * (PHP 5, PHP 7)
    * Returns a handle to an already running instance of a COM object * @link https://php.net/manual/en/function.com-get-active-object.php * @param string $progid * @param int $code_page [optional] * @return \VARIANT */ function com_get_active_object($progid, $code_page = CP_ACP) {} /** * (PHP 4 >= 4.1.0, PHP 5, PHP 7)
    * Loads a Typelib * @link https://php.net/manual/en/function.com-get-active-object.php * @param string $typelib_name * @param bool $case_insensitive [optional] * @return bool */ function com_load_typelib($typelib_name, $case_insensitive = true) {} /** * (PHP 4 >= 4.2.0, PHP 5, PHP 7)
    * Process COM messages, sleeping for up to timeoutms milliseconds * @link https://php.net/manual/en/function.com-message-pump.php * @param int $timeoutms [optional] * @return bool */ function com_message_pump($timeoutms = 0) {} /** * (PHP 4 >= 4.2.0, PHP 5, PHP 7)
    * Print out a PHP class definition for a dispatchable interface * @link https://php.net/manual/en/function.com-print-typeinfo.php * @param object $comobject * @param string $dispinterface [optional] * @param bool $wantsink [optional] * @return bool */ function com_print_typeinfo($comobject, $dispinterface = null, $wantsink = false) {} /** * (PHP 5, PHP 7)
    * Returns the absolute value of a variant * @link https://php.net/manual/en/function.variant-abs.php * @param mixed $val * @return mixed */ function variant_abs($val) {} /** * (PHP 5, PHP 7)
    * "Adds" two variant values together and returns the result * @link https://php.net/manual/en/function.variant-abs.php * @param mixed $left * @param mixed $right * @return mixed */ function variant_add($left, $right) {} /** * (PHP 5, PHP 7)
    * Performs a bitwise AND operation between two variants * @link https://php.net/manual/en/function.variant-and.php * @param mixed $left * @param mixed $right * @return mixed */ function variant_and($left, $right) {} /** * (PHP 5, PHP 7)
    * Convert a variant into a new variant object of another type * @link https://php.net/manual/en/function.variant-cast.php * @param \VARIANT $variant * @param int $type * @return \VARIANT */ function variant_cast($variant, $type) {} /** * (PHP 5, PHP 7)
    * Concatenates two variant values together and returns the result * @link https://php.net/manual/en/function.variant-cat.php * @param mixed $left * @param mixed $right * @return mixed */ function variant_cat($left, $right) {} /** * (PHP 5, PHP 7)
    * Compares two variants * @link https://php.net/manual/en/function.variant-cmp.php * @param mixed $left * @param mixed $right * @param int $lcid [optional] * @param int $flags [optional] * @return int */ function variant_cmp($left, $right, $lcid = null, $flags = null) {} /** * (PHP 5, PHP 7)
    * Returns a variant date representation of a Unix timestamp * @link https://php.net/manual/en/function.variant-date-from-timestamp.php * @param int $timestamp * @return \VARIANT */ function variant_date_from_timestamp($timestamp) {} /** * (PHP 5, PHP 7)
    * Converts a variant date/time value to Unix timestamp * @link https://php.net/manual/en/function.variant-date-to-timestamp.php * @param \VARIANT $variant * @return int */ function variant_date_to_timestamp($variant) {} /** * (PHP 5, PHP 7)
    * Returns the result from dividing two variants * @link https://php.net/manual/en/function.variant-div.php * @param mixed $left * @param mixed $right * @return mixed */ function variant_div($left, $right) {} /** * (PHP 5, PHP 7)
    * Performs a bitwise equivalence on two variants * @link https://php.net/manual/en/function.variant-eqv.php * @param mixed $left * @param mixed $right * @return mixed */ function variant_eqv($left, $right) {} /** * (PHP 5, PHP 7)
    * Returns the integer portion of a variant * @link https://php.net/manual/en/function.variant-fix.php * @param mixed $variant * @return mixed */ function variant_fix($variant) {} /** * (PHP 5, PHP 7)
    * Returns the type of a variant object * @link https://php.net/manual/en/function.variant-get-type.php * @param VARIANT $variant * @return int */ function variant_get_type($variant) {} /** * (PHP 5, PHP 7)
    * Converts variants to integers and then returns the result from dividing them * @link https://php.net/manual/en/function.variant-idiv.php * @param mixed $left * @param mixed $right * @return mixed */ function variant_idiv($left, $right) {} /** * (PHP 5, PHP 7)
    * Performs a bitwise implication on two variants * @link https://php.net/manual/en/function.variant-imp.php * @param mixed $left * @param mixed $right * @return mixed */ function variant_imp($left, $right) {} /** * (PHP 5, PHP 7)
    * Returns the integer portion of a variant * @link https://php.net/manual/en/function.variant-int.php * @param mixed $variant * @return mixed */ function variant_int($variant) {} /** * (PHP 5, PHP 7)
    * Divides two variants and returns only the remainder * @link https://php.net/manual/en/function.variant-mod.php * @param mixed $left * @param mixed $right * @return mixed */ function variant_mod($left, $right) {} /** * (PHP 5, PHP 7)
    * Multiplies the values of the two variants * @link https://php.net/manual/en/function.variant-mul.php * @param mixed $left * @param mixed $right * @return mixed */ function variant_mul($left, $right) {} /** * (PHP 5, PHP 7)
    * Performs logical negation on a variant * @link https://php.net/manual/en/function.variant-neg.php * @param mixed $variant * @return mixed */ function variant_neg($variant) {} /** * (PHP 5, PHP 7)
    * Performs bitwise not negation on a variant * @link https://php.net/manual/en/function.variant-not.php * @param mixed $variant * @return mixed */ function variant_not($variant) {} /** * (PHP 5, PHP 7)
    * Performs a logical disjunction on two variants * @link https://php.net/manual/en/function.variant-or.php * @param mixed $left * @param mixed $right * @return mixed */ function variant_or($left, $right) {} /** * (PHP 5, PHP 7)
    * Returns the result of performing the power function with two variants * @link https://php.net/manual/en/function.variant-pow.php * @param mixed $left * @param mixed $right * @return mixed */ function variant_pow($left, $right) {} /** * (PHP 5, PHP 7)
    * Rounds a variant to the specified number of decimal places * @link https://php.net/manual/en/function.variant-round.php * @param mixed $variant * @param int $decimals * @return mixed */ function variant_round($variant, $decimals) {} /** * (PHP 5, PHP 7)
    * Convert a variant into another type "in-place" * @link https://php.net/manual/en/function.variant-set-type.php * @param VARIANT $variant * @param int $type * @return void */ function variant_set_type($variant, $type) {} /** * (PHP 5, PHP 7)
    * Assigns a new value for a variant object * @link https://php.net/manual/en/function.variant-set.php * @param VARIANT $variant * @param mixed $value * @return void */ function variant_set($variant, $value) {} /** * (PHP 5, PHP 7)
    * Subtracts the value of the right variant from the left variant value * @link https://php.net/manual/en/function.variant-sub.php * @param mixed $left * @param mixed $right * @return mixed */ function variant_sub($left, $right) {} /** * (PHP 5, PHP 7)
    * Performs a logical exclusion on two variants * @link https://php.net/manual/en/function.variant-xor.php * @param mixed $left * @param mixed $right * @return mixed */ function variant_xor($left, $right) {} define('CLSCTX_INPROC_SERVER', 1); define('CLSCTX_INPROC_HANDLER', 2); define('CLSCTX_LOCAL_SERVER', 4); define('CLSCTX_REMOTE_SERVER', 16); define('CLSCTX_SERVER', 21); define('CLSCTX_ALL', 23); define('VT_NULL', 1); define('VT_EMPTY', 0); define('VT_UI1', 17); define('VT_I2', 2); define('VT_I4', 3); define('VT_R4', 4); define('VT_R8', 5); define('VT_BOOL', 11); define('VT_ERROR', 10); define('VT_CY', 6); define('VT_DATE', 7); define('VT_BSTR', 8); define('VT_DECIMAL', 14); define('VT_UNKNOWN', 13); define('VT_DISPATCH', 9); define('VT_VARIANT', 12); define('VT_I1', 16); define('VT_UI2', 18); define('VT_UI4', 19); define('VT_INT', 22); define('VT_UINT', 23); define('VT_ARRAY', 8192); define('VT_BYREF', 16384); define('CP_ACP', 0); define('CP_MACCP', 2); define('CP_OEMCP', 1); define('CP_UTF7', 65000); define('CP_UTF8', 65001); define('CP_SYMBOL', 42); define('CP_THREAD_ACP', 3); define('VARCMP_LT', 0); define('VARCMP_EQ', 1); define('VARCMP_GT', 2); define('VARCMP_NULL', 3); define('NORM_IGNORECASE', 1); define('NORM_IGNORENONSPACE', 2); define('NORM_IGNORESYMBOLS', 4); define('NORM_IGNOREWIDTH', 131072); define('NORM_IGNOREKANATYPE', 65536); define('NORM_IGNOREKASHIDA', 262144); define('DISP_E_DIVBYZERO', -2147352558); define('DISP_E_OVERFLOW', -2147352566); define('MK_E_UNAVAILABLE', -2147221021); // End of com v. * Undocumented template parameter *

    * @return mixed */ function msgpack_unserialize($str, $object = null) {} /** * Alias of msgpack_serialize * @param mixed $value * @return string */ function msgpack_pack($value) {} /** * Alias of msgpack_unserialize * @param string $str * @param null|array|string|object $object

    * Undocumented template parameter *

    * @return mixed */ function msgpack_unpack($str, $object = null) {} class MessagePack { public const OPT_PHPONLY = -1001; /** * @param $opt [optional] */ public function __construct($opt) {} public function setOption($option, $value) {} public function pack($value) {} /** * @param $str * @param $object [optional] */ public function unpack($str, $object) {} public function unpacker() {} } class MessagePackUnpacker { /** * @param $opt [optional] */ public function __construct($opt) {} public function __destruct() {} public function setOption($option, $value) {} public function feed($str) {} /** * @param $str [optional] * @param $offset [optional] */ public function execute($str, &$offset) {} /** * @param $object [optional] */ public function data($object) {} public function reset() {} } * The location of the image file. This cannot be an URL. * Since 7.2.0 this can either be a path to the file (stream wrappers are also supported as usual) * or a stream resource. *

    * @param string|null $required_sections [optional]

    * Is a comma separated list of sections that need to be present in file * to produce a result array. If none of the requested * sections could be found the return value is FALSE. * * FILE * FileName, FileSize, FileDateTime, SectionsFound * * * COMPUTED * * html, Width, Height, IsColor, and more if available. Height and * Width are computed the same way getimagesize * does so their values must not be part of any header returned. * Also, html is a height/width text string to be used inside normal * HTML. * * * * ANY_TAG * Any information that has a Tag e.g. IFD0, EXIF, ... * * * IFD0 * * All tagged data of IFD0. In normal imagefiles this contains * image size and so forth. * * * * THUMBNAIL * * A file is supposed to contain a thumbnail if it has a second IFD. * All tagged information about the embedded thumbnail is stored in * this section. * * * * COMMENT * Comment headers of JPEG images. * * * EXIF * * The EXIF section is a sub section of IFD0. It contains * more detailed information about an image. Most of these entries * are digital camera related. * * *

    * @param bool $as_arrays [optional]

    * Specifies whether or not each section becomes an array. The * sections COMPUTED, * THUMBNAIL, and COMMENT * always become arrays as they may contain values whose names conflict * with other sections. *

    * @param bool $read_thumbnail [optional]

    * When set to TRUE the thumbnail itself is read. Otherwise, only the * tagged data is read. *

    * @return array|false It returns an associative array where the array indexes are * the header names and the array values are the values associated with * those headers. If no data can be returned, * exif_read_data will return FALSE. */ function exif_read_data($file, ?string $required_sections, bool $as_arrays = false, bool $read_thumbnail = false): array|false {} /** * Alias of exif_read_data * @link https://php.net/manual/en/function.read-exif-data.php * @param $filename * @param $sections [optional] * @param $arrays [optional] * @param $thumbnail [optional] * @removed 8.0 */ #[Deprecated(replacement: "exif_read_data(%parametersList%)", since: "7.2")] function read_exif_data($filename, $sections = null, $arrays = false, $thumbnail = false) {} /** * Get the header name for an index * @link https://php.net/manual/en/function.exif-tagname.php * @param int $index

    * The Tag ID for which a Tag Name will be looked up. *

    * @return string|false the header name, or FALSE if index is * not a defined EXIF tag id. */ function exif_tagname(int $index): string|false {} /** * Retrieve the embedded thumbnail of a TIFF or JPEG image * @link https://php.net/manual/en/function.exif-thumbnail.php * @param string|resource $file

    * The location of the image file. This cannot be an URL. * Since 7.2.0 this can either be a path to the file (stream wrappers are also supported as usual) * or a stream resource. *

    * @param int &$width [optional]

    * The return width of the returned thumbnail. *

    * @param int &$height [optional]

    * The returned height of the returned thumbnail. *

    * @param int &$image_type [optional]

    * The returned image type of the returned thumbnail. This is either * TIFF or JPEG. *

    * @return string|false the embedded thumbnail, or FALSE if the image contains no * thumbnail. */ function exif_thumbnail($file, &$width, &$height, &$image_type): string|false {} /** * Determine the type of an image * @link https://php.net/manual/en/function.exif-imagetype.php * @param string $filename The image being checked. * @return int|false When a correct signature is found, the appropriate constant value will be * returned otherwise the return value is FALSE. The return value is the * same value that getimagesize returns in index 2 but * exif_imagetype is much faster. *

    *

    * exif_imagetype will emit an E_NOTICE * and return FALSE if it is unable to read enough bytes from the file to * determine the image type. */ function exif_imagetype(string $filename): int|false {} define('EXIF_USE_MBSTRING', 1); // End of exif v.1.4 $Id$ Used to specify if {@link sqlsrv_errors() sqlsrv_errors} returns errors, warnings, or both.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_ERR_ERRORS', 0); /** * Warnings generated on the last sqlsrv function call are returned. * *
    Used to specify if {@link sqlsrv_errors() sqlsrv_errors} returns errors, warnings, or both.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_ERR_WARNINGS', 1); /** * Errors and warnings generated on the last sqlsrv function call are returned. * *
    This is the default value.
    * * Used to specify if {@link sqlsrv_errors() sqlsrv_errors} returns errors, warnings, or both.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_ERR_ALL', 2); /** * Turns on logging of all subsystems. * *
    Used as the value for the LogSubsystems setting with * {@link sqlsrv_configure() sqlsrv_configure}.
    * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_LOG_SYSTEM_ALL', -1); /** * Turns logging off. * *
    Used as the value for the LogSubsystems setting with {@link sqlsrv_configure() sqlsrv_configure}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_LOG_SYSTEM_OFF', 0); /** * Turns on logging of initialization activity. * *
    Used as the value for the LogSubsystems setting with {@link sqlsrv_configure() sqlsrv_configure}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_LOG_SYSTEM_INIT', 1); /** * Turns on logging of connection activity. * *
    Used as the value for the LogSubsystems setting with {@link sqlsrv_configure() sqlsrv_configure}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_LOG_SYSTEM_CONN', 2); /** * Turns on logging of statement activity. * *
    Used as the value for the LogSubsystems setting with {@link sqlsrv_configure() sqlsrv_configure}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_LOG_SYSTEM_STMT', 4); /** * Turns on logging of error functions activity (such as handle_error and handle_warning). * *
    Used as the value for the * LogSubsystems setting with {@link sqlsrv_configure() sqlsrv_configure}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_LOG_SYSTEM_UTIL', 8); /** * Specifies that errors, warnings, and notices will be logged. * *
    Used as the value for the LogSeverity setting with {@link sqlsrv_configure() sqlsrv_configure}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_LOG_SEVERITY_ALL', -1); /** * Specifies that errors will be logged. * *
    Used as the value for the LogSeverity setting with {@link sqlsrv_configure() sqlsrv_configure}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_LOG_SEVERITY_ERROR', 1); /** * Specifies that notices will be logged. * *
    Used as the value for the LogSeverity setting with {@link sqlsrv_configure() sqlsrv_configure}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_LOG_SEVERITY_NOTICE', 4); /** * Specifies that warnings will be logged. * *
    Used as the value for the LogSeverity setting with {@link sqlsrv_configure() sqlsrv_configure}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_LOG_SEVERITY_WARNING', 2); /** * Returns numerically indexed array. * *
    {@link sqlsrv_fetch_array() sqlsrv_fetch_array} returns the next row of data as a numerically indexed array.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_FETCH_NUMERIC', 1); /** * Returns an associative array. * *
    {@link sqlsrv_fetch_array() sqlsrv_fetch_array} returns the next row of data as an associative array.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_FETCH_ASSOC', 2); /** * Returns both a numeric and associative array. * *
    {@link sqlsrv_fetch_array() sqlsrv_fetch_array} returns the next row of data as an array with both numeric and * associative keys.
    * * This is the default value.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_FETCH_BOTH', 3); /** * Null * *
    Used with {@link sqlsrv_prepare() sqlsrv_prepare}, * {@link sqlsrv_query() sqlsrv_query} * and {@link sqlsrv_get_field() sqlsrv_get_field} to request a field be return as a specific PHP type.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_PHPTYPE_NULL', 1); /** * Integer * *
    Used with {@link sqlsrv_prepare() sqlsrv_prepare}, * {@link sqlsrv_query() sqlsrv_query} * and {@link sqlsrv_get_field() sqlsrv_get_field} to request a field be return as a specific PHP type.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_PHPTYPE_INT', 2); /** * Float * *
    Used with {@link sqlsrv_prepare() sqlsrv_prepare}, * {@link sqlsrv_query() sqlsrv_query} * and {@link sqlsrv_get_field() sqlsrv_get_field} to request a field be return as a specific PHP type.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_PHPTYPE_FLOAT', 3); /** * Datetime * *
    Used with {@link sqlsrv_prepare() sqlsrv_prepare}, * {@link sqlsrv_query() sqlsrv_query} * and {@link sqlsrv_get_field() sqlsrv_get_field} to request a field be return as a specific PHP type.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_PHPTYPE_DATETIME', 4); /** * Binary Encoding * *
    Data is returned as a raw byte stream from the server without performing encoding or translation.
    * * Used with {@link sqlsrv_prepare() sqlsrv_prepare}, * {@link sqlsrv_query() sqlsrv_query} * and {@link sqlsrv_get_field() sqlsrv_get_field} to request a field be return as a specific PHP type.
    * * This is used with {@link SQLSRV_PHPTYPE_STREAM() SQLSRV_PHPTYPE_STREAM} and * {@link SQLSRV_PHPTYPE_STRING() SQLSRV_PHPTYPE_STRING} to specify the encoding of those PHP types types.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_ENC_BINARY', 'binary'); /** * Character Encoding * *
    Data is returned in 8-bit characters as specified in the code page of the Windows locale that is set on the * system. Any multi-byte characters or characters that do not map into this code page are substituted with a single * byte question mark (?) character.
    * * This is the default encoding.
    * * Used with {@link sqlsrv_prepare() sqlsrv_prepare}, * {@link sqlsrv_query() sqlsrv_query} * and {@link sqlsrv_get_field() sqlsrv_get_field} to request a field be return as a specific PHP type.
    * * This is used with {@link SQLSRV_PHPTYPE_STREAM() SQLSRV_PHPTYPE_STREAM} and * {@link SQLSRV_PHPTYPE_STRING() SQLSRV_PHPTYPE_STRING} to specify the encoding of those PHP types types.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_ENC_CHAR', 'char'); /** * The column is not nullable. * *
    You can compare the value of the Nullable key that is returned by * {@link sqlsrv_field_metadata() sqlsrv_field_metadata} to determine the column's nullable status.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_NULLABLE_NO', 0); /** * The column is nullable. * *
    You can compare the value of the Nullable key that is returned by * {@link sqlsrv_field_metadata() sqlsrv_field_metadata} to determine the column's nullable status.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_NULLABLE_YES', 1); /** * It is not known if the column is nullable. * *
    You can compare the value of the Nullable key that is returned by * {@link sqlsrv_field_metadata() sqlsrv_field_metadata} to determine the column's nullable status.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_NULLABLE_UNKNOWN', 2); /** * bigint. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_BIGINT', -5); /** * bit. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_BIT', -7); /** * char. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_CHAR', 1); /** * datetime. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_DATETIME', 25177693); /** * decimal. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_DECIMAL', 3); /** * float. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_FLOAT', 6); /** * image. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_IMAGE', -4); /** * int. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_INT', 4); /** * money. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_MONEY', 33564163); /** * nchar. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_NCHAR', -8); /** * ntext. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_NTEXT', -10); /** * numeric. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_NUMERIC', 2); /** * nvarchar. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_NVARCHAR', -9); /** * text. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_TEXT', -1); /** * real. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_REAL', 7); /** * smalldatetime. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_SMALLDATETIME', 8285); /** * smallint. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_SMALLINT', 5); /** * smallmoney. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_SMALLMONEY', 33559555); /** * timestamp. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_TIMESTAMP', 4606); /** * tinyint. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_TINYINT', -6); /** * udt. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_UDT', -151); /** * uniqueidentifier. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_UNIQUEIDENTIFIER', -11); /** * varbinary. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_VARBINARY', -3); /** * varchar. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_VARCHAR', 12); /** * xml. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_XML', -152); /** * date. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_DATE', 5211); /** * time. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_TIME', 58728806); /** * datetimeoffset. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_DATETIMEOFFSET', 58738021); /** * datetime2. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the SQL Server data type of a parameter.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SQLTYPE_DATETIME2', 58734173); /** * Indicates an input parameter. * *
    Used for specifying parameter direction when you call {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_PARAM_IN', 1); /** * Indicates a bidirectional parameter. * *
    Used for specifying parameter direction when you call {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_PARAM_INOUT', 2); /** * Indicates an output parameter. * *
    Used for specifying parameter direction when you call {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_PARAM_OUT', 4); /** * Read Uncommitted. * *
    Specifies that statements can read rows that have been modified by other transactions but not yet committed.
    * * Transactions running at the READ UNCOMMITTED level do not issue shared locks to prevent other transactions from * modifying data read by the current transaction. READ UNCOMMITTED transactions are also not blocked by exclusive locks * that would prevent the current transaction from reading rows that have been modified but not committed by other * transactions. When this option is set, it is possible to read uncommitted modifications, which are called dirty reads. * Values in the data can be changed and rows can appear or disappear in the data set before the end of the transaction. * This option has the same effect as setting NOLOCK on all tables in all SELECT statements in a transaction. This is * the least restrictive of the isolation levels.
    * * Used with the TransactionIsolation key when calling {@link sqlsrv_connect() sqlsrv_connect}. For information on using * these constants, see {@link http://msdn.microsoft.com/en-us/library/ms173763(v=sql.110).aspx SET TRANSACTION ISOLATION LEVEL (Transact-SQL)}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_TXN_READ_UNCOMMITTED', 1); /** * Read Committed. * *
    Specifies that statements cannot read data that has been modified but not committed by other transactions. * This prevents dirty reads. Data can be changed by other transactions between individual statements within the current * transaction, resulting in nonrepeatable reads or phantom data. This option is the SQL Server default.
    * * The behavior of READ COMMITTED depends on the setting of the READ_COMMITTED_SNAPSHOT database option.
    * * Used with the TransactionIsolation key when calling {@link sqlsrv_connect() sqlsrv_connect}. For information on using * these constants, see {@link http://msdn.microsoft.com/en-us/library/ms173763(v=sql.110).aspx SET TRANSACTION ISOLATION LEVEL (Transact-SQL)}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_TXN_READ_COMMITTED', 2); /** * Repeatable Read. * *
    Specifies that statements cannot read data that has been modified but not yet committed by other transactions and * that no other transactions can modify data that has been read by the current transaction until the current transaction * completes.
    * * Shared locks are placed on all data read by each statement in the transaction and are held until the transaction * completes. This prevents other transactions from modifying any rows that have been read by the current transaction. * Other transactions can insert new rows that match the search conditions of statements issued by the current transaction. * If the current transaction then retries the statement it will retrieve the new rows, which results in phantom reads. * Because shared locks are held to the end of a transaction instead of being released at the end of each statement, * concurrency is lower than the default READ COMMITTED isolation level.
    * * Use this option only when necessary.
    * * Used with the TransactionIsolation key when calling {@link sqlsrv_connect() sqlsrv_connect}. For information on using * these constants, see {@link http://msdn.microsoft.com/en-us/library/ms173763(v=sql.110).aspx SET TRANSACTION ISOLATION LEVEL (Transact-SQL)}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_TXN_REPEATABLE_READ', 4); /** * Serializable. * *
    Specifies the following: *

    • Statements cannot read data that has been modified but not yet committed by other transactions.
    • *
    • No other transactions can modify data that has been read by the current transaction until the current * transaction completes.
    • *
    • Other transactions cannot insert new rows with key values that would fall in the range of keys read by any * statements in the current transaction until the current transaction completes.
    * * Range locks are placed in the range of key values that match the search conditions of each statement executed in a * transaction. This blocks other transactions from updating or inserting any rows that would qualify for any of the * statements executed by the current transaction. This means that if any of the statements in a transaction are * executed a second time, they will read the same set of rows. The range locks are held until the transaction completes. * This is the most restrictive of the isolation levels because it locks entire ranges of keys and holds the locks until * the transaction completes. Because concurrency is lower, use this option only when necessary. This option has the same * effect as setting HOLDLOCK on all tables in all SELECT statements in a transaction.
    * * Used with the TransactionIsolation key when calling {@link sqlsrv_connect() sqlsrv_connect}. For information on using * these constants, see {@link http://msdn.microsoft.com/en-us/library/ms173763(v=sql.110).aspx SET TRANSACTION ISOLATION LEVEL (Transact-SQL)}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_TXN_SERIALIZABLE', 8); /** * Snapshot. * *
    Specifies that data read by any statement in a transaction will be the transactionally consistent version of * the data that existed at the start of the transaction. The transaction can only recognize data modifications that * were committed before the start of the transaction. Data modifications made by other transactions after the start of * the current transaction are not visible to statements executing in the current transaction. The effect is as if the * statements in a transaction get a snapshot of the committed data as it existed at the start of the transaction.
    * * Except when a database is being recovered, SNAPSHOT transactions do not request locks when reading data. SNAPSHOT * transactions reading data do not block other transactions from writing data. Transactions writing data do not block * SNAPSHOT transactions from reading data.
    * * During the roll-back phase of a database recovery, SNAPSHOT transactions will request a lock if an attempt is made to * read data that is locked by another transaction that is being rolled back. The SNAPSHOT transaction is blocked until * that transaction has been rolled back. The lock is released immediately after it has been granted.
    * * The ALLOW_SNAPSHOT_ISOLATION database option must be set to ON before you can start a transaction that uses the * SNAPSHOT isolation level. If a transaction using the SNAPSHOT isolation level accesses data in multiple databases, * ALLOW_SNAPSHOT_ISOLATION must be set to ON in each database.
    * * A transaction cannot be set to SNAPSHOT isolation level that started with another isolation level; doing so will * cause the transaction to abort. If a transaction starts in the SNAPSHOT isolation level, you can change it to another * isolation level and then back to SNAPSHOT. A transaction starts the first time it accesses data.
    * * A transaction running under SNAPSHOT isolation level can view changes made by that transaction. For example, if the * transaction performs an UPDATE on a table and then issues a SELECT statement against the same table, the modified * data will be included in the result set.
    * * Used with the TransactionIsolation key when calling {@link sqlsrv_connect() sqlsrv_connect}. For information on using * these constants, see {@link http://msdn.microsoft.com/en-us/library/ms173763(v=sql.110).aspx SET TRANSACTION ISOLATION LEVEL (Transact-SQL)}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_TXN_SNAPSHOT', 32); /** * Specifies the next row. * *
    This is the default value, if you do not specify the row parameter for a scrollable result set.
    * * Used with {@link sqlsrv_fetch() sqlsrv_fetch}, * {@link sqlsrv_fetch_array() sqlsrv_fetch_array}, * or {@link sqlsrv_fetch_object() sqlsrv_fetch_object} to specify a row.
    * * Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify which row to select in the result set. For * information on using these constants, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SCROLL_NEXT', 1); /** * Specifies the row before the current row. * *
    Used with {@link sqlsrv_fetch() sqlsrv_fetch}, * {@link sqlsrv_fetch_array() sqlsrv_fetch_array}, * or {@link sqlsrv_fetch_object() sqlsrv_fetch_object} to specify a row.
    * * Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify which row to select in the result set. For * information on using these constants, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SCROLL_PRIOR', 4); /** * Specifies the first row in the result set. * *
    Used with {@link sqlsrv_fetch() sqlsrv_fetch}, * {@link sqlsrv_fetch_array() sqlsrv_fetch_array}, * or {@link sqlsrv_fetch_object() sqlsrv_fetch_object} to specify a row.
    * * Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify which row to select in the result set. For * information on using these constants, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SCROLL_FIRST', 2); /** * Specifies the last row in the result set. * *
    Used with {@link sqlsrv_fetch() sqlsrv_fetch}, * {@link sqlsrv_fetch_array() sqlsrv_fetch_array}, * or {@link sqlsrv_fetch_object() sqlsrv_fetch_object} to specify a row.
    * * Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify which row to select in the result set. For * information on using these constants, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SCROLL_LAST', 3); /** * Specifies the row specified with the offset parameter. * *
    Used with {@link sqlsrv_fetch() sqlsrv_fetch}, * {@link sqlsrv_fetch_array() sqlsrv_fetch_array}, * or {@link sqlsrv_fetch_object() sqlsrv_fetch_object} to specify a row.
    * * Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify which row to select in the result set. For * information on using these constants, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SCROLL_ABSOLUTE', 5); /** * Specifies the row specified with the offset parameter from the current row. * *
    Used with {@link sqlsrv_fetch() sqlsrv_fetch}, * {@link sqlsrv_fetch_array() sqlsrv_fetch_array}, * or {@link sqlsrv_fetch_object() sqlsrv_fetch_object} to specify a row.
    * * Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify which row to select in the result set. For * information on using these constants, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_SCROLL_RELATIVE', 6); /** * Lets you move one row at a time starting at the first row of the result set until you reach the end of * the result set. * *
    This is the default cursor type.
    * * {@link sqlsrv_num_rows() sqlsrv_num_rows} returns an error for result sets created with this cursor type.
    * * Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the kind of cursor that you can use in a result * set. For information on using these constants, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_CURSOR_FORWARD', 'forward'); /** * Lets you access rows in any order but will not reflect changes in the database. * *
    Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the kind of cursor that you can use in a result * set. For information on using these constants, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_CURSOR_STATIC', 'static'); /** * Lets you access rows in any order and will reflect changes in the database. * *
    {@link sqlsrv_num_rows() sqlsrv_num_rows} returns an error for result sets created with this cursor type.
    * * Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the kind of cursor that you can use in a result * set. For information on using these constants, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_CURSOR_DYNAMIC', 'dynamic'); /** * Lets you access rows in any order. * *
    However, a keyset cursor does not update the row count if a row is deleted from the table (a deleted row is * returned with no values).
    * * Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the kind of cursor that you can use in a result * set. For information on using these constants, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_CURSOR_KEYSET', 'keyset'); /** * Lets you access rows in any order. * *
    Creates a client-side cursor query.
    * * Used when calling {@link sqlsrv_query() sqlsrv_query} or *{@link sqlsrv_prepare() sqlsrv_prepare} to specify the kind of cursor that you can use in a result * set. For information on using these constants, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server */ define('SQLSRV_CURSOR_CLIENT_BUFFERED', 'buffered'); /** * Creates and opens a connection. * *
    Creates a connection resource and opens a connection. By default, the connection is attempted using Windows * Authentication.
    * * If values for the UID and PWD keys are not specified in the optional $connectionInfo parameter, the connection will * be attempted using Windows Authentication. For more information about connecting to the server, * see {@link http://msdn.microsoft.com/en-us/library/cc296205.aspx How to: Connect Using Windows Authentication} * and {@link http://msdn.microsoft.com/en-us/library/cc296182.aspx How to: Connect Using SQL Server Authentication.}
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-connect * @param string $server_name A string specifying the name of the server to which a connection is being established. * An instance name (for example, "myServer\instanceName") or port number (for example, "myServer, 1521") can be * included as part of this string. For a complete description of the options available for this parameter, see the * Server keyword in the ODBC Driver Connection String Keywords section * of {@link http://go.microsoft.com/fwlink/?LinkId=105504 Using Connection String Keywords with SQL Native Client}.
    * * Beginning in version 3.0 of the Microsoft Drivers for PHP for SQL Server, you can also specify a LocalDB instance * with "(localdb)\instancename". For more information, * see {@link http://msdn.microsoft.com/en-us/library/hh487161.aspx PHP Driver for SQL Server Support for LocalDB} .
    * * Also beginning in version 3.0 of the Microsoft Drivers for PHP for SQL Server, you can specify a virtual network name, * to connect to an AlwaysOn availability group. For more information about Microsoft Drivers for PHP for SQL Server * support for AlwaysOn Availability Groups, * see {@link http://msdn.microsoft.com/en-us/library/hh487159.aspx PHP Driver for SQL Server Support for High Availability, Disaster Recovery}. * @param array $connection_info [optional] An associative array that contains connection attributes (for example, array("Database" => "AdventureWorks")). * See {@link http://msdn.microsoft.com/en-us/library/ff628167.aspx Connection Options} for a list of the supported keys for the array. * @return resource|false A PHP connection resource. If a connection cannot be successfully created and opened, false is returned. */ function sqlsrv_connect($server_name, $connection_info = []) {} /** * Closes a connection. Frees all resources associated with the connection. * *
    Null is a valid parameter for this function. This allows the function to be called multiple times in a script. For * example, if you close a connection in an error condition and close it again at the end of the script, the second call * to sqlsrv_close will return true because the first call to sqlsrv_close (in the error condition) sets the connection * resource to null.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-close * @param resource|null $conn The connection to be closed. * @return bool The Boolean value true unless the function is called with an invalid parameter. If the function is called with an invalid parameter, false is returned. */ function sqlsrv_close($conn) {} /** * Commits a transaction that was begun with sqlsrv_begin_transaction. * *
    Commits the current transaction on the specified connection and returns the connection to the auto-commit mode. * The current transaction includes all statements on the specified connection that were executed after the call to * sqlsrv_begin_transaction and before any calls to sqlsrv_rollback or sqlsrv_commit.
    * * The Microsoft Drivers for PHP for SQL Server is in auto-commit mode by default. This means that all queries are * automatically committed upon success unless they have been designated as part of an explicit transaction by using * sqlsrv_begin_transaction.
    * * If sqlsrv_commit is called on a connection that is not in an active transaction and that was initiated with * sqlsrv_begin_transaction, the call returns false and a Not in Transaction error is added to the error collection.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-commit * @param resource $conn The connection on which the transaction is active. * @return bool A Boolean value: true if the transaction was successfully committed. Otherwise, false. */ function sqlsrv_commit($conn) {} /** * Begins a database transaction. * *
    Begins a transaction on a specified connection. The current transaction includes all statements on the specified * connection that were executed after the call to sqlsrv_begin_transaction and before any calls to sqlsrv_rollback or * sqlsrv_commit.
    * * The Microsoft Drivers for PHP for SQL Server is in auto-commit mode by default. This means that all queries are * automatically committed upon success unless they have been designated as part of an explicit transaction by using * sqlsrv_begin_transaction.
    * * If sqlsrv_begin_transaction is called after a transaction has already been initiated on the connection but not * completed by calling either sqlsrv_commit or sqlsrv_rollback, the call returns false and an Already in Transaction * error is added to the error collection.
    * * Do not use embedded Transact-SQL to perform transactions. For example, do not execute a statement with * "BEGIN TRANSACTION" as the Transact-SQL query to begin a transaction. The expected transactional behavior cannot be * guaranteed when using embedded Transact-SQL to perform transactions.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296206.aspx How to Perform Transactions} * and {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-begin-transaction * @param resource $conn The connection with which the transaction is associated. * @return bool A Boolean value: true if the transaction was successfully begun. Otherwise, false. */ function sqlsrv_begin_transaction($conn) {} /** * Rolls back a transaction that was begun with {@see sqlsrv_begin_transaction}. * *
    Rolls back the current transaction on the specified connection and returns the connection to the auto-commit mode. * The current transaction includes all statements on the specified connection that were executed after the call to * sqlsrv_begin_transaction and before any calls to {@link sqlsrv_rollback() sqlsrv_rollback} or * {@link sqlsrv_commit() sqlsrv_commit}.
    * * The Microsoft Drivers for PHP for SQL Server is in auto-commit mode by default. This means that all queries are * automatically committed upon success unless they have been designated as part of an explicit transaction by using * {@link sqlsrv_begin_transaction() sqlsrv_begin_transaction}.
    * * If sqlsrv_rollback is called on a connection that is not in an active transaction that was initiated with * {@link sqlsrv_begin_transaction() sqlsrv_begin_transaction}, the call returns false and a Not in Transaction error * is added to the error collection.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296206.aspx How to Perform Transactions} * and {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-rollback * @param resource $conn The connection on which the transaction is active. * @return bool A Boolean value: true if the transaction was successfully rolled back. Otherwise, false. */ function sqlsrv_rollback($conn) {} /** * Returns error and/or warning information about the last operation. * *
    Returns extended error and/or warning information about the last sqlsrv operation performed.
    * * The sqlsrv_errors function can return error and/or warning information by calling it with one of the parameter values * specified in the Parameters section below.
    * * By default, warnings generated on a call to any sqlsrv function are treated as errors; if a warning occurs on a call * to a sqlsrv function, the function returns false. However, warnings that correspond to SQLSTATE values 01000, 01001, * 01003, and 01S02 are never treated as errors.
    * * The following line of code turns off the behavior mentioned above; a warning generated by a call to a sqlsrv function * does not cause the function to return false:
    * * {@link sqlsrv_configure() sqlsrv_configure}("WarningsReturnAsErrors", 0); * * The following line of code reinstates the default behavior; warnings (with exceptions, noted above) are treated as * errors:
    * * {@link sqlsrv_configure() sqlsrv_configure}("WarningsReturnAsErrors", 1); * * Regardless of the setting, warnings can only be retrieved by calling sqlsrv_errors with either the SQLSRV_ERR_ALL or * SQLSRV_ERR_WARNINGS parameter value (see Parameters section below for details).
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-errors * @param int $errorsAndOrWarnings [optional] A predefined constant. This parameter can take one of the values in the * following list: SQLSRV_ERR_ALL, SQLSRV_ERR_ERRORS, SQLSRV_ERR_WARNINGS. If no parameter value is supplied, both * errors and warnings generated by the last sqlsrv function call are returned. * @return array|null An array of arrays, or null. Each array in the returned array contains three key-value pairs. The * following table lists each key and its description:
    * SQLSTATE: *
      *
    • For errors that originate from the ODBC driver, the SQLSTATE returned by ODBC.For information about SQLSTATE * values for ODBC, see {@link http://go.microsoft.com/fwlink/?linkid=119618 ODBC Error Codes}.
    • *
    • For errors that originate from the Microsoft Drivers for PHP for SQL Server, a SQLSTATE of IMSSP.
    • *
    • For warnings that originate from the Microsoft Drivers for PHP for SQL Server, a SQLSTATE of 01SSP.
    • *
    * code: *
      *
    • For errors that originate from SQL Server, the native SQL Server error code.
    • *
    • For errors that originate from the ODBC driver, the error code returned by ODBC.
    • *
    • For errors that originate from the Microsoft Drivers for PHP for SQL Server, the Microsoft Drivers for PHP for SQL Server error code. For more information, see {@link http://msdn.microsoft.com/en-us/library/cc626302.aspx Handling Errors and Warnings}.
    • *
    * message: A description of the error.
    * * The array values can also be accessed with numeric keys 0, 1, and 2.

    * * If no errors or warnings occur, null is returned.
    */ function sqlsrv_errors($errorsAndOrWarnings = SQLSRV_ERR_ALL) {} /** * Changes the driver error handling and logging configurations. * *
    Changes the settings for error handling and logging options.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-configure * @param string $setting The name of the setting to be configured. See table below for list of settings. * @param mixed $value The value to be applied to the setting specified in the $setting parameter. The possible values for this parameter depend on which setting is specified. The following table lists the possible combinations.
    * ClientBufferMaxKBSize (Default: 10240)
    * For more information about client-side queries, see {@link http://msdn.microsoft.com/en-us/library/hh487160.aspx Cursor Types (SQLSRV Driver)}. *
      *
    • A non negative number up to the PHP memory limit.
    • *
    • Zero (0) means no limit to the buffer size.
    • *
    * LogSeverity (Default: SQLSRV_LOG_SEVERITY_ERROR )
    * For more information about logging activity, see {@link http://msdn.microsoft.com/en-us/library/cc296188.aspx Logging Activity}. *
    • SQLSRV_LOG_SEVERITY_ALL (-1)
    • *
    • SQLSRV_LOG_SEVERITY_ERROR (1)
    • *
    • SQLSRV_LOG_SEVERITY_NOTICE (4)
    • *
    • SQLSRV_LOG_SEVERITY_WARNING (2)
    * WarningsReturnAsErrors (Default: true )
    * For more information about configuring error and warning handling, see {@link http://msdn.microsoft.com/en-us/library/cc626306.aspx How to: Configure Error and Warning Handling Using the SQLSRV Driver}. *
    • true (1)
    • *
    • false (0)
    * @return bool If sqlsrv_configure is called with an unsupported setting or value, the function returns false. Otherwise, the function returns true. */ function sqlsrv_configure($setting, $value) {} /** * Returns the current value of the specified configuration setting. * *
    If false is returned by sqlsrv_get_config, you must call {@link sqlsrv_errors() sqlsrv_errors} to determine if an error occurred or * if false is the value of the setting specified by the $setting parameter.
    * * For a list of configurable settings, see {@link sqlsrv_configure() sqlsrv_configure}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-get-config * @param string $setting The configuration setting for which the value is returned. * @return mixed|false The value of the setting specified by the $setting parameter. If an invalid setting is specified, false is returned and an error is added to the error collection. */ function sqlsrv_get_config($setting) {} /** * Prepares a Transact-SQL query without executing it. Implicitly binds parameters. * *
    Creates a statement resource associated with the specified connection. This function is useful for execution of * multiple queries.
    * * Variables passed as query parameters should be passed by reference instead of by value. For example, pass * &$myVariable instead of $myVariable. A PHP warning will be raised when a query with by-value parameters is * executed.
    * * When you prepare a statement that uses variables as parameters, the variables are bound to the statement. That means * that if you update the values of the variables, the next time you execute the statement it will run with updated * parameter values.
    * * The combination of sqlsrv_prepare and {@link sqlsrv_execute() sqlsrv_execute} separates statement preparation and * statement execution in to two function calls and can be used to execute parameterized queries. This function is ideal * to execute a statement multiple times with different parameter values for each execution.
    * * For alternative strategies for writing and reading large amounts of information, see * {@link http://go.microsoft.com/fwlink/?LinkId=104225 Batches of SQL Statements} and * {@link http://go.microsoft.com/fwlink/?LinkId=104226 BULK INSERT}.
    * * For more information, see * {@link http://msdn.microsoft.com/en-us/library/cc626303.aspx How to: Retrieve Output Parameters Using the SQLSRV Driver.}
    * * For additional Information see: *
    • {@link http://msdn.microsoft.com/en-us/library/cc644934.aspx Using Directional Parameters}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296202.aspx Updating Data (Microsoft Drivers for PHP for SQL Server)}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296201.aspx How to: Perform Parameterized Queries}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296191.aspx How to: Send Data as a Stream}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-prepare * @param resource $conn The connection resource associated with the created statement. * @param string $tsql The Transact-SQL expression that corresponds to the created statement. * @param array $params [optional]: An array of values that correspond to parameters in a parameterized query. Each * element of the array can be one of the following: a literal value, a reference to a PHP variable, or an array with * the following structure: * array(&$value [, $direction [, $phpType [, $sqlType]]]) * The following table describes these array elements: *
    • &$value - A literal value or a reference to a PHP variable.
    • *
    • $direction[optional] - One of the following SQLSRV_PARAM_* constants used to indicate the parameter direction: * SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. The default value is SQLSRV_PARAM_IN. For more information * about PHP constants, see * {@link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server Constants (Microsoft Drivers for PHP for SQL Server)}.
    • *
    • $phpType[optional] - A SQLSRV_PHPTYPE_* constant that specifies PHP data type of the returned value.
    • *
    • $sqlType[optional] - A SQLSRV_SQLTYPE_* constant that specifies the SQL Server data type of the input value.
    * @param array $options [optional]: An associative array that sets query properties. The table below lists the * supported keys and corresponding values:
    * * QueryTimeout (int) - Sets the query timeout in seconds. By default, the driver will wait indefinitely for results. * Any positive integer value.
    * * SendStreamParamsAtExec (bool) - Configures the driver to send all stream data at execution (true), or to send stream * data in chunks (false). By default, the value is set to true. For more information, see * {@link sqlsrv_send_stream_data() sqlsrv_send_stream_data}.
    * * Scrollable - For more information about these values, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}. *
    • SQLSRV_CURSOR_FORWARD
    • *
    • SQLSRV_CURSOR_STATIC
    • *
    • SQLSRV_CURSOR_DYNAMIC
    • *
    • SQLSRV_CURSOR_KEYSET
    • *
    • SQLSRV_CURSOR_CLIENT_BUFFERED
    * @return resource|false A statement resource. If the statement resource cannot be created, false is returned. */ function sqlsrv_prepare($conn, $tsql, $params = [], $options = []) {} /** * Executes a statement prepared with {@see sqlsrv_prepare} * *
    Executes a previously prepared statement. See {@link sqlsrv_prepare() sqlsrv_prepare} for information on preparing a statement * for execution.
    * * This function is ideal for executing a prepared statement multiple times with different parameter values.
    * * For additional Information see: *
    • {@link sqlsrv_query() sqlsrv_query}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296201.aspx How to: Perform Parameterized Queries}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-execute * @param resource $stmt A resource specifying the statement to be executed. For more information about how to create a * statement resource, see {@link sqlsrv_prepare() sqlsrv_prepare}. * @return bool A Boolean value: true if the statement was successfully executed. Otherwise, false. */ function sqlsrv_execute($stmt) {} /** * Prepares and executes a Transact-SQL query. * *
    Prepares and executes a statement.
    * * The sqlsrv_query function is well-suited for one-time queries and should be the default choice to execute queries * unless special circumstances apply. This function provides a streamlined method to execute a query with a minimum * amount of code. The sqlsrv_query function does both statement preparation and statement execution, and can be used to * execute parameterized queries.
    * * For more information, see * {@link http://msdn.microsoft.com/en-us/library/cc626303.aspx How to: Retrieve Output Parameters Using the SQLSRV Driver.}
    * * For additional Information see: *
    • {@link http://msdn.microsoft.com/en-us/library/cc644934.aspx Using Directional Parameters}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296202.aspx Updating Data (Microsoft Drivers for PHP for SQL Server)}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296201.aspx How to: Perform Parameterized Queries}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296191.aspx How to: Send Data as a Stream}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-query * @param resource $conn The connection resource associated with the prepared statement. * @param string $tsql The Transact-SQL expression that corresponds to the prepared statement. * @param array $params [optional]: An array of values that correspond to parameters in a parameterized query. Each * element of the array can be one of the following: a literal value, a reference to a PHP variable, or an array with * the following structure: * array($value [, $direction [, $phpType [, $sqlType]]]) * The following table describes these array elements: *
    • &$value - A literal value, a PHP variable, or a PHP by-reference variable.
    • *
    • $direction[optional] - One of the following SQLSRV_PARAM_* constants used to indicate the parameter direction: * SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. The default value is SQLSRV_PARAM_IN. For more information * about PHP constants, see * {@link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server Constants (Microsoft Drivers for PHP for SQL Server)}.
    • *
    • $phpType[optional] - A SQLSRV_PHPTYPE_* constant that specifies PHP data type of the returned value.
    • *
    • $sqlType[optional] - A SQLSRV_SQLTYPE_* constant that specifies the SQL Server data type of the input value.
    * @param array $options [optional]: An associative array that sets query properties. The table below lists the * supported keys and corresponding values:
    * * QueryTimeout (int) - Sets the query timeout in seconds. By default, the driver will wait indefinitely for results. * Any positive integer value.
    * * SendStreamParamsAtExec (bool) - Configures the driver to send all stream data at execution (true), or to send stream * data in chunks (false). By default, the value is set to true. For more information, see * {@link sqlsrv_send_stream_data() sqlsrv_send_stream_data}.
    * * Scrollable - For more information about these values, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}. *
    • SQLSRV_CURSOR_FORWARD
    • *
    • SQLSRV_CURSOR_STATIC
    • *
    • SQLSRV_CURSOR_DYNAMIC
    • *
    • SQLSRV_CURSOR_KEYSET
    • *
    • SQLSRV_CURSOR_CLIENT_BUFFERED
    * @return resource|false A statement resource. If the statement cannot be created and/or executed, false is returned. */ function sqlsrv_query($conn, $tsql, $params = [], $options = []) {} /** * Makes the next row in a result set available for reading. * *
    Makes the next row of a result set available for reading. Use {@link sqlsrv_get_field() sqlsrv_get_field} to read fields of * the row.
    * * A statement must be executed before results can be retrieved. For information on executing a statement, see {@link sqlsrv_query() sqlsrv_query} * and {@link sqlsrv_execute() sqlsrv_execute}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-fetch * @param resource|null $stmt A statement resource corresponding to an executed statement. * @param int|null $row [optional]: One of the following values, specifying the row to access in a result set that uses a * scrollable cursor: SQLSRV_SCROLL_NEXT, SQLSRV_SCROLL_PRIOR, SQLSRV_SCROLL_FIRST, SQLSRV_SCROLL_LAST, * SQLSRV_SCROLL_ABSOLUTE, SQLSRV_SCROLL_RELATIVE.
    * * For more information on these values, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}. * @param int|null $offset [optional] Used with SQLSRV_SCROLL_ABSOLUTE and SQLSRV_SCROLL_RELATIVE to specify the row to * retrieve. The first record in the result set is 0. * @return bool|null If the next row of the result set was successfully retrieved, true is returned. If there are * no more results in the result set, null is returned. If an error occurred, false is returned. */ function sqlsrv_fetch($stmt, $row = null, $offset = null) {} /** * Retrieves a field in the current row by index. The PHP return type can be specified. * *
    Retrieves data from the specified field of the current row. Field data must be accessed in order. For example, * data from the first field cannot be accessed after data from the second field has been accessed.
    * * The combination of {@link sqlsrv_fetch() sqlsrv_fetch} and * {@link sqlsrv_get_field() sqlsrv_get_field} provides forward-only access to data.
    * * The combination of {@link sqlsrv_fetch() sqlsrv_fetch} and * {@link sqlsrv_get_field() sqlsrv_get_field} loads only one * field of a result set row into script memory and allows PHP return type specification. (For information about how to * specify the PHP return type, see {@link http://msdn.microsoft.com/en-us/library/cc296208.aspx How to: Specify PHP Data Types}.) * This combination of functions also allows data to be retrieved as a stream. (For information about retrieving data * as a stream, see {@link http://msdn.microsoft.com/en-us/library/cc296155.aspx Retrieving Data as a Stream Using the SQLSRV Driver}.)
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-get-field * @param resource $stmt A statement resource corresponding to an executed statement. * @param int $field_index The index of the field to be retrieved. Indexes begin at zero. * @param int $get_as_type [optional] A SQLSRV constant (SQLSRV_PHPTYPE_*) that determines the PHP data type for the returned * data. For information about supported data types, see * {@link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server Constants (Microsoft Drivers for PHP for SQL Server)}. * If no return type is specified, a default PHP type will be returned. For information about default PHP types, see * {@link http://msdn.microsoft.com/en-us/library/cc296193.aspx Default PHP Data Types}. For information about * specifying PHP data types, see {@link http://msdn.microsoft.com/en-us/library/cc296208.aspx How to: Specify PHP Data Types}. * @return mixed The field data. You can specify the PHP data type of the returned data by using the $getAsType * parameter. If no return data type is specified, the default PHP data type will be returned. For information about * default PHP types, see {@link http://msdn.microsoft.com/en-us/library/cc296193.aspx Default PHP Data Types}. For * information about specifying PHP data types, * see {@link http://msdn.microsoft.com/en-us/library/cc296208.aspx How to: Specify PHP Data Types}. */ function sqlsrv_get_field($stmt, $field_index, $get_as_type = null) {} /** * Retrieves the next row of data as a numerically indexed array, an associative array, or both. * *
    If a column with no name is returned, the associative key for the array element will be an empty string (""). For * example, consider this Transact-SQL statement that inserts a value into a database table and retrieves the * server-generated primary key: * INSERT INTO Production.ProductPhoto (LargePhoto) VALUES (?); * SELECT SCOPE_IDENTITY() * If the result set returned by the SELECT SCOPE_IDENTITY() portion of this statement is retrieved as an associative * array, the key for the returned value will be an empty string ("") because the returned column has no name. To avoid * this, you can retrieve the result as a numeric array, or you can specify a name for the returned column in the * Transact-SQL statement. The following is one way to specify a column name in Transact-SQL: * SELECT SCOPE_IDENTITY() AS PictureID * If a result set contains multiple columns without names, the value of the last unnamed column will be assigned to the * empty string ("") key.
    * * The sqlsrv_fetch_array function always returns data according to the * {@link http://msdn.microsoft.com/en-us/library/cc296193.aspx Default PHP Data Types}. For information about * how to specify the PHP data type, * see {@link http://msdn.microsoft.com/en-us/library/cc296208.aspx How to: Specify PHP Data Types}.
    * * If a field with no name is retrieved, the associative key for the array element will be an empty string (""). For * more information, see {@link sqlsrv_fetch_array() sqlsrv_fetch_array}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296160.aspx Retrieving Data} and * {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-fetch-array * @param resource|null $stmt A statement resource corresponding to an executed statement. * @param int $fetch_type [optional] A predefined constant. This parameter can take on one of the values listed in the * following table: *
    • SQLSRV_FETCH_NUMERIC - The next row of data is returned as a numeric array.
    • *
    • SQLSRV_FETCH_ASSOC - The next row of data is returned as an associative array. The array keys are the column * names in the result set.
    • *
    • SQLSRV_FETCH_BOTH - The next row of data is returned as both a numeric array and an associative array. This is * the default value.
    * @param int|null $row [optional]: One of the following values, specifying the row to access in a result set that uses a * scrollable cursor: SQLSRV_SCROLL_NEXT, SQLSRV_SCROLL_PRIOR, SQLSRV_SCROLL_FIRST, SQLSRV_SCROLL_LAST, * SQLSRV_SCROLL_ABSOLUTE, SQLSRV_SCROLL_RELATIVE.
    * * For more information on these values, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}. * @param int|null $offset [optional] Used with SQLSRV_SCROLL_ABSOLUTE and SQLSRV_SCROLL_RELATIVE to specify the row to * retrieve. The first record in the result set is 0. * @return array|null|false If a row of data is retrieved, an array is returned. If there are no more rows to retrieve, null is returned. If an error occurs, false is returned. */ function sqlsrv_fetch_array($stmt, $fetch_type = null, $row = null, $offset = null) {} /** * Retrieves the next row of data as an object. * *
    Retrieves the next row of data as a PHP object.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296160.aspx Retrieving Data} and * {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-fetch-object * @param resource $stmt A statement resource corresponding to an executed statement. * @param string|null $class_name [optional] A string specifying the name of the class to instantiate. If a value for the * $className parameter is not specified, an instance of the PHP {@link stdClass} is instantiated. * @param array|null $ctor_params [optional] An array that contains values passed to the constructor of the class * specified with the $className parameter. If the constructor of the specified class accepts parameter values, the * $ctorParams parameter must be used when calling sqlsrv_fetch_object. * @param int|null $row [optional] One of the following values, specifying the row to access in a result set that uses a * scrollable cursor: SQLSRV_SCROLL_NEXT, SQLSRV_SCROLL_PRIOR, SQLSRV_SCROLL_FIRST, SQLSRV_SCROLL_LAST, * SQLSRV_SCROLL_ABSOLUTE, SQLSRV_SCROLL_RELATIVE.
    * * For more information on these values, see * {@link http://msdn.microsoft.com/en-us/library/ee376927.aspx Specifying a Cursor Type and Selecting Rows}. * @param int|null $offset [optional] Used with SQLSRV_SCROLL_ABSOLUTE and SQLSRV_SCROLL_RELATIVE to specify the row to * retrieve. The first record in the result set is 0. * @return object|false|null A PHP object with properties that correspond to result set field names. Property values are * populated with the corresponding result set field values. If the class specified with the optional $className * parameter does not exist or if there is no active result set associated with the specified statement, false is * returned. If there are no more rows to retrieve, null is returned.

    * * The data type of a value in the returned object will be the default PHP data type. For information on default PHP data * types, see {@link http://msdn.microsoft.com/en-us/library/cc296193.aspx Default PHP Data Types}.
    */ function sqlsrv_fetch_object($stmt, $class_name = null, $ctor_params = null, $row = null, $offset = null) {} /** * Detects if a result set has one or more rows. * *
    Indicates if the result set has one or more rows.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-has-rows * @param resource $stmt The executed statement. * @return bool If there are rows in the result set, the return value will be true. If there are no rows, or if the * function call fails, the return value will be false. */ function sqlsrv_has_rows($stmt) {} /** * Retrieves the number of fields (columns) on a statemen. * *
    Retrieves the number of fields in an active result set. Note that sqlsrv_num_fields can be called on any * prepared statement, before or after execution.
    * * Additional Information at {@link sqlsrv_field_metadata() sqlsrv_field_metadata} and * {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-num-fields * @param resource $stmt The statement on which the targeted result set is active. * @return int|false An integer value that represents the number of fields in the active result set. If an error occurs, * the Boolean value false is returned. */ function sqlsrv_num_fields($stmt) {} /** * Makes the next result of the specified statement active. * *
    Makes the next result (result set, row count, or output parameter) of the specified statement active.
    * * The first (or only) result returned by a batch query or stored procedure is active without a call to sqlsrv_next_result.
    * * Additional Information at * {@link http://msdn.microsoft.com/en-us/library/cc296202.aspx Updating Data (Microsoft Drivers for PHP for SQL Server)} and * {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-next-result * @param resource $stmt The executed statement on which the next result is made active. * @return bool|null If the next result was successfully made active, the Boolean value true is returned. If an error occurred in * making the next result active, false is returned. If no more results are available, null is returned. */ function sqlsrv_next_result($stmt) {} /** * Retrieves the number of rows in a result set. * *
    sqlsrv_num_rows requires a client-side, static, or keyset cursor, and will return false if you use a forward cursor * or a dynamic cursor. (A forward cursor is the default.) For more information about cursors, see * {@link sqlsrv_prepare() sqlsrv_prepare}, * {@link sqlsrv_query() sqlsrv_query} and * {@link http://msdn.microsoft.com/en-us/library/hh487160.aspx Cursor Types (SQLSRV Driver)}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-num-rows * @param resource $stmt The result set for which to count the rows. * @return int|false False if there was an error calculating the number of rows. Otherwise, returns the number of rows in the result set. */ function sqlsrv_num_rows($stmt) {} /** * Returns the number of modified rows. * *
    Returns the number of rows modified by the last statement executed. This function does not return the number of * rows returned by a SELECT statement.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-rows-affected * @param resource $stmt A statement resource corresponding to an executed statement. * @return int|false An integer indicating the number of rows modified by the last executed statement. If no rows were * modified, zero (0) is returned. If no information about the number of modified rows is available, negative one (-1) * is returned. If an error occurred in retrieving the number of modified rows, false is returned. */ function sqlsrv_rows_affected($stmt) {} /** * Provides information about the client. * *
    Returns information about the connection and client stack.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-client-info * @param resource $conn The connection resource by which the client is connected. * @return array|false An associative array with keys described in the table below, or false if the connection resource * is null.
    *
    • DriverDllName - SQLNCLI10.DLL (Microsoft Drivers for PHP for SQL Server version 2.0)
    • *
    • DriverODBCVer - ODBC version (xx.yy)
    • *
    • DriverVer - SQL Server Native Client DLL version: 10.50.xxx (Microsoft Drivers for PHP for SQL Server version 2.0)
    • *
    • ExtensionVer - php_sqlsrv.dll version: 2.0.xxxx.x(Microsoft Drivers for PHP for SQL Server version 2.0)
    */ function sqlsrv_client_info($conn) {} /** * Returns information about the server. * *
    Returns information about the server. A connection must be established before calling this function.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-server-info * @param resource $conn The connection resource by which the client and server are connected. * @return array An associative array with the following keys: *
    • CurrentDatabase - The database currently being targeted.
    • *
    • SQLServerVersion - The version of SQL Server.
    • *
    • SQLServerName - The name of the server.
    */ function sqlsrv_server_info($conn) {} /** * Cancels a statement; discards any pending results for the statement. * *
    Cancels a statement. This means that any pending results for the statement are discarded. After this function * is called, the statement can be re-executed if it was prepared with {@link sqlsrv_prepare() sqlsrv_prepare}. Calling * this function is not necessary if all the results associated with the statement have been consumed.
    * * A statement that is prepared and executed using the combination of {@link sqlsrv_prepare() sqlsrv_prepare} and * {@link sqlsrv_execute() sqlsrv_execute} can be re-executed * with {@link sqlsrv_execute() sqlsrv_execute} after calling sqlsrv_cancel. A statement that is executed with * {@link sqlsrv_query() sqlsrv_query} cannot be re-executed after calling sqlsrv_cancel.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-cancel * @param resource $stmt The statement to be canceled. * @return bool A Boolean value: true if the operation was successful. Otherwise, false. */ function sqlsrv_cancel($stmt) {} /** * Closes a statement. Frees all resources associated with the statement. * *
    Frees all resources associated with the specified statement. The statement cannot be used again after this function * has been called.
    * * Null is a valid parameter for this function. This allows the function to be called multiple times in a script. For * example, if you free a statement in an error condition and free it again at the end of the script, the second call to * sqlsrv_free_stmt will return true because the first call to sqlsrv_free_stmt (in the error condition) sets the * statement resource to null.
    * * Additional Information at {@link sqlsrv_cancel() sqlsrv_cancel} and * {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-free-stmt * @param resource|null $stmt The statement to be closed. * @return bool The Boolean value true unless the function is called with an invalid parameter. If the function is * called with an invalid parameter, false is returned. */ function sqlsrv_free_stmt($stmt) {} /** * Returns field metadata. * *
    Retrieves metadata for the fields of a prepared statement. For information about preparing a statement, * see {@link sqlsrv_query() sqlsrv_query} * or {@link sqlsrv_prepare() sqlsrv_prepare}. Note that sqlsrv_field_metadata can be called on any prepared statement, * pre- or post-execution.
    * * Additional Information at {@link sqlsrv_cancel() sqlsrv_cancel} and * {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-field-metadata * @param resource $stmt A statement resource for which field metadata is sought. * @return array|false An array of arrays or false. The array consists of one array for each field in the result set. * Each sub-array has keys as described in the table below. If there is an error in retrieving field metadata, false is * returned. *
    • Name - Name of the column to which the field corresponds.
    • *
    • Type - Numeric value that corresponds to a SQL type.
    • *
    • Size - Number of characters for fields of character type (char(n), varchar(n), nchar(n), nvarchar(n), XML). * Number of bytes for fields of binary type (binary(n), varbinary(n), UDT). NULL for other SQL Server data types.
    • *
    • Precision - The precision for types of variable precision (real, numeric, decimal, datetime2, datetimeoffset, and * time). NULL for other SQL Server data types.
    • *
    • Scale - The scale for types of variable scale (numeric, decimal, datetime2, datetimeoffset, and time). NULL for other * SQL Server data types.
    • *
    • Nullable - An enumerated value indicating whether the column is nullable (SQLSRV_NULLABLE_YES), the column is not * nullable (SQLSRV_NULLABLE_NO), or it is not known if the column is nullable (SQLSRV_NULLABLE_UNKNOWN).
    * See the {@link http://msdn.microsoft.com/en-us/library/cc296197.aspx function documentation} for more information on * the keys for each sub-array. */ function sqlsrv_field_metadata($stmt) {} /** * Sends up to eight kilobytes (8 KB) of data to the server with each call to the function. * *
    Sends data from parameter streams to the server. Up to eight kilobytes (8K) of data is sent with each call to * sqlsrv_send_stream_data.
    * * By default, all stream data is sent to the server when a query is executed. If this default behavior is not changed, * you do not have to use sqlsrv_send_stream_data to send stream data to the server. For information about changing the * default behavior, see the Parameters section of {@link sqlsrv_query() sqlsrv_query} * or {@link sqlsrv_prepare() sqlsrv_prepare}.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-send-stream-data * @param resource $stmt A statement resource corresponding to an executed statement. * @return bool Boolean : true if there is more data to be sent. Otherwise, false. */ function sqlsrv_send_stream_data($stmt) {} /** * Specifies the encoding of a stream of data from the server. * *
    When specifying the PHP data type of a value being returned from the server, this allows you to specify the encoding * used to process the value if the value is a stream.
    * * In the documentation this is presented as a constant that accepts an arguement.
    * * When you use SQLSRV_PHPTYPE_STREAM, the encoding must be specified. If no parameter is supplied, an error will be * returned.
    * * Additional Information at: *
      *
    • {@link http://msdn.microsoft.com/en-us/library/cc296208.aspx How to: Specify PHP Data Types}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296163.aspx How to: Retrieve Character Data as a Stream Using the SQLSRV Driver.}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc626307.aspx How to: Send and Retrieve UTF-8 Data Using Built-In UTF-8 Support.}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    • *
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server * * @param string $encoding The encoding to use for the stream. The valid options are SQLSRV_ENC_BINARY, SQLSRV_ENC_CHAR * or "UTF-8". * * @return int Value to use in any place that accepts a SQLSRV_PHPTYPE_* constant to represent a PHP stream with the * given encoding. */ function SQLSRV_PHPTYPE_STREAM($encoding) {} /** * Specifies the encoding of a string being received form the server. * *
    When specifying the PHP data type of a value being returned from the server, this allows you to specify the * encoding used to process the value if the value is a string.
    * * In the documentation this is presented as a constant that accepts an arguement.
    * * When you use SQLSRV_PHPTYPE_STRING, the encoding must be specified. If no parameter is supplied, an error will be * returned.
    * * Additional Information at: *
      *
    • {@link http://msdn.microsoft.com/en-us/library/cc296208.aspx How to: Specify PHP Data Types}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296163.aspx How to: Retrieve Character Data as a Stream Using the SQLSRV Driver.}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc626307.aspx How to: Send and Retrieve UTF-8 Data Using Built-In UTF-8 Support.}
    • *
    • {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    • *
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server * * @param string $encoding The encoding to use for the stream. The valid options are SQLSRV_ENC_BINARY, SQLSRV_ENC_CHAR * or "UTF-8". * * @return int Value to use in any place that accepts a SQLSRV_PHPTYPE_* constant to represent a PHP string with the * given encoding. */ function SQLSRV_PHPTYPE_STRING($encoding) {} /** * Specifies a SQL Server binary field. * *
    In the documentation this is presented as a constant that accepts an arguement.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server * @param int $byteCount Must be between 1 and 8000. * @return int Value to use in any place that accepts a SQLSRV_SQLTYPE_* constant to represent the 'binary' data type. */ function SQLSRV_SQLTYPE_BINARY($byteCount) {} /** * Specifies a SQL Server varbinary field. * *
    In the documentation this is presented as a constant that accepts an arguement.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server * @param int|string $byteCount Must be between 1 and 8000 or 'max'. * @return int Value to use in any place that accepts a SQLSRV_SQLTYPE_* constant to represent the varbinary data type. */ function SQLSRV_SQLTYPE_VARBINARY($byteCount) {} /** * Specifies a SQL Server varchar filed. * *
    In the documentation this is presented as a constant that accepts an arguement.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server * * @param int|string $charCount Must be between 1 and 8000 or 'max'. * * @return int Value to use in any place that accepts a SQLSRV_SQLTYPE_* constant to represent the varchar data type. */ function SQLSRV_SQLTYPE_VARCHAR($charCount) {} /** * Specifies a SQL Server char field. * *
    In the documentation this is presented as a constant that accepts an arguement.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server * @param int $charCount Must be between 1 and 8000. * @return int Value to use in any place that accepts a SQLSRV_SQLTYPE_* constant to represent the char data type. */ function SQLSRV_SQLTYPE_CHAR($charCount) {} /** * Specifies a SQL Server nchar field. * *
    In the documentation this is presented as a constant that accepts an arguement.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server * @param int $charCount Must be between 1 and 4000. * @return int Value to use in any place that accepts a SQLSRV_SQLTYPE_* constant to represent the nchar data type. */ function SQLSRV_SQLTYPE_NCHAR($charCount) {} /** * Specifies a SQL Server nvarchar field. * *
    In the documentation this is presented as a constant that accepts an arguement.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server * @param int|string $charCount Must be between 1 and 4000 or 'max'. * @return int Value to use in any place that accepts a SQLSRV_SQLTYPE_* constant to represent the nvarchar data type. */ function SQLSRV_SQLTYPE_NVARCHAR($charCount) {} /** * Specifies a SQL Server decimal field. * *
    In the documentation this is presented as a constant that accepts an arguement.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server * @param int $precision Must be between 1 and 38. * @param int $scale Must be between 1 and $precision. * @return int Value to use in any place that accepts a SQLSRV_SQLTYPE_* constant to represent the decimal data type. */ function SQLSRV_SQLTYPE_DECIMAL($precision, $scale) {} /** * Specifies a SQL Server numeric field. * *
    In the documentation this is presented as a constant that accepts an arguement.
    * * Additional Information at {@link http://msdn.microsoft.com/en-us/library/cc296152.aspx SQLSRV Driver API Reference}
    * * @link https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server * @param int $precision Must be between 1 and 38. * @param int $scale Must be between 1 and $precision. * @return int Value to use in any place that accepts a SQLSRV_SQLTYPE_* constant to represent the numeric data type. */ function SQLSRV_SQLTYPE_NUMERIC($precision, $scale) {} * @copyright © 2019 PHP Documentation Group * @license CC-BY 3.0, https://www.php.net/manual/en/cc.license.php */ namespace Ds; use ArrayAccess; use Countable; use IteratorAggregate; use JsonSerializable; use OutOfBoundsException; use OutOfRangeException; use Traversable; use UnderflowException; /** * Collection is the base interface which covers functionality common to all * the data structures in this library. It guarantees that all structures * are traversable, countable, and can be converted to json using * json_encode(). * @package Ds * * @template-covariant TKey * @template-covariant TValue * @extends IteratorAggregate */ interface Collection extends Countable, IteratorAggregate, JsonSerializable { /** * Removes all values from the collection. * @link https://www.php.net/manual/en/ds-collection.clear.php */ public function clear(): void; /** * Returns a shallow copy of the collection. * @link https://www.php.net/manual/en/ds-collection.copy.php * @return Collection */ public function copy(); /** * Returns whether the collection is empty. * @link https://www.php.net/manual/en/ds-collection.isempty.php * @return bool */ public function isEmpty(): bool; /** * Converts the collection to an array. *

    Note: Casting to an array is not supported yet.

    * @link https://www.php.net/manual/en/ds-collection.toarray.php * @return array An array containing all the values in the same order as * the collection. */ public function toArray(): array; } /** * Hashable is an interface which allows objects to be used as keys. It’s * an alternative to spl_object_hash(), which determines an object’s hash * based on its handle: this means that two objects that are considered * equal by an implicit definition would not treated as equal because they * are not the same instance. * * hash() is used to return a scalar value to be used as the object's hash * value, which determines where it goes in the hash table. While this value * does not have to be unique, objects which are equal must have the same * hash value. * * equals() is used to determine if two objects are equal. It's guaranteed * that the comparing object will be an instance of the same class as the * subject. * @package Ds */ interface Hashable { /** * Determines whether another object is equal to the current instance. * * This method allows objects to be used as keys in structures such as * Ds\Map and Ds\Set, or any other lookup structure that honors this * interface. * * Note: It's guaranteed that $obj is an instance of the same class. * * Caution: It's important that objects which are equal also have the * same hash value. * @see https://www.php.net/manual/en/ds-hashable.hash.php * @link https://www.php.net/manual/en/ds-hashable.equals.php * @param object $obj The object to compare the current instance to, * which is always an instance of the same class. * * @return bool True if equal, false otherwise. */ public function equals($obj): bool; /** * Returns a scalar value to be used as the hash value of the objects. * * While the hash value does not define equality, all objects that are * equal according to Ds\Hashable::equals() must have the same hash * value. Hash values of equal objects don't have to be unique, for * example you could just return TRUE for all objects and nothing * would break - the only implication would be that hash tables then * turn into linked lists because all your objects will be hashed to * the same bucket. It's therefore very important that you pick a good * hash value, such as an ID or email address. * * This method allows objects to be used as keys in structures such as * Ds\Map and Ds\Set, or any other lookup structure that honors this * interface. * * Caution: Do not pick a value that might change within the object, * such as a public property. Hash table lookups would fail because * the hash has changed. * * Caution: All objects that are equal must have the same hash value. * * @return mixed A scalar value to be used as this object's hash value. * @link https://www.php.net/manual/en/ds-hashable.hash.php */ public function hash(); } /** * A Sequence describes the behaviour of values arranged in a single, * linear dimension. Some languages refer to this as a "List". It’s * similar to an array that uses incremental integer keys, with the * exception of a few characteristics: *
      *
    • Values will always be indexed as [0, 1, 2, …, size - 1].
    • *
    • Only allowed to access values by index in the range [0, size - 1].
    • *
    *
    * Use cases: *
      *
    • Wherever you would use an array as a list (not concerned with keys).
    • *
    • A more efficient alternative to SplDoublyLinkedList and SplFixedArray.
    • *
    * @package Ds * @template TValue * @extends Collection */ interface Sequence extends Collection, ArrayAccess { /** * Ensures that enough memory is allocated for a required capacity. * This removes the need to reallocate the internal as values are added. * * @param int $capacity The number of values for which capacity should * be allocated.

    Note: Capacity will stay the same if this value is * less than or equal to the current capacity.

    * @link https://www.php.net/manual/en/ds-sequence.allocate.php */ public function allocate(int $capacity): void; /** * Updates all values by applying a callback function to each value in * the sequence. * @param callable(TValue): TValue $callback A callable to apply to each value in the * sequence. The callback should return what the value should be * replaced by. * callback ( mixed $value ) : mixed * @link https://www.php.net/manual/en/ds-sequence.apply.php */ public function apply(callable $callback): void; /** * Returns the current capacity. * @return int The current capacity. * @link https://www.php.net/manual/en/ds-sequence.capacity.php */ public function capacity(): int; /** * Determines if the sequence contains all values. * @param TValue ...$values Values to check. * @return bool FALSE if any of the provided values are not in the * sequence, TRUE otherwise. * @link https://www.php.net/manual/en/ds-sequence.contains.php */ public function contains(...$values): bool; /** * Creates a new sequence using a callable to determine which values * to include. * @param null|callable(TValue): bool $callback Optional callable which returns TRUE if the * value should be included, FALSE otherwise. If a callback is not * provided, only values which are TRUE (see converting to boolean) will * be included. * callback ( mixed $value ) : bool * @return Sequence A new sequence containing all the values for which * either the callback returned TRUE, or all values that convert to * TRUE if a callback was not provided. * @link https://www.php.net/manual/en/ds-sequence.filter.php */ public function filter(?callable $callback = null); /** * Returns the index of the value, or FALSE if not found. * @param TValue $value The value to find. * @return int|false The index of the value, or FALSE if not found. * @link https://www.php.net/manual/en/ds-sequence.find.php */ public function find($value); /** * Returns the first value in the sequence. * @return TValue The first value in the sequence. * @throws UnderflowException if empty. * @link https://www.php.net/manual/en/ds-sequence.first.php */ public function first(); /** * Returns the value at a given index. * @param int $index The index to access, starting at 0. * @return TValue The value at the requested index. * @throws OutOfRangeException if the index is not valid. * @link https://www.php.net/manual/en/ds-sequence.get.php */ public function get(int $index); /** * Inserts values into the sequence at a given index. * * @param int $index The index at which to insert. 0 <= index <= count *

    Note: You can insert at the index equal to the number of values.

    * @param TValue ...$values The value or values to insert. * @throws OutOfRangeException if the index is not valid. * @link https://www.php.net/manual/en/ds-sequence.insert.php */ public function insert(int $index, ...$values): void; /** * Joins all values together as a string using an optional separator * between each value. * @param string $glue An optional string to separate each value. * @return string All values of the sequence joined together as a * string. * @link https://www.php.net/manual/en/ds-sequence.join.php */ public function join(string $glue = ''): string; /** * Returns the last value in the sequence. * @return TValue The last value in the sequence. * @throws UnderflowException if empty. * @link https://www.php.net/manual/en/ds-sequence.last.php */ public function last(); /** * Returns the result of applying a callback function to each value in * the sequence. * @template TNewValue * @param callable(TValue): TNewValue $callback A callable to apply to each value in the * sequence. * The callable should return what the new value will be in the new * sequence. * callback ( mixed $value ) : mixed * @return Sequence The result of applying a callback to each value in * the sequence.

    Note: The values of the current instance won't be * affected.

    * @link https://www.php.net/manual/en/ds-sequence.map.php */ public function map(callable $callback): Sequence; /** * Returns the result of adding all given values to the sequence. * @template TValue2 * @param iterable $values A traversable object or an array. * @return Sequence The result of adding all given values to the * sequence, effectively the same as adding the values to a copy, * then returning that copy. * @link https://www.php.net/manual/en/ds-sequence.merge.php */ public function merge($values): Sequence; /** * Removes and returns the last value. * @return TValue The removed last value. * @throws UnderflowException if empty. * @link https://www.php.net/manual/en/ds-sequence.pop.php */ public function pop(); /** * Adds values to the end of the sequence. * @param TValue ...$values The values to add. */ public function push(...$values): void; /** * Reduces the sequence to a single value using a callback function. * @template TCarry * @param callable(TCarry, TValue): TCarry $callback

    * * callback ( mixed $carry , mixed $value ) : mixed * $carry The return value of the previous callback, or initial if it's * the first iteration.
    * $value The value of the current iteration. *

    * @param TCarry $initial The initial value of the carry value. Can be NULL. * @return TCarry The return value of the final callback. * @link https://www.php.net/manual/en/ds-sequence.reduce.php */ public function reduce(callable $callback, $initial = null); /** * Removes and returns a value by index. * @param int $index The index of the value to remove. * @return TValue The value that was removed. * @link https://www.php.net/manual/en/ds-sequence.remove.php */ public function remove(int $index); /** * Reverses the sequence in-place. * @link https://www.php.net/manual/en/ds-sequence.reverse.php */ public function reverse(): void; /** * Returns a reversed copy of the sequence. * @return Sequence A reversed copy of the sequence. *

    Note: The current instance is not affected.

    */ public function reversed(); /** * Rotates the sequence by a given number of rotations, which is * equivalent to successively calling * $sequence->push($sequence->shift()) if the number of rotations is * positive, or $sequence->unshift($sequence->pop()) if negative. * @param int $rotations The number of times the sequence should be * rotated. * @link https://www.php.net/manual/en/ds-sequence.rotate.php */ public function rotate(int $rotations): void; /** * Updates a value at a given index. * @param int $index The index of the value to update. * @param TValue $value The new value. * @throws OutOfRangeException if the index is not valid. * @link https://www.php.net/manual/en/ds-sequence.set.php */ public function set(int $index, $value): void; /** * Removes and returns the first value. * @return TValue * @throws UnderflowException if empty. * @link https://www.php.net/manual/en/ds-sequence.shift.php */ public function shift(); /** * Creates a sub-sequence of a given range. * @param int $index The index at which the sub-sequence starts. * If positive, the sequence will start at that index in the sequence. * If negative, the sequence will start that far from the end. * @param int|null $length If a length is given and is positive, the * resulting sequence will have up to that many values in it. If the * length results in an overflow, only values up to the end of the * sequence will be included. If a length is given and is negative, * the sequence will stop that many values from the end. If a length * is not provided, the resulting sequence will contain all values * between the index and the end of the sequence. * @return Sequence A sub-sequence of the given range. * @link https://www.php.net/manual/en/ds-sequence.slice.php */ public function slice(int $index, int $length = null); /** * Sorts the sequence in-place, using an optional comparator function. * @param callable(TValue, TValue): int|null $comparator The comparison function must return * an integer less than, equal to, or greater than zero if the first * argument is considered to be respectively less than, equal to, or * greater than the second. Note that before PHP 7.0.0 this integer had * to be in the range from -2147483648 to 2147483647.

    * callback ( mixed $a, mixed $b ) : int

    *

    Caution: Returning non-integer values from the comparison * function, such as float, will result in an internal cast to integer * of the callback's return value. So values such as 0.99 and 0.1 will * both be cast to an integer value of 0, which will compare such * values as equal.

    * @link https://www.php.net/manual/en/ds-sequence.sort.php */ public function sort(?callable $comparator = null): void; /** * Returns a sorted copy, using an optional comparator function. * @param callable(TValue, TValue): int|null $comparator The comparison function must return * an integer less than, equal to, or greater than zero if the first * argument is considered to be respectively less than, equal to, or * greater than the second. Note that before PHP 7.0.0 this integer had * to be in the range from -2147483648 to 2147483647.

    * callback ( mixed $a, mixed $b ) : int

    *

    Caution: Returning non-integer values from the comparison * function, such as float, will result in an internal cast to integer * of the callback's return value. So values such as 0.99 and 0.1 will * both be cast to an integer value of 0, which will compare such * values as equal.

    * @return Sequence Returns a sorted copy of the sequence. * @link https://www.php.net/manual/en/ds-sequence.sort.php */ public function sorted(?callable $comparator = null); /** * Returns the sum of all values in the sequence. *

    Note: Arrays and objects are considered equal to zero when * calculating the sum.

    * @return float|int The sum of all the values in the sequence as * either a float or int depending on the values in the sequence. */ public function sum(): float|int; /** * Adds values to the front of the sequence, moving all the current * values forward to make room for the new values. * @param TValue ...$values The values to add to the front of the sequence. *

    Note: Multiple values will be added in the same order that they * are passed.

    */ public function unshift(...$values): void; } /** * A Vector is a sequence of values in a contiguous buffer that grows and * shrinks automatically. It’s the most efficient sequential structure * because a value’s index is a direct mapping to its index in the buffer, * and the growth factor isn't bound to a specific multiple or exponent. *

    *

    *

    Strengths *
      *
    • Supports array syntax (square brackets).
    • *
    • Uses less overall memory than an array for the same number of values.
    • *
    • Automatically frees allocated memory when its size drops low enough.
    • *
    • Capacity does not have to be a power of 2.
    • *
    • get(), set(), push(), pop() are all O(1)
    • *
    *

    *

    Weaknesses *
      *
    • shift(), unshift(), insert() and remove() are all O(n).
    • *
    * * @link https://www.php.net/manual/en/class.ds-vector.php * * @package Ds * @template TValue * @implements Sequence */ class Vector implements Sequence { public const MIN_CAPACITY = 10; /** * Creates a new instance, using either a traversable object or an array for the initial values. * * @param array $values */ public function __construct($values = []) {} /** * Ensures that enough memory is allocated for a required capacity. * This removes the need to reallocate the internal as values are added. * @param int $capacity The number of values for which capacity should * be allocated. *

    Note: Capacity will stay the same if this value is less than or * equal to the current capacity.

    * @link https://www.php.net/manual/en/ds-vector.allocate.php */ public function allocate(int $capacity): void {} /** * Updates all values by applying a callback function to each value in * the vector. * @param callable(TValue): TValue $callback * callback ( mixed $value ) : mixed * A callable to apply to each value in the vector. The callback should * return what the value should be replaced by. * @link https://www.php.net/manual/en/ds-vector.apply.php */ public function apply(callable $callback): void {} /** * Returns the current capacity. * @return int The current capacity. * @link https://www.php.net/manual/en/ds-vector.capacity.php */ public function capacity(): int {} /** * Removes all values from the vector. * @link https://www.php.net/manual/en/ds-vector.clear.php */ public function clear(): void {} /** * Determines if the vector contains all values. * @param TValue ...$values Values to check. * @return bool FALSE if any of the provided values are not in the * vector, TRUE otherwise. * @link https://www.php.net/manual/en/ds-vector.contains.php */ public function contains(...$values): bool {} /** *Returns a shallow copy of the vector. * @return Vector Returns a shallow copy of the vector. */ public function copy(): Vector {} /** * Creates a new vector using a callable to determine which values to * include. * * @param null|callable(TValue): bool $callback * Optional callable which returns TRUE if the value should be included, * FALSE otherwise. If a callback is not provided, only values which are * TRUE (see converting to boolean) will be included. * callback ( mixed $value ) : bool * @return Vector A new vector containing all the values for which * either the callback returned TRUE, or all values that convert to * TRUE if a callback was not provided. * @link https://www.php.net/manual/en/ds-vector.filter.php */ public function filter(?callable $callback = null): Vector {} /** * Returns the index of the value, or FALSE if not found. * @param TValue $value The value to find. * @return int|false The index of the value, or FALSE if not found. *

    Note: Values will be compared by value and by type.

    * @link https://www.php.net/manual/en/ds-vector.find.php */ public function find($value) {} /** * Returns the first value in the vector. * @return TValue * @throws UnderflowException if empty. * @link https://www.php.net/manual/en/ds-vector.first.php */ public function first() {} /** * Returns the value at a given index. * @param int $index The index to access, starting at 0. * @return TValue * @link https://www.php.net/manual/en/ds-vector.get.php */ public function get(int $index) {} /** * @return Traversable */ public function getIterator(): Traversable {} /** * Inserts values into the sequence at a given index. * * @param int $index The index at which to insert. 0 <= index <= count * Note:
    * You can insert at the index equal to the number of values. * @param array ...$values The value or values to insert. * @link https://www.php.net/manual/en/ds-vector.insert.php */ public function insert(int $index, ...$values): void {} /** * Joins all values together as a string using an optional separator between each value. * * @param string|null $glue An optional string to separate each value. * @return string All values of the sequence joined together as a string. * @link https://www.php.net/manual/en/ds-vector.join.php */ public function join(?string $glue = null): string {} /** * Returns the last value in the sequence. * * @return TValue The last value in the sequence. * @link https://www.php.net/manual/en/ds-vector.last.php */ public function last() {} /** * Returns the result of applying a callback function to each value in the sequence. * * @template TNewValue * @param callable(TValue): TNewValue $callback A callable to apply to each value in the sequence. *
    The callable should return what the new value will be in the new sequence. * * @return Vector * @link https://www.php.net/manual/en/ds-vector.map.php */ public function map(callable $callback): Vector {} /** * Returns the result of adding all given values to the sequence. * * @template TValue2 * @param iterable $values A traversable object or an array. * @return Vector The result of adding all given values to the sequence, effectively the same as adding the * values to a copy, then returning that copy.
    * Note:
    * The current instance won't be affected. * @link https://www.php.net/manual/en/ds-vector.merge.php */ public function merge($values): Vector {} /** * Removes and returns the last value. * * @return TValue * @link https://www.php.net/manual/en/ds-vector.pop.php */ public function pop() {} /** * Adds values to the end of the sequence. * @param TValue ...$values * @link https://www.php.net/manual/en/ds-vector.push.php */ public function push(...$values): void {} /** * Reduces the sequence to a single value using a callback function. * @template TCarry * @param callable(TCarry, TValue): TCarry $callback
    * callback ( mixed $carry , mixed $value ) : mixed
    * carry The return value of the previous callback, or initial if it's the first iteration.
    * value The value of the current iteration. * @param TCarry $initial The initial value of the carry value. Can be NULL. * * @return TCarry The return value of the final callback. * * @link https://www.php.net/manual/en/ds-vector.reduce.php */ public function reduce(callable $callback, $initial = null) {} /** * Removes and returns a value by index. * @param int $index The index of the value to remove. * @return TValue The value that was removed. * @link https://www.php.net/manual/en/ds-vector.remove.php */ public function remove(int $index) {} /** * Reverses the sequence in-place. * @link https://www.php.net/manual/en/ds-vector.reverse.php */ public function reverse(): void {} /** * Returns a reversed copy of the sequence. * @return Vector A reversed copy of the sequence.
    * Note: The current instance is not affected. * @link https://www.php.net/manual/en/ds-vector.reversed.php */ public function reversed(): Vector {} /** * Rotates the sequence by a given number of rotations, which is * equivalent to successively calling $sequence->push($sequence->shift()) * if the number of rotations is positive, or $sequence->unshift($sequence->pop()) * if negative. * * @link https://www.php.net/manual/en/ds-vector.rotate.php * * @param int $rotations The number of times the sequence should be rotated. */ public function rotate(int $rotations): void {} /** * Updates a value at a given index. * * @link https://www.php.net/manual/en/ds-vector.set.php * * @param int $index The index of the value to update. * @param TValue $value The new value. * * @throws OutOfRangeException if the index is not valid. */ public function set(int $index, $value): void {} /** * Removes and returns the first value. * * @link https://www.php.net/manual/en/ds-vector.shift.php * * @return TValue The first value, which was removed. * @throws UnderflowException if empty. */ public function shift() {} /** * Creates a sub-sequence of a given range. * @link https://www.php.net/manual/en/ds-vector.slice.php * @param int $index The index at which the sub-sequence starts. If * positive, the sequence will start at that * index in the sequence. If negative, the sequence will start that * far from the end. * @param int|null $length If a length is given and is positive, the * resulting sequence will have up to that many values in it. If the * length results in an overflow, only values up to the end of the * sequence will be included. If a length is given and is negative, * the sequence will stop that many values from the end. If a length * is not provided, the resulting sequence will contain all values * between the index and the end of the sequence. * @return Vector */ public function slice(int $index, int $length = null): Vector {} /** * Sorts the sequence in-place, using an optional comparator function. * @link https://www.php.net/manual/en/ds-vector.sort.php * @param callable(TValue, TValue): int|null $comparator The comparison function must return an * integer less than, equal to, or greater * than zero if the first argument is considered to be respectively less than, equal to, or greater than the * second. Note that before PHP 7.0.0 this integer had to be in the * range from -2147483648 to 2147483647.
    * callback ( mixed $a, mixed $b ) : int * Caution: Returning non-integer values from the comparison function, * such as float, will result in an * internal cast to integer of the callback's return value. So values * such as 0.99 and 0.1 will both be cast to an integer value of 0, * which will compare such values as equal. */ public function sort(?callable $comparator = null): void {} /** * Returns a sorted copy, using an optional comparator function. * @link https://www.php.net/manual/en/ds-vector.sorted.php * @param callable(TValue, TValue): int|null $comparator The comparison function must return an integer less than, equal to, or * greater than zero if the first argument is considered to be respectively less than, equal to, or greater * than the second. Note that before PHP 7.0.0 this integer had to be in the range from -2147483648 to * 2147483647.
    * callback ( mixed $a, mixed $b ) : int * Caution: Returning non-integer values from the comparison function, such as float, will result in an * internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to * an integer value of 0, which will compare such values as equal. * @return Vector Returns a sorted copy of the sequence. */ public function sorted(?callable $comparator = null): Vector {} /** * Returns the sum of all values in the sequence.
    * Note: Arrays and objects are considered equal to zero when * calculating the sum. * @link https://www.php.net/manual/en/ds-vector.sum.php * @return float */ public function sum(): float {} /** * Adds values to the front of the sequence, moving all the current * values forward to make room for the new values. * @param TValue ...$values The values to add to the front of the sequence.
    * Note: Multiple values will be added in the same order that they are * passed. * @link https://www.php.net/manual/en/ds-vector.unshift.php */ public function unshift($values): void {} /** * Count elements of an object * @link https://php.net/manual/en/ds-vector.count.php * @return int The custom count as an integer. *

    * The return value is cast to an integer. *

    * @since 5.1 */ public function count(): int {} /** * Returns whether the collection is empty. * @link https://www.php.net/manual/en/ds-vector.isempty.php * @return bool */ public function isEmpty(): bool {} /** * Converts the collection to an array. *

    Note: Casting to an array is not supported yet.

    * @link https://www.php.net/manual/en/ds-vector.toarray.php * @return array An array containing all the values in the same order as * the collection. */ public function toArray(): array {} /** * Specify data which should be serialized to JSON * @link https://php.net/manual/en/ds-vector.jsonserialize.php * @return mixed data which can be serialized by json_encode, * which is a value of any type other than a resource. * @since 5.4 */ public function jsonSerialize() {} /** * @param int $offset */ public function offsetExists(mixed $offset): bool {} /** * @param int $offset * * @return TValue */ public function offsetGet(mixed $offset) {} /** * @param int $offset * @param TValue $value */ public function offsetSet(mixed $offset, mixed $value) {} /** * @param int $offset */ public function offsetUnset(mixed $offset): void {} } /** * @template TValue * @implements Sequence */ class Deque implements Sequence { /** * Creates a new instance, using either a traversable object or an array for the initial values. * @param TValue ...$values A traversable object or an array to use for the initial values. * * @link https://www.php.net/manual/en/ds-deque.construct.php */ public function __construct(...$values) {} /** * Count elements of an object * @link https://php.net/manual/en/countable.count.php * @return int The custom count as an integer. *

    * The return value is cast to an integer. *

    * @since 5.1 */ public function count(): int {} /** * Removes all values from the deque. * @link https://www.php.net/manual/en/ds-deque.clear.php */ public function clear(): void {} /** * Returns a shallow copy of the deque. * @link https://www.php.net/manual/en/ds-deque.copy.php * @return Deque */ public function copy(): Collection {} /** * @return Traversable */ public function getIterator(): Traversable {} /** * Returns whether the deque is empty. * @link https://www.php.net/manual/en/ds-deque.isempty.php * @return bool */ public function isEmpty(): bool {} /** * Converts the deque to an array. *

    Note: Casting to an array is not supported yet.

    * @link https://www.php.net/manual/en/ds-deque.toarray.php * @return array An array containing all the values in the same order as * the deque. */ public function toArray(): array {} /** * Ensures that enough memory is allocated for a required capacity. * This removes the need to reallocate the internal as values are added. * * @param int $capacity The number of values for which capacity should * be allocated.

    Note: Capacity will stay the same if this value is * less than or equal to the current capacity.

    *

    Note: Capacity will always be rounded up to the nearest power of 2.

    * @link https://www.php.net/manual/en/ds-deque.allocate.php */ public function allocate(int $capacity): void {} /** * Updates all values by applying a callback function to each value in * the deque. * @param callable(TValue): TValue $callback A callable to apply to each value in the * deque. The callback should return what the value should be * replaced by.

    * callback ( mixed $value ) : mixed *

    * @link https://www.php.net/manual/en/ds-deque.apply.php */ public function apply(callable $callback): void {} /** * Returns the current capacity. * @return int The current capacity. * @link https://www.php.net/manual/en/ds-deque.capacity.php */ public function capacity(): int {} /** * Determines if the deque contains all values. * @param TValue $values Values to check. * @return bool FALSE if any of the provided values are not in the * deque, TRUE otherwise. * @link https://www.php.net/manual/en/ds-deque.contains.php */ public function contains(...$values): bool {} /** * Creates a new deque using a callable to determine which values * to include. * @param null|callable(TValue): bool $callback Optional callable which returns TRUE if the * value should be included, FALSE otherwise. If a callback is not * provided, only values which are TRUE (see converting to boolean) will * be included.

    * callback ( mixed $value ) : bool *

    * @return Deque A new deque containing all the values for which * either the callback returned TRUE, or all values that convert to * TRUE if a callback was not provided. * @link https://www.php.net/manual/en/ds-deque.filter.php */ public function filter(?callable $callback = null): Deque {} /** * Returns the index of the value, or FALSE if not found. * @param TValue $value The value to find. * @return int|false The index of the value, or FALSE if not found. * @link https://www.php.net/manual/en/ds-deque.find.php */ public function find($value) {} /** * Returns the first value in the deque. * @return TValue The first value in the deque. * @throws UnderflowException if empty. * @link https://www.php.net/manual/en/ds-deque.first.php */ public function first() {} /** * Returns the value at a given index. * @param int $index The index to access, starting at 0. * @return TValue The value at the requested index. * @throws OutOfRangeException if the index is not valid. * @link https://www.php.net/manual/en/ds-deque.get.php */ public function get(int $index) {} /** * Inserts values into the deque at a given index. * * @param int $index The index at which to insert. 0 <= index <= count *

    Note: You can insert at the index equal to the number of values.

    * @param TValue ...$values The value or values to insert. * @throws OutOfRangeException if the index is not valid. * @link https://www.php.net/manual/en/ds-deque.insert.php */ public function insert(int $index, ...$values): void {} /** * Joins all values together as a string using an optional separator * between each value. * @param string $glue An optional string to separate each value. * @return string All values of the deque joined together as a * string. * @link https://www.php.net/manual/en/ds-deque.join.php */ public function join(string $glue = ''): string {} /** * Returns the last value in the deque. * @return TValue The last value in the deque. * @throws UnderflowException if empty. * @link https://www.php.net/manual/en/ds-deque.last.php */ public function last() {} /** * Returns the result of applying a callback function to each value in * the deque. * * @template TNewValue * @param callable(TValue): TNewValue $callback A callable to apply to each value in the * deque. * The callable should return what the new value will be in the new * deque. * callback ( mixed $value ) : mixed * * @return Deque The result of applying a callback to each value in * the deque. *

    Note: The values of the current instance won't be * affected.

    * @link https://www.php.net/manual/en/ds-deque.map.php */ public function map(callable $callback): Deque {} /** * Returns the result of adding all given values to the deque. * @template TValue2 * @param iterable $values A traversable object or an array. * @return Deque The result of adding all given values to the * deque, effectively the same as adding the values to a copy, * then returning that copy. * @link https://www.php.net/manual/en/ds-deque.merge.php */ public function merge($values): Deque {} /** * Removes and returns the last value. * @return TValue The removed last value. * @throws UnderflowException if empty. * @link https://www.php.net/manual/en/ds-deque.pop.php */ public function pop() {} /** * Adds values to the end of the deque. * @param TValue ...$values The values to add. */ public function push(...$values): void {} /** * Reduces the deque to a single value using a callback function. * @template TCarry * @param callable(TCarry, TValue): TCarry $callback * callback ( mixed $carry , mixed $value ) : mixed * $carry The return value of the previous callback, or initial if it's * the first iteration.

    * $value The value of the current iteration. *

    * @param TCarry $initial The initial value of the carry value. Can be NULL. * @return TCarry The return value of the final callback. * @link https://www.php.net/manual/en/ds-deque.reduce.php */ public function reduce(callable $callback, $initial = null) {} /** * Removes and returns a value by index. * @param int $index The index of the value to remove. * @return TValue The value that was removed. * @link https://www.php.net/manual/en/ds-deque.remove.php */ public function remove(int $index) {} /** * Reverses the deque in-place. * @link https://www.php.net/manual/en/ds-deque.reverse.php */ public function reverse(): void {} /** * Returns a reversed copy of the deque. * @return Deque A reversed copy of the deque. *

    Note: The current instance is not affected.

    */ public function reversed(): Deque {} /** * Rotates the deque by a given number of rotations, which is * equivalent to successively calling * $deque->push($deque->shift()) if the number of rotations is * positive, or $deque->unshift($deque->pop()) if negative. * @param int $rotations The number of times the deque should be * rotated. * @link https://www.php.net/manual/en/ds-deque.rotate.php */ public function rotate(int $rotations): void {} /** * Updates a value at a given index. * @param int $index The index of the value to update. * @param TValue $value The new value. * @throws OutOfRangeException if the index is not valid. * @link https://www.php.net/manual/en/ds-deque.set.php */ public function set(int $index, $value): void {} /** * Removes and returns the first value. * @return TValue * @throws UnderflowException if empty. * @link https://www.php.net/manual/en/ds-deque.shift.php */ public function shift() {} /** * Creates a sub-deque of a given range. * @param int $index The index at which the sub-deque starts. * If positive, the deque will start at that index in the deque. * If negative, the deque will start that far from the end. * @param int|null $length If a length is given and is positive, the * resulting deque will have up to that many values in it. If the * length results in an overflow, only values up to the end of the * deque will be included. If a length is given and is negative, * the deque will stop that many values from the end. If a length * is not provided, the resulting deque will contain all values * between the index and the end of the deque. * @return Deque A sub-deque of the given range. * @link https://www.php.net/manual/en/ds-deque.slice.php */ public function slice(int $index, int $length = null): Deque {} /** * Sorts the deque in-place, using an optional comparator function. * @param callable(TValue, TValue): int|null $comparator The comparison function must return * an integer less than, equal to, or greater than zero if the first * argument is considered to be respectively less than, equal to, or * greater than the second. Note that before PHP 7.0.0 this integer had * to be in the range from -2147483648 to 2147483647. * callback ( mixed $a, mixed $b ) : int *

    Caution: Returning non-integer values from the comparison * function, such as float, will result in an internal cast to integer * of the callback's return value. So values such as 0.99 and 0.1 will * both be cast to an integer value of 0, which will compare such * values as equal.

    * @link https://www.php.net/manual/en/ds-deque.sort.php */ public function sort(?callable $comparator = null): void {} /** * Returns a sorted copy, using an optional comparator function. * @param callable(TValue, TValue): int|null $comparator The comparison function must return * an integer less than, equal to, or greater than zero if the first * argument is considered to be respectively less than, equal to, or * greater than the second. Note that before PHP 7.0.0 this integer had * to be in the range from -2147483648 to 2147483647. * callback ( mixed $a, mixed $b ) : int *

    Caution: Returning non-integer values from the comparison * function, such as float, will result in an internal cast to integer * of the callback's return value. So values such as 0.99 and 0.1 will * both be cast to an integer value of 0, which will compare such * values as equal.

    * @return Deque Returns a sorted copy of the deque. * @link https://www.php.net/manual/en/ds-deque.sort.php */ public function sorted(?callable $comparator = null): Deque {} /** * Returns the sum of all values in the deque. *

    Note: Arrays and objects are considered equal to zero when * calculating the sum.

    * @return float|int The sum of all the values in the deque as * either a float or int depending on the values in the deque. */ public function sum(): float|int {} /** * Adds values to the front of the deque, moving all the current * values forward to make room for the new values. * @param TValue ...$values The values to add to the front of the deque. *

    Note: Multiple values will be added in the same order that they * are passed.

    */ public function unshift(...$values): void {} /** * Specify data which should be serialized to JSON * @link https://php.net/manual/en/ds-vector.jsonserialize.php * @return mixed data which can be serialized by json_encode, * which is a value of any type other than a resource. * @since 5.4 */ public function jsonSerialize() {} /** * @param int $offset */ public function offsetExists(mixed $offset): bool {} /** * @param int $offset * * @return TValue */ public function offsetGet(mixed $offset) {} /** * @param int $offset * @param TValue $value */ public function offsetSet(mixed $offset, mixed $value) {} /** * @param int $offset */ public function offsetUnset(mixed $offset): void {} } /** * @template TKey * @template TValue * @implements Collection */ class Map implements Collection, ArrayAccess { /** * Creates a new instance, using either a traversable object or an array for the initial values. * @param iterable ...$values A traversable object or an array to use for the initial values. * * @link https://www.php.net/manual/en/ds-map.construct.php */ public function __construct(...$values) {} /** * Allocates enough memory for a required capacity. * * @param int $capacity The number of values for which capacity should be allocated.
    *

    Note: Capacity will stay the same if this value is less than or equal to the current capacity.

    * Capacity will always be rounded up to the nearest power of 2. * * @link https://www.php.net/manual/en/ds-map.allocate.php */ public function allocate(int $capacity) {} /** * Updates all values by applying a callback function to each value in the map. * * @param callable(TKey, TValue): TValue $callback A callable to apply to each value in the map. The callback should return what * the value should be replaced by. * * @link https://www.php.net/manual/en/ds-map.apply.php */ public function apply(callable $callback) {} /** * Returns the current capacity. * * @return int * * @link https://www.php.net/manual/en/ds-map.capacity.php */ public function capacity(): int {} /** * Count elements of an object * @link https://php.net/manual/en/countable.count.php * @return int The custom count as an integer. *

    *

    * The return value is cast to an integer. * @since 5.1 */ public function count(): int {} /** * Removes all values from the collection. * @link https://www.php.net/manual/en/ds-collection.clear.php */ public function clear(): void {} /** * Returns a shallow copy of the collection. * @link https://www.php.net/manual/en/ds-collection.copy.php * @return Map */ public function copy(): Collection {} /** * Returns the result of removing all keys from the current instance that are present in a given map. * * A \ B = {x ∈ A | x ∉ B} * * @template TValue2 * @param Map $map The map containing the keys to exclude in the resulting map. * * @return Map The result of removing all keys from the current instance that are present in a given map. * * @link https://www.php.net/manual/en/ds-map.diff.php */ public function diff(Map $map): Map {} /** * Creates a new map using a callable to determine which pairs to include * * @param null|callable(TKey, TValue): bool $callback Optional callable which returns TRUE if the pair should be included, FALSE * otherwise. If a callback is not provided, only values which are TRUE (see converting to boolean) will be included. * * @return Map * * @link https://www.php.net/manual/en/ds-map.filter.php */ public function filter(?callable $callback = null): Map {} /** * Returns the first pair in the map * * @return Pair The first pair in the map. * * @throws UnderflowException if empty * * @link https://www.php.net/manual/en/ds-map.first.php */ public function first(): Pair {} /** * Returns the value for a given key, or an optional default value if the key could not be found. *

    * Note: Keys of type object are supported. If an object implements Ds\Hashable, equality will be * determined by the object's equals function. If an object does not implement Ds\Hashable, objects must be references to the same instance to be considered equal. *

    *

    * Note: You can also use array syntax to access values by key, eg. $map["key"]. *

    *

    * Caution: Be careful when using array syntax. Scalar keys will be coerced to integers by the engine. For * example, $map["1"] will attempt to access int(1), while $map->get("1") will correctly look up the string key. *

    * * @template TDefault * @param TKey $key The key to look up. * @param TDefault $default The optional default value, returned if the key could not be found. * * @return TValue|TDefault The value mapped to the given key, or the default value if provided and the key could not be found in the map. * * @throws OutOfBoundsException if the key could not be found and a default value was not provided. * * @link https://www.php.net/manual/en/ds-map.get.php */ public function get($key, $default = null) {} /** * @return Traversable */ public function getIterator(): Traversable {} /** * Determines whether the map contains a given key * * @param TKey $key The key to look for. * * @return bool Returns TRUE if the key could found, FALSE otherwise. * * @link https://www.php.net/manual/en/ds-map.hasKey.php */ public function hasKey($key): bool {} /** * Determines whether the map contains a given value * * @param TValue $value The value to look for. * * @return bool Returns TRUE if the value could found, FALSE otherwise. * * @link https://www.php.net/manual/en/ds-map.hasValue.php */ public function hasValue($value): bool {} /** * Creates a new map containing the pairs of the current instance whose * keys are also present in the given map. In other words, returns a * copy of the current instance with all keys removed that are not also * in the other map. * * A ∩ B = {x : x ∈ A ∧ x ∈ B} * *

    Note: Values from the current instance will be kept.

    * * @template TKey2 * @template TValue2 * @param Map $map The other map, containing the keys to intersect with. * * @return Map The key intersection of the current instance and another map. * * @link https://www.php.net/manual/en/ds-map.intersect.php */ public function intersect(Map $map): Map {} /** * Returns whether the collection is empty. * * @link https://www.php.net/manual/en/ds-collection.isempty.php * * @return bool Returns TRUE if the map is empty, FALSE otherwise. * * @link https://www.php.net/manual/en/ds-map.isempty.php */ public function isEmpty(): bool {} /** * Converts the map to an array. *

    Note: Casting to an array is not supported yet.

    *

    Caution: Maps where non-scalar keys are can't be converted to an * array. *

    *

    Caution: An array will treat all numeric keys as integers, eg. * "1" and 1 as keys in the map will only result in 1 being included in * the array. *

    * * @link https://www.php.net/manual/en/ds-map.toarray.php * @return array An array containing all the values in the same order as * the map. */ public function toArray(): array {} /** * Specify data which should be serialized to JSON * @link https://php.net/manual/en/jsonserializable.jsonserialize.php * @return mixed data which can be serialized by json_encode, * which is a value of any type other than a resource. * @since 5.4 */ public function jsonSerialize() {} /** * Returns a set containing all the keys of the map, in the same order. * @link https://www.php.net/manual/en/ds-map.keys.php * @return Set A Ds\Set containing all the keys of the map. */ public function keys(): Set {} /** * Sorts the map in-place by key, using an optional comparator function. * @param callable(TKey, TKey):int|null $comparator The comparison function must return * an integer less than, equal to, or greater than zero if the first * argument is considered to be respectively less than, equal to, or * greater than the second. Note that before PHP 7.0.0 this integer had * to be in the range from -2147483648 to 2147483647. * callback ( mixed $a, mixed $b ) : int *

    Caution: Returning non-integer values from the comparison function, such * as float, will result in an internal cast to integer of the * callback's return value. So values such as 0.99 and 0.1 will both be * cast to an integer value of 0, which will compare such values as * equal.

    * @link https://www.php.net/manual/en/ds-map.ksort.php */ public function ksort(?callable $comparator = null) {} /** * Returns a copy sorted by key, using an optional comparator function. * @param callable(TKey, TKey): int|null $comparator The comparison function must return * an integer less than, equal to, or greater than zero if the first * argument is considered to be respectively less than, equal to, or * greater than the second. Note that before PHP 7.0.0 this integer had * to be in the range from -2147483648 to 2147483647. * callback ( mixed $a, mixed $b ) : int *

    Caution: Returning non-integer values from the comparison function, such * as float, will result in an internal cast to integer of the * callback's return value. So values such as 0.99 and 0.1 will both be * cast to an integer value of 0, which will compare such values as * equal.

    * @return Map Returns a copy of the map, sorted by key. * @link https://www.php.net/manual/en/ds-map.ksorted.php */ public function ksorted(?callable $comparator = null): Map {} /** * Returns the last pair of the map. * @return Pair The last pair of the map. * @throws UnderflowException if empty * @link https://www.php.net/manual/en/ds-map.last.php */ public function last(): Pair {} /** * Returns the result of applying a callback function to each value of * the map. * @template TNewValue * @param callable(TKey, TValue): TNewValue $callback A callable to apply to each value in the * map. The callable should return what the key will be mapped to in the * resulting map. * callback ( mixed $key , mixed $value ) : mixed * @return Map The result of applying a callback to each value in the * map. * * Note: The keys and values of the current instance won't be affected. * * @link https://www.php.net/manual/en/ds-map.map.php */ public function map(callable $callback): Map {} /** * Returns the result of associating all keys of a given traversable * object or array with their corresponding values, combined with the * current instance. * @template TKey2 * @template TValue2 * @param iterable $values A traversable object or an array. * @return Map The result of associating all keys of a given traversable * object or array with their corresponding values, combined with the * current instance. * * Note: The current instance won't be affected. * * @link https://www.php.net/manual/en/ds-map.merge.php */ public function merge($values): Map {} /** * Returns a Ds\Sequence containing all the pairs of the map. * * @return Sequence> Ds\Sequence containing all the pairs of the map. * * @link https://www.php.net/manual/en/ds-map.pairs.php */ public function pairs(): Sequence {} /** * Associates a key with a value, overwriting a previous association if * one exists. * @param TKey $key The key to associate the value with. * @param TValue $value The value to be associated with the key. * * Note: Keys of type object are supported. If an object implements * Ds\Hashable, equality will be determined by the object's equals * function. If an object does not implement Ds\Hashable, objects must * be references to the same instance to be considered equal. * * Note: You can also use array syntax to associate values by key, eg. * $map["key"] = $value. * * Caution: Be careful when using array syntax. Scalar keys will be * coerced to integers by the engine. For example, $map["1"] will * attempt to access int(1), while $map->get("1") will correctly look up * the string key. * * @link https://www.php.net/manual/en/ds-map.put.php */ public function put($key, $value) {} /** * Associates all key-value pairs of a traversable object or array. * * Note: Keys of type object are supported. If an object implements * Ds\Hashable, equality will be determined * by the object's equals function. If an object does not implement * Ds\Hashable, objects must be references to the same instance to be * considered equal. * * @param iterable $pairs traversable object or array. * * @link https://www.php.net/manual/en/ds-map.putall.php */ public function putAll($pairs) {} /** * Reduces the map to a single value using a callback function. * * @template TCarry * @param callable(TCarry, TKey, TValue): TCarry $callback * callback ( mixed $carry , mixed $key , mixed $value ) : mixed * carry The return value of the previous callback, or initial if * it's the first iteration. * key The key of the current iteration. * value The value of the current iteration. * * @param TCarry $initial The initial value of the carry value. Can be * NULL. * * @return TCarry * @link https://www.php.net/manual/en/ds-map.reduce.php */ public function reduce(callable $callback, $initial) {} /** * Removes and returns a value by key, or return an optional default * value if the key could not be found. * * @template TDefault * @param TKey $key The key to remove. * @param TDefault $default The optional default value, returned if the key * could not be found. * * Note: Keys of type object are supported. If an object implements * Ds\Hashable, equality will be determined * by the object's equals function. If an object does not implement * Ds\Hashable, objects must be references to the same instance to be * considered equal. * * Note: You can also use array syntax to access values by key, eg. * $map["key"]. * * Caution: Be careful when using array syntax. Scalar keys will be * coerced to integers by the engine. For example, $map["1"] will * attempt to access int(1), while $map->get("1") will correctly look up * the string key. * * @return TValue|TDefault The value that was removed, or the default value if * provided and the key could not be found in the map. * * @throws OutOfBoundsException if the key could not be found and a * default value was not provided. * * @link https://www.php.net/manual/en/ds-map.remove.php */ public function remove($key, $default = null) {} /** * Reverses the map in-place. * * @link https://www.php.net/manual/en/ds-map.reverse.php */ public function reverse() {} /** * Returns a reversed copy of the map. * * @return Map A reversed copy of the map. * *

    Note: The current instance is not affected.

    * * @link https://www.php.net/manual/en/ds-map.reversed.php */ public function reversed(): Map {} /** * Returns the pair at a given zero-based position. * * @param int $position The zero-based positional index to return. * * @return Pair Returns the Ds\Pair at the given position. * * @throws OutOfRangeException if the position is not valid. * * @link https://www.php.net/manual/en/ds-map.skip.php */ public function skip(int $position): Pair {} /** * Returns a subset of the map defined by a starting index and length. * * @param int $index The index at which the range starts. If positive, * the range will start at that index in the map. If negative, the range * will start that far from the end. * * @param int|null $length If a length is given and is positive, the * resulting map will have up to that many pairs in it. If a length is * given and is negative, the range will stop that many pairs from the * end. If the length results in an overflow, only pairs up to the end * of the map will be included. If a length is not provided, the * resulting map will contain all pairs between the index and the end of * the map. * * @return Map A subset of the map defined by a starting index and * length. * * @link https://www.php.net/manual/en/ds-map.slice.php */ public function slice(int $index, ?int $length = null): Map {} /** * Sorts the map in-place by value, using an optional comparator * function. * * @param callable(TValue, TValue): int|null $comparator The comparison function must return * an integer less than, equal to, or greater than zero if the first * argument is considered to be respectively less than, equal to, or * greater than the second. Note that before PHP 7.0.0 this integer had * to be in the range from -2147483648 to 2147483647. * * callback ( mixed $a, mixed $b ) : int * * Caution: Returning non-integer values from the comparison function, * such as float, will result in an internal cast to integer of the * callback's return value. So values such as 0.99 and 0.1 will both be * cast to an integer value of 0, which will compare such values as * equal. * * @link https://www.php.net/manual/en/ds-map.sort.php */ public function sort(?callable $comparator = null) {} /** * Returns a copy, sorted by value using an optional comparator function. * * @param callable(TValue, TValue): int|null $comparator The comparison function must return * an integer less than, equal to, or greater than zero if the first * argument is considered to be respectively less than, equal to, or * greater than the second. Note that before PHP 7.0.0 this integer had * to be in the range from -2147483648 to 2147483647. * * callback ( mixed $a, mixed $b ) : int * * Caution: Returning non-integer values from the comparison function, * such as float, will result in an internal cast to integer of the * callback's return value. So values such as 0.99 and 0.1 will both be * cast to an integer value of 0, which will compare such values as * equal. * * @return Map * * @link https://www.php.net/manual/en/ds-map.sorted.php */ public function sorted(?callable $comparator = null): Map {} /** * Returns the sum of all values in the map. * * Note: Arrays and objects are considered equal to zero when * calculating the sum. * * @return float|int The sum of all the values in the map as either a * float or int depending on the values in the map. * * @link https://www.php.net/manual/en/ds-map.sum.php */ public function sum(): float|int {} /** * Creates a new map using values from the current instance and another * map. * * A ∪ B = {x: x ∈ A ∨ x ∈ B} * *

    Note: Values of the current instance will be overwritten by those * provided where keys are equal.

    * * @template TKey2 * @template TValue2 * @param Map $map The other map, to combine with the current instance. * * @return Map A new map containing all the pairs of the current * instance as well as another map. * * @link https://www.php.net/manual/en/ds-map.union.php */ public function union(Map $map): Map {} /** * Returns a sequence containing all the values of the map, in the same * order. * * @return Sequence A Ds\Sequence containing all the values of the map. * * @link https://www.php.net/manual/en/ds-map.values.php */ public function values(): Sequence {} /** * Creates a new map containing keys of the current instance as well as * another map, but not of both. * * A ⊖ B = {x : x ∈ (A \ B) ∪ (B \ A)} * * @template TKey2 * @template TValue2 * @param Map $map The other map. * * @return Map A new map containing keys in the current instance as well * as another map, but not in both. * * @link https://www.php.net/manual/en/ds-map.xor.php */ public function xor(Map $map): Map {} /** * @param TKey $offset */ public function offsetExists(mixed $offset): bool {} /** * @param TKey $offset * * @return TValue */ public function offsetGet(mixed $offset) {} /** * @param TKey $offset * @param TValue $value */ public function offsetSet(mixed $offset, mixed $value) {} /** * @param TKey $offset */ public function offsetUnset(mixed $offset): void {} } /** * A pair is used by Ds\Map to pair keys with values. * @package Ds * @template-covariant TKey * @template-covariant TValue */ class Pair implements JsonSerializable { /** * @var TKey */ public $key; /** * @var TValue */ public $value; /** * Creates a new instance using a given key and value. * * @param TKey $key * @param TValue $value * * @link https://php.net/manual/en/ds-pair.construct.php */ public function __construct($key = null, $value = null) {} /** * Removes all values from the pair. * * @link https://php.net/manual/en/ds-pair.clear.php */ public function clear() {} /** * Returns a shallow copy of the pair. * * @return Pair Returns a shallow copy of the pair. * * @link https://php.net/manual/en/ds-pair.copy.php */ public function copy(): Pair {} /** * Returns whether the pair is empty. * * @return bool Returns TRUE if the pair is empty, FALSE otherwise. * * @link https://php.net/manual/en/ds-pair.isempty.php */ public function isEmpty(): bool {} /** * Converts the pair to an array. * *

    Note: Casting to an array is not supported yet.

    * * @return array{key: TKey, value: TValue} An array containing all the values in the same order as * the pair. * * @link https://php.net/manual/en/ds-pair.toarray.php */ public function toArray(): array {} /** * Specify data which should be serialized to JSON * @link https://php.net/manual/en/ds-pair.jsonserialize.php * @return mixed data which can be serialized by json_encode, * which is a value of any type other than a resource. */ public function jsonSerialize() {} } /** * A Set is a sequence of unique values. This implementation uses the same * hash table as Ds\Map, where values are used as keys and the mapped value * is ignored. * * @link https://www.php.net/manual/en/class.ds-set.php * * @package Ds * @template TValue * @implements Collection */ class Set implements Collection, ArrayAccess { /** * Creates a new instance, using either a traversable object or an array * for the initial values. * * @param iterable $values A traversable object of an array to * use the initial values. * * @link https://php.net/manual/en/ds-set.construct.php */ public function __construct(iterable $values = []) {} /** * Adds all given values to the set that haven't already been added. * *

    Note: Values of type object are supported. If an object implements * Ds\Hashable, equality will be determined by the object's equals * function. If an object does not implement Ds\Hashable, objects must * be references to the same instance to be considered equal. * *

    Caution: All comparisons are strict (type and value). * * @param TValue ...$values Values to add to the set. * * @link https://php.net/manual/en/ds-set.add.php */ public function add(...$values) {} /** * Allocates enough memory for a required capacity. * * @param int $capacity The number of values for which capacity should * be allocated. * *

    Note: Capacity will stay the same if this value is less than or * equal to the current capacity. * *

    Capacity will always be rounded up to the nearest power of 2. * * @link https://php.net/manual/en/ds-set.allocate.php */ public function allocate(int $capacity) {} /** * Determines if the set contains all values. * *

    Values of type object are supported. If an object implements * Ds\Hashable, equality will be determined by the object's equals * function. If an object does not implement Ds\Hashable, objects must * be references to the same instance to be considered equal. * *

    Caution: All comparisons are strict (type and value). * * @param TValue ...$values Values to check. * * @return bool * * @link https://php.net/manual/en/ds-set.contains.php */ public function contains(...$values): bool {} /** * Returns the current capacity. * @link https://www.php.net/manual/en/ds-set.capacity.php * * @return int */ public function capacity(): int {} /** * Removes all values from the set. * @link https://www.php.net/manual/en/ds-set.clear.php */ public function clear(): void {} /** * Count elements of an object * @link https://php.net/manual/en/ds-set.count.php * @return int The custom count as an integer. *

    *

    * The return value is cast to an integer. * @since 5.1 */ public function count(): int {} /** * Returns a shallow copy of the set. * @link https://www.php.net/manual/en/ds-set.copy.php * @return Set */ public function copy(): Set {} /** * Creates a new set using values that aren't in another set. * * A \ B = {x ∈ A | x ∉ B} * * @link https://www.php.net/manual/en/ds-set.diff.php * * @template TValue2 * @param Set $set Set containing the values to exclude. * * @return Set A new set containing all values that were not in the * other set. */ public function diff(Set $set): Set {} /** * Creates a new set using a callable to determine which values to * include * * @link https://www.php.net/manual/en/ds-set.filter.php * * @param null|callable(TValue): bool $callback Optional callable which returns TRUE if the * value should be included, FALSE otherwise. * If a callback is not provided, only values which are TRUE (see * converting to boolean) will be included. * * @return Set A new set containing all the values for which either the * callback returned TRUE, or all values that convert to TRUE if a * callback was not provided. */ public function filter(?callable $callback = null): Set {} /** * Returns the first value in the set. * * @link https://www.php.net/manual/en/ds-set.first.php * * @return TValue The first value in the set. */ public function first() {} /** * Returns the value at a given index. * * @link https://www.php.net/manual/en/ds-set.get.php * * @param int $index The index to access, starting at 0. * * @return TValue The value at the requested index. */ public function get(int $index) {} /** * @return Traversable */ public function getIterator(): Traversable {} /** * Creates a new set using values common to both the current instance * and another set. In other words, returns a copy of the current * instance with all values removed that are not in the other set. * * A ∩ B = {x : x ∈ A ∧ x ∈ B} * * @link https://www.php.net/manual/en/ds-set.intersect.php * * @template TValue2 * @param Set $set The other set. * @return Set The intersection of the current instance and another set. */ public function intersect(Set $set): Set {} /** * Returns whether the set is empty. * @link https://www.php.net/manual/en/ds-set.isempty.php * * @return bool */ public function isEmpty(): bool {} /** * Joins all values together as a string using an optional separator * between each value. * * @link https://www.php.net/manual/en/ds-set.join.php * * @param null|string $glue An optional string to separate each value. * * @return string */ public function join(?string $glue = null): string {} /** * Returns the result of applying a callback function to each value in * the set. * @template TNewValue * @param callable(TValue): TNewValue $callback A callable to apply to each value in the * set. * The callable should return what the new value will be in the new * set. * callback ( mixed $value ) : mixed * @return Set The result of applying a callback to each value in * the set. *

    Note: The values of the current instance won't be affected.

    */ public function map(callable $callback): Set {} /** * Returns the result of adding all given values to the set. * *

    Note: The current instance won't be affected.

    * * @link https://www.php.net/manual/en/ds-set.merge.php * * @template TValue2 * @param iterable $values A traversable object or an array. * * @return Set The result of adding all given values to the set, * effectively the same as adding the values to a copy, then returning * that copy. */ public function merge($values): Set {} /** * Reduces the set to a single value using a callback function. * * @link https://www.php.net/manual/en/ds-set.reduce.php * * @template TCarry * @param callable(TCarry, TValue): TCarry $callback * callback ( mixed $carry , mixed $value ) : mixed * $carry The return value of the previous callback, or initial if * it's the first iteration. * $value The value of the current iteration. * * @param TCarry $initial The initial value of the carry value. Can be * NULL. * * @return TCarry The return value of the final callback. */ public function reduce(callable $callback, $initial = null) {} /** * Removes all given values from the set, ignoring any that are not in * the set. * * @link https://www.php.net/manual/en/ds-set.remove.php * * @param TValue ...$values The values to remove. */ public function remove(...$values) {} /** * Reverses the set in-place. * * @link https://www.php.net/manual/en/ds-set.reverse.php */ public function reverse() {} /** * Returns a reversed copy of the set. * * @link https://www.php.net/manual/en/ds-set.reversed.php * *

    Note: The current instance is not affected.

    * * @return Set A reversed copy of the set. */ public function reversed(): Set {} /** * Returns a sub-set of a given range * * @param int $index The index at which the sub-set starts. If positive, * the set will start at that index in * the set. If negative, the set will start that far from the end. * * @param int|null $length If a length is given and is positive, the * resulting set will have up to that many values in it. If the length * results in an overflow, only values up to the end of the set will be * included. If a length is given and is negative, the set will stop * that many values from the end. If a length is not provided, the * resulting set will contain all values between the index and the end * of the set. * * @return Set A sub-set of the given range. */ public function slice(int $index, ?int $length = null): Set {} /** * Returns the last value in the set. * * @link https://www.php.net/manual/en/ds-set.last.php * * @return TValue The last value in the set. * * @throws UnderflowException if empty. */ public function last() {} /** * Sorts the set in-place, using an optional comparator function. * * @param callable(TValue, TValue): int|null $comparator The comparison function must return * an integer less than, equal to, or greater than zero if the first * argument is considered to be respectively less than, equal to, or * greater than the second. Note that before PHP 7.0.0 this integer had * to be in the range from -2147483648 to 2147483647. * callback ( mixed $a, mixed $b ) : int * Caution: Returning non-integer values from the comparison * function, such as float, will result in an internal cast to integer * of the callback's return value. So values such as 0.99 and 0.1 will * both be cast to an integer value of 0, which will compare such values * as equal. * * @link https://www.php.net/manual/en/ds-set.sort.php */ public function sort(?callable $comparator = null) {} /** * Returns a sorted copy, using an optional comparator function. * * @link https://www.php.net/manual/en/ds-set.sorted.php * * @param null|callable(TValue, TValue): int $comparator The comparison function must return an * integer less than, equal to, or greater than zero if the first * argument is considered to be respectively less than, equal to, or * greater than the second. Note that before PHP 7.0.0 this integer had * to be in the range from -2147483648 to 2147483647. * * callback ( mixed $a, mixed $b ) : int * *

    Caution: Returning non-integer values from the comparison * function, such as float, will result in an * internal cast to integer of the callback's return value. So values * such as 0.99 and 0.1 will both be cast to an integer value of 0, * which will compare such values as equal.

    * * @return Set Returns a sorted copy of the set. */ public function sorted(?callable $comparator = null): Set {} /** * Returns the sum of all values in the set. * *

    Note: Arrays and objects are considered equal to zero when * calculating the sum.

    * * @link https://www.php.net/manual/en/ds-set.sum.php * * @return float|int The sum of all the values in the set as either a * float or int depending on the values in the set. */ public function sum(): float|int {} /** * Creates a new set that contains the values of the current instance as * well as the values of another set. * * A ∪ B = {x: x ∈ A ∨ x ∈ B} * * @link https://www.php.net/manual/en/ds-set.union.php * * @template TValue2 * @param Set $set The other set, to combine with the current instance. * * @return Set A new set containing all the values of the current * instance as well as another set. */ public function union(Set $set): Set {} /** * Creates a new set using values in either the current instance or in * another set, but not in both. * * A ⊖ B = {x : x ∈ (A \ B) ∪ (B \ A)} * * @link https://www.php.net/manual/en/ds-set.xor.php * * @template TValue2 * @param Set $set The other set. * * @return Set A new set containing values in the current instance as * well as another set, but not in both. */ public function xor(Set $set): Set {} /** * Converts the set to an array. *

    Note: Casting to an array is not supported yet.

    * @link https://www.php.net/manual/en/ds-set.toarray.php * @return array An array containing all the values in the same order as * the collection. */ public function toArray(): array {} /** * Specify data which should be serialized to JSON * @link https://php.net/manual/en/ds-set.jsonserialize.php * @return mixed data which can be serialized by json_encode, * which is a value of any type other than a resource. * @since 5.4 */ public function jsonSerialize() {} /** * @param int $offset */ public function offsetExists(mixed $offset): bool {} /** * @param int $offset * * @return TValue */ public function offsetGet(mixed $offset) {} /** * @param int $offset * @param TValue $value */ public function offsetSet(mixed $offset, mixed $value) {} /** * @param int $offset */ public function offsetUnset(mixed $offset): void {} } /** * A Stack is a “last in, first out” or “LIFO” collection that only allows * access to the value at the top of the structure and iterates in that * order, destructively. * * @package Ds * @template TValue * @implements Collection * * @link https://www.php.net/manual/en/class.ds-stack.php */ class Stack implements Collection, ArrayAccess { /** * Creates a new instance, using either a traversable object or an array * for the initial values. * * @link https://www.php.net/manual/en/ds-stack.construct.php * * @param iterable $values A traversable object or an * array to use for the initial values. */ public function __construct($values = []) {} /** * Ensures that enough memory is allocated for a required capacity. This * removes the need to reallocate the internal as values are added. * * @link https://www.php.net/manual/en/ds-stack.allocate.php * * @param int $capacity The number of values for which capacity should * be allocated. * *

    Note: Capacity will stay the same if this value is less than or * equal to the current capacity.

    */ public function allocate(int $capacity) {} /** * Returns the current capacity. * * @link https://www.php.net/manual/en/ds-stack.capacity.php * * @return int The current capacity. */ public function capacity(): int {} /** * Removes all values from the stack. * @link https://www.php.net/manual/en/ds-stack.clear.php */ public function clear(): void {} /** * Count elements of an object * @link https://php.net/manual/en/ds-stack.count.php * @return int The custom count as an integer. *

    *

    * The return value is cast to an integer. * @since 5.1 */ public function count(): int {} /** * Returns a shallow copy of the collection. * @link https://www.php.net/manual/en/ds-stack.copy.php * @return Stack */ public function copy(): Stack {} /** * @return Traversable */ public function getIterator(): Traversable {} /** * Returns whether the collection is empty. * @link https://www.php.net/manual/en/ds-stack.isempty.php * @return bool */ public function isEmpty(): bool {} /** * Converts the collection to an array. *

    Note: Casting to an array is not supported yet.

    * @link https://www.php.net/manual/en/ds-stack.toarray.php * @return array An array containing all the values in the same order as * the collection. */ public function toArray(): array {} /** * Specify data which should be serialized to JSON * @link https://php.net/manual/en/jsonserializable.jsonserialize.php * @return mixed data which can be serialized by json_encode, * which is a value of any type other than a resource. * @since 5.4 */ public function jsonSerialize() {} /** * Returns the value at the top of the stack, but does not remove it. * * @link https://www.php.net/manual/en/ds-queue.peek.php * * @return TValue The value at the top of the stack. * * @throws UnderflowException */ public function peek() {} /** * Removes and returns the value at the top of the stack. * * @link https://www.php.net/manual/en/ds-queue.pop.php * * @return TValue The removed value which was at the top of the stack. * * @throws UnderflowException */ public function pop() {} /** * Pushes values onto the stack. * * @link https://www.php.net/manual/en/ds-queue.push.php * * @param TValue ...$values The values to push onto the stack. */ public function push(...$values) {} /** * @param int $offset */ public function offsetExists(mixed $offset): bool {} /** * @param int $offset * * @return TValue */ public function offsetGet(mixed $offset) {} /** * @param int $offset * @param TValue $value */ public function offsetSet(mixed $offset, mixed $value) {} /** * @param int $offset */ public function offsetUnset(mixed $offset): void {} } /** * A Queue is a “first in, first out” or “FIFO” collection that only allows * access to the value at the front of the queue and iterates in that order, * destructively. * * Uses a Ds\Vector internally. * * @package Ds * @template TValue * @implements Collection */ class Queue implements Collection, ArrayAccess { /** * Creates a new instance, using either a traversable object or an array * for the initial values. * * @link https://www.php.net/manual/en/ds-queue.construct.php * * @param iterable $values A traversable object or an * array to use for the initial values. */ public function __construct($values = []) {} /** * Ensures that enough memory is allocated for a required capacity. This * removes the need to reallocate the internal as values are added. * * @link https://www.php.net/manual/en/ds-queue.allocate.php * * @param int $capacity The number of values for which capacity should * be allocated. * *

    Note: Capacity will stay the same if this value is less than or * equal to the current capacity.

    */ public function allocate(int $capacity) {} /** * Returns the current capacity. * * @link https://www.php.net/manual/en/ds-queue.capacity.php * * @return int The current capacity. */ public function capacity(): int {} /** * Removes all values from the queue. * @link https://www.php.net/manual/en/ds-queue.clear.php */ public function clear(): void {} /** * Count elements of an object * @link https://php.net/manual/en/ds-queue.count.php * @return int The custom count as an integer. *

    *

    * The return value is cast to an integer. * @since 5.1 */ public function count(): int {} /** * Returns a shallow copy of the collection. * @link https://www.php.net/manual/en/ds-queue.copy.php * @return Queue */ public function copy(): Queue {} /** * @return Traversable */ public function getIterator(): Traversable {} /** * Returns whether the collection is empty. * @link https://www.php.net/manual/en/ds-queue.isempty.php * @return bool */ public function isEmpty(): bool {} /** * Converts the collection to an array. *

    Note: Casting to an array is not supported yet.

    * @link https://www.php.net/manual/en/ds-queue.toarray.php * @return array An array containing all the values in the same order as * the collection. */ public function toArray(): array {} /** * Specify data which should be serialized to JSON * @link https://php.net/manual/en/jsonserializable.jsonserialize.php * @return mixed data which can be serialized by json_encode, * which is a value of any type other than a resource. * @since 5.4 */ public function jsonSerialize() {} /** * Returns the value at the top of the queue, but does not remove it. * * @link https://www.php.net/manual/en/ds-queue.peek.php * * @return TValue The value at the top of the queue. * * @throws UnderflowException */ public function peek() {} /** * Removes and returns the value at the top of the queue. * * @link https://www.php.net/manual/en/ds-queue.pop.php * * @return TValue The removed value which was at the top of the queue. * * @throws UnderflowException */ public function pop() {} /** * Pushes values onto the queue. * * @link https://www.php.net/manual/en/ds-queue.push.php * * @param TValue ...$values The values to push onto the queue. */ public function push(...$values) {} /** * @param int $offset */ public function offsetExists(mixed $offset): bool {} /** * @param int $offset * * @return TValue */ public function offsetGet(mixed $offset) {} /** * @param int $offset * @param TValue $value */ public function offsetSet(mixed $offset, mixed $value) {} /** * @param int $offset */ public function offsetUnset(mixed $offset): void {} } /** * A PriorityQueue is very similar to a Queue. Values are pushed into the * queue with an assigned priority, and the value with the highest priority * will always be at the front of the queue. * * Implemented using a max heap. * * @package Ds * @template TValue * @implements Collection * * @link https://www.php.net/manual/en/class.ds-priorityqueue.php */ class PriorityQueue implements Collection { public const MIN_CAPACITY = 8; /** * Count elements of an object * @link https://php.net/manual/en/countable.count.php * @return int The custom count as an integer. *

    *

    * The return value is cast to an integer. * @since 5.1 */ public function count(): int {} /** * Allocates enough memory for a required capacity * @link https://www.php.net/manual/en/ds-priorityqueue.allocate.php * * @param int $capacity */ public function allocate(int $capacity): void {} /** * Returns the current capacity * @link https://www.php.net/manual/en/ds-priorityqueue.capacity.php * * @return int */ public function capacity(): int {} /** * Removes all values from the collection. * @link https://www.php.net/manual/en/ds-collection.clear.php */ public function clear(): void {} /** * Returns a shallow copy of the collection. * @link https://www.php.net/manual/en/ds-collection.copy.php * @return PriorityQueue */ public function copy() {} /** * @return Traversable */ public function getIterator(): Traversable {} /** * Returns whether the collection is empty. * @link https://www.php.net/manual/en/ds-collection.isempty.php * @return bool */ public function isEmpty(): bool {} /** * Returns the value at the front of the queue, but does not remove it. * @link https://www.php.net/manual/en/ds-priorityqueue.peek.php * * @return TValue The value at the front of the queue. * @throws UnderflowException if empty. */ public function peek() {} /** * Removes and returns the value with the highest priority * @link https://www.php.net/manual/en/ds-priorityqueue.pop.php * * @return TValue The removed value which was at the front of the queue. * @throws UnderflowException if empty. */ public function pop() {} /** * Pushes a value with a given priority into the queue. * * @param TValue $value * @param int $priority */ public function push($value, int $priority) {} /** * Converts the collection to an array. *

    Note: Casting to an array is not supported yet.

    * @link https://www.php.net/manual/en/ds-collection.toarray.php * @return array An array containing all the values in the same order as * the collection. */ public function toArray(): array {} /** * Specify data which should be serialized to JSON * @link https://php.net/manual/en/jsonserializable.jsonserialize.php * @return mixed data which can be serialized by json_encode, * which is a value of any type other than a resource. * @since 5.4 */ public function jsonSerialize() {} } * You may specify a string with which to prompt the user. *

    * @return string|false a single string from the user. The line returned has the ending newline removed. * If there is no more data to read, then FALSE is returned. */ function readline(?string $prompt): string|false {} /** * Gets/sets various internal readline variables * @link https://php.net/manual/en/function.readline-info.php * @param string|null $var_name [optional]

    * A variable name. *

    * @param string $value [optional]

    * If provided, this will be the new value of the setting. *

    * @return mixed If called with no parameters, this function returns an array of * values for all the setting readline uses. The elements will * be indexed by the following values: done, end, erase_empty_line, * library_version, line_buffer, mark, pending_input, point, prompt, * readline_name, and terminal_name. *

    *

    * If called with one or two parameters, the old value is returned. */ #[ArrayShape([ 'line_buffer' => 'string', 'point' => 'int', 'end' => 'int', 'mark' => 'int', 'done' => 'int', 'pending_input' => 'int', 'prompt' => 'string', 'terminal_name' => 'string', 'completion_append_character' => 'string', 'completion_suppress_append' => 'bool', 'erase_empty_line' => 'int', 'library_version' => 'string', 'readline_name' => 'string', 'attempted_completion_over' => 'int', ])] function readline_info(?string $var_name, $value): mixed {} /** * Adds a line to the history * @link https://php.net/manual/en/function.readline-add-history.php * @param string $prompt

    * The line to be added in the history. *

    * @return bool TRUE on success or FALSE on failure. */ function readline_add_history(string $prompt): bool {} /** * Clears the history * @link https://php.net/manual/en/function.readline-clear-history.php * @return bool TRUE on success or FALSE on failure. */ function readline_clear_history(): bool {} /** * Lists the history * @link https://php.net/manual/en/function.readline-list-history.php * @return array an array of the entire command line history. The elements are * indexed by integers starting at zero. */ function readline_list_history(): array {} /** * Reads the history * @link https://php.net/manual/en/function.readline-read-history.php * @param string|null $filename [optional]

    * Path to the filename containing the command history. *

    * @return bool TRUE on success or FALSE on failure. */ function readline_read_history(?string $filename): bool {} /** * Writes the history * @link https://php.net/manual/en/function.readline-write-history.php * @param string|null $filename [optional]

    * Path to the saved file. *

    * @return bool TRUE on success or FALSE on failure. */ function readline_write_history(?string $filename): bool {} /** * Registers a completion function * @link https://php.net/manual/en/function.readline-completion-function.php * @param callable $callback

    * You must supply the name of an existing function which accepts a * partial command line and returns an array of possible matches. *

    * @return bool TRUE on success or FALSE on failure. */ function readline_completion_function(callable $callback): bool {} /** * Initializes the readline callback interface and terminal, prints the prompt and returns immediately * @link https://php.net/manual/en/function.readline-callback-handler-install.php * @param string $prompt

    * The prompt message. *

    * @param callable $callback

    * The callback function takes one parameter; the * user input returned. *

    * @return bool TRUE on success or FALSE on failure. */ function readline_callback_handler_install(string $prompt, callable $callback): bool {} /** * Reads a character and informs the readline callback interface when a line is received * @link https://php.net/manual/en/function.readline-callback-read-char.php * @return void No value is returned. */ function readline_callback_read_char(): void {} /** * Removes a previously installed callback handler and restores terminal settings * @link https://php.net/manual/en/function.readline-callback-handler-remove.php * @return bool TRUE if a previously installed callback handler was removed, or * FALSE if one could not be found. */ function readline_callback_handler_remove(): bool {} /** * Redraws the display * @link https://php.net/manual/en/function.readline-redisplay.php * @return void No value is returned. */ function readline_redisplay(): void {} /** * Inform readline that the cursor has moved to a new line * @link https://php.net/manual/en/function.readline-on-new-line.php * @return void No value is returned. */ function readline_on_new_line(): void {} define('READLINE_LIB', "readline"); // End of readline v.5.5.3-1ubuntu2.1 */ interface Traversable extends iterable {} /** * Interface to create an external Iterator. * @link https://php.net/manual/en/class.iteratoraggregate.php * @template TKey * @template-covariant TValue * @template-extends Traversable */ interface IteratorAggregate extends Traversable { /** * Retrieve an external iterator * @link https://php.net/manual/en/iteratoraggregate.getiterator.php * @return Traversable|TValue[] An instance of an object implementing Iterator or * Traversable * @throws Exception on failure. */ #[TentativeType] public function getIterator(): Traversable; } /** * Interface for external iterators or objects that can be iterated * themselves internally. * @link https://php.net/manual/en/class.iterator.php * @template TKey * @template-covariant TValue * @template-extends Traversable */ interface Iterator extends Traversable { /** * Return the current element * @link https://php.net/manual/en/iterator.current.php * @return TValue Can return any type. */ #[TentativeType] public function current(): mixed; /** * Move forward to next element * @link https://php.net/manual/en/iterator.next.php * @return void Any returned value is ignored. */ #[TentativeType] public function next(): void; /** * Return the key of the current element * @link https://php.net/manual/en/iterator.key.php * @return TKey|null TKey on success, or null on failure. */ #[TentativeType] public function key(): mixed; /** * Checks if current position is valid * @link https://php.net/manual/en/iterator.valid.php * @return bool The return value will be casted to boolean and then evaluated. * Returns true on success or false on failure. */ #[TentativeType] public function valid(): bool; /** * Rewind the Iterator to the first element * @link https://php.net/manual/en/iterator.rewind.php * @return void Any returned value is ignored. */ #[TentativeType] public function rewind(): void; } /** * Interface to provide accessing objects as arrays. * @link https://php.net/manual/en/class.arrayaccess.php * @template TKey * @template TValue */ interface ArrayAccess { /** * Whether a offset exists * @link https://php.net/manual/en/arrayaccess.offsetexists.php * @param TKey $offset

    * An offset to check for. *

    * @return bool true on success or false on failure. *

    *

    * The return value will be casted to boolean if non-boolean was returned. */ #[TentativeType] public function offsetExists(#[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $offset): bool; /** * Offset to retrieve * @link https://php.net/manual/en/arrayaccess.offsetget.php * @param TKey $offset

    * The offset to retrieve. *

    * @return TValue Can return all value types. */ #[TentativeType] public function offsetGet(#[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $offset): mixed; /** * Offset to set * @link https://php.net/manual/en/arrayaccess.offsetset.php * @param TKey $offset

    * The offset to assign the value to. *

    * @param TValue $value

    * The value to set. *

    * @return void */ #[TentativeType] public function offsetSet( #[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $offset, #[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $value ): void; /** * Offset to unset * @link https://php.net/manual/en/arrayaccess.offsetunset.php * @param TKey $offset

    * The offset to unset. *

    * @return void */ #[TentativeType] public function offsetUnset(#[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $offset): void; } /** * Interface for customized serializing.
    * As of PHP 8.1.0, a class which implements Serializable without also implementing `__serialize()` and `__unserialize()` * will generate a deprecation warning. * @link https://php.net/manual/en/class.serializable.php */ interface Serializable { /** * String representation of object. * @link https://php.net/manual/en/serializable.serialize.php * @return string|null The string representation of the object or null * @throws Exception Returning other type than string or null */ public function serialize(); /** * Constructs the object. * @link https://php.net/manual/en/serializable.unserialize.php * @param string $data The string representation of the object. * @return void */ public function unserialize(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $data); } /** * Throwable is the base interface for any object that can be thrown via a throw statement in PHP 7, * including Error and Exception. * @link https://php.net/manual/en/class.throwable.php * @since 7.0 */ interface Throwable extends Stringable { /** * Gets the message * @link https://php.net/manual/en/throwable.getmessage.php * @return string * @since 7.0 */ public function getMessage(): string; /** * Gets the exception code * @link https://php.net/manual/en/throwable.getcode.php * @return int

    * Returns the exception code as integer in * {@see Exception} but possibly as other type in * {@see Exception} descendants (for example as * string in {@see PDOException}). *

    * @since 7.0 */ public function getCode(); /** * Gets the file in which the exception occurred * @link https://php.net/manual/en/throwable.getfile.php * @return string Returns the name of the file from which the object was thrown. * @since 7.0 */ public function getFile(): string; /** * Gets the line on which the object was instantiated * @link https://php.net/manual/en/throwable.getline.php * @return int Returns the line number where the thrown object was instantiated. * @since 7.0 */ public function getLine(): int; /** * Gets the stack trace * @link https://php.net/manual/en/throwable.gettrace.php * @return array

    * Returns the stack trace as an array in the same format as * {@see debug_backtrace()}. *

    * @since 7.0 */ public function getTrace(): array; /** * Gets the stack trace as a string * @link https://php.net/manual/en/throwable.gettraceasstring.php * @return string Returns the stack trace as a string. * @since 7.0 */ public function getTraceAsString(): string; /** * Returns the previous Throwable * @link https://php.net/manual/en/throwable.getprevious.php * @return null|Throwable Returns the previous {@see Throwable} if available, or NULL otherwise. * @since 7.0 */ #[LanguageLevelTypeAware(['8.0' => 'Throwable|null'], default: '')] public function getPrevious(); /** * Gets a string representation of the thrown object * @link https://php.net/manual/en/throwable.tostring.php * @return string

    Returns the string representation of the thrown object.

    * @since 7.0 */ public function __toString(); } /** * Exception is the base class for * all Exceptions. * @link https://php.net/manual/en/class.exception.php */ class Exception implements Throwable { /** The error message */ protected $message; /** The error code */ protected $code; /** The filename where the error happened */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] protected $file; /** The line where the error happened */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] protected $line; /** * Clone the exception * Tries to clone the Exception, which results in Fatal error. * @link https://php.net/manual/en/exception.clone.php * @return void */ #[PhpStormStubsElementAvailable(from: "5.4", to: "8.0")] final private function __clone(): void {} /** * Clone the exception * Tries to clone the Exception, which results in Fatal error. * @link https://php.net/manual/en/exception.clone.php * @return void */ #[PhpStormStubsElementAvailable("8.1")] private function __clone(): void {} /** * Construct the exception. Note: The message is NOT binary safe. * @link https://php.net/manual/en/exception.construct.php * @param string $message [optional] The Exception message to throw. * @param int $code [optional] The Exception code. * @param null|Throwable $previous [optional] The previous throwable used for the exception chaining. */ #[Pure] public function __construct( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $message = "", #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $code = 0, #[LanguageLevelTypeAware(['8.0' => 'Throwable|null'], default: 'Throwable')] $previous = null ) {} /** * Gets the Exception message * @link https://php.net/manual/en/exception.getmessage.php * @return string the Exception message as a string. */ #[Pure] final public function getMessage(): string {} /** * Gets the Exception code * @link https://php.net/manual/en/exception.getcode.php * @return mixed|int the exception code as integer in * Exception but possibly as other type in * Exception descendants (for example as * string in PDOException). */ #[Pure] final public function getCode() {} /** * Gets the file in which the exception occurred * @link https://php.net/manual/en/exception.getfile.php * @return string the filename in which the exception was created. */ #[Pure] final public function getFile(): string {} /** * Gets the line in which the exception occurred * @link https://php.net/manual/en/exception.getline.php * @return int the line number where the exception was created. */ #[Pure] final public function getLine(): int {} /** * Gets the stack trace * @link https://php.net/manual/en/exception.gettrace.php * @return array the Exception stack trace as an array. */ #[Pure] final public function getTrace(): array {} /** * Returns previous Exception * @link https://php.net/manual/en/exception.getprevious.php * @return null|Throwable Returns the previous {@see Throwable} if available, or NULL otherwise. * or null otherwise. */ #[Pure] final public function getPrevious(): ?Throwable {} /** * Gets the stack trace as a string * @link https://php.net/manual/en/exception.gettraceasstring.php * @return string the Exception stack trace as a string. */ #[Pure] final public function getTraceAsString(): string {} /** * String representation of the exception * @link https://php.net/manual/en/exception.tostring.php * @return string the string representation of the exception. */ #[TentativeType] public function __toString(): string {} #[TentativeType] public function __wakeup(): void {} } /** * Error is the base class for all internal PHP error exceptions. * @link https://php.net/manual/en/class.error.php * @since 7.0 */ class Error implements Throwable { /** The error message */ protected $message; /** The error code */ protected $code; /** The filename where the error happened */ #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] protected $file; /** The line where the error happened */ #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] protected $line; /** * Construct the error object. * @link https://php.net/manual/en/error.construct.php * @param string $message [optional] The Error message to throw. * @param int $code [optional] The Error code. * @param null|Throwable $previous [optional] The previous throwable used for the exception chaining. */ #[Pure] public function __construct( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $message = "", #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $code = 0, #[LanguageLevelTypeAware(['8.0' => 'Throwable|null'], default: 'Throwable')] $previous = null ) {} /*** * Gets the message * @link https://php.net/manual/en/throwable.getmessage.php * @return string * @since 7.0 */ final public function getMessage(): string {} /** * Gets the exception code * @link https://php.net/manual/en/throwable.getcode.php * @return int

    * Returns the exception code as integer in * {@see Exception} but possibly as other type in * {@see Exception} descendants (for example as * string in {@see PDOException}). *

    * @since 7.0 */ final public function getCode() {} /** * Gets the file in which the exception occurred * @link https://php.net/manual/en/throwable.getfile.php * @return string Returns the name of the file from which the object was thrown. * @since 7.0 */ final public function getFile(): string {} /** * Gets the line on which the object was instantiated * @link https://php.net/manual/en/throwable.getline.php * @return int Returns the line number where the thrown object was instantiated. * @since 7.0 */ final public function getLine(): int {} /** * Gets the stack trace * @link https://php.net/manual/en/throwable.gettrace.php * @return array

    * Returns the stack trace as an array in the same format as * {@see debug_backtrace()}. *

    * @since 7.0 */ final public function getTrace(): array {} /** * Gets the stack trace as a string * @link https://php.net/manual/en/throwable.gettraceasstring.php * @return string Returns the stack trace as a string. * @since 7.0 */ final public function getTraceAsString(): string {} /** * Returns the previous Throwable * @link https://php.net/manual/en/throwable.getprevious.php * @return null|Throwable Returns the previous {@see Throwable} if available, or NULL otherwise. * @since 7.0 */ final public function getPrevious(): ?Throwable {} /** * Gets a string representation of the thrown object * @link https://php.net/manual/en/throwable.tostring.php * @return string

    Returns the string representation of the thrown object.

    * @since 7.0 */ public function __toString(): string {} /** * Clone the error * Error can not be clone, so this method results in fatal error. * @return void * @link https://php.net/manual/en/error.clone.php */ #[PhpStormStubsElementAvailable(from: "7.0", to: "8.0")] final private function __clone(): void {} /** * Clone the error * Error can not be clone, so this method results in fatal error. * @return void * @link https://php.net/manual/en/error.clone.php */ #[PhpStormStubsElementAvailable('8.1')] private function __clone(): void {} #[TentativeType] public function __wakeup(): void {} } class ValueError extends Error {} /** * There are three scenarios where a TypeError may be thrown. * The first is where the argument type being passed to a function does not match its corresponding declared * parameter type. The second is where a value being returned from a function does not match the declared function return type. The third is where an * invalid number of arguments are passed to a built-in PHP function (strict mode only). * @link https://php.net/manual/en/class.typeerror.php * @since 7.0 */ class TypeError extends Error {} /** * ParseError is thrown when an error occurs while parsing PHP code, such as when {@see eval()} is called. * @link https://php.net/manual/en/class.parseerror.php * @since 7.0 */ class ParseError extends CompileError {} /** * ArgumentCountError is thrown when too few arguments are passed to a user * defined routine. * * @since 7.1 * @see https://php.net/migration71.incompatible#migration71.incompatible.too-few-arguments-exception */ class ArgumentCountError extends TypeError {} /** * ArithmeticError is thrown when an error occurs while performing mathematical operations. * In PHP 7.0, these errors include attempting to perform a bitshift by a negative amount, * and any call to {@see intdiv()} that would result in a value outside the possible bounds of an integer. * @link https://php.net/manual/en/class.arithmeticerror.php * @since 7.0 */ class ArithmeticError extends Error {} /** * Class CompileError * @link https://secure.php.net/manual/en/class.compileerror.php * @since 7.3 */ class CompileError extends Error {} /** * DivisionByZeroError is thrown when an attempt is made to divide a number by zero. * @link https://php.net/manual/en/class.divisionbyzeroerror.php * @since 7.0 */ class DivisionByZeroError extends ArithmeticError {} /** * @since 8.0 */ class UnhandledMatchError extends Error {} /** * @since 8.4 */ class RequestParseBodyException extends Exception {} /** * An Error Exception. * @link https://php.net/manual/en/class.errorexception.php */ class ErrorException extends Exception { #[LanguageLevelTypeAware(['8.1' => 'int'], default: '')] protected $severity; /** * Constructs the exception * @link https://php.net/manual/en/errorexception.construct.php * @param string $message [optional] The Exception message to throw. * @param int $code [optional] The Exception code. * @param int $severity [optional] The severity level of the exception. * @param string $filename [optional] The filename where the exception is thrown. * @param int $line [optional] The line number where the exception is thrown. * @param Exception $previous [optional] The previous exception used for the exception chaining. */ #[Pure] public function __construct( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $message = "", #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $code = 0, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $severity = 1, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $filename = null, #[LanguageLevelTypeAware(['8.0' => 'int|null'], default: '')] $line = null, #[LanguageLevelTypeAware(['8.0' => 'Throwable|null'], default: 'Throwable')] $previous = null ) {} /** * Gets the exception severity * @link https://php.net/manual/en/errorexception.getseverity.php * @return int the severity level of the exception. */ final public function getSeverity(): int {} } /** * Class used to represent anonymous functions. *

    Anonymous functions, implemented in PHP 5.3, yield objects of this type. * This fact used to be considered an implementation detail, but it can now be relied upon. * Starting with PHP 5.4, this class has methods that allow further control of the anonymous function after it has been created. *

    Besides the methods listed here, this class also has an __invoke method. * This is for consistency with other classes that implement calling magic, as this method is not used for calling the function. * @link https://secure.php.net/manual/en/class.closure.php */ final class Closure { /** * This method exists only to disallow instantiation of the Closure class. * Objects of this class are created in the fashion described on the anonymous functions page. * @link https://secure.php.net/manual/en/closure.construct.php */ private function __construct() {} /** * This is for consistency with other classes that implement calling magic, * as this method is not used for calling the function. * @param mixed ...$_ [optional] * @return mixed * @link https://secure.php.net/manual/en/class.closure.php */ public function __invoke(...$_) {} /** * Duplicates the closure with a new bound object and class scope * @link https://secure.php.net/manual/en/closure.bindto.php * @param object|null $newThis The object to which the given anonymous function should be bound, or NULL for the closure to be unbound. * @param object|class-string|null $newScope The class scope to which associate the closure is to be associated, or 'static' to keep the current one. * If an object is given, the type of the object will be used instead. * This determines the visibility of protected and private methods of the bound object. * @return Closure|null Returns the newly created Closure object or null on failure */ #[Pure] public function bindTo(?object $newThis, object|string|null $newScope = 'static'): ?Closure {} /** * This method is a static version of Closure::bindTo(). * See the documentation of that method for more information. * @link https://secure.php.net/manual/en/closure.bind.php * @param Closure $closure The anonymous functions to bind. * @param object|null $newThis The object to which the given anonymous function should be bound, or NULL for the closure to be unbound. * @param object|class-string|null $newScope The class scope to which associate the closure is to be associated, or 'static' to keep the current one. * If an object is given, the type of the object will be used instead. * This determines the visibility of protected and private methods of the bound object. * @return Closure|null Returns the newly created Closure object or null on failure */ #[Pure] public static function bind(Closure $closure, ?object $newThis, object|string|null $newScope = 'static'): ?Closure {} /** * Temporarily binds the closure to newthis, and calls it with any given parameters. * @link https://php.net/manual/en/closure.call.php * @param object $newThis The object to bind the closure to for the duration of the call. * @param mixed $args [optional] Zero or more parameters, which will be given as parameters to the closure. * @return mixed * @since 7.0 */ public function call(object $newThis, mixed ...$args): mixed {} /** * @param callable $callback * @return Closure * @since 7.1 */ public static function fromCallable(callable $callback): Closure {} } /** * Classes implementing Countable can be used with the * count function. * @link https://php.net/manual/en/class.countable.php */ interface Countable { /** * Count elements of an object * @link https://php.net/manual/en/countable.count.php * @return int<0,max> The custom count as an integer. *

    * The return value is cast to an integer. *

    */ #[TentativeType] public function count(): int; } /** * Weak references allow the programmer to retain a reference to an * object which does not prevent the object from being destroyed. * They are useful for implementing cache like structures. * @template T of object * @link https://www.php.net/manual/en/class.weakreference.php * @since 7.4 */ final class WeakReference { /** * This method exists only to disallow instantiation of the WeakReference * class. Weak references are to be instantiated with the factory method * WeakReference::create(). */ public function __construct() {} /** * Create a new weak reference. * @link https://www.php.net/manual/en/weakreference.create.php * @template TIn of object * @param TIn $object Any object. * @return WeakReference The freshly instantiated object. * @since 7.4 */ #[Pure] public static function create(object $object): WeakReference {} /** * Gets a weakly referenced object. If the object has already been * destroyed, NULL is returned. * @link https://www.php.net/manual/en/weakreference.get.php * @return T|null * @since 7.4 */ #[Pure] public function get(): ?object {} } /** * Weak maps allow creating a map from objects to arbitrary values * (similar to SplObjectStorage) without preventing the objects that are used * as keys from being garbage collected. If an object key is garbage collected, * it will simply be removed from the map. * * @since 8.0 * * @template TKey of object * @template TValue * @template-implements IteratorAggregate */ final class WeakMap implements ArrayAccess, Countable, IteratorAggregate { /** * Returns {@see true} if the value for the object is contained in * the {@see WeakMap} and {@see false} instead. * * @param TKey $object Any object * @return bool */ #[Pure] public function offsetExists($object): bool {} /** * Returns the existsing value by an object. * * @param TKey $object Any object * @return TValue Value associated with the key object */ #[Pure] public function offsetGet($object): mixed {} /** * Sets a new value for an object. * * @param TKey $object Any object * @param TValue $value Any value * @return void */ public function offsetSet($object, mixed $value): void {} /** * Force removes an object value from the {@see WeakMap} instance. * * @param TKey $object Any object * @return void */ public function offsetUnset($object): void {} /** * Returns an iterator in the "[object => mixed]" format. * * @return Iterator */ #[Pure] public function getIterator(): Iterator {} /** * Returns the number of items in the {@see WeakMap} instance. * * @return int<0,max> */ #[Pure] public function count(): int {} } /** * Stringable interface denotes a class as having a __toString() method. * * @since 8.0 */ interface Stringable { /** * Magic method {@see https://www.php.net/manual/en/language.oop5.magic.php#object.tostring} * allows a class to decide how it will react when it is treated like a string. * * @return string Returns string representation of the object that * implements this interface (and/or "__toString" magic method). */ public function __toString(): string; } /** * @since 8.0 */ #[Attribute(Attribute::TARGET_CLASS)] final class Attribute { public int $flags; /** * Marks that attribute declaration is allowed only in classes. */ public const TARGET_CLASS = 1; /** * Marks that attribute declaration is allowed only in functions. */ public const TARGET_FUNCTION = 2; /** * Marks that attribute declaration is allowed only in class methods. */ public const TARGET_METHOD = 4; /** * Marks that attribute declaration is allowed only in class properties. */ public const TARGET_PROPERTY = 8; /** * Marks that attribute declaration is allowed only in class constants. */ public const TARGET_CLASS_CONSTANT = 16; /** * Marks that attribute declaration is allowed only in function or method parameters. */ public const TARGET_PARAMETER = 32; /** * Marks that attribute declaration is allowed anywhere. */ public const TARGET_ALL = 63; /** * Notes that an attribute declaration in the same place is * allowed multiple times. */ public const IS_REPEATABLE = 64; /** * @param int $flags A value in the form of a bitmask indicating the places * where attributes can be defined. */ public function __construct(#[ExpectedValues(flagsFromClass: Attribute::class)] int $flags = self::TARGET_ALL) {} } /** * @since 8.0 */ final class InternalIterator implements Iterator { private function __construct() {} public function current(): mixed {} public function next(): void {} public function key(): mixed {} public function valid(): bool {} public function rewind(): void {} } /** * @since 8.1 */ interface UnitEnum { public readonly string $name; /** * @return static[] */ #[Pure] public static function cases(): array; } /** * @since 8.1 */ interface BackedEnum extends UnitEnum { public readonly int|string $value; /** * Translates a string or int into the corresponding Enum * case, if any. If there is no matching case defined, it will throw a * ValueError. * @param int|string $value * @throws ValueError * @throws TypeError * @return static * @link https://www.php.net/manual/en/backedenum.from.php */ #[Pure] public static function from(int|string $value): static; /** * Translates a string or int into the corresponding Enum * case, if any. If there is no matching case defined, it will return null. * @param int|string $value * @return static|null A case instance of this enumeration, or null if not * found. * @link https://www.php.net/manual/en/backedenum.tryfrom.php */ #[Pure] public static function tryFrom(int|string $value): ?static; } /** * @since 8.1 * @internal * * Internal interface to ensure precise type inference */ interface IntBackedEnum extends BackedEnum { public readonly int $value; /** * @param int $value * @return static */ #[Pure] public static function from(int $value): static; /** * @param int $value * @return static|null */ #[Pure] public static function tryFrom(int $value): ?static; } /** * @since 8.1 * @internal * * Internal interface to ensure precise type inference */ interface StringBackedEnum extends BackedEnum { public readonly string $value; #[Pure] public static function from(string $value): static; #[Pure] public static function tryFrom(string $value): ?static; } /** * @since 8.1 * * @template TStart * @template TResume * @template TReturn * @template TSuspend */ final class Fiber { /** * @param callable $callback Function to invoke when starting the fiber. */ public function __construct(callable $callback) {} /** * Starts execution of the fiber. Returns when the fiber suspends or terminates. * * @param TStart ...$args Arguments passed to fiber function. * * @return TSuspend|null Value from the first suspension point or NULL if the fiber returns. * * @throws FiberError If the fiber has already been started. * @throws Throwable If the fiber callable throws an uncaught exception. */ public function start(mixed ...$args): mixed {} /** * Resumes the fiber, returning the given value from {@see Fiber::suspend()}. * Returns when the fiber suspends or terminates. * * @param TResume $value * * @return TSuspend|null Value from the next suspension point or NULL if the fiber returns. * * @throws FiberError If the fiber has not started, is running, or has terminated. * @throws Throwable If the fiber callable throws an uncaught exception. */ public function resume(mixed $value = null): mixed {} /** * Throws the given exception into the fiber from {@see Fiber::suspend()}. * Returns when the fiber suspends or terminates. * * @param Throwable $exception * * @return TSuspend|null Value from the next suspension point or NULL if the fiber returns. * * @throws FiberError If the fiber has not started, is running, or has terminated. * @throws Throwable If the fiber callable throws an uncaught exception. */ public function throw(Throwable $exception): mixed {} /** * @return bool True if the fiber has been started. */ public function isStarted(): bool {} /** * @return bool True if the fiber is suspended. */ public function isSuspended(): bool {} /** * @return bool True if the fiber is currently running. */ public function isRunning(): bool {} /** * @return bool True if the fiber has completed execution (returned or threw). */ public function isTerminated(): bool {} /** * @return TReturn Return value of the fiber callback. NULL is returned if the fiber does not have a return statement. * * @throws FiberError If the fiber has not terminated or the fiber threw an exception. */ public function getReturn(): mixed {} /** * @return Fiber|null Returns the currently executing fiber instance or NULL if in {main}. */ public static function getCurrent(): ?Fiber {} /** * Suspend execution of the fiber. The fiber may be resumed with {@see Fiber::resume()} or {@see Fiber::throw()}. * * Cannot be called from {main}. * * @param TSuspend $value Value to return from {@see Fiber::resume()} or {@see Fiber::throw()}. * * @return TResume Value provided to {@see Fiber::resume()}. * * @throws FiberError Thrown if not within a fiber (i.e., if called from {main}). * @throws Throwable Exception provided to {@see Fiber::throw()}. */ public static function suspend(mixed $value = null): mixed {} } /** * @since 8.1 */ final class FiberError extends Error { public function __construct() {} } /** * @since 8.1 */ #[Attribute(Attribute::TARGET_METHOD)] final class ReturnTypeWillChange { public function __construct() {} } /** * @since 8.2 */ #[Attribute(Attribute::TARGET_CLASS)] final class AllowDynamicProperties { public function __construct() {} } /** * @since 8.2 */ #[Attribute(Attribute::TARGET_PARAMETER)] final class SensitiveParameter { public function __construct() {} } /** * @since 8.2 */ final class SensitiveParameterValue { private readonly mixed $value; public function __construct(mixed $value) {} public function getValue(): mixed {} public function __debugInfo(): array {} } /** * @since 8.3 */ #[Attribute(Attribute::TARGET_METHOD)] final class Override { public function __construct() {} } /** * @since 8.4 */ #[Attribute(Attribute::TARGET_METHOD|Attribute::TARGET_FUNCTION|Attribute::TARGET_CLASS_CONSTANT)] final class Deprecated { public readonly ?string $message; public readonly ?string $since; public function __construct(?string $message = null, ?string $since = null) {} } set_error_handler), the application aborts as it * was an E_ERROR. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_RECOVERABLE_ERROR', 4096); /** * Run-time warnings (non-fatal errors). Execution of the script is not * halted. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_WARNING', 2); /** * Compile-time parse errors. Parse errors should only be generated by * the parser. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_PARSE', 4); /** * Run-time notices. Indicate that the script encountered something that * could indicate an error, but could also happen in the normal course of * running a script. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_NOTICE', 8); /** * Enable to have PHP suggest changes * to your code which will ensure the best interoperability * and forward compatibility of your code. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_STRICT', 2048); /** * Run-time notices. Enable this to receive warnings about code * that will not work in future versions. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_DEPRECATED', 8192); /** * Fatal errors that occur during PHP's initial startup. This is like an * E_ERROR, except it is generated by the core of PHP. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_CORE_ERROR', 16); /** * Warnings (non-fatal errors) that occur during PHP's initial startup. * This is like an E_WARNING, except it is generated * by the core of PHP. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_CORE_WARNING', 32); /** * Fatal compile-time errors. This is like an E_ERROR, * except it is generated by the Zend Scripting Engine. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_COMPILE_ERROR', 64); /** * Compile-time warnings (non-fatal errors). This is like an * E_WARNING, except it is generated by the Zend * Scripting Engine. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_COMPILE_WARNING', 128); /** * User-generated error message. This is like an * E_ERROR, except it is generated in PHP code by * using the PHP function trigger_error. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_USER_ERROR', 256); /** * User-generated warning message. This is like an * E_WARNING, except it is generated in PHP code by * using the PHP function trigger_error. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_USER_WARNING', 512); /** * User-generated notice message. This is like an * E_NOTICE, except it is generated in PHP code by * using the PHP function trigger_error. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_USER_NOTICE', 1024); /** * User-generated warning message. This is like an * E_DEPRECATED, except it is generated in PHP code by * using the PHP function trigger_error. * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_USER_DEPRECATED', 16384); /** * All errors and warnings, as supported, except of level * E_STRICT prior to PHP 5.4.0. * Value of E_ALL is 32767 since PHP 5.4.x, * 30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously * @link https://php.net/manual/en/errorfunc.constants.php */ define('E_ALL', 32767); define('DEBUG_BACKTRACE_PROVIDE_OBJECT', 1); define('DEBUG_BACKTRACE_IGNORE_ARGS', 2); define('S_MEMORY', 1); define('S_VARS', 4); define('S_FILES', 8); define('S_INCLUDE', 16); define('S_SQL', 32); define('S_EXECUTOR', 64); define('S_MAIL', 128); define('S_SESSION', 256); define('S_MISC', 2); define('S_INTERNAL', 536870912); define('S_ALL', 511); define('true', (bool)1, true); define('false', (bool)0, true); define('null', null, true); define('ZEND_THREAD_SAFE', false); define('ZEND_DEBUG_BUILD', false); define('PHP_WINDOWS_VERSION_BUILD', 0); define('PHP_WINDOWS_VERSION_MAJOR', 0); define('PHP_WINDOWS_VERSION_MINOR', 0); define('PHP_WINDOWS_VERSION_PLATFORM', 0); define('PHP_WINDOWS_VERSION_PRODUCTTYPE', 0); define('PHP_WINDOWS_VERSION_SP_MAJOR', 0); define('PHP_WINDOWS_VERSION_SP_MINOR', 0); define('PHP_WINDOWS_VERSION_SUITEMASK', 0); define('PHP_WINDOWS_NT_DOMAIN_CONTROLLER', 2); define('PHP_WINDOWS_NT_SERVER', 3); define('PHP_WINDOWS_NT_WORKSTATION', 1); /** * @since 7.4 */ define('PHP_WINDOWS_EVENT_CTRL_C', 0); /** * @since 7.4 */ define('PHP_WINDOWS_EVENT_CTRL_BREAK', 1); define('PHP_VERSION', "5.3.6-13ubuntu3.2"); define('PHP_MAJOR_VERSION', 5); define('PHP_MINOR_VERSION', 3); define('PHP_RELEASE_VERSION', 6); define('PHP_EXTRA_VERSION', "-13ubuntu3.2"); define('PHP_VERSION_ID', 50306); define('PHP_ZTS', 0); define('PHP_DEBUG', 0); define('PHP_OS', "Linux"); /** * The operating system family PHP was built for. Either of 'Windows', 'BSD', 'Darwin', 'Solaris', 'Linux' or 'Unknown'. Available as of PHP 7.2.0. * @since 7.2 */ define('PHP_OS_FAMILY', "Linux"); define('PHP_SAPI', "cli"); /** * @since 7.4 */ define('PHP_CLI_PROCESS_TITLE', 1); define('DEFAULT_INCLUDE_PATH', ".:/usr/share/php:/usr/share/pear"); define('PEAR_INSTALL_DIR', "/usr/share/php"); define('PEAR_EXTENSION_DIR', "/usr/lib/php5/20090626"); define('PHP_EXTENSION_DIR', "/usr/lib/php5/20090626"); /** * Specifies where the binaries were installed into. * @link https://php.net/manual/en/reserved.constants.php */ define('PHP_BINARY', '/usr/local/php/bin/php'); define('PHP_PREFIX', "/usr"); define('PHP_BINDIR', "/usr/bin"); define('PHP_LIBDIR', "/usr/lib/php5"); define('PHP_DATADIR', "/usr/share"); define('PHP_SYSCONFDIR', "/etc"); define('PHP_LOCALSTATEDIR', "/var"); define('PHP_CONFIG_FILE_PATH', "/etc/php5/cli"); define('PHP_CONFIG_FILE_SCAN_DIR', "/etc/php5/cli/conf.d"); define('PHP_SHLIB_SUFFIX', "so"); define('PHP_EOL', "\n"); define('SUHOSIN_PATCH', 1); define('SUHOSIN_PATCH_VERSION', "0.9.10"); define('PHP_MAXPATHLEN', 4096); define('PHP_INT_MAX', 9223372036854775807); define('PHP_INT_MIN', -9223372036854775808); define('PHP_INT_SIZE', 8); /** * Number of decimal digits that can be rounded into a float and back without precision loss. Available as of PHP 7.2.0. * @since 7.2 */ define('PHP_FLOAT_DIG', 15); /** * Smallest representable positive number x, so that x + 1.0 != 1.0. Available as of PHP 7.2.0. * @since 7.2 */ define('PHP_FLOAT_EPSILON', 2.2204460492503e-16); /** * Largest representable floating point number. Available as of PHP 7.2.0. * @since 7.2 */ define('PHP_FLOAT_MAX', 1.7976931348623e+308); /** * Smallest representable floating point number. Available as of PHP 7.2.0. * @since 7.2 */ define('PHP_FLOAT_MIN', 2.2250738585072e-308); define('ZEND_MULTIBYTE', 0); define('PHP_OUTPUT_HANDLER_START', 1); define('PHP_OUTPUT_HANDLER_CONT', 2); define('PHP_OUTPUT_HANDLER_END', 4); define('UPLOAD_ERR_OK', 0); define('UPLOAD_ERR_INI_SIZE', 1); define('UPLOAD_ERR_FORM_SIZE', 2); define('UPLOAD_ERR_PARTIAL', 3); define('UPLOAD_ERR_NO_FILE', 4); define('UPLOAD_ERR_NO_TMP_DIR', 6); define('UPLOAD_ERR_CANT_WRITE', 7); define('UPLOAD_ERR_EXTENSION', 8); define('STDIN', fopen('php://stdin', 'r')); define('STDOUT', fopen('php://stdout', 'w')); define('STDERR', fopen('php://stderr', 'w')); define('PHP_FD_SETSIZE', 1024); /** @link https://php.net/manual/en/outcontrol.constants.php */ define('PHP_OUTPUT_HANDLER_WRITE', 0); /** @link https://php.net/manual/en/outcontrol.constants.php */ define('PHP_OUTPUT_HANDLER_FLUSH', 4); /** @link https://php.net/manual/en/outcontrol.constants.php */ define('PHP_OUTPUT_HANDLER_CLEAN', 2); /** @link https://php.net/manual/en/outcontrol.constants.php */ define('PHP_OUTPUT_HANDLER_FINAL', 8); /** @link https://php.net/manual/en/outcontrol.constants.php */ define('PHP_OUTPUT_HANDLER_CLEANABLE', 16); /** @link https://php.net/manual/en/outcontrol.constants.php */ define('PHP_OUTPUT_HANDLER_FLUSHABLE', 32); /** @link https://php.net/manual/en/outcontrol.constants.php */ define('PHP_OUTPUT_HANDLER_REMOVABLE', 64); /** @link https://php.net/manual/en/outcontrol.constants.php */ define('PHP_OUTPUT_HANDLER_STDFLAGS', 112); /** @link https://php.net/manual/en/outcontrol.constants.php */ define('PHP_OUTPUT_HANDLER_STARTED', 4096); /** @link https://php.net/manual/en/outcontrol.constants.php */ define('PHP_OUTPUT_HANDLER_DISABLED', 8192); /** * @since 8.4 */ const PHP_SBINDIR = '/usr/local/sbin', PHP_OUTPUT_HANDLER_PROCESSED = 16384; /** * Specifies where the manpages were installed into. * @since 5.3.7 * @link https://php.net/manual/en/reserved.constants.php */ define('PHP_MANDIR', '/usr/local/php/php/man'); * The argument offset. Function arguments are counted starting from * zero. *

    * @return mixed|false the specified argument, or false on error. */ #[Pure] function func_get_arg(int $position): mixed {} /** * Returns an array comprising a function's argument list * @link https://php.net/manual/en/function.func-get-args.php * @return array an array in which each element is a copy of the corresponding * member of the current user-defined function's argument list. */ #[Pure] function func_get_args(): array {} /** * Get string length * @link https://php.net/manual/en/function.strlen.php * @param string $string

    * The string being measured for length. *

    * @return int<0,max> The length of the string on success, * and 0 if the string is empty. */ #[Pure] function strlen(string $string): int {} /** * Binary safe string comparison * @link https://php.net/manual/en/function.strcmp.php * @param string $string1

    * The first string. *

    * @param string $string2

    * The second string. *

    * @return int less 0 if str1 is less than * str2; > 0 if str1 * is greater than str2, and 0 if they are * equal. */ #[Pure] function strcmp(string $string1, string $string2): int {} /** * Binary safe string comparison of the first n characters * @link https://php.net/manual/en/function.strncmp.php * @param string $string1

    * The first string. *

    * @param string $string2

    * The second string. *

    * @param int $length

    * Number of characters to use in the comparison. *

    * @return int less 0 if str1 is less than * str2; > 0 if str1 * is greater than str2, and 0 if they are * equal. */ #[Pure] function strncmp(string $string1, string $string2, int $length): int {} /** * Binary safe case-insensitive string comparison * @link https://php.net/manual/en/function.strcasecmp.php * @param string $string1

    * The first string *

    * @param string $string2

    * The second string *

    * @return int less than 0 if str1 is less than * str2; > 0 if str1 * is greater than str2, and 0 if they are * equal. */ #[Pure] function strcasecmp(string $string1, string $string2): int {} /** * Binary safe case-insensitive string comparison of the first n characters * @link https://php.net/manual/en/function.strncasecmp.php * @param string $string1

    * The first string. *

    * @param string $string2

    * The second string. *

    * @param int $length

    * The length of strings to be used in the comparison. *

    * @return int less than 0 if str1 is less than * str2; > 0 if str1 is * greater than str2, and 0 if they are equal. */ #[Pure] function strncasecmp(string $string1, string $string2, int $length): int {} /** * The function returns {@see true} if the passed $haystack starts from the * $needle string or {@see false} otherwise. * * @param string $haystack * @param string $needle * @return bool * @since 8.0 */ #[Pure] function str_starts_with(string $haystack, string $needle): bool {} /** * The function returns {@see true} if the passed $haystack ends with the * $needle string or {@see false} otherwise. * * @param string $haystack * @param string $needle * @return bool * @since 8.0 */ #[Pure] function str_ends_with(string $haystack, string $needle): bool {} /** * Checks if $needle is found in $haystack and returns a boolean value * (true/false) whether or not the $needle was found. * * @param string $haystack * @param string $needle * @return bool * @since 8.0 */ #[Pure] function str_contains(string $haystack, string $needle): bool {} /** * @since 8.3 */ function str_decrement(string $string): string {} /** * @since 8.3 */ function str_increment(string $string): string {} /** * Return the current key and value pair from an array and advance the array cursor * @link https://php.net/manual/en/function.each.php * @param array|ArrayObject &$array

    * The input array. *

    * @return array the current key and value pair from the array * array. This pair is returned in a four-element * array, with the keys 0, 1, * key, and value. Elements * 0 and key contain the key name of * the array element, and 1 and value * contain the data. *

    *

    * If the internal pointer for the array points past the end of the * array contents, each returns * false. * @removed 8.0 */ #[Deprecated(reason: "Use a foreach loop instead", since: "7.2")] function each(&$array): array {} /** * Sets which PHP errors are reported * @link https://php.net/manual/en/function.error-reporting.php * @param int|null $error_level [optional]

    * The new error_reporting * level. It takes on either a bitmask, or named constants. Using named * constants is strongly encouraged to ensure compatibility for future * versions. As error levels are added, the range of integers increases, * so older integer-based error levels will not always behave as expected. *

    *

    * The available error level constants and the actual * meanings of these error levels are described in the * predefined constants. * * error_reporting level constants and bit values * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    valueconstant
    1 * E_ERROR *
    2 * E_WARNING *
    4 * E_PARSE *
    8 * E_NOTICE *
    16 * E_CORE_ERROR *
    32 * E_CORE_WARNING *
    64 * E_COMPILE_ERROR *
    128 * E_COMPILE_WARNING *
    256 * E_USER_ERROR *
    512 * E_USER_WARNING *
    1024 * E_USER_NOTICE *
    32767 * E_ALL *
    2048 * E_STRICT *
    4096 * E_RECOVERABLE_ERROR *
    8192 * E_DEPRECATED *
    16384 * E_USER_DEPRECATED *
    *

    * @return int the old error_reporting * level or the current level if no level parameter is * given. */ function error_reporting(?int $error_level): int {} /** * Defines a named constant * @link https://php.net/manual/en/function.define.php * @param string $constant_name

    * The name of the constant. *

    * @param null|array|bool|int|float|string $value

    * The value of the constant. * In PHP 5, value must be a scalar value (integer, float, string, boolean, or null). * In PHP 7, array values are also accepted. * It is possible to define resource constants, * however it is not recommended and may cause unpredictable behavior. *

    * @param bool $case_insensitive [optional]

    * If set to true, the constant will be defined case-insensitive. * The default behavior is case-sensitive; i.e. * CONSTANT and Constant represent * different values. * Defining case-insensitive constants is deprecated as of PHP 7.3.0. *

    *

    * Case-insensitive constants are stored as lower-case. *

    * @return bool true on success or false on failure. */ function define( string $constant_name, #[LanguageLevelTypeAware(['8.1' => 'mixed'], default: 'null|array|bool|int|float|string')] $value, #[Deprecated(since: "7.3")] bool $case_insensitive = false ): bool {} /** * Checks whether a given named constant exists * @link https://php.net/manual/en/function.defined.php * @param string $constant_name

    * The constant name. *

    * @return bool true if the named constant given by name * has been defined, false otherwise. */ #[Pure(true)] function defined(string $constant_name): bool {} /** * Returns the name of the class of an object * @link https://php.net/manual/en/function.get-class.php * @param object $object [optional]

    * The tested object. This parameter may be omitted when inside a class. *

    * @return string

    The name of the class of which object is an * instance. * If object is omitted when inside a class, the * name of that class is returned.

    */ #[Pure] function get_class(object $object): string {} /** * the "Late Static Binding" class name * @link https://php.net/manual/en/function.get-called-class.php * @return string */ #[Pure] function get_called_class(): string {} /** * Retrieves the parent class name for object or class * @link https://php.net/manual/en/function.get-parent-class.php * @param object|string $object_or_class [optional]

    * The tested object or class name *

    * @return string|false

    The name of the parent class of the class of which * object is an instance or the name. *

    *

    * If the object does not have a parent false will be returned. *

    *

    * If called without parameter outside object, this function returns false.

    */ #[Pure] function get_parent_class(object|string $object_or_class): string|false {} /** * Checks if the class method exists * @link https://php.net/manual/en/function.method-exists.php * @param object|string $object_or_class

    * An object instance or a class name *

    * @param string $method

    * The method name *

    * @return bool true if the method given by method_name * has been defined for the given object, false * otherwise. */ #[Pure] function method_exists($object_or_class, string $method): bool {} /** * Checks if the object or class has a property * @link https://php.net/manual/en/function.property-exists.php * @param object|string $object_or_class

    * The class name or an object of the class to test for *

    * @param string $property

    * The name of the property *

    * @return bool true if the property exists, false if it doesn't exist or * null in case of an error. */ #[Pure] function property_exists($object_or_class, string $property): bool {} /** * Checks if the trait exists * @param string $trait Name of the trait to check * @param bool $autoload [optional] Whether to autoload if not already loaded. * @return bool Returns TRUE if trait exists, FALSE if not, NULL in case of an error. * @link https://secure.php.net/manual/en/function.trait-exists.php * @since 5.4 */ function trait_exists(string $trait, bool $autoload = true): bool {} /** * Checks if the class has been defined * @link https://php.net/manual/en/function.class-exists.php * @param string $class

    * The class name. The name is matched in a case-insensitive manner. *

    * @param bool $autoload [optional]

    * Whether or not to call autoload by default. *

    * @return bool true if class_name is a defined class, * false otherwise. */ function class_exists(string $class, bool $autoload = true): bool {} /** * Checks if the interface has been defined * @link https://php.net/manual/en/function.interface-exists.php * @param string $interface

    * The interface name *

    * @param bool $autoload [optional]

    * Whether to call autoload or not by default. *

    * @return bool true if the interface given by * interface_name has been defined, false otherwise. * @since 5.0.2 */ function interface_exists(string $interface, bool $autoload = true): bool {} /** * Return true if the given function has been defined * @link https://php.net/manual/en/function.function-exists.php * @param string $function

    * The function name, as a string. *

    * @return bool true if function_name exists and is a * function, false otherwise. *

    *

    * This function will return false for constructs, such as * include_once and echo. */ #[Pure(true)] function function_exists(string $function): bool {} /** * Checks if the enum has been defined * @link https://php.net/manual/en/function.enum-exists.php * @param string $enum

    * The enum name. The name is matched in a case-insensitive manner. *

    * @param bool $autoload [optional]

    * Whether or not to call autoload by default. *

    * @return bool true if enum is a defined enum, * false otherwise. * @since 8.1 */ function enum_exists(string $enum, bool $autoload = true): bool {} /** * Creates an alias for a class * @link https://php.net/manual/en/function.class-alias.php * @param string $class The original class. * @param string $alias The alias name for the class. * @param bool $autoload [optional] Whether to autoload if the original class is not found. * @return bool true on success or false on failure. */ function class_alias(string $class, string $alias, bool $autoload = true): bool {} /** * Returns an array with the names of included or required files * @link https://php.net/manual/en/function.get-included-files.php * @return string[] an array of the names of all files. *

    * The script originally called is considered an "included file," so it will * be listed together with the files referenced by * include and family. *

    *

    * Files that are included or required multiple times only show up once in * the returned array. *

    */ #[Pure(true)] function get_included_files(): array {} /** * Alias of get_included_files * @link https://php.net/manual/en/function.get-required-files.php * @return string[] */ #[Pure(true)] function get_required_files(): array {} /** * checks if the object has this class as one of its parents or implements it * @link https://php.net/manual/en/function.is-subclass-of.php * @param object|string $object_or_class

    * A class name or an object instance *

    * @param string $class

    * The class name *

    * @param bool $allow_string [optional]

    * If this parameter set to false, string class name as object is not allowed. * This also prevents from calling autoloader if the class doesn't exist. *

    * @return bool This function returns true if the object object, * belongs to a class which is a subclass of * class_name, false otherwise. */ #[Pure] function is_subclass_of(mixed $object_or_class, string $class, bool $allow_string = true): bool {} /** * Checks if the object is of this class or has this class as one of its parents * @link https://php.net/manual/en/function.is-a.php * @param object|string $object_or_class

    * The tested object *

    * @param string $class

    * The class name *

    * @param bool $allow_string [optional]

    * If this parameter set to FALSE, string class name as object * is not allowed. This also prevents from calling autoloader if the class doesn't exist. *

    * @return bool TRUE if the object is of this class or has this class as one of * its parents, FALSE otherwise. */ #[Pure] function is_a(mixed $object_or_class, string $class, bool $allow_string = false): bool {} /** * Get the default properties of the class * @link https://php.net/manual/en/function.get-class-vars.php * @param string $class

    * The class name *

    * @return array an associative array of declared properties visible from the * current scope, with their default value. * The resulting array elements are in the form of * varname => value. */ #[Pure] function get_class_vars(string $class): array {} /** * Gets the properties of the given object * @link https://php.net/manual/en/function.get-object-vars.php * @param object $object

    * An object instance. *

    * @return array an associative array of defined object accessible non-static properties * for the specified object in scope. If a property have * not been assigned a value, it will be returned with a null value. */ #[Pure] function get_object_vars(object $object): array {} /** * Gets the class methods' names * @link https://php.net/manual/en/function.get-class-methods.php * @param object|string $object_or_class

    * The class name or an object instance *

    * @return string[] an array of method names defined for the class specified by * class_name. In case of an error, it returns null. */ #[Pure] function get_class_methods(object|string $object_or_class): array {} /** * Generates a user-level error/warning/notice message * @link https://php.net/manual/en/function.trigger-error.php * @param string $message

    * The designated error message for this error. It's limited to 1024 * characters in length. Any additional characters beyond 1024 will be * truncated. *

    * @param int $error_level [optional]

    * The designated error type for this error. It only works with the E_USER * family of constants, and will default to E_USER_NOTICE. *

    * @return bool This function returns false if wrong error_type is * specified, true otherwise. */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] function trigger_error(string $message, int $error_level = E_USER_NOTICE) {} /** * Alias of trigger_error * @link https://php.net/manual/en/function.user-error.php * @param string $message * @param int $error_level [optional] * @return bool This function returns false if wrong error_type is * specified, true otherwise. */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] function user_error(string $message, int $error_level = E_USER_NOTICE) {} /** * Sets a user-defined error handler function * @link https://php.net/manual/en/function.set-error-handler.php * @param callable|null $callback

    * The user function needs to accept two parameters: the error code, and a * string describing the error. Then there are three optional parameters * that may be supplied: the filename in which the error occurred, the * line number in which the error occurred, and the context in which the * error occurred (an array that points to the active symbol table at the * point the error occurred). The function can be shown as: *

    *

    * handler * interrno * stringerrstr * stringerrfile * interrline * arrayerrcontext * errno * The first parameter, errno, contains the * level of the error raised, as an integer.

    * The user function should stop execution if necessary by calling `exit()`. * If the function returns a value other than false, script execution will * continue with the next statement after the one that caused an error. * If the function returns false, the standard PHP error handler is called. * @param int $error_levels [optional]

    * Can be used to mask the triggering of the * error_handler function just like the error_reporting ini setting * controls which errors are shown. Without this mask set the * error_handler will be called for every error * regardless to the setting of the error_reporting setting. *

    * @return callable|null a string containing the previously defined error handler (if any). If * the built-in error handler is used null is returned. null is also returned * in case of an error such as an invalid callback. If the previous error handler * was a class method, this function will return an indexed array with the class * and the method name. * * Note that error_handler chaining is possible by passing the output value as a reference: * ``` * $previousErrorHandler = set_error_handler( * static function (int $errNo, string $errstr, string $errFile, int $errLine) use (&$previousErrorHandler): bool { * // Handle specific scenarios * * return $previousErrorHandler !== null ? (bool) $previousErrorHandler(...func_get_args()) : false; * } * ); * ``` */ function set_error_handler(?callable $callback, int $error_levels = E_ALL|E_STRICT) {} /** * Restores the previous error handler function * @link https://php.net/manual/en/function.restore-error-handler.php * @return bool This function always returns true. */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function restore_error_handler(): bool {} /** * Sets a user-defined exception handler function * @link https://php.net/manual/en/function.set-exception-handler.php * @param callable|null $callback

    * Name of the function to be called when an uncaught exception occurs. * This function must be defined before calling * set_exception_handler. This handler function * needs to accept one parameter, which will be the exception object that * was thrown. * NULL may be passed instead, to reset this handler to its default state. *

    * @return callable|null the name of the previously defined exception handler, or null on error. If * no previous handler was defined, null is also returned. */ function set_exception_handler(?callable $callback) {} /** * Restores the previously defined exception handler function * @link https://php.net/manual/en/function.restore-exception-handler.php * @return bool This function always returns true. */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function restore_exception_handler(): bool {} /** * Returns an array with the name of the defined classes * @link https://php.net/manual/en/function.get-declared-classes.php * @return string[] an array of the names of the declared classes in the current script. *

    * Note that depending on what extensions you have compiled or * loaded into PHP, additional classes could be present. This means that * you will not be able to define your own classes using these * names. There is a list of predefined classes in the Predefined Classes section of * the appendices. *

    */ #[Pure(true)] function get_declared_classes(): array {} /** * Returns an array of all declared interfaces * @link https://php.net/manual/en/function.get-declared-interfaces.php * @return string[] an array of the names of the declared interfaces in the current * script. */ #[Pure(true)] function get_declared_interfaces(): array {} /** * Returns an array of all declared traits * @return array with names of all declared traits in values. Returns NULL in case of a failure. * @link https://secure.php.net/manual/en/function.get-declared-traits.php * @see class_uses() * @since 5.4 */ #[Pure(true)] function get_declared_traits(): array {} /** * Returns an array of all defined functions * @link https://php.net/manual/en/function.get-defined-functions.php * @param bool $exclude_disabled [optional] Whether disabled functions should be excluded from the return value. * @return array an multidimensional array containing a list of all defined * functions, both built-in (internal) and user-defined. The internal * functions will be accessible via $arr["internal"], and * the user defined ones using $arr["user"] (see example * below). */ #[Pure(true)] function get_defined_functions(#[PhpStormStubsElementAvailable(from: '7.1')] bool $exclude_disabled = true): array {} /** * Returns an array of all defined variables * @link https://php.net/manual/en/function.get-defined-vars.php * @return array A multidimensional array with all the variables. */ #[Pure(true)] function get_defined_vars(): array {} /** * Create an anonymous (lambda-style) function * @link https://php.net/manual/en/function.create-function.php * @param string $args

    * The function arguments. *

    * @param string $code

    * The function code. *

    * @return string|false a unique function name as a string, or false on error. * @removed 8.0 */ #[Deprecated(reason: "Use anonymous functions instead", since: "7.2")] function create_function(string $args, string $code): false|string {} /** * Returns the resource type * @link https://php.net/manual/en/function.get-resource-type.php * @param resource $resource

    * The evaluated resource handle. *

    * @return string If the given handle is a resource, this function * will return a string representing its type. If the type is not identified * by this function, the return value will be the string * Unknown. */ function get_resource_type($resource): string {} /** * Returns an array with the names of all modules compiled and loaded * @link https://php.net/manual/en/function.get-loaded-extensions.php * @param bool $zend_extensions [optional]

    * Only return Zend extensions, if not then regular extensions, like * mysqli are listed. Defaults to false (return regular extensions). *

    * @return string[] an indexed array of all the modules names. */ #[Pure] function get_loaded_extensions(bool $zend_extensions = false): array {} /** * Find out whether an extension is loaded * @link https://php.net/manual/en/function.extension-loaded.php * @param string $extension

    * The extension name. *

    *

    * You can see the names of various extensions by using * phpinfo or if you're using the * CGI or CLI version of * PHP you can use the -m switch to * list all available extensions: *

     * $ php -m
     * [PHP Modules]
     * xml
     * tokenizer
     * standard
     * sockets
     * session
     * posix
     * pcre
     * overload
     * mysql
     * mbstring
     * ctype
     * [Zend Modules]
     * 
    *

    * @return bool true if the extension identified by name * is loaded, false otherwise. */ #[Pure] function extension_loaded(string $extension): bool {} /** * Returns an array with the names of the functions of a module * @link https://php.net/manual/en/function.get-extension-funcs.php * @param string $extension

    * The module name. *

    *

    * This parameter must be in lowercase. *

    * @return string[]|false an array with all the functions, or false if * module_name is not a valid extension. */ #[Pure] function get_extension_funcs(string $extension): array|false {} /** * Returns an associative array with the names of all the constants and their values * @link https://php.net/manual/en/function.get-defined-constants.php * @param bool $categorize [optional]

    * Causing this function to return a multi-dimensional * array with categories in the keys of the first dimension and constants * and their values in the second dimension. * * define("MY_CONSTANT", 1); * print_r(get_defined_constants(true)); * * The above example will output something similar to: *

     * Array
     * (
     * [Core] => Array
     * (
     * [E_ERROR] => 1
     * [E_WARNING] => 2
     * [E_PARSE] => 4
     * [E_NOTICE] => 8
     * [E_CORE_ERROR] => 16
     * [E_CORE_WARNING] => 32
     * [E_COMPILE_ERROR] => 64
     * [E_COMPILE_WARNING] => 128
     * [E_USER_ERROR] => 256
     * [E_USER_WARNING] => 512
     * [E_USER_NOTICE] => 1024
     * [E_STRICT] => 2048
     * [E_RECOVERABLE_ERROR] => 4096
     * [E_DEPRECATED] => 8192
     * [E_USER_DEPRECATED] => 16384
     * [E_ALL] => 32767
     * [TRUE] => 1
     * )
     * [pcre] => Array
     * (
     * [PREG_PATTERN_ORDER] => 1
     * [PREG_SET_ORDER] => 2
     * [PREG_OFFSET_CAPTURE] => 256
     * [PREG_SPLIT_NO_EMPTY] => 1
     * [PREG_SPLIT_DELIM_CAPTURE] => 2
     * [PREG_SPLIT_OFFSET_CAPTURE] => 4
     * [PREG_GREP_INVERT] => 1
     * )
     * [user] => Array
     * (
     * [MY_CONSTANT] => 1
     * )
     * )
     * 
    *

    * @return array */ #[Pure(true)] function get_defined_constants(bool $categorize = false): array {} /** * Generates a backtrace * @link https://php.net/manual/en/function.debug-backtrace.php * @param int $options [optional]

    * As of 5.3.6, this parameter is a bitmask for the following options:

    * debug_backtrace options * * * * * * * * * *
    DEBUG_BACKTRACE_PROVIDE_OBJECT * Whether or not to populate the "object" index. *
    DEBUG_BACKTRACE_IGNORE_ARGS * Whether or not to omit the "args" index, and thus all the function/method arguments, * to save memory. *
    *

    * Before 5.3.6, the only values recognized are true or false, which are the same as * setting or not setting the DEBUG_BACKTRACE_PROVIDE_OBJECT option respectively. *

    * @param int $limit [optional]

    * As of 5.4.0, this parameter can be used to limit the number of stack frames returned. * By default (limit=0) it returns all stack frames. *

    * @return array

    an array of associative arrays. The possible returned elements * are as follows: *

    *

    * Possible returned elements from debug_backtrace *

    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    NameTypeDescription
    functionstring * The current function name. See also * __FUNCTION__. *
    lineinteger * The current line number. See also * __LINE__. *
    filestring * The current file name. See also * __FILE__. *
    classstring * The current class name. See also * __CLASS__ *
    objectobject * The current object. *
    typestring * The current call type. If a method call, "->" is returned. If a static * method call, "::" is returned. If a function call, nothing is returned. *
    argsarray * If inside a function, this lists the functions arguments. If * inside an included file, this lists the included file name(s). *
    */ function debug_backtrace(int $options = DEBUG_BACKTRACE_PROVIDE_OBJECT, int $limit = 0): array {} /** * Prints a backtrace * @link https://php.net/manual/en/function.debug-print-backtrace.php * @param int $options [optional]

    * As of 5.3.6, this parameter is a bitmask for the following options: * debug_print_backtrace options * * * * * *
    DEBUG_BACKTRACE_IGNORE_ARGS * Whether or not to omit the "args" index, and thus all the function/method arguments, * to save memory. *
    *

    * @param int $limit [optional]

    * As of 5.4.0, this parameter can be used to limit the number of stack frames printed. * By default (limit = 0) it prints all stack frames. *

    * @return void */ function debug_print_backtrace( int $options = 0, #[PhpStormStubsElementAvailable(from: '7.0')] int $limit = 0 ): void {} /** * Forces collection of any existing garbage cycles * @link https://php.net/manual/en/function.gc-collect-cycles.php * @return int number of collected cycles. */ function gc_collect_cycles(): int {} /** * Returns status of the circular reference collector * @link https://php.net/manual/en/function.gc-enabled.php * @return bool true if the garbage collector is enabled, false otherwise. */ #[Pure(true)] function gc_enabled(): bool {} /** * Activates the circular reference collector * @link https://php.net/manual/en/function.gc-enable.php * @return void */ function gc_enable(): void {} /** * Deactivates the circular reference collector * @link https://php.net/manual/en/function.gc-disable.php * @return void */ function gc_disable(): void {} /** * Gets information about the garbage collector * @link https://php.net/manual/en/function.gc-status.php * @return int[] associative array with the following elements: *
      *
    • "runs"
    • *
    • "collected"
    • *
    • "threshold"
    • *
    • "roots"
    • *
    * @since 7.3 */ #[ArrayShape(["runs" => "int", "collected" => "int", "threshold" => "int", "roots" => "int"])] #[Pure(true)] function gc_status(): array {} /** * Reclaims memory used by the Zend Engine memory manager * @link https://php.net/manual/en/function.gc-mem-caches.php * @return int Returns the number of bytes freed. * @since 7.0 */ function gc_mem_caches(): int {} /** * Returns active resources * @link https://php.net/manual/en/function.get-resources.php * @param string|null $type [optional]

    * * If defined, this will cause get_resources() to only return resources of the given type. A list of resource types is available. * * If the string Unknown is provided as the type, then only resources that are of an unknown type will be returned. * * If omitted, all resources will be returned. *

    * @return resource[] Returns an array of currently active resources, indexed by resource number. * @since 7.0 */ #[Pure(true)] function get_resources(?string $type): array {} ReflectionProperty class reports information about a classes * properties. * * @link https://php.net/manual/en/class.reflectionproperty.php */ class ReflectionProperty implements Reflector { /** * @since 8.4 */ public const IS_ABSTRACT = 64; /** * @var string Name of the property, same as calling the {@see ReflectionProperty::getName()} method */ #[Immutable] #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $name; /** * @var string Fully qualified class name where this property was defined */ #[Immutable] #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $class; /** * Indicates that the property is static. * * @link https://www.php.net/manual/en/class.reflectionproperty.php#reflectionproperty.constants.is-static */ public const IS_STATIC = 16; /** * Indicates that the property is public. * * @link https://www.php.net/manual/en/class.reflectionproperty.php#reflectionproperty.constants.is-public */ public const IS_PUBLIC = 1; /** * Indicates that the property is protected. * * @link https://www.php.net/manual/en/class.reflectionproperty.php#reflectionproperty.constants.is-protected */ public const IS_PROTECTED = 2; /** * Indicates that the property is private. * * @link https://www.php.net/manual/en/class.reflectionproperty.php#reflectionproperty.constants.is-private */ public const IS_PRIVATE = 4; /** * @since 8.1 */ public const IS_READONLY = 128; /** * @since 8.4 */ public const IS_PROTECTED_SET = 2048; /** * @since 8.4 */ public const IS_PRIVATE_SET = 4096; /** * Construct a ReflectionProperty object * * @link https://php.net/manual/en/reflectionproperty.construct.php * @param string|object $class The class name, that contains the property. * @param string $property The name of the property being reflected. * @throws ReflectionException if the class or property does not exist. */ public function __construct( #[LanguageLevelTypeAware(['8.0' => 'object|string'], default: '')] $class, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $property ) {} /** * Export * * @link https://php.net/manual/en/reflectionproperty.export.php * @param mixed $class The reflection to export. * @param string $name The property name. * @param bool $return Setting to {@see true} will return the export, as * opposed to emitting it. Setting to {@see false} (the default) will do the * opposite. * @return string|null * @removed 8.0 */ #[Deprecated(since: '7.4')] public static function export($class, $name, $return = false) {} /** * To string * * @link https://php.net/manual/en/reflectionproperty.tostring.php * @return string */ #[TentativeType] public function __toString(): string {} /** * Gets property name * * @link https://php.net/manual/en/reflectionproperty.getname.php * @return string The name of the reflected property. */ #[Pure] #[TentativeType] public function getName(): string {} /** * Gets value * * @link https://php.net/manual/en/reflectionproperty.getvalue.php * @param object|null $object If the property is non-static an object must be * provided to fetch the property from. If you want to fetch the default * property without providing an object use {@see ReflectionClass::getDefaultProperties} * instead. * @return mixed The current value of the property. */ #[Pure] #[TentativeType] public function getValue(#[LanguageLevelTypeAware(['8.0' => 'object|null'], default: '')] $object = null): mixed {} /** * Set property value * * @link https://php.net/manual/en/reflectionproperty.setvalue.php * @param mixed $objectOrValue If the property is non-static an object must * be provided to change the property on. If the property is static this * parameter is left out and only $value needs to be provided. * @param mixed $value [optional] The new value. * @return void No value is returned. */ #[TentativeType] public function setValue( #[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $objectOrValue, #[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $value ): void {} /** * Checks if property is public * * @link https://php.net/manual/en/reflectionproperty.ispublic.php * @return bool Return {@see true} if the property is public, {@see false} otherwise. */ #[Pure] #[TentativeType] public function isPublic(): bool {} /** * Checks if property is private * * @link https://php.net/manual/en/reflectionproperty.isprivate.php * @return bool Return {@see true} if the property is private, {@see false} otherwise. */ #[Pure] #[TentativeType] public function isPrivate(): bool {} /** * Checks if property is protected * * @link https://php.net/manual/en/reflectionproperty.isprotected.php * @return bool Returns {@see true} if the property is protected, {@see false} otherwise. */ #[Pure] #[TentativeType] public function isProtected(): bool {} /** * Checks if property is static * * @link https://php.net/manual/en/reflectionproperty.isstatic.php * @return bool Returns {@see true} if the property is static, {@see false} otherwise. */ #[Pure] #[TentativeType] public function isStatic(): bool {} /** * Checks if default value * * @link https://php.net/manual/en/reflectionproperty.isdefault.php * @return bool Returns {@see true} if the property was declared at * compile-time, or {@see false} if it was created at run-time. */ #[Pure] #[TentativeType] public function isDefault(): bool {} /** * Gets modifiers * * @link https://php.net/manual/en/reflectionproperty.getmodifiers.php * @return int A numeric representation of the modifiers. */ #[Pure] #[TentativeType] public function getModifiers(): int {} /** * Gets declaring class * * @link https://php.net/manual/en/reflectionproperty.getdeclaringclass.php * @return ReflectionClass A {@see ReflectionClass} object. */ #[Pure] #[TentativeType] public function getDeclaringClass(): ReflectionClass {} /** * Gets doc comment * * @link https://php.net/manual/en/reflectionproperty.getdoccomment.php * @return string|false The doc comment if it exists, otherwise {@see false} */ #[Pure] #[TentativeType] public function getDocComment(): string|false {} /** * Set property accessibility * * @link https://php.net/manual/en/reflectionproperty.setaccessible.php * @param bool $accessible A boolean {@see true} to allow accessibility, or {@see false} * @return void No value is returned. */ #[PhpStormStubsElementAvailable(to: "8.0")] #[TentativeType] public function setAccessible(#[LanguageLevelTypeAware(['8.0' => 'bool'], default: '')] $accessible): void {} /** * Set property accessibility * This method is no-op starting from PHP 8.1 * * @link https://php.net/manual/en/reflectionproperty.setaccessible.php * @param bool $accessible A boolean {@see true} to allow accessibility, or {@see false} * @return void No value is returned. */ #[Pure] #[PhpStormStubsElementAvailable(from: "8.1")] #[TentativeType] public function setAccessible(bool $accessible): void {} /** * Gets property type * * @link https://php.net/manual/en/reflectionproperty.gettype.php * @return ReflectionType|null Returns a {@see ReflectionType} if the * property has a type, and {@see null} otherwise. * @since 7.4 */ #[Pure] #[LanguageLevelTypeAware( [ '8.0' => 'ReflectionNamedType|ReflectionUnionType|null', '8.1' => 'ReflectionNamedType|ReflectionUnionType|ReflectionIntersectionType|null' ], default: 'ReflectionNamedType|null' )] #[TentativeType] public function getType(): ?ReflectionType {} /** * Checks if property has type * * @link https://php.net/manual/en/reflectionproperty.hastype.php * @return bool Returns {@see true} if a type is specified, {@see false} otherwise. * @since 7.4 */ #[TentativeType] public function hasType(): bool {} /** * Checks if property is initialized * * @link https://php.net/manual/en/reflectionproperty.isinitialized.php * @param object|null $object If the property is non-static an object must be provided to fetch the property from. * @return bool Returns {@see false} for typed properties prior to initialization, and for properties that have * been explicitly {@see unset()}. For all other properties {@see true} will be returned. * @since 7.4 */ #[Pure] #[TentativeType] public function isInitialized(?object $object = null): bool {} /** * Returns information about whether the property was promoted. * * @return bool Returns {@see true} if the property was promoted or {@see false} instead. * @since 8.0 */ #[Pure] public function isPromoted(): bool {} /** * Clone * * @link https://php.net/manual/en/reflectionproperty.clone.php * @return void */ #[PhpStormStubsElementAvailable(from: "5.4", to: "8.0")] final private function __clone(): void {} /** * Clone * * @link https://php.net/manual/en/reflectionproperty.clone.php * @return void */ #[PhpStormStubsElementAvailable(from: "8.1")] private function __clone(): void {} /** * @return bool * @since 8.0 */ public function hasDefaultValue(): bool {} /** * @return mixed * @since 8.0 */ #[Pure] #[TentativeType] public function getDefaultValue(): mixed {} /** * @template T * * Returns an array of property attributes. * * @param class-string|null $name Name of an attribute class * @param int $flags Сriteria by which the attribute is searched. * @return ReflectionAttribute[] * @since 8.0 */ #[Pure] public function getAttributes(?string $name = null, int $flags = 0): array {} /** * @return bool * @since 8.1 */ public function isReadOnly(): bool {} /** * @since 8.4 */ public function getRawValue(object $object): mixed {} /** * @since 8.4 */ public function setRawValue(object $object, mixed $value): void {} /** * @since 8.4 */ public function isAbstract(): bool {} /** * @since 8.4 */ public function isVirtual(): bool {} /** * @since 8.4 */ public function getSettableType(): ?ReflectionType {} /** * @since 8.4 */ public function getHooks(): array {} /** * @since 8.4 */ public function getHook(PropertyHookType $type): ?ReflectionMethod {} /** * @since 8.4 */ public function isPrivateSet(): bool {} /** * @since 8.4 */ public function isProtectedSet(): bool {} } ReflectionFunction, read its * description for details. * * @link https://php.net/manual/en/class.reflectionfunctionabstract.php */ abstract class ReflectionFunctionAbstract implements Reflector { /** * @var string Name of the function, same as calling the {@see ReflectionFunctionAbstract::getName()} method */ #[Immutable] #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $name; /** * Clones function * * @link https://php.net/manual/en/reflectionfunctionabstract.clone.php * @return void */ #[PhpStormStubsElementAvailable(from: "5.4", to: "8.0")] final private function __clone(): void {} /** * Clones function * * @link https://php.net/manual/en/reflectionfunctionabstract.clone.php * @return void */ #[PhpStormStubsElementAvailable(from: "8.1")] private function __clone(): void {} /** * Checks if function in namespace * * @link https://php.net/manual/en/reflectionfunctionabstract.innamespace.php * @return bool {@see true} if it's in a namespace, otherwise {@see false} */ #[TentativeType] public function inNamespace(): bool {} /** * Checks if closure * * @link https://php.net/manual/en/reflectionfunctionabstract.isclosure.php * @return bool {@see true} if it's a closure, otherwise {@see false} */ #[Pure] #[TentativeType] public function isClosure(): bool {} /** * Checks if deprecated * * @link https://php.net/manual/en/reflectionfunctionabstract.isdeprecated.php * @return bool {@see true} if it's deprecated, otherwise {@see false} */ #[Pure] #[TentativeType] public function isDeprecated(): bool {} /** * Checks if is internal * * @link https://php.net/manual/en/reflectionfunctionabstract.isinternal.php * @return bool {@see true} if it's internal, otherwise {@see false} */ #[Pure] #[TentativeType] public function isInternal(): bool {} /** * Checks if user defined * * @link https://php.net/manual/en/reflectionfunctionabstract.isuserdefined.php * @return bool {@see true} if it's user-defined, otherwise {@see false} */ #[Pure] #[TentativeType] public function isUserDefined(): bool {} /** * Returns whether this function is a generator * * @link https://php.net/manual/en/reflectionfunctionabstract.isgenerator.php * @return bool {@see true} if the function is generator, otherwise {@see false} * @since 5.5 */ #[Pure] #[TentativeType] public function isGenerator(): bool {} /** * Returns whether this function is variadic * * @link https://php.net/manual/en/reflectionfunctionabstract.isvariadic.php * @return bool {@see true} if the function is variadic, otherwise {@see false} * @since 5.6 */ #[Pure] #[TentativeType] public function isVariadic(): bool {} /** * Returns this pointer bound to closure * * @link https://php.net/manual/en/reflectionfunctionabstract.getclosurethis.php * @return object|null Returns $this pointer or {@see null} in case of an error. */ #[Pure] #[TentativeType] public function getClosureThis(): ?object {} /** * Returns the scope associated to the closure * * @link https://php.net/manual/en/reflectionfunctionabstract.getclosurescopeclass.php * @return ReflectionClass|null Returns the class on success or {@see null} * on failure. * @since 5.4 */ #[Pure] #[TentativeType] public function getClosureScopeClass(): ?ReflectionClass {} /** * @return ReflectionClass|null Returns the class on success or {@see null} * on failure. * @since 8.0 */ #[Pure] #[TentativeType] public function getClosureCalledClass(): ?ReflectionClass {} /** * Gets doc comment * * @link https://php.net/manual/en/reflectionfunctionabstract.getdoccomment.php * @return string|false The doc comment if it exists, otherwise {@see false} */ #[Pure] #[TentativeType] public function getDocComment(): string|false {} /** * Gets end line number * * @link https://php.net/manual/en/reflectionfunctionabstract.getendline.php * @return int|false The ending line number of the user defined function, * or {@see false} if unknown. */ #[Pure] #[TentativeType] public function getEndLine(): int|false {} /** * Gets extension info * * @link https://php.net/manual/en/reflectionfunctionabstract.getextension.php * @return ReflectionExtension|null The extension information, as a * {@see ReflectionExtension} object or {@see null} instead. */ #[Pure] #[TentativeType] public function getExtension(): ?ReflectionExtension {} /** * Gets extension name * * @link https://php.net/manual/en/reflectionfunctionabstract.getextensionname.php * @return string|false The extension's name or {@see false} instead. */ #[Pure] #[TentativeType] public function getExtensionName(): string|false {} /** * Gets file name * * @link https://php.net/manual/en/reflectionfunctionabstract.getfilename.php * @return string|false The file name or {@see false} in case of error. */ #[Pure] #[TentativeType] public function getFileName(): string|false {} /** * Gets function name * * @link https://php.net/manual/en/reflectionfunctionabstract.getname.php * @return string The name of the function. */ #[Pure] #[TentativeType] public function getName(): string {} /** * Gets namespace name * * @link https://php.net/manual/en/reflectionfunctionabstract.getnamespacename.php * @return string The namespace name. */ #[Pure] #[TentativeType] public function getNamespaceName(): string {} /** * Gets number of parameters * * @link https://php.net/manual/en/reflectionfunctionabstract.getnumberofparameters.php * @return int The number of parameters. * @since 5.0.3 */ #[Pure] #[TentativeType] public function getNumberOfParameters(): int {} /** * Gets number of required parameters * * @link https://php.net/manual/en/reflectionfunctionabstract.getnumberofrequiredparameters.php * @return int The number of required parameters. * @since 5.0.3 */ #[Pure] #[TentativeType] public function getNumberOfRequiredParameters(): int {} /** * Gets parameters * * @link https://php.net/manual/en/reflectionfunctionabstract.getparameters.php * @return ReflectionParameter[] The parameters, as a ReflectionParameter objects. */ #[Pure] #[TentativeType] public function getParameters(): array {} /** * Gets the specified return type of a function * * @link https://php.net/manual/en/reflectionfunctionabstract.getreturntype.php * @return ReflectionType|null Returns a {@see ReflectionType} object if a * return type is specified, {@see null} otherwise. * @since 7.0 */ #[Pure] #[LanguageLevelTypeAware( [ '7.1' => 'ReflectionNamedType|null', '8.0' => 'ReflectionNamedType|ReflectionUnionType|null', '8.1' => 'ReflectionNamedType|ReflectionUnionType|ReflectionIntersectionType|null' ], default: 'ReflectionType|null' )] #[TentativeType] public function getReturnType(): ?ReflectionType {} /** * Gets function short name * * @link https://php.net/manual/en/reflectionfunctionabstract.getshortname.php * @return string The short name of the function. */ #[Pure] #[TentativeType] public function getShortName(): string {} /** * Gets starting line number * * @link https://php.net/manual/en/reflectionfunctionabstract.getstartline.php * @return int|false The starting line number or {@see false} if unknown. */ #[Pure] #[TentativeType] public function getStartLine(): int|false {} /** * Gets static variables * * @link https://php.net/manual/en/reflectionfunctionabstract.getstaticvariables.php * @return array An array of static variables. */ #[Pure] #[TentativeType] public function getStaticVariables(): array {} /** * Checks if returns reference * * @link https://php.net/manual/en/reflectionfunctionabstract.returnsreference.php * @return bool {@see true} if it returns a reference, otherwise {@see false} */ #[TentativeType] public function returnsReference(): bool {} /** * Checks if the function has a specified return type * * @link https://php.net/manual/en/reflectionfunctionabstract.hasreturntype.php * @return bool Returns {@see true} if the function is a specified return * type, otherwise {@see false}. * @since 7.0 */ #[TentativeType] public function hasReturnType(): bool {} /** * @template T * * Returns an array of function attributes. * * @param class-string|null $name Name of an attribute class * @param int $flags Сriteria by which the attribute is searched. * @return ReflectionAttribute[] * @since 8.0 */ #[Pure] public function getAttributes(?string $name = null, int $flags = 0): array {} #[PhpStormStubsElementAvailable('8.1')] #[Pure] public function getClosureUsedVariables(): array {} #[PhpStormStubsElementAvailable('8.1')] #[Pure] public function hasTentativeReturnType(): bool {} #[PhpStormStubsElementAvailable('8.1')] #[Pure] public function getTentativeReturnType(): ?ReflectionType {} #[PhpStormStubsElementAvailable('8.1')] #[Pure] #[TentativeType] public function isStatic(): bool {} public function __toString() {} } 'string'], default: '')] public $name; /** * Constructs a ReflectionZendExtension object * * @link https://php.net/manual/en/reflectionzendextension.construct.php * @param string $name * @throws ReflectionException if the extension does not exist. * @since 5.4 */ public function __construct(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name) {} /** * Exports a reflected zend extension. * * @link https://php.net/manual/en/reflectionzendextension.export.php * @param string $name The reflection to export. * @param bool $return Setting to {@see true} will return the * export, as opposed to emitting it. Setting to {@see false} (the default) * will do the opposite. * @return string|null If the $return parameter is set to {@see true}, then * the export is returned as a string, otherwise {@see null} is returned. */ public static function export($name, $return = false) {} /** * To string handler * * @link https://php.net/manual/en/reflectionzendextension.tostring.php * @return string * @since 5.4 */ #[TentativeType] public function __toString(): string {} /** * Gets name * * @link https://php.net/manual/en/reflectionzendextension.getname.php * @return string * @since 5.4 */ #[Pure] #[TentativeType] public function getName(): string {} /** * Gets version * * @link https://php.net/manual/en/reflectionzendextension.getversion.php * @return string * @since 5.4 */ #[Pure] #[TentativeType] public function getVersion(): string {} /** * Gets author * * @link https://php.net/manual/en/reflectionzendextension.getauthor.php * @return string * @since 5.4 */ #[Pure] #[TentativeType] public function getAuthor(): string {} /** * Gets URL * * @link https://php.net/manual/en/reflectionzendextension.geturl.php * @return string * @since 5.4 */ #[Pure] #[TentativeType] public function getURL(): string {} /** * Gets copyright * * @link https://php.net/manual/en/reflectionzendextension.getcopyright.php * @return string * @since 5.4 */ #[Pure] #[TentativeType] public function getCopyright(): string {} /** * Clone handler * * @link https://php.net/manual/en/reflectionzendextension.clone.php * @return void * @since 5.4 */ #[PhpStormStubsElementAvailable(from: "5.4", to: "8.0")] final private function __clone(): void {} /** * Clone handler * * @link https://php.net/manual/en/reflectionzendextension.clone.php * @return void * @since 5.4 */ #[PhpStormStubsElementAvailable(from: "8.1")] private function __clone(): void {} } 'ReflectionNamedType[]|ReflectionIntersectionType[]' ], default: 'ReflectionNamedType[]' )] public function getTypes(): array {} } Reflector is an interface implemented by all * exportable Reflection classes. * * @link https://php.net/manual/en/class.reflector.php */ interface Reflector extends Stringable { /** * Exports a class. * * @link https://php.net/manual/en/reflector.export.php * @return string|null * @removed 7.4 */ public static function export(); /** * Returns the string representation of any Reflection object. * * Please note that since PHP 8.0 this method is absent in this interface * and inherits from the {@see Stringable} parent. * * @return string */ public function __toString(); } 'string'], default: '')] public $name; /** * @var string Fully qualified class name where this constant was defined */ #[Immutable] #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $class; /** * @var bool * @since 8.1 */ #[Immutable] public bool $isFinal; /** * Indicates that the constant is public. * * @since 8.0 */ public const IS_PUBLIC = 1; /** * Indicates that the constant is protected. * * @since 8.0 */ public const IS_PROTECTED = 2; /** * Indicates that the constant is private. * * @since 8.0 */ public const IS_PRIVATE = 4; /** * @since 8.1 */ public const IS_FINAL = 5; /** * ReflectionClassConstant constructor. * * @param string|object $class Either a string containing the name of the class to reflect, or an object. * @param string $constant The name of the class constant. * @since 7.1 * @link https://php.net/manual/en/reflectionclassconstant.construct.php */ public function __construct(#[LanguageLevelTypeAware(['8.0' => 'string|object'], default: '')] $class, string $constant) {} /** * @link https://php.net/manual/en/reflectionclassconstant.export.php * @param string|object $class The reflection to export. * @param string $name The class constant name. * @param bool $return Setting to {@see true} will return the export, as opposed to emitting it. Setting * to {@see false} (the default) will do the opposite. * @return string|null * @since 7.1 * @removed 8.0 */ #[Deprecated(since: '7.4')] public static function export($class, $name, $return = false) {} /** * Gets declaring class * * @return ReflectionClass * @link https://php.net/manual/en/reflectionclassconstant.getdeclaringclass.php * @since 7.1 */ #[Pure] #[TentativeType] public function getDeclaringClass(): ReflectionClass {} /** * Gets doc comments * * @return string|false The doc comment if it exists, otherwise {@see false} * @link https://php.net/manual/en/reflectionclassconstant.getdoccomment.php * @since 7.1 */ #[Pure] #[TentativeType] public function getDocComment(): string|false {} /** * Gets the class constant modifiers * * @return int A numeric representation of the modifiers. The actual meanings of these modifiers are described in * the predefined constants. * @link https://php.net/manual/en/reflectionclassconstant.getmodifiers.php * @since 7.1 */ #[Pure] #[TentativeType] public function getModifiers(): int {} /** * Get name of the constant * * @link https://php.net/manual/en/reflectionclassconstant.getname.php * @return string Returns the constant's name. * @since 7.1 */ #[Pure] #[TentativeType] public function getName(): string {} /** * Gets value * * @link https://php.net/manual/en/reflectionclassconstant.getvalue.php * @return mixed The value of the class constant. * @since 7.1 */ #[Pure] #[TentativeType] public function getValue(): mixed {} /** * Checks if class constant is private * * @link https://php.net/manual/en/reflectionclassconstant.isprivate.php * @return bool * @since 7.1 */ #[Pure] #[TentativeType] public function isPrivate(): bool {} /** * Checks if class constant is protected * * @link https://php.net/manual/en/reflectionclassconstant.isprotected.php * @return bool * @since 7.1 */ #[Pure] #[TentativeType] public function isProtected(): bool {} /** * Checks if class constant is public * * @link https://php.net/manual/en/reflectionclassconstant.ispublic.php * @return bool * @since 7.1 */ #[Pure] #[TentativeType] public function isPublic(): bool {} /** * Returns the string representation of the ReflectionClassConstant object. * * @link https://php.net/manual/en/reflectionclassconstant.tostring.php * @return string * @since 7.1 */ public function __toString(): string {} /** * @template T * * Returns an array of constant attributes. * * @param class-string|null $name Name of an attribute class * @param int $flags Сriteria by which the attribute is searched. * @return ReflectionAttribute[] * @since 8.0 */ #[Pure] public function getAttributes(?string $name = null, int $flags = 0): array {} /** * ReflectionClassConstant cannot be cloned * * @return void */ #[PhpStormStubsElementAvailable(from: "5.4", to: "8.0")] final private function __clone(): void {} /** * ReflectionClassConstant cannot be cloned * * @return void */ #[PhpStormStubsElementAvailable(from: "8.1")] private function __clone(): void {} #[PhpStormStubsElementAvailable('8.1')] public function isEnumCase(): bool {} /** * @return bool * @since 8.1 */ public function isFinal(): bool {} /** * @since 8.3 */ public function hasType(): bool {} /** * @since 8.3 */ public function getType(): ?ReflectionType {} /** * @since 8.4 */ public function isDeprecated(): bool {} } options can be any of the following the following flags. * * Available options: * * {@see DEBUG_BACKTRACE_PROVIDE_OBJECT} - Default * * {@see DEBUG_BACKTRACE_IGNORE_ARGS} - Don't include the argument * information for functions in the stack trace. * * @return array Returns the trace of the currently executing generator. * @since 7.0 */ #[Pure] #[TentativeType] public function getTrace(int $options = DEBUG_BACKTRACE_PROVIDE_OBJECT): array {} /** * Gets the function name of the generator * * @link https://php.net/manual/en/reflectiongenerator.getfunction.php * @return ReflectionFunctionAbstract Returns a {@see ReflectionFunctionAbstract} * class. This will be {@see ReflectionFunction} for functions, * or {@see ReflectionMethod} for methods. * @since 7.0 */ #[Pure] #[TentativeType] public function getFunction(): ReflectionFunctionAbstract {} /** * Gets the function name of the generator * * @link https://php.net/manual/en/reflectiongenerator.getthis.php * @return object|null Returns the $this value, or {@see null} if the * generator was not created in a class context. * @since 7.0 */ #[Pure] #[TentativeType] public function getThis(): ?object {} /** * Gets the executing Generator object * * @link https://php.net/manual/en/reflectiongenerator.construct.php * @return Generator Returns the currently executing Generator object. * @since 7.0 */ #[Pure] #[TentativeType] public function getExecutingGenerator(): Generator {} /** * @since 8.4 */ public function isClosed(): bool {} } 'null|ReflectionNamedType'], default: 'null|ReflectionType')] public function getBackingType() {} } 'string|int'], default: '')] $key ): ?ReflectionReference {} /** * Returns unique identifier for the reference. The return value format is unspecified * * @link https://php.net/manual/en/reflectionreference.getid.php * @return int|string Returns an integer or string of unspecified format. */ #[Pure] public function getId(): string {} /** * ReflectionReference cannot be cloned * * @return void */ private function __clone(): void {} } ReflectionParameter class retrieves * information about function's or method's parameters. * * @link https://php.net/manual/en/class.reflectionparameter.php */ class ReflectionParameter implements Reflector { /** * @var string Name of the parameter, same as calling the {@see ReflectionParameter::getName()} method */ #[Immutable] #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $name; /** * Construct * * @link https://php.net/manual/en/reflectionparameter.construct.php * @param callable $function The function to reflect parameters from. * @param string|int $param Either an integer specifying the position * of the parameter (starting with zero), or a the parameter name as string. * @throws ReflectionException if the function or parameter does not exist. */ public function __construct($function, #[LanguageLevelTypeAware(['8.0' => 'string|int'], default: '')] $param) {} /** * Exports * * @link https://php.net/manual/en/reflectionparameter.export.php * @param string $function The function name. * @param string $parameter The parameter name. * @param bool $return Setting to {@see true} will return the export, * as opposed to emitting it. Setting to {@see false} (the default) will do the * opposite. * @return string|null The exported reflection. * @removed 8.0 */ #[Deprecated(since: '7.4')] public static function export($function, $parameter, $return = false) {} /** * Returns the string representation of the ReflectionParameter object. * * @link https://php.net/manual/en/reflectionparameter.tostring.php * @return string */ #[TentativeType] public function __toString(): string {} /** * Gets parameter name * * @link https://php.net/manual/en/reflectionparameter.getname.php * @return string The name of the reflected parameter. */ #[Pure] #[TentativeType] public function getName(): string {} /** * Checks if passed by reference * * @link https://php.net/manual/en/reflectionparameter.ispassedbyreference.php * @return bool {@see true} if the parameter is passed in by reference, otherwise {@see false} */ #[Pure] #[TentativeType] public function isPassedByReference(): bool {} /** * Returns whether this parameter can be passed by value * * @link https://php.net/manual/en/reflectionparameter.canbepassedbyvalue.php * @return bool|null {@see true} if the parameter can be passed by value, {@see false} otherwise. * Returns {@see null} in case of an error. * @since 5.4 */ #[TentativeType] public function canBePassedByValue(): bool {} /** * Gets declaring function * * @link https://php.net/manual/en/reflectionparameter.getdeclaringfunction.php * @return ReflectionFunctionAbstract A {@see ReflectionFunctionAbstract} object. * @since 5.2.3 */ #[Pure] #[TentativeType] public function getDeclaringFunction(): ReflectionFunctionAbstract {} /** * Gets declaring class * * @link https://php.net/manual/en/reflectionparameter.getdeclaringclass.php * @return ReflectionClass|null A {@see ReflectionClass} object or {@see null} if * called on function. */ #[Pure] #[TentativeType] public function getDeclaringClass(): ?ReflectionClass {} /** * Gets the class type hinted for the parameter as a ReflectionClass object. * * @link https://php.net/manual/en/reflectionparameter.getclass.php * @return ReflectionClass|null A {@see ReflectionClass} object. * @see ReflectionParameter::getType() */ #[Deprecated(reason: "Use ReflectionParameter::getType() and the ReflectionType APIs should be used instead.", since: "8.0")] #[Pure] #[TentativeType] public function getClass(): ?ReflectionClass {} /** * Checks if the parameter has a type associated with it. * * @link https://php.net/manual/en/reflectionparameter.hastype.php * @return bool {@see true} if a type is specified, {@see false} otherwise. * @since 7.0 */ #[TentativeType] public function hasType(): bool {} /** * Gets a parameter's type * * @link https://php.net/manual/en/reflectionparameter.gettype.php * @return ReflectionType|null Returns a {@see ReflectionType} object if a * parameter type is specified, {@see null} otherwise. * @since 7.0 */ #[Pure] #[LanguageLevelTypeAware( [ '7.1' => 'ReflectionNamedType|null', '8.0' => 'ReflectionNamedType|ReflectionUnionType|null', '8.1' => 'ReflectionNamedType|ReflectionUnionType|ReflectionIntersectionType|null' ], default: 'ReflectionType|null' )] #[TentativeType] public function getType(): ?ReflectionType {} /** * Checks if parameter expects an array * * @link https://php.net/manual/en/reflectionparameter.isarray.php * @return bool {@see true} if an array is expected, {@see false} otherwise. * @see ReflectionParameter::getType() */ #[Deprecated(reason: "Use ReflectionParameter::getType() and the ReflectionType APIs should be used instead.", since: "8.0")] #[Pure] #[TentativeType] public function isArray(): bool {} /** * Returns whether parameter MUST be callable * * @link https://php.net/manual/en/reflectionparameter.iscallable.php * @return bool|null Returns {@see true} if the parameter is callable, {@see false} * if it is not or {@see null} on failure. * @since 5.4 * @see ReflectionParameter::getType() */ #[Deprecated(reason: "Use ReflectionParameter::getType() and the ReflectionType APIs should be used instead.", since: "8.0")] #[Pure] #[TentativeType] public function isCallable(): bool {} /** * Checks if null is allowed * * @link https://php.net/manual/en/reflectionparameter.allowsnull.php * @return bool Returns {@see true} if {@see null} is allowed, * otherwise {@see false} */ #[TentativeType] public function allowsNull(): bool {} /** * Gets parameter position * * @link https://php.net/manual/en/reflectionparameter.getposition.php * @return int The position of the parameter, left to right, starting at position #0. * @since 5.2.3 */ #[Pure] #[TentativeType] public function getPosition(): int {} /** * Checks if optional * * @link https://php.net/manual/en/reflectionparameter.isoptional.php * @return bool Returns {@see true} if the parameter is optional, otherwise {@see false} * @since 5.0.3 */ #[Pure] #[TentativeType] public function isOptional(): bool {} /** * Checks if a default value is available * * @link https://php.net/manual/en/reflectionparameter.isdefaultvalueavailable.php * @return bool Returns {@see true} if a default value is available, otherwise {@see false} * @since 5.0.3 */ #[Pure] #[TentativeType] public function isDefaultValueAvailable(): bool {} /** * Gets default parameter value * * @link https://php.net/manual/en/reflectionparameter.getdefaultvalue.php * @return mixed The parameters default value. * @throws ReflectionException if the parameter is not optional * @since 5.0.3 */ #[Pure] #[TentativeType] public function getDefaultValue(): mixed {} /** * Returns whether the default value of this parameter is constant * * @link https://php.net/manual/en/reflectionparameter.isdefaultvalueconstant.php * @return bool Returns {@see true} if the default value is constant, and {@see false} otherwise. * @since 5.4.6 */ #[Pure] #[TentativeType] public function isDefaultValueConstant(): bool {} /** * Returns the default value's constant name if default value is constant or null * * @link https://php.net/manual/en/reflectionparameter.getdefaultvalueconstantname.php * @return string|null Returns string on success or {@see null} on failure. * @throws ReflectionException if the parameter is not optional * @since 5.4.6 */ #[Pure] #[TentativeType] public function getDefaultValueConstantName(): ?string {} /** * Returns whether this function is variadic * * @link https://php.net/manual/en/reflectionparameter.isvariadic.php * @return bool Returns {@see true} if the function is variadic, otherwise {@see false} * @since 5.6 */ #[Pure] #[TentativeType] public function isVariadic(): bool {} /** * Returns information about whether the parameter is a promoted. * * @return bool Returns {@see true} if the parameter promoted or {@see false} instead * @since 8.0 */ #[Pure] public function isPromoted(): bool {} /** * @template T * * Returns an array of parameter attributes. * * @param class-string|null $name Name of an attribute class * @param int $flags Сriteria by which the attribute is searched. * @return ReflectionAttribute[] * @since 8.0 */ #[Pure] public function getAttributes(?string $name = null, int $flags = 0): array {} /** * Clone * * @link https://php.net/manual/en/reflectionparameter.clone.php * @return void */ #[PhpStormStubsElementAvailable(from: "5.4", to: "8.0")] final private function __clone(): void {} /** * Clone * * @link https://php.net/manual/en/reflectionparameter.clone.php * @return void */ #[PhpStormStubsElementAvailable(from: "8.1")] private function __clone(): void {} } ReflectionObject class reports * information about an object. * * @link https://php.net/manual/en/class.reflectionobject.php */ class ReflectionObject extends ReflectionClass { /** * Constructs a ReflectionObject * * @link https://php.net/manual/en/reflectionobject.construct.php * @param object $object An object instance. */ public function __construct(#[LanguageLevelTypeAware(['8.0' => 'object'], default: '')] $object) {} /** * Export * * @link https://php.net/manual/en/reflectionobject.export.php * @param string $argument The reflection to export. * @param bool $return Setting to {@see true} will return the export, * as opposed to emitting it. Setting to {@see false} (the default) will do * the opposite. * @return string|null If the $return parameter is set to {@see true}, then * the export is returned as a string, otherwise {@see null} is returned. * @removed 8.0 */ #[Deprecated(since: '7.4')] public static function export($argument, $return = false) {} } 'int'], default: '')] $modifiers): array {} /** * Exports * * @link https://php.net/manual/en/reflection.export.php * @param Reflector $reflector The reflection to export. * @param bool $return Setting to {@see true} will return the export, as * opposed to emitting it. Setting to {@see false} (the default) will do the opposite. * @return string|null If the return parameter is set to {@see true}, then the * export is returned as a string, otherwise {@see null} is returned. * @removed 8.0 */ #[Deprecated(since: '7.4')] public static function export(Reflector $reflector, $return = false) {} } ReflectionMethod class reports * information about a method. * * @link https://php.net/manual/en/class.reflectionmethod.php */ class ReflectionMethod extends ReflectionFunctionAbstract { /** * @var string Name of the method, same as calling the {@see ReflectionMethod::getName()} method */ #[Immutable] public $name; /** * @var string Fully qualified class name where this method was defined */ #[Immutable] #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $class; /** * Indicates that the method is static. */ public const IS_STATIC = 16; /** * Indicates that the method is public. */ public const IS_PUBLIC = 1; /** * Indicates that the method is protected. */ public const IS_PROTECTED = 2; /** * Indicates that the method is private. */ public const IS_PRIVATE = 4; /** * Indicates that the method is abstract. */ public const IS_ABSTRACT = 64; /** * Indicates that the method is final. */ public const IS_FINAL = 32; /** * Constructs a ReflectionMethod * * * $reflection = new ReflectionMethod(new Example(), 'method'); * $reflection = new ReflectionMethod(Example::class, 'method'); * $reflection = new ReflectionMethod('Example::method'); * * * @link https://php.net/manual/en/reflectionmethod.construct.php * @param string|object $objectOrMethod Classname, object * (instance of the class) that contains the method or class name and * method name delimited by ::. * @param string|null $method Name of the method if the first argument is a * classname or an object. * @throws ReflectionException if the class or method does not exist. */ public function __construct( #[LanguageLevelTypeAware(['8.0' => 'object|string'], default: '')] $objectOrMethod, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $method = null ) {} /** * Export a reflection method. * * @link https://php.net/manual/en/reflectionmethod.export.php * @param string $class The class name. * @param string $name The name of the method. * @param bool $return Setting to {@see true} will return the export, * as opposed to emitting it. Setting to {@see false} (the default) will do the * opposite. * @return string|null If the $return parameter is set to {@see true}, then * the export is returned as a string, otherwise {@see null} is returned. * @removed 8.0 */ #[Deprecated(since: '7.4')] public static function export($class, $name, $return = false) {} /** * Returns the string representation of the ReflectionMethod object. * * @link https://php.net/manual/en/reflectionmethod.tostring.php * @return string A string representation of this {@see ReflectionMethod} instance. */ #[TentativeType] public function __toString(): string {} /** * Checks if method is public * * @link https://php.net/manual/en/reflectionmethod.ispublic.php * @return bool Returns {@see true} if the method is public, otherwise {@see false} */ #[Pure] #[TentativeType] public function isPublic(): bool {} /** * Checks if method is private * * @link https://php.net/manual/en/reflectionmethod.isprivate.php * @return bool Returns {@see true} if the method is private, otherwise {@see false} */ #[Pure] #[TentativeType] public function isPrivate(): bool {} /** * Checks if method is protected * * @link https://php.net/manual/en/reflectionmethod.isprotected.php * @return bool Returns {@see true} if the method is protected, otherwise {@see false} */ #[Pure] #[TentativeType] public function isProtected(): bool {} /** * Checks if method is abstract * * @link https://php.net/manual/en/reflectionmethod.isabstract.php * @return bool Returns {@see true} if the method is abstract, otherwise {@see false} */ #[Pure] #[TentativeType] public function isAbstract(): bool {} /** * Checks if method is final * * @link https://php.net/manual/en/reflectionmethod.isfinal.php * @return bool Returns {@see true} if the method is final, otherwise {@see false} */ #[Pure] #[TentativeType] public function isFinal(): bool {} /** * Checks if method is static * * @link https://php.net/manual/en/reflectionmethod.isstatic.php * @return bool Returns {@see true} if the method is static, otherwise {@see false} */ #[Pure] #[TentativeType] public function isStatic(): bool {} /** * Checks if method is a constructor * * @link https://php.net/manual/en/reflectionmethod.isconstructor.php * @return bool Returns {@see true} if the method is a constructor, otherwise {@see false} */ #[Pure] #[TentativeType] public function isConstructor(): bool {} /** * Checks if method is a destructor * * @link https://php.net/manual/en/reflectionmethod.isdestructor.php * @return bool Returns {@see true} if the method is a destructor, otherwise {@see false} */ #[Pure] #[TentativeType] public function isDestructor(): bool {} /** * Returns a dynamically created closure for the method * * @link https://php.net/manual/en/reflectionmethod.getclosure.php * @param object|null $object Forbidden for static methods, required for other methods or nothing. * @return Closure Returns the newly created {@see Closure}. * @throws ValueError if object is null but the method is non-static. * @throws ReflectionException if object is not an instance of the class this method was declared in. * @since 5.4 */ #[Pure] #[TentativeType] public function getClosure( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.3')] $object, #[PhpStormStubsElementAvailable(from: '7.4')] #[LanguageLevelTypeAware(['8.0' => 'object|null'], default: '')] $object = null ): Closure {} /** * Gets the method modifiers * * @link https://php.net/manual/en/reflectionmethod.getmodifiers.php * @return int A numeric representation of the modifiers. The modifiers are * listed below. The actual meanings of these modifiers are described in the * predefined constants. * * ReflectionMethod modifiers: * * - {@see ReflectionMethod::IS_STATIC} - Indicates that the method is static. * - {@see ReflectionMethod::IS_PUBLIC} - Indicates that the method is public. * - {@see ReflectionMethod::IS_PROTECTED} - Indicates that the method is protected. * - {@see ReflectionMethod::IS_PRIVATE} - Indicates that the method is private. * - {@see ReflectionMethod::IS_ABSTRACT} - Indicates that the method is abstract. * - {@see ReflectionMethod::IS_FINAL} - Indicates that the method is final. */ #[Pure] #[TentativeType] public function getModifiers(): int {} /** * Invokes a reflected method. * * @link https://php.net/manual/en/reflectionmethod.invoke.php * @param object|null $object The object to invoke the method on. For static * methods, pass {@see null} to this parameter. * @param mixed ...$args Zero or more parameters to be passed to the * method. It accepts a variable number of parameters which are passed to * the method. * @return mixed Returns the method result. * @throws ReflectionException if the object parameter does not contain an * instance of the class that this method was declared in or the method * invocation failed. */ public function invoke($object, ...$args) {} /** * Invokes the reflected method and pass its arguments as array. * * @link https://php.net/manual/en/reflectionmethod.invokeargs.php * @param object|null $object The object to invoke the method on. In case * of static methods, you can pass {@see null} to this parameter. * @param array $args The parameters to be passed to the function, as an {@see array}. * @return mixed the method result. * @throws ReflectionException if the object parameter does not contain an * instance of the class that this method was declared in or the method * invocation failed. */ #[TentativeType] public function invokeArgs(#[LanguageLevelTypeAware(['8.0' => 'object|null'], default: '')] $object, array $args): mixed {} /** * Gets declaring class for the reflected method. * * @link https://php.net/manual/en/reflectionmethod.getdeclaringclass.php * @return ReflectionClass A {@see ReflectionClass} object of the class that the * reflected method is part of. */ #[Pure] #[TentativeType] public function getDeclaringClass(): ReflectionClass {} /** * Gets the method prototype (if there is one). * * @link https://php.net/manual/en/reflectionmethod.getprototype.php * @return ReflectionMethod A {@see ReflectionMethod} instance of the method prototype. * @throws ReflectionException if the method does not have a prototype */ #[Pure] #[TentativeType] public function getPrototype(): ReflectionMethod {} /** * Set method accessibility * * @link https://php.net/manual/en/reflectionmethod.setaccessible.php * @param bool $accessible {@see true} to allow accessibility, or {@see false} * @return void No value is returned. */ #[PhpStormStubsElementAvailable(from: "5.3", to: "8.0")] #[TentativeType] public function setAccessible(#[LanguageLevelTypeAware(['8.0' => 'bool'], default: '')] $accessible): void {} /** * Set method accessibility * This method is no-op starting from PHP 8.1 * * @link https://php.net/manual/en/reflectionmethod.setaccessible.php * @param bool $accessible {@see true} to allow accessibility, or {@see false} * @return void No value is returned. */ #[Pure] #[PhpStormStubsElementAvailable(from: "8.1")] #[TentativeType] public function setAccessible(bool $accessible): void {} #[PhpStormStubsElementAvailable(from: '8.2')] public function hasPrototype(): bool {} /** * @since 8.3 */ public static function createFromMethodName(string $method): static {} } ReflectionFunction class reports * information about a function. * * @link https://php.net/manual/en/class.reflectionfunction.php */ class ReflectionFunction extends ReflectionFunctionAbstract { /** * @var string Function name, same as calling the {@see ReflectionFunction::getName()} method */ #[Immutable] public $name; /** * Indicates deprecated functions. * * @link https://www.php.net/manual/en/class.reflectionfunction.php#reflectionfunction.constants.is-deprecated */ public const IS_DEPRECATED = 2048; /** * Constructs a ReflectionFunction object * * @link https://php.net/manual/en/reflectionfunction.construct.php * @param string|Closure $function The name of the function to reflect or a closure. * @throws ReflectionException if the function does not exist. */ public function __construct(#[LanguageLevelTypeAware(['8.0' => 'Closure|string'], default: '')] $function) {} /** * Returns the string representation of the ReflectionFunction object. * * @link https://php.net/manual/en/reflectionfunction.tostring.php */ #[TentativeType] public function __toString(): string {} /** * Exports function * * @link https://php.net/manual/en/reflectionfunction.export.php * @param string $name The reflection to export. * @param bool $return Setting to {@see true} will return the * export, as opposed to emitting it. Setting to {@see false} (the default) * will do the opposite. * @return string|null If the $return parameter is set to {@see true}, then * the export is returned as a string, otherwise {@see null} is returned. * @removed 8.0 */ #[Deprecated(since: '7.4')] public static function export($name, $return = false) {} /** * Checks if function is disabled * * @link https://php.net/manual/en/reflectionfunction.isdisabled.php * @return bool {@see true} if it's disable, otherwise {@see false} */ #[Deprecated(since: '8.0')] #[Pure] #[TentativeType] public function isDisabled(): bool {} /** * Invokes function * * @link https://www.php.net/manual/en/reflectionfunction.invoke.php * @param mixed ...$args [optional] The passed in argument list. It accepts a * variable number of arguments which are passed to the function much * like {@see call_user_func} is. * @return mixed Returns the result of the invoked function call. */ #[TentativeType] public function invoke(#[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] ...$args): mixed {} /** * Invokes function args * * @link https://php.net/manual/en/reflectionfunction.invokeargs.php * @param array $args The passed arguments to the function as an array, much * like {@see call_user_func_array} works. * @return mixed the result of the invoked function */ #[TentativeType] public function invokeArgs(array $args): mixed {} /** * Returns a dynamically created closure for the function * * @link https://php.net/manual/en/reflectionfunction.getclosure.php * @return Closure|null Returns {@see Closure} or {@see null} in case of an error. */ #[Pure] #[TentativeType] public function getClosure(): Closure {} #[PhpStormStubsElementAvailable(from: '8.2')] public function isAnonymous(): bool {} } ReflectionExtension class reports information about an extension. * * @link https://php.net/manual/en/class.reflectionextension.php */ class ReflectionExtension implements Reflector { /** * @var string Name of the extension, same as calling the {@see ReflectionExtension::getName()} method */ #[Immutable] #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $name; /** * Constructs a ReflectionExtension * * @link https://php.net/manual/en/reflectionextension.construct.php * @param string $name Name of the extension. * @throws ReflectionException if the extension does not exist. */ public function __construct(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name) {} /** * Exports a reflected extension. * The output format of this function is the same as the CLI argument --re [extension]. * * @link https://php.net/manual/en/reflectionextension.export.php * @param string $name The reflection to export. * @param bool $return Setting to {@see true} will return the * export, as opposed to emitting it. Setting to {@see false} (the default) * will do the opposite. * @return string|null If the $return parameter is set to {@see true}, then * the export is returned as a string, otherwise {@see null} is returned. * @removed 8.0 */ #[Deprecated(since: '7.4')] public static function export($name, $return = false) {} /** * To string * * @link https://php.net/manual/en/reflectionextension.tostring.php * @return string the exported extension as a string, in the same way as * the {@see ReflectionExtension::export()}. */ #[TentativeType] public function __toString(): string {} /** * Gets extension name * * @link https://php.net/manual/en/reflectionextension.getname.php * @return string The extensions name. */ #[Pure] #[TentativeType] public function getName(): string {} /** * Gets extension version * * @link https://php.net/manual/en/reflectionextension.getversion.php * @return string|null The version of the extension. */ #[Pure] #[TentativeType] public function getVersion(): ?string {} /** * Gets extension functions * * @link https://php.net/manual/en/reflectionextension.getfunctions.php * @return ReflectionFunction[] An associative array of {@see ReflectionFunction} objects, * for each function defined in the extension with the keys being the function * names. If no function are defined, an empty array is returned. */ #[Pure] #[TentativeType] public function getFunctions(): array {} /** * Gets constants * * @link https://php.net/manual/en/reflectionextension.getconstants.php * @return array An associative array with constant names as keys. */ #[Pure] #[TentativeType] public function getConstants(): array {} /** * Gets extension ini entries * * @link https://php.net/manual/en/reflectionextension.getinientries.php * @return array An associative array with the ini entries as keys, * with their defined values as values. */ #[Pure] #[TentativeType] public function getINIEntries(): array {} /** * Gets classes * * @link https://php.net/manual/en/reflectionextension.getclasses.php * @return ReflectionClass[] An array of {@see ReflectionClass} objects, one * for each class within the extension. If no classes are defined, * an empty array is returned. */ #[Pure] #[TentativeType] public function getClasses(): array {} /** * Gets class names * * @link https://php.net/manual/en/reflectionextension.getclassnames.php * @return string[] An array of class names, as defined in the extension. * If no classes are defined, an empty array is returned. */ #[Pure] #[TentativeType] public function getClassNames(): array {} /** * Gets dependencies * * @link https://php.net/manual/en/reflectionextension.getdependencies.php * @return string[] An associative array with dependencies as keys and * either Required, Optional or Conflicts as the values. */ #[Pure] #[TentativeType] public function getDependencies(): array {} /** * Print extension info * * @link https://php.net/manual/en/reflectionextension.info.php * @return void Print extension info */ #[TentativeType] public function info(): void {} /** * Returns whether this extension is persistent * * @link https://php.net/manual/en/reflectionextension.ispersistent.php * @return bool Returns {@see true} for extensions loaded by extension, {@see false} otherwise. * @since 5.4 */ #[Pure] #[TentativeType] public function isPersistent(): bool {} /** * Returns whether this extension is temporary * * @link https://php.net/manual/en/reflectionextension.istemporary.php * @return bool Returns {@see true} for extensions loaded by {@see dl()}, {@see false} otherwise. * @since 5.4 */ #[Pure] #[TentativeType] public function isTemporary(): bool {} /** * Clones * * @link https://php.net/manual/en/reflectionextension.clone.php * @return void No value is returned, if called a fatal error will occur. */ #[PhpStormStubsElementAvailable(from: "5.4", to: "8.0")] final private function __clone(): void {} /** * Clones * * @link https://php.net/manual/en/reflectionextension.clone.php * @return void No value is returned, if called a fatal error will occur. */ #[PhpStormStubsElementAvailable(from: "8.1")] private function __clone(): void {} } ReflectionClass class reports information about a class. * * @link https://php.net/manual/en/class.reflectionclass.php */ class ReflectionClass implements Reflector { /** * @var class-string Name of the class, same as calling the {@see ReflectionClass::getName()} method */ #[Immutable] #[LanguageLevelTypeAware(['8.1' => 'string'], default: '')] public $name; /** * Indicates class that is abstract because it has some abstract methods. * * @link https://www.php.net/manual/en/class.reflectionclass.php#reflectionclass.constants.is-implicit-abstract */ public const IS_IMPLICIT_ABSTRACT = 16; /** * Indicates class that is abstract because of its definition. * * @link https://www.php.net/manual/en/class.reflectionclass.php#reflectionclass.constants.is-explicit-abstract */ public const IS_EXPLICIT_ABSTRACT = 64; /** * Indicates final class. * * @link https://www.php.net/manual/en/class.reflectionclass.php#reflectionclass.constants.is-final */ public const IS_FINAL = 32; /** * @since 8.2 */ public const IS_READONLY = 65536; /** * Constructs a ReflectionClass * * @link https://php.net/manual/en/reflectionclass.construct.php * @param class-string|T $objectOrClass Either a string containing the name of * the class to reflect, or an object. * @throws ReflectionException if the class does not exist. */ public function __construct(#[LanguageLevelTypeAware(['8.0' => 'object|string'], default: '')] $objectOrClass) {} /** * Exports a reflected class * * @link https://php.net/manual/en/reflectionclass.export.php * @param mixed $argument The reflection to export. * @param bool $return Setting to {@see true} will return the export, as * opposed to emitting it. Setting to {@see false} (the default) will do the opposite. * @return string|null If the $return parameter is set to {@see true}, then the * export is returned as a string, otherwise {@see null} is returned. * @removed 8.0 */ #[Deprecated(since: '7.4')] public static function export($argument, $return = false) {} /** * Returns the string representation of the ReflectionClass object. * * @link https://php.net/manual/en/reflectionclass.tostring.php * @return string A string representation of this {@see ReflectionClass} instance. */ #[TentativeType] public function __toString(): string {} /** * Gets class name * * @link https://php.net/manual/en/reflectionclass.getname.php * @return string The class name. */ #[Pure] #[TentativeType] public function getName(): string {} /** * Checks if class is defined internally by an extension, or the core * * @link https://php.net/manual/en/reflectionclass.isinternal.php * @return bool Returns {@see true} on success or {@see false} on failure. */ #[Pure] #[TentativeType] public function isInternal(): bool {} /** * Checks if user defined * * @link https://php.net/manual/en/reflectionclass.isuserdefined.php * @return bool Returns {@see true} on success or {@see false} on failure. */ #[Pure] #[TentativeType] public function isUserDefined(): bool {} /** * Checks if the class is instantiable * * @link https://php.net/manual/en/reflectionclass.isinstantiable.php * @return bool Returns {@see true} on success or {@see false} on failure. */ #[Pure] #[TentativeType] public function isInstantiable(): bool {} /** * Returns whether this class is cloneable * * @link https://php.net/manual/en/reflectionclass.iscloneable.php * @return bool Returns {@see true} if the class is cloneable, {@see false} otherwise. * @since 5.4 */ #[Pure] #[TentativeType] public function isCloneable(): bool {} /** * Gets the filename of the file in which the class has been defined * * @link https://php.net/manual/en/reflectionclass.getfilename.php * @return string|false the filename of the file in which the class has been defined. * If the class is defined in the PHP core or in a PHP extension, {@see false} * is returned. */ #[Pure] #[TentativeType] public function getFileName(): string|false {} /** * Gets starting line number * * @link https://php.net/manual/en/reflectionclass.getstartline.php * @return int The starting line number, as an integer. */ #[Pure] #[TentativeType] public function getStartLine(): int|false {} /** * Gets end line * * @link https://php.net/manual/en/reflectionclass.getendline.php * @return int|false The ending line number of the user defined class, or * {@see false} if unknown. */ #[Pure] #[TentativeType] public function getEndLine(): int|false {} /** * Gets doc comments * * @link https://php.net/manual/en/reflectionclass.getdoccomment.php * @return string|false The doc comment if it exists, otherwise {@see false} */ #[Pure] #[TentativeType] public function getDocComment(): string|false {} /** * Gets the constructor of the class * * @link https://php.net/manual/en/reflectionclass.getconstructor.php * @return ReflectionMethod|null A {@see ReflectionMethod} object reflecting * the class' constructor, or {@see null} if the class has no constructor. */ #[Pure] #[TentativeType] public function getConstructor(): ?ReflectionMethod {} /** * Checks if method is defined * * @link https://php.net/manual/en/reflectionclass.hasmethod.php * @param string $name Name of the method being checked for. * @return bool Returns {@see true} if it has the method, otherwise {@see false} */ #[TentativeType] public function hasMethod(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name): bool {} /** * Gets a ReflectionMethod for a class method. * * @link https://php.net/manual/en/reflectionclass.getmethod.php * @param string $name The method name to reflect. * @return ReflectionMethod A {@see ReflectionMethod} * @throws ReflectionException if the method does not exist. */ #[Pure] #[TentativeType] public function getMethod(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name): ReflectionMethod {} /** * Gets an array of methods for the class. * * @link https://php.net/manual/en/reflectionclass.getmethods.php * @param int|null $filter Filter the results to include only methods * with certain attributes. Defaults to no filtering. * @return ReflectionMethod[] An array of {@see ReflectionMethod} objects * reflecting each method. */ #[Pure] #[TentativeType] public function getMethods(#[LanguageLevelTypeAware(['8.0' => 'int|null'], default: '')] $filter = null): array {} /** * Checks if property is defined * * @link https://php.net/manual/en/reflectionclass.hasproperty.php * @param string $name Name of the property being checked for. * @return bool Returns {@see true} if it has the property, otherwise {@see false} */ #[TentativeType] public function hasProperty(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name): bool {} /** * Gets a ReflectionProperty for a class's property * * @link https://php.net/manual/en/reflectionclass.getproperty.php * @param string $name The property name. * @return ReflectionProperty A {@see ReflectionProperty} * @throws ReflectionException If no property exists by that name. */ #[Pure] #[TentativeType] public function getProperty(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name): ReflectionProperty {} /** * Gets properties * * @link https://php.net/manual/en/reflectionclass.getproperties.php * @param int|null $filter The optional filter, for filtering desired * property types. It's configured using the {@see ReflectionProperty} constants, * and defaults to all property types. * @return ReflectionProperty[] */ #[Pure] #[TentativeType] public function getProperties(#[LanguageLevelTypeAware(['8.0' => 'int|null'], default: '')] $filter = null): array {} /** * Gets a ReflectionClassConstant for a class's property * * @link https://php.net/manual/en/reflectionclass.getreflectionconstant.php * @param string $name The class constant name. * @return ReflectionClassConstant|false A {@see ReflectionClassConstant}. * @since 7.1 */ #[Pure] #[TentativeType] public function getReflectionConstant(string $name): ReflectionClassConstant|false {} /** * Gets class constants * * @link https://php.net/manual/en/reflectionclass.getreflectionconstants.php * @param int|null $filter [optional] allows the filtering of constants defined in a class by their visibility. Since 8.0. * @return ReflectionClassConstant[] An array of ReflectionClassConstant objects. * @since 7.1 */ #[Pure] #[TentativeType] public function getReflectionConstants(#[PhpStormStubsElementAvailable(from: '8.0')] ?int $filter = null): array {} /** * Checks if constant is defined * * @link https://php.net/manual/en/reflectionclass.hasconstant.php * @param string $name The name of the constant being checked for. * @return bool Returns {@see true} if the constant is defined, otherwise {@see false} */ #[TentativeType] public function hasConstant(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name): bool {} /** * Gets constants * * @link https://php.net/manual/en/reflectionclass.getconstants.php * @param int|null $filter [optional] allows the filtering of constants defined in a class by their visibility. Since 8.0. * @return array An array of constants, where the keys hold the name and * the values the value of the constants. */ #[Pure] #[TentativeType] public function getConstants(#[PhpStormStubsElementAvailable(from: '8.0')] ?int $filter = null): array {} /** * Gets defined constant * * @link https://php.net/manual/en/reflectionclass.getconstant.php * @param string $name Name of the constant. * @return mixed|false Value of the constant with the name name. * Returns {@see false} if the constant was not found in the class. */ #[Pure] #[TentativeType] public function getConstant(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name): mixed {} /** * Gets the interfaces * * @link https://php.net/manual/en/reflectionclass.getinterfaces.php * @return ReflectionClass[] An associative array of interfaces, with keys as interface * names and the array values as {@see ReflectionClass} objects. */ #[Pure] #[TentativeType] public function getInterfaces(): array {} /** * Gets the interface names * * @link https://php.net/manual/en/reflectionclass.getinterfacenames.php * @return string[] A numerical array with interface names as the values. */ #[Pure] #[TentativeType] public function getInterfaceNames(): array {} /** * Checks if the class is anonymous * * @link https://php.net/manual/en/reflectionclass.isanonymous.php * @return bool Returns {@see true} on success or {@see false} on failure. * @since 7.0 */ #[Pure] #[TentativeType] public function isAnonymous(): bool {} /** * Checks if the class is an interface * * @link https://php.net/manual/en/reflectionclass.isinterface.php * @return bool Returns {@see true} on success or {@see false} on failure. */ #[Pure] #[TentativeType] public function isInterface(): bool {} /** * Returns an array of traits used by this class * * @link https://php.net/manual/en/reflectionclass.gettraits.php * @return ReflectionClass[] an array with trait names in keys and * instances of trait's {@see ReflectionClass} in values. * @since 5.4 */ #[Pure] #[TentativeType] public function getTraits(): array {} /** * Returns an array of names of traits used by this class * * @link https://php.net/manual/en/reflectionclass.gettraitnames.php * @return string[] An array with trait names in values. * Returns {@see null} in case of an error. * @since 5.4 */ #[Pure] #[TentativeType] public function getTraitNames(): array {} /** * Returns an array of trait aliases * * @link https://php.net/manual/en/reflectionclass.gettraitaliases.php * @return string[] an array with new method names in keys and original * names (in the format "TraitName::original") in values. * Returns {@see null} in case of an error. * @since 5.4 */ #[Pure] #[TentativeType] public function getTraitAliases(): array {} /** * Returns whether this is a trait * * @link https://php.net/manual/en/reflectionclass.istrait.php * @return bool Returns {@see true} if this is a trait, {@see false} otherwise. * Returns {@see null} in case of an error. * @since 5.4 */ #[Pure] #[TentativeType] public function isTrait(): bool {} /** * Checks if class is abstract * * @link https://php.net/manual/en/reflectionclass.isabstract.php * @return bool Returns {@see true} on success or {@see false} on failure. */ #[Pure] #[TentativeType] public function isAbstract(): bool {} /** * Checks if class is final * * @link https://php.net/manual/en/reflectionclass.isfinal.php * @return bool Returns {@see true} on success or {@see false} on failure. */ #[Pure] #[TentativeType] public function isFinal(): bool {} /** * @return bool */ #[Pure] #[PhpStormStubsElementAvailable(from: '8.2')] public function isReadOnly(): bool {} /** * Gets modifiers * * @link https://php.net/manual/en/reflectionclass.getmodifiers.php * @return int bitmask of modifier constants. */ #[Pure] #[TentativeType] public function getModifiers(): int {} /** * Checks class for instance * * @link https://php.net/manual/en/reflectionclass.isinstance.php * @param object $object The object being compared to. * @return bool Returns {@see true} on success or {@see false} on failure. */ #[Pure] #[TentativeType] public function isInstance(#[LanguageLevelTypeAware(['8.0' => 'object'], default: '')] $object): bool {} /** * Creates a new class instance from given arguments. * * @link https://php.net/manual/en/reflectionclass.newinstance.php * @param mixed ...$args Accepts a variable number of arguments which are * passed to the class constructor, much like {@see call_user_func} * @return T a new instance of the class. * @throws ReflectionException if the class constructor is not public or if * the class does not have a constructor and the $args parameter contains * one or more parameters. */ public function newInstance(...$args) {} /** * Creates a new class instance without invoking the constructor. * * @link https://php.net/manual/en/reflectionclass.newinstancewithoutconstructor.php * @return T a new instance of the class. * @throws ReflectionException if the class is an internal class that * cannot be instantiated without invoking the constructor. In PHP 5.6.0 * onwards, this exception is limited only to internal classes that are final. * @since 5.4 */ #[TentativeType] public function newInstanceWithoutConstructor(): object {} /** * Creates a new class instance from given arguments. * * @link https://php.net/manual/en/reflectionclass.newinstanceargs.php * @param array $args The parameters to be passed to the class constructor as an array. * @return T|null a new instance of the class. * @throws ReflectionException if the class constructor is not public or if * the class does not have a constructor and the $args parameter contains * one or more parameters. * @since 5.1.3 */ #[TentativeType] public function newInstanceArgs(array $args = []): ?object {} /** * Gets parent class * * @link https://php.net/manual/en/reflectionclass.getparentclass.php * @return ReflectionClass|false A {@see ReflectionClass} or {@see false} * if there's no parent. */ #[Pure] #[TentativeType] public function getParentClass(): ReflectionClass|false {} /** * Checks if a subclass * * @link https://php.net/manual/en/reflectionclass.issubclassof.php * @param string|ReflectionClass $class Either the name of the class as * string or a {@see ReflectionClass} object of the class to check against. * @return bool {@see true} on success or {@see false} on failure. */ #[Pure] #[TentativeType] public function isSubclassOf(#[LanguageLevelTypeAware(['8.0' => 'ReflectionClass|string'], default: '')] $class): bool {} /** * Gets static properties * * @link https://php.net/manual/en/reflectionclass.getstaticproperties.php * @return array|null The static properties, as an array where the keys hold * the name and the values the value of the properties. */ #[Pure] #[TentativeType] #[LanguageLevelTypeAware(['8.3' => 'array'], default: 'array|null')] public function getStaticProperties() {} /** * Gets static property value * * @link https://php.net/manual/en/reflectionclass.getstaticpropertyvalue.php * @param string $name The name of the static property for which to return a value. * @param mixed $default [optional] A default value to return in case the class does * not declare a static property with the given name. If the property does * not exist and this argument is omitted, a {@see ReflectionException} is thrown. * @return mixed The value of the static property. */ #[Pure] #[TentativeType] public function getStaticPropertyValue( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name, #[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $default ): mixed {} /** * Sets static property value * * @link https://php.net/manual/en/reflectionclass.setstaticpropertyvalue.php * @param string $name Property name. * @param mixed $value New property value. * @return void No value is returned. */ #[TentativeType] public function setStaticPropertyValue( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name, #[LanguageLevelTypeAware(['8.0' => 'mixed'], default: '')] $value ): void {} /** * Gets default properties * * @link https://php.net/manual/en/reflectionclass.getdefaultproperties.php * @return mixed[] An array of default properties, with the key being the name * of the property and the value being the default value of the property * or {@see null} if the property doesn't have a default value. The function * does not distinguish between static and non static properties and does * not take visibility modifiers into account. */ #[Pure] #[TentativeType] public function getDefaultProperties(): array {} /** * An alias of {@see ReflectionClass::isIterable} method. * * @link https://php.net/manual/en/reflectionclass.isiterateable.php * @return bool Returns {@see true} on success or {@see false} on failure. */ #[Pure] #[TentativeType] public function isIterateable(): bool {} /** * Check whether this class is iterable * * @link https://php.net/manual/en/reflectionclass.isiterable.php * @return bool Returns {@see true} on success or {@see false} on failure. * @since 7.2 */ #[Pure] #[TentativeType] public function isIterable(): bool {} /** * Checks whether it implements an interface. * * @link https://php.net/manual/en/reflectionclass.implementsinterface.php * @param string $interface The interface name. * @return bool Returns {@see true} on success or {@see false} on failure. */ #[TentativeType] public function implementsInterface(#[LanguageLevelTypeAware(['8.0' => 'ReflectionClass|string'], default: '')] $interface): bool {} /** * Gets a ReflectionExtension object for the extension which defined the class * * @link https://php.net/manual/en/reflectionclass.getextension.php * @return ReflectionExtension|null A {@see ReflectionExtension} object representing * the extension which defined the class, or {@see null} for user-defined classes. */ #[Pure] #[TentativeType] public function getExtension(): ?ReflectionExtension {} /** * Gets the name of the extension which defined the class * * @link https://php.net/manual/en/reflectionclass.getextensionname.php * @return string|false The name of the extension which defined the class, * or {@see false} for user-defined classes. */ #[Pure] #[TentativeType] public function getExtensionName(): string|false {} /** * Checks if in namespace * * @link https://php.net/manual/en/reflectionclass.innamespace.php * @return bool {@see true} on success or {@see false} on failure. */ #[TentativeType] public function inNamespace(): bool {} /** * Gets namespace name * * @link https://php.net/manual/en/reflectionclass.getnamespacename.php * @return string The namespace name. */ #[Pure] #[TentativeType] public function getNamespaceName(): string {} /** * Gets short name * * @link https://php.net/manual/en/reflectionclass.getshortname.php * @return string The class short name. */ #[Pure] #[TentativeType] public function getShortName(): string {} /** * @template T * * Returns an array of class attributes. * * @param class-string|null $name Name of an attribute class * @param int $flags Сriteria by which the attribute is searched. * @return ReflectionAttribute[] * @since 8.0 */ #[Pure] public function getAttributes(?string $name = null, int $flags = 0): array {} /** * Clones object * * @link https://php.net/manual/en/reflectionclass.clone.php * @return void */ #[PhpStormStubsElementAvailable(from: "5.4", to: "8.0")] final private function __clone(): void {} /** * Clones object * * @link https://php.net/manual/en/reflectionclass.clone.php * @return void */ #[PhpStormStubsElementAvailable(from: "8.1")] private function __clone(): void {} #[PhpStormStubsElementAvailable('8.1')] public function isEnum(): bool {} } IntlChar provides access to a number of utility methods that can be used to access information about Unicode characters.

    *

    The methods and constants adhere closely to the names and behavior used by the underlying ICU library.

    * @since 7.0 */ class IntlChar { public const UNICODE_VERSION = 13.0; public const CODEPOINT_MIN = 0; public const CODEPOINT_MAX = 1114111; public const FOLD_CASE_DEFAULT = 0; public const FOLD_CASE_EXCLUDE_SPECIAL_I = 1; public const PROPERTY_ALPHABETIC = 0; public const PROPERTY_BINARY_START = 0; public const PROPERTY_ASCII_HEX_DIGIT = 1; public const PROPERTY_BIDI_CONTROL = 2; public const PROPERTY_BIDI_MIRRORED = 3; public const PROPERTY_DASH = 4; public const PROPERTY_DEFAULT_IGNORABLE_CODE_POINT = 5; public const PROPERTY_DEPRECATED = 6; public const PROPERTY_DIACRITIC = 7; public const PROPERTY_EXTENDER = 8; public const PROPERTY_FULL_COMPOSITION_EXCLUSION = 9; public const PROPERTY_GRAPHEME_BASE = 10; public const PROPERTY_GRAPHEME_EXTEND = 11; public const PROPERTY_GRAPHEME_LINK = 12; public const PROPERTY_HEX_DIGIT = 13; public const PROPERTY_HYPHEN = 14; public const PROPERTY_ID_CONTINUE = 15; public const PROPERTY_ID_START = 16; public const PROPERTY_IDEOGRAPHIC = 17; public const PROPERTY_IDS_BINARY_OPERATOR = 18; public const PROPERTY_IDS_TRINARY_OPERATOR = 19; public const PROPERTY_JOIN_CONTROL = 20; public const PROPERTY_LOGICAL_ORDER_EXCEPTION = 21; public const PROPERTY_LOWERCASE = 22; public const PROPERTY_MATH = 23; public const PROPERTY_NONCHARACTER_CODE_POINT = 24; public const PROPERTY_QUOTATION_MARK = 25; public const PROPERTY_RADICAL = 26; public const PROPERTY_SOFT_DOTTED = 27; public const PROPERTY_TERMINAL_PUNCTUATION = 28; public const PROPERTY_UNIFIED_IDEOGRAPH = 29; public const PROPERTY_UPPERCASE = 30; public const PROPERTY_WHITE_SPACE = 31; public const PROPERTY_XID_CONTINUE = 32; public const PROPERTY_XID_START = 33; public const PROPERTY_CASE_SENSITIVE = 34; public const PROPERTY_S_TERM = 35; public const PROPERTY_VARIATION_SELECTOR = 36; public const PROPERTY_NFD_INERT = 37; public const PROPERTY_NFKD_INERT = 38; public const PROPERTY_NFC_INERT = 39; public const PROPERTY_NFKC_INERT = 40; public const PROPERTY_SEGMENT_STARTER = 41; public const PROPERTY_PATTERN_SYNTAX = 42; public const PROPERTY_PATTERN_WHITE_SPACE = 43; public const PROPERTY_POSIX_ALNUM = 44; public const PROPERTY_POSIX_BLANK = 45; public const PROPERTY_POSIX_GRAPH = 46; public const PROPERTY_POSIX_PRINT = 47; public const PROPERTY_POSIX_XDIGIT = 48; public const PROPERTY_CASED = 49; public const PROPERTY_CASE_IGNORABLE = 50; public const PROPERTY_CHANGES_WHEN_LOWERCASED = 51; public const PROPERTY_CHANGES_WHEN_UPPERCASED = 52; public const PROPERTY_CHANGES_WHEN_TITLECASED = 53; public const PROPERTY_CHANGES_WHEN_CASEFOLDED = 54; public const PROPERTY_CHANGES_WHEN_CASEMAPPED = 55; public const PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED = 56; public const PROPERTY_BINARY_LIMIT = 65; public const PROPERTY_BIDI_CLASS = 4096; public const PROPERTY_INT_START = 4096; public const PROPERTY_BLOCK = 4097; public const PROPERTY_CANONICAL_COMBINING_CLASS = 4098; public const PROPERTY_DECOMPOSITION_TYPE = 4099; public const PROPERTY_EAST_ASIAN_WIDTH = 4100; public const PROPERTY_GENERAL_CATEGORY = 4101; public const PROPERTY_JOINING_GROUP = 4102; public const PROPERTY_JOINING_TYPE = 4103; public const PROPERTY_LINE_BREAK = 4104; public const PROPERTY_NUMERIC_TYPE = 4105; public const PROPERTY_SCRIPT = 4106; public const PROPERTY_HANGUL_SYLLABLE_TYPE = 4107; public const PROPERTY_NFD_QUICK_CHECK = 4108; public const PROPERTY_NFKD_QUICK_CHECK = 4109; public const PROPERTY_NFC_QUICK_CHECK = 4110; public const PROPERTY_NFKC_QUICK_CHECK = 4111; public const PROPERTY_LEAD_CANONICAL_COMBINING_CLASS = 4112; public const PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS = 4113; public const PROPERTY_GRAPHEME_CLUSTER_BREAK = 4114; public const PROPERTY_SENTENCE_BREAK = 4115; public const PROPERTY_WORD_BREAK = 4116; public const PROPERTY_BIDI_PAIRED_BRACKET_TYPE = 4117; public const PROPERTY_INT_LIMIT = 4121; public const PROPERTY_GENERAL_CATEGORY_MASK = 8192; public const PROPERTY_MASK_START = 8192; public const PROPERTY_MASK_LIMIT = 8193; public const PROPERTY_NUMERIC_VALUE = 12288; public const PROPERTY_DOUBLE_START = 12288; public const PROPERTY_DOUBLE_LIMIT = 12289; public const PROPERTY_AGE = 16384; public const PROPERTY_STRING_START = 16384; public const PROPERTY_BIDI_MIRRORING_GLYPH = 16385; public const PROPERTY_CASE_FOLDING = 16386; public const PROPERTY_ISO_COMMENT = 16387; public const PROPERTY_LOWERCASE_MAPPING = 16388; public const PROPERTY_NAME = 16389; public const PROPERTY_SIMPLE_CASE_FOLDING = 16390; public const PROPERTY_SIMPLE_LOWERCASE_MAPPING = 16391; public const PROPERTY_SIMPLE_TITLECASE_MAPPING = 16392; public const PROPERTY_SIMPLE_UPPERCASE_MAPPING = 16393; public const PROPERTY_TITLECASE_MAPPING = 16394; public const PROPERTY_UNICODE_1_NAME = 16395; public const PROPERTY_UPPERCASE_MAPPING = 16396; public const PROPERTY_BIDI_PAIRED_BRACKET = 16397; public const PROPERTY_STRING_LIMIT = 16398; public const PROPERTY_SCRIPT_EXTENSIONS = 28672; public const PROPERTY_OTHER_PROPERTY_START = 28672; public const PROPERTY_OTHER_PROPERTY_LIMIT = 28673; public const PROPERTY_INVALID_CODE = -1; public const CHAR_CATEGORY_UNASSIGNED = 0; public const CHAR_CATEGORY_GENERAL_OTHER_TYPES = 0; public const CHAR_CATEGORY_UPPERCASE_LETTER = 1; public const CHAR_CATEGORY_LOWERCASE_LETTER = 2; public const CHAR_CATEGORY_TITLECASE_LETTER = 3; public const CHAR_CATEGORY_MODIFIER_LETTER = 4; public const CHAR_CATEGORY_OTHER_LETTER = 5; public const CHAR_CATEGORY_NON_SPACING_MARK = 6; public const CHAR_CATEGORY_ENCLOSING_MARK = 7; public const CHAR_CATEGORY_COMBINING_SPACING_MARK = 8; public const CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER = 9; public const CHAR_CATEGORY_LETTER_NUMBER = 10; public const CHAR_CATEGORY_OTHER_NUMBER = 11; public const CHAR_CATEGORY_SPACE_SEPARATOR = 12; public const CHAR_CATEGORY_LINE_SEPARATOR = 13; public const CHAR_CATEGORY_PARAGRAPH_SEPARATOR = 14; public const CHAR_CATEGORY_CONTROL_CHAR = 15; public const CHAR_CATEGORY_FORMAT_CHAR = 16; public const CHAR_CATEGORY_PRIVATE_USE_CHAR = 17; public const CHAR_CATEGORY_SURROGATE = 18; public const CHAR_CATEGORY_DASH_PUNCTUATION = 19; public const CHAR_CATEGORY_START_PUNCTUATION = 20; public const CHAR_CATEGORY_END_PUNCTUATION = 21; public const CHAR_CATEGORY_CONNECTOR_PUNCTUATION = 22; public const CHAR_CATEGORY_OTHER_PUNCTUATION = 23; public const CHAR_CATEGORY_MATH_SYMBOL = 24; public const CHAR_CATEGORY_CURRENCY_SYMBOL = 25; public const CHAR_CATEGORY_MODIFIER_SYMBOL = 26; public const CHAR_CATEGORY_OTHER_SYMBOL = 27; public const CHAR_CATEGORY_INITIAL_PUNCTUATION = 28; public const CHAR_CATEGORY_FINAL_PUNCTUATION = 29; public const CHAR_CATEGORY_CHAR_CATEGORY_COUNT = 30; public const CHAR_DIRECTION_LEFT_TO_RIGHT = 0; public const CHAR_DIRECTION_RIGHT_TO_LEFT = 1; public const CHAR_DIRECTION_EUROPEAN_NUMBER = 2; public const CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR = 3; public const CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR = 4; public const CHAR_DIRECTION_ARABIC_NUMBER = 5; public const CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR = 6; public const CHAR_DIRECTION_BLOCK_SEPARATOR = 7; public const CHAR_DIRECTION_SEGMENT_SEPARATOR = 8; public const CHAR_DIRECTION_WHITE_SPACE_NEUTRAL = 9; public const CHAR_DIRECTION_OTHER_NEUTRAL = 10; public const CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING = 11; public const CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE = 12; public const CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC = 13; public const CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING = 14; public const CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE = 15; public const CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT = 16; public const CHAR_DIRECTION_DIR_NON_SPACING_MARK = 17; public const CHAR_DIRECTION_BOUNDARY_NEUTRAL = 18; public const CHAR_DIRECTION_FIRST_STRONG_ISOLATE = 19; public const CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE = 20; public const CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE = 21; public const CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE = 22; public const CHAR_DIRECTION_CHAR_DIRECTION_COUNT = 23; public const BLOCK_CODE_NO_BLOCK = 0; public const BLOCK_CODE_BASIC_LATIN = 1; public const BLOCK_CODE_LATIN_1_SUPPLEMENT = 2; public const BLOCK_CODE_LATIN_EXTENDED_A = 3; public const BLOCK_CODE_LATIN_EXTENDED_B = 4; public const BLOCK_CODE_IPA_EXTENSIONS = 5; public const BLOCK_CODE_SPACING_MODIFIER_LETTERS = 6; public const BLOCK_CODE_COMBINING_DIACRITICAL_MARKS = 7; public const BLOCK_CODE_GREEK = 8; public const BLOCK_CODE_CYRILLIC = 9; public const BLOCK_CODE_ARMENIAN = 10; public const BLOCK_CODE_HEBREW = 11; public const BLOCK_CODE_ARABIC = 12; public const BLOCK_CODE_SYRIAC = 13; public const BLOCK_CODE_THAANA = 14; public const BLOCK_CODE_DEVANAGARI = 15; public const BLOCK_CODE_BENGALI = 16; public const BLOCK_CODE_GURMUKHI = 17; public const BLOCK_CODE_GUJARATI = 18; public const BLOCK_CODE_ORIYA = 19; public const BLOCK_CODE_TAMIL = 20; public const BLOCK_CODE_TELUGU = 21; public const BLOCK_CODE_KANNADA = 22; public const BLOCK_CODE_MALAYALAM = 23; public const BLOCK_CODE_SINHALA = 24; public const BLOCK_CODE_THAI = 25; public const BLOCK_CODE_LAO = 26; public const BLOCK_CODE_TIBETAN = 27; public const BLOCK_CODE_MYANMAR = 28; public const BLOCK_CODE_GEORGIAN = 29; public const BLOCK_CODE_HANGUL_JAMO = 30; public const BLOCK_CODE_ETHIOPIC = 31; public const BLOCK_CODE_CHEROKEE = 32; public const BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS = 33; public const BLOCK_CODE_OGHAM = 34; public const BLOCK_CODE_RUNIC = 35; public const BLOCK_CODE_KHMER = 36; public const BLOCK_CODE_MONGOLIAN = 37; public const BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL = 38; public const BLOCK_CODE_GREEK_EXTENDED = 39; public const BLOCK_CODE_GENERAL_PUNCTUATION = 40; public const BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS = 41; public const BLOCK_CODE_CURRENCY_SYMBOLS = 42; public const BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS = 43; public const BLOCK_CODE_LETTERLIKE_SYMBOLS = 44; public const BLOCK_CODE_NUMBER_FORMS = 45; public const BLOCK_CODE_ARROWS = 46; public const BLOCK_CODE_MATHEMATICAL_OPERATORS = 47; public const BLOCK_CODE_MISCELLANEOUS_TECHNICAL = 48; public const BLOCK_CODE_CONTROL_PICTURES = 49; public const BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION = 50; public const BLOCK_CODE_ENCLOSED_ALPHANUMERICS = 51; public const BLOCK_CODE_BOX_DRAWING = 52; public const BLOCK_CODE_BLOCK_ELEMENTS = 53; public const BLOCK_CODE_GEOMETRIC_SHAPES = 54; public const BLOCK_CODE_MISCELLANEOUS_SYMBOLS = 55; public const BLOCK_CODE_DINGBATS = 56; public const BLOCK_CODE_BRAILLE_PATTERNS = 57; public const BLOCK_CODE_CJK_RADICALS_SUPPLEMENT = 58; public const BLOCK_CODE_KANGXI_RADICALS = 59; public const BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS = 60; public const BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION = 61; public const BLOCK_CODE_HIRAGANA = 62; public const BLOCK_CODE_KATAKANA = 63; public const BLOCK_CODE_BOPOMOFO = 64; public const BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO = 65; public const BLOCK_CODE_KANBUN = 66; public const BLOCK_CODE_BOPOMOFO_EXTENDED = 67; public const BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS = 68; public const BLOCK_CODE_CJK_COMPATIBILITY = 69; public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A = 70; public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS = 71; public const BLOCK_CODE_YI_SYLLABLES = 72; public const BLOCK_CODE_YI_RADICALS = 73; public const BLOCK_CODE_HANGUL_SYLLABLES = 74; public const BLOCK_CODE_HIGH_SURROGATES = 75; public const BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES = 76; public const BLOCK_CODE_LOW_SURROGATES = 77; public const BLOCK_CODE_PRIVATE_USE_AREA = 78; public const BLOCK_CODE_PRIVATE_USE = 78; public const BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS = 79; public const BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS = 80; public const BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A = 81; public const BLOCK_CODE_COMBINING_HALF_MARKS = 82; public const BLOCK_CODE_CJK_COMPATIBILITY_FORMS = 83; public const BLOCK_CODE_SMALL_FORM_VARIANTS = 84; public const BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B = 85; public const BLOCK_CODE_SPECIALS = 86; public const BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS = 87; public const BLOCK_CODE_OLD_ITALIC = 88; public const BLOCK_CODE_GOTHIC = 89; public const BLOCK_CODE_DESERET = 90; public const BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS = 91; public const BLOCK_CODE_MUSICAL_SYMBOLS = 92; public const BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS = 93; public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B = 94; public const BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT = 95; public const BLOCK_CODE_TAGS = 96; public const BLOCK_CODE_CYRILLIC_SUPPLEMENT = 97; public const BLOCK_CODE_CYRILLIC_SUPPLEMENTARY = 97; public const BLOCK_CODE_TAGALOG = 98; public const BLOCK_CODE_HANUNOO = 99; public const BLOCK_CODE_BUHID = 100; public const BLOCK_CODE_TAGBANWA = 101; public const BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A = 102; public const BLOCK_CODE_SUPPLEMENTAL_ARROWS_A = 103; public const BLOCK_CODE_SUPPLEMENTAL_ARROWS_B = 104; public const BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B = 105; public const BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS = 106; public const BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS = 107; public const BLOCK_CODE_VARIATION_SELECTORS = 108; public const BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A = 109; public const BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B = 110; public const BLOCK_CODE_LIMBU = 111; public const BLOCK_CODE_TAI_LE = 112; public const BLOCK_CODE_KHMER_SYMBOLS = 113; public const BLOCK_CODE_PHONETIC_EXTENSIONS = 114; public const BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS = 115; public const BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS = 116; public const BLOCK_CODE_LINEAR_B_SYLLABARY = 117; public const BLOCK_CODE_LINEAR_B_IDEOGRAMS = 118; public const BLOCK_CODE_AEGEAN_NUMBERS = 119; public const BLOCK_CODE_UGARITIC = 120; public const BLOCK_CODE_SHAVIAN = 121; public const BLOCK_CODE_OSMANYA = 122; public const BLOCK_CODE_CYPRIOT_SYLLABARY = 123; public const BLOCK_CODE_TAI_XUAN_JING_SYMBOLS = 124; public const BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT = 125; public const BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION = 126; public const BLOCK_CODE_ANCIENT_GREEK_NUMBERS = 127; public const BLOCK_CODE_ARABIC_SUPPLEMENT = 128; public const BLOCK_CODE_BUGINESE = 129; public const BLOCK_CODE_CJK_STROKES = 130; public const BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT = 131; public const BLOCK_CODE_COPTIC = 132; public const BLOCK_CODE_ETHIOPIC_EXTENDED = 133; public const BLOCK_CODE_ETHIOPIC_SUPPLEMENT = 134; public const BLOCK_CODE_GEORGIAN_SUPPLEMENT = 135; public const BLOCK_CODE_GLAGOLITIC = 136; public const BLOCK_CODE_KHAROSHTHI = 137; public const BLOCK_CODE_MODIFIER_TONE_LETTERS = 138; public const BLOCK_CODE_NEW_TAI_LUE = 139; public const BLOCK_CODE_OLD_PERSIAN = 140; public const BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT = 141; public const BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION = 142; public const BLOCK_CODE_SYLOTI_NAGRI = 143; public const BLOCK_CODE_TIFINAGH = 144; public const BLOCK_CODE_VERTICAL_FORMS = 145; public const BLOCK_CODE_NKO = 146; public const BLOCK_CODE_BALINESE = 147; public const BLOCK_CODE_LATIN_EXTENDED_C = 148; public const BLOCK_CODE_LATIN_EXTENDED_D = 149; public const BLOCK_CODE_PHAGS_PA = 150; public const BLOCK_CODE_PHOENICIAN = 151; public const BLOCK_CODE_CUNEIFORM = 152; public const BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION = 153; public const BLOCK_CODE_COUNTING_ROD_NUMERALS = 154; public const BLOCK_CODE_SUNDANESE = 155; public const BLOCK_CODE_LEPCHA = 156; public const BLOCK_CODE_OL_CHIKI = 157; public const BLOCK_CODE_CYRILLIC_EXTENDED_A = 158; public const BLOCK_CODE_VAI = 159; public const BLOCK_CODE_CYRILLIC_EXTENDED_B = 160; public const BLOCK_CODE_SAURASHTRA = 161; public const BLOCK_CODE_KAYAH_LI = 162; public const BLOCK_CODE_REJANG = 163; public const BLOCK_CODE_CHAM = 164; public const BLOCK_CODE_ANCIENT_SYMBOLS = 165; public const BLOCK_CODE_PHAISTOS_DISC = 166; public const BLOCK_CODE_LYCIAN = 167; public const BLOCK_CODE_CARIAN = 168; public const BLOCK_CODE_LYDIAN = 169; public const BLOCK_CODE_MAHJONG_TILES = 170; public const BLOCK_CODE_DOMINO_TILES = 171; public const BLOCK_CODE_SAMARITAN = 172; public const BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED = 173; public const BLOCK_CODE_TAI_THAM = 174; public const BLOCK_CODE_VEDIC_EXTENSIONS = 175; public const BLOCK_CODE_LISU = 176; public const BLOCK_CODE_BAMUM = 177; public const BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS = 178; public const BLOCK_CODE_DEVANAGARI_EXTENDED = 179; public const BLOCK_CODE_HANGUL_JAMO_EXTENDED_A = 180; public const BLOCK_CODE_JAVANESE = 181; public const BLOCK_CODE_MYANMAR_EXTENDED_A = 182; public const BLOCK_CODE_TAI_VIET = 183; public const BLOCK_CODE_MEETEI_MAYEK = 184; public const BLOCK_CODE_HANGUL_JAMO_EXTENDED_B = 185; public const BLOCK_CODE_IMPERIAL_ARAMAIC = 186; public const BLOCK_CODE_OLD_SOUTH_ARABIAN = 187; public const BLOCK_CODE_AVESTAN = 188; public const BLOCK_CODE_INSCRIPTIONAL_PARTHIAN = 189; public const BLOCK_CODE_INSCRIPTIONAL_PAHLAVI = 190; public const BLOCK_CODE_OLD_TURKIC = 191; public const BLOCK_CODE_RUMI_NUMERAL_SYMBOLS = 192; public const BLOCK_CODE_KAITHI = 193; public const BLOCK_CODE_EGYPTIAN_HIEROGLYPHS = 194; public const BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT = 195; public const BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT = 196; public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C = 197; public const BLOCK_CODE_MANDAIC = 198; public const BLOCK_CODE_BATAK = 199; public const BLOCK_CODE_ETHIOPIC_EXTENDED_A = 200; public const BLOCK_CODE_BRAHMI = 201; public const BLOCK_CODE_BAMUM_SUPPLEMENT = 202; public const BLOCK_CODE_KANA_SUPPLEMENT = 203; public const BLOCK_CODE_PLAYING_CARDS = 204; public const BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS = 205; public const BLOCK_CODE_EMOTICONS = 206; public const BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS = 207; public const BLOCK_CODE_ALCHEMICAL_SYMBOLS = 208; public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D = 209; public const BLOCK_CODE_ARABIC_EXTENDED_A = 210; public const BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS = 211; public const BLOCK_CODE_CHAKMA = 212; public const BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS = 213; public const BLOCK_CODE_MEROITIC_CURSIVE = 214; public const BLOCK_CODE_MEROITIC_HIEROGLYPHS = 215; public const BLOCK_CODE_MIAO = 216; public const BLOCK_CODE_SHARADA = 217; public const BLOCK_CODE_SORA_SOMPENG = 218; public const BLOCK_CODE_SUNDANESE_SUPPLEMENT = 219; public const BLOCK_CODE_TAKRI = 220; public const BLOCK_CODE_BASSA_VAH = 221; public const BLOCK_CODE_CAUCASIAN_ALBANIAN = 222; public const BLOCK_CODE_COPTIC_EPACT_NUMBERS = 223; public const BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED = 224; public const BLOCK_CODE_DUPLOYAN = 225; public const BLOCK_CODE_ELBASAN = 226; public const BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED = 227; public const BLOCK_CODE_GRANTHA = 228; public const BLOCK_CODE_KHOJKI = 229; public const BLOCK_CODE_KHUDAWADI = 230; public const BLOCK_CODE_LATIN_EXTENDED_E = 231; public const BLOCK_CODE_LINEAR_A = 232; public const BLOCK_CODE_MAHAJANI = 233; public const BLOCK_CODE_MANICHAEAN = 234; public const BLOCK_CODE_MENDE_KIKAKUI = 235; public const BLOCK_CODE_MODI = 236; public const BLOCK_CODE_MRO = 237; public const BLOCK_CODE_MYANMAR_EXTENDED_B = 238; public const BLOCK_CODE_NABATAEAN = 239; public const BLOCK_CODE_OLD_NORTH_ARABIAN = 240; public const BLOCK_CODE_OLD_PERMIC = 241; public const BLOCK_CODE_ORNAMENTAL_DINGBATS = 242; public const BLOCK_CODE_PAHAWH_HMONG = 243; public const BLOCK_CODE_PALMYRENE = 244; public const BLOCK_CODE_PAU_CIN_HAU = 245; public const BLOCK_CODE_PSALTER_PAHLAVI = 246; public const BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS = 247; public const BLOCK_CODE_SIDDHAM = 248; public const BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS = 249; public const BLOCK_CODE_SUPPLEMENTAL_ARROWS_C = 250; public const BLOCK_CODE_TIRHUTA = 251; public const BLOCK_CODE_WARANG_CITI = 252; public const BLOCK_CODE_COUNT = 309; public const BLOCK_CODE_INVALID_CODE = -1; public const BPT_NONE = 0; public const BPT_OPEN = 1; public const BPT_CLOSE = 2; public const BPT_COUNT = 3; public const EA_NEUTRAL = 0; public const EA_AMBIGUOUS = 1; public const EA_HALFWIDTH = 2; public const EA_FULLWIDTH = 3; public const EA_NARROW = 4; public const EA_WIDE = 5; public const EA_COUNT = 6; public const UNICODE_CHAR_NAME = 0; public const UNICODE_10_CHAR_NAME = 1; public const EXTENDED_CHAR_NAME = 2; public const CHAR_NAME_ALIAS = 3; public const CHAR_NAME_CHOICE_COUNT = 4; public const SHORT_PROPERTY_NAME = 0; public const LONG_PROPERTY_NAME = 1; public const PROPERTY_NAME_CHOICE_COUNT = 2; public const DT_NONE = 0; public const DT_CANONICAL = 1; public const DT_COMPAT = 2; public const DT_CIRCLE = 3; public const DT_FINAL = 4; public const DT_FONT = 5; public const DT_FRACTION = 6; public const DT_INITIAL = 7; public const DT_ISOLATED = 8; public const DT_MEDIAL = 9; public const DT_NARROW = 10; public const DT_NOBREAK = 11; public const DT_SMALL = 12; public const DT_SQUARE = 13; public const DT_SUB = 14; public const DT_SUPER = 15; public const DT_VERTICAL = 16; public const DT_WIDE = 17; public const DT_COUNT = 18; public const JT_NON_JOINING = 0; public const JT_JOIN_CAUSING = 1; public const JT_DUAL_JOINING = 2; public const JT_LEFT_JOINING = 3; public const JT_RIGHT_JOINING = 4; public const JT_TRANSPARENT = 5; public const JT_COUNT = 6; public const JG_NO_JOINING_GROUP = 0; public const JG_AIN = 1; public const JG_ALAPH = 2; public const JG_ALEF = 3; public const JG_BEH = 4; public const JG_BETH = 5; public const JG_DAL = 6; public const JG_DALATH_RISH = 7; public const JG_E = 8; public const JG_FEH = 9; public const JG_FINAL_SEMKATH = 10; public const JG_GAF = 11; public const JG_GAMAL = 12; public const JG_HAH = 13; public const JG_TEH_MARBUTA_GOAL = 14; public const JG_HAMZA_ON_HEH_GOAL = 14; public const JG_HE = 15; public const JG_HEH = 16; public const JG_HEH_GOAL = 17; public const JG_HETH = 18; public const JG_KAF = 19; public const JG_KAPH = 20; public const JG_KNOTTED_HEH = 21; public const JG_LAM = 22; public const JG_LAMADH = 23; public const JG_MEEM = 24; public const JG_MIM = 25; public const JG_NOON = 26; public const JG_NUN = 27; public const JG_PE = 28; public const JG_QAF = 29; public const JG_QAPH = 30; public const JG_REH = 31; public const JG_REVERSED_PE = 32; public const JG_SAD = 33; public const JG_SADHE = 34; public const JG_SEEN = 35; public const JG_SEMKATH = 36; public const JG_SHIN = 37; public const JG_SWASH_KAF = 38; public const JG_SYRIAC_WAW = 39; public const JG_TAH = 40; public const JG_TAW = 41; public const JG_TEH_MARBUTA = 42; public const JG_TETH = 43; public const JG_WAW = 44; public const JG_YEH = 45; public const JG_YEH_BARREE = 46; public const JG_YEH_WITH_TAIL = 47; public const JG_YUDH = 48; public const JG_YUDH_HE = 49; public const JG_ZAIN = 50; public const JG_FE = 51; public const JG_KHAPH = 52; public const JG_ZHAIN = 53; public const JG_BURUSHASKI_YEH_BARREE = 54; public const JG_FARSI_YEH = 55; public const JG_NYA = 56; public const JG_ROHINGYA_YEH = 57; public const JG_MANICHAEAN_ALEPH = 58; public const JG_MANICHAEAN_AYIN = 59; public const JG_MANICHAEAN_BETH = 60; public const JG_MANICHAEAN_DALETH = 61; public const JG_MANICHAEAN_DHAMEDH = 62; public const JG_MANICHAEAN_FIVE = 63; public const JG_MANICHAEAN_GIMEL = 64; public const JG_MANICHAEAN_HETH = 65; public const JG_MANICHAEAN_HUNDRED = 66; public const JG_MANICHAEAN_KAPH = 67; public const JG_MANICHAEAN_LAMEDH = 68; public const JG_MANICHAEAN_MEM = 69; public const JG_MANICHAEAN_NUN = 70; public const JG_MANICHAEAN_ONE = 71; public const JG_MANICHAEAN_PE = 72; public const JG_MANICHAEAN_QOPH = 73; public const JG_MANICHAEAN_RESH = 74; public const JG_MANICHAEAN_SADHE = 75; public const JG_MANICHAEAN_SAMEKH = 76; public const JG_MANICHAEAN_TAW = 77; public const JG_MANICHAEAN_TEN = 78; public const JG_MANICHAEAN_TETH = 79; public const JG_MANICHAEAN_THAMEDH = 80; public const JG_MANICHAEAN_TWENTY = 81; public const JG_MANICHAEAN_WAW = 82; public const JG_MANICHAEAN_YODH = 83; public const JG_MANICHAEAN_ZAYIN = 84; public const JG_STRAIGHT_WAW = 85; public const JG_COUNT = 102; public const GCB_OTHER = 0; public const GCB_CONTROL = 1; public const GCB_CR = 2; public const GCB_EXTEND = 3; public const GCB_L = 4; public const GCB_LF = 5; public const GCB_LV = 6; public const GCB_LVT = 7; public const GCB_T = 8; public const GCB_V = 9; public const GCB_SPACING_MARK = 10; public const GCB_PREPEND = 11; public const GCB_REGIONAL_INDICATOR = 12; public const GCB_COUNT = 18; public const WB_OTHER = 0; public const WB_ALETTER = 1; public const WB_FORMAT = 2; public const WB_KATAKANA = 3; public const WB_MIDLETTER = 4; public const WB_MIDNUM = 5; public const WB_NUMERIC = 6; public const WB_EXTENDNUMLET = 7; public const WB_CR = 8; public const WB_EXTEND = 9; public const WB_LF = 10; public const WB_MIDNUMLET = 11; public const WB_NEWLINE = 12; public const WB_REGIONAL_INDICATOR = 13; public const WB_HEBREW_LETTER = 14; public const WB_SINGLE_QUOTE = 15; public const WB_DOUBLE_QUOTE = 16; public const WB_COUNT = 23; public const SB_OTHER = 0; public const SB_ATERM = 1; public const SB_CLOSE = 2; public const SB_FORMAT = 3; public const SB_LOWER = 4; public const SB_NUMERIC = 5; public const SB_OLETTER = 6; public const SB_SEP = 7; public const SB_SP = 8; public const SB_STERM = 9; public const SB_UPPER = 10; public const SB_CR = 11; public const SB_EXTEND = 12; public const SB_LF = 13; public const SB_SCONTINUE = 14; public const SB_COUNT = 15; public const LB_UNKNOWN = 0; public const LB_AMBIGUOUS = 1; public const LB_ALPHABETIC = 2; public const LB_BREAK_BOTH = 3; public const LB_BREAK_AFTER = 4; public const LB_BREAK_BEFORE = 5; public const LB_MANDATORY_BREAK = 6; public const LB_CONTINGENT_BREAK = 7; public const LB_CLOSE_PUNCTUATION = 8; public const LB_COMBINING_MARK = 9; public const LB_CARRIAGE_RETURN = 10; public const LB_EXCLAMATION = 11; public const LB_GLUE = 12; public const LB_HYPHEN = 13; public const LB_IDEOGRAPHIC = 14; public const LB_INSEPARABLE = 15; public const LB_INSEPERABLE = 15; public const LB_INFIX_NUMERIC = 16; public const LB_LINE_FEED = 17; public const LB_NONSTARTER = 18; public const LB_NUMERIC = 19; public const LB_OPEN_PUNCTUATION = 20; public const LB_POSTFIX_NUMERIC = 21; public const LB_PREFIX_NUMERIC = 22; public const LB_QUOTATION = 23; public const LB_COMPLEX_CONTEXT = 24; public const LB_SURROGATE = 25; public const LB_SPACE = 26; public const LB_BREAK_SYMBOLS = 27; public const LB_ZWSPACE = 28; public const LB_NEXT_LINE = 29; public const LB_WORD_JOINER = 30; public const LB_H2 = 31; public const LB_H3 = 32; public const LB_JL = 33; public const LB_JT = 34; public const LB_JV = 35; public const LB_CLOSE_PARENTHESIS = 36; public const LB_CONDITIONAL_JAPANESE_STARTER = 37; public const LB_HEBREW_LETTER = 38; public const LB_REGIONAL_INDICATOR = 39; public const LB_COUNT = 43; public const NT_NONE = 0; public const NT_DECIMAL = 1; public const NT_DIGIT = 2; public const NT_NUMERIC = 3; public const NT_COUNT = 4; public const HST_NOT_APPLICABLE = 0; public const HST_LEADING_JAMO = 1; public const HST_VOWEL_JAMO = 2; public const HST_TRAILING_JAMO = 3; public const HST_LV_SYLLABLE = 4; public const HST_LVT_SYLLABLE = 5; public const HST_COUNT = 6; public const NO_NUMERIC_VALUE = -123456789; /** * @since 8.4 */ public const PROPERTY_IDS_UNARY_OPERATOR = 72; /** * @since 8.4 */ public const PROPERTY_ID_COMPAT_MATH_START = 73; /** * @since 8.4 */ public const PROPERTY_ID_COMPAT_MATH_CONTINUE = 74; /** * Check a binary Unicode property for a code point * @link https://php.net/manual/en/intlchar.hasbinaryproperty.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @param int $property The Unicode property to lookup (see the IntlChar::PROPERTY_* constants). * @return bool|null Returns TRUE or FALSE according to the binary Unicode property value for codepoint. * Also FALSE if property is out of bounds or if the Unicode version does not have data for the property at all, or not for this code point. * Or NULL if codepoint is out of bounds. * @since 7.0 */ #[Pure] #[TentativeType] public static function hasBinaryProperty( #[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $property ): ?bool {} /** * @link https://php.net/manual/en/intlchar.charage.php * Get the "age" of the code point * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return array|null The Unicode version number, as an array. For example, version 1.3.31.2 would be represented as [1, 3, 31, 2]. * Or NULL if codepoint is out of bounds. * @since 7.0 */ #[TentativeType] public static function charAge(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?array {} /** * @link https://php.net/manual/en/intlchar.chardigitvalue.php * Get the decimal digit value of a decimal digit character * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return int|null The decimal digit value of codepoint, or -1 if it is not a decimal digit character. * Or NULL if codepoint is out of bounds. * @since 7.0 */ #[TentativeType] public static function charDigitValue(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?int {} /** * Get bidirectional category value for a code point * @link https://php.net/manual/en/intlchar.chardirection.php * @param int|string $codepoint

    The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

    * @return int|null

    The bidirectional category value; one of the following constants: *

    *
      *
    • IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT
    • *
    • IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT
    • *
    • IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER
    • *
    • IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR
    • *
    • IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR
    • *
    • IntlChar::CHAR_DIRECTION_ARABIC_NUMBER
    • *
    • IntlChar::CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR
    • *
    • IntlChar::CHAR_DIRECTION_BLOCK_SEPARATOR
    • *
    • IntlChar::CHAR_DIRECTION_SEGMENT_SEPARATOR
    • *
    • IntlChar::CHAR_DIRECTION_WHITE_SPACE_NEUTRAL
    • *
    • IntlChar::CHAR_DIRECTION_OTHER_NEUTRAL
    • *
    • IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING
    • *
    • IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE
    • *
    • IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC
    • *
    • IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING
    • *
    • IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE
    • *
    • IntlChar::CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT
    • *
    • IntlChar::CHAR_DIRECTION_DIR_NON_SPACING_MARK
    • *
    • IntlChar::CHAR_DIRECTION_BOUNDARY_NEUTRAL
    • *
    • IntlChar::CHAR_DIRECTION_FIRST_STRONG_ISOLATE
    • *
    • IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE
    • *
    • IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE
    • *
    • IntlChar::CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE
    • *
    • IntlChar::CHAR_DIRECTION_CHAR_DIRECTION_COUNT
    • *
    * Or NULL if codepoint is out of bounds. * @since 7.0 */ #[TentativeType] public static function charDirection(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?int {} /** * @link https://php.net/manual/en/intlchar.charfromname.php * Find Unicode character by name and return its code point value * @param string $name

    Full name of the Unicode character.

    * @param int $type [optional]

    * Which set of names to use for the lookup. Can be any of these constants: *

      *
    • IntlChar::UNICODE_CHAR_NAME (default)
    • *
    • IntlChar::UNICODE_10_CHAR_NAME
    • *
    • IntlChar::EXTENDED_CHAR_NAME
    • *
    • IntlChar::CHAR_NAME_ALIAS
    • *
    • IntlChar::CHAR_NAME_CHOICE_COUNT
    • *
    * @return int|null The Unicode value of the code point with the given name (as an integer), or NULL if there is no such code point. * @since 7.0 */ #[TentativeType] public static function charFromName( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $type = IntlChar::UNICODE_CHAR_NAME ): ?int {} /** * @link https://php.net/manual/en/intlchar.charmirror.php * Get the "mirror-image" character for a code point * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return int|string|null Returns another Unicode code point that may serve as a mirror-image substitute, or codepoint itself if there is no such mapping or codepoint does not have the Bidi_Mirrored property. * The return type will be integer unless the code point was passed as a UTF-8 string, in which case a string will be returned. * Or NULL if codepoint will be out of bound. */ #[TentativeType] public static function charMirror(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): string|int|null {} /** * Retrieve the name of a Unicode character * @link https://php.net/manual/en/intlchar.charname.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @param int $type [optional] Which set of names to use for the lookup. Can be any of these constants: *
      *
    • IntlChar::UNICODE_CHAR_NAME (default)
    • *
    • IntlChar::UNICODE_10_CHAR_NAME
    • *
    • IntlChar::EXTENDED_CHAR_NAME
    • *
    • IntlChar::CHAR_NAME_ALIAS
    • *
    • IntlChar::CHAR_NAME_CHOICE_COUNT
    • *
    * @return string|null The corresponding name, or an empty string if there is no name for this character, or NULL if codepoint is out of bounds. * @since 7.0 */ #[TentativeType] public static function charName( #[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $type = IntlChar::UNICODE_CHAR_NAME ): ?string {} /** * Get the general category value for a code point * @link https://php.net/manual/en/intlchar.chartype.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return int|null Returns the general category type, which may be one of the following constants: *

      *
    • IntlChar::CHAR_CATEGORY_UNASSIGNED
    • *
    • IntlChar::CHAR_CATEGORY_GENERAL_OTHER_TYPES
    • *
    • IntlChar::CHAR_CATEGORY_UPPERCASE_LETTER
    • *
    • IntlChar::CHAR_CATEGORY_LOWERCASE_LETTER
    • *
    • IntlChar::CHAR_CATEGORY_TITLECASE_LETTER
    • *
    • IntlChar::CHAR_CATEGORY_MODIFIER_LETTER
    • *
    • IntlChar::CHAR_CATEGORY_OTHER_LETTER
    • *
    • IntlChar::CHAR_CATEGORY_NON_SPACING_MARK
    • *
    • IntlChar::CHAR_CATEGORY_ENCLOSING_MARK
    • *
    • IntlChar::CHAR_CATEGORY_COMBINING_SPACING_MARK
    • *
    • IntlChar::CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER
    • *
    • IntlChar::CHAR_CATEGORY_LETTER_NUMBER
    • *
    • IntlChar::CHAR_CATEGORY_OTHER_NUMBER
    • *
    • IntlChar::CHAR_CATEGORY_SPACE_SEPARATOR
    • *
    • IntlChar::CHAR_CATEGORY_LINE_SEPARATOR
    • *
    • IntlChar::CHAR_CATEGORY_PARAGRAPH_SEPARATOR
    • *
    • IntlChar::CHAR_CATEGORY_CONTROL_CHAR
    • *
    • IntlChar::CHAR_CATEGORY_FORMAT_CHAR
    • *
    • IntlChar::CHAR_CATEGORY_PRIVATE_USE_CHAR
    • *
    • IntlChar::CHAR_CATEGORY_SURROGATE
    • *
    • IntlChar::CHAR_CATEGORY_DASH_PUNCTUATION
    • *
    • IntlChar::CHAR_CATEGORY_START_PUNCTUATION
    • *
    • IntlChar::CHAR_CATEGORY_END_PUNCTUATION
    • *
    • IntlChar::CHAR_CATEGORY_CONNECTOR_PUNCTUATION
    • *
    • IntlChar::CHAR_CATEGORY_OTHER_PUNCTUATION
    • *
    • IntlChar::CHAR_CATEGORY_MATH_SYMBOL
    • *
    • IntlChar::CHAR_CATEGORY_CURRENCY_SYMBOL
    • *
    • IntlChar::CHAR_CATEGORY_MODIFIER_SYMBOL
    • *
    • IntlChar::CHAR_CATEGORY_OTHER_SYMBOL
    • *
    • IntlChar::CHAR_CATEGORY_INITIAL_PUNCTUATION
    • *
    • IntlChar::CHAR_CATEGORY_FINAL_PUNCTUATION
    • *
    • IntlChar::CHAR_CATEGORY_CHAR_CATEGORY_COUNT
    *

    Or NULL if codepoint is out of bound.

    'int|string'], default: '')] $codepoint): ?int {} /** * Return Unicode character by code point value * @link https://php.net/manual/en/intlchar.chr.php * @param mixed $codepoint

    The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

    * @return string|null A string containing the single character specified by the Unicode code point value. * Or NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function chr(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?string {} /** * Get the decimal digit value of a code point for a given radix * @link https://php.net/manual/en/intlchar.digit.php * @param int|string $codepoint

    The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

    * @param int $base

    The radix (defaults to 10).

    * @return int|false|null Returns the numeric value represented by the character in the specified radix, * or FALSE if there is no value or if the value exceeds the radix, * or NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function digit( #[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $base = 10 ): int|false|null {} /** * Enumerate all assigned Unicode characters within a range * @link https://php.net/manual/en/intlchar.enumcharnames.php * @param int|string $start The first code point in the enumeration range. * @param int|string $end One more than the last code point in the enumeration range (the first one after the range). * @param callable $callback

    * The function that is to be called for each character name. The following three arguments will be passed into it: *

      *
    • integer $codepoint - The numeric code point value
    • *
    • integer $nameChoice - The same value as the nameChoice parameter below
    • *
    • string $name - The name of the character
    • *
    * @param int $type [optional]

    * Selector for which kind of names to enumerate. Can be any of these constants: *

      *
    • IntlChar::UNICODE_CHAR_NAME (default)
    • *
    • IntlChar::UNICODE_10_CHAR_NAME
    • *
    • IntlChar::EXTENDED_CHAR_NAME
    • *
    • IntlChar::CHAR_NAME_ALIAS
    • *
    • IntlChar::CHAR_NAME_CHOICE_COUNT
    • *
    * @since 7.0 */ #[TentativeType] #[LanguageLevelTypeAware(['8.3' => 'bool'], default: 'bool|null')] public static function enumCharNames( #[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $start, #[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $end, #[LanguageLevelTypeAware(['8.0' => 'callable'], default: '')] $callback, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $type = IntlChar::UNICODE_CHAR_NAME ) {} /** * Enumerate all code points with their Unicode general categories * @link https://php.net/manual/en/intlchar.enumchartypes.php * @param callable $callback

    * The function that is to be called for each contiguous range of code points with the same general category. * The following three arguments will be passed into it: *

      *
    • integer $start - The starting code point of the range
    • *
    • integer $end - The ending code point of the range
    • *
    • integer $name - The category type (one of the IntlChar::CHAR_CATEGORY_* constants)
    • *
    * @since 7.0 */ #[TentativeType] public static function enumCharTypes( #[PhpStormStubsElementAvailable(from: '7.0', to: '7.4')] $callback = null, #[PhpStormStubsElementAvailable(from: '8.0')] callable $callback ): void {} /** * Perform case folding on a code point * @link https://php.net/manual/en/intlchar.foldcase.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @param int $options [optional] Either IntlChar::FOLD_CASE_DEFAULT (default) or IntlChar::FOLD_CASE_EXCLUDE_SPECIAL_I. * @return int|string|null Returns the Simple_Case_Folding of the code point, if any; otherwise the code point itself. * Returns NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function foldCase( #[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $options = IntlChar::FOLD_CASE_DEFAULT ): string|int|null {} /** * Get character representation for a given digit and radix * @link https://php.net/manual/en/intlchar.fordigit.php * @param int $digit

    The number to convert to a character.

    * @param int $base [optional]

    The radix (defaults to 10).

    * @return int The character representation (as a string) of the specified digit in the specified radix. * @since 7.0 */ #[TentativeType] public static function forDigit( #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $digit, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $base = 10 ): int {} /** * Get the paired bracket character for a code point * @link https://php.net/manual/en/intlchar.getbidipairedbracket.php * @param int|string $codepoint

    The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

    * @return int|string|null Returns the paired bracket code point, or codepoint itself if there is no such mapping. * The return type will be integer unless the code point was passed as a UTF-8 string, in which case a string will be returned. * Or NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function getBidiPairedBracket(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): string|int|null {} /** * Get the Unicode allocation block containing a code point * @link https://php.net/manual/en/intlchar.getblockcode.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return int|null Returns the block value for codepoint, or NULL if codepoint is out of bound. * See the IntlChar::BLOCK_CODE_* constants for possible return values. * @since 7.0 */ #[TentativeType] public static function getBlockCode(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?int {} /** * Get the combining class of a code point * @link https://php.net/manual/en/intlchar.getcombiningclass.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return int|null Returns the combining class of the character. * Or NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function getCombiningClass(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?int {} /** * Get the FC_NFKC_Closure property for a code point * @link https://php.net/manual/en/intlchar.getfc-nfkc-closure.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return string|false|null Returns the FC_NFKC_Closure property string for the codepoint, or an empty string if there is none, * or NULL if codepoint is out of bound, * or FALSE if there was an error. * @since 7.0 */ #[TentativeType] public static function getFC_NFKC_Closure(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): string|false|null {} /** * Get the max value for a Unicode property * @link https://php.net/manual/en/intlchar.getintpropertymaxvalue.php * @param int $property The Unicode property to lookup (see the IntlChar::PROPERTY_* constants). * @return int The maximum value returned by {@see IntlChar::getIntPropertyValue()} for a Unicode property. <=0 if the property selector is out of range. * @since 7.0 */ #[TentativeType] public static function getIntPropertyMaxValue(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $property): int {} /** * Get the min value for a Unicode property * @link https://php.net/manual/en/intlchar.getintpropertyminvalue.php * @param int $property The Unicode property to lookup (see the IntlChar::PROPERTY_* constants). * @return int The minimum value returned by {@see IntlChar::getIntPropertyValue()} for a Unicode property. 0 if the property selector is out of range. * @since 7.0 */ #[TentativeType] public static function getIntPropertyMinValue(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $property): int {} /** * Get the value for a Unicode property for a code point * @link https://php.net/manual/en/intlchar.getintpropertyvalue.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @param int $property The Unicode property to lookup (see the IntlChar::PROPERTY_* constants). * @return int|null

    * Returns the numeric value that is directly the property value or, for enumerated properties, corresponds to the * numeric value of the enumerated constant of the respective property value enumeration type. *

    *

    * Returns 0 or 1 (for FALSE/TRUE) for binary Unicode properties. *

    *

    * Returns a bit-mask for mask properties. *

    *

    * Returns 0 if property is out of bounds or if the Unicode version does not * have data for the property at all, or not for this code point. *

    *

    * Returns NULL if codepoint is out of bound. *

    * @since 7.0 */ #[TentativeType] public static function getIntPropertyValue( #[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $property ): ?int {} /** * Get the numeric value for a Unicode code point * @link https://php.net/manual/en/intlchar.getnumericvalue.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return float|null Numeric value of codepoint, or float(-123456789) if none is defined, or NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function getNumericValue(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?float {} /** * Get the property constant value for a given property name * @link https://php.net/manual/en/intlchar.getpropertyenum.php * @param string $alias The property name to be matched. The name is compared using "loose matching" as described in PropertyAliases.txt. * @return int Returns an IntlChar::PROPERTY_ constant value, or IntlChar::PROPERTY_INVALID_CODE if the given name does not match any property. * @since 7.0 */ #[TentativeType] public static function getPropertyEnum(#[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $alias): int {} /** * Get the Unicode name for a property * @link https://php.net/manual/en/intlchar.getpropertyname.php * @param int $property

    The Unicode property to lookup (see the IntlChar::PROPERTY_* constants).

    *

    IntlChar::PROPERTY_INVALID_CODE should not be used. Also, if property is out of range, FALSE is returned.

    * @param int $type

    Selector for which name to get. If out of range, FALSE is returned.

    *

    All properties have a long name. Most have a short name, but some do not. Unicode allows for additional names; if present these will be returned by adding 1, 2, etc. to IntlChar::LONG_PROPERTY_NAME.

    * @return string|false

    * Returns the name, or FALSE if either the property or the nameChoice * is out of range. *

    *

    * If a given nameChoice returns FALSE, then all larger values of * nameChoice will return FALSE, with one exception: if FALSE is returned for * IntlChar::SHORT_PROPERTY_NAME, then IntlChar::LONG_PROPERTY_NAME * (and higher) may still return a non-FALSE value. *

    * @since 7.0 */ #[TentativeType] public static function getPropertyName( #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $property, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $type = IntlChar::LONG_PROPERTY_NAME ): string|false {} /** * Get the property value for a given value name * @link https://php.net/manual/en/intlchar.getpropertyvalueenum.php * @param int $property

    The Unicode property to lookup (see the IntlChar::PROPERTY_* constants). * If out of range, or this method doesn't work with the given value, IntlChar::PROPERTY_INVALID_CODE is returned

    * @param string $name

    The value name to be matched. The name is compared using "loose matching" as described in PropertyValueAliases.txt.

    * @return int Returns the corresponding value integer, or IntlChar::PROPERTY_INVALID_CODE if the given name does not match any value of the given property, or if the property is invalid. * @since 7.0 */ #[TentativeType] public static function getPropertyValueEnum( #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $property, #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $name ): int {} /** * Get the Unicode name for a property value * @link https://php.net/manual/en/intlchar.getpropertyvaluename.php * @param int $property

    * The Unicode property to lookup (see the IntlChar::PROPERTY_* constants). * If out of range, or this method doesn't work with the given value, FALSE is returned. *

    * @param int $value

    * Selector for a value for the given property. If out of range, FALSE is returned. *

    *

    * In general, valid values range from 0 up to some maximum. There are a couple exceptions: *

      *
    • * IntlChar::PROPERTY_BLOCK values begin at the non-zero value IntlChar::BLOCK_CODE_BASIC_LATIN *
    • *
    • * IntlChar::PROPERTY_CANONICAL_COMBINING_CLASS values are not contiguous and range from 0..240. *
    • *
    * @param int $type [optional]

    * Selector for which name to get. If out of range, FALSE is returned. * All values have a long name. Most have a short name, but some do not. Unicode allows for additional names; if present these will be returned by adding 1, 2, etc. to IntlChar::LONG_PROPERTY_NAME. *

    * @return string|false Returns the name, or FALSE if either the property or the nameChoice is out of range. * If a given nameChoice returns FALSE, then all larger values of nameChoice will return FALSE, with one exception: if FALSE is returned for IntlChar::SHORT_PROPERTY_NAME, then IntlChar::LONG_PROPERTY_NAME (and higher) may still return a non-FALSE value. * @since 7.0 */ #[TentativeType] public static function getPropertyValueName( #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $property, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $value, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $type = IntlChar::LONG_PROPERTY_NAME ): string|false {} /** * Get the Unicode version * @link https://php.net/manual/en/intlchar.getunicodeversion.php * @return array An array containing the Unicode version number. * @since 7.0 */ #[TentativeType] public static function getUnicodeVersion(): array {} /** * Check if code point is an alphanumeric character * @link https://php.net/manual/en/intlchar.isalnum.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is an alphanumeric character, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isalnum(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is a letter character * @link https://php.net/manual/en/intlchar.isalpha.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is a letter character, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isalpha(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is a base character * @link https://php.net/manual/en/intlchar.isbase.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is a base character, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isbase(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is a "blank" or "horizontal space" character * @link https://php.net/manual/en/intlchar.isblank.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is either a "blank" or "horizontal space" character, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isblank(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is a control character * @link https://php.net/manual/en/intlchar.iscntrl.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is a control character, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function iscntrl(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check whether the code point is defined * @link https://php.net/manual/en/intlchar.isdefined.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is a defined character, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isdefined(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is a digit character * @link https://php.net/manual/en/intlchar.isdigit.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is a digit character, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isdigit(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is a graphic character * @link https://php.net/manual/en/intlchar.isgraph.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is a "graphic" character, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isgraph(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is an ignorable character * @link https://php.net/manual/en/intlchar.isidignorable.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is ignorable in identifiers, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isIDIgnorable(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is permissible in an identifier * @link https://php.net/manual/en/intlchar.isidpart.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is the code point may occur in an identifier, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isIDPart(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is permissible as the first character in an identifier * @link https://php.net/manual/en/intlchar.isidstart.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint may start an identifier, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isIDStart(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is an ISO control code * @link https://php.net/manual/en/intlchar.isisocontrol.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is an ISO control code, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isISOControl(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is permissible in a Java identifier * @link https://php.net/manual/en/intlchar.isjavaidpart.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint may occur in a Java identifier, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isJavaIDPart(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is permissible as the first character in a Java identifier * @link https://php.net/manual/en/intlchar.isjavaidstart.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint may start a Java identifier, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isJavaIDStart(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is a space character according to Java * @link https://php.net/manual/en/intlchar.isjavaspacechar.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is a space character according to Java, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isJavaSpaceChar(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is a lowercase letter * @link https://php.net/manual/en/intlchar.islower.php * @param int|string $codepoint

    The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), * or the character encoded as a UTF-8 string (e.g. "\u{2603}")

    * @return bool|null Returns TRUE if codepoint is an Ll lowercase letter, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function islower(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point has the Bidi_Mirrored property * @link https://php.net/manual/en/intlchar.ismirrored.php * @param int|string $codepoint

    The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

    * @return bool|null Returns TRUE if codepoint has the Bidi_Mirrored property, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isMirrored(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is a printable character * @link https://php.net/manual/en/intlchar.isprint.php * @param int|string $codepoint

    The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

    * @return bool|null Returns TRUE if codepoint is a printable character, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isprint(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is punctuation character * @link https://php.net/manual/en/intlchar.ispunct.php * @param int|string $codepoint

    The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), * or the character encoded as a UTF-8 string (e.g. "\u{2603}")

    * @return bool|null Returns TRUE if codepoint is a punctuation character, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function ispunct(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is a space character * @link https://php.net/manual/en/intlchar.isspace.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is a space character, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isspace(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is a titlecase letter * @link https://php.net/manual/en/intlchar.istitle.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is a titlecase letter, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function istitle(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point has the Alphabetic Unicode property * @link https://php.net/manual/en/intlchar.isualphabetic.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint has the Alphabetic Unicode property, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isUAlphabetic(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point has the Lowercase Unicode property * @link https://php.net/manual/en/intlchar.isulowercase.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint has the Lowercase Unicode property, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isULowercase(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point has the general category "Lu" (uppercase letter) * @link https://php.net/manual/en/intlchar.isupper.php * @param int|string $codepoint

    The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), * or the character encoded as a UTF-8 string (e.g. "\u{2603}")

    * @return bool|null Returns TRUE if codepoint is an Lu uppercase letter, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isupper(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point has the Uppercase Unicode property * @link https://php.net/manual/en/intlchar.isuuppercase.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint has the Uppercase Unicode property, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isUUppercase(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point has the White_Space Unicode property * @link https://php.net/manual/en/intlchar.isuwhitespace.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint has the White_Space Unicode property, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isUWhiteSpace(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is a whitespace character according to ICU * @link https://php.net/manual/en/intlchar.iswhitespace.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is a whitespace character according to ICU, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isWhitespace(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Check if code point is a hexadecimal digit * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return bool|null Returns TRUE if codepoint is a hexadecimal character, FALSE if not, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function isxdigit(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): ?bool {} /** * Return Unicode code point value of character * @link https://php.net/manual/en/intlchar.ord.php * @param int|string $character

    A Unicode character.

    * @return int|null Returns the Unicode code point value as an integer, NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function ord(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $character): ?int {} /** * Make Unicode character lowercase * @link https://php.net/manual/en/intlchar.tolower.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return int|string|null Returns the Simple_Lowercase_Mapping of the code point, if any; otherwise the code point itself. * The return type will be integer unless the code point was passed as a UTF-8 string, in which case a string will be returned. * Or NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function tolower(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): string|int|null {} /** * Make Unicode character titlecase * @link https://php.net/manual/en/intlchar.totitle.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return int|string|null Returns the Simple_Titlecase_Mapping of the code point, if any; otherwise the code point itself. * The return type will be integer unless the code point was passed as a UTF-8 string, in which case a string will be returned. * Or NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function totitle(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): string|int|null {} /** * Make Unicode character uppercase * @link https://php.net/manual/en/intlchar.toupper.php * @param int|string $codepoint The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}") * @return int|string|null Returns the Simple_Uppercase_Mapping of the code point, if any; otherwise the code point itself. * The return type will be integer unless the code point was passed as a UTF-8 string, in which case a string will be returned. * Or NULL if codepoint is out of bound. * @since 7.0 */ #[TentativeType] public static function toupper(#[LanguageLevelTypeAware(['8.0' => 'int|string'], default: '')] $codepoint): string|int|null {} } * Sort strings with different accents from the back of the string. This * attribute is automatically set to * On * for the French locales and a few others. Users normally would not need * to explicitly set this attribute. There is a string comparison * performance cost when it is set On, * but sort key length is unaffected. Possible values are: * Collator::ON * Collator::OFF(default) * Collator::DEFAULT_VALUE *

    *

    * FRENCH_COLLATION rules *

    * F=OFF cote < coté < côte < côté * F=ON cote < côte < coté < côté *

    *

    * @link https://php.net/manual/en/class.collator.php#intl.collator-constants */ public const FRENCH_COLLATION = 0; /** *

    * The Alternate attribute is used to control the handling of the so called * variable characters in the UCA: whitespace, punctuation and symbols. If * Alternate is set to NonIgnorable * (N), then differences among these characters are of the same importance * as differences among letters. If Alternate is set to * Shifted * (S), then these characters are of only minor importance. The * Shifted value is often used in combination with * Strength * set to Quaternary. In such a case, whitespace, punctuation, and symbols * are considered when comparing strings, but only if all other aspects of * the strings (base letters, accents, and case) are identical. If * Alternate is not set to Shifted, then there is no difference between a * Strength of 3 and a Strength of 4. For more information and examples, * see Variable_Weighting in the * UCA. * The reason the Alternate values are not simply * On and Off * is that additional Alternate values may be added in the future. The UCA * option Blanked is expressed with Strength set to 3, and Alternate set to * Shifted. The default for most locales is NonIgnorable. If Shifted is * selected, it may be slower if there are many strings that are the same * except for punctuation; sort key length will not be affected unless the * strength level is also increased. *

    *

    * Possible values are: * Collator::NON_IGNORABLE(default) * Collator::SHIFTED * Collator::DEFAULT_VALUE *

    *

    * ALTERNATE_HANDLING rules *

    * S=3, A=N di Silva < Di Silva < diSilva < U.S.A. < USA * S=3, A=S di Silva = diSilva < Di Silva < U.S.A. = USA * S=4, A=S di Silva < diSilva < Di Silva < U.S.A. < USA *

    *

    * @link https://php.net/manual/en/class.collator.php#intl.collator-constants */ public const ALTERNATE_HANDLING = 1; /** *

    * The Case_First attribute is used to control whether uppercase letters * come before lowercase letters or vice versa, in the absence of other * differences in the strings. The possible values are * Uppercase_First * (U) and Lowercase_First * (L), plus the standard Default * and Off. * There is almost no difference between the Off and Lowercase_First * options in terms of results, so typically users will not use * Lowercase_First: only Off or Uppercase_First. (People interested in the * detailed differences between X and L should consult the Collation * Customization). Specifying either L or U won't affect string comparison * performance, but will affect the sort key length. *

    *

    * Possible values are: * Collator::OFF(default) * Collator::LOWER_FIRST * Collator::UPPER_FIRST * Collator:DEFAULT *

    *

    * CASE_FIRST rules *

    * C=X or C=L "china" < "China" < "denmark" < "Denmark" * C=U "China" < "china" < "Denmark" < "denmark" *

    *

    * @link https://php.net/manual/en/class.collator.php#intl.collator-constants */ public const CASE_FIRST = 2; /** *

    * The Case_Level attribute is used when ignoring accents but not case. In * such a situation, set Strength to be Primary, * and Case_Level to be On. * In most locales, this setting is Off by default. There is a small * string comparison performance and sort key impact if this attribute is * set to be On. *

    *

    * Possible values are: * Collator::OFF(default) * Collator::ON * Collator::DEFAULT_VALUE *

    *

    * CASE_LEVEL rules *

    * S=1, E=X role = Role = rôle * S=1, E=O role = rôle < Role *

    *

    * @link https://php.net/manual/en/class.collator.php#intl.collator-constants */ public const CASE_LEVEL = 3; /** *

    * The Normalization setting determines whether text is thoroughly * normalized or not in comparison. Even if the setting is off (which is * the default for many locales), text as represented in common usage will * compare correctly (for details, see UTN #5). Only if the accent marks * are in noncanonical order will there be a problem. If the setting is * On, * then the best results are guaranteed for all possible text input. * There is a medium string comparison performance cost if this attribute * is On, * depending on the frequency of sequences that require normalization. * There is no significant effect on sort key length. If the input text is * known to be in NFD or NFKD normalization forms, there is no need to * enable this Normalization option. *

    *

    * Possible values are: * Collator::OFF(default) * Collator::ON * Collator::DEFAULT_VALUE *

    * @link https://php.net/manual/en/class.collator.php#intl.collator-constants */ public const NORMALIZATION_MODE = 4; /** *

    * The ICU Collation Service supports many levels of comparison (named * "Levels", but also known as "Strengths"). Having these categories * enables ICU to sort strings precisely according to local conventions. * However, by allowing the levels to be selectively employed, searching * for a string in text can be performed with various matching conditions. * For more detailed information, see * collator_set_strength chapter. *

    *

    * Possible values are: * Collator::PRIMARY * Collator::SECONDARY * Collator::TERTIARY(default) * Collator::QUATERNARY * Collator::IDENTICAL * Collator::DEFAULT_VALUE *

    * @link https://php.net/manual/en/class.collator.php#intl.collator-constants */ public const STRENGTH = 5; /** *

    * Compatibility with JIS x 4061 requires the introduction of an additional * level to distinguish Hiragana and Katakana characters. If compatibility * with that standard is required, then this attribute should be set * On, * and the strength set to Quaternary. This will affect sort key length * and string comparison string comparison performance. *

    *

    * Possible values are: * Collator::OFF(default) * Collator::ON * Collator::DEFAULT_VALUE *

    * @link https://php.net/manual/en/class.collator.php#intl.collator-constants */ public const HIRAGANA_QUATERNARY_MODE = 6; /** *

    * When turned on, this attribute generates a collation key for the numeric * value of substrings of digits. This is a way to get '100' to sort AFTER * '2'. *

    *

    * Possible values are: * Collator::OFF(default) * Collator::ON * Collator::DEFAULT_VALUE *

    * @link https://php.net/manual/en/class.collator.php#intl.collator-constants */ public const NUMERIC_COLLATION = 7; public const SORT_REGULAR = 0; public const SORT_STRING = 1; public const SORT_NUMERIC = 2; /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Create a collator * @link https://php.net/manual/en/collator.construct.php * @param string $locale */ #[Pure] public function __construct(#[LanguageAware(['8.0' => 'string'], default: '')] $locale) {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Create a collator * @link https://php.net/manual/en/collator.create.php * @param string $locale

    * The locale containing the required collation rules. Special values for * locales can be passed in - if null is passed for the locale, the * default locale collation rules will be used. If empty string ("") or * "root" are passed, UCA rules will be used. *

    * @return Collator|null Return new instance of Collator object, or NULL * on error. */ #[TentativeType] public static function create(#[LanguageAware(['8.0' => 'string'], default: '')] $locale): ?Collator {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Compare two Unicode strings * @link https://php.net/manual/en/collator.compare.php * @param string $string1

    * The first string to compare. *

    * @param string $string2

    * The second string to compare. *

    * @return int|false Return comparison result:

    *

    *

    * 1 if str1 is greater than * str2 ; *

    *

    * 0 if str1 is equal to * str2; *

    *

    * -1 if str1 is less than * str2 . *

    * On error * boolean * FALSE * is returned. */ #[Pure] #[TentativeType] public function compare( #[LanguageAware(['8.0' => 'string'], default: '')] $string1, #[LanguageAware(['8.0' => 'string'], default: '')] $string2 ): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Sort array using specified collator * @link https://php.net/manual/en/collator.sort.php * @param string[] &$array

    * Array of strings to sort. *

    * @param int $flags [optional]

    * Optional sorting type, one of the following: *

    *

    * Collator::SORT_REGULAR * - compare items normally (don't change types) *

    * @return bool TRUE on success or FALSE on failure. */ #[TentativeType] public function sort( array &$array, #[LanguageAware(['8.0' => 'int'], default: '')] #[EV([Collator::SORT_REGULAR])] $flags = 0 ): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Sort array using specified collator and sort keys * @link https://php.net/manual/en/collator.sortwithsortkeys.php * @param string[] &$array

    Array of strings to sort

    * @return bool TRUE on success or FALSE on failure. */ #[TentativeType] public function sortWithSortKeys( array &$array, #[ElementAvailable(from: '5.3', to: '5.6')] $flags = [] ): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Sort array maintaining index association * @link https://php.net/manual/en/collator.asort.php * @param string[] &$array

    Array of strings to sort.

    * @param int $flags [optional]

    * Optional sorting type, one of the following: * Collator::SORT_REGULAR * - compare items normally (don't change types) *

    * @return bool TRUE on success or FALSE on failure. */ #[TentativeType] public function asort( array &$array, #[LanguageAware(['8.0' => 'int'], default: '')] #[EV([Collator::SORT_REGULAR])] $flags = 0 ): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get collation attribute value * @link https://php.net/manual/en/collator.getattribute.php * @param int $attribute

    * Attribute to get value for. *

    * @return int|false Attribute value, or boolean FALSE on error. */ #[Pure] #[TentativeType] public function getAttribute(#[LanguageAware(['8.0' => 'int'], default: '')] $attribute): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set collation attribute * @link https://php.net/manual/en/collator.setattribute.php * @param int $attribute

    Attribute.

    * @param int $value

    * Attribute value. *

    * @return bool TRUE on success or FALSE on failure. */ #[TentativeType] public function setAttribute( #[LanguageAware(['8.0' => 'int'], default: '')] $attribute, #[LanguageAware(['8.0' => 'int'], default: '')] $value ): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get current collation strength * @link https://php.net/manual/en/collator.getstrength.php * @return int current collation strength, or boolean FALSE on error. */ #[Pure] #[TentativeType] public function getStrength(): int {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set collation strength * @link https://php.net/manual/en/collator.setstrength.php * @param int $strength

    Strength to set.

    *

    * Possible values are: * Collator::PRIMARY *

    * @return bool TRUE on success or FALSE on failure. */ #[LanguageAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public function setStrength(#[LanguageAware(['8.0' => 'int'], default: '')] #[EV([Collator::PRIMARY])] $strength) {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get collator's last error code * @link https://php.net/manual/en/collator.geterrorcode.php * @return int|false Error code returned by the last Collator API function call. */ #[Pure] #[TentativeType] public function getErrorCode(): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the locale name of the collator * @link https://php.net/manual/en/collator.getlocale.php * @param int $type

    * You can choose between valid and actual locale ( * Locale::VALID_LOCALE and * Locale::ACTUAL_LOCALE, * respectively). *

    * @return string|false Real locale name from which the collation data comes. If the collator was * instantiated from rules or an error occurred, returns * boolean FALSE. */ #[Pure] #[TentativeType] public function getLocale( #[LanguageAware(['8.0' => 'int'], default: '')] #[EV([Locale::VALID_LOCALE, Locale::ACTUAL_LOCALE])] $type ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get text for collator's last error code * @link https://php.net/manual/en/collator.geterrormessage.php * @return string|false Description of an error occurred in the last Collator API function call. */ #[Pure] #[TentativeType] public function getErrorMessage(): string|false {} /** * (PHP 5 >= 5.3.2, PECL intl >= 1.0.3)
    * Get sorting key for a string * @link https://php.net/manual/en/collator.getsortkey.php * @param string $string

    * The string to produce the key from. *

    * @return string|false the collation key for the string. Collation keys can be compared directly instead of strings. */ #[Pure] #[TentativeType] public function getSortKey( #[LanguageAware(['8.0' => 'string'], default: '')] $string, #[ElementAvailable(from: '5.3', to: '5.6')] $arg2 ): string|false {} } class NumberFormatter { public const CURRENCY_ACCOUNTING = 12; /** * Decimal format defined by pattern * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PATTERN_DECIMAL = 0; /** * Decimal format * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const DECIMAL = 1; /** * Currency format * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const CURRENCY = 2; /** * Percent format * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PERCENT = 3; /** * Scientific format * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const SCIENTIFIC = 4; /** * Spellout rule-based format * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const SPELLOUT = 5; /** * Ordinal rule-based format * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const ORDINAL = 6; /** * Duration rule-based format * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const DURATION = 7; /** * Rule-based format defined by pattern * @link https://php.net/manual/en/class.locale.php#intl.locale-constants */ public const PATTERN_RULEBASED = 9; /** * Alias for PATTERN_DECIMAL * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const IGNORE = 0; /** * Default format for the locale * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const DEFAULT_STYLE = 1; /** * Rounding mode to round towards positive infinity. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const ROUND_CEILING = 0; /** * Rounding mode to round towards negative infinity. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const ROUND_FLOOR = 1; /** * Rounding mode to round towards zero. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const ROUND_DOWN = 2; /** * Rounding mode to round away from zero. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const ROUND_UP = 3; /** * Rounding mode to round towards the "nearest neighbor" unless both * neighbors are equidistant, in which case, round towards the even * neighbor. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const ROUND_HALFEVEN = 4; /** * Rounding mode to round towards "nearest neighbor" unless both neighbors * are equidistant, in which case round down. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const ROUND_HALFDOWN = 5; /** * Rounding mode to round towards "nearest neighbor" unless both neighbors * are equidistant, in which case round up. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const ROUND_HALFUP = 6; /** * Pad characters inserted before the prefix. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PAD_BEFORE_PREFIX = 0; /** * Pad characters inserted after the prefix. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PAD_AFTER_PREFIX = 1; /** * Pad characters inserted before the suffix. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PAD_BEFORE_SUFFIX = 2; /** * Pad characters inserted after the suffix. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PAD_AFTER_SUFFIX = 3; /** * Parse integers only. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PARSE_INT_ONLY = 0; /** * Use grouping separator. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const GROUPING_USED = 1; /** * Always show decimal point. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const DECIMAL_ALWAYS_SHOWN = 2; /** * Maximum integer digits. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const MAX_INTEGER_DIGITS = 3; /** * Minimum integer digits. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const MIN_INTEGER_DIGITS = 4; /** * Integer digits. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const INTEGER_DIGITS = 5; /** * Maximum fraction digits. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const MAX_FRACTION_DIGITS = 6; /** * Minimum fraction digits. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const MIN_FRACTION_DIGITS = 7; /** * Fraction digits. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const FRACTION_DIGITS = 8; /** * Multiplier. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const MULTIPLIER = 9; /** * Grouping size. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const GROUPING_SIZE = 10; /** * Rounding Mode. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const ROUNDING_MODE = 11; /** * Rounding increment. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const ROUNDING_INCREMENT = 12; /** * The width to which the output of format() is padded. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const FORMAT_WIDTH = 13; /** * The position at which padding will take place. See pad position * constants for possible argument values. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PADDING_POSITION = 14; /** * Secondary grouping size. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const SECONDARY_GROUPING_SIZE = 15; /** * Use significant digits. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const SIGNIFICANT_DIGITS_USED = 16; /** * Minimum significant digits. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const MIN_SIGNIFICANT_DIGITS = 17; /** * Maximum significant digits. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const MAX_SIGNIFICANT_DIGITS = 18; /** * Lenient parse mode used by rule-based formats. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const LENIENT_PARSE = 19; /** * Positive prefix. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const POSITIVE_PREFIX = 0; /** * Positive suffix. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const POSITIVE_SUFFIX = 1; /** * Negative prefix. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const NEGATIVE_PREFIX = 2; /** * Negative suffix. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const NEGATIVE_SUFFIX = 3; /** * The character used to pad to the format width. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PADDING_CHARACTER = 4; /** * The ISO currency code. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const CURRENCY_CODE = 5; /** * The default rule set. This is only available with rule-based * formatters. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const DEFAULT_RULESET = 6; /** * The public rule sets. This is only available with rule-based * formatters. This is a read-only attribute. The public rulesets are * returned as a single string, with each ruleset name delimited by ';' * (semicolon). * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PUBLIC_RULESETS = 7; /** * The decimal separator. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const DECIMAL_SEPARATOR_SYMBOL = 0; /** * The grouping separator. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const GROUPING_SEPARATOR_SYMBOL = 1; /** * The pattern separator. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PATTERN_SEPARATOR_SYMBOL = 2; /** * The percent sign. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PERCENT_SYMBOL = 3; /** * Zero. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const ZERO_DIGIT_SYMBOL = 4; /** * Character representing a digit in the pattern. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const DIGIT_SYMBOL = 5; /** * The minus sign. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const MINUS_SIGN_SYMBOL = 6; /** * The plus sign. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PLUS_SIGN_SYMBOL = 7; /** * The currency symbol. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const CURRENCY_SYMBOL = 8; /** * The international currency symbol. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const INTL_CURRENCY_SYMBOL = 9; /** * The monetary separator. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const MONETARY_SEPARATOR_SYMBOL = 10; /** * The exponential symbol. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const EXPONENTIAL_SYMBOL = 11; /** * Per mill symbol. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PERMILL_SYMBOL = 12; /** * Escape padding character. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PAD_ESCAPE_SYMBOL = 13; /** * Infinity symbol. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const INFINITY_SYMBOL = 14; /** * Not-a-number symbol. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const NAN_SYMBOL = 15; /** * Significant digit symbol. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const SIGNIFICANT_DIGIT_SYMBOL = 16; /** * The monetary grouping separator. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const MONETARY_GROUPING_SEPARATOR_SYMBOL = 17; /** * Derive the type from variable type * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const TYPE_DEFAULT = 0; /** * Format/parse as 32-bit integer * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const TYPE_INT32 = 1; /** * Format/parse as 64-bit integer * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const TYPE_INT64 = 2; /** * Format/parse as floating point value * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const TYPE_DOUBLE = 3; /** * Format/parse as currency value * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants * @deprecated 8.3 */ public const TYPE_CURRENCY = 4; /** * @since 8.4 */ public const ROUND_TOWARD_ZERO = 2; /** * @since 8.4 */ public const ROUND_AWAY_FROM_ZERO = 3; /** * @since 8.4 */ public const ROUND_HALFODD = 8; /** * @link https://www.php.net/manual/en/class.numberformatter.php * @param string $locale * @param int $style * @param string $pattern [optional] */ #[Pure] public function __construct( #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[LanguageAware(['8.0' => 'int'], default: '')] #[EV([NumberFormatter::DECIMAL, NumberFormatter::PATTERN_DECIMAL, NumberFormatter::PATTERN_RULEBASED, NumberFormatter::CURRENCY, NumberFormatter::PERCENT, NumberFormatter::SCIENTIFIC, NumberFormatter::SPELLOUT, NumberFormatter::ORDINAL, NumberFormatter::DURATION, NumberFormatter::PATTERN_RULEBASED, NumberFormatter::CURRENCY_ACCOUNTING, NumberFormatter::DEFAULT_STYLE, NumberFormatter::IGNORE])] $style, #[LanguageAware(['8.0' => 'string|null'], default: '')] $pattern = null ) {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Create a number formatter * @link https://php.net/manual/en/numberformatter.create.php * @param string $locale

    * Locale in which the number would be formatted (locale name, e.g. en_CA). *

    * @param int $style

    * Style of the formatting, one of the * format style constants. If * NumberFormatter::PATTERN_DECIMAL * or NumberFormatter::PATTERN_RULEBASED * is passed then the number format is opened using the given pattern, * which must conform to the syntax described in * ICU DecimalFormat * documentation or * ICU RuleBasedNumberFormat * documentation, respectively. *

    * @param string $pattern [optional]

    * Pattern string if the chosen style requires a pattern. *

    * @return NumberFormatter|false NumberFormatter object or FALSE on error. */ #[TentativeType] public static function create( #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[LanguageAware(['8.0' => 'int'], default: '')] #[EV([NumberFormatter::PATTERN_DECIMAL, NumberFormatter::PATTERN_RULEBASED, NumberFormatter::CURRENCY, NumberFormatter::PERCENT, NumberFormatter::SCIENTIFIC, NumberFormatter::SPELLOUT, NumberFormatter::ORDINAL, NumberFormatter::DURATION, NumberFormatter::PATTERN_RULEBASED, NumberFormatter::CURRENCY_ACCOUNTING, NumberFormatter::DEFAULT_STYLE, NumberFormatter::IGNORE])] $style, #[LanguageAware(['8.0' => 'string|null'], default: '')] $pattern = null ): ?NumberFormatter {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Format a number * @link https://php.net/manual/en/numberformatter.format.php * @param int|float $num

    * The value to format. Can be integer or float, * other values will be converted to a numeric value. *

    * @param int $type [optional]

    * The * formatting type to use. *

    * @return string|false the string containing formatted value, or FALSE on error. */ #[Pure] #[TentativeType] public function format( #[LanguageAware(['8.0' => 'int|float'], default: '')] $num, #[LanguageAware(['8.0' => 'int'], default: '')] $type = 0 ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Parse a number * @link https://php.net/manual/en/numberformatter.parse.php * @param string $string * @param int $type [optional]

    * The * formatting type to use. By default, * NumberFormatter::TYPE_DOUBLE is used. *

    * @param int &$offset [optional]

    * Offset in the string at which to begin parsing. On return, this value * will hold the offset at which parsing ended. *

    * @return mixed The value of the parsed number or FALSE on error. */ #[TentativeType] public function parse( #[LanguageAware(['8.0' => 'string'], default: '')] $string, #[LanguageAware(['8.0' => 'int'], default: '')] $type = NumberFormatter::TYPE_DOUBLE, &$offset = null ): int|float|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Format a currency value * @link https://php.net/manual/en/numberformatter.formatcurrency.php * @param float $amount

    * The numeric currency value. *

    * @param string $currency

    * The 3-letter ISO 4217 currency code indicating the currency to use. *

    * @return string|false String representing the formatted currency value. */ #[Pure] #[TentativeType] public function formatCurrency( #[LanguageAware(['8.0' => 'float'], default: '')] $amount, #[LanguageAware(['8.0' => 'string'], default: '')] $currency ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Parse a currency number * @link https://php.net/manual/en/numberformatter.parsecurrency.php * @param string $string * @param string &$currency

    * Parameter to receive the currency name (3-letter ISO 4217 currency * code). *

    * @param int &$offset [optional]

    * Offset in the string at which to begin parsing. On return, this value * will hold the offset at which parsing ended. *

    * @return float|false The parsed numeric value or FALSE on error. */ #[TentativeType] public function parseCurrency(#[LanguageAware(['8.0' => 'string'], default: '')] $string, &$currency, &$offset = null): float|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set an attribute * @link https://php.net/manual/en/numberformatter.setattribute.php * @param int $attribute

    * Attribute specifier - one of the * numeric attribute constants. *

    * @param int $value

    * The attribute value. *

    * @return bool TRUE on success or FALSE on failure. */ #[TentativeType] public function setAttribute( #[LanguageAware(['8.0' => 'int'], default: '')] $attribute, #[LanguageAware(['8.0' => 'int|float'], default: '')] $value ): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get an attribute * @link https://php.net/manual/en/numberformatter.getattribute.php * @param int $attribute

    * Attribute specifier - one of the * numeric attribute constants. *

    * @return int|float|false Return attribute value on success, or FALSE on error. */ #[Pure] #[TentativeType] public function getAttribute(#[LanguageAware(['8.0' => 'int'], default: '')] $attribute): int|float|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set a text attribute * @link https://php.net/manual/en/numberformatter.settextattribute.php * @param int $attribute

    * Attribute specifier - one of the * text attribute * constants. *

    * @param string $value

    * Text for the attribute value. *

    * @return bool TRUE on success or FALSE on failure. */ #[TentativeType] public function setTextAttribute( #[LanguageAware(['8.0' => 'int'], default: '')] $attribute, #[LanguageAware(['8.0' => 'string'], default: '')] $value ): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get a text attribute * @link https://php.net/manual/en/numberformatter.gettextattribute.php * @param int $attribute

    * Attribute specifier - one of the * text attribute constants. *

    * @return string|false Return attribute value on success, or FALSE on error. */ #[Pure] #[TentativeType] public function getTextAttribute(#[LanguageAware(['8.0' => 'int'], default: '')] $attribute): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set a symbol value * @link https://php.net/manual/en/numberformatter.setsymbol.php * @param int $symbol

    * Symbol specifier, one of the * format symbol constants. *

    * @param string $value

    * Text for the symbol. *

    * @return bool TRUE on success or FALSE on failure. */ #[TentativeType] public function setSymbol( #[LanguageAware(['8.0' => 'int'], default: '')] $symbol, #[LanguageAware(['8.0' => 'string'], default: '')] $value ): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get a symbol value * @link https://php.net/manual/en/numberformatter.getsymbol.php * @param int $symbol

    * Symbol specifier, one of the * format symbol constants. *

    * @return string|false The symbol string or FALSE on error. */ #[Pure] #[TentativeType] public function getSymbol(#[LanguageAware(['8.0' => 'int'], default: '')] $symbol): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set formatter pattern * @link https://php.net/manual/en/numberformatter.setpattern.php * @param string $pattern

    * Pattern in syntax described in * ICU DecimalFormat * documentation. *

    * @return bool TRUE on success or FALSE on failure. */ #[TentativeType] public function setPattern(#[LanguageAware(['8.0' => 'string'], default: '')] $pattern): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get formatter pattern * @link https://php.net/manual/en/numberformatter.getpattern.php * @return string|false Pattern string that is used by the formatter, or FALSE if an error happens. */ #[Pure] #[TentativeType] public function getPattern(): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get formatter locale * @link https://php.net/manual/en/numberformatter.getlocale.php * @param int $type [optional]

    * You can choose between valid and actual locale ( * Locale::VALID_LOCALE, * Locale::ACTUAL_LOCALE, * respectively). The default is the actual locale. *

    * @return string|false The locale name used to create the formatter. */ #[Pure] #[TentativeType] public function getLocale( #[LanguageAware(['8.0' => 'int'], default: '')] #[EV([Locale::VALID_LOCALE, Locale::ACTUAL_LOCALE])] $type = 0 ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get formatter's last error code. * @link https://php.net/manual/en/numberformatter.geterrorcode.php * @return int error code from last formatter call. */ #[Pure] #[TentativeType] public function getErrorCode(): int {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get formatter's last error message. * @link https://php.net/manual/en/numberformatter.geterrormessage.php * @return string error message from last formatter call. */ #[Pure] #[TentativeType] public function getErrorMessage(): string {} } class Normalizer { public const NFKC_CF = 48; public const FORM_KC_CF = 48; /** * Default normalization options * @link https://secure.php.net/manual/en/class.normalizer.php */ public const OPTION_DEFAULT = ""; /** * No decomposition/composition * @link https://secure.php.net/manual/en/class.normalizer.php * @removed 8.0 */ public const NONE = "1"; /** * Normalization Form D (NFD) - Canonical Decomposition * @link https://secure.php.net/manual/en/class.normalizer.php */ public const FORM_D = 4; public const NFD = 4; /** * Normalization Form KD (NFKD) - Compatibility Decomposition * @link https://secure.php.net/manual/en/class.normalizer.php */ public const FORM_KD = 8; public const NFKD = 8; /** * Normalization Form C (NFC) - Canonical Decomposition followed by * Canonical Composition * @link https://secure.php.net/manual/en/class.normalizer.php */ public const FORM_C = 16; public const NFC = 16; /** * Normalization Form KC (NFKC) - Compatibility Decomposition, followed by * Canonical Composition * @link https://secure.php.net/manual/en/class.normalizer.php */ public const FORM_KC = 32; public const NFKC = 32; /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Normalizes the input provided and returns the normalized string * @link https://php.net/manual/en/normalizer.normalize.php * @param string $string

    The input string to normalize

    * @param int $form

    One of the normalization forms.

    * @return string|false The normalized string or FALSE if an error occurred. */ #[TentativeType] public static function normalize( #[LanguageAware(['8.0' => 'string'], default: '')] $string, #[ElementAvailable(from: '5.3', to: '5.6')] $form, #[ElementAvailable(from: '7.0')] #[LanguageAware(['8.0' => 'int'], default: '')] $form = Normalizer::FORM_C, #[ElementAvailable(from: '5.3', to: '5.6')] $arg3 ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Checks if the provided string is already in the specified normalization form. * @link https://php.net/manual/en/normalizer.isnormalized.php * @param string $string

    The input string to normalize

    * @param int $form

    * One of the normalization forms. *

    * @return bool TRUE if normalized, FALSE otherwise or if there an error */ #[TentativeType] public static function isNormalized( #[LanguageAware(['8.0' => 'string'], default: '')] $string, #[ElementAvailable(from: '5.3', to: '5.6')] $form, #[ElementAvailable(from: '7.0')] #[LanguageAware(['8.0' => 'int'], default: '')] $form = Normalizer::FORM_C, #[ElementAvailable(from: '5.3', to: '5.6')] $arg3 ): bool {} /** * @param string $string

    The input string to normalize

    * @param int $form * @return string|null

    Returns a string containing the Decomposition_Mapping property, if present in the UCD. * Returns null if there is no Decomposition_Mapping property for the character.

    * @link https://www.php.net/manual/en/normalizer.getrawdecomposition.php * @since 7.3 */ #[TentativeType] public static function getRawDecomposition( string $string, #[ElementAvailable(from: '8.0')] int $form = 16 ): ?string {} } class Locale { /** * This is locale the data actually comes from. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const ACTUAL_LOCALE = 0; /** * This is the most specific locale supported by ICU. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const VALID_LOCALE = 1; /** * Used as locale parameter with the methods of the various locale affected classes, * such as NumberFormatter. This constant would make the methods to use default * locale. * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const DEFAULT_LOCALE = null; /** * Language subtag * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const LANG_TAG = "language"; /** * Extended language subtag * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const EXTLANG_TAG = "extlang"; /** * Script subtag * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const SCRIPT_TAG = "script"; /** * Region subtag * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const REGION_TAG = "region"; /** * Variant subtag * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const VARIANT_TAG = "variant"; /** * Grandfathered Language subtag * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const GRANDFATHERED_LANG_TAG = "grandfathered"; /** * Private subtag * @link https://php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants */ public const PRIVATE_TAG = "private"; /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Gets the default locale value from the INTL global 'default_locale' * @link https://php.net/manual/en/locale.getdefault.php * @return string The current runtime locale */ #[TentativeType] public static function getDefault(): string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * sets the default runtime locale * @link https://php.net/manual/en/locale.setdefault.php * @param string $locale

    * Is a BCP 47 compliant language tag containing the *

    * @return bool TRUE on success or FALSE on failure. */ #[LanguageAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public static function setDefault(#[LanguageAware(['8.0' => 'string'], default: '')] $locale) {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Gets the primary language for the input locale * @link https://php.net/manual/en/locale.getprimarylanguage.php * @param string $locale

    * The locale to extract the primary language code from *

    * @return string|null The language code associated with the language or NULL in case of error. */ #[TentativeType] public static function getPrimaryLanguage(#[LanguageAware(['8.0' => 'string'], default: '')] $locale): ?string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Gets the script for the input locale * @link https://php.net/manual/en/locale.getscript.php * @param string $locale

    * The locale to extract the script code from *

    * @return string|null The script subtag for the locale or NULL if not present */ #[TentativeType] public static function getScript(#[LanguageAware(['8.0' => 'string'], default: '')] $locale): ?string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Gets the region for the input locale * @link https://php.net/manual/en/locale.getregion.php * @param string $locale

    * The locale to extract the region code from *

    * @return string|null The region subtag for the locale or NULL if not present */ #[TentativeType] public static function getRegion(#[LanguageAware(['8.0' => 'string'], default: '')] $locale): ?string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Gets the keywords for the input locale * @link https://php.net/manual/en/locale.getkeywords.php * @param string $locale

    * The locale to extract the keywords from *

    * @return array|false|null Associative array containing the keyword-value pairs for this locale */ #[TentativeType] public static function getKeywords(#[LanguageAware(['8.0' => 'string'], default: '')] $locale): array|false|null {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns an appropriately localized display name for script of the input locale * @link https://php.net/manual/en/locale.getdisplayscript.php * @param string $locale

    * The locale to return a display script for *

    * @param string $displayLocale

    * Optional format locale to use to display the script name *

    * @return string|false Display name of the script for the $locale in the format appropriate for * $in_locale. */ #[TentativeType] public static function getDisplayScript( #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[ElementAvailable(from: '5.3', to: '5.6')] $displayLocale, #[ElementAvailable(from: '7.0')] #[LanguageAware(['8.0' => 'string|null'], default: '')] $displayLocale = null ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns an appropriately localized display name for region of the input locale * @link https://php.net/manual/en/locale.getdisplayregion.php * @param string $locale

    * The locale to return a display region for. *

    * @param string $displayLocale

    * Optional format locale to use to display the region name *

    * @return string|false display name of the region for the $locale in the format appropriate for * $in_locale. */ #[TentativeType] public static function getDisplayRegion( #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[ElementAvailable(from: '5.3', to: '5.6')] $displayLocale, #[ElementAvailable(from: '7.0')] #[LanguageAware(['8.0' => 'string|null'], default: '')] $displayLocale = null ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns an appropriately localized display name for the input locale * @link https://php.net/manual/en/locale.getdisplayname.php * @param string $locale

    * The locale to return a display name for. *

    * @param string $displayLocale

    optional format locale

    * @return string|false Display name of the locale in the format appropriate for $in_locale. */ #[TentativeType] public static function getDisplayName( #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[ElementAvailable(from: '5.3', to: '5.6')] $displayLocale, #[ElementAvailable(from: '7.0')] #[LanguageAware(['8.0' => 'string|null'], default: '')] $displayLocale = null ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns an appropriately localized display name for language of the inputlocale * @link https://php.net/manual/en/locale.getdisplaylanguage.php * @param string $locale

    * The locale to return a display language for *

    * @param string $displayLocale

    * Optional format locale to use to display the language name *

    * @return string|false display name of the language for the $locale in the format appropriate for * $in_locale. */ #[TentativeType] public static function getDisplayLanguage( #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[ElementAvailable(from: '5.3', to: '5.6')] $displayLocale, #[ElementAvailable(from: '7.0')] #[LanguageAware(['8.0' => 'string|null'], default: '')] $displayLocale = null ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns an appropriately localized display name for variants of the input locale * @link https://php.net/manual/en/locale.getdisplayvariant.php * @param string $locale

    * The locale to return a display variant for *

    * @param string $displayLocale

    * Optional format locale to use to display the variant name *

    * @return string|false Display name of the variant for the $locale in the format appropriate for * $in_locale. */ #[TentativeType] public static function getDisplayVariant( #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[ElementAvailable(from: '5.3', to: '5.6')] $displayLocale, #[ElementAvailable(from: '7.0')] #[LanguageAware(['8.0' => 'string|null'], default: '')] $displayLocale = null ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns a correctly ordered and delimited locale ID * @link https://php.net/manual/en/locale.composelocale.php * @param array $subtags

    * an array containing a list of key-value pairs, where the keys identify * the particular locale ID subtags, and the values are the associated * subtag values. *

    * The 'variant' and 'private' subtags can take maximum 15 values * whereas 'extlang' can take maximum 3 values.e.g. Variants are allowed * with the suffix ranging from 0-14. Hence the keys for the input array * can be variant0, variant1, ...,variant14. In the returned locale id, * the subtag is ordered by suffix resulting in variant0 followed by * variant1 followed by variant2 and so on. *

    *

    * The 'variant', 'private' and 'extlang' multiple values can be specified both * as array under specific key (e.g. 'variant') and as multiple numbered keys * (e.g. 'variant0', 'variant1', etc.). *

    *

    * @return string|false The corresponding locale identifier. */ #[TentativeType] public static function composeLocale(array $subtags): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns a key-value array of locale ID subtag elements. * @link https://php.net/manual/en/locale.parselocale.php * @param string $locale

    * The locale to extract the subtag array from. Note: The 'variant' and * 'private' subtags can take maximum 15 values whereas 'extlang' can take * maximum 3 values. *

    * @return array|null an array containing a list of key-value pairs, where the keys * identify the particular locale ID subtags, and the values are the * associated subtag values. The array will be ordered as the locale id * subtags e.g. in the locale id if variants are '-varX-varY-varZ' then the * returned array will have variant0=>varX , variant1=>varY , * variant2=>varZ */ #[TentativeType] public static function parseLocale(#[LanguageAware(['8.0' => 'string'], default: '')] $locale): ?array {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Gets the variants for the input locale * @link https://php.net/manual/en/locale.getallvariants.php * @param string $locale

    * The locale to extract the variants from *

    * @return array|null The array containing the list of all variants subtag for the locale * or NULL if not present */ #[TentativeType] public static function getAllVariants(#[LanguageAware(['8.0' => 'string'], default: '')] $locale): ?array {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Checks if a language tag filter matches with locale * @link https://php.net/manual/en/locale.filtermatches.php * @param string $languageTag

    * The language tag to check *

    * @param string $locale

    * The language range to check against *

    * @param bool $canonicalize

    * If true, the arguments will be converted to canonical form before * matching. *

    * @return bool|null TRUE if $locale matches $langtag FALSE otherwise. */ #[TentativeType] public static function filterMatches( #[LanguageAware(['8.0' => 'string'], default: '')] $languageTag, #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[ElementAvailable(from: '5.3', to: '5.6')] $canonicalize, #[ElementAvailable(from: '7.0')] #[LanguageAware(['8.0' => 'bool'], default: '')] $canonicalize = false ): ?bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Searches the language tag list for the best match to the language * @link https://php.net/manual/en/locale.lookup.php * @param array $languageTag

    * An array containing a list of language tags to compare to * locale. Maximum 100 items allowed. *

    * @param string $locale

    * The locale to use as the language range when matching. *

    * @param bool $canonicalize

    * If true, the arguments will be converted to canonical form before * matching. *

    * @param string $defaultLocale

    * The locale to use if no match is found. *

    * @return string|null The closest matching language tag or default value. */ #[TentativeType] public static function lookup( array $languageTag, #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[ElementAvailable(from: '5.3', to: '5.6')] $canonicalize, #[ElementAvailable(from: '5.3', to: '5.6')] $defaultLocale, #[ElementAvailable(from: '7.0')] #[LanguageAware(['8.0' => 'bool'], default: '')] $canonicalize = false, #[ElementAvailable(from: '7.0')] #[LanguageAware(['8.0' => 'string|null'], default: '')] $defaultLocale = null ): ?string {} /** * @link https://php.net/manual/en/locale.canonicalize.php * @param string $locale * @return string|null */ #[TentativeType] public static function canonicalize(#[LanguageAware(['8.0' => 'string'], default: '')] $locale): ?string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Tries to find out best available locale based on HTTP "Accept-Language" header * @link https://php.net/manual/en/locale.acceptfromhttp.php * @param string $header

    * The string containing the "Accept-Language" header according to format in RFC 2616. *

    * @return string|false The corresponding locale identifier. */ #[TentativeType] public static function acceptFromHttp(#[LanguageAware(['8.0' => 'string'], default: '')] $header): string|false {} } class MessageFormatter { /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Constructs a new Message Formatter * @link https://php.net/manual/en/messageformatter.create.php * @param string $locale

    * The locale to use when formatting arguments *

    * @param string $pattern

    * The pattern string to stick arguments into. * The pattern uses an 'apostrophe-friendly' syntax; it is run through * umsg_autoQuoteApostrophe * before being interpreted. *

    * @throws IntlException on failure. */ #[Pure] public function __construct( #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[LanguageAware(['8.0' => 'string'], default: '')] $pattern ) {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Constructs a new Message Formatter * @link https://php.net/manual/en/messageformatter.create.php * @param string $locale

    * The locale to use when formatting arguments *

    * @param string $pattern

    * The pattern string to stick arguments into. * The pattern uses an 'apostrophe-friendly' syntax; it is run through * umsg_autoQuoteApostrophe * before being interpreted. *

    * @return MessageFormatter|null The formatter object */ #[TentativeType] public static function create( #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[LanguageAware(['8.0' => 'string'], default: '')] $pattern ): ?MessageFormatter {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Format the message * @link https://php.net/manual/en/messageformatter.format.php * @param array $values

    * Arguments to insert into the format string *

    * @return string|false The formatted string, or FALSE if an error occurred */ #[Pure] #[TentativeType] public function format(array $values): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Quick format message * @link https://php.net/manual/en/messageformatter.formatmessage.php * @param string $locale

    * The locale to use for formatting locale-dependent parts *

    * @param string $pattern

    * The pattern string to insert things into. * The pattern uses an 'apostrophe-friendly' syntax; it is run through * umsg_autoQuoteApostrophe * before being interpreted. *

    * @param array $values

    * The array of values to insert into the format string *

    * @return string|false The formatted pattern string or FALSE if an error occurred */ #[TentativeType] public static function formatMessage( #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[LanguageAware(['8.0' => 'string'], default: '')] $pattern, array $values ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Parse input string according to pattern * @link https://php.net/manual/en/messageformatter.parse.php * @param string $string

    * The string to parse *

    * @return array|false An array containing the items extracted, or FALSE on error */ #[Pure] #[TentativeType] public function parse(#[LanguageAware(['8.0' => 'string'], default: '')] $string): array|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Quick parse input string * @link https://php.net/manual/en/messageformatter.parsemessage.php * @param string $locale

    * The locale to use for parsing locale-dependent parts *

    * @param string $pattern

    * The pattern with which to parse the value. *

    * @param string $message

    * The string to parse, conforming to the pattern. *

    * @return array|false An array containing items extracted, or FALSE on error */ #[TentativeType] public static function parseMessage( #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[LanguageAware(['8.0' => 'string'], default: '')] $pattern, #[LanguageAware(['8.0' => 'string'], default: '')] $message ): array|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set the pattern used by the formatter * @link https://php.net/manual/en/messageformatter.setpattern.php * @param string $pattern

    * The pattern string to use in this message formatter. * The pattern uses an 'apostrophe-friendly' syntax; it is run through * umsg_autoQuoteApostrophe * before being interpreted. *

    * @return bool TRUE on success or FALSE on failure. */ #[TentativeType] public function setPattern(#[LanguageAware(['8.0' => 'string'], default: '')] $pattern): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the pattern used by the formatter * @link https://php.net/manual/en/messageformatter.getpattern.php * @return string|false The pattern string for this message formatter */ #[Pure] #[TentativeType] public function getPattern(): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the locale for which the formatter was created. * @link https://php.net/manual/en/messageformatter.getlocale.php * @return string The locale name */ #[Pure] #[TentativeType] public function getLocale(): string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the error code from last operation * @link https://php.net/manual/en/messageformatter.geterrorcode.php * @return int The error code, one of UErrorCode values. Initial value is U_ZERO_ERROR. */ #[Pure] #[TentativeType] public function getErrorCode(): int {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the error text from the last operation * @link https://php.net/manual/en/messageformatter.geterrormessage.php * @return string Description of the last error. */ #[Pure] #[TentativeType] public function getErrorMessage(): string {} } class IntlDateFormatter { /** * Completely specified style (Tuesday, April 12, 1952 AD or 3:30:42pm PST) * @link https://php.net/manual/en/class.intldateformatter.php#intl.intldateformatter-constants */ public const FULL = 0; /** * Long style (January 12, 1952 or 3:30:32pm) * @link https://php.net/manual/en/class.intldateformatter.php#intl.intldateformatter-constants */ public const LONG = 1; /** * Medium style (Jan 12, 1952) * @link https://php.net/manual/en/class.intldateformatter.php#intl.intldateformatter-constants */ public const MEDIUM = 2; /** * Most abbreviated style, only essential data (12/13/52 or 3:30pm) * @link https://php.net/manual/en/class.intldateformatter.php#intl.intldateformatter-constants */ public const SHORT = 3; /** * Do not include this element * @link https://php.net/manual/en/class.intldateformatter.php#intl.intldateformatter-constants */ public const NONE = -1; /** * Gregorian Calendar * @link https://php.net/manual/en/class.intldateformatter.php#intl.intldateformatter-constants */ public const GREGORIAN = 1; /** * Non-Gregorian Calendar * @link https://php.net/manual/en/class.intldateformatter.php#intl.intldateformatter-constants */ public const TRADITIONAL = 0; public const RELATIVE_FULL = 128; public const RELATIVE_LONG = 129; public const RELATIVE_MEDIUM = 130; public const RELATIVE_SHORT = 131; public const PATTERN = -2; /** * @param string|null $locale * @param int $dateType * @param int $timeType * @param mixed|null $timezone [optional] * @param mixed|null $calendar [optional] * @param string $pattern [optional] */ #[Pure] public function __construct( #[LanguageAware(['8.0' => 'string|null'], default: '')] $locale, #[ElementAvailable(from: '5.3', to: '8.0')] #[LanguageAware(['8.0' => 'int'], default: '')] $dateType, #[ElementAvailable(from: '5.3', to: '8.0')] #[LanguageAware(['8.0' => 'int'], default: '')] $timeType, #[ElementAvailable(from: '8.1')] int $dateType = 0, #[ElementAvailable(from: '8.1')] int $timeType = 0, $timezone = null, $calendar = null, #[LanguageAware(['8.0' => 'string|null'], default: '')] $pattern = null ) {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Create a date formatter * @link https://php.net/manual/en/intldateformatter.create.php * @param string $locale

    * Locale to use when formatting or parsing; default is specified in the ini setting intl.default_locale. *

    * @param int $dateType

    * Date type to use (none, * short, medium, * long, full). * This is one of the * IntlDateFormatter constants. *

    * @param int $timeType

    * Time type to use (none, * short, medium, * long, full). * This is one of the * IntlDateFormatter constants. *

    * @param string $timezone [optional]

    * Time zone ID, default is system default. *

    * @param int $calendar [optional]

    * Calendar to use for formatting or parsing; default is Gregorian. * This is one of the * IntlDateFormatter calendar constants. *

    * @param string $pattern [optional]

    * Optional pattern to use when formatting or parsing. * Possible patterns are documented at http://userguide.icu-project.org/formatparse/datetime. *

    * @return IntlDateFormatter|null */ #[TentativeType] public static function create( #[LanguageAware(['8.0' => 'string|null'], default: '')] $locale, #[ElementAvailable(from: '5.3', to: '8.0')] #[LanguageAware(['8.0' => 'int'], default: '')] $dateType, #[ElementAvailable(from: '5.3', to: '8.0')] #[LanguageAware(['8.0' => 'int'], default: '')] $timeType, #[ElementAvailable(from: '8.1')] int $dateType = 0, #[ElementAvailable(from: '8.1')] int $timeType = 0, $timezone = null, #[LanguageAware(['8.0' => 'IntlCalendar|int|null'], default: '')] $calendar = null, #[LanguageAware(['8.0' => 'string|null'], default: '')] $pattern = null ): ?IntlDateFormatter {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the datetype used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.getdatetype.php * @return int|false The current date type value of the formatter. */ #[Pure] #[TentativeType] public function getDateType(): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the timetype used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.gettimetype.php * @return int|false The current date type value of the formatter. */ #[Pure] #[TentativeType] public function getTimeType(): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the calendar used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.getcalendar.php * @return int|false The calendar being used by the formatter. */ #[Pure] #[TentativeType] public function getCalendar(): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * sets the calendar used to the appropriate calendar, which must be * @link https://php.net/manual/en/intldateformatter.setcalendar.php * @param int $calendar

    * The calendar to use. * Default is IntlDateFormatter::GREGORIAN. *

    * @return bool TRUE on success or FALSE on failure. */ #[TentativeType] public function setCalendar(#[LanguageAware(['8.0' => 'IntlCalendar|int|null'], default: '')] $calendar): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the timezone-id used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.gettimezoneid.php * @return string|false ID string for the time zone used by this formatter. */ #[Pure] #[TentativeType] public function getTimeZoneId(): string|false {} /** * (PHP 5 >= 5.5.0, PECL intl >= 3.0.0)
    * Get copy of formatter's calendar object * @link https://secure.php.net/manual/en/intldateformatter.getcalendarobject.php * @return IntlCalendar|false|null A copy of the internal calendar object used by this formatter. */ #[Pure] #[TentativeType] public function getCalendarObject(): IntlCalendar|false|null {} /** * (PHP 5 >= 5.5.0, PECL intl >= 3.0.0)
    * Get formatter's timezone * @link https://secure.php.net/manual/en/intldateformatter.gettimezone.php * @return IntlTimeZone|false The associated IntlTimeZone object or FALSE on failure. */ #[Pure] #[TentativeType] public function getTimeZone(): IntlTimeZone|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Sets the time zone to use * @link https://php.net/manual/en/intldateformatter.settimezoneid.php * @param string $zone

    * The time zone ID string of the time zone to use. * If NULL or the empty string, the default time zone for the runtime is used. *

    * @return bool TRUE on success or FALSE on failure. * @removed 7.0 * @see IntlDateFormatter::setTimeZone() */ #[Deprecated(replacement: "%class%->setTimeZone(%parametersList%)", since: "5.5")] public function setTimeZoneId($zone) {} /** * (PHP 5 >= 5.5.0, PECL intl >= 3.0.0)
    * Sets formatter's timezone * @link https://php.net/manual/en/intldateformatter.settimezone.php * @param mixed $timezone

    * The timezone to use for this formatter. This can be specified in the * following forms: *

      *
    • *

      * NULL, in which case the default timezone will be used, as specified in * the ini setting {@link "https://secure.php.net/manual/en/datetime.configuration.php#ini.date.timezone" date.timezone} or * through the function {@link "https://secure.php.net/manual/en/function.date-default-timezone-set.php" date_default_timezone_set()} and as * returned by {@link "https://secure.php.net/manual/en/function.date-default-timezone-get.php" date_default_timezone_get()}. *

      *
    • *
    • *

      * An {@link "https://secure.php.net/manual/en/class.intltimezone.php" IntlTimeZone}, which will be used directly. *

      *
    • *
    • *

      * A {@link "https://secure.php.net/manual/en/class.datetimezone.php" DateTimeZone}. Its identifier will be extracted * and an ICU timezone object will be created; the timezone will be backed * by ICU's database, not PHP's. *

      *
    • *
    • *

      * A {@link "https://secure.php.net/manual/en/language.types.string.php" string}, which should be a valid ICU timezone identifier. * See IntlTimeZone::createTimeZoneIDEnumeration(). Raw offsets such as "GMT+08:30" are also accepted. *

      *
    • *
    *

    * @return bool|null TRUE on success or FALSE on failure. */ #[TentativeType] #[LanguageAware(['8.3' => 'bool'], default: 'bool|null')] public function setTimeZone($timezone) {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set the pattern used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.setpattern.php * @param string $pattern

    * New pattern string to use. * Possible patterns are documented at http://userguide.icu-project.org/formatparse/datetime. *

    * @return bool TRUE on success or FALSE on failure. * Bad formatstrings are usually the cause of the failure. */ #[TentativeType] public function setPattern(#[LanguageAware(['8.0' => 'string'], default: '')] $pattern): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the pattern used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.getpattern.php * @return string|false The pattern string being used to format/parse. */ #[Pure] #[TentativeType] public function getPattern(): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the locale used by formatter * @link https://php.net/manual/en/intldateformatter.getlocale.php * @param int $type [optional] * @return string|false the locale of this formatter or 'false' if error */ #[Pure] #[TentativeType] public function getLocale( #[ElementAvailable(from: '8.0')] #[LanguageAware(['8.0' => 'int'], default: '')] $type = 0 ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set the leniency of the parser * @link https://php.net/manual/en/intldateformatter.setlenient.php * @param bool $lenient

    * Sets whether the parser is lenient or not, default is TRUE (lenient). *

    * @return void */ #[TentativeType] public function setLenient(#[LanguageAware(['8.0' => 'bool'], default: '')] $lenient): void {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the lenient used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.islenient.php * @return bool TRUE if parser is lenient, FALSE if parser is strict. By default the parser is lenient. */ #[Pure] #[TentativeType] public function isLenient(): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Format the date/time value as a string * @link https://php.net/manual/en/intldateformatter.format.php * @param mixed $datetime

    * Value to format. This may be a DateTime object, * an integer representing a Unix timestamp value (seconds * since epoch, UTC) or an array in the format output by * localtime. *

    * @return string|false The formatted string or, if an error occurred, FALSE. */ #[TentativeType] public function format( #[ElementAvailable(from: '5.3', to: '7.4')] $datetime = null, #[ElementAvailable(from: '8.0')] $datetime, #[ElementAvailable(from: '5.3', to: '7.4')] $array = null ): string|false {} /** * (PHP 5 >= 5.5.0, PECL intl >= 3.0.0)
    * Formats an object * @link https://secure.php.net/manual/en/intldateformatter.formatobject.php * @param object $datetime

    * An object of type {@link "https://secure.php.net/manual/en/class.intlcalendar.php" IntlCalendar} or {@link "https://secure.php.net/manual/en/class.datetime.php" DateTime}. The timezone information in the object will be used. *

    * @param mixed $format [optional]

    * How to format the date/time. This can either be an {@link "https://secure.php.net/manual/en/language.types.array.php" array} with * two elements (first the date style, then the time style, these being one * of the constants IntlDateFormatter::NONE, * IntlDateFormatter::SHORT, * IntlDateFormatter::MEDIUM, * IntlDateFormatter::LONG, * IntlDateFormatter::FULL), a long with * the value of one of these constants (in which case it will be used both * for the time and the date) or a {@link "https://secure.php.net/manual/en/language.types.string.php" string} with the format * described in {@link "http://www.icu-project.org/apiref/icu4c/classSimpleDateFormat.html#details" the ICU documentation}. * If NULL, the default style will be used. *

    * @param string|null $locale [optional]

    * The locale to use, or NULL to use the {@link "https://secure.php.net/manual/en/intl.configuration.php#ini.intl.default-locale" default one}.

    * @return string|false A string with result or FALSE on failure. */ #[TentativeType] public static function formatObject($datetime, $format = null, #[LanguageAware(['8.0' => 'string|null'], default: '')] $locale = null): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Parse string to a timestamp value * @link https://php.net/manual/en/intldateformatter.parse.php * @param string $string

    * string to convert to a time *

    * @param int &$offset [optional]

    * Position at which to start the parsing in $value (zero-based). * If no error occurs before $value is consumed, $parse_pos will contain -1 * otherwise it will contain the position at which parsing ended (and the error occurred). * This variable will contain the end position if the parse fails. * If $parse_pos > strlen($value), the parse fails immediately. *

    * @return int|float|false timestamp parsed value */ #[TentativeType] public function parse(#[LanguageAware(['8.0' => 'string'], default: '')] $string, &$offset = null): int|float|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Parse string to a field-based time value * @link https://php.net/manual/en/intldateformatter.localtime.php * @param string $string

    * string to convert to a time *

    * @param int &$offset [optional]

    * Position at which to start the parsing in $value (zero-based). * If no error occurs before $value is consumed, $parse_pos will contain -1 * otherwise it will contain the position at which parsing ended . * If $parse_pos > strlen($value), the parse fails immediately. *

    * @return array|false Localtime compatible array of integers : contains 24 hour clock value in tm_hour field */ #[TentativeType] public function localtime(#[LanguageAware(['8.0' => 'string'], default: '')] $string, &$offset = null): array|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the error code from last operation * @link https://php.net/manual/en/intldateformatter.geterrorcode.php * @return int The error code, one of UErrorCode values. Initial value is U_ZERO_ERROR. */ #[Pure] #[TentativeType] public function getErrorCode(): int {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the error text from the last operation. * @link https://php.net/manual/en/intldateformatter.geterrormessage.php * @return string Description of the last error. */ #[Pure] #[TentativeType] public function getErrorMessage(): string {} /** * @since 8.4 */ public function parseToCalendar(string $string, &$offset = null): int|float|false {} } class ResourceBundle implements IteratorAggregate, Countable { /** * @link https://www.php.net/manual/en/resourcebundle.create.php * @param string $locale

    Locale for which the resources should be loaded (locale name, e.g. en_CA).

    * @param string $bundle

    The directory where the data is stored or the name of the .dat file.

    * @param bool $fallback [optional]

    Whether locale should match exactly or fallback to parent locale is allowed.

    */ #[Pure] public function __construct( #[LanguageAware(['8.0' => 'string|null'], default: '')] $locale, #[LanguageAware(['8.0' => 'string|null'], default: '')] $bundle, #[LanguageAware(['8.0' => 'bool'], default: '')] $fallback = true ) {} /** * (PHP >= 5.3.2, PECL intl >= 2.0.0)
    * Create a resource bundle * @link https://php.net/manual/en/resourcebundle.create.php * @param string $locale

    * Locale for which the resources should be loaded (locale name, e.g. en_CA). *

    * @param string $bundle

    * The directory where the data is stored or the name of the .dat file. *

    * @param bool $fallback [optional]

    * Whether locale should match exactly or fallback to parent locale is allowed. *

    * @return ResourceBundle|null ResourceBundle object or null on error. */ #[TentativeType] public static function create( #[LanguageAware(['8.0' => 'string|null'], default: '')] $locale, #[LanguageAware(['8.0' => 'string|null'], default: '')] $bundle, #[LanguageAware(['8.0' => 'bool'], default: '')] $fallback = true ): ?ResourceBundle {} /** * (PHP >= 5.3.2, PECL intl >= 2.0.0)
    * Get data from the bundle * @link https://php.net/manual/en/resourcebundle.get.php * @param string|int $index

    * Data index, must be string or integer. *

    * @param bool $fallback * @return mixed the data located at the index or NULL on error. Strings, integers and binary data strings * are returned as corresponding PHP types, integer array is returned as PHP array. Complex types are * returned as ResourceBundle object. */ #[Pure] #[TentativeType] #[LanguageAware(['8.4' => 'ResourceBundle|array|string|int|null'], default: 'mixed')] public function get(#[LanguageAware(['8.4' => 'string|int'], default: '')] $index, #[LanguageAware(['8.0' => 'bool'], default: '')] $fallback = true) {} /** * (PHP >= 5.3.2, PECL intl >= 2.0.0)
    * Get number of elements in the bundle * @link https://php.net/manual/en/resourcebundle.count.php * @return int<0,max> number of elements in the bundle. */ #[Pure] #[TentativeType] public function count(): int {} /** * (PHP >= 5.3.2, PECL intl >= 2.0.0)
    * Get supported locales * @link https://php.net/manual/en/resourcebundle.locales.php * @param string $bundle

    * Path of ResourceBundle for which to get available locales, or * empty string for default locales list. *

    * @return array|false the list of locales supported by the bundle. */ #[TentativeType] public static function getLocales(#[LanguageAware(['8.0' => 'string'], default: '')] $bundle): array|false {} /** * (PHP >= 5.3.2, PECL intl >= 2.0.0)
    * Get bundle's last error code. * @link https://php.net/manual/en/resourcebundle.geterrorcode.php * @return int error code from last bundle object call. */ #[Pure] #[TentativeType] public function getErrorCode(): int {} /** * (PHP >= 5.3.2, PECL intl >= 2.0.0)
    * Get bundle's last error message. * @link https://php.net/manual/en/resourcebundle.geterrormessage.php * @return string error message from last bundle object's call. */ #[Pure] #[TentativeType] public function getErrorMessage(): string {} /** * @return Iterator * @since 8.0 */ #[Pure] public function getIterator(): Iterator {} } /** * @since 5.4 */ class Transliterator { public const FORWARD = 0; public const REVERSE = 1; /** * Starting 8.2 $id is readonly to unlock subclassing it */ #[LanguageAware(['8.1' => 'string'], default: '')] public readonly string $id; /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Private constructor to deny instantiation * @link https://php.net/manual/en/transliterator.construct.php */ final private function __construct() {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Create a transliterator * @link https://php.net/manual/en/transliterator.create.php * @param string $id

    * The id. *

    * @param int $direction [optional]

    * The direction, defaults to * Transliterator::FORWARD. * May also be set to * Transliterator::REVERSE. *

    * @return Transliterator|null a Transliterator object on success, * or NULL on failure. */ #[TentativeType] public static function create( #[LanguageAware(['8.0' => 'string'], default: '')] $id, #[LanguageAware(['8.0' => 'int'], default: '')] #[EV([Transliterator::FORWARD, Transliterator::REVERSE])] $direction = 0 ): ?Transliterator {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Create transliterator from rules * @link https://php.net/manual/en/transliterator.createfromrules.php * @param string $rules

    * The rules. *

    * @param int $direction [optional]

    * The direction, defaults to * {@see Transliterator::FORWARD}. * May also be set to * {@see Transliterator::REVERSE}. *

    * @return Transliterator|null a Transliterator object on success, * or NULL on failure. */ #[TentativeType] public static function createFromRules( #[LanguageAware(['8.0' => 'string'], default: '')] $rules, #[LanguageAware(['8.0' => 'int'], default: '')] #[EV([Transliterator::FORWARD, Transliterator::REVERSE])] $direction = 0 ): ?Transliterator {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Create an inverse transliterator * @link https://php.net/manual/en/transliterator.createinverse.php * @return Transliterator|null a Transliterator object on success, * or NULL on failure */ #[Pure] #[TentativeType] public function createInverse(): ?Transliterator {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Get transliterator IDs * @link https://php.net/manual/en/transliterator.listids.php * @return array|false An array of registered transliterator IDs on success, * or FALSE on failure. */ #[TentativeType] public static function listIDs(): array|false {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Transliterate a string * @link https://php.net/manual/en/transliterator.transliterate.php * @param string $string

    * The string to be transformed. *

    * @param int $start [optional]

    * The start index (in UTF-16 code units) from which the string will start * to be transformed, inclusive. Indexing starts at 0. The text before will * be left as is. *

    * @param int $end [optional]

    * The end index (in UTF-16 code units) until which the string will be * transformed, exclusive. Indexing starts at 0. The text after will be * left as is. *

    * @return string|false The transfomed string on success, or FALSE on failure. */ #[Pure] #[TentativeType] public function transliterate( #[LanguageAware(['8.0' => 'string'], default: '')] $string, #[LanguageAware(['8.0' => 'int'], default: '')] $start = 0, #[LanguageAware(['8.0' => 'int'], default: '')] $end = -1 ): string|false {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Get last error code * @link https://php.net/manual/en/transliterator.geterrorcode.php * @return int|false The error code on success, * or FALSE if none exists, or on failure. */ #[Pure] #[TentativeType] public function getErrorCode(): int|false {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Get last error message * @link https://php.net/manual/en/transliterator.geterrormessage.php * @return string|false The error code on success, * or FALSE if none exists, or on failure. */ #[Pure] #[TentativeType] public function getErrorMessage(): string|false {} } /** * @link https://php.net/manual/en/class.spoofchecker.php */ class Spoofchecker { public const SINGLE_SCRIPT_CONFUSABLE = 1; public const MIXED_SCRIPT_CONFUSABLE = 2; public const WHOLE_SCRIPT_CONFUSABLE = 4; public const ANY_CASE = 8; public const SINGLE_SCRIPT = 16; public const INVISIBLE = 32; public const CHAR_LIMIT = 64; public const ASCII = 268435456; public const HIGHLY_RESTRICTIVE = 805306368; public const MODERATELY_RESTRICTIVE = 1073741824; public const MINIMALLY_RESTRICTIVE = 1342177280; public const UNRESTRICTIVE = 1610612736; public const SINGLE_SCRIPT_RESTRICTIVE = 536870912; public const MIXED_NUMBERS = 1; public const HIDDEN_OVERLAY = 2; /** * @since 8.4 */ public const IGNORE_SPACE = 1; /** * @since 8.4 */ public const CASE_INSENSITIVE = 2; /** * @since 8.4 */ public const ADD_CASE_MAPPINGS = 4; /** * @since 8.4 */ public const SIMPLE_CASE_INSENSITIVE = 6; /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Constructor * @link https://php.net/manual/en/spoofchecker.construct.php */ #[Pure] public function __construct() {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Checks if a given text contains any suspicious characters * @link https://php.net/manual/en/spoofchecker.issuspicious.php * @param string $string

    *

    * @param string &$errorCode [optional]

    *

    * @return bool */ #[TentativeType] public function isSuspicious(#[LanguageAware(['8.0' => 'string'], default: '')] $string, &$errorCode = null): bool {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Checks if a given text contains any confusable characters * @link https://php.net/manual/en/spoofchecker.areconfusable.php * @param string $string1

    *

    * @param string $string2

    *

    * @param int &$errorCode [optional]

    *

    * @return bool */ #[TentativeType] public function areConfusable( #[LanguageAware(['8.0' => 'string'], default: '')] $string1, #[LanguageAware(['8.0' => 'string'], default: '')] $string2, &$errorCode = null ): bool {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Locales to use when running checks * @link https://php.net/manual/en/spoofchecker.setallowedlocales.php * @param string $locales

    *

    * @return void */ #[TentativeType] public function setAllowedLocales(#[LanguageAware(['8.0' => 'string'], default: '')] $locales): void {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Set the checks to run * @link https://php.net/manual/en/spoofchecker.setchecks.php * @param int $checks

    *

    * @return void */ #[TentativeType] public function setChecks(#[LanguageAware(['8.0' => 'int'], default: '')] $checks): void {} /** * @param int $level */ #[TentativeType] public function setRestrictionLevel(#[LanguageAware(['8.0' => 'int'], default: '')] $level): void {} /** * @since 8.4 */ public function setAllowedChars(string $pattern, int $patternOptions = 0): void {} } /** * @since 5.5 */ class IntlGregorianCalendar extends IntlCalendar { /** * @link https://www.php.net/manual/en/intlgregoriancalendar.construct * @param int $timezoneOrYear [optional] * @param int $localeOrMonth [optional] * @param int $day [optional] * @param int $hour [optional] * @param int $minute [optional] * @param int $second [optional] */ public function __construct($timezoneOrYear, $localeOrMonth, $day, $hour, $minute, $second) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * @param mixed $timeZone * @param string $locale * @return IntlGregorianCalendar */ public static function createInstance($timeZone = null, $locale = null) {} /** * @param float $timestamp */ #[TentativeType] public function setGregorianChange(#[LanguageAware(['8.0' => 'float'], default: '')] $timestamp): bool {} /** * @return float */ #[Pure] #[TentativeType] public function getGregorianChange(): float {} /** * @param int $year * @return bool */ #[Pure] #[TentativeType] public function isLeapYear(#[LanguageAware(['8.0' => 'int'], default: '')] $year): bool {} /** * @since 8.3 */ public static function createFromDate(int $year, int $month, int $dayOfMonth): static {} /** * @since 8.3 */ public static function createFromDateTime(int $year, int $month, int $dayOfMonth, int $hour, int $minute, ?int $second = null): static {} } /** * @since 5.5 */ class IntlCalendar { /* Constants */ public const FIELD_ERA = 0; public const FIELD_YEAR = 1; public const FIELD_MONTH = 2; public const FIELD_WEEK_OF_YEAR = 3; public const FIELD_WEEK_OF_MONTH = 4; public const FIELD_DATE = 5; public const FIELD_DAY_OF_YEAR = 6; public const FIELD_DAY_OF_WEEK = 7; public const FIELD_DAY_OF_WEEK_IN_MONTH = 8; public const FIELD_AM_PM = 9; public const FIELD_HOUR = 10; public const FIELD_HOUR_OF_DAY = 11; public const FIELD_MINUTE = 12; public const FIELD_SECOND = 13; public const FIELD_MILLISECOND = 14; public const FIELD_ZONE_OFFSET = 15; public const FIELD_DST_OFFSET = 16; public const FIELD_YEAR_WOY = 17; public const FIELD_DOW_LOCAL = 18; public const FIELD_EXTENDED_YEAR = 19; public const FIELD_JULIAN_DAY = 20; public const FIELD_MILLISECONDS_IN_DAY = 21; public const FIELD_IS_LEAP_MONTH = 22; public const FIELD_FIELD_COUNT = 23; public const FIELD_DAY_OF_MONTH = 5; public const DOW_SUNDAY = 1; public const DOW_MONDAY = 2; public const DOW_TUESDAY = 3; public const DOW_WEDNESDAY = 4; public const DOW_THURSDAY = 5; public const DOW_FRIDAY = 6; public const DOW_SATURDAY = 7; public const DOW_TYPE_WEEKDAY = 0; public const DOW_TYPE_WEEKEND = 1; public const DOW_TYPE_WEEKEND_OFFSET = 2; public const DOW_TYPE_WEEKEND_CEASE = 3; public const WALLTIME_FIRST = 1; public const WALLTIME_LAST = 0; public const WALLTIME_NEXT_VALID = 2; /* Methods */ /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Add a (signed) amount of time to a field * @link https://secure.php.net/manual/en/intlcalendar.add.php * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. * These are integer values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @param int $value

    The signed amount to add to the current field. If the amount is positive, the instant will be moved forward; if it is negative, the instant wil be moved into the past. The unit is implicit to the field type. * For instance, hours for IntlCalendar::FIELD_HOUR_OF_DAY.

    * @return bool Returns TRUE on success or FALSE on failure. */ #[TentativeType] public function add( #[LanguageAware(['8.0' => 'int'], default: '')] $field, #[LanguageAware(['8.0' => 'int'], default: '')] $value ): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether this object's time is after that of the passed object * https://secure.php.net/manual/en/intlcalendar.after.php * @param IntlCalendar $other

    The calendar whose time will be checked against this object's time.

    * @return bool * Returns TRUE if this object's current time is after that of the * calendar argument's time. Returns FALSE otherwise. * Also returns FALSE on failure. You can use {@link https://secure.php.net/manual/en/intl.configuration.php#ini.intl.use-exceptions exceptions} or * {@link https://secure.php.net/manual/en/function.intl-get-error-code.php intl_get_error_code()} to detect error conditions. */ #[Pure] #[TentativeType] public function after(IntlCalendar $other): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether this object's time is before that of the passed object * @link https://secure.php.net/manual/en/intlcalendar.before.php * @param IntlCalendar $other

    The calendar whose time will be checked against this object's time.

    * @return bool * Returns TRUE if this object's current time is before that of the * calendar argument's time. Returns FALSE otherwise. * Also returns FALSE on failure. You can use {@link https://secure.php.net/manual/en/intl.configuration.php#ini.intl.use-exceptions exceptions} or * {@link https://secure.php.net/manual/en/function.intl-get-error-code.php intl_get_error_code()} to detect error conditions. */ #[Pure] #[TentativeType] public function before(IntlCalendar $other): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Clear a field or all fields * @link https://secure.php.net/manual/en/intlcalendar.clear.php * @param int $field [optional]

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return bool Returns TRUE on success or FALSE on failure. Failure can only occur is invalid arguments are provided. */ #[LanguageAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public function clear(#[LanguageAware(['8.0' => 'int|null'], default: '')] $field = null) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Private constructor for disallowing instantiation * @link https://secure.php.net/manual/en/intlcalendar.construct.php */ private function __construct() {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Create a new IntlCalendar * @link https://secure.php.net/manual/en/intlcalendar.createinstance.php * @param mixed $timezone [optional]

    * The timezone to use. *

    * *
      *
    • *

      * NULL, in which case the default timezone will be used, as specified in * the ini setting {@link https://secure.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone} or * through the function {@link https://secure.php.net/manual/en/function.date-default-timezone-set.php date_default_timezone_set()} and as * returned by {@link https://secure.php.net/manual/en/function.date-default-timezone-get.php date_default_timezone_get()}. *

      *
    • *
    • *

      * An {@link https://secure.php.net/manual/en/class.intltimezone.php IntlTimeZone}, which will be used directly. *

      *
    • *
    • *

      * A {@link https://secure.php.net/manual/en/class.datetimezone.php DateTimeZone}. Its identifier will be extracted * and an ICU timezone object will be created; the timezone will be backed * by ICU's database, not PHP's. *

      *
    • *
    • *

      * A {@link https://secure.php.net/manual/en/language.types.string.php string}, which should be a valid ICU timezone identifier. * See IntlTimeZone::createTimeZoneIDEnumeration(). Raw * offsets such as "GMT+08:30" are also accepted. *

      *
    • *
    *

    * @param string|null $locale [optional]

    * A locale to use or NULL to use {@link https://secure.php.net/manual/en/intl.configuration.php#ini.intl.default-locale the default locale}. *

    * @return IntlCalendar|null * The created {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} instance or NULL on * failure. */ #[TentativeType] public static function createInstance($timezone = null, #[LanguageAware(['8.0' => 'string|null'], default: '')] $locale = null): ?IntlCalendar {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Compare time of two IntlCalendar objects for equality * @link https://secure.php.net/manual/en/intlcalendar.equals.php * @param IntlCalendar $other * @return bool

    * Returns TRUE if the current time of both this and the passed in * {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} object are the same, or FALSE * otherwise. The value FALSE can also be returned on failure. This can only * happen if bad arguments are passed in. In any case, the two cases can be * distinguished by calling {@link https://secure.php.net/manual/en/function.intl-get-error-code.php intl_get_error_code()}. *

    */ #[Pure] #[TentativeType] public function equals(#[LanguageAware(['8.0' => 'IntlCalendar'], default: '')] $other): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Calculate difference between given time and this object's time * @link https://secure.php.net/manual/en/intlcalendar.fielddifference.php * @param float $timestamp

    * The time against which to compare the quantity represented by the * field. For the result to be positive, the time * given for this parameter must be ahead of the time of the object the * method is being invoked on. *

    * @param int $field

    * The field that represents the quantity being compared. *

    * *

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int|false Returns a (signed) difference of time in the unit associated with the * specified field or FALSE on failure. */ #[Pure] #[TentativeType] public function fieldDifference( #[LanguageAware(['8.0' => 'float'], default: '')] $timestamp, #[LanguageAware(['8.0' => 'int'], default: '')] $field ): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a2)
    * Create an IntlCalendar from a DateTime object or string * @link https://secure.php.net/manual/en/intlcalendar.fromdatetime.php * @param mixed $datetime

    * A {@link https://secure.php.net/manual/en/class.datetime.php DateTime} object or a {@link https://secure.php.net/manual/en/language.types.string.php string} that * can be passed to {@link https://secure.php.net/manual/en/datetime.construct.php DateTime::__construct()}. *

    * @param $locale [optional] * @return IntlCalendar|null * The created {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} object or NULL in case of * failure. If a {@link https://secure.php.net/manual/en/language.types.string.php string} is passed, any exception that occurs * inside the {@link https://secure.php.net/manual/en/class.datetime.php DateTime} constructor is propagated. */ #[TentativeType] public static function fromDateTime( #[LanguageAware(['8.0' => 'DateTime|string'], default: '')] $datetime, #[LanguageAware(['8.0' => 'string|null'], default: '')] #[ElementAvailable(from: '8.0')] $locale ): ?IntlCalendar {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the value for a field * @link https://secure.php.net/manual/en/intlcalendar.get.php * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int|false An integer with the value of the time field. */ #[Pure] #[TentativeType] public function get(#[LanguageAware(['8.0' => 'int'], default: '')] $field): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * The maximum value for a field, considering the object's current time * @link https://secure.php.net/manual/en/intlcalendar.getactualmaximum.php * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int|false * An {@link https://secure.php.net/manual/en/language.types.integer.php int} representing the maximum value in the units associated * with the given field or FALSE on failure. */ #[Pure] #[TentativeType] public function getActualMaximum(#[LanguageAware(['8.0' => 'int'], default: '')] $field): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * The minimum value for a field, considering the object's current time * @link https://secure.php.net/manual/en/intlcalendar.getactualminimum.php * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. * These are integer values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int|false * An {@link https://secure.php.net/manual/en/language.types.integer.php int} representing the minimum value in the field's * unit or FALSE on failure. */ #[Pure] #[TentativeType] public function getActualMinimum(#[LanguageAware(['8.0' => 'int'], default: '')] $field): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get array of locales for which there is data * @link https://secure.php.net/manual/en/intlcalendar.getavailablelocales.php * @return string[] An array of strings, one for which locale. */ #[TentativeType] public static function getAvailableLocales(): array {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Tell whether a day is a weekday, weekend or a day that has a transition between the two * @param int $dayOfWeek

    * One of the constants IntlCalendar::DOW_SUNDAY, * IntlCalendar::DOW_MONDAY, ..., * IntlCalendar::DOW_SATURDAY. *

    * @return int|false * Returns one of the constants * IntlCalendar::DOW_TYPE_WEEKDAY, * IntlCalendar::DOW_TYPE_WEEKEND, * IntlCalendar::DOW_TYPE_WEEKEND_OFFSET or * IntlCalendar::DOW_TYPE_WEEKEND_CEASE or FALSE on failure. */ #[Pure] #[TentativeType] public function getDayOfWeekType(#[LanguageAware(['8.0' => 'int'], default: '')] $dayOfWeek): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get last error code on the object * @link https://secure.php.net/manual/en/intlcalendar.geterrorcode.php * @return int|false An ICU error code indicating either success, failure or a warning. */ #[Pure] #[TentativeType] public function getErrorCode(): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get last error message on the object * @link https://secure.php.net/manual/en/intlcalendar.geterrormessage.php * @return string|false The error message associated with last error that occurred in a function call on this object, or a string indicating the non-existance of an error. */ #[Pure] #[TentativeType] public function getErrorMessage(): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the first day of the week for the calendar's locale * @link https://secure.php.net/manual/en/intlcalendar.getfirstdayofweek.php * @return int|false * One of the constants IntlCalendar::DOW_SUNDAY, * IntlCalendar::DOW_MONDAY, ..., * IntlCalendar::DOW_SATURDAY or FALSE on failure. */ #[Pure] #[TentativeType] public function getFirstDayOfWeek(): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the largest local minimum value for a field * @link https://secure.php.net/manual/en/intlcalendar.getgreatestminimum.php * @param int $field * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. * @return int|false * An {@link https://secure.php.net/manual/en/language.types.integer.php int} representing a field value, in the field's * unit, or FALSE on failure. */ #[Pure] #[TentativeType] public function getGreatestMinimum(#[LanguageAware(['8.0' => 'int'], default: '')] $field): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get set of locale keyword values * @param string $keyword

    * The locale keyword for which relevant values are to be queried. Only * 'calendar' is supported. *

    * @param string $locale

    * The locale onto which the keyword/value pair are to be appended. *

    * @param bool $onlyCommon *

    * Whether to show only the values commonly used for the specified locale. *

    * @return Iterator|false An iterator that yields strings with the locale keyword values or FALSE on failure. */ #[TentativeType] public static function getKeywordValuesForLocale( #[LanguageAware(['8.0' => 'string'], default: '')] $keyword, #[LanguageAware(['8.0' => 'string'], default: '')] $locale, #[LanguageAware(['8.0' => 'bool'], default: '')] $onlyCommon ): IntlIterator|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the smallest local maximum for a field * @link https://secure.php.net/manual/en/intlcalendar.getleastmaximum.php * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int|false * An {@link https://secure.php.net/manual/en/language.types.integer.ph int} representing a field value in the field's * unit or FALSE on failure. */ #[Pure] #[TentativeType] public function getLeastMaximum(#[LanguageAware(['8.0' => 'int'], default: '')] $field): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the locale associated with the object * @link https://secure.php.net/manual/en/intlcalendar.getlocale.php * @param int $type

    * Whether to fetch the actual locale (the locale from which the calendar * data originates, with Locale::ACTUAL_LOCALE) or the * valid locale, i.e., the most specific locale supported by ICU relatively * to the requested locale – see Locale::VALID_LOCALE. * From the most general to the most specific, the locales are ordered in * this fashion – actual locale, valid locale, requested locale. *

    * @return string|false */ #[Pure] #[TentativeType] public function getLocale(#[LanguageAware(['8.0' => 'int'], default: '')] $type): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the global maximum value for a field * @link https://secure.php.net/manual/en/intlcalendar.getmaximum.php * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int|false */ #[Pure] #[TentativeType] public function getMaximum(#[LanguageAware(['8.0' => 'int'], default: '')] $field): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get minimal number of days the first week in a year or month can have * @link https://secure.php.net/manual/en/intlcalendar.getminimaldaysinfirstweek.php * @return int|false * An {@link https://secure.php.net/manual/en/language.types.integer.php int} representing a number of days or FALSE on failure. */ #[Pure] #[TentativeType] public function getMinimalDaysInFirstWeek(): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the global minimum value for a field * @link https://secure.php.net/manual/en/intlcalendar.getminimum.php * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int|false * An int representing a value for the given field in the field's unit or FALSE on failure. */ #[Pure] #[TentativeType] public function getMinimum(#[LanguageAware(['8.0' => 'int'], default: '')] $field): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get number representing the current time * @return float A float representing a number of milliseconds since the epoch, not counting leap seconds. */ #[TentativeType] public static function getNow(): float {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get behavior for handling repeating wall time * @link https://secure.php.net/manual/en/intlcalendar.getrepeatedwalltimeoption.php * @return int * One of the constants IntlCalendar::WALLTIME_FIRST or * IntlCalendar::WALLTIME_LAST. */ #[Pure] #[TentativeType] public function getRepeatedWallTimeOption(): int {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get behavior for handling skipped wall time * @link https://secure.php.net/manual/en/intlcalendar.getskippedwalltimeoption.php * @return int * One of the constants IntlCalendar::WALLTIME_FIRST, * IntlCalendar::WALLTIME_LAST or * IntlCalendar::WALLTIME_NEXT_VALID. */ #[Pure] #[TentativeType] public function getSkippedWallTimeOption(): int {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get time currently represented by the object * @return float|false * A {@link https://secure.php.net/manual/en/language.types.float.php float} representing the number of milliseconds elapsed since the * reference time (1 Jan 1970 00:00:00 UTC). */ #[Pure] #[TentativeType] public function getTime(): float|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the object's timezone * @link https://secure.php.net/manual/en/intlcalendar.gettimezone.php * @return IntlTimeZone|false * An {@link https://secure.php.net/manual/en/class.intltimezone.php IntlTimeZone} object corresponding to the one used * internally in this object. */ #[Pure] #[TentativeType] public function getTimeZone(): IntlTimeZone|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the calendar type * @link https://secure.php.net/manual/en/intlcalendar.gettype.php * @return string * A {@link https://secure.php.net/manual/en/language.types.string.php string} representing the calendar type, such as * 'gregorian', 'islamic', etc. */ #[Pure] #[TentativeType] public function getType(): string {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get time of the day at which weekend begins or ends * @link https://secure.php.net/manual/en/intlcalendar.getweekendtransition.php * @param string $dayOfWeek

    * One of the constants IntlCalendar::DOW_SUNDAY, * IntlCalendar::DOW_MONDAY, ..., * IntlCalendar::DOW_SATURDAY. *

    * @return int|false * The number of milliseconds into the day at which the the weekend begins or * ends or FALSE on failure. */ #[Pure] #[TentativeType] public function getWeekendTransition(#[LanguageAware(['8.0' => 'int'], default: '')] $dayOfWeek): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether the object's time is in Daylight Savings Time * @link https://secure.php.net/manual/en/intlcalendar.indaylighttime.php * @return bool * Returns TRUE if the date is in Daylight Savings Time, FALSE otherwise. * The value FALSE may also be returned on failure, for instance after * specifying invalid field values on non-lenient mode; use {@link https://secure.php.net/manual/en/intl.configuration.php#ini.intl.use-exceptions exceptions} or query * {@link https://secure.php.net/manual/en/function.intl-get-error-code.php intl_get_error_code()} to disambiguate. */ #[Pure] #[TentativeType] public function inDaylightTime(): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether another calendar is equal but for a different time * @link https://secure.php.net/manual/en/intlcalendar.isequivalentto.php * @param IntlCalendar $other The other calendar against which the comparison is to be made. * @return bool * Assuming there are no argument errors, returns TRUE iif the calendars are equivalent except possibly for their set time. */ #[Pure] #[TentativeType] public function isEquivalentTo(IntlCalendar $other): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether date/time interpretation is in lenient mode * @link https://secure.php.net/manual/en/intlcalendar.islenient.php * @return bool * A {@link https://secure.php.net/manual/en/language.types.boolean.php bool} representing whether the calendar is set to lenient mode. */ #[Pure] #[TentativeType] public function isLenient(): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether a certain date/time is in the weekend * @link https://secure.php.net/manual/en/intlcalendar.isweekend.php * @param float|null $timestamp [optional]

    * An optional timestamp representing the number of milliseconds since the * epoch, excluding leap seconds. If NULL, this object's current time is * used instead. *

    * @return bool *

    A {@link https://secure.php.net/manual/en/language.types.boolean.php bool} indicating whether the given or this object's time occurs * in a weekend. *

    *

    * The value FALSE may also be returned on failure, for instance after giving * a date out of bounds on non-lenient mode; use {@link https://secure.php.net/manual/en/intl.configuration.php#ini.intl.use-exceptions exceptions} or query * {@link https://secure.php.net/manual/en/function.intl-get-error-code.php intl_get_error_code()} to disambiguate.

    */ #[Pure] #[TentativeType] public function isWeekend(#[LanguageAware(['8.0' => 'float|null'], default: '')] $timestamp = null): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Add value to field without carrying into more significant fields * @link https://secure.php.net/manual/en/intlcalendar.roll.php * @param int $field *

    One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time * {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @param mixed $value

    * The (signed) amount to add to the field, TRUE for rolling up (adding * 1), or FALSE for rolling down (subtracting * 1). *

    * @return bool Returns TRUE on success or FALSE on failure. */ #[TentativeType] public function roll(#[LanguageAware(['8.0' => 'int'], default: '')] $field, $value): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether a field is set * @link https://secure.php.net/manual/en/intlcalendar.isset.php * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time * {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. * These are integer values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return bool Assuming there are no argument errors, returns TRUE iif the field is set. */ #[TentativeType] public function PS_UNRESERVE_PREFIX_isSet(#[LanguageAware(['8.0' => 'int'], default: '')] $field): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set a time field or several common fields at once * @link https://secure.php.net/manual/en/intlcalendar.set.php * @param int $year

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @param int $month

    * The new value for IntlCalendar::FIELD_MONTH. *

    * @param int $dayOfMonth [optional]

    * The new value for IntlCalendar::FIELD_DAY_OF_MONTH. * The month sequence is zero-based, i.e., January is represented by 0, * February by 1, ..., December is 11 and Undecember (if the calendar has * it) is 12. *

    * @param int $hour [optional] *

    * The new value for IntlCalendar::FIELD_HOUR_OF_DAY. *

    * @param int $minute [optional] *

    * The new value for IntlCalendar::FIELD_MINUTE. *

    * @param int $second [optional]

    * The new value for IntlCalendar::FIELD_SECOND. *

    * @return bool Returns TRUE on success and FALSE on failure. */ public function set($year, $month, $dayOfMonth = null, $hour = null, $minute = null, $second = null) {} /** * (PHP 5 >= 5.5.0 PECL intl >= 3.0.0a1)
    * Set a time field or several common fields at once * @link https://secure.php.net/manual/en/intlcalendar.set.php * @param int $field One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT. * @param int $value The new value of the given field. * @return bool Returns TRUE on success and FALSE on failure. * @since 5.5 */ public function set($field, $value) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set the day on which the week is deemed to start * @link https://secure.php.net/manual/en/intlcalendar.setfirstdayofweek.php * @param int $dayOfWeek

    * One of the constants IntlCalendar::DOW_SUNDAY, * IntlCalendar::DOW_MONDAY, ..., * IntlCalendar::DOW_SATURDAY. *

    * @return bool Returns TRUE on success. Failure can only happen due to invalid parameters. */ #[LanguageAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public function setFirstDayOfWeek(#[LanguageAware(['8.0' => 'int'], default: '')] $dayOfWeek) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set whether date/time interpretation is to be lenient * @link https://secure.php.net/manual/en/intlcalendar.setlenient.php * @param bool $lenient

    * Use TRUE to activate the lenient mode; FALSE otherwise. *

    * @return bool Returns TRUE on success. Failure can only happen due to invalid parameters. */ #[LanguageAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public function setLenient(#[LanguageAware(['8.0' => 'bool'], default: '')] $lenient) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set behavior for handling repeating wall times at negative timezone offset transitions * @link https://secure.php.net/manual/en/intlcalendar.setrepeatedwalltimeoption.php * @param int $option

    * One of the constants IntlCalendar::WALLTIME_FIRST or * IntlCalendar::WALLTIME_LAST. *

    * @return bool * Returns TRUE on success. Failure can only happen due to invalid parameters. */ #[LanguageAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public function setRepeatedWallTimeOption(#[LanguageAware(['8.0' => 'int'], default: '')] $option) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set behavior for handling skipped wall times at positive timezone offset transitions * @link https://secure.php.net/manual/en/intlcalendar.setskippedwalltimeoption.php * @param int $option

    * One of the constants IntlCalendar::WALLTIME_FIRST, * IntlCalendar::WALLTIME_LAST or * IntlCalendar::WALLTIME_NEXT_VALID. *

    * @return bool *

    * Returns TRUE on success. Failure can only happen due to invalid parameters. *

    */ #[LanguageAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public function setSkippedWallTimeOption(#[LanguageAware(['8.0' => 'int'], default: '')] $option) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set the calendar time in milliseconds since the epoch * @link https://secure.php.net/manual/en/intlcalendar.settime.php * @param float $timestamp

    * An instant represented by the number of number of milliseconds between * such instant and the epoch, ignoring leap seconds. *

    * @return bool * Returns TRUE on success and FALSE on failure. */ #[TentativeType] public function setTime(#[LanguageAware(['8.0' => 'float'], default: '')] $timestamp): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set the timezone used by this calendar * @link https://secure.php.net/manual/en/intlcalendar.settimezone.php * @param mixed $timezone

    * The new timezone to be used by this calendar. It can be specified in the * following ways: * *

      *
    • *

      * NULL, in which case the default timezone will be used, as specified in * the ini setting {@link https://secure.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone} or * through the function {@link https://secure.php.net/manual/en/function.date-default-timezone-set.php date_default_timezone_set()} and as * returned by {@link https://secure.php.net/manual/en/function.date-default-timezone-get.php date_default_timezone_get()}. *

      *
    • *
    • *

      * An {@link https://secure.php.net/manual/en/class.intltimezone.php IntlTimeZone}, which will be used directly. *

      *
    • *
    • *

      * A {@link https://secure.php.net/manual/en/class.datetimezone.php DateTimeZone}. Its identifier will be extracted * and an ICU timezone object will be created; the timezone will be backed * by ICU's database, not PHP's. *

      *
    • *
    • *

      * A {@link https://secure.php.net/manual/en/language.types.string.php string}, which should be a valid ICU timezone identifier. * See b>IntlTimeZone::createTimeZoneIDEnumeration(). Raw * offsets such as "GMT+08:30" are also accepted. *

      *
    • *
    * @return bool Returns TRUE on success and FALSE on failure. */ #[TentativeType] public function setTimeZone($timezone): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a2)
    * Convert an IntlCalendar into a DateTime object * @link https://secure.php.net/manual/en/intlcalendar.todatetime.php * @return DateTime|false * A {@link https://secure.php.net/manual/en/class.datetime.php DateTime} object with the same timezone as this * object (though using PHP's database instead of ICU's) and the same time, * except for the smaller precision (second precision instead of millisecond). * Returns FALSE on failure. */ #[Pure] #[TentativeType] public function toDateTime(): DateTime|false {} /** * @link https://www.php.net/manual/en/intlcalendar.setminimaldaysinfirstweek.php * @param int $days * @return bool */ #[LanguageAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public function setMinimalDaysInFirstWeek(#[LanguageAware(['8.0' => 'int'], default: '')] $days) {} /** * @since 8.3 */ public function setDate(int $year, int $month, int $dayOfMonth): void {} /** * @since 8.3 */ public function setDateTime(int $year, int $month, int $dayOfMonth, int $hour, int $minute, ?int $second = null): void {} } /** * @since 5.5 */ class IntlIterator implements Iterator { #[TentativeType] public function current(): mixed {} #[TentativeType] public function key(): mixed {} #[TentativeType] public function next(): void {} #[TentativeType] public function rewind(): void {} #[TentativeType] public function valid(): bool {} } /** * @since 5.5 */ class IntlException extends Exception {} /** * @since 5.5 */ class IntlTimeZone { /* Constants */ public const DISPLAY_SHORT = 1; public const DISPLAY_LONG = 2; public const DISPLAY_SHORT_GENERIC = 3; public const DISPLAY_LONG_GENERIC = 4; public const DISPLAY_SHORT_GMT = 5; public const DISPLAY_LONG_GMT = 6; public const DISPLAY_SHORT_COMMONLY_USED = 7; public const DISPLAY_GENERIC_LOCATION = 8; public const TYPE_ANY = 0; public const TYPE_CANONICAL = 1; public const TYPE_CANONICAL_LOCATION = 2; /* Methods */ private function __construct() {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the number of IDs in the equivalency group that includes the given ID * @link https://secure.php.net/manual/en/intltimezone.countequivalentids.php * @param string $timezoneId * @return int|false number of IDs or FALSE on failure */ #[TentativeType] public static function countEquivalentIDs(#[LanguageAware(['8.0' => 'string'], default: '')] $timezoneId): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Create a new copy of the default timezone for this host * @link https://secure.php.net/manual/en/intltimezone.createdefault.php * @return IntlTimeZone */ #[TentativeType] public static function createDefault(): IntlTimeZone {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get an enumeration over time zone IDs associated with the given country or offset * @link https://secure.php.net/manual/en/intltimezone.createenumeration.php * @param mixed $countryOrRawOffset [optional] * @return IntlIterator|false an iterator or FALSE on failure */ #[TentativeType] public static function createEnumeration($countryOrRawOffset): IntlIterator|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Create a timezone object for the given ID * @link https://secure.php.net/manual/en/intltimezone.createtimezone.php * @param string $timezoneId * @return IntlTimeZone|null a timezone object or NULL on failure */ #[TentativeType] public static function createTimeZone(#[LanguageAware(['8.0' => 'string'], default: '')] $timezoneId): ?IntlTimeZone {} /** * (PHP 5 >=5.5.0)
    * Get an enumeration over system time zone IDs with the given filter conditions * @link https://secure.php.net/manual/en/intltimezone.createtimezoneidenumeration.php * @param int $type * @param string|null $region [optional] * @param int $rawOffset [optional] * @return IntlIterator|false an iterator or FALSE on failure */ #[TentativeType] public static function createTimeZoneIDEnumeration( #[LanguageAware(['8.0' => 'int'], default: '')] $type, #[LanguageAware(['8.0' => 'string|null'], default: '')] $region = null, #[LanguageAware(['8.0' => 'int|null'], default: '')] $rawOffset = null ): IntlIterator|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Create a timezone object from DateTimeZone * @link https://secure.php.net/manual/en/intltimezone.fromdatetimezone.php * @param DateTimeZone $timezone * @return IntlTimeZone|null a timezone object or NULL on failure */ #[TentativeType] public static function fromDateTimeZone(#[LanguageAware(['8.0' => 'DateTimeZone'], default: '')] $timezone): ?IntlTimeZone {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the canonical system timezone ID or the normalized custom time zone ID for the given time zone ID * @link https://secure.php.net/manual/en/intltimezone.getcanonicalid.php * @param string $timezoneId * @param bool &$isSystemId [optional] * @return string|false the timezone ID or FALSE on failure */ #[TentativeType] public static function getCanonicalID(#[LanguageAware(['8.0' => 'string'], default: '')] $timezoneId, &$isSystemId): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get a name of this time zone suitable for presentation to the user * @param bool $dst [optional] * @param int $style [optional] * @param string $locale [optional] * @return string|false the timezone name or FALSE on failure */ #[Pure] #[TentativeType] public function getDisplayName( #[LanguageAware(['8.0' => 'bool'], default: '')] $dst = false, #[LanguageAware(['8.0' => 'int'], default: '')] $style = 2, #[LanguageAware(['8.0' => 'string|null'], default: '')] $locale ): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the amount of time to be added to local standard time to get local wall clock time * @link https://secure.php.net/manual/en/intltimezone.getequivalentid.php * @return int */ #[Pure] #[TentativeType] public function getDSTSavings(): int {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get an ID in the equivalency group that includes the given ID * @link https://secure.php.net/manual/en/intltimezone.getequivalentid.php * @param string $timezoneId * @param int $offset * @return string|false the time zone ID or FALSE on failure */ #[TentativeType] public static function getEquivalentID( #[LanguageAware(['8.0' => 'string'], default: '')] $timezoneId, #[LanguageAware(['8.0' => 'int'], default: '')] $offset ): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get last error code on the object * @link https://secure.php.net/manual/en/intltimezone.geterrorcode.php * @return int|false */ #[Pure] #[TentativeType] public function getErrorCode(): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get last error message on the object * @link https://secure.php.net/manual/en/intltimezone.geterrormessage.php * @return string|false */ #[Pure] #[TentativeType] public function getErrorMessage(): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Create GMT (UTC) timezone * @link https://secure.php.net/manual/en/intltimezone.getgmt.php * @return IntlTimeZone */ #[TentativeType] public static function getGMT(): IntlTimeZone {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get timezone ID * @return string|false */ #[Pure] #[TentativeType] public function getID(): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the time zone raw and GMT offset for the given moment in time * @link https://secure.php.net/manual/en/intltimezone.getoffset.php * @param float $timestamp * moment in time for which to return offsets, in units of milliseconds from * January 1, 1970 0:00 GMT, either GMT time or local wall time, depending on * `local'. * @param bool $local * if true, `date' is local wall time; otherwise it is in GMT time. * @param int &$rawOffset * output parameter to receive the raw offset, that is, the offset not * including DST adjustments * @param int &$dstOffset * output parameter to receive the DST offset, that is, the offset to be added * to `rawOffset' to obtain the total offset between local and GMT time. If * DST is not in effect, this value is zero; otherwise it is a positive value, * typically one hour. * @return bool boolean indication of success */ #[TentativeType] public function getOffset( #[LanguageAware(['8.0' => 'float'], default: '')] $timestamp, #[LanguageAware(['8.0' => 'bool'], default: '')] $local, &$rawOffset, &$dstOffset ): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the raw GMT offset (before taking daylight savings time into account * @link https://secure.php.net/manual/en/intltimezone.getrawoffset.php * @return int */ #[Pure] #[TentativeType] public function getRawOffset(): int {} /** * (PHP 5 >=5.5.0)
    * Get the region code associated with the given system time zone ID * @link https://secure.php.net/manual/en/intltimezone.getregion.php * @param string $timezoneId * @return string|false region or FALSE on failure */ #[TentativeType] public static function getRegion(#[LanguageAware(['8.0' => 'string'], default: '')] $timezoneId): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the timezone data version currently used by ICU * @link https://secure.php.net/manual/en/intltimezone.gettzdataversion.php * @return string|false */ #[TentativeType] public static function getTZDataVersion(): string|false {} /** * (PHP 5 >=5.5.0)
    * Get the "unknown" time zone * @link https://secure.php.net/manual/en/intltimezone.getunknown.php * @return IntlTimeZone */ #[TentativeType] public static function getUnknown(): IntlTimeZone {} /** * (PHP 7 >=7.1.0)
    * Translates a system timezone (e.g. "America/Los_Angeles") into a Windows * timezone (e.g. "Pacific Standard Time"). * @link https://secure.php.net/manual/en/intltimezone.getwindowsid.php * @param string $timezoneId * @return string|false the Windows timezone or FALSE on failure * @since 7.1 */ #[TentativeType] public static function getWindowsID(string $timezoneId): string|false {} /** * @link https://www.php.net/manual/en/intltimezone.getidforwindowsid.php * @param string $timezoneId * @param string|null $region * @return string|false the Windows timezone or FALSE on failure * @since 7.1 */ #[TentativeType] public static function getIDForWindowsID(string $timezoneId, ?string $region = null): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Check if this zone has the same rules and offset as another zone * @link https://secure.php.net/manual/en/intltimezone.hassamerules.php * @param IntlTimeZone $other * @return bool */ #[Pure] #[TentativeType] public function hasSameRules(IntlTimeZone $other): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Convert to DateTimeZone object * @link https://secure.php.net/manual/en/intltimezone.todatetimezone.php * @return DateTimeZone|false the DateTimeZone object or FALSE on failure */ #[Pure] #[TentativeType] public function toDateTimeZone(): DateTimeZone|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Check if this time zone uses daylight savings time * @link https://secure.php.net/manual/en/intltimezone.usedaylighttime.php * @return bool */ #[TentativeType] public function useDaylightTime(): bool {} /** * @since 8.4 */ public static function getIanaID(string $timezoneId): string|false {} } /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Create a collator * @link https://php.net/manual/en/collator.create.php * @param string $locale

    * The locale containing the required collation rules. Special values for * locales can be passed in - if null is passed for the locale, the * default locale collation rules will be used. If empty string ("") or * "root" are passed, UCA rules will be used. *

    * @return Collator|null Return new instance of Collator object, or NULL * on error. */ #[Pure] function collator_create(string $locale): ?Collator {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Compare two Unicode strings * @link https://php.net/manual/en/collator.compare.php * @param Collator $object * @param string $string1

    * The first string to compare. *

    * @param string $string2

    * The second string to compare. *

    * @return int|false Return comparison result:

    *

    *

    * 1 if string1 is greater than * string2 ; *

    *

    * 0 if string1 is equal to * string2; *

    *

    * -1 if string1 is less than * string2 . *

    * On error * boolean * FALSE * is returned. */ #[Pure] function collator_compare(Collator $object, string $string1, string $string2): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get collation attribute value * @link https://php.net/manual/en/collator.getattribute.php * @param Collator $object * @param int $attribute

    * Attribute to get value for. *

    * @return int|false Attribute value, or boolean FALSE on error. */ #[Pure] function collator_get_attribute(Collator $object, int $attribute): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set collation attribute * @link https://php.net/manual/en/collator.setattribute.php * @param Collator $object * @param int $attribute

    Attribute.

    * @param int $value

    * Attribute value. *

    * @return bool TRUE on success or FALSE on failure. */ function collator_set_attribute(Collator $object, int $attribute, int $value): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get current collation strength * @link https://php.net/manual/en/collator.getstrength.php * @param Collator $object * @return int current collation strength */ #[Pure] function collator_get_strength(Collator $object): int {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set collation strength * @link https://php.net/manual/en/collator.setstrength.php * @param Collator $object * @param int $strength

    Strength to set.

    *

    * Possible values are: * Collator::PRIMARY *

    * @return bool TRUE on success or FALSE on failure. */ #[LanguageAware(['8.4' => 'true'], default: 'bool')] function collator_set_strength(Collator $object, int $strength) {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Sort array using specified collator * @link https://php.net/manual/en/collator.sort.php * @param Collator $object * @param string[] &$array

    * Array of strings to sort. *

    * @param int $flags

    * Optional sorting type, one of the following: *

    *

    * Collator::SORT_REGULAR * - compare items normally (don't change types) *

    * @return bool TRUE on success or FALSE on failure. */ function collator_sort(Collator $object, array &$array, int $flags = 0): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Sort array using specified collator and sort keys * @link https://php.net/manual/en/collator.sortwithsortkeys.php * @param Collator $object * @param string[] &$array

    Array of strings to sort

    * @return bool TRUE on success or FALSE on failure. */ function collator_sort_with_sort_keys( Collator $object, array &$array, #[ElementAvailable(from: '5.3', to: '5.6')] $sort_flags = [] ): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Sort array maintaining index association * @link https://php.net/manual/en/collator.asort.php * @param Collator $object * @param string[] &$array

    Array of strings to sort.

    * @param int $flags

    * Optional sorting type, one of the following: * Collator::SORT_REGULAR * - compare items normally (don't change types) *

    * @return bool TRUE on success or FALSE on failure. */ function collator_asort(Collator $object, array &$array, int $flags = 0): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the locale name of the collator * @link https://php.net/manual/en/collator.getlocale.php * @param Collator $object * @param int $type

    * You can choose between valid and actual locale ( * Locale::VALID_LOCALE and * Locale::ACTUAL_LOCALE, * respectively). The default is the actual locale. *

    * @return string|false Real locale name from which the collation data comes. If the collator was * instantiated from rules or an error occurred, returns * boolean FALSE. */ #[Pure] function collator_get_locale(Collator $object, int $type): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get collator's last error code * @link https://php.net/manual/en/collator.geterrorcode.php * @param Collator $object * @return int|false Error code returned by the last Collator API function call. */ #[Pure(true)] function collator_get_error_code(Collator $object): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get text for collator's last error code * @link https://php.net/manual/en/collator.geterrormessage.php * @param Collator $object * @return string|false Description of an error occurred in the last Collator API function call. */ #[Pure] function collator_get_error_message(Collator $object): string|false {} /** * (PHP 5 >= 5.3.2, PHP 7, PECL intl >= 1.0.3)
    * Get sorting key for a string * @link https://php.net/manual/en/collator.getsortkey.php * @param Collator $object * @param string $string

    * The string to produce the key from. *

    * @return string|false the collation key for the string. Collation keys can be compared directly instead of strings. */ #[Pure] function collator_get_sort_key( Collator $object, string $string, #[ElementAvailable(from: '5.3', to: '5.6')] $arg3 ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Create a number formatter * @link https://php.net/manual/en/numberformatter.create.php * @param string $locale

    * Locale in which the number would be formatted (locale name, e.g. en_CA). *

    * @param int $style

    * Style of the formatting, one of the * format style constants. If * NumberFormatter::PATTERN_DECIMAL * or NumberFormatter::PATTERN_RULEBASED * is passed then the number format is opened using the given pattern, * which must conform to the syntax described in * ICU DecimalFormat * documentation or * ICU RuleBasedNumberFormat * documentation, respectively. *

    * @param string|null $pattern [optional]

    * Pattern string if the chosen style requires a pattern. *

    * @return NumberFormatter|null NumberFormatter object or NULL on error. */ #[Pure] function numfmt_create(string $locale, int $style, #[LanguageAware(['8.0' => 'string|null'], default: 'string')] $pattern = null): ?NumberFormatter {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Format a number * @link https://php.net/manual/en/numberformatter.format.php * @param NumberFormatter $formatter * @param int|float $num

    * The value to format. Can be integer or float, * other values will be converted to a numeric value. *

    * @param int $type

    * The * formatting type to use. *

    * @return string|false the string containing formatted value, or FALSE on error. */ #[Pure] function numfmt_format(NumberFormatter $formatter, int|float $num, int $type = 0): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Parse a number * @link https://php.net/manual/en/numberformatter.parse.php * @param NumberFormatter $formatter * @param string $string * @param int $type [optional]

    * The * formatting type to use. By default, * NumberFormatter::TYPE_DOUBLE is used. *

    * @param int &$offset [optional]

    * Offset in the string at which to begin parsing. On return, this value * will hold the offset at which parsing ended. *

    * @return int|float|false The value of the parsed number or FALSE on error. */ #[Pure] function numfmt_parse(NumberFormatter $formatter, string $string, int $type = NumberFormatter::TYPE_DOUBLE, &$offset = null): int|float|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Format a currency value * @link https://php.net/manual/en/numberformatter.formatcurrency.php * @param NumberFormatter $formatter * @param float $amount

    * The numeric currency value. *

    * @param string $currency

    * The 3-letter ISO 4217 currency code indicating the currency to use. *

    * @return string|false String representing the formatted currency value. */ #[Pure] function numfmt_format_currency(NumberFormatter $formatter, float $amount, string $currency): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Parse a currency number * @link https://php.net/manual/en/numberformatter.parsecurrency.php * @param NumberFormatter $formatter * @param string $string * @param string &$currency

    * Parameter to receive the currency name (3-letter ISO 4217 currency * code). *

    * @param int &$offset [optional]

    * Offset in the string at which to begin parsing. On return, this value * will hold the offset at which parsing ended. *

    * @return float|false The parsed numeric value or FALSE on error. */ function numfmt_parse_currency(NumberFormatter $formatter, string $string, &$currency, &$offset = null): float|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set an attribute * @link https://php.net/manual/en/numberformatter.setattribute.php * @param NumberFormatter $formatter * @param int $attribute

    * Attribute specifier - one of the * numeric attribute constants. *

    * @param int|float $value

    * The attribute value. *

    * @return bool TRUE on success or FALSE on failure. */ function numfmt_set_attribute(NumberFormatter $formatter, int $attribute, int|float $value): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get an attribute * @link https://php.net/manual/en/numberformatter.getattribute.php * @param NumberFormatter $formatter * @param int $attribute

    * Attribute specifier - one of the * numeric attribute constants. *

    * @return int|float|false Return attribute value on success, or FALSE on error. */ #[Pure] function numfmt_get_attribute(NumberFormatter $formatter, int $attribute): int|float|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set a text attribute * @link https://php.net/manual/en/numberformatter.settextattribute.php * @param NumberFormatter $formatter * @param int $attribute

    * Attribute specifier - one of the * text attribute * constants. *

    * @param string $value

    * Text for the attribute value. *

    * @return bool TRUE on success or FALSE on failure. */ function numfmt_set_text_attribute(NumberFormatter $formatter, int $attribute, string $value): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get a text attribute * @link https://php.net/manual/en/numberformatter.gettextattribute.php * @param NumberFormatter $formatter * @param int $attribute

    * Attribute specifier - one of the * text attribute constants. *

    * @return string|false Return attribute value on success, or FALSE on error. */ #[Pure] function numfmt_get_text_attribute(NumberFormatter $formatter, int $attribute): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set a symbol value * @link https://php.net/manual/en/numberformatter.setsymbol.php * @param NumberFormatter $formatter * @param int $symbol

    * Symbol specifier, one of the * format symbol constants. *

    * @param string $value

    * Text for the symbol. *

    * @return bool TRUE on success or FALSE on failure. */ function numfmt_set_symbol(NumberFormatter $formatter, int $symbol, string $value): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get a symbol value * @link https://php.net/manual/en/numberformatter.getsymbol.php * @param NumberFormatter $formatter * @param int $symbol

    * Symbol specifier, one of the * format symbol constants. *

    * @return string|false The symbol string or FALSE on error. */ #[Pure] function numfmt_get_symbol(NumberFormatter $formatter, int $symbol): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set formatter pattern * @link https://php.net/manual/en/numberformatter.setpattern.php * @param NumberFormatter $formatter * @param string $pattern

    * Pattern in syntax described in * ICU DecimalFormat * documentation. *

    * @return bool TRUE on success or FALSE on failure. */ function numfmt_set_pattern(NumberFormatter $formatter, string $pattern): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get formatter pattern * @link https://php.net/manual/en/numberformatter.getpattern.php * @param NumberFormatter $formatter * @return string|false Pattern string that is used by the formatter, or FALSE if an error happens. */ #[Pure] function numfmt_get_pattern(NumberFormatter $formatter): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get formatter locale * @link https://php.net/manual/en/numberformatter.getlocale.php * @param NumberFormatter $formatter * @param int $type

    * You can choose between valid and actual locale ( * Locale::VALID_LOCALE, * Locale::ACTUAL_LOCALE, * respectively). The default is the actual locale. *

    * @return string|false The locale name used to create the formatter. */ #[Pure] function numfmt_get_locale(NumberFormatter $formatter, int $type = 0): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get formatter's last error code. * @link https://php.net/manual/en/numberformatter.geterrorcode.php * @param NumberFormatter $formatter * @return int error code from last formatter call. */ #[Pure(true)] function numfmt_get_error_code(NumberFormatter $formatter): int {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get formatter's last error message. * @link https://php.net/manual/en/numberformatter.geterrormessage.php * @param NumberFormatter $formatter * @return string error message from last formatter call. */ #[Pure(true)] function numfmt_get_error_message(NumberFormatter $formatter): string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Normalizes the input provided and returns the normalized string * @link https://php.net/manual/en/normalizer.normalize.php * @param string $string

    The input string to normalize

    * @param int $form [optional]

    One of the normalization forms.

    * @return string|false The normalized string or FALSE if an error occurred. */ #[Pure] function normalizer_normalize(string $string, int $form = Normalizer::FORM_C): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Checks if the provided string is already in the specified normalization * form. * @link https://php.net/manual/en/normalizer.isnormalized.php * @param string $string

    The input string to normalize

    * @param int $form [optional]

    * One of the normalization forms. *

    * @return bool TRUE if normalized, FALSE otherwise or if there an error */ #[Pure] function normalizer_is_normalized(string $string, int $form = Normalizer::FORM_C): bool {} /** * Gets the default locale value from the intl global 'default_locale' * @link https://php.net/manual/en/function.locale-get-default.php * @return string a string with the current Locale. */ #[Pure] function locale_get_default(): string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set the default runtime Locale * @link https://php.net/manual/en/function.locale-set-default.php * @param string $locale

    * The new Locale name. A comprehensive list of the supported locales is * available at . *

    * @return bool TRUE on success or FALSE on failure. */ #[LanguageAware(['8.4' => 'true'], default: 'bool')] function locale_set_default(string $locale) {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Gets the primary language for the input locale * @link https://php.net/manual/en/locale.getprimarylanguage.php * @param string $locale

    * The locale to extract the primary language code from *

    * @return string|null The language code associated with the language or NULL in case of error. */ #[Pure] function locale_get_primary_language(string $locale): ?string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Gets the script for the input locale * @link https://php.net/manual/en/locale.getscript.php * @param string $locale

    * The locale to extract the script code from *

    * @return string|null The script subtag for the locale or NULL if not present */ #[Pure] function locale_get_script(string $locale): ?string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Gets the region for the input locale * @link https://php.net/manual/en/locale.getregion.php * @param string $locale

    * The locale to extract the region code from *

    * @return string|null The region subtag for the locale or NULL if not present */ #[Pure] function locale_get_region(string $locale): ?string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Gets the keywords for the input locale * @link https://php.net/manual/en/locale.getkeywords.php * @param string $locale

    * The locale to extract the keywords from *

    * @return array|false|null Associative array containing the keyword-value pairs for this locale */ #[Pure] function locale_get_keywords(string $locale): array|false|null {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns an appropriately localized display name for script of the input locale * @link https://php.net/manual/en/locale.getdisplayscript.php * @param string $locale

    * The locale to return a display script for *

    * @param string|null $displayLocale

    * Optional format locale to use to display the script name *

    * @return string|false Display name of the script for the $locale in the format appropriate for * $in_locale. */ #[Pure] function locale_get_display_script( string $locale, #[ElementAvailable(from: '5.3', to: '5.6')] ?string $displayLocale, #[ElementAvailable(from: '7.0')] ?string $displayLocale = null ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns an appropriately localized display name for region of the input locale * @link https://php.net/manual/en/locale.getdisplayregion.php * @param string $locale

    * The locale to return a display region for. *

    * @param string|null $displayLocale

    * Optional format locale to use to display the region name *

    * @return string|false display name of the region for the $locale in the format appropriate for * $in_locale. */ #[Pure] function locale_get_display_region( string $locale, #[ElementAvailable(from: '5.3', to: '5.6')] ?string $displayLocale, #[ElementAvailable(from: '7.0')] ?string $displayLocale = null ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns an appropriately localized display name for the input locale * @link https://php.net/manual/en/locale.getdisplayname.php * @param string $locale

    * The locale to return a display name for. *

    * @param string|null $displayLocale

    optional format locale

    * @return string|false Display name of the locale in the format appropriate for $in_locale. */ #[Pure] function locale_get_display_name( string $locale, #[ElementAvailable(from: '5.3', to: '5.6')] ?string $displayLocale, #[ElementAvailable(from: '7.0')] ?string $displayLocale = null ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns an appropriately localized display name for language of the inputlocale * @link https://php.net/manual/en/locale.getdisplaylanguage.php * @param string $locale

    * The locale to return a display language for *

    * @param string|null $displayLocale

    * Optional format locale to use to display the language name *

    * @return string|false display name of the language for the $locale in the format appropriate for * $in_locale. */ #[Pure] function locale_get_display_language( string $locale, #[ElementAvailable(from: '5.3', to: '5.6')] ?string $displayLocale, #[ElementAvailable(from: '7.0')] ?string $displayLocale = null ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns an appropriately localized display name for variants of the input locale * @link https://php.net/manual/en/locale.getdisplayvariant.php * @param string $locale

    * The locale to return a display variant for *

    * @param string|null $displayLocale

    * Optional format locale to use to display the variant name *

    * @return string|false Display name of the variant for the $locale in the format appropriate for * $in_locale. */ #[Pure] function locale_get_display_variant( string $locale, #[ElementAvailable(from: '5.3', to: '5.6')] ?string $displayLocale, #[ElementAvailable(from: '7.0')] ?string $displayLocale = null ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns a correctly ordered and delimited locale ID * @link https://php.net/manual/en/locale.composelocale.php * @param string[] $subtags

    * an array containing a list of key-value pairs, where the keys identify * the particular locale ID subtags, and the values are the associated * subtag values. *

    * The 'variant' and 'private' subtags can take maximum 15 values * whereas 'extlang' can take maximum 3 values.e.g. Variants are allowed * with the suffix ranging from 0-14. Hence the keys for the input array * can be variant0, variant1, ...,variant14. In the returned locale id, * the subtag is ordered by suffix resulting in variant0 followed by * variant1 followed by variant2 and so on. *

    *

    * The 'variant', 'private' and 'extlang' multiple values can be specified both * as array under specific key (e.g. 'variant') and as multiple numbered keys * (e.g. 'variant0', 'variant1', etc.). *

    *

    * @return string|false The corresponding locale identifier. */ #[Pure] function locale_compose(array $subtags): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns a key-value array of locale ID subtag elements. * @link https://php.net/manual/en/locale.parselocale.php * @param string $locale

    * The locale to extract the subtag array from. Note: The 'variant' and * 'private' subtags can take maximum 15 values whereas 'extlang' can take * maximum 3 values. *

    * @return string[]|null an array containing a list of key-value pairs, where the keys * identify the particular locale ID subtags, and the values are the * associated subtag values. The array will be ordered as the locale id * subtags e.g. in the locale id if variants are '-varX-varY-varZ' then the * returned array will have variant0=>varX , variant1=>varY , * variant2=>varZ */ #[Pure] function locale_parse(string $locale): ?array {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Gets the variants for the input locale * @link https://php.net/manual/en/locale.getallvariants.php * @param string $locale

    * The locale to extract the variants from *

    * @return array|null The array containing the list of all variants subtag for the locale * or NULL if not present */ #[Pure] function locale_get_all_variants(string $locale): ?array {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Checks if a language tag filter matches with locale * @link https://php.net/manual/en/locale.filtermatches.php * @param string $languageTag

    * The language tag to check *

    * @param string $locale

    * The language range to check against *

    * @param bool $canonicalize

    * If true, the arguments will be converted to canonical form before * matching. *

    * @return bool|null TRUE if $locale matches $langtag FALSE otherwise. */ #[Pure] function locale_filter_matches( string $languageTag, string $locale, #[ElementAvailable(from: '5.3', to: '5.6')] bool $canonicalize, #[ElementAvailable(from: '7.0')] bool $canonicalize = false ): ?bool {} /** * Canonicalize the locale string * @param string $locale * * @return null|string */ #[Pure] function locale_canonicalize(string $locale): ?string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Searches the language tag list for the best match to the language * @link https://php.net/manual/en/locale.lookup.php * @param string[] $languageTag

    * An array containing a list of language tags to compare to * locale. Maximum 100 items allowed. *

    * @param string $locale

    * The locale to use as the language range when matching. *

    * @param bool $canonicalize

    * If true, the arguments will be converted to canonical form before * matching. *

    * @param string|null $defaultLocale

    * The locale to use if no match is found. *

    * @return string|null The closest matching language tag or default value. */ #[Pure] function locale_lookup( array $languageTag, string $locale, #[ElementAvailable(from: '5.3', to: '5.6')] bool $canonicalize, #[ElementAvailable(from: '5.3', to: '5.6')] ?string $defaultLocale, #[ElementAvailable(from: '7.0')] bool $canonicalize = false, #[ElementAvailable(from: '7.0')] ?string $defaultLocale = null, ): ?string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Tries to find out best available locale based on HTTP "Accept-Language" header * @link https://php.net/manual/en/locale.acceptfromhttp.php * @param string $header

    * The string containing the "Accept-Language" header according to format in RFC 2616. *

    * @return string|false The corresponding locale identifier. */ #[Pure] function locale_accept_from_http(string $header): string|false {} /** * Constructs a new message formatter * @param string $locale * @param string $pattern * @return MessageFormatter|null */ #[Pure] function msgfmt_create(string $locale, string $pattern): ?MessageFormatter {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Format the message * @link https://php.net/manual/en/messageformatter.format.php * @param MessageFormatter $formatter * @param array $values

    * Arguments to insert into the format string *

    * @return string|false The formatted string, or FALSE if an error occurred */ #[Pure] function msgfmt_format(MessageFormatter $formatter, array $values): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Quick format message * @link https://php.net/manual/en/messageformatter.formatmessage.php * @param string $locale

    * The locale to use for formatting locale-dependent parts *

    * @param string $pattern

    * The pattern string to insert things into. * The pattern uses an 'apostrophe-friendly' syntax; it is run through * umsg_autoQuoteApostrophe * before being interpreted. *

    * @param array $values

    * The array of values to insert into the format string *

    * @return string|false The formatted pattern string or FALSE if an error occurred */ #[Pure] function msgfmt_format_message(string $locale, string $pattern, array $values): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Parse input string according to pattern * @link https://php.net/manual/en/messageformatter.parse.php * @param MessageFormatter $formatter * @param string $string

    * The string to parse *

    * @return array|false An array containing the items extracted, or FALSE on error */ #[Pure] function msgfmt_parse(MessageFormatter $formatter, string $string): array|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Quick parse input string * @link https://php.net/manual/en/messageformatter.parsemessage.php * @param string $locale

    * The locale to use for parsing locale-dependent parts *

    * @param string $pattern

    * The pattern with which to parse the value. *

    * @param string $message

    * The string to parse, conforming to the pattern. *

    * @return array|false An array containing items extracted, or FALSE on error */ #[Pure] function msgfmt_parse_message(string $locale, string $pattern, string $message): array|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set the pattern used by the formatter * @link https://php.net/manual/en/messageformatter.setpattern.php * @param MessageFormatter $formatter * @param string $pattern

    * The pattern string to use in this message formatter. * The pattern uses an 'apostrophe-friendly' syntax; it is run through * umsg_autoQuoteApostrophe * before being interpreted. *

    * @return bool TRUE on success or FALSE on failure. */ function msgfmt_set_pattern(MessageFormatter $formatter, string $pattern): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the pattern used by the formatter * @link https://php.net/manual/en/messageformatter.getpattern.php * @param MessageFormatter $formatter * @return string|false The pattern string for this message formatter */ #[Pure] function msgfmt_get_pattern(MessageFormatter $formatter): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the locale for which the formatter was created. * @link https://php.net/manual/en/messageformatter.getlocale.php * @param MessageFormatter $formatter * @return string The locale name */ #[Pure] function msgfmt_get_locale(MessageFormatter $formatter): string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the error code from last operation * @link https://php.net/manual/en/messageformatter.geterrorcode.php * @param MessageFormatter $formatter * @return int The error code, one of UErrorCode values. Initial value is U_ZERO_ERROR. */ #[Pure(true)] function msgfmt_get_error_code(MessageFormatter $formatter): int {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the error text from the last operation * @link https://php.net/manual/en/messageformatter.geterrormessage.php * @param MessageFormatter $formatter * @return string Description of the last error. */ #[Pure(true)] function msgfmt_get_error_message(MessageFormatter $formatter): string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Create a date formatter * @link https://php.net/manual/en/intldateformatter.create.php * @param string|null $locale

    * Locale to use when formatting or parsing. *

    * @param int $dateType

    * Date type to use (none, * short, medium, * long, full). * This is one of the * IntlDateFormatter constants. *

    * @param int $timeType

    * Time type to use (none, * short, medium, * long, full). * This is one of the * IntlDateFormatter constants. *

    * @param string|null $timezone [optional]

    * Time zone ID, default is system default. *

    * @param IntlCalendar|int|null $calendar [optional]

    * Calendar to use for formatting or parsing; default is Gregorian. * This is one of the * IntlDateFormatter calendar constants. *

    * @param string|null $pattern [optional]

    * Optional pattern to use when formatting or parsing. * Possible patterns are documented at http://userguide.icu-project.org/formatparse/datetime. *

    * @return IntlDateFormatter|null */ #[Pure] function datefmt_create( ?string $locale, #[ElementAvailable(from: '5.3', to: '8.0')] int $dateType, #[ElementAvailable(from: '8.1')] int $dateType = 0, #[ElementAvailable(from: '5.3', to: '8.0')] int $timeType, #[ElementAvailable(from: '8.1')] int $timeType = 0, $timezone = null, IntlCalendar|int|null $calendar = null, #[LanguageAware(['8.0' => 'string|null'], default: 'string')] $pattern = null ): ?IntlDateFormatter {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the datetype used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.getdatetype.php * @param IntlDateFormatter $formatter * @return int|false The current date type value of the formatter. */ #[Pure] function datefmt_get_datetype(IntlDateFormatter $formatter): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the timetype used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.gettimetype.php * @param IntlDateFormatter $formatter * @return int|false The current date type value of the formatter. */ #[Pure] function datefmt_get_timetype(IntlDateFormatter $formatter): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the calendar type used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.getcalendar.php * @param IntlDateFormatter $formatter * @return int|false The calendar being used by the formatter. */ #[Pure] function datefmt_get_calendar(IntlDateFormatter $formatter): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * sets the calendar used to the appropriate calendar, which must be * @link https://php.net/manual/en/intldateformatter.setcalendar.php * @param IntlDateFormatter $formatter $mf * @param IntlCalendar|int|null $calendar

    * The calendar to use. * Default is IntlDateFormatter::GREGORIAN. *

    * @return bool TRUE on success or FALSE on failure. */ function datefmt_set_calendar(IntlDateFormatter $formatter, IntlCalendar|int|null $calendar): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the locale used by formatter * @link https://php.net/manual/en/intldateformatter.getlocale.php * @param IntlDateFormatter $formatter * @param int $type [optional] * @return string|false the locale of this formatter or 'false' if error */ #[Pure] function datefmt_get_locale( IntlDateFormatter $formatter, #[ElementAvailable(from: '8.0')] int $type = ULOC_ACTUAL_LOCALE ): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the timezone-id used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.gettimezoneid.php * @param IntlDateFormatter $formatter * @return string|false ID string for the time zone used by this formatter. */ #[Pure] function datefmt_get_timezone_id(IntlDateFormatter $formatter): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 3.0.0)
    * Get copy of formatter's calendar object * @link https://secure.php.net/manual/en/intldateformatter.getcalendarobject.php * @param IntlDateFormatter $formatter * @return IntlCalendar|false|null A copy of the internal calendar object used by this formatter. */ #[Pure] function datefmt_get_calendar_object(IntlDateFormatter $formatter): IntlCalendar|false|null {} /** * (PHP 5 >= 5.5.0, PECL intl >= 3.0.0)
    * Get formatter's timezone * @link https://secure.php.net/manual/en/intldateformatter.gettimezone.php * @param IntlDateFormatter $formatter * @return IntlTimeZone|false The associated IntlTimeZone object or FALSE on failure. */ #[Pure] function datefmt_get_timezone(IntlDateFormatter $formatter): IntlTimeZone|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Sets the time zone to use * @link https://php.net/manual/en/intldateformatter.settimezoneid.php * @param MessageFormatter $mf * @param string $zone

    * The time zone ID string of the time zone to use. * If NULL or the empty string, the default time zone for the runtime is used. *

    * @return bool TRUE on success or FALSE on failure. * @removed 7.0 * @see datefmt_set_timezone() */ #[Deprecated(replacement: "datefmt_set_timezone(%parametersList%)", since: "5.5")] function datefmt_set_timezone_id(MessageFormatter $mf, $zone) {} /** * (PHP 5 >= 5.5.0, PECL intl >= 3.0.0)
    * Sets formatter's timezone * @link https://php.net/manual/en/intldateformatter.settimezone.php * @param IntlDateFormatter $formatter * @param IntlTimeZone|DateTimeZone|string|null $timezone

    * The timezone to use for this formatter. This can be specified in the * following forms: *

      *
    • *

      * NULL, in which case the default timezone will be used, as specified in * the ini setting {@link "https://secure.php.net/manual/en/datetime.configuration.php#ini.date.timezone" date.timezone} or * through the function {@link "https://secure.php.net/manual/en/function.date-default-timezone-set.php" date_default_timezone_set()} and as * returned by {@link "https://secure.php.net/manual/en/function.date-default-timezone-get.php" date_default_timezone_get()}. *

      *
    • *
    • *

      * An {@link "https://secure.php.net/manual/en/class.intltimezone.php" IntlTimeZone}, which will be used directly. *

      *
    • *
    • *

      * A {@link "https://secure.php.net/manual/en/class.datetimezone.php" DateTimeZone}. Its identifier will be extracted * and an ICU timezone object will be created; the timezone will be backed * by ICU's database, not PHP's. *

      *
    • *
    • *

      * A {@link "https://secure.php.net/manual/en/language.types.string.php" string}, which should be a valid ICU timezone identifier. * See IntlTimeZone::createTimeZoneIDEnumeration(). Raw offsets such as "GMT+08:30" are also accepted. *

      *
    • *
    *

    * @return bool|null TRUE on success or FALSE on failure. */ #[LanguageAware(['8.3' => 'bool'], default: 'bool|null')] function datefmt_set_timezone(IntlDateFormatter $formatter, $timezone) {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the pattern used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.getpattern.php * @param IntlDateFormatter $formatter * @return string|false The pattern string being used to format/parse. */ #[Pure] function datefmt_get_pattern(IntlDateFormatter $formatter): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set the pattern used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.setpattern.php * @param IntlDateFormatter $formatter * @param string $pattern

    * New pattern string to use. * Possible patterns are documented at http://userguide.icu-project.org/formatparse/datetime. *

    * @return bool TRUE on success or FALSE on failure. * Bad formatstrings are usually the cause of the failure. */ function datefmt_set_pattern(IntlDateFormatter $formatter, string $pattern): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the lenient used for the IntlDateFormatter * @link https://php.net/manual/en/intldateformatter.islenient.php * @param IntlDateFormatter $formatter * @return bool TRUE if parser is lenient, FALSE if parser is strict. By default the parser is lenient. */ #[Pure] function datefmt_is_lenient(IntlDateFormatter $formatter): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Set the leniency of the parser * @link https://php.net/manual/en/intldateformatter.setlenient.php * @param IntlDateFormatter $formatter * @param bool $lenient

    * Sets whether the parser is lenient or not, default is TRUE (lenient). *

    * @return void */ function datefmt_set_lenient( IntlDateFormatter $formatter, #[ElementAvailable(from: '8.0')] bool $lenient ): void {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Format the date/time value as a string * @link https://php.net/manual/en/intldateformatter.format.php * @param IntlDateFormatter $formatter * @param object|array|string|int|float $datetime

    * Value to format. This may be a DateTime object, * an integer representing a Unix timestamp value (seconds * since epoch, UTC) or an array in the format output by * localtime. *

    * @return string|false The formatted string or, if an error occurred, FALSE. */ #[Pure] function datefmt_format( #[LanguageAware(['8.0' => 'IntlDateFormatter'], default: '')] #[ElementAvailable(from: '5.3', to: '7.4')] $formatter = null, #[LanguageAware(['8.0' => 'IntlDateFormatter'], default: '')] #[ElementAvailable(from: '8.0')] $formatter, #[ElementAvailable(from: '5.3', to: '7.4')] $datetime = null, #[ElementAvailable(from: '8.0')] $datetime ): string|false {} /** * (PHP 5 >= 5.5.0, PECL intl >= 3.0.0)
    * Formats an object * @link https://secure.php.net/manual/en/intldateformatter.formatobject.php * @param IntlCalendar|DateTimeInterface $datetime

    * An object of type IntlCalendar or DateTime. The timezone information in the object will be used. *

    * @param array|int|string|null $format [optional]

    * How to format the date/time. This can either be an {https://secure.php.net/manual/en/language.types.array.php array} with * two elements (first the date style, then the time style, these being one * of the constants IntlDateFormatter::NONE, * IntlDateFormatter::SHORT, * IntlDateFormatter::MEDIUM, * IntlDateFormatter::LONG, * IntlDateFormatter::FULL), a long with * the value of one of these constants (in which case it will be used both * for the time and the date) or a {@link https://secure.php.net/manual/en/language.types.string.php} with the format * described in {@link http://www.icu-project.org/apiref/icu4c/classSimpleDateFormat.html#details the ICU documentation} * documentation. If NULL, the default style will be used. *

    * @param string|null $locale [optional]

    * The locale to use, or NULL to use the default one.

    * @return string|false The formatted string or, if an error occurred, FALSE. */ #[Pure] function datefmt_format_object($datetime, $format = null, ?string $locale = null): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Parse string to a timestamp value * @link https://php.net/manual/en/intldateformatter.parse.php * @param IntlDateFormatter $formatter * @param string $string

    * string to convert to a time *

    * @param int &$offset [optional]

    * Position at which to start the parsing in $value (zero-based). * If no error occurs before $value is consumed, $parse_pos will contain -1 * otherwise it will contain the position at which parsing ended (and the error occurred). * This variable will contain the end position if the parse fails. * If $parse_pos > strlen($value), the parse fails immediately. *

    * @return int|float|false timestamp parsed value */ function datefmt_parse(IntlDateFormatter $formatter, string $string, &$offset = null): int|float|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Parse string to a field-based time value * @link https://php.net/manual/en/intldateformatter.localtime.php * @param IntlDateFormatter $formatter * @param string $string

    * string to convert to a time *

    * @param int &$offset [optional]

    * Position at which to start the parsing in $value (zero-based). * If no error occurs before $value is consumed, $parse_pos will contain -1 * otherwise it will contain the position at which parsing ended . * If $parse_pos > strlen($value), the parse fails immediately. *

    * @return array|false Localtime compatible array of integers : contains 24 hour clock value in tm_hour field */ function datefmt_localtime(IntlDateFormatter $formatter, string $string, &$offset = null): array|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the error code from last operation * @link https://php.net/manual/en/intldateformatter.geterrorcode.php * @param IntlDateFormatter $formatter * @return int The error code, one of UErrorCode values. Initial value is U_ZERO_ERROR. */ #[Pure(true)] function datefmt_get_error_code(IntlDateFormatter $formatter): int {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the error text from the last operation. * @link https://php.net/manual/en/intldateformatter.geterrormessage.php * @param IntlDateFormatter $formatter * @return string Description of the last error. */ #[Pure(true)] function datefmt_get_error_message(IntlDateFormatter $formatter): string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get string length in grapheme units * @link https://php.net/manual/en/function.grapheme-strlen.php * @param string $string

    * The string being measured for length. It must be a valid UTF-8 string. *

    * @return int|false|null The length of the string on success, and 0 if the string is empty. */ #[Pure] function grapheme_strlen(string $string): int|false|null {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Find position (in grapheme units) of first occurrence of a string * @link https://php.net/manual/en/function.grapheme-strpos.php * @param string $haystack

    * The string to look in. Must be valid UTF-8. *

    * @param string $needle

    * The string to look for. Must be valid UTF-8. *

    * @param int $offset [optional]

    * The optional $offset parameter allows you to specify where in $haystack to * start searching as an offset in grapheme units (not bytes or characters). * The position returned is still relative to the beginning of haystack * regardless of the value of $offset. *

    * @return int|false the position as an integer. If needle is not found, strpos() will return boolean FALSE. */ #[Pure] function grapheme_strpos(string $haystack, string $needle, int $offset = 0): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Find position (in grapheme units) of first occurrence of a case-insensitive string * @link https://php.net/manual/en/function.grapheme-stripos.php * @param string $haystack

    * The string to look in. Must be valid UTF-8. *

    * @param string $needle

    * The string to look for. Must be valid UTF-8. *

    * @param int $offset [optional]

    * The optional $offset parameter allows you to specify where in haystack to * start searching as an offset in grapheme units (not bytes or characters). * The position returned is still relative to the beginning of haystack * regardless of the value of $offset. *

    * @return int|false the position as an integer. If needle is not found, grapheme_stripos() will return boolean FALSE. */ #[Pure] function grapheme_stripos(string $haystack, string $needle, int $offset = 0): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Find position (in grapheme units) of last occurrence of a string * @link https://php.net/manual/en/function.grapheme-strrpos.php * @param string $haystack

    * The string to look in. Must be valid UTF-8. *

    * @param string $needle

    * The string to look for. Must be valid UTF-8. *

    * @param int $offset [optional]

    * The optional $offset parameter allows you to specify where in $haystack to * start searching as an offset in grapheme units (not bytes or characters). * The position returned is still relative to the beginning of haystack * regardless of the value of $offset. *

    * @return int|false the position as an integer. If needle is not found, grapheme_strrpos() will return boolean FALSE. */ #[Pure] function grapheme_strrpos(string $haystack, string $needle, int $offset = 0): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Find position (in grapheme units) of last occurrence of a case-insensitive string * @link https://php.net/manual/en/function.grapheme-strripos.php * @param string $haystack

    * The string to look in. Must be valid UTF-8. *

    * @param string $needle

    * The string to look for. Must be valid UTF-8. *

    * @param int $offset [optional]

    * The optional $offset parameter allows you to specify where in $haystack to * start searching as an offset in grapheme units (not bytes or characters). * The position returned is still relative to the beginning of haystack * regardless of the value of $offset. *

    * @return int|false the position as an integer. If needle is not found, grapheme_strripos() will return boolean FALSE. */ #[Pure] function grapheme_strripos(string $haystack, string $needle, int $offset = 0): int|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Return part of a string * @link https://php.net/manual/en/function.grapheme-substr.php * @param string $string

    * The input string. Must be valid UTF-8. *

    * @param int $offset

    * Start position in default grapheme units. * If $start is non-negative, the returned string will start at the * $start'th position in $string, counting from zero. If $start is negative, * the returned string will start at the $start'th grapheme unit from the * end of string. *

    * @param int|null $length [optional]

    * Length in grapheme units. * If $length is given and is positive, the string returned will contain * at most $length grapheme units beginning from $start (depending on the * length of string). If $length is given and is negative, then * that many grapheme units will be omitted from the end of string (after the * start position has been calculated when a start is negative). If $start * denotes a position beyond this truncation, FALSE will be returned. *

    * @return string|false

    the extracted part of $string,
    * or FALSE if $length is negative and $start denotes a position beyond truncation $length,
    * or also FALSE if $start denotes a position beyond $string length

    */ #[Pure] function grapheme_substr(string $string, int $offset, ?int $length = null): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns part of haystack string from the first occurrence of needle to the end of haystack. * @link https://php.net/manual/en/function.grapheme-strstr.php * @param string $haystack

    * The input string. Must be valid UTF-8. *

    * @param string $needle

    * The string to look for. Must be valid UTF-8. *

    * @param bool $beforeNeedle [optional]

    * If TRUE, grapheme_strstr() returns the part of the * haystack before the first occurrence of the needle (excluding the needle). *

    * @return string|false the portion of string, or FALSE if needle is not found. */ #[Pure] function grapheme_strstr(string $haystack, string $needle, bool $beforeNeedle = false): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack. * @link https://php.net/manual/en/function.grapheme-stristr.php * @param string $haystack

    * The input string. Must be valid UTF-8. *

    * @param string $needle

    * The string to look for. Must be valid UTF-8. *

    * @param bool $beforeNeedle [optional]

    * If TRUE, grapheme_strstr() returns the part of the * haystack before the first occurrence of the needle (excluding needle). *

    * @return string|false the portion of $haystack, or FALSE if $needle is not found. */ #[Pure] function grapheme_stristr(string $haystack, string $needle, bool $beforeNeedle = false): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Function to extract a sequence of default grapheme clusters from a text buffer, which must be encoded in UTF-8. * @link https://php.net/manual/en/function.grapheme-extract.php * @param string $haystack

    * String to search. *

    * @param int $size

    * Maximum number items - based on the $extract_type - to return. *

    * @param int $type

    * Defines the type of units referred to by the $size parameter: *

    *

    * GRAPHEME_EXTR_COUNT (default) - $size is the number of default * grapheme clusters to extract. * GRAPHEME_EXTR_MAXBYTES - $size is the maximum number of bytes * returned. * GRAPHEME_EXTR_MAXCHARS - $size is the maximum number of UTF-8 * characters returned. *

    * @param int $offset [optional]

    * Starting position in $haystack in bytes - if given, it must be zero or a * positive value that is less than or equal to the length of $haystack in * bytes. If $start does not point to the first byte of a UTF-8 * character, the start position is moved to the next character boundary. *

    * @param int &$next [optional]

    * Reference to a value that will be set to the next starting position. * When the call returns, this may point to the first byte position past the end of the string. *

    * @return string|false A string starting at offset $start and ending on a default grapheme cluster * boundary that conforms to the $size and $extract_type specified. */ function grapheme_extract(string $haystack, int $size, int $type = 0, int $offset = 0, &$next = null): string|false {} /** * (PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.2, PHP 7, PECL idn >= 0.1)
    * Convert domain name to IDNA ASCII form. * @link https://php.net/manual/en/function.idn-to-ascii.php * @param string $domain

    * Domain to convert. In PHP 5 must be UTF-8 encoded. * If e.g. an ISO-8859-1 (aka Western Europe latin1) encoded string is * passed it will be converted into an ACE encoded "xn--" string. * It will not be the one you expected though! *

    * @param int $flags [optional]

    * Conversion options - combination of IDNA_* constants (except IDNA_ERROR_* constants). *

    * @param int $variant [optional]

    * Either INTL_IDNA_VARIANT_2003 for IDNA 2003 or INTL_IDNA_VARIANT_UTS46 for UTS #46. *

    * @param array &$idna_info [optional]

    * This parameter can be used only if INTL_IDNA_VARIANT_UTS46 was used for variant. * In that case, it will be filled with an array with the keys 'result', * the possibly illegal result of the transformation, 'isTransitionalDifferent', * a boolean indicating whether the usage of the transitional mechanisms of UTS #46 * either has or would have changed the result and 'errors', * which is an int representing a bitset of the error constants IDNA_ERROR_*. *

    * @return string|false The ACE encoded version of the domain name or FALSE on failure. */ function idn_to_ascii(string $domain, int $flags = 0, int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info): string|false {} /** * (PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.2, PHP 7, PECL idn >= 0.1)
    * Convert domain name from IDNA ASCII to Unicode. * @link https://php.net/manual/en/function.idn-to-utf8.php * @param string $domain

    * Domain to convert in IDNA ASCII-compatible format. * The ASCII encoded domain name. Looks like "xn--..." if the it originally contained non-ASCII characters. *

    * @param int $flags [optional]

    * Conversion options - combination of IDNA_* constants (except IDNA_ERROR_* constants). *

    * @param int $variant [optional]

    * Either INTL_IDNA_VARIANT_2003 for IDNA 2003 or INTL_IDNA_VARIANT_UTS46 for UTS #46. *

    * @param array &$idna_info [optional]

    * This parameter can be used only if INTL_IDNA_VARIANT_UTS46 was used for variant. * In that case, it will be filled with an array with the keys 'result', * the possibly illegal result of the transformation, 'isTransitionalDifferent', * a boolean indicating whether the usage of the transitional mechanisms of UTS #46 * either has or would have changed the result and 'errors', * which is an int representing a bitset of the error constants IDNA_ERROR_*. *

    * @return string|false The UTF-8 encoded version of the domain name or FALSE on failure. * RFC 3490 4.2 states though "ToUnicode never fails. If any step fails, then the original input * sequence is returned immediately in that step." */ function idn_to_utf8(string $domain, int $flags = 0, int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Create a new IntlCalendar * @link https://secure.php.net/manual/en/intlcalendar.createinstance.php * @param IntlTimeZone|DateTimeZone|string|null $timezone [optional]

    * The timezone to use. *

    * *
      *
    • *

      * NULL, in which case the default timezone will be used, as specified in * the ini setting {@link https://secure.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone} or * through the function {@link https://secure.php.net/manual/en/function.date-default-timezone-set.php date_default_timezone_set()} and as * returned by {@link https://secure.php.net/manual/en/function.date-default-timezone-get.php date_default_timezone_get()}. *

      *
    • *
    • *

      * An {@link https://secure.php.net/manual/en/class.intltimezone.php IntlTimeZone}, which will be used directly. *

      *
    • *
    • *

      * A {@link https://secure.php.net/manual/en/class.datetimezone.php DateTimeZone}. Its identifier will be extracted * and an ICU timezone object will be created; the timezone will be backed * by ICU's database, not PHP's. *

      *
    • *
    • *

      * A {@link https://secure.php.net/manual/en/language.types.string.php string}, which should be a valid ICU timezone identifier. * See IntlTimeZone::createTimeZoneIDEnumeration(). Raw * offsets such as "GMT+08:30" are also accepted. *

      *
    • *
    *

    * @param string|null $locale [optional]

    * A locale to use or NULL to use {@link https://secure.php.net/manual/en/intl.configuration.php#ini.intl.default-locale the default locale}. *

    * @return IntlCalendar|null * The created {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} instance or NULL on * failure. * @since 5.5 */ #[Pure] function intlcal_create_instance($timezone = null, ?string $locale = null): ?IntlCalendar {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get set of locale keyword values * @param string $keyword

    * The locale keyword for which relevant values are to be queried. Only * 'calendar' is supported. *

    * @param string $locale

    * The locale onto which the keyword/value pair are to be appended. *

    * @param bool $onlyCommon *

    * Whether to show only the values commonly used for the specified locale. *

    * @return IntlIterator|false An iterator that yields strings with the locale keyword values or FALSE on failure. * @since 5.5 */ #[Pure] function intlcal_get_keyword_values_for_locale(string $keyword, string $locale, bool $onlyCommon): IntlIterator|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get number representing the current time * @link https://secure.php.net/manual/en/intlcalendar.getnow.php * @return float A float representing a number of milliseconds since the epoch, not counting leap seconds. * @since 5.5 */ #[Pure(true)] function intlcal_get_now(): float {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get array of locales for which there is data * @link https://secure.php.net/manual/en/intlcalendar.getavailablelocales.php * @return string[] An array of strings, one for which locale. * @since 5.5 */ #[Pure] function intlcal_get_available_locales(): array {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the value for a field * @link https://secure.php.net/manual/en/intlcalendar.get.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int An integer with the value of the time field. * @since 5.5 */ #[Pure] function intl_get($calendar, $field) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get time currently represented by the object * @param IntlCalendar $calendar

    The calendar whose time will be checked against this object's time.

    * @return float * A {@link https://secure.php.net/manual/en/language.types.float.php float} representing the number of milliseconds elapsed since the * reference time (1 Jan 1970 00:00:00 UTC). * @since 5.5 */ #[Pure] #[LanguageAware(['8.0' => 'float|false'], default: 'float')] function intlcal_get_time(IntlCalendar $calendar) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set the calendar time in milliseconds since the epoch * @link https://secure.php.net/manual/en/intlcalendar.settime.php * @param IntlCalendar $calendar

    * The IntlCalendar resource. *

    * @param float $timestamp

    * An instant represented by the number of number of milliseconds between * such instant and the epoch, ignoring leap seconds. *

    * @return bool * Returns TRUE on success and FALSE on failure. * @since 5.5 */ function intlcal_set_time(IntlCalendar $calendar, float $timestamp): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Add a (signed) amount of time to a field * @link https://secure.php.net/manual/en/intlcalendar.add.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. * These are integer values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @param int $value

    The signed amount to add to the current field. If the amount is positive, the instant will be moved forward; if it is negative, the instant wil be moved into the past. The unit is implicit to the field type. * For instance, hours for IntlCalendar::FIELD_HOUR_OF_DAY.

    * @return bool Returns TRUE on success or FALSE on failure. * @since 5.5 */ function intlcal_add(IntlCalendar $calendar, int $field, int $value): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set the timezone used by this calendar * @link https://secure.php.net/manual/en/intlcalendar.settimezone.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param IntlTimeZone|DateTimeZone|string|null $timezone

    * The new timezone to be used by this calendar. It can be specified in the * following ways: * *

      *
    • *

      * NULL, in which case the default timezone will be used, as specified in * the ini setting {@link https://secure.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone} or * through the function {@link https://secure.php.net/manual/en/function.date-default-timezone-set.php date_default_timezone_set()} and as * returned by {@link https://secure.php.net/manual/en/function.date-default-timezone-get.php date_default_timezone_get()}. *

      *
    • *
    • *

      * An {@link https://secure.php.net/manual/en/class.intltimezone.php IntlTimeZone}, which will be used directly. *

      *
    • *
    • *

      * A {@link https://secure.php.net/manual/en/class.datetimezone.php DateTimeZone}. Its identifier will be extracted * and an ICU timezone object will be created; the timezone will be backed * by ICU's database, not PHP's. *

      *
    • *
    • *

      * A {@link https://secure.php.net/manual/en/language.types.string.php string}, which should be a valid ICU timezone identifier. * See IntlTimeZone::createTimeZoneIDEnumeration(). Raw * offsets such as "GMT+08:30" are also accepted. *

      *
    • *
    * @return bool Returns TRUE on success and FALSE on failure. * @since 5.5 */ function intlcal_set_time_zone(IntlCalendar $calendar, $timezone): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether this object's time is after that of the passed object * https://secure.php.net/manual/en/intlcalendar.after.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param IntlCalendar $other

    The calendar whose time will be checked against this object's time.

    * @return bool * Returns TRUE if this object's current time is after that of the * calendar argument's time. Returns FALSE otherwise. * Also returns FALSE on failure. You can use {@link https://secure.php.net/manual/en/intl.configuration.php#ini.intl.use-exceptions exceptions} or * {@link https://secure.php.net/manual/en/function.intl-get-error-code.php intl_get_error_code()} to detect error conditions. * @since 5.5 */ #[Pure] function intlcal_after(IntlCalendar $calendar, IntlCalendar $other): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether this object's time is before that of the passed object * @link https://secure.php.net/manual/en/intlcalendar.before.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param IntlCalendar $other

    The calendar whose time will be checked against this object's time.

    * @return bool *

    * Returns TRUE if this object's current time is before that of the * calendar argument's time. Returns FALSE otherwise. * Also returns FALSE on failure. You can use {@link https://secure.php.net/manual/en/intl.configuration.php#ini.intl.use-exceptions exceptions} or * {@link https://secure.php.net/manual/en/function.intl-get-error-code.php intl_get_error_code()} to detect error conditions. *

    * @since 5.5 */ #[Pure] function intlcal_before(IntlCalendar $calendar, IntlCalendar $other): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set a time field or several common fields at once * @link https://secure.php.net/manual/en/intlcalendar.set.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $year

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @param int $month

    * The new value for IntlCalendar::FIELD_MONTH. *

    * @param int $dayOfMonth [optional]

    * The new value for IntlCalendar::FIELD_DAY_OF_MONTH. * The month sequence is zero-based, i.e., January is represented by 0, * February by 1, ..., December is 11 and Undecember (if the calendar has * it) is 12. *

    * @param int $hour [optional] *

    * The new value for IntlCalendar::FIELD_HOUR_OF_DAY. *

    * @param int $minute [optional] *

    * The new value for IntlCalendar::FIELD_MINUTE. *

    * @param int $second [optional]

    * The new value for IntlCalendar::FIELD_SECOND. *

    * @return bool Returns TRUE on success and FALSE on failure. * @since 5.5 */ #[LanguageAware(['8.3' => 'true'], default: 'bool')] #[Deprecated( reason: 'use IntlCalendar::set(), IntlCalendar::setDate(), or IntlCalendar::setDateTime() instead', since: '8.4' )] function intlcal_set(IntlCalendar $calendar, int $year, int $month, int $dayOfMonth, int $hour, int $minute, int $second) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Add value to field without carrying into more significant fields * @link https://secure.php.net/manual/en/intlcalendar.roll.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $field

    One of the * {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time * {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. * These are integer values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @param int|bool $value

    * The (signed) amount to add to the field, TRUE for rolling up (adding * 1), or FALSE for rolling down (subtracting * 1). *

    * @return bool Returns TRUE on success or FALSE on failure. * @since 5.5 */ function intlcal_roll( IntlCalendar $calendar, int $field, #[ElementAvailable(from: '5.3', to: '7.4')] $value = null, #[ElementAvailable(from: '8.0')] $value ): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Clear a field or all fields * @link https://secure.php.net/manual/en/intlcalendar.clear.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int|null $field [optional]

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return bool Returns TRUE on success or FALSE on failure. Failure can only occur is invalid arguments are provided. * @since 5.5 */ #[LanguageAware(['8.3' => 'true'], default: 'bool')] function intlcal_clear(IntlCalendar $calendar, ?int $field = null): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Calculate difference between given time and this object's time * @link https://secure.php.net/manual/en/intlcalendar.fielddifference.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param float $timestamp

    * The time against which to compare the quantity represented by the * field. For the result to be positive, the time * given for this parameter must be ahead of the time of the object the * method is being invoked on. *

    * @param int $field

    * The field that represents the quantity being compared. *

    * *

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int Returns a (signed) difference of time in the unit associated with the * specified field or FALSE on failure. * @since 5.5 */ #[Pure] #[LanguageAware(['8.0' => 'int|false'], default: 'int')] function intlcal_field_difference(IntlCalendar $calendar, float $timestamp, int $field) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * The maximum value for a field, considering the object's current time * @link https://secure.php.net/manual/en/intlcalendar.getactualmaximum.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int * An {@link https://secure.php.net/manual/en/language.types.integer.php int} representing the maximum value in the units associated * with the given field or FALSE on failure. * @since 5.5 */ #[Pure] #[LanguageAware(['8.0' => 'int|false'], default: 'int')] function intlcal_get_actual_maximum(IntlCalendar $calendar, int $field) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * The minimum value for a field, considering the object's current time * @link https://secure.php.net/manual/en/intlcalendar.getactualminimum.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. * These are integer values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int * An {@link https://secure.php.net/manual/en/language.types.integer.php int} representing the minimum value in the field's * unit or FALSE on failure. * @since 5.5 */ #[Pure] #[LanguageAware(['8.0' => 'int|false'], default: 'int')] function intlcal_get_actual_minimum(IntlCalendar $calendar, int $field) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * @link https://secure.php.net/manual/en/intlcalendar.getdayofweektype.php * Tell whether a day is a weekday, weekend or a day that has a transition between the two * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $dayOfWeek

    * One of the constants IntlCalendar::DOW_SUNDAY, * IntlCalendar::DOW_MONDAY, ..., * IntlCalendar::DOW_SATURDAY. *

    * @return int * Returns one of the constants * IntlCalendar::DOW_TYPE_WEEKDAY, * IntlCalendar::DOW_TYPE_WEEKEND, * IntlCalendar::DOW_TYPE_WEEKEND_OFFSET or * IntlCalendar::DOW_TYPE_WEEKEND_CEASE or FALSE on failure. * @since 5.5 */ #[Pure] #[LanguageAware(['8.0' => 'int|false'], default: 'int')] function intlcal_get_day_of_week_type(IntlCalendar $calendar, int $dayOfWeek) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the first day of the week for the calendar's locale * @link https://secure.php.net/manual/en/intlcalendar.getfirstdayofweek.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @return int * One of the constants IntlCalendar::DOW_SUNDAY, * IntlCalendar::DOW_MONDAY, ..., * IntlCalendar::DOW_SATURDAY or FALSE on failure. * @since 5.5 */ #[Pure] #[LanguageAware(['8.0' => 'int|false'], default: 'int')] function intlcal_get_first_day_of_week(IntlCalendar $calendar) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the largest local minimum value for a field * @link https://secure.php.net/manual/en/intlcalendar.getgreatestminimum.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT.

    * @return int * An {@link https://secure.php.net/manual/en/language.types.integer.php int} representing a field value, in the field's * unit, or FALSE on failure. * @since 5.5 */ #[Pure] function intlcal_greates_minimum($calendar, $field) {} /** * (PHP >= 5.5.0, PECL intl >= 3.0.0a1)
    * Gets the value for a specific field. * @link https://www.php.net/manual/en/intlcalendar.get.php * @param IntlCalendar $calendar

    * The IntlCalendar resource. *

    * @param int $field

    * One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT. *

    * @return int An integer with the value of the time field. */ #[Pure] #[LanguageAware(['8.0' => 'int|false'], default: 'int')] function intlcal_get(IntlCalendar $calendar, int $field) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the smallest local maximum for a field * @link https://secure.php.net/manual/en/intlcalendar.getleastmaximum.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int *

    An {@link https://secure.php.net/manual/en/language.types.integer.ph int} representing a field value in the field's * unit or FALSE on failure. *

    * @since 5.5 */ #[Pure] #[LanguageAware(['8.0' => 'int|false'], default: 'int')] function intlcal_get_least_maximum(IntlCalendar $calendar, int $field) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the largest local minimum value for a field * @link https://secure.php.net/manual/en/intlcalendar.getgreatestminimum.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT.

    * @return int * An {@link https://secure.php.net/manual/en/language.types.integer.php int} representing a field value, in the field's * unit, or FALSE on failure. * @since 5.5 */ #[Pure] #[LanguageAware(['8.0' => 'int|false'], default: 'int')] function intlcal_get_greatest_minimum(IntlCalendar $calendar, int $field) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the locale associated with the object * @link https://secure.php.net/manual/en/intlcalendar.getlocale.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $type

    * Whether to fetch the actual locale (the locale from which the calendar * data originates, with Locale::ACTUAL_LOCALE) or the * valid locale, i.e., the most specific locale supported by ICU relatively * to the requested locale – see Locale::VALID_LOCALE. * From the most general to the most specific, the locales are ordered in * this fashion – actual locale, valid locale, requested locale. *

    * @return string * A locale string or FALSE on failure. * @since 5.5 */ #[Pure] #[LanguageAware(['8.0' => 'string|false'], default: 'string')] function intlcal_get_locale(IntlCalendar $calendar, int $type) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the global maximum value for a field * @link https://secure.php.net/manual/en/intlcalendar.getmaximum.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int|false * @since 5.5 */ #[Pure] function intcal_get_maximum($calendar, $field) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * @link https://secure.php.net/manual/en/intlcalendar.getminimaldaysinfirstweek.php * Get minimal number of days the first week in a year or month can have * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @return int * An {@link https://secure.php.net/manual/en/language.types.integer.php int} representing a number of days or FALSE on failure. * @since 5.5 */ #[Pure] #[LanguageAware(['8.0' => 'int|false'], default: 'int')] function intlcal_get_minimal_days_in_first_week(IntlCalendar $calendar) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the global minimum value for a field * @link https://secure.php.net/manual/en/intlcalendar.getminimum.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int * An int representing a value for the given field in the field's unit or FALSE on failure. * @since 5.5 */ #[Pure] #[LanguageAware(['8.0' => 'int|false'], default: 'int')] function intlcal_get_minimum(IntlCalendar $calendar, int $field) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the object's timezone * @link https://secure.php.net/manual/en/intlcalendar.gettimezone.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @return IntlTimeZone|false * An {@link https://secure.php.net/manual/en/class.intltimezone.php IntlTimeZone} object corresponding to the one used * internally in this object. * @since 5.5 */ #[Pure] function intlcal_get_time_zone(IntlCalendar $calendar): IntlTimeZone|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the calendar type * @link https://secure.php.net/manual/en/intlcalendar.gettype.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @return string * A {@link https://secure.php.net/manual/en/language.types.string.php string} representing the calendar type, such as * 'gregorian', 'islamic', etc. * @since 5.5 */ #[Pure] function intlcal_get_type(IntlCalendar $calendar): string {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get time of the day at which weekend begins or ends * @link https://secure.php.net/manual/en/intlcalendar.getweekendtransition.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $dayOfWeek

    * One of the constants IntlCalendar::DOW_SUNDAY, * IntlCalendar::DOW_MONDAY, ..., * IntlCalendar::DOW_SATURDAY. *

    * @return int * The number of milliseconds into the day at which the the weekend begins or * ends or FALSE on failure. * @since 5.5 */ #[Pure] #[LanguageAware(['8.0' => 'int|false'], default: 'int')] function intlcal_get_weekend_transition(IntlCalendar $calendar, int $dayOfWeek) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether the object's time is in Daylight Savings Time * @link https://secure.php.net/manual/en/intlcalendar.indaylighttime.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @return bool * Returns TRUE if the date is in Daylight Savings Time, FALSE otherwise. * The value FALSE may also be returned on failure, for instance after * specifying invalid field values on non-lenient mode; use {@link https://secure.php.net/manual/en/intl.configuration.php#ini.intl.use-exceptions exceptions} or query * {@link https://secure.php.net/manual/en/function.intl-get-error-code.php intl_get_error_code()} to disambiguate. * @since 5.5 */ #[Pure] function intlcal_in_daylight_time(IntlCalendar $calendar): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether date/time interpretation is in lenient mode * @link https://secure.php.net/manual/en/intlcalendar.islenient.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @return bool * A {@link https://secure.php.net/manual/en/language.types.boolean.php bool} representing whether the calendar is set to lenient mode. * @since 5.5 */ #[Pure] function intlcal_is_lenient(IntlCalendar $calendar): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether a field is set * @link https://secure.php.net/manual/en/intlcalendar.isset.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return bool Assuming there are no argument errors, returns TRUE iif the field is set. * @since 5.5 */ #[Pure] function intlcal_is_set(IntlCalendar $calendar, int $field): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the global maximum value for a field * @link https://secure.php.net/manual/en/intlcalendar.getmaximum.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $field

    * One of the {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} date/time {@link https://secure.php.net/manual/en/class.intlcalendar.php#intlcalendar.constants field constants}. These are integer * values between 0 and * IntlCalendar::FIELD_COUNT. *

    * @return int|false * @since 5.5 */ #[Pure] #[LanguageAware(['8.0' => 'int|false'], default: 'int')] function intlcal_get_maximum(IntlCalendar $calendar, int $field) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether another calendar is equal but for a different time * @link https://secure.php.net/manual/en/intlcalendar.isequivalentto.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param IntlCalendar $other The other calendar against which the comparison is to be made. * @return bool * Assuming there are no argument errors, returns TRUE iif the calendars are equivalent except possibly for their set time. * @since 5.5 */ #[Pure] function intlcal_is_equivalent_to(IntlCalendar $calendar, IntlCalendar $other): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Whether a certain date/time is in the weekend * @link https://secure.php.net/manual/en/intlcalendar.isweekend.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param float|null $timestamp [optional]

    * An optional timestamp representing the number of milliseconds since the * epoch, excluding leap seconds. If NULL, this object's current time is * used instead. *

    * @return bool *

    A {@link https://secure.php.net/manual/en/language.types.boolean.php bool} indicating whether the given or this object's time occurs * in a weekend. *

    *

    * The value FALSE may also be returned on failure, for instance after giving * a date out of bounds on non-lenient mode; use {@link https://secure.php.net/manual/en/intl.configuration.php#ini.intl.use-exceptions exceptions} or query * {@link https://secure.php.net/manual/en/function.intl-get-error-code.php intl_get_error_code()} to disambiguate.

    * @since 5.5 */ #[Pure] function intlcal_is_weekend(IntlCalendar $calendar, ?float $timestamp = null): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set the day on which the week is deemed to start * @link https://secure.php.net/manual/en/intlcalendar.setfirstdayofweek.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $dayOfWeek

    * One of the constants IntlCalendar::DOW_SUNDAY, * IntlCalendar::DOW_MONDAY, ..., * IntlCalendar::DOW_SATURDAY. *

    * @return bool Returns TRUE on success. Failure can only happen due to invalid parameters. * @since 5.5 */ #[LanguageAware(['8.3' => 'true'], default: 'bool')] function intlcal_set_first_day_of_week(IntlCalendar $calendar, int $dayOfWeek) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set whether date/time interpretation is to be lenient * @link https://secure.php.net/manual/en/intlcalendar.setlenient.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param bool $lenient

    * Use TRUE to activate the lenient mode; FALSE otherwise. *

    * @return bool Returns TRUE on success. Failure can only happen due to invalid parameters. * @since 5.5 */ #[LanguageAware(['8.3' => 'true'], default: 'bool')] function intlcal_set_lenient(IntlCalendar $calendar, bool $lenient) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get behavior for handling repeating wall time * @link https://secure.php.net/manual/en/intlcalendar.getrepeatedwalltimeoption.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @return int * One of the constants IntlCalendar::WALLTIME_FIRST or * IntlCalendar::WALLTIME_LAST. * @since 5.5 */ #[Pure] function intlcal_get_repeated_wall_time_option(IntlCalendar $calendar): int {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Compare time of two IntlCalendar objects for equality * @link https://secure.php.net/manual/en/intlcalendar.equals.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param IntlCalendar $other * @return bool

    * Returns TRUE if the current time of both this and the passed in * {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} object are the same, or FALSE * otherwise. The value FALSE can also be returned on failure. This can only * happen if bad arguments are passed in. In any case, the two cases can be * distinguished by calling {@link https://secure.php.net/manual/en/function.intl-get-error-code.php intl_get_error_code()}. *

    * @since 5.5 */ #[Pure] function intlcal_equals(IntlCalendar $calendar, IntlCalendar $other): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get behavior for handling skipped wall time * @link https://secure.php.net/manual/en/intlcalendar.getskippedwalltimeoption.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @return int * One of the constants IntlCalendar::WALLTIME_FIRST, * IntlCalendar::WALLTIME_LAST or * IntlCalendar::WALLTIME_NEXT_VALID. * @since 5.5 */ #[Pure] function intlcal_get_skipped_wall_time_option(IntlCalendar $calendar): int {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set behavior for handling repeating wall times at negative timezone offset transitions * @link https://secure.php.net/manual/en/intlcalendar.setrepeatedwalltimeoption.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $option

    * One of the constants IntlCalendar::WALLTIME_FIRST or * IntlCalendar::WALLTIME_LAST. *

    * @return bool * Returns TRUE on success. Failure can only happen due to invalid parameters. * @since 5.5 */ #[LanguageAware(['8.3' => 'true'], default: 'bool')] function intlcal_set_repeated_wall_time_option(IntlCalendar $calendar, int $option) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Set behavior for handling skipped wall times at positive timezone offset transitions * @link https://secure.php.net/manual/en/intlcalendar.setskippedwalltimeoption.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @param int $option

    * One of the constants IntlCalendar::WALLTIME_FIRST, * IntlCalendar::WALLTIME_LAST or * IntlCalendar::WALLTIME_NEXT_VALID. *

    * @return bool *

    * Returns TRUE on success. Failure can only happen due to invalid parameters. *

    * @since 5.5 */ #[LanguageAware(['8.3' => 'true'], default: 'bool')] function intlcal_set_skipped_wall_time_option(IntlCalendar $calendar, int $option) {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a2)
    * Create an IntlCalendar from a DateTime object or string * @link https://secure.php.net/manual/en/intlcalendar.fromdatetime.php * @param DateTime|string $datetime

    * A {@link https://secure.php.net/manual/en/class.datetime.php DateTime} object or a {@link https://secure.php.net/manual/en/language.types.string.php string} that * can be passed to {@link https://secure.php.net/manual/en/datetime.construct.php DateTime::__construct()}. *

    * @param null|string $locale * @return IntlCalendar|null * The created {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} object or NULL in case of * failure. If a {@link https://secure.php.net/manual/en/language.types.string.php string} is passed, any exception that occurs * inside the {@link https://secure.php.net/manual/en/class.datetime.php DateTime} constructor is propagated. * @since 5.5 */ #[Pure] function intlcal_from_date_time( DateTime|string $datetime, #[ElementAvailable(from: '8.0')] ?string $locale = null ): ?IntlCalendar {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a2)
    * Convert an IntlCalendar into a DateTime object * @link https://secure.php.net/manual/en/intlcalendar.todatetime.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @return DateTime|false * A {@link https://secure.php.net/manual/en/class.datetime.php DateTime} object with the same timezone as this * object (though using PHP's database instead of ICU's) and the same time, * except for the smaller precision (second precision instead of millisecond). * Returns FALSE on failure. * @since 5.5 */ #[Pure] function intlcal_to_date_time(IntlCalendar $calendar): DateTime|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get last error code on the object * @link https://secure.php.net/manual/en/intlcalendar.geterrorcode.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @return int|false An ICU error code indicating either success, failure or a warning. * @since 5.5 */ #[Pure(true)] function intlcal_get_error_code(IntlCalendar $calendar): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get last error message on the object * @link https://secure.php.net/manual/en/intlcalendar.geterrormessage.php * @param IntlCalendar $calendar

    * The calendar object, on the procedural style interface. *

    * @return string|false The error message associated with last error that occurred in a function call on this object, or a string indicating the non-existance of an error. * @since 5.5 */ #[Pure(true)] function intlcal_get_error_message(IntlCalendar $calendar): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the number of IDs in the equivalency group that includes the given ID * @link https://secure.php.net/manual/en/intltimezone.countequivalentids.php * @param string $timezoneId * @return int|false * @since 5.5 */ #[Pure] function intltz_count_equivalent_ids(string $timezoneId): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Create a new copy of the default timezone for this host * @link https://secure.php.net/manual/en/intltimezone.createdefault.php * @return IntlTimeZone * @since 5.5 */ #[Pure] function intlz_create_default() {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * @link https://secure.php.net/manual/en/intltimezone.createenumeration.php * @param IntlTimeZone|string|int|float|null $countryOrRawOffset [optional] * @return IntlIterator|false * @since 5.5 */ #[Pure] function intltz_create_enumeration($countryOrRawOffset): IntlIterator|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * @link https://secure.php.net/manual/en/intltimezone.createtimezone.php * @param string $timezoneId * @return IntlTimeZone|null * @since 5.5 */ #[Pure] function intltz_create_time_zone(string $timezoneId): ?IntlTimeZone {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * @link https://secure.php.net/manual/en/intltimezone.fromdatetimezone.php * @param DateTimeZone $timezone * @return IntlTimeZone|null * @since 5.5 */ #[Pure] function intltz_from_date_time_zone(DateTimeZone $timezone): ?IntlTimeZone {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the canonical system timezone ID or the normalized custom time zone ID for the given time zone ID * @link https://secure.php.net/manual/en/intltimezone.getcanonicalid.php * @param string $timezoneId * @param bool &$isSystemId [optional] * @return string|false * @since 5.5 */ #[Pure] function intltz_get_canonical_id(string $timezoneId, &$isSystemId): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get a name of this time zone suitable for presentation to the user * @param IntlTimeZone $timezone -

    * The time zone object, on the procedural style interface. *

    * @param bool $dst [optional] * @param int $style [optional] * @param string|null $locale [optional] * @return string|false * @since 5.5 */ #[Pure] function intltz_get_display_name(IntlTimeZone $timezone, bool $dst = false, int $style = 2, ?string $locale): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the amount of time to be added to local standard time to get local wall clock time * @param IntlTimeZone $timezone -

    * The time zone object, on the procedural style interface. *

    * @return int * @link https://secure.php.net/manual/en/intltimezone.getequivalentid.php * @since 5.5 */ #[Pure] function intltz_get_dst_savings(IntlTimeZone $timezone): int {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get an ID in the equivalency group that includes the given ID * @link https://secure.php.net/manual/en/intltimezone.getequivalentid.php * @param string $timezoneId * @param int $offset * @return string|false * @since 5.5 */ #[Pure] function intltz_get_equivalent_id(string $timezoneId, int $offset): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get last error code on the object * @link https://secure.php.net/manual/en/intltimezone.geterrorcode.php * @param IntlTimeZone $timezone -

    * The time zone object, on the procedural style interface. *

    * @return int|false * @since 5.5 */ #[Pure(true)] function intltz_get_error_code(IntlTimeZone $timezone): int|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get last error message on the object * @link https://secure.php.net/manual/en/intltimezone.geterrormessage.php * @param IntlTimeZone $timezone -

    * The time zone object, on the procedural style interface. *

    * @return string|false * @since 5.5 */ #[Pure(true)] function intltz_get_error_message(IntlTimeZone $timezone): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Create GMT (UTC) timezone * @link https://secure.php.net/manual/en/intltimezone.getgmt.php * @return IntlTimeZone * @since 5.5 */ #[Pure] function intltz_getGMT(): IntlTimeZone {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get timezone ID * @link https://secure.php.net/manual/en/intltimezone.getid.php * @param IntlTimeZone $timezone * @return string|false * @since 5.5 */ #[Pure] function intltz_get_id(IntlTimeZone $timezone): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the time zone raw and GMT offset for the given moment in time * @link https://secure.php.net/manual/en/intltimezone.getoffset.php * @param IntlTimeZone $timezone * @param float $timestamp * @param bool $local * @param int &$rawOffset * @param int &$dstOffset * @return bool * @since 5.5 */ #[Pure] function intltz_get_offset(IntlTimeZone $timezone, float $timestamp, bool $local, &$rawOffset, &$dstOffset): bool {} /** * Get the raw GMT offset (before taking daylight savings time into account * @link https://secure.php.net/manual/en/intltimezone.getrawoffset.php * @param IntlTimeZone $timezone * @return int */ #[Pure] function intltz_get_raw_offset(IntlTimeZone $timezone): int {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Get the timezone data version currently used by ICU * @link https://secure.php.net/manual/en/intltimezone.gettzdataversion.php * @return string|false * @since 5.5 */ #[Pure] function intltz_get_tz_data_version(): string|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Check if this zone has the same rules and offset as another zone * @link https://secure.php.net/manual/en/intltimezone.hassamerules.php * @param IntlTimeZone $timezone * @param IntlTimeZone $other * @return bool * @since 5.5 */ #[Pure] function intltz_has_same_rules( IntlTimeZone $timezone, #[ElementAvailable(from: '5.5', to: '7.4')] IntlTimeZone $other = null, #[ElementAvailable(from: '8.0')] IntlTimeZone $other ): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Convert to DateTimeZone object * @link https://secure.php.net/manual/en/intltimezone.todatetimezone.php * @param IntlTimeZone $timezone * @return DateTimeZone|false * @since 5.5 */ #[Pure] function intltz_to_date_time_zone(IntlTimeZone $timezone): DateTimeZone|false {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * Check if this time zone uses daylight savings time * @link https://secure.php.net/manual/en/intltimezone.usedaylighttime.php * @param IntlTimeZone $timezone * @return bool * @since 5.5 */ #[Pure] function intltz_use_daylight_time(IntlTimeZone $timezone): bool {} /** * (PHP 5 >=5.5.0 PECL intl >= 3.0.0a1)
    * @param DateTimeZone|IntlTimeZone|string|int|null $timezoneOrYear [optional] * @param string|null $localeOrMonth [optional] * @param int $day [optional] * @param int $hour [optional] * @param int $minute [optional] * @param int $second [optional] * @return IntlGregorianCalendar|null * @since 5.5 */ #[Pure] #[Deprecated( reason: 'use IntlGregorianCalendar::__construct(), IntlGregorianCalendar::createFromDate(), or IntlGregorianCalendar::createFromDateTime() instead', since: '8.4' )] function intlgregcal_create_instance($timezoneOrYear, $localeOrMonth, $day, $hour, $minute, $second): ?IntlGregorianCalendar {} /** * @param IntlGregorianCalendar $calendar * @param float $timestamp * @return bool */ function intlgregcal_set_gregorian_change(IntlGregorianCalendar $calendar, float $timestamp): bool {} /** * @param IntlGregorianCalendar $calendar * @return float */ #[Pure] function intlgregcal_get_gregorian_change(IntlGregorianCalendar $calendar): float {} /** * @param IntlGregorianCalendar $calendar * @param int $year * @return bool */ #[Pure] function intlgregcal_is_leap_year(IntlGregorianCalendar $calendar, int $year): bool {} /** * (PHP >= 5.3.2, PECL intl >= 2.0.0)
    * Create a resource bundle * @link https://php.net/manual/en/resourcebundle.create.php * @param string|null $locale

    * Locale for which the resources should be loaded (locale name, e.g. en_CA). *

    * @param string|null $bundle

    * The directory where the data is stored or the name of the .dat file. *

    * @param bool $fallback [optional]

    * Whether locale should match exactly or fallback to parent locale is allowed. *

    * @return ResourceBundle|null ResourceBundle object or NULL on error. */ #[Pure] function resourcebundle_create(?string $locale, ?string $bundle, bool $fallback = true): ?ResourceBundle {} /** * (PHP >= 5.3.2, PECL intl >= 2.0.0)
    * Get data from the bundle * @link https://php.net/manual/en/resourcebundle.get.php * @param ResourceBundle $bundle * @param string|int $index

    * Data index, must be string or integer. *

    * @param bool $fallback * @return mixed the data located at the index or NULL on error. Strings, integers and binary data strings * are returned as corresponding PHP types, integer array is returned as PHP array. Complex types are * returned as ResourceBundle object. */ #[Pure] #[LanguageAware(['8.4' => 'ResourceBundle|array|string|int|null'], default: 'mixed')] function resourcebundle_get(ResourceBundle $bundle, string|int $index, bool $fallback = true) {} /** * (PHP >= 5.3.2, PECL intl >= 2.0.0)
    * Get number of elements in the bundle * @link https://php.net/manual/en/resourcebundle.count.php * @param ResourceBundle $bundle * @return int number of elements in the bundle. */ #[Pure] function resourcebundle_count(ResourceBundle $bundle): int {} /** * (PHP >= 5.3.2, PECL intl >= 2.0.0)
    * Get supported locales * @link https://php.net/manual/en/resourcebundle.locales.php * @param string $bundle

    * Path of ResourceBundle for which to get available locales, or * empty string for default locales list. *

    * @return array|false the list of locales supported by the bundle. */ #[Pure] function resourcebundle_locales(string $bundle): array|false {} /** * (PHP >= 5.3.2, PECL intl >= 2.0.0)
    * Get bundle's last error code. * @link https://php.net/manual/en/resourcebundle.geterrorcode.php * @param ResourceBundle $bundle * @return int error code from last bundle object call. */ #[Pure(true)] function resourcebundle_get_error_code(ResourceBundle $bundle): int {} /** * (PHP >= 5.3.2, PECL intl >= 2.0.0)
    * Get bundle's last error message. * @link https://php.net/manual/en/resourcebundle.geterrormessage.php * @param ResourceBundle $bundle * @return string error message from last bundle object's call. */ #[Pure(true)] function resourcebundle_get_error_message(ResourceBundle $bundle): string {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Create a transliterator * @link https://php.net/manual/en/transliterator.create.php * @param string $id

    * The id. *

    * @param int $direction

    * The direction, defaults to * Transliterator::FORWARD. * May also be set to * Transliterator::REVERSE. *

    * @return Transliterator|null a Transliterator object on success, * or NULL on failure. * @since 5.4 */ #[Pure] function transliterator_create(string $id, int $direction = 0): ?Transliterator {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Create transliterator from rules * @link https://php.net/manual/en/transliterator.createfromrules.php * @param string $rules

    * The rules. *

    * @param int $direction

    * The direction, defaults to * Transliterator::FORWARD. * May also be set to * Transliterator::REVERSE. *

    * @return Transliterator|null a Transliterator object on success, * or NULL on failure. * @since 5.4 */ #[Pure] function transliterator_create_from_rules(string $rules, int $direction = 0): ?Transliterator {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Get transliterator IDs * @link https://php.net/manual/en/transliterator.listids.php * @return string[]|false An array of registered transliterator IDs on success, * or FALSE on failure. * @since 5.4 */ #[Pure] function transliterator_list_ids(): array|false {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Create an inverse transliterator * @link https://php.net/manual/en/transliterator.createinverse.php * @param Transliterator $transliterator * @return Transliterator|null a Transliterator object on success, * or NULL on failure * @since 5.4 */ #[Pure] function transliterator_create_inverse(Transliterator $transliterator): ?Transliterator {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Transliterate a string * @link https://php.net/manual/en/transliterator.transliterate.php * @param Transliterator|string $transliterator * @param string $string

    * The string to be transformed. *

    * @param int $start

    * The start index (in UTF-16 code units) from which the string will start * to be transformed, inclusive. Indexing starts at 0. The text before will * be left as is. *

    * @param int $end

    * The end index (in UTF-16 code units) until which the string will be * transformed, exclusive. Indexing starts at 0. The text after will be * left as is. *

    * @return string|false The transfomed string on success, or FALSE on failure. * @since 5.4 */ #[Pure] function transliterator_transliterate(Transliterator|string $transliterator, string $string, int $start = 0, int $end = -1): string|false {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Get last error code * @link https://php.net/manual/en/transliterator.geterrorcode.php * @param Transliterator $transliterator * @return int|false The error code on success, * or FALSE if none exists, or on failure. * @since 5.4 */ #[Pure(true)] function transliterator_get_error_code(Transliterator $transliterator): int|false {} /** * (PHP >= 5.4.0, PECL intl >= 2.0.0)
    * Get last error message * @link https://php.net/manual/en/transliterator.geterrormessage.php * @param Transliterator $transliterator * @return string|false The error code on success, * or FALSE if none exists, or on failure. * @since 5.4 */ #[Pure(true)] function transliterator_get_error_message(Transliterator $transliterator): string|false {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get the last error code * @link https://php.net/manual/en/function.intl-get-error-code.php * @return int Error code returned by the last API function call. */ #[Pure(true)] function intl_get_error_code(): int {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get description of the last error * @link https://php.net/manual/en/function.intl-get-error-message.php * @return string Description of an error occurred in the last API function call. */ #[Pure(true)] function intl_get_error_message(): string {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Check whether the given error code indicates failure * @link https://php.net/manual/en/function.intl-is-failure.php * @param int $errorCode

    * is a value that returned by functions: * intl_get_error_code, * collator_get_error_code . *

    * @return bool TRUE if it the code indicates some failure, and FALSE * in case of success or a warning. */ #[Pure] function intl_is_failure(int $errorCode): bool {} /** * (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
    * Get symbolic name for a given error code * @link https://php.net/manual/en/function.intl-error-name.php * @param int $errorCode

    * ICU error code. *

    * @return string The returned string will be the same as the name of the error code * constant. */ #[Pure] function intl_error_name(int $errorCode): string {} /** * Gets the Decomposition_Mapping property for the given UTF-8 encoded code point * * @link https://www.php.net/manual/en/normalizer.getrawdecomposition.php * * @param string $string * @param int $form * @return string|null * * @since 7.3 */ #[Pure] function normalizer_get_raw_decomposition(string $string, #[ElementAvailable(from: '8.0')] int $form = Normalizer::FORM_C): ?string {} /** * @return IntlTimeZone * @since 5.5 */ #[Pure] function intltz_create_default(): IntlTimeZone {} /** * @return IntlTimeZone * @since 5.5 */ #[Pure] function intltz_get_gmt(): IntlTimeZone {} /** * @return IntlTimeZone * @since 5.5 */ #[Pure] function intltz_get_unknown(): IntlTimeZone {} /** * @param int $type * @param null|string $region * @param null|int $rawOffset * @return IntlIterator|false * @since 5.5 */ #[Pure] function intltz_create_time_zone_id_enumeration(int $type, ?string $region = null, ?int $rawOffset = null): IntlIterator|false {} /** * @param string $timezoneId * @return string|false * @since 5.5 */ #[Pure] function intltz_get_region(string $timezoneId): string|false {} /** * Set minimal number of days the first week in a year or month can have * * @link https://www.php.net/manual/en/intlcalendar.setminimaldaysinfirstweek.php * * @param IntlCalendar $calendar * @param int $days * @return bool * * @since 5.5.1 */ #[LanguageAware(['8.3' => 'true'], default: 'bool')] function intlcal_set_minimal_days_in_first_week(IntlCalendar $calendar, int $days) {} function intltz_get_windows_id(string $timezoneId): string|false {} function intltz_get_id_for_windows_id(string $timezoneId, ?string $region = null): string|false {} /** * @since 8.4 */ function grapheme_str_split(string $string, int $length = 1): array|false {} /** * @since 8.4 */ function intltz_get_iana_id(string $timezoneId): string|false {} /** * Limit on locale length, set to 80 in PHP code. Locale names longer * than this limit will not be accepted. * @link https://php.net/manual/en/intl.constants.php */ define('INTL_MAX_LOCALE_LEN', 156); define('INTL_ICU_VERSION', "74.1"); define('INTL_ICU_DATA_VERSION', "74.1"); define('ULOC_ACTUAL_LOCALE', 0); define('ULOC_VALID_LOCALE', 1); define('GRAPHEME_EXTR_COUNT', 0); define('GRAPHEME_EXTR_MAXBYTES', 1); define('GRAPHEME_EXTR_MAXCHARS', 2); define('U_USING_FALLBACK_WARNING', -128); define('U_ERROR_WARNING_START', -128); define('U_USING_DEFAULT_WARNING', -127); define('U_SAFECLONE_ALLOCATED_WARNING', -126); define('U_STATE_OLD_WARNING', -125); define('U_STRING_NOT_TERMINATED_WARNING', -124); define('U_SORT_KEY_TOO_SHORT_WARNING', -123); define('U_AMBIGUOUS_ALIAS_WARNING', -122); define('U_DIFFERENT_UCA_VERSION', -121); define('U_ERROR_WARNING_LIMIT', -119); define('U_ZERO_ERROR', 0); define('U_ILLEGAL_ARGUMENT_ERROR', 1); define('U_MISSING_RESOURCE_ERROR', 2); define('U_INVALID_FORMAT_ERROR', 3); define('U_FILE_ACCESS_ERROR', 4); define('U_INTERNAL_PROGRAM_ERROR', 5); define('U_MESSAGE_PARSE_ERROR', 6); define('U_MEMORY_ALLOCATION_ERROR', 7); define('U_INDEX_OUTOFBOUNDS_ERROR', 8); define('U_PARSE_ERROR', 9); define('U_INVALID_CHAR_FOUND', 10); define('U_TRUNCATED_CHAR_FOUND', 11); define('U_ILLEGAL_CHAR_FOUND', 12); define('U_INVALID_TABLE_FORMAT', 13); define('U_INVALID_TABLE_FILE', 14); define('U_BUFFER_OVERFLOW_ERROR', 15); define('U_UNSUPPORTED_ERROR', 16); define('U_RESOURCE_TYPE_MISMATCH', 17); define('U_ILLEGAL_ESCAPE_SEQUENCE', 18); define('U_UNSUPPORTED_ESCAPE_SEQUENCE', 19); define('U_NO_SPACE_AVAILABLE', 20); define('U_CE_NOT_FOUND_ERROR', 21); define('U_PRIMARY_TOO_LONG_ERROR', 22); define('U_STATE_TOO_OLD_ERROR', 23); define('U_TOO_MANY_ALIASES_ERROR', 24); define('U_ENUM_OUT_OF_SYNC_ERROR', 25); define('U_INVARIANT_CONVERSION_ERROR', 26); define('U_INVALID_STATE_ERROR', 27); define('U_COLLATOR_VERSION_MISMATCH', 28); define('U_USELESS_COLLATOR_ERROR', 29); define('U_NO_WRITE_PERMISSION', 30); define('U_STANDARD_ERROR_LIMIT', 32); define('U_BAD_VARIABLE_DEFINITION', 65536); define('U_PARSE_ERROR_START', 65536); define('U_MALFORMED_RULE', 65537); define('U_MALFORMED_SET', 65538); define('U_MALFORMED_SYMBOL_REFERENCE', 65539); define('U_MALFORMED_UNICODE_ESCAPE', 65540); define('U_MALFORMED_VARIABLE_DEFINITION', 65541); define('U_MALFORMED_VARIABLE_REFERENCE', 65542); define('U_MISMATCHED_SEGMENT_DELIMITERS', 65543); define('U_MISPLACED_ANCHOR_START', 65544); define('U_MISPLACED_CURSOR_OFFSET', 65545); define('U_MISPLACED_QUANTIFIER', 65546); define('U_MISSING_OPERATOR', 65547); define('U_MISSING_SEGMENT_CLOSE', 65548); define('U_MULTIPLE_ANTE_CONTEXTS', 65549); define('U_MULTIPLE_CURSORS', 65550); define('U_MULTIPLE_POST_CONTEXTS', 65551); define('U_TRAILING_BACKSLASH', 65552); define('U_UNDEFINED_SEGMENT_REFERENCE', 65553); define('U_UNDEFINED_VARIABLE', 65554); define('U_UNQUOTED_SPECIAL', 65555); define('U_UNTERMINATED_QUOTE', 65556); define('U_RULE_MASK_ERROR', 65557); define('U_MISPLACED_COMPOUND_FILTER', 65558); define('U_MULTIPLE_COMPOUND_FILTERS', 65559); define('U_INVALID_RBT_SYNTAX', 65560); define('U_INVALID_PROPERTY_PATTERN', 65561); define('U_MALFORMED_PRAGMA', 65562); define('U_UNCLOSED_SEGMENT', 65563); define('U_ILLEGAL_CHAR_IN_SEGMENT', 65564); define('U_VARIABLE_RANGE_EXHAUSTED', 65565); define('U_VARIABLE_RANGE_OVERLAP', 65566); define('U_ILLEGAL_CHARACTER', 65567); define('U_INTERNAL_TRANSLITERATOR_ERROR', 65568); define('U_INVALID_ID', 65569); define('U_INVALID_FUNCTION', 65570); define('U_PARSE_ERROR_LIMIT', 65571); define('U_UNEXPECTED_TOKEN', 65792); define('U_FMT_PARSE_ERROR_START', 65792); define('U_MULTIPLE_DECIMAL_SEPARATORS', 65793); define('U_MULTIPLE_DECIMAL_SEPERATORS', 65793); define('U_MULTIPLE_EXPONENTIAL_SYMBOLS', 65794); define('U_MALFORMED_EXPONENTIAL_PATTERN', 65795); define('U_MULTIPLE_PERCENT_SYMBOLS', 65796); define('U_MULTIPLE_PERMILL_SYMBOLS', 65797); define('U_MULTIPLE_PAD_SPECIFIERS', 65798); define('U_PATTERN_SYNTAX_ERROR', 65799); define('U_ILLEGAL_PAD_POSITION', 65800); define('U_UNMATCHED_BRACES', 65801); define('U_UNSUPPORTED_PROPERTY', 65802); define('U_UNSUPPORTED_ATTRIBUTE', 65803); define('U_FMT_PARSE_ERROR_LIMIT', 65812); define('U_BRK_INTERNAL_ERROR', 66048); define('U_BRK_ERROR_START', 66048); define('U_BRK_HEX_DIGITS_EXPECTED', 66049); define('U_BRK_SEMICOLON_EXPECTED', 66050); define('U_BRK_RULE_SYNTAX', 66051); define('U_BRK_UNCLOSED_SET', 66052); define('U_BRK_ASSIGN_ERROR', 66053); define('U_BRK_VARIABLE_REDFINITION', 66054); define('U_BRK_MISMATCHED_PAREN', 66055); define('U_BRK_NEW_LINE_IN_QUOTED_STRING', 66056); define('U_BRK_UNDEFINED_VARIABLE', 66057); define('U_BRK_INIT_ERROR', 66058); define('U_BRK_RULE_EMPTY_SET', 66059); define('U_BRK_UNRECOGNIZED_OPTION', 66060); define('U_BRK_MALFORMED_RULE_TAG', 66061); define('U_BRK_ERROR_LIMIT', 66062); define('U_REGEX_INTERNAL_ERROR', 66304); define('U_REGEX_ERROR_START', 66304); define('U_REGEX_RULE_SYNTAX', 66305); define('U_REGEX_INVALID_STATE', 66306); define('U_REGEX_BAD_ESCAPE_SEQUENCE', 66307); define('U_REGEX_PROPERTY_SYNTAX', 66308); define('U_REGEX_UNIMPLEMENTED', 66309); define('U_REGEX_MISMATCHED_PAREN', 66310); define('U_REGEX_NUMBER_TOO_BIG', 66311); define('U_REGEX_BAD_INTERVAL', 66312); define('U_REGEX_MAX_LT_MIN', 66313); define('U_REGEX_INVALID_BACK_REF', 66314); define('U_REGEX_INVALID_FLAG', 66315); define('U_REGEX_LOOK_BEHIND_LIMIT', 66316); define('U_REGEX_SET_CONTAINS_STRING', 66317); define('U_REGEX_ERROR_LIMIT', 66326); define('U_IDNA_PROHIBITED_ERROR', 66560); define('U_IDNA_ERROR_START', 66560); define('U_IDNA_UNASSIGNED_ERROR', 66561); define('U_IDNA_CHECK_BIDI_ERROR', 66562); define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563); define('U_IDNA_ACE_PREFIX_ERROR', 66564); define('U_IDNA_VERIFICATION_ERROR', 66565); define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566); define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567); define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568); define('U_IDNA_ERROR_LIMIT', 66569); define('U_STRINGPREP_PROHIBITED_ERROR', 66560); define('U_STRINGPREP_UNASSIGNED_ERROR', 66561); define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562); define('U_ERROR_LIMIT', 66818); /** * Prohibit processing of unassigned codepoints in the input for IDN * functions and do not check if the input conforms to domain name ASCII rules. * @link https://php.net/manual/en/intl.constants.php */ define('IDNA_DEFAULT', 0); /** * Allow processing of unassigned codepoints in the input for IDN functions. * @link https://php.net/manual/en/intl.constants.php */ define('IDNA_ALLOW_UNASSIGNED', 1); /** * Check if the input for IDN functions conforms to domain name ASCII rules. * @link https://php.net/manual/en/intl.constants.php */ define('IDNA_USE_STD3_RULES', 2); /** * Check whether the input conforms to the BiDi rules. * Ignored by the IDNA2003 implementation, which always performs this check. * @link https://php.net/manual/en/intl.constants.php */ define('IDNA_CHECK_BIDI', 4); /** * Check whether the input conforms to the CONTEXTJ rules. * Ignored by the IDNA2003 implementation, as this check is new in IDNA2008. * @link https://php.net/manual/en/intl.constants.php */ define('IDNA_CHECK_CONTEXTJ', 8); /** * Option for nontransitional processing in * idn_to_ascii. Transitional processing is activated * by default. This option is ignored by the IDNA2003 implementation. * @link https://php.net/manual/en/intl.constants.php */ define('IDNA_NONTRANSITIONAL_TO_ASCII', 16); /** * Option for nontransitional processing in * idn_to_utf8. Transitional processing is activated * by default. This option is ignored by the IDNA2003 implementation. * @link https://php.net/manual/en/intl.constants.php */ define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32); /** * Use IDNA 2003 algorithm in {@see idn_to_utf8} and * {@see idn_to_ascii}. This is the default. * @link https://php.net/manual/en/intl.constants.php * @deprecated 7.2 Use {@see INTL_IDNA_VARIANT_UTS46} instead. */ define('INTL_IDNA_VARIANT_2003', 0); /** * Use UTS #46 algorithm in idn_to_utf8 and * idn_to_ascii. * @link https://php.net/manual/en/intl.constants.php */ define('INTL_IDNA_VARIANT_UTS46', 1); /** * Errors reported in a bitset returned by the UTS #46 algorithm in * idn_to_utf8 and * idn_to_ascii. * @link https://php.net/manual/en/intl.constants.php */ define('IDNA_ERROR_EMPTY_LABEL', 1); /** * @link https://secure.php.net/manual/en/migration54.global-constants.php * @since 5.4 */ define('IDNA_ERROR_LABEL_TOO_LONG', 2); /** * @link https://secure.php.net/manual/en/migration54.global-constants.php * @since 5.4 */ define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4); /** * @link https://secure.php.net/manual/en/migration54.global-constants.php * @since 5.4 */ define('IDNA_ERROR_LEADING_HYPHEN', 8); /** * @link https://secure.php.net/manual/en/migration54.global-constants.php * @since 5.4 */ define('IDNA_ERROR_TRAILING_HYPHEN', 16); /** * @link https://secure.php.net/manual/en/migration54.global-constants.php * @since 5.4 */ define('IDNA_ERROR_HYPHEN_3_4', 32); /** * @link https://secure.php.net/manual/en/migration54.global-constants.php * @since 5.4 */ define('IDNA_ERROR_LEADING_COMBINING_MARK', 64); /** * @link https://secure.php.net/manual/en/migration54.global-constants.php * @since 5.4 */ define('IDNA_ERROR_DISALLOWED', 128); /** * @link https://secure.php.net/manual/en/migration54.global-constants.php * @since 5.4 */ define('IDNA_ERROR_PUNYCODE', 256); /** * @link https://secure.php.net/manual/en/migration54.global-constants.php * @since 5.4 */ define('IDNA_ERROR_LABEL_HAS_DOT', 512); /** * @link https://secure.php.net/manual/en/migration54.global-constants.php * @since 5.4 */ define('IDNA_ERROR_INVALID_ACE_LABEL', 1024); /** * @link https://secure.php.net/manual/en/migration54.global-constants.php * @since 5.4 */ define('IDNA_ERROR_BIDI', 2048); /** * @link https://secure.php.net/manual/en/migration54.global-constants.php * @since 5.4 */ define('IDNA_ERROR_CONTEXTJ', 4096); /** * @since 5.5 */ class IntlBreakIterator implements IteratorAggregate { /* Constants */ public const DONE = -1; public const WORD_NONE = 0; public const WORD_NONE_LIMIT = 100; public const WORD_NUMBER = 100; public const WORD_NUMBER_LIMIT = 200; public const WORD_LETTER = 200; public const WORD_LETTER_LIMIT = 300; public const WORD_KANA = 300; public const WORD_KANA_LIMIT = 400; public const WORD_IDEO = 400; public const WORD_IDEO_LIMIT = 500; public const LINE_SOFT = 0; public const LINE_SOFT_LIMIT = 100; public const LINE_HARD = 100; public const LINE_HARD_LIMIT = 200; public const SENTENCE_TERM = 0; public const SENTENCE_TERM_LIMIT = 100; public const SENTENCE_SEP = 100; public const SENTENCE_SEP_LIMIT = 200; /* Methods */ /** * (PHP 5 >=5.5.0)
    * Private constructor for disallowing instantiation */ private function __construct() {} /** * (PHP 5 >=5.5.0)
    * Create break iterator for boundaries of combining character sequences * @link https://secure.php.net/manual/en/intlbreakiterator.createcharacterinstance.php * @param string $locale * @return IntlBreakIterator|null */ #[TentativeType] public static function createCharacterInstance(#[LanguageAware(['8.0' => 'string|null'], default: '')] $locale = null): ?IntlBreakIterator {} /** * (PHP 5 >=5.5.0)
    * Create break iterator for boundaries of code points * @link https://secure.php.net/manual/en/intlbreakiterator.createcodepointinstance.php * @return IntlCodePointBreakIterator */ #[TentativeType] public static function createCodePointInstance(): IntlCodePointBreakIterator {} /** * (PHP 5 >=5.5.0)
    * Create break iterator for logically possible line breaks * @link https://secure.php.net/manual/en/intlbreakiterator.createlineinstance.php * @param string $locale [optional] * @return IntlBreakIterator|null */ #[TentativeType] public static function createLineInstance(#[LanguageAware(['8.0' => 'string|null'], default: '')] $locale): ?IntlBreakIterator {} /** * (PHP 5 >=5.5.0)
    * Create break iterator for sentence breaks * @link https://secure.php.net/manual/en/intlbreakiterator.createsentenceinstance.php * @param string $locale [optional] * @return IntlBreakIterator|null */ #[TentativeType] public static function createSentenceInstance(#[LanguageAware(['8.0' => 'string|null'], default: '')] $locale): ?IntlBreakIterator {} /** * (PHP 5 >=5.5.0)
    * Create break iterator for title-casing breaks * @link https://secure.php.net/manual/en/intlbreakiterator.createtitleinstance.php * @param string $locale [optional] * @return IntlBreakIterator|null */ #[TentativeType] public static function createTitleInstance(#[LanguageAware(['8.0' => 'string|null'], default: '')] $locale): ?IntlBreakIterator {} /** * (PHP 5 >=5.5.0)
    * Create break iterator for word breaks * @link https://secure.php.net/manual/en/intlbreakiterator.createwordinstance.php * @param string $locale [optional] * @return IntlBreakIterator|null */ #[TentativeType] public static function createWordInstance(#[LanguageAware(['8.0' => 'string|null'], default: '')] $locale): ?IntlBreakIterator {} /** * (PHP 5 >=5.5.0)
    * Get index of current position * @link https://secure.php.net/manual/en/intlbreakiterator.current.php * @return int */ #[Pure] #[TentativeType] public function current(): int {} /** * (PHP 5 >=5.5.0)
    * Set position to the first character in the text * @link https://secure.php.net/manual/en/intlbreakiterator.first.php */ #[TentativeType] public function first(): int {} /** * (PHP 5 >=5.5.0)
    * Advance the iterator to the first boundary following specified offset * @link https://secure.php.net/manual/en/intlbreakiterator.following.php * @param int $offset */ #[TentativeType] public function following(#[LanguageAware(['8.0' => 'int'], default: '')] $offset): int {} /** * (PHP 5 >=5.5.0)
    * Get last error code on the object * @link https://secure.php.net/manual/en/intlbreakiterator.geterrorcode.php * @return int */ #[Pure] #[TentativeType] public function getErrorCode(): int {} /** * (PHP 5 >=5.5.0)
    * Get last error message on the object * @link https://secure.php.net/manual/en/intlbreakiterator.geterrormessage.php * @return string */ #[Pure] #[TentativeType] public function getErrorMessage(): string {} /** * (PHP 5 >=5.5.0)
    * Get the locale associated with the object * @link https://secure.php.net/manual/en/intlbreakiterator.getlocale.php * @param string $type */ #[Pure] #[TentativeType] public function getLocale(#[LanguageAware(['8.0' => 'int'], default: '')] $type): string|false {} /** * (PHP 5 >=5.5.0)
    * Create iterator for navigating fragments between boundaries * @link https://secure.php.net/manual/en/intlbreakiterator.getpartsiterator.php * @param int $type [optional] *

    * Optional key type. Possible values are: *

      *
    • * {@see IntlPartsIterator::KEY_SEQUENTIAL} * - The default. Sequentially increasing integers used as key. *
    • *
    • * {@see IntlPartsIterator::KEY_LEFT} * - Byte offset left of current part used as key. *
    • *
    • * {@see IntlPartsIterator::KEY_RIGHT} * - Byte offset right of current part used as key. *
    • *
    */ #[Pure] #[TentativeType] public function getPartsIterator( #[LanguageAware(['8.3' => 'string', '8.0' => 'int'], default: '')] #[EV([IntlPartsIterator::KEY_SEQUENTIAL, IntlPartsIterator::KEY_LEFT, IntlPartsIterator::KEY_RIGHT])] $type = IntlPartsIterator::KEY_SEQUENTIAL ): IntlPartsIterator {} /** * (PHP 5 >=5.5.0)
    * Get the text being scanned * @link https://secure.php.net/manual/en/intlbreakiterator.gettext.php */ #[Pure] #[TentativeType] public function getText(): ?string {} /** * (PHP 5 >=5.5.0)
    * Tell whether an offset is a boundary's offset * @link https://secure.php.net/manual/en/intlbreakiterator.isboundary.php * @param int $offset */ #[Pure] #[TentativeType] public function isBoundary(#[LanguageAware(['8.0' => 'int'], default: '')] $offset): bool {} /** * (PHP 5 >=5.5.0)
    * Set the iterator position to index beyond the last character * @link https://secure.php.net/manual/en/intlbreakiterator.last.php * @return int */ #[TentativeType] public function last(): int {} /** * (PHP 5 >=5.5.0)
    * @link https://secure.php.net/manual/en/intlbreakiterator.next.php * @param int $offset [optional] * @return int */ #[TentativeType] public function next(#[LanguageAware(['8.0' => 'int|null'], default: '')] $offset = null): int {} /** * (PHP 5 >=5.5.0)
    * @link https://secure.php.net/manual/en/intlbreakiterator.preceding.php * @param int $offset */ #[TentativeType] public function preceding(#[LanguageAware(['8.0' => 'int'], default: '')] $offset): int {} /** * (PHP 5 >=5.5.0)
    * Set the iterator position to the boundary immediately before the current * @link https://secure.php.net/manual/en/intlbreakiterator.previous.php * @return int */ #[TentativeType] public function previous(): int {} /** * (PHP 5 >=5.5.0)
    * Set the text being scanned * @link https://secure.php.net/manual/en/intlbreakiterator.settext.php * @param string $text */ #[TentativeType] #[LanguageAware(['8.3' => 'bool'], default: 'bool|null')] public function setText(#[LanguageAware(['8.0' => 'string'], default: '')] $text) {} /** * @since 8.0 * @return Iterator */ #[Pure] public function getIterator(): Iterator {} } class IntlRuleBasedBreakIterator extends IntlBreakIterator implements Traversable { /* Methods */ /** * (PHP 5 >=5.5.0)
    * @link https://secure.php.net/manual/en/intlbreakiterator.construct.php * @param string $rules * @param string $compiled [optional] */ #[Pure] public function __construct( #[LanguageAware(['8.0' => 'string'], default: '')] $rules, #[LanguageAware(['8.0' => 'bool'], default: '')] $compiled = false ) {} /** * (PHP 5 >=5.5.0)
    * Create break iterator for boundaries of combining character sequences * @link https://secure.php.net/manual/en/intlbreakiterator.createcharacterinstance.php * @param string $locale * @return IntlRuleBasedBreakIterator */ public static function createCharacterInstance($locale) {} /** * (PHP 5 >=5.5.0)
    * Create break iterator for boundaries of code points * @link https://secure.php.net/manual/en/intlbreakiterator.createcodepointinstance.php * @return IntlRuleBasedBreakIterator */ public static function createCodePointInstance() {} /** * (PHP 5 >=5.5.0)
    * Create break iterator for logically possible line breaks * @link https://secure.php.net/manual/en/intlbreakiterator.createlineinstance.php * @param string $locale [optional] * @return IntlRuleBasedBreakIterator */ public static function createLineInstance($locale) {} /** * (PHP 5 >=5.5.0)
    * Create break iterator for sentence breaks * @link https://secure.php.net/manual/en/intlbreakiterator.createsentenceinstance.php * @param string $locale [optional] * @return IntlRuleBasedBreakIterator */ public static function createSentenceInstance($locale) {} /** * (PHP 5 >=5.5.0)
    * Create break iterator for title-casing breaks * @link https://secure.php.net/manual/en/intlbreakiterator.createtitleinstance.php * @param string $locale [optional] * @return IntlRuleBasedBreakIterator */ public static function createTitleInstance($locale) {} /** * (PHP 5 >=5.5.0)
    * Create break iterator for word breaks * @link https://secure.php.net/manual/en/intlbreakiterator.createwordinstance.php * @param string $locale [optional] * @return IntlRuleBasedBreakIterator */ public static function createWordInstance($locale) {} /** * (PHP 5 >=5.5.0)
    * @link https://secure.php.net/manual/en/intlrulebasedbreakiterator.getbinaryrules.php * Get the binary form of compiled rules * @return string|false */ #[Pure] #[TentativeType] public function getBinaryRules(): string|false {} /** * (PHP 5 >=5.5.0)
    * @link https://secure.php.net/manual/en/intlrulebasedbreakiterator.getrules.php * Get the rule set used to create this object * @return string|false */ #[Pure] #[TentativeType] public function getRules(): string|false {} /** * (PHP 5 >=5.5.0)
    * @link https://secure.php.net/manual/en/intlrulebasedbreakiterator.getrulesstatus.php * Get the largest status value from the break rules that determined the current break position * @return int */ #[Pure] #[TentativeType] public function getRuleStatus(): int {} /** * (PHP 5 >=5.5.0)
    * @link https://secure.php.net/manual/en/intlrulebasedbreakiterator.getrulestatusvec.php * Get the status values from the break rules that determined the current break position * @return array|false */ #[Pure] #[TentativeType] public function getRuleStatusVec(): array|false {} } /** * @link https://www.php.net/manual/en/class.intlpartsiterator.php * @since 5.5 */ class IntlPartsIterator extends IntlIterator implements Iterator { public const KEY_SEQUENTIAL = 0; public const KEY_LEFT = 1; public const KEY_RIGHT = 2; /** * @return IntlBreakIterator */ #[Pure] #[TentativeType] public function getBreakIterator(): IntlBreakIterator {} /** * @since 8.1 */ #[TentativeType] public function getRuleStatus(): int {} } class IntlCodePointBreakIterator extends IntlBreakIterator implements Traversable { /** * (PHP 5 >=5.5.0)
    * Get last code point passed over after advancing or receding the iterator * @link https://secure.php.net/manual/en/intlcodepointbreakiterator.getlastcodepoint.php * @return int */ #[Pure] #[TentativeType] public function getLastCodePoint(): int {} } class UConverter { /* Constants */ public const REASON_UNASSIGNED = 0; public const REASON_ILLEGAL = 1; public const REASON_IRREGULAR = 2; public const REASON_RESET = 3; public const REASON_CLOSE = 4; public const REASON_CLONE = 5; public const UNSUPPORTED_CONVERTER = -1; public const SBCS = 0; public const DBCS = 1; public const MBCS = 2; public const LATIN_1 = 3; public const UTF8 = 4; public const UTF16_BigEndian = 5; public const UTF16_LittleEndian = 6; public const UTF32_BigEndian = 7; public const UTF32_LittleEndian = 8; public const EBCDIC_STATEFUL = 9; public const ISO_2022 = 10; public const LMBCS_1 = 11; public const LMBCS_2 = 12; public const LMBCS_3 = 13; public const LMBCS_4 = 14; public const LMBCS_5 = 15; public const LMBCS_6 = 16; public const LMBCS_8 = 17; public const LMBCS_11 = 18; public const LMBCS_16 = 19; public const LMBCS_17 = 20; public const LMBCS_18 = 21; public const LMBCS_19 = 22; public const LMBCS_LAST = 22; public const HZ = 23; public const SCSU = 24; public const ISCII = 25; public const US_ASCII = 26; public const UTF7 = 27; public const BOCU1 = 28; public const UTF16 = 29; public const UTF32 = 30; public const CESU8 = 31; public const IMAP_MAILBOX = 32; /* Methods */ /** * (PHP 5 >=5.5.0)
    * Create UConverter object * @link https://php.net/manual/en/uconverter.construct.php * @param string $destination_encoding * @param string $source_encoding */ #[Pure] public function __construct( #[LanguageAware(['8.0' => 'string|null'], default: '')] $destination_encoding = null, #[LanguageAware(['8.0' => 'string|null'], default: '')] $source_encoding = null ) {} /** * (PHP 5 >=5.5.0)
    * Convert string from one charset to anothe * @link https://php.net/manual/en/uconverter.convert.php * @param string $str * @param bool $reverse [optional] * @return string|false */ #[Pure] #[TentativeType] public function convert( #[LanguageAware(['8.0' => 'string'], default: '')] $str, #[LanguageAware(['8.0' => 'bool'], default: '')] $reverse = false ): string|false {} /** * (PHP 5 >=5.5.0)
    * Default "from" callback function * @link https://php.net/manual/en/uconverter.fromucallback.php * @param int $reason * @param string $source * @param string $codePoint * @param int &$error * @return array|string|int|null */ #[TentativeType] public function fromUCallback( #[LanguageAware(['8.0' => 'int'], default: '')] $reason, #[LanguageAware(['8.0' => 'array'], default: '')] $source, #[LanguageAware(['8.0' => 'int'], default: '')] $codePoint, &$error ): array|string|int|null {} /** * (PHP 5 >=5.5.0)
    * Get the aliases of the given name * @link https://php.net/manual/en/uconverter.getaliases.php * @param string $name * @return array|false|null */ #[TentativeType] public static function getAliases( #[ElementAvailable(from: '5.5', to: '5.6')] $name = '', #[ElementAvailable(from: '7.0')] #[LanguageAware(['8.0' => 'string'], default: '')] $name ): array|false|null {} /** * (PHP 5 >=5.5.0)
    * Get the available canonical converter names * @link https://php.net/manual/en/uconverter.getavailable.php * @return array */ #[TentativeType] public static function getAvailable(): array {} /** * (PHP 5 >=5.5.0)
    * Get the destination encoding * @link https://php.net/manual/en/uconverter.getdestinationencoding.php * @return string|false|null */ #[Pure] #[TentativeType] public function getDestinationEncoding(): string|false|null {} /** * (PHP 5 >=5.5.0)
    * Get the destination converter type * @link https://php.net/manual/en/uconverter.getdestinationtype.php * @return int|false|null */ #[Pure] #[TentativeType] public function getDestinationType(): int|false|null {} /** * (PHP 5 >=5.5.0)
    * Get last error code on the object * @link https://php.net/manual/en/uconverter.geterrorcode.php * @return int */ #[Pure] #[TentativeType] public function getErrorCode(): int {} /** * (PHP 5 >=5.5.0)
    * Get last error message on the object * @link https://php.net/manual/en/uconverter.geterrormessage.php * @return string|null */ #[Pure] #[TentativeType] public function getErrorMessage(): ?string {} /** * (PHP 5 >=5.5.0)
    * Get the source encoding * @link https://php.net/manual/en/uconverter.getsourceencoding.php * @return string|false|null */ #[Pure] #[TentativeType] public function getSourceEncoding(): string|false|null {} /** * (PHP 5 >=5.5.0)
    * Get the source convertor type * @link https://php.net/manual/en/uconverter.getsourcetype.php * @return int|false|null */ #[Pure] #[TentativeType] public function getSourceType(): int|false|null {} /** * (PHP 5 >=5.5.0)
    * Get standards associated to converter names * @link https://php.net/manual/en/uconverter.getstandards.php * @return array|null */ #[Pure] #[TentativeType] public static function getStandards(): ?array {} /** * (PHP 5 >=5.5.0)
    * Get substitution chars * @link https://php.net/manual/en/uconverter.getsubstchars.php * @return string|false|null */ #[Pure] #[TentativeType] public function getSubstChars(): string|false|null {} /** * (PHP 5 >=5.5.0)
    * Get string representation of the callback reason * @link https://php.net/manual/en/uconverter.reasontext.php * @param int $reason * @return string */ #[Pure] #[TentativeType] public static function reasonText( #[ElementAvailable(from: '5.3', to: '7.4')] $reason = 0, #[ElementAvailable(from: '8.0')] int $reason ): string {} /** * (PHP 5 >=5.5.0)
    * Set the destination encoding * @link https://php.net/manual/en/uconverter.setdestinationencoding.php * @param string $encoding * @return bool */ #[TentativeType] public function setDestinationEncoding(#[LanguageAware(['8.0' => 'string'], default: '')] $encoding): bool {} /** * (PHP 5 >=5.5.0)
    * Set the source encoding * @link https://php.net/manual/en/uconverter.setsourceencoding.php * @param string $encoding * @return bool */ #[TentativeType] public function setSourceEncoding(#[LanguageAware(['8.0' => 'string'], default: '')] $encoding): bool {} /** * (PHP 5 >=5.5.0)
    * Set the substitution chars * @link https://php.net/manual/en/uconverter.setsubstchars.php * @param string $chars * @return bool */ #[TentativeType] public function setSubstChars(#[LanguageAware(['8.0' => 'string'], default: '')] $chars): bool {} /** * (PHP 5 >=5.5.0)
    * Default "to" callback function * @link https://php.net/manual/en/uconverter.toucallback.php * @param int $reason * @param string $source * @param string $codeUnits * @param int &$error * @return array|string|int|null */ #[TentativeType] public function toUCallback( #[LanguageAware(['8.0' => 'int'], default: '')] $reason, #[LanguageAware(['8.0' => 'string'], default: '')] $source, #[LanguageAware(['8.0' => 'string'], default: '')] $codeUnits, &$error ): array|string|int|null {} /** * (PHP 5 >=5.5.0)
    * Convert string from one charset to another * @link https://php.net/manual/en/uconverter.transcode.php * @param string $str * @param string $toEncoding * @param string $fromEncoding * @param array|null $options * @return string|false */ #[TentativeType] public static function transcode( #[LanguageAware(['8.0' => 'string'], default: '')] $str, #[LanguageAware(['8.0' => 'string'], default: '')] $toEncoding, #[LanguageAware(['8.0' => 'string'], default: '')] $fromEncoding, #[LanguageAware(['8.0' => 'array|null'], default: '')] $options = null ): string|false {} } // End of intl v.1.1.0 * The left operand, as a string. *

    * @param string $num2

    * The right operand, as a string. *

    * @param int|null $scale

    * This optional parameter is used to set the number of digits after the * decimal place in the result. If omitted, it will default to the scale * set globally with the {@link bcscale()} function, or fallback to 0 if * this has not been set. *

    * @return string The sum of the two operands, as a string. */ #[Pure] function bcadd(string $num1, string $num2, ?int $scale = null): string {} /** * Subtract one arbitrary precision number from another * @link https://php.net/manual/en/function.bcsub.php * @param string $num1

    * The left operand, as a string. *

    * @param string $num2

    * The right operand, as a string. *

    * @param int|null $scale

    * This optional parameter is used to set the number of digits after the * decimal place in the result. If omitted, it will default to the scale * set globally with the {@link bcscale()} function, or fallback to 0 if * this has not been set. *

    * @return string The result of the subtraction, as a string. */ #[Pure] function bcsub(string $num1, string $num2, ?int $scale = null): string {} /** * Multiply two arbitrary precision numbers * @link https://php.net/manual/en/function.bcmul.php * @param string $num1

    * The left operand, as a string. *

    * @param string $num2

    * The right operand, as a string. *

    * @param int|null $scale

    * This optional parameter is used to set the number of digits after the * decimal place in the result. If omitted, it will default to the scale * set globally with the {@link bcscale()} function, or fallback to 0 if * this has not been set. *

    * @return string the result as a string. */ #[Pure] function bcmul(string $num1, string $num2, ?int $scale = null): string {} /** * Divide two arbitrary precision numbers * @link https://php.net/manual/en/function.bcdiv.php * @param string $num1

    * The dividend, as a string. *

    * @param string $num2

    * The divisor, as a string. *

    * @param int|null $scale [optional]

    * This optional parameter is used to set the number of digits after the * decimal place in the result. If omitted, it will default to the scale * set globally with the {@link bcscale()} function, or fallback to 0 if * this has not been set. *

    * @return string|null the result of the division as a string, or NULL if * divisor is 0. */ #[Pure] #[PhpStormStubsElementAvailable(to: '7.4')] function bcdiv(string $num1, string $num2, ?int $scale = 0): ?string {} /** * Divide two arbitrary precision numbers * @link https://php.net/manual/en/function.bcdiv.php * @param string $num1

    * The dividend, as a string. *

    * @param string $num2

    * The divisor, as a string. *

    * @param int|null $scale [optional]

    * This optional parameter is used to set the number of digits after the * decimal place in the result. If omitted, it will default to the scale * set globally with the {@link bcscale()} function, or fallback to 0 if * this has not been set. *

    * @return string the result of the division as a string. * @throws \DivisionByZeroError if divisor is 0. Available since PHP 8.0. */ #[Pure] #[PhpStormStubsElementAvailable('8.0')] function bcdiv(string $num1, string $num2, ?int $scale = null): string {} /** * Get modulus of an arbitrary precision number * @link https://php.net/manual/en/function.bcmod.php * @param string $num1

    * The dividend, as a string. Since PHP 7.2, the divided is no longer truncated to an integer. *

    * @param string $num2

    * The divisor, as a string. Since PHP 7.2, the divisor is no longer truncated to an integer. *

    * @param int|null $scale [optional]

    * This optional parameter is used to set the number of digits after the * decimal place in the result. If omitted, it will default to the scale * set globally with the {@link bcscale()} function, or fallback to 0 if * this has not been set. Available since PHP 7.2. *

    * @return string|null the modulus as a string, or NULL if * divisor is 0. */ #[Pure] #[PhpStormStubsElementAvailable(to: '7.4')] function bcmod(string $num1, string $num2, ?int $scale = 0): ?string {} /** * Get modulus of an arbitrary precision number * @link https://php.net/manual/en/function.bcmod.php * @param string $num1

    * The dividend, as a string. Since PHP 7.2, the divided is no longer truncated to an integer. *

    * @param string $num2

    * The divisor, as a string. Since PHP 7.2, the divisor is no longer truncated to an integer. *

    * @param int|null $scale [optional]

    * This optional parameter is used to set the number of digits after the * decimal place in the result. If omitted, it will default to the scale * set globally with the {@link bcscale()} function, or fallback to 0 if * this has not been set. Available since PHP 7.2. *

    * @return string the modulus as a string. * @throws \DivisionByZeroError if divisor is 0. Available since PHP 8.0. */ #[Pure] #[PhpStormStubsElementAvailable('8.0')] function bcmod(string $num1, string $num2, ?int $scale = null): string {} /** * Raise an arbitrary precision number to another * @link https://php.net/manual/en/function.bcpow.php * @param string $num

    * The base, as a string. *

    * @param string $exponent

    * The exponent, as a string. If the exponent is non-integral, it is truncated. * The valid range of the exponent is platform specific, but is at least * -2147483648 to 2147483647. *

    * @param int|null $scale

    * This optional parameter is used to set the number of digits after the * decimal place in the result. If omitted, it will default to the scale * set globally with the {@link bcscale()} function, or fallback to 0 if * this has not been set. *

    * @return string the result as a string. */ #[Pure] function bcpow(string $num, string $exponent, ?int $scale = null): string {} /** * Get the square root of an arbitrary precision number * @link https://php.net/manual/en/function.bcsqrt.php * @param string $num

    * The operand, as a string. *

    * @param int|null $scale [optional] * @return string|null the square root as a string, or NULL if * operand is negative. */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "string"], default: "?string")] function bcsqrt(string $num, ?int $scale) {} /** * Set default scale parameter for all bc math functions * @link https://php.net/manual/en/function.bcscale.php * @param int $scale * @return int|bool */ #[LanguageLevelTypeAware(['7.3' => 'int'], default: 'bool')] function bcscale( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.2')] int $scale, #[PhpStormStubsElementAvailable(from: '7.3')] #[LanguageLevelTypeAware(['8.0' => 'int|null'], default: 'int')] $scale = null ) {} /** * Compare two arbitrary precision numbers * @link https://php.net/manual/en/function.bccomp.php * @param string $num1

    * The left operand, as a string. *

    * @param string $num2

    * The right operand, as a string. *

    * @param int|null $scale

    * The optional scale parameter is used to set the * number of digits after the decimal place which will be used in the * comparison. *

    * @return int 0 if the two operands are equal, 1 if the * left_operand is larger than the * right_operand, -1 otherwise. */ #[Pure] function bccomp(string $num1, string $num2, ?int $scale = null): int {} /** * Raise an arbitrary precision number to another, reduced by a specified modulus * @link https://php.net/manual/en/function.bcpowmod.php * @param string $num

    * The base, as an integral string (i.e. the scale has to be zero). *

    * @param string $exponent

    * The exponent, as an non-negative, integral string (i.e. the scale has to be * zero). *

    * @param string $modulus

    * The modulus, as an integral string (i.e. the scale has to be zero). *

    * @param int|null $scale

    * This optional parameter is used to set the number of digits after the * decimal place in the result. If omitted, it will default to the scale * set globally with the {@link bcscale()} function, or fallback to 0 if * this has not been set. *

    * @return string|null the result as a string, or NULL if modulus * is 0 or exponent is negative. */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "string"], default: "?string")] function bcpowmod(string $num, string $exponent, string $modulus, ?int $scale = null) {} /** * @since 8.4 */ function bcfloor(string $num): string {} /** * @since 8.4 */ function bcceil(string $num): string {} /** * @since 8.4 */ function bcround(string $num, int $precision = 0, RoundingMode $mode = RoundingMode::HalfAwayFromZero): string {} = 1.0.1 are `tlsv1.2`, `tlsv1.1` and `tlsv1`. * @param string|null $ciphers A string describing the ciphers available for use. See the `openssl ciphers` tool for more information. If `null`, the default set will be used. * @return int */ public function setTlsOptions($certReqs, $tlsVersion = null, $ciphers = null) {} /** * Configure the client for pre-shared-key based TLS support. Must be called before `connect`. Cannot be used in * conjunction with setTlsCertificates. * * @param string $psk The pre-shared key in hex format with no leading "0x". * @param string $identity The identity of this client. May be used as the username depending on server settings. * @param string|null $ciphers Optional. A string describing the ciphers available for use. See the `openssl ciphers` tool for more information. If `null`, the default set will be used. * @return int */ public function setTlsPSK($psk, $identity, $ciphers = null) {} /** * Set the client “last will and testament”, which will be sent on an unclean disconnection from the broker. * Must be called before `connect`. * * @param string $topic The topic on which to publish the will. * @param string $payload The data to send. * @param int $qos Optional. Default 0. Integer 0, 1, or 2 indicating the Quality of Service to be used. * @param bool $retain Optional. Default false. If true, the message will be retained. */ public function setWill($topic, $payload, $qos = 0, $retain = false) {} /** * Remove a previously-set will. No parameters. */ public function clearWill() {} /** * Control the behaviour of the client when it has unexpectedly disconnected in Client::loopForever(). * The default behaviour if this method is not used is to repeatedly attempt to reconnect with a delay of 1 second * until the connection succeeds. * * @param int $reconnectDelay Set delay between successive reconnection attempts. * @param int $exponentialDelay Set max delay between successive reconnection attempts when exponential backoff is enabled * @param bool $exponentialBackoff Pass `true` to enable exponential backoff */ public function setReconnectDelay($reconnectDelay, $exponentialDelay = 0, $exponentialBackoff = false) {} /** * Connect to an MQTT broker. * * @param string $host Hostname to connect to * @param int $port Optional. Port number to connect to. Defaults to 1883. * @param int $keepalive Optional. Number of sections after which the broker should PING the client if no messages have been received. * @param string|null $interface Optional. The address or hostname of a local interface to bind to for this connection. * @return int */ public function connect($host, $port = 1883, $keepalive = 60, $interface = null) {} /** * Disconnect from the broker. No parameters. */ public function disconnect() {} /** * Set the connect callback. This is called when the broker sends a CONNACK message in response to a connection. * * (int) $rc, (string) $message * function ($rc, $message) {} * * Response codes: * 0 = Success * 1 = Connection refused (unacceptable protocol version) * 2 = Connection refused (identifier rejected) * 3 = Connection refused (broker unavailable) * 4-255 = Reserved for future use * * @param callable $callback */ public function onConnect($callback) {} /** * Set the disconnect callback. This is called when the broker has received the DISCONNECT command and has * disconnected the client. * * (int) $rc * function ($rc) {} * * Response codes: * 0 = requested by client * <0 = indicates an unexpected disconnection. * * @param callable $callback */ public function onDisconnect($callback) {} /** * Set the logging callback. * * (int) $level, (string) $str * function ($level, $str) {} * * Log levels: * Client::LOG_DEBUG * Client::LOG_INFO * Client::LOG_NOTICE * Client::LOG_WARNING * Client::LOG_ERR * * @param callable $callback */ public function onLog($callback) {} /** * Set the subscribe callback. This is called when the broker responds to a subscription request. * * (int) $mid, (int) $qosCount * function ($mid, $qosCount) {} * * @param callable $callback */ public function onSubscribe($callback) {} /** * Set the unsubscribe callback. This is called when the broker responds to a unsubscribe request. * * (int) $mid * function ($mid) {} * * @param callable $callback */ public function onUnsubscribe($callback) {} /** * Set the message callback. This is called when a message is received from the broker. * * (object) $message * function (Mosquitto\Message $message) {} * * @param callable $callback */ public function onMessage($callback) {} /** * Set the publish callback. This is called when a message is published by the client itself. * * Warning: this may be called before the method publish returns the message id, so, you need to create a queue to * deal with the MID list. * * (int) $mid - the message id returned by `publish` * function ($mid) {} * * @param callable $callback */ public function onPublish($callback) {} /** * Set the number of QoS 1 and 2 messages that can be “in flight” at one time. An in flight message is part way * through its delivery flow. Attempts to send further messages with publish will result in the messages * being queued until the number of in flight messages reduces. * * Set to 0 for no maximum. * * @param int $maxInFlightMessages */ public function setMaxInFlightMessages($maxInFlightMessages) {} /** * Set the number of seconds to wait before retrying messages. This applies to publishing messages with QoS > 0. * May be called at any time. * * @param int $messageRetryPeriod The retry period */ public function setMessageRetry($messageRetryPeriod) {} /** * Publish a message on a given topic. * Return the message ID returned by the broker. Warning: the message ID is not unique. * * @param string $topic The topic to publish on * @param string $payload The message payload * @param int $qos Integer value 0, 1 or 2 indicating the QoS for this message * @param bool $retain If true, retain this message * @return int */ public function publish($topic, $payload, $qos = 0, $retain = false) {} /** * Subscribe to a topic. * Return the message ID of the subscription message, so this can be matched up in the `onSubscribe` callback. * * @param string $topic * @param int $qos * @return int */ public function subscribe($topic, $qos) {} /** * Unsubscribe from a topic. * Return the message ID of the subscription message, so this can be matched up in the `onUnsubscribe` callback. * * @param string $topic * @param int $qos * @return int */ public function unsubscribe($topic, $qos) {} /** * The main network loop for the client. You must call this frequently in order to keep communications between * the client and broker working. If incoming data is present it will then be processed. Outgoing commands, * from e.g. `publish`, are normally sent immediately that their function is called, but this is not always possible. * `loop` will also attempt to send any remaining outgoing messages, which also includes commands that are part * of the flow for messages with QoS > 0. * * @param int $timeout Optional. Number of milliseconds to wait for network activity. Pass 0 for instant timeout. */ public function loop($timeout = 1000) {} /** * Call loop() in an infinite blocking loop. Callbacks will be called as required. This will handle reconnecting * if the connection is lost. Call `disconnect` in a callback to disconnect and return from the loop. Alternatively, * call `exitLoop` to exit the loop without disconnecting. You will need to re-enter the loop again afterwards * to maintain the connection. * * @param int $timeout Optional. Number of milliseconds to wait for network activity. Pass 0 for instant timeout. */ public function loopForever($timeout = 1000) {} /** * Exit the `loopForever` event loop without disconnecting. You will need to re-enter the loop afterwards * in order to maintain the connection. */ public function exitLoop() {} } /** * @link https://mosquitto-php.readthedocs.io/en/latest/message.html */ class Message { /** @var string */ public $topic; /** @var string */ public $payload; /** @var int */ public $mid; /** @var int */ public $qos; /** @var bool */ public $retain; /** * Returns true if the supplied topic matches the supplied description, and otherwise false. * * @param string $topic The topic to match * @param string $subscription The subscription to match * @return bool */ public static function topicMatchesSub($topic, $subscription) {} /** * Tokenise a topic or subscription string into an array of strings representing the topic hierarchy. * * @param string $topic * @return array */ public static function tokeniseTopic($topic) {} } /** * @link https://mosquitto-php.readthedocs.io/en/latest/exception.html */ class Exception extends \Exception {} ***NOTE***: * If pq\Connection::$unbuffered is TRUE, each call to pq\Connection::getResult() will generate a distinct pq\Result containing exactly one row. * * @param string $name The identifying name of the cursor. * @param int $flags Any combination of pq\Cursor constants. * @param string $query The query for which to open a cursor. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\RuntimeException * @throws \pq\Exception\BadMethodCallException * @return \pq\Cursor an open cursor instance. */ public function declareAsync(string $name, int $flags, string $query) {} /** * Escape binary data for use within a query with the type bytea. * * ***NOTE:*** * The result is not wrapped in single quotes. * * @param string $binary The binary data to escape. * @throws \pq\Exception\BadMethodCallException * @return string|false string the escaped binary data. * or FALSE if escaping fails. */ public function escapeBytea(string $binary) {} /** * [Execute one or multiple SQL queries](pq/Connection/: Executing Queries) on the connection. * * ***NOTE:*** * Only the last result will be returned, if the query string contains more than one SQL query. * * @param string $query The queries to send to the server, separated by semi-colon. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @throws \pq\Exception\DomainException * @return \pq\Result */ public function exec(string $query) {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) [execute an SQL query](pq/Connection: Executing Queries) on the connection. * * > ***NOTE***: * If pq\Connection::$unbuffered is TRUE, each call to pq\Connection::getResult() will generate a distinct pq\Result containing exactly one row. * * @param string $query The query to send to the server. * @param callable $callback as function(pq\Result $res) * The callback to execute when the query finishes. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function execAsync(string $query, callable $callback = null) {} /** * [Execute an SQL query](pq/Connection: Executing Queries) with properly escaped parameters substituted. * * @param string $query The query to execute. * @param array $params The parameter list to substitute. * @param array $types Corresponding list of type OIDs for the parameters. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\RuntimeException * @throws \pq\Exception\DomainException * @return \pq\Result */ public function execParams(string $query, array $params, array $types = null) {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) [execute an SQL query](pq/Connection: Executing Queries) with properly escaped parameters substituted. * * > ***NOTE***: * If pq\Connection::$unbuffered is TRUE, each call to pq\Connection::getResult() will generate a distinct pq\Result containing exactly one row. * * @param string $query The query to execute. * @param array $params The parameter list to substitute. * @param array $types Corresponding list of type OIDs for the parameters. * @param callable $cb as function(\pq\Result $res) : void * Result handler callback. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\RuntimeException * @throws \pq\Exception\BadMethodCallException */ public function execParamsAsync(string $query, array $params, array $types = null, callable $cb = null) {} /** * Flush pending writes on the connection. * Call after sending any command or data on a nonblocking connection. * * If it returns FALSE, wait for the socket to become read or write-ready. * If it becomes write-ready, call pq\Connection::flush() again. * If it becomes read-ready, call pq\Connection::poll(), then call pq\Connection::flush() again. * Repeat until pq\Connection::flush() returns TRUE. * * ***NOTE:*** * This method was added in v1.1.0, resp. v2.1.0. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\RuntimeException * @return bool whether everything has been flushed. */ public function flush() {} /** * Fetch the result of an [asynchronous](pq/Connection/: Asynchronous Usage) query. * * If the query hasn't finished yet, the call will block until the result is available. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @return \pq\Result|null NULL if there has not been a query * or \pq\Result when the query has finished */ public function getResult() {} /** * Listen on $channel for notifications. * See pq\Connection::unlisten(). * * @param string $channel The channel to listen on. * @param callable $listener as function(string $channel, string $message, int $pid) * A callback automatically called whenever a notification on $channel arrives. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function listen(string $channel, callable $listener) {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) start listening on $channel for notifications. * See pq\Connection::listen(). * * @param string $channel The channel to listen on. * @param callable $listener as function(string $channel, string $message, int $pid) * A callback automatically called whenever a notification on $channel arrives. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function listenAsync(string $channel, callable $listener) {} /** * Notify all listeners on $channel with $message. * * @param string $channel The channel to notify. * @param string $message The message to send. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function notify(string $channel, string $message) {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) start notifying all listeners on $channel with $message. * * @param string $channel The channel to notify. * @param string $message The message to send. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function notifyAsync(string $channel, string $message) {} /** * Stops listening for an event type. * * @param string $event Any pq\Connection::EVENT_*. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @return bool success. */ public function off(string $event) {} /** * Listen for an event. * * @param string $event Any pq\Connection::EVENT_*. * @param callable $callback as function(pq\Connection $c[, pq\Result $r) * The callback to invoke on event. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @return int number of previously attached event listeners. */ public function on(string $event, callable $callback) {} /** * Poll an [asynchronously](pq/Connection/: Asynchronous Usage) operating connection. * See pq\Connection::resetAsync() for an usage example. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\RuntimeException * @throws \pq\Exception\BadMethodCallException * @return int pq\Connection::POLLING_* constant */ public function poll() {} /** * Prepare a named statement for later execution with pq\Statement::execute(). * * @param string $name The identifying name of the prepared statement. * @param string $query The query to prepare. * @param array $types An array of type OIDs for the substitution parameters. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return \pq\Statement a prepared statement instance. */ public function prepare(string $name, string $query, array $types = null) {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) prepare a named statement for later execution with pq\Statement::exec(). * * > ***NOTE***: * If pq\Connection::$unbuffered is TRUE, each call to pq\Connection::getResult() will generate a distinct pq\Result containing exactly one row. * * @param string $name The identifying name of the prepared statement. * @param string $query The query to prepare. * @param array $types An array of type OIDs for the substitution parameters. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return \pq\Statement a prepared statement instance. */ public function prepareAsync(string $name, string $query, array $types = null) {} /** * Quote a string for safe use in a query. * The result is truncated at any zero byte and wrapped in single quotes. * * ***NOTE:*** * Beware of matching character encodings. * * @param string $payload The payload to quote for use in a query. * @throws \pq\Exception\BadMethodCallException * @return string|false string a single-quote wrapped string safe for literal use in a query. * or FALSE if quoting fails. */ public function quote(string $payload) {} /** * Quote an identifier for safe usage as name. * * ***NOTE:*** * Beware of case-sensitivity. * * @param string $name The name to quote. * @throws \pq\Exception\BadMethodCallException * @return string|false string the quoted identifier. * or FALSE if quoting fails. */ public function quoteName(string $name) {} /** * Attempt to reset a possibly broken connection to a working state. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function reset() {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) reset a possibly broken connection to a working state. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function resetAsync() {} /** * Set a data type converter. * * @param \pq\Converter $converter An instance implementing pq\Converter. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException */ public function setConverter(Converter $converter) {} /** * Begin a transaction. * * @param int $isolation Any pq\Transaction isolation level constant * (defaults to pq\Connection::$defaultTransactionIsolation). * @param bool $readonly Whether the transaction executes only reads * (defaults to pq\Connection::$defaultTransactionReadonly). * @param bool $deferrable Whether the transaction is deferrable * (defaults to pq\Connection::$defaultTransactionDeferrable). * * ***NOTE:*** * A transaction can only be deferrable if it also is readonly and serializable. * See the official [PostgreSQL documentation](http://www.postgresql.org/docs/current/static/sql-set-transaction.html) for further information. * * @return \pq\Transaction a begun transaction instance. * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @throws \pq\Exception\InvalidArgumentException */ public function startTransaction(int $isolation = \pq\Transaction::READ_COMMITTED, bool $readonly = false, bool $deferrable = false) {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) begin a transaction. * * @param int $isolation Any pq\Transaction isolation level constant * (defaults to pq\Connection::$defaultTransactionIsolation). * @param bool $readonly Whether the transaction executes only reads * (defaults to pq\Connection::$defaultTransactionReadonly). * @param bool $deferrable Whether the transaction is deferrable * (defaults to pq\Connection::$defaultTransactionDeferrable). * * ***NOTE:*** * A transaction can only be deferrable if it also is readonly and serializable. * See the official [PostgreSQL documentation](http://www.postgresql.org/docs/current/static/sql-set-transaction.html) for further information. * * @return \pq\Transaction an asynchronously begun transaction instance. * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @throws \pq\Exception\InvalidArgumentException */ public function startTransactionAsync(int $isolation = \pq\Transaction::READ_COMMITTED, bool $readonly = false, bool $deferrable = false) {} /** * Trace protocol communication with the server. * * ***NOTE:*** * Calling pq\Connection::trace() without argument or NULL stops tracing. * * @param resource $stream The resource to which the protocol trace will be output. * (The stream must be castable to STDIO). * @throws \pq\Exception\BadMethodCallException * @return bool success. */ public function trace($stream = null) {} /** * Unescape bytea data retrieved from the server. * * @param string $bytea Bytea data retrieved from the server. * @throws \pq\Exception\BadMethodCallException * @return string|false string unescaped binary data. * or FALSE if unescaping fails. */ public function unescapeBytea(string $bytea) {} /** * Stop listening for notifications on channel $channel. * See pq\Connection::listen(). * * @param string $channel The name of a channel which is currently listened on. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function unlisten(string $channel) {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) stop listening for notifications on channel $channel. * See pq\Connection::unlisten() and pq\Connection::listenAsync(). * * @param string $channel The name of a channel which is currently listened on. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function unlistenAsync(string $channel) {} /** * Stop applying a data type converter. * * @param \pq\Converter $converter A converter previously set with pq\Connection::setConverter(). * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException */ public function unsetConverter(Converter $converter) {} } /** * Interface for type conversions. */ interface Converter { /** * Convert a string received from the PostgreSQL server back to a PHP type. * * @param string $data String data received from the server. * @param int $type The type OID of the data. Irrelevant for single-type converters. * @return mixed the value converted to a PHP type. */ public function convertFromString(string $data, int $type); /** * Convert a value to a string for use in a query. * * @param mixed $value The PHP value which should be converted to a string. * @param int $type The type OID the converter should handle. Irrelevant for singly-type converters. * @return string a textual representation of the value accepted by the PostgreSQL server. */ public function convertToString($value, int $type); /** * Announce which types the implementing converter can handle. * * @return array OIDs of handled types. */ public function convertTypes(); } /** * Declare a cursor. */ class Cursor { /** * Causes the cursor to return data in binary rather than in text format. You probably do not want to use that. */ public const BINARY = 1; /** * The data returned by the cursor should be unaffected by updates to the tables underlying the cursor that take place after the cursor was opened. */ public const INSENSITIVE = 2; /** * The cursor should stay usable after the transaction that created it was successfully committed. */ public const WITH_HOLD = 4; /** * Force that rows can be retrieved in any order from the cursor. */ public const SCROLL = 16; /** * Force that rows are only retrievable in sequiential order. * * ***NOTE:*** * See the [notes in the official PostgreSQL documentation](http://www.postgresql.org/docs/current/static/sql-declare.html#SQL-DECLARE-NOTES) for more information. */ public const NO_SCROLL = 32; /** * The connection the cursor was declared on. * * @public * @readonly * @var \pq\Connection */ public $connection; /** * The identifying name of the cursor. * * @public * @readonly * @var string */ public $name; /** * Declare a cursor. * See pq\Connection::declare(). * * @param \pq\Connection $connection The connection on which the cursor should be declared. * @param string $name The name of the cursor. * @param int $flags See pq\Cursor constants. * @param string $query The query for which the cursor should be opened. * @param bool $async Whether to declare the cursor [asynchronously](pq/Connection/: Asynchronous Usage). * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function __construct(Connection $connection, string $name, int $flags, string $query, bool $async) {} /** * Close an open cursor. * This is a no-op on already closed cursors. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function close() {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) close an open cursor. * See pq\Cursor::close(). * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function closeAsync() {} /** * Fetch rows from the cursor. * See pq\Cursor::move(). * * @param string $spec What to fetch. * * ### Fetch argument: * * FETCH and MOVE usually accepts arguments like the following, where `count` is the number of rows: * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return \pq\Result the fetched row(s). */ public function fetch(string $spec = "1") {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) fetch rows from the cursor. * See pq\Cursor::fetch(). * * @param string $spec What to fetch. * @param callable $callback as function(pq\Result $res) * A callback to execute when the result is ready. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function fetchAsync(string $spec = "1", callable $callback = null) {} /** * Move the cursor. * See pq\Cursor::fetch(). * * @param string $spec What to fetch. * * ### Fetch argument: * * FETCH and MOVE usually accepts arguments like the following, where `count` is the number of rows: * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return \pq\Result command status. */ public function move(string $spec = "1") {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) move the cursor. * See pq\Cursor::move(). * * @param string $spec What to fetch. * @param callable $callback as function(pq\Result $res) * A callback to execute when the command completed. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function moveAsync(string $spec = "1", callable $callback = null) {} /** * Reopen a cursor. * This is a no-op on already open cursors. * * ***NOTE:*** * Only cursors closed by pq\Cursor::close() will be reopened. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function open() {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) reopen a cursor. * See pq\Cursor::open(). * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function openAsync() {} } /** * A simple DateTime wrapper with predefined formats which supports stringification and JSON. */ class DateTime extends \DateTime implements \JsonSerializable { /** * The default format of any date/time type automatically converted by pq\Result (depends on the actual type of the column). * * @public * @var string */ public $format = "Y-m-d H:i:s.uO"; /** * Stringify the DateTime instance according to pq\DateTime::$format. * * @return string the DateTime as string. */ public function __toString() {} /** * Serialize to JSON. * Alias of pq\DateTime::__toString(). * * @return string the DateTime stringified according to pq\DateTime::$format. */ public function jsonSerialize() {} } /** * A base interface for all pq\Exception classes. */ interface Exception { /** * An invalid argument was passed to a method (pq\Exception\InvalidArgumentException). */ public const INVALID_ARGUMENT = 0; /** * A runtime exception occurred (pq\Exception\RuntimeException). */ public const RUNTIME = 1; /** * The connection failed (pq\Exception\RuntimeException). */ public const CONNECTION_FAILED = 2; /** * An input/output exception occurred (pq\Exception\RuntimeException). */ public const IO = 3; /** * Escaping an argument or identifier failed internally (pq\Exception\RuntimeException). */ public const ESCAPE = 4; /** * An object's constructor was not called (pq\Exception\BadMethodCallException). */ public const UNINITIALIZED = 6; /** * Calling this method was not expected (yet) (pq\Exception\BadMethodCallException). */ public const BAD_METHODCALL = 5; /** * SQL syntax error (pq\Exception\DomainException). */ public const SQL = 8; /** * Implementation domain error (pq\Exception\DomainException). */ public const DOMAIN = 7; } /** * A *large object*. * * ***NOTE:*** * Working with *large objects* requires an active transaction. */ class LOB { /** * 0, representing an invalid OID. */ public const INVALID_OID = 0; /** * Read/write mode. */ public const RW = 393216; /** * The transaction wrapping the operations on the *large object*. * * @public * @readonly * @var \pq\Transaction */ public $transaction; /** * The OID of the *large object*. * * @public * @readonly * @var int */ public $oid; /** * The stream connected to the *large object*. * * @public * @readonly * @var resource */ public $stream; /** * Open or create a *large object*. * See pq\Transaction::openLOB() and pq\Transaction::createLOB(). * * @param \pq\Transaction $txn The transaction which wraps the *large object* operations. * @param int $oid The OID of the existing *large object* to open. * @param int $mode Access mode (read, write or read/write). * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function __construct(Transaction $txn, int $oid = \pq\LOB::INVALID_OID, int $mode = \pq\LOB::RW) {} /** * Read a string of data from the current position of the *large object*. * * @param int $length The amount of bytes to read from the *large object*. * @param int &$read The amount of bytes actually read from the *large object*. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return string the data read. */ public function read(int $length = 0x1000, int &$read = null) {} /** * Seek to a position within the *large object*. * * @param int $offset The position to seek to. * @param int $whence From where to seek (SEEK_SET, SEEK_CUR or SEEK_END). * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return int the new position. */ public function seek(int $offset, int $whence = SEEK_SET) {} /** * Retrieve the current position within the *large object*. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return int the current position. */ public function tell() {} /** * Truncate the *large object*. * * @param int $length The length to truncate to. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function truncate(int $length = 0) {} /** * Write data to the *large object*. * * @param string $data The data that should be written to the current position. * @return int the number of bytes written. */ public function write(string $data) {} } /** * A query result. * * See [Fetching Results](pq/Result/: Fetching Results) for a general overview. */ class Result implements \Traversable, \Countable { /** * The query sent to the server was empty. */ public const EMPTY_QUERY = 0; /** * The query did not generate a result set and completed successfully. */ public const COMMAND_OK = 1; /** * The query successfully generated a result set. */ public const TUPLES_OK = 2; /** * The result contains a single row of the result set when using pq\Connection::$unbuffered. */ public const SINGLE_TUPLE = 9; /** * COPY data can be received from the server. */ public const COPY_OUT = 3; /** * COPY data can be sent to the server. */ public const COPY_IN = 4; /** * COPY in/out data transfer in progress. */ public const COPY_BOTH = 8; /** * The server sent a bad response. */ public const BAD_RESPONSE = 5; /** * A nonfatal error (notice or warning) occurred. */ public const NONFATAL_ERROR = 6; /** * A fatal error occurred. */ public const FATAL_ERROR = 7; /** * Fetch rows numerically indexed, where the index start with 0. */ public const FETCH_ARRAY = 0; /** * Fetch rows associatively indexed by column name. */ public const FETCH_ASSOC = 1; /** * Fetch rows as stdClass instance, where the column names are the property names. */ public const FETCH_OBJECT = 2; /** * Automatically convert 'f' and 't' to FALSE and TRUE and vice versa. */ public const CONV_BOOL = 1; /** * Automatically convert integral strings to either int if it fits into maximum integer size or else to float and vice versa. */ public const CONV_INT = 2; /** * Automatically convert floating point numbers. */ public const CONV_FLOAT = 4; /** * Do all scalar conversions listed above. */ public const CONV_SCALAR = 15; /** * Automatically convert arrays. */ public const CONV_ARRAY = 16; /** * Automatically convert date strings to pq\DateTime and vice versa. */ public const CONV_DATETIME = 32; /** * Automatically convert JSON. */ public const CONV_JSON = 256; /** * Do all of the above. */ public const CONV_ALL = 65535; /** * A [status constant](pq/Result#Status.values:). * * @public * @readonly * @var int */ public $status; /** * The accompanying status message. * * @public * @readonly * @var string */ public $statusMessage; /** * Any error message if $status indicates an error. * * @public * @readonly * @var string */ public $errorMessage; /** * The number of rows in the result set. * * @public * @readonly * @var int */ public $numRows; /** * The number of fields in a single tuple of the result set. * * @public * @readonly * @var int */ public $numCols; /** * The number of rows affected by a statement. * * @public * @readonly * @var int */ public $affectedRows; /** * Error details. See [PQresultErrorField](https://www.postgresql.org/docs/current/static/libpq-exec.html#LIBPQ-PQRESULTERRORFIELD) docs. * * @public * @readonly * @var array */ public $diag; /** * The [type of return value](pq/Result#Fetch.types:) the fetch methods should return when no fetch type argument was given. Defaults to pq\Connection::$defaultFetchType. * * @public * @var int */ public $fetchType = \pq\Result::FETCH_ARRAY; /** * What [type of conversions](pq/Result#Conversion.bits:) to perform automatically. * * @public * @var int */ public $autoConvert = \pq\Result::CONV_ALL; /** * Bind a variable to a result column. * See pq\Result::fetchBound(). * * @param mixed $col The column name or index to bind to. * @param mixed $var The variable reference. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @return bool success. */ public function bind($col, $var) {} /** * Count number of rows in this result set. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @return int the number of rows. */ public function count() {} /** * Describe a prepared statement. * * ***NOTE:*** * This will only return meaningful information for a result of pq\Statement::desc(). * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @return array list of parameter type OIDs for the prepared statement. */ public function desc() {} /** * Fetch all rows at once. * * @param int $fetch_type The type the return value should have, see pq\Result::FETCH_* constants, defaults to pq\Result::$fetchType. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @return array all fetched rows. */ public function fetchAll(int $fetch_type = null) {} /** * Fetch all rows of a single column. * * @param int $col The column name or index to fetch. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return array list of column values. */ public function fetchAllCols(int $col = 0) {} /** * Iteratively fetch a row into bound variables. * See pq\Result::bind(). * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return array|null array the fetched row as numerically indexed array. * or NULL when iteration ends. */ public function fetchBound() {} /** * Iteratively fetch a single column. * * @param mixed $ref The variable where the column value will be stored in. * @param mixed $col The column name or index. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return bool|null bool success. * or NULL when iteration ends. */ public function fetchCol($ref, $col = 0) {} /** * Iteratively fetch a row. * * @param int $fetch_type The type the return value should have, see pq\Result::FETCH_* constants, defaults to pq\Result::$fetchType. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return array|array|object|null array numerically indexed for pq\Result::FETCH_ARRAY * or array associatively indexed for pq\Result::FETCH_ASSOC * or object stdClass instance for pq\Result::FETCH_OBJECT * or NULL when iteration ends. */ public function fetchRow(int $fetch_type = null) {} /** * Fetch the complete result set as a simple map, a *multi dimensional array*, each dimension indexed by a column. * * @param mixed $keys The the column indices/names used to index the map. * @param mixed $vals The column indices/names which should build up the leaf entry of the map. * @param int $fetch_type The type the return value should have, see pq\Result::FETCH_* constants, defaults to pq\Result::$fetchType. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return array|object the mapped columns. */ public function map($keys = 0, $vals = null, int $fetch_type = null) {} } /** * A named prepared statement. * See pq\Connection::prepare(). */ class Statement { /** * The connection to the server. * * @public * @readonly * @var \pq\Connection */ public $connection; /** * The identifiying name of the prepared statement. * * @public * @readonly * @var string */ public $name; /** * The query string used to prepare the statement. * * @public * @readonly * @var string */ public $query; /** * List of corresponding query parameter type OIDs for the prepared statement. * * @public * @readonly * @var array */ public $types; /** * Prepare a new statement. * See pq\Connection::prepare(). * * @param \pq\Connection $conn The connection to prepare the statement on. * @param string $name The name identifying this statement. * @param string $query The actual query to prepare. * @param array $types A list of corresponding query parameter type OIDs. * @param bool $async Whether to prepare the statement [asynchronously](pq/Connection/: Asynchronous Usage). * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @throws \pq\Exception\DomainException */ public function __construct(Connection $conn, string $name, string $query, array $types = null, bool $async = false) {} /** * Bind a variable to an input parameter. * * @param int $param_no The parameter index to bind to. * @param mixed &$param_ref The variable to bind. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException */ public function bind(int $param_no, &$param_ref) {} /** * Free the server resources used by the prepared statement, so it can no longer be executed. * This is done implicitly when the object is destroyed. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function deallocate() {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) free the server resources used by the * prepared statement, so it can no longer be executed. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function deallocateAsync() {} /** * Describe the parameters of the prepared statement. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @throws \pq\Exception\DomainException * @return array list of type OIDs of the substitution parameters. */ public function desc() {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) describe the parameters of the prepared statement. * * @param callable $callback as function(array $oids) * A callback to receive list of type OIDs of the substitution parameters. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function descAsync(callable $callback) {} /** * Execute the prepared statement. * * @param array $params Any parameters to substitute in the prepared statement (defaults to any bou * nd variables). * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return \pq\Result the result of the execution of the prepared statement. */ public function exec(array $params = null) {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) execute the prepared statement. * * @param array $params Any parameters to substitute in the prepared statement (defaults to any bou * nd variables). * @param callable $cb as function(\pq\Result $res) : void * Result handler callback. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function execAsync(array $params = null, callable $cb = null) {} /** * Re-prepare a statement that has been deallocated. This is a no-op on already open statements. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function prepare() {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) re-prepare a statement that has been * deallocated. This is a no-op on already open statements. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function prepareAsync() {} } /** * A database transaction. * * ***NOTE:*** * Transactional properties like pq\Transaction::$isolation, pq\Transaction::$readonly and pq\Transaction::$deferrable can be changed after the transaction begun and the first query has been executed. Doing this will lead to appropriate `SET TRANSACTION` queries. */ class Transaction { /** * Transaction isolation level where only rows committed before the transaction began can be seen. */ public const READ_COMMITTED = 0; /** * Transaction isolation level where only rows committed before the first query was executed in this transaction. */ public const REPEATABLE_READ = 1; /** * Transaction isolation level that guarantees serializable repeatability which might lead to serialization_failure on high concurrency. */ public const SERIALIZABLE = 2; /** * The connection the transaction was started on. * * @public * @readonly * @var \pq\Connection */ public $connection; /** * The transaction isolation level. * * @public * @var int */ public $isolation = \pq\Transaction::READ_COMMITTED; /** * Whether this transaction performs read only queries. * * @public * @var bool */ public $readonly = false; /** * Whether the transaction is deferrable. See pq\Connection::startTransaction(). * * @public * @var bool */ public $deferrable = false; /** * Start a transaction. * See pq\Connection::startTransaction(). * * @param \pq\Connection $conn The connection to start the transaction on. * @param bool $async Whether to start the transaction [asynchronously](pq/Connection/: Asynchronous Usage). * @param int $isolation The transaction isolation level (defaults to pq\Connection::$defaultTransactionIsolation). * @param bool $readonly Whether the transaction is readonly (defaults to pq\Connection::$defaultTransactionReadonly). * @param bool $deferrable Whether the transaction is deferrable (defaults to pq\Connection::$defaultTransactionDeferrable). * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function __construct(Connection $conn, bool $async = false, int $isolation = \pq\Transaction::READ_COMMITTED, bool $readonly = false, bool $deferrable = false) {} /** * Commit the transaction or release the previous savepoint. * See pq\Transaction::savepoint(). * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @throws \pq\Exception\DomainException */ public function commit() {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) commit the transaction or release the previous savepoint. * See pq\Transaction::commit() and pq\Transaction::savepoint(). * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function commitAsync() {} /** * Create a new *large object* and open it. * See pq\Transaction::openLOB(). * * @param int $mode How to open the *large object* (read, write or both; see pq\LOB constants). * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return \pq\LOB instance of the new *large object*. */ public function createLOB(int $mode = \pq\LOB::RW) {} /** * Export a *large object* to a local file. * See pq\Transaction::importLOB(). * * @param int $oid The OID of the *large object*. * @param string $path The path of a local file to export to. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function exportLOB(int $oid, string $path) {} /** * Export a snapshot for transaction synchronization. * See pq\Transaction::importSnapshot(). * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @throws \pq\Exception\DomainException * @return string the snapshot identifier usable with pq\Transaction::importSnapshot(). */ public function exportSnapshot() {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) export a snapshot for transaction synchronization. * See pq\Transaction::exportSnapshot(). * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function exportSnapshotAsync() {} /** * Import a local file into a *large object*. * * @param string $local_path A path to a local file to import. * @param int $oid The target OID. A new *large object* will be created if INVALID_OID. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return int the (new) OID of the *large object*. */ public function importLOB(string $local_path, int $oid = \pq\LOB::INVALID_OID) {} /** * Import a snapshot from another transaction to synchronize with. * See pq\Transaction::exportSnapshot(). * * ***NOTE:*** * The transaction must have an isolation level of at least pq\Transaction::REPEATABLE_READ. * * @param string $snapshot_id The snapshot identifier obtained by exporting a snapshot from a transaction. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @throws \pq\Exception\DomainException */ public function importSnapshot(string $snapshot_id) {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) import a snapshot from another transaction to synchronize with. * See pq\Transaction::importSnapshot(). * * ***NOTE:*** * The transaction must have an isolation level of at least pq\Transaction::REPEATABLE_READ. * * @param string $snapshot_id The snapshot identifier obtained by exporting a snapshot from a transaction. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function importSnapshotAsync(string $snapshot_id) {} /** * Open a *large object*. * See pq\Transaction::createLOB(). * * @param int $oid The OID of the *large object*. * @param int $mode Operational mode; read, write or both. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return \pq\LOB instance of the opened *large object*. */ public function openLOB(int $oid, int $mode = \pq\LOB::RW) {} /** * Rollback the transaction or to the previous savepoint within this transaction. * See pq\Transaction::commit() and pq\Transaction::savepoint(). * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @throws \pq\Exception\DomainException */ public function rollback() {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) rollback the transaction or to the previous savepoint within this transaction. * See pq\Transaction::rollback() and pq\Transaction::savepoint(). * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function rollbackAsync() {} /** * Create a `SAVEPOINT` within this transaction. * * ***NOTE:*** * pq\Transaction tracks an internal counter as savepoint identifier. * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function savepoint() {} /** * [Asynchronously](pq/Connection/: Asynchronous Usage) create a `SAVEPOINT` within this transaction. * See pq\Transaction::savepoint(). * * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function savepointAsync() {} /** * Unlink a *large object*. * See pq\Transaction::createLOB(). * * @param int $oid The OID of the *large object*. * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException * @return \pq\LOB instance of the opened *large object*. */ public function unlinkLOB(int $oid) {} } /** * Accessor to the PostgreSQL `pg_type` relation. * See [here for an overview](pq/Types/: Overview). */ class Types implements \ArrayAccess { /** * OID of the `bool` type. */ public const BOOL = 16; /** * OID of the `bytea` type. */ public const BYTEA = 17; /** * OID of the `char` type. */ public const CHAR = 18; /** * OID of the `name` type. */ public const NAME = 19; /** * OID of the `int8` type. */ public const INT8 = 20; /** * OID of the `int2` type. */ public const INT2 = 21; /** * OID of the `int2vector` type. */ public const INT2VECTOR = 22; /** * OID of the `int4` type. */ public const INT4 = 23; /** * OID of the `regproc` type. */ public const REGPROC = 24; /** * OID of the `text` type. */ public const TEXT = 25; /** * OID of the `oid` type. */ public const OID = 26; /** * OID of the `tid` type. */ public const TID = 27; /** * OID of the `xid` type. */ public const XID = 28; /** * OID of the `cid` type. */ public const CID = 29; /** * OID of the `oidvector` type. */ public const OIDVECTOR = 30; /** * OID of the `pg_type` type. */ public const PG_TYPE = 71; /** * OID of the `pg_attribute` type. */ public const PG_ATTRIBUTE = 75; /** * OID of the `pg_proc` type. */ public const PG_PROC = 81; /** * OID of the `pg_class` type. */ public const PG_CLASS = 83; /** * OID of the `json` type. */ public const JSON = 114; /** * OID of the `xml` type. */ public const XML = 142; /** * OID of the `xmlarray` type. */ public const XMLARRAY = 143; /** * OID of the `jsonarray` type. */ public const JSONARRAY = 199; /** * OID of the `pg_node_tree` type. */ public const PG_NODE_TREE = 194; /** * OID of the `smgr` type. */ public const SMGR = 210; /** * OID of the `point` type. */ public const POINT = 600; /** * OID of the `lseg` type. */ public const LSEG = 601; /** * OID of the `path` type. */ public const PATH = 602; /** * OID of the `box` type. */ public const BOX = 603; /** * OID of the `polygon` type. */ public const POLYGON = 604; /** * OID of the `line` type. */ public const LINE = 628; /** * OID of the `linearray` type. */ public const LINEARRAY = 629; /** * OID of the `float4` type. */ public const FLOAT4 = 700; /** * OID of the `float8` type. */ public const FLOAT8 = 701; /** * OID of the `abstime` type. */ public const ABSTIME = 702; /** * OID of the `reltime` type. */ public const RELTIME = 703; /** * OID of the `tinterval` type. */ public const TINTERVAL = 704; /** * OID of the `unknown` type. */ public const UNKNOWN = 705; /** * OID of the `circle` type. */ public const CIRCLE = 718; /** * OID of the `circlearray` type. */ public const CIRCLEARRAY = 719; /** * OID of the `money` type. */ public const MONEY = 790; /** * OID of the `moneyarray` type. */ public const MONEYARRAY = 791; /** * OID of the `macaddr` type. */ public const MACADDR = 829; /** * OID of the `inet` type. */ public const INET = 869; /** * OID of the `cidr` type. */ public const CIDR = 650; /** * OID of the `boolarray` type. */ public const BOOLARRAY = 1000; /** * OID of the `byteaarray` type. */ public const BYTEAARRAY = 1001; /** * OID of the `chararray` type. */ public const CHARARRAY = 1002; /** * OID of the `namearray` type. */ public const NAMEARRAY = 1003; /** * OID of the `int2array` type. */ public const INT2ARRAY = 1005; /** * OID of the `int2vectorarray` type. */ public const INT2VECTORARRAY = 1006; /** * OID of the `int4array` type. */ public const INT4ARRAY = 1007; /** * OID of the `regprocarray` type. */ public const REGPROCARRAY = 1008; /** * OID of the `textarray` type. */ public const TEXTARRAY = 1009; /** * OID of the `oidarray` type. */ public const OIDARRAY = 1028; /** * OID of the `tidarray` type. */ public const TIDARRAY = 1010; /** * OID of the `xidarray` type. */ public const XIDARRAY = 1011; /** * OID of the `cidarray` type. */ public const CIDARRAY = 1012; /** * OID of the `oidvectorarray` type. */ public const OIDVECTORARRAY = 1013; /** * OID of the `bpchararray` type. */ public const BPCHARARRAY = 1014; /** * OID of the `varchararray` type. */ public const VARCHARARRAY = 1015; /** * OID of the `int8array` type. */ public const INT8ARRAY = 1016; /** * OID of the `pointarray` type. */ public const POINTARRAY = 1017; /** * OID of the `lsegarray` type. */ public const LSEGARRAY = 1018; /** * OID of the `patharray` type. */ public const PATHARRAY = 1019; /** * OID of the `boxarray` type. */ public const BOXARRAY = 1020; /** * OID of the `float4array` type. */ public const FLOAT4ARRAY = 1021; /** * OID of the `float8array` type. */ public const FLOAT8ARRAY = 1022; /** * OID of the `abstimearray` type. */ public const ABSTIMEARRAY = 1023; /** * OID of the `reltimearray` type. */ public const RELTIMEARRAY = 1024; /** * OID of the `tintervalarray` type. */ public const TINTERVALARRAY = 1025; /** * OID of the `polygonarray` type. */ public const POLYGONARRAY = 1027; /** * OID of the `aclitem` type. */ public const ACLITEM = 1033; /** * OID of the `aclitemarray` type. */ public const ACLITEMARRAY = 1034; /** * OID of the `macaddrarray` type. */ public const MACADDRARRAY = 1040; /** * OID of the `inetarray` type. */ public const INETARRAY = 1041; /** * OID of the `cidrarray` type. */ public const CIDRARRAY = 651; /** * OID of the `cstringarray` type. */ public const CSTRINGARRAY = 1263; /** * OID of the `bpchar` type. */ public const BPCHAR = 1042; /** * OID of the `varchar` type. */ public const VARCHAR = 1043; /** * OID of the `date` type. */ public const DATE = 1082; /** * OID of the `time` type. */ public const TIME = 1083; /** * OID of the `timestamp` type. */ public const TIMESTAMP = 1114; /** * OID of the `timestamparray` type. */ public const TIMESTAMPARRAY = 1115; /** * OID of the `datearray` type. */ public const DATEARRAY = 1182; /** * OID of the `timearray` type. */ public const TIMEARRAY = 1183; /** * OID of the `timestamptz` type. */ public const TIMESTAMPTZ = 1184; /** * OID of the `timestamptzarray` type. */ public const TIMESTAMPTZARRAY = 1185; /** * OID of the `interval` type. */ public const INTERVAL = 1186; /** * OID of the `intervalarray` type. */ public const INTERVALARRAY = 1187; /** * OID of the `numericarray` type. */ public const NUMERICARRAY = 1231; /** * OID of the `timetz` type. */ public const TIMETZ = 1266; /** * OID of the `timetzarray` type. */ public const TIMETZARRAY = 1270; /** * OID of the `bit` type. */ public const BIT = 1560; /** * OID of the `bitarray` type. */ public const BITARRAY = 1561; /** * OID of the `varbit` type. */ public const VARBIT = 1562; /** * OID of the `varbitarray` type. */ public const VARBITARRAY = 1563; /** * OID of the `numeric` type. */ public const NUMERIC = 1700; /** * OID of the `refcursor` type. */ public const REFCURSOR = 1790; /** * OID of the `refcursorarray` type. */ public const REFCURSORARRAY = 2201; /** * OID of the `regprocedure` type. */ public const REGPROCEDURE = 2202; /** * OID of the `regoper` type. */ public const REGOPER = 2203; /** * OID of the `regoperator` type. */ public const REGOPERATOR = 2204; /** * OID of the `regclass` type. */ public const REGCLASS = 2205; /** * OID of the `regtype` type. */ public const REGTYPE = 2206; /** * OID of the `regprocedurearray` type. */ public const REGPROCEDUREARRAY = 2207; /** * OID of the `regoperarray` type. */ public const REGOPERARRAY = 2208; /** * OID of the `regoperatorarray` type. */ public const REGOPERATORARRAY = 2209; /** * OID of the `regclassarray` type. */ public const REGCLASSARRAY = 2210; /** * OID of the `regtypearray` type. */ public const REGTYPEARRAY = 2211; /** * OID of the `uuid` type. */ public const UUID = 2950; /** * OID of the `uuidarray` type. */ public const UUIDARRAY = 2951; /** * OID of the `tsvector` type. */ public const TSVECTOR = 3614; /** * OID of the `gtsvector` type. */ public const GTSVECTOR = 3642; /** * OID of the `tsquery` type. */ public const TSQUERY = 3615; /** * OID of the `regconfig` type. */ public const REGCONFIG = 3734; /** * OID of the `regdictionary` type. */ public const REGDICTIONARY = 3769; /** * OID of the `tsvectorarray` type. */ public const TSVECTORARRAY = 3643; /** * OID of the `gtsvectorarray` type. */ public const GTSVECTORARRAY = 3644; /** * OID of the `tsqueryarray` type. */ public const TSQUERYARRAY = 3645; /** * OID of the `regconfigarray` type. */ public const REGCONFIGARRAY = 3735; /** * OID of the `regdictionaryarray` type. */ public const REGDICTIONARYARRAY = 3770; /** * OID of the `txid_snapshot` type. */ public const TXID_SNAPSHOT = 2970; /** * OID of the `txid_snapshotarray` type. */ public const TXID_SNAPSHOTARRAY = 2949; /** * OID of the `int4range` type. */ public const INT4RANGE = 3904; /** * OID of the `int4rangearray` type. */ public const INT4RANGEARRAY = 3905; /** * OID of the `numrange` type. */ public const NUMRANGE = 3906; /** * OID of the `numrangearray` type. */ public const NUMRANGEARRAY = 3907; /** * OID of the `tsrange` type. */ public const TSRANGE = 3908; /** * OID of the `tsrangearray` type. */ public const TSRANGEARRAY = 3909; /** * OID of the `tstzrange` type. */ public const TSTZRANGE = 3910; /** * OID of the `tstzrangearray` type. */ public const TSTZRANGEARRAY = 3911; /** * OID of the `daterange` type. */ public const DATERANGE = 3912; /** * OID of the `daterangearray` type. */ public const DATERANGEARRAY = 3913; /** * OID of the `int8range` type. */ public const INT8RANGE = 3926; /** * OID of the `int8rangearray` type. */ public const INT8RANGEARRAY = 3927; /** * OID of the `record` type. */ public const RECORD = 2249; /** * OID of the `recordarray` type. */ public const RECORDARRAY = 2287; /** * OID of the `cstring` type. */ public const CSTRING = 2275; /** * OID of the `any` type. */ public const ANY = 2276; /** * OID of the `anyarray` type. */ public const ANYARRAY = 2277; /** * OID of the `void` type. */ public const VOID = 2278; /** * OID of the `trigger` type. */ public const TRIGGER = 2279; /** * OID of the `event_trigger` type. */ public const EVENT_TRIGGER = 3838; /** * OID of the `language_handler` type. */ public const LANGUAGE_HANDLER = 2280; /** * OID of the `internal` type. */ public const INTERNAL = 2281; /** * OID of the `opaque` type. */ public const OPAQUE = 2282; /** * OID of the `anyelement` type. */ public const ANYELEMENT = 2283; /** * OID of the `anynonarray` type. */ public const ANYNONARRAY = 2776; /** * OID of the `anyenum` type. */ public const ANYENUM = 3500; /** * OID of the `fdw_handler` type. */ public const FDW_HANDLER = 3115; /** * OID of the `anyrange` type. */ public const ANYRANGE = 3831; /** * The connection which was used to obtain type information. * * @public * @readonly * @var \pq\Connection */ public $connection; /** * Create a new instance populated with information obtained from the `pg_type` relation. * * @param \pq\Connection $conn The connection to use. * @param array $namespaces Which namespaces to query (defaults to `public` and `pg_catalog`). * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function __construct(Connection $conn, array $namespaces = null) {} /** * Refresh type information from `pg_type`. * * @param array $namespaces Which namespaces to query (defaults to `public` and `pg_catalog`). * @throws \pq\Exception\InvalidArgumentException * @throws \pq\Exception\BadMethodCallException * @throws \pq\Exception\RuntimeException */ public function refresh(array $namespaces = null) {} } namespace pq\Exception; /** * A method call was not expected. */ class BadMethodCallException extends \BadMethodCallException implements \pq\Exception {} /** * Implementation or SQL syntax error. */ class DomainException extends \DomainException implements \pq\Exception { /** * The SQLSTATE code, see the [official documentation](http://www.postgresql.org/docs/current/static/errcodes-appendix.html) for further information. * * @public * @readonly * @var string */ public $sqlstate; } /** * An invalid argument was passed to a method. */ class InvalidArgumentException extends \InvalidArgumentException implements \pq\Exception {} /** * A runtime exception occurred. */ class RuntimeException extends \RuntimeException implements \pq\Exception {} 'int'], default: '')] $flags = 0, #[LanguageLevelTypeAware(['8.0' => 'string|null'], default: '')] $magic_database ) {} /** * @param $options [optional] * @param $arg [optional] */ #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] public function finfo($options, $arg) {} /** * (PHP >= 5.3.0, PECL fileinfo >= 0.1.0)
    * Set libmagic configuration options * @link https://php.net/manual/en/function.finfo-set-flags.php * @param int $flags

    * One or disjunction of more Fileinfo * constants. *

    * @return bool TRUE on success or FALSE on failure. */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] #[TentativeType] public function set_flags(#[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $flags) {} /** * (PHP >= 5.3.0, PECL fileinfo >= 0.1.0)
    * Return information about a file * @link https://php.net/manual/en/function.finfo-file.php * @param string $filename

    * Name of a file to be checked. *

    * @param int $flags [optional]

    * One or disjunction of more Fileinfo * constants. *

    * @param resource $context [optional]

    * For a description of contexts, refer to . *

    * @return string a textual description of the contents of the * filename argument, or FALSE if an error occurred. */ #[Pure] #[TentativeType] public function file( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $filename, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $flags = FILEINFO_NONE, $context = null ): string|false {} /** * (PHP 5 >= 5.3.0, PECL fileinfo >= 0.1.0)
    * Return information about a string buffer * @link https://php.net/manual/en/function.finfo-buffer.php * @param string $string

    * Content of a file to be checked. *

    * @param int $flags [optional]

    * One or disjunction of more Fileinfo * constants. *

    * @param resource $context [optional] * @return string a textual description of the string * argument, or FALSE if an error occurred. */ #[Pure] #[TentativeType] public function buffer( #[LanguageLevelTypeAware(['8.0' => 'string'], default: '')] $string, #[LanguageLevelTypeAware(['8.0' => 'int'], default: '')] $flags = FILEINFO_NONE, $context = null ): string|false {} } /** * (PHP >= 5.3.0, PECL fileinfo >= 0.1.0)
    * Create a new fileinfo resource * @link https://php.net/manual/en/function.finfo-open.php * @param int $flags

    * One or disjunction of more Fileinfo * constants. *

    * @param string|null $magic_database [optional]

    * Name of a magic database file, usually something like * /path/to/magic.mime. If not specified, * the MAGIC environment variable is used. If this variable * is not set either, /usr/share/misc/magic is used by default. * A .mime and/or .mgc suffix is added if * needed. *

    * @return resource|false a magic database resource on success or FALSE on failure. */ #[LanguageLevelTypeAware(['8.1' => 'finfo|false'], default: 'resource|false')] function finfo_open(int $flags = 0, ?string $magic_database = null) {} /** * (PHP >= 5.3.0, PECL fileinfo >= 0.1.0)
    * Close fileinfo resource * @link https://php.net/manual/en/function.finfo-close.php * @param resource $finfo

    * Fileinfo resource returned by finfo_open. *

    * @return bool TRUE on success or FALSE on failure. */ function finfo_close(#[LanguageLevelTypeAware(['8.1' => 'finfo'], default: 'resource')] $finfo): bool {} /** * (PHP >= 5.3.0, PECL fileinfo >= 0.1.0)
    * Set libmagic configuration options * @link https://php.net/manual/en/function.finfo-set-flags.php * @param resource $finfo

    * Fileinfo resource returned by finfo_open. *

    * @param int $flags

    * One or disjunction of more Fileinfo * constants. *

    * @return bool TRUE on success or FALSE on failure. */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] function finfo_set_flags(#[LanguageLevelTypeAware(['8.1' => 'finfo'], default: 'resource')] $finfo, int $flags) {} /** * (PHP >= 5.3.0, PECL fileinfo >= 0.1.0)
    * Return information about a file * @link https://php.net/manual/en/function.finfo-file.php * @param resource $finfo

    * Fileinfo resource returned by finfo_open. *

    * @param string $filename

    * Name of a file to be checked. *

    * @param int $flags

    * One or disjunction of more Fileinfo * constants. *

    * @param resource $context [optional]

    * For a description of contexts, refer to . *

    * @return string|false a textual description of the contents of the * filename argument, or FALSE if an error occurred. */ function finfo_file(#[LanguageLevelTypeAware(['8.1' => 'finfo'], default: 'resource')] $finfo, string $filename, int $flags = 0, $context): string|false {} /** * (PHP 5 >= 5.3.0, PECL fileinfo >= 0.1.0)
    * Return information about a string buffer * @link https://php.net/manual/en/function.finfo-buffer.php * @param resource $finfo

    * Fileinfo resource returned by finfo_open. *

    * @param string $string

    * Content of a file to be checked. *

    * @param int $flags [optional] One or disjunction of more * Fileinfo constants. * @param resource $context [optional] * @return string|false a textual description of the string * argument, or FALSE if an error occurred. */ function finfo_buffer(#[LanguageLevelTypeAware(['8.1' => 'finfo'], default: 'resource')] $finfo, string $string, int $flags = FILEINFO_NONE, $context): string|false {} /** * Detect MIME Content-type for a file * @link https://php.net/manual/en/function.mime-content-type.php * @param string $filename

    * Path to the tested file. *

    * @return string|false the content type in MIME format, like * text/plain or application/octet-stream. */ function mime_content_type($filename): string|false {} /** * No special handling. * @link https://php.net/manual/en/fileinfo.constants.php */ define('FILEINFO_NONE', 0); /** * Follow symlinks. * @link https://php.net/manual/en/fileinfo.constants.php */ define('FILEINFO_SYMLINK', 2); /** * Return the mime type and mime encoding as defined by RFC 2045. * @link https://php.net/manual/en/fileinfo.constants.php */ define('FILEINFO_MIME', 1040); /** * Return the mime type. * @link https://php.net/manual/en/fileinfo.constants.php */ define('FILEINFO_MIME_TYPE', 16); /** * Return the mime encoding of the file. * @link https://php.net/manual/en/fileinfo.constants.php */ define('FILEINFO_MIME_ENCODING', 1024); /** * Look at the contents of blocks or character special devices. * @link https://php.net/manual/en/fileinfo.constants.php */ define('FILEINFO_DEVICES', 8); /** * Return all matches, not just the first. * @link https://php.net/manual/en/fileinfo.constants.php */ define('FILEINFO_CONTINUE', 32); /** * If possible preserve the original access time. * @link https://php.net/manual/en/fileinfo.constants.php */ define('FILEINFO_PRESERVE_ATIME', 128); /** * Don't translate unprintable characters to a \ooo octal * representation. * @link https://php.net/manual/en/fileinfo.constants.php */ define('FILEINFO_RAW', 256); /** * Returns the file extension appropriate for a the MIME type detected in the file. * For types that commonly have multiple file extensions, such as JPEG images, then the return value is multiple extensions speparated by a forward slash e.g.: "jpeg/jpg/jpe/jfif". * For unknown types not available in the magic.mime database, then return value is "???". Available since PHP 7.2.0. * @since 7.2 */ define('FILEINFO_EXTENSION', 2097152); /** * @since 8.2 */ define('FILEINFO_APPLE', 2048); // End of fileinfo v.1.0.5 expect_expectl(), when EOF is reached. * @link https://www.php.net/manual/en/expect.constants.php */ const EXP_EOF = -11; /** * Value, returned by expect_expectl() upon timeout of seconds, specified in value of expect.timeout * @link https://www.php.net/manual/en/expect.constants.php */ const EXP_TIMEOUT = -2; /** * Value, returned by expect_expectl() if no pattern have been matched. * @link https://www.php.net/manual/en/expect.constants.php */ const EXP_FULLBUFFER = -5; /** * Execute command via Bourne shell, and open the PTY stream to the process * * @param string $command Command to execute. * @return resource|false Returns an open PTY stream to the processes stdio, stdout, and stderr. * On failure this function returns FALSE. * @since PECL expect >= 0.1.0 * @link https://www.php.net/manual/en/function.expect-popen.php */ function expect_popen(string $command) { unset($command); return false; } /** * Waits until the output from a process matches one of the patterns, a specified time period has passed, * or an EOF is seen. * * If match is provided, then it is filled with the result of search. The matched string can be found in match[0]. * The match substrings (according to the parentheses) in the original pattern can be found in match[1], match[2], * and so on, up to match[9] (the limitation of libexpect). * * @param resource $expect An Expect stream, previously opened with expect_popen() * @param array $cases

    An array of expect cases. Each expect case is an indexed array, as described in the following table:

    *

    * * Index Key * Value Type * Description * Is Mandatory * Default Value * * * 0 * string * pattern, that will be matched against the output from the stream * Yes * * * * 1 * mixed * value, that will be returned by this function, if the pattern matches * Yes * * * * 2 * integer * pattern type, one of: EXP_GLOB, EXP_EXACT or EXP_REGEXP * No * EXP_GLOB * *

    * @param array &$match * * @return int Returns value associated with the pattern that was matched. * On failure this function returns: EXP_EOF, EXP_TIMEOUT or EXP_FULLBUFFER * @since PECL expect >= 0.1.0 * @link https://www.php.net/manual/en/function.expect-expectl.php */ function expect_expectl($expect, array $cases, array &$match = []): int { unset($expect, $cases, $match); return 0; } * The following error codes are used:
      *
    • -1 - error outside UnRAR library
    • *
    • 11 - insufficient memory
    • *
    • 12 - bad data
    • *
    • 13 - bad archive
    • *
    • 14 - unknown format
    • *
    • 15 - file open error
    • *
    • 16 - file create error
    • *
    • 17 - file close error
    • *
    • 18 - read error
    • *
    • 19 - write error
    • *
    • 20 - buffer too small
    • *
    • 21 - unkown RAR error
    • *
    • 22 - password required but not given
    • *
    * * @link https://php.net/manual/en/class.rarexception.php */ final class RarException extends Exception { /** * Check whether error handling with exceptions is in use * * @link https://php.net/manual/en/rarexception.isusingexceptions.php * * @return bool TRUE if exceptions are being used, FALSE otherwise */ public static function isUsingExceptions() {} /** * Activate and deactivate error handling with exceptions * * @link https://php.net/manual/en/rarexception.setusingexceptions.php * * @param bool $using_exceptions Should be TRUE to activate exception throwing, FALSE to deactivate (the default) */ public static function setUsingExceptions($using_exceptions) {} } */ // start of PECL/rrd v1.0 /** * Gets latest error message * @link https://php.net/manual/en/function.rrd-error.php * @return string Latest error message. * @since PECL rrd >= 0.9.0 */ function rrd_error() {} /** * Creates rrd database file * @link https://php.net/manual/en/function.rrd-create.php * @param string $filename

    * Filename for newly created rrd file. *

    * @param array $options

    * Options for rrd create - list of strings. See man page of rrd create for whole list of options. *

    * @return bool TRUE on success or FALSE on failure. * @since PECL rrd >= 0.9.0 */ function rrd_create($filename, $options) {} /** * Gets data for graph output from RRD database file as array. This function has same result as rrd_graph(), but fetched data are returned as array, no image file is created. * @link https://php.net/manual/en/function.rrd-fetch.php * @param string $file

    * RRD database file name. *

    * @param array $options

    * Array of options for resolution specification. *

    * @return array Array with information about retrieved graph data. * @since PECL rrd >= 0.9.0 */ function rrd_fetch($file, $options) {} /** * Gets the timestamp of the first sample from from the specified RRA of the RRD file. * @link https://php.net/manual/en/function.rrd-first.php * @param string $file

    * RRD database file name. *

    * @param int $raaindex

    * The index number of the RRA that is to be examined. Default value is 0. *

    * @return int|false Integer as unix timestamp, FALSE if some error occurs. * @since PECL rrd >= 0.9.0 */ function rrd_first($file, $raaindex = 0) {} /** * Creates image from a data. * @link https://php.net/manual/en/function.rrd-graph.php * @param string $file

    * The filename to output the graph to. This will generally end in either .png, .svg or .eps, depending on the format you want to output. *

    * @param array $options

    * Options for generating image. See man page of rrd graph for all possible options. All options (data definitions, variable definitions, etc.) are allowed. *

    * @return array|false If image is created successfully an array with information about generated image is returned, FALSE when error occurs. * @since PECL rrd >= 0.9.0 */ function rrd_graph($file, $options) {} /** * Returns information about particular RRD database file. * @link https://php.net/manual/en/function.rrd-info.php * @param string $file

    * RRD database file name. *

    * @return array|false Array with information about requsted RRD file, FALSE when error occurs. * @since PECL rrd >= 0.9.0 */ function rrd_info($file) {} /** * Returns the UNIX timestamp of the most recent update of the RRD database. * @link https://php.net/manual/en/function.rrd-last.php * @param string $file

    * RRD database file name. *

    * @return int Integer as unix timestamp of the most recent data from the RRD database. * @since PECL rrd >= 0.9.0 */ function rrd_last($file) {} /** * Gets array of the UNIX timestamp and the values stored for each date in the most recent update of the RRD database file. * @link https://php.net/manual/en/function.rrd-lastupdate.php * @param string $file

    * RRD database file name. *

    * @return array|false Array of information about last update, FALSE when error occurs. * @since PECL rrd >= 0.9.0 */ function rrd_lastupdate($file) {} /** * Restores the RRD file from the XML dump. * @link https://php.net/manual/en/function.rrd-restore.php * @param string $xml_file

    * XML filename with the dump of the original RRD database file. *

    * @param string $rrd_file

    * Restored RRD database file name. *

    * @param array $options

    * Array of options for restoring. See man page for rrd restore. *

    * @return bool Returns TRUE on success, FALSE otherwise. * @since PECL rrd >= 0.9.0 */ function rrd_restore($xml_file, $rrd_file, $options = []) {} /** * Change some options in the RRD dabase header file. E.g. renames the source for the data etc. * @link https://php.net/manual/en/function.rrd-tune.php * @param string $file

    * RRD database file name. *

    * @param array $options

    * Options with RRD database file properties which will be changed. See rrd tune man page for details. *

    * @return bool Returns TRUE on success, FALSE otherwise. * @since PECL rrd >= 0.9.0 */ function rrd_tune($file, $options) {} /** * Updates the RRD database file. The input data is time interpolated according to the properties of the RRD database file. * @link https://php.net/manual/en/function.rrd-update.php * @param string $file

    * RRD database file name. This database will be updated. *

    * @param array $options

    * Options for updating the RRD database. This is list of strings. See man page of rrd update for whole list of options. *

    * @return bool Updates the RRD database file. The input data is time interpolated according to the properties of the RRD database file. * @since PECL rrd >= 0.9.0 */ function rrd_update($file, $options) {} /** * Returns information about underlying rrdtool library. * @link https://php.net/manual/en/function.rrd-version.php * @return string String with rrdtool version number e.g. "1.4.3". * @since PECL rrd >= 1.0.0 */ function rrd_version() {} /** * Exports the information about RRD database file. This data can be converted to XML file via user space PHP script and then restored back as RRD database file. * @link https://php.net/manual/en/function.rrd-xport.php * @param array $options

    * Array of options for the export, see rrd xport man page. *

    * @return array|false Array with information about RRD database file, FALSE when error occurs. * @since PECL rrd >= 0.9.0 */ function rrd_xport($options) {} /** * Close any outstanding connection to rrd caching daemon

    * This function is automatically called when the whole PHP process is terminated. It depends on used SAPI. For example, it's called automatically at the end of command line script.

    * It's up user whether he wants to call this function at the end of every request or otherwise.

    * @link https://php.net/manual/en/function.rrdc-disconnect.php * @return void * @since PECL rrd >= 1.1.2 */ function rrd_disconnect() {} /** * Close any outstanding connection to rrd caching daemon. * This function is automatically called when the whole PHP process is terminated. It depends on used SAPI. * For example, it's called automatically at the end of command line script. * It's up user whether he wants to call this function at the end of every request or otherwise. */ function rrdc_disconnect() {} /** * Class for creation of RRD database file. * @link https://php.net/manual/en/class.rrdcreator.php * @since PECL rrd >= 0.9.0 */ class RRDCreator { /** * Adds RRA - archive of data values for each data source.

    * Archive consists of a number of data values or statistics for each of the defined data-sources (DS). Data sources are defined by method RRDCreator::addDataSource(). You need call this method for each requested archive. *

    * @link https://php.net/manual/en/rrdcreator.addarchive.php * @see RRDCreator::addDataSource() * @param string $description

    * Class for creation of RRD database file. *

    * @return void * @since PECL rrd >= 0.9.0 */ public function addArchive($description) {} /** * Adds data source definition for RRD database.

    * RRD can accept input from several data sources (DS), e.g incoming and outgoing traffic. This method adds data source by description. You need call this method for each data source. *

    * @link https://php.net/manual/en/rrdcreator.adddatasource.php * @param string $description

    * Definition of data source - DS. This has same format as DS definition in rrd create command. See man page of rrd create for more details. *

    * @return void * @since PECL rrd >= 0.9.0 */ public function addDataSource($description) {} /** * Creates new RRDCreator instance. * @link https://php.net/manual/en/rrdcreator.construct.php * @param string $path

    * Path for newly created RRD database file. *

    * @param string $startTime

    * Time for the first value in RRD database. Parameter supports all formats which are supported by rrd create call. *

    * @param int $step

    * Base interval in seconds with which data will be fed into the RRD database. *

    * @since PECL rrd >= 0.9.0 */ public function __construct($path, $startTime = '', $step = 0) {} /** * Saves the RRD database into file, which name is defined by RRDCreator::__construct() * @link https://php.net/manual/en/rrdcreator.save.php * @see RRDCreator::__construct() * @return bool TRUE on success or FALSE on failure. * @since PECL rrd >= 0.9.0 */ public function save() {} } /** * Class for exporting data from RRD database to image file. * @link https://php.net/manual/en/class.rrdgraph.php * @since PECL rrd >= 0.9.0 */ class RRDGraph { /** * Creates new RRDGraph instance. This instance is responsible for rendering the result of RRD database query into image. * @link https://php.net/manual/en/rrdgraph.construct.php * @param string $path

    * Full path for the newly created image. *

    * @since PECL rrd >= 0.9.0 */ public function __construct($path) {} /** * Saves the result of RRD database query into image defined by RRDGraph::__construct(). * @link https://php.net/manual/en/rrdgraph.save.php * @return array|false Array with information about generated image is returned, FALSE if error occurs. * @since PECL rrd >= 0.9.0 */ public function save() {} /** * Saves the RRD database query into image and returns the verbose information about generated graph.

    * If "-" is used as image filename, image data are also returned in result array. *

    * @link https://php.net/manual/en/rrdgraph.saveverbose.php * @return array|false Array with detailed information about generated image is returned, optionally with image data, FALSE if error occurs. * @since PECL rrd >= 0.9.0 */ public function saveVerbose() {} /** * Sets the options for rrd graph export * @link https://php.net/manual/en/rrdgraph.setoptions.php * @param array $options

    * List of options for the image generation from the RRD database file. It can be list of strings or list of strings with keys for better readability. Read the rrd graph man pages for list of available options. *

    * @return void * @since PECL rrd >= 0.9.0 */ public function setOptions($options) {} } /** * Class for updating RDD database file. * @link https://php.net/manual/en/class.rrdupdater.php * @since PECL rrd >= 0.9.0 */ class RRDUpdater { /** * Creates new RRDUpdater instance. This instance is responsible for updating the RRD database file. * RRDUpdater constructor. * @link https://php.net/manual/en/rrdupdater.construct.php * @param string $path

    * Filesystem path for RRD database file, which will be updated. *

    * @since PECL rrd >= 0.9.0 */ public function __construct($path) {} /** * Update the RRD file defined via RRDUpdater::__construct(). The file is updated with a specific values. * @link https://php.net/manual/en/rrdupdater.update.php * @param array $values

    * Data for update. Key is data source name. *

    * @param string $time

    * Time value for updating the RRD with a particulat data. Default value is current time. *

    * @return bool TRUE on success or FALSE on failure. * @throws \Exception on error * @since PECL rrd >= 0.9.0 */ public function update($values, $time = '') {} } // end of PECL/rrd v1.0 * A numeric shared memory segment ID *

    * @param int|null $size [optional]

    * The memory size. If not provided, default to the * sysvshm.init_mem in the php.ini, otherwise 10000 * bytes. *

    * @param int $permissions [optional]

    * The optional permission bits. Default to 0666. *

    * @return resource|SysvSharedMemory|false a shared memory segment identifier. */ #[LanguageLevelTypeAware(["8.0" => "SysvSharedMemory|false"], default: "resource|false")] function shm_attach(int $key, ?int $size, int $permissions = 0666) {} /** * Removes shared memory from Unix systems * @link https://php.net/manual/en/function.shm-remove.php * @param SysvSharedMemory $shm

    * The shared memory identifier as returned by * shm_attach *

    * @return bool TRUE on success or FALSE on failure. */ function shm_remove(#[LanguageLevelTypeAware(["8.0" => "SysvSharedMemory"], default: "resource")] $shm): bool {} /** * Disconnects from shared memory segment * @link https://php.net/manual/en/function.shm-detach.php * @param SysvSharedMemory $shm

    * A shared memory resource handle as returned by * shm_attach *

    * @return bool shm_detach always returns TRUE. */ function shm_detach(#[LanguageLevelTypeAware(["8.0" => "SysvSharedMemory"], default: "resource")] $shm): bool {} /** * Inserts or updates a variable in shared memory * @link https://php.net/manual/en/function.shm-put-var.php * @param SysvSharedMemory $shm

    * A shared memory resource handle as returned by * shm_attach *

    * @param int $key

    * The variable key. *

    * @param mixed $value

    * The variable. All variable types * that serialize supports may be used: generally * this means all types except for resources and some internal objects * that cannot be serialized. *

    * @return bool TRUE on success or FALSE on failure. */ function shm_put_var(#[LanguageLevelTypeAware(["8.0" => "SysvSharedMemory"], default: "resource")] $shm, int $key, mixed $value): bool {} /** * Check whether a specific entry exists * @link https://php.net/manual/en/function.shm-has-var.php * @param SysvSharedMemory $shm

    * Shared memory segment, obtained from shm_attach. *

    * @param int $key

    * The variable key. *

    * @return bool TRUE if the entry exists, otherwise FALSE */ function shm_has_var(#[LanguageLevelTypeAware(["8.0" => "SysvSharedMemory"], default: "resource")] $shm, int $key): bool {} /** * Returns a variable from shared memory * @link https://php.net/manual/en/function.shm-get-var.php * @param SysvSharedMemory $shm

    * Shared memory segment, obtained from shm_attach. *

    * @param int $key

    * The variable key. *

    * @return mixed the variable with the given key. */ function shm_get_var(#[LanguageLevelTypeAware(["8.0" => "SysvSharedMemory"], default: "resource")] $shm, int $key): mixed {} /** * Removes a variable from shared memory * @link https://php.net/manual/en/function.shm-remove-var.php * @param SysvSharedMemory $shm

    * The shared memory identifier as returned by * shm_attach *

    * @param int $key

    * The variable key. *

    * @return bool TRUE on success or FALSE on failure. */ function shm_remove_var(#[LanguageLevelTypeAware(["8.0" => "SysvSharedMemory"], default: "resource")] $shm, int $key): bool {} /** * @since 8.0 */ final class SysvSharedMemory { /** * Cannot directly construct SysvSharedMemory, use shm_attach() instead * @see shm_attach() */ private function __construct() {} } // End of sysvshm v. * Cookie name. *

    * @param string $value

    * Cookie value. *

    * @return string|false the encrypted string or false on failure. */ function suhosin_encrypt_cookie($name, $value) {} /** * Returns an array containing the raw cookie values * @link https://php.net/manual/en/function.suhosin-get-raw-cookies.php * @return array an array containing the raw cookie values. */ function suhosin_get_raw_cookies() {} * An optional seed value *

    * @param int $mode [optional]

    * Use one of the following constants to specify the implementation of the algorithm to use. *

    * @return void */ function mt_srand( #[LanguageLevelTypeAware(['8.3' => 'int|null'], default: 'int')] $seed = null, #[PhpStormStubsElementAvailable(from: '7.1')] int $mode = MT_RAND_MT19937 ): void {} /** * Seed the random number generator *

    Note: As of PHP 7.1.0, {@see srand()} has been made * an alias of {@see mt_srand()}. *

    * @link https://php.net/manual/en/function.srand.php * @param int|null $seed

    * Optional seed value *

    * @param int $mode [optional]

    * Use one of the following constants to specify the implementation of the algorithm to use. *

    * @return void */ function srand( #[LanguageLevelTypeAware(['8.3' => 'int|null'], default: 'int')] $seed = null, #[PhpStormStubsElementAvailable(from: '7.1')] int $mode = MT_RAND_MT19937 ): void {} /** * Generate a random integer * @link https://php.net/manual/en/function.rand.php * @param int $min [optional] * @param int $max [optional] * @return int A pseudo random value between min * (or 0) and max (or getrandmax, inclusive). */ function rand(int $min, int $max): int {} /** * Generate a random value via the Mersenne Twister Random Number Generator * @link https://php.net/manual/en/function.mt-rand.php * @param int $min [optional]

    * Optional lowest value to be returned (default: 0) *

    * @param int $max [optional]

    * Optional highest value to be returned (default: mt_getrandmax()) *

    * @return int A random integer value between min (or 0) * and max (or mt_getrandmax, inclusive) */ function mt_rand(int $min, int $max): int {} /** * Show largest possible random value * @link https://php.net/manual/en/function.mt-getrandmax.php * @return int the maximum random value returned by mt_rand */ #[Pure] function mt_getrandmax(): int {} /** * Show largest possible random value * @link https://php.net/manual/en/function.getrandmax.php * @return int The largest possible random value returned by rand */ #[Pure] function getrandmax(): int {} /** * Generates cryptographically secure pseudo-random bytes * @link https://php.net/manual/en/function.random-bytes.php * @param int $length The length of the random string that should be returned in bytes. * @return string Returns a string containing the requested number of cryptographically secure random bytes. * @since 7.0 * @throws Random\RandomException if an appropriate source of randomness cannot be found. */ function random_bytes(int $length): string {} /** * Generates cryptographically secure pseudo-random integers * @link https://php.net/manual/en/function.random-int.php * @param int $min The lowest value to be returned, which must be PHP_INT_MIN or higher. * @param int $max The highest value to be returned, which must be less than or equal to PHP_INT_MAX. * @return int Returns a cryptographically secure random integer in the range min to max, inclusive. * @since 7.0 * @throws Random\RandomException if an appropriate source of randomness cannot be found. */ function random_int(int $min, int $max): int {} } namespace Random\Engine { /** * @since 8.2 */ final class Mt19937 implements \Random\Engine { public function __construct(int|null $seed = null, int $mode = MT_RAND_MT19937) {} public function generate(): string {} public function __serialize(): array {} public function __unserialize(array $data): void {} public function __debugInfo(): array {} } /** * @since 8.2 */ final class PcgOneseq128XslRr64 implements \Random\Engine { public function __construct(string|int|null $seed = null) {} public function generate(): string {} public function jump(int $advance): void {} public function __serialize(): array {} public function __unserialize(array $data): void {} public function __debugInfo(): array {} } /** * @since 8.2 */ final class Xoshiro256StarStar implements \Random\Engine { public function __construct(string|int|null $seed = null) {} public function generate(): string {} public function jump(): void {} public function jumpLong(): void {} public function __serialize(): array {} public function __unserialize(array $data): void {} public function __debugInfo(): array {} } /** * @since 8.2 */ final class Secure implements \Random\CryptoSafeEngine { public function generate(): string {} } } namespace Random { use Error; use Exception; /** * @since 8.2 */ interface Engine { public function generate(): string; } /** * @since 8.2 */ interface CryptoSafeEngine extends Engine {} /** * @since 8.2 */ final class Randomizer { public readonly Engine $engine; public function __construct(?Engine $engine = null) {} public function nextInt(): int {} public function getInt(int $min, int $max): int {} public function getBytes(int $length): string {} public function shuffleArray(array $array): array {} public function shuffleBytes(string $bytes): string {} public function pickArrayKeys(array $array, int $num): array {} public function __serialize(): array {} public function __unserialize(array $data): void {} /** * @since 8.3 */ public function nextFloat(): float {} /** * @since 8.3 */ public function getFloat(float $min, float $max, IntervalBoundary $boundary = IntervalBoundary::ClosedOpen): float {} /** * @since 8.3 */ public function getBytesFromString(string $string, int $length): string {} } /** * @since 8.2 */ class RandomError extends Error {} /** * @since 8.2 */ class BrokenRandomEngineError extends RandomError {} /** * @since 8.2 */ class RandomException extends Exception {} /** * @since 8.3 */ enum IntervalBoundary implements \UnitEnum { public string $name; case ClosedOpen; case ClosedClosed; case OpenClosed; case OpenOpen; public static function cases(): array {} } } = 4.0.0) * and the mutation operation succeeded. * * If set, it can be used for enhanced durability requirements, as well as optimized consistency * for N1QL queries. */ public $token; } /** * A fragment of a JSON Document returned by the sub-document API. * * @see \Couchbase\Bucket::mutateIn() * @see \Couchbase\Bucket::lookupIn() */ class DocumentFragment { /** * @var Exception exception object in case of error, or NULL */ public $error; /** * @var mixed The value sub-document command returned. */ public $value; /** * @var string The last known CAS value of the document */ public $cas; /** * @var MutationToken * The optional, opaque mutation token related to updated document the environment. * * Note that the mutation token is always NULL, unless they are explicitly enabled on the * connection string (`?fetch_mutation_tokens=true`), the server version is supported (>= 4.0.0) * and the mutation operation succeeded. * * If set, it can be used for enhanced durability requirements, as well as optimized consistency * for N1QL queries. */ public $token; } /** * Represents a Couchbase Server Cluster. * * It is an entry point to the library, and in charge of opening connections to the Buckets. * In addition it can instantiate \Couchbase\ClusterManager to peform cluster-wide operations. * * @see \Couchbase\Bucket * @see \Couchbase\ClusterManager * @see \Couchbase\Authenticator */ class Cluster { /** * Create cluster object * * @param string $connstr connection string */ public function __construct($connstr) {} /** * Open connection to the Couchbase bucket * * @param string $name Name of the bucket. * @param string $password Password of the bucket to override authenticator. * @return Bucket * * @see \Couchbase\Authenticator */ public function openBucket($name = "default", $password = "") {} /** * Open management connection to the Couchbase cluster. * * @param string $username Name of the administrator to override authenticator or NULL. * @param string $password Password of the administrator to override authenticator or NULL. * @return ClusterManager * * @see \Couchbase\Authenticator */ public function manager($username = null, $password = null) {} /** * Associate authenticator with Cluster * * @param Authenticator $authenticator * @return null * * @see \Couchbase\Authenticator * @see \Couchbase\ClassicAuthenticator * @see \Couchbase\PasswordAuthenticator */ public function authenticate($authenticator) {} /** * Create \Couchbase\PasswordAuthenticator from given credentials and associate it with Cluster * * @param string $username * @param string $password * @return null * * @see \Couchbase\Authenticator * @see \Couchbase\PasswordAuthenticator */ public function authenticateAs($username, $password) {} } /** * Provides management capabilities for a Couchbase Server Cluster * * @see \Couchbase\Cluster */ class ClusterManager { /** * The user account managed by Couchbase Cluster. */ public const RBAC_DOMAIN_LOCAL = 1; /** * The user account managed by external system (e.g. LDAP). */ public const RBAC_DOMAIN_EXTERNAL = 2; final private function __construct() {} /** * Lists all buckets on this cluster. * * @return array */ public function listBuckets() {} /** * Creates new bucket * * @param string $name Name of the bucket * @param array $options Bucket options * * "authType" (default: "sasl") type of the bucket authentication * * "bucketType" (default: "couchbase") type of the bucket * * "ramQuotaMB" (default: 100) memory quota of the bucket * * "replicaNumber" (default: 1) number of replicas. * * @see https://developer.couchbase.com/documentation/server/current/rest-api/rest-bucket-create.html * More options and details */ public function createBucket($name, $options = []) {} /** * Removes a bucket identified by its name. * * @param string $name name of the bucket * * @see https://developer.couchbase.com/documentation/server/current/rest-api/rest-bucket-delete.html * More details */ public function removeBucket($name) {} /** * Provides information about the cluster. * * Returns an associative array of status information as seen on the cluster. The exact structure of the returned * data can be seen in the Couchbase Manual by looking at the cluster /info endpoint. * * @return array * * @see https://developer.couchbase.com/documentation/server/current/rest-api/rest-cluster-get.html * Retrieving Cluster Information */ public function info() {} /** * Lists all users on this cluster. * * @param int $domain RBAC domain * * @return array * * @see \Couchbase\ClusterManager::RBAC_DOMAIN_LOCAL * @see \Couchbase\ClusterManager::RBAC_DOMAIN_EXTERNAL */ public function listUsers($domain = RBAC_DOMAIN_LOCAL) {} /** * Fetch single user by its name * * @param string $username The user's identifier * @param int $domain RBAC domain * * @return array * * @see \Couchbase\ClusterManager::RBAC_DOMAIN_LOCAL * @see \Couchbase\ClusterManager::RBAC_DOMAIN_EXTERNAL */ public function getUser($username, $domain = RBAC_DOMAIN_LOCAL) {} /** * Creates new user * * @param string $name Name of the user * @param \Couchbase\UserSettings $settings settings (credentials and roles) * @param int $domain RBAC domain * * @see https://developer.couchbase.com/documentation/server/5.0/rest-api/rbac.html * More options and details * @see \Couchbase\ClusterManager::RBAC_DOMAIN_LOCAL * @see \Couchbase\ClusterManager::RBAC_DOMAIN_EXTERNAL */ public function upsertUser($name, $settings, $domain = RBAC_DOMAIN_LOCAL) {} /** * Removes a user identified by its name. * * @param string $name name of the bucket * @param int $domain RBAC domain * * @see https://developer.couchbase.com/documentation/server/5.0/rest-api/rbac.html * More details * @see \Couchbase\ClusterManager::RBAC_DOMAIN_LOCAL * @see \Couchbase\ClusterManager::RBAC_DOMAIN_EXTERNAL */ public function removeUser($name, $domain = RBAC_DOMAIN_LOCAL) {} } /** * Represents settings for new/updated user. * * @see https://developer.couchbase.com/documentation/server/5.0/rest-api/rbac.html */ class UserSettings { /** * Sets full name of the user (optional). * * @param string $fullName Full name of the user * * @return \Couchbase\UserSettings * * @see https://developer.couchbase.com/documentation/server/5.0/rest-api/rbac.html * More details */ public function fullName($fullName) {} /** * Sets password of the user. * * @param string $password Password of the user * * @return \Couchbase\UserSettings * * @see https://developer.couchbase.com/documentation/server/5.0/rest-api/rbac.html * More details */ public function password($password) {} /** * Adds role to the list of the accessible roles of the user. * * @param string $role identifier of the role * @param string $bucket the bucket where this role applicable (or `*` for all buckets) * * @return \Couchbase\UserSettings * * @see https://developer.couchbase.com/documentation/server/5.0/rest-api/rbac.html * More details */ public function role($role, $bucket = null) {} } /** * Represents connection to the Couchbase Server * * @property int $operationTimeout * The operation timeout (in microseconds) is the maximum amount of time the * library will wait for an operation to receive a response before invoking * its callback with a failure status. * * An operation may timeout if: * * * A server is taking too long to respond * * An updated cluster configuration has not been promptly received * * @property int $viewTimeout * The I/O timeout (in microseconds) for HTTP requests to Couchbase Views API * * @property int $n1qlTimeout * The I/O timeout (in microseconds) for N1QL queries. * * @property int $httpTimeout * The I/O timeout (in microseconds) for HTTP queries (management API). * * @property int $configTimeout * How long (in microseconds) the client will wait to obtain the initial * configuration. * * @property int $configNodeTimeout * Per-node configuration timeout (in microseconds). * * This timeout sets the amount of time to wait for each node within * the bootstrap/configuration process. This interval is a subset of * the $configTimeout option mentioned above and is intended to ensure * that the bootstrap process does not wait too long for a given node. * Nodes that are physically offline may never respond and it may take * a long time until they are detected as being offline. * * @property int $configDelay * Config refresh throttling * * Modify the amount of time (in microseconds) before the configiration * error threshold will forcefully be set to its maximum number forcing * a configuration refresh. * * Note that if you expect a high number of timeouts in your operations, * you should set this to a high number. If you are using the default * timeout setting, then this value is likely optimal. * * @property int $htconfigIdleTimeout * Idling/Persistence for HTTP bootstrap (in microseconds) * * By default the behavior of the library for HTTP bootstrap is to keep * the stream open at all times (opening a new stream on a different host * if the existing one is broken) in order to proactively receive * configuration updates. * * The default value for this setting is -1. Changing this to another * number invokes the following semantics: * * * The configuration stream is not kept alive indefinitely. It is kept * open for the number of seconds specified in this setting. The socket * is closed after a period of inactivity (indicated by this setting). * * * If the stream is broken (and no current refresh was requested by * the client) then a new stream is not opened. * * @property int $durabilityInterval * The time (in microseconds) the client will wait between repeated probes * to a given server. * * @property int $durabilityTimeout * The time (in microseconds) the client will spend sending repeated probes * to a given key's vBucket masters and replicas before they are deemed not * to have satisfied the durability requirements * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/start-using-sdk.html * Start Using SDK */ class Bucket { /** Ping data (Key/Value) service. */ public const PINGSVC_KV = 0x01; /** Ping query (N1QL) service. */ public const PINGSVC_N1QL = 0x02; /** Ping views (Map/Reduce) service. */ public const PINGSVC_VIEWS = 0x04; /** Ping full text search (FTS) service. */ public const PINGSVC_FTS = 0x08; final private function __construct() {} /** * @param string $name * @return int */ final private function __get($name) {} /** * @param string $name * @param int $value * @return int */ final private function __set($name, $value) {} /** * Returns the name of the bucket for current connection * * @return string */ public function getName() {} /** * Returns an instance of a CouchbaseBucketManager for performing management operations against a bucket. * * @return BucketManager */ public function manager() {} /** * Sets custom encoder and decoder functions for handling serialization. * * @param callable $encoder * @param callable $decoder * * @see \Couchbase\defaultEncoder * @see \Couchbase\defaultDecoder * @see \Couchbase\passthruEncoder * @see \Couchbase\passthruDecoder */ public function setTranscoder($encoder, $decoder) {} /** * Retrieves a document * * @param string|array $ids one or more IDs * @param array $options options * * "lockTime" non zero if the documents have to be locked * * "expiry" non zero if the expiration time should be updated * * "groupid" override value for hashing (not recommended to use) * @return \Couchbase\Document|array document or list of the documents * * @see \Couchbase\Bucket::getAndLock() * @see \Couchbase\Bucket::getAndTouch() * @see \Couchbase\Bucket::unlock() * @see \Couchbase\Bucket::touch() * @see https://developer.couchbase.com/documentation/server/current/sdk/core-operations.html * Overview of K/V operations * @see https://developer.couchbase.com/documentation/server/current/sdk/php/document-operations.html * More details about K/V operations for PHP SDK */ public function get($ids, $options = []) {} /** * Retrieves a document and locks it. * * After the document has been locked on the server, its CAS would be masked, * and all mutations of it will be rejected until the server unlocks the document * automatically or it will be done manually with \Couchbase\Bucket::unlock() operation. * * @param string|array $ids one or more IDs * @param int $lockTime time to lock the documents * @param array $options options * * "groupid" override value for hashing (not recommended to use) * @return \Couchbase\Document|array document or list of the documents * * @see \Couchbase\Bucket::unlock() * @see https://developer.couchbase.com/documentation/server/current/sdk/core-operations.html * Overview of K/V operations * @see https://developer.couchbase.com/documentation/server/current/sdk/php/document-operations.html * More details about K/V operations for PHP SDK * @see https://forums.couchbase.com/t/is-there-a-way-to-do-pessimistic-locking-for-more-than-30-seconds/10666/3 * Forum post about getting server defaults for the $lockTime */ public function getAndLock($ids, $lockTime, $options = []) {} /** * Retrieves a document and updates its expiration time. * * @param string|array $ids one or more IDs * @param int $expiry time after which the document will not be accessible. * If larger than 30 days (60*60*24*30), it will be interpreted by the * server as absolute UNIX time (seconds from epoch 1970-01-01T00:00:00). * @param array $options options * * "groupid" override value for hashing (not recommended to use) * @return \Couchbase\Document|array document or list of the documents * * @see https://developer.couchbase.com/documentation/server/current/sdk/core-operations.html * Overview of K/V operations * @see https://developer.couchbase.com/documentation/server/current/sdk/php/document-operations.html * More details about K/V operations for PHP SDK */ public function getAndTouch($ids, $expiry, $options = []) {} /** * Retrieves a document from a replica. * * @param string|array $ids one or more IDs * @param array $options options * * "index" the replica index. If the index is zero, it will return * first successful replica, otherwise it will read only selected node. * * "groupid" override value for hashing (not recommended to use) * @return \Couchbase\Document|array document or list of the documents * * @see https://developer.couchbase.com/documentation/server/current/sdk/core-operations.html * Overview of K/V operations * @see https://developer.couchbase.com/documentation/server/current/sdk/php/document-operations.html * More details about K/V operations for PHP SDK * @see https://developer.couchbase.com/documentation/server/current/sdk/php/failure-considerations.html * More about failure considerations. */ public function getFromReplica($ids, $options = []) {} /** * Inserts or updates a document, depending on whether the document already exists on the cluster. * * @param string|array $ids one or more IDs * @param mixed $value value of the document * @param array $options options * * "expiry" document expiration time in seconds. If larger than 30 days (60*60*24*30), * it will be interpreted by the server as absolute UNIX time (seconds from epoch * 1970-01-01T00:00:00). * * "persist_to" how many nodes the key should be persisted to (including master). * If set to 0 then persistence will not be checked. If set to a negative * number, will be set to the maximum number of nodes to which persistence * is possible (which will always contain at least the master node). * * "replicate_to" how many nodes the key should be persisted to (excluding master). * If set to 0 then replication will not be checked. If set to a negative * number, will be set to the maximum number of nodes to which replication * is possible (which may be 0 if the bucket is not configured for replicas). * * "flags" override flags (not recommended to use) * * "groupid" override value for hashing (not recommended to use) * @return \Couchbase\Document|array document or list of the documents * * @see https://developer.couchbase.com/documentation/server/current/sdk/core-operations.html * Overview of K/V operations * @see https://developer.couchbase.com/documentation/server/current/sdk/php/document-operations.html * More details about K/V operations for PHP SDK */ public function upsert($ids, $value, $options = []) {} /** * Inserts a document. This operation will fail if the document already exists on the cluster. * * @param string|array $ids one or more IDs * @param mixed $value value of the document * @param array $options options * * "expiry" document expiration time in seconds. If larger than 30 days (60*60*24*30), * it will be interpreted by the server as absolute UNIX time (seconds from epoch * 1970-01-01T00:00:00). * * "persist_to" how many nodes the key should be persisted to (including master). * If set to 0 then persistence will not be checked. If set to a negative * number, will be set to the maximum number of nodes to which persistence * is possible (which will always contain at least the master node). * * "replicate_to" how many nodes the key should be persisted to (excluding master). * If set to 0 then replication will not be checked. If set to a negative * number, will be set to the maximum number of nodes to which replication * is possible (which may be 0 if the bucket is not configured for replicas). * * "flags" override flags (not recommended to use) * * "groupid" override value for hashing (not recommended to use) * @return \Couchbase\Document|array document or list of the documents * * @see https://developer.couchbase.com/documentation/server/current/sdk/core-operations.html * Overview of K/V operations * @see https://developer.couchbase.com/documentation/server/current/sdk/php/document-operations.html * More details about K/V operations for PHP SDK */ public function insert($ids, $value, $options = []) {} /** * Replaces a document. This operation will fail if the document does not exists on the cluster. * * @param string|array $ids one or more IDs * @param mixed $value value of the document * @param array $options options * * "cas" last known document CAS, which serves for optimistic locking. * * "expiry" document expiration time in seconds. If larger than 30 days (60*60*24*30), * it will be interpreted by the server as absolute UNIX time (seconds from epoch * 1970-01-01T00:00:00). * * "persist_to" how many nodes the key should be persisted to (including master). * If set to 0 then persistence will not be checked. If set to a negative * number, will be set to the maximum number of nodes to which persistence * is possible (which will always contain at least the master node). * * "replicate_to" how many nodes the key should be persisted to (excluding master). * If set to 0 then replication will not be checked. If set to a negative * number, will be set to the maximum number of nodes to which replication * is possible (which may be 0 if the bucket is not configured for replicas). * * "flags" override flags (not recommended to use) * * "groupid" override value for hashing (not recommended to use) * @return \Couchbase\Document|array document or list of the documents * * @see https://developer.couchbase.com/documentation/server/current/sdk/core-operations.html * Overview of K/V operations * @see https://developer.couchbase.com/documentation/server/current/sdk/php/document-operations.html * More details about K/V operations for PHP SDK */ public function replace($ids, $value, $options = []) {} /** * Appends content to a document. * * On the server side it just contatenate passed value to the existing one. * Note that this might make the value un-decodable. Consider sub-document API * for partial updates of the JSON documents. * * @param string|array $ids one or more IDs * @param mixed $value value of the document * @param array $options options * * "cas" last known document CAS, which serves for optimistic locking. * * "expiry" document expiration time in seconds. If larger than 30 days (60*60*24*30), * it will be interpreted by the server as absolute UNIX time (seconds from epoch * 1970-01-01T00:00:00). * * "persist_to" how many nodes the key should be persisted to (including master). * If set to 0 then persistence will not be checked. If set to a negative * number, will be set to the maximum number of nodes to which persistence * is possible (which will always contain at least the master node). * * "replicate_to" how many nodes the key should be persisted to (excluding master). * If set to 0 then replication will not be checked. If set to a negative * number, will be set to the maximum number of nodes to which replication * is possible (which may be 0 if the bucket is not configured for replicas). * * "groupid" override value for hashing (not recommended to use) * @return \Couchbase\Document|array document or list of the documents * * @see \Couchbase\Bucket::mutateIn() * @see https://developer.couchbase.com/documentation/server/current/sdk/core-operations.html * Overview of K/V operations * @see https://developer.couchbase.com/documentation/server/current/sdk/php/document-operations.html * More details about K/V operations for PHP SDK */ public function append($ids, $value, $options = []) {} /** * Prepends content to a document. * * On the server side it just contatenate existing value to the passed one. * Note that this might make the value un-decodable. Consider sub-document API * for partial updates of the JSON documents. * * @param string|array $ids one or more IDs * @param mixed $value value of the document * @param array $options options * * "cas" last known document CAS, which serves for optimistic locking. * * "expiry" document expiration time in seconds. If larger than 30 days (60*60*24*30), * it will be interpreted by the server as absolute UNIX time (seconds from epoch * 1970-01-01T00:00:00). * * "persist_to" how many nodes the key should be persisted to (including master). * If set to 0 then persistence will not be checked. If set to a negative * number, will be set to the maximum number of nodes to which persistence * is possible (which will always contain at least the master node). * * "replicate_to" how many nodes the key should be persisted to (excluding master). * If set to 0 then replication will not be checked. If set to a negative * number, will be set to the maximum number of nodes to which replication * is possible (which may be 0 if the bucket is not configured for replicas). * * "groupid" override value for hashing (not recommended to use) * @return \Couchbase\Document|array document or list of the documents * * @see \Couchbase\Bucket::mutateIn() * @see https://developer.couchbase.com/documentation/server/current/sdk/core-operations.html * Overview of K/V operations * @see https://developer.couchbase.com/documentation/server/current/sdk/php/document-operations.html * More details about K/V operations for PHP SDK */ public function prepend($ids, $value, $options = []) {} /** * Removes the document. * * @param string|array $ids one or more IDs * @param array $options options * * "cas" last known document CAS, which serves for optimistic locking. * * "groupid" override value for hashing (not recommended to use) * @return \Couchbase\Document|array document or list of the documents * * @see https://developer.couchbase.com/documentation/server/current/sdk/core-operations.html * Overview of K/V operations * @see https://developer.couchbase.com/documentation/server/current/sdk/php/document-operations.html * More details about K/V operations for PHP SDK */ public function remove($ids, $options = []) {} /** * Unlocks previously locked document * * @param string|array $ids one or more IDs * @param array $options options * * "cas" last known document CAS, which has been returned by locking command. * * "groupid" override value for hashing (not recommended to use) * @return \Couchbase\Document|array document or list of the documents * * @see \Couchbase\Bucket::get() * @see \Couchbase\Bucket::getAndLock() * @see https://developer.couchbase.com/documentation/server/current/sdk/core-operations.html * Overview of K/V operations * @see https://developer.couchbase.com/documentation/server/current/sdk/php/document-operations.html * More details about K/V operations for PHP SDK */ public function unlock($ids, $options = []) {} /** * Updates document's expiration time. * * @param string|array $ids one or more IDs * @param int $expiry time after which the document will not be accessible. * If larger than 30 days (60*60*24*30), it will be interpreted by the * server as absolute UNIX time (seconds from epoch 1970-01-01T00:00:00). * @param array $options options * * "groupid" override value for hashing (not recommended to use) * @return \Couchbase\Document|array document or list of the documents * * @see https://developer.couchbase.com/documentation/server/current/sdk/core-operations.html * Overview of K/V operations * @see https://developer.couchbase.com/documentation/server/current/sdk/php/document-operations.html * More details about K/V operations for PHP SDK */ public function touch($ids, $expiry, $options = []) {} /** * Increments or decrements a key (based on $delta) * * @param string|array $ids one or more IDs * @param int $delta the number whih determines the sign (positive/negative) and the value of the increment * @param array $options options * * "initial" initial value of the counter if it does not exist * * "expiry" time after which the document will not be accessible. * If larger than 30 days (60*60*24*30), it will be interpreted by the * server as absolute UNIX time (seconds from epoch 1970-01-01T00:00:00). * * "groupid" override value for hashing (not recommended to use) * @return \Couchbase\Document|array document or list of the documents * * @see https://developer.couchbase.com/documentation/server/current/sdk/core-operations.html * Overview of K/V operations * @see https://developer.couchbase.com/documentation/server/current/sdk/php/document-operations.html * More details about K/V operations for PHP SDK */ public function counter($ids, $delta = 1, $options = []) {} /** * Returns a builder for reading subdocument API. * * @param string $id The ID of the JSON document * @return LookupInBuilder * * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function lookupIn($id) {} /** * Retrieves specified paths in JSON document * * This is essentially a shortcut for `lookupIn($id)->get($paths)->execute()`. * * @param string $id The ID of the JSON document * @param string ...$paths List of the paths inside JSON documents (see "Path syntax" section of the * "Sub-Document Operations" documentation). * @return \Couchbase\DocumentFragment * * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function retrieveIn($id, ...$paths) {} /** * Returns a builder for writing subdocument API. * * @param string $id The ID of the JSON document * @param string $cas Last known document CAS value for optimisti locking * @return MutateInBuilder * * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function mutateIn($id, $cas) {} /** * Performs a query to Couchbase Server * * @param N1qlQuery|ViewQuery|SpatialViewQuery|SearchQuery|AnalyticsQuery $query * @param bool $jsonAsArray if true, the values in the result rows (or hits) will be represented as * PHP arrays, otherwise they will be instances of the `stdClass` * @return object Query-specific result object. * * @see \Couchbase\N1qlQuery * @see \Couchbase\SearchQuery * @see \Couchbase\ViewQuery * @see \Couchbase\SpatialViewQuery */ public function query($query, $jsonAsArray = false) {} /** * Returns size of the map * * @param string $id ID of the document * @return int number of the key-value pairs * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function mapSize($id) {} /** * Add key to the map * * @param string $id ID of the document * @param string $key key * @param mixed $value value * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function mapAdd($id, $key, $value) {} /** * Removes key from the map * * @param string $id ID of the document * @param string $key key * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function mapRemove($id, $key) {} /** * Get an item from a map * * @param string $id ID of the document * @param string $key key * @return mixed value associated with the key * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function mapGet($id, $key) {} /** * Returns size of the set * * @param string $id ID of the document * @return int number of the elements * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function setSize($id) {} /** * Add value to the set * * Note, that currently only primitive values could be stored in the set (strings, integers and booleans). * * @param string $id ID of the document * @param string|int|float|bool $value new value * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function setAdd($id, $value) {} /** * Check if the value exists in the set * * @param string $id ID of the document * @param string|int|float|bool $value value to check * @return bool true if the value exists in the set * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function setExists($id, $value) {} /** * Remove value from the set * * @param string $id ID of the document * @param string|int|float|bool $value value to remove * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function setRemove($id, $value) {} /** * Returns size of the list * * @param string $id ID of the document * @return int number of the elements * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function listSize($id) {} /** * Add an element to the end of the list * * @param string $id ID of the document * @param mixed $value new value * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function listPush($id, $value) {} /** * Add an element to the beginning of the list * * @param string $id ID of the document * @param mixed $value new value * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function listShift($id, $value) {} /** * Remove an element at the given position * * @param string $id ID of the document * @param int $index index of the element to be removed * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function listRemove($id, $index) {} /** * Get an element at the given position * * @param string $id ID of the document * @param int $index index of the element * @return mixed the value * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function listGet($id, $index) {} /** * Set an element at the given position * * @param string $id ID of the document * @param int $index index of the element * @param mixed $value new value * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function listSet($id, $index, $value) {} /** * Check if the list contains specified value * * @param string $id ID of the document * @param mixed $value value to look for * @return bool true if the list contains the value * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function listExists($id, $value) {} /** * Returns size of the queue * * @param string $id ID of the document * @return int number of the elements in the queue * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function queueSize($id) {} /** * Checks if the queue contains specified value * * @param string $id ID of the document * @param mixed $value value to look for * @return bool true if the queue contains the value * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function queueExists($id, $value) {} /** * Add an element to the beginning of the queue * * @param string $id ID of the document * @param mixed $value new value * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function queueAdd($id, $value) {} /** * Remove the element at the end of the queue and return it * * @param string $id ID of the document * @return mixed removed value * * @see https://developer.couchbase.com/documentation/server/current/sdk/php/datastructures.html * More details on Data Structures * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Overview of Sub-Document Operations */ public function queueRemove($id) {} /** * Try to reach specified services, and measure network latency. * * @param int $services bitwise mask of required services (and all services when zero) * @param string $reportId custom identifier, which will be appended to "id" property in report * @return array the report object * * @see \Couchbase\Bucket::PINGSVC_KV * @see \Couchbase\Bucket::PINGSVC_N1QL * @see \Couchbase\Bucket::PINGSVC_VIEWS * @see \Couchbase\Bucket::PINGSVC_FTS * * @see https://github.com/couchbaselabs/sdk-rfcs/blob/master/rfc/0034-health-check.md * SDK RFC #34, which describes the feature and report layout. */ public function ping($services = 0, $reportId = null) {} /** * Collect and return information about state of internal network connections. * * @param string $reportId custom identifier, which will be appended to "id" property in report * @return array the report object * * @see https://github.com/couchbaselabs/sdk-rfcs/blob/master/rfc/0034-health-check.md * SDK RFC #34, which describes the feature and report layout. */ public function diag($reportId = null) {} /** * Encrypt fields inside specified document. * * @param array $document document structure * @param array $fieldOptions specification for fields needed to be encrypted. Where 'alg' contains * a string with alias of the registed crypto provider, and 'name' contains the name of the field. * @param string $prefix optional prefix for modified field (when null, the library will use "__crypt") * * @return array where the fields encrypted * * @see https://github.com/couchbase/php-couchbase-encryption */ public function encryptFields($document, $fieldOptions, $prefix = null) {} /** * Decrypt fields inside specified document. * * @param array $document document structure * @param array $fieldOptions specification for fields needed to be decrypted. Where 'alg' contains * a string with alias of the registed crypto provider, and 'name' contains the name of the field. * @param string $prefix optional prefix for modified field (when null, the library will use "__crypt") * * @return array where the fields decrypted * * @see https://github.com/couchbase/php-couchbase-encryption */ public function decryptFields($document, $fieldOptions, $prefix = null) {} } /** * Provides management capabilities for the Couchbase Bucket */ class BucketManager { final private function __construct() {} /** * Returns information about the bucket * * Returns an associative array of status information as seen by the cluster for * this bucket. The exact structure of the returned data can be seen in the Couchbase * Manual by looking at the bucket /info endpoint. * * @return array * * @see https://developer.couchbase.com/documentation/server/current/rest-api/rest-bucket-info.html * Getting Single Bucket Information */ public function info() {} /** * Flushes the bucket (clears all data) */ public function flush() {} /** * Returns all design documents of the bucket. * * @return array */ public function listDesignDocuments() {} /** * Get design document by its name * * @param string $name name of the design document (without _design/ prefix) * @return array */ public function getDesignDocument($name) {} /** * Removes design document by its name * * @param string $name name of the design document (without _design/ prefix) */ public function removeDesignDocument($name) {} /** * Creates or replaces design document. * * @param string $name name of the design document (without _design/ prefix) * @param array $document */ public function upsertDesignDocument($name, $document) {} /** * Inserts design document and fails if it is exist already. * * @param string $name name of the design document (without _design/ prefix) * @param array $document */ public function insertDesignDocument($name, $document) {} /** * List all N1QL indexes that are registered for the current bucket. * * @return array */ public function listN1qlIndexes() {} /** * Create a primary N1QL index. * * @param string $customName the custom name for the primary index. * @param bool $ignoreIfExist if a primary index already exists, an exception * will be thrown unless this is set to true. * @param bool $defer true to defer index building. */ public function createN1qlPrimaryIndex($customName = '', $ignoreIfExist = false, $defer = false) {} /** * Create secondary N1QL index. * * @param string $name name of the index * @param array $fields list of JSON fields to index * @param string $whereClause the WHERE clause of the index. * @param bool $ignoreIfExist if a secondary index already exists, an exception * will be thrown unless this is set to true. * @param bool $defer true to defer index building. */ public function createN1qlIndex($name, $fields, $whereClause = '', $ignoreIfExist = false, $defer = false) {} /** * Drop the given primary index * * @param string $customName the custom name for the primary index * @param bool $ignoreIfNotExist if a primary index does not exist, an exception * will be thrown unless this is set to true. */ public function dropN1qlPrimaryIndex($customName = '', $ignoreIfNotExist = false) {} /** * Drop the given secondary index * * @param string $name the index name * @param bool $ignoreIfNotExist if a secondary index does not exist, an exception * will be thrown unless this is set to true. */ public function dropN1qlIndex($name, $ignoreIfNotExist = false) {} } /** * Interface of authentication containers. * * @see \Couchbase\Cluster::authenticate() * @see \Couchbase\ClassicAuthenticator * @see \Couchbase\PasswordAuthenticator */ interface Authenticator {} /** * Authenticator based on login/password credentials. * * This authenticator uses separate credentials for Cluster management interface * as well as for each bucket. * * * * @see \Couchbase\Cluster::authenticate() * @see \Couchbase\Authenticator */ class ClassicAuthenticator implements Authenticator { /** * Registers cluster management credentials in the container * * @param string $username admin username * @param string $password admin password */ public function cluster($username, $password) {} /** * Registers bucket credentials in the container * * @param string $name bucket name * @param string $password bucket password */ public function bucket($name, $password) {} } /** * Authenticator based on RBAC feature of Couchbase Server 5+. * * This authenticator uses single credentials for all operations (data and management). * * @see \Couchbase\Cluster::authenticate() * @see \Couchbase\Authenticator */ class PasswordAuthenticator implements Authenticator { /** * Sets username * * @param string $username username * @return \Couchbase\PasswordAuthenticator */ public function username($username) {} /** * Sets password * * @param string $password password * @return \Couchbase\PasswordAuthenticator */ public function password($password) {} } /** * An object which contains meta information of the document needed to enforce query consistency. */ class MutationToken { final private function __construct() {} /** * Creates new mutation token * * @param string $bucketName name of the bucket * @param int $vbucketId partition number * @param string $vbucketUuid UUID of the partition * @param string $sequenceNumber sequence number inside partition */ public static function from($bucketName, $vbucketId, $vbucketUuid, $sequenceNumber) {} /** * Returns bucket name * * @return string */ public function bucketName() {} /** * Returns partition number * * @return int */ public function vbucketId() {} /** * Returns UUID of the partition * * @return string */ public function vbucketUuid() {} /** * Returns the sequence number inside partition * * @return string */ public function sequenceNumber() {} } /** * Container for mutation tokens. */ class MutationState { final private function __construct() {} /** * Create container from the given mutation token holders. * * @param array|Document|DocumentFragment $source anything that can have attached MutationToken * @return MutationState * * @see \Couchbase\MutationToken */ public static function from($source) {} /** * Update container with the given mutation token holders. * * @param array|Document|DocumentFragment $source anything that can have attached MutationToken * * @see \Couchbase\MutationToken */ public function add($source) {} } /** * Common interface for all View queries * * @see \Couchbase\ViewQuery * @see \Couchbase\SpatialViewQuery */ interface ViewQueryEncodable { /** * Returns associative array, representing the View query. * * @return array object which is ready to be serialized. */ public function encode(); } /** * Represents regular Couchbase Map/Reduce View query * * @see \Couchbase\Bucket::query() * @see \Couchbase\SpatialViewQuery * @see https://developer.couchbase.com/documentation/server/current/sdk/php/view-queries-with-sdk.html * MapReduce Views * @see https://developer.couchbase.com/documentation/server/current/architecture/querying-data-with-views.html * Querying Data with Views * @see https://developer.couchbase.com/documentation/server/current/rest-api/rest-views-get.html * Getting Views Information */ class ViewQuery implements ViewQueryEncodable { /** Force a view update before returning data */ public const UPDATE_BEFORE = 1; /** Allow stale views */ public const UPDATE_NONE = 2; /** Allow stale view, update view after it has been accessed. */ public const UPDATE_AFTER = 3; public const ORDER_ASCENDING = 1; public const ORDER_DESCENDING = 2; final private function __construct() {} /** * Creates a new Couchbase ViewQuery instance for performing a view query. * * @param string $designDocumentName the name of the design document to query * @param string $viewName the name of the view to query * @return ViewQuery */ public static function from($designDocumentName, $viewName) {} /** * Creates a new Couchbase ViewQuery instance for performing a spatial query. * @param string $designDocumentName the name of the design document to query * @param string $viewName the name of the view to query * @return SpatialViewQuery */ public static function fromSpatial($designDocumentName, $viewName) {} /** * Returns associative array, representing the View query. * * @return array object which is ready to be serialized. */ public function encode() {} /** * Limits the result set to a specified number rows. * * @param int $limit maximum number of records in the response * @return ViewQuery */ public function limit($limit) {} /** * Skips a number o records rom the beginning of the result set * * @param int $skip number of records to skip * @return ViewQuery */ public function skip($skip) {} /** * Specifies the mode of updating to perorm before and after executing the query * * @param int $consistency use constants UPDATE_BEFORE, UPDATE_NONE, UPDATE_AFTER * @return ViewQuery * * @see \Couchbase\ViewQuery::UPDATE_BEFORE * @see \Couchbase\ViewQuery::UPDATE_NONE * @see \Couchbase\ViewQuery::UPDATE_AFTER */ public function consistency($consistency) {} /** * Orders the results by key as specified * * @param int $order use contstants ORDER_ASCENDING, ORDER_DESCENDING * @return ViewQuery */ public function order($order) {} /** * Specifies whether the reduction function should be applied to results of the query. * * @param bool $reduce * @return ViewQuery */ public function reduce($reduce) {} /** * Group the results using the reduce function to a group or single row. * * Important: this setter and groupLevel should not be used together in the * same ViewQuery. It is sufficient to only set the grouping level only and * use this setter in cases where you always want the highest group level * implictly. * * @param bool $group * @return ViewQuery * * @see \Couchbase\ViewQuery::groupLevel */ public function group($group) {} /** * Specify the group level to be used. * * Important: group() and this setter should not be used together in the * same ViewQuery. It is sufficient to only use this setter and use group() * in cases where you always want the highest group level implictly. * * @param int $groupLevel the number of elements in the keys to use * @return ViewQuery * * @see \Couchbase\ViewQuery::group */ public function groupLevel($groupLevel) {} /** * Restict results of the query to the specified key * * @param mixed $key key * @return ViewQuery */ public function key($key) {} /** * Restict results of the query to the specified set of keys * * @param array $keys set of keys * @return ViewQuery */ public function keys($keys) {} /** * Specifies a range of the keys to return from the index. * * @param mixed $startKey * @param mixed $endKey * @param bool $inclusiveEnd * @return ViewQuery */ public function range($startKey, $endKey, $inclusiveEnd = false) {} /** * Specifies start and end document IDs in addition to range limits. * * This might be needed for more precise pagination with a lot of documents * with the same key selected into the same page. * * @param string $startKeyDocumentId document ID * @param string $endKeyDocumentId document ID * @return ViewQuery */ public function idRange($startKeyDocumentId, $endKeyDocumentId) {} /** * Specifies custom options to pass to the server. * * Note that these options are expected to be already encoded. * * @param array $customParameters parameters * @return ViewQuery * * @see https://developer.couchbase.com/documentation/server/current/rest-api/rest-views-get.html * Getting Views Information */ public function custom($customParameters) {} } /** * Represents spatial Couchbase Map/Reduce View query * * @see \Couchbase\Bucket::query() * @see \Couchbase\ViewQuery * @see https://developer.couchbase.com/documentation/server/current/architecture/querying-geo-data-spatial-views.html * Querying Geographic Data with Spatial Views * @see https://developer.couchbase.com/documentation/server/current/rest-api/rest-views-get.html * Getting Views Information * @see https://developer.couchbase.com/documentation/server/current/views/sv-query-parameters.html * Querying spatial views */ class SpatialViewQuery implements ViewQueryEncodable { final private function __construct() {} /** * Returns associative array, representing the View query. * * @return array object which is ready to be serialized. */ public function encode() {} /** * Limits the result set to a specified number rows. * * @param int $limit maximum number of records in the response * @return SpatialViewQuery */ public function limit($limit) {} /** * Skips a number o records rom the beginning of the result set * * @param int $skip number of records to skip * @return SpatialViewQuery */ public function skip($skip) {} /** * Specifies the mode of updating to perorm before and after executing the query * * @param int $consistency use constants UPDATE_BEFORE, UPDATE_NONE, UPDATE_AFTER * @return SpatialViewQuery * * @see \Couchbase\ViewQuery::UPDATE_BEFORE * @see \Couchbase\ViewQuery::UPDATE_NONE * @see \Couchbase\ViewQuery::UPDATE_AFTER */ public function consistency($consistency) {} /** * Orders the results by key as specified * * @param int $order use contstants ORDER_ASCENDING, ORDER_DESCENDING * @return SpatialViewQuery */ public function order($order) {} /** * Specifies the bounding box to search within. * * Note, using bbox() is discouraged, startRange/endRange is more flexible and should be preferred. * * @param array $bbox bounding box coordinates expressed as a list of numeric values * @return SpatialViewQuery * * @see \Couchbase\SpatialViewQuery::startRange() * @see \Couchbase\SpatialViewQuery::endRange() */ public function bbox($bbox) {} /** * Specify start range for query * * @param array $range * @return SpatialViewQuery * * @see https://developer.couchbase.com/documentation/server/current/views/sv-query-parameters.html * Querying spatial views */ public function startRange($range) {} /** * Specify end range for query * * @param array $range * @return SpatialViewQuery * * @see https://developer.couchbase.com/documentation/server/current/views/sv-query-parameters.html * Querying spatial views */ public function endRange($range) {} /** * Specifies custom options to pass to the server. * * Note that these options are expected to be already encoded. * * @param array $customParameters parameters * * @see https://developer.couchbase.com/documentation/server/current/rest-api/rest-views-get.html * Getting Views Information * @see https://developer.couchbase.com/documentation/server/current/views/sv-query-parameters.html * Querying spatial views */ public function custom($customParameters) {} } /** * Represents a N1QL query * * @see https://developer.couchbase.com/documentation/server/current/sdk/n1ql-query.html * Querying with N1QL * @see https://developer.couchbase.com/documentation/server/current/sdk/php/n1ql-queries-with-sdk.html * N1QL from the SDKs * @see https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-rest-api/index.html * N1QL REST API * @see https://developer.couchbase.com/documentation/server/current/performance/index-scans.html * Understanding Index Scans * @see https://developer.couchbase.com/documentation/server/current/performance/indexing-and-query-perf.html * Indexing JSON Documents and Query Performance */ class N1qlQuery { /** * This is the default (for single-statement requests). * No timestamp vector is used in the index scan. * This is also the fastest mode, because we avoid the cost of obtaining the vector, * and we also avoid any wait for the index to catch up to the vector. */ public const NOT_BOUNDED = 1; /** * This implements strong consistency per request. * Before processing the request, a current vector is obtained. * The vector is used as a lower bound for the statements in the request. * If there are DML statements in the request, RYOW is also applied within the request. */ public const REQUEST_PLUS = 2; /** * This implements strong consistency per statement. * Before processing each statement, a current vector is obtained * and used as a lower bound for that statement. */ public const STATEMENT_PLUS = 3; /** * Disables profiling. This is the default */ public const PROFILE_NONE = 'off'; /** * Enables phase profiling. */ public const PROFILE_PHASES = 'phases'; /** * Enables general timing profiling. */ public const PROFILE_TIMINGS = 'timings'; final private function __construct() {} /** * Creates new N1qlQuery instance directly from the N1QL string. * * @param string $statement N1QL string * @return N1qlQuery */ public static function fromString($statement) {} /** * Allows to specify if this query is adhoc or not. * * If it is not adhoc (so performed often), the client will try to perform optimizations * transparently based on the server capabilities, like preparing the statement and * then executing a query plan instead of the raw query. * * @param bool $adhoc if query is adhoc, default is true (plain execution) * @return N1qlQuery */ public function adhoc($adhoc) {} /** * Allows to pull credentials from the Authenticator * * @param bool $crossBucket if query includes joins for multiple buckets (default is false) * @return N1qlQuery * * * @see \Couchbase\Authenticator * @see \Couchbase\ClassicAuthenticator */ public function crossBucket($crossBucket) {} /** * Specify array of positional parameters * * Previously specified positional parameters will be replaced. * Note: carefully choose type of quotes for the query string, because PHP also uses `$` * (dollar sign) for variable interpolation. If you are using double quotes, make sure * that N1QL parameters properly escaped. * * @param array $params * @return N1qlQuery */ public function positionalParams($params) {} /** * Specify associative array of named parameters * * The supplied array of key/value pairs will be merged with already existing named parameters. * Note: carefully choose type of quotes for the query string, because PHP also uses `$` * (dollar sign) for variable interpolation. If you are using double quotes, make sure * that N1QL parameters properly escaped. * * @param array $params * @return N1qlQuery */ public function namedParams($params) {} /** * Specifies the consistency level for this query * * @param int $consistency consistency level * @return N1qlQuery * * @see \Couchbase\N1qlQuery::NOT_BOUNDED * @see \Couchbase\N1qlQuery::REQUEST_PLUS * @see \Couchbase\N1qlQuery::STATEMENT_PLUS * @see \Couchbase\N1qlQuery::consistentWith() */ public function consistency($consistency) {} /** * Controls the profiling mode used during query execution * * @param string $profileType * @return N1qlQuery * @see \Couchbase\N1qlQuery::PROFILE_NONE * @see \Couchbase\N1qlQuery::PROFILE_PHASES * @see \Couchbase\N1qlQuery::PROFILE_TIMINGS */ public function profile($profileType) {} /** * Sets mutation state the query should be consistent with * * @param MutationState $state the container of mutation tokens * @return N1qlQuery * * @see \Couchbase\MutationState */ public function consistentWith($state) {} /** * If set to true, it will signal the query engine on the server that only non-data modifying requests * are allowed. Note that this rule is enforced on the server and not the SDK side. * * Controls whether a query can change a resulting record set. * * If readonly is true, then the following statements are not allowed: * - CREATE INDEX * - DROP INDEX * - INSERT * - MERGE * - UPDATE * - UPSERT * - DELETE * * @param bool $readonly true if readonly should be forced, false is the default and will use the server side default. * @return N1qlQuery */ public function readonly($readonly) {} /** * Advanced: Maximum buffered channel size between the indexer client and the query service for index scans. * * This parameter controls when to use scan backfill. Use 0 or a negative number to disable. * * @param int $scanCap the scan_cap param, use 0 or negative number to disable. * @return N1qlQuery */ public function scanCap($scanCap) {} /** * Advanced: Controls the number of items execution operators can batch for Fetch from the KV. * * @param int $pipelineBatch the pipeline_batch param. * @return N1qlQuery */ public function pipelineBatch($pipelineBatch) {} /** * Advanced: Maximum number of items each execution operator can buffer between various operators. * * @param int $pipelineCap the pipeline_cap param. * @return N1qlQuery */ public function pipelineCap($pipelineCap) {} /** * Allows to override the default maximum parallelism for the query execution on the server side. * * @param int $maxParallelism the maximum parallelism for this query, 0 or negative values disable it. * @return N1qlQuery */ public function maxParallelism($maxParallelism) {} } /** * Represents N1QL index definition * * @see https://developer.couchbase.com/documentation/server/current/performance/indexing-and-query-perf.html * Indexing JSON Documents and Query Performance */ class N1qlIndex { public const UNSPECIFIED = 0; public const GSI = 1; public const VIEW = 2; final private function __construct() {} /** * Name of the index * * @var string */ public $name; /** * Is it primary index * * @var bool */ public $isPrimary; /** * Type of the index * * @var int * * @see \Couchbase\N1qlIndex::UNSPECIFIED * @see \Couchbase\N1qlIndex::GSI * @see \Couchbase\N1qlIndex::VIEW */ public $type; /** * The descriptive state of the index * * @var string */ public $state; /** * The keyspace for the index, typically the bucket name * @var string */ public $keyspace; /** * The namespace for the index. A namespace is a resource pool that contains multiple keyspaces * @var string */ public $namespace; /** * The fields covered by index * @var array */ public $fields; /** * Return the string representation of the index's condition (the WHERE clause * of the index), or an empty String if no condition was set. * * Note that the query service can present the condition in a slightly different * manner from when you declared the index: for instance it will wrap expressions * with parentheses and show the fields in an escaped format (surrounded by backticks). * * @var string */ public $condition; } /** * A builder for subdocument lookups. In order to perform the final set of operations, use the * execute() method. * * Instances of this builder should be obtained through \Couchbase\Bucket->lookupIn() * * @see \Couchbase\Bucket::lookupIn * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Sub-Document Operations */ class LookupInBuilder { final private function __construct() {} /** * Get a value inside the JSON document. * * @param string $path the path inside the document where to get the value from. * @param array $options the array with command modificators. Supported values are * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return LookupInBuilder */ public function get($path, $options = []) {} /** * Get a count of values inside the JSON document. * * This method is only available with Couchbase Server 5.0 and later. * * @param string $path the path inside the document where to get the count from. * @param array $options the array with command modificators. Supported values are * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return LookupInBuilder */ public function getCount($path, $options = []) {} /** * Check if a value exists inside the document. * * This doesn't transmit the value on the wire if it exists, saving the corresponding byte overhead. * * @param string $path the path inside the document to check for existence * @param array $options the array with command modificators. Supported values are * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return LookupInBuilder */ public function exists($path, $options = []) {} /** * Perform several lookup operations inside a single existing JSON document, using a specific timeout * @return DocumentFragment */ public function execute() {} } /** * A builder for subdocument mutations. In order to perform the final set of operations, use the * execute() method. * * Instances of this builder should be obtained through \Couchbase\Bucket->mutateIn() * * @see \Couchbase\Bucket::mutateIn * @see https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html * Sub-Document Operations */ class MutateInBuilder { public const FULLDOC_REPLACE = 0; public const FULLDOC_UPSERT = 1; public const FULLDOC_INSERT = 2; final private function __construct() {} /** * Insert a fragment provided the last element of the path doesn't exists. * * @param string $path the path where to insert a new dictionary value. * @param mixed $value the new dictionary value to insert. * @param array|bool $options the array with command modificators. * The boolean value, controls "createPath" option. Supported values are: * * "createPath" (default: false) true to create missing intermediary nodes. * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return MutateInBuilder */ public function insert($path, $value, $options = []) {} /** * Select mode for new full-document operations. * * It defines behaviour of MutateInBuilder#upsert() method. The $mode * could take one of three modes: * * FULLDOC_REPLACE: complain when document does not exist * * FULLDOC_INSERT: complain when document does exist * * FULLDOC_UPSERT: unconditionally set value for the document * * @param int $mode operation mode */ public function modeDocument($mode) {} /** * Insert a fragment, replacing the old value if the path exists. * * When only one argument supplied, the library will handle it as full-document * upsert, and treat this argument as value. See MutateInBuilder#modeDocument() * * @param string $path the path where to insert (or replace) a dictionary value * @param mixed $value the new dictionary value to be applied. * @param array|bool $options the array with command modificators. * The boolean value, controls "createPath" option. Supported values are: * * "createPath" (default: false) true to create missing intermediary nodes. * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return MutateInBuilder */ public function upsert($path, $value, $options = []) {} /** * Replace an existing value by the given fragment * * @param string $path the path where the value to replace is * @param mixed $value the new value * @param array $options the array with command modificators. Supported values are: * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return MutateInBuilder */ public function replace($path, $value, $options = []) {} /** * Remove an entry in a JSON document. * * Scalar, array element, dictionary entry, whole array or dictionary, depending on the path. * * @param string $path the path to remove * @param array $options the array with command modificators. Supported values are: * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return MutateInBuilder */ public function remove($path, $options = []) {} /** * Prepend to an existing array, pushing the value to the front/first position in the array. * * @param string $path the path of the array * @param mixed $value the value to insert at the front of the array * @param array|bool $options the array with command modificators. * The boolean value, controls "createPath" option. Supported values are: * * "createPath" (default: false) true to create missing intermediary nodes. * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return MutateInBuilder */ public function arrayPrepend($path, $value, $options = []) {} /** * Prepend multiple values at once in an existing array. * * Push all values in the collection's iteration order to the front/start of the array. * For example given an array [A, B, C], prepending the values X and Y yields [X, Y, A, B, C] * and not [[X, Y], A, B, C]. * * @param string $path the path of the array * @param array $values the values to insert at the front of the array as individual elements * @param array|bool $options the array with command modificators. * The boolean value, controls "createPath" option. Supported values are: * * "createPath" (default: false) true to create missing intermediary nodes. * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return MutateInBuilder */ public function arrayPrependAll($path, $values, $options = []) {} /** * Append to an existing array, pushing the value to the back/last position in the array. * * @param string $path the path of the array * @param mixed $value the value to insert at the back of the array * @param array|bool $options the array with command modificators. * The boolean value, controls "createPath" option. Supported values are: * * "createPath" (default: false) true to create missing intermediary nodes. * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return MutateInBuilder */ public function arrayAppend($path, $value, $options = []) {} /** * Append multiple values at once in an existing array. * * Push all values in the collection's iteration order to the back/end of the array. * For example given an array [A, B, C], appending the values X and Y yields [A, B, C, X, Y] * and not [A, B, C, [X, Y]]. * * @param string $path the path of the array * @param array $values the values to individually insert at the back of the array * @param array|bool $options the array with command modificators. * The boolean value, controls "createPath" option. Supported values are: * * "createPath" (default: false) true to create missing intermediary nodes. * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return MutateInBuilder */ public function arrayAppendAll($path, $values, $options = []) {} /** * Insert into an existing array at a specific position * * Position denoted in the path, eg. "sub.array[2]". * * @param string $path the path (including array position) where to insert the value * @param mixed $value the value to insert in the array * @param array $options the array with command modificators. Supported values are: * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return MutateInBuilder */ public function arrayInsert($path, $value, $options = []) {} /** * Insert multiple values at once in an existing array at a specified position. * * Position denoted in the path, eg. "sub.array[2]"), inserting all values in the collection's iteration order * at the given position and shifting existing values beyond the position by the number of elements in the * collection. * * For example given an array [A, B, C], inserting the values X and Y at position 1 yields [A, B, X, Y, C] * and not [A, B, [X, Y], C]. * @param string $path the path of the array * @param array $values the values to insert at the specified position of the array, each value becoming * an entry at or after the insert position. * @param array $options the array with command modificators. Supported values are: * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return MutateInBuilder */ public function arrayInsertAll($path, $values, $options = []) {} /** * Insert a value in an existing array only if the value * isn't already contained in the array (by way of string comparison). * * @param string $path the path to mutate in the JSON * @param mixed $value the value to insert * @param array|bool $options the array with command modificators. * The boolean value, controls "createPath" option. Supported values are: * * "createPath" (default: false) true to create missing intermediary nodes. * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return MutateInBuilder */ public function arrayAddUnique($path, $value, $options = []) {} /** * Increment/decrement a numerical fragment in a JSON document. * * If the value (last element of the path) doesn't exist the counter * is created and takes the value of the delta. * * @param string $path the path to the counter (must be containing a number). * @param int $delta the value to increment or decrement the counter by * @param array|bool $options the array with command modificators. * The boolean value, controls "createPath" option. Supported values are: * * "createPath" (default: false) true to create missing intermediary nodes. * * "xattr" (default: false) if true, the path refers to a location * within the document's extended attributes, not the document body. * @return MutateInBuilder */ public function counter($path, $delta, $options = []) {} /** * Change the expiry of the enclosing document as part of the mutation. * * @param mixed $expiry the new expiry to apply (or 0 to avoid changing the expiry) * @return MutateInBuilder */ public function withExpiry($expiry) {} /** * Perform several mutation operations inside a single existing JSON document. * @return DocumentFragment */ public function execute() {} } /** * Represents full text search query * * @see https://developer.couchbase.com/documentation/server/4.6/sdk/php/full-text-searching-with-sdk.html * Searching from the SDK */ class SearchQuery implements \JsonSerializable { public const HIGHLIGHT_HTML = 'html'; public const HIGHLIGHT_ANSI = 'ansi'; public const HIGHLIGHT_SIMPLE = 'simple'; /** * Prepare boolean search query * * @return BooleanSearchQuery */ public static function boolean() {} /** * Prepare date range search query * * @return DateRangeSearchQuery */ public static function dateRange() {} /** * Prepare numeric range search query * * @return NumericRangeSearchQuery */ public static function numericRange() {} /** * Prepare term range search query * * @return TermRangeSearchQuery */ public static function termRange() {} /** * Prepare boolean field search query * * @param bool $value * @return BooleanFieldSearchQuery */ public static function booleanField($value) {} /** * Prepare compound conjunction search query * * @param SearchQueryPart ...$queries list of inner query parts * @return ConjunctionSearchQuery */ public static function conjuncts(...$queries) {} /** * Prepare compound disjunction search query * * @param SearchQueryPart ...$queries list of inner query parts * @return DisjunctionSearchQuery */ public static function disjuncts(...$queries) {} /** * Prepare document ID search query * * @param string ...$documentIds * @return DocIdSearchQuery */ public static function docId(...$documentIds) {} /** * Prepare match search query * * @param string $match * @return MatchSearchQuery */ public static function match($match) {} /** * Prepare match all search query * * @return MatchAllSearchQuery */ public static function matchAll() {} /** * Prepare match non search query * * @return MatchNoneSearchQuery */ public static function matchNone() {} /** * Prepare phrase search query * * @param string ...$terms * @return MatchPhraseSearchQuery */ public static function matchPhrase(...$terms) {} /** * Prepare prefix search query * * @param string $prefix * @return PrefixSearchQuery */ public static function prefix($prefix) {} /** * Prepare query string search query * * @param string $queryString * @return QueryStringSearchQuery */ public static function queryString($queryString) {} /** * Prepare regexp search query * * @param string $regexp * @return RegexpSearchQuery */ public static function regexp($regexp) {} /** * Prepare term search query * * @param string $term * @return TermSearchQuery */ public static function term($term) {} /** * Prepare wildcard search query * * @param string $wildcard * @return WildcardSearchQuery */ public static function wildcard($wildcard) {} /** * Prepare geo distance search query * * @param float $longitude * @param float $latitude * @param string $distance e.g. "10mi" * @return GeoDistanceSearchQuery */ public static function geoDistance($longitude, $latitude, $distance) {} /** * Prepare geo bounding box search query * * @param float $topLeftLongitude * @param float $topLeftLatitude * @param float $bottomRightLongitude * @param float $bottomRightLatitude * @return GeoBoundingBoxSearchQuery */ public static function geoBoundingBox($topLeftLongitude, $topLeftLatitude, $bottomRightLongitude, $bottomRightLatitude) {} /** * Prepare term search facet * * @param string $field * @param int $limit * @return TermSearchFacet */ public static function termFacet($field, $limit) {} /** * Prepare date range search facet * * @param string $field * @param int $limit * @return DateRangeSearchFacet */ public static function dateRangeFacet($field, $limit) {} /** * Prepare numeric range search facet * * @param string $field * @param int $limit * @return NumericRangeSearchFacet */ public static function numericRangeFacet($field, $limit) {} /** * Prepare an FTS SearchQuery on an index. * * Top level query parameters can be set after that by using the fluent API. * * @param string $indexName the FTS index to search in * @param SearchQueryPart $queryPart the body of the FTS query (e.g. a match phrase query) */ public function __construct($indexName, $queryPart) {} /** * @return array */ public function jsonSerialize() {} /** * Add a limit to the query on the number of hits it can return * * @param int $limit the maximum number of hits to return * @return SearchQuery */ public function limit($limit) {} /** * Set the number of hits to skip (eg. for pagination). * * @param int $skip the number of results to skip * @return SearchQuery */ public function skip($skip) {} /** * Activates the explanation of each result hit in the response * * @param bool $explain * @return SearchQuery */ public function explain($explain) {} /** * Sets the server side timeout in milliseconds * * @param int $serverSideTimeout the server side timeout to apply * @return SearchQuery */ public function serverSideTimeout($serverSideTimeout) {} /** * Sets the consistency to consider for this FTS query to AT_PLUS and * uses the MutationState to parameterize the consistency. * * This replaces any consistency tuning previously set. * * @param MutationState $state the mutation state information to work with * @return SearchQuery */ public function consistentWith($state) {} /** * Configures the list of fields for which the whole value should be included in the response. * * If empty, no field values are included. This drives the inclusion of the fields in each hit. * Note that to be highlighted, the fields must be stored in the FTS index. * * @param string ...$fields * @return SearchQuery */ public function fields(...$fields) {} /** * Configures the highlighting of matches in the response * * @param string $style highlight style to apply. Use constants HIGHLIGHT_HTML, * HIGHLIGHT_ANSI, HIGHLIGHT_SIMPLE. * @param string ...$fields the optional fields on which to highlight. * If none, all fields where there is a match are highlighted. * @return SearchQuery * * @see \Couchbase\SearchQuery::HIGHLIGHT_HTML * @see \Couchbase\SearchQuery::HIGHLIGHT_ANSI * @see \Couchbase\SearchQuery::HIGHLIGHT_SIMPLE */ public function highlight($style, ...$fields) {} /** * Configures the list of fields (including special fields) which are used for sorting purposes. * If empty, the default sorting (descending by score) is used by the server. * * The list of sort fields can include actual fields (like "firstname" but then they must be stored in the * index, configured in the server side mapping). Fields provided first are considered first and in a "tie" case * the next sort field is considered. So sorting by "firstname" and then "lastname" will first sort ascending by * the firstname and if the names are equal then sort ascending by lastname. Special fields like "_id" and * "_score" can also be used. If prefixed with "-" the sort order is set to descending. * * If no sort is provided, it is equal to sort("-_score"), since the server will sort it by score in descending * order. * * @param mixed $sort the fields that should take part in the sorting. * @return SearchQuery */ public function sort(...$sort) {} /** * Adds one SearchFacet to the query * * This is an additive operation (the given facets are added to any facet previously requested), * but if an existing facet has the same name it will be replaced. * * Note that to be faceted, a field's value must be stored in the FTS index. * * @param string $name * @param SearchFacet $facet * @return SearchQuery * * @see \Couchbase\SearchFacet * @see \Couchbase\TermSearchFacet * @see \Couchbase\NumericRangeSearchFacet * @see \Couchbase\DateRangeSearchFacet */ public function addFacet($name, $facet) {} } /** * Common interface for all classes, which could be used as a body of SearchQuery * * @see \Couchbase\SearchQuery::__construct() */ interface SearchQueryPart {} /** * A FTS query that queries fields explicitly indexed as boolean. */ class BooleanFieldSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return BooleanFieldSearchQuery */ public function boost($boost) {} /** * @param string $field * @return BooleanFieldSearchQuery */ public function field($field) {} } /** * A compound FTS query that allows various combinations of sub-queries. */ class BooleanSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return BooleanSearchQuery */ public function boost($boost) {} /** * @param SearchQueryPart ...$queries * @return BooleanSearchQuery */ public function must(...$queries) {} /** * @param SearchQueryPart ...$queries * @return BooleanSearchQuery */ public function mustNot(...$queries) {} /** * @param SearchQueryPart ...$queries * @return BooleanSearchQuery */ public function should(...$queries) {} } /** * A compound FTS query that performs a logical AND between all its sub-queries (conjunction). */ class ConjunctionSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return ConjunctionSearchQuery */ public function boost($boost) {} /** * @param SearchQueryPart ...$queries * @return ConjunctionSearchQuery */ public function every(...$queries) {} } /** * A compound FTS query that performs a logical OR between all its sub-queries (disjunction). It requires that a * minimum of the queries match. The minimum is configurable (default 1). */ class DisjunctionSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return DisjunctionSearchQuery */ public function boost($boost) {} /** * @param SearchQueryPart ...$queries * @return DisjunctionSearchQuery */ public function either(...$queries) {} /** * @param int $min * @return DisjunctionSearchQuery */ public function min($min) {} } /** * A FTS query that matches documents on a range of values. At least one bound is required, and the * inclusiveness of each bound can be configured. */ class DateRangeSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return DateRangeSearchQuery */ public function boost($boost) {} /** * @param string $field * @return DateRangeSearchQuery */ public function field($field) {} /** * @param int|string $start The strings will be taken verbatim and supposed to be formatted with custom date * time formatter (see dateTimeParser). Integers interpreted as unix timestamps and represented as RFC3339 * strings. * @param bool $inclusive * @return DateRangeSearchQuery */ public function start($start, $inclusive = true) {} /** * @param int|string $end The strings will be taken verbatim and supposed to be formatted with custom date * time formatter (see dateTimeParser). Integers interpreted as unix timestamps and represented as RFC3339 * strings. * @param bool $inclusive * @return DateRangeSearchQuery */ public function end($end, $inclusive = false) {} /** * @param string $dateTimeParser * @return DateRangeSearchQuery */ public function dateTimeParser($dateTimeParser) {} } /** * A FTS query that matches documents on a range of values. At least one bound is required, and the * inclusiveness of each bound can be configured. */ class NumericRangeSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return NumericRangeSearchQuery */ public function boost($boost) {} /** * @param string $field * @return NumericRangeSearchQuery */ public function field($field) {} /** * @param float $min * @param bool $inclusive * @return NumericRangeSearchQuery */ public function min($min, $inclusive = true) {} /** * @param float $max * @param bool $inclusive * @return NumericRangeSearchQuery */ public function max($max, $inclusive = false) {} } /** * A FTS query that matches on Couchbase document IDs. Useful to restrict the search space to a list of keys (by using * this in a compound query). */ class DocIdSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return DocIdSearchQuery */ public function boost($boost) {} /** * @param string $field * @return DocIdSearchQuery */ public function field($field) {} /** * @param string ...$documentIds * @return DocIdSearchQuery */ public function docIds(...$documentIds) {} } /** * A FTS query that matches all indexed documents (usually for debugging purposes). */ class MatchAllSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return MatchAllSearchQuery */ public function boost($boost) {} } /** * A FTS query that matches 0 document (usually for debugging purposes). */ class MatchNoneSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return MatchNoneSearchQuery */ public function boost($boost) {} } /** * A FTS query that matches several given terms (a "phrase"), applying further processing * like analyzers to them. */ class MatchPhraseSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return MatchPhraseSearchQuery */ public function boost($boost) {} /** * @param string $field * @return MatchPhraseSearchQuery */ public function field($field) {} /** * @param string $analyzer * @return MatchPhraseSearchQuery */ public function analyzer($analyzer) {} } /** * A FTS query that matches a given term, applying further processing to it * like analyzers, stemming and even #fuzziness(int). */ class MatchSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return MatchSearchQuery */ public function boost($boost) {} /** * @param string $field * @return MatchSearchQuery */ public function field($field) {} /** * @param string $analyzer * @return MatchSearchQuery */ public function analyzer($analyzer) {} /** * @param int $prefixLength * @return MatchSearchQuery */ public function prefixLength($prefixLength) {} /** * @param int $fuzziness * @return MatchSearchQuery */ public function fuzziness($fuzziness) {} } /** * A FTS query that matches several terms (a "phrase") as is. The order of the terms mater and no further processing is * applied to them, so they must appear in the index exactly as provided. Usually for debugging purposes, prefer * MatchPhraseQuery. */ class PhraseSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return PhraseSearchQuery */ public function boost($boost) {} /** * @param string $field * @return PhraseSearchQuery */ public function field($field) {} } /** * A FTS query that allows for simple matching of regular expressions. */ class RegexpSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return RegexpSearchQuery */ public function boost($boost) {} /** * @param string $field * @return RegexpSearchQuery */ public function field($field) {} } /** * A FTS query that allows for simple matching using wildcard characters (* and ?). */ class WildcardSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return WildcardSearchQuery */ public function boost($boost) {} /** * @param string $field * @return WildcardSearchQuery */ public function field($field) {} } /** * A FTS query that allows for simple matching on a given prefix. */ class PrefixSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return PrefixSearchQuery */ public function boost($boost) {} /** * @param string $field * @return PrefixSearchQuery */ public function field($field) {} } /** * A FTS query that performs a search according to the "string query" syntax. */ class QueryStringSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return QueryStringSearchQuery */ public function boost($boost) {} } /** * A facet that gives the number of occurrences of the most recurring terms in all hits. */ class TermSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return TermSearchQuery */ public function boost($boost) {} /** * @param string $field * @return TermSearchQuery */ public function field($field) {} /** * @param int $prefixLength * @return TermSearchQuery */ public function prefixLength($prefixLength) {} /** * @param int $fuzziness * @return TermSearchQuery */ public function fuzziness($fuzziness) {} } /** * A FTS query that matches documents on a range of values. At least one bound is required, and the * inclusiveness of each bound can be configured. */ class TermRangeSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return TermRangeSearchQuery */ public function boost($boost) {} /** * @param string $field * @return TermRangeSearchQuery */ public function field($field) {} /** * @param string $min * @param bool $inclusive * @return TermRangeSearchQuery */ public function min($min, $inclusive = true) {} /** * @param string $max * @param bool $inclusive * @return TermRangeSearchQuery */ public function max($max, $inclusive = false) {} } /** * A FTS query that finds all matches from a given location (point) within the given distance. * * Both the point and the distance are required. */ class GeoDistanceSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return GeoDistanceSearchQuery */ public function boost($boost) {} /** * @param string $field * @return GeoDistanceSearchQuery */ public function field($field) {} } /** * A FTS query which allows to match geo bounding boxes. */ class GeoBoundingBoxSearchQuery implements \JsonSerializable, SearchQueryPart { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param float $boost * @return GeoBoundingBoxSearchQuery */ public function boost($boost) {} /** * @param string $field * @return GeoBoundingBoxSearchQuery */ public function field($field) {} } /** * Common interface for all search facets * * @see \Couchbase\SearchQuery::addFacet() * @see \Couchbase\TermSearchFacet * @see \Couchbase\DateRangeSearchFacet * @see \Couchbase\NumericRangeSearchFacet */ interface SearchFacet {} /** * A facet that gives the number of occurrences of the most recurring terms in all hits. */ class TermSearchFacet implements \JsonSerializable, SearchFacet { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} } /** * A facet that categorizes hits inside date ranges (or buckets) provided by the user. */ class DateRangeSearchFacet implements \JsonSerializable, SearchFacet { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param string $name * @param int|string $start * @param int|string $end * @return DateSearchFacet */ public function addRange($name, $start, $end) {} } /** * A facet that categorizes hits into numerical ranges (or buckets) provided by the user. */ class NumericRangeSearchFacet implements \JsonSerializable, SearchFacet { final private function __construct() {} /** * @return array */ public function jsonSerialize() {} /** * @param string $name * @param float $min * @param float $max * @return NumericSearchFacet */ public function addRange($name, $min, $max) {} } /** * Base class for all FTS sort options in querying. */ class SearchSort { private function __construct() {} /** * Sort by the document identifier. * * @return SearchSortId */ public static function id() {} /** * Sort by the hit score. * * @return SearchSortScore */ public static function score() {} /** * Sort by a field in the hits. * * @param string $field the field name * * @return SearchSortField */ public static function field($field) {} /** * Sort by geo location. * * @param string $field the field name * @param float $longitude the longitude of the location * @param float $latitude the latitude of the location * * @return SearchSortGeoDistance */ public static function geoDistance($field, $longitude, $latitude) {} } /** * Sort by the document identifier. */ class SearchSortId extends SearchSort implements \JsonSerializable { private function __construct() {} /** * Direction of the sort * * @param bool $descending * * @return SearchSortId */ public function descending($descending) {} } /** * Sort by the hit score. */ class SearchSortScore extends SearchSort implements \JsonSerializable { private function __construct() {} /** * Direction of the sort * * @param bool $descending * * @return SearchSortScore */ public function descending($descending) {} } /** * Sort by a field in the hits. */ class SearchSortField extends SearchSort implements \JsonSerializable { public const TYPE_AUTO = "auto"; public const TYPE_STRING = "string"; public const TYPE_NUMBER = "number"; public const TYPE_DATE = "date"; public const MODE_DEFAULT = "default"; public const MODE_MIN = "min"; public const MODE_MAX = "max"; public const MISSING_FIRST = "first"; public const MISSING_LAST = "last"; private function __construct() {} /** * Direction of the sort * * @param bool $descending * * @return SearchSortField */ public function descending($descending) {} /** * Set type of the field * * @param string $type the type * * @see SearchSortField::TYPE_AUTO * @see SearchSortField::TYPE_STRING * @see SearchSortField::TYPE_NUMBER * @see SearchSortField::TYPE_DATE */ public function type($type) {} /** * Set mode of the sort * * @param string $mode the mode * * @see SearchSortField::MODE_MIN * @see SearchSortField::MODE_MAX */ public function mode($mode) {} /** * Set where the hits with missing field will be inserted * * @param string $missing strategy for hits with missing fields * * @see SearchSortField::MISSING_FIRST * @see SearchSortField::MISSING_LAST */ public function missing($missing) {} } /** * Sort by a location and unit in the hits. */ class SearchSortGeoDistance extends SearchSort implements \JsonSerializable { private function __construct() {} /** * Direction of the sort * * @param bool $descending * * @return SearchSortGeoDistance */ public function descending($descending) {} /** * Name of the units * * @param string $unit * * @return SearchSortGeoDistance */ public function unit($unit) {} } /** * Represents a Analytics query (currently experimental support). * * @see https://developer.couchbase.com/documentation/server/4.5/analytics/quick-start.html * Analytics quick start */ class AnalyticsQuery { final private function __construct() {} /** * Creates new AnalyticsQuery instance directly from the string. * * @param string $statement statement string * @return AnalyticsQuery */ public static function fromString($statement) {} } * Generate a hash value (message digest) * @link https://php.net/manual/en/function.hash.php * @param string $algo

    * Name of selected hashing algorithm (i.e. "md5", "sha256", "haval160,4", etc..) *

    * @param string $data

    * Message to be hashed. *

    * @param bool $binary [optional]

    * When set to TRUE, outputs raw binary data. * FALSE outputs lowercase hexits. *

    * @return string a string containing the calculated message digest as lowercase hexits * unless binary is set to true in which case the raw * binary representation of the message digest is returned. */ #[Pure] function hash(string $algo, string $data, bool $binary = false, #[PhpStormStubsElementAvailable('8.1')] array $options = []): string {} /** * Timing attack safe string comparison * @link https://php.net/manual/en/function.hash-equals.php * @param string $known_string

    The string of known length to compare against

    * @param string $user_string

    The user-supplied string

    * @return bool

    Returns TRUE when the two strings are equal, FALSE otherwise.

    * @since 5.6 */ #[Pure] function hash_equals(string $known_string, string $user_string): bool {} /** * (PHP 5 >= 5.1.2, PECL hash >= 1.1)
    * Generate a hash value using the contents of a given file * @link https://php.net/manual/en/function.hash-file.php * @param string $algo

    * Name of selected hashing algorithm (i.e. "md5", "sha256", "haval160,4", etc..) *

    * @param string $filename

    * URL describing location of file to be hashed; Supports fopen wrappers. *

    * @param bool $binary [optional]

    * When set to TRUE, outputs raw binary data. * FALSE outputs lowercase hexits. *

    * @return string|false a string containing the calculated message digest as lowercase hexits * unless binary is set to true in which case the raw * binary representation of the message digest is returned. */ #[Pure] function hash_file(string $algo, string $filename, bool $binary = false, #[PhpStormStubsElementAvailable('8.1')] array $options = []): string|false {} /** * (PHP 5 >= 5.1.2, PECL hash >= 1.1)
    * Generate a keyed hash value using the HMAC method * @link https://php.net/manual/en/function.hash-hmac.php * @param string $algo

    * Name of selected hashing algorithm (i.e. "md5", "sha256", "haval160,4", etc..) See hash_algos for a list of supported algorithms.
    * Since 7.2.0 usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) was disabled. *

    * @param string $data

    * Message to be hashed. *

    * @param string $key

    * Shared secret key used for generating the HMAC variant of the message digest. *

    * @param bool $binary [optional]

    * When set to TRUE, outputs raw binary data. * FALSE outputs lowercase hexits. *

    * @return string a string containing the calculated message digest as lowercase hexits * unless binary is set to true in which case the raw * binary representation of the message digest is returned. */ #[Pure] function hash_hmac(string $algo, string $data, string $key, bool $binary = false): string {} /** * (PHP 5 >= 5.1.2, PECL hash >= 1.1)
    * Generate a keyed hash value using the HMAC method and the contents of a given file * @link https://php.net/manual/en/function.hash-hmac-file.php * @param string $algo

    * Name of selected hashing algorithm (i.e. "md5", "sha256", "haval160,4", etc..) See hash_algos for a list of supported algorithms.
    * Since 7.2.0 usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) was disabled. *

    * @param string $filename

    * URL describing location of file to be hashed; Supports fopen wrappers. *

    * @param string $key

    * Shared secret key used for generating the HMAC variant of the message digest. *

    * @param bool $binary [optional]

    * When set to TRUE, outputs raw binary data. * FALSE outputs lowercase hexits. *

    * @return string|false a string containing the calculated message digest as lowercase hexits * unless binary is set to true in which case the raw * binary representation of the message digest is returned. */ #[Pure] function hash_hmac_file(string $algo, string $filename, string $key, bool $binary = false): string|false {} /** * (PHP 5 >= 5.1.2, PECL hash >= 1.1)
    * Initialize an incremental hashing context * @link https://php.net/manual/en/function.hash-init.php * @param string $algo

    * Name of selected hashing algorithm (i.e. "md5", "sha256", "haval160,4", etc..). For a list of supported algorithms see hash_algos.
    * Since 7.2.0 usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) was disabled. *

    * @param int $flags [optional]

    * Optional settings for hash generation, currently supports only one option: * HASH_HMAC. When specified, the key * must be specified. *

    * @param string $key

    * When HASH_HMAC is specified for options, * a shared secret key to be used with the HMAC hashing method must be supplied in this * parameter. *

    * @return HashContext|resource a Hashing Context resource for use with hash_update, * hash_update_stream, hash_update_file, * and hash_final. */ #[Pure] #[LanguageLevelTypeAware(["7.2" => "HashContext"], default: "resource")] function hash_init(string $algo, int $flags = 0, string $key = "", #[PhpStormStubsElementAvailable('8.1')] array $options = []) {} /** * (PHP 5 >= 5.1.2, PECL hash >= 1.1)
    * Pump data into an active hashing context * @link https://php.net/manual/en/function.hash-update.php * @param HashContext|resource $context

    * Hashing context returned by {@see hash_init}. *

    * @param string $data

    * Message to be included in the hash digest. *

    * @return bool TRUE. */ #[LanguageLevelTypeAware(["8.4" => "true"], default: "bool")] function hash_update(#[LanguageLevelTypeAware(["7.2" => "HashContext"], default: "resource")] $context, string $data) {} /** * (PHP 5 >= 5.1.2, PECL hash >= 1.1)
    * Pump data into an active hashing context from an open stream * @link https://php.net/manual/en/function.hash-update-stream.php * @param HashContext|resource $context

    * Hashing context returned by {@see hash_init}. *

    * @param resource $stream

    * Open file handle as returned by any stream creation function. *

    * @param int $length [optional]

    * Maximum number of characters to copy from handle * into the hashing context. *

    * @return int Actual number of bytes added to the hashing context from handle. */ function hash_update_stream(#[LanguageLevelTypeAware(["7.2" => "HashContext"], default: "resource")] $context, $stream, int $length = -1): int {} /** * (PHP 5 >= 5.1.2, PECL hash >= 1.1)
    * Pump data into an active hashing context from a file * @link https://php.net/manual/en/function.hash-update-file.php * @param HashContext|resource $context

    * Hashing context returned by hash_init. *

    * @param string $filename

    * URL describing location of file to be hashed; Supports fopen wrappers. *

    * @param resource $stream_context [optional]

    * Stream context as returned by stream_context_create. *

    * @return bool TRUE on success or FALSE on failure. */ function hash_update_file(#[LanguageLevelTypeAware(["7.2" => "HashContext"], default: "resource")] $context, string $filename, $stream_context): bool {} /** * (PHP 5 >= 5.1.2, PECL hash >= 1.1)
    * Finalize an incremental hash and return resulting digest * @link https://php.net/manual/en/function.hash-final.php * @param HashContext|resource $context

    * Hashing context returned by {@see hash_init}. *

    * @param bool $binary [optional]

    * When set to TRUE, outputs raw binary data. * FALSE outputs lowercase hexits. *

    * @return string a string containing the calculated message digest as lowercase hexits * unless binary is set to true in which case the raw * binary representation of the message digest is returned. */ function hash_final(#[LanguageLevelTypeAware(["7.2" => "HashContext"], default: "resource")] $context, bool $binary = false): string {} /** * Copy hashing context * @link https://php.net/manual/en/function.hash-copy.php * @param HashContext|resource $context

    * Hashing context returned by {@see hash_init}. *

    * @return HashContext|resource a copy of Hashing Context resource. */ #[Pure] #[LanguageLevelTypeAware(["7.2" => "HashContext"], default: "resource")] function hash_copy(#[LanguageLevelTypeAware(["7.2" => "HashContext"], default: "resource")] $context) {} /** * (PHP 5 >= 5.1.2, PECL hash >= 1.1)
    * Return a list of registered hashing algorithms * @link https://php.net/manual/en/function.hash-algos.php * @return array a numerically indexed array containing the list of supported * hashing algorithms. */ #[Pure] function hash_algos(): array {} /** * Generate a hkdf key derivation of a supplied key input * @param string $algo Name of selected hashing algorithm (i.e. "sha256", "sha512", "haval160,4", etc..) * See {@see hash_algos()} for a list of supported algorithms. *
    *

    Note

    *

    * Non-cryptographic hash functions are not allowed. *

    *
    * @param string $key

    Input keying material (raw binary). Cannot be empty.

    * @param int $length [optional]

    Desired output length in bytes. Cannot be greater than 255 times the chosen hash function size. * If length is 0, the output length will default to the chosen hash function size.

    * @param string $info [optional]

    Application/context-specific info string.

    * @param string $salt [optional]

    Salt to use during derivation. While optional, adding random salt significantly improves the strength of HKDF.

    * @return string|false

    Returns a string containing a raw binary representation of the derived key (also known as output keying material - OKM); or FALSE on failure.

    * @since 7.1.2 * Generate a HKDF key derivation of a supplied key input * @link https://php.net/manual/en/function.hash-hkdf.php */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "string"], default: "string|false")] function hash_hkdf(string $algo, string $key, int $length = 0, string $info = '', string $salt = '') {} /** * Return a list of registered hashing algorithms suitable for hash_hmac * @since 7.2 * Return a list of registered hashing algorithms suitable for hash_hmac * @return string[] Returns a numerically indexed array containing the list of supported hashing algorithms suitable for {@see hash_hmac()}. */ #[Pure] function hash_hmac_algos(): array {} /** * Generate a PBKDF2 key derivation of a supplied password * @link https://php.net/manual/en/function.hash-pbkdf2.php * @param string $algo

    * Name of selected hashing algorithm (i.e. "md5", "sha256", "haval160,4", etc..) See hash_algos for a list of supported algorithms.
    * Since 7.2.0 usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) was disabled. *

    * @param string $password

    * The password to use for the derivation. *

    * @param string $salt

    * The salt to use for the derivation. This value should be generated randomly. *

    * @param int $iterations

    * The number of internal iterations to perform for the derivation. *

    * @param int $length [optional]

    * The length of the output string. If binary is TRUE this corresponds to the byte-length of the derived key, * if binary is FALSE this corresponds to twice the byte-length of the derived key (as every byte of the key is returned as two hexits).
    * If 0 is passed, the entire output of the supplied algorithm is used. *

    * @param bool $binary [optional]

    * When set to TRUE, outputs raw binary data. FALSE outputs lowercase hexits. *

    * @param array $options [optional]

    * Additional options. This parameter was added for PHP 8.1 only. *

    * @return string a string containing the derived key as lowercase hexits unless * binary is set to TRUE in which case the raw * binary representation of the derived key is returned. * @since 5.5 */ #[Pure] function hash_pbkdf2( string $algo, string $password, string $salt, int $iterations, int $length = 0, bool $binary = false, #[PhpStormStubsElementAvailable(from: '8.1')] array $options = [] ): string {} /** * Generates a key * @link https://php.net/manual/en/function.mhash-keygen-s2k.php * @param int $algo

    * The hash ID used to create the key. * One of the MHASH_hashname constants. *

    * @param string $password

    * An user supplied password. *

    * @param string $salt

    * Must be different and random enough for every key you generate in * order to create different keys. Because salt * must be known when you check the keys, it is a good idea to append * the key to it. Salt has a fixed length of 8 bytes and will be padded * with zeros if you supply less bytes. *

    * @param int $length

    * The key length, in bytes. *

    * @return string|false the generated key as a string, or FALSE on error. * @deprecated 8.1 */ #[Pure] #[Deprecated(since: '8.1')] function mhash_keygen_s2k(int $algo, string $password, string $salt, int $length): string|false {} /** * Gets the block size of the specified hash * @link https://php.net/manual/en/function.mhash-get-block-size.php * @param int $algo

    * The hash ID. One of the MHASH_hashname constants. *

    * @return int|false the size in bytes or FALSE, if the hash * does not exist. * @deprecated 8.1 */ #[Pure] #[Deprecated(since: '8.1')] function mhash_get_block_size(int $algo): int|false {} /** * Gets the name of the specified hash * @link https://php.net/manual/en/function.mhash-get-hash-name.php * @param int $algo

    * The hash ID. One of the MHASH_hashname constants. *

    * @return string|false the name of the hash or FALSE, if the hash does not exist. * @deprecated 8.1 */ #[Pure] #[Deprecated(since: '8.1')] function mhash_get_hash_name(int $algo): string|false {} /** * Gets the highest available hash ID * @link https://php.net/manual/en/function.mhash-count.php * @return int<0, max> the highest available hash ID. Hashes are numbered from 0 to this * hash ID. * @deprecated 8.1 */ #[Pure] #[Deprecated(since: '8.1')] function mhash_count(): int {} /** * Computes hash * @link https://php.net/manual/en/function.mhash.php * @param int $algo

    * The hash ID. One of the MHASH_hashname constants. *

    * @param string $data

    * The user input, as a string. *

    * @param string|null $key [optional]

    * If specified, the function will return the resulting HMAC instead. * HMAC is keyed hashing for message authentication, or simply a message * digest that depends on the specified key. Not all algorithms * supported in mhash can be used in HMAC mode. *

    * @return string|false the resulting hash (also called digest) or HMAC as a string, or * FALSE on error. * @deprecated 8.1 */ #[Pure] #[Deprecated(since: '8.1')] function mhash(int $algo, string $data, ?string $key): string|false {} /** * Optional flag for hash_init. * Indicates that the HMAC digest-keying algorithm should be * applied to the current hashing context. * @link https://php.net/manual/en/hash.constants.php */ define('HASH_HMAC', 1); define('MHASH_CRC32', 0); /** * @since 7.4 */ define('MHASH_CRC32C', 34); define('MHASH_MD5', 1); define('MHASH_SHA1', 2); define('MHASH_HAVAL256', 3); define('MHASH_RIPEMD160', 5); define('MHASH_TIGER', 7); define('MHASH_GOST', 8); define('MHASH_CRC32B', 9); define('MHASH_HAVAL224', 10); define('MHASH_HAVAL192', 11); define('MHASH_HAVAL160', 12); define('MHASH_HAVAL128', 13); define('MHASH_TIGER128', 14); define('MHASH_TIGER160', 15); define('MHASH_MD4', 16); define('MHASH_SHA256', 17); define('MHASH_ADLER32', 18); define('MHASH_SHA224', 19); define('MHASH_SHA512', 20); define('MHASH_SHA384', 21); define('MHASH_WHIRLPOOL', 22); define('MHASH_RIPEMD128', 23); define('MHASH_RIPEMD256', 24); define('MHASH_RIPEMD320', 25); define('MHASH_SNEFRU256', 27); define('MHASH_MD2', 28); define('MHASH_FNV132', 29); define('MHASH_FNV1A32', 30); define('MHASH_FNV164', 31); define('MHASH_FNV1A64', 32); define('MHASH_JOAAT', 33); /** * @since 8.1 */ define('MHASH_MURMUR3A', 35); /** * @since 8.1 */ define('MHASH_MURMUR3C', 36); /** * @since 8.1 */ define('MHASH_MURMUR3F', 37); /** * @since 8.1 */ define('MHASH_XXH32', 38); /** * @since 8.1 */ define('MHASH_XXH64', 39); /** * @since 8.1 */ define('MHASH_XXH3', 40); /** * @since 8.1 */ define('MHASH_XXH128', 41); /** * @since 7.2 */ final class HashContext { private function __construct() {} public function __serialize(): array {} /** * @param array $data */ public function __unserialize(#[LanguageLevelTypeAware(['8.0' => 'array'], default: '')] $data): void {} /** * @since 8.4 */ public function __debugInfo(): array {} } // End of hash v.1.0 * An integer or a string. The string representation can be decimal, * hexadecimal or octal. *

    * @param int $base [optional]

    * The base. *

    *

    * The base may vary from 2 to 36. If base is 0 (default value), the * actual base is determined from the leading characters: if the first * two characters are 0x or 0X, * hexadecimal is assumed, otherwise if the first character is "0", * octal is assumed, otherwise decimal is assumed. *

    * @return resource|GMP A GMP number resource. */ #[Pure] function gmp_init(string|int $num, int $base = 0): GMP {} /** * Convert GMP number to integer * @link https://php.net/manual/en/function.gmp-intval.php * @param resource|int|string|GMP $num

    * A GMP number. *

    * @return int An integer value of gmpnumber. */ #[Pure] function gmp_intval(GMP|string|int $num): int {} /** * Sets the RNG seed * @param resource|string|int|GMP $seed

    * The seed to be set for the {@see gmp_random()}, {@see gmp_random_bits()}, and {@see gmp_random_range()} functions. *

    * Either a GMP number resource in PHP 5.5 and earlier, a GMP object in PHP 5.6 and later, or a numeric string provided that it is possible to convert the latter to a number. * @return void|null|false Returns NULL on success. * @since 7.0 */ function gmp_random_seed(GMP|string|int $seed): void {} /** * Convert GMP number to string * @link https://php.net/manual/en/function.gmp-strval.php * @param resource|int|string|GMP $num

    * The GMP number that will be converted to a string. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param int $base [optional]

    * The base of the returned number. The default base is 10. * Allowed values for the base are from 2 to 62 and -2 to -36. *

    * @return string The number, as a string. */ #[Pure] function gmp_strval(GMP|string|int $num, int $base = 10): string {} /** * Add numbers * @link https://php.net/manual/en/function.gmp-add.php * @param resource|int|string|GMP $num1

    * A number that will be added. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    * A number that will be added. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP A GMP number representing the sum of the arguments. */ #[Pure] function gmp_add(GMP|string|int $num1, GMP|string|int $num2): GMP {} /** * Subtract numbers * @link https://php.net/manual/en/function.gmp-sub.php * @param resource|string|GMP $num1

    * The number being subtracted from. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    * The number subtracted from a. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP A GMP number resource. */ #[Pure] function gmp_sub(GMP|string|int $num1, GMP|string|int $num2): GMP {} /** * Multiply numbers * @link https://php.net/manual/en/function.gmp-mul.php * @param resource|string|GMP $num1

    * A number that will be multiplied by b. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    * A number that will be multiplied by a. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP A GMP number resource. */ #[Pure] function gmp_mul(GMP|string|int $num1, GMP|string|int $num2): GMP {} /** * Divide numbers and get quotient and remainder * @link https://php.net/manual/en/function.gmp-div-qr.php * @param resource|string|GMP $num1

    * The number being divided. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    * The number that n is being divided by. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param int $rounding_mode [optional]

    * See the gmp_div_q function for description * of the round argument. *

    * @return array an array, with the first * element being [n/d] (the integer result of the * division) and the second being (n - [n/d] * d) * (the remainder of the division). */ #[Pure] function gmp_div_qr(GMP|string|int $num1, GMP|string|int $num2, int $rounding_mode = GMP_ROUND_ZERO): array {} /** * Divide numbers * @link https://php.net/manual/en/function.gmp-div-q.php * @param resource|string|GMP $num1

    * The number being divided. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    * The number that a is being divided by. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param int $rounding_mode [optional]

    * The result rounding is defined by the * round, which can have the following * values: * GMP_ROUND_ZERO: The result is truncated * towards 0.

    * @return resource|GMP A GMP number resource. */ #[Pure] function gmp_div_q(GMP|string|int $num1, GMP|string|int $num2, int $rounding_mode = GMP_ROUND_ZERO): GMP {} /** * Remainder of the division of numbers * @link https://php.net/manual/en/function.gmp-div-r.php * @param resource|string|GMP $num1

    * The number being divided. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    * The number that n is being divided by. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param int $rounding_mode [optional]

    * See the gmp_div_q function for description * of the round argument. *

    * @return resource|GMP The remainder, as a GMP number. */ #[Pure] function gmp_div_r(GMP|string|int $num1, GMP|string|int $num2, int $rounding_mode = GMP_ROUND_ZERO): GMP {} /** * Divide numbers * @link https://php.net/manual/en/function.gmp-div-q.php * @param resource|string|GMP $num1

    * The number being divided. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    * The number that a is being divided by. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param int $rounding_mode [optional]

    * The result rounding is defined by the * round, which can have the following * values: * GMP_ROUND_ZERO: The result is truncated * towards 0.

    * @return resource|GMP A GMP number resource. */ #[Pure] function gmp_div(GMP|string|int $num1, GMP|string|int $num2, int $rounding_mode = GMP_ROUND_ZERO): GMP {} /** * Modulo operation * @link https://php.net/manual/en/function.gmp-mod.php * @param resource|string|GMP $num1

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    * The modulo that is being evaluated. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP A GMP number resource. */ #[Pure] function gmp_mod(GMP|string|int $num1, GMP|string|int $num2): GMP {} /** * Exact division of numbers * @link https://php.net/manual/en/function.gmp-divexact.php * @param resource|string|GMP $num1

    * The number being divided. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    * The number that a is being divided by. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP A GMP number resource. */ #[Pure] function gmp_divexact(GMP|string|int $num1, GMP|string|int $num2): GMP {} /** * Negate number * @link https://php.net/manual/en/function.gmp-neg.php * @param resource|string|GMP $num

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP -a, as a GMP number. */ #[Pure] function gmp_neg(GMP|string|int $num): GMP {} /** * Absolute value * @link https://php.net/manual/en/function.gmp-abs.php * @param resource|string|GMP $num

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP the absolute value of a, as a GMP number. */ #[Pure] function gmp_abs(GMP|string|int $num): GMP {} /** * Factorial * @link https://php.net/manual/en/function.gmp-fact.php * @param resource|string|GMP $num

    * The factorial number. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP A GMP number resource. */ #[Pure] function gmp_fact(GMP|string|int $num): GMP {} /** * Calculate square root * @link https://php.net/manual/en/function.gmp-sqrt.php * @param resource|string|GMP $num

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP The integer portion of the square root, as a GMP number. */ #[Pure] function gmp_sqrt(GMP|string|int $num): GMP {} /** * Square root with remainder * @link https://php.net/manual/en/function.gmp-sqrtrem.php * @param resource|string|GMP $num

    * The number being square rooted. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return array array where first element is the integer square root of * a and the second is the remainder * (i.e., the difference between a and the * first element squared). */ #[Pure] function gmp_sqrtrem(GMP|string|int $num): array {} /** * Raise number into power * @link https://php.net/manual/en/function.gmp-pow.php * @param resource|string|GMP $num

    * The base number. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param positive-int $exponent

    * The positive power to raise the base. *

    * @return resource|GMP The new (raised) number, as a GMP number. The case of * 0^0 yields 1. */ #[Pure] function gmp_pow(GMP|string|int $num, int $exponent): GMP {} /** * Raise number into power with modulo * @link https://php.net/manual/en/function.gmp-powm.php * @param resource|string|GMP $num

    * The base number. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $exponent

    * The positive power to raise the base. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $modulus

    * The modulo. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP The new (raised) number, as a GMP number. */ #[Pure] function gmp_powm(GMP|string|int $num, GMP|string|int $exponent, GMP|string|int $modulus): GMP {} /** * Perfect square check * @link https://php.net/manual/en/function.gmp-perfect-square.php * @param resource|string|GMP $num

    * The number being checked as a perfect square. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return bool TRUE if a is a perfect square, * FALSE otherwise. */ #[Pure] function gmp_perfect_square(GMP|string|int $num): bool {} /** * Check if number is "probably prime" * @link https://php.net/manual/en/function.gmp-prob-prime.php * @param resource|string|GMP $num

    * The number being checked as a prime. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param int $repetitions [optional]

    * Reasonable values * of reps vary from 5 to 10 (default being * 10); a higher value lowers the probability for a non-prime to * pass as a "probable" prime. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return int If this function returns 0, a is * definitely not prime. If it returns 1, then * a is "probably" prime. If it returns 2, * then a is surely prime. */ #[Pure] function gmp_prob_prime(GMP|string|int $num, int $repetitions = 10): int {} /** * Random number * @link https://php.net/manual/en/function.gmp-random-bits.php * @param int $bits

    The number of bits. Either a GMP number resource in PHP 5.5 and earlier, * a GMP object in PHP 5.6 and later, * or a numeric string provided that it is possible to convert the latter to a number.

    * @return GMP A random GMP number. */ function gmp_random_bits(int $bits): GMP {} /** * Random number * @link https://php.net/manual/en/function.gmp-random-range.php * @param GMP|string|int $min

    A GMP number representing the lower bound for the random number

    * @param GMP|string|int $max

    A GMP number representing the upper bound for the random number

    * @return GMP A random GMP number. */ function gmp_random_range(GMP|string|int $min, GMP|string|int $max): GMP {} /** * Calculate GCD * @link https://php.net/manual/en/function.gmp-gcd.php * @param resource|string|GMP $num1

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP A positive GMP number that divides into both * a and b. */ #[Pure] function gmp_gcd(GMP|string|int $num1, GMP|string|int $num2): GMP {} /** * Calculate GCD and multipliers * @link https://php.net/manual/en/function.gmp-gcdext.php * @param resource|string|GMP $num1

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return array An array of GMP numbers. */ #[Pure] #[ArrayShape(["g" => "mixed", "s" => "mixed", "t" => "mixed"])] function gmp_gcdext(GMP|string|int $num1, GMP|string|int $num2): array {} /** * Inverse by modulo * @link https://php.net/manual/en/function.gmp-invert.php * @param resource|string|GMP $num1

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP|false A GMP number on success or FALSE if an inverse does not exist. */ #[Pure] function gmp_invert(GMP|string|int $num1, GMP|string|int $num2): GMP|false {} /** * Jacobi symbol * @link https://php.net/manual/en/function.gmp-jacobi.php * @param resource|string|GMP $num1

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    *

    * Should be odd and must be positive. *

    * @return int A GMP number resource. */ #[Pure] function gmp_jacobi(GMP|string|int $num1, GMP|string|int $num2): int {} /** * Legendre symbol * @link https://php.net/manual/en/function.gmp-legendre.php * @param resource|string|GMP $num1

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    *

    * Should be odd and must be positive. *

    * @return int A GMP number resource. */ #[Pure] function gmp_legendre(GMP|string|int $num1, GMP|string|int $num2): int {} /** * Compare numbers * @link https://php.net/manual/en/function.gmp-cmp.php * @param resource|string|GMP $num1

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return int a positive value if a > b, zero if * a = b and a negative value if a < * b. */ #[Pure] function gmp_cmp(GMP|string|int $num1, GMP|string|int $num2): int {} /** * Sign of number * @link https://php.net/manual/en/function.gmp-sign.php * @param resource|string|GMP $num

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return int 1 if a is positive, * -1 if a is negative, * and 0 if a is zero. */ #[Pure] function gmp_sign(GMP|string|int $num): int {} /** * Random number * @link https://php.net/manual/en/function.gmp-random.php * @param int $limiter [optional]

    * The limiter. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP A random GMP number. * @see gmp_random_bits() * @see gmp_random_range() * @removed 8.0 */ #[Deprecated(reason: "Use see gmp_random_bits() or see gmp_random_range() instead", since: "7.2")] function gmp_random($limiter = 20) {} /** * Bitwise AND * @link https://php.net/manual/en/function.gmp-and.php * @param resource|string|GMP $num1

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP A GMP number representing the bitwise AND comparison. */ #[Pure] function gmp_and(GMP|string|int $num1, GMP|string|int $num2): GMP {} /** * Bitwise OR * @link https://php.net/manual/en/function.gmp-or.php * @param resource|string|GMP $num1

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP A GMP number resource. */ #[Pure] function gmp_or(GMP|string|int $num1, GMP|string|int $num2): GMP {} /** * Calculates one's complement * @link https://php.net/manual/en/function.gmp-com.php * @param resource|string|GMP $num

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP the one's complement of a, as a GMP number. */ #[Pure] function gmp_com(GMP|string|int $num): GMP {} /** * Bitwise XOR * @link https://php.net/manual/en/function.gmp-xor.php * @param resource|string|GMP $num1

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param resource|string|GMP $num2

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP A GMP number resource. */ #[Pure] function gmp_xor(GMP|string|int $num1, GMP|string|int $num2): GMP {} /** * Set bit * @link https://php.net/manual/en/function.gmp-setbit.php * @param resource|string|GMP $num

    * The number being set to. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param int $index

    * The set bit. *

    * @param bool $value [optional]

    * Defines if the bit is set to 0 or 1. By default the bit is set to * 1. Index starts at 0. *

    * @return void A GMP number resource. */ function gmp_setbit(GMP $num, int $index, bool $value = true): void {} /** * Clear bit * @link https://php.net/manual/en/function.gmp-clrbit.php * @param resource|string|GMP $num

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param int $index

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return void A GMP number resource. */ function gmp_clrbit(GMP $num, int $index): void {} /** * Scan for 0 * @link https://php.net/manual/en/function.gmp-scan0.php * @param resource|string|GMP $num1

    * The number to scan. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param int $start

    * The starting bit. *

    * @return int the index of the found bit, as an integer. The * index starts from 0. */ #[Pure] function gmp_scan0(GMP|string|int $num1, int $start): int {} /** * Scan for 1 * @link https://php.net/manual/en/function.gmp-scan1.php * @param resource|string|GMP $num1

    * The number to scan. *

    *

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param int $start

    * The starting bit. *

    * @return int the index of the found bit, as an integer. * If no set bit is found, -1 is returned. */ #[Pure] function gmp_scan1(GMP|string|int $num1, int $start): int {} /** * Tests if a bit is set * @link https://php.net/manual/en/function.gmp-testbit.php * @param resource|string|GMP $num

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @param int $index

    * The bit to test *

    * @return bool TRUE on success or FALSE on failure. */ #[Pure] function gmp_testbit(GMP|string|int $num, int $index): bool {} /** * Population count * @link https://php.net/manual/en/function.gmp-popcount.php * @param resource|string|GMP $num

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return int The population count of a, as an integer. */ #[Pure] function gmp_popcount(GMP|string|int $num): int {} /** * Hamming distance * @link https://php.net/manual/en/function.gmp-hamdist.php * @param resource|string|GMP $num1

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    *

    * It should be positive. *

    * @param resource|string|GMP $num2

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    *

    * It should be positive. *

    * @return int A GMP number resource. */ #[Pure] function gmp_hamdist(GMP|string|int $num1, GMP|string|int $num2): int {} /** * Import from a binary string * @link https://php.net/manual/en/function.gmp-import.php * @param string $data The binary string being imported * @param int $word_size

    Default value is 1. The number of bytes in each chunk of binary * data. This is mainly used in conjunction with the options parameter.

    * @param int $flags Default value is GMP_MSW_FIRST | GMP_NATIVE_ENDIAN. * @return GMP|false Returns a GMP number or FALSE on failure. * @since 5.6.1 */ #[Pure] function gmp_import(string $data, int $word_size = 1, int $flags = GMP_MSW_FIRST|GMP_NATIVE_ENDIAN): GMP {} /** * Export to a binary string * @link https://php.net/manual/en/function.gmp-export.php * @param GMP|string|int $num The GMP number being exported * @param int $word_size

    Default value is 1. The number of bytes in each chunk of binary * data. This is mainly used in conjunction with the options parameter.

    * @param int $flags Default value is GMP_MSW_FIRST | GMP_NATIVE_ENDIAN. * @return string|false Returns a string or FALSE on failure. * @since 5.6.1 */ #[Pure] function gmp_export(GMP|string|int $num, int $word_size = 1, int $flags = GMP_MSW_FIRST|GMP_NATIVE_ENDIAN): string {} /** * Takes the nth root of a and returns the integer component of the result. * @link https://php.net/manual/en/function.gmp-root.php * @param GMP|string|int $num

    Either a GMP number resource in PHP 5.5 and earlier, a GMP object in PHP 5.6 * and later, or a numeric string provided that it is possible to convert the latter to a number.

    * @param positive-int $nth The positive root to take of a num. * @return GMP The integer component of the resultant root, as a GMP number. * @since 5.6 */ #[Pure] function gmp_root(GMP|string|int $num, int $nth): GMP {} /** * Takes the nth root of a and returns the integer component and remainder of the result. * @link https://php.net/manual/en/function.gmp-rootrem.php * @param GMP|string|int $num

    Either a GMP number resource in PHP 5.5 and earlier, a GMP object in PHP 5.6 * and later, or a numeric string provided that it is possible to convert the latter to a number.

    * @param positive-int $nth The positive root to take of a num. * @return array|GMP[]

    A two element array, where the first element is the integer component of * the root, and the second element is the remainder, both represented as GMP numbers.

    * @since 5.6 */ #[Pure] function gmp_rootrem(GMP|string|int $num, int $nth): array {} /** * Find next prime number * @link https://php.net/manual/en/function.gmp-nextprime.php * @param int|resource|string|GMP $num

    It can be either a GMP number resource, or a * numeric string given that it is possible to convert the latter to a number.

    * @return resource|GMP Return the next prime number greater than a, * as a GMP number. */ #[Pure] function gmp_nextprime(GMP|string|int $num): GMP {} /** * Calculates binomial coefficient * * @link https://www.php.net/manual/en/function.gmp-binomial.php * * @param GMP|string|float|int $n * @param int $k * @return GMP|false * * @since 7.3 */ #[Pure] function gmp_binomial(GMP|string|int $n, int $k): GMP {} /** * Computes the Kronecker symbol * * @link https://www.php.net/manual/en/function.gmp-kronecker.php * * @param GMP|string|float|int $num1 * @param GMP|string|float|int $num2 * @return int * * @since 7.3 */ #[Pure] function gmp_kronecker(GMP|string|int $num1, GMP|string|int $num2): int {} /** * Computes the least common multiple of A and B * * @link https://www.php.net/manual/en/function.gmp-lcm.php * * @param GMP|string|float|int $num1 * @param GMP|string|float|int $num2 * @return GMP * * @since 7.3 */ #[Pure] function gmp_lcm(GMP|string|int $num1, GMP|string|int $num2): GMP {} /** * Perfect power check * * @link https://www.php.net/manual/en/function.gmp-perfect-power.php * * @param GMP|string|float|int $num * @return bool * * @since 7.3 */ #[Pure] function gmp_perfect_power(GMP|string|int $num): bool {} define('GMP_ROUND_ZERO', 0); define('GMP_ROUND_PLUSINF', 1); define('GMP_ROUND_MINUSINF', 2); define('GMP_MSW_FIRST', 1); define('GMP_LSW_FIRST', 2); define('GMP_LITTLE_ENDIAN', 4); define('GMP_BIG_ENDIAN', 8); define('GMP_NATIVE_ENDIAN', 16); /** * The GMP library version * @link https://php.net/manual/en/gmp.constants.php */ define('GMP_VERSION', "6.3.0"); define('GMP_MPIR_VERSION', '3.0.0'); final class GMP implements Serializable { /** * @since 8.2 */ public function __construct(int|string $num = 0, int $base = 0) {} /** * String representation of object * @link https://php.net/manual/en/serializable.serialize.php * @return string the string representation of the object or null */ public function serialize() {} public function __serialize(): array {} /** * Constructs the object * @link https://php.net/manual/en/serializable.unserialize.php * @param string $data

    * The string representation of the object. *

    * @return void */ public function unserialize($data) {} public function __unserialize(array $data): void {} } // End of gmp v. LuaSandbox is an extension for PHP 5, PHP 7, and HHVM to allow safely running * untrusted Lua 5.1 code from within PHP.

    * * @link https://www.php.net/manual/en/book.luasandbox.php * @package luasandbox * @version 3.0.3 */ /** * The LuaSandbox class creates a Lua environment and allows for execution of Lua code. * * @link https://www.php.net/manual/en/class.luasandbox.php * @since luasandbox >= 1.0.0 */ class LuaSandbox { /** * Used with LuaSandbox::getProfilerFunctionReport() * to return timings in samples. */ public const SAMPLES = 0; /** * Used with LuaSandbox::getProfilerFunctionReport() * to return timings in seconds. */ public const SECONDS = 1; /** * Used with LuaSandbox::getProfilerFunctionReport() * to return timings in percentages of the total. */ public const PERCENT = 2; /** * Call a function in a Lua global variable. * *

    If the name contains "." characters, the function is located via recursive table accesses, * as if the name were a Lua expression.

    * *

    If the variable does not exist, or is not a function, * false will be returned and a warning issued.

    * *

    For more information about calling Lua functions and the return values, * see LuaSandboxFunction::call().

    * * @link https://www.php.net/manual/en/luasandbox.callFunction.php * @param string $name

    Lua variable name.

    * @param mixed[] $arguments

    Arguments to the function.

    * @return array|bool

    Returns an array of values returned by the Lua function, * which may be empty, or false in case of failure.

    * @see LuaSandboxFunction::call() * @since luasandbox >= 1.0.0 */ public function callFunction($name, array $arguments) {} /** * Disable the profiler. * * @link https://www.php.net/manual/en/luasandbox.disableProfiler.php * @since luasandbox >= 1.1.0 * @see LuaSandbox::enableProfiler() * @see LuaSandbox::getProfilerFunctionReport() */ public function disableProfiler() {} /** * Enable the profiler. * *

    The profiler periodically samples the Lua environment * to record the running function. Testing indicates that * at least on Linux, setting a period less than 1ms will * lead to a high overrun count but no performance problems.

    * * @link https://www.php.net/manual/en/luasandbox.enableprofiler.php * @param float $period [optional]

    Sampling period in seconds.

    * @return bool

    Returns a boolean indicating whether the profiler is enabled.

    * @since luasandbox >= 1.1.0 * @see LuaSandbox::disableProfiler() * @see LuaSandbox::getProfilerFunctionReport() */ public function enableProfiler($period = 0.02) {} /** * Fetch the current CPU time usage of the Lua environment. * *

    This includes time spent in PHP callbacks.

    * *

    Note: On Windows, this function always returns zero. * On operating systems that do not support CLOCK_THREAD_CPUTIME_ID, * such as FreeBSD and Mac OS X, this function will return the * elapsed wall-clock time, not CPU time.

    * * @link https://www.php.net/manual/en/luasandbox.getcpuusage.php * @return float

    Returns the current CPU time usage in seconds.

    * @since luasandbox >= 1.0.0 * @see LuaSandbox::getMemoryUsage() * @see LuaSandbox::getPeakMemoryUsage() * @see LuaSandbox::setCPULimit() */ public function getCPUUsage() {} /** * Fetch the current memory usage of the Lua environment. * * @link https://www.php.net/manual/en/luasandbox.getmemoryusage.php * @return int * @since luasandbox >= 1.0.0 * @see LuaSandbox::getMemoryUsage() * @see LuaSandbox::getCPUUsage() * @see LuaSandbox::setMemoryLimit() */ public function getMemoryUsage() {} /** * Fetch the peak memory usage of the Lua environment. * * @link https://www.php.net/manual/en/luasandbox.getpeakmemoryusage.php * @return int

    Returns the current memory usage in bytes.

    * @since luasandbox >= 1.0.0 * @see LuaSandbox::getMemoryUsage() * @see LuaSandbox::getCPUUsage() * @see LuaSandbox::setMemoryLimit() */ public function getPeakMemoryUsage() {} /** * Fetch profiler data. * *

    For a profiling instance previously started by LuaSandbox::enableProfiler(), * get a report of the cost of each function.

    * *

    The measurement unit used for the cost is determined by the $units parameter:

    *
  • LuaSandbox::SAMPLES Measure in number of samples.
  • *
  • LuaSandbox::SECONDS Measure in seconds of CPU time.
  • *
  • LuaSandbox::PERCENT Measure percentage of CPU time.
  • * *

    Note: On Windows, this function always returns an empty array. * On operating systems that do not support CLOCK_THREAD_CPUTIME_ID, * such as FreeBSD and Mac OS X, this function will report the * elapsed wall-clock time, not CPU time.

    * * @link https://www.php.net/manual/en/luasandbox.getprofilerfunctionreport.php * @param int $units Measurement unit constant. * @return array

    Returns profiler measurements, sorted in descending order, as an associative array. * Keys are the Lua function names (with source file and line defined in angle brackets), values are the * measurements as integer or float.

    * @since luasandbox >= 1.1.0 * @see LuaSandbox::SAMPLES * @see LuaSandbox::SECONDS * @see LuaSandbox::PERCENT */ public function getProfilerFunctionReport($units = LuaSandbox::SECONDS) {} /** * Return the versions of LuaSandbox and Lua. * * @link https://www.php.net/manual/en/luasandbox.getversioninfo.php * @return array

    Returns an array with two keys:

    *
  • LuaSandbox (string), the version of the LuaSandbox extension.
  • *
  • Lua (string), the library name and version as defined by the LUA_RELEASE macro, for example, "Lua 5.1.5".
  • * @since luasandbox >= 1.6.0 */ public static function getVersionInfo() {} /** * Load a precompiled binary chunk into the Lua environment. * *

    Loads data generated by LuaSandboxFunction::dump().

    * * @link https://www.php.net/manual/en/luasandbox.loadbinary.php * @param string $code

    Data from LuaSandboxFunction::dump().

    * @param string $chunkName [optional]

    Name for the loaded function.

    * @return LuaSandboxFunction * @since luasandbox >= 1.0.0 * @see LuaSandbox::loadString() */ public function loadBinary($code, $chunkName = '') {} /** * Load Lua code into the Lua environment. * *

    This is the equivalent of standard Lua's loadstring() function.

    * * @link https://www.php.net/manual/en/luasandbox.loadString.php * @param string $code

    Lua code.

    * @param string $chunkName [optional]

    Name for the loaded chunk, for use in error traces.

    * @return LuaSandboxFunction

    Returns a LuaSandboxFunction which, when executed, * will execute the passed $code.

    * @since luasandbox >= 1.0.0 * @see LuaSandbox::registerLibrary() * @see LuaSandbox::wrapPhpFunction() */ public function loadString($code, $chunkName = '') {} /** * Pause the CPU usage timer. * *

    This only has effect when called from within a callback from Lua. * When execution returns to Lua, the timer will be automatically unpaused. * If a new call into Lua is made, the timer will be unpaused * for the duration of that call.

    * *

    If a PHP callback calls into Lua again with timer not paused, * and then that Lua function calls into PHP again, * the second PHP call will not be able to pause the timer. * The logic is that even though the second PHP call would * avoid counting the CPU usage against the limit, * the first call still counts it.

    * * @link https://www.php.net/manual/en/luasandbox.pauseusagetimer.php * @return bool

    Returns a boolean indicating whether the timer is now paused.

    * @since luasandbox >= 1.4.0 * @see LuaSandbox::setCPULimit() * @see LuaSandbox::unpauseUsageTimer() */ public function pauseUsageTimer() {} /** * Register a set of PHP functions as a Lua library. * *

    Registers a set of PHP functions as a Lua library, * so that Lua can call the relevant PHP code.

    * *

    For more information about calling Lua functions and the return values, * see LuaSandboxFunction::call().

    * * @link https://www.php.net/manual/en/luasandbox.registerlibrary.php * @param string $libname

    The name of the library. * In the Lua state, the global variable of this name will be set to the table of functions. * If the table already exists, the new functions will be added to it.

    * @param array $functions

    Returns an array, where each key is a function name, * and each value is a corresponding PHP callable.

    * @since luasandbox >= 1.0.0 * @see LuaSandbox::loadString() * @see LuaSandbox::wrapPhpFunction() */ public function registerLibrary($libname, $functions) {} /** * Set the CPU time limit for the Lua environment. * *

    If the total user and system time used by the environment after the call * to this method exceeds this limit, a LuaSandboxTimeoutError exception is thrown.

    * *

    Time used in PHP callbacks is included in the limit.

    * *

    Setting the time limit from a callback while Lua is running causes the timer to be reset, * or started if it was not already running.

    * *

    Note: On Windows, the CPU limit will be ignored. On operating systems * that do not support CLOCK_THREAD_CPUTIME_ID, such as FreeBSD and * Mac OS X, wall-clock time rather than CPU time will be limited.

    * * @link https://www.php.net/manual/en/luasandbox.setcpulimit.php * @param bool|float $limit

    Limit as a float in seconds, or false for no limit.

    * @since luasandbox >= 1.0.0 * @see LuaSandbox::getCPUUsage() * @see LuaSandbox::setMemoryLimit() */ public function setCPULimit($limit) {} /** * Set the memory limit for the Lua environment. * * @link https://www.php.net/manual/en/luasandbox.setmemorylimit.php * @param int $limit

    Memory limit in bytes.

    * @throws LuaSandboxMemoryError

    Exception is thrown if this limit is exceeded.

    * @since luasandbox >= 1.0.0 * @see LuaSandbox::getMemoryUsage() * @see LuaSandbox::getPeakMemoryUsage() * @see LuaSandbox::setCPULimit() */ public function setMemoryLimit($limit) {} /** * Unpause the timer paused by LuaSandbox::pauseUsageTimer(). * * @link https://www.php.net/manual/en/luasandbox.unpauseusagetimer.php * @since luasandbox >= 1.0.0 * @see LuaSandbox::setCPULimit() * @see LuaSandbox::unpauseUsageTimer() */ public function unpauseUsageTimer() {} /** * Wrap a PHP callable in a LuaSandboxFunction. * *

    Wraps a PHP callable in a LuaSandboxFunction, * so it can be passed into Lua as an anonymous function.

    * *

    The function must return either an array of values (which may be empty), * or NULL which is equivalent to returning the empty array.

    * *

    Exceptions will be raised as errors in Lua, however only LuaSandboxRuntimeError * exceptions may be caught inside Lua with pcall() or xpcall().

    * *

    For more information about calling Lua functions and the return values, * see LuaSandboxFunction::call().

    * * @link https://www.php.net/manual/en/luasandbox.wrapPhpFunction.php * @param callable $function

    Callable to wrap.

    * @return LuaSandboxFunction * @since luasandbox >= 1.2.0 * @see LuaSandbox::loadString() * @see LuaSandbox::registerLibrary() */ public function wrapPhpFunction($function) {} } /** * Represents a Lua function, allowing it to be called from PHP. * *

    A LuaSandboxFunction may be obtained as a return value from Lua, * as a parameter passed to a callback from Lua, * or by using LuaSandbox::wrapPhpFunction(), LuaSandbox::loadString(), * or LuaSandbox::loadBinary().

    * * @since luasandbox >= 1.0.0 */ class LuaSandboxFunction { /** * Call a Lua function. * *

    Errors considered to be the fault of the PHP code will result in the * function returning false and E_WARNING being raised, for example, * a resource type being used as an argument. Lua errors will result * in a LuaSandboxRuntimeError exception being thrown.

    * *

    PHP and Lua types are converted as follows:

    *
      *
    • PHP NULL is Lua nil, and vice versa.
    • *
    • PHP integers and floats are converted to Lua numbers. Infinity and NAN are supported.
    • *
    • Lua numbers without a fractional part between approximately -2**53 and 2**53 are * converted to PHP integers, with others being converted to PHP floats.
    • *
    • PHP booleans are Lua booleans, and vice versa.
    • *
    • PHP strings are Lua strings, and vice versa.
    • *
    • Lua functions are PHP LuaSandboxFunction objects, and vice versa. * General PHP callables are not supported.
    • *
    • PHP arrays are converted to Lua tables, and vice versa.
    • *
        *
      • Note that Lua typically indexes arrays from 1, while PHP indexes arrays from 0. * No adjustment is made for these differing conventions.
      • *
      • Self-referential arrays are not supported in either direction.
      • *
      • PHP references are dereferenced.
      • *
      • Lua __pairs and __ipairs are processed. __index is ignored.
      • *
      • When converting from PHP to Lua, integer keys between -2**53 and 2**53 are represented as Lua numbers. * All other keys are represented as Lua strings.
      • *
      • When converting from Lua to PHP, keys other than strings and numbers will result in an error, * as will collisions when converting numbers to strings or vice versa * (since PHP considers things like $a[0] and $a["0"] as being equivalent).
      • *
      *
    • All other types are unsupported and will raise an error/exception, * including general PHP objects and Lua userdata and thread types.
    • *
    * *

    Lua functions inherently return a list of results. So on success, * this method returns an array containing all of the values returned by Lua, * with integer keys starting from zero. * Lua may return no results, in which case an empty array is returned.

    * * @link https://www.php.net/manual/en/luasandboxfunction.call.php * @param string[] $arguments

    Arguments passed to the function.

    * @return array|bool

    Returns an array of values returned by the function, * which may be empty, or false on error.

    * @since luasandbox >= 1.0.0 */ public function call($arguments) {} /** * Dump the function as a binary blob. * * @link https://www.php.net/manual/en/luasandboxfunction.dump.php * @return string

    Returns a string that may be passed to LuaSandbox::loadBinary().

    * @since luasandbox >= 1.0.0 */ public function dump() {} } /** * Base class for LuaSandbox exceptions. * * @since luasandbox >= 1.0.0 */ class LuaSandboxError extends Exception { public const RUN = 2; public const SYNTAX = 3; public const MEM = 4; public const ERR = 5; } /** * Catchable LuaSandbox runtime exceptions. * *

    These may be caught inside Lua using pcall() or xpcall().

    * * @since luasandbox >= 1.0.0 */ class LuaSandboxRuntimeError extends LuaSandboxError {} /** * Uncatchable LuaSandbox exceptions. * *

    These may not be caught inside Lua using pcall() or xpcall().

    * * @since luasandbox >= 1.0.0 */ class LuaSandboxFatalError extends LuaSandboxError {} /** * Exception thrown when Lua encounters an error inside an error handler. * * @since luasandbox >= 1.0.0 */ class LuaSandboxErrorError extends LuaSandboxFatalError {} /** * Exception thrown when Lua cannot allocate memory. * * @since luasandbox >= 1.0.0 * @see LuaSandbox::setMemoryLimit() */ class LuaSandboxMemoryError extends LuaSandboxFatalError {} /** * Exception thrown when Lua code cannot be parsed. * * @since luasandbox >= 1.0.0 */ class LuaSandboxSyntaxError extends LuaSandboxFatalError {} /** * Exception thrown when the configured CPU time limit is exceeded. * * @since luasandbox >= 1.0.0 * @see LuaSandbox::setCPULimit() */ class LuaSandboxTimeoutError extends LuaSandboxFatalError {} The ODBC connection identifier, * see odbc_connect for details.

    * @param bool $enable [optional]

    * If OnOff is TRUE, auto-commit is enabled, if * it is FALSE auto-commit is disabled. *

    * @return int|bool Without the $enable parameter, this function returns * auto-commit status for connection_id. Non-zero is * returned if auto-commit is on, 0 if it is off, or FALSE if an error * occurs. *

    * If $enable is set, this function returns TRUE on * success and FALSE on failure. *

    */ function odbc_autocommit($odbc, ?bool $enable = false):int|bool {} /** * Handling of binary column data * @link https://php.net/manual/en/function.odbc-binmode.php * @param resource $statement

    * The result identifier. *

    *

    * If result_id is 0, the * settings apply as default for new results. * Default for longreadlen is 4096 and * mode defaults to * ODBC_BINMODE_RETURN. Handling of binary long * columns is also affected by odbc_longreadlen. *

    * @param int $mode

    * Possible values for mode are: * ODBC_BINMODE_PASSTHRU: Passthru BINARY data *

    * @return bool TRUE on success or FALSE on failure. */ function odbc_binmode($statement, int $mode):bool {} /** * Close an ODBC connection * @link https://php.net/manual/en/function.odbc-close.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @return void No value is returned. */ function odbc_close($odbc):void {} /** * Close all ODBC connections * @link https://php.net/manual/en/function.odbc-close-all.php * @return void No value is returned. */ function odbc_close_all():void {} /** * Lists the column names in specified tables * @link https://php.net/manual/en/function.odbc-columns.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param string|null $catalog [optional]

    * The qualifier. *

    * @param string|null $schema [optional]

    * The owner. *

    * @param string|null $table [optional]

    * The table name. *

    * @param string|null $column [optional]

    * The column name. *

    * @return resource|false an ODBC result identifier or FALSE on failure. *

    * The result set has the following columns: * TABLE_QUALIFIER * TABLE_SCHEM * TABLE_NAME * COLUMN_NAME * DATA_TYPE * TYPE_NAME * PRECISION * LENGTH * SCALE * RADIX * NULLABLE * REMARKS *

    *

    * The result set is ordered by TABLE_QUALIFIER, TABLE_SCHEM and * TABLE_NAME. *

    */ function odbc_columns($odbc, ?string $catalog = null, ?string $schema = null, ?string $table = null, ?string $column = null) {} /** * Commit an ODBC transaction * @link https://php.net/manual/en/function.odbc-commit.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @return bool TRUE on success or FALSE on failure. */ function odbc_commit($odbc):bool {} /** * Connect to a datasource * @link https://php.net/manual/en/function.odbc-connect.php * @param string $dsn

    * The database source name for the connection. Alternatively, a * DSN-less connection string can be used. *

    * @param string $user

    * The username. *

    * @param string $password

    * The password. *

    * @param int $cursor_option [optional]

    * This sets the type of cursor to be used * for this connection. This parameter is not normally needed, but * can be useful for working around problems with some ODBC drivers. *

    *

    * The following constants are defined for cursortype: * SQL_CUR_USE_IF_NEEDED *

    * @return resource|false an ODBC connection or (FALSE) on error. */ function odbc_connect(string $dsn, string $user, string $password, int $cursor_option = SQL_CUR_USE_DRIVER) {} /** * Get cursorname * @link https://php.net/manual/en/function.odbc-cursor.php * @param resource $statement

    * The result identifier. *

    * @return string|false the cursor name, as a string. */ function odbc_cursor($statement):string|false {} /** * Returns information about a current connection * @link https://php.net/manual/en/function.odbc-data-source.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param int $fetch_type

    * The fetch_type can be one of two constant types: * SQL_FETCH_FIRST, SQL_FETCH_NEXT. * Use SQL_FETCH_FIRST the first time this function is * called, thereafter use the SQL_FETCH_NEXT. *

    * @return array|false|null FALSE on error, and an array upon success. */ #[ArrayShape(["server" => "string", "description" => "string"])] function odbc_data_source($odbc, int $fetch_type):array|false|null {} /** * Execute a prepared statement * @link https://php.net/manual/en/function.odbc-execute.php * @param resource $statement

    * The result id resource, from odbc_prepare. *

    * @param array $params [optional]

    * Parameters in parameter_array will be * substituted for placeholders in the prepared statement in order. * Elements of this array will be converted to strings by calling this * function. *

    *

    * Any parameters in parameter_array which * start and end with single quotes will be taken as the name of a * file to read and send to the database server as the data for the * appropriate placeholder. *

    * If you wish to store a string which actually begins and ends with * single quotes, you must add a space or other non-single-quote character * to the beginning or end of the parameter, which will prevent the * parameter from being taken as a file name. If this is not an option, * then you must use another mechanism to store the string, such as * executing the query directly with odbc_exec). * @return bool TRUE on success or FALSE on failure. */ function odbc_execute($statement, array $params = []):bool {} /** * Get the last error code * @link https://php.net/manual/en/function.odbc-error.php * @param resource $odbc [optional]

    The ODBC connection identifier, * see odbc_connect for details.

    * @return string If $odbc is specified, the last state * of that connection is returned, else the last state of any connection * is returned. *

    * This function returns meaningful value only if last odbc query failed * (i.e. odbc_exec returned FALSE). *

    */ function odbc_error($odbc = null):string {} /** * Get the last error message * @link https://php.net/manual/en/function.odbc-errormsg.php * @param resource $odbc [optional]

    The ODBC connection identifier, * see odbc_connect for details.

    * @return string If $odbc is specified, the last state * of that connection is returned, else the last state of any connection * is returned. *

    * This function returns meaningful value only if last odbc query failed * (i.e. odbc_exec returned FALSE). *

    */ function odbc_errormsg($odbc = null):string {} /** * Prepare and execute an SQL statement * @link https://php.net/manual/en/function.odbc-exec.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param string $query

    * The SQL statement. *

    * @param int $flags [optional]

    * This parameter is currently not used. *

    * @return resource|false an ODBC result identifier if the SQL command was executed * successfully, or FALSE on error. */ function odbc_exec($odbc, string $query, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $flags = null) {} /** * Fetch a result row as an associative array * @link https://php.net/manual/en/function.odbc-fetch-array.php * @param resource $statement

    * The result resource from odbc_exec. *

    * @param int $row [optional]

    * Optionally choose which row number to retrieve. *

    * @return array|false an array that corresponds to the fetched row, or FALSE if there * are no more rows. */ function odbc_fetch_array($statement, int $row = -1):array|false {} /** * Fetch a result row as an object * @link https://php.net/manual/en/function.odbc-fetch-object.php * @param resource $statement

    * The result resource from odbc_exec. *

    * @param int $row [optional]

    * Optionally choose which row number to retrieve. *

    * @return stdClass|false an object that corresponds to the fetched row, or FALSE if there * are no more rows. */ function odbc_fetch_object($statement, int $row = -1):stdClass|false {} /** * Fetch a row * @link https://php.net/manual/en/function.odbc-fetch-row.php * @param resource $statement

    * The result identifier. *

    * @param int|null $row [optional]

    * If row_number is not specified, * odbc_fetch_row will try to fetch the next row in * the result set. Calls to odbc_fetch_row with and * without row_number can be mixed. *

    *

    * To step through the result more than once, you can call * odbc_fetch_row with * row_number 1, and then continue doing * odbc_fetch_row without * row_number to review the result. If a driver * doesn't support fetching rows by number, the * row_number parameter is ignored. *

    * @return bool TRUE if there was a row, FALSE otherwise. */ function odbc_fetch_row($statement, ?int $row = null):bool {} /** * Fetch one result row into array * @link https://php.net/manual/en/function.odbc-fetch-into.php * @param resource $statement

    * The result resource. *

    * @param array &$array

    * The result array * that can be of any type since it will be converted to type * array. The array will contain the column values starting at array * index 0. *

    * @param int $row [optional]

    * The row number. *

    * @return int|false the number of columns in the result; * FALSE on error. */ function odbc_fetch_into($statement, array &$array, int $row = 0):int|false {} /** * Get the length (precision) of a field * @link https://php.net/manual/en/function.odbc-field-len.php * @param resource $statement

    * The result identifier. *

    * @param int $field

    * The field number. Field numbering starts at 1. *

    * @return int|false the field name as a string, or FALSE on error. */ function odbc_field_len($statement, int $field):int|false {} /** * Get the scale of a field * @link https://php.net/manual/en/function.odbc-field-scale.php * @param resource $statement

    * The result identifier. *

    * @param int $field

    * The field number. Field numbering starts at 1. *

    * @return int|false the field scale as a integer, or FALSE on error. */ function odbc_field_scale($statement, int $field):int|false {} /** * Get the columnname * @link https://php.net/manual/en/function.odbc-field-name.php * @param resource $statement

    * The result identifier. *

    * @param int $field

    * The field number. Field numbering starts at 1. *

    * @return string|false the field name as a string, or FALSE on error. */ function odbc_field_name($statement, int $field):string|false {} /** * Datatype of a field * @link https://php.net/manual/en/function.odbc-field-type.php * @param resource $statement

    * The result identifier. *

    * @param int $field

    * The field number. Field numbering starts at 1. *

    * @return string|false the field type as a string, or FALSE on error. */ function odbc_field_type($statement, int $field):string|false {} /** * Return column number * @link https://php.net/manual/en/function.odbc-field-num.php * @param resource $statement

    * The result identifier. *

    * @param string $field

    * The field name. *

    * @return int|false the field number as a integer, or FALSE on error. * Field numbering starts at 1. */ function odbc_field_num($statement, string $field):int|false {} /** * Free resources associated with a result * @link https://php.net/manual/en/function.odbc-free-result.php * @param resource $statement

    * The result identifier. *

    * @return bool Always returns TRUE. */ function odbc_free_result($statement):bool {} /** * Retrieves information about data types supported by the data source * @link https://php.net/manual/en/function.odbc-gettypeinfo.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param int $data_type [optional]

    * The data type, which can be used to restrict the information to a * single data type. *

    * @return resource|false an ODBC result identifier or * FALSE on failure. *

    * The result set has the following columns: * TYPE_NAME * DATA_TYPE * PRECISION * LITERAL_PREFIX * LITERAL_SUFFIX * CREATE_PARAMS * NULLABLE * CASE_SENSITIVE * SEARCHABLE * UNSIGNED_ATTRIBUTE * MONEY * AUTO_INCREMENT * LOCAL_TYPE_NAME * MINIMUM_SCALE * MAXIMUM_SCALE *

    *

    * The result set is ordered by DATA_TYPE and TYPE_NAME. *

    */ function odbc_gettypeinfo($odbc, int $data_type = 0) {} /** * Handling of LONG columns * @link https://php.net/manual/en/function.odbc-longreadlen.php * @param resource $statement

    * The result identifier. *

    * @param int $length

    * The number of bytes returned to PHP is controlled by the parameter * length. If it is set to 0, Long column data is passed through to the * client. *

    * @return bool TRUE on success or FALSE on failure. */ function odbc_longreadlen($statement, int $length):bool {} /** * Checks if multiple results are available * @link https://php.net/manual/en/function.odbc-next-result.php * @param resource $statement

    * The result identifier. *

    * @return bool TRUE if there are more result sets, FALSE otherwise. */ function odbc_next_result($statement):bool {} /** * Number of columns in a result * @link https://php.net/manual/en/function.odbc-num-fields.php * @param resource $statement

    * The result identifier returned by odbc_exec. *

    * @return int the number of fields, or -1 on error. */ function odbc_num_fields($statement):int {} /** * Number of rows in a result * @link https://php.net/manual/en/function.odbc-num-rows.php * @param resource $statement

    * The result identifier returned by odbc_exec. *

    * @return int the number of rows in an ODBC result. * This function will return -1 on error. */ function odbc_num_rows($statement):int {} /** * Open a persistent database connection * @link https://php.net/manual/en/function.odbc-pconnect.php * @param string $dsn * @param string $user * @param string $password * @param int $cursor_option [optional] * @return resource|false an ODBC connection id or 0 (FALSE) on * error. */ function odbc_pconnect(string $dsn, string $user, string $password, int $cursor_option = SQL_CUR_USE_DRIVER) {} /** * Prepares a statement for execution * @link https://php.net/manual/en/function.odbc-prepare.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param string $query

    * The query string statement being prepared. *

    * @return resource|false an ODBC result identifier if the SQL command was prepared * successfully. Returns FALSE on error. */ function odbc_prepare($odbc, string $query) {} /** * Get result data * @link https://php.net/manual/en/function.odbc-result.php * @param resource $statement

    * The ODBC resource. *

    * @param string|int $field

    * The field name being retrieved. It can either be an integer containing * the column number of the field you want; or it can be a string * containing the name of the field. *

    * @return string|bool|null the string contents of the field, FALSE on error, NULL for * NULL data, or TRUE for binary data. */ function odbc_result($statement, string|int $field):string|bool|null {} /** * Print result as HTML table * @link https://php.net/manual/en/function.odbc-result-all.php * @param resource $statement

    * The result identifier. *

    * @param string $format [optional]

    * Additional overall table formatting. *

    * @return int|false the number of rows in the result or FALSE on error. * @deprecated 8.1 */ function odbc_result_all($statement, string $format = ''):int|false {} /** * Rollback a transaction * @link https://php.net/manual/en/function.odbc-rollback.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @return bool TRUE on success or FALSE on failure. */ function odbc_rollback($odbc):bool {} /** * Adjust ODBC settings * @link https://php.net/manual/en/function.odbc-setoption.php * @param resource $odbc

    * Is a connection id or result id on which to change the settings. * For SQLSetConnectOption(), this is a connection id. * For SQLSetStmtOption(), this is a result id. *

    * @param int $which

    * Is the ODBC function to use. The value should be * 1 for SQLSetConnectOption() and * 2 for SQLSetStmtOption(). *

    * @param int $option

    * The option to set. *

    * @param int $value

    * The value for the given option. *

    * @return bool TRUE on success or FALSE on failure. */ function odbc_setoption($odbc, int $which, int $option, int $value):bool {} /** * Retrieves special columns * @link https://php.net/manual/en/function.odbc-specialcolumns.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param int $type When the type argument is SQL_BEST_ROWID, * odbc_specialcolumns returns the * column or columns that uniquely identify each row in the table. * When the type argument is SQL_ROWVER, * odbc_specialcolumns returns the column or columns in the * specified table, if any, that are automatically updated by the data source * when any value in the row is updated by any transaction. * @param string|null $catalog

    * The qualifier. *

    * @param string $schema

    * The owner. *

    * @param string $table

    * The table. *

    * @param int $scope

    * The scope, which orders the result set. *

    * @param int $nullable

    * The nullable option. *

    * @return resource|false an ODBC result identifier or FALSE on * failure. *

    * The result set has the following columns: * SCOPE * COLUMN_NAME * DATA_TYPE * TYPE_NAME * PRECISION * LENGTH * SCALE * PSEUDO_COLUMN *

    */ function odbc_specialcolumns($odbc, int $type, ?string $catalog, string $schema, string $table, int $scope, int $nullable) {} /** * Retrieve statistics about a table * @link https://php.net/manual/en/function.odbc-statistics.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param string|null $catalog

    * The qualifier. *

    * @param string $schema

    * The owner. *

    * @param string $table

    * The table name. *

    * @param int $unique

    * The unique attribute. *

    * @param int $accuracy

    * The accuracy. *

    * @return resource|false an ODBC result identifier or FALSE on failure. *

    * The result set has the following columns: * TABLE_QUALIFIER * TABLE_OWNER * TABLE_NAME * NON_UNIQUE * INDEX_QUALIFIER * INDEX_NAME * TYPE * SEQ_IN_INDEX * COLUMN_NAME * COLLATION * CARDINALITY * PAGES * FILTER_CONDITION *

    */ function odbc_statistics($odbc, ?string $catalog, string $schema, string $table, int $unique, int $accuracy) {} /** * Get the list of table names stored in a specific data source * @link https://php.net/manual/en/function.odbc-tables.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param string|null $catalog [optional]

    * The qualifier. *

    * @param string|null $schema [optional]

    * The owner. Accepts search patterns ('%' to match zero or more * characters and '_' to match a single character). *

    * @param string|null $table [optional]

    * The name. Accepts search patterns ('%' to match zero or more * characters and '_' to match a single character). *

    * @param string|null $types [optional]

    * If table_type is not an empty string, it * must contain a list of comma-separated values for the types of * interest; each value may be enclosed in single quotes (') or * unquoted. For example, "'TABLE','VIEW'" or "TABLE, VIEW". If the * data source does not support a specified table type, * odbc_tables does not return any results for * that type. *

    * @return resource|false an ODBC result identifier containing the information * or FALSE on failure. *

    * The result set has the following columns: * TABLE_QUALIFIER * TABLE_OWNER * TABLE_NAME * TABLE_TYPE * REMARKS *

    */ function odbc_tables($odbc, ?string $catalog = null, ?string $schema = null, ?string $table = null, ?string $types = null) {} /** * Gets the primary keys for a table * @link https://php.net/manual/en/function.odbc-primarykeys.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param string|null $catalog * @param string $schema * @param string $table * @return resource|false an ODBC result identifier or FALSE on failure. *

    * The result set has the following columns: * TABLE_QUALIFIER * TABLE_OWNER * TABLE_NAME * COLUMN_NAME * KEY_SEQ * PK_NAME *

    */ function odbc_primarykeys($odbc, ?string $catalog, string $schema, string $table) {} /** * Lists columns and associated privileges for the given table * @link https://php.net/manual/en/function.odbc-columnprivileges.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param string|null $catalog

    * The qualifier. *

    * @param string $schema

    * The owner. *

    * @param string $table

    * The table name. *

    * @param string $column

    * The column_name argument accepts search * patterns ('%' to match zero or more characters and '_' to match a * single character). *

    * @return resource|false an ODBC result identifier or FALSE on failure. * This result identifier can be used to fetch a list of columns and * associated privileges. *

    * The result set has the following columns: * TABLE_QUALIFIER * TABLE_OWNER * TABLE_NAME * GRANTOR * GRANTEE * PRIVILEGE * IS_GRANTABLE *

    *

    * The result set is ordered by TABLE_QUALIFIER, TABLE_OWNER and * TABLE_NAME. *

    */ function odbc_columnprivileges($odbc, ?string $catalog, string $schema, string $table, string $column) {} /** * Lists tables and the privileges associated with each table * @link https://php.net/manual/en/function.odbc-tableprivileges.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param string|null $catalog

    * The qualifier. *

    * @param string $schema

    * The owner. Accepts the following search patterns: * ('%' to match zero or more characters and '_' to match a single character) *

    * @param string $table

    * The name. Accepts the following search patterns: * ('%' to match zero or more characters and '_' to match a single character) *

    * @return resource|false An ODBC result identifier or FALSE on failure. *

    * The result set has the following columns: * TABLE_QUALIFIER * TABLE_OWNER * TABLE_NAME * GRANTOR * GRANTEE * PRIVILEGE * IS_GRANTABLE *

    */ function odbc_tableprivileges($odbc, ?string $catalog, string $schema, string $table) {} /** * Retrieves a list of foreign keys * @link https://php.net/manual/en/function.odbc-foreignkeys.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param string|null $pk_catalog

    * The primary key qualifier. *

    * @param string $pk_schema

    * The primary key owner. *

    * @param string $pk_table

    * The primary key table. *

    * @param string $fk_catalog

    * The foreign key qualifier. *

    * @param string $fk_schema

    * The foreign key owner. *

    * @param string $fk_table

    * The foreign key table. *

    * @return resource|false an ODBC result identifier or FALSE on failure. *

    * The result set has the following columns: * PKTABLE_QUALIFIER * PKTABLE_OWNER * PKTABLE_NAME * PKCOLUMN_NAME * FKTABLE_QUALIFIER * FKTABLE_OWNER * FKTABLE_NAME * FKCOLUMN_NAME * KEY_SEQ * UPDATE_RULE * DELETE_RULE * FK_NAME * PK_NAME *

    *

    * If pk_table contains a table name, * odbc_foreignkeys returns a result set * containing the primary key of the specified table and all of the * foreign keys that refer to it. * If fk_table contains a table name, * odbc_foreignkeys returns a result set * containing all of the foreign keys in the specified table and the * primary keys (in other tables) to which they refer. * If both pk_table and * fk_table contain table names, * odbc_foreignkeys returns the foreign keys in * the table specified in fk_table that refer * to the primary key of the table specified in * pk_table *

    */ function odbc_foreignkeys($odbc, ?string $pk_catalog, string $pk_schema, string $pk_table, string $fk_catalog, string $fk_schema, string $fk_table) {} /** * Get the list of procedures stored in a specific data source * @link https://php.net/manual/en/function.odbc-procedures.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param string|null $catalog

    The catalog ('qualifier' in ODBC 2 parlance).

    * @param string|null $schema

    The schema ('owner' in ODBC 2 parlance). This parameter accepts the * following search patterns: % to match zero or more characters, and _ to match a single character.

    * @param string|null $procedure

    The proc. This parameter accepts the following search patterns: * % to match zero or more characters, and _ to match a single character.

    * @return resource|false

    an ODBC * result identifier containing the information or FALSE on failure. *

    *

    * The result set has the following columns: * PROCEDURE_QUALIFIER * PROCEDURE_OWNER * PROCEDURE_NAME * NUM_INPUT_PARAMS * NUM_OUTPUT_PARAMS * NUM_RESULT_SETS * REMARKS * PROCEDURE_TYPE *

    */ function odbc_procedures($odbc, ?string $catalog = null, ?string $schema = null, ?string $procedure = null) {} /** * Retrieve information about parameters to procedures * @link https://php.net/manual/en/function.odbc-procedurecolumns.php * @param resource $odbc

    The ODBC connection identifier, * see odbc_connect for details.

    * @param string|null $catalog

    The catalog ('qualifier' in ODBC 2 parlance).

    * @param string|null $schema

    The schema ('owner' in ODBC 2 parlance). This parameter accepts the * following search patterns: % to match zero or more characters, and _ to match a single character.

    * @param string|null $procedure

    The proc. This parameter accepts the following search patterns: * % to match zero or more characters, and _ to match a single character.

    * @param string|null $column

    The column. This parameter accepts the following search patterns: * % to match zero or more characters, and _ to match a single character.

    * @return resource|false

    the list of input and output parameters, as well as the * columns that make up the result set for the specified procedures. * Returns an ODBC result identifier or FALSE on failure. *

    *

    * The result set has the following columns: * PROCEDURE_QUALIFIER * PROCEDURE_OWNER * PROCEDURE_NAME * COLUMN_NAME * COLUMN_TYPE * DATA_TYPE * TYPE_NAME * PRECISION * LENGTH * SCALE * RADIX * NULLABLE * REMARKS *

    */ function odbc_procedurecolumns($odbc, ?string $catalog = null, ?string $schema = null, ?string $procedure = null, ?string $column = null) {} /** * Alias of odbc_exec * @link https://php.net/manual/en/function.odbc-do.php * @param $odbc * @param string $query */ function odbc_do($odbc, string $query) {} /** * Alias of odbc_field_len * @link https://php.net/manual/en/function.odbc-field-precision.php * @param $statement * @param int $field */ function odbc_field_precision($statement, int $field):int|false {} function odbc_connection_string_is_quoted(string $str):bool {} function odbc_connection_string_should_quote(string $str):bool {} function odbc_connection_string_quote(string $str):string {} define('ODBC_TYPE', "unixODBC"); define('ODBC_BINMODE_PASSTHRU', 0); define('ODBC_BINMODE_RETURN', 1); define('ODBC_BINMODE_CONVERT', 2); define('SQL_ODBC_CURSORS', 110); define('SQL_CUR_USE_DRIVER', 2); define('SQL_CUR_USE_IF_NEEDED', 0); define('SQL_CUR_USE_ODBC', 1); define('SQL_CONCURRENCY', 7); define('SQL_CONCUR_READ_ONLY', 1); define('SQL_CONCUR_LOCK', 2); define('SQL_CONCUR_ROWVER', 3); define('SQL_CONCUR_VALUES', 4); define('SQL_CURSOR_TYPE', 6); define('SQL_CURSOR_FORWARD_ONLY', 0); define('SQL_CURSOR_KEYSET_DRIVEN', 1); define('SQL_CURSOR_DYNAMIC', 2); define('SQL_CURSOR_STATIC', 3); define('SQL_KEYSET_SIZE', 8); define('SQL_FETCH_FIRST', 2); define('SQL_FETCH_NEXT', 1); define('SQL_CHAR', 1); define('SQL_VARCHAR', 12); define('SQL_LONGVARCHAR', -1); define('SQL_DECIMAL', 3); define('SQL_NUMERIC', 2); define('SQL_BIT', -7); define('SQL_TINYINT', -6); define('SQL_SMALLINT', 5); define('SQL_INTEGER', 4); define('SQL_BIGINT', -5); define('SQL_REAL', 7); define('SQL_FLOAT', 6); define('SQL_DOUBLE', 8); define('SQL_BINARY', -2); define('SQL_VARBINARY', -3); define('SQL_LONGVARBINARY', -4); define('SQL_DATE', 9); define('SQL_TIME', 10); define('SQL_TIMESTAMP', 11); define('SQL_TYPE_DATE', 91); define('SQL_TYPE_TIME', 92); define('SQL_TYPE_TIMESTAMP', 93); define('SQL_WCHAR', -8); define('SQL_WVARCHAR', -9); define('SQL_WLONGVARCHAR', -10); define('SQL_BEST_ROWID', 1); define('SQL_ROWVER', 2); define('SQL_SCOPE_CURROW', 0); define('SQL_SCOPE_TRANSACTION', 1); define('SQL_SCOPE_SESSION', 2); define('SQL_NO_NULLS', 0); define('SQL_NULLABLE', 1); define('SQL_INDEX_UNIQUE', 0); define('SQL_INDEX_ALL', 1); define('SQL_ENSURE', 1); define('SQL_QUICK', 0); // End of odbc v.1.0 * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 2.2.0)
    * Class SolrCollapseFunction * @link https://php.net/manual/en/class.solrcollapsefunction.php */ class SolrCollapseFunction { /** @var string */ public const NULLPOLICY_IGNORE = 'ignore'; /** @var string */ public const NULLPOLICY_EXPAND = 'expand'; /** @var string */ public const NULLPOLICY_COLLAPSE = 'collapse'; /** * (PECL solr >= 2.2.0)
    * SolrCollapseFunction constructor. * @link https://php.net/manual/en/solrcollapsefunction.construct.php * @param string $field [optional]

    * The field name to collapse on.
    * In order to collapse a result. The field type must be a single valued String, Int or Float. *

    */ public function __construct($field) {} /** * (PECL solr >= 2.2.0)
    * Returns the field that is being collapsed on. * @link https://php.net/manual/en/solrcollapsefunction.getfield.php * @return string */ public function getField() {} /** * (PECL solr >= 2.2.0)
    * Returns collapse hint * @link https://php.net/manual/en/solrcollapsefunction.gethint.php * @return string */ public function getHint() {} /** * (PECL solr >= 2.2.0)
    * Returns max parameter * @link https://php.net/manual/en/solrcollapsefunction.getmax.php * @return string */ public function getMax() {} /** * (PECL solr >= 2.2.0)
    * Returns min parameter * @link https://php.net/manual/en/solrcollapsefunction.getmin.php * @return string */ public function getMin() {} /** * (PECL solr >= 2.2.0)
    * Returns null policy * @link https://php.net/manual/en/solrcollapsefunction.getnullpolicy.php * @return string */ public function getNullPolicy() {} /** * (PECL solr >= 2.2.0)
    * Returns size parameter * @link https://php.net/manual/en/solrcollapsefunction.getsize.php * @return int */ public function getSize() {} /** * (PECL solr >= 2.2.0)
    * Sets the field to collapse on * @link https://php.net/manual/en/solrcollapsefunction.setfield.php * @param string $fieldName

    * The field name to collapse on. In order to collapse a result. The field type must be a single valued String, Int * or Float. *

    * @return SolrCollapseFunction */ public function setField($fieldName) {} /** * (PECL solr >= 2.2.0)
    * Sets collapse hint * @link https://php.net/manual/en/solrcollapsefunction.sethint.php * @param string $hint

    * Currently there is only one hint available "top_fc", which stands for top level FieldCache *

    * @return SolrCollapseFunction */ public function setHint($hint) {} /** * (PECL solr >= 2.2.0)
    * Selects the group heads by the max value of a numeric field or function query. * @link https://php.net/manual/en/solrcollapsefunction.setmax.php * @param string $max * @return SolrCollapseFunction */ public function setMax($max) {} /** * (PECL solr >= 2.2.0)
    * Sets the initial size of the collapse data structures when collapsing on a numeric field only * @link https://php.net/manual/en/solrcollapsefunction.setmin.php * @param string $min * @return SolrCollapseFunction */ public function setMin($min) {} /** * (PECL solr >= 2.2.0)
    * Sets the NULL Policy * @link https://php.net/manual/en/solrcollapsefunction.setnullpolicy.php * @param string $nullPolicy * @return SolrCollapseFunction */ public function setNullPolicy($nullPolicy) {} /** * (PECL solr >= 2.2.0)
    * Sets the initial size of the collapse data structures when collapsing on a numeric field only. * @link https://php.net/manual/en/solrcollapsefunction.setsize.php * @param int $size * @return SolrCollapseFunction */ public function setSize($size) {} /** * (PECL solr >= 2.2.0)
    * Returns a string representing the constructed collapse function * @link https://php.net/manual/en/solrcollapsefunction.tostring.php * @return string */ public function __toString() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrModifiableParams
    * This class represents a collection of name-value pairs sent to the Solr server during a request. * @link https://php.net/manual/en/class.solrmodifiableparams.php */ class SolrModifiableParams extends SolrParams implements Serializable { /** * (PECL solr >= 0.9.2)
    * SolrModifiableParams constructor. * @link https://php.net/manual/en/solrmodifiableparams.construct.php */ public function __construct() {} /** * (PECL solr >= 0.9.2)
    * Destructor * @link https://php.net/manual/en/solrmodifiableparams.destruct.php */ public function __destruct() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 2.1.0)
    * Version not present on php.net documentation, determined here by using PECL solr changelog: * https://pecl.php.net/package-changelog.php?package=solr&release=2.1.0
    * Class SolrDisMaxQuery
    * @link https://php.net/manual/en/class.solrdismaxquery.php */ class SolrDisMaxQuery extends SolrQuery implements Serializable { /** * (PECL solr >= 2.1.0)
    * Adds a Phrase Bigram Field (pf2 parameter) * @link https://php.net/manual/en/solrdismaxquery.addbigramphrasefield.php * @param string $field

    * Field name *

    * @param string $boost [optional]

    * Boost value. Boosts documents with matching terms. *

    * @param string $slop [optional]

    * Field Slop *

    * @return SolrDisMaxQuery */ public function addBigramPhraseField($field, $boost, $slop) {} /** * (PECL solr >= 2.1.0)
    * Adds a boost query field with value and optional boost (bq parameter) * @link https://php.net/manual/en/solrdismaxquery.addboostquery.php * @param string $field

    * Field name *

    * @param string $value * @param string $boost [optional]

    * Boost value. Boosts documents with matching terms. *

    * @return SolrDisMaxQuery */ public function addBoostQuery($field, $value, $boost) {} /** * (PECL solr >= 2.1.0)
    * Adds a Phrase Field (pf parameter) * @link https://php.net/manual/en/solrdismaxquery.addphrasefield.php * @param string $field

    * Field name *

    * @param string $boost [optional]

    * Boost value. Boosts documents with matching terms. *

    * @param string $slop [optional]

    * Field Slop *

    * @return SolrDisMaxQuery */ public function addPhraseField($field, $boost, $slop) {} /** * (PECL solr >= 2.1.0)
    * Add a query field with optional boost (qf parameter) * @link https://php.net/manual/en/solrdismaxquery.addqueryfield.php * @param string $field

    * Field name *

    * @param string $boost [optional]

    * Boost value. Boosts documents with matching terms. *

    * @return SolrDisMaxQuery */ public function addQueryField($field, $boost) {} /** * (PECL solr >= 2.1.0)
    * Adds a Trigram Phrase Field (pf3 parameter) * @link https://php.net/manual/en/solrdismaxquery.addtrigramphrasefield.php * @param string $field

    * Field name *

    * @param string $boost [optional]

    * Boost value. Boosts documents with matching terms. *

    * @param string $slop [optional]

    * Field Slop *

    * @return SolrDisMaxQuery */ public function addTrigramPhraseField($field, $boost, $slop) {} /** * (PECL solr >= 2.1.0)
    * Adds a field to User Fields Parameter (uf) * @link https://php.net/manual/en/solrdismaxquery.adduserfield.php * @param string $field

    * Field name *

    * @return SolrDisMaxQuery */ public function addUserField($field) {} /** * (PECL solr >= 2.1.0)
    * Removes phrase bigram field (pf2 parameter) * @link https://php.net/manual/en/solrdismaxquery.removebigramphrasefield.php * @param string $field

    * Field name *

    * @return SolrDisMaxQuery */ public function removeBigramPhraseField($field) {} /** * (PECL solr >= 2.1.0)
    * Removes a boost query partial by field name (bq) * @link https://php.net/manual/en/solrdismaxquery.removeboostquery.php * @param string $field

    * Field name *

    * @return SolrDisMaxQuery */ public function removeBoostQuery($field) {} /** * (PECL solr >= 2.1.0)
    * Removes a Phrase Field (pf parameter) * @link https://php.net/manual/en/solrdismaxquery.removephrasefield.php * @param string $field

    * Field name *

    * @return SolrDisMaxQuery */ public function removePhraseField($field) {} /** * (PECL solr >= 2.1.0)
    * Removes a Query Field (qf parameter) * @link https://php.net/manual/en/solrdismaxquery.removequeryfield.php * @param string $field

    * Field name *

    * @return SolrDisMaxQuery */ public function removeQueryField($field) {} /** * (PECL solr >= 2.1.0)
    * Removes a Trigram Phrase Field (pf3 parameter) * @link https://php.net/manual/en/solrdismaxquery.removetrigramphrasefield.php * @param string $field

    * Field name *

    * @return SolrDisMaxQuery */ public function removeTrigramPhraseField($field) {} /** * (PECL solr >= 2.1.0)
    * Removes a field from The User Fields Parameter (uf) *
    * Warning
    * This function is currently not documented; only its argument list is available. *
    * @link https://php.net/manual/en/solrdismaxquery.removeuserfield.php * @param string $field

    * Field name *

    * @return SolrDisMaxQuery */ public function removeUserField($field) {} /** * (PECL solr >= 2.1.0)
    * Sets Bigram Phrase Fields and their boosts (and slops) using pf2 parameter * @link https://php.net/manual/en/solrdismaxquery.setbigramphrasefields.php * @param string $fields

    * Fields boosts (slops) *

    * @return SolrDisMaxQuery */ public function setBigramPhraseFields($fields) {} /** * (PECL solr >= 2.1.0)
    * Sets Bigram Phrase Slop (ps2 parameter) * @link https://php.net/manual/en/solrdismaxquery.setbigramphraseslop.php * @param string $slop

    * A default slop for Bigram phrase fields. *

    * @return SolrDisMaxQuery */ public function setBigramPhraseSlop($slop) {} /** * (PECL solr >= 2.1.0)
    * Sets a Boost Function (bf parameter). * @link https://php.net/manual/en/solrdismaxquery.setboostfunction.php * @param string $function

    * Functions (with optional boosts) that will be included in the user's query to influence the score. Any function * supported natively by Solr can be used, along with a boost value. e.g.:
    * recip(rord(myfield),1,2,3)^1.5 *

    * @return SolrDisMaxQuery */ public function setBoostFunction($function) {} /** * (PECL solr >= 2.1.0)
    * Directly Sets Boost Query Parameter (bq) * @link https://php.net/manual/en/solrdismaxquery.setboostquery.php * @param string $q * @return SolrDisMaxQuery */ public function setBoostQuery($q) {} /** * (PECL solr >= 2.1.0)
    * Set Minimum "Should" Match (mm) * @link https://php.net/manual/en/solrdismaxquery.setminimummatch.php * @param string $value

    * Minimum match value/expression
    * Set Minimum "Should" Match parameter (mm). If the default query operator is AND then mm=100%, if the default * query operator (q.op) is OR, then mm=0%. *

    * @return SolrDisMaxQuery */ public function setMinimumMatch($value) {} /** * (PECL solr >= 2.1.0)
    * Sets Phrase Fields and their boosts (and slops) using pf2 parameter * @link https://php.net/manual/en/solrdismaxquery.setphrasefields.php * @param string $fields

    * Fields, boosts [, slops] *

    * @return SolrDisMaxQuery */ public function setPhraseFields($fields) {} /** * (PECL solr >= 2.1.0)
    * Sets the default slop on phrase queries (ps parameter) * @link https://php.net/manual/en/solrdismaxquery.setphraseslop.php * @param string $slop

    * Sets the default amount of slop on phrase queries built with "pf", "pf2" and/or "pf3" fields (affects boosting). * "ps" parameter *

    * @return SolrDisMaxQuery */ public function setPhraseSlop($slop) {} /** * (PECL solr >= 2.1.0)
    * Set Query Alternate (q.alt parameter) * @link https://php.net/manual/en/solrdismaxquery.setqueryalt.php * @param string $q

    * Query String *

    * @return SolrDisMaxQuery */ public function setQueryAlt($q) {} /** * (PECL solr >= 2.1.0)
    * Specifies the amount of slop permitted on phrase queries explicitly included in the user's query string (qf * parameter) * @link https://php.net/manual/en/solrdismaxquery.setqueryphraseslop.php * @param string $slop

    * Amount of slop
    * The Query Phrase Slop is the amount of slop permitted on phrase queries explicitly included in the user's query * string with the qf parameter.
    *
    * slop refers to the number of positions one token needs to be moved in relation to another token in order to match * a phrase specified in a query. *

    * @return SolrDisMaxQuery */ public function setQueryPhraseSlop($slop) {} /** * (PECL solr >= 2.1.0)
    * Sets Tie Breaker parameter (tie parameter) * @link https://php.net/manual/en/solrdismaxquery.settiebreaker.php * @param string $tieBreaker

    * The tie parameter specifies a float value (which should be something much less than 1) to use as tiebreaker in * DisMax queries. *

    * @return SolrDisMaxQuery */ public function setTieBreaker($tieBreaker) {} /** * (PECL solr >= 2.1.0)
    * Directly Sets Trigram Phrase Fields (pf3 parameter) * @link https://php.net/manual/en/solrdismaxquery.settrigramphrasefields.php * @param string $fields

    * Trigram Phrase Fields *

    * @return SolrDisMaxQuery */ public function setTrigramPhraseFields($fields) {} /** * (PECL solr >= 2.1.0)
    * Sets Trigram Phrase Slop (ps3 parameter) * @link https://php.net/manual/en/solrdismaxquery.settrigramphraseslop.php * @param string $slop

    * Phrase slop *

    * @return SolrDisMaxQuery */ public function setTrigramPhraseSlop($slop) {} /** * (PECL solr >= 2.1.0)
    * Sets User Fields parameter (uf) * @link https://php.net/manual/en/solrdismaxquery.setuserfields.php * @param string $fields

    * Fields names separated by space
    * This parameter supports wildcards. *

    * @return SolrDisMaxQuery */ public function setUserFields($fields) {} /** * (PECL solr >= 2.1.0)
    * Switch QueryParser to be DisMax Query Parser * @link https://php.net/manual/en/solrdismaxquery.usedismaxqueryparser.php * @return SolrDisMaxQuery */ public function useDisMaxQueryParser() {} /** * (PECL solr >= 2.1.0)
    * Switch QueryParser to be EDisMax
    * By default the query builder uses edismax, if it was switched using * SolrDisMaxQuery::useDisMaxQueryParser(), it can be switched back using this method. * @link https://php.net/manual/en/solrdismaxquery.useedismaxqueryparser.php * @return SolrDisMaxQuery */ public function useEDisMaxQueryParser() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrParams
    * This class represents a a collection of name-value pairs sent to the Solr server during a request. * @link https://php.net/manual/en/class.solrparams.php */ abstract class SolrParams implements Serializable { /** * (PECL solr >= 0.9.2)
    * This is an alias for SolrParams::addParam * @link https://php.net/manual/en/solrparams.add.php * @param string $name

    * The name of the parameter *

    * @param string $value

    * The value of the parameter *

    * @return SolrParams|false

    * Returns a SolrParams instance on success and FALSE on failure. *

    */ public function add($name, $value) {} /** * (PECL solr >= 0.9.2)
    * Adds a parameter to the object * @link https://php.net/manual/en/solrparams.addparam.php * @param string $name

    * The name of the parameter *

    * @param string $value

    * The value of the parameter *

    * @return SolrParams|false

    * Returns a SolrParams instance on success and FALSE on failure. *

    */ public function addParam($name, $value) {} /** * (PECL solr >= 0.9.2)
    * This is an alias for SolrParams::getParam * @link https://php.net/manual/en/solrparams.get.php * @param string $param_name

    * The name of the parameter *

    * @return mixed

    * Returns an array or string depending on the type of parameter *

    */ final public function get($param_name) {} /** * (PECL solr >= 0.9.2)
    * Returns a parameter value * @link https://php.net/manual/en/solrparams.getparam.php * @param string $param_name

    * The name of the parameter *

    * @return mixed

    * Returns an array or string depending on the type of parameter *

    */ final public function getParam($param_name) {} /** * (PECL solr >= 0.9.2)
    * Returns an array of non URL-encoded parameters * @link https://php.net/manual/en/solrparams.getparams.php * @return array

    * Returns an array of non URL-encoded parameters *

    */ final public function getParams() {} /** * (PECL solr >= 0.9.2)
    * Returns an array of URL-encoded parameters * @link https://php.net/manual/en/solrparams.getpreparedparams.php * @return array

    * Returns an array of URL-encoded parameters *

    */ final public function getPreparedParams() {} /** * (PECL solr >= 0.9.2)
    * Used for custom serialization * @link https://php.net/manual/en/solrparams.serialize.php * @return string

    * Used for custom serialization *

    */ final public function serialize() {} /** * (PECL solr >= 0.9.2)
    * An alias of SolrParams::setParam * @link https://php.net/manual/en/solrparams.set.php * @param string $name

    * The name of the parameter *

    * @param string $value

    * The parameter value *

    * @return SolrParams|false

    * Returns a SolrParams instance on success and FALSE on failure. *

    */ final public function set($name, $value) {} /** * (PECL solr >= 0.9.2)
    * Sets the parameter to the specified value * @link https://php.net/manual/en/solrparams.setparam.php * @param string $name

    * The name of the parameter *

    * @param string $value

    * The parameter value *

    * @return SolrParams|false

    * Returns a SolrParams instance on success and FALSE on failure. *

    */ public function setParam($name, $value) {} /** * (PECL solr >= 0.9.2)
    * Returns all the name-value pair parameters in the object * @link https://php.net/manual/en/solrparams.tostring.php * @param bool $url_encode

    * Whether to return URL-encoded values *

    * @return string|false

    * Returns a string on success and FALSE on failure. *

    */ final public function toString($url_encode = false) {} /** * (PECL solr >= 0.9.2)
    * Used for custom serialization * @link https://php.net/manual/en/solrparams.unserialize.php * @param string $serialized

    * The serialized representation of the object *

    */ final public function unserialize($serialized) {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrQuery
    * This class represents a collection of name-value pairs sent to the Solr server during a request. * @link https://php.net/manual/en/class.solrquery.php */ class SolrQuery extends SolrModifiableParams implements Serializable { /** @var int Used to specify that the sorting should be in acending order */ public const ORDER_ASC = 0; /** @var int Used to specify that the sorting should be in descending order */ public const ORDER_DESC = 1; /** @var int Used to specify that the facet should sort by index */ public const FACET_SORT_INDEX = 0; /** @var int Used to specify that the facet should sort by count */ public const FACET_SORT_COUNT = 1; /** @var int Used in the TermsComponent */ public const TERMS_SORT_INDEX = 0; /** @var int Used in the TermsComponent */ public const TERMS_SORT_COUNT = 1; /** * (PECL solr >= 2.2.0)
    * Overrides main filter query, determines which documents to include in the main group. * @link https://php.net/manual/en/solrquery.addexpandfilterquery.php * @param string $fq * @return SolrQuery

    * Returns a SolrQuery object. *

    */ public function addExpandFilterQuery($fq) {} /** * (PECL solr >= 2.2.0)
    * Orders the documents within the expanded groups (expand.sort parameter). * @link https://php.net/manual/en/solrquery.addexpandsortfield.php * @param string $field

    * Field name *

    * @param string $order [optional]

    * Order ASC/DESC, utilizes SolrQuery::ORDER_* constants. *

    *

    * Default: SolrQuery::ORDER_DESC *

    * @return SolrQuery

    * Returns a SolrQuery object. *

    */ public function addExpandSortField($field, $order) {} /** * (PECL solr >= 0.9.2)
    * Maps to facet.date * @link https://php.net/manual/en/solrquery.addfacetdatefield.php * @param string $dateField

    * The name of the date field. *

    * @return SolrQuery

    * Returns a SolrQuery object. *

    */ public function addFacetDateField($dateField) {} /** * (PECL solr >= 0.9.2)
    * Adds another facet.date.other parameter * @link https://php.net/manual/en/solrquery.addfacetdateother.php * @param string $value

    * The value to use. *

    * @param string $field_override

    * The field name for the override. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function addFacetDateOther($value, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Adds another field to the facet * @link https://php.net/manual/en/solrquery.addfacetfield.php * @param string $field

    * The name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function addFacetField($field) {} /** * (PECL solr >= 0.9.2)
    * Adds a facet query * @link https://php.net/manual/en/solrquery.addfacetquery.php * @param string $facetQuery

    * The facet query *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function addFacetQuery($facetQuery) {} /** * (PECL solr >= 0.9.2)
    * Specifies which fields to return in the result * @link https://php.net/manual/en/solrquery.addfield.php * @param string $field

    * The name of the field *

    * @return SolrQuery

    * Returns a SolrQuery object. *

    */ public function addField($field) {} /** * (PECL solr >= 0.9.2)
    * Specifies a filter query * @link https://php.net/manual/en/solrquery.addfilterquery.php * @param string $fq

    * The filter query *

    * @return SolrQuery

    * Returns a SolrQuery object. *

    */ public function addFilterQuery($fq) {} /** * (PECL solr >= 2.2.0)
    * Add a field to be used to group results. * @link https://php.net/manual/en/solrquery.addgroupfield.php * @param string $value * @return SolrQuery

    * Returns a SolrQuery object. *

    */ public function addGroupField($value) {} /** * (PECL solr >= 2.2.0)
    * Allows grouping results based on the unique values of a function query (group.func parameter). * @link https://php.net/manual/en/solrquery.addgroupfunction.php * @param string $value * @return SolrQuery

    * Returns a SolrQuery object. *

    */ public function addGroupFunction($value) {} /** * (PECL solr >= 2.2.0)
    * Allows grouping of documents that match the given query. * @link https://php.net/manual/en/solrquery.addgroupquery.php * @param string $value * @return SolrQuery

    * Returns a SolrQuery object. *

    */ public function addGroupQuery($value) {} /** * (PECL solr >= 2.2.0)
    * Add a group sort field (group.sort parameter). * @link https://php.net/manual/en/solrquery.addgroupsortfield.php * @param string $field

    * Field name *

    * @param int $order

    * Order ASC/DESC, utilizes SolrQuery::ORDER_* constants *

    * @return SolrQuery

    * Returns a SolrQuery object. *

    */ public function addGroupSortField($field, $order) {} /** * (PECL solr >= 0.9.2)
    * Maps to hl.fl * @link https://php.net/manual/en/solrquery.addhighlightfield.php * @param string $field

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function addHighlightField($field) {} /** * (PECL solr >= 0.9.2)
    * Sets a field to use for similarity * @link https://php.net/manual/en/solrquery.addmltfield.php * @param string $field

    * The name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function addMltField($field) {} /** * (PECL solr >= 0.9.2)
    * Maps to mlt.qf * @link https://php.net/manual/en/solrquery.addmltqueryfield.php * @param string $field

    * The name of the field *

    * @param float $boost

    * Its boost value *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function addMltQueryField($field, $boost) {} /** * (PECL solr >= 0.9.2)
    * Used to control how the results should be sorted * @link https://php.net/manual/en/solrquery.addsortfield.php * @param string $field

    * The name of the field *

    * @param int $order

    * The sort direction. This should be either SolrQuery::ORDER_ASC or SolrQuery::ORDER_DESC. *

    * @return SolrQuery

    * Returns a SolrQuery object. *

    */ public function addSortField($field, $order = SolrQuery::ORDER_DESC) {} /** * (PECL solr >= 0.9.2)
    * Requests a return of sub results for values within the given facet * @link https://php.net/manual/en/solrquery.addstatsfacet.php * @param string $field

    * The name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function addStatsFacet($field) {} /** * (PECL solr >= 0.9.2)
    * Maps to stats.field parameter * @link https://php.net/manual/en/solrquery.addstatsfield.php * @param string $field

    * The name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function addStatsField($field) {} /** * (No version information available, might only be in Git)
    * Collapses the result set to a single document per group * @link https://php.net/manual/en/solrquery.collapse.php * @param SolrCollapseFunction $collapseFunction * @return SolrQuery

    * Returns a SolrQuery object. *

    */ public function collapse(SolrCollapseFunction $collapseFunction) {} /** * (PECL solr >= 0.9.2)
    * SolrQuery constructor. * @link https://php.net/manual/en/solrquery.construct.php * @param string $q

    * Optional search query *

    */ public function __construct($q = '') {} /** * (PECL solr >= 0.9.2)
    * Destructor * @link https://php.net/manual/en/solrquery.destruct.php */ public function __destruct() {} /** * (PECL solr >= 2.2.0)
    * Returns true if group expanding is enabled * @link https://php.net/manual/en/solrquery.getexpand.php * @return bool

    * Returns TRUE if group expanding is enabled *

    */ public function getExpand() {} /** * (PECL solr >= 2.2.0)
    * Returns the expand filter queries * @link https://php.net/manual/en/solrquery.getexpandfilterqueries.php * @return array

    * Returns the expand filter queries *

    */ public function getExpandFilterQueries() {} /** * (PECL solr >= 2.2.0)
    * Returns the expand query expand.q parameter * @link https://php.net/manual/en/solrquery.getexpandquery.php * @return array

    * Returns the expand query expand.q parameter *

    */ public function getExpandQuery() {} /** * (PECL solr >= 2.2.0)
    * Returns The number of rows to display in each group (expand.rows) * @link https://php.net/manual/en/solrquery.getexpandrows.php * @return int

    * Returns The number of rows to display in each group (expand.rows) *

    */ public function getExpandRows() {} /** * (PECL solr >= 2.2.0)
    * Returns an array of fields * @link https://php.net/manual/en/solrquery.getexpandsortfields.php * @return array

    * Returns an array of fields *

    */ public function getExpandSortFields() {} /** * (PECL solr >= 0.9.2)
    * Returns the value of the facet parameter * @link https://php.net/manual/en/solrquery.getfacet.php * @return bool|null

    * Returns a boolean on success and NULL if not set *

    */ public function getFacet() {} /** * (PECL solr >= 0.9.2)
    * Returns the value for the facet.date.end parameter * @link https://php.net/manual/en/solrquery.getfacetdateend.php * @param string $field_override [optional]

    * The name of the field *

    * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getFacetDateEnd($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns all the facet.date fields * @link https://php.net/manual/en/solrquery.getfacetdatefields.php * @return array|null

    * Returns all the facet.date fields as an array or NULL if none was set *

    */ public function getFacetDateFields() {} /** * (PECL solr >= 0.9.2)
    * Returns the value of the facet.date.gap parameter * @link https://php.net/manual/en/solrquery.getfacetdategap.php * @param string $field_override [optional]

    * The name of the field *

    * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getFacetDateGap($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the value of the facet.date.hardend parameter * @link https://php.net/manual/en/solrquery.getfacetdatehardend.php * @param string $field_override [optional]

    * The name of the field *

    * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getFacetDateHardEnd($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the value for the facet.date.other parameter * @link https://php.net/manual/en/solrquery.getfacetdatehardend.php * @param string $field_override [optional]

    * The name of the field *

    * @return array|null

    * Returns an array on success and NULL if not set *

    */ public function getFacetDateOther($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the lower bound for the first date range for all date faceting on this field * @link https://php.net/manual/en/solrquery.getfacetdatestart.php * @param string $field_override [optional]

    * The name of the field *

    * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getFacetDateStart($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns all the facet fields * @link https://php.net/manual/en/solrquery.getfacetfields.php * @return array|null

    * Returns an array of all the fields and NULL if none was set *

    */ public function getFacetFields() {} /** * (PECL solr >= 0.9.2)
    * Returns the maximum number of constraint counts that should be returned for the facet fields * @link https://php.net/manual/en/solrquery.getfacetlimit.php * @param string $field_override [optional]

    * The name of the field *

    * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getFacetLimit($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the value of the facet.method parameter * @link https://php.net/manual/en/solrquery.getfacetmethod.php * @param string $field_override [optional]

    * The name of the field *

    * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getFacetMethod($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the minimum counts for facet fields should be included in the response * @link https://php.net/manual/en/solrquery.getfacetmincount.php * @param string $field_override [optional]

    * The name of the field *

    * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getFacetMinCount($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the current state of the facet.missing parameter * @link https://php.net/manual/en/solrquery.getfacetmissing.php * @param string $field_override [optional]

    * The name of the field *

    * @return string|null

    * Returns a boolean on success and NULL if not set *

    */ public function getFacetMissing($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns an offset into the list of constraints to be used for pagination * @link https://php.net/manual/en/solrquery.getfacetoffset.php * @param string $field_override [optional]

    * The name of the field *

    * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getFacetOffset($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the facet prefix * @link https://php.net/manual/en/solrquery.getfacetprefix.php * @param string $field_override [optional]

    * The name of the field *

    * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getFacetPrefix($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns all the facet queries * @link https://php.net/manual/en/solrquery.getfacetqueries.php * @return string|null

    * Returns an array on success and NULL if not set *

    */ public function getFacetQueries() {} /** * (PECL solr >= 0.9.2)
    * Returns the facet sort type * @link https://php.net/manual/en/solrquery.getfacetsort.php * @param string $field_override [optional]

    * The name of the field *

    * @return int|null

    * Returns an integer (SolrQuery::FACET_SORT_INDEX or SolrQuery::FACET_SORT_COUNT) on success or NULL if not * set. *

    */ public function getFacetSort($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the list of fields that will be returned in the response * @link https://php.net/manual/en/solrquery.getfields.php * @return string|null

    * Returns an array on success and NULL if not set *

    */ public function getFields() {} /** * (PECL solr >= 0.9.2)
    * Returns an array of filter queries * @link https://php.net/manual/en/solrquery.getfilterqueries.php * @return string|null

    * Returns an array on success and NULL if not set *

    */ public function getFilterQueries() {} /** * (PECL solr >= 2.2.0)
    * Returns true if grouping is enabled * https://secure.php.net/manual/en/solrquery.getgroup.php * @return bool

    * Returns true if grouping is enabled *

    */ public function getGroup() {} /** * (PECL solr >= 2.2.0)
    * Returns group cache percent value * @link https://php.net/manual/en/solrquery.getgroupcachepercent.php * @return int

    * Returns group cache percent value *

    */ public function getGroupCachePercent() {} /** * (PECL solr >= 2.2.0)
    * Returns the group.facet parameter value * @link https://php.net/manual/en/solrquery.getgroupfacet.php * @return bool

    * Returns the group.facet parameter value *

    */ public function getGroupFacet() {} /** * (PECL solr >= 2.2.0)
    * Returns group fields (group.field parameter values) * @link https://php.net/manual/en/solrquery.getgroupfields.php * @return array

    * Returns group fields (group.field parameter values) *

    */ public function getGroupFields() {} /** * (PECL solr >= 2.2.0)
    * Returns the group.format value * @link https://php.net/manual/en/solrquery.getgroupformat.php * @return string

    * Returns the group.format value *

    */ public function getGroupFormat() {} /** * (PECL solr >= 2.2.0)
    * Returns group functions (group.func parameter values) * @link https://php.net/manual/en/solrquery.getgroupfunctions.php * @return array

    * Returns group functions (group.func parameter values) *

    */ public function getGroupFunctions() {} /** * (PECL solr >= 2.2.0)
    * Returns the group.limit value * @link https://php.net/manual/en/solrquery.getgrouplimit.php * @return int

    * Returns the group.limit value *

    */ public function getGroupLimit() {} /** * (PECL solr >= 2.2.0)
    * Returns the group.main value * @link https://php.net/manual/en/solrquery.getgroupmain.php * @return bool

    * Returns the group.main value *

    */ public function getGroupMain() {} /** * (PECL solr >= 2.2.0)
    * Returns the group.ngroups value * @link https://php.net/manual/en/solrquery.getgroupngroups.php * @return bool

    * Returns the group.ngroups value *

    */ public function getGroupNGroups() {} /** * (PECL solr >= 2.2.0)
    * Returns the group.offset value * @link https://php.net/manual/en/solrquery.getgroupoffset.php * @return bool

    * Returns the group.offset value *

    */ public function getGroupOffset() {} /** * (PECL solr >= 2.2.0)
    * Returns all the group.query parameter values * @link https://php.net/manual/en/solrquery.getgroupqueries.php * @return array

    * Returns all the group.query parameter values *

    */ public function getGroupQueries() {} /** * (PECL solr >= 2.2.0)
    * Returns the group.sort value * @link https://php.net/manual/en/solrquery.getgroupsortfields.php * @return array

    * Returns all the group.sort parameter values *

    */ public function getGroupSortFields() {} /** * (PECL solr >= 2.2.0)
    * Returns the group.truncate value * @link https://php.net/manual/en/solrquery.getgrouptruncate.php * @return bool

    * Returns the group.truncate value *

    */ public function getGroupTruncate() {} /** * (PECL solr >= 0.9.2)
    * Returns the state of the hl parameter * @link https://php.net/manual/en/solrquery.gethighlight.php * @return bool

    * Returns the state of the hl parameter *

    */ public function getHighlight() {} /** * (PECL solr >= 0.9.2)
    * Returns the highlight field to use as backup or default * @link https://php.net/manual/en/solrquery.gethighlightalternatefield.php * @param string $field_override [optional]

    * The name of the field *

    * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getHighlightAlternateField($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns all the fields that Solr should generate highlighted snippets for * @link https://php.net/manual/en/solrquery.gethighlightfields.php * @return array|null

    * Returns an array on success and NULL if not set *

    */ public function getHighlightFields() {} /** * (PECL solr >= 0.9.2)
    * Returns the formatter for the highlighted output * @link https://php.net/manual/en/solrquery.gethighlightformatter.php * @param string $field_override [optional]

    * The name of the field *

    * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getHighlightFormatter($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the text snippet generator for highlighted text * @link https://php.net/manual/en/solrquery.gethighlightfragmenter.php * @param string $field_override [optional]

    * The name of the field *

    * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getHighlightFragmenter($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the number of characters of fragments to consider for highlighting * @link https://php.net/manual/en/solrquery.gethighlightfragsize.php * @param string $field_override [optional]

    * The name of the field *

    * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getHighlightFragsize($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns whether or not to enable highlighting for range/wildcard/fuzzy/prefix queries * @link https://php.net/manual/en/solrquery.gethighlighthighlightmultiterm.php * @return bool|null

    * Returns a boolean on success and NULL if not set *

    */ public function getHighlightHighlightMultiTerm() {} /** * (PECL solr >= 0.9.2)
    * Returns the maximum number of characters of the field to return * @link https://php.net/manual/en/solrquery.gethighlightmaxalternatefieldlength.php * @param string $field_override [optional]

    * The name of the field *

    * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getHighlightMaxAlternateFieldLength($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the maximum number of characters into a document to look for suitable snippets * @link https://php.net/manual/en/solrquery.gethighlightmaxanalyzedchars.php * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getHighlightMaxAnalyzedChars() {} /** * (PECL solr >= 0.9.2)
    * Returns whether or not the collapse contiguous fragments into a single fragment * @link https://php.net/manual/en/solrquery.gethighlightmergecontiguous.php * @param string $field_override [optional]

    * The name of the field *

    * @return bool|null

    * Returns a boolean on success and NULL if not set *

    */ public function getHighlightMergeContiguous($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the maximum number of characters from a field when using the regex fragmenter * @link https://php.net/manual/en/solrquery.gethighlightregexmaxanalyzedchars.php * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getHighlightRegexMaxAnalyzedChars() {} /** * (PECL solr >= 0.9.2)
    * Returns the regular expression for fragmenting * @link https://php.net/manual/en/solrquery.gethighlightregexpattern.php * @return string

    * Returns a string on success and NULL if not set *

    */ public function getHighlightRegexPattern() {} /** * (PECL solr >= 0.9.2)
    * Returns the deviation factor from the ideal fragment size * @link https://php.net/manual/en/solrquery.gethighlightregexslop.php * @return float|null

    * Returns a double on success and NULL if not set. *

    */ public function getHighlightRegexSlop() {} /** * (PECL solr >= 0.9.2)
    * Returns if a field will only be highlighted if the query matched in this particular field * @link https://php.net/manual/en/solrquery.gethighlightrequirefieldmatch.php * @return bool|null

    * Returns a boolean on success and NULL if not set *

    */ public function getHighlightRequireFieldMatch() {} /** * (PECL solr >= 0.9.2)
    * Returns the text which appears after a highlighted term * @link https://php.net/manual/en/solrquery.gethighlightsimplepost.php * @param string $field_override [optional]

    * The name of the field *

    * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getHighlightSimplePost($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the text which appears before a highlighted term * @link https://php.net/manual/en/solrquery.gethighlightsimplepre.php * @param string $field_override [optional]

    * The name of the field *

    * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getHighlightSimplePre($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the maximum number of highlighted snippets to generate per field * @link https://php.net/manual/en/solrquery.gethighlightsnippets.php * @param string $field_override [optional]

    * The name of the field *

    * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getHighlightSnippets($field_override) {} /** * (PECL solr >= 0.9.2)
    * Returns the state of the hl.usePhraseHighlighter parameter * @link https://php.net/manual/en/solrquery.gethighlightusephrasehighlighter.php * @return bool|null

    * Returns a boolean on success and NULL if not set *

    */ public function getHighlightUsePhraseHighlighter() {} /** * (PECL solr >= 0.9.2)
    * Returns whether or not MoreLikeThis results should be enabled * @link https://php.net/manual/en/solrquery.getmlt.php * @return bool|null

    * Returns a boolean on success and NULL if not set *

    */ public function getMlt() {} /** * (PECL solr >= 0.9.2)
    * Returns whether or not the query will be boosted by the interesting term relevance * @link https://php.net/manual/en/solrquery.getmltboost.php * @return bool|null

    * Returns a boolean on success and NULL if not set *

    */ public function getMltBoost() {} /** * (PECL solr >= 0.9.2)
    * Returns the number of similar documents to return for each result * @link https://php.net/manual/en/solrquery.getmltcount.php * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getMltCount() {} /** * (PECL solr >= 0.9.2)
    * Returns all the fields to use for similarity * @link https://php.net/manual/en/solrquery.getmltfields.php * @return array

    * Returns an array on success and NULL if not set *

    */ public function getMltFields() {} /** * (PECL solr >= 0.9.2)
    * Returns the maximum number of query terms that will be included in any generated query * @link https://php.net/manual/en/solrquery.getmltmaxnumqueryterms.php * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getMltMaxNumQueryTerms() {} /** * (PECL solr >= 0.9.2)
    * Returns the maximum number of tokens to parse in each document field that is not stored with TermVector support * @link https://php.net/manual/en/solrquery.getmltmaxnumtokens.php * @return int

    * Returns an integer on success and NULL if not set *

    */ public function getMltMaxNumTokens() {} /** * (PECL solr >= 0.9.2)
    * Returns the maximum word length above which words will be ignored * @link https://php.net/manual/en/solrquery.getmltmaxwordlength.php * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getMltMaxWordLength() {} /** * (PECL solr >= 0.9.2)
    * Returns the threshold frequency at which words will be ignored which do not occur in at least this many docs * @link https://php.net/manual/en/solrquery.getmltmindocfrequency.php * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getMltMinDocFrequency() {} /** * (PECL solr >= 0.9.2)
    * Returns the frequency below which terms will be ignored in the source document * @link https://php.net/manual/en/solrquery.getmltmintermfrequency.php * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getMltMinTermFrequency() {} /** * (PECL solr >= 0.9.2)
    * Returns the minimum word length below which words will be ignored * @link https://php.net/manual/en/solrquery.getmltminwordlength.php * @return int

    * Returns an integer on success and NULL if not set *

    */ public function getMltMinWordLength() {} /** * (PECL solr >= 0.9.2)
    * Returns the query fields and their boosts * @link https://php.net/manual/en/solrquery.getmltqueryfields.php * @return array|null

    * Returns an array on success and NULL if not set *

    */ public function getMltQueryFields() {} /** * (PECL solr >= 0.9.2)
    * Returns the main query * @link https://php.net/manual/en/solrquery.getquery.php * @return string

    * Returns a string on success and NULL if not set *

    */ public function getQuery() {} /** * (PECL solr >= 0.9.2)
    * Returns the maximum number of documents * @link https://php.net/manual/en/solrquery.getrows.php * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getRows() {} /** * (PECL solr >= 0.9.2)
    * Returns all the sort fields * @link https://php.net/manual/en/solrquery.getsortfields.php * @return array

    * Returns an array on success and NULL if none of the parameters was set. *

    */ public function getSortFields() {} /** * (PECL solr >= 0.9.2)
    * Returns the offset in the complete result set * @link https://php.net/manual/en/solrquery.getstart.php * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getStart() {} /** * (PECL solr >= 0.9.2)
    * Returns whether or not stats is enabled * @link https://php.net/manual/en/solrquery.getstats.php * @return bool|null

    * Returns a boolean on success and NULL if not set *

    */ public function getStats() {} /** * (PECL solr >= 0.9.2)
    * Returns all the stats facets that were set * @link https://php.net/manual/en/solrquery.getstatsfacets.php * @return array|null

    * Returns an array on success and NULL if not set *

    */ public function getStatsFacets() {} /** * (PECL solr >= 0.9.2)
    * Returns all the statistics fields * @link https://php.net/manual/en/solrquery.getstatsfields.php * @return array|null

    * Returns an array on success and NULL if not set *

    */ public function getStatsFields() {} /** * (PECL solr >= 0.9.2)
    * Returns whether or not the TermsComponent is enabled * @link https://php.net/manual/en/solrquery.getterms.php * @return bool|null

    * Returns a boolean on success and NULL if not set *

    */ public function getTerms() {} /** * (PECL solr >= 0.9.2)
    * Returns the field from which the terms are retrieved * @link https://php.net/manual/en/solrquery.gettermsfield.php * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getTermsField() {} /** * (PECL solr >= 0.9.2)
    * Returns whether or not to include the lower bound in the result set * @link https://php.net/manual/en/solrquery.gettermsincludelowerbound.php * @return bool|null

    * Returns a boolean on success and NULL if not set *

    */ public function getTermsIncludeLowerBound() {} /** * (PECL solr >= 0.9.2)
    * Returns whether or not to include the upper bound term in the result set * @link https://php.net/manual/en/solrquery.gettermsincludeupperbound.php * @return bool|null

    * Returns a boolean on success and NULL if not set *

    */ public function getTermsIncludeUpperBound() {} /** * (PECL solr >= 0.9.2)
    * Returns the maximum number of terms Solr should return * @link https://php.net/manual/en/solrquery.gettermslimit.php * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getTermsLimit() {} /** * (PECL solr >= 0.9.2)
    * Returns the term to start at * @link https://php.net/manual/en/solrquery.gettermslowerbound.php * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getTermsLowerBound() {} /** * (PECL solr >= 0.9.2)
    * Returns the maximum document frequency * @link https://php.net/manual/en/solrquery.gettermsmaxcount.php * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getTermsMaxCount() {} /** * (PECL solr >= 0.9.2)
    * Returns the minimum document frequency to return in order to be included * @link https://php.net/manual/en/solrquery.gettermsmincount.php * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getTermsMinCount() {} /** * (PECL solr >= 0.9.2)
    * Returns the term prefix * @link https://php.net/manual/en/solrquery.gettermsprefix.php * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getTermsPrefix() {} /** * (PECL solr >= 0.9.2)
    * Whether or not to return raw characters * @link https://php.net/manual/en/solrquery.gettermsreturnraw.php * @return bool|null

    * Returns a boolean on success and NULL if not set *

    */ public function getTermsReturnRaw() {} /** * (PECL solr >= 0.9.2)
    * Returns an integer indicating how terms are sorted * @link https://php.net/manual/en/solrquery.gettermssort.php * @return int|null

    * Returns an integer on success and NULL if not set
    * SolrQuery::TERMS_SORT_INDEX indicates that the terms are returned by index order.
    * SolrQuery::TERMS_SORT_COUNT implies that the terms are sorted by term frequency (highest count first) *

    */ public function getTermsSort() {} /** * (PECL solr >= 0.9.2)
    * Returns the term to stop at * @link https://php.net/manual/en/solrquery.gettermsupperbound.php * @return string|null

    * Returns a string on success and NULL if not set *

    */ public function getTermsUpperBound() {} /** * (PECL solr >= 0.9.2)
    * Returns the time in milliseconds allowed for the query to finish * @link https://php.net/manual/en/solrquery.gettimeallowed.php * @return int|null

    * Returns an integer on success and NULL if not set *

    */ public function getTimeAllowed() {} /** * (PECL solr >= 2.2.0)
    * Removes an expand filter query * @link https://php.net/manual/en/solrquery.removeexpandfilterquery.php * @param string $fq * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeExpandFilterQuery($fq) {} /** * (PECL solr >= 2.2.0)
    * Removes an expand sort field from the expand.sort parameter. * @link https://php.net/manual/en/solrquery.removeexpandsortfield.php * @param string $field

    * Field name *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeExpandSortField($field) {} /** * (PECL solr >= 0.9.2)
    * Removes one of the facet date fields * @link https://php.net/manual/en/solrquery.removefacetdatefield.php * @param string $field

    * The name of the date field to remove *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeFacetDateField($field) {} /** * (PECL solr >= 0.9.2)
    * Removes one of the facet.date.other parameters * @link https://php.net/manual/en/solrquery.removefacetdateother.php * @param string $value

    * The value *

    * @param string $field_override [optional]

    * The name of the field. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeFacetDateOther($value, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Removes one of the facet.date parameters * @link https://php.net/manual/en/solrquery.removefacetfield.php * @param string $field

    * The name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeFacetField($field) {} /** * (PECL solr >= 0.9.2)
    * Removes one of the facet.query parameters * @link https://php.net/manual/en/solrquery.removefacetquery.php * @param string $value

    * The value *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeFacetQuery($value) {} /** * (PECL solr >= 0.9.2)
    * Removes a field from the list of fields * @link https://php.net/manual/en/solrquery.removefield.php * @param string $field

    * The name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeField($field) {} /** * (PECL solr >= 0.9.2)
    * Removes a filter query * @link https://php.net/manual/en/solrquery.removefilterquery.php * @param string $fq * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeFilterQuery($fq) {} /** * (PECL solr >= 0.9.2)
    * Removes one of the fields used for highlighting * @link https://php.net/manual/en/solrquery.removehighlightfield.php * @param string $field

    * The name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeHighlightField($field) {} /** * (PECL solr >= 0.9.2)
    * Removes one of the moreLikeThis fields * @link https://php.net/manual/en/solrquery.removemltfield.php * @param string $field

    * The name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeMltField($field) {} /** * (PECL solr >= 0.9.2)
    * Removes one of the moreLikeThis query fields * @link https://php.net/manual/en/solrquery.removemltqueryfield.php * @param string $queryField

    * The query field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeMltQueryField($queryField) {} /** * (PECL solr >= 0.9.2)
    * Removes one of the sort fields * @link https://php.net/manual/en/solrquery.removesortfield.php * @param string $field

    * The name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeSortField($field) {} /** * (PECL solr >= 0.9.2)
    * Removes one of the stats.facet parameters * @link https://php.net/manual/en/solrquery.removestatsfacet.php * @param string $value

    * The value *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeStatsFacet($value) {} /** * (PECL solr >= 0.9.2)
    * Removes one of the stats.field parameters * @link https://php.net/manual/en/solrquery.removestatsfield.php * @param string $field

    * The name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function removeStatsField($field) {} /** * (PECL solr >= 0.9.2)
    * Toggles the echoHandler parameter * @link https://php.net/manual/en/solrquery.setechohandler.php * @param bool $flag

    * TRUE or FALSE *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setEchoHandler($flag) {} /** * (PECL solr >= 0.9.2)
    * Determines what kind of parameters to include in the response * @link https://php.net/manual/en/solrquery.setechoparams.php * @param string $type

    * The type of parameters to include: *

    *
      *
    • none: don't include any request parameters for debugging
    • *
    • explicit: include the parameters explicitly specified by the client in the request
    • *
    • all: include all parameters involved in this request, either specified explicitly by the client, or * implicit because of the request handler configuration.
    • *
    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setEchoParams($type) {} /** * (PECL solr >= 2.2.0)
    * Enables/Disables the Expand Component * @link https://php.net/manual/en/solrquery.setexpand.php * @param bool $value

    * Bool flag * * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setExpand($value) {} /** * (PECL solr >= 2.2.0)
    * Sets the expand.q parameter * @link https://php.net/manual/en/solrquery.setexpandquery.php * @param string $q * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setExpandQuery($q) {} /** * (PECL solr >= 2.2.0)
    * Sets the number of rows to display in each group (expand.rows). Server Default 5 * @link https://php.net/manual/en/solrquery.setexpandrows.php * @param int $value * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setExpandRows($value) {} /** * (PECL solr >= 0.9.2)
    * Sets the explainOther common query parameter * @link https://php.net/manual/en/solrquery.setexplainother.php * @param string $query

    * The Lucene query to identify a set of documents *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setExplainOther($query) {} /** * (PECL solr >= 0.9.2)
    * Maps to the facet parameter. Enables or disables facetting * @link https://php.net/manual/en/solrquery.setfacet.php * @param bool $flag

    * TRUE enables faceting and FALSE disables it. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setFacet($flag) {} /** * (PECL solr >= 0.9.2)
    * Maps to facet.date.end * @link https://php.net/manual/en/solrquery.setfacetdateend.php * @param string $value

    * See facet.date.end *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setFacetDateEnd($value, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Maps to facet.date.gap * @link https://php.net/manual/en/solrquery.setfacetdategap.php * @param string $value

    * See facet.date.gap *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setFacetDateGap($value, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Maps to facet.date.hardend * @link https://php.net/manual/en/solrquery.setfacetdatehardend.php * @param bool $value

    * See facet.date.hardend *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setFacetDateHardEnd($value, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Maps to facet.date.start * @link https://php.net/manual/en/solrquery.setfacetdatestart.php * @param string $value

    * See facet.date.start *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setFacetDateStart($value, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Sets the minimum document frequency used for determining term count * @link https://php.net/manual/en/solrquery.setfacetenumcachemindefaultfrequency.php * @param int $frequency

    * The minimum frequency *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setFacetEnumCacheMinDefaultFrequency($frequency, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Maps to facet.limit * @link https://php.net/manual/en/solrquery.setfacetlimit.php * @param int $limit

    * The maximum number of constraint counts *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setFacetLimit($limit, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Specifies the type of algorithm to use when faceting a field * @link https://php.net/manual/en/solrquery.setfacetmethod.php * @param string $method

    * The method to use. *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setFacetMethod($method, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Maps to facet.mincount * @link https://php.net/manual/en/solrquery.setfacetmincount.php * @param int $mincount

    * The minimum count *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setFacetMinCount($mincount, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Maps to facet.missing * @link https://php.net/manual/en/solrquery.setfacetmissing.php * @param bool $flag

    * TRUE turns this feature on. FALSE disables it. *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setFacetMissing($flag, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Sets the offset into the list of constraints to allow for pagination * @link https://php.net/manual/en/solrquery.setfacetoffset.php * @param int $offset

    * The offset *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setFacetOffset($offset, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Specifies a string prefix with which to limits the terms on which to facet * @link https://php.net/manual/en/solrquery.setfacetprefix.php * @param string $prefix

    * The prefix string *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setFacetPrefix($prefix, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Determines the ordering of the facet field constraints * @link https://php.net/manual/en/solrquery.setfacetsort.php * @param int $facetSort

    * Use SolrQuery::FACET_SORT_INDEX for sorting by index order or SolrQuery::FACET_SORT_COUNT for sorting by count. *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setFacetSort($facetSort, $field_override) {} /** * (PECL solr >= 2.2.0)
    * Enable/Disable result grouping (group parameter) * @link https://php.net/manual/en/solrquery.setgroup.php * @param bool $value * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setGroup($value) {} /** * (PECL solr >= 2.2.0)
    * Enables caching for result grouping * @link https://php.net/manual/en/solrquery.setgroupcachepercent.php * @param int $percent

    * Setting this parameter to a number greater than 0 enables caching for result grouping. Result Grouping executes * two searches; this option caches the second search. The server default value is 0. Testing has shown that group * caching only improves search time with Boolean, wildcard, and fuzzy queries. For simple queries like term or * "match all" queries, group caching degrades performance. group.cache.percent parameter. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setGroupCachePercent($percent) {} /** * (PECL solr >= 2.2.0)
    * Sets group.facet parameter * @link https://php.net/manual/en/solrquery.setgroupfacet.php * @param bool $value * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setGroupFacet($value) {} /** * (PECL solr >= 2.2.0)
    * Sets the group format, result structure (group.format parameter). * @link https://php.net/manual/en/solrquery.setgroupformat.php * @param string $value

    * Sets the group.format parameter. If this parameter is set to simple, the grouped documents are presented in a * single flat list, and the start and rows parameters affect the numbers of documents instead of groups.
    * Accepts: grouped/simple *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setGroupFormat($value) {} /** * (PECL solr >= 2.2.0)
    * Specifies the number of results to return for each group. The server default value is 1. * @link https://php.net/manual/en/solrquery.setgrouplimit.php * @param int $value * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setGroupLimit($value) {} /** * (PECL solr >= 2.2.0)
    * If true, the result of the first field grouping command is used as the main result list in the response, using * group.format=simple. * @link https://php.net/manual/en/solrquery.setgroupmain.php * @param string $value * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setGroupMain($value) {} /** * (PECL solr >= 2.2.0)
    * If true, Solr includes the number of groups that have matched the query in the results. * @link https://php.net/manual/en/solrquery.setgroupngroups.php * @param bool $value * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setGroupNGroups($value) {} /** * (PECL solr >= 2.2.0)
    * Sets the group.offset parameter. * @link https://php.net/manual/en/solrquery.setgroupoffset.php * @param int $value * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setGroupOffset($value) {} /** * (PECL solr >= 2.2.0)
    * If true, facet counts are based on the most relevant document of each group matching the query. * @link https://php.net/manual/en/solrquery.setgrouptruncate.php * @param bool $value * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setGroupTruncate($value) {} /** * (PECL solr >= 0.9.2)
    * Enables or disables highlighting * @link https://php.net/manual/en/solrquery.sethighlight.php * @param bool $flag

    * Setting it to TRUE enables highlighted snippets to be generated in the query response.
    * Setting it to FALSE disables highlighting *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlight($flag) {} /** * (PECL solr >= 0.9.2)
    * Specifies the backup field to use * @link https://php.net/manual/en/solrquery.sethighlightalternatefield.php * @param string $field

    * The name of the backup field *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightAlternateField($field, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Specify a formatter for the highlight output * @link https://php.net/manual/en/solrquery.sethighlightformatter.php * @param string $formatter

    * Currently the only legal value is "simple" *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightFormatter($formatter, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Sets a text snippet generator for highlighted text * @link https://php.net/manual/en/solrquery.sethighlightfragmenter.php * @param string $fragmenter

    * The standard fragmenter is gap. Another option is regex, which tries to create fragments that resembles a certain * regular expression *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightFragmenter($fragmenter, $field_override) {} /** * (PECL solr >= 0.9.2)
    * The size of fragments to consider for highlighting * @link https://php.net/manual/en/solrquery.sethighlightfragsize.php * @param int $size

    * The size, in characters, of fragments to consider for highlighting *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightFragsize($size, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Use SpanScorer to highlight phrase terms * @link https://php.net/manual/en/solrquery.sethighlighthighlightmultiterm.php * @param bool $flag

    * Whether or not to use SpanScorer to highlight phrase terms only when they appear within the query phrase in the * document. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightHighlightMultiTerm($flag) {} /** * (PECL solr >= 0.9.2)
    * Sets the maximum number of characters of the field to return * @link https://php.net/manual/en/solrquery.sethighlightmaxalternatefieldlength.php * @param int $fieldLength

    * The length of the field *

    *

    * If SolrQuery::setHighlightAlternateField() was passed the value TRUE, this parameter specifies the maximum * number of characters of the field to return *

    *

    * Any value less than or equal to 0 means unlimited. *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightMaxAlternateFieldLength($fieldLength, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Specifies the number of characters into a document to look for suitable snippets * @link https://php.net/manual/en/solrquery.sethighlightmaxanalyzedchars.php * @param int $value

    * The number of characters into a document to look for suitable snippets *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightMaxAnalyzedChars($value) {} /** * (PECL solr >= 0.9.2)
    * Whether or not to collapse contiguous fragments into a single fragment * @link https://php.net/manual/en/solrquery.sethighlightmergecontiguous.php * @param bool $flag

    * Whether or not to collapse contiguous fragments into a single fragment *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightMergeContiguous($flag, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Specify the maximum number of characters to analyze * @link https://php.net/manual/en/solrquery.sethighlightregexmaxanalyzedchars.php * @param int $maxAnalyzedChars

    * The maximum number of characters to analyze from a field when using the regex fragmenter *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightRegexMaxAnalyzedChars($maxAnalyzedChars) {} /** * (PECL solr >= 0.9.2)
    * Specify the regular expression for fragmenting * @link https://php.net/manual/en/solrquery.sethighlightregexpattern.php * @param string $value

    * The regular expression for fragmenting. This could be used to extract sentences *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightRegexPattern($value) {} /** * (PECL solr >= 0.9.2)
    * Sets the factor by which the regex fragmenter can stray from the ideal fragment size * @link https://php.net/manual/en/solrquery.sethighlightregexslop.php * @param float $factor

    * The factor by which the regex fragmenter can stray from the ideal fragment size (specified by * SolrQuery::setHighlightFragsize) to accommodate the regular expression. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightRegexSlop($factor) {} /** * (PECL solr >= 0.9.2)
    * Require field matching during highlighting * @link https://php.net/manual/en/solrquery.sethighlightrequirefieldmatch.php * @param bool $flag

    * If TRUE, then a field will only be highlighted if the query matched in this particular field.
    * This will only work if SolrQuery::setHighlightUsePhraseHighlighter() was set to TRUE. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightRequireFieldMatch($flag) {} /** * (PECL solr >= 0.9.2)
    * Sets the text which appears after a highlighted term * @link https://php.net/manual/en/solrquery.sethighlightsimplepost.php * @param string $simplePost

    * Sets the text which appears after a highlighted term. The default is </em> *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightSimplePost($simplePost, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Sets the text which appears before a highlighted term * @link https://php.net/manual/en/solrquery.sethighlightsimplepre.php * @param string $simplePre

    * Sets the text which appears before a highlighted term. The default is <em> *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightSimplePre($simplePre, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Sets the maximum number of highlighted snippets to generate per field * @link https://php.net/manual/en/solrquery.sethighlightsnippets.php * @param int $value

    * The maximum number of highlighted snippets to generate per field *

    * @param string $field_override [optional]

    * Name of the field *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightSnippets($value, $field_override) {} /** * (PECL solr >= 0.9.2)
    * Whether to highlight phrase terms only when they appear within the query phrase * @link https://php.net/manual/en/solrquery.sethighlightusephrasehighlighter.php * @param bool $flag

    * Whether or not to use SpanScorer to highlight phrase terms only when they appear within the query phrase in the * document. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setHighlightUsePhraseHighlighter($flag) {} /** * (PECL solr >= 0.9.2)
    * Enables or disables moreLikeThis * @link https://php.net/manual/en/solrquery.setmlt.php * @param bool $flag

    * TRUE enables it and FALSE turns it off. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setMlt($flag) {} /** * (PECL solr >= 0.9.2)
    * Set if the query will be boosted by the interesting term relevance * @link https://php.net/manual/en/solrquery.setmltboost.php * @param bool $flag

    * Sets to TRUE or FALSE *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setMltBoost($flag) {} /** * (PECL solr >= 0.9.2)
    * Set the number of similar documents to return for each result * @link https://php.net/manual/en/solrquery.setmltcount.php * @param int $count

    * The number of similar documents to return for each result *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setMltCount($count) {} /** * (PECL solr >= 0.9.2)
    * Sets the maximum number of query terms included * @link https://php.net/manual/en/solrquery.setmltmaxnumqueryterms.php * @param int $value

    * The maximum number of query terms that will be included in any generated query *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setMltMaxNumQueryTerms($value) {} /** * (PECL solr >= 0.9.2)
    * Specifies the maximum number of tokens to parse * @link https://php.net/manual/en/solrquery.setmltmaxnumtokens.php * @param int $value

    * The maximum number of tokens to parse *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setMltMaxNumTokens($value) {} /** * (PECL solr >= 0.9.2)
    * Sets the maximum word length * @link https://php.net/manual/en/solrquery.setmltmaxwordlength.php * @param int $maxWordLength

    * The maximum word length above which words will be ignored *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setMltMaxWordLength($maxWordLength) {} /** * (PECL solr >= 0.9.2)
    * Sets the mltMinDoc frequency * @link https://php.net/manual/en/solrquery.setmltmindocfrequency.php * @param int $minDocFrequency

    * Sets the frequency at which words will be ignored which do not occur in at least this many docs. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setMltMinDocFrequency($minDocFrequency) {} /** * (PECL solr >= 0.9.2)
    * Sets the frequency below which terms will be ignored in the source docs * @link https://php.net/manual/en/solrquery.setmltmintermfrequency.php * @param int $minTermFrequency

    * The frequency below which terms will be ignored in the source docs *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setMltMinTermFrequency($minTermFrequency) {} /** * (PECL solr >= 0.9.2)
    * Sets the minimum word length * @link https://php.net/manual/en/solrquery.setmltminwordlength.php * @param int $minWordLength

    * The minimum word length below which words will be ignored *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setMltMinWordLength($minWordLength) {} /** * (PECL solr >= 0.9.2)
    * Exclude the header from the returned results * @link https://php.net/manual/en/solrquery.setomitheader.php * @param bool $flag

    * TRUE excludes the header from the result. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setOmitHeader($flag) {} /** * (PECL solr >= 0.9.2)
    * Sets the search query * @link https://php.net/manual/en/solrquery.setquery.php * @param string $query

    * The search query *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setQuery($query) {} /** * (PECL solr >= 0.9.2)
    * Specifies the maximum number of rows to return in the result * @link https://php.net/manual/en/solrquery.setrows.php * @param int $rows

    * The maximum number of rows to return *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setRows($rows) {} /** * (PECL solr >= 0.9.2)
    * Flag to show debug information * @link https://php.net/manual/en/solrquery.setshowdebuginfo.php * @param bool $flag

    * Whether to show debug info. TRUE or FALSE *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setShowDebugInfo($flag) {} /** * (PECL solr >= 0.9.2)
    * Specifies the number of rows to skip * @link https://php.net/manual/en/solrquery.setstart.php * @param int $start

    * The number of rows to skip. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setStart($start) {} /** * (PECL solr >= 0.9.2)
    * Enables or disables the Stats component * @link https://php.net/manual/en/solrquery.setstats.php * @param bool $flag

    * TRUE turns on the stats component and FALSE disables it. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setStats($flag) {} /** * (PECL solr >= 0.9.2)
    * Enables or disables the TermsComponent * @link https://php.net/manual/en/solrquery.setterms.php * @param bool $flag

    * TRUE enables it. FALSE turns it off *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setTerms($flag) {} /** * (PECL solr >= 0.9.2)
    * Sets the name of the field to get the Terms from * @link https://php.net/manual/en/solrquery.settermsfield.php * @param string $fieldname

    * The field name *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setTermsField($fieldname) {} /** * (PECL solr >= 0.9.2)
    * Include the lower bound term in the result set * @link https://php.net/manual/en/solrquery.settermsincludelowerbound.php * @param bool $flag

    * Include the lower bound term in the result set *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setTermsIncludeLowerBound($flag) {} /** * (PECL solr >= 0.9.2)
    * Include the upper bound term in the result set * @link https://php.net/manual/en/solrquery.settermsincludeupperbound.php * @param bool $flag

    * TRUE or FALSE *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setTermsIncludeUpperBound($flag) {} /** * (PECL solr >= 0.9.2)
    * Sets the maximum number of terms to return * @link https://php.net/manual/en/solrquery.settermslimit.php * @param int $limit

    * The maximum number of terms to return. All the terms will be returned if the limit is negative. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setTermsLimit($limit) {} /** * (PECL solr >= 0.9.2)
    * Specifies the Term to start from * @link https://php.net/manual/en/solrquery.settermslowerbound.php * @param string $lowerBound

    * The lower bound Term *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setTermsLowerBound($lowerBound) {} /** * (PECL solr >= 0.9.2)
    * Sets the maximum document frequency * @link https://php.net/manual/en/solrquery.settermsmaxcount.php * @param int $frequency

    * The maximum document frequency. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setTermsMaxCount($frequency) {} /** * (PECL solr >= 0.9.2)
    * Sets the minimum document frequency * @link https://php.net/manual/en/solrquery.settermsmincount.php * @param int $frequency

    * The minimum frequency *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setTermsMinCount($frequency) {} /** * (PECL solr >= 0.9.2)
    * Restrict matches to terms that start with the prefix * @link https://php.net/manual/en/solrquery.settermsprefix.php * @param string $prefix

    * Restrict matches to terms that start with the prefix *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setTermsPrefix($prefix) {} /** * (PECL solr >= 0.9.2)
    * Return the raw characters of the indexed term * @link https://php.net/manual/en/solrquery.settermsreturnraw.php * @param bool $flag

    * TRUE or FALSE *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setTermsReturnRaw($flag) {} /** * (PECL solr >= 0.9.2)
    * Specifies how to sort the returned terms * @link https://php.net/manual/en/solrquery.settermssort.php * @param int $sortType

    * If SolrQuery::TERMS_SORT_COUNT, sorts the terms by the term frequency (highest count first).
    * If SolrQuery::TERMS_SORT_INDEX, returns the terms in index order *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setTermsSort($sortType) {} /** * (PECL solr >= 0.9.2)
    * Sets the term to stop at * @link https://php.net/manual/en/solrquery.settermsupperbound.php * @param string $upperBound

    * The term to stop at *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setTermsUpperBound($upperBound) {} /** * (PECL solr >= 0.9.2)
    * The time allowed for search to finish * @link https://php.net/manual/en/solrquery.settimeallowed.php * @param int $timeAllowed

    * The time allowed for a search to finish. This value only applies to the search and not to requests in general. * Time is in milliseconds. Values less than or equal to zero implies no time restriction. Partial results may be * returned, if there are any. *

    * @return SolrQuery

    * Returns the current SolrQuery object, if the return value is used. *

    */ public function setTimeAllowed($timeAllowed) {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrInputDocument
    * This class represents a Solr document that is about to be submitted to the Solr index. * @link https://php.net/manual/en/class.solrinputdocument.php */ final class SolrInputDocument { /** @var int Sorts the fields in ascending order. */ public const SORT_DEFAULT = 1; /** @var int Sorts the fields in ascending order. */ public const SORT_ASC = 1; /** @var int Sorts the fields in descending order. */ public const SORT_DESC = 2; /** @var int Sorts the fields by name */ public const SORT_FIELD_NAME = 1; /** @var int Sorts the fields by number of values. */ public const SORT_FIELD_VALUE_COUNT = 2; /** @var int Sorts the fields by boost value. */ public const SORT_FIELD_BOOST_VALUE = 4; /** * (PECL solr >= 2.3.0)
    * Adds a child document for block indexing * @link https://php.net/manual/en/solrinputdocument.addchilddocument.php * @param SolrInputDocument $child

    * A SolrInputDocument object. *

    * @throws SolrIllegalArgumentException * @throws SolrException */ public function addChildDocument(SolrInputDocument $child) {} /** * (PECL solr >= 2.3.0)
    * Adds an array of child documents * @link https://php.net/manual/en/solrinputdocument.addchilddocuments.php * @param array &$docs

    * An array of SolrInputDocument objects. *

    * @throws SolrIllegalArgumentException * @throws SolrException */ public function addChildDocuments(array &$docs) {} /** * (PECL solr >= 0.9.2)
    * Adds a field to the document * @link https://php.net/manual/en/solrinputdocument.addfield.php * @param string $fieldName

    * The name of the field *

    * @param string $fieldValue

    * The value for the field. *

    * @param float $fieldBoostValue [optional]

    * The index time boost for the field. Though this cannot be negative, you can still pass values less than 1.0 but * they must be greater than zero. *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function addField($fieldName, $fieldValue, $fieldBoostValue = 0.0) {} /** * (PECL solr >= 0.9.2)
    * Resets the input document * @link https://php.net/manual/en/solrinputdocument.clear.php * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function clear() {} /** * (PECL solr >= 0.9.2)
    * Creates a copy of a SolrDocument * @link https://php.net/manual/en/solrinputdocument.clone.php */ public function __clone() {} /** * (PECL solr >= 0.9.2)
    * SolrInputDocument constructor. * @link https://php.net/manual/en/solrinputdocument.construct.php */ public function __construct() {} /** * (PECL solr >= 0.9.2)
    * Removes a field from the document * @link https://php.net/manual/en/solrinputdocument.construct.php * @param string $fieldName

    * The name of the field. *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function deleteField($fieldName) {} /** * (PECL solr >= 0.9.2)
    * Destructor * @link https://php.net/manual/en/solrinputdocument.destruct.php */ public function __destruct() {} /** * (PECL solr >= 0.9.2)
    * Checks if a field exists * @link https://php.net/manual/en/solrinputdocument.fieldexists.php * @param string $fieldName

    * Name of the field. *

    * @return bool

    * Returns TRUE if the field was found and FALSE if it was not found. *

    */ public function fieldExists($fieldName) {} /** * (PECL solr >= 0.9.2)
    * Retrieves the current boost value for the document * @link https://php.net/manual/en/solrinputdocument.getboost.php * @return float|false

    * Returns the boost value on success and FALSE on failure. *

    */ public function getBoost() {} /** * (PECL solr >= 2.3.0)
    * Returns an array of child documents (SolrInputDocument) * @link https://php.net/manual/en/solrinputdocument.getchilddocuments.php * @return SolrInputDocument[] */ public function getChildDocuments() {} /** * (PECL solr >= 2.3.0)
    * Returns the number of child documents * @link https://php.net/manual/en/solrinputdocument.getchilddocumentscount.php * @return int */ public function getChildDocumentsCount() {} /** * (PECL solr >= 0.9.2)
    * Retrieves a field by name * @link https://php.net/manual/en/solrinputdocument.getfield.php * @param string $fieldName

    * The name of the field. *

    * @return SolrDocumentField|false Returns a SolrDocumentField object on success and FALSE on failure. */ public function getField($fieldName) {} /** * (PECL solr >= 0.9.2)
    * Retrieves the boost value for a particular field * @link https://php.net/manual/en/solrinputdocument.getfieldboost.php * @param string $fieldName

    * The name of the field. *

    * @return float|false

    * Returns the boost value for the field or FALSE if there was an error. *

    */ public function getFieldBoost($fieldName) {} /** * (PECL solr >= 0.9.2)
    * Returns the number of fields in the document * @link https://php.net/manual/en/solrinputdocument.getfieldcount.php * @return int|false

    * Returns an integer on success or FALSE on failure. *

    */ public function getFieldCount() {} /** * (PECL solr >= 0.9.2)
    * Returns an array containing all the fields in the document * @link https://php.net/manual/en/solrinputdocument.getfieldnames.php * @return array|false

    * Returns an array on success and FALSE on failure. *

    */ public function getFieldNames() {} /** * (PECL solr >= 2.3.0)
    * Checks whether the document has any child documents * @link https://php.net/manual/en/solrinputdocument.haschilddocuments.php * @return bool

    * Returns TRUE if the document has any child documents *

    */ public function hasChildDocuments() {} /** * (PECL solr >= 0.9.2)
    * Merges one input document into another * @link https://php.net/manual/en/solrinputdocument.merge.php * @param SolrInputDocument $sourceDoc

    * The source document. *

    * @param bool $overwrite [optional]

    * If this is TRUE it will replace matching fields in the destination document. *

    * @return bool

    * Returns TRUE on success or FALSE on failure. In the future, this will be modified to return the * number of fields in the new document. *

    */ public function merge(SolrInputDocument $sourceDoc, $overwrite = true) {} /** * (PECL solr >= 0.9.2)
    * This is an alias of SolrInputDocument::clear * @link https://php.net/manual/en/solrinputdocument.reset.php * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function reset() {} /** * (PECL solr >= 0.9.2)
    * Sets the boost value for this document * @link https://php.net/manual/en/solrinputdocument.setboost.php * @param float $documentBoostValue

    * The index-time boost value for this document. *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function setBoost($documentBoostValue) {} /** * (PECL solr >= 0.9.2)
    * Sets the index-time boost value for a field * https://php.net/manual/en/solrinputdocument.setfieldboost.php * @param string $fieldName

    * The name of the field. *

    * @param float $fieldBoostValue

    * The index time boost value. *

    */ public function setFieldBoost($fieldName, $fieldBoostValue) {} /** * (PECL solr >= 0.9.2)
    * Sorts the fields within the document * @link https://php.net/manual/en/solrinputdocument.sort.php * @param int $sortOrderBy

    * The sort criteria, must be one of : *

      *
    • SolrInputDocument::SORT_FIELD_NAME
    • *
    • SolrInputDocument::SORT_FIELD_BOOST_VALUE
    • *
    • SolrInputDocument::SORT_FIELD_VALUE_COUNT
    • *
    *

    * @param int $sortDirection [optional]

    * The sort direction, can be one of : *

      *
    • SolrInputDocument::SORT_DEFAULT
    • *
    • SolrInputDocument::SORT_ASC
    • *
    • SolrInputDocument::SORT_DESC
    • *
    *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function sort($sortOrderBy, $sortDirection = SolrInputDocument::SORT_ASC) {} /** * (PECL solr >= 0.9.2)
    * Returns an array representation of the input document * @link https://php.net/manual/en/solrinputdocument.toarray.php * @return array|false

    * Returns an array containing the fields. It returns FALSE on failure. *

    */ public function toArray() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrDocumentField
    * This class represents a field in a Solr document. All its properties are read-only. * @link https://php.net/manual/en/class.solrdocumentfield.php */ final class SolrDocumentField { /** @var string [readonly] The name of the field. */ public $name; /** @var string [readonly] The boost value for the field */ public $boost; /** @var string [readonly] An array of values for this field */ public $values; /** * (PECL solr >= 0.9.2)
    * SolrDocument constructor. * @link https://php.net/manual/en/solrdocumentfield.construct.php */ public function __construct() {} /** * (PECL solr >= 0.9.2)
    * Destructor * @link https://php.net/manual/en/solrdocumentfield.destruct.php */ public function __destruct() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrDocument
    * This class represents a Solr document retrieved from a query response. * @link https://php.net/manual/en/class.solrinputdocument.php */ final class SolrDocument implements ArrayAccess, Iterator, Serializable { /** @var int Sorts the fields in ascending order. */ public const SORT_DEFAULT = 1; /** @var int Sorts the fields in ascending order. */ public const SORT_ASC = 1; /** @var int Sorts the fields in descending order. */ public const SORT_DESC = 2; /** @var int Sorts the fields by name */ public const SORT_FIELD_NAME = 1; /** @var int Sorts the fields by number of values. */ public const SORT_FIELD_VALUE_COUNT = 2; /** @var int Sorts the fields by boost value. */ public const SORT_FIELD_BOOST_VALUE = 4; /** * (PECL solr >= 0.9.2)
    * Adds a field to the document * @link https://php.net/manual/en/solrdocument.addfield.php * @param string $fieldName

    * The name of the field *

    * @param string $fieldValue

    * The value for the field. *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function addField($fieldName, $fieldValue) {} /** * (PECL solr >= 0.9.2)
    * Drops all the fields in the document * @link https://php.net/manual/en/solrdocument.clear.php * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function clear() {} /** * (PECL solr >= 0.9.2)
    * Creates a copy of a SolrDocument object * @link https://php.net/manual/en/solrdocument.clone.php */ public function __clone() {} /** * (PECL solr >= 0.9.2)
    * SolrDocument constructor. * @link https://php.net/manual/en/solrdocument.construct.php */ public function __construct() {} /** * (PECL solr >= 0.9.2)
    * Retrieves the current field * @link https://php.net/manual/en/solrdocument.current.php * @return SolrDocumentField

    * Returns the field *

    */ public function current() {} /** * (PECL solr >= 0.9.2)
    * Removes a field from the document * @link https://php.net/manual/en/solrdocument.deletefield.php * @param string $fieldName

    * The name of the field. *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function deleteField($fieldName) {} /** * (PECL solr >= 0.9.2)
    * Destructor * @link https://php.net/manual/en/solrdocument.destruct.php */ public function __destruct() {} /** * (PECL solr >= 0.9.2)
    * Checks if a field exists in the document * @link https://php.net/manual/en/solrdocument.fieldexists.php * @param string $fieldName

    * Name of the field. *

    * @return bool

    * Returns TRUE if the field is present and FALSE if it does not. *

    */ public function fieldExists($fieldName) {} /** * (PECL solr >= 0.9.2)
    * Access the field as a property * @link https://php.net/manual/en/solrdocument.get.php * @param string $fieldName

    * The name of the field. *

    * @return SolrDocumentField

    * Returns a SolrDocumentField instance. *

    */ public function __get($fieldName) {} /** * (PECL solr >= 2.3.0)
    * Returns an array of child documents (SolrInputDocument) * @link https://php.net/manual/en/solrdocument.getchilddocuments.php * @return SolrInputDocument[] */ public function getChildDocuments() {} /** * (PECL solr >= 2.3.0)
    * Returns the number of child documents * @link https://php.net/manual/en/solrdocument.getchilddocumentscount.php * @return int */ public function getChildDocumentsCount() {} /** * (PECL solr >= 0.9.2)
    * Retrieves a field by name * @link https://php.net/manual/en/solrdocument.getfield.php * @param string $fieldName

    * The name of the field. *

    * @return SolrDocumentField|false Returns a SolrDocumentField object on success and FALSE on failure */ public function getField($fieldName) {} /** * (PECL solr >= 0.9.2)
    * Returns the number of fields in this document * @link https://php.net/manual/en/solrdocument.getfieldcount.php * @return int|false

    * Returns an integer on success and FALSE on failure. *

    */ public function getFieldCount() {} /** * (PECL solr >= 0.9.2)
    * Returns an array containing all the fields in the document * @link https://php.net/manual/en/solrdocument.getfieldnames.php * @return array|false

    * Returns an array on success and FALSE on failure. *

    */ public function getFieldNames() {} /** * (PECL solr >= 0.9.2)
    * Returns a SolrInputDocument equivalent of the object * @link https://php.net/manual/en/solrdocument.getinputdocument.php * @return SolrInputDocument

    * Returns a SolrInputDocument on success and NULL on failure. *

    */ public function getInputDocument() {} /** * (PECL solr >= 2.3.0)
    * Checks whether the document has any child documents * @link https://php.net/manual/en/solrdocument.haschilddocuments.php * @return bool

    * Returns TRUE if the document has any child documents *

    */ public function hasChildDocuments() {} /** * (PECL solr >= 0.9.2)
    * Checks if a field exists * @link https://php.net/manual/en/solrdocument.isset.php * @param string $fieldName

    * Name of the field. *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function __isset($fieldName) {} /** * (PECL solr >= 0.9.2)
    * Retrieves the current key * @link https://php.net/manual/en/solrdocument.key.php * @return string

    * Returns the current key. *

    */ public function key() {} /** * (PECL solr >= 0.9.2)
    * Merges one input document into another * @link https://php.net/manual/en/solrdocument.merge.php * @param SolrInputDocument $sourceDoc

    * The source document. *

    * @param bool $overwrite [optional]

    * If this is TRUE then fields with the same name in the destination document will be overwritten. *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function merge(SolrInputDocument $sourceDoc, $overwrite = true) {} /** * (PECL solr >= 0.9.2)
    * Moves the internal pointer to the next field * @link https://php.net/manual/en/solrdocument.next.php */ public function next() {} /** * (PECL solr >= 0.9.2)
    * Checks if a particular field exists * @link https://php.net/manual/en/solrdocument.offsetexists.php * @param string $fieldName

    * The name of the field. *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function offsetExists($fieldName) {} /** * (PECL solr >= 0.9.2)
    * Retrieves a field * @link https://php.net/manual/en/solrdocument.offsetget.php * @param string $fieldName

    * The name of the field. *

    * @return SolrDocumentField

    * Returns a SolrDocumentField object. *

    */ public function offsetGet($fieldName) {} /** * (PECL solr >= 0.9.2)
    * Adds a field to the document * @link https://php.net/manual/en/solrdocument.offsetset.php * @param string $fieldName

    * The name of the field. *

    * @param string $fieldValue

    * The value for this field. *

    * @return bool */ public function offsetSet($fieldName, $fieldValue) {} /** * (PECL solr >= 0.9.2)
    * Removes a field * @link https://php.net/manual/en/solrdocument.offsetunset.php * @param string $fieldName

    * The name of the field. *

    */ public function offsetUnset($fieldName) {} /** * (PECL solr >= 0.9.2)
    * This is an alias of SolrDocument::clear * @link https://php.net/manual/en/solrdocument.reset.php * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function reset() {} /** * (PECL solr >= 0.9.2)
    * Resets the internal pointer to the beginning * @link https://php.net/manual/en/solrdocument.rewind.php */ public function rewind() {} /** * (PECL solr >= 0.9.2)
    * Used for custom serialization * @link https://php.net/manual/en/solrdocument.serialize.php * @return string

    * Returns a string representing the serialized Solr document. *

    */ public function serialize() {} /** * (PECL solr >= 0.9.2)
    * Adds another field to the document * @link https://php.net/manual/en/solrdocument.set.php * @param string $fieldName

    * Name of the field. *

    * @param string $fieldValue

    * Field value. *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function __set($fieldName, $fieldValue) {} /** * (PECL solr >= 0.9.2)
    * Sorts the fields within the document * @link https://php.net/manual/en/solrdocument.sort.php * @param int $sortOrderBy

    * The sort criteria, must be one of : *

      *
    • SolrDocument::SORT_FIELD_NAME
    • *
    • SolrDocument::SORT_FIELD_BOOST_VALUE
    • *
    • SolrDocument::SORT_FIELD_VALUE_COUNT
    • *
    *

    * @param int $sortDirection [optional]

    * The sort direction, can be one of : *

      *
    • SolrDocument::SORT_DEFAULT
    • *
    • SolrDocument::SORT_ASC
    • *
    • SolrDocument::SORT_DESC
    • *
    *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function sort($sortOrderBy, $sortDirection = SolrInputDocument::SORT_ASC) {} /** * (PECL solr >= 0.9.2)
    * Returns an array representation of the document * @link https://secure.php.net/manual/en/solrdocument.toarray.php * @return array

    * Returns an array representation of the document. *

    */ public function toArray() {} /** * (PECL solr >= 0.9.2)
    * Custom serialization of SolrDocument objects * @link https://php.net/manual/en/solrdocument.unserialize.php * @param string $serialized

    * An XML representation of the document. *

    */ public function unserialize($serialized) {} /** * (PECL solr >= 0.9.2)
    * Removes a field from the document * @link https://php.net/manual/en/solrdocument.unset.php * @param string $fieldName

    * The name of the field. *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function __unset($fieldName) {} /** * (PECL solr >= 0.9.2)
    * Checks if the current position internally is still valid * @link https://php.net/manual/en/solrdocument.valid.php * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function valid() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrObject
    * This class represents an object whose properties can also by accessed using the array syntax. All its properties are * read-only. * @link https://php.net/manual/en/class.solrobject.php */ final class SolrObject implements ArrayAccess { /** * (PECL solr >= 0.9.2)
    * SolrObject constructor. * @link https://php.net/manual/en/solrobject.construct.php */ public function __construct() {} /** * (PECL solr >= 0.9.2)
    * Destructor * @link https://php.net/manual/en/solrobject.destruct.php */ public function __destruct() {} /** * (PECL solr >= 0.9.2)
    * Returns an array of all the names of the properties * @link https://php.net/manual/en/solrobject.getpropertynames.php * @return array

    * Returns an array. *

    */ public function getPropertyNames() {} /** * (PECL solr >= 0.9.2)
    * Checks if the property exists * @link https://php.net/manual/en/solrobject.offsetexists.php * @param string $property_name

    * The name of the property. *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function offsetExists($property_name) {} /** * (PECL solr >= 0.9.2)
    * Used to retrieve a property * @link https://php.net/manual/en/solrobject.offsetget.php * @param string $property_name

    * The name of the property. *

    * @return SolrDocumentField

    * Returns the property value. *

    */ public function offsetGet($property_name) {} /** * (PECL solr >= 0.9.2)
    * Sets the value for a property * @link https://php.net/manual/en/solrobject.offsetset.php * @param string $property_name

    * The name of the property. *

    * @param string $property_value

    * The new value. *

    */ public function offsetSet($property_name, $property_value) {} /** * (PECL solr >= 0.9.2)
    * Unsets the value for the property * @link https://php.net/manual/en/solrobject.offsetunset.php * @param string $property_name

    * The name of the property. *

    * @return bool */ public function offsetUnset($property_name) {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrUtils
    * Contains utility methods for retrieving the current extension version and preparing query phrases. * Also contains method for escaping query strings and parsing XML responses. * @link https://php.net/manual/en/class.solrutils.php */ abstract class SolrUtils { /** * (PECL solr >= 0.9.2)
    * Parses an response XML string into a SolrObject * @link https://php.net/manual/en/solrutils.digestxmlresponse.php * @param string $xmlresponse

    * The XML response string from the Solr server. *

    * @param int $parse_mode [optional]

    * Use SolrResponse::PARSE_SOLR_OBJ or SolrResponse::PARSE_SOLR_DOC *

    * @return SolrObject

    * Returns the SolrObject representing the XML response. *

    *

    * If the parse_mode parameter is set to SolrResponse::PARSE_SOLR_OBJ Solr documents will be parses as SolrObject instances. *

    *

    * If it is set to SolrResponse::PARSE_SOLR_DOC, they will be parsed as SolrDocument instances. *

    * @throws SolrException */ public static function digestXmlResponse($xmlresponse, $parse_mode = 0) {} /** * (PECL solr >= 0.9.2)
    * Escapes a lucene query string * @link https://php.net/manual/en/solrutils.escapequerychars.php * @param string $str

    * This is the query string to be escaped. *

    * @return string|false

    * Returns the escaped string or FALSE on failure. *

    */ public static function escapeQueryChars($str) {} /** * (PECL solr >= 0.9.2)
    * Returns the current version of the Solr extension * @link https://php.net/manual/en/solrutils.getsolrversion.php * @return string

    * The current version of the Apache Solr extension. *

    */ public static function getSolrVersion() {} /** * (PECL solr >= 0.9.2)
    * Prepares a phrase from an unescaped lucene string * @link https://php.net/manual/en/solrutils.queryphrase.php * @param string $str

    * The lucene phrase. *

    * @return string

    * Returns the phrase contained in double quotes. *

    */ public static function queryPhrase($str) {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrClient
    * This class is used to send requests to a Solr server. Currently, cloning and serialization of SolrClient instances is * not supported. * @link https://php.net/manual/en/class.solrclient.php */ final class SolrClient { /** @var int Used when updating the search servlet. */ public const SEARCH_SERVLET_TYPE = 1; /** @var int Used when updating the update servlet. */ public const UPDATE_SERVLET_TYPE = 2; /** @var int Used when updating the threads servlet. */ public const THREADS_SERVLET_TYPE = 4; /** @var int Used when updating the ping servlet. */ public const PING_SERVLET_TYPE = 8; /** @var int Used when updating the terms servlet. */ public const TERMS_SERVLET_TYPE = 16; /** @var int Used when retrieving system information from the system servlet. */ public const SYSTEM_SERVLET_TYPE = 32; /** @var string This is the initial value for the search servlet. */ public const DEFAULT_SEARCH_SERVLET = 'select'; /** @var string This is the initial value for the update servlet. */ public const DEFAULT_UPDATE_SERVLET = 'update'; /** @var string This is the initial value for the threads servlet. */ public const DEFAULT_THREADS_SERVLET = 'admin/threads'; /** @var string This is the initial value for the ping servlet. */ public const DEFAULT_PING_SERVLET = 'admin/ping'; /** @var string This is the initial value for the terms servlet used for the TermsComponent. */ public const DEFAULT_TERMS_SERVLET = 'terms'; /** @var string This is the initial value for the system servlet used to obtain Solr Server information. */ public const DEFAULT_SYSTEM_SERVLET = 'admin/system'; /** * (PECL solr >= 0.9.2)
    * Adds a document to the index * @link https://php.net/manual/en/solrclient.adddocument.php * @param SolrInputDocument $doc

    * The SolrInputDocument instance. *

    * @param bool $overwrite [optional]

    * Whether to overwrite existing document or not. If FALSE there will be duplicates (several documents with * the same ID). *

    *
    * Warning
    * PECL Solr < 2.0 $allowDups was used instead of $overwrite, which does the same functionality with exact opposite * bool flag.
    *
    * $allowDups = false is the same as $overwrite = true *
    * @param int $commitWithin [optional]

    * Number of milliseconds within which to auto commit this document. Available since Solr 1.4 . Default (0) means * disabled. *

    *

    * When this value specified, it leaves the control of when to do the commit to Solr itself, optimizing number of * commits to a minimum while still fulfilling the update latency requirements, and Solr will automatically do a * commit when the oldest add in the buffer is due. *

    * @return SolrUpdateResponse

    * Returns a SolrUpdateResponse object or throws an Exception on failure. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function addDocument(SolrInputDocument $doc, $overwrite = true, $commitWithin = 0) {} /** * (PECL solr >= 0.9.2)
    * Adds a collection of SolrInputDocument instances to the index * @link https://php.net/manual/en/solrclient.adddocuments.php * @param array $docs

    * An array containing the collection of SolrInputDocument instances. This array must be an actual variable. *

    * @param bool $overwrite [optional]

    * Whether to overwrite existing document or not. If FALSE there will be duplicates (several documents with * the same ID). *

    *
    * Warning
    * PECL Solr < 2.0 $allowDups was used instead of $overwrite, which does the same functionality with exact opposite * bool flag.
    *
    * $allowDups = false is the same as $overwrite = true *
    * @param int $commitWithin [optional]

    * Number of milliseconds within which to auto commit this document. Available since Solr 1.4 . Default (0) means * disabled. *

    *

    * When this value specified, it leaves the control of when to do the commit to Solr itself, optimizing number of * commits to a minimum while still fulfilling the update latency requirements, and Solr will automatically do a * commit when the oldest add in the buffer is due. *

    * @return SolrUpdateResponse

    * Returns a SolrUpdateResponse object or throws an Exception on failure. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function addDocuments(array $docs, $overwrite = true, $commitWithin = 0) {} /** * (PECL solr >= 0.9.2)
    * Finalizes all add/deletes made to the index * @link https://php.net/manual/en/solrclient.commit.php * @param bool $softCommit [optional]

    * This will refresh the 'view' of the index in a more performant manner, but without "on-disk" guarantees. * (Solr4.0+) *

    *

    * A soft commit is much faster since it only makes index changes visible and does not fsync index files or write a * new index descriptor. If the JVM crashes or there is a loss of power, changes that occurred after the last hard * commit will be lost. Search collections that have near-real-time requirements (that want index changes to be * quickly visible to searches) will want to soft commit often but hard commit less frequently. *

    * @param bool $waitSearcher [optional]

    * block until a new searcher is opened and registered as the main query searcher, making the changes visible. *

    * @param bool $expungeDeletes [optional]

    * Merge segments with deletes away. (Solr1.4+) *

    * @return SolrUpdateResponse

    * Returns a SolrUpdateResponse object or throws an Exception on failure. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function commit($softCommit = false, $waitSearcher = true, $expungeDeletes = false) {} /** * (PECL solr >= 0.9.2)
    * SolrClient constructor. * @link https://php.net/manual/en/solrclient.construct.php * @param array $clientOptions

    * This is an array containing one of the following keys : *

    *
      *
    • secure: (Boolean value indicating whether or not to connect in secure mode)
    • *
    • hostname: (The hostname for the Solr server)
    • *
    • port: (The port number)
    • *
    • path: (The path to solr)
    • *
    • wt: (The name of the response writer e.g. xml, json)
    • *
    • login: (The username used for HTTP Authentication, if any)
    • *
    • password: (The HTTP Authentication password)
    • *
    • proxy_host: (The hostname for the proxy server, if any)
    • *
    • proxy_port: (The proxy port)
    • *
    • proxy_login: (The proxy username)
    • *
    • proxy_password: (The proxy password)
    • *
    • timeout: (This is maximum time in seconds allowed for the http data transfer operation. Default is 30 * seconds)
    • *
    • ssl_cert: (File name to a PEM-formatted file containing the private key + private certificate * (concatenated in that order) )
    • *
    • ssl_key: (File name to a PEM-formatted private key file only)
    • *
    • ssl_keypassword: (Password for private key)
    • *
    • ssl_cainfo: (Name of file holding one or more CA certificates to verify peer with)
    • *
    • ssl_capath: (Name of directory holding multiple CA certificates to verify peer with )
    • *
    *

    * Please note the if the ssl_cert file only contains the private certificate, you have to specify a separate * ssl_key file. *

    *

    * The ssl_keypassword option is required if the ssl_cert or ssl_key options are set. *

    * @throws SolrIllegalArgumentException */ public function __construct(array $clientOptions) {} /** * (PECL solr >= 0.9.2)
    * Delete by Id * @link https://php.net/manual/en/solrclient.deletebyid.php * @param string $id

    * The value of the uniqueKey field declared in the schema *

    * @return SolrUpdateResponse

    * Returns a SolrUpdateResponse on success and throws an exception on failure. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function deleteById($id) {} /** * (PECL solr >= 0.9.2)
    * Deletes by Ids * @link https://php.net/manual/en/solrclient.deletebyids.php * @param array $ids

    * An array of IDs representing the uniqueKey field declared in the schema for each document to be deleted. This * must be an actual php variable. *

    * @return SolrUpdateResponse

    * Returns a SolrUpdateResponse on success and throws an exception on failure. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function deleteByIds(array $ids) {} /** * (PECL solr >= 0.9.2)
    * Removes all documents matching any of the queries * @link https://php.net/manual/en/solrclient.deletebyqueries.php * @param array $queries

    * The array of queries. This must be an actual php variable. *

    * @return SolrUpdateResponse

    * Returns a SolrUpdateResponse on success and throws an exception on failure. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function deleteByQueries(array $queries) {} /** * (PECL solr >= 0.9.2)
    * Deletes all documents matching the given query * @link https://php.net/manual/en/solrclient.deletebyquery.php * @param string $query

    * The query *

    * @return SolrUpdateResponse

    * Returns a SolrUpdateResponse on success and throws an exception on failure. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function deleteByQuery($query) {} /** * (PECL solr >= 0.9.2)
    * Destructor for SolrClient * @link https://php.net/manual/en/solrclient.destruct.php */ public function __destruct() {} /** * (PECL solr >= 2.2.0)
    * Get Document By Id. Utilizes Solr Realtime Get (RTG). * @link https://php.net/manual/en/solrclient.getbyid.php * @param string $id

    * Document ID *

    * @return SolrQueryResponse */ public function getById($id) {} /** * (PECL solr >= 2.2.0)
    * Get Documents by their Ids. Utilizes Solr Realtime Get (RTG). * @link https://php.net/manual/en/solrclient.getbyids.php * @param array $ids

    * Document ids *

    * @return SolrQueryResponse */ public function getByIds(array $ids) {} /** * (PECL solr >= 0.9.7)
    * Returns the debug data for the last connection attempt * @link https://php.net/manual/en/solrclient.getdebug.php * @return string

    * Returns a string on success and null if there is nothing to return. *

    */ public function getDebug() {} /** * (PECL solr >= 0.9.6)
    * Returns the client options set internally * @link https://php.net/manual/en/solrclient.getoptions.php * @return array

    * Returns an array containing all the options for the SolrClient object set internally. *

    */ public function getOptions() {} /** * (PECL solr >= 0.9.2)
    * Defragments the index * @link https://php.net/manual/en/solrclient.optimize.php * @param int $maxSegments

    * Optimizes down to at most this number of segments. Since Solr 1.3 *

    * @param bool $softCommit

    * This will refresh the 'view' of the index in a more performant manner, but without "on-disk" guarantees. * (Solr4.0+) *

    * @param bool $waitSearcher

    * Block until a new searcher is opened and registered as the main query searcher, making the changes visible. *

    * @return SolrUpdateResponse

    * Returns a SolrUpdateResponse on success and throws an exception on failure. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function optimize($maxSegments = 1, $softCommit = true, $waitSearcher = true) {} /** * (PECL solr >= 0.9.2)
    * Checks if Solr server is still up * @link https://php.net/manual/en/solrclient.ping.php * @return SolrPingResponse

    * Returns a SolrPingResponse object on success and throws an exception on failure. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function ping() {} /** * (PECL solr >= 0.9.2)
    * Sends a query to the server * @link https://php.net/manual/en/solrclient.query.php * @param SolrParams $query

    * A SolrParams object. It is recommended to use SolrQuery for advanced queries. *

    * @return SolrQueryResponse

    * Returns a SolrUpdateResponse on success and throws an exception on failure. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function query(SolrParams $query) {} /** * (PECL solr >= 0.9.2)
    * Sends a raw update request * @link https://php.net/manual/en/solrclient.request.php * @param string $raw_request

    * An XML string with the raw request to the server. *

    * @return SolrUpdateResponse

    * Returns a SolrUpdateResponse on success and throws an exception on failure. *

    * @throws SolrIllegalArgumentException

    * Throws SolrIllegalArgumentException if raw_request was an empty string. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function request($raw_request) {} /** * (PECL solr >= 0.9.2)
    * Rollbacks all add/deletes made to the index since the last commit * @link https://php.net/manual/en/solrclient.rollback.php * @return SolrUpdateResponse

    * Returns a SolrUpdateResponse on success and throws an exception on failure. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function rollback() {} /** * (PECL solr >= 0.9.11)
    * Sets the response writer used to prepare the response from Solr * @link https://php.net/manual/en/solrclient.setresponsewriter.php * @param string $responseWriter

    * One of the following: *

    *
      *
    • json
    • *
    • phps
    • *
    • xml
    • *
    */ public function setResponseWriter($responseWriter) {} /** * (PECL solr >= 0.9.2)
    * Changes the specified servlet type to a new value * @link https://php.net/manual/en/solrclient.setservlet.php * @param int $type

    * One of the following : *

    *
      *
    • SolrClient::SEARCH_SERVLET_TYPE
    • *
    • SolrClient::UPDATE_SERVLET_TYPE
    • *
    • SolrClient::THREADS_SERVLET_TYPE
    • *
    • SolrClient::PING_SERVLET_TYPE
    • *
    • SolrClient::TERMS_SERVLET_TYPE
    • *
    * @param string $value

    * The new value for the servlet *

    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function setServlet($type, $value) {} /** * (PECL solr >= 2.0.0)
    * Retrieve Solr Server information * @link https://php.net/manual/en/solrclient.system.php * @return SolrGenericResponse

    * Returns a SolrGenericResponse object on success. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function system() {} /** * (PECL solr >= 0.9.2)
    * Checks the threads status * @link https://php.net/manual/en/solrclient.threads.php * @return SolrGenericResponse

    * Returns a SolrGenericResponse object on success. *

    * @throws SolrClientException

    * Throws SolrClientException if the client had failed, or there was a connection issue. *

    * @throws SolrServerException

    * Throws SolrServerException if the Solr Server had failed to satisfy the request. *

    */ public function threads() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrGenericResponse
    * This class represents a response from the solr server. * @link https://php.net/manual/en/class.solrgenericresponse.php */ final class SolrGenericResponse extends SolrResponse { /** * (PECL solr >= 0.9.2)
    * SolrGenericResponse constructor. * @link https://php.net/manual/en/solrgenericresponse.construct.php */ public function __construct() {} /** * (PECL solr >= 0.9.2)
    * Destructor * @link https://php.net/manual/en/solrgenericresponse.destruct.php */ public function __destruct() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrQueryResponse
    * This class represents a response to a query request. * @link https://php.net/manual/en/class.solrqueryresponse.php */ final class SolrQueryResponse extends SolrResponse { /** * (PECL solr >= 0.9.2)
    * SolrQueryResponse constructor. * @link https://php.net/manual/en/solrqueryresponse.construct.php */ public function __construct() {} /** * (PECL solr >= 0.9.2)
    * Destructor * @link https://php.net/manual/en/solrqueryresponse.destruct.php */ public function __destruct() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrPingResponse
    * This class represents a response to a ping request to the server * @link https://php.net/manual/en/class.solrpingresponse.php */ final class SolrPingResponse extends SolrResponse { /** * (PECL solr >= 0.9.2)
    * SolrPingResponse constructor. * @link https://php.net/manual/en/solrpingresponse.construct.php */ public function __construct() {} /** * (PECL solr >= 0.9.2)
    * Destructor * @link https://php.net/manual/en/solrpingresponse.destruct.php */ public function __destruct() {} /** * (PECL solr >= 0.9.2)
    * Returns the response from the server * @link https://php.net/manual/en/solrpingresponse.getresponse.php * @return string

    * Returns an empty string. (Returns the response from the server. This should be empty because the request as a * HEAD request.) *

    */ public function getResponse() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrResponse
    * This class represents a response from the Solr server. * @link https://php.net/manual/en/class.solrresponse.php */ abstract class SolrResponse { /** @var int Documents should be parsed as SolrObject instances */ public const PARSE_SOLR_OBJ = 0; /** @var int Documents should be parsed as SolrDocument instances. */ public const PARSE_SOLR_DOC = 1; /** @var int The http status of the response. */ protected $http_status; /** @var int Whether to parse the solr documents as SolrObject or SolrDocument instances. */ protected $parser_mode; /** @var bool Was there an error during the request */ protected $success; /** @var string Detailed message on http status */ protected $http_status_message; /** @var string The request URL */ protected $http_request_url; /** @var string A string of raw headers sent during the request. */ protected $http_raw_request_headers; /** @var string The raw request sent to the server */ protected $http_raw_request; /** @var string Response headers from the Solr server. */ protected $http_raw_response_headers; /** @var string The response message from the server. */ protected $http_raw_response; /** @var string The response in PHP serialized format. */ protected $http_digested_response; /** * (PECL solr >= 0.9.2)
    * Returns the XML response as serialized PHP data * @link https://php.net/manual/en/solrresponse.getdigestedresponse.php * @return string

    * Returns the XML response as serialized PHP data *

    */ public function getDigestedResponse() {} /** * (PECL solr >= 0.9.2)
    * Returns the HTTP status of the response * @link https://php.net/manual/en/solrresponse.gethttpstatus.php * @return int

    * Returns the HTTP status of the response. *

    */ public function getHttpStatus() {} /** * (PECL solr >= 0.9.2)
    * Returns more details on the HTTP status * @link https://php.net/manual/en/solrresponse.gethttpstatusmessage.php * @return string

    * Returns more details on the HTTP status *

    */ public function getHttpStatusMessage() {} /** * (PECL solr >= 0.9.2)
    * Returns the raw request sent to the Solr server * @link https://php.net/manual/en/solrresponse.getrawrequest.php * @return string

    * Returns the raw request sent to the Solr server *

    */ public function getRawRequest() {} /** * (PECL solr >= 0.9.2)
    * Returns the raw request headers sent to the Solr server * @link https://php.net/manual/en/solrresponse.getrawrequestheaders.php * @return string

    * Returns the raw request headers sent to the Solr server *

    */ public function getRawRequestHeaders() {} /** * (PECL solr >= 0.9.2)
    * Returns the raw response from the server * @link https://php.net/manual/en/solrresponse.getrawresponse.php * @return string

    * Returns the raw response from the server. *

    */ public function getRawResponse() {} /** * (PECL solr >= 0.9.2)
    * Returns the raw response headers from the server * @link https://php.net/manual/en/solrresponse.getrawresponseheaders.php * @return string

    * Returns the raw response headers from the server. *

    */ public function getRawResponseHeaders() {} /** * (PECL solr >= 0.9.2)
    * Returns the full URL the request was sent to * @link https://php.net/manual/en/solrresponse.getrequesturl.php * @return string

    * Returns the full URL the request was sent to *

    */ public function getRequestUrl() {} /** * (PECL solr >= 0.9.2)
    * Returns a SolrObject representing the XML response from the server * @link https://php.net/manual/en/solrresponse.getresponse.php * @return SolrObject

    * Returns a SolrObject representing the XML response from the server *

    */ public function getResponse() {} /** * (PECL solr >= 0.9.2)
    * Sets the parse mode * @link https://php.net/manual/en/solrresponse.setparsemode.php * @param int $parser_mode
      *
    • SolrResponse::PARSE_SOLR_DOC parses documents in SolrDocument instances.
    • *
    • SolrResponse::PARSE_SOLR_OBJ parses document into SolrObjects.
    • *
    * @return bool

    * Returns TRUE on success or FALSE on failure. *

    */ public function setParseMode($parser_mode = 0) {} /** * (PECL solr >= 0.9.2)
    * Was the request a success * @link https://php.net/manual/en/solrresponse.success.php * @return bool

    * Returns TRUE if it was successful and FALSE if it was not. *

    */ public function success() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrUpdateResponse
    * This class represents a response to an update request. * @link https://php.net/manual/en/class.solrupdateresponse.php */ final class SolrUpdateResponse extends SolrResponse { /** * (PECL solr >= 0.9.2)
    * SolrUpdateResponse constructor. * @link https://php.net/manual/en/solrupdateresponse.construct.php */ public function __construct() {} /** * (PECL solr >= 0.9.2)
    * Destructor * @link https://php.net/manual/en/solrupdateresponse.destruct.php */ public function __destruct() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /* * Solr Predefined Constants * The constants below are defined by this extension, and will only be available when the extension has either been * compiled into PHP or dynamically loaded at runtime. * @link https://php.net/manual/en/solr.constants.php */ define('SOLR_MAJOR_VERSION', 2); define('SOLR_MINOR_VERSION', 4); define('SOLR_PATCH_VERSION', 0); define('SOLR_EXTENSION_VERSION', '2.4.0'); * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrClientException
    * An exception thrown when there is an error while making a request to the server from the client. * @link https://php.net/manual/en/class.solrclientexception.php */ class SolrClientException extends SolrException { /** * (PECL solr >= 0.9.2)
    * Returns internal information where the Exception was thrown * @link https://php.net/manual/en/solrclientexception.getinternalinfo.php * @return array

    * Returns an array containing internal information where the error was thrown. Used only for debugging by extension * developers. *

    */ public function getInternalInfo() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrIllegalOperationException
    * This object is thrown when an illegal or unsupported operation is performed on an object. * @link https://php.net/manual/en/class.solrillegaloperationexception.php */ class SolrIllegalOperationException extends SolrException { /** * (PECL solr >= 0.9.2)
    * Returns internal information where the Exception was thrown * @link https://php.net/manual/en/solrillegaloperationexception.getinternalinfo.php * @return array

    * Returns an array containing internal information where the error was thrown. Used only for debugging by extension * developers. *

    */ public function getInternalInfo() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 1.1.0, >=2.0.0)
    * Class SolrServerException
    * An exception thrown when there is an error produced by the Solr Server itself. * @link https://php.net/manual/en/class.solrserverexception.php */ class SolrServerException extends SolrException { /** * (PECL solr >= 1.1.0, >=2.0.0)
    * Returns internal information where the Exception was thrown * @link https://php.net/manual/en/solrserverexception.getinternalinfo.php * @return array

    * Returns an array containing internal information where the error was thrown. Used only for debugging by extension * developers. *

    */ public function getInternalInfo() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrException
    * This is the base class for all exception thrown by the Solr extension classes. * @link https://php.net/manual/en/class.solrexception.php */ class SolrException extends Exception { /** @var int The line in c-space source file where exception was generated */ protected $sourceline; /** @var string The c-space source file where exception was generated */ protected $sourcefile; /** @var string The c-space function where exception was generated */ protected $zif_name; /** * (PECL solr >= 0.9.2)
    * Returns internal information where the Exception was thrown * @link https://php.net/manual/en/solrexception.getinternalinfo.php * @return array

    * Returns an array containing internal information where the error was thrown. Used only for debugging by extension * developers. *

    */ public function getInternalInfo() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.2)
    * Class SolrIllegalArgumentException
    * This object is thrown when an illegal or invalid argument is passed to a method. * @link https://php.net/manual/en/class.solrillegalargumentexception.php */ class SolrIllegalArgumentException extends SolrException { /** * (PECL solr >= 0.9.2)
    * Returns internal information where the Exception was thrown * @link https://php.net/manual/en/solrillegalargumentexception.getinternalinfo.php * @return array

    * Returns an array containing internal information where the error was thrown. Used only for debugging by extension * developers. *

    */ public function getInternalInfo() {} } * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 2.2.0)
    * Class SolrMissingMandatoryParameterException
    * @link https://php.net/manual/en/class.solrmissingmandatoryparameterexception.php */ class SolrMissingMandatoryParameterException extends SolrException {} * @link https://github.com/pjmazenot/phpsolr-phpdoc */ /** * (PECL solr >= 0.9.1)
    * Returns the current version of the Apache Solr extension * @link https://php.net/manual/en/function.solr-get-version.php * @return string|false

    * It returns a string on success and FALSE on failure. *

    */ function solr_get_version() {} * Options can be: priority, application_id, name, status, recurring. * @param int $max_jobs Maximum jobs to retrieve. Default is -1, getting all jobs available. * @param bool $with_globals_and_output Whether gets the global variables dataand job output. * Default is false. * @return array Jobs that satisfies filter_options. */ public function getJobsInQueue($filter_options = null, $max_jobs = -1, $with_globals_and_output = false) {} /** * Return the number of jobs in the queue according to the options given in the filter_options parameter * @param array $filter_options Array of optional filter options to filter the jobs we want to get from the queue. If not set, all jobs will be counted.
    * Options can be: priority, application_id, host, name, status, recurring. * @return int Number of jobs that satisfy filter_options. */ public function getNumOfJobsInQueue($filter_options = null) {} /** * Return all the hosts that jobs were submitted from. * @return array */ public function getAllhosts() {} /** * Return all the application ids exists in queue. * @return array */ public function getAllApplicationIDs() {} /** * Return finished jobs (either failed or successed) between time range allowing paging. * Jobs are sorted by job id descending. * * @param int $status Filter to jobs by status, 1-success, 0-failed either logical or execution. * @param int $start_time UNIX timestamp. Get only jobs finished after $start_time. * @param int $end_time UNIX timestamp. Get only jobs finished before $end_time. * @param int $index Get jobs starting from the $index-th place. * @param int $count Get only $count jobs. * @param int &$total Pass by reference. Return the total number of jobs statisifed the query criteria. * * @return array of jobs. */ public function getHistoricJobs($status, $start_time, $end_time, $index, $count, &$total) {} /** * Suspends queue operation * @return bool - TRUE if successful FALSE otherwise */ public function suspendQueue() {} /** * Resumes queue operation * @return bool - TRUE if successful FALSE otherwise */ public function resumeQueue() {} /** * Return description of the last error occurred in the queue object. After every * method invoked an error string describing the error is store in the queue object. * @return string */ public function getLastError() {} /** * Sets a new maximum time for keeping historic jobs * @return bool - TRUE if successful FALSE otherwise */ public function setMaxHistoryTime() {} } /** * Describing a job in a queue * In order to add/modify a job in the queue, a Job class must be created/retrieved and than saved in a queue * * For simplicity, a job can be added directly to a queue and without creating an instant of a Queue object */ class ZendAPI_Job { /** * Unique id of the Job in the job queue * * @var int */ public $_id; /** * Full path of the script that this job calls when it's processed * * @var string */ public $_script; /** * The host that the job was submit from * * @var string */ public $_host; /** * A short string describing the job * * @var string */ public $_name; /** * The job output after executing * * @var string */ public $_output; /** * The status of the job * By default, the job status is waiting to being execute. * The status is determent by the queue and can not be modify by the user. * * @var int */ public $_status = JOB_QUEUE_STATUS_WAITING; /** * The application id of the job * If the application id is not set, this job may get an application id automatically from the queue * (if the queue was assigned one). By default it is null (which indicates no application id is assigned) * * @var string */ public $_application_id = null; /** * The priority of the job, options are the priority constants * By default the priority is set to normal (JOB_QUEUE_PRIORITY_NORMAL) * * @var int */ public $_priority = JOB_QUEUE_PRIORITY_NORMAL; /** * Array holding all the variables that the user wants the job's script to have when it's called * The structure is variable_name => variable_value i.e. if the user_variables array is array('my_var' => 8), when the script is called, a global variable called $my_var will have the int value of 8 * By default there are no variables that we want to add to the job's script * * @var array */ public $_user_variables = []; /** * Bit mask holding the global variables that the user want the job's script to have when it's called * Options are prefixed with "JOB_QUEUE_SAVE_" and may be: POST|GET|COOKIE|SESSION|RAW_POST|SERVER|FILES|ENV * By default there are no global variables we want to add to the job's script * i.e. In order to save the current GET and COOKIE global variables, this property should be JOB_QUEUE_SAVE_GET|JOB_QUEUE_SAVE_COOKIE (or the integer 6) In that case (of GET and COOKIE), when the job is added, the current $_GET and $_COOKIE variables should be saved, and when the job's script is called, those global variables should be populated * * @var int */ public $_global_variables = 0; /** * The job may have a dependency (another job that must be performed before this job) * This property hold the id of the job that must be performed. if this variable is an array of integers, it means that there are several jobs that must be performed before this job * By default there are no dependencies * * @var mixed (int|array) */ public $_predecessor = null; /** * The time that this job should be performed, this variables is the UNIX timestamp. * If set to 0, it means that the job should be performed now (or at least as soon as possible) * By default there is no scheduled time, which means we want to perform the job as soon as possible * * @var int */ public $_scheduled_time = 0; /** * The job running frequency in seconds. The job should run every _internal seconds * This property applys only to recurrent job. * By default, its value is 0 e.g. run it only once. * * @var int */ public $_interval = 0; /** * UNIX timestamp that it's the last time this job should occurs. If _interval was set, and _end_time * was not, then this job will run forever. * By default there is no end_time, so recurrent job will run forever. If the job is not recurrent * (occurs only once) then the job will run at most once. If end_time has reached and the job was not * execute yet, it will not run. * * @var int */ public $_end_time = null; /** * A bit that determine whether job can be deleted from history. When set, removeJob will not * delete the job from history. * * @var int */ public $_preserved = 0; /** * Instantiate a Job object, describe all the information and properties of a job * * @param string $script relative path (relative to document root supplied in ini file) of the script this job should call when it's executing * @return Job * * @removed 8.0 */ public function ZendAPI_Job($script) {} /** * Add the job the the specified queue (without instantiating a JobQueue object) * This function should be used for extreme simplicity of the user when adding a single job, when the user want to insert more than one job and/or manipulating other jobs (or job tasks) he should create and use the JobQueue object * Actually what this function do is to create a new JobQueue, login to it (with the given parameters), add this job to it and logout * * @param string $jobqueue_url Full address of the queue we want to connect to * @param string $password For authentication, the queue password * @return int|false The added job id or false on failure */ public function addJobToQueue($jobqueue_url, $password) {} /** * Set a new priority to the job * * @param int $priority Priority options are constants with the "JOB_QUEUE_PRIORITY_" prefix */ public function setJobPriority($priority) {} // All properties SET functions public function setJobName($name) {} public function setScript($script) {} public function setApplicationID($app_id) {} public function setUserVariables($vars) {} public function setGlobalVariables($vars) {} public function setJobDependency($job_id) {} public function setScheduledTime($timestamp) {} public function setRecurrenceData($interval, $end_time = null) {} public function setPreserved($preserved) {} /** * Get the job properties * * @return array The same format of job options array as in the Job constructor */ public function getProperties() {} /** * Get the job output * * @return mixed An HTML representing the job output */ public function getOutput() {} // All properties GET functions public function getID() {} public function getHost() {} public function getScript() {} public function getJobPriority() {} public function getJobName() {} public function getApplicationID() {} public function getUserVariables() {} public function getGlobalVariables() {} public function getJobDependency() {} public function getScheduledTime() {} public function getInterval() {} public function getEndTime() {} public function getPreserved() {} /** * Get the current status of the job * If this job was created and not returned from a queue (using the JobQueue::GetJob() function), * the function will return false * The status is one of the constants with the "JOB_QUEUE_STATUS_" prefix. * E.g. job was performed and failed, job is waiting etc. * * @return int|false */ public function getJobStatus() {} /** * Get how much seconds there are until the next time the job will run. * If the job is not recurrence or it past its end time, then return 0. * * @return int */ public function getTimeToNextRepeat() {} /** * For recurring job get the status of the last execution. For simple job, * getLastPerformedStatus is equivalent to getJobStatus. * jobs that haven't been executed yet will return STATUS_WAITING * @return int */ public function getLastPerformedStatus() {} } /** * Disable/enable the Code Acceleration functionality at run time. * @param bool $status If false, Acceleration is disabled, if true - enabled * @return void */ function accelerator_set_status($status) {} /** * Disables output caching for currently running scripts. * @return void */ function output_cache_disable() {} /** * Does not allow the cache to perform compression on the output of the current page. * This output will not be compressed, even if the global set tings would normally allow * compression on files of this type. * @return void */ function output_cache_disable_compression() {} /** * Gets the code’s return value from the cache if it is there, if not - run function and cache the value. * @param string $key cache key * @param string $function PHP expression * @param int $lifetime data lifetime in cache (seconds) * @return string function's return */ function output_cache_fetch($key, $function, $lifetime) {} /** * If they cache for the key exists, output it, otherwise capture expression output, cache and pass it out. * @param string $key cache key * @param string $function PHP expression * @param int $lifetime data lifetime in cache (seconds) * @return mixed expression output */ function output_cache_output($key, $function, $lifetime) {} /** * Removes all the cache data for the given filename. * @param string $filename full script path on local filesystem * @return bool true if OK, false if something went wrong */ function output_cache_remove($filename) {} /** * Remove cache data for the script with given URL (all dependent data is removed) * @param string $url the local url for the script * @return bool true if OK */ function output_cache_remove_url($url) {} /** * Remove item from PHP API cache by key * @param string $key cache key as given to output_cache_get/output_cache_put * @return bool true if OK */ function output_cache_remove_key($key) {} /** * Puts data in cache according to the assigned key. * @param string $key cache key * @param mixed $data cached data (must not contain objects or resources) * @return bool true if OK */ function output_cache_put($key, $data) {} /** * Gets cached data according to the assigned key. * @param string $key cache key * @param int $lifetime cache validity time (seconds) * @return mixed|false cached data if cache exists, false otherwise */ function output_cache_get($key, $lifetime) {} /** * If data for assigned key exists, this function outputs it and returns a value of true. * If not, it starts capturing the output. To be used in pair with output_cache_stop. * @param string $key cache key * @param int $lifetime cache validity time (seconds) * @return bool true if cached data exists */ function output_cache_exists($key, $lifetime) {} /** * If output was captured by output_cache_exists, this function stops the output capture and stores * the data under the key that was given to output_cache_exists(). * @return void */ function output_cache_stop() {} /** * Should be called from a custom error handler to pass the error to the monitor. * The user function needs to accept two parameters: the error code, and a string describing the error. * Then there are two optional parameters that may be supplied: the filename in which the error occurred * and the line number in which the error occurred. * @param int $errno * @param string $errstr * @param string $errfile * @param int $errline * @return void */ function monitor_pass_error($errno, $errstr, $errfile, $errline) {} /** * Limited in the database to 255 chars * @param string $hint * @return void */ function monitor_set_aggregation_hint($hint) {} /** * Creates a custom event with class $class, text $text and possibly severity and other user data * @param string $class * @param string $text * @param int $severe [optional] * @param mixed $user_data [optional] * @return void */ function monitor_custom_event($class, $text, $severe = null, $user_data = null) {} /** * Create an HTTPERROR event * @param int $error_code the http error code to be associated with this event * @param string $url the URL to be associated with this event * @param int $severe [optional] the severety of the event: 0 - not severe, 1 - severe * @return void */ function monitor_httperror_event($error_code, $url, $severe = null) {} /** * Returns an array containing information about *
  • module loading status (and cause of error if module failed to load) *
  • module license status (and cause of error if license not valid) * @return array */ function monitor_license_info() {} /** * Allow you to register a user function as an event handler.When a monitor event is triggerd * all the user event handler are called and the return value from the handler is saved in * an array keyed by the name the event handler was registered under. The event handlers * results array is saved in the event_extra_data table. * @param string $event_handler_func The callback function that will be call when the event is triggered, object methods may also be invoked statically using t his function by passing array($objectname, $methodname) to the function parameter * @param string $handler_register_name [optional] The name this function is registered under - if none is supplied, the function will be registered under it's own name * @param int $event_type_mask The mask of event types that the handler should be called on by default it's set to MONITOR_EVENT_ALL. * @return bool TRUE on success and FALSE if an error occurs. */ function register_event_handler($event_handler_func, $handler_register_name, $event_type_mask) {} /** * Allow you to unregister an event handler. * @param string $handler_name the name you registered with the handler you now wish to unregister. * @return bool TRUE on success and FALSE if no handler we registered under the given name. */ function unregister_event_handler($handler_name) {} /** * Send a file using ZDS * @param string $filename path to the file * @param string $mime_type [optional] MIME type of the file, if omitted, taken from configured MIME types file * @param string $custom_headers [optional] user defined headers that will be send instead of regular ZDS headers. few basic essential headers will be send anyway * @return void|false FALSE if sending file failed, does not return otherwise */ function zend_send_file($filename, $mime_type, $custom_headers) {} /** * Send a buffer using ZDS * @param string $buffer the content that will be send * @param string $mime_type [optional] MIME type of the buffer, if omitted, taken from configured MIME types file * @param string $custom_headers [optional] user defined headers that will be send instead of regular ZDS headers. few basic essential headers will be send anyway * @return void|false FALSE if sending file failed, does not return otherwise */ function zend_send_buffer($buffer, $mime_type, $custom_headers) {} class java { /** * Create Java object * * @param string $classname * @return java * * @removed 8.0 */ public function java($classname) {} }; class JavaException { /** * Get Java exception that led to this exception * * @return object */ public function getCause() {} }; bar and $foo->bar() would match Bar too. * @return void */ function java_set_ignore_case($ignore) {} /** * Set encoding for strings received by Java from PHP. Default is UTF-8. * @param string $encoding * @return array */ function java_set_encoding($encoding) {} /** * Control if exceptions are thrown on Java exception. Only for PHP5. * @param bool $throw If true, PHP exception is thrown when Java exception happens. If set to false, use java_last_exception_get() to check for exception. * @return void */ function java_throw_exceptions($throw) {} /** * Reload Jar's that were dynamically loaded * * @return array * @param string $new_jarpath */ function java_reload($new_jarpath) {} /** * Add to Java's classpath in runtime * * @return array * @param string $new_classpath */ function java_require($new_classpath) {} /** * Shown if loader is enabled * @return bool */ function zend_loader_enabled() {} /** * Returns true if the current file is a Zend-encoded file. * @return bool */ function zend_loader_file_encoded() {} /** * Returns license (array with fields) if the current file has a valid license and is encoded, otherwise it returns false. * @return array */ function zend_loader_file_licensed() {} /** * Returns the name of the file currently being executed. * @return string */ function zend_loader_current_file() {} /** * Dynamically loads a license for applications encoded with Zend SafeGuard. The Override controls if it will override old licenses for the same product. * @param string $license_file * @param bool $override [optional] * @return bool */ function zend_loader_install_license($license_file, $override) {} /** * Obfuscate and return the given function name with the internal obfuscation function. * @param string $function_name * @return string */ function zend_obfuscate_function_name($function_name) {} /** * Obfuscate and return the given class name with the internal obfuscation function. * @param string $class_name * @return string */ function zend_obfuscate_class_name($class_name) {} /** * Returns the current obfuscation level support (set by zend_optimizer.obfuscation_level_support) * @return int */ function zend_current_obfuscation_level() {} /** * Start runtime-obfuscation support that allows limited mixing of obfuscated and un-obfuscated code. * @return void */ function zend_runtime_obfuscate() {} /** * Returns array of the host ids. If all_ids is true, then all IDs are returned, otehrwise only IDs considered "primary" are returned. * @param bool $all_ids [optional] * @return array */ function zend_get_id($all_ids = false) {} /** * Returns Optimizer version. Alias: zend_loader_version() * @return string */ function zend_optimizer_version() {} // End of Zend Extensions * Send the YAML representation of a value to a file * @link https://php.net/manual/en/function.yaml-emit-file.php * @param string $filename Path to the file. * @param mixed $data The data being encoded. Can be any type except a resource. * @param int $encoding Output character encoding chosen from YAML_ANY_ENCODING, YAML_UTF8_ENCODING, YAML_UTF16LE_ENCODING, YAML_UTF16BE_ENCODING. * @param int $linebreak Output linebreak style chosen from YAML_ANY_BREAK, YAML_CR_BREAK, YAML_LN_BREAK, YAML_CRLN_BREAK. * @param array $callbacks [optional] Content handlers for YAML nodes. Associative array of YAML tag => callable mappings. See parse callbacks for more details. * @return bool Returns TRUE on success. */ function yaml_emit_file($filename, $data, $encoding = YAML_ANY_ENCODING, $linebreak = YAML_ANY_BREAK, array $callbacks = []) {} /** * (PHP 5 >= 5.2.0, PECL yaml >= 0.5.0)
    * @link https://php.net/manual/en/function.yaml-emit.php * @param mixed $data The data being encoded. Can be any type except a resource. * @param int $encoding [optional] Output character encoding chosen from YAML_ANY_ENCODING, YAML_UTF8_ENCODING, YAML_UTF16LE_ENCODING, YAML_UTF16BE_ENCODING. * @param int $linebreak [optional] Output linebreak style chosen from YAML_ANY_BREAK, YAML_CR_BREAK, YAML_LN_BREAK, YAML_CRLN_BREAK. * @param array $callbacks [optional] Content handlers for YAML nodes. Associative array of YAML tag => callable mappings. See parse callbacks for more details. * @return string Returns a YAML encoded string on success. */ function yaml_emit($data, $encoding = YAML_ANY_ENCODING, $linebreak = YAML_ANY_BREAK, array $callbacks = []) {} /** * (PHP 5 >= 5.2.0, PECL yaml >= 0.4.0)
    * Parse a YAML stream from a file * @link https://php.net/manual/en/function.yaml-parse-file.php * @param string $filename Path to the file. * @param int $pos [optional] Document to extract from stream (-1 for all documents, 0 for first document, ...). * @param int &$ndocs [optional] If ndocs is provided, then it is filled with the number of documents found in stream. * @param array $callbacks [optional] Content handlers for YAML nodes. Associative array of YAML tag => callable mappings. See parse callbacks for more details. * @return mixed|false Returns the value encoded in input in appropriate PHP type or FALSE on failure. If pos is -1 an array will be returned with one entry for each document found in the stream. */ function yaml_parse_file($filename, $pos = 0, &$ndocs = null, array $callbacks = []) {} /** * (PHP 5 >= 5.2.0, PECL yaml >= 0.4.0)
    * Parse a Yaml stream from a URL * @link https://php.net/manual/en/function.yaml-parse-url.php * @param string $url url should be of the form "scheme://...". PHP will search for a protocol handler (also known as a wrapper) for that scheme. If no wrappers for that protocol are registered, PHP will emit a notice to help you track potential problems in your script and then continue as though filename specifies a regular file. * @param int $pos [optional] Document to extract from stream (-1 for all documents, 0 for first document, ...). * @param int &$ndocs [optional] If ndocs is provided, then it is filled with the number of documents found in stream. * @param array $callbacks [optional] Content handlers for YAML nodes. Associative array of YAML tag => callable mappings. See parse callbacks for more details. * @return mixed|false Returns the value encoded in input in appropriate PHP type or FALSE on failure. If pos is -1 an array will be returned with one entry for each document found in the stream. */ function yaml_parse_url($url, $pos = 0, &$ndocs = null, array $callbacks = []) {} /** * (PHP 5 >= 5.2.0, PECL yaml >= 0.4.0)
    * Parse a YAML stream * @link https://php.net/manual/en/function.yaml-parse.php * @param string $input The string to parse as a YAML document stream. * @param int $pos [optional] Document to extract from stream (-1 for all documents, 0 for first document, ...). * @param int &$ndocs [optional] If ndocs is provided, then it is filled with the number of documents found in stream. * @param array $callbacks [optional] Content handlers for YAML nodes. Associative array of YAML tag => callable mappings. See parse callbacks for more details. * @return mixed|false Returns the value encoded in input in appropriate PHP type or FALSE on failure. If pos is -1 an array will be returned with one entry for each document found in the stream. */ function yaml_parse($input, $pos = 0, &$ndocs = null, array $callbacks = []) {} */ function request_parse_body(?array $options = null): array {} /** * @since 8.4 */ function fpow(float $num1, float $num2): float {} /** * @since 8.4 */ enum RoundingMode implements \UnitEnum { case HalfAwayFromZero; case HalfTowardsZero; case HalfEven; case HalfOdd; case TowardsZero; case AwayFromZero; case NegativeInfinity; case PositiveInfinity; public static function cases(): array {} } * Halts the execution of the compiler. This can be useful to embed data in PHP scripts, like the installation files. * Byte position of the data start can be determined by the __COMPILER_HALT_OFFSET__ constant * which is defined only if there is a __halt_compiler() presented in the file. *

    Note: __halt_compiler() can only be used from the outermost scope.

    * @link https://php.net/manual/en/function.halt-compiler.php * @return void */ function PS_UNRESERVE_PREFIX___halt_compiler() {} /** * (PHP 5.1)
    * Byte position of the data start, defined only if there is a __halt_compiler() presented in the file. * @link https://php.net/manual/en/function.halt-compiler.php * @return void */ define("__COMPILER_HALT_OFFSET__", 0); /** * Convert hexadecimal string to its binary representation. * * If the hexadecimal input string is of odd length or invalid hexadecimal string an E_WARNING level error is emitted. * * @link https://php.net/manual/en/function.hex2bin.php * @param string $string Hexadecimal string to convert. * @return string|false The binary representation of the given data or FALSE on failure. * @see bin2hex() * @see unpack() * @since 5.4 */ function hex2bin(string $string): string|false {}; /** * Get or Set the HTTP response code * @param int $response_code The optional response_code will set the response code. * @return int|bool The current response code. By default the return value is int(200). */ function http_response_code(int $response_code = 0): int|bool {} * Get the boolean value of a variable * @param mixed $value

    the scalar value being converted to a boolean.

    * @return bool The boolean value of var. * @since 5.5 */ #[Pure] function boolval(mixed $value): bool {} /** * Get the integer value of a variable * @link https://php.net/manual/en/function.intval.php * @param mixed $value

    * The scalar value being converted to an integer *

    * @param int $base [optional]

    * The base for the conversion *

    * @return int The integer value of var on success, or 0 on * failure. Empty arrays and objects return 0, non-empty arrays and * objects return 1. *

    *

    * The maximum value depends on the system. 32 bit systems have a * maximum signed integer range of -2147483648 to 2147483647. So for example * on such a system, intval('1000000000000') will return * 2147483647. The maximum signed integer value for 64 bit systems is * 9223372036854775807. *

    *

    * Strings will most likely return 0 although this depends on the * leftmost characters of the string. The common rules of * integer casting * apply. */ #[Pure] function intval(mixed $value, int $base = 10): int {} /** * Get float value of a variable * @link https://php.net/manual/en/function.floatval.php * @param mixed $value May be any scalar type. should not be used on objects, as doing so will emit an E_NOTICE level error and return 1. * @return float value of the given variable. Empty arrays return 0, non-empty arrays return 1. */ #[Pure] function floatval(mixed $value): float {} /** * (PHP 4.2.0, PHP 5)
    * Alias: * {@see floatval} * Get float value of a variable * @link https://php.net/manual/en/function.doubleval.php * @param mixed $value May be any scalar type. should not be used on objects, as doing so will emit an E_NOTICE level error and return 1. * @return float value of the given variable. Empty arrays return 0, non-empty arrays return 1. */ #[Pure] function doubleval(mixed $value): float {} /** * Get string value of a variable * @link https://php.net/manual/en/function.strval.php * @param mixed $value

    * The variable that is being converted to a string. *

    *

    * $var may be any scalar type or an object that implements the __toString() method. * You cannot use strval() on arrays or objects that do not implement the __toString() method. *

    * @return string The string value of var. */ #[Pure] function strval(mixed $value): string {} /** * Get the type of a variable * @link https://php.net/manual/en/function.gettype.php * @param mixed $value

    * The variable being type checked. *

    * @return string Possibles values for the returned string are: * "boolean" * "integer" * "double" (for historical reasons "double" is * returned in case of a float, and not simply * "float") * "string" * "array" * "object" * "resource" * "NULL" * "unknown type" * "resource (closed)" since 7.2.0 */ #[Pure] #[ExpectedValues([ "boolean", "integer", "double", "string", "array", "object", "resource", "NULL", "unknown type", "resource (closed)" ])] function gettype(mixed $value): string {} /** * Set the type of a variable * @link https://php.net/manual/en/function.settype.php * @param mixed &$var

    * The variable being converted. *

    * @param string $type

    * Possibles values of type are: *

      *
    • * "boolean" (or, since PHP 4.2.0, "bool") *
    • *
    • * "integer" (or, since PHP 4.2.0, "int") *
    • *
    • * "float" (only possible since PHP 4.2.0, for older versions use the * deprecated variant "double") *
    • *
    • * "string" *
    • *
    • * "array" *
    • *
    • * "object" *
    • *
    • * "null" (since PHP 4.2.0) *
    • *
    * @return bool true on success or false on failure. */ function settype(mixed &$var, #[ExpectedValues(["bool", "boolean", "int", "integer", "float", "double", "string", "array", "object", "null"])] string $type): bool {} /** * Finds whether a variable is null. * @link https://php.net/manual/en/function.is-null.php * @param mixed $value

    * The variable being evaluated. *

    * @return bool true if var is null, false * otherwise. */ #[Pure] function is_null(mixed $value): bool {} /** * Finds whether a variable is a resource * @link https://php.net/manual/en/function.is-resource.php * @param mixed $value

    * The variable being evaluated. *

    * @return bool true if var is a resource, * false otherwise. */ #[Pure] function is_resource(mixed $value): bool {} /** * Finds out whether a variable is a boolean * @link https://php.net/manual/en/function.is-bool.php * @param mixed $value

    * The variable being evaluated. *

    * @return bool true if var is a boolean, * false otherwise. */ #[Pure] function is_bool(mixed $value): bool {} /** * Alias: * {@see is_int} * @link https://php.net/manual/en/function.is-long.php * @param mixed $value

    * The variable being evaluated. *

    * @return bool true if var is an integer, * false otherwise. */ #[Pure] function is_long(mixed $value): bool {} /** * Finds whether the type of a variable is float * @link https://php.net/manual/en/function.is-float.php * @param mixed $value

    * The variable being evaluated. *

    * @return bool true if var is a float, * false otherwise. */ #[Pure] function is_float(mixed $value): bool {} /** * Find whether the type of a variable is integer * @link https://php.net/manual/en/function.is-int.php * @param mixed $value

    * The variable being evaluated. *

    * @return bool true if var is an integer, * false otherwise. */ #[Pure] function is_int(mixed $value): bool {} /** * Alias: * {@see is_int} * @link https://php.net/manual/en/function.is-integer.php * @param mixed $value

    * The variable being evaluated. *

    * @return bool true if var is an integer, * false otherwise. */ #[Pure] function is_integer(mixed $value): bool {} /** * Alias: * {@see is_float} * @link https://php.net/manual/en/function.is-double.php * @param mixed $value

    * The variable being evaluated. *

    * @return bool true if var is a float, * false otherwise. */ #[Pure] function is_double(mixed $value): bool {} /** * Alias: * {@see is_float} * @link https://php.net/manual/en/function.is-real.php * @param mixed $var

    * The variable being evaluated. *

    * @return bool true if var is a float, * false otherwise. */ #[Pure] #[Deprecated(since: '7.4')] function is_real(mixed $var): bool {} /** * Finds whether a variable is a number or a numeric string * @link https://php.net/manual/en/function.is-numeric.php * @param mixed $value

    * The variable being evaluated. *

    * @return bool true if var is a number or a numeric * string, false otherwise. */ #[Pure] function is_numeric(mixed $value): bool {} /** * Find whether the type of a variable is string * @link https://php.net/manual/en/function.is-string.php * @param mixed $value

    * The variable being evaluated. *

    * @return bool true if var is of type string, * false otherwise. */ #[Pure] function is_string(mixed $value): bool {} /** * Finds whether a variable is an array * @link https://php.net/manual/en/function.is-array.php * @param mixed $value

    * The variable being evaluated. *

    * @return bool true if var is an array, * false otherwise. */ #[Pure] function is_array(mixed $value): bool {} /** * Finds whether a variable is an object * @link https://php.net/manual/en/function.is-object.php * @param mixed $value

    * The variable being evaluated. *

    * @return bool true if var is an object, false otherwise.
    * Since 7.2.0 returns true for unserialized objects without a class definition (class of __PHP_Incomplete_Class). */ #[Pure] function is_object(mixed $value): bool {} /** * Finds whether a variable is a scalar * @link https://php.net/manual/en/function.is-scalar.php * @param mixed $value

    * The variable being evaluated. *

    * @return bool true if var is a scalar false * otherwise. */ #[Pure] function is_scalar(mixed $value): bool {} /** * Verify that the contents of a variable can be called as a function * @link https://php.net/manual/en/function.is-callable.php * @param callable|mixed $value

    * The value to check *

    * @param bool $syntax_only [optional]

    * If set to TRUE the function only verifies that * name might be a function or method. It will only * reject simple variables that are not strings, or an array that does * not have a valid structure to be used as a callback. The valid ones * are supposed to have only 2 entries, the first of which is an object * or a string, and the second a string. *

    * @param string &$callable_name [optional]

    * Receives the "callable name". In the example below it is * "someClass::someMethod". Note, however, that despite the implication * that someClass::SomeMethod() is a callable static method, this is not * the case. *

    * @return bool TRUE if $var is callable, FALSE * otherwise. */ function is_callable(mixed $value, bool $syntax_only = false, &$callable_name): bool {} /** * Verify that the contents of a variable is a countable value * @link https://secure.php.net/is_countable * * @param mixed $value The value to check * @return bool TRUE if $var is countable, FALSE otherwise. * @since 7.3 */ #[Pure] function is_countable(mixed $value): bool {} /** * Closes process file pointer * @link https://php.net/manual/en/function.pclose.php * @param resource $handle

    * The file pointer must be valid, and must have been returned by a * successful call to popen. *

    * @return int the termination status of the process that was run. In case of an error then -1 is returned. *

    * If PHP has been compiled with --enable-sigchild, the return value of this function is undefined. *

    */ function pclose($handle): int {} /** * Opens process file pointer * @link https://php.net/manual/en/function.popen.php * @param string $command

    * The command *

    * @param string $mode

    * The mode *

    * @return resource|false a file pointer identical to that returned by * fopen, except that it is unidirectional (may * only be used for reading or writing) and must be closed with * pclose. This pointer may be used with * fgets, fgetss, and * fwrite. *

    *

    * If an error occurs, returns false. */ function popen(string $command, string $mode) {} /** * Outputs a file * @link https://php.net/manual/en/function.readfile.php * @param string $filename

    * The filename being read. *

    * @param bool $use_include_path [optional]

    * You can use the optional second parameter and set it to true, if * you want to search for the file in the include_path, too. *

    * @param resource $context [optional]

    * A context stream resource. *

    * @return false|int the number of bytes read from the file, or FALSE on failure */ function readfile(string $filename, bool $use_include_path = false, $context): int|false {} /** * Rewind the position of a file pointer * @link https://php.net/manual/en/function.rewind.php * @param resource $stream

    * The file pointer must be valid, and must point to a file * successfully opened by fopen. *

    * @return bool true on success or false on failure. */ function rewind($stream): bool {} /** * Removes directory * @link https://php.net/manual/en/function.rmdir.php * @param string $directory

    * Path to the directory. *

    * @param resource $context [optional] * @return bool true on success or false on failure. */ function rmdir(string $directory, $context): bool {} /** * Changes the current umask * @link https://php.net/manual/en/function.umask.php * @param int|null $mask [optional]

    * The new umask. *

    * @return int umask without arguments simply returns the * current umask otherwise the old umask is returned. */ function umask(?int $mask): int {} /** * Closes an open file pointer * @link https://php.net/manual/en/function.fclose.php * @param resource $stream

    * The file pointer must be valid, and must point to a file successfully * opened by fopen or fsockopen. *

    * @return bool true on success or false on failure. */ function fclose($stream): bool {} /** * Tests for end-of-file on a file pointer * @link https://php.net/manual/en/function.feof.php * @param resource $stream The file pointer must be valid, and must point to a file successfully opened by fopen() or fsockopen() (and not yet closed by fclose()). * @return bool true if the file pointer is at EOF or an error occurs * (including socket timeout); otherwise returns false. */ #[Pure(true)] function feof($stream): bool {} /** * Gets character from file pointer * @link https://php.net/manual/en/function.fgetc.php * @param resource $stream The file pointer must be valid, and must point to a file successfully opened by fopen() or fsockopen() (and not yet closed by fclose()). * @return string|false a string containing a single character read from the file pointed * to by handle. Returns false on EOF. */ function fgetc($stream): string|false {} /** * Gets line from file pointer * @link https://php.net/manual/en/function.fgets.php * @param resource $stream The file pointer must be valid, and must point to a file successfully opened by fopen() or fsockopen() (and not yet closed by fclose()). * @param int|null $length [optional]

    * Reading ends when length - 1 bytes have been * read, on a newline (which is included in the return value), or on EOF * (whichever comes first). If no length is specified, it will keep * reading from the stream until it reaches the end of the line. *

    *

    * Until PHP 4.3.0, omitting it would assume 1024 as the line length. * If the majority of the lines in the file are all larger than 8KB, * it is more resource efficient for your script to specify the maximum * line length. *

    * @return string|false a string of up to length - 1 bytes read from * the file pointed to by handle. *

    *

    * If an error occurs, returns false. */ function fgets($stream, ?int $length): string|false {} /** * Gets line from file pointer and strip HTML tags * @link https://php.net/manual/en/function.fgetss.php * @param resource $handle The file pointer must be valid, and must point to a file successfully opened by fopen() or fsockopen() (and not yet closed by fclose()). * @param null|int $length [optional]

    * Length of the data to be retrieved. *

    * @param string $allowable_tags [optional]

    * You can use the optional third parameter to specify tags which should * not be stripped. *

    * @return string|false a string of up to length - 1 bytes read from * the file pointed to by handle, with all HTML and PHP * code stripped. *

    *

    * If an error occurs, returns false. * @removed 8.0 */ #[Deprecated(since: '7.3')] function fgetss($handle, ?int $length = null, $allowable_tags = null): false|string {} /** * Binary-safe file read * @link https://php.net/manual/en/function.fread.php * @param resource $stream &fs.file.pointer; * @param int $length

    * Up to length number of bytes read. *

    * @return string|false the read string or false on failure. */ function fread($stream, int $length): string|false {} /** * Opens file or URL * @link https://php.net/manual/en/function.fopen.php * @param string $filename

    * If filename is of the form "scheme://...", it * is assumed to be a URL and PHP will search for a protocol handler * (also known as a wrapper) for that scheme. If no wrappers for that * protocol are registered, PHP will emit a notice to help you track * potential problems in your script and then continue as though * filename specifies a regular file. *

    *

    * If PHP has decided that filename specifies * a local file, then it will try to open a stream on that file. * The file must be accessible to PHP, so you need to ensure that * the file access permissions allow this access. * If you have enabled "safemode", * or open_basedir further * restrictions may apply. *

    *

    * If PHP has decided that filename specifies * a registered protocol, and that protocol is registered as a * network URL, PHP will check to make sure that * allow_url_fopen is * enabled. If it is switched off, PHP will emit a warning and * the fopen call will fail. *

    *

    * The list of supported protocols can be found in . Some protocols (also referred to as * wrappers) support context * and/or "php.ini" options. Refer to the specific page for the * protocol in use for a list of options which can be set. (e.g. * "php.ini" value user_agent used by the * http wrapper). *

    *

    * On the Windows platform, be careful to escape any backslashes * used in the path to the file, or use forward slashes. *

    *
     * 
     * 
    * @param string $mode

    * The mode parameter specifies the type of access * you require to the stream. It may be any of the following: * * A list of possible modes for fopen * using mode * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    modeDescription
    'r' * Open for reading only; place the file pointer at the * beginning of the file. *
    'r+' * Open for reading and writing; place the file pointer at * the beginning of the file. *
    'w' * Open for writing only; place the file pointer at the * beginning of the file and truncate the file to zero length. * If the file does not exist, attempt to create it. *
    'w+' * Open for reading and writing; place the file pointer at * the beginning of the file and truncate the file to zero * length. If the file does not exist, attempt to create it. *
    'a' * Open for writing only; place the file pointer at the end of * the file. If the file does not exist, attempt to create it. *
    'a+' * Open for reading and writing; place the file pointer at * the end of the file. If the file does not exist, attempt to * create it. *
    'x' * Create and open for writing only; place the file pointer at the * beginning of the file. If the file already exists, the * fopen call will fail by returning false and * generating an error of level E_WARNING. If * the file does not exist, attempt to create it. This is equivalent * to specifying O_EXCL|O_CREAT flags for the * underlying open(2) system call. *
    'x+' * Create and open for reading and writing; place the file pointer at * the beginning of the file. If the file already exists, the * fopen call will fail by returning false and * generating an error of level E_WARNING. If * the file does not exist, attempt to create it. This is equivalent * to specifying O_EXCL|O_CREAT flags for the * underlying open(2) system call. *
    *

    *

    * Different operating system families have different line-ending * conventions. When you write a text file and want to insert a line * break, you need to use the correct line-ending character(s) for your * operating system. Unix based systems use \n as the * line ending character, Windows based systems use \r\n * as the line ending characters and Macintosh based systems use * \r as the line ending character. *

    *

    * If you use the wrong line ending characters when writing your files, you * might find that other applications that open those files will "look * funny". *

    *

    * Windows offers a text-mode translation flag ('t') * which will transparently translate \n to * \r\n when working with the file. In contrast, you * can also use 'b' to force binary mode, which will not * translate your data. To use these flags, specify either * 'b' or 't' as the last character * of the mode parameter. *

    *

    * The default translation mode depends on the SAPI and version of PHP that * you are using, so you are encouraged to always specify the appropriate * flag for portability reasons. You should use the 't' * mode if you are working with plain-text files and you use * \n to delimit your line endings in your script, but * expect your files to be readable with applications such as notepad. You * should use the 'b' in all other cases. *

    *

    * If you do not specify the 'b' flag when working with binary files, you * may experience strange problems with your data, including broken image * files and strange problems with \r\n characters. *

    *

    * For portability, it is strongly recommended that you always * use the 'b' flag when opening files with fopen. *

    *

    * Again, for portability, it is also strongly recommended that * you re-write code that uses or relies upon the 't' * mode so that it uses the correct line endings and * 'b' mode instead. *

    * @param bool $use_include_path [optional]

    * The optional third use_include_path parameter * can be set to '1' or true if you want to search for the file in the * include_path, too. *

    * @param resource $context [optional] * @return resource|false a file pointer resource on success, or false on error. */ function fopen(string $filename, string $mode, bool $use_include_path = false, $context) {} /** * Output all remaining data on a file pointer * @link https://php.net/manual/en/function.fpassthru.php * @param resource $stream The file pointer must be valid, and must point to a file successfully opened by fopen() or fsockopen() (and not yet closed by fclose()). * @return int|false If an error occurs, fpassthru returns * false. Otherwise, fpassthru returns * the number of characters read from handle * and passed through to the output. */ #[LanguageLevelTypeAware(["8.0" => "int"], default: "int|false")] function fpassthru($stream) {} /** * Truncates a file to a given length * @link https://php.net/manual/en/function.ftruncate.php * @param resource $stream

    * The file pointer. *

    *

    * The handle must be open for writing. *

    * @param int $size

    * The size to truncate to. *

    *

    * If size is larger than the file it is extended * with null bytes. *

    *

    * If size is smaller than the extra data * will be lost. *

    * @return bool true on success or false on failure. */ function ftruncate($stream, int $size): bool {} /** * Gets information about a file using an open file pointer * @link https://php.net/manual/en/function.fstat.php * @param resource $stream &fs.file.pointer; * @return array|false an array with the statistics of the file; the format of the array * is described in detail on the stat manual page. */ #[Pure(true)] function fstat($stream): array|false {} /** * Seeks on a file pointer * @link https://php.net/manual/en/function.fseek.php * @param resource $stream &fs.file.pointer; * @param int $offset

    * The offset. *

    *

    * To move to a position before the end-of-file, you need to pass * a negative value in offset and * set whence * to SEEK_END. *

    * @param int $whence [optional]

    * whence values are: * SEEK_SET - Set position equal to offset bytes. * SEEK_CUR - Set position to current location plus offset. * SEEK_END - Set position to end-of-file plus offset. *

    *

    * If whence is not specified, it is assumed to be * SEEK_SET. *

    * @return int Upon success, returns 0; otherwise, returns -1. Note that seeking * past EOF is not considered an error. */ function fseek($stream, int $offset, int $whence = SEEK_SET): int {} /** * Returns the current position of the file read/write pointer * @link https://php.net/manual/en/function.ftell.php * @param resource $stream

    * The file pointer must be valid, and must point to a file successfully * opened by fopen or popen. * ftell gives undefined results for append-only streams * (opened with "a" flag). *

    * @return int|false the position of the file pointer referenced by * handle as an integer; i.e., its offset into the file stream. *

    *

    * If an error occurs, returns false. */ #[Pure(true)] function ftell($stream): int|false {} /** * Flushes the output to a file * @link https://php.net/manual/en/function.fflush.php * @param resource $stream The file pointer must be valid, and must point to a file successfully opened by fopen() or fsockopen() (and not yet closed by fclose()). * @return bool true on success or false on failure. */ function fflush($stream): bool {} /** * Sync file to storage. Similar to fflush() but blocks until OS buffers have flushed. * @param resource $stream * @since 8.1 */ function fsync($stream): bool {} /** * Sync file data only to storage. Similar to fsync but does not flush modified metadata. POSIX only, aliased to fsync on Win32. * @param resource $stream * @since 8.1 */ function fdatasync($stream): bool {} /** * Binary-safe file write * @link https://php.net/manual/en/function.fwrite.php * @param resource $stream &fs.file.pointer; * @param string $data

    * The string that is to be written. *

    * @param int|null $length [optional]

    * If the length argument is given, writing will * stop after length bytes have been written or * the end of string is reached, whichever comes * first. *

    *

    * Note that if the length argument is given, * then the magic_quotes_runtime * configuration option will be ignored and no slashes will be * stripped from string. *

    * @return int|false the number of bytes written, or FALSE on error. */ function fwrite($stream, string $data, ?int $length): int|false {} /** * Alias: * {@see fwrite} * @param resource $stream A file system pointer resource that is typically created using fopen(). * @param string $data

    * The string that is to be written. *

    * @param int|null $length [optional]

    * If the length argument is given, writing will * stop after length bytes have been written or * the end of string is reached, whichever comes * first. *

    *

    * Note that if the length argument is given, * then the magic_quotes_runtime * configuration option will be ignored and no slashes will be * stripped from string. *

    * @return int|false the number of bytes written, or FALSE on error. * @see fwrite() * @link https://php.net/manual/en/function.fputs.php * Binary-safe file write */ function fputs($stream, string $data, ?int $length): int|false {} /** * Attempts to create the directory specified by pathname. * @link https://php.net/manual/en/function.mkdir.php * @param string $directory

    * The directory path. *

    * @param int $permissions [optional]

    * The mode is 0777 by default, which means the widest possible * access. For more information on modes, read the details * on the chmod page. *

    *

    * mode is ignored on Windows. *

    *

    * Note that you probably want to specify the mode as an octal number, * which means it should have a leading zero. The mode is also modified * by the current umask, which you can change using * umask(). *

    * @param bool $recursive [optional]

    * Allows the creation of nested directories specified in the pathname. Default to false. *

    * @param resource $context [optional] * @return bool true on success or false on failure. */ function mkdir(string $directory, int $permissions = 0777, bool $recursive = false, $context): bool {} /** * Renames a file or directory * @link https://php.net/manual/en/function.rename.php * @param string $from

    *

    *

    * The old name. The wrapper used in oldname * must match the wrapper used in * newname. *

    * @param string $to

    * The new name. *

    * @param resource $context [optional] * @return bool true on success or false on failure. */ function rename(string $from, string $to, $context): bool {} /** * Copies file * @link https://php.net/manual/en/function.copy.php * @param string $from

    * Path to the source file. *

    * @param string $to

    * The destination path. If dest is a URL, the * copy operation may fail if the wrapper does not support overwriting of * existing files. *

    *

    * If the destination file already exists, it will be overwritten. *

    * @param resource $context [optional]

    * A valid context resource created with * stream_context_create. *

    * @return bool true on success or false on failure. */ function copy(string $from, string $to, $context): bool {} /** * Create file with unique file name * @link https://php.net/manual/en/function.tempnam.php * @param string $directory

    * The directory where the temporary filename will be created. *

    * @param string $prefix

    * The prefix of the generated temporary filename. *

    * Windows use only the first three characters of prefix. * @return string|false the new temporary filename, or false on * failure. */ function tempnam(string $directory, string $prefix): string|false {} /** * Creates a temporary file * @link https://php.net/manual/en/function.tmpfile.php * @return resource|false a file handle, similar to the one returned by * fopen, for the new file or false on failure. */ function tmpfile() {} /** * Reads entire file into an array * @link https://php.net/manual/en/function.file.php * @param string $filename

    * Path to the file. *

    * @param int $flags

    * The optional parameter flags can be one, or * more, of the following constants: *

      *
    • FILE_USE_INCLUDE_PATH - Search for the file in the include_path.
    • *
    • FILE_IGNORE_NEW_LINES - Omit newline at the end of each array element
    • *
    • FILE_SKIP_EMPTY_LINES - Skip empty lines
    • *
    *

    * @param resource $context [optional]

    * A context resource created with the * stream_context_create function. *

    * @return array|false the file in an array. Each element of the array corresponds to a * line in the file, with the newline still attached. Upon failure, * file returns false. *

    * Each line in the resulting array will include the line ending, unless * FILE_IGNORE_NEW_LINES is used, so you still need to * use rtrim if you do not want the line ending * present. *

    */ #[Pure(true)] function file(string $filename, int $flags = 0, $context): array|false {} /** * Reads entire file into a string * @link https://php.net/manual/en/function.file-get-contents.php * @param string $filename

    * Name of the file to read. *

    * @param bool $use_include_path [optional]

    * Note: As of PHP 5 the FILE_USE_INCLUDE_PATH constant can be * used to trigger include path search. *

    * @param resource $context [optional]

    * A valid context resource created with * stream_context_create. If you don't need to use a * custom context, you can skip this parameter by null. *

    * @param int $offset [optional]

    * The offset where the reading starts. *

    * @param int|null $length [optional]

    * Maximum length of data read. The default is to read until end * of file is reached. *

    * @return string|false The function returns the read data or false on failure. */ #[Pure(true)] function file_get_contents(string $filename, bool $use_include_path = false, $context, int $offset = 0, ?int $length): string|false {} /** * Write a string to a file * @link https://php.net/manual/en/function.file-put-contents.php * @param string $filename

    * Path to the file where to write the data. *

    * @param mixed $data

    * The data to write. Can be either a string, an * array or a stream resource. *

    *

    * If data is a stream resource, the * remaining buffer of that stream will be copied to the specified file. * This is similar with using stream_copy_to_stream. *

    *

    * You can also specify the data parameter as a single * dimension array. This is equivalent to * file_put_contents($filename, implode('', $array)). *

    * @param int $flags [optional]

    * The value of flags can be any combination of * the following flags (with some restrictions), joined with the binary OR * (|) operator. *

    *

    * * Available flags * * * * * * * * * * * * * * * * *
    FlagDescription
    * FILE_USE_INCLUDE_PATH * * Search for filename in the include directory. * See include_path for more * information. *
    * FILE_APPEND * * If file filename already exists, append * the data to the file instead of overwriting it. Mutually * exclusive with LOCK_EX since appends are atomic and thus there * is no reason to lock. *
    * LOCK_EX * * Acquire an exclusive lock on the file while proceeding to the * writing. Mutually exclusive with FILE_APPEND. *
    *

    * @param resource $context [optional]

    * A valid context resource created with * stream_context_create. *

    * @return int|false The function returns the number of bytes that were written to the file, or * false on failure. */ function file_put_contents(string $filename, mixed $data, int $flags = 0, $context): int|false {} * PASSWORD_BCRYPT is used to create new password * hashes using the CRYPT_BLOWFISH algorithm. *

    *

    * This will always result in a hash using the "$2y$" crypt format, * which is always 60 characters wide. *

    *

    * Supported Options: *

    *
      *
    • *

      * salt - to manually provide a salt to use when hashing the password. * Note that this will override and prevent a salt from being automatically generated. *

      *

      * If omitted, a random salt will be generated by {@link "https://secure.php.net/manual/en/function.password-hash.php" password_hash()} for * each password hashed. This is the intended mode of operation. *

      *
    • *
    • *

      * cost - which denotes the algorithmic cost that should be used. * Examples of these values can be found on the {@link "https://secure.php.net/manual/en/function.crypt.php crypt()"} page. *

      *

      * If omitted, a default value of 10 will be used. This is a good * baseline cost, but you may want to consider increasing it depending on your hardware. *

      *
    • *
    * @link https://secure.php.net/manual/en/password.constants.php */ use JetBrains\PhpStorm\ArrayShape; use JetBrains\PhpStorm\Internal\LanguageLevelTypeAware; define("PASSWORD_DEFAULT", "2y"); /** *

    * The default cost used for the BCRYPT hashing algorithm. *

    *

    * Values for this constant: *

    *
      *
    • * PHP 5.6.0 - PASSWORD_BCRYPT_DEFAULT_COST *
    • *
    */ define("PASSWORD_BCRYPT_DEFAULT_COST", 10); /** *

    * The default algorithm to use for hashing if no algorithm is provided. * This may change in newer PHP releases when newer, stronger hashing * algorithms are supported. *

    *

    * It is worth noting that over time this constant can (and likely will) * change. Therefore you should be aware that the length of the resulting * hash can change. Therefore, if you use PASSWORD_DEFAULT * you should store the resulting hash in a way that can store more than 60 * characters (255 is the recommended width). *

    *

    * Values for this constant: *

    *
      *
    • * PHP 5.5.0 - PASSWORD_BCRYPT *
    • *
    */ define("PASSWORD_BCRYPT", '2y'); /** * PASSWORD_ARGON2I is used to create new password hashes using the Argon2i algorithm. * * Supported Options: *
      *
    • memory_cost (integer) - Maximum memory (in bytes) that may be used to compute the Argon2 hash. Defaults to PASSWORD_ARGON2_DEFAULT_MEMORY_COST.
    • * *
    • time_cost (integer) - Maximum amount of time it may take to compute the Argon2 hash. Defaults to PASSWORD_ARGON2_DEFAULT_TIME_COST.
    • * *
    • threads (integer) - Number of threads to use for computing the Argon2 hash. Defaults to PASSWORD_ARGON2_DEFAULT_THREADS.
    • *
    * Available as of PHP 7.2.0. * @since 7.2 */ define('PASSWORD_ARGON2I', 'argon2i'); /** * PASSWORD_ARGON2ID is used to create new password hashes using the Argon2id algorithm. * * Supported Options: *
      *
    • memory_cost (integer) - Maximum memory (in bytes) that may be used to compute the Argon2 hash. Defaults to PASSWORD_ARGON2_DEFAULT_MEMORY_COST.
    • * *
    • time_cost (integer) - Maximum amount of time it may take to compute the Argon2 hash. Defaults to PASSWORD_ARGON2_DEFAULT_TIME_COST.
    • * *
    • threads (integer) - Number of threads to use for computing the Argon2 hash. Defaults to PASSWORD_ARGON2_DEFAULT_THREADS.
    • *
    * Available as of PHP 7.3.0. * @since 7.3 */ define('PASSWORD_ARGON2ID', 'argon2id'); /** * Default amount of memory in bytes that Argon2lib will use while trying to compute a hash. * Available as of PHP 7.2.0. * @since 7.2 */ define('PASSWORD_ARGON2_DEFAULT_MEMORY_COST', 65536); /** * Default amount of time that Argon2lib will spend trying to compute a hash. * Available as of PHP 7.2.0. * @since 7.2 */ define('PASSWORD_ARGON2_DEFAULT_TIME_COST', 4); /** * Default number of threads that Argon2lib will use. * Available as of PHP 7.2.0. * @since 7.2 */ define('PASSWORD_ARGON2_DEFAULT_THREADS', 1); /** * @since 7.4 */ define('PASSWORD_ARGON2_PROVIDER', 'standard'); /** * Returns information about the given hash * @link https://secure.php.net/manual/en/function.password-get-info.php * @param string $hash A hash created by password_hash(). * @return array|null Returns an associative array with three elements: *
      *
    • * algo, which will match a * {@link https://secure.php.net/manual/en/password.constants.php password algorithm constant} *
    • *
    • * algoName, which has the human readable name of the algorithm *
    • *
    • * options, which includes the options * provided when calling @link https://secure.php.net/manual/en/function.password-hash.php" password_hash() *
    • *
    * @since 5.5 */ #[ArrayShape(["algo" => "int", "algoName" => "string", "options" => "array"])] #[LanguageLevelTypeAware(['8.0' => 'array'], default: '?array')] function password_get_info(string $hash) {} /** * (PHP 5 >= 5.5.0, PHP 5)
    * * Creates a password hash. * @link https://secure.php.net/manual/en/function.password-hash.php * @param string $password The user's password. * @param string|int|null $algo A password algorithm constant denoting the algorithm to use when hashing the password. * @param array $options [optional]

    An associative array containing options. See the password algorithm constants for documentation on the supported options for each algorithm.

    * If omitted, a random salt will be created and the default cost will be used. * Warning *

    * The salt option has been deprecated as of PHP 7.0.0. It is now * preferred to simply use the salt that is generated by default. *

    * @return string|false|null Returns the hashed password, or FALSE on failure, or null if the algorithm is invalid * @since 5.5 */ #[LanguageLevelTypeAware(["8.0" => "string"], default: "string|false|null")] function password_hash(string $password, string|int|null $algo, array $options = []) {} /** * Checks if the given hash matches the given options. * @link https://secure.php.net/manual/en/function.password-needs-rehash.php * @param string $hash A hash created by password_hash(). * @param string|int|null $algo A password algorithm constant denoting the algorithm to use when hashing the password. * @param array $options [optional]

    An associative array containing options. See the password algorithm constants for documentation on the supported options for each algorithm.

    * @return bool Returns TRUE if the hash should be rehashed to match the given algo and options, or FALSE otherwise. * @since 5.5 */ function password_needs_rehash(string $hash, string|int|null $algo, array $options = []): bool {} /** * Checks if the given hash matches the given options. * @link https://secure.php.net/manual/en/function.password-verify.php * @param string $password The user's password. * @param string $hash A hash created by password_hash(). * @return bool Returns TRUE if the password and hash match, or FALSE otherwise. * @since 5.5 */ function password_verify(string $password, string $hash): bool {} /** * Return a complete list of all registered password hashing algorithms. * @return string[] * @since 7.4 */ function password_algos(): array {} // End of password v. * The streams listed in the read array will be watched to * see if characters become available for reading (more precisely, to see if * a read will not block - in particular, a stream resource is also ready on * end-of-file, in which case an fread will return * a zero length string). *

    * @param array|null &$write

    * The streams listed in the write array will be * watched to see if a write will not block. *

    * @param array|null &$except

    * The streams listed in the except array will be * watched for high priority exceptional ("out-of-band") data arriving. *

    *

    * When stream_select returns, the arrays * read, write and * except are modified to indicate which stream * resource(s) actually changed status. *

    * You do not need to pass every array to * stream_select. You can leave it out and use an * empty array or null instead. Also do not forget that those arrays are * passed by reference and will be modified after * stream_select returns. * @param int|null $seconds

    * The tv_sec and tv_usec * together form the timeout parameter, * tv_sec specifies the number of seconds while * tv_usec the number of microseconds. * The timeout is an upper bound on the amount of time * that stream_select will wait before it returns. * If tv_sec and tv_usec are * both set to 0, stream_select will * not wait for data - instead it will return immediately, indicating the * current status of the streams. *

    *

    * If tv_sec is null stream_select * can block indefinitely, returning only when an event on one of the * watched streams occurs (or if a signal interrupts the system call). *

    *

    * Using a timeout value of 0 allows you to * instantaneously poll the status of the streams, however, it is NOT a * good idea to use a 0 timeout value in a loop as it * will cause your script to consume too much CPU time. *

    *

    * It is much better to specify a timeout value of a few seconds, although * if you need to be checking and running other code concurrently, using a * timeout value of at least 200000 microseconds will * help reduce the CPU usage of your script. *

    *

    * Remember that the timeout value is the maximum time that will elapse; * stream_select will return as soon as the * requested streams are ready for use. *

    * @param int $microseconds [optional]

    * See tv_sec description. *

    * @return int|false On success stream_select returns the number of * stream resources contained in the modified arrays, which may be zero if * the timeout expires before anything interesting happens. On error false * is returned and a warning raised (this can happen if the system call is * interrupted by an incoming signal). */ function stream_select( ?array &$read, ?array &$write, ?array &$except, ?int $seconds, #[LanguageLevelTypeAware(['8.1' => 'int|null'], default: 'int')] $microseconds ): int|false {} /** * Create a stream context * @link https://php.net/manual/en/function.stream-context-create.php * @param null|array $options [optional]

    * Must be an associative array of associative arrays in the format * $arr['wrapper']['option'] = $value. *

    *

    * Default to an empty array. *

    * @param null|array $params [optional]

    * Must be an associative array in the format * $arr['parameter'] = $value. * Refer to context parameters for * a listing of standard stream parameters. *

    * @return resource A stream context resource. */ function stream_context_create(?array $options, ?array $params) {} /** * Set parameters for a stream/wrapper/context * @link https://php.net/manual/en/function.stream-context-set-params.php * @param resource $context

    * The stream or context to apply the parameters too. *

    * @param array $params

    * An array of parameters to set. *

    *

    * params should be an associative array of the structure: * $params['paramname'] = "paramvalue";. *

    * @return bool true on success or false on failure. */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] function stream_context_set_params($context, array $params) {} /** * Retrieves parameters from a context * @link https://php.net/manual/en/function.stream-context-get-params.php * @param resource $context

    * A stream resource or a * context resource *

    * @return array an associate array containing all context options and parameters. */ #[ArrayShape(["notification" => "string", "options" => "array"])] function stream_context_get_params($context): array {} /** * Sets an option for a stream/wrapper/context * @link https://php.net/manual/en/function.stream-context-set-option.php * @param resource $context

    * The stream or context resource to apply the options too. *

    * @param string $wrapper_or_options * @param string $option_name * @param mixed $value * @return bool true on success or false on failure. */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] function stream_context_set_option($context, string $wrapper_or_options, string $option_name, mixed $value) {} /** * Sets an option for a stream/wrapper/context * @link https://php.net/manual/en/function.stream-context-set-option.php * @param resource $stream_or_context The stream or context resource to apply the options too. * @param array $options The options to set for the default context. * @return bool true on success or false on failure. */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] function stream_context_set_option($stream_or_context, array $options) {} /** * @since 8.3 */ #[LanguageLevelTypeAware(['8.4' => 'true'], default: 'bool')] function stream_context_set_options($context, array $options) {} /** * Retrieve options for a stream/wrapper/context * @link https://php.net/manual/en/function.stream-context-get-options.php * @param resource $stream_or_context

    * The stream or context to get options from *

    * @return array an associative array with the options. */ function stream_context_get_options($stream_or_context): array {} /** * Retreive the default stream context * @link https://php.net/manual/en/function.stream-context-get-default.php * @param null|array $options [optional] options must be an associative * array of associative arrays in the format * $arr['wrapper']['option'] = $value. *

    * As of PHP 5.3.0, the stream_context_set_default function * can be used to set the default context. *

    * @return resource A stream context resource. */ function stream_context_get_default(?array $options) {} /** * Set the default stream context * @link https://php.net/manual/en/function.stream-context-set-default.php * @param array $options

    * The options to set for the default context. *

    *

    * options must be an associative * array of associative arrays in the format * $arr['wrapper']['option'] = $value. *

    * @return resource the default stream context. */ function stream_context_set_default(array $options) {} /** * Attach a filter to a stream * @link https://php.net/manual/en/function.stream-filter-prepend.php * @param resource $stream

    * The target stream. *

    * @param string $filter_name

    * The filter name. *

    * @param int $mode

    * By default, stream_filter_prepend will * attach the filter to the read filter chain * if the file was opened for reading (i.e. File Mode: * r, and/or +). The filter * will also be attached to the write filter chain * if the file was opened for writing (i.e. File Mode: * w, a, and/or +). * STREAM_FILTER_READ, * STREAM_FILTER_WRITE, and/or * STREAM_FILTER_ALL can also be passed to the * read_write parameter to override this behavior. * See stream_filter_append for an example of * using this parameter. *

    * @param mixed $params [optional]

    * This filter will be added with the specified params * to the beginning of the list and will therefore be * called first during stream operations. To add a filter to the end of the * list, use stream_filter_append. *

    * @return resource|false a resource which can be used to refer to this filter * instance during a call to stream_filter_remove. */ function stream_filter_prepend($stream, string $filter_name, int $mode = 0, mixed $params) {} /** * Attach a filter to a stream * @link https://php.net/manual/en/function.stream-filter-append.php * @param resource $stream

    * The target stream. *

    * @param string $filter_name

    * The filter name. *

    * @param int $mode

    * By default, stream_filter_append will * attach the filter to the read filter chain * if the file was opened for reading (i.e. File Mode: * r, and/or +). The filter * will also be attached to the write filter chain * if the file was opened for writing (i.e. File Mode: * w, a, and/or +). * STREAM_FILTER_READ, * STREAM_FILTER_WRITE, and/or * STREAM_FILTER_ALL can also be passed to the * read_write parameter to override this behavior. *

    * @param mixed $params [optional]

    * This filter will be added with the specified * params to the end of * the list and will therefore be called last during stream operations. * To add a filter to the beginning of the list, use * stream_filter_prepend. *

    * @return resource|false a resource which can be used to refer to this filter * instance during a call to stream_filter_remove. */ function stream_filter_append($stream, string $filter_name, int $mode = 0, mixed $params) {} /** * Remove a filter from a stream * @link https://php.net/manual/en/function.stream-filter-remove.php * @param resource $stream_filter

    * The stream filter to be removed. *

    * @return bool true on success or false on failure. */ function stream_filter_remove($stream_filter): bool {} /** * Open Internet or Unix domain socket connection * @link https://php.net/manual/en/function.stream-socket-client.php * @param string $address

    * Address to the socket to connect to. *

    * @param int &$error_code [optional]

    * Will be set to the system level error number if connection fails. *

    * @param string &$error_message [optional]

    * Will be set to the system level error message if the connection fails. *

    * @param float|null $timeout [optional]

    * Number of seconds until the connect() system call * should timeout. * This parameter only applies when not making asynchronous * connection attempts. *

    * To set a timeout for reading/writing data over the socket, use the * stream_set_timeout, as the * timeout only applies while making connecting * the socket. *

    *

    * @param int $flags [optional]

    * Bitmask field which may be set to any combination of connection flags. * Currently the select of connection flags is limited to * STREAM_CLIENT_CONNECT (default), * STREAM_CLIENT_ASYNC_CONNECT and * STREAM_CLIENT_PERSISTENT. *

    * @param resource $context [optional]

    * A valid context resource created with stream_context_create. *

    * @return resource|false On success a stream resource is returned which may * be used together with the other file functions (such as * fgets, fgetss, * fwrite, fclose, and * feof), false on failure. */ function stream_socket_client(string $address, &$error_code, &$error_message, ?float $timeout, int $flags = STREAM_CLIENT_CONNECT, $context) {} /** * Create an Internet or Unix domain server socket * @link https://php.net/manual/en/function.stream-socket-server.php * @param string $address

    * The type of socket created is determined by the transport specified * using standard URL formatting: transport://target. *

    *

    * For Internet Domain sockets (AF_INET) such as TCP and UDP, the * target portion of the * remote_socket parameter should consist of a * hostname or IP address followed by a colon and a port number. For * Unix domain sockets, the target portion should * point to the socket file on the filesystem. *

    *

    * Depending on the environment, Unix domain sockets may not be available. * A list of available transports can be retrieved using * stream_get_transports. See * for a list of built-in transports. *

    * @param int &$error_code [optional]

    * If the optional errno and errstr * arguments are present they will be set to indicate the actual system * level error that occurred in the system-level socket(), * bind(), and listen() calls. If * the value returned in errno is * 0 and the function returned false, it is an * indication that the error occurred before the bind() * call. This is most likely due to a problem initializing the socket. * Note that the errno and * errstr arguments will always be passed by reference. *

    * @param string &$error_message [optional]

    * See errno description. *

    * @param int $flags [optional]

    * A bitmask field which may be set to any combination of socket creation * flags. *

    *

    * For UDP sockets, you must use STREAM_SERVER_BIND as * the flags parameter. *

    * @param resource $context [optional]

    *

    * @return resource|false the created stream, or false on error. */ function stream_socket_server(string $address, &$error_code, &$error_message, int $flags = STREAM_SERVER_BIND|STREAM_SERVER_LISTEN, $context) {} /** * Accept a connection on a socket created by {@see stream_socket_server} * @link https://php.net/manual/en/function.stream-socket-accept.php * @param resource $socket * @param float|null $timeout [optional]

    * Override the default socket accept timeout. Time should be given in * seconds. *

    * @param string &$peer_name [optional]

    * Will be set to the name (address) of the client which connected, if * included and available from the selected transport. *

    *

    * Can also be determined later using * stream_socket_get_name. *

    * @return resource|false Returns a stream to the accepted socket connection or FALSE on failure. */ function stream_socket_accept($socket, ?float $timeout, &$peer_name) {} /** * Retrieve the name of the local or remote sockets * @link https://php.net/manual/en/function.stream-socket-get-name.php * @param resource $socket

    * The socket to get the name of. *

    * @param bool $remote

    * If set to true the remote socket name will be returned, if set * to false the local socket name will be returned. *

    * @return string|false The name of the socket or false on error. */ function stream_socket_get_name($socket, bool $remote): string|false {} /** * Receives data from a socket, connected or not * @link https://php.net/manual/en/function.stream-socket-recvfrom.php * @param resource $socket

    * The remote socket. *

    * @param int $length

    * The number of bytes to receive from the socket. *

    * @param int $flags

    * The value of flags can be any combination * of the following: * * Possible values for flags * * * * * * * * *
    STREAM_OOB * Process OOB (out-of-band) data. *
    STREAM_PEEK * Retrieve data from the socket, but do not consume the buffer. * Subsequent calls to fread or * stream_socket_recvfrom will see * the same data. *
    *

    * @param string &$address [optional]

    * If address is provided it will be populated with * the address of the remote socket. *

    * @return string|false the read data, as a string, or false on error */ function stream_socket_recvfrom($socket, int $length, int $flags = 0, &$address): string|false {} /** * Sends a message to a socket, whether it is connected or not * @link https://php.net/manual/en/function.stream-socket-sendto.php * @param resource $socket

    * The socket to send data to. *

    * @param string $data

    * The data to be sent. *

    * @param int $flags

    * The value of flags can be any combination * of the following: * * possible values for flags * * * * *
    STREAM_OOB * Process OOB (out-of-band) data. *
    *

    * @param string $address

    * The address specified when the socket stream was created will be used * unless an alternate address is specified in address. *

    *

    * If specified, it must be in dotted quad (or [ipv6]) format. *

    * @return int|false a result code, as an integer. */ function stream_socket_sendto($socket, string $data, int $flags = 0, string $address = ''): int|false {} /** * Turns encryption on/off on an already connected socket * @link https://php.net/manual/en/function.stream-socket-enable-crypto.php * @param resource $stream

    * The stream resource. *

    * @param bool $enable

    * Enable/disable cryptography on the stream. *

    * @param int|null $crypto_method [optional]

    * Setup encryption on the stream. * Valid methods are:
    * STREAM_CRYPTO_METHOD_SSLv2_CLIENT

    * @param resource $session_stream [optional]

    * Seed the stream with settings from session_stream. *

    * @return bool|int true on success, false if negotiation has failed or * 0 if there isn't enough data and you should try again * (only for non-blocking sockets). */ function stream_socket_enable_crypto($stream, bool $enable, ?int $crypto_method, $session_stream): int|bool {} /** * Shutdown a full-duplex connection * @link https://php.net/manual/en/function.stream-socket-shutdown.php * @param resource $stream

    * An open stream (opened with stream_socket_client, * for example) *

    * @param int $mode

    * One of the following constants: STREAM_SHUT_RD * (disable further receptions), STREAM_SHUT_WR * (disable further transmissions) or * STREAM_SHUT_RDWR (disable further receptions and * transmissions). *

    * @return bool true on success or false on failure. * @since 5.2.1 */ function stream_socket_shutdown($stream, int $mode): bool {} /** * Creates a pair of connected, indistinguishable socket streams * @link https://php.net/manual/en/function.stream-socket-pair.php * @param int $domain

    * The protocol family to be used: STREAM_PF_INET, * STREAM_PF_INET6 or * STREAM_PF_UNIX *

    * @param int $type

    * The type of communication to be used: * STREAM_SOCK_DGRAM, * STREAM_SOCK_RAW, * STREAM_SOCK_RDM, * STREAM_SOCK_SEQPACKET or * STREAM_SOCK_STREAM *

    * @param int $protocol

    * The protocol to be used: STREAM_IPPROTO_ICMP, * STREAM_IPPROTO_IP, * STREAM_IPPROTO_RAW, * STREAM_IPPROTO_TCP or * STREAM_IPPROTO_UDP *

    * @return array|false an array with the two socket resources on success, or * false on failure. */ function stream_socket_pair(int $domain, int $type, int $protocol): array|false {} /** * Copies data from one stream to another * @link https://php.net/manual/en/function.stream-copy-to-stream.php * @param resource $from

    * The source stream *

    * @param resource $to

    * The destination stream *

    * @param int|null $length [optional]

    * Maximum bytes to copy *

    * @param int $offset

    * The offset where to start to copy data *

    * @return int|false the total count of bytes copied, or false on failure. */ function stream_copy_to_stream($from, $to, ?int $length, int $offset = 0): int|false {} /** * Reads remainder of a stream into a string * @link https://php.net/manual/en/function.stream-get-contents.php * @param resource $stream

    * A stream resource (e.g. returned from fopen) *

    * @param int|null $length

    * The maximum bytes to read. Defaults to -1 (read all the remaining * buffer). *

    * @param int $offset [optional]

    * Seek to the specified offset before reading. *

    * @return string|false a string or false on failure. */ function stream_get_contents($stream, ?int $length = null, int $offset = -1): string|false {} /** * Tells whether the stream supports locking. * @link https://php.net/manual/en/function.stream-supports-lock.php * @param resource $stream

    * The stream to check. *

    * @return bool true on success or false on failure. */ function stream_supports_lock($stream): bool {} /** * Gets line from file pointer and parse for CSV fields * @link https://php.net/manual/en/function.fgetcsv.php * @param resource $stream

    * A valid file pointer to a file successfully opened by * fopen, popen, or * fsockopen. *

    * @param int|null $length

    * Must be greater than the longest line (in characters) to be found in * the CSV file (allowing for trailing line-end characters). It became * optional in PHP 5. Omitting this parameter (or setting it to 0 in PHP * 5.0.4 and later) the maximum line length is not limited, which is * slightly slower. *

    * @param string $separator [optional]

    * Set the field delimiter (one character only). *

    * @param string $enclosure [optional]

    * Set the field enclosure character (one character only). *

    * @param string $escape [optional]

    * Set the escape character (one character only). Defaults as a backslash. *

    * @return array|false|null an indexed array containing the fields read. *

    * A blank line in a CSV file will be returned as an array * comprising a single null field, and will not be treated * as an error. *

    *

    * fgetcsv returns null if an invalid * handle is supplied or false on other errors, * including end of file. *

    */ #[LanguageLevelTypeAware(['8.0' => 'array|false'], default: 'array|false|null')] function fgetcsv($stream, ?int $length = null, string $separator = ',', string $enclosure = '"', string $escape = '\\') {} /** * Format line as CSV and write to file pointer * @link https://php.net/manual/en/function.fputcsv.php * @param resource $stream The file pointer must be valid, and must point to a file successfully opened by fopen() or fsockopen() (and not yet closed by fclose()). * @param array $fields

    * An array of values. *

    * @param string $separator [optional]

    * The optional delimiter parameter sets the field * delimiter (one character only). *

    * @param string $enclosure [optional]

    * The optional enclosure parameter sets the field * enclosure (one character only). *

    * @param string $escape [optional]

    * The optional escape_char parameter sets the escape character (one character only). *

    * @return int|false the length of the written string or false on failure. */ function fputcsv( $stream, array $fields, string $separator = ",", string $enclosure = '"', #[PhpStormStubsElementAvailable(from: '7.0')] string $escape = "\\", #[PhpStormStubsElementAvailable('8.1')] string $eol = PHP_EOL ): int|false {} /** * Portable advisory file locking * @link https://php.net/manual/en/function.flock.php * @param resource $stream

    * An open file pointer. *

    * @param int $operation

    * operation is one of the following: * LOCK_SH to acquire a shared lock (reader).

    * @param int &$would_block [optional]

    * The optional third argument is set to 1 if the lock would block * (EWOULDBLOCK errno condition). *

    * @return bool true on success or false on failure. */ function flock($stream, int $operation, &$would_block): bool {} /** * Extracts all meta tag content attributes from a file and returns an array * @link https://php.net/manual/en/function.get-meta-tags.php * @param string $filename

    * The path to the HTML file, as a string. This can be a local file or an * URL. *

    *

    * What get_meta_tags parses *

    *
     * 
     * 
     * 
     * 
     *  
     * 
    *

    * (pay attention to line endings - PHP uses a native function to * parse the input, so a Mac file won't work on Unix). *

    * @param bool $use_include_path [optional]

    * Setting use_include_path to true will result * in PHP trying to open the file along the standard include path as per * the include_path directive. * This is used for local files, not URLs. *

    * @return array|false an array with all the parsed meta tags. *

    * The value of the name property becomes the key, the value of the content * property becomes the value of the returned array, so you can easily use * standard array functions to traverse it or access single values. * Special characters in the value of the name property are substituted with * '_', the rest is converted to lower case. If two meta tags have the same * name, only the last one is returned. *

    */ #[Pure(true)] function get_meta_tags(string $filename, bool $use_include_path = false): array|false {} /** * Sets write file buffering on the given stream * @link https://php.net/manual/en/function.stream-set-write-buffer.php * @param resource $stream

    * The file pointer. *

    * @param int $size

    * The number of bytes to buffer. If buffer * is 0 then write operations are unbuffered. This ensures that all writes * with fwrite are completed before other processes are * allowed to write to that output stream. *

    * @return int 0 on success, or EOF if the request cannot be honored. * @see stream_set_read_buffer() */ function stream_set_write_buffer($stream, int $size): int {} /** * Sets read file buffering on the given stream * @link https://php.net/manual/en/function.stream-set-read-buffer.php * @param resource $stream

    * The file pointer. *

    * @param int $size

    * The number of bytes to buffer. If buffer * is 0 then write operations are unbuffered. This ensures that all writes * with fwrite are completed before other processes are * allowed to write to that output stream. *

    * @return int 0 on success, or EOF if the request cannot be honored. * @see stream_set_write_buffer() */ function stream_set_read_buffer($stream, int $size): int {} /** * Alias: * {@see stream_set_write_buffer} *

    Sets the buffering for write operations on the given stream to buffer bytes. * Output using fwrite() is normally buffered at 8K. * This means that if there are two processes wanting to write to the same output stream (a file), * each is paused after 8K of data to allow the other to write. *

    * @link https://php.net/manual/en/function.set-file-buffer.php * @param resource $stream The file pointer. * @param int $size The number of bytes to buffer. If buffer is 0 then write operations are unbuffered. * This ensures that all writes with fwrite() are completed before other processes are allowed to write to that output stream. * @return int */ function set_file_buffer($stream, int $size): int {} /** * Alias: * {@see stream_set_blocking} *

    Sets blocking or non-blocking mode on a stream. * This function works for any stream that supports non-blocking mode (currently, regular files and socket streams) *

    * @link https://php.net/manual/en/function.set-socket-blocking.php * @param resource $socket * @param bool $mode If mode is FALSE, the given stream will be switched to non-blocking mode, and if TRUE, it will be switched to blocking mode. * This affects calls like fgets() and fread() that read from the stream. * In non-blocking mode an fgets() call will always return right away while in blocking mode it will wait for data to become available on the stream. * @return bool Returns TRUE on success or FALSE on failure. * @removed 7.0 * @see stream_set_blocking() */ #[Deprecated(replacement: "stream_set_blocking(%parametersList%)", since: 5.3)] function set_socket_blocking($socket, bool $mode): bool {} /** * Set blocking/non-blocking mode on a stream * @link https://php.net/manual/en/function.stream-set-blocking.php * @param resource $stream

    * The stream. *

    * @param bool $enable

    * If mode is FALSE, the given stream * will be switched to non-blocking mode, and if TRUE, it * will be switched to blocking mode. This affects calls like * fgets and fread * that read from the stream. In non-blocking mode an * fgets call will always return right away * while in blocking mode it will wait for data to become available * on the stream. *

    * @return bool true on success or false on failure. */ function stream_set_blocking($stream, bool $enable): bool {} /** * Alias: * {@see stream_set_blocking} * @link https://php.net/manual/en/function.socket-set-blocking.php * @param resource $stream

    * The stream. *

    * @param bool $enable

    * If mode is FALSE, the given stream * will be switched to non-blocking mode, and if TRUE, it * will be switched to blocking mode. This affects calls like * fgets and fread * that read from the stream. In non-blocking mode an * fgets call will always return right away * while in blocking mode it will wait for data to become available * on the stream. *

    * @return bool true on success or false on failure. */ function socket_set_blocking($stream, bool $enable): bool {} /** * Retrieves header/meta data from streams/file pointers * @link https://php.net/manual/en/function.stream-get-meta-data.php * @param resource $stream

    * The stream can be any stream created by fopen, * fsockopen and pfsockopen. *

    * @return array The result array contains the following items: *

    * timed_out (bool) - true if the stream * timed out while waiting for data on the last call to * fread or fgets. *

    *

    * blocked (bool) - true if the stream is * in blocking IO mode. See stream_set_blocking. *

    *

    * eof (bool) - true if the stream has reached * end-of-file. Note that for socket streams this member can be true * even when unread_bytes is non-zero. To * determine if there is more data to be read, use * feof instead of reading this item. *

    *

    * unread_bytes (int) - the number of bytes * currently contained in the PHP's own internal buffer. *

    * You shouldn't use this value in a script. *

    * stream_type (string) - a label describing * the underlying implementation of the stream. *

    *

    * wrapper_type (string) - a label describing * the protocol wrapper implementation layered over the stream. * See for more information about wrappers. *

    *

    * wrapper_data (mixed) - wrapper specific * data attached to this stream. See for * more information about wrappers and their wrapper data. *

    *

    * filters (array) - and array containing * the names of any filters that have been stacked onto this stream. * Documentation on filters can be found in the * Filters appendix. *

    *

    * mode (string) - the type of access required for * this stream (see Table 1 of the fopen() reference) *

    *

    * seekable (bool) - whether the current stream can * be seeked. *

    *

    * uri (string) - the URI/filename associated with this * stream. *

    */ #[ArrayShape(["timed_out" => "bool", "blocked" => "bool", "eof" => "bool", "unread_bytes" => "int", "stream_type" => "string", "wrapper_type" => "string", "wrapper_data" => "mixed", "mode" => "string", "seekable" => "bool", "uri" => "string", "crypto" => "array", "mediatype" => "string"])] function stream_get_meta_data($stream): array {} /** * Gets line from stream resource up to a given delimiter * @link https://php.net/manual/en/function.stream-get-line.php * @param resource $stream

    * A valid file handle. *

    * @param int $length

    * The number of bytes to read from the handle. *

    * @param string $ending

    * An optional string delimiter. *

    * @return string|false a string of up to length bytes read from the file * pointed to by handle. *

    * If an error occurs, returns false. *

    */ function stream_get_line($stream, int $length, string $ending = ''): string|false {} /** * Register a URL wrapper implemented as a PHP class * @link https://php.net/manual/en/function.stream-wrapper-register.php * @param string $protocol

    * The wrapper name to be registered. *

    * @param string $class

    * The classname which implements the protocol. *

    * @param int $flags

    * Should be set to STREAM_IS_URL if * protocol is a URL protocol. Default is 0, local * stream. *

    * @return bool true on success or false on failure. *

    * stream_wrapper_register will return false if the * protocol already has a handler. *

    */ function stream_wrapper_register(string $protocol, string $class, int $flags = 0): bool {} /** * Alias: * {@see stream_wrapper_register} *

    Register a URL wrapper implemented as a PHP class

    * @link https://php.net/manual/en/function.stream-register-wrapper.php * @param string $protocol

    * The wrapper name to be registered. *

    * @param string $class

    * The classname which implements the protocol. *

    * @param int $flags [optional]

    * Should be set to STREAM_IS_URL if * protocol is a URL protocol. Default is 0, local * stream. *

    * @return bool true on success or false on failure. *

    * stream_wrapper_register will return false if the * protocol already has a handler. *

    */ function stream_register_wrapper(string $protocol, string $class, int $flags = 0): bool {} /** * Resolve filename against the include path according to the same rules as fopen()/include(). * @link https://php.net/manual/en/function.stream-resolve-include-path.php * @param string $filename The filename to resolve. * @return string|false containing the resolved absolute filename, or FALSE on failure. * @since 5.3.2 */ function stream_resolve_include_path(string $filename): string|false {} /** * Unregister a URL wrapper * @link https://php.net/manual/en/function.stream-wrapper-unregister.php * @param string $protocol

    *

    * @return bool true on success or false on failure. */ function stream_wrapper_unregister(string $protocol): bool {} /** * Restores a previously unregistered built-in wrapper * @link https://php.net/manual/en/function.stream-wrapper-restore.php * @param string $protocol

    *

    * @return bool true on success or false on failure. */ function stream_wrapper_restore(string $protocol): bool {} /** * Retrieve list of registered streams * @link https://php.net/manual/en/function.stream-get-wrappers.php * @return list an indexed array containing the name of all stream wrappers * available on the running system. */ #[Pure(true)] function stream_get_wrappers(): array {} /** * Retrieve list of registered socket transports * @link https://php.net/manual/en/function.stream-get-transports.php * @return list an indexed array of socket transports names. */ #[Pure(true)] function stream_get_transports(): array {} /** * Checks if a stream is a local stream * @link https://php.net/manual/en/function.stream-is-local.php * @param mixed $stream

    * The stream resource or URL to check. *

    * @return bool true on success or false on failure. * @since 5.2.4 */ #[Pure] function stream_is_local($stream): bool {} /** * Fetches all the headers sent by the server in response to an HTTP request * @link https://php.net/manual/en/function.get-headers.php * @param string $url

    * The target URL. *

    * @param bool $associative [optional]

    * If the optional format parameter is set to true, * get_headers parses the response and sets the * array's keys. *

    * @param resource $context [optional] * @return array|false an indexed or associative array with the headers, or false on * failure. */ #[Pure(true)] function get_headers( string $url, #[LanguageLevelTypeAware(['8.0' => 'bool'], default: 'int')] $associative = false, #[PhpStormStubsElementAvailable(from: '7.1')] $context = null ): array|false {} /** * Set timeout period on a stream * @link https://php.net/manual/en/function.stream-set-timeout.php * @param resource $stream

    * The target stream. *

    * @param int $seconds

    * The seconds part of the timeout to be set. *

    * @param int $microseconds

    * The microseconds part of the timeout to be set. *

    * @return bool true on success or false on failure. */ function stream_set_timeout( $stream, int $seconds, #[PhpStormStubsElementAvailable(from: '5.3', to: '5.6')] int $microseconds, #[PhpStormStubsElementAvailable(from: '7.0')] int $microseconds = 0 ): bool {} /** * Alias: * {@see stream_set_timeout} * Set timeout period on a stream * @link https://php.net/manual/en/function.socket-set-timeout.php * @param resource $stream

    * The target stream. *

    * @param int $seconds

    * The seconds part of the timeout to be set. *

    * @param int $microseconds

    * The microseconds part of the timeout to be set. *

    * @return bool true on success or false on failure. */ function socket_set_timeout( $stream, int $seconds, #[PhpStormStubsElementAvailable(from: '5.3', to: '5.6')] int $microseconds, #[PhpStormStubsElementAvailable(from: '7.0')] int $microseconds = 0 ): bool {} /** * Alias: * {@see stream_get_meta_data} * Retrieves header/meta data from streams/file pointers * @link https://php.net/manual/en/function.socket-get-status.php * @param resource $stream

    * The stream can be any stream created by fopen, * fsockopen and pfsockopen. *

    * @return array The result array contains the following items: *

    * timed_out (bool) - true if the stream * timed out while waiting for data on the last call to * fread or fgets. *

    *

    * blocked (bool) - true if the stream is * in blocking IO mode. See stream_set_blocking. *

    *

    * eof (bool) - true if the stream has reached * end-of-file. Note that for socket streams this member can be true * even when unread_bytes is non-zero. To * determine if there is more data to be read, use * feof instead of reading this item. *

    *

    * unread_bytes (int) - the number of bytes * currently contained in the PHP's own internal buffer. *

    * You shouldn't use this value in a script. *

    * stream_type (string) - a label describing * the underlying implementation of the stream. *

    *

    * wrapper_type (string) - a label describing * the protocol wrapper implementation layered over the stream. * See for more information about wrappers. *

    *

    * wrapper_data (mixed) - wrapper specific * data attached to this stream. See for * more information about wrappers and their wrapper data. *

    *

    * filters (array) - and array containing * the names of any filters that have been stacked onto this stream. * Documentation on filters can be found in the * Filters appendix. *

    *

    * mode (string) - the type of access required for * this stream (see Table 1 of the fopen() reference) *

    *

    * seekable (bool) - whether the current stream can * be seeked. *

    *

    * uri (string) - the URI/filename associated with this * stream. *

    */ function socket_get_status($stream): array {} /** * Returns canonicalized absolute pathname * @link https://php.net/manual/en/function.realpath.php * @param string $path

    * The path being checked. *

    * @return string|false the canonicalized absolute pathname on success. The resulting path * will have no symbolic link, '/./' or '/../' components. *

    * realpath returns false on failure, e.g. if * the file does not exist. *

    */ #[Pure(true)] function realpath(string $path): string|false {} /** * Match filename against a pattern * @link https://php.net/manual/en/function.fnmatch.php * @param string $pattern

    * The shell wildcard pattern. *

    * @param string $filename

    * The tested string. This function is especially useful for filenames, * but may also be used on regular strings. *

    *

    * The average user may be used to shell patterns or at least in their * simplest form to '?' and '*' * wildcards so using fnmatch instead of * preg_match for * frontend search expression input may be way more convenient for * non-programming users. *

    * @param int $flags

    * The value of flags can be any combination of * the following flags, joined with the * binary OR (|) operator. * * A list of possible flags for fnmatch * * * * * * * * * * * * * * * * * * * * *
    FlagDescription
    FNM_NOESCAPE * Disable backslash escaping. *
    FNM_PATHNAME * Slash in string only matches slash in the given pattern. *
    FNM_PERIOD * Leading period in string must be exactly matched by period in the given pattern. *
    FNM_CASEFOLD * Caseless match. Part of the GNU extension. *
    *

    * @return bool true if there is a match, false otherwise. */ #[Pure(true)] function fnmatch(string $pattern, string $filename, int $flags = 0): bool {} e
    constant */ define('M_E', 2.718281828459); /** * {@link log}2e constant */ define('M_LOG2E', 1.442695040889); /** * {@link log}10e constant */ define('M_LOG10E', 0.43429448190325); /** * {@link log}e2 constant */ define('M_LN2', 0.69314718055995); /** * {@link log}e10 constant */ define('M_LN10', 2.302585092994); /** * π constant */ define('M_PI', 3.1415926535898); /** * π/2 constant */ define('M_PI_2', 1.5707963267949); /** * π/4 constant */ define('M_PI_4', 0.78539816339745); /** * 1/π constant */ define('M_1_PI', 0.31830988618379); /** * 2/π constant */ define('M_2_PI', 0.63661977236758); /** * {@link sqrt}(π) constant */ define('M_SQRTPI', 1.7724538509055); /** * 2/{@link sqrt}(π) constant */ define('M_2_SQRTPI', 1.1283791670955); /** * {@link log}eπ constant */ define('M_LNPI', 1.1447298858494); /** * Euler constant */ define('M_EULER', 0.57721566490153); /** * {@link sqrt}(2) constant */ define('M_SQRT2', 1.4142135623731); /** * 1/{@link sqrt}(2) constant */ define('M_SQRT1_2', 0.70710678118655); /** * {@link sqrt}(3) constant */ define('M_SQRT3', 1.7320508075689); /** * The infinite */ define('INF', (float)INF); /** * Not A Number */ define('NAN', (float)NAN); /** * Round halves up * @link https://php.net/manual/en/math.constants.php */ define('PHP_ROUND_HALF_UP', 1); /** * Round halves down * @link https://php.net/manual/en/math.constants.php */ define('PHP_ROUND_HALF_DOWN', 2); /** * Round halves to even numbers * @link https://php.net/manual/en/math.constants.php */ define('PHP_ROUND_HALF_EVEN', 3); /** * Round halves to odd numbers * @link https://php.net/manual/en/math.constants.php */ define('PHP_ROUND_HALF_ODD', 4); define('INFO_GENERAL', 1); /** * PHP Credits. See also phpcredits. * @link https://php.net/manual/en/info.constants.php */ define('INFO_CREDITS', 2); /** * Current Local and Main values for PHP directives. See * also ini_get. * @link https://php.net/manual/en/info.constants.php */ define('INFO_CONFIGURATION', 4); /** * Loaded modules and their respective settings. * @link https://php.net/manual/en/info.constants.php */ define('INFO_MODULES', 8); /** * Environment Variable information that's also available in * $_ENV. * @link https://php.net/manual/en/info.constants.php */ define('INFO_ENVIRONMENT', 16); /** * Shows all * predefined variables from EGPCS (Environment, GET, * POST, Cookie, Server). * @link https://php.net/manual/en/info.constants.php */ define('INFO_VARIABLES', 32); /** * PHP License information. See also the license faq. * @link https://php.net/manual/en/info.constants.php */ define('INFO_LICENSE', 64); define('INFO_ALL', 4294967295); /** * A list of the core developers * @link https://php.net/manual/en/info.constants.php */ define('CREDITS_GROUP', 1); /** * General credits: Language design and concept, PHP * authors and SAPI module. * @link https://php.net/manual/en/info.constants.php */ define('CREDITS_GENERAL', 2); /** * A list of the server API modules for PHP, and their authors. * @link https://php.net/manual/en/info.constants.php */ define('CREDITS_SAPI', 4); /** * A list of the extension modules for PHP, and their authors. * @link https://php.net/manual/en/info.constants.php */ define('CREDITS_MODULES', 8); /** * The credits for the documentation team. * @link https://php.net/manual/en/info.constants.php */ define('CREDITS_DOCS', 16); /** * Usually used in combination with the other flags. Indicates * that a complete stand-alone HTML page needs to be * printed including the information indicated by the other * flags. * @link https://php.net/manual/en/info.constants.php */ define('CREDITS_FULLPAGE', 32); /** * The credits for the quality assurance team. * @link https://php.net/manual/en/info.constants.php */ define('CREDITS_QA', 64); /** * The configuration line, "php.ini" location, build date, Web * Server, System and more. * @link https://php.net/manual/en/info.constants.php */ define('CREDITS_ALL', 4294967295); define('HTML_SPECIALCHARS', 0); define('HTML_ENTITIES', 1); /** * Will convert double-quotes and leave single-quotes alone. * @link https://php.net/manual/en/function.htmlspecialchars.php */ define('ENT_COMPAT', 2); /** * Will convert both double and single quotes. * @link https://php.net/manual/en/function.htmlspecialchars.php */ define('ENT_QUOTES', 3); /** * Will leave both double and single quotes unconverted. * @link https://php.net/manual/en/function.htmlspecialchars.php */ define('ENT_NOQUOTES', 0); /** * Silently discard invalid code unit sequences instead of returning an empty string. * Using this flag is discouraged as it may have security implications. * @link https://php.net/manual/en/function.htmlspecialchars.php */ define('ENT_IGNORE', 4); define('STR_PAD_LEFT', 0); define('STR_PAD_RIGHT', 1); define('STR_PAD_BOTH', 2); define('PATHINFO_DIRNAME', 1); define('PATHINFO_BASENAME', 2); define('PATHINFO_EXTENSION', 4); /** * @link https://php.net/manual/en/filesystem.constants.php */ define('PATHINFO_FILENAME', 8); define('PATHINFO_ALL', 15); define('CHAR_MAX', 127); define('LC_CTYPE', 0); define('LC_NUMERIC', 1); define('LC_TIME', 2); define('LC_COLLATE', 3); define('LC_MONETARY', 4); define('LC_ALL', 6); define('LC_MESSAGES', 5); define('SEEK_SET', 0); define('SEEK_CUR', 1); define('SEEK_END', 2); /** * Acquire a shared lock (reader). * @link https://www.php.net/manual/en/function.flock.php */ define('LOCK_SH', 1); /** * Acquire an exclusive lock (writer). * @link https://www.php.net/manual/en/function.flock.php */ define('LOCK_EX', 2); /** * Release lock (shared or exclusive). * @link https://www.php.net/manual/en/function.flock.php */ define('LOCK_UN', 3); /** * Non-blocking operation while locking. * @link https://www.php.net/manual/en/function.flock.php */ define('LOCK_NB', 4); /** * A connection with an external resource has been established. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_NOTIFY_CONNECT', 2); /** * Additional authorization is required to access the specified resource. * Typical issued with severity level of * STREAM_NOTIFY_SEVERITY_ERR. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_NOTIFY_AUTH_REQUIRED', 3); /** * Authorization has been completed (with or without success). * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_NOTIFY_AUTH_RESULT', 10); /** * The mime-type of resource has been identified, * refer to message for a description of the * discovered type. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_NOTIFY_MIME_TYPE_IS', 4); /** * The size of the resource has been discovered. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_NOTIFY_FILE_SIZE_IS', 5); /** * The external resource has redirected the stream to an alternate * location. Refer to message. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_NOTIFY_REDIRECTED', 6); /** * Indicates current progress of the stream transfer in * bytes_transferred and possibly * bytes_max as well. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_NOTIFY_PROGRESS', 7); /** * A generic error occurred on the stream, consult * message and message_code * for details. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_NOTIFY_FAILURE', 9); /** * There is no more data available on the stream. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_NOTIFY_COMPLETED', 8); /** * A remote address required for this stream has been resolved, or the resolution * failed. See severity for an indication of which happened. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_NOTIFY_RESOLVE', 1); /** * Normal, non-error related, notification. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_NOTIFY_SEVERITY_INFO', 0); /** * Non critical error condition. Processing may continue. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_NOTIFY_SEVERITY_WARN', 1); /** * A critical error occurred. Processing cannot continue. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_NOTIFY_SEVERITY_ERR', 2); /** * Used with stream_filter_append and * stream_filter_prepend to indicate * that the specified filter should only be applied when * reading * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_FILTER_READ', 1); /** * Used with stream_filter_append and * stream_filter_prepend to indicate * that the specified filter should only be applied when * writing * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_FILTER_WRITE', 2); /** * This constant is equivalent to * STREAM_FILTER_READ | STREAM_FILTER_WRITE * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_FILTER_ALL', 3); /** * Client socket opened with stream_socket_client * should remain persistent between page loads. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_CLIENT_PERSISTENT', 1); /** * Open client socket asynchronously. This option must be used * together with the STREAM_CLIENT_CONNECT flag. * Used with stream_socket_client. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_CLIENT_ASYNC_CONNECT', 2); /** * Open client socket connection. Client sockets should always * include this flag. Used with stream_socket_client. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_CLIENT_CONNECT', 4); /** * Used with stream_socket_shutdown to disable * further receptions. * @since 5.2.1 * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_SHUT_RD', 0); /** * Used with stream_socket_shutdown to disable * further transmissions. * @since 5.2.1 * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_SHUT_WR', 1); /** * Used with stream_socket_shutdown to disable * further receptions and transmissions. * @since 5.2.1 * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_SHUT_RDWR', 2); /** * Internet Protocol Version 4 (IPv4). * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_PF_INET', 2); /** * Internet Protocol Version 6 (IPv6). * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_PF_INET6', 10); /** * Unix system internal protocols. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_PF_UNIX', 1); /** * Provides a IP socket. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_IPPROTO_IP', 0); /** * Provides a TCP socket. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_IPPROTO_TCP', 6); /** * Provides a UDP socket. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_IPPROTO_UDP', 17); /** * Provides a ICMP socket. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_IPPROTO_ICMP', 1); /** * Provides a RAW socket. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_IPPROTO_RAW', 255); /** * Provides sequenced, two-way byte streams with a transmission mechanism * for out-of-band data (TCP, for example). * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_SOCK_STREAM', 1); /** * Provides datagrams, which are connectionless messages (UDP, for * example). * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_SOCK_DGRAM', 2); /** * Provides a raw socket, which provides access to internal network * protocols and interfaces. Usually this type of socket is just available * to the root user. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_SOCK_RAW', 3); /** * Provides a sequenced packet stream socket. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_SOCK_SEQPACKET', 5); /** * Provides a RDM (Reliably-delivered messages) socket. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_SOCK_RDM', 4); define('STREAM_PEEK', 2); define('STREAM_OOB', 1); /** * Tells a stream created with stream_socket_server * to bind to the specified target. Server sockets should always include this flag. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_SERVER_BIND', 4); /** * Tells a stream created with stream_socket_server * and bound using the STREAM_SERVER_BIND flag to start * listening on the socket. Connection-orientated transports (such as TCP) * must use this flag, otherwise the server socket will not be enabled. * Using this flag for connect-less transports (such as UDP) is an error. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_SERVER_LISTEN', 8); /** * Search for filename in include_path * @link https://php.net/manual/en/filesystem.constants.php */ define('FILE_USE_INCLUDE_PATH', 1); /** * Strip EOL characters * @link https://php.net/manual/en/filesystem.constants.php */ define('FILE_IGNORE_NEW_LINES', 2); /** * Skip empty lines * @link https://php.net/manual/en/filesystem.constants.php */ define('FILE_SKIP_EMPTY_LINES', 4); /** * Append content to existing file. * @link https://php.net/manual/en/filesystem.constants.php */ define('FILE_APPEND', 8); define('FILE_NO_DEFAULT_CONTEXT', 16); /** *

    * This constant has no effect prior to PHP 6. It is only available for * forward compatibility. *

    * @since 5.2.7 * @link https://php.net/manual/en/filesystem.constants.php * @deprecated 8.1 */ define('FILE_TEXT', 0); /** *

    * This constant has no effect prior to PHP 6. It is only available for * forward compatibility. *

    * @since 5.2.7 * @link https://php.net/manual/en/filesystem.constants.php * @deprecated 8.1 */ define('FILE_BINARY', 0); /** * Disable backslash escaping. * @link https://php.net/manual/en/filesystem.constants.php */ define('FNM_NOESCAPE', 2); /** * Slash in string only matches slash in the given pattern. * @link https://php.net/manual/en/filesystem.constants.php */ define('FNM_PATHNAME', 1); /** * Leading period in string must be exactly matched by period in the given pattern. * @link https://php.net/manual/en/filesystem.constants.php */ define('FNM_PERIOD', 4); /** * Caseless match. Part of the GNU extension. * @link https://php.net/manual/en/filesystem.constants.php */ define('FNM_CASEFOLD', 16); /** * Return Code indicating that the * userspace filter returned buckets in $out. * @link https://php.net/manual/en/stream.constants.php */ define('PSFS_PASS_ON', 2); /** * Return Code indicating that the * userspace filter did not return buckets in $out * (i.e. No data available). * @link https://php.net/manual/en/stream.constants.php */ define('PSFS_FEED_ME', 1); /** * Return Code indicating that the * userspace filter encountered an unrecoverable error * (i.e. Invalid data received). * @link https://php.net/manual/en/stream.constants.php */ define('PSFS_ERR_FATAL', 0); /** * Regular read/write. * @link https://php.net/manual/en/stream.constants.php */ define('PSFS_FLAG_NORMAL', 0); /** * An incremental flush. * @link https://php.net/manual/en/stream.constants.php */ define('PSFS_FLAG_FLUSH_INC', 1); /** * Final flush prior to closing. * @link https://php.net/manual/en/stream.constants.php */ define('PSFS_FLAG_FLUSH_CLOSE', 2); define('ABDAY_1', 131072); define('ABDAY_2', 131073); define('ABDAY_3', 131074); define('ABDAY_4', 131075); define('ABDAY_5', 131076); define('ABDAY_6', 131077); define('ABDAY_7', 131078); define('DAY_1', 131079); define('DAY_2', 131080); define('DAY_3', 131081); define('DAY_4', 131082); define('DAY_5', 131083); define('DAY_6', 131084); define('DAY_7', 131085); define('ABMON_1', 131086); define('ABMON_2', 131087); define('ABMON_3', 131088); define('ABMON_4', 131089); define('ABMON_5', 131090); define('ABMON_6', 131091); define('ABMON_7', 131092); define('ABMON_8', 131093); define('ABMON_9', 131094); define('ABMON_10', 131095); define('ABMON_11', 131096); define('ABMON_12', 131097); define('MON_1', 131098); define('MON_2', 131099); define('MON_3', 131100); define('MON_4', 131101); define('MON_5', 131102); define('MON_6', 131103); define('MON_7', 131104); define('MON_8', 131105); define('MON_9', 131106); define('MON_10', 131107); define('MON_11', 131108); define('MON_12', 131109); define('AM_STR', 131110); define('PM_STR', 131111); define('D_T_FMT', 131112); define('D_FMT', 131113); define('T_FMT', 131114); define('T_FMT_AMPM', 131115); define('ERA', 131116); define('ERA_D_T_FMT', 131120); define('ERA_D_FMT', 131118); define('ERA_T_FMT', 131121); define('ALT_DIGITS', 131119); define('CRNCYSTR', 262159); define('RADIXCHAR', 65536); define('THOUSEP', 65537); define('YESEXPR', 327680); define('NOEXPR', 327681); define('YESSTR', 327682); define('NOSTR', 327683); define('CODESET', 14); define('CRYPT_SALT_LENGTH', 123); define('CRYPT_STD_DES', 1); define('CRYPT_EXT_DES', 1); define('CRYPT_MD5', 1); define('CRYPT_BLOWFISH', 1); define('CRYPT_SHA256', 1); define('CRYPT_SHA512', 1); define('DIRECTORY_SEPARATOR', "/"); define('PATH_SEPARATOR', ":"); define('GLOB_BRACE', 1024); define('GLOB_MARK', 2); define('GLOB_NOSORT', 4); define('GLOB_NOCHECK', 16); define('GLOB_NOESCAPE', 64); define('GLOB_ERR', 1); define('GLOB_ONLYDIR', 1073741824); define('GLOB_AVAILABLE_FLAGS', 1073741911); define('EXTR_OVERWRITE', 0); define('EXTR_SKIP', 1); define('EXTR_PREFIX_SAME', 2); define('EXTR_PREFIX_ALL', 3); define('EXTR_PREFIX_INVALID', 4); define('EXTR_PREFIX_IF_EXISTS', 5); define('EXTR_IF_EXISTS', 6); define('EXTR_REFS', 256); /** * SORT_ASC is used with * array_multisort to sort in ascending order. * @link https://php.net/manual/en/array.constants.php */ define('SORT_ASC', 4); /** * SORT_DESC is used with * array_multisort to sort in descending order. * @link https://php.net/manual/en/array.constants.php */ define('SORT_DESC', 3); /** * SORT_REGULAR is used to compare items normally. * @link https://php.net/manual/en/array.constants.php */ define('SORT_REGULAR', 0); /** * SORT_NUMERIC is used to compare items numerically. * @link https://php.net/manual/en/array.constants.php */ define('SORT_NUMERIC', 1); /** * SORT_STRING is used to compare items as strings. * @link https://php.net/manual/en/array.constants.php */ define('SORT_STRING', 2); /** * SORT_LOCALE_STRING is used to compare items as * strings, based on the current locale. * @since 5.0.2 * @link https://php.net/manual/en/array.constants.php */ define('SORT_LOCALE_STRING', 5); /** * CASE_LOWER is used with * array_change_key_case and is used to convert array * keys to lower case. This is also the default case for * array_change_key_case. * @link https://php.net/manual/en/array.constants.php */ define('CASE_LOWER', 0); /** * CASE_UPPER is used with * array_change_key_case and is used to convert array * keys to upper case. * @link https://php.net/manual/en/array.constants.php */ define('CASE_UPPER', 1); define('COUNT_NORMAL', 0); define('COUNT_RECURSIVE', 1); define('ASSERT_ACTIVE', 1); define('ASSERT_CALLBACK', 2); define('ASSERT_BAIL', 3); define('ASSERT_WARNING', 4); /** * @removed 8.0 */ define('ASSERT_QUIET_EVAL', 5); define('ASSERT_EXCEPTION', 5); /** * Flag indicating if the stream used the include path. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_USE_PATH', 1); define('STREAM_IGNORE_URL', 2); define('STREAM_ENFORCE_SAFE_MODE', 4); /** * Flag indicating if the wrapper * is responsible for raising errors using trigger_error * during opening of the stream. If this flag is not set, you * should not raise any errors. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_REPORT_ERRORS', 8); /** * This flag is useful when your extension really must be able to randomly * seek around in a stream. Some streams may not be seekable in their * native form, so this flag asks the streams API to check to see if the * stream does support seeking. If it does not, it will copy the stream * into temporary storage (which may be a temporary file or a memory * stream) which does support seeking. * Please note that this flag is not useful when you want to seek the * stream and write to it, because the stream you are accessing might * not be bound to the actual resource you requested. * If the requested resource is network based, this flag will cause the * opener to block until the whole contents have been downloaded. * @link https://www.php.net/manual/en/stream.constants.php */ define('STREAM_MUST_SEEK', 16); define('STREAM_URL_STAT_LINK', 1); define('STREAM_URL_STAT_QUIET', 2); define('STREAM_MKDIR_RECURSIVE', 1); define('STREAM_IS_URL', 1); define('STREAM_OPTION_BLOCKING', 1); define('STREAM_OPTION_READ_TIMEOUT', 4); define('STREAM_OPTION_READ_BUFFER', 2); define('STREAM_OPTION_WRITE_BUFFER', 3); define('STREAM_BUFFER_NONE', 0); define('STREAM_BUFFER_LINE', 1); define('STREAM_BUFFER_FULL', 2); /** * Stream casting, when stream_cast is called * otherwise (see above). * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_CAST_AS_STREAM', 0); /** * Stream casting, for when stream_select is * calling stream_cast. * @link https://php.net/manual/en/stream.constants.php */ define('STREAM_CAST_FOR_SELECT', 3); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_GIF', 1); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_JPEG', 2); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_PNG', 3); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_SWF', 4); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_PSD', 5); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_BMP', 6); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_TIFF_II', 7); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_TIFF_MM', 8); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_JPC', 9); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_JP2', 10); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_JPX', 11); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_JB2', 12); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_SWC', 13); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_IFF', 14); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_WBMP', 15); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_JPEG2000', 9); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_XBM', 16); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php */ define('IMAGETYPE_ICO', 17); /** * Image type constant used by the {@link image_type_to_mime_type()} and {@link image_type_to_extension()} functions. * @link https://php.net/manual/en/image.constants.php * @since 7.1 */ define('IMAGETYPE_WEBP', 18); define('IMAGETYPE_UNKNOWN', 0); define('IMAGETYPE_COUNT', 20); /** * @since 8.1 */ define('IMAGETYPE_AVIF', 19); /** * IPv4 Address Resource * @link https://php.net/manual/en/network.constants.php */ define('DNS_A', 1); define('DNS_CAA', 8192); /** * Authoritative Name Server Resource * @link https://php.net/manual/en/network.constants.php */ define('DNS_NS', 2); /** * Alias (Canonical Name) Resource * @link https://php.net/manual/en/network.constants.php */ define('DNS_CNAME', 16); /** * Start of Authority Resource * @link https://php.net/manual/en/network.constants.php */ define('DNS_SOA', 32); /** * Pointer Resource * @link https://php.net/manual/en/network.constants.php */ define('DNS_PTR', 2048); /** * Host Info Resource (See IANA's * Operating System Names * for the meaning of these values) * @link https://php.net/manual/en/network.constants.php */ define('DNS_HINFO', 4096); /** * Mail Exchanger Resource * @link https://php.net/manual/en/network.constants.php */ define('DNS_MX', 16384); /** * Text Resource * @link https://php.net/manual/en/network.constants.php */ define('DNS_TXT', 32768); define('DNS_SRV', 33554432); define('DNS_NAPTR', 67108864); /** * IPv6 Address Resource * @link https://php.net/manual/en/network.constants.php */ define('DNS_AAAA', 134217728); define('DNS_A6', 16777216); /** * Any Resource Record. On most systems * this returns all resource records, however * it should not be counted upon for critical * uses. Try DNS_ALL instead. * @link https://php.net/manual/en/network.constants.php */ define('DNS_ANY', 268435456); /** * Iteratively query the name server for * each available record type. * @link https://php.net/manual/en/network.constants.php */ define('DNS_ALL', 251721779); // End of standard v.5.3.1-0.dotdeb.1 //WI-11084 Constant not defined PHP_QUERY_RFC3986 /** * Encoding is performed per RFC 1738 and the application/x-www-form-urlencoded media type, * which implies that spaces are encoded as plus (+) signs. * @link https://php.net/manual/en/function.http-build-query.php */ define('PHP_QUERY_RFC1738', 1); /** * Encoding is performed according to RFC 3986, and spaces will be percent encoded (%20). * @link https://php.net/manual/en/function.http-build-query.php */ define('PHP_QUERY_RFC3986', 2); //WI-11254 Stubs for missing constants from PHP 5.4 /** * (PHP4, PHP5) *

    Constant containing either the session name and session ID in the form of "name=ID" or * empty string if session ID was set in an appropriate session cookie. * This is the same id as the one returned by session_id().

    * @see session_id() * @link https://php.net/manual/en/session.constants.php */ define('SID', "name=ID"); /** * Return value of session_status() if sessions are disabled. * @since 5.4 * @link https://php.net/manual/en/function.session-status.php */ define('PHP_SESSION_DISABLED', 0); /** * Return value of session_status() if sessions are enabled, but no session exists. * @since 5.4 * @link https://php.net/manual/en/function.session-status.php */ define('PHP_SESSION_NONE', 1); /** * Return value of session_status() if sessions are enabled, and a session exists. * @since 5.4 * @link https://php.net/manual/en/function.session-status.php */ define('PHP_SESSION_ACTIVE', 2); /** * Replace invalid code unit sequences with a Unicode Replacement Character * U+FFFD (UTF-8) or &#FFFD; (otherwise) instead of returning an empty string. * @since 5.4 * @link https://php.net/manual/en/function.htmlspecialchars.php */ define('ENT_SUBSTITUTE', 8); /** * Replace invalid code points for the given document type with * a Unicode Replacement Character U+FFFD (UTF-8) or &#FFFD; * (otherwise) instead of leaving them as is. This may be useful, * for instance, to ensure the well-formedness of XML documents * with embedded external content. * @since 5.4 * @link https://php.net/manual/en/function.htmlspecialchars.php */ define('ENT_DISALLOWED', 128); /** * Handle code as HTML 4.01. * @since 5.4 * @link https://php.net/manual/en/function.htmlspecialchars.php */ define('ENT_HTML401', 0); /** * Handle code as XML 1. * @since 5.4 * @link https://php.net/manual/en/function.htmlspecialchars.php */ define('ENT_XML1', 16); /** * Handle code as XHTML. * @since 5.4 * @link https://php.net/manual/en/function.htmlspecialchars.php */ define('ENT_XHTML', 32); /** * Handle code as HTML 5. * @since 5.4 * @link https://php.net/manual/en/function.htmlspecialchars.php */ define('ENT_HTML5', 48); /** @link https://php.net/manual/en/function.scandir.php */ define('SCANDIR_SORT_ASCENDING', 0); /** @link https://php.net/manual/en/function.scandir.php */ define('SCANDIR_SORT_DESCENDING', 1); /** @link https://php.net/manual/en/function.scandir.php */ define('SCANDIR_SORT_NONE', 2); /** * SORT_NATURAL is used to compare items as strings using "natural ordering" like natsort(). * @since 5.4 * @link https://php.net/manual/en/array.constants.php */ define('SORT_NATURAL', 6); /** * SORT_FLAG_CASE can be combined (bitwise OR) with SORT_STRING or SORT_NATURAL to sort strings case-insensitively. * @since 5.4 * @link https://php.net/manual/en/array.constants.php */ define('SORT_FLAG_CASE', 8); /** @link https://php.net/manual/en/streamwrapper.stream-metadata.php */ define('STREAM_META_TOUCH', 1); /** @link https://php.net/manual/en/streamwrapper.stream-metadata.php */ define('STREAM_META_OWNER', 3); /** @link https://php.net/manual/en/streamwrapper.stream-metadata.php */ define('STREAM_META_OWNER_NAME', 2); /** @link https://php.net/manual/en/streamwrapper.stream-metadata.php */ define('STREAM_META_GROUP', 5); /** @link https://php.net/manual/en/streamwrapper.stream-metadata.php */ define('STREAM_META_GROUP_NAME', 4); /** @link https://php.net/manual/en/streamwrapper.stream-metadata.php */ define('STREAM_META_ACCESS', 6); define('STREAM_CRYPTO_METHOD_SSLv2_CLIENT', 3); define('STREAM_CRYPTO_METHOD_SSLv3_CLIENT', 5); define('STREAM_CRYPTO_METHOD_SSLv23_CLIENT', 57); define('STREAM_CRYPTO_METHOD_TLS_CLIENT', 121); define('STREAM_CRYPTO_METHOD_SSLv2_SERVER', 2); define('STREAM_CRYPTO_METHOD_SSLv3_SERVER', 4); define('STREAM_CRYPTO_METHOD_SSLv23_SERVER', 120); define('STREAM_CRYPTO_METHOD_TLS_SERVER', 120); define("STREAM_CRYPTO_METHOD_ANY_CLIENT", 127); define("STREAM_CRYPTO_METHOD_ANY_SERVER", 126); define("STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT", 9); define("STREAM_CRYPTO_METHOD_TLSv1_0_SERVER", 8); define("STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT", 17); define("STREAM_CRYPTO_METHOD_TLSv1_1_SERVER", 16); define("STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT", 33); define("STREAM_CRYPTO_METHOD_TLSv1_2_SERVER", 32); /** * @since 7.4 */ define("STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT", 65); /** * @since 7.4 */ define("STREAM_CRYPTO_METHOD_TLSv1_3_SERVER", 64); define("STREAM_CRYPTO_PROTO_SSLv3", 4); define("STREAM_CRYPTO_PROTO_TLSv1_0", 8); define("STREAM_CRYPTO_PROTO_TLSv1_1", 16); define("STREAM_CRYPTO_PROTO_TLSv1_2", 32); /** * @since 7.4 */ define("STREAM_CRYPTO_PROTO_TLSv1_3", 64); /** * @since 7.1 */ define("MT_RAND_MT19937", 0); /** * @since 7.1 * @deprecated 8.3 */ define("MT_RAND_PHP", 1); /** * system is unusable * @link https://php.net/manual/en/network.constants.php */ define('LOG_EMERG', 0); /** * action must be taken immediately * @link https://php.net/manual/en/network.constants.php */ define('LOG_ALERT', 1); /** * critical conditions * @link https://php.net/manual/en/network.constants.php */ define('LOG_CRIT', 2); /** * error conditions * @link https://php.net/manual/en/network.constants.php */ define('LOG_ERR', 3); /** * warning conditions * @link https://php.net/manual/en/network.constants.php */ define('LOG_WARNING', 4); /** * normal, but significant, condition * @link https://php.net/manual/en/network.constants.php */ define('LOG_NOTICE', 5); /** * informational message * @link https://php.net/manual/en/network.constants.php */ define('LOG_INFO', 6); /** * debug-level message * @link https://php.net/manual/en/network.constants.php */ define('LOG_DEBUG', 7); /** * kernel messages * @link https://php.net/manual/en/network.constants.php */ define('LOG_KERN', 0); /** * generic user-level messages * @link https://php.net/manual/en/network.constants.php */ define('LOG_USER', 8); /** * mail subsystem * @link https://php.net/manual/en/network.constants.php */ define('LOG_MAIL', 16); /** * other system daemons * @link https://php.net/manual/en/network.constants.php */ define('LOG_DAEMON', 24); /** * security/authorization messages (use LOG_AUTHPRIV instead * in systems where that constant is defined) * @link https://php.net/manual/en/network.constants.php */ define('LOG_AUTH', 32); /** * messages generated internally by syslogd * @link https://php.net/manual/en/network.constants.php */ define('LOG_SYSLOG', 40); /** * line printer subsystem * @link https://php.net/manual/en/network.constants.php */ define('LOG_LPR', 48); /** * USENET news subsystem * @link https://php.net/manual/en/network.constants.php */ define('LOG_NEWS', 56); /** * UUCP subsystem * @link https://php.net/manual/en/network.constants.php */ define('LOG_UUCP', 64); /** * clock daemon (cron and at) * @link https://php.net/manual/en/network.constants.php */ define('LOG_CRON', 72); /** * security/authorization messages (private) * @link https://php.net/manual/en/network.constants.php */ define('LOG_AUTHPRIV', 80); define('LOG_LOCAL0', 128); define('LOG_LOCAL1', 136); define('LOG_LOCAL2', 144); define('LOG_LOCAL3', 152); define('LOG_LOCAL4', 160); define('LOG_LOCAL5', 168); define('LOG_LOCAL6', 176); define('LOG_LOCAL7', 184); /** * include PID with each message * @link https://php.net/manual/en/network.constants.php */ define('LOG_PID', 1); /** * if there is an error while sending data to the system logger, * write directly to the system console * @link https://php.net/manual/en/network.constants.php */ define('LOG_CONS', 2); /** * (default) delay opening the connection until the first * message is logged * @link https://php.net/manual/en/network.constants.php */ define('LOG_ODELAY', 4); /** * open the connection to the logger immediately * @link https://php.net/manual/en/network.constants.php */ define('LOG_NDELAY', 8); define('LOG_NOWAIT', 16); /** * print log message also to standard error * @link https://php.net/manual/en/network.constants.php */ define('LOG_PERROR', 32); /** * @since 8.2 */ define('DECIMAL_POINT', 65536); /** * @since 8.2 */ define('THOUSANDS_SEP', 65537); /** * @since 8.2 */ define('GROUPING', 65538); /** * @since 8.2 */ define('ERA_YEAR', 131117); /** * @since 8.2 */ define('INT_CURR_SYMBOL', 262144); /** * @since 8.2 */ define('CURRENCY_SYMBOL', 262145); /** * @since 8.2 */ define('MON_DECIMAL_POINT', 262146); /** * @since 8.2 */ define('MON_THOUSANDS_SEP', 262147); /** * @since 8.2 */ define('MON_GROUPING', 262148); /** * @since 8.2 */ define('POSITIVE_SIGN', 262149); /** * @since 8.2 */ define('NEGATIVE_SIGN', 262150); /** * @since 8.2 */ define('INT_FRAC_DIGITS', 262151); /** * @since 8.2 */ define('FRAC_DIGITS', 262152); /** * @since 8.2 */ define('P_CS_PRECEDES', 262153); /** * @since 8.2 */ define('P_SEP_BY_SPACE', 262154); /** * @since 8.2 */ define('N_CS_PRECEDES', 262155); /** * @since 8.2 */ define('N_SEP_BY_SPACE', 262156); /** * @since 8.2 */ define('P_SIGN_POSN', 262157); /** * @since 8.2 */ define('N_SIGN_POSN', 262158); * Syntax "index => values", separated by commas, define index and values. * index may be of type string or integer. When index is omitted, an integer index is automatically generated, * starting at 0. If index is an integer, next generated index will be the biggest integer index + 1. * Note that when two identical index are defined, the last overwrite the first. *

    *

    * Having a trailing comma after the last defined array entry, while unusual, is a valid syntax. *

    * @return array an array of the parameters. The parameters can be given an index with the => operator. */ function PS_UNRESERVE_PREFIX_array(...$_) {} /** * Assigns a list of variables in one operation. * @link https://php.net/manual/en/function.list.php * @param mixed $var1

    A variable.

    * @param mixed ...$_ [optional]

    Another variable ...

    * @return array the assigned array. */ function PS_UNRESERVE_PREFIX_list($var1, ...$_) {} /** *

    Terminates execution of the script. Shutdown functions and object destructors will always be executed even if exit is called.

    *

    die is a language construct and it can be called without parentheses if no status is passed.

    * @link https://php.net/manual/en/function.die.php * @param int|string $status [optional]

    * If status is a string, this function prints the status just before exiting. *

    *

    * If status is an integer, that value will be used as the exit status and not printed. Exit statuses should be in the range 0 to 254, * the exit status 255 is reserved by PHP and shall not be used. The status 0 is used to terminate the program successfully. *

    *

    * Note: PHP >= 4.2.0 does NOT print the status if it is an integer. *

    * @return void */ function PS_UNRESERVE_PREFIX_die($status = "") {} /** *

    Terminates execution of the script. Shutdown functions and object destructors will always be executed even if exit is called.

    *

    exit is a language construct and it can be called without parentheses if no status is passed.

    * @link https://php.net/manual/en/function.exit.php * @param int|string $status [optional]

    * If status is a string, this function prints the status just before exiting. *

    *

    * If status is an integer, that value will be used as the exit status and not printed. Exit statuses should be in the range 0 to 254, * the exit status 255 is reserved by PHP and shall not be used. The status 0 is used to terminate the program successfully. *

    *

    * Note: PHP >= 4.2.0 does NOT print the status if it is an integer. *

    * @return void */ function PS_UNRESERVE_PREFIX_exit($status = "") {} /** * Determine whether a variable is considered to be empty. A variable is considered empty if it does not exist or if its value * equals FALSE. empty() does not generate a warning if the variable does not exist. * @link https://php.net/manual/en/function.empty.php * @param mixed $var

    Variable to be checked.

    *

    Note: Prior to PHP 5.5, empty() only supports variables; anything else will result in a parse error. In other words, * the following will not work: empty(trim($name)). Instead, use trim($name) == false. *

    *

    * No warning is generated if the variable does not exist. That means empty() is essentially the concise equivalent * to !isset($var) || $var == false. *

    * @return bool

    FALSE if var exists and has a non-empty, non-zero value. Otherwise returns TRUE.

    *

    * The following things are considered to be empty: *

      *
    • "" (an empty string)
    • *
    • 0 (0 as an integer)
    • *
    • 0.0 (0 as a float)
    • *
    • "0" (0 as a string)
    • *
    • NULL
    • *
    • FALSE
    • *
    • array() (an empty array)
    • *
    • $var; (a variable declared, but without a value)
    • *
    *

    */ function PS_UNRESERVE_PREFIX_empty($var) {} /** *

    Determine if a variable is set and is not NULL.

    *

    If a variable has been unset with unset(), it will no longer be set. isset() will return FALSE if testing a variable * that has been set to NULL. Also note that a null character ("\0") is not equivalent to the PHP NULL constant.

    *

    If multiple parameters are supplied then isset() will return TRUE only if all of the parameters are set. * Evaluation goes from left to right and stops as soon as an unset variable is encountered.

    * @link https://php.net/manual/en/function.isset.php * @param mixed $var

    The variable to be checked.

    * @param mixed ...$_ [optional]

    Another variable ...

    * @return bool Returns TRUE if var exists and has value other than NULL, FALSE otherwise. */ function PS_UNRESERVE_PREFIX_isset($var, ...$_) {} /** *

    Destroys the specified variables.

    *

    The behavior of unset() inside of a function can vary depending on what type of variable you are attempting to destroy.

    * @link https://php.net/manual/en/function.unset.php * @param mixed $var

    The variable to be unset.

    * @param mixed ...$_ [optional]

    Another variable ...

    * @return void */ function PS_UNRESERVE_PREFIX_unset($var, ...$_) {} /** *

    Evaluates the given code as PHP.

    *

    Caution: The eval() language construct is very dangerous because it allows execution of arbitrary PHP code. Its use thus is * discouraged. If you have carefully verified that there is no other option than to use this construct, pay special attention not to * pass any user provided data into it without properly validating it beforehand.

    * @link https://php.net/manual/en/function.eval.php * @param string $code

    * Valid PHP code to be evaluated. *

    *

    * The code must not be wrapped in opening and closing PHP tags, i.e. 'echo "Hi!";' must be passed instead of ''. * It is still possible to leave and re-enter PHP mode though using the appropriate PHP tags, e.g. * 'echo "In PHP mode!"; ?>In HTML mode! *

    * Apart from that the passed code must be valid PHP. This includes that all statements must be properly terminated using a semicolon. * 'echo "Hi!"' for example will cause a parse error, whereas 'echo "Hi!";' will work. *

    *

    * A return statement will immediately terminate the evaluation of the code. *

    *

    * The code will be executed in the scope of the code calling eval(). Thus any variables defined or changed in the eval() * call will remain visible after it terminates. *

    * @return mixed NULL unless return is called in the evaluated code, in which case the value passed to return is returned. * As of PHP 7, if there is a parse error in the evaluated code, eval() throws a ParseError exception. Before PHP 7, in this * case eval() returned FALSE and execution of the following code continued normally. It is not possible to catch a parse * error in eval() using set_error_handler(). */ function PS_UNRESERVE_PREFIX_eval($code) {} /** * Generator objects are returned from generators, cannot be instantiated via new. * @link https://secure.php.net/manual/en/class.generator.php * @link https://wiki.php.net/rfc/generators * * @template-covariant TKey * @template-covariant TYield * @template TSend * @template-covariant TReturn * * @template-implements Iterator */ final class Generator implements Iterator { /** * Throws an exception if the generator is currently after the first yield. * @return void */ public function rewind(): void {} /** * Returns false if the generator has been closed, true otherwise. * @return bool */ public function valid(): bool {} /** * Returns whatever was passed to yield or null if nothing was passed or the generator is already closed. * @return TYield */ public function current(): mixed {} /** * Returns the yielded key or, if none was specified, an auto-incrementing key or null if the generator is already closed. * @return TKey */ #[LanguageLevelTypeAware(['8.0' => 'mixed'], default: 'string|float|int|bool|null')] public function key() {} /** * Resumes the generator (unless the generator is already closed). * @return void */ public function next(): void {} /** * Sets the return value of the yield expression and resumes the generator (unless the generator is already closed). * @param TSend $value * @return TYield|null */ public function send(mixed $value): mixed {} /** * Throws an exception at the current suspension point in the generator. * @param Throwable $exception * @return TYield */ public function PS_UNRESERVE_PREFIX_throw(Throwable $exception): mixed {} /** * Returns whatever was passed to return or null if nothing. * Throws an exception if the generator is still valid. * @link https://wiki.php.net/rfc/generator-return-expressions * @return TReturn * @since 7.0 */ public function getReturn(): mixed {} /** * Serialize callback * Throws an exception as generators can't be serialized. * @link https://php.net/manual/en/generator.wakeup.php * @return void */ public function __wakeup() {} /** * @since 8.4 */ public function __debugInfo(): array {} } class ClosedGeneratorException extends Exception {} } namespace ___PHPSTORM_HELPERS { class PS_UNRESERVE_PREFIX_this {} class PS_UNRESERVE_PREFIX_static {} class object { /** * PHP 5 allows developers to declare constructor methods for classes. * Classes which have a constructor method call this method on each newly-created object, * so it is suitable for any initialization that the object may need before it is used. * * Note: Parent constructors are not called implicitly if the child class defines a constructor. * In order to run a parent constructor, a call to parent::__construct() within the child constructor is required. * * param [ mixed $args [, $... ]] * @link https://php.net/manual/en/language.oop5.decon.php */ public function __construct() {} /** * PHP 5 introduces a destructor concept similar to that of other object-oriented languages, such as C++. * The destructor method will be called as soon as all references to a particular object are removed or * when the object is explicitly destroyed or in any order in shutdown sequence. * * Like constructors, parent destructors will not be called implicitly by the engine. * In order to run a parent destructor, one would have to explicitly call parent::__destruct() in the destructor body. * * Note: Destructors called during the script shutdown have HTTP headers already sent. * The working directory in the script shutdown phase can be different with some SAPIs (e.g. Apache). * * Note: Attempting to throw an exception from a destructor (called in the time of script termination) causes a fatal error. * * @return void * @link https://php.net/manual/en/language.oop5.decon.php */ public function __destruct() {} /** * is triggered when invoking inaccessible methods in an object context. * * @param string $name * @param array $arguments * @return mixed * @link https://php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods */ public function __call(string $name, array $arguments) {} /** * is triggered when invoking inaccessible methods in a static context. * * @param string $name * @param array $arguments * @return mixed * @link https://php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods */ public static function __callStatic(string $name, array $arguments) {} /** * is utilized for reading data from inaccessible members. * * @param string $name * @return mixed * @link https://php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members */ public function __get(string $name) {} /** * run when writing data to inaccessible members. * * @param string $name * @param mixed $value * @return void * @link https://php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members */ public function __set(string $name, $value): void {} /** * is triggered by calling isset() or empty() on inaccessible members. * * @param string $name * @return bool * @link https://php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members */ public function __isset(string $name): bool {} /** * is invoked when unset() is used on inaccessible members. * * @param string $name * @return void * @link https://php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members */ public function __unset(string $name): void {} /** * serialize() checks if your class has a function with the magic name __sleep. * If so, that function is executed prior to any serialization. * It can clean up the object and is supposed to return an array with the names of all variables of that object that should be serialized. * If the method doesn't return anything then NULL is serialized and E_NOTICE is issued. * The intended use of __sleep is to commit pending data or perform similar cleanup tasks. * Also, the function is useful if you have very large objects which do not need to be saved completely. * * @return string[] * @link https://php.net/manual/en/language.oop5.magic.php#language.oop5.magic.sleep */ public function __sleep(): array {} /** * unserialize() checks for the presence of a function with the magic name __wakeup. * If present, this function can reconstruct any resources that the object may have. * The intended use of __wakeup is to reestablish any database connections that may have been lost during * serialization and perform other reinitialization tasks. * * @return void * @link https://php.net/manual/en/language.oop5.magic.php#language.oop5.magic.sleep */ public function __wakeup(): void {} /** * The __toString method allows a class to decide how it will react when it is converted to a string. * * @return string * @link https://php.net/manual/en/language.oop5.magic.php#language.oop5.magic.tostring */ public function __toString(): string {} /** * The __invoke method is called when a script tries to call an object as a function. * * @return mixed * @link https://php.net/manual/en/language.oop5.magic.php#language.oop5.magic.invoke */ public function __invoke() {} /** * This method is called by var_dump() when dumping an object to get the properties that should be shown. * If the method isn't defined on an object, then all public, protected and private properties will be shown. * * @return array|null * @link https://php.net/manual/en/language.oop5.magic.php#language.oop5.magic.debuginfo */ public function __debugInfo(): ?array {} /** * This static method is called for classes exported by var_export() since PHP 5.1.0. * The only parameter of this method is an array containing exported properties in the form array('property' => value, ...). * * @param array $an_array * @return object * @link https://php.net/manual/en/language.oop5.magic.php#language.oop5.magic.set-state */ public static function __set_state(array $an_array): object {} /** * When an object is cloned, PHP 5 will perform a shallow copy of all of the object's properties. * Any properties that are references to other variables, will remain references. * Once the cloning is complete, if a __clone() method is defined, * then the newly created object's __clone() method will be called, to allow any necessary properties that need to be changed. * NOT CALLABLE DIRECTLY. * * @return void * @link https://php.net/manual/en/language.oop5.cloning.php */ public function __clone(): void {} /** * Returns array containing all the necessary state of the object. * @since 7.4 * @link https://wiki.php.net/rfc/custom_object_serialization */ public function __serialize(): array {} /** * Restores the object state from the given data array. * @param array $data * @since 7.4 * @link https://wiki.php.net/rfc/custom_object_serialization */ public function __unserialize(array $data): void {} } } * If you have compiled in OpenSSL support, you may prefix the * hostname with either ssl:// * or tls:// to use an SSL or TLS client connection * over TCP/IP to connect to the remote host. *

    * @param int $port

    * The port number. *

    * @param int &$error_code [optional]

    * If provided, holds the system level error number that occurred in the * system-level connect() call. *

    *

    * If the value returned in errno is * 0 and the function returned false, it is an * indication that the error occurred before the * connect() call. This is most likely due to a * problem initializing the socket. *

    * @param string &$error_message [optional]

    * The error message as a string. *

    * @param float|null $timeout [optional]

    * The connection timeout, in seconds. *

    *

    * If you need to set a timeout for reading/writing data over the * socket, use stream_set_timeout, as the * timeout parameter to * fsockopen only applies while connecting the * socket. *

    * @return resource|false fsockopen returns a file pointer which may be used * together with the other file functions (such as * fgets, fgetss, * fwrite, fclose, and * feof). If the call fails, it will return false */ function fsockopen( string $hostname, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] int $port, #[PhpStormStubsElementAvailable(from: '7.1')] int $port = -1, &$error_code, &$error_message, ?float $timeout ) {} /** * Open persistent Internet or Unix domain socket connection * @link https://php.net/manual/en/function.pfsockopen.php * @see fsockopen * @param string $hostname * @param int $port * @param int &$error_code [optional] * @param string &$error_message [optional] * @param float|null $timeout [optional] * @return resource|false */ function pfsockopen( string $hostname, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] int $port, #[PhpStormStubsElementAvailable(from: '7.1')] int $port = -1, &$error_code, &$error_message, ?float $timeout ) {} /** * Pack data into binary string * @link https://php.net/manual/en/function.pack.php * @param string $format

    * The format string consists of format codes * followed by an optional repeater argument. The repeater argument can * be either an integer value or * for repeating to * the end of the input data. For a, A, h, H the repeat count specifies * how many characters of one data argument are taken, for @ it is the * absolute position where to put the next data, for everything else the * repeat count specifies how many data arguments are consumed and packed * into the resulting binary string. *

    *

    * Currently implemented formats are: * * pack format characters * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    CodeDescription
    aNUL-padded string
    ASPACE-padded string
    hHex string, low nibble first
    HHex string, high nibble first
    csigned char
    Cunsigned char
    ssigned short (always 16 bit, machine byte order)
    Sunsigned short (always 16 bit, machine byte order)
    nunsigned short (always 16 bit, big endian byte order)
    vunsigned short (always 16 bit, little endian byte order)
    isigned integer (machine dependent size and byte order)
    Iunsigned integer (machine dependent size and byte order)
    lsigned long (always 32 bit, machine byte order)
    Lunsigned long (always 32 bit, machine byte order)
    Nunsigned long (always 32 bit, big endian byte order)
    Vunsigned long (always 32 bit, little endian byte order)
    ffloat (machine dependent size and representation, both little and big endian)
    ddouble (machine dependent size and representation, both little and big endian)
    xNUL byte
    XBack up one byte
    @NUL-fill to absolute position
    *

    * @param mixed ...$values

    *

    * @return string|false a binary string containing data or false if the format string contains errors */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "string"], default: "string|false")] function pack( string $format, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.3')] $values, mixed ...$values ) {} /** * Unpack data from binary string * @link https://php.net/manual/en/function.unpack.php * @param string $format

    * See pack for an explanation of the format codes. *

    * @param string $string

    * The packed data. *

    * @param int $offset [optional] * @return array|false an associative array containing unpacked elements of binary * string or false if the format string contains errors */ #[Pure] function unpack( string $format, string $string, #[PhpStormStubsElementAvailable(from: '7.1')] int $offset = 0 ): array|false {} /** * Tells what the user's browser is capable of * @link https://php.net/manual/en/function.get-browser.php * @param string|null $user_agent [optional]

    * The User Agent to be analyzed. By default, the value of HTTP * User-Agent header is used; however, you can alter this (i.e., look up * another browser's info) by passing this parameter. *

    *

    * You can bypass this parameter with a null value. *

    * @param bool $return_array [optional]

    * If set to true, this function will return an array * instead of an object. *

    * @return array|object|false Returns false if browscap.ini can't be loaded or the user agent can't be found, otherwise the information is returned in an object or an array which will contain * various data elements representing, for instance, the browser's major and * minor version numbers and ID string; true/false values for features * such as frames, JavaScript, and cookies; and so forth. *

    *

    * The cookies value simply means that the browser * itself is capable of accepting cookies and does not mean the user has * enabled the browser to accept cookies or not. The only way to test if * cookies are accepted is to set one with setcookie, * reload, and check for the value. */ #[Pure(true)] function get_browser(?string $user_agent, bool $return_array = false): object|array|false {} /** * One-way string encryption (hashing) * @link https://php.net/manual/en/function.crypt.php * @param string $string

    * The string to be encrypted. *

    * @param string $salt

    * An optional salt string to base the encryption on. If not provided, * one will be randomly generated by PHP each time you call this function. * PHP 5.6 or later raise E_NOTICE error if this parameter is omitted *

    *

    * If you are using the supplied salt, you should be aware that the salt * is generated once. If you are calling this function repeatedly, this * may impact both appearance and security. *

    * @return string|null the encrypted string or NULL if an error occurs */ #[Pure] #[PhpStormStubsElementAvailable(to: '7.4')] function crypt($string, $salt): ?string {} /** * One-way string encryption (hashing) * @link https://php.net/manual/en/function.crypt.php * @param string $string

    * The string to be encrypted. *

    * @param string $salt

    * An optional salt string to base the encryption on. If not provided, * one will be randomly generated by PHP each time you call this function. * PHP 5.6 or later raise E_NOTICE error if this parameter is omitted *

    *

    * If you are using the supplied salt, you should be aware that the salt * is generated once. If you are calling this function repeatedly, this * may impact both appearance and security. *

    * @return string the encrypted string or NULL if an error occurs */ #[Pure] #[PhpStormStubsElementAvailable('8.0')] function crypt(string $string, string $salt): string {} /** * Open directory handle * @link https://php.net/manual/en/function.opendir.php * @param string $directory

    * The directory path that is to be opened *

    * @param resource $context [optional]

    * For a description of the context parameter, * refer to the streams section of * the manual. *

    * @return resource|false a directory handle resource on success, or * false on failure. *

    *

    * If path is not a valid directory or the * directory can not be opened due to permission restrictions or * filesystem errors, opendir returns false and * generates a PHP error of level * E_WARNING. You can suppress the error output of * opendir by prepending * '@' to the * front of the function name. */ function opendir(string $directory, $context) {} /** * Close directory handle * @link https://php.net/manual/en/function.closedir.php * @param resource $dir_handle [optional]

    * The directory handle resource previously opened * with opendir. If the directory handle is * not specified, the last link opened by opendir * is assumed. *

    * @return void */ function closedir($dir_handle): void {} /** * Change directory * @link https://php.net/manual/en/function.chdir.php * @param string $directory

    * The new current directory *

    * @return bool true on success or false on failure. */ function chdir(string $directory): bool {} /** * Change the root directory * @link https://php.net/manual/en/function.chroot.php * @param string $directory

    * The new directory *

    * @return bool true on success or false on failure. */ function chroot(string $directory): bool {} /** * Gets the current working directory * @link https://php.net/manual/en/function.getcwd.php * @return string|false

    * the current working directory on success, or false on * failure.
    *
    * On some Unix variants, getcwd will return * false if any one of the parent directories does not have the * readable or search mode set, even if the current directory * does. See chmod for more information on * modes and permissions. *

    */ #[Pure(true)] function getcwd(): string|false {} /** * Rewind directory handle * @link https://php.net/manual/en/function.rewinddir.php * @param resource $dir_handle [optional]

    * The directory handle resource previously opened * with opendir. If the directory handle is * not specified, the last link opened by opendir * is assumed. *

    * @see https://bugs.php.net/bug.php?id=75485 */ function rewinddir($dir_handle): void {} /** * Read entry from directory handle * @link https://php.net/manual/en/function.readdir.php * @param resource $dir_handle [optional]

    * The directory handle resource previously opened * with opendir. If the directory handle is * not specified, the last link opened by opendir * is assumed. *

    * @return string|false the filename on success or false on failure. */ function readdir($dir_handle): string|false {} /** * Return an instance of the Directory class * @link https://php.net/manual/en/function.dir.php * @param string $directory

    * Directory to open *

    * @param resource $context [optional] * @return Directory|false an instance of Directory, or NULL with wrong * parameters, or FALSE in case of another error */ function dir(string $directory, $context): Directory|false {} /** * Alias of dir() * @param string $directory * @param resource $context * @since 8.0 * @return Directory|false * @see dir() */ function getdir(string $directory, $context = null): Directory|false {} /** * List files and directories inside the specified path * @link https://php.net/manual/en/function.scandir.php * @param string $directory

    * The directory that will be scanned. *

    * @param int $sorting_order

    * By default, the sorted order is alphabetical in ascending order. If * the optional sorting_order is set to non-zero, * then the sort order is alphabetical in descending order. *

    * @param resource $context [optional]

    * For a description of the context parameter, * refer to the streams section of * the manual. *

    * @return array|false an array of filenames on success, or false on * failure. If directory is not a directory, then * boolean false is returned, and an error of level * E_WARNING is generated. */ function scandir(string $directory, int $sorting_order = 0, $context): array|false {} /** * Find pathnames matching a pattern * @link https://php.net/manual/en/function.glob.php * @param string $pattern

    * The pattern. No tilde expansion or parameter substitution is done. *

    * @param int $flags

    * Valid flags: * GLOB_MARK - Adds a slash to each directory returned * GLOB_NOSORT - Return files as they appear in the directory (no sorting). When this flag is not used, the pathnames are sorted alphabetically * GLOB_NOCHECK - Return the search pattern if no files matching it were found * GLOB_NOESCAPE - Backslashes do not quote metacharacters * GLOB_BRACE - Expands {a,b,c} to match 'a', 'b', or 'c' * GLOB_ONLYDIR - Return only directory entries which match the pattern * GLOB_ERR - Stop on read errors (like unreadable directories), by default errors are ignored. * @return array|false an array containing the matched files/directories, an empty array * if no file matched or false on error. *

    *

    * On some systems it is impossible to distinguish between empty match and an * error.

    */ #[Pure(true)] function glob(string $pattern, int $flags = 0): array|false {} /** * Gets last access time of file * @link https://php.net/manual/en/function.fileatime.php * @param string $filename

    * Path to the file. *

    * @return int|false the time the file was last accessed, or false on failure. * The time is returned as a Unix timestamp. */ #[Pure(true)] function fileatime(string $filename): int|false {} /** * Gets inode change time of file * @link https://php.net/manual/en/function.filectime.php * @param string $filename

    * Path to the file. *

    * @return int|false the time the file was last changed, or false on failure. * The time is returned as a Unix timestamp. */ #[Pure(true)] function filectime(string $filename): int|false {} /** * Gets file group * @link https://php.net/manual/en/function.filegroup.php * @param string $filename

    * Path to the file. *

    * @return int|false the group ID of the file, or false in case * of an error. The group ID is returned in numerical format, use * posix_getgrgid to resolve it to a group name. * Upon failure, false is returned. */ #[Pure(true)] function filegroup(string $filename): int|false {} /** * Gets file inode * @link https://php.net/manual/en/function.fileinode.php * @param string $filename

    * Path to the file. *

    * @return int|false the inode number of the file, or false on failure. */ #[Pure(true)] function fileinode(string $filename): int|false {} /** * Gets file modification time * @link https://php.net/manual/en/function.filemtime.php * @param string $filename

    * Path to the file. *

    * @return int|false the time the file was last modified, or false on failure. * The time is returned as a Unix timestamp, which is * suitable for the date function. */ #[Pure(true)] function filemtime(string $filename): int|false {} /** * Gets file owner * @link https://php.net/manual/en/function.fileowner.php * @param string $filename

    * Path to the file. *

    * @return int|false the user ID of the owner of the file, or false on failure. * The user ID is returned in numerical format, use * posix_getpwuid to resolve it to a username. */ #[Pure(true)] function fileowner(string $filename): int|false {} /** * Gets file permissions * @link https://php.net/manual/en/function.fileperms.php * @param string $filename

    * Path to the file. *

    * @return int|false the permissions on the file, or false on failure. */ #[Pure(true)] function fileperms(string $filename): int|false {} /** * Gets file size * @link https://php.net/manual/en/function.filesize.php * @param string $filename

    * Path to the file. *

    * @return int|false the size of the file in bytes, or false (and generates an error * of level E_WARNING) in case of an error. */ #[Pure(true)] function filesize(string $filename): int|false {} /** * Gets file type * @link https://php.net/manual/en/function.filetype.php * @param string $filename

    * Path to the file. *

    * @return string|false the type of the file. Possible values are fifo, char, * dir, block, link, file, socket and unknown. *

    *

    * Returns false if an error occurs. filetype will also * produce an E_NOTICE message if the stat call fails * or if the file type is unknown. */ #[Pure(true)] function filetype(string $filename): string|false {} /** * Checks whether a file or directory exists * @link https://php.net/manual/en/function.file-exists.php * @param string $filename

    * Path to the file or directory. *

    *

    * On windows, use //computername/share/filename or * \\computername\share\filename to check files on * network shares. *

    * @return bool true if the file or directory specified by * filename exists; false otherwise. *

    *

    * This function will return false for symlinks pointing to non-existing * files. *

    *

    * This function returns false for files inaccessible due to safe mode restrictions. However these * files still can be included if * they are located in safe_mode_include_dir. *

    *

    * The check is done using the real UID/GID instead of the effective one. */ #[Pure(true)] function file_exists(string $filename): bool {} /** * Tells whether the filename is writable * @link https://php.net/manual/en/function.is-writable.php * @param string $filename

    * The filename being checked. *

    * @return bool true if the filename exists and is * writable. */ #[Pure(true)] function is_writable(string $filename): bool {} /** * Alias: * {@see is_writable} * @link https://php.net/manual/en/function.is-writeable.php * @param string $filename

    * The filename being checked. *

    * @return bool true if the filename exists and is * writable. */ #[Pure(true)] function is_writeable(string $filename): bool {} /** * Tells whether a file or a directory exists and is readable * @link https://php.net/manual/en/function.is-readable.php * @param string $filename

    * Path to the file or directory. *

    * @return bool true if the file or directory specified by * filename exists and is readable, false otherwise. */ #[Pure(true)] function is_readable(string $filename): bool {} /** * Tells whether the filename is executable * @link https://php.net/manual/en/function.is-executable.php * @param string $filename

    * Path to the file. *

    * @return bool true if the filename exists and is executable, or false on * error. */ #[Pure(true)] function is_executable(string $filename): bool {} /** * Tells whether the filename is a regular file * @link https://php.net/manual/en/function.is-file.php * @param string $filename

    * Path to the file. *

    * @return bool true if the filename exists and is a regular file, false * otherwise. */ #[Pure(true)] function is_file(string $filename): bool {} /** * Tells whether the filename is a directory * @link https://php.net/manual/en/function.is-dir.php * @param string $filename

    * Path to the file. If filename is a relative * filename, it will be checked relative to the current working * directory. If filename is a symbolic or hard link * then the link will be resolved and checked. *

    * @return bool true if the filename exists and is a directory, false * otherwise. */ #[Pure(true)] function is_dir(string $filename): bool {} /** * Tells whether the filename is a symbolic link * @link https://php.net/manual/en/function.is-link.php * @param string $filename

    * Path to the file. *

    * @return bool true if the filename exists and is a symbolic link, false * otherwise. */ #[Pure(true)] function is_link(string $filename): bool {} /** * Gives information about a file * @link https://php.net/manual/en/function.stat.php * @param string $filename

    * Path to the file. *

    * @return array|false * stat and fstat result * format * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    NumericAssociative (since PHP 4.0.6)Description
    0devdevice number
    1inoinode number *
    2modeinode protection mode
    3nlinknumber of links
    4uiduserid of owner *
    5gidgroupid of owner *
    6rdevdevice type, if inode device
    7sizesize in bytes
    8atimetime of last access (Unix timestamp)
    9mtimetime of last modification (Unix timestamp)
    10ctimetime of last inode change (Unix timestamp)
    11blksizeblocksize of filesystem IO **
    12blocksnumber of 512-byte blocks allocated **
    * * On Windows this will always be 0. *

    *

    * ** Only valid on systems supporting the st_blksize type - other * systems (e.g. Windows) return -1. *

    *

    * In case of error, stat returns false. */ #[Pure(true)] #[ArrayShape([ "dev" => "int", "ino" => "int", "mode" => "int", "nlink" => "int", "uid" => "int", "gid" => "int", "rdev" => "int", "size" => "int", "atime" => "int", "mtime" => "int", "ctime" => "int", "blksize" => "int", "blocks" => "int" ])] function stat(string $filename): array|false {} /** * Gives information about a file or symbolic link * @link https://php.net/manual/en/function.lstat.php * @see stat * @param string $filename

    * Path to a file or a symbolic link. *

    * @return array|false See the manual page for stat for information on * the structure of the array that lstat returns. * This function is identical to the stat function * except that if the filename parameter is a symbolic * link, the status of the symbolic link is returned, not the status of the * file pointed to by the symbolic link. */ #[Pure(true)] function lstat(string $filename): array|false {} /** * Changes file owner * @link https://php.net/manual/en/function.chown.php * @param string $filename

    * Path to the file. *

    * @param string|int $user

    * A user name or number. *

    * @return bool true on success or false on failure. */ function chown(string $filename, string|int $user): bool {} /** * Changes file group * @link https://php.net/manual/en/function.chgrp.php * @param string $filename

    * Path to the file. *

    * @param string|int $group

    * A group name or number. *

    * @return bool true on success or false on failure. */ function chgrp(string $filename, string|int $group): bool {} /** * Changes user ownership of symlink * @link https://php.net/manual/en/function.lchown.php * @param string $filename

    * Path to the file. *

    * @param string|int $user

    * User name or number. *

    * @return bool true on success or false on failure. * @since 5.1.2 */ function lchown(string $filename, string|int $user): bool {} /** * Changes group ownership of symlink * @link https://php.net/manual/en/function.lchgrp.php * @param string $filename

    * Path to the symlink. *

    * @param string|int $group

    * The group specified by name or number. *

    * @return bool true on success or false on failure. * @since 5.1.2 */ function lchgrp(string $filename, string|int $group): bool {} /** * Changes file mode * @link https://php.net/manual/en/function.chmod.php * @param string $filename

    * Path to the file. *

    * @param int $permissions

    * Note that mode is not automatically * assumed to be an octal value, so strings (such as "g+w") will * not work properly. To ensure the expected operation, * you need to prefix mode with a zero (0): *

    *
     * 
     * 
    *

    * The mode parameter consists of three octal * number components specifying access restrictions for the owner, * the user group in which the owner is in, and to everybody else in * this order. One component can be computed by adding up the needed * permissions for that target user base. Number 1 means that you * grant execute rights, number 2 means that you make the file * writeable, number 4 means that you make the file readable. Add * up these numbers to specify needed rights. You can also read more * about modes on Unix systems with 'man 1 chmod' * and 'man 2 chmod'. *

    * @return bool true on success or false on failure. */ function chmod(string $filename, int $permissions): bool {} /** * Sets access and modification time of file * @link https://php.net/manual/en/function.touch.php * @param string $filename

    * The name of the file being touched. *

    * @param int|null $mtime [optional]

    * The touch time. If time is not supplied, * the current system time is used. *

    * @param int|null $atime [optional]

    * If present, the access time of the given filename is set to * the value of atime. Otherwise, it is set to * time. *

    * @return bool true on success or false on failure. */ function touch(string $filename, ?int $mtime, ?int $atime): bool {} /** * Clears file status cache * @link https://php.net/manual/en/function.clearstatcache.php * @param bool $clear_realpath_cache [optional]

    * Whenever to clear realpath cache or not. *

    * @param string $filename

    * Clear realpath cache on a specific filename, only used if * clear_realpath_cache is true. *

    * @return void */ function clearstatcache(bool $clear_realpath_cache = false, string $filename = ''): void {} /** * Returns the total size of a filesystem or disk partition * @link https://php.net/manual/en/function.disk-total-space.php * @param string $directory

    * A directory of the filesystem or disk partition. *

    * @return float|false the total number of bytes as a float * or false on failure. */ #[Pure(true)] function disk_total_space(string $directory): float|false {} /** * Returns available space in directory * @link https://php.net/manual/en/function.disk-free-space.php * @param string $directory

    * A directory of the filesystem or disk partition. *

    *

    * Given a file name instead of a directory, the behaviour of the * function is unspecified and may differ between operating systems and * PHP versions. *

    * @return float|false the number of available bytes as a float * or false on failure. */ #[Pure(true)] function disk_free_space(string $directory): float|false {} /** * Alias of {@see disk_free_space} * @link https://php.net/manual/en/function.diskfreespace.php * @see disk_free_space * @param string $directory * @return float|false */ #[Pure(true)] function diskfreespace(string $directory): float|false {} /** * Send mail * @link https://php.net/manual/en/function.mail.php * @param string $to

    * Receiver, or receivers of the mail. *

    *

    * The formatting of this string must comply with * RFC 2822. Some examples are: * user@example.com * user@example.com, anotheruser@example.com * User <user@example.com> * User <user@example.com>, Another User <anotheruser@example.com> *

    * @param string $subject

    * Subject of the email to be sent. *

    *

    * Subject must satisfy RFC 2047. *

    * @param string $message

    * Message to be sent. *

    *

    * Each line should be separated with a LF (\n). Lines should not be larger * than 70 characters. *

    *

    * Caution * (Windows only) When PHP is talking to a SMTP server directly, if a full * stop is found on the start of a line, it is removed. To counter-act this, * replace these occurrences with a double dot. *

    *
     * 
     * 
    * @param string|array $additional_headers

    * String or array to be inserted at the end of the email header.
    * Since 7.2.0 accepts an array. Its keys are the header names and its values are the respective header values. *

    *

    * This is typically used to add extra headers (From, Cc, and Bcc). * Multiple extra headers should be separated with a CRLF (\r\n). *

    *

    * When sending mail, the mail must contain * a From header. This can be set with the * additional_headers parameter, or a default * can be set in "php.ini". *

    *

    * Failing to do this will result in an error * message similar to Warning: mail(): "sendmail_from" not * set in php.ini or custom "From:" header missing. * The From header sets also * Return-Path under Windows. *

    *

    * If messages are not received, try using a LF (\n) only. * Some poor quality Unix mail transfer agents replace LF by CRLF * automatically (which leads to doubling CR if CRLF is used). * This should be a last resort, as it does not comply with * RFC 2822. *

    * @param string $additional_params

    * The additional_parameters parameter * can be used to pass additional flags as command line options to the * program configured to be used when sending mail, as defined by the * sendmail_path configuration setting. For example, * this can be used to set the envelope sender address when using * sendmail with the -f sendmail option. *

    *

    * The user that the webserver runs as should be added as a trusted user to the * sendmail configuration to prevent a 'X-Warning' header from being added * to the message when the envelope sender (-f) is set using this method. * For sendmail users, this file is /etc/mail/trusted-users. *

    * @return bool true if the mail was successfully accepted for delivery, false otherwise. *

    * It is important to note that just because the mail was accepted for delivery, * it does NOT mean the mail will actually reach the intended destination. *

    */ function mail(string $to, string $subject, string $message, array|string $additional_headers = [], string $additional_params = ''): bool {} /** * Calculate the hash value needed by EZMLM * @link https://php.net/manual/en/function.ezmlm-hash.php * @param string $addr

    * The email address that's being hashed. *

    * @return int The hash value of addr. * @removed 8.0 */ #[Deprecated(since: '7.4')] function ezmlm_hash(string $addr): int {} /** * Open connection to system logger * @link https://php.net/manual/en/function.openlog.php * @param string $prefix

    * The string ident is added to each message. *

    * @param int $flags

    * The option argument is used to indicate * what logging options will be used when generating a log message. * * openlog Options * * * * * * * * * * * * * * * * * * * * * * * * *
    ConstantDescription
    LOG_CONS * if there is an error while sending data to the system logger, * write directly to the system console *
    LOG_NDELAY * open the connection to the logger immediately *
    LOG_ODELAY * (default) delay opening the connection until the first * message is logged *
    LOG_PERRORprint log message also to standard error
    LOG_PIDinclude PID with each message
    * You can use one or more of this options. When using multiple options * you need to OR them, i.e. to open the connection * immediately, write to the console and include the PID in each message, * you will use: LOG_CONS | LOG_NDELAY | LOG_PID *

    * @param int $facility

    * The facility argument is used to specify what * type of program is logging the message. This allows you to specify * (in your machine's syslog configuration) how messages coming from * different facilities will be handled. * * openlog Facilities * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    ConstantDescription
    LOG_AUTH * security/authorization messages (use * LOG_AUTHPRIV instead * in systems where that constant is defined) *
    LOG_AUTHPRIVsecurity/authorization messages (private)
    LOG_CRONclock daemon (cron and at)
    LOG_DAEMONother system daemons
    LOG_KERNkernel messages
    LOG_LOCAL0 ... LOG_LOCAL7reserved for local use, these are not available in Windows
    LOG_LPRline printer subsystem
    LOG_MAILmail subsystem
    LOG_NEWSUSENET news subsystem
    LOG_SYSLOGmessages generated internally by syslogd
    LOG_USERgeneric user-level messages
    LOG_UUCPUUCP subsystem
    *

    *

    * LOG_USER is the only valid log type under Windows * operating systems *

    * @return bool true on success or false on failure. */ #[LanguageLevelTypeAware(["8.2" => "true"], default: "bool")] function openlog(string $prefix, int $flags, int $facility) {} "int", "message" => "string", "file" => "string", "line" => "int"])] #[Pure(true)] function error_get_last(): ?array {} /** * Call the callback given by the first parameter * @link https://php.net/manual/en/function.call-user-func.php * @param callable $callback

    * The function to be called. Class methods may also be invoked * statically using this function by passing * array($classname, $methodname) to this parameter. * Additionally class methods of an object instance may be called by passing * array($objectinstance, $methodname) to this parameter. *

    * @param mixed ...$args [optional]

    * Zero or more parameters to be passed to the function. *

    *

    * Note that the parameters for call_user_func are * not passed by reference. * call_user_func example and references *

    * @return mixed the function result, or false on error. */ function call_user_func(callable $callback, mixed ...$args): mixed {} /** * Call a callback with an array of parameters * @link https://php.net/manual/en/function.call-user-func-array.php * @param callable $callback

    * The function to be called. *

    * @param array $args

    * The parameters to be passed to the function, as an indexed array. *

    * @return mixed the function result, or false on error. */ function call_user_func_array(callable $callback, array $args): mixed {} /** * Call a user method on an specific object * @link https://php.net/manual/en/function.call-user-method.php * @param string $method_name * @param object &$obj * @param mixed ...$parameter [optional] * @return mixed * @removed 7.0 * @see call_user_func() */ #[Deprecated(reason: "use call_user_func() instead", since: "5.3")] function call_user_method(string $method_name, object &$obj, ...$parameter): mixed {} /** * Call a user method given with an array of parameters * @link https://php.net/manual/en/function.call-user-method-array.php * @param string $method_name * @param object &$obj * @param array $params * @return mixed * @removed 7.0 * @see call_user_func() */ #[Deprecated(reason: "use call_user_func() instead", since: "5.3")] function call_user_method_array(string $method_name, object &$obj, array $params): mixed {} /** * Call a static method * @link https://php.net/manual/en/function.forward-static-call.php * @param callable $callback

    * The function or method to be called. This parameter may be an array, * with the name of the class, and the method, or a string, with a function * name. *

    * @param mixed ...$args [optional]

    * Zero or more parameters to be passed to the function. *

    * @return mixed the function result, or false on error. */ function forward_static_call(callable $callback, mixed ...$args): mixed {} /** * Call a static method and pass the arguments as array * @link https://php.net/manual/en/function.forward-static-call-array.php * @param callable $callback

    * The function or method to be called. This parameter may be an array, * with the name of the class, and the method, or a string, with a function * name. *

    * @param array $args * @return mixed the function result, or false on error. */ function forward_static_call_array(callable $callback, array $args): mixed {} /** * Generates a storable representation of a value * @link https://php.net/manual/en/function.serialize.php * @param mixed $value

    * The value to be serialized. serialize * handles all types, except the resource-type. * You can even serialize arrays that contain * references to itself. Circular references inside the array/object you * are serializing will also be stored. Any other * reference will be lost. *

    *

    * When serializing objects, PHP will attempt to call the member function * __sleep prior to serialization. * This is to allow the object to do any last minute clean-up, etc. prior * to being serialized. Likewise, when the object is restored using * unserialize the __wakeup member function is called. *

    *

    * Object's private members have the class name prepended to the member * name; protected members have a '*' prepended to the member name. * These prepended values have null bytes on either side. *

    * @return string a string containing a byte-stream representation of * value that can be stored anywhere. */ function serialize(mixed $value): string {} /** * Creates a PHP value from a stored representation * @link https://php.net/manual/en/function.unserialize.php * @param string $data

    * The serialized string. *

    *

    * If the variable being unserialized is an object, after successfully * reconstructing the object PHP will automatically attempt to call the * __wakeup member function (if it exists). *

    *

    * unserialize_callback_func directive *

    *

    * It's possible to set a callback-function which will be called, * if an undefined class should be instantiated during unserializing. * (to prevent getting an incomplete object "__PHP_Incomplete_Class".) * Use your "php.ini", ini_set or ".htaccess" * to define 'unserialize_callback_func'. Everytime an undefined class * should be instantiated, it'll be called. To disable this feature just * empty this setting. *

    * @param array $options [optional] *

    Any options to be provided to unserialize(), as an associative array.

    *

    * The 'allowed_classes' option key may be set to a value that is * either an array of class names which should be accepted, FALSE to * accept no classes, or TRUE to accept all classes. If this option is defined * and unserialize() encounters an object of a class that isn't to be accepted, * then the object will be instantiated as __PHP_Incomplete_Class instead. * Omitting this option is the same as defining it as TRUE: PHP will attempt * to instantiate objects of any class. *

    * @return mixed

    The converted value is returned, and can be a boolean, * integer, float, string, * array or object. *

    *

    * In case the passed string is not unserializeable, false is returned and * E_NOTICE is issued.

    */ function unserialize(string $data, #[PhpStormStubsElementAvailable(from: '7.0')] array $options = []): mixed {} /** * Dumps information about a variable * @link https://php.net/manual/en/function.var-dump.php * @param mixed $value

    * The variable you want to export. *

    * @param mixed ...$values [optional] * @return void */ #[PhpStormStubsElementAvailable(from: '8.0')] function var_dump(mixed $value, mixed ...$values): void {} /** * Dumps information about a variable * @link https://php.net/manual/en/function.var-dump.php * @param mixed ...$vars

    * The variable you want to export. *

    * @return void */ #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] function var_dump(...$vars): void {} /** * Outputs or returns a parsable string representation of a variable * @link https://php.net/manual/en/function.var-export.php * @param mixed $value

    * The variable you want to export. *

    * @param bool $return [optional]

    * If used and set to true, var_export will return * the variable representation instead of outputting it. *

    * @return string|null the variable representation when the return * parameter is used and evaluates to true. Otherwise, this function will * return null. */ function var_export(mixed $value, bool $return = false): ?string {} /** * Dumps a string representation of an internal zend value to output * @link https://php.net/manual/en/function.debug-zval-dump.php * @param mixed $value The variable being evaluated. * @param mixed ...$values

    * The other variable being evaluated. *

    * @return void */ function debug_zval_dump( #[PhpStormStubsElementAvailable(from: '8.0')] mixed $value, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $values, mixed ...$values ): void {} /** * Prints human-readable information about a variable * @link https://php.net/manual/en/function.print-r.php * @param mixed $value

    * The expression to be printed. *

    * @param bool $return [optional]

    * If you would like to capture the output of print_r, * use the return parameter. If this parameter is set * to true, print_r will return its output, instead of * printing it (which it does by default). *

    * @return string|bool If given a string, integer or float, * the value itself will be printed. If given an array, values * will be presented in a format that shows keys and elements. Similar * notation is used for objects. */ #[LanguageLevelTypeAware(['8.4' => 'string|true'], default: 'string|bool')] function print_r(mixed $value, bool $return = false) {} /** * Returns the amount of memory allocated to PHP * @link https://php.net/manual/en/function.memory-get-usage.php * @param bool $real_usage [optional]

    * Set this to true to get the real size of memory allocated from * system. If not set or false only the memory used by * emalloc() is reported. *

    * @return int the memory amount in bytes. */ #[Pure(true)] function memory_get_usage(bool $real_usage = false): int {} /** * Returns the peak of memory allocated by PHP * @link https://php.net/manual/en/function.memory-get-peak-usage.php * @param bool $real_usage [optional]

    * Set this to true to get the real size of memory allocated from * system. If not set or false only the memory used by * emalloc() is reported. *

    * @return int the memory peak in bytes. */ #[Pure(true)] function memory_get_peak_usage(bool $real_usage = false): int {} /** * @since 8.2 */ function memory_reset_peak_usage(): void {} /** * Register a function for execution on shutdown * @link https://php.net/manual/en/function.register-shutdown-function.php * @param callable $callback

    * The shutdown function to register. *

    *

    * The shutdown functions are called as the part of the request so that * it's possible to send the output from them. There is currently no way * to process the data with output buffering functions in the shutdown * function. *

    *

    * Shutdown functions are called after closing all opened output buffers * thus, for example, its output will not be compressed if zlib.output_compression is * enabled. *

    * @param mixed ...$args [optional]

    * It is possible to pass parameters to the shutdown function by passing * additional parameters. *

    * @return bool|null */ #[LanguageLevelTypeAware(['8.2' => 'void'], default: 'null|bool')] function register_shutdown_function(callable $callback, mixed ...$args): ?bool {} /** * Register a function for execution on each tick * @link https://php.net/manual/en/function.register-tick-function.php * @param callable $callback

    * The function name as a string, or an array consisting of an object and * a method. *

    * @param mixed ...$args [optional]

    *

    * @return bool true on success or false on failure. */ function register_tick_function(callable $callback, mixed ...$args): bool {} /** * De-register a function for execution on each tick * @link https://php.net/manual/en/function.unregister-tick-function.php * @param callable $callback

    * The function name as a string, or an array consisting of an object and * a method. *

    * @return void */ function unregister_tick_function(callable $callback): void {} /** * Syntax highlighting of a file * @link https://php.net/manual/en/function.highlight-file.php * @param string $filename

    * Path to the PHP file to be highlighted. *

    * @param bool $return [optional]

    * Set this parameter to true to make this function return the * highlighted code. *

    * @return string|bool If return is set to true, returns the highlighted * code as a string instead of printing it out. Otherwise, it will return * true on success, false on failure. */ function highlight_file(string $filename, bool $return = false): string|bool {} /** * Alias: * {@see highlight_file} * @link https://php.net/manual/en/function.show-source.php * @param string $filename * @param bool $return [optional] * @return string|bool */ function show_source(string $filename, bool $return = false): string|bool {} /** * Syntax highlighting of a string * @link https://php.net/manual/en/function.highlight-string.php * @param string $string

    * The PHP code to be highlighted. This should include the opening tag. *

    * @param bool $return [optional]

    * Set this parameter to true to make this function return the * highlighted code. *

    * @return string|bool If return is set to true, returns the highlighted * code as a string instead of printing it out. Otherwise, it will return * true on success, false on failure. */ #[LanguageLevelTypeAware(['8.4' => 'string|true'], default: 'string|bool')] function highlight_string(string $string, bool $return = false) {} /** * Get the system's high resolution time * @link https://secure.php.net/manual/en/function.hrtime.php * @param bool $as_number

    Whether the high resolution time should be returned as array or number.

    * @since 7.3 * @return int[]|int|float|false Returns an array of integers in the form [seconds, nanoseconds], if the parameter get_as_number is false. * Otherwise the nanoseconds are returned as integer (64bit platforms) or float (32bit platforms). */ #[Pure(true)] function hrtime(bool $as_number = false): array|int|float|false {} /** * Return source with stripped comments and whitespace * @link https://php.net/manual/en/function.php-strip-whitespace.php * @param string $filename

    * Path to the PHP file. *

    * @return string The stripped source code will be returned on success, or an empty string * on failure. *

    *

    * This function works as described as of PHP 5.0.1. Before this it would * only return an empty string. For more information on this bug and its * prior behavior, see bug report * #29606. */ #[Pure(true)] function php_strip_whitespace(string $filename): string {} /** * Gets the value of a configuration option * @link https://php.net/manual/en/function.ini-get.php * @link https://php.net/manual/en/ini.list.php * @param string $option

    * The configuration option name. *

    * @return string|false the value of the configuration option as a string on success, or * an empty string on failure or for null values. */ #[Pure(true)] function ini_get(string $option): string|false {} /** * Gets all configuration options * @link https://php.net/manual/en/function.ini-get-all.php * @link https://php.net/manual/en/ini.list.php * @param string|null $extension [optional]

    * An optional extension name. If set, the function return only options * specific for that extension. *

    * @param bool $details [optional]

    * Retrieve details settings or only the current value for each setting. * Default is true (retrieve details). *

    * @return array|false an associative array with directive name as the array key. *

    * When details is true (default) the array will * contain global_value (set in * "php.ini"), local_value (perhaps set with * ini_set or ".htaccess"), and * access (the access level). *

    *

    * When details is false the value will be the * current value of the option. *

    *

    * See the manual section * for information on what access levels mean. *

    *

    * It's possible for a directive to have multiple access levels, which is * why access shows the appropriate bitmask values. *

    */ #[Pure(true)] #[ArrayShape(["global_value" => "string", "local_value" => "string", "access" => "int"])] function ini_get_all(?string $extension, #[PhpStormStubsElementAvailable(from: '7.0')] bool $details = true): array|false {} /** * Sets the value of a configuration option * @link https://php.net/manual/en/function.ini-set.php * @link https://php.net/manual/en/ini.list.php * @param string $option

    *

    *

    * Not all the available options can be changed using * ini_set. There is a list of all available options * in the appendix. *

    * @param string $value

    * The new value for the option. *

    * @return string|false the old value on success, false on failure. */ function ini_set(string $option, #[LanguageLevelTypeAware(['8.1' => 'string|int|float|bool|null'], default: 'string')] $value): string|false {} /** * Alias: * {@see ini_set} * @link https://php.net/manual/en/function.ini-alter.php * @link https://php.net/manual/en/ini.list.php * @param string $option * @param string $value * @return string|false */ function ini_alter(string $option, #[LanguageLevelTypeAware(['8.1' => 'string|int|float|bool|null'], default: 'string')] $value): string|false {} /** * Restores the value of a configuration option * @link https://php.net/manual/en/function.ini-restore.php * @link https://php.net/manual/en/ini.list.php * @param string $option

    * The configuration option name. *

    * @return void */ function ini_restore(string $option): void {} /** * @param string $shorthand * @return int * @since 8.2 */ function ini_parse_quantity(string $shorthand): int {} /** * Gets the current include_path configuration option * @link https://php.net/manual/en/function.get-include-path.php * @return string|false the path, as a string. */ #[Pure(true)] function get_include_path(): string|false {} /** * Sets the include_path configuration option * @link https://php.net/manual/en/function.set-include-path.php * @param string $include_path

    * The new value for the include_path *

    * @return string|false the old include_path on * success or false on failure. */ function set_include_path(string $include_path): string|false {} /** * Restores the value of the include_path configuration option * @link https://php.net/manual/en/function.restore-include-path.php * @return void * @removed 8.0 */ #[Deprecated(since: '7.4')] function restore_include_path() {} /** * Send a cookie * @link https://php.net/manual/en/function.setcookie.php * @param string $name

    * The name of the cookie. *

    * @param string $value [optional]

    * The value of the cookie. This value is stored on the clients * computer; do not store sensitive information. * Assuming the name is 'cookiename', this * value is retrieved through $_COOKIE['cookiename'] *

    * @param int $expires_or_options [optional]

    * The time the cookie expires. This is a Unix timestamp so is * in number of seconds since the epoch. In other words, you'll * most likely set this with the time function * plus the number of seconds before you want it to expire. Or * you might use mktime. * time()+60*60*24*30 will set the cookie to * expire in 30 days. If set to 0, or omitted, the cookie will expire at * the end of the session (when the browser closes). *

    *

    *

    * You may notice the expire parameter takes on a * Unix timestamp, as opposed to the date format Wdy, DD-Mon-YYYY * HH:MM:SS GMT, this is because PHP does this conversion * internally. *

    *

    * expire is compared to the client's time which can * differ from server's time. *

    *

    * @param string $path [optional]

    * The path on the server in which the cookie will be available on. * If set to '/', the cookie will be available * within the entire domain. If set to * '/foo/', the cookie will only be available * within the /foo/ directory and all * sub-directories such as /foo/bar/ of * domain. The default value is the * current directory that the cookie is being set in. *

    * @param string $domain [optional]

    * The domain that the cookie is available. * To make the cookie available on all subdomains of example.com * then you'd set it to '.example.com'. The * . is not required but makes it compatible * with more browsers. Setting it to www.example.com * will make the cookie only available in the www * subdomain. Refer to tail matching in the * spec for details. *

    * @param bool $secure [optional]

    * Indicates that the cookie should only be transmitted over a * secure HTTPS connection from the client. When set to true, the * cookie will only be set if a secure connection exists. * On the server-side, it's on the programmer to send this * kind of cookie only on secure connection (e.g. with respect to * $_SERVER["HTTPS"]). *

    * @param bool $httponly [optional]

    * When true the cookie will be made accessible only through the HTTP * protocol. This means that the cookie won't be accessible by * scripting languages, such as JavaScript. This setting can effectively * help to reduce identity theft through XSS attacks (although it is * not supported by all browsers). Added in PHP 5.2.0. * true or false *

    * @return bool If output exists prior to calling this function, * setcookie will fail and return false. If * setcookie successfully runs, it will return true. * This does not indicate whether the user accepted the cookie. */ function setcookie(string $name, string $value = "", int $expires_or_options = 0, string $path = "", string $domain = "", bool $secure = false, bool $httponly = false): bool {} /** * Send a cookie * * @link https://php.net/manual/en/function.setcookie.php * * @param string $name The name of the cookie. * @param string $value [optional] The value of the cookie. This value is stored on the clients * computer; do not store sensitive information. * Assuming the name is 'cookiename', this value is retrieved through $_COOKIE['cookiename'] * @param array $options [optional] An associative array which may have any of the keys expires, path, domain, secure, * httponly and samesite. The values have the same meaning as described for the parameters with * the same name. The value of the samesite element should be either Lax or Strict. * If any of the allowed options are not given, their default values are the same * as the default values of the explicit parameters. If the samesite element is omitted, * no SameSite cookie attribute is set. * * @return bool If output exists prior to calling this function, setcookie will fail and return false. If * setcookie successfully runs, it will return true. * This does not indicate whether the user accepted the cookie. * @since 7.3 */ function setcookie(string $name, string $value = '', array $options = []): bool {} /** * Send a cookie without urlencoding the cookie value * @link https://php.net/manual/en/function.setrawcookie.php * @param string $name * @param string $value [optional] * @param int $expires_or_options [optional] * @param string $path [optional] * @param string $domain [optional] * @param bool $secure [optional] * @param bool $httponly [optional] * @return bool true on success or false on failure. */ function setrawcookie(string $name, $value = '', $expires_or_options = 0, $path = "", $domain = "", $secure = false, $httponly = false): bool {} /** * Send a cookie without urlencoding the cookie value * * @link https://php.net/manual/en/function.setrawcookie.php * * @param string $name The name of the cookie. * @param string $value [optional] The value of the cookie. This value is stored on the clients * computer; do not store sensitive information. * Assuming the name is 'cookiename', this value is retrieved through $_COOKIE['cookiename'] * @param array $options [optional] An associative array which may have any of the keys expires, path, domain, secure, * httponly and samesite. The values have the same meaning as described for the parameters with * the same name. The value of the samesite element should be either Lax or Strict. * If any of the allowed options are not given, their default values are the same * as the default values of the explicit parameters. If the samesite element is omitted, * no SameSite cookie attribute is set. * * @return bool If output exists prior to calling this function, setcookie will fail and return false. If * setcookie successfully runs, it will return true. * This does not indicate whether the user accepted the cookie. * @since 7.3 */ function setrawcookie(string $name, $value = '', array $options = []): bool {} /** * Send a raw HTTP header * @link https://php.net/manual/en/function.header.php * @param string $header

    * The header string. *

    *

    * There are two special-case header calls. The first is a header * that starts with the string "HTTP/" (case is not * significant), which will be used to figure out the HTTP status * code to send. For example, if you have configured Apache to * use a PHP script to handle requests for missing files (using * the ErrorDocument directive), you may want to * make sure that your script generates the proper status code. *

    *

    * The second special case is the "Location:" header. Not only does * it send this header back to the browser, but it also returns a * REDIRECT (302) status code to the browser * unless the 201 or * a 3xx status code has already been set. *

    * @param bool $replace [optional]

    * The optional replace parameter indicates * whether the header should replace a previous similar header, or * add a second header of the same type. By default it will replace, * but if you pass in false as the second argument you can force * multiple headers of the same type. For example: *

    * @param int $response_code

    * Forces the HTTP response code to the specified value. *

    * @return void */ function header(string $header, bool $replace = true, int $response_code = 0): void {} /** * Remove previously set headers * @link https://php.net/manual/en/function.header-remove.php * @param string|null $name [optional]

    * The header name to be removed. *

    * This parameter is case-insensitive. * @return void */ function header_remove(?string $name = null): void {} /** * Checks if or where headers have been sent * @link https://php.net/manual/en/function.headers-sent.php * @param string &$filename [optional]

    * If the optional file and * line parameters are set, * headers_sent will put the PHP source file name * and line number where output started in the file * and line variables. *

    * @param int &$line [optional]

    * The line number where the output started. *

    * @return bool headers_sent will return false if no HTTP headers * have already been sent or true otherwise. */ function headers_sent(&$filename = null, &$line = null): bool {} /** * Returns a list of response headers sent (or ready to send) * @link https://php.net/manual/en/function.headers-list.php * @return array a numerically indexed array of headers. */ #[Pure] function headers_list(): array {} /** * Fetches all HTTP request headers from the current request * @link https://php.net/manual/en/function.apache-request-headers.php * @return array|false An associative array of all the HTTP headers in the current request, or FALSE on failure. */ #[Pure] function apache_request_headers(): false|array {} /** * Fetches all HTTP headers from the current request. * This function is an alias for apache_request_headers(). Please read the apache_request_headers() documentation for more information on how this function works. * @link https://php.net/manual/en/function.getallheaders.php * @return array|false An associative array of all the HTTP headers in the current request, or FALSE on failure. */ #[Pure] function getallheaders(): false|array {} /** * Check whether client disconnected * @link https://php.net/manual/en/function.connection-aborted.php * @return int 1 if client disconnected, 0 otherwise. */ #[Pure(true)] function connection_aborted(): int {} /** * Returns connection status bitfield * @link https://php.net/manual/en/function.connection-status.php * @return int the connection status bitfield, which can be used against the * CONNECTION_XXX constants to determine the connection * status. */ #[Pure(true)] function connection_status(): int {} /** * Set whether a client disconnect should abort script execution * @link https://php.net/manual/en/function.ignore-user-abort.php * @param bool|null $enable [optional]

    * If set, this function will set the ignore_user_abort ini setting * to the given value. If not, this function will * only return the previous setting without changing it. *

    * @return int the previous setting, as an integer. */ function ignore_user_abort(?bool $enable): int {} /** * Parse a configuration file * @link https://php.net/manual/en/function.parse-ini-file.php * @param string $filename

    * The filename of the ini file being parsed. *

    * @param bool $process_sections [optional]

    * By setting the process_sections * parameter to true, you get a multidimensional array, with * the section names and settings included. The default * for process_sections is false *

    * @param int $scanner_mode [optional]

    * Can either be INI_SCANNER_NORMAL (default) or * INI_SCANNER_RAW. If INI_SCANNER_RAW * is supplied, then option values will not be parsed. *

    *

    * As of PHP 5.6.1 can also be specified as INI_SCANNER_TYPED. * In this mode boolean, null and integer types are preserved when possible. * String values "true", "on" and "yes" * are converted to TRUE. "false", "off", "no" * and "none" are considered FALSE. "null" is converted to NULL * in typed mode. Also, all numeric strings are converted to integer type if it is possible. *

    * @return array|false The settings are returned as an associative array on success, * and false on failure. */ #[Pure(true)] function parse_ini_file(string $filename, bool $process_sections = false, int $scanner_mode = INI_SCANNER_NORMAL): array|false {} /** * Parse a configuration string * @link https://php.net/manual/en/function.parse-ini-string.php * @param string $ini_string

    * The contents of the ini file being parsed. *

    * @param bool $process_sections [optional]

    * By setting the process_sections * parameter to true, you get a multidimensional array, with * the section names and settings included. The default * for process_sections is false *

    * @param int $scanner_mode [optional]

    * Can either be INI_SCANNER_NORMAL (default) or * INI_SCANNER_RAW. If INI_SCANNER_RAW * is supplied, then option values will not be parsed. *

    * @return array|false The settings are returned as an associative array on success, * and false on failure. */ #[Pure] function parse_ini_string(string $ini_string, bool $process_sections = false, int $scanner_mode = INI_SCANNER_NORMAL): array|false {} /** * Tells whether the file was uploaded via HTTP POST * @link https://php.net/manual/en/function.is-uploaded-file.php * @param string $filename

    * The filename being checked. *

    * @return bool true on success or false on failure. */ #[Pure(true)] function is_uploaded_file(string $filename): bool {} /** * Moves an uploaded file to a new location * @link https://php.net/manual/en/function.move-uploaded-file.php * @param string $from

    * The filename of the uploaded file. *

    * @param string $to

    * The destination of the moved file. *

    * @return bool If filename is not a valid upload file, * then no action will occur, and * move_uploaded_file will return * false. *

    *

    * If filename is a valid upload file, but * cannot be moved for some reason, no action will occur, and * move_uploaded_file will return * false. Additionally, a warning will be issued. */ function move_uploaded_file(string $from, string $to): bool {} /** * @return array|false * @since 7.3 */ #[Pure] #[ArrayShape(["description" => "string", "mac" => "string", "mtu" => "int", "unicast" => "array", "up" => "bool"])] function net_get_interfaces(): array|false {} /** * Get the Internet host name corresponding to a given IP address * @link https://php.net/manual/en/function.gethostbyaddr.php * @param string $ip

    * The host IP address. *

    * @return string|false the host name or the unmodified ip_address * on failure. */ #[Pure] function gethostbyaddr(string $ip): string|false {} /** * Get the IPv4 address corresponding to a given Internet host name * @link https://php.net/manual/en/function.gethostbyname.php * @param string $hostname

    * The host name. *

    * @return string the IPv4 address or a string containing the unmodified * hostname on failure. */ #[Pure] function gethostbyname(string $hostname): string {} /** * Get a list of IPv4 addresses corresponding to a given Internet host * name * @link https://php.net/manual/en/function.gethostbynamel.php * @param string $hostname

    * The host name. *

    * @return array|false an array of IPv4 addresses or false if * hostname could not be resolved. */ #[Pure] function gethostbynamel(string $hostname): array|false {} /** * Gets the host name * @link https://php.net/manual/en/function.gethostname.php * @return string|false a string with the hostname on success, otherwise false is * returned. */ #[Pure] function gethostname(): string|false {} /** * Alias: * {@see checkdnsrr} * @link https://php.net/manual/en/function.dns-check-record.php * @param string $hostname

    * host may either be the IP address in * dotted-quad notation or the host name. *

    * @param string $type [optional]

    * type may be any one of: A, MX, NS, SOA, * PTR, CNAME, AAAA, A6, SRV, NAPTR, TXT or ANY. *

    * @return bool Returns TRUE if any records are found; returns FALSE if no records were found or if an error occurred. */ function dns_check_record(string $hostname, string $type = 'MX'): bool {} /** * Check DNS records corresponding to a given Internet host name or IP address * @link https://php.net/manual/en/function.checkdnsrr.php * @param string $hostname

    * host may either be the IP address in * dotted-quad notation or the host name. *

    * @param string $type [optional]

    * type may be any one of: A, MX, NS, SOA, * PTR, CNAME, AAAA, A6, SRV, NAPTR, TXT or ANY. *

    * @return bool true if any records are found; returns false if no records * were found or if an error occurred. */ #[Pure] function checkdnsrr(string $hostname, string $type = 'MX'): bool {} /** * Alias: * {@see getmxrr} * @link https://php.net/manual/en/function.dns-get-mx.php * @param string $hostname * @param array &$hosts * @param array &$weights [optional] * @return bool */ function dns_get_mx(string $hostname, &$hosts, &$weights): bool {} /** * Get MX records corresponding to a given Internet host name * @link https://php.net/manual/en/function.getmxrr.php * @param string $hostname

    * The Internet host name. *

    * @param array &$hosts

    * A list of the MX records found is placed into the array * mxhosts. *

    * @param array &$weights [optional]

    * If the weight array is given, it will be filled * with the weight information gathered. *

    * @return bool true if any records are found; returns false if no records * were found or if an error occurred. */ function getmxrr(string $hostname, &$hosts, &$weights): bool {} /** * Fetch DNS Resource Records associated with a hostname * @link https://php.net/manual/en/function.dns-get-record.php * @param string $hostname

    * hostname should be a valid DNS hostname such * as "www.example.com". Reverse lookups can be generated * using in-addr.arpa notation, but * gethostbyaddr is more suitable for * the majority of reverse lookups. *

    *

    * Per DNS standards, email addresses are given in user.host format (for * example: hostmaster.example.com as opposed to hostmaster@example.com), * be sure to check this value and modify if necessary before using it * with a functions such as mail. *

    * @param int $type [optional]

    * By default, dns_get_record will search for any * resource records associated with hostname. * To limit the query, specify the optional type * parameter. May be any one of the following: * DNS_A, DNS_CNAME, * DNS_HINFO, DNS_MX, * DNS_NS, DNS_PTR, * DNS_SOA, DNS_TXT, * DNS_AAAA, DNS_SRV, * DNS_NAPTR, DNS_A6, * DNS_ALL or DNS_ANY. *

    *

    * Because of eccentricities in the performance of libresolv * between platforms, DNS_ANY will not * always return every record, the slower DNS_ALL * will collect all records more reliably. *

    * @param array &$authoritative_name_servers [optional]

    * Passed by reference and, if given, will be populated with Resource * Records for the Authoritative Name Servers. *

    * @param array &$additional_records [optional]

    * Passed by reference and, if given, will be populated with any * Additional Records. *

    * @param bool $raw [optional]

    * In case of raw mode, we query only the requested type * instead of looping type by type before going with the additional info stuff. *

    * @return array|false This function returns an array of associative arrays. Each associative array contains * at minimum the following keys: * * Basic DNS attributes * * * * * * * * * * * * * * * * * * * * *
    AttributeMeaning
    host * The record in the DNS namespace to which the rest of the associated data refers. *
    class * dns_get_record only returns Internet class records and as * such this parameter will always return IN. *
    type * String containing the record type. Additional attributes will also be contained * in the resulting array dependant on the value of type. See table below. *
    ttl * "Time To Live" remaining for this record. This will not equal * the record's original ttl, but will rather equal the original ttl minus whatever * length of time has passed since the authoritative name server was queried. *
    *

    *

    * * Other keys in associative arrays dependant on 'type' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    TypeExtra Columns
    A * ip: An IPv4 addresses in dotted decimal notation. *
    MX * pri: Priority of mail exchanger. * Lower numbers indicate greater priority. * target: FQDN of the mail exchanger. * See also dns_get_mx. *
    CNAME * target: FQDN of location in DNS namespace to which * the record is aliased. *
    NS * target: FQDN of the name server which is authoritative * for this hostname. *
    PTR * target: Location within the DNS namespace to which * this record points. *
    TXT * txt: Arbitrary string data associated with this record. *
    HINFO * cpu: IANA number designating the CPU of the machine * referenced by this record. * os: IANA number designating the Operating System on * the machine referenced by this record. * See IANA's Operating System * Names for the meaning of these values. *
    SOA * mname: FQDN of the machine from which the resource * records originated. * rname: Email address of the administrative contain * for this domain. * serial: Serial # of this revision of the requested * domain. * refresh: Refresh interval (seconds) secondary name * servers should use when updating remote copies of this domain. * retry: Length of time (seconds) to wait after a * failed refresh before making a second attempt. * expire: Maximum length of time (seconds) a secondary * DNS server should retain remote copies of the zone data without a * successful refresh before discarding. * minimum-ttl: Minimum length of time (seconds) a * client can continue to use a DNS resolution before it should request * a new resolution from the server. Can be overridden by individual * resource records. *
    AAAA * ipv6: IPv6 address *
    A6(PHP >= 5.1.0) * masklen: Length (in bits) to inherit from the target * specified by chain. * ipv6: Address for this specific record to merge with * chain. * chain: Parent record to merge with * ipv6 data. *
    SRV * pri: (Priority) lowest priorities should be used first. * weight: Ranking to weight which of commonly prioritized * targets should be chosen at random. * target and port: hostname and port * where the requested service can be found. * For additional information see: RFC 2782 *
    NAPTR * order and pref: Equivalent to * pri and weight above. * flags, services, regex, * and replacement: Parameters as defined by * RFC 2915. *
    */ function dns_get_record(string $hostname, int $type = DNS_ANY, &$authoritative_name_servers, &$additional_records, bool $raw = false): array|false {} * The input string. *

    * @return string the uppercased string. */ #[Pure] function strtoupper(string $string): string {} /** * Make a string lowercase * @link https://php.net/manual/en/function.strtolower.php * @param string $string

    * The input string. *

    * @return string the lowercased string. */ #[Pure] function strtolower(string $string): string {} /** * Find the position of the first occurrence of a substring in a string * @link https://php.net/manual/en/function.strpos.php * @param string $haystack

    * The string to search in *

    * @param string $needle

    * If needle is not a string, it is converted * to an integer and applied as the ordinal value of a character. *

    * @param int<0,max> $offset [optional]

    * If specified, search will start this number of characters counted from * the beginning of the string. Unlike {@see strrpos()} and {@see strripos()}, the offset cannot be negative. *

    * @return int<0,max>|false

    * Returns the position where the needle exists relative to the beginning of * the haystack string (independent of search direction * or offset). * Also note that string positions start at 0, and not 1. *

    *

    * Returns FALSE if the needle was not found. *

    */ #[Pure] function strpos(string $haystack, string $needle, int $offset = 0): int|false {} /** * Find position of first occurrence of a case-insensitive string * @link https://php.net/manual/en/function.stripos.php * @param string $haystack

    * The string to search in *

    * @param string $needle

    * Note that the needle may be a string of one or * more characters. *

    *

    * If needle is not a string, it is converted to * an integer and applied as the ordinal value of a character. *

    * @param int $offset

    * The optional offset parameter allows you * to specify which character in haystack to * start searching. The position returned is still relative to the * beginning of haystack. *

    * @return int|false If needle is not found, * stripos will return boolean false. */ #[Pure] function stripos(string $haystack, string $needle, int $offset = 0): int|false {} /** * Find the position of the last occurrence of a substring in a string * @link https://php.net/manual/en/function.strrpos.php * @param string $haystack

    * The string to search in. *

    * @param string $needle

    * If needle is not a string, it is converted to an integer and applied as the ordinal value of a character. *

    * @param int $offset [optional]

    * If specified, search will start this number of characters counted from the beginning of the string. If the value is negative, search will instead start from that many characters from the end of the string, searching backwards. *

    * @return int|false

    * Returns the position where the needle exists relative to the beginning of * the haystack string (independent of search direction * or offset). * Also note that string positions start at 0, and not 1. *

    *

    * Returns FALSE if the needle was not found. *

    */ #[Pure] function strrpos(string $haystack, string $needle, int $offset = 0): int|false {} /** * Find position of last occurrence of a case-insensitive string in a string * @link https://php.net/manual/en/function.strripos.php * @param string $haystack

    * The string to search in *

    * @param string $needle

    * Note that the needle may be a string of one or * more characters. *

    * @param int $offset

    * The offset parameter may be specified to begin * searching an arbitrary number of characters into the string. *

    *

    * Negative offset values will start the search at * offset characters from the * start of the string. *

    * @return int|false the numerical position of the last occurrence of * needle. Also note that string positions start at 0, * and not 1. *

    *

    * If needle is not found, false is returned. */ #[Pure] function strripos(string $haystack, string $needle, int $offset = 0): int|false {} /** * Reverse a string * @link https://php.net/manual/en/function.strrev.php * @param string $string

    * The string to be reversed. *

    * @return string the reversed string. */ #[Pure] function strrev(string $string): string {} /** * Convert logical Hebrew text to visual text * @link https://php.net/manual/en/function.hebrev.php * @param string $string

    * A Hebrew input string. *

    * @param int $max_chars_per_line

    * This optional parameter indicates maximum number of characters per * line that will be returned. *

    * @return string the visual string. */ #[Pure] function hebrev(string $string, int $max_chars_per_line = 0): string {} /** * Convert logical Hebrew text to visual text with newline conversion * @link https://php.net/manual/en/function.hebrevc.php * @param string $hebrew_text

    * A Hebrew input string. *

    * @param int $max_chars_per_line [optional]

    * This optional parameter indicates maximum number of characters per * line that will be returned. *

    * @return string the visual string. * @removed 8.0 */ #[Deprecated(replacement: 'nl2br(hebrev(%parameter0%))', since: '7.4')] function hebrevc(string $hebrew_text, $max_chars_per_line): string {} /** * Inserts HTML line breaks before all newlines in a string * @link https://php.net/manual/en/function.nl2br.php * @param string $string

    * The input string. *

    * @param bool $use_xhtml [optional]

    * Whether to use XHTML compatible line breaks or not. *

    * @return string the altered string. */ #[Pure] function nl2br(string $string, bool $use_xhtml = true): string {} /** * Returns trailing name component of path * @link https://php.net/manual/en/function.basename.php * @param string $path

    * A path. *

    *

    * On Windows, both slash (/) and backslash * (\) are used as directory separator character. In * other environments, it is the forward slash (/). *

    * @param string $suffix

    * If the filename ends in suffix this will also * be cut off. *

    * @return string the base name of the given path. */ #[Pure] function basename(string $path, string $suffix = ''): string {} /** * Returns a parent directory's path * @link https://php.net/manual/en/function.dirname.php * @param string $path

    * A path. *

    *

    * On Windows, both slash (/) and backslash * (\) are used as directory separator character. In * other environments, it is the forward slash (/). *

    * @param int $levels

    * The number of parent directories to go up. * This must be an integer greater than 0. *

    * @return string the name of the directory. If there are no slashes in * path, a dot ('.') is returned, * indicating the current directory. Otherwise, the returned string is * path with any trailing * /component removed. */ #[Pure] function dirname(string $path, #[PhpStormStubsElementAvailable(from: '7.0')] int $levels = 1): string {} /** * Returns information about a file path * @link https://php.net/manual/en/function.pathinfo.php * @param string $path

    * The path being checked. *

    * @param int $flags [optional]

    * You can specify which elements are returned with optional parameter * options. It composes from * PATHINFO_DIRNAME, * PATHINFO_BASENAME, * PATHINFO_EXTENSION and * PATHINFO_FILENAME. It * defaults to return all elements. *

    * @return string|array{dirname: string, basename: string, extension: string, filename: string} The following associative array elements are returned: * dirname, basename, * extension (if any), and filename. *

    *

    * If options is used, this function will return a * string if not all elements are requested. */ #[Pure(true)] #[ArrayShape(['dirname' => 'string', 'basename' => 'string', 'extension' => 'string', 'filename' => 'string'])] function pathinfo(string $path, #[ExpectedValues(flags: [ PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION, PATHINFO_FILENAME ])] int $flags = PATHINFO_ALL): array|string {} /** * Un-quotes a quoted string * @link https://php.net/manual/en/function.stripslashes.php * @param string $string

    * The input string. *

    * @return string a string with backslashes stripped off. * (\' becomes ' and so on.) * Double backslashes (\\) are made into a single * backslash (\). */ #[Pure] function stripslashes(string $string): string {} /** * Un-quote string quoted with addcslashes * @link https://php.net/manual/en/function.stripcslashes.php * @param string $string

    * The string to be unescaped. *

    * @return string the unescaped string. */ #[Pure] function stripcslashes(string $string): string {} /** * Find the first occurrence of a string * @link https://php.net/manual/en/function.strstr.php * @param string $haystack

    * The input string. *

    * @param string $needle

    * If needle is not a string, it is converted to * an integer and applied as the ordinal value of a character. *

    * @param bool $before_needle [optional]

    * If true, strstr returns * the part of the haystack before the first * occurrence of the needle. *

    * @return string|false the portion of string, or false if needle * is not found. */ #[Pure] function strstr(string $haystack, string $needle, bool $before_needle = false): string|false {} /** * Case-insensitive strstr * @link https://php.net/manual/en/function.stristr.php * @param string $haystack

    * The string to search in *

    * @param string $needle

    * If needle is not a string, it is converted to * an integer and applied as the ordinal value of a character. *

    * @param bool $before_needle [optional]

    * If true, stristr * returns the part of the haystack before the * first occurrence of the needle. *

    * @return string|false the matched substring. If needle is not * found, returns false. */ #[Pure] function stristr(string $haystack, string $needle, bool $before_needle = false): string|false {} /** * Find the last occurrence of a character in a string * @link https://php.net/manual/en/function.strrchr.php * @param string $haystack

    * The string to search in *

    * @param string $needle

    * If needle contains more than one character, * only the first is used. This behavior is different from that of {@see strstr()}. *

    *

    * If needle is not a string, it is converted to * an integer and applied as the ordinal value of a character. *

    * @param bool $before_needle Since 8.3 If true, strrchr() returns the part of the haystack before the last occurrence * of the needle (excluding the needle). * @return string|false

    * This function returns the portion of string, or FALSE if * needle is not found. *

    */ #[Pure] function strrchr(string $haystack, string $needle, #[PhpStormStubsElementAvailable(from: '8.3')] bool $before_needle = false): string|false {} /** * Randomly shuffles a string * @link https://php.net/manual/en/function.str-shuffle.php * @param string $string

    * The input string. *

    * @return string the shuffled string. */ function str_shuffle(string $string): string {} /** * Return information about words used in a string * @link https://php.net/manual/en/function.str-word-count.php * @param string $string

    * The string *

    * @param int $format [optional]

    * Specify the return value of this function. The current supported values * are: * 0 - returns the number of words found *

    * @param string|null $characters [optional]

    * A list of additional characters which will be considered as 'word' *

    * @return string[]|int an array or an integer, depending on the * format chosen. */ #[Pure] function str_word_count(string $string, int $format = 0, ?string $characters): array|int {} /** * Convert a string to an array * @link https://php.net/manual/en/function.str-split.php * @param string $string

    * The input string. *

    * @param int $length [optional]

    * Maximum length of the chunk. *

    * @return string[]|false

    If the optional split_length parameter is * specified, the returned array will be broken down into chunks with each * being split_length in length, otherwise each chunk * will be one character in length. *

    *

    * FALSE is returned if split_length is less than 1. * If the split_length length exceeds the length of * string, the entire string is returned as the first * (and only) array element. *

    */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "array"], default: "array|false")] function str_split(string $string, int $length = 1): array|false {} /** * Search a string for any of a set of characters * @link https://php.net/manual/en/function.strpbrk.php * @param string $string

    * The string where char_list is looked for. *

    * @param string $characters

    * This parameter is case sensitive. *

    * @return string|false a string starting from the character found, or false if it is * not found. */ #[Pure] function strpbrk( string $string, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] $char_list = '', #[PhpStormStubsElementAvailable(from: '7.1')] string $characters ): string|false {} /** * Binary safe comparison of two strings from an offset, up to length characters * @link https://php.net/manual/en/function.substr-compare.php * @param string $haystack

    * The main string being compared. *

    * @param string $needle

    * The secondary string being compared. *

    * @param int $offset

    * The start position for the comparison. If negative, it starts counting * from the end of the string. *

    * @param int|null $length [optional]

    * The length of the comparison. *

    * @param bool $case_insensitive [optional]

    * If case_insensitivity is true, comparison is * case insensitive. *

    * @return int if less than 0 if main_str from position * offset is less than str, > * 0 if it is greater than str, and 0 if they are equal. * If offset is equal to or greater than the length of * main_str or length is set and * is less than 1, substr_compare prints a warning and returns * false. */ #[Pure] function substr_compare(string $haystack, string $needle, int $offset, ?int $length, bool $case_insensitive = false): int {} /** * Locale based string comparison * @link https://php.net/manual/en/function.strcoll.php * @param string $string1

    * The first string. *

    * @param string $string2

    * The second string. *

    * @return int if less than 0 if str1 is less than * str2; > 0 if * str1 is greater than * str2, and 0 if they are equal. */ #[Pure] function strcoll(string $string1, string $string2): int {} /** * Formats a number as a currency string * @link https://php.net/manual/en/function.money-format.php * @param string $format

    * The format specification consists of the following sequence:
    * a % character

    * @param float $number

    * The number to be formatted. *

    * @return string|null the formatted string. Characters before and after the formatting * string will be returned unchanged. * Non-numeric number causes returning null and * emitting E_WARNING. * @removed 8.0 * @see NumberFormatter */ #[Deprecated(reason: 'Use the NumberFormatter functionality', since: '7.4')] function money_format(string $format, float $number): ?string {} /** * Return part of a string or false on failure. For PHP8.0+ only string is returned * @link https://php.net/manual/en/function.substr.php * @param string $string

    * The input string. *

    * @param int $offset

    * If start is non-negative, the returned string * will start at the start'th position in * string, counting from zero. For instance, * in the string 'abcdef', the character at * position 0 is 'a', the * character at position 2 is * 'c', and so forth. *

    *

    * If start is negative, the returned string * will start at the start'th character * from the end of string. *

    *

    * If string is less than or equal to * start characters long, false will be returned. *

    *

    * Using a negative start *

    *
     * 
     * 
    * @param int|null $length [optional]

    * If length is given and is positive, the string * returned will contain at most length characters * beginning from start (depending on the length of * string). *

    *

    * If length is given and is negative, then that many * characters will be omitted from the end of string * (after the start position has been calculated when a * start is negative). If * start denotes a position beyond this truncation, * an empty string will be returned. *

    *

    * If length is given and is 0, * false or null an empty string will be returned. *

    * Using a negative length: *
     * 
     * 
    */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "string"], default: "string|false")] function substr(string $string, int $offset, ?int $length) {} /** * Replace text within a portion of a string * @link https://php.net/manual/en/function.substr-replace.php * @param string[]|string $string

    * The input string. *

    * @param string[]|string $replace

    * The replacement string. *

    * @param int[]|int $offset

    * If start is positive, the replacing will * begin at the start'th offset into * string. *

    *

    * If start is negative, the replacing will * begin at the start'th character from the * end of string. *

    * @param int[]|int $length [optional]

    * If given and is positive, it represents the length of the portion of * string which is to be replaced. If it is * negative, it represents the number of characters from the end of * string at which to stop replacing. If it * is not given, then it will default to strlen( * string ); i.e. end the replacing at the * end of string. Of course, if * length is zero then this function will have the * effect of inserting replacement into * string at the given * start offset. *

    * @return string|string[] The result string is returned. If string is an * array then array is returned. */ #[Pure] function substr_replace(array|string $string, array|string $replace, array|int $offset, array|int|null $length = null): array|string {} /** * Quote meta characters * @link https://php.net/manual/en/function.quotemeta.php * @param string $string

    * The input string. *

    * @return string the string with meta characters quoted. */ #[Pure] function quotemeta(string $string): string {} /** * Make a string's first character uppercase * @link https://php.net/manual/en/function.ucfirst.php * @param string $string

    * The input string. *

    * @return string the resulting string. */ #[Pure] function ucfirst(string $string): string {} /** * Make a string's first character lowercase * @link https://php.net/manual/en/function.lcfirst.php * @param string $string

    * The input string. *

    * @return string the resulting string. */ #[Pure] function lcfirst(string $string): string {} /** * Uppercase the first character of each word in a string * @link https://php.net/manual/en/function.ucwords.php * @param string $string

    * The input string. *

    * @param string $separators [optional]

    * The optional separators contains the word separator characters. *

    * @return string the modified string. */ #[Pure] function ucwords(string $string, string $separators = " \t\r\n\f\v"): string {} /** * Translate characters or replace substrings * @link https://php.net/manual/en/function.strtr.php * @param string $string

    * The string being translated. *

    * @param string $from

    * The string replacing from. *

    * @param string $to

    * The string being translated to to. *

    * @return string This function returns a copy of str, * translating all occurrences of each character in * from to the corresponding character in * to. */ #[Pure] function strtr(string $string, string $from, string $to): string {} /** * Translate certain characters * @link https://php.net/manual/en/function.strtr.php * @param string $str The string being translated. * @param array $replace_pairs The replace_pairs parameter may be used as a substitute for to and from in which case it's an array in the form array('from' => 'to', ...). * @return string A copy of str, translating all occurrences of each character in from to the corresponding character in to. */ #[Pure] function strtr(string $str, array $replace_pairs): string {} /** * Quote string with slashes * @link https://php.net/manual/en/function.addslashes.php * @param string $string

    * The string to be escaped. *

    * @return string the escaped string. */ #[Pure] function addslashes(string $string): string {} /** * Quote string with slashes in a C style * @link https://php.net/manual/en/function.addcslashes.php * @param string $string

    * The string to be escaped. *

    * @param string $characters

    * A list of characters to be escaped. If * charlist contains characters * \n, \r etc., they are * converted in C-like style, while other non-alphanumeric characters * with ASCII codes lower than 32 and higher than 126 converted to * octal representation. *

    *

    * When you define a sequence of characters in the charlist argument * make sure that you know what characters come between the * characters that you set as the start and end of the range. *

    *
     * 
     * 
    *

    * Also, if the first character in a range has a higher ASCII value * than the second character in the range, no range will be * constructed. Only the start, end and period characters will be * escaped. Use the ord function to find the * ASCII value for a character. *

    *
     * 
     * 
    *

    * Be careful if you choose to escape characters 0, a, b, f, n, r, * t and v. They will be converted to \0, \a, \b, \f, \n, \r, \t * and \v. * In PHP \0 (NULL), \r (carriage return), \n (newline), \f (form feed), * \v (vertical tab) and \t (tab) are predefined escape sequences, * while in C all of these are predefined escape sequences. *

    * @return string the escaped string. */ #[Pure] function addcslashes(string $string, string $characters): string {} /** * Strip whitespace (or other characters) from the end of a string. * Without the second parameter, rtrim() will strip these characters: *
      *
    • " " (ASCII 32 (0x20)), an ordinary space. *
    • "\t" (ASCII 9 (0x09)), a tab. *
    • "\n" (ASCII 10 (0x0A)), a new line (line feed). *
    • "\r" (ASCII 13 (0x0D)), a carriage return. *
    • "\0" (ASCII 0 (0x00)), the NUL-byte. *
    • "\x0B" (ASCII 11 (0x0B)), a vertical tab. *
    * @link https://php.net/manual/en/function.rtrim.php * @param string $string

    * The input string. *

    * @param string $characters [optional]

    * You can also specify the characters you want to strip, by means * of the charlist parameter. * Simply list all characters that you want to be stripped. With * .. you can specify a range of characters. *

    * @return string the modified string. */ #[Pure] function rtrim(string $string, string $characters = " \n\r\t\v\0"): string {} /** * Replace all occurrences of the search string with the replacement string * @link https://php.net/manual/en/function.str-replace.php * @param string|string[] $search

    * The value being searched for, otherwise known as the needle. * An array may be used to designate multiple needles. *

    * @param string|string[] $replace

    * The replacement value that replaces found search * values. An array may be used to designate multiple replacements. *

    * @param string|string[] $subject

    * The string or array being searched and replaced on, * otherwise known as the haystack. *

    *

    * If subject is an array, then the search and * replace is performed with every entry of * subject, and the return value is an array as * well. *

    * @param int &$count [optional] If passed, this will hold the number of matched and replaced needles. * @return string|string[] This function returns a string or an array with the replaced values. */ function str_replace(array|string $search, array|string $replace, array|string $subject, &$count): array|string {} /** * Case-insensitive version of str_replace. * @link https://php.net/manual/en/function.str-ireplace.php * @param mixed $search

    * Every replacement with search array is * performed on the result of previous replacement. *

    * @param array|string $replace

    *

    * @param array|string $subject

    * If subject is an array, then the search and * replace is performed with every entry of * subject, and the return value is an array as * well. *

    * @param int &$count [optional]

    * The number of matched and replaced needles will * be returned in count which is passed by * reference. *

    * @return string|string[] a string or an array of replacements. */ function str_ireplace(array|string $search, array|string $replace, array|string $subject, &$count): array|string {} /** * Repeat a string * @link https://php.net/manual/en/function.str-repeat.php * @param string $string

    * The string to be repeated. *

    * @param int $times

    * Number of time the input string should be * repeated. *

    *

    * multiplier has to be greater than or equal to 0. * If the multiplier is set to 0, the function * will return an empty string. *

    * @return string the repeated string. */ #[Pure] function str_repeat(string $string, int $times): string {} /** * Return information about characters used in a string * @link https://php.net/manual/en/function.count-chars.php * @param string $string

    * The examined string. *

    * @param int $mode

    * See return values. *

    * @return int[]|string Depending on mode * count_chars returns one of the following: * 0 - an array with the byte-value as key and the frequency of * every byte as value. * 1 - same as 0 but only byte-values with a frequency greater * than zero are listed. * 2 - same as 0 but only byte-values with a frequency equal to * zero are listed. * 3 - a string containing all unique characters is returned. * 4 - a string containing all not used characters is returned. */ #[Pure] function count_chars(string $string, int $mode = 0): array|string {} /** * Split a string into smaller chunks * @link https://php.net/manual/en/function.chunk-split.php * @param string $string

    * The string to be chunked. *

    * @param int $length [optional]

    * The chunk length. *

    * @param string $separator [optional]

    * The line ending sequence. *

    * @return string the chunked string. */ #[Pure] function chunk_split(string $string, int $length = 76, string $separator = "\r\n"): string {} /** * Strip whitespace (or other characters) from the beginning and end of a string * @link https://php.net/manual/en/function.trim.php * @param string $string

    * The string that will be trimmed. *

    * @param string $characters [optional]

    * Optionally, the stripped characters can also be specified using * the charlist parameter. * Simply list all characters that you want to be stripped. With * .. you can specify a range of characters. *

    * @return string The trimmed string. */ #[Pure] function trim(string $string, string $characters = " \n\r\t\v\0"): string {} /** * Strip whitespace (or other characters) from the beginning of a string * @link https://php.net/manual/en/function.ltrim.php * @param string $string

    * The input string. *

    * @param string $characters [optional]

    * You can also specify the characters you want to strip, by means of the * charlist parameter. * Simply list all characters that you want to be stripped. With * .. you can specify a range of characters. *

    * @return string This function returns a string with whitespace stripped from the * beginning of str. * Without the second parameter, * ltrim will strip these characters: * " " (ASCII 32 * (0x20)), an ordinary space. * "\t" (ASCII 9 * (0x09)), a tab. * "\n" (ASCII 10 * (0x0A)), a new line (line feed). * "\r" (ASCII 13 * (0x0D)), a carriage return. * "\0" (ASCII 0 * (0x00)), the NUL-byte. * "\x0B" (ASCII 11 * (0x0B)), a vertical tab. */ #[Pure] function ltrim(string $string, string $characters = " \n\r\t\v\0"): string {} /** * Strip HTML and PHP tags from a string * @link https://php.net/manual/en/function.strip-tags.php * @param string $string

    * The input string. *

    * @param string[]|string|null $allowed_tags [optional]

    * You can use the optional second parameter to specify tags which should * not be stripped. *

    *

    * HTML comments and PHP tags are also stripped. This is hardcoded and * can not be changed with allowable_tags. *

    * @return string the stripped string. */ #[Pure] function strip_tags(string $string, #[LanguageLevelTypeAware(["7.4" => "string[]|string|null"], default: "string|null")] $allowed_tags = null): string {} /** * Calculate the similarity between two strings * @link https://php.net/manual/en/function.similar-text.php * @param string $string1

    * The first string. *

    * @param string $string2

    * The second string. *

    * @param float &$percent [optional]

    * By passing a reference as third argument, * similar_text will calculate the similarity in * percent for you. *

    * @return int the number of matching chars in both strings. */ function similar_text(string $string1, string $string2, &$percent): int {} /** * Split a string by a string * @link https://php.net/manual/en/function.explode.php * @param string $separator

    * The boundary string. *

    * @param string $string

    * The input string. *

    * @param int $limit [optional]

    * If limit is set and positive, the returned array will contain * a maximum of limit elements with the last * element containing the rest of string. *

    *

    * If the limit parameter is negative, all components * except the last -limit are returned. *

    *

    * If the limit parameter is zero, then this is treated as 1. *

    * @return string[]|false If delimiter is an empty string (""), * explode will return false. * If delimiter contains a value that is not * contained in string and a negative * limit is used, then an empty array will be * returned. For any other limit, an array containing * string will be returned. */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "string[]"], default: "string[]|false")] function explode(string $separator, string $string, int $limit = PHP_INT_MAX) {} /** * Join array elements with a string * @link https://php.net/manual/en/function.implode.php * @param array|string $separator [optional]

    * Defaults to an empty string. This is not the preferred usage of * implode as glue would be * the second parameter and thus, the bad prototype would be used. *

    * @param array|null $array

    * The array of strings to implode. *

    * @return string a string containing a string representation of all the array * elements in the same order, with the glue string between each element. */ #[Pure] function implode(array|string $separator = "", ?array $array): string {} /** * Alias: * {@see implode} * @link https://php.net/manual/en/function.join.php * @param array|string $separator [optional]

    * Defaults to an empty string. This is not the preferred usage of * implode as glue would be * the second parameter and thus, the bad prototype would be used. *

    * @param array|null $array

    * The array of strings to implode. *

    * @return string a string containing a string representation of all the array * elements in the same order, with the glue string between each element. */ #[Pure] function join(array|string $separator = "", ?array $array): string {} /** * Set locale information * @link https://php.net/manual/en/function.setlocale.php * @param int $category

    * category is a named constant specifying the * category of the functions affected by the locale setting: *

      *
    • * LC_ALL for all of the below *
    • *
    • * LC_COLLATE for string comparison, see * {@see strcoll()} *
    • *
    • * LC_CTYPE for character classification and conversion, for * example {@see strtoupper()} *
    • *
    • * LC_MONETARY for {@see localeconv()} *
    • *
    • * LC_NUMERIC for decimal separator (See also * {@see localeconv()}) *
    • *
    • * LC_TIME for date and time formatting with * {@see strftime()} * *
    • *
    • * LC_MESSAGES for system responses (available if PHP was compiled with * libintl) * *
    • *
    * @param string|string[]|int $locales

    * If locale is null or the empty string * "", the locale names will be set from the * values of environment variables with the same names as the above * categories, or from "LANG". *

    *

    * If locale is "0", * the locale setting is not affected, only the current setting is returned. *

    *

    * If locale is an array or followed by additional * parameters then each array element or parameter is tried to be set as * new locale until success. This is useful if a locale is known under * different names on different systems or for providing a fallback * for a possibly not available locale. *

    * @param string|string[] ...$rest * @return string|false

    the new current locale, or false if the locale functionality is * not implemented on your platform, the specified locale does not exist or * the category name is invalid. *

    *

    * An invalid category name also causes a warning message. Category/locale * names can be found in RFC 1766 * and ISO 639. * Different systems have different naming schemes for locales. *

    *

    * The return value of setlocale depends * on the system that PHP is running. It returns exactly * what the system setlocale function returns.

    */ function setlocale( #[ExpectedValues([LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME, LC_MESSAGES])] int $category, #[PhpStormStubsElementAvailable(from: '8.0')] $locales, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $rest, ...$rest ): string|false {} /** * Get numeric formatting information * @link https://php.net/manual/en/function.localeconv.php * @return array localeconv returns data based upon the current locale * as set by setlocale. The associative array that is * returned contains the following fields: * * Array element * Description * * * decimal_point * Decimal point character * * * thousands_sep * Thousands separator * * * grouping * Array containing numeric groupings * * * int_curr_symbol * International currency symbol (i.e. USD) * * * currency_symbol * Local currency symbol (i.e. $) * * * mon_decimal_point * Monetary decimal point character * * * mon_thousands_sep * Monetary thousands separator * * * mon_grouping * Array containing monetary groupings * * * positive_sign * Sign for positive values * * * negative_sign * Sign for negative values * * * int_frac_digits * International fractional digits * * * frac_digits * Local fractional digits * * * p_cs_precedes * * true if currency_symbol precedes a positive value, false * if it succeeds one * * * * p_sep_by_space * * true if a space separates currency_symbol from a positive * value, false otherwise * * * * n_cs_precedes * * true if currency_symbol precedes a negative value, false * if it succeeds one * * * * n_sep_by_space * * true if a space separates currency_symbol from a negative * value, false otherwise * * * p_sign_posn * * 0 - Parentheses surround the quantity and currency_symbol * 1 - The sign string precedes the quantity and currency_symbol * 2 - The sign string succeeds the quantity and currency_symbol * 3 - The sign string immediately precedes the currency_symbol * 4 - The sign string immediately succeeds the currency_symbol * * * n_sign_posn * * 0 - Parentheses surround the quantity and currency_symbol * 1 - The sign string precedes the quantity and currency_symbol * 2 - The sign string succeeds the quantity and currency_symbol * 3 - The sign string immediately precedes the currency_symbol * 4 - The sign string immediately succeeds the currency_symbol * * *

    *

    * The p_sign_posn, and n_sign_posn contain a string * of formatting options. Each number representing one of the above listed conditions. *

    *

    * The grouping fields contain arrays that define the way numbers should be * grouped. For example, the monetary grouping field for the nl_NL locale (in * UTF-8 mode with the euro sign), would contain a 2 item array with the * values 3 and 3. The higher the index in the array, the farther left the * grouping is. If an array element is equal to CHAR_MAX, * no further grouping is done. If an array element is equal to 0, the previous * element should be used. */ #[ArrayShape(["decimal_point" => "string", "thousands_sep" => "string", "grouping" => "array", "int_curr_symbol" => "string", "currency_symbol" => "string", "mon_decimal_point" => "string", "mon_thousands_sep" => "string", "mon_grouping" => "string", "positive_sign" => "string", "negative_sign" => "string", "int_frac_digits" => "string", "frac_digits" => "string", "p_cs_precedes" => "bool", "p_sep_by_space" => "bool", "n_cs_precedes" => "bool", "n_sep_by_space" => "bool", "p_sign_posn" => "int", "n_sign_posn" => "int"])] #[Pure(true)] function localeconv(): array {} * item may be an integer value of the element or the * constant name of the element. The following is a list of constant names * for item that may be used and their description. * Some of these constants may not be defined or hold no value for certain * locales.

    * nl_langinfo Constants * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    ConstantDescription
    LC_TIME Category Constants
    ABDAY_(1-7)Abbreviated name of n-th day of the week.
    DAY_(1-7)Name of the n-th day of the week (DAY_1 = Sunday).
    ABMON_(1-12)Abbreviated name of the n-th month of the year.
    MON_(1-12)Name of the n-th month of the year.
    AM_STRString for Ante meridian.
    PM_STRString for Post meridian.
    D_T_FMTString that can be used as the format string for strftime to represent time and date.
    D_FMTString that can be used as the format string for strftime to represent date.
    T_FMTString that can be used as the format string for strftime to represent time.
    T_FMT_AMPMString that can be used as the format string for strftime to represent time in 12-hour format with ante/post meridian.
    ERAAlternate era.
    ERA_YEARYear in alternate era format.
    ERA_D_T_FMTDate and time in alternate era format (string can be used in strftime).
    ERA_D_FMTDate in alternate era format (string can be used in strftime).
    ERA_T_FMTTime in alternate era format (string can be used in strftime).
    LC_MONETARY Category Constants
    INT_CURR_SYMBOLInternational currency symbol.
    CURRENCY_SYMBOLLocal currency symbol.
    CRNCYSTRSame value as CURRENCY_SYMBOL.
    MON_DECIMAL_POINTDecimal point character.
    MON_THOUSANDS_SEPThousands separator (groups of three digits).
    MON_GROUPINGLike "grouping" element.
    POSITIVE_SIGNSign for positive values.
    NEGATIVE_SIGNSign for negative values.
    INT_FRAC_DIGITSInternational fractional digits.
    FRAC_DIGITSLocal fractional digits.
    P_CS_PRECEDESReturns 1 if CURRENCY_SYMBOL precedes a positive value.
    P_SEP_BY_SPACEReturns 1 if a space separates CURRENCY_SYMBOL from a positive value.
    N_CS_PRECEDESReturns 1 if CURRENCY_SYMBOL precedes a negative value.
    N_SEP_BY_SPACEReturns 1 if a space separates CURRENCY_SYMBOL from a negative value.
    P_SIGN_POSNReturns 0 if parentheses surround the quantity and CURRENCY_SYMBOL.
    * @return string|false the element as a string, or false if item * is not valid. */ #[Pure(true)] function nl_langinfo(int $item): string|false {} /** * Calculate the soundex key of a string * @link https://php.net/manual/en/function.soundex.php * @param string $string

    * The input string. *

    * @return string the soundex key as a string. */ #[Pure] function soundex(string $string): string {} /** * Calculate Levenshtein distance between two strings * @link https://php.net/manual/en/function.levenshtein.php * Note: In its simplest form the function will take only the two strings * as parameter and will calculate just the number of insert, replace and * delete operations needed to transform str1 into str2. * Note: A second variant will take three additional parameters that define * the cost of insert, replace and delete operations. This is more general * and adaptive than variant one, but not as efficient. * @param string $string1

    * One of the strings being evaluated for Levenshtein distance. *

    * @param string $string2

    * One of the strings being evaluated for Levenshtein distance. *

    * @param int $insertion_cost [optional]

    * Defines the cost of insertion. *

    * @param int $replacement_cost [optional]

    * Defines the cost of replacement. *

    * @param int $deletion_cost [optional]

    * Defines the cost of deletion. *

    * @return int This function returns the Levenshtein-Distance between the * two argument strings or -1, if one of the argument strings * is longer than the limit of 255 characters. */ function levenshtein(string $string1, string $string2, int $insertion_cost = 1, int $replacement_cost = 1, int $deletion_cost = 1): int {} /** * Generate a single-byte string from a number * @link https://php.net/manual/en/function.chr.php * @param int $codepoint

    * The ascii code. *

    * @return string the specified character. */ #[Pure] function chr(int $codepoint): string {} /** * Convert the first byte of a string to a value between 0 and 255 * @link https://php.net/manual/en/function.ord.php * @param string $character

    * A character. *

    * @return int<0, 255> the ASCII value as an integer. */ #[Pure] function ord(string $character): int {} /** * Parses the string into variables * @link https://php.net/manual/en/function.parse-str.php * @param string $string

    * The input string. *

    * @param array &$result

    * If the second parameter arr is present, * variables are stored in this variable as array elements instead.
    * Since 7.2.0 this parameter is not optional. *

    * @return void */ function parse_str( string $string, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] &$result = [], #[PhpStormStubsElementAvailable(from: '8.0')] &$result ): void {} /** * Parse a CSV string into an array * @link https://php.net/manual/en/function.str-getcsv.php * @param string $string

    * The string to parse. *

    * @param string $separator [optional]

    * Set the field delimiter (one character only). *

    * @param string $enclosure [optional]

    * Set the field enclosure character (one character only). *

    * @param string $escape [optional]

    * Set the escape character (one character only). * Defaults as a backslash (\) *

    * @return array an indexed array containing the fields read. */ #[Pure] function str_getcsv(string $string, string $separator = ",", string $enclosure = '"', string $escape = "\\"): array {} /** * Pad a string to a certain length with another string * @link https://php.net/manual/en/function.str-pad.php * @param string $string

    * The input string. *

    * @param int $length

    * If the value of pad_length is negative, * less than, or equal to the length of the input string, no padding * takes place. *

    * @param string $pad_string [optional]

    * The pad_string may be truncated if the * required number of padding characters can't be evenly divided by the * pad_string's length. *

    * @param int $pad_type [optional]

    * Optional argument pad_type can be * STR_PAD_RIGHT, STR_PAD_LEFT, * or STR_PAD_BOTH. If * pad_type is not specified it is assumed to be * STR_PAD_RIGHT. *

    * @return string the padded string. */ #[Pure] function str_pad(string $string, int $length, string $pad_string = " ", int $pad_type = STR_PAD_RIGHT): string {} /** * Alias: * {@see rtrim} * @param string $string The input string. * @param string $characters [optional] * @return string the modified string. * @link https://php.net/manual/en/function.chop.php * @see rtrim() */ #[Pure] function chop(string $string, string $characters = " \n\r\t\v\0"): string {} /** * Alias: * {@see strstr} * @link https://php.net/manual/en/function.strchr.php * Note: This function is case-sensitive. For case-insensitive searches, use stristr(). * Note: If you only want to determine if a particular needle occurs within haystack, * use the faster and less memory intensive function strpos() instead. * * @param string $haystack The input string. * @param string $needle If needle is not a string, it is converted to an integer and applied as the ordinal value of a character. * @param bool $before_needle [optional] If TRUE, strstr() returns the part of the haystack before the first occurrence of the needle (excluding the needle). * @return string|false Returns the portion of string, or FALSE if needle is not found. */ #[Pure] function strchr(string $haystack, string $needle, bool $before_needle = false): string|false {} /** * Return a formatted string * @link https://php.net/manual/en/function.sprintf.php * @param string $format

    * The format string is composed of zero or more directives: * ordinary characters (excluding %) that are * copied directly to the result, and conversion * specifications, each of which results in fetching its * own parameter. This applies to both sprintf * and printf. *

    *

    * Each conversion specification consists of a percent sign * (%), followed by one or more of these * elements, in order: * An optional sign specifier that forces a sign * (- or +) to be used on a number. By default, only the - sign is used * on a number if it's negative. This specifier forces positive numbers * to have the + sign attached as well, and was added in PHP 4.3.0.

    * @param string|int|float ...$values

    *

    * @return string a string produced according to the formatting string * format. */ #[Pure] function sprintf( string $format, #[PhpStormStubsElementAvailable(from: '5.3', to: '5.6')] $values, mixed ...$values ): string {} /** * Output a formatted string * @link https://php.net/manual/en/function.printf.php * @param string $format

    * See sprintf for a description of * format. *

    * @param string|int|float ...$values [optional]

    *

    * @return int the length of the outputted string. */ function printf(string $format, mixed ...$values): int {} /** * Output a formatted string * @link https://php.net/manual/en/function.vprintf.php * @param string $format

    * See sprintf for a description of * format. *

    * @param array $values

    *

    * @return int the length of the outputted string. */ function vprintf(string $format, array $values): int {} /** * Return a formatted string * @link https://php.net/manual/en/function.vsprintf.php * @param string $format

    * See sprintf for a description of * format. *

    * @param array $values

    *

    * @return string Return array values as a formatted string according to * format (which is described in the documentation * for sprintf). */ #[Pure] function vsprintf(string $format, array $values): string {} /** * Write a formatted string to a stream * @link https://php.net/manual/en/function.fprintf.php * @param resource $stream &fs.file.pointer; * @param string $format

    * See sprintf for a description of * format. *

    * @param mixed ...$values [optional]

    *

    * @return int the length of the string written. */ function fprintf($stream, string $format, mixed ...$values): int {} /** * Write a formatted string to a stream * @link https://php.net/manual/en/function.vfprintf.php * @param resource $stream

    *

    * @param string $format

    * See sprintf for a description of * format. *

    * @param array $values

    *

    * @return int the length of the outputted string. */ function vfprintf($stream, string $format, array $values): int {} /** * Parses input from a string according to a format * @link https://php.net/manual/en/function.sscanf.php * @param string $string

    * The input string being parsed. *

    * @param string $format

    * The interpreted format for str, which is * described in the documentation for sprintf with * following differences: * Function is not locale-aware. * F, g, G and * b are not supported. * D stands for decimal number. * i stands for integer with base detection. * n stands for number of characters processed so far. *

    * @param mixed &...$vars [optional] * @return array|int|null If only * two parameters were passed to this function, the values parsed * will be returned as an array. Otherwise, if optional parameters are passed, * the function will return the number of assigned values. The optional * parameters must be passed by reference. */ function sscanf(string $string, string $format, #[TypeContract(exists: "int|null", notExists: "array|null")] mixed &...$vars): array|int|null {} /** * Parses input from a file according to a format * @link https://php.net/manual/en/function.fscanf.php * @param resource $stream &fs.file.pointer; * @param string $format

    * The specified format as described in the * sprintf documentation. *

    * @param mixed &...$vars [optional] * @return array|int|false|null If only two parameters were passed to this function, the values parsed will be * returned as an array. Otherwise, if optional parameters are passed, the * function will return the number of assigned values. The optional * parameters must be passed by reference. */ function fscanf($stream, string $format, #[TypeContract(exists: "int|false|null", notExists: "array|false|null")] mixed &...$vars): array|int|false|null {} /** * Parse a URL and return its components * @link https://php.net/manual/en/function.parse-url.php * @param string $url

    * The URL to parse. Invalid characters are replaced by * _. *

    * @param int $component [optional]

    * Specify one of PHP_URL_SCHEME, * PHP_URL_HOST, PHP_URL_PORT, * PHP_URL_USER, PHP_URL_PASS, * PHP_URL_PATH, PHP_URL_QUERY * or PHP_URL_FRAGMENT to retrieve just a specific * URL component as a string. *

    * @return array|string|int|null|false On seriously malformed URLs, parse_url() may return FALSE. * If the component parameter is omitted, an associative array is returned. * At least one element will be present within the array. Potential keys within this array are: * scheme - e.g. http * host * port * user * pass * path * query - after the question mark ? * fragment - after the hashmark # *

    *

    * If the component parameter is specified a * string is returned instead of an array. */ #[ArrayShape(["scheme" => "string", "host" => "string", "port" => "int", "user" => "string", "pass" => "string", "query" => "string", "path" => "string", "fragment" => "string"])] #[Pure] function parse_url(string $url, int $component = -1): array|string|int|false|null {} /** * URL-encodes string * @link https://php.net/manual/en/function.urlencode.php * @param string $string

    * The string to be encoded. *

    * @return string a string in which all non-alphanumeric characters except * -_. have been replaced with a percent * (%) sign followed by two hex digits and spaces encoded * as plus (+) signs. It is encoded the same way that the * posted data from a WWW form is encoded, that is the same way as in * application/x-www-form-urlencoded media type. This * differs from the RFC 3986 encoding (see * rawurlencode) in that for historical reasons, spaces * are encoded as plus (+) signs. */ #[Pure] function urlencode(string $string): string {} /** * Decodes URL-encoded string * @link https://php.net/manual/en/function.urldecode.php * @param string $string

    * The string to be decoded. *

    * @return string the decoded string. */ #[Pure] function urldecode(string $string): string {} /** * URL-encode according to RFC 3986 * @link https://php.net/manual/en/function.rawurlencode.php * @param string $string

    * The URL to be encoded. *

    * @return string a string in which all non-alphanumeric characters except * -_. have been replaced with a percent * (%) sign followed by two hex digits. This is the * encoding described in RFC 1738 for * protecting literal characters from being interpreted as special URL * delimiters, and for protecting URLs from being mangled by transmission * media with character conversions (like some email systems). */ #[Pure] function rawurlencode(string $string): string {} /** * Decode URL-encoded strings * @link https://php.net/manual/en/function.rawurldecode.php * @param string $string

    * The URL to be decoded. *

    * @return string the decoded URL, as a string. */ #[Pure] function rawurldecode(string $string): string {} /** * Generate URL-encoded query string * @link https://php.net/manual/en/function.http-build-query.php * @param object|array $data

    * May be an array or object containing properties. *

    *

    * If query_data is an array, it may be a simple one-dimensional structure, * or an array of arrays (which in turn may contain other arrays). *

    *

    * If query_data is an object, then only public properties will be incorporated into the result. *

    * @param string $numeric_prefix [optional]

    * If numeric indices are used in the base array and this parameter is * provided, it will be prepended to the numeric index for elements in * the base array only. *

    *

    * This is meant to allow for legal variable names when the data is * decoded by PHP or another CGI application later on. *

    * @param string|null $arg_separator

    * arg_separator.output * is used to separate arguments, unless this parameter is specified, * and is then used. *

    * @param int $encoding_type By default, PHP_QUERY_RFC1738. *

    If enc_type is PHP_QUERY_RFC1738, then encoding is performed per » RFC 1738 and the application/x-www-form-urlencoded media type, * which implies that spaces are encoded as plus (+) signs. *

    If enc_type is PHP_QUERY_RFC3986, then encoding is performed according to » RFC 3986, and spaces will be percent encoded (%20). * @return string a URL-encoded string. */ #[Pure] function http_build_query(object|array $data, string $numeric_prefix = "", ?string $arg_separator = null, int $encoding_type = PHP_QUERY_RFC1738): string {} /** * Returns the target of a symbolic link * @link https://php.net/manual/en/function.readlink.php * @param string $path

    * The symbolic link path. *

    * @return string|false the contents of the symbolic link path or false on error. */ #[Pure(true)] function readlink(string $path): string|false {} /** * Gets information about a link * @link https://php.net/manual/en/function.linkinfo.php * @param string $path

    * Path to the link. *

    * @return int|false linkinfo returns the st_dev field * of the Unix C stat structure returned by the lstat * system call. Returns 0 or false in case of error. */ #[Pure(true)] function linkinfo(string $path): int|false {} /** * Creates a symbolic link * @link https://php.net/manual/en/function.symlink.php * @param string $target

    * Target of the link. *

    * @param string $link

    * The link name. *

    * @return bool true on success or false on failure. */ function symlink(string $target, string $link): bool {} /** * Create a hard link * @link https://php.net/manual/en/function.link.php * @param string $target Target of the link. * @param string $link The link name. * @return bool true on success or false on failure. */ function link(string $target, string $link): bool {} /** * Deletes a file * @link https://php.net/manual/en/function.unlink.php * @param string $filename

    * Path to the file. *

    * @param resource $context [optional] * @return bool true on success or false on failure. */ function unlink(string $filename, $context): bool {} /** * Execute an external program * @link https://php.net/manual/en/function.exec.php * @param string $command

    * The command that will be executed. *

    * @param array &$output [optional]

    * If the output argument is present, then the * specified array will be filled with every line of output from the * command. Trailing whitespace, such as \n, is not * included in this array. Note that if the array already contains some * elements, exec will append to the end of the array. * If you do not want the function to append elements, call * unset on the array before passing it to * exec. *

    * @param int &$result_code [optional]

    * If the result_code argument is present * along with the output argument, then the * return status of the executed command will be written to this * variable. *

    * @return string|false The last line from the result of the command. If you need to execute a * command and have all the data from the command passed directly back without * any interference, use the passthru function. *

    *

    * To get the output of the executed command, be sure to set and use the * output parameter. */ function exec(string $command, &$output, &$result_code): string|false {} /** * Execute an external program and display the output * @link https://php.net/manual/en/function.system.php * @param string $command

    * The command that will be executed. *

    * @param int &$result_code [optional]

    * If the result_code argument is present, then the * return status of the executed command will be written to this * variable. *

    * @return string|false the last line of the command output on success, and false * on failure. */ function system(string $command, &$result_code): string|false {} /** * Escape shell metacharacters * @link https://php.net/manual/en/function.escapeshellcmd.php * @param string $command

    * The command that will be escaped. *

    * @return string The escaped string. */ #[Pure] function escapeshellcmd(string $command): string {} /** * Escape a string to be used as a shell argument * @link https://php.net/manual/en/function.escapeshellarg.php * @param string $arg

    * The argument that will be escaped. *

    * @return string The escaped string. */ #[Pure] function escapeshellarg(string $arg): string {} /** * Execute an external program and display raw output * @link https://php.net/manual/en/function.passthru.php * @param string $command

    * The command that will be executed. *

    * @param int &$result_code [optional]

    * If the result_code argument is present, the * return status of the Unix command will be placed here. *

    * @return bool|null null on success or false on failure. */ #[LanguageLevelTypeAware(['8.2' => 'null|false'], default: 'null|bool')] function passthru(string $command, &$result_code): ?bool {} /** * Execute command via shell and return the complete output as a string * @link https://php.net/manual/en/function.shell-exec.php * @param string $command

    * The command that will be executed. *

    * @return string|false|null The output from the executed command or NULL if an error occurred or the command produces no output. */ function shell_exec(string $command): string|false|null {} /** * Execute a command and open file pointers for input/output * @link https://php.net/manual/en/function.proc-open.php * @param array|string $command

    * Execute a command and open file pointers for input/output *

    *

    * As of PHP 7.4.0, cmd may be passed as array of command parameters. * In this case the process will be opened directly * (without going through a shell) and PHP will take care of any * necessary argument escaping. *

    * @param array $descriptor_spec

    * An indexed array where the key represents the descriptor number and the * value represents how PHP will pass that descriptor to the child * process. 0 is stdin, 1 is stdout, while 2 is stderr. *

    *

    * Each element can be: * An array describing the pipe to pass to the process. The first * element is the descriptor type and the second element is an option for * the given type. Valid types are pipe (the second * element is either r to pass the read end of the pipe * to the process, or w to pass the write end) and * file (the second element is a filename). * A stream resource representing a real file descriptor (e.g. opened file, * a socket, STDIN). *

    *

    * The file descriptor numbers are not limited to 0, 1 and 2 - you may * specify any valid file descriptor number and it will be passed to the * child process. This allows your script to interoperate with other * scripts that run as "co-processes". In particular, this is useful for * passing passphrases to programs like PGP, GPG and openssl in a more * secure manner. It is also useful for reading status information * provided by those programs on auxiliary file descriptors. *

    * @param array &$pipes

    * Will be set to an indexed array of file pointers that correspond to * PHP's end of any pipes that are created. *

    * @param string|null $cwd [optional]

    * The initial working dir for the command. This must be an * absolute directory path, or null * if you want to use the default value (the working dir of the current * PHP process) *

    * @param array|null $env_vars [optional]

    * An array with the environment variables for the command that will be * run, or null to use the same environment as the current PHP process *

    * @param array|null $options [optional]

    * Allows you to specify additional options. Currently supported options * include: * suppress_errors (windows only): suppresses errors generated by this * function when it's set to TRUE * generated by this function when it's set to true * bypass_shell (windows only): bypass cmd.exe shell when set to TRUE * context: stream context used when opening files * (created with stream_context_create) * blocking_pipes: (windows only): force blocking pipes when set to TRUE * create_process_group (windows only): allow the child process to handle * CTRL events when set to TRUE * create_new_console (windows only): the new process has a new console, * instead of inheriting its parent's console *

    * @return resource|false a resource representing the process, which should be freed using * proc_close when you are finished with it. On failure * returns false. */ function proc_open(array|string $command, array $descriptor_spec, &$pipes, ?string $cwd, ?array $env_vars, ?array $options) {} /** * Close a process opened by {@see proc_open} and return the exit code of that process * @link https://php.net/manual/en/function.proc-close.php * @param resource $process

    * The proc_open resource that will * be closed. *

    * @return int the termination status of the process that was run. */ function proc_close($process): int {} /** * Kills a process opened by proc_open * @link https://php.net/manual/en/function.proc-terminate.php * @param resource $process

    * The proc_open resource that will * be closed. *

    * @param int $signal [optional]

    * This optional parameter is only useful on POSIX * operating systems; you may specify a signal to send to the process * using the kill(2) system call. The default is * SIGTERM. *

    * @return bool the termination status of the process that was run. */ function proc_terminate($process, int $signal = 15): bool {} /** * Get information about a process opened by {@see proc_open} * @link https://php.net/manual/en/function.proc-get-status.php * @param resource $process

    * The proc_open resource that will * be evaluated. *

    * @return array|false An array of collected information on success, and false * on failure. The returned array contains the following elements: *

    *

    * elementtypedescription * * command * string * * The command string that was passed to proc_open. * * * * pid * int * process id * * * running * bool * * true if the process is still running, false if it has * terminated. * * * * signaled * bool * * true if the child process has been terminated by * an uncaught signal. Always set to false on Windows. * * * * stopped * bool * * true if the child process has been stopped by a * signal. Always set to false on Windows. * * * * exitcode * int * * The exit code returned by the process (which is only * meaningful if running is false). * Only first call of this function return real value, next calls return * -1. * * * * termsig * int * * The number of the signal that caused the child process to terminate * its execution (only meaningful if signaled is true). * * * * stopsig * int * * The number of the signal that caused the child process to stop its * execution (only meaningful if stopped is true). * * */ #[ArrayShape(["command" => "string", "pid" => "int", "running" => "bool", "signaled" => "bool", "stopped" => "bool", "exitcode" => "int", "termsig" => "int", "stopsig" => "int"])] #[LanguageLevelTypeAware(["8.0" => "array"], default: "array|false")] function proc_get_status($process) {} /** * Change the priority of the current process.
    * Since 7.2.0 supported on Windows platforms. * @link https://php.net/manual/en/function.proc-nice.php * @param int $priority

    * The increment value of the priority change. *

    * @return bool true on success or false on failure. * If an error occurs, like the user lacks permission to change the priority, * an error of level E_WARNING is also generated. */ function proc_nice(int $priority): bool {} /** * Get port number associated with an Internet service and protocol * @link https://php.net/manual/en/function.getservbyname.php * @param string $service

    * The Internet service name, as a string. *

    * @param string $protocol

    * protocol is either "tcp" * or "udp" (in lowercase). *

    * @return int|false the port number, or false if service or * protocol is not found. */ #[Pure] function getservbyname(string $service, string $protocol): int|false {} /** * Get Internet service which corresponds to port and protocol * @link https://php.net/manual/en/function.getservbyport.php * @param int $port

    * The port number. *

    * @param string $protocol

    * protocol is either "tcp" * or "udp" (in lowercase). *

    * @return string|false the Internet service name as a string. */ #[Pure] function getservbyport(int $port, string $protocol): string|false {} /** * Get protocol number associated with protocol name * @link https://php.net/manual/en/function.getprotobyname.php * @param string $protocol

    * The protocol name. *

    * @return int|false the protocol number or -1 if the protocol is not found. */ #[Pure] function getprotobyname(string $protocol): int|false {} /** * Get protocol name associated with protocol number * @link https://php.net/manual/en/function.getprotobynumber.php * @param int $protocol

    * The protocol number. *

    * @return string|false the protocol name as a string. */ #[Pure] function getprotobynumber(int $protocol): string|false {} /** * Gets PHP script owner's UID * @link https://php.net/manual/en/function.getmyuid.php * @return int|false the user ID of the current script, or false on error. */ #[Pure] function getmyuid(): int|false {} /** * Get PHP script owner's GID * @link https://php.net/manual/en/function.getmygid.php * @return int|false the group ID of the current script, or false on error. */ #[Pure] function getmygid(): int|false {} /** * Gets PHP's process ID * @link https://php.net/manual/en/function.getmypid.php * @return int|false the current PHP process ID, or false on error. */ #[Pure] function getmypid(): int|false {} /** * Gets the inode of the current script * @link https://php.net/manual/en/function.getmyinode.php * @return int|false the current script's inode as an integer, or false on error. */ #[Pure] function getmyinode(): int|false {} * priority is a combination of the facility and * the level. Possible values are: * * syslog Priorities (in descending order) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    ConstantDescription
    LOG_EMERGsystem is unusable
    LOG_ALERTaction must be taken immediately
    LOG_CRITcritical conditions
    LOG_ERRerror conditions
    LOG_WARNINGwarning conditions
    LOG_NOTICEnormal, but significant, condition
    LOG_INFOinformational message
    LOG_DEBUGdebug-level message
    *

    * @param string $message

    * The message to send, except that the two characters * %m will be replaced by the error message string * (strerror) corresponding to the present value of * errno. *

    */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function syslog(int $priority, string $message) {} /** * Close connection to system logger * @link https://php.net/manual/en/function.closelog.php */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function closelog() {} /** * Registers a function that will be called when PHP starts sending output. * The callback is executed just after PHP prepares all headers to be sent,
    * and before any other output is sent, creating a window to manipulate the outgoing headers before being sent. * @link https://secure.php.net/manual/en/function.header-register-callback.php * @param callable $callback Function called just before the headers are sent. * @return bool true on success or false on failure. */ function header_register_callback(callable $callback): bool {} /** * Get the size of an image from a string. * @param string $string The image data, as a string. * @param array &$image_info [optional] This optional parameter allows you to extract
    * some extended information from the image file. Currently, this will
    * return the different JPG APP markers as an associative array.
    * Some programs use these APP markers to embed text information in images.
    * A very common one is to embed » IPTC information in the APP13 marker.
    * You can use the iptcparse() function to parse the binary APP13 marker into something readable. * @return array|false Returns an array with 7 elements.
    * Index 0 and 1 contains respectively the width and the height of the image.
    * Index 2 is one of the IMAGETYPE_XXX constants indicating the type of the image.
    * Index 3 is a text string with the correct height="yyy" width="xxx" string
    * that can be used directly in an IMG tag.
    * On failure, FALSE is returned. * @link https://secure.php.net/manual/en/function.getimagesizefromstring.php * @since 5.4 * @link https://secure.php.net/manual/en/function.getimagesizefromstring.php * @since 5.4 */ #[ArrayShape([0 => 'int', 1 => 'int', 2 => 'int', 3 => 'string', 'bits' => 'int', 'channels' => 'int', 'mime' => 'string'])] function getimagesizefromstring(string $string, &$image_info): array|false {} /** * Set the stream chunk size. * @param resource $stream The target stream. * @param int $size The desired new chunk size. * @return int|false Returns the previous chunk size on success.
    * Will return FALSE if chunk_size is less than 1 or greater than PHP_INT_MAX. * @link https://secure.php.net/manual/en/function.stream-set-chunk-size.php * @since 5.4 */ #[LanguageLevelTypeAware(["8.0" => "int"], default: "int|false")] function stream_set_chunk_size($stream, int $size) {} /** * Initializes all syslog related variables * @link https://php.net/manual/en/function.define-syslog-variables.php * @return void * @removed 5.4 */ #[Deprecated(since: '5.3')] function define_syslog_variables() {} /** * Calculate the metaphone key of a string * @link https://php.net/manual/en/function.metaphone.php * @param string $string

    * The input string. *

    * @param int $max_phonemes [optional]

    * This parameter restricts the returned metaphone key to phonemes characters in length. * The default value of 0 means no restriction. *

    * @return string|false the metaphone key as a string, or FALSE on failure */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "string"], default: "string|false")] function metaphone(string $string, int $max_phonemes = 0) {} /** * Turn on output buffering * @link https://php.net/manual/en/function.ob-start.php * @param callable $callback [optional]

    * An optional output_callback function may be * specified. This function takes a string as a parameter and should * return a string. The function will be called when * the output buffer is flushed (sent) or cleaned (with * ob_flush, ob_clean or similar * function) or when the output buffer * is flushed to the browser at the end of the request. When * output_callback is called, it will receive the * contents of the output buffer as its parameter and is expected to * return a new output buffer as a result, which will be sent to the * browser. If the output_callback is not a * callable function, this function will return false. *

    *

    * If the callback function has two parameters, the second parameter is * filled with a bit-field consisting of * PHP_OUTPUT_HANDLER_START, * PHP_OUTPUT_HANDLER_CONT and * PHP_OUTPUT_HANDLER_END. *

    *

    * If output_callback returns false original * input is sent to the browser. *

    *

    * The output_callback parameter may be bypassed * by passing a null value. *

    *

    * ob_end_clean, ob_end_flush, * ob_clean, ob_flush and * ob_start may not be called from a callback * function. If you call them from callback function, the behavior is * undefined. If you would like to delete the contents of a buffer, * return "" (a null string) from callback function. * You can't even call functions using the output buffering functions like * print_r($expression, true) or * highlight_file($filename, true) from a callback * function. *

    *

    * In PHP 4.0.4, ob_gzhandler was introduced to * facilitate sending gz-encoded data to web browsers that support * compressed web pages. ob_gzhandler determines * what type of content encoding the browser will accept and will return * its output accordingly. *

    * @param int $chunk_size

    * If the optional parameter chunk_size is passed, the * buffer will be flushed after any output call which causes the buffer's * length to equal or exceed chunk_size. * Default value 0 means that the function is called only in the end, * other special value 1 sets chunk_size to 4096. *

    * @param int $flags [optional]

    * The flags parameter is a bitmask that controls the operations that can be performed on the output buffer. * The default is to allow output buffers to be cleaned, flushed and removed, which can be set explicitly via * PHP_OUTPUT_HANDLER_CLEANABLE | PHP_OUTPUT_HANDLER_FLUSHABLE | PHP_OUTPUT_HANDLER_REMOVABLE, or PHP_OUTPUT_HANDLER_STDFLAGS as shorthand. *

    * @return bool true on success or false on failure. */ function ob_start($callback, int $chunk_size = 0, int $flags = PHP_OUTPUT_HANDLER_STDFLAGS): bool {} /** * Flush (send) the output buffer * @link https://php.net/manual/en/function.ob-flush.php * @return bool */ function ob_flush(): bool {} /** * Clean (erase) the output buffer * @link https://php.net/manual/en/function.ob-clean.php * @return bool */ function ob_clean(): bool {} /** * Flush (send) the output buffer and turn off output buffering * @link https://php.net/manual/en/function.ob-end-flush.php * @return bool true on success or false on failure. Reasons for failure are first that you called the * function without an active buffer or that for some reason a buffer could * not be deleted (possible for special buffer). */ function ob_end_flush(): bool {} /** * Clean (erase) the output buffer and turn off output buffering * @link https://php.net/manual/en/function.ob-end-clean.php * @return bool true on success or false on failure. Reasons for failure are first that you called the * function without an active buffer or that for some reason a buffer could * not be deleted (possible for special buffer). */ function ob_end_clean(): bool {} /** * Flush the output buffer, return it as a string and turn off output buffering * @link https://php.net/manual/en/function.ob-get-flush.php * @return string|false the output buffer or false if no buffering is active. */ function ob_get_flush(): string|false {} /** * Get current buffer contents and delete current output buffer * @link https://php.net/manual/en/function.ob-get-clean.php * @return string|false the contents of the output buffer and end output buffering. * If output buffering isn't active then false is returned. */ function ob_get_clean(): string|false {} /** * Return the length of the output buffer * @link https://php.net/manual/en/function.ob-get-length.php * @return int|false the length of the output buffer contents or false if no * buffering is active. */ function ob_get_length(): int|false {} /** * Return the nesting level of the output buffering mechanism * @link https://php.net/manual/en/function.ob-get-level.php * @return int the level of nested output buffering handlers or zero if output * buffering is not active. */ function ob_get_level(): int {} /** * Get status of output buffers * @link https://php.net/manual/en/function.ob-get-status.php * @param bool $full_status [optional]

    * true to return all active output buffer levels. If false or not * set, only the top level output buffer is returned. *

    * @return array If called without the full_status parameter * or with full_status = false a simple array * with the following elements is returned: *
     * Array
     * (
     *     [level] => 2
     *     [type] => 0
     *     [status] => 0
     *     [name] => URL-Rewriter
     *     [del] => 1
     * )
     * 
    * * * * * * * *
    KeyValue
    levelOutput nesting level
    typePHP_OUTPUT_HANDLER_INTERNAL (0) or PHP_OUTPUT_HANDLER_USER (1)
    statusOne of PHP_OUTPUT_HANDLER_START (0), PHP_OUTPUT_HANDLER_CONT (1) or PHP_OUTPUT_HANDLER_END (2)
    nameName of active output handler or ' default output handler' if none is set
    delErase-flag as set by ob_start()
    *

    * If called with full_status = TRUE an array with one element for each active output buffer * level is returned. The output level is used as key of the top level array and each array * element itself is another array holding status information on one active output level. *

    *
     * Array
     * (
     *     [0] => Array
     *         (
     *             [chunk_size] => 0
     *             [size] => 40960
     *             [block_size] => 10240
     *             [type] => 1
     *             [status] => 0
     *             [name] => default output handler
     *             [del] => 1
     *         )
     *
     *     [1] => Array
     *         (
     *             [chunk_size] => 0
     *             [size] => 40960
     *             [block_size] => 10240
     *             [type] => 0
     *             [buffer_size] => 0
     *             [status] => 0
     *             [name] => URL-Rewriter
     *             [del] => 1
     *         )
     *
     * )
     * 
    *

    The full output contains these additional elements:

    * * * * * *
    KeyValue
    chunk_sizeChunk size as set by ob_start()
    size...
    blocksize...
    */ #[ArrayShape([ "level" => "int", "type" => "int", "flags" => "int", "name" => "string", "del" => "int", "chunk_size" => "int", "buffer_size" => "int", "buffer_used" => "int", ])] function ob_get_status(bool $full_status = false): array {} /** * Return the contents of the output buffer * @link https://php.net/manual/en/function.ob-get-contents.php * @return string|false This will return the contents of the output buffer or false, if output * buffering isn't active. */ #[Pure(true)] function ob_get_contents(): string|false {} /** * Turn implicit flush on/off * @link https://php.net/manual/en/function.ob-implicit-flush.php * @param int|bool $enable [optional]

    * 1|TRUE to turn implicit flushing on, 0|FALSE turns it off. *

    default: 1|TRUE *

    * @return void */ function ob_implicit_flush(#[LanguageLevelTypeAware(["8.0" => "bool"], default: "int")] $enable = true): void {} /** * List all output handlers in use * @link https://php.net/manual/en/function.ob-list-handlers.php * @return array This will return an array with the output handlers in use (if any). If * output_buffering is enabled or * an anonymous function was used with ob_start, * ob_list_handlers will return "default output * handler". */ function ob_list_handlers(): array {} /** * Sort an array by key * @link https://php.net/manual/en/function.ksort.php * @param array &$array

    * The input array. *

    * @param int $flags

    * You may modify the behavior of the sort using the optional * parameter sort_flags, for details * see sort. *

    */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function ksort(array &$array, int $flags = SORT_REGULAR) {} /** * Sort an array by key in reverse order * @link https://php.net/manual/en/function.krsort.php * @param array &$array

    * The input array. *

    * @param int $flags

    * You may modify the behavior of the sort using the optional parameter * sort_flags, for details see * sort. *

    */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function krsort(array &$array, int $flags = SORT_REGULAR) {} /** * Sort an array using a "natural order" algorithm * @link https://php.net/manual/en/function.natsort.php * @param array &$array

    * The input array. *

    */ #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] function natsort(array &$array) {} /** * Sort an array using a case insensitive "natural order" algorithm * @link https://php.net/manual/en/function.natcasesort.php * @param array &$array

    * The input array. *

    */ #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] function natcasesort(array &$array) {} /** * Sort an array and maintain index association * @link https://php.net/manual/en/function.asort.php * @param array &$array

    * The input array. *

    * @param int $flags

    * You may modify the behavior of the sort using the optional * parameter sort_flags, for details * see sort. *

    */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function asort(array &$array, int $flags = SORT_REGULAR) {} /** * Sort an array in reverse order and maintain index association * @link https://php.net/manual/en/function.arsort.php * @param array &$array

    * The input array. *

    * @param int $flags

    * You may modify the behavior of the sort using the optional parameter * sort_flags, for details see * sort. *

    */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function arsort(array &$array, int $flags = SORT_REGULAR) {} /** * Sort an array * @link https://php.net/manual/en/function.sort.php * @param array &$array

    * The input array. *

    * @param int $flags

    * The optional second parameter sort_flags * may be used to modify the sorting behavior using these values. *

    *

    * Sorting type flags:
    * SORT_REGULAR - compare items normally * (don't change types)

    */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function sort(array &$array, int $flags = SORT_REGULAR) {} /** * Sort an array in reverse order * @link https://php.net/manual/en/function.rsort.php * @param array &$array

    * The input array. *

    * @param int $flags

    * You may modify the behavior of the sort using the optional * parameter sort_flags, for details see * sort. *

    */ #[LanguageLevelTypeAware(['8.3' => 'true'], default: 'bool')] function rsort(array &$array, int $flags = SORT_REGULAR) {} /** * Sort an array by values using a user-defined comparison function * @link https://php.net/manual/en/function.usort.php * @param array &$array

    * The input array. *

    * @param callable $callback

    * The comparison function must return an integer less than, equal to, or * greater than zero if the first argument is considered to be * respectively less than, equal to, or greater than the second. *

    * @return true Always returns true. */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function usort(array &$array, callable $callback) {} /** * Sort an array with a user-defined comparison function and maintain index association * @link https://php.net/manual/en/function.uasort.php * @param array &$array

    * The input array. *

    * @param callable $callback

    * See usort and uksort for * examples of user-defined comparison functions. *

    */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function uasort(array &$array, callable $callback) {} /** * Sort an array by keys using a user-defined comparison function * @link https://php.net/manual/en/function.uksort.php * @param array &$array

    * The input array. *

    * @param callable $callback

    * The callback comparison function. *

    *

    * Function cmp_function should accept two * parameters which will be filled by pairs of array keys. * The comparison function must return an integer less than, equal * to, or greater than zero if the first argument is considered to * be respectively less than, equal to, or greater than the * second. *

    */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function uksort(array &$array, callable $callback) {} /** * Shuffle an array * @link https://php.net/manual/en/function.shuffle.php * @param array &$array

    * The array. *

    */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function shuffle(array &$array) {} /** * Apply a user function to every member of an array * @link https://php.net/manual/en/function.array-walk.php * @param array|object &$array

    * The input array. *

    * @param callable $callback

    * Typically, funcname takes on two parameters. * The array parameter's value being the first, and * the key/index second. *

    *

    * If funcname needs to be working with the * actual values of the array, specify the first parameter of * funcname as a * reference. Then, * any changes made to those elements will be made in the * original array itself. *

    *

    * Users may not change the array itself from the * callback function. e.g. Add/delete elements, unset elements, etc. If * the array that array_walk is applied to is * changed, the behavior of this function is undefined, and unpredictable. *

    * @param mixed $arg [optional]

    * If the optional userdata parameter is supplied, * it will be passed as the third parameter to the callback * funcname. *

    */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function array_walk(object|array &$array, callable $callback, mixed $arg) {} /** * Apply a user function recursively to every member of an array * @link https://php.net/manual/en/function.array-walk-recursive.php * @param array|object &$array

    * The input array. *

    * @param callable $callback

    * Typically, funcname takes on two parameters. * The input parameter's value being the first, and * the key/index second. *

    *

    * If funcname needs to be working with the * actual values of the array, specify the first parameter of * funcname as a * reference. Then, * any changes made to those elements will be made in the * original array itself. *

    * @param mixed $arg [optional]

    * If the optional userdata parameter is supplied, * it will be passed as the third parameter to the callback * funcname. *

    */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function array_walk_recursive(object|array &$array, callable $callback, mixed $arg) {} /** * Counts all elements in an array, or something in an object. *

    For objects, if you have SPL installed, you can hook into count() by implementing interface {@see Countable}. * The interface has exactly one method, {@see Countable::count()}, which returns the return value for the count() function. * Please see the {@see Array} section of the manual for a detailed explanation of how arrays are implemented and used in PHP.

    * @link https://php.net/manual/en/function.count.php * @param array|Countable $value The array or the object. * @param int $mode [optional] If the optional mode parameter is set to * COUNT_RECURSIVE (or 1), count * will recursively count the array. This is particularly useful for * counting all the elements of a multidimensional array. count does not detect infinite recursion. * @return int<0,max> the number of elements in var, which is * typically an array, since anything else will have one * element. *

    * If var is not an array or an object with * implemented Countable interface, * 1 will be returned. * There is one exception, if var is null, * 0 will be returned. *

    *

    * Caution: count may return 0 for a variable that isn't set, * but it may also return 0 for a variable that has been initialized with an * empty array. Use isset to test if a variable is set. *

    */ #[Pure] function count(Countable|array $value, int $mode = COUNT_NORMAL): int {} /** * Set the internal pointer of an array to its last element * @link https://php.net/manual/en/function.end.php * @param array|object &$array

    * The array. This array is passed by reference because it is modified by * the function. This means you must pass it a real variable and not * a function returning an array because only actual variables may be * passed by reference. *

    * @return mixed|false the value of the last element or false for empty array. * @meta */ function end(object|array &$array): mixed {} /** * Rewind the internal array pointer * @link https://php.net/manual/en/function.prev.php * @param array|object &$array

    * The input array. *

    * @return mixed|false the array value in the previous place that's pointed to by * the internal array pointer, or false if there are no more * elements. * @meta */ function prev(object|array &$array): mixed {} /** * Advance the internal array pointer of an array * @link https://php.net/manual/en/function.next.php * @param array|object &$array

    * The array being affected. *

    * @return mixed|false the array value in the next place that's pointed to by the * internal array pointer, or false if there are no more elements. * @meta */ function next(object|array &$array): mixed {} /** * Set the internal pointer of an array to its first element * @link https://php.net/manual/en/function.reset.php * @param array|object &$array

    * The input array. *

    * @return mixed|false the value of the first array element, or false if the array is * empty. * @meta */ function reset(object|array &$array): mixed {} /** * Return the current element in an array * @link https://php.net/manual/en/function.current.php * @param array|object $array

    * The array. *

    * @return mixed|false The current function simply returns the * value of the array element that's currently being pointed to by the * internal pointer. It does not move the pointer in any way. If the * internal pointer points beyond the end of the elements list or the array is * empty, current returns false. * @meta */ #[Pure] function current(object|array $array): mixed {} /** * Fetch a key from an array * @link https://php.net/manual/en/function.key.php * @param array|object $array

    * The array. *

    * @return int|string|null The key function simply returns the * key of the array element that's currently being pointed to by the * internal pointer. It does not move the pointer in any way. If the * internal pointer points beyond the end of the elements list or the array is * empty, key returns null. */ #[Pure] function key(object|array $array): string|int|null {} /** * Find lowest value * @link https://php.net/manual/en/function.min.php * @param array|mixed $value Array to look through or first value to compare * @param mixed ...$values any comparable value * @return mixed min returns the numerically lowest of the * parameter values. */ #[Pure] function min( #[PhpStormStubsElementAvailable(from: '8.0')] mixed $value, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] mixed $values, mixed ...$values ): mixed {} /** * Find highest value * @link https://php.net/manual/en/function.max.php * @param array|mixed $value Array to look through or first value to compare * @param mixed ...$values any comparable value * @return mixed max returns the numerically highest of the * parameter values, either within a arg array or two arguments. */ #[Pure] function max( #[PhpStormStubsElementAvailable(from: '8.0')] mixed $value, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] mixed $values, mixed ...$values ): mixed {} /** * Checks if a value exists in an array * @link https://php.net/manual/en/function.in-array.php * @param mixed $needle

    * The searched value. *

    *

    * If needle is a string, the comparison is done * in a case-sensitive manner. *

    * @param array $haystack

    * The array. *

    * @param bool $strict [optional]

    * If the third parameter strict is set to true * then the in_array function will also check the * types of the * needle in the haystack. *

    * @return bool true if needle is found in the array, * false otherwise. */ #[Pure] function in_array(mixed $needle, array $haystack, bool $strict = false): bool {} /** * Searches the array for a given value and returns the first corresponding key if successful * @link https://php.net/manual/en/function.array-search.php * @param mixed $needle

    * The searched value. *

    *

    * If needle is a string, the comparison is done * in a case-sensitive manner. *

    * @param array $haystack

    * The array. *

    * @param bool $strict [optional]

    * If the third parameter strict is set to true * then the array_search function will also check the * types of the * needle in the haystack. *

    * @return int|string|false the key for needle if it is found in the * array, false otherwise. *

    *

    * If needle is found in haystack * more than once, the first matching key is returned. To return the keys for * all matching values, use array_keys with the optional * search_value parameter instead. */ #[Pure] function array_search(mixed $needle, array $haystack, bool $strict = false): string|int|false {} /** * Import variables into the current symbol table from an array * @link https://php.net/manual/en/function.extract.php * @param array &$array

    * Note that prefix is only required if * extract_type is EXTR_PREFIX_SAME, * EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID * or EXTR_PREFIX_IF_EXISTS. If * the prefixed result is not a valid variable name, it is not * imported into the symbol table. Prefixes are automatically separated from * the array key by an underscore character. *

    * @param int $flags

    * The way invalid/numeric keys and collisions are treated is determined * by the extract_type. It can be one of the * following values: * EXTR_OVERWRITE * If there is a collision, overwrite the existing variable.

    * @param string $prefix

    Only overwrite the variable if it already exists in the * current symbol table, otherwise do nothing. This is useful * for defining a list of valid variables and then extracting * only those variables you have defined out of * $_REQUEST, for example.

    * @return int the number of variables successfully imported into the symbol * table. */ function extract( array &$array, #[ExpectedValues(flags: [ EXTR_OVERWRITE, EXTR_SKIP, EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID, EXTR_IF_EXISTS, EXTR_PREFIX_IF_EXISTS, EXTR_REFS ])] int $flags = EXTR_OVERWRITE, string $prefix = "" ): int {} /** * Create array containing variables and their values * @link https://php.net/manual/en/function.compact.php * @param mixed $var_name

    * compact takes a variable number of parameters. * Each parameter can be either a string containing the name of the * variable, or an array of variable names. The array can contain other * arrays of variable names inside it; compact * handles it recursively. *

    * @param mixed ...$var_names * @return array the output array with all the variables added to it. */ #[Pure] function compact(#[PhpStormStubsElementAvailable(from: '8.0')] $var_name, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $var_names, ...$var_names): array {} /** * Fill an array with values * @link https://php.net/manual/en/function.array-fill.php * @param int $start_index

    * The first index of the returned array. * Supports non-negative indexes only. *

    * @param int $count

    * Number of elements to insert *

    * @param mixed $value

    * Value to use for filling *

    * @return array the filled array */ #[Pure] function array_fill(int $start_index, int $count, mixed $value): array {} /** * Fill an array with values, specifying keys * @link https://php.net/manual/en/function.array-fill-keys.php * @param array $keys

    * Array of values that will be used as keys. Illegal values * for key will be converted to string. *

    * @param mixed $value

    * Value to use for filling *

    * @return array the filled array */ #[Pure] function array_fill_keys(array $keys, mixed $value): array {} /** * Create an array containing a range of elements * @link https://php.net/manual/en/function.range.php * @param mixed $start

    * First value of the sequence. *

    * @param mixed $end

    * The sequence is ended upon reaching the end value. *

    * @param positive-int|float $step [optional]

    * If a step value is given, it will be used as the * increment between elements in the sequence. step * should be given as a positive number. If not specified, * step will default to 1. *

    * @return array an array of elements from start to * end, inclusive. */ #[Pure] function range( #[LanguageLevelTypeAware(['8.3' => 'string|int|float'], default: '')] $start, #[LanguageLevelTypeAware(['8.3' => 'string|int|float'], default: '')] $end, int|float $step = 1 ): array {} /** * Sort multiple or multi-dimensional arrays * @link https://php.net/manual/en/function.array-multisort.php * @param array &$array

    * An array being sorted. *

    * @param &...$rest [optional]

    * More arrays, optionally followed by sort order and flags. * Only elements corresponding to equivalent elements in previous arrays are compared. * In other words, the sort is lexicographical. *

    * @return bool true on success or false on failure. */ function array_multisort( &$array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $sort_order = SORT_ASC, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $sort_flags = SORT_REGULAR, &...$rest ): bool {} /** * Push elements onto the end of array * Since 7.3.0 this function can be called with only one parameter. * For earlier versions at least two parameters are required. * @link https://php.net/manual/en/function.array-push.php * @param array &$array

    * The input array. *

    * @param mixed ...$values

    * The pushed variables. *

    * @return int the number of elements in the array. */ function array_push( array &$array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.2')] $values, mixed ...$values ): int {} /** * Pop the element off the end of array * @link https://php.net/manual/en/function.array-pop.php * @param array &$array

    * The array to get the value from. *

    * @return mixed|null the last value of array. * If array is empty (or is not an array), * null will be returned. * @meta */ function array_pop(array &$array): mixed {} /** * Shift an element off the beginning of array * @link https://php.net/manual/en/function.array-shift.php * @param array &$array

    * The input array. *

    * @return mixed|null the shifted value, or null if array is * empty or is not an array. * @meta */ function array_shift(array &$array): mixed {} /** * Prepend elements to the beginning of an array * Since 7.3.0 this function can be called with only one parameter. * For earlier versions at least two parameters are required. * @link https://php.net/manual/en/function.array-unshift.php * @param array &$array

    * The input array. *

    * @param mixed ...$values

    * The prepended variables. *

    * @return int the number of elements in the array. */ function array_unshift(array &$array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.2')] $values, mixed ...$values): int {} /** * Remove a portion of the array and replace it with something else * @link https://php.net/manual/en/function.array-splice.php * @param array &$array

    * The input array. *

    * @param int $offset

    * If offset is positive then the start of removed * portion is at that offset from the beginning of the * input array. If offset * is negative then it starts that far from the end of the * input array. *

    * @param int|null $length [optional]

    * If length is omitted, removes everything * from offset to the end of the array. If * length is specified and is positive, then * that many elements will be removed. If * length is specified and is negative then * the end of the removed portion will be that many elements from * the end of the array. Tip: to remove everything from * offset to the end of the array when * replacement is also specified, use * count($input) for * length. *

    * @param mixed $replacement

    * If replacement array is specified, then the * removed elements are replaced with elements from this array. *

    *

    * If offset and length * are such that nothing is removed, then the elements from the * replacement array are inserted in the place * specified by the offset. Note that keys in * replacement array are not preserved. *

    *

    * If replacement is just one element it is * not necessary to put array() * around it, unless the element is an array itself. *

    * @return array the array consisting of the extracted elements. */ function array_splice(array &$array, int $offset, ?int $length, mixed $replacement = []): array {} /** * Extract a slice of the array * @link https://php.net/manual/en/function.array-slice.php * @param array $array

    * The input array. *

    * @param int $offset

    * If offset is non-negative, the sequence will * start at that offset in the array. If * offset is negative, the sequence will * start that far from the end of the array. *

    * @param int|null $length [optional]

    * If length is given and is positive, then * the sequence will have that many elements in it. If * length is given and is negative then the * sequence will stop that many elements from the end of the * array. If it is omitted, then the sequence will have everything * from offset up until the end of the * array. *

    * @param bool $preserve_keys [optional]

    * Note that array_slice will reorder and reset the * array indices by default. You can change this behaviour by setting * preserve_keys to true. *

    * @return array the slice. * @meta */ #[Pure] function array_slice(array $array, int $offset, ?int $length, bool $preserve_keys = false): array {} /** * Merges the elements of one or more arrays together (if the input arrays have the same string keys, then the later value for that key will overwrite the previous one; if the arrays contain numeric keys, the later value will be appended) * Since 7.4.0 this function can be called without any parameter, and it will return empty array. * @link https://php.net/manual/en/function.array-merge.php * @param array ...$arrays

    * Variable list of arrays to merge. *

    * @return array the resulting array. * @meta */ #[Pure] function array_merge( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.3')] $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] $arrays, array ...$arrays ): array {} * The array in which elements are replaced. *

    * @param array ...$replacements

    * The array from which elements will be extracted. *

    * @return array or null if an error occurs. */ #[Pure] function array_replace( array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] $replacements, array ...$replacements ): array {} /** * Replaces elements from passed arrays into the first array recursively * @link https://php.net/manual/en/function.array-replace-recursive.php * @param array $array

    * The array in which elements are replaced. *

    * @param array ...$replacements

    * The array from which elements will be extracted. *

    * @return array an array, or null if an error occurs. */ #[Pure] function array_replace_recursive( array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] $replacements, array ...$replacements ): array {} /** * Return all the keys or a subset of the keys of an array * @link https://php.net/manual/en/function.array-keys.php * @param array $array

    * An array containing keys to return. *

    * @param mixed $filter_value [optional]

    * If specified, then only keys containing these values are returned. *

    * @param bool $strict [optional]

    * Determines if strict comparison (===) should be used during the search. *

    * @return int[]|string[] an array of all the keys in input. */ #[Pure] function array_keys(array $array, mixed $filter_value, bool $strict = false): array {} /** * Return all the values of an array * @link https://php.net/manual/en/function.array-values.php * @param array $array

    * The array. *

    * @return array an indexed array of values. * @meta */ #[Pure] function array_values(array $array): array {} /** * Counts all the values of an array * @link https://php.net/manual/en/function.array-count-values.php * @param array $array

    * The array of values to count *

    * @return array an associative array of values from input as * keys and their count as value. */ #[Pure] function array_count_values(array $array): array {} /** * Return the values from a single column in the input array * @link https://secure.php.net/manual/en/function.array-column.php * @param array $array

    A multi-dimensional array (record set) from which to pull a column of values.

    * @param string|int|null $column_key

    The column of values to return. This value may be the integer key of the column you wish to retrieve, or it may be the string key name for an associative array. It may also be NULL to return complete arrays (useful together with index_key to reindex the array).

    * @param string|int|null $index_key [optional]

    The column to use as the index/keys for the returned array. This value may be the integer key of the column, or it may be the string key name.

    * @return array Returns an array of values representing a single column from the input array. * @since 5.5 */ #[Pure] function array_column(array $array, string|int|null $column_key, string|int|null $index_key = null): array {} /** * Return an array with elements in reverse order * @link https://php.net/manual/en/function.array-reverse.php * @param array $array

    * The input array. *

    * @param bool $preserve_keys [optional]

    * If set to true keys are preserved. *

    * @return array the reversed array. * @meta */ #[Pure] function array_reverse(array $array, bool $preserve_keys = false): array {} /** * Iteratively reduce the array to a single value using a callback function * @link https://php.net/manual/en/function.array-reduce.php * @param array $array

    * The input array. *

    * @param callable $callback

    * The callback function. Signature is

    callback ( mixed $carry , mixed $item ) : mixed
    *
    mixed $carry

    The return value of the previous iteration; on the first iteration it holds the value of $initial.

    *
    mixed $item

    Holds the current iteration value of the $input

    *

    * @param mixed $initial [optional]

    * If the optional initial is available, it will * be used at the beginning of the process, or as a final result in case * the array is empty. *

    * @return mixed the resulting value. *

    * If the array is empty and initial is not passed, * array_reduce returns null. *

    *
    *

    * Example use: *

    array_reduce(['2', '3', '4'], function($ax, $dx) { return $ax . ", {$dx}"; }, '1')  // Returns '1, 2, 3, 4'
    *
    array_reduce(['2', '3', '4'], function($ax, $dx) { return $ax + (int)$dx; }, 1)  // Returns 10
    *
    *

    * @meta */ function array_reduce(array $array, callable $callback, mixed $initial = null): mixed {} /** * Pad array to the specified length with a value * @link https://php.net/manual/en/function.array-pad.php * @param array $array

    * Initial array of values to pad. *

    * @param int $length

    * New size of the array. *

    * @param mixed $value

    * Value to pad if input is less than * pad_size. *

    * @return array a copy of the input padded to size specified * by pad_size with value * pad_value. If pad_size is * positive then the array is padded on the right, if it's negative then * on the left. If the absolute value of pad_size is less than or equal to * the length of the input then no padding takes place. */ #[Pure] function array_pad(array $array, int $length, mixed $value): array {} /** * Exchanges all keys with their associated values in an array * @link https://php.net/manual/en/function.array-flip.php * @param int[]|string[] $array

    * An array of key/value pairs to be flipped. *

    * @return int[]|string[] Returns the flipped array. */ #[Pure] function array_flip(array $array): array {} /** * Changes the case of all keys in an array * @link https://php.net/manual/en/function.array-change-key-case.php * @param array $array

    * The array to work on *

    * @param int $case

    * Either CASE_UPPER or * CASE_LOWER (default) *

    * @return array an array with its keys lower or uppercased * @meta */ #[Pure] function array_change_key_case(array $array, int $case = CASE_LOWER): array {} /** * Pick one or more random keys out of an array * @link https://php.net/manual/en/function.array-rand.php * @param array $array

    * The input array. *

    * @param int $num [optional]

    * Specifies how many entries you want to pick. *

    * @return int|string|array If you are picking only one entry, array_rand * returns the key for a random entry. Otherwise, it returns an array * of keys for the random entries. This is done so that you can pick * random keys as well as values out of the array. */ function array_rand(array $array, int $num = 1): array|string|int {} /** * Removes duplicate values from an array * @link https://php.net/manual/en/function.array-unique.php * @param array $array

    * The input array. *

    * @param int $flags [optional]

    * The optional second parameter sort_flags * may be used to modify the sorting behavior using these values: *

    *

    * Sorting type flags: *

      *
    • * SORT_REGULAR - compare items normally * (don't change types) *
    • *
    • * SORT_NUMERIC - compare items numerically *
    • *
    • * SORT_STRING - compare items as strings *
    • *
    • * SORT_LOCALE_STRING - compare items as strings, * based on the current locale *
    • *
    * @return array the filtered array. * @meta */ #[Pure] function array_unique(array $array, int $flags = SORT_STRING): array {} /** * Computes the intersection of arrays * @link https://php.net/manual/en/function.array-intersect.php * @param array $array

    * The array with main values to check. *

    * @param array ...$arrays arrays to compare values against. * @return array an array containing all the values of * array that are present in all the arguments. * Note that keys are preserved. * @meta */ #[Pure] function array_intersect(array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $arrays, array ...$arrays): array {} /** * Computes the intersection of arrays using keys for comparison * @link https://php.net/manual/en/function.array-intersect-key.php * @param array $array

    * The array with main keys to check. *

    * @param array ...$arrays * @return array an array containing all the entries of * array which have keys that are present in all the * arguments. * @meta */ #[Pure] function array_intersect_key(array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $arrays, array ...$arrays): array {} /** * Computes the intersection of arrays using a callback function on the keys for comparison * @link https://php.net/manual/en/function.array-intersect-ukey.php * @param array $array

    * Initial array for comparison of the arrays. *

    * @param array $array2

    * First array to compare keys against. *

    * @param callable $key_compare_func

    * User supplied callback function to do the comparison. *

    * @param ...$rest [optional] * @return array an array containing all the values of * array which have matching keys that are present * in all the arguments. * @meta */ function array_intersect_ukey( array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] array $array2, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] callable $key_compare_func, #[PhpStormStubsElementAvailable(from: '8.0')] ...$rest ): array {} /** * Computes the intersection of arrays, compares data by a callback function * @link https://php.net/manual/en/function.array-uintersect.php * @param array $array

    * The first array. *

    * @param array $array2

    * The second array. *

    * @param callable $data_compare_func

    * The callback comparison function. *

    * @param array ...$rest *

    * The user supplied callback function is used for comparison. * It must return an integer less than, equal to, or greater than zero if * the first argument is considered to be respectively less than, equal * to, or greater than the second. *

    * @return array an array containing all the values of array * that are present in all the arguments. * @meta */ function array_uintersect( array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] array $array2, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] callable $data_compare_func, #[PhpStormStubsElementAvailable(from: '8.0')] ...$rest ): array {} /** * Computes the intersection of arrays with additional index check * @link https://php.net/manual/en/function.array-intersect-assoc.php * @param array $array

    * The array with main values to check. *

    * @param array $arrays * @return array an associative array containing all the values in * array that are present in all of the arguments. * @meta */ #[Pure] function array_intersect_assoc(array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $arrays, array ...$arrays): array {} /** * Computes the intersection of arrays with additional index check, compares data by a callback function * @link https://php.net/manual/en/function.array-uintersect-assoc.php * @param array $array

    * The first array. *

    * @param array $array2

    * The second array. *

    * @param callable $data_compare_func

    * For comparison is used the user supplied callback function. * It must return an integer less than, equal * to, or greater than zero if the first argument is considered to * be respectively less than, equal to, or greater than the * second. *

    * @param array ...$rest * @return array an array containing all the values of * array that are present in all the arguments. * @meta */ function array_uintersect_assoc( array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] array $array2, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] callable $data_compare_func, #[PhpStormStubsElementAvailable(from: '8.0')] ...$rest ): array {} /** * Computes the intersection of arrays with additional index check, compares indexes by a callback function * @link https://php.net/manual/en/function.array-intersect-uassoc.php * @param array $array

    * Initial array for comparison of the arrays. *

    * @param array $array2

    * First array to compare keys against. *

    * @param callable $key_compare_func

    * User supplied callback function to do the comparison. *

    * @param array ...$rest * @return array the values of array whose values exist in all of the arguments. * @meta */ function array_intersect_uassoc( array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] array $array2, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] callable $key_compare_func, #[PhpStormStubsElementAvailable(from: '8.0')] ...$rest ): array {} /** * Computes the intersection of arrays with additional index check, compares data and indexes by separate callback functions * @link https://php.net/manual/en/function.array-uintersect-uassoc.php * @param array $array

    * The first array. *

    * @param array $array2

    * The second array. *

    * @param callable $data_compare_func

    * For comparison is used the user supplied callback function. * It must return an integer less than, equal * to, or greater than zero if the first argument is considered to * be respectively less than, equal to, or greater than the * second. *

    * @param callable $key_compare_func

    * Key comparison callback function. *

    * @param array ...$rest * @return array an array containing all the values and keys of * array1 that are present in all the arguments. * @meta */ #[Pure] function array_uintersect_uassoc( array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] array $array2, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] callable $data_compare_func, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] callable $key_compare_func, #[PhpStormStubsElementAvailable(from: '8.0')] ...$rest ): array {} /** * Computes the difference of arrays * @link https://php.net/manual/en/function.array-diff.php * @param array $array

    * The array to compare from *

    * @param array ...$arrays * @return array an array containing all the entries from * array that are not present in any of the other * arrays. Keys in the array array are preserved. * @meta */ #[Pure] function array_diff(array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $arrays, array ...$arrays): array {} /** * Computes the difference of arrays using keys for comparison * @link https://php.net/manual/en/function.array-diff-key.php * @param array $array

    * The array to compare from *

    * @param array $arrays

    * An array to compare against *

    * @return array an array containing all the entries from * array whose keys are absent from all of the other arrays. * @meta */ #[Pure] function array_diff_key(array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $arrays, array ...$arrays): array {} /** * Computes the difference of arrays using a callback function on the keys for comparison * @link https://php.net/manual/en/function.array-diff-ukey.php * @param array $array

    * The array to compare from *

    * @param array $array2

    * An array to compare against *

    * @param callable $key_compare_func

    * callback function to use. * The callback function must return an integer less than, equal * to, or greater than zero if the first argument is considered to * be respectively less than, equal to, or greater than the second. *

    * @param array ...$rest [optional] * @return array an array containing all the entries from * array that are not present in any of the other arrays. * @meta */ function array_diff_ukey( array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] array $array2, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] callable $key_compare_func, #[PhpStormStubsElementAvailable(from: '8.0')] ...$rest, ): array {} /** * Computes the difference of arrays by using a callback function for data comparison * @link https://php.net/manual/en/function.array-udiff.php * @param array $array

    * The first array. *

    * @param array $array2

    * The second array. *

    * @param callable $data_compare_func

    * The callback comparison function. *

    *

    * The user supplied callback function is used for comparison. * It must return an integer less than, equal to, or greater than zero if * the first argument is considered to be respectively less than, equal * to, or greater than the second. *

    * @param array ...$rest [optional] * @return array an array containing all the values of * array that are not present in any of the other arguments. * @meta */ function array_udiff( array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] array $array2, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] callable $data_compare_func, #[PhpStormStubsElementAvailable(from: '8.0')] ...$rest, ): array {} /** * Computes the difference of arrays with additional index check * @link https://php.net/manual/en/function.array-diff-assoc.php * @param array $array

    * The array to compare from *

    * @param array $arrays

    * An array to compare against *

    * @return array an array containing all the values from * array that are not present in any of the other arrays. * @meta */ #[Pure] function array_diff_assoc( array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $arrays, array ...$arrays ): array {} /** * Computes the difference of arrays with additional index check, compares data by a callback function * @link https://php.net/manual/en/function.array-udiff-assoc.php * @param array $array

    * The first array. *

    * @param array $array2

    * The second array. *

    * @param callable $data_compare_func

    * The callback comparison function. *

    *

    * The user supplied callback function is used for comparison. * It must return an integer less than, equal to, or greater than zero if * the first argument is considered to be respectively less than, equal * to, or greater than the second. *

    * @param array ...$rest [optional] * @return array returns an array containing all the values from array * that are not present in any of the other arguments. * Note that the keys are used in the comparison unlike * array_diff and array_udiff. * The comparison of arrays' data is performed by using an user-supplied * callback. In this aspect the behaviour is opposite to the behaviour of * array_diff_assoc which uses internal function for * comparison. * @meta */ function array_udiff_assoc( array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] array $array2, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] callable $data_compare_func, #[PhpStormStubsElementAvailable(from: '8.0')] ...$rest, ): array {} /** * Computes the difference of arrays with additional index check which is performed by a user supplied callback function * @link https://php.net/manual/en/function.array-diff-uassoc.php * @param array $array

    * The array to compare from *

    * @param array $array2

    * An array to compare against *

    * @param callable $key_compare_func

    * callback function to use. * The callback function must return an integer less than, equal * to, or greater than zero if the first argument is considered to * be respectively less than, equal to, or greater than the second. *

    * @param array ...$rest [optional] * @return array an array containing all the values and keys from * array that are not present in any of the other arrays. * @meta */ function array_diff_uassoc( array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] array $array2, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] callable $key_compare_func, #[PhpStormStubsElementAvailable(from: '8.0')] ...$rest, ): array {} /** * Computes the difference of arrays with additional index check, compares data and indexes by a callback function * @link https://php.net/manual/en/function.array-udiff-uassoc.php * @param array $array

    * The first array. *

    * @param array $array2

    * The second array. *

    * @param callable $data_compare_func

    * The callback comparison function. *

    *

    * The user supplied callback function is used for comparison. * It must return an integer less than, equal to, or greater than zero if * the first argument is considered to be respectively less than, equal * to, or greater than the second. *

    *

    * The comparison of arrays' data is performed by using an user-supplied * callback : data_compare_func. In this aspect * the behaviour is opposite to the behaviour of * array_diff_assoc which uses internal function for * comparison. *

    * @param callable $key_compare_func

    * The comparison of keys (indices) is done also by the callback function * key_compare_func. This behaviour is unlike what * array_udiff_assoc does, since the latter compares * the indices by using an internal function. *

    * @param array ...$rest [optional] * @return array an array containing all the values and keys from * array that are not present in any of the other * arguments. * @meta */ function array_udiff_uassoc( array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] array $array2, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] callable $data_compare_func, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] callable $key_compare_func, #[PhpStormStubsElementAvailable(from: '8.0')] ...$rest ): array {} /** * Calculate the sum of values in an array * @link https://php.net/manual/en/function.array-sum.php * @param array $array

    * The input array. *

    * @return int|float the sum of values as an integer or float. */ #[Pure] function array_sum(array $array): int|float {} /** * Calculate the product of values in an array * @link https://php.net/manual/en/function.array-product.php * @param array $array

    * The array. *

    * @return int|float the product as an integer or float. */ #[Pure] function array_product(array $array): int|float {} /** * Iterates over each value in the array * passing them to the callback function. * If the callback function returns true, the * current value from array is returned into * the result array. Array keys are preserved. * @link https://php.net/manual/en/function.array-filter.php * @param array $array

    * The array to iterate over *

    * @param callable|null $callback [optional]

    * The callback function to use *

    *

    * If no callback is supplied, all entries of * input equal to false (see * converting to * boolean) will be removed. *

    * @param int $mode [optional]

    * Flag determining what arguments are sent to callback: *

      *
    • * ARRAY_FILTER_USE_KEY - pass key as the only argument * to callback instead of the value *
    • *
    • * ARRAY_FILTER_USE_BOTH - pass both value and key as * arguments to callback instead of the value *
    • *
    * @return array the filtered array. * @meta */ function array_filter(array $array, ?callable $callback, int $mode = 0): array {} /** * Applies the callback to the elements of the given arrays * @link https://php.net/manual/en/function.array-map.php * @param callable|null $callback

    * Callback function to run for each element in each array. *

    * @param array $array

    * An array to run through the callback function. *

    * @param array ...$arrays * @return array an array containing all the elements of arr1 * after applying the callback function to each one. * @meta */ function array_map( ?callable $callback, #[PhpStormStubsElementAvailable(from: '8.0')] array $array, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $arrays, array ...$arrays ): array {} /** * Split an array into chunks * @link https://php.net/manual/en/function.array-chunk.php * @param array $array

    * The array to work on *

    * @param int $length

    * The size of each chunk *

    * @param bool $preserve_keys [optional]

    * When set to true keys will be preserved. * Default is false which will reindex the chunk numerically *

    * @return array a multidimensional numerically indexed array, starting with zero, * with each dimension containing size elements. */ #[Pure] function array_chunk(array $array, int $length, bool $preserve_keys = false): array {} /** * Creates an array by using one array for keys and another for its values * @link https://php.net/manual/en/function.array-combine.php * @param array $keys

    * Array of keys to be used. Illegal values for key will be * converted to string. *

    * @param array $values

    * Array of values to be used *

    * @return array|false the combined array, false if the number of elements * for each array isn't equal or if the arrays are empty. * @meta */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "array"], default: "array|false")] function array_combine(array $keys, array $values) {} /** * Checks if the given key or index exists in the array * @link https://php.net/manual/en/function.array-key-exists.php * @param int|string $key

    * Value to check. *

    * @param array|ArrayObject $array

    * An array with keys to check. *

    * @return bool true on success or false on failure. */ #[Pure] function array_key_exists($key, #[LanguageLevelTypeAware(["8.0" => "array"], default: "array|ArrayObject")] $array): bool {} /** * Gets the first key of an array * * Get the first key of the given array without affecting the internal array pointer. * * @link https://secure.php.net/array_key_first * @param array $array An array * @return string|int|null Returns the first key of array if the array is not empty; NULL otherwise. * @since 7.3 */ #[Pure] function array_key_first(array $array): string|int|null {} /** * Gets the last key of an array * * Get the last key of the given array without affecting the internal array pointer. * * @link https://secure.php.net/array_key_last * @param array $array An array * @return string|int|null Returns the last key of array if the array is not empty; NULL otherwise. * @since 7.3 */ #[Pure] function array_key_last(array $array): string|int|null {} /** * @link https://secure.php.net/array_is_list * @param array $array An array * @return bool return true if the array keys are 0 .. count($array)-1 in that order. * For other arrays, it returns false. For non-arrays, it throws a TypeError. * @since 8.1 */ #[Pure] function array_is_list(array $array): bool {} /** * Alias: * {@see current} * @link https://php.net/manual/en/function.pos.php * @param array|ArrayAccess $array * @return mixed */ #[Pure] function pos(object|array $array): mixed {} /** * Alias: * {@see \count} * @link https://php.net/manual/en/function.sizeof.php * @param array|Countable $value * @param int $mode [optional] * @return int<0, max> */ #[Pure] function sizeof(Countable|array $value, int $mode = COUNT_NORMAL): int {} /** * Checks if the given key or index exists in the array. The name of this function is array_key_exists() in PHP > 4.0.6. * @link https://php.net/manual/en/function.array-key-exists.php * @param int|string $key

    * Value to check. *

    * @param array $array

    * An array with keys to check. *

    * @return bool true on success or false on failure. */ #[Pure] function key_exists($key, array $array): bool {} /** * Checks if assertion is FALSE * @link https://php.net/manual/en/function.assert.php * @param Throwable|string|null $assertion

    * The assertion. * In PHP 5, this must be either a string to be evaluated or a boolean to be tested. * In PHP 7, this may also be any expression that returns a value, * which will be executed and the result used to indicate whether the assertion succeeded or failed.
    * Since 7.2.0 using string is deprecated. *

    * @param string $description [optional] *

    An optional description that will be included in the failure message if the assertion fails.

    * @return bool false if the assertion is false, true otherwise. */ function assert( mixed $assertion, #[PhpStormStubsElementAvailable(from: '7.0')] #[LanguageLevelTypeAware(['7.0' => 'Throwable|string|null'], default: 'string')] $description = null ): bool {} /** * AssertionError is thrown when an assertion made via {@see assert()} fails. * @link https://php.net/manual/en/class.assertionerror.php * @since 7.0 */ class AssertionError extends Error {} /** * Set/get the various assert flags * @link https://php.net/manual/en/function.assert-options.php * @param int $option

    * * Assert Options * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    OptionINI SettingDefault valueDescription
    ASSERT_ACTIVEassert.active1enable assert evaluation
    ASSERT_WARNINGassert.warning1issue a PHP warning for each failed assertion
    ASSERT_BAILassert.bail0terminate execution on failed assertions
    ASSERT_QUIET_EVALassert.quiet_eval0 * disable error_reporting during assertion expression * evaluation *
    ASSERT_CALLBACKassert.callbacknullCallback to call on failed assertions
    *

    * @param mixed $value [optional]

    * An optional new value for the option. *

    * @return mixed The original setting of any option. */ #[Deprecated(since: "8.3")] function assert_options(int $option, mixed $value): mixed {} /** * Compares two "PHP-standardized" version number strings * @link https://php.net/manual/en/function.version-compare.php * @param string $version1

    * First version number. *

    * @param string $version2

    * Second version number. *

    * @param string|null $operator [optional]

    * If you specify the third optional operator * argument, you can test for a particular relationship. The * possible operators are: <, * lt, <=, * le, >, * gt, >=, * ge, ==, * =, eq, * !=, <>, * ne respectively. *

    *

    * This parameter is case-sensitive, so values should be lowercase. *

    * @return int|bool By default, version_compare returns * -1 if the first version is lower than the second, * 0 if they are equal, and * 1 if the second is lower. *

    *

    * When using the optional operator argument, the * function will return true if the relationship is the one specified * by the operator, false otherwise. */ #[ExpectedValues([-1, 0, 1, false, true])] function version_compare( string $version1, string $version2, #[ExpectedValues(values: [ "<", "lt", "<=", "le", ">", "gt", ">=", "ge", "==", "=", "eq", "!=", "<>", "ne" ])] ?string $operator ): int|bool {} /** * Convert a pathname and a project identifier to a System V IPC key * @link https://php.net/manual/en/function.ftok.php * @param string $filename

    * Path to an accessible file. *

    * @param string $project_id

    * Project identifier. This must be a one character string. *

    * @return int On success the return value will be the created key value, otherwise * -1 is returned. */ #[Pure(true)] function ftok(string $filename, string $project_id): int {} /** * Perform the rot13 transform on a string * @link https://php.net/manual/en/function.str-rot13.php * @param string $string

    * The input string. *

    * @return string the ROT13 version of the given string. */ #[Pure] function str_rot13(string $string): string {} /** * Retrieve list of registered filters * @link https://php.net/manual/en/function.stream-get-filters.php * @return list an indexed array containing the name of all stream filters * available. */ #[Pure(true)] function stream_get_filters(): array {} /** * Check if a stream is a TTY * @link https://php.net/manual/en/function.stream-isatty.php * @param resource $stream * @return bool * @since 7.2 */ #[Pure] function stream_isatty($stream): bool {} /** * Register a user defined stream filter * @link https://php.net/manual/en/function.stream-filter-register.php * @param string $filter_name

    * The filter name to be registered. *

    * @param string $class

    * To implement a filter, you need to define a class as an extension of * php_user_filter with a number of member functions * as defined below. When performing read/write operations on the stream * to which your filter is attached, PHP will pass the data through your * filter (and any other filters attached to that stream) so that the * data may be modified as desired. You must implement the methods * exactly as described below - doing otherwise will lead to undefined * behaviour. *

    * intfilter * resourcein * resourceout * intconsumed * boolclosing *

    * This method is called whenever data is read from or written to * the attached stream (such as with fread or fwrite). * in is a resource pointing to a bucket brigade * which contains one or more bucket objects containing data to be filtered. * out is a resource pointing to a second bucket brigade * into which your modified buckets should be placed. * consumed, which must always * be declared by reference, should be incremented by the length of the data * which your filter reads in and alters. In most cases this means you will * increment consumed by $bucket->datalen * for each $bucket. If the stream is in the process of closing * (and therefore this is the last pass through the filterchain), * the closing parameter will be set to true. * The filter method must return one of * three values upon completion. * * Return Value * Meaning * * * PSFS_PASS_ON * * Filter processed successfully with data available in the * out bucket brigade. * * * * PSFS_FEED_ME * * Filter processed successfully, however no data was available to * return. More data is required from the stream or prior filter. * * * * PSFS_ERR_FATAL (default) * * The filter experienced an unrecoverable error and cannot continue. * * *

    * boolonCreate * This method is called during instantiation of the filter class * object. If your filter allocates or initializes any other resources * (such as a buffer), this is the place to do it. Your implementation of * this method should return false on failure, or true on success. * When your filter is first instantiated, and * yourfilter->onCreate() is called, a number of properties * will be available as shown in the table below. *

    * * Property * Contents * * * FilterClass->filtername * * A string containing the name the filter was instantiated with. * Filters may be registered under multiple names or under wildcards. * Use this property to determine which name was used. * * * * FilterClass->params * * The contents of the params parameter passed * to stream_filter_append * or stream_filter_prepend. * * * * FilterClass->stream * * The stream resource being filtered. Maybe available only during * filter calls when the * closing parameter is set to false. * * *

    * voidonClose *

    * This method is called upon filter shutdown (typically, this is also * during stream shutdown), and is executed after * the flush method is called. If any resources * were allocated or initialized during onCreate() * this would be the time to destroy or dispose of them. *

    * @return bool true on success or false on failure. *

    * stream_filter_register will return false if the * filtername is already defined. *

    */ function stream_filter_register(string $filter_name, string $class): bool {} /** * Return a bucket object from the brigade for operating on * @link https://php.net/manual/en/function.stream-bucket-make-writeable.php * @param resource $brigade * @return object|null */ #[LanguageLevelTypeAware(["8.4" => "StreamBucket|null"], default: "object|null")] function stream_bucket_make_writeable($brigade) {} /** * Prepend bucket to brigade * @link https://php.net/manual/en/function.stream-bucket-prepend.php * @param resource $brigade * @param object $bucket * @return void */ function stream_bucket_prepend($brigade, #[LanguageLevelTypeAware(['8.4' => 'StreamBucket'], default: 'object')] $bucket): void {} /** * Append bucket to brigade * @link https://php.net/manual/en/function.stream-bucket-append.php * @param resource $brigade * @param object $bucket * @return void */ function stream_bucket_append($brigade, #[LanguageLevelTypeAware(['8.4' => 'StreamBucket'], default: 'object')] $bucket): void {} /** * Create a new bucket for use on the current stream * @link https://php.net/manual/en/function.stream-bucket-new.php * @param resource $stream * @param string $buffer * @return object */ #[LanguageLevelTypeAware(["8.4" => "StreamBucket"], default: "object")] function stream_bucket_new($stream, string $buffer) {} /** * Add URL rewriter values * @link https://php.net/manual/en/function.output-add-rewrite-var.php * @param string $name

    * The variable name. *

    * @param string $value

    * The variable value. *

    * @return bool true on success or false on failure. */ function output_add_rewrite_var(string $name, string $value): bool {} /** * Reset URL rewriter values * * * * * * * * * * * * * * * * * *
    VersionDescription
    7.1.0 * Before PHP 7.1.0, rewrite vars set by output_add_rewrite_var() * use the same Session module trans sid output buffer. Since PHP 7.1.0, * dedicated output buffer is used and {@see output_reset_rewrite_vars()} * only removes rewrite vars defined by {@see output_add_rewrite_var()}. *
    * * @link https://php.net/manual/en/function.output-reset-rewrite-vars.php * @return bool true on success or false on failure. */ function output_reset_rewrite_vars(): bool {} /** * Returns directory path used for temporary files * @link https://php.net/manual/en/function.sys-get-temp-dir.php * @return string the path of the temporary directory. * @since 5.2.1 */ function sys_get_temp_dir(): string {} /** * Get the contents of the realpath cache. * @link https://php.net/manual/en/function.realpath-cache-get.php * @return array Returns an array of realpath cache entries. The keys are * original path entries, and the values are arrays of data items, * containing the resolved path, expiration date, and other options kept in * the cache. * @since 5.3.2 */ #[Pure(true)] function realpath_cache_get(): array {} /** * Get the amount of memory used by the realpath cache. * @link https://php.net/manual/en/function.realpath-cache-size.php * @return int Returns how much memory realpath cache is using. * @since 5.3.2 */ #[Pure(true)] function realpath_cache_size(): int {} /** * It returns the same result as (array) $object, with the * exception that it ignores overloaded array casts, such as used by * ArrayObject. * @param object $object * @return array returns the mangled object properties * @since 7.4 */ function get_mangled_object_vars(object $object): array {} /** * Get the type or object name of a variable * * @param mixed $value The variable being type checked. * @return string Possibles values for the returned string are: * - "int" * - "float" * - "bool" * - "string" * - "array" * - "null" * - A class name for named classes * - "class@anonymous" for an anonymous classes * - "resource (xxx)" for any resources where "xxx" is a name of resource * - "resource (closed)" for closed resources * @since 8.0 */ #[Pure] function get_debug_type(mixed $value): string {} /** * A more obvious and type-safe form of "(int) $resource" * * @param resource $resource * @return int * @since 8.0 */ #[Pure] function get_resource_id($resource): int {} 'string'], default: '')] public $filtername; #[LanguageLevelTypeAware(['8.1' => 'mixed'], default: '')] public $params; public $stream; /** * @link https://php.net/manual/en/php-user-filter.filter.php * @param resource $in

    is a resource pointing to a bucket brigadebucket objects containing data to be filtered.

    * @param resource $out

    is a resource pointing to a second bucket brigade into which your modified buckets should be placed.

    * @param int &$consumed

    which must always be declared by reference, should be incremented by the length of the data which your filter reads in and alters. In most cases this means you will increment consumed by $bucket->datalen for each $bucket.

    * @param bool $closing

    If the stream is in the process of closing (and therefore this is the last pass through the filterchain), the closing parameter will be set to TRUE * @return int

    * The filter() method must return one of * three values upon completion. *

    * * * * * * * * * * * * * * * * * * * * * * * * */ #[TentativeType] public function filter( $in, $out, &$consumed, #[LanguageLevelTypeAware(['8.0' => 'bool'], default: '')] $closing ): int {} /** * @link https://php.net/manual/en/php-user-filter.oncreate.php * @return bool */ #[TentativeType] public function onCreate(): bool {} /** * @link https://php.net/manual/en/php-user-filter.onclose.php */ #[TentativeType] public function onClose(): void {} } /** * @since 8.4 */ final class StreamBucket { public $bucket; public string $data; public int $datalen; public int $dataLength; } /** * Instances of Directory are created by calling the dir() function, not by the new operator. */ class Directory { /** * @var string The directory that was opened. * @removed 8.1 */ public $path; /** * @var string The directory that was opened. * @since 8.1 */ public readonly string $path; /** * @var resource Can be used with other directory functions such as {@see readdir()}, {@see rewinddir()} and {@see closedir()}. * @removed 8.1 */ public $handle; /** * @var resource Can be used with other directory functions such as {@see readdir()}, {@see rewinddir()} and {@see closedir()}. * @since 8.1 */ public readonly mixed $handle; /** * Close directory handle. * Same as closedir(), only dir_handle defaults to $this. * @param resource $dir_handle [optional] * @link https://secure.php.net/manual/en/directory.close.php */ #[TentativeType] public function close(#[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $dir_handle = null): void {} /** * Rewind directory handle. * Same as rewinddir(), only dir_handle defaults to $this. * @param resource $dir_handle [optional] * @link https://secure.php.net/manual/en/directory.rewind.php */ #[TentativeType] public function rewind(#[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $dir_handle = null): void {} /** * Read entry from directory handle. * Same as readdir(), only dir_handle defaults to $this. * @param resource $dir_handle [optional] * @return string|false * @link https://secure.php.net/manual/en/directory.read.php */ #[TentativeType] public function read(#[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] $dir_handle = null): string|false {} } /** * Returns the value of a constant * @link https://php.net/manual/en/function.constant.php * @param string $name

    * The constant name. *

    * @return mixed the value of the constant. * @throws Error If the constant is not defined */ #[Pure(true)] function constant(string $name): mixed {} /** * Convert binary data into hexadecimal representation * @link https://php.net/manual/en/function.bin2hex.php * @param string $string

    * A string. *

    * @return string the hexadecimal representation of the given string. */ #[Pure] function bin2hex(string $string): string {} /** * Delays the program execution for the given number of seconds * @link https://php.net/manual/en/function.sleep.php * @param int<0,max> $seconds

    * Halt time in seconds (must be greater than or equal to 0). *

    * @return int Returns zero on success. *

    * If the call was interrupted by a signal, sleep() returns a * non-zero value. On Windows, this value will always be 192 * (the value of the WAIT_IO_COMPLETION constant within the Windows API). * On other platforms, the return value will be the * number of seconds left to sleep. *

    *

    * As of PHP 8.0, if the specified number of seconds is negative, * this function will throw a ValueError. * Before PHP 8.0, an E_WARNING was raised instead, and the function returned false. *

    */ #[LanguageLevelTypeAware(["8.0" => "int"], default: "int|false")] function sleep(int $seconds) {} /** * Delay execution in microseconds * @link https://php.net/manual/en/function.usleep.php * @param int<0,max> $microseconds

    * Halt time in micro seconds. A micro second is one millionth of a * second. *

    * @return void */ function usleep(int $microseconds): void {} /** * Delay for a number of seconds and nanoseconds * @link https://php.net/manual/en/function.time-nanosleep.php * @param positive-int $seconds

    * Must be a positive integer. *

    * @param positive-int $nanoseconds

    * Must be a positive integer less than 1 billion. *

    * @return bool|array true on success or false on failure. *

    * If the delay was interrupted by a signal, an associative array will be * returned with the components: * seconds - number of seconds remaining in * the delay * nanoseconds - number of nanoseconds * remaining in the delay *

    */ #[ArrayShape(["seconds" => "int", "nanoseconds" => "int"])] function time_nanosleep(int $seconds, int $nanoseconds): array|bool {} /** * Make the script sleep until the specified time * @link https://php.net/manual/en/function.time-sleep-until.php * @param float $timestamp

    * The timestamp when the script should wake. *

    * @return bool true on success or false on failure. */ function time_sleep_until(float $timestamp): bool {} /** * Parse a time/date generated with strftime * @link https://php.net/manual/en/function.strptime.php * @param string $timestamp

    * The string to parse (e.g. returned from strftime) *

    * @param string $format

    * The format used in date (e.g. the same as * used in strftime). *

    *

    * For more information about the format options, read the * strftime page. *

    * @return array|false an array or false on failure. *

    *

    Return ValueMeaning
    PSFS_PASS_ON * Filter processed successfully with data available in the * out bucket brigade. *
    PSFS_FEED_ME * Filter processed successfully, however no data was available to * return. More data is required from the stream or prior filter. *
    PSFS_ERR_FATAL (default) * The filter experienced an unrecoverable error and cannot continue. *
    * The following parameters are returned in the array * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    parametersDescription
    "tm_sec"Seconds after the minute (0-61)
    "tm_min"Minutes after the hour (0-59)
    "tm_hour"Hour since midnight (0-23)
    "tm_mday"Day of the month (1-31)
    "tm_mon"Months since January (0-11)
    "tm_year"Years since 1900
    "tm_wday"Days since Sunday (0-6)
    "tm_yday"Days since January 1 (0-365)
    "unparsed"the date part which was not * recognized using the specified format
    *

    * @deprecated 8.1 */ #[Pure(true)] #[Deprecated(since: '8.1')] #[ArrayShape([ 'tm_sec' => 'int', 'tm_min' => 'int', 'tm_hour' => 'int', 'tm_mday' => 'int', 'tm_mon' => 'int', 'tm_year' => 'int', 'tm_wday' => 'int', 'tm_yday' => 'int', 'unparsed' => 'string' ])] function strptime(string $timestamp, string $format): array|false {} /** * Flush system output buffer * @link https://php.net/manual/en/function.flush.php * @return void */ function flush(): void {} /** * Wraps a string to a given number of characters * @link https://php.net/manual/en/function.wordwrap.php * @param string $string

    * The input string. *

    * @param int $width [optional]

    * The number of characters at which the string will be wrapped. *

    * @param string $break [optional]

    * The line is broken using the optional * break parameter. *

    * @param bool $cut_long_words [optional]

    * If the cut is set to true, the string is * always wrapped at or before the specified width. So if you have * a word that is larger than the given width, it is broken apart. * (See second example). *

    * @return string the given string wrapped at the specified length. */ #[Pure] function wordwrap(string $string, int $width = 75, string $break = "\n", bool $cut_long_words = false): string {} /** * Convert special characters to HTML entities * @link https://php.net/manual/en/function.htmlspecialchars.php * @param string $string

    * The {@link https://secure.php.net/manual/en/language.types.string.php string} being converted. *

    * @param int $flags [optional]

    * A bitmask of one or more of the following flags, which specify how to handle quotes, * invalid code unit sequences and the used document type. The default is * ENT_COMPAT | ENT_HTML401. *

    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    Available flags constants
    Constant NameDescription
    ENT_COMPATWill convert double-quotes and leave single-quotes alone.
    ENT_QUOTESWill convert both double and single quotes.
    ENT_NOQUOTESWill leave both double and single quotes unconverted.
    ENT_IGNORE * Silently discard invalid code unit sequences instead of returning * an empty string. Using this flag is discouraged as it * {@link https://unicode.org/reports/tr36/#Deletion_of_Noncharacters » may have security implications}. *
    ENT_SUBSTITUTE * Replace invalid code unit sequences with a Unicode Replacement Character * U+FFFD (UTF-8) or &#FFFD; (otherwise) instead of returning an empty string. *
    ENT_DISALLOWED * Replace invalid code points for the given document type with a * Unicode Replacement Character U+FFFD (UTF-8) or &#FFFD; * (otherwise) instead of leaving them as is. This may be useful, for * instance, to ensure the well-formedness of XML documents with * embedded external content. *
    ENT_HTML401 * Handle code as HTML 4.01. *
    ENT_XML1 * Handle code as XML 1. *
    ENT_XHTML * Handle code as XHTML. *
    ENT_HTML5 * Handle code as HTML 5. *
    * @param string|null $encoding

    * Defines encoding used in conversion. * If omitted, the default value for this argument is ISO-8859-1 in * versions of PHP prior to 5.4.0, and UTF-8 from PHP 5.4.0 onwards. *

    *

    * For the purposes of this function, the encodings * ISO-8859-1, ISO-8859-15, * UTF-8, cp866, * cp1251, cp1252, and * KOI8-R are effectively equivalent, provided the * string itself is valid for the encoding, as * the characters affected by htmlspecialchars() occupy * the same positions in all of these encodings. *

    * @param bool $double_encode [optional]

    * When double_encode is turned off PHP will not * encode existing html entities, the default is to convert everything. *

    * @return string The converted string. */ #[Pure] function htmlspecialchars(string $string, int $flags = ENT_QUOTES|ENT_SUBSTITUTE, ?string $encoding = null, bool $double_encode = true): string {} /** * Convert all applicable characters to HTML entities * @link https://php.net/manual/en/function.htmlentities.php * @param string $string

    * The input string. *

    * @param int $flags [optional]

    * Like htmlspecialchars, the optional second * quote_style parameter lets you define what will * be done with 'single' and "double" quotes. It takes on one of three * constants with the default being ENT_COMPAT: * * Available quote_style constants * * * * * * * * * * * * * * * * *
    Constant NameDescription
    ENT_COMPATWill convert double-quotes and leave single-quotes alone.
    ENT_QUOTESWill convert both double and single quotes.
    ENT_NOQUOTESWill leave both double and single quotes unconverted.
    *

    * @param string|null $encoding [optional]

    * Like htmlspecialchars, it takes an optional * third argument charset which defines character * set used in conversion. * Presently, the ISO-8859-1 character set is used as the default. *

    * @param bool $double_encode [optional]

    * When double_encode is turned off PHP will not * encode existing html entities. The default is to convert everything. *

    * @return string the encoded string. */ #[Pure] function htmlentities(string $string, int $flags = ENT_QUOTES|ENT_SUBSTITUTE, ?string $encoding, bool $double_encode = true): string {} /** * Convert HTML entities to their corresponding characters * @link https://php.net/manual/en/function.html-entity-decode.php * @param string $string

    * The input string. *

    * @param int $flags [optional]

    * The optional second quote_style parameter lets * you define what will be done with 'single' and "double" quotes. It takes * on one of three constants with the default being * ENT_COMPAT: * * Available quote_style constants * * * * * * * * * * * * * * * * *
    Constant NameDescription
    ENT_COMPATWill convert double-quotes and leave single-quotes alone.
    ENT_QUOTESWill convert both double and single quotes.
    ENT_NOQUOTESWill leave both double and single quotes unconverted.
    *

    * @param string|null $encoding [optional]

    * The ISO-8859-1 character set is used as default for the optional third * charset. This defines the character set used in * conversion. *

    * @return string the decoded string. */ #[Pure] function html_entity_decode(string $string, int $flags = ENT_QUOTES|ENT_SUBSTITUTE, ?string $encoding): string {} /** * Convert special HTML entities back to characters * @link https://php.net/manual/en/function.htmlspecialchars-decode.php * @param string $string

    * The string to decode *

    * @param int $flags [optional]

    * The quote style. One of the following constants: * * quote_style constants * * * * * * * * * * * * * * * * *
    Constant NameDescription
    ENT_COMPATWill convert double-quotes and leave single-quotes alone * (default)
    ENT_QUOTESWill convert both double and single quotes
    ENT_NOQUOTESWill leave both double and single quotes unconverted
    *

    * @return string the decoded string. */ #[Pure] function htmlspecialchars_decode(string $string, int $flags = ENT_QUOTES|ENT_SUBSTITUTE): string {} /** * Returns the translation table used by htmlspecialchars and htmlentities * @link https://php.net/manual/en/function.get-html-translation-table.php * @param int $table

    * There are two new constants (HTML_ENTITIES, * HTML_SPECIALCHARS) that allow you to specify the * table you want. *

    * @param int $flags [optional]

    * Like the htmlspecialchars and * htmlentities functions you can optionally specify * the quote_style you are working with. * See the description * of these modes in htmlspecialchars. *

    * @param string $encoding [optional]

    * Encoding to use. * If omitted, the default value for this argument is ISO-8859-1 in * versions of PHP prior to 5.4.0, and UTF-8 from PHP 5.4.0 onwards. *

    * * *

    * The following character sets are supported: *

    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    Supported charsets
    CharsetAliasesDescription
    ISO-8859-1ISO8859-1 * Western European, Latin-1. *
    ISO-8859-5ISO8859-5 * Little used cyrillic charset (Latin/Cyrillic). *
    ISO-8859-15ISO8859-15 * Western European, Latin-9. Adds the Euro sign, French and Finnish * letters missing in Latin-1 (ISO-8859-1). *
    UTF-8  * ASCII compatible multi-byte 8-bit Unicode. *
    cp866ibm866, 866 * DOS-specific Cyrillic charset. *
    cp1251Windows-1251, win-1251, 1251 * Windows-specific Cyrillic charset. *
    cp1252Windows-1252, 1252 * Windows specific charset for Western European. *
    KOI8-Rkoi8-ru, koi8r * Russian. *
    BIG5950 * Traditional Chinese, mainly used in Taiwan. *
    GB2312936 * Simplified Chinese, national standard character set. *
    BIG5-HKSCS  * Big5 with Hong Kong extensions, Traditional Chinese. *
    Shift_JISSJIS, SJIS-win, cp932, 932 * Japanese *
    EUC-JPEUCJP, eucJP-win * Japanese *
    MacRoman  * Charset that was used by Mac OS. *
    ''  * An empty string activates detection from script encoding (Zend multibyte), * {@link https://php.net/manual/en/ini.core.php#ini.default-charset default_charset} and current * locale {@link https://php.net/manual/en/function.nl-langinfo.php nl_langinfo()} and * {@link https://php.net/manual/en/function.setlocale.php setlocale()}), in this order. Not recommended. *
    * *

    Note: * * Any other character sets are not recognized. The default encoding will be * used instead and a warning will be emitted. * *

    * @return array the translation table as an array. */ #[Pure] function get_html_translation_table( int $table = 0, int $flags = ENT_QUOTES|ENT_SUBSTITUTE, #[PhpStormStubsElementAvailable(from: '7.0')] string $encoding = "UTF-8" ): array {} /** * Calculate the sha1 hash of a string * @link https://php.net/manual/en/function.sha1.php * @param string $string

    * The input string. *

    * @param bool $binary [optional]

    * If the optional binary is set to true, * then the sha1 digest is instead returned in raw binary format with a * length of 20, otherwise the returned value is a 40-character * hexadecimal number. *

    * @return string the sha1 hash as a string. */ #[Pure] function sha1(string $string, bool $binary = false): string {} /** * Calculate the sha1 hash of a file * @link https://php.net/manual/en/function.sha1-file.php * @param string $filename

    * The filename *

    * @param bool $binary [optional]

    * When true, returns the digest in raw binary format with a length of * 20. *

    * @return string|false a string on success, false otherwise. */ #[Pure(true)] function sha1_file(string $filename, bool $binary = false): string|false {} /** * Calculate the md5 hash of a string * @link https://php.net/manual/en/function.md5.php * @param string $string

    * The string. *

    * @param bool $binary [optional]

    * If the optional raw_output is set to true, * then the md5 digest is instead returned in raw binary format with a * length of 16. *

    * @return string the hash as a 32-character hexadecimal number. */ #[Pure] function md5(string $string, bool $binary = false): string {} /** * Calculates the md5 hash of a given file * @link https://php.net/manual/en/function.md5-file.php * @param string $filename

    * The filename *

    * @param bool $binary [optional]

    * When true, returns the digest in raw binary format with a length of * 16. *

    * @return string|false a string on success, false otherwise. */ #[Pure(true)] function md5_file(string $filename, bool $binary = false): string|false {} /** * Calculates the crc32 polynomial of a string * @link https://php.net/manual/en/function.crc32.php * @param string $string

    * The data. *

    * @return int the crc32 checksum of str as an integer..1 */ #[Pure] function crc32(string $string): int {} /** * Parse a binary IPTC block into single tags. * Note: This function does not require the GD image library. * @link https://php.net/manual/en/function.iptcparse.php * @param string $iptc_block

    * A binary IPTC block. *

    * @return array|false an array using the tagmarker as an index and the value as the * value. It returns false on error or if no IPTC data was found. */ #[Pure] function iptcparse(string $iptc_block): array|false {} /** * Embeds binary IPTC data into a JPEG image. * Note: This function does not require the GD image library. * @link https://php.net/manual/en/function.iptcembed.php * @param string $iptc_data

    * The data to be written. *

    * @param string $filename

    * Path to the JPEG image. *

    * @param int $spool

    * Spool flag. If the spool flag is less than 2 then the JPEG will * be returned as a string. Otherwise the JPEG will be printed to * STDOUT. *

    * @return string|bool If spool is less than 2, the JPEG will be returned, or false on * failure. Otherwise returns true on success or false on failure. */ function iptcembed(string $iptc_data, string $filename, int $spool = 0): string|bool {} /** * Get the size of an image * @link https://php.net/manual/en/function.getimagesize.php * @param string $filename

    * This parameter specifies the file you wish to retrieve information * about. It can reference a local file or (configuration permitting) a * remote file using one of the supported streams. *

    * @param array &$image_info [optional]

    * This optional parameter allows you to extract some extended * information from the image file. Currently, this will return the * different JPG APP markers as an associative array. * Some programs use these APP markers to embed text information in * images. A very common one is to embed * IPTC information in the APP13 marker. * You can use the iptcparse function to parse the * binary APP13 marker into something readable. *

    * @return array|false an array with 7 elements. *

    * Index 0 and 1 contains respectively the width and the height of the image. *

    *

    * Some formats may contain no image or may contain multiple images. In these * cases, getimagesize might not be able to properly * determine the image size. getimagesize will return * zero for width and height in these cases. *

    *

    * Index 2 is one of the IMAGETYPE_XXX constants indicating * the type of the image. *

    *

    * Index 3 is a text string with the correct * height="yyy" width="xxx" string that can be used * directly in an IMG tag. *

    *

    * mime is the correspondant MIME type of the image. * This information can be used to deliver images with correct the HTTP * Content-type header: * getimagesize and MIME types *

    *

    * channels will be 3 for RGB pictures and 4 for CMYK * pictures. *

    *

    * bits is the number of bits for each color. *

    *

    * For some image types, the presence of channels and * bits values can be a bit * confusing. As an example, GIF always uses 3 channels * per pixel, but the number of bits per pixel cannot be calculated for an * animated GIF with a global color table. *

    *

    * On failure, false is returned. *

    */ #[ArrayShape([0 => "int", 1 => "int", 2 => "int", 3 => "string", "bits" => "int", "channels" => "int", "mime" => "string"])] function getimagesize(string $filename, &$image_info): array|false {} /** * Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype * @link https://php.net/manual/en/function.image-type-to-mime-type.php * @param int $image_type

    * One of the IMAGETYPE_XXX constants. *

    * @return string The returned values are as follows * * Returned values Constants * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    imagetypeReturned value
    IMAGETYPE_GIFimage/gif
    IMAGETYPE_JPEGimage/jpeg
    IMAGETYPE_PNGimage/png
    IMAGETYPE_SWFapplication/x-shockwave-flash
    IMAGETYPE_PSDimage/psd
    IMAGETYPE_BMPimage/bmp
    IMAGETYPE_TIFF_II (intel byte order)image/tiff
    * IMAGETYPE_TIFF_MM (motorola byte order) * image/tiff
    IMAGETYPE_JPCapplication/octet-stream
    IMAGETYPE_JP2image/jp2
    IMAGETYPE_JPXapplication/octet-stream
    IMAGETYPE_JB2application/octet-stream
    IMAGETYPE_SWCapplication/x-shockwave-flash
    IMAGETYPE_IFFimage/iff
    IMAGETYPE_WBMPimage/vnd.wap.wbmp
    IMAGETYPE_XBMimage/xbm
    IMAGETYPE_ICOimage/vnd.microsoft.icon
    */ #[Pure] function image_type_to_mime_type(int $image_type): string {} /** * Get file extension for image type * @link https://php.net/manual/en/function.image-type-to-extension.php * @param int $image_type

    * One of the IMAGETYPE_XXX constant. *

    * @param bool $include_dot [optional]

    * Removed since 8.0. * Whether to prepend a dot to the extension or not. Default to true. *

    * @return string|false A string with the extension corresponding to the given image type, or false on failure. */ #[Pure] function image_type_to_extension(int $image_type, bool $include_dot = true): string|false {} /** * Outputs information about PHP's configuration * @link https://php.net/manual/en/function.phpinfo.php * @param int $flags [optional]

    * The output may be customized by passing one or more of the * following constants bitwise values summed * together in the optional what parameter. * One can also combine the respective constants or bitwise values * together with the or operator. *

    *

    * * phpinfo options * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    Name (constant)ValueDescription
    INFO_GENERAL1 * The configuration line, "php.ini" location, build date, Web * Server, System and more. *
    INFO_CREDITS2 * PHP Credits. See also phpcredits. *
    INFO_CONFIGURATION4 * Current Local and Main values for PHP directives. See * also ini_get. *
    INFO_MODULES8 * Loaded modules and their respective settings. See also * get_loaded_extensions. *
    INFO_ENVIRONMENT16 * Environment Variable information that's also available in * $_ENV. *
    INFO_VARIABLES32 * Shows all * predefined variables from EGPCS (Environment, GET, * POST, Cookie, Server). *
    INFO_LICENSE64 * PHP License information. See also the license FAQ. *
    INFO_ALL-1 * Shows all of the above. *
    *

    * @return bool true on success or false on failure. */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function phpinfo(#[ExpectedValues(flags: [INFO_GENERAL, INFO_CREDITS, INFO_CONFIGURATION, INFO_MODULES, INFO_ENVIRONMENT, INFO_VARIABLES, INFO_LICENSE, INFO_ALL])] int $flags = INFO_ALL): bool {} /** * Gets the current PHP version * @link https://php.net/manual/en/function.phpversion.php * @param string|null $extension [optional]

    * An optional extension name. *

    * @return string|false If the optional extension parameter is * specified, phpversion returns the version of that * extension, or false if there is no version information associated or * the extension isn't enabled. */ #[Pure] function phpversion(?string $extension): string|false {} /** * Prints out the credits for PHP * @link https://php.net/manual/en/function.phpcredits.php * @param int $flags [optional]

    * To generate a custom credits page, you may want to use the * flags parameter. *

    *

    * * Pre-defined phpcredits flags * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    namedescription
    CREDITS_ALL * All the credits, equivalent to using: CREDITS_DOCS + * CREDITS_GENERAL + CREDITS_GROUP + * CREDITS_MODULES + CREDITS_FULLPAGE. * It generates a complete stand-alone HTML page with the appropriate tags. *
    CREDITS_DOCSThe credits for the documentation team
    CREDITS_FULLPAGE * Usually used in combination with the other flags. Indicates * that a complete stand-alone HTML page needs to be * printed including the information indicated by the other * flags. *
    CREDITS_GENERAL * General credits: Language design and concept, PHP 4.0 * authors and SAPI module. *
    CREDITS_GROUPA list of the core developers
    CREDITS_MODULES * A list of the extension modules for PHP, and their authors *
    CREDITS_SAPI * A list of the server API modules for PHP, and their authors *
    *

    * @return bool true on success or false on failure. */ #[LanguageLevelTypeAware(['8.2' => 'true'], default: 'bool')] function phpcredits(int $flags = CREDITS_ALL): bool {} /** * Gets the logo guid * @removed 5.5 * @link https://php.net/manual/en/function.php-logo-guid.php * @return string PHPE9568F34-D428-11d2-A769-00AA001ACF42. */ #[Pure] function php_logo_guid(): string {} /** * @removed 5.5 */ function php_real_logo_guid() {} /** * @removed 5.5 */ function php_egg_logo_guid() {} /** * Gets the Zend guid * @removed 5.5 * @link https://php.net/manual/en/function.zend-logo-guid.php * @return string PHPE9568F35-D428-11d2-A769-00AA001ACF42. */ function zend_logo_guid(): string {} /** * Returns the type of interface between web server and PHP * @link https://php.net/manual/en/function.php-sapi-name.php * @return string|false the interface type, as a lowercase string, or false on failure. *

    * Although not exhaustive, the possible return values include * aolserver, apache, * apache2filter, apache2handler, * caudium, cgi (until PHP 5.3), * cgi-fcgi, cli, * continuity, embed, * isapi, litespeed, * milter, nsapi, * phttpd, pi3web, roxen, * thttpd, tux, and webjames. *

    */ #[Pure] #[ExpectedValues(['cli', 'phpdbg', 'embed', 'apache', 'apache2handler', 'cgi-fcgi', 'cli-server', 'fpm-fcgi', 'litespeed'])] function php_sapi_name(): string|false {} /** * Returns information about the operating system PHP is running on * @link https://php.net/manual/en/function.php-uname.php * @param string $mode [optional]

    * mode is a single character that defines what * information is returned: * 'a': This is the default. Contains all modes in * the sequence "s n r v m".

    * @return string the description, as a string. */ #[Pure(true)] function php_uname(#[PhpStormStubsElementAvailable(from: '7.0')] string $mode = 'a'): string {} /** * Return a list of .ini files parsed from the additional ini dir * @link https://php.net/manual/en/function.php-ini-scanned-files.php * @return string|false a comma-separated string of .ini files on success. Each comma is * followed by a newline. If the directive --with-config-file-scan-dir wasn't set, * false is returned. If it was set and the directory was empty, an * empty string is returned. If a file is unrecognizable, the file will * still make it into the returned string but a PHP error will also result. * This PHP error will be seen both at compile time and while using * php_ini_scanned_files. */ #[Pure] function php_ini_scanned_files(): string|false {} /** * Retrieve a path to the loaded php.ini file * @link https://php.net/manual/en/function.php-ini-loaded-file.php * @return string|false The loaded "php.ini" path, or false if one is not loaded. * @since 5.2.4 */ #[Pure] function php_ini_loaded_file(): string|false {} /** * String comparisons using a "natural order" algorithm * @link https://php.net/manual/en/function.strnatcmp.php * @param string $string1

    * The first string. *

    * @param string $string2

    * The second string. *

    * @return int Similar to other string comparison functions, this one returns < 0 if * str1 is less than str2; > * 0 if str1 is greater than * str2, and 0 if they are equal. */ #[Pure] function strnatcmp(string $string1, string $string2): int {} /** * Case insensitive string comparisons using a "natural order" algorithm * @link https://php.net/manual/en/function.strnatcasecmp.php * @param string $string1

    * The first string. *

    * @param string $string2

    * The second string. *

    * @return int Similar to other string comparison functions, this one returns < 0 if * str1 is less than str2 > * 0 if str1 is greater than * str2, and 0 if they are equal. */ #[Pure] function strnatcasecmp(string $string1, string $string2): int {} /** * Count the number of substring occurrences * @link https://php.net/manual/en/function.substr-count.php * @param string $haystack

    * The string to search in *

    * @param string $needle

    * The substring to search for *

    * @param int $offset

    * The offset where to start counting. If the offset is negative, * counting starts from the end of the string. *

    * @param int|null $length [optional]

    * The maximum length after the specified offset to search for the * substring. It outputs a warning if the offset plus the length is * greater than the haystack length. A negative length counts from * the end of haystack. *

    * @return int<0,max> This functions returns an integer. */ #[Pure] function substr_count(string $haystack, string $needle, int $offset = 0, ?int $length): int {} /** * Finds the length of the initial segment of a string consisting * entirely of characters contained within a given mask. * @link https://php.net/manual/en/function.strspn.php * @param string $string

    * The string to examine. *

    * @param string $characters

    * The list of allowable characters to include in counted segments. *

    * @param int $offset

    * The position in subject to * start searching. *

    *

    * If start is given and is non-negative, * then strspn will begin * examining subject at * the start'th position. For instance, in * the string 'abcdef', the character at * position 0 is 'a', the * character at position 2 is * 'c', and so forth. *

    *

    * If start is given and is negative, * then strspn will begin * examining subject at * the start'th position from the end * of subject. *

    * @param int|null $length [optional]

    * The length of the segment from subject * to examine. *

    *

    * If length is given and is non-negative, * then subject will be examined * for length characters after the starting * position. *

    *

    * If lengthis given and is negative, * then subject will be examined from the * starting position up to length * characters from the end of subject. *

    * @return int the length of the initial segment of str1 * which consists entirely of characters in str2. */ #[Pure] function strspn(string $string, string $characters, int $offset = 0, ?int $length): int {} /** * Find length of initial segment not matching mask * @link https://php.net/manual/en/function.strcspn.php * @param string $string

    * The first string. *

    * @param string $characters

    * The second string. *

    * @param int $offset

    * The start position of the string to examine. *

    * @param int|null $length [optional]

    * The length of the string to examine. *

    * @return int the length of the segment as an integer. */ #[Pure] function strcspn(string $string, string $characters, int $offset = 0, ?int $length): int {} /** * Tokenize string * Note that only the first call to strtok uses the string argument. * Every subsequent call to strtok only needs the token to use, as it keeps track of where it is in the current string. * To start over, or to tokenize a new string you simply call strtok with the string argument again to initialize it. * Note that you may put multiple tokens in the token parameter. * The string will be tokenized when any one of the characters in the argument are found. * @link https://php.net/manual/en/function.strtok.php * @param string $string

    * The string being split up into smaller strings (tokens). *

    * @param string|null $token

    * The delimiter used when splitting up str. *

    * @return string|false A string token. */ function strtok( string $string, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] $token, #[PhpStormStubsElementAvailable(from: '7.1')] ?string $token = null ): string|false {} * This parameter is only the filename of the * extension to load which also depends on your platform. For example, * the sockets extension (if compiled * as a shared module, not the default!) would be called * sockets.so on Unix platforms whereas it is called * php_sockets.dll on the Windows platform. *

    *

    * The directory where the extension is loaded from depends on your * platform: *

    *

    * Windows - If not explicitly set in the php.ini, the extension is * loaded from C:\php4\extensions\ (PHP 4) or * C:\php5\ (PHP 5) by default. *

    *

    * Unix - If not explicitly set in the php.ini, the default extension * directory depends on * whether PHP has been built with --enable-debug * or not

    * @return bool TRUE on success or FALSE on failure. If the functionality of loading modules is not available * or has been disabled (either by setting * enable_dl off or by enabling safe mode * in php.ini) an E_ERROR is emitted * and execution is stopped. If dl fails because the * specified library couldn't be loaded, in addition to FALSE an * E_WARNING message is emitted. * Loads a PHP extension at runtime * @link https://php.net/manual/en/function.dl.php */ function dl(string $extension_filename): bool {} /** * Sets the process title * @link https://php.net/manual/en/function.cli-set-process-title.php * @param string $title

    * The new title. *

    * @return bool TRUE on success or FALSE on failure. * @since 5.5 */ function cli_set_process_title(string $title): bool {} /** * Returns the current process title, as set by cli_set_process_title(). Note that this may not exactly match what is shown in ps or top, depending on your operating system. * * @link https://php.net/manual/en/function.cli-get-process-title.php * @return string|null Return a string with the current process title or NULL on error. * @since 5.5 */ #[Pure(true)] function cli_get_process_title(): ?string {} /** * Verify that the contents of a variable is accepted by the iterable pseudo-type, i.e. that it is an array or an object implementing Traversable * @param mixed $value * @return bool * @since 7.1 * @link https://php.net/manual/en/function.is-iterable.php */ #[Pure] function is_iterable(mixed $value): bool {} /** * Encodes an ISO-8859-1 string to UTF-8 * @link https://php.net/manual/en/function.utf8-encode.php * @param string $string

    * An ISO-8859-1 string. *

    * @return string the UTF-8 translation of data. * @deprecated 8.2 Consider to use {@link mb_convert_encoding}, {@link UConverter::transcode()} or {@link iconv()} */ #[Pure] #[Deprecated(replacement: "mb_convert_encoding(%parameter0%, 'UTF-8', 'ISO-8859-1')", since: "8.2")] function utf8_encode(string $string): string {} /** * Converts a string with ISO-8859-1 characters encoded with UTF-8 * to single-byte ISO-8859-1 * @link https://php.net/manual/en/function.utf8-decode.php * @param string $string

    * An UTF-8 encoded string. *

    * @return string the ISO-8859-1 translation of data. * @deprecated 8.2 Consider to use {@link mb_convert_encoding}, {@link UConverter::transcode()} or {@link iconv()} */ #[Pure] #[Deprecated(replacement: "mb_convert_encoding(%parameter0%, 'ISO-8859-1', 'UTF-8')", since: "8.2")] function utf8_decode(string $string): string {} /** * Clear the most recent error * @link https://php.net/manual/en/function.error-clear-last.php * @return void * @since 7.0 */ function error_clear_last(): void {} /** * Get process codepage * @link https://php.net/manual/en/function.sapi-windows-cp-get * @param string $kind The kind of operating system codepage to get, either 'ansi' or 'oem'. Any other value refers to the current codepage of the process. * @return int

    * If kind is 'ansi', the current ANSI code page of the operating system is returned. * If kind is 'oem', the current OEM code page of the operating system is returned. * Otherwise, the current codepage of the process is returned. *

    * @since 7.1 */ function sapi_windows_cp_get(string $kind = ""): int {} /** * Set process codepage * @link https://php.net/manual/en/function.sapi-windows-cp-set * @param int $codepage A codepage identifier. * @return bool Returns true on success or false on failure. * @since 7.1 */ function sapi_windows_cp_set(int $codepage): bool {} /** * Convert string from one codepage to another * @link https://php.net/manual/en/function.sapi-windows-cp-conv.php * @param int|string $in_codepage The codepage of the subject string. Either the codepage name or identifier. * @param int|string $out_codepage The codepage to convert the subject string to. Either the codepage name or identifier. * @param string $subject The string to convert. * @return string|null The subject string converted to out_codepage, or null on failure. * @since 7.1 */ function sapi_windows_cp_conv(int|string $in_codepage, int|string $out_codepage, string $subject): ?string {} /** * Indicates whether the codepage is utf-8 compatible * @link https://www.php.net/manual/en/function.sapi-windows-cp-is-utf8.php * @return bool * @since 7.1 */ function sapi_windows_cp_is_utf8(): bool {} /** * Get or set VT100 support for the specified stream associated to an output buffer of a Windows console. * * At startup, PHP tries to enable the VT100 feature of the STDOUT/STDERR streams. * By the way, if those streams are redirected to a file, the VT100 features may not be enabled. * * If VT100 support is enabled, it is possible to use control sequences as they are known from the VT100 terminal. * They allow the modification of the terminal's output. On Windows these sequences are called Console Virtual Terminal Sequences. * * Warning This function uses the ENABLE_VIRTUAL_TERMINAL_PROCESSING flag implemented in the Windows 10 API, so the VT100 feature may not be available on older Windows versions. * * @link https://php.net/manual/en/function.sapi-windows-vt100-support.php * @param resource $stream The stream on which the function will operate. * @param bool|null $enable

    * If bool, the VT100 feature will be enabled (if true) or disabled (if false). *

    *

    * If enable is null, the function returns true if the stream stream has VT100 control codes enabled, false otherwise. *

    *

    * If enable is a bool, the function will try to enable or disable the VT100 features of the stream stream. * If the feature has been successfully enabled (or disabled), the function will return true, or false otherwise. *

    * @return bool

    * If enable is null: returns true if the VT100 feature is enabled, false otherwise. *

    *

    * If enable is a bool: Returns true on success or false on failure. *

    * @since 7.2 */ function sapi_windows_vt100_support($stream, ?bool $enable = null): bool {} /** * Set or remove a CTRL event handler, which allows Windows CLI processes to intercept or ignore CTRL+C and CTRL+BREAK events. * Note that in multithreaded environments, this is only possible when called from the main thread. * * @link https://www.php.net/manual/en/function.sapi-windows-set-ctrl-handler.php * @param callable|null $handler

    * A callback function to set or remove. If set, this function will be called whenever a CTRL+C or CTRL+BREAK event occurs. *

    *

    * The function is supposed to have the following signature: * * handler(int $event): void * * event The CTRL event which has been received; either PHP_WINDOWS_EVENT_CTRL_C or PHP_WINDOWS_EVENT_CTRL_BREAK. *

    *

    * Setting a null handler causes the process to ignore CTRL+C events, but not CTRL+BREAK events. *

    * @param bool $add If true, the handler is set. If false, the handler is removed. * @return bool TRUE on success or FALSE on failure. * @since 7.4 */ function sapi_windows_set_ctrl_handler(?callable $handler, bool $add = true): bool {} /** * Send a CTRL event to another process. * * @link https://www.php.net/manual/en/function.sapi-windows-generate-ctrl-event.php * @param int $event The CTRL even to send; either PHP_WINDOWS_EVENT_CTRL_C or PHP_WINDOWS_EVENT_CTRL_BREAK. * @param int $pid [optional] The ID of the process to which to send the event to. If 0 is given, the event is sent to all processes of the process group. * @return bool TRUE on success or FALSE on failure. * @since 7.4 */ function sapi_windows_generate_ctrl_event(int $event, int $pid = 0): bool {} /** * The full path and filename of the file. If used inside an include, * the name of the included file is returned. * Since PHP 4.0.2, __FILE__ always contains an * absolute path with symlinks resolved whereas in older versions it contained relative path * under some circumstances. * @link https://php.net/manual/en/language.constants.predefined.php */ define('__FILE__', '', true); /** * The current line number of the file. * @link https://php.net/manual/en/language.constants.predefined.php */ define('__LINE__', 0, true); /** * The class name. (Added in PHP 4.3.0) As of PHP 5 this constant * returns the class name as it was declared (case-sensitive). In PHP * 4 its value is always lowercased. The class name includes the namespace * it was declared in (e.g. Foo\Bar). * Note that as of PHP 5.4 __CLASS__ works also in traits. When used * in a trait method, __CLASS__ is the name of the class the trait * is used in. * @link https://php.net/manual/en/language.constants.predefined.php */ define('__CLASS__', '', true); /** * The function name. (Added in PHP 4.3.0) As of PHP 5 this constant * returns the function name as it was declared (case-sensitive). In * PHP 4 its value is always lowercased. * @link https://php.net/manual/en/language.constants.predefined.php */ define('__FUNCTION__', '', true); /** * The class method name. (Added in PHP 5.0.0) The method name is * returned as it was declared (case-sensitive). * @link https://php.net/manual/en/language.constants.predefined.php */ define('__METHOD__', '', true); /** * The trait name. (Added in PHP 5.4.0) As of PHP 5.4 this constant * returns the trait as it was declared (case-sensitive). The trait name includes the namespace * it was declared in (e.g. Foo\Bar). * @since 5.4 * @link https://php.net/manual/en/language.constants.predefined.php */ define('__TRAIT__', '', true); /** * The directory of the file. If used inside an include, * the directory of the included file is returned. This is equivalent * to `dirname(__FILE__)`. This directory name * does not have a trailing slash unless it is the root directory. * @link https://php.net/manual/en/language.constants.predefined.php */ define('__DIR__', '', true); /** * The name of the current namespace (case-sensitive). This constant * is defined in compile-time (Added in PHP 5.3.0). * @link https://php.net/manual/en/language.constants.predefined.php */ define('__NAMESPACE__', '', true); * The encoded data. *

    * @param bool $strict [optional]

    * Returns false if input contains character from outside the base64 * alphabet. *

    * @return string|false the original data or false on failure. The returned data may be * binary. */ #[Pure] function base64_decode(string $string, bool $strict = false): string|false {} /** * Encodes data with MIME base64 * @link https://php.net/manual/en/function.base64-encode.php * @param string $string

    * The data to encode. *

    * @return string The encoded data, as a string. */ #[Pure] function base64_encode(string $string): string {} /** * Uuencode a string * @link https://php.net/manual/en/function.convert-uuencode.php * @param string $string

    * The data to be encoded. *

    * @return string the uuencoded data. */ #[Pure] function convert_uuencode(string $string): string {} /** * Decode a uuencoded string * @link https://php.net/manual/en/function.convert-uudecode.php * @param string $string

    * The uuencoded data. *

    * @return string|false the decoded data as a string. */ #[Pure] function convert_uudecode(string $string): string|false {} /** * Absolute value * @link https://php.net/manual/en/function.abs.php * @param int|float $num

    * The numeric value to process *

    * @return float|int The absolute value of number. If the * argument number is * of type float, the return type is also float, * otherwise it is integer (as float usually has a * bigger value range than integer). */ #[Pure] function abs(int|float $num): int|float {} /** * Round fractions up * @link https://php.net/manual/en/function.ceil.php * @param int|float $num

    * The value to round *

    * @return float|false value rounded up to the next highest * integer. * The return value of ceil is still of type * float as the value range of float is * usually bigger than that of integer. */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "float"], default: "float|false")] function ceil(int|float $num) {} /** * Round fractions down * @link https://php.net/manual/en/function.floor.php * @param int|float $num

    * The numeric value to round *

    * @return float|false value rounded to the next lowest integer. * The return value of floor is still of type * float because the value range of float is * usually bigger than that of integer. */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "float"], default: "float|false")] function floor(int|float $num) {} /** * Returns the rounded value of val to specified precision (number of digits after the decimal point). * precision can also be negative or zero (default). * Note: PHP doesn't handle strings like "12,300.2" correctly by default. See converting from strings. * @link https://php.net/manual/en/function.round.php * @param int|float $num

    * The value to round *

    * @param int $precision [optional]

    * The optional number of decimal digits to round to. *

    * @param int $mode [optional]

    * One of PHP_ROUND_HALF_UP, * PHP_ROUND_HALF_DOWN, * PHP_ROUND_HALF_EVEN, or * PHP_ROUND_HALF_ODD. *

    * @return float The rounded value */ #[Pure] function round(int|float $num, int $precision = 0, #[LanguageLevelTypeAware(['8.4' => 'RoundingMode|int'], default: 'int')] $mode = 0): float {} /** * Sine * @link https://php.net/manual/en/function.sin.php * @param float $num

    * A value in radians *

    * @return float The sine of arg */ #[Pure] function sin(float $num): float {} /** * Cosine * @link https://php.net/manual/en/function.cos.php * @param float $num

    * An angle in radians *

    * @return float The cosine of arg */ #[Pure] function cos(float $num): float {} /** * Tangent * @link https://php.net/manual/en/function.tan.php * @param float $num

    * The argument to process in radians *

    * @return float The tangent of arg */ #[Pure] function tan(float $num): float {} /** * Arc sine * @link https://php.net/manual/en/function.asin.php * @param float $num

    * The argument to process *

    * @return float The arc sine of arg in radians */ #[Pure] function asin(float $num): float {} /** * Arc cosine * @link https://php.net/manual/en/function.acos.php * @param float $num

    * The argument to process *

    * @return float The arc cosine of arg in radians. */ #[Pure] function acos(float $num): float {} /** * Arc tangent * @link https://php.net/manual/en/function.atan.php * @param float $num

    * The argument to process *

    * @return float The arc tangent of arg in radians. */ #[Pure] function atan(float $num): float {} /** * Inverse hyperbolic tangent * @link https://php.net/manual/en/function.atanh.php * @param float $num

    * The argument to process *

    * @return float Inverse hyperbolic tangent of arg */ #[Pure] function atanh(float $num): float {} /** * Arc tangent of two variables * @link https://php.net/manual/en/function.atan2.php * @param float $y

    * Dividend parameter *

    * @param float $x

    * Divisor parameter *

    * @return float The arc tangent of y/x * in radians. */ #[Pure] function atan2(float $y, float $x): float {} /** * Hyperbolic sine * @link https://php.net/manual/en/function.sinh.php * @param float $num

    * The argument to process *

    * @return float The hyperbolic sine of arg */ #[Pure] function sinh(float $num): float {} /** * Hyperbolic cosine * @link https://php.net/manual/en/function.cosh.php * @param float $num

    * The argument to process *

    * @return float The hyperbolic cosine of arg */ #[Pure] function cosh(float $num): float {} /** * Hyperbolic tangent * @link https://php.net/manual/en/function.tanh.php * @param float $num

    * The argument to process *

    * @return float The hyperbolic tangent of arg */ #[Pure] function tanh(float $num): float {} /** * Inverse hyperbolic sine * @link https://php.net/manual/en/function.asinh.php * @param float $num

    * The argument to process *

    * @return float The inverse hyperbolic sine of arg */ #[Pure] function asinh(float $num): float {} /** * Inverse hyperbolic cosine * @link https://php.net/manual/en/function.acosh.php * @param float $num

    * The value to process *

    * @return float The inverse hyperbolic cosine of arg */ #[Pure] function acosh(float $num): float {} /** * Returns exp(number) - 1, computed in a way that is accurate even * when the value of number is close to zero * @link https://php.net/manual/en/function.expm1.php * @param float $num

    * The argument to process *

    * @return float 'e' to the power of arg minus one */ #[Pure] function expm1(float $num): float {} /** * Returns log(1 + number), computed in a way that is accurate even when * the value of number is close to zero * @link https://php.net/manual/en/function.log1p.php * @param float $num

    * The argument to process *

    * @return float log(1 + number) */ #[Pure] function log1p(float $num): float {} /** * Get value of pi * @link https://php.net/manual/en/function.pi.php * @return float The value of pi as float. */ #[Pure] function pi(): float {} /** * Finds whether a value is a legal finite number * @link https://php.net/manual/en/function.is-finite.php * @param float $num

    * The value to check *

    * @return bool true if val is a legal finite * number within the allowed range for a PHP float on this platform, * else false. */ #[Pure] function is_finite(float $num): bool {} /** * Finds whether a value is not a number * @link https://php.net/manual/en/function.is-nan.php * @param float $num

    * The value to check *

    * @return bool true if val is 'not a number', * else false. */ #[Pure] function is_nan(float $num): bool {} /** * Integer division * @link https://php.net/manual/en/function.intdiv.php * @param int $num1

    Number to be divided.

    * @param int $num2

    Number which divides the dividend

    * @return int * @since 7.0 * @throws DivisionByZeroError

    if divisor is 0

    * @throws ArithmeticError

    if the dividend is PHP_INT_MIN and the divisor is -1

    */ #[Pure] function intdiv(int $num1, int $num2): int {} /** * Finds whether a value is infinite * @link https://php.net/manual/en/function.is-infinite.php * @param float $num

    * The value to check *

    * @return bool true if val is infinite, else false. */ #[Pure] function is_infinite(float $num): bool {} /** * Exponential expression * @link https://php.net/manual/en/function.pow.php * @param mixed $num

    * The base to use *

    * @param mixed $exponent

    * The exponent *

    * @return object|int|float base raised to the power of exp. * If the result can be represented as integer it will be returned as type * integer, else it will be returned as type float. * If the power cannot be computed false will be returned instead. */ #[Pure] function pow(mixed $num, mixed $exponent): object|int|float {} /** * Calculates the exponent of e * @link https://php.net/manual/en/function.exp.php * @param float $num

    * The argument to process *

    * @return float 'e' raised to the power of arg */ #[Pure] function exp(float $num): float {} /** * Natural logarithm * @link https://php.net/manual/en/function.log.php * @param float $num

    * The value to calculate the logarithm for *

    * @param float $base [optional]

    * The optional logarithmic base to use * (defaults to 'e' and so to the natural logarithm). *

    * @return float The logarithm of arg to * base, if given, or the * natural logarithm. */ #[Pure] function log(float $num, float $base = M_E): float {} /** * Base-10 logarithm * @link https://php.net/manual/en/function.log10.php * @param float $num

    * The argument to process *

    * @return float The base-10 logarithm of arg */ #[Pure] function log10(float $num): float {} /** * Square root * @link https://php.net/manual/en/function.sqrt.php * @param float $num

    * The argument to process *

    * @return float The square root of arg * or the special value NAN for negative numbers. */ #[Pure] function sqrt(float $num): float {} /** * Calculate the length of the hypotenuse of a right-angle triangle * @link https://php.net/manual/en/function.hypot.php * @param float $x

    * Length of first side *

    * @param float $y

    * Length of second side *

    * @return float Calculated length of the hypotenuse */ #[Pure] function hypot(float $x, float $y): float {} /** * Converts the number in degrees to the radian equivalent * @link https://php.net/manual/en/function.deg2rad.php * @param float $num

    * Angular value in degrees *

    * @return float The radian equivalent of number */ #[Pure] function deg2rad(float $num): float {} /** * Converts the radian number to the equivalent number in degrees * @link https://php.net/manual/en/function.rad2deg.php * @param float $num

    * A radian value *

    * @return float The equivalent of number in degrees */ #[Pure] function rad2deg(float $num): float {} /** * Binary to decimal * @link https://php.net/manual/en/function.bindec.php * @param string $binary_string

    * The binary string to convert *

    * @return int|float The decimal value of binary_string */ #[Pure] function bindec(string $binary_string): int|float {} /** * Hexadecimal to decimal * @link https://php.net/manual/en/function.hexdec.php * @param string $hex_string

    * The hexadecimal string to convert *

    * @return int|float The decimal representation of hex_string */ #[Pure] function hexdec(string $hex_string): int|float {} /** * Octal to decimal * @link https://php.net/manual/en/function.octdec.php * @param string $octal_string

    * The octal string to convert *

    * @return int|float The decimal representation of octal_string */ #[Pure] function octdec(string $octal_string): int|float {} /** * Decimal to binary * @link https://php.net/manual/en/function.decbin.php * @param int $num

    * Decimal value to convert *

    * * Range of inputs on 32-bit machines * * * * * * * * * * * * * * * * * * * * * * ... normal progression ... * * * * * * * * * * * * * * * * * * ... normal progression ... * * * * * * * * * * * *
    positive numbernegative numberreturn value
    00
    11
    210
    21474836461111111111111111111111111111110
    2147483647 (largest signed integer)1111111111111111111111111111111 (31 1's)
    2147483648-214748364810000000000000000000000000000000
    4294967294-211111111111111111111111111111110
    4294967295 (largest unsigned integer)-111111111111111111111111111111111 (32 1's)
    * * Range of inputs on 64-bit machines * * * * * * * * * * * * * * * * * * * * * * ... normal progression ... * * * * * * * * * * * * * * * * * * ... normal progression ... * * * * * * * * * * * *
    positive numbernegative numberreturn value
    00
    11
    210
    9223372036854775806111111111111111111111111111111111111111111111111111111111111110
    9223372036854775807 (largest signed integer)111111111111111111111111111111111111111111111111111111111111111 (31 1's)
    -92233720368547758081000000000000000000000000000000000000000000000000000000000000000
    -21111111111111111111111111111111111111111111111111111111111111110
    -11111111111111111111111111111111111111111111111111111111111111111 (64 1's)
    * @return string Binary string representation of number */ #[Pure] function decbin(int $num): string {} /** * Decimal to octal * @link https://php.net/manual/en/function.decoct.php * @param int $num

    * Decimal value to convert *

    * @return string Octal string representation of number */ #[Pure] function decoct(int $num): string {} /** * Decimal to hexadecimal * @link https://php.net/manual/en/function.dechex.php * @param int $num

    * Decimal value to convert *

    * @return string Hexadecimal string representation of number */ #[Pure] function dechex(int $num): string {} /** * Convert a number between arbitrary bases * @link https://php.net/manual/en/function.base-convert.php * @param string $num

    * The number to convert *

    * @param int $from_base

    * The base number is in *

    * @param int $to_base

    * The base to convert number to *

    * @return string number converted to base tobase */ #[Pure] function base_convert(string $num, int $from_base, int $to_base): string {} /** * Format a number with grouped thousands * @link https://php.net/manual/en/function.number-format.php * @param float $num

    * The number being formatted. *

    * @param int $decimals [optional]

    * Sets the number of decimal points. *

    * @param string|null $decimal_separator [optional] * @param string|null $thousands_separator [optional] * @return string A formatted version of number. */ #[Pure] function number_format(float $num, int $decimals = 0, ?string $decimal_separator = '.', ?string $thousands_separator = ','): string {} /** * Returns the floating point remainder (modulo) of the division * of the arguments * @link https://php.net/manual/en/function.fmod.php * @param float $num1

    * The dividend *

    * @param float $num2

    * The divisor *

    * @return float The floating point remainder of * x/y */ #[Pure] function fmod(float $num1, float $num2): float {} /** * Performs a floating-point division under * IEEE 754 semantics. Division by zero is considered well-defined and * will return one of Inf, -Inf or NaN. * @param float $num1 * @param float $num2 * @return float * @since 8.0 */ #[Pure] function fdiv(float $num1, float $num2): float {} /** * Converts a packed internet address to a human readable representation * @link https://php.net/manual/en/function.inet-ntop.php * @param string $ip

    * A 32bit IPv4, or 128bit IPv6 address. *

    * @return string|false a string representation of the address or false on failure. */ #[Pure] function inet_ntop(string $ip): string|false {} /** * Converts a human readable IP address to its packed in_addr representation * @link https://php.net/manual/en/function.inet-pton.php * @param string $ip

    * A human readable IPv4 or IPv6 address. *

    * @return string|false the in_addr representation of the given * address */ #[Pure] function inet_pton(string $ip): string|false {} /** * Converts a string containing an (IPv4) Internet Protocol dotted address into a long integer * @link https://php.net/manual/en/function.ip2long.php * @param string $ip

    * A standard format address. *

    * @return int|false the IPv4 address or false if ip_address * is invalid. */ #[Pure] function ip2long(string $ip): int|false {} /** * Converts an long integer address into a string in (IPv4) internet standard dotted format * @link https://php.net/manual/en/function.long2ip.php * @param int $ip

    * A proper address representation. *

    * @return string|false the Internet IP address as a string. */ #[Pure] #[LanguageLevelTypeAware(['8.4' => 'string'], default: 'string|false')] function long2ip(int $ip) {} /** * Gets the value of an environment variable * @link https://php.net/manual/en/function.getenv.php * @param string|null $name

    * The variable name. *

    * @param bool $local_only [optional]

    * Set to true to only return local environment variables (set by the operating system or putenv). *

    * @return string|array|false the value of the environment variable * varname or an associative array with all environment variables if no variable name * is provided, or false on an error. */ #[Pure(true)] function getenv( #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] $varname, #[PhpStormStubsElementAvailable(from: '7.1')] ?string $name = null, #[PhpStormStubsElementAvailable(from: '5.6')] bool $local_only = false ): array|string|false {} /** * Sets the value of an environment variable * @link https://php.net/manual/en/function.putenv.php * @param string $assignment

    * The setting, like "FOO=BAR" *

    * @return bool true on success or false on failure. */ function putenv(string $assignment): bool {} /** * Gets options from the command line argument list * @link https://php.net/manual/en/function.getopt.php * @param string $short_options Each character in this string will be used as option characters and * matched against options passed to the script starting with a single * hyphen (-). * For example, an option string "x" recognizes an * option -x. * Only a-z, A-Z and 0-9 are allowed. * @param array $long_options An array of options. Each element in this array will be used as option * strings and matched against options passed to the script starting with * two hyphens (--). * For example, an longopts element "opt" recognizes an * option --opt. * Prior to PHP5.3.0 this parameter was only available on few systems * @param int &$rest_index [optional] If the optind parameter is present, then the index where argument parsing stopped will be written to this variable. * @return string[]|false[]|false This function will return an array of option / argument pairs or false on * failure. */ function getopt( string $short_options, array $long_options = [], #[PhpStormStubsElementAvailable(from: '7.1')] &$rest_index ): array|false {} /** * Gets system load average * @link https://php.net/manual/en/function.sys-getloadavg.php * @return array|false an array with three samples (last 1, 5 and 15 * minutes). * @since 5.1.3 */ #[Pure(true)] function sys_getloadavg(): array|false {} /** * Return current Unix timestamp with microseconds * @link https://php.net/manual/en/function.microtime.php * @param bool $as_float [optional]

    * When called without the optional argument, this function returns the string * "msec sec" where sec is the current time measured in the number of * seconds since the Unix Epoch (0:00:00 January 1, 1970 GMT), and * msec is the microseconds part. * Both portions of the string are returned in units of seconds. *

    *

    * If the optional get_as_float is set to * true then a float (in seconds) is returned. *

    * @return string|float */ #[Pure(true)] function microtime(#[TypeContract(true: "float", false: "string")] bool $as_float = false): string|float {} /** * Get current time * @link https://php.net/manual/en/function.gettimeofday.php * @param bool $as_float [optional]

    * When set to true, a float instead of an array is returned. *

    * @return int[]|float By default an array is returned. If return_float * is set, then a float is returned. *

    *

    * Array keys: * "sec" - seconds since the Unix Epoch * "usec" - microseconds * "minuteswest" - minutes west of Greenwich * "dsttime" - type of dst correction */ #[Pure(true)] #[ArrayShape(["sec" => "int", "usec" => "int", "minuteswest" => "int", "dsttime" => "int"])] function gettimeofday(#[TypeContract(true: "float", false: "int[]")] bool $as_float = false): array|float {} /** * Gets the current resource usages * @link https://php.net/manual/en/function.getrusage.php * @param int $mode

    * If who is 1, getrusage will be called with * RUSAGE_CHILDREN. *

    * @return array|false an associative array containing the data returned from the system * call. All entries are accessible by using their documented field names. */ #[Pure(true)] function getrusage(int $mode = 0): array|false {} /** * Generate a unique ID * @link https://php.net/manual/en/function.uniqid.php * @param string $prefix [optional]

    * Can be useful, for instance, if you generate identifiers * simultaneously on several hosts that might happen to generate the * identifier at the same microsecond. *

    *

    * With an empty prefix, the returned string will * be 13 characters long. If more_entropy is * true, it will be 23 characters. *

    * @param bool $more_entropy [optional]

    * If set to true, uniqid will add additional * entropy (using the combined linear congruential generator) at the end * of the return value, which should make the results more unique. *

    * @return string the unique identifier, as a string. */ function uniqid(string $prefix = "", bool $more_entropy = false): string {} /** * Convert a quoted-printable string to an 8 bit string * @link https://php.net/manual/en/function.quoted-printable-decode.php * @param string $string

    * The input string. *

    * @return string the 8-bit binary string. */ #[Pure] function quoted_printable_decode(string $string): string {} /** * Convert a 8 bit string to a quoted-printable string * @link https://php.net/manual/en/function.quoted-printable-encode.php * @param string $string

    * The input string. *

    * @return string the encoded string. */ #[Pure] function quoted_printable_encode(string $string): string {} /** * Convert from one Cyrillic character set to another * @link https://php.net/manual/en/function.convert-cyr-string.php * @param string $str

    * The string to be converted. *

    * @param string $from

    * The source Cyrillic character set, as a single character. *

    * @param string $to

    * The target Cyrillic character set, as a single character. *

    * @return string the converted string. * @removed 8.0 * @see mb_convert_string() * @see iconv() * @see UConverter */ #[Pure] #[Deprecated(since: '7.4', reason: 'Us mb_convert_string(), iconv() or UConverter instead.')] function convert_cyr_string(string $str, string $from, string $to): string {} /** * Gets the name of the owner of the current PHP script * @link https://php.net/manual/en/function.get-current-user.php * @return string the username as a string. */ #[Pure(true)] function get_current_user(): string {} /** * Limits the maximum execution time * @link https://php.net/manual/en/function.set-time-limit.php * @param int $seconds

    * The maximum execution time, in seconds. If set to zero, no time limit * is imposed. *

    * @return bool Returns TRUE on success, or FALSE on failure. */ function set_time_limit(int $seconds): bool {} /** * Gets the value of a PHP configuration option * @link https://php.net/manual/en/function.get-cfg-var.php * @param string $option

    * The configuration option name. *

    * @return array|string|false the current value of the PHP configuration variable specified by * option, or false if an error occurs. */ #[Pure] function get_cfg_var(string $option): array|string|false {} /** * Alias: * {@see set_magic_quotes_runtime} * @link https://php.net/manual/en/function.magic-quotes-runtime.php * @param bool $new_setting * @removed 7.0 */ #[Deprecated(since: '5.3')] function magic_quotes_runtime(bool $new_setting) {} /** * Sets the current active configuration setting of magic_quotes_runtime * @link https://php.net/manual/en/function.set-magic-quotes-runtime.php * @param bool $new_setting

    * false for off, true for on. *

    * @return bool true on success or false on failure. * @removed 7.0 */ #[Deprecated(reason: "This function has been DEPRECATED as of PHP 5.4.0. Raises an E_CORE_ERROR", since: "5.3")] function set_magic_quotes_runtime(bool $new_setting): bool {} /** * Gets the current configuration setting of magic quotes gpc * @link https://php.net/manual/en/function.get-magic-quotes-gpc.php * @return int 0 if magic quotes gpc are off, 1 otherwise. * @removed 8.0 */ #[Deprecated(since: '7.4')] function get_magic_quotes_gpc(): int {} /** * Gets the current active configuration setting of magic_quotes_runtime * @link https://php.net/manual/en/function.get-magic-quotes-runtime.php * @return int 0 if magic quotes runtime is off, 1 otherwise. */ #[Deprecated(since: '7.4')] function get_magic_quotes_runtime(): int {} /** * Import GET/POST/Cookie variables into the global scope * @link https://php.net/manual/en/function.import-request-variables.php * @param string $types

    * Using the types parameter, you can specify * which request variables to import. You can use 'G', 'P' and 'C' * characters respectively for GET, POST and Cookie. These characters are * not case sensitive, so you can also use any combination of 'g', 'p' * and 'c'. POST includes the POST uploaded file information. *

    *

    * Note that the order of the letters matters, as when using * "GP", the * POST variables will overwrite GET variables with the same name. Any * other letters than GPC are discarded. *

    * @param string $prefix [optional]

    * Variable name prefix, prepended before all variable's name imported * into the global scope. So if you have a GET value named * "userid", and provide a prefix * "pref_", then you'll get a global variable named * $pref_userid. *

    *

    * Although the prefix parameter is optional, you * will get an E_NOTICE level * error if you specify no prefix, or specify an empty string as a * prefix. This is a possible security hazard. Notice level errors are * not displayed using the default error reporting level. *

    * @return bool true on success or false on failure. * @removed 5.4 */ #[Deprecated(reason: "This function has been DEPRECATED as of PHP 5.3.0", since: "5.3")] function import_request_variables(string $types, $prefix = null): bool {} /** * Send an error message to the defined error handling routines * @link https://php.net/manual/en/function.error-log.php * @param string $message

    * The error message that should be logged. *

    * @param int $message_type

    * Says where the error should go. The possible message types are as * follows: *

    *

    * * error_log log types * * * * * * * * * * * * * * * * * * * * *
    0 * message is sent to PHP's system logger, using * the Operating System's system logging mechanism or a file, depending * on what the error_log * configuration directive is set to. This is the default option. *
    1 * message is sent by email to the address in * the destination parameter. This is the only * message type where the fourth parameter, * extra_headers is used. *
    2 * No longer an option. *
    3 * message is appended to the file * destination. A newline is not automatically * added to the end of the message string. *
    4 * message is sent directly to the SAPI logging * handler. *
    *

    * @param string|null $destination [optional]

    * The destination. Its meaning depends on the * message_type parameter as described above. *

    * @param string|null $additional_headers [optional]

    * The extra headers. It's used when the message_type * parameter is set to 1. * This message type uses the same internal function as * mail does. *

    * @return bool true on success or false on failure. */ function error_log(string $message, int $message_type = 0, ?string $destination, ?string $additional_headers): bool {} distributedTracingHeaderExtractor() instead * * @return TransactionInterface New transaction * * @see TransactionInterface::setName() For the description. * @see TransactionInterface::setType() For the description. * @see TransactionInterface::getTimestamp() For the description. */ public static function beginCurrentTransaction( string $name, string $type, ?float $timestamp = null, ?string $serializedDistTracingData = null ): TransactionInterface {} /** * Begins a new transaction, sets as the current transaction, * runs the provided callback as the new transaction and automatically ends the new transaction. * * @param string $name New transaction's name * @param string $type New transaction's type * @param \Closure $callback Callback to execute as the new transaction * @param float|null $timestamp Start time of the new transaction * @param string|null $serializedDistTracingData - DEPRECATED since version 1.3 - * use newTransaction()->distributedTracingHeaderExtractor() instead * * @return mixed The return value of $callback * * @see TransactionInterface::setName() For the description. * @see TransactionInterface::setType() For the description. * @see TransactionInterface::getTimestamp() For the description. */ public static function captureCurrentTransaction( string $name, string $type, \Closure $callback, ?float $timestamp = null, ?string $serializedDistTracingData = null ) {} /** * Returns the current transaction. * * @return TransactionInterface The current transaction */ public static function getCurrentTransaction(): TransactionInterface {} /** * If there is the current span then it returns the current span. * Otherwise if there is the current transaction then it returns the current transaction. * Otherwise it returns the noop execution segment. * * @return ExecutionSegmentInterface The current execution segment */ public static function getCurrentExecutionSegment(): ExecutionSegmentInterface {} /** * Begins a new transaction. * * @param string $name New transaction's name * @param string $type New transaction's type * @param float|null $timestamp Start time of the new transaction * @param string|null $serializedDistTracingData - DEPRECATED since version 1.3 - * use newTransaction()->distributedTracingHeaderExtractor() instead * * @return TransactionInterface New transaction * * @see TransactionInterface::setName() For the description. * @see TransactionInterface::setType() For the description. * @see TransactionInterface::getTimestamp() For the description. */ public static function beginTransaction( string $name, string $type, ?float $timestamp = null, ?string $serializedDistTracingData = null ): TransactionInterface {} /** * Begins a new transaction, * runs the provided callback as the new transaction and automatically ends the new transaction. * * @param string $name New transaction's name * @param string $type New transaction's type * @param \Closure $callback Callback to execute as the new transaction * @param float|null $timestamp Start time of the new transaction * @param string|null $serializedDistTracingData - DEPRECATED since version 1.3 - * use newTransaction()->distributedTracingHeaderExtractor() instead * * @return mixed The return value of $callback * * @see TransactionInterface::setName() For the description. * @see TransactionInterface::setType() For the description. * @see TransactionInterface::getTimestamp() For the description. */ public static function captureTransaction( string $name, string $type, \Closure $callback, ?float $timestamp = null, ?string $serializedDistTracingData = null ) {} /** * Advanced API to begin a new transaction * * @param string $name New transaction's name * @param string $type New transaction's type * * @return TransactionBuilderInterface New transaction builder * * @see TransactionInterface::setName() For the description. * @see TransactionInterface::setType() For the description. */ public static function newTransaction(string $name, string $type): TransactionBuilderInterface {} /** * Creates an error based on the given Throwable instance * with the current execution segment (if there is one) as the parent. * * @param \Throwable $throwable * * @return string|null ID of the reported error event or null if no event was reported * (for example, because recording is disabled) * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/errors/error.json */ public static function createErrorFromThrowable(\Throwable $throwable): ?string {} /** * Creates an error based on the given data * with the current execution segment (if there is one) as the parent. * * @param CustomErrorData $customErrorData * * @return string|null ID of the reported error event or null if no event was reported * (for example, because recording is disabled) * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/errors/error.json */ public static function createCustomError(CustomErrorData $customErrorData): ?string {} /** * Pauses recording */ public static function pauseRecording(): void {} /** * Resumes recording */ public static function resumeRecording(): void {} /** * @deprecated Deprecated since version 1.3 - use injectDistributedTracingHeaders() instead * @see injectDistributedTracingHeaders() Use it instead of this method * * Returns distributed tracing data for the current span/transaction */ public static function getSerializedCurrentDistributedTracingData(): string {} } /** * Class to gather optional parameters to start a new transaction * * @see ElasticApm::beginCurrentTransaction() * @see ElasticApm::captureCurrentTransaction() */ interface TransactionBuilderInterface { /** * New transaction will be set as the current one * * @return TransactionBuilderInterface */ public function asCurrent(): self; /** * Set start time of the new transaction * * @param float $timestamp * * @return TransactionBuilderInterface */ public function timestamp(float $timestamp): self; /** * @param \Closure $headerExtractor * * @return TransactionBuilderInterface */ public function distributedTracingHeaderExtractor(\Closure $headerExtractor): self; /** * Begins a new transaction. * * @return TransactionInterface New transaction */ public function begin(): TransactionInterface; /** * Begins a new transaction, * runs the provided callback as the new transaction and automatically ends the new transaction. * * @param \Closure $callback * * @return mixed The return value of $callback */ public function capture(\Closure $callback); } interface TransactionInterface extends ExecutionSegmentInterface { /** * Transactions that are 'sampled' will include all available information * Transactions that are not sampled will not have 'spans' or 'context'. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/transactions/transaction.json#L72 */ public function isSampled(): bool; /** * Hex encoded 64 random bits ID of the parent transaction or span. * Only a root transaction of a trace does not have a parent ID, otherwise it needs to be set. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/transactions/transaction.json#L19 */ public function getParentId(): ?string; /** * Begins a new span with the current execution segment * as the new span's parent and sets as the new span as the current span for this transaction. * The current execution segment is the current span if there is one or this transaction itself otherwise. * * @param string $name New span's name. * @param string $type New span's type * @param string|null $subtype New span's subtype * @param string|null $action New span's action * @param float|null $timestamp Start time of the new span * * @see SpanInterface::setName() For the description. * @see SpanInterface::setType() For the description. * @see SpanInterface::setSubtype() For the description. * @see SpanInterface::setAction() For the description. * @see SpanInterface::getTimestamp() For the description. * * @return SpanInterface New span */ public function beginCurrentSpan( string $name, string $type, ?string $subtype = null, ?string $action = null, ?float $timestamp = null ): SpanInterface; /** * Begins a new span with the current execution segment as the new span's parent and * sets the new span as the current span for this transaction. * The current execution segment is the current span if there is one or this transaction itself otherwise. * * @param string $name New span's name * @param string $type New span's type * @param \Closure $callback Callback to execute as the new span * @param string|null $subtype New span's subtype * @param string|null $action New span's action * @param float|null $timestamp Start time of the new span * * @see SpanInterface::setName() For the description. * @see SpanInterface::setType() For the description. * @see SpanInterface::setSubtype() For the description. * @see SpanInterface::setAction() For the description. * @see SpanInterface::getTimestamp() For the description. * * @return mixed The return value of $callback */ public function captureCurrentSpan( string $name, string $type, \Closure $callback, ?string $subtype = null, ?string $action = null, ?float $timestamp = null ); /** * Returns the current span. * * @return SpanInterface The current span */ public function getCurrentSpan(): SpanInterface; /** * Returns context (context allows to set labels, etc.) */ public function context(): TransactionContextInterface; /** * The result of the transaction. * For HTTP-related transactions, this should be the status code formatted like 'HTTP 2xx'. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/transactions/transaction.json#L52 * * @param string|null $result * * @return void */ public function setResult(?string $result): void; /** * @see setResult() For the description */ public function getResult(): ?string; /** * If the transaction does not have a parent ID yet, * calling this method generates a new ID, * sets it as the parent ID of this transaction, and returns it as a string. * * @return string */ public function ensureParentId(): string; } interface SpanInterface extends ExecutionSegmentInterface { /** * Hex encoded 64 random bits ID of the correlated transaction. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L14 */ public function getTransactionId(): string; /** * Hex encoded 64 random bits ID of the parent. * If this span is the root span of the correlated transaction the its parent is the correlated transaction * otherwise its parent is the parent span. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L24 */ public function getParentId(): string; /** * The specific kind of event within the sub-type represented by the span * e.g., 'query' for type/sub-type 'db'/'mysql', 'connect' for type/sub-type 'db'/'cassandra' * * The length of this string is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L38 * * @param string|null $action * * @return void */ public function setAction(?string $action): void; /** * A further sub-division of the type * e.g., 'mysql', 'postgresql' or 'elasticsearch' for type 'db', 'http' for type 'external', etc. * * The length of this string is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L33 * * @param string|null $subtype */ public function setSubtype(?string $subtype): void; /** * Returns context (context allows to set labels, etc.) */ public function context(): SpanContextInterface; /** * Extended version of ExecutionSegmentInterface::end() * * @param int $numberOfStackFramesToSkip Number of stack frames to skip when capturing stack trace. * @param float|null $duration In milliseconds with 3 decimal points. * * @see ExecutionSegmentInterface::end() For the description */ public function endSpanEx(int $numberOfStackFramesToSkip, ?float $duration = null): void; } interface SpanContextInterface extends ExecutionSegmentContextInterface { /** * Returns an object containing contextual data for database spans * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L47 */ public function db(): SpanContextDbInterface; /** * Returns an object containing contextual data of the related http request * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L69 */ public function http(): SpanContextHttpInterface; /** * Returns an object containing contextual data about the destination for spans * * @link https://github.com/elastic/apm-server/blob/7.6/docs/spec/spans/span.json#L44 */ public function destination(): SpanContextDestinationInterface; } interface SpanContextDbInterface { /** * A database statement (e.g. query) for the given database type * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L55 * * @param string|null $statement * * @return void */ public function setStatement(?string $statement): void; } interface SpanContextHttpInterface { /** * The raw url of the correlating http request * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L73 * * @param string|null $url * * @return void */ public function setUrl(?string $url): void; /** * The status code of the http request * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L77 * * @param int|null $statusCode * * @return void */ public function setStatusCode(?int $statusCode): void; /** * The method of the http request * * The length of a value is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L81 * * @param string|null $method * * @return void */ public function setMethod(?string $method): void; } /** * An object containing contextual data about the destination for spans * * @link https://github.com/elastic/apm-server/blob/7.6/docs/spec/spans/span.json#L44 */ interface SpanContextDestinationInterface { /** * Sets destination service context * * @link https://github.com/elastic/apm-server/blob/v7.11.0/docs/spec/v2/span.json#L106 * * @param string $name * @param string $resource * @param string $type */ public function setService(string $name, string $resource, string $type): void; } /** * This interface has functionality shared between Transaction and Span. */ interface ExecutionSegmentInterface { /** * Hex encoded 64 random bits (== 8 bytes == 16 hex digits) ID. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/transactions/transaction.json#L9 * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L9 */ public function getId(): string; /** * Hex encoded 128 random bits (== 16 bytes == 32 hex digits) ID of the correlated trace. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/transactions/transaction.json#L14 * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L19 */ public function getTraceId(): string; /** * Recorded time of the event. * For events that have non-zero duration this time corresponds to the start of the event. * UTC based and in microseconds since Unix epoch. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/transactions/transaction.json#L6 * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L6 * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/timestamp_epoch.json#L7 */ public function getTimestamp(): float; /** * Begins a new span with this execution segment as the new span's parent. * * @param string $name New span's name * @param string $type New span's type * @param string|null $subtype New span's subtype * @param string|null $action New span's action * @param float|null $timestamp Start time of the new span * * @see SpanInterface::setName() For the description. * @see SpanInterface::setType() For the description. * @see SpanInterface::setSubtype() For the description. * @see SpanInterface::setAction() For the description. * @see SpanInterface::setTimestamp() For the description. * * @return SpanInterface New span */ public function beginChildSpan( string $name, string $type, ?string $subtype = null, ?string $action = null, ?float $timestamp = null ): SpanInterface; /** * Begins a new span with this execution segment as the new span's parent, * runs the provided callback as the new span and automatically ends the new span. * * @param string $name New span's name * @param string $type New span's type * @param \Closure $callback Callback to execute as the new span * @param string|null $subtype New span's subtype * @param string|null $action New span's action * @param float|null $timestamp Start time of the new span * * @see SpanInterface::setName() For the description. * @see SpanInterface::setType() For the description. * @see SpanInterface::setSubtype() For the description. * @see SpanInterface::setAction() For the description. * @see SpanInterface::setTimestamp() For the description. * * @return mixed The return value of $callback */ public function captureChildSpan( string $name, string $type, \Closure $callback, ?string $subtype = null, ?string $action = null, ?float $timestamp = null ); /** * - For transactions: * The name of this transaction. * Generic designation of a transaction in the scope of a single service (eg: 'GET /users/:id'). * * - For spans: * Generic designation of a span in the scope of a transaction. * * The length of this string is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/transactions/transaction.json#L47 * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L136 * * @param string $name */ public function setName(string $name): void; /** * Type is a keyword of specific relevance in the service's domain * e.g., * - For transaction: 'db', 'external' for a span and 'request', 'backgroundjob' for a transaction, etc. * - For span: 'db.postgresql.query', 'template.erb', etc. * * The length of this string is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/transactions/transaction.json#L57 * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L149 * * @param string $type */ public function setType(string $type): void; /** * @deprecated Deprecated since version 1.3 - use injectDistributedTracingHeaders() instead * @see injectDistributedTracingHeaders() Use it instead of this method * * Returns distributed tracing data */ public function getDistributedTracingData(): ?DistributedTracingData; /** * Returns distributed tracing data for the current span/transaction * * $headerInjector is callback to inject headers with signature * * (string $headerName, string $headerValue): void * * @param \Closure $headerInjector Callback that actually injects header(s) for the underlying transport */ public function injectDistributedTracingHeaders(\Closure $headerInjector): void; /** * Sets the end timestamp and finalizes this object's state. * * If any mutating method (for example any `set...` method is a mutating method) * is called on a instance which has already then a warning is logged. * For example, end() is a mutating method as well. * * @param float|null $duration In milliseconds with 3 decimal points. */ public function end(?float $duration = null): void; /** * Returns true if this execution segment has already ended. */ public function hasEnded(): bool; /** * Creates an error based on the given Throwable instance with this execution segment as the parent. * * @param \Throwable $throwable * * @return string|null ID of the reported error event or null if no event was reported * (for example, because recording is disabled) * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/errors/error.json */ public function createErrorFromThrowable(\Throwable $throwable): ?string; /** * Creates an error based on the given Throwable instance with this execution segment as the parent. * * @param CustomErrorData $customErrorData * * @return string|null ID of the reported error event or null if no event was reported * (for example, because recording is disabled) * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/errors/error.json */ public function createCustomError(CustomErrorData $customErrorData): ?string; /** * The outcome of the transaction/span: success, failure, or unknown. * Outcome may be one of a limited set of permitted values * describing the success or failure of the transaction/span. * This field can be used for calculating error rates for incoming/outgoing requests. * * @link https://github.com/elastic/apm-server/blob/v7.10.0/docs/spec/transactions/transaction.json#L59 * @link https://github.com/elastic/apm-server/blob/v7.10.0/docs/spec/spans/span.json#L54 * @link https://github.com/elastic/apm-server/blob/v7.10.0/docs/spec/outcome.json * * @param string|null $outcome * * @return void */ public function setOutcome(?string $outcome): void; /** * @see setOutcome() For the description */ public function getOutcome(): ?string; /** * Returns true if this execution segment is a no-op (for example when recording is disabled). */ public function isNoop(): bool; /** * Discards this execution segment. */ public function discard(): void; } final class DistributedTracingData { /** @var string */ public $traceId; /** @var string */ public $parentId; /** @var bool */ public $isSampled; /** * @deprecated Deprecated since version 1.3 - use injectHeaders() instead * @see injectHeaders() Use it instead of this method * * Returns distributed tracing data for the current span/transaction */ public function serializeToString(): string {} /** * Gets distributed tracing data for the current span/transaction * * $headerInjector is callback to inject headers with signature * * (string $headerName, string $headerValue): void * * @param \Closure $headerInjector Callback that actually injects header(s) for the underlying transport */ public function injectHeaders(\Closure $headerInjector): void {} } /** * Data to create custom error event * * @see ElasticApm::createCustomError * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/errors/error.json#L53 * * Code in this file is part of implementation internals and thus it is not covered by the backward compatibility. */ class CustomErrorData { /** * @var int|string|null * * The error code set when the error happened, e.g. database error code * * The length of a string value is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/errors/error.json#L56 */ public $code = null; /** * @var string|null * * The original error message * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/errors/error.json#L61 */ public $message = null; /** * @var string|null * * Describes the exception type's module namespace * * The length of a value is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/errors/error.json#L65 */ public $module = null; /** * @var string|null * * The length of a value is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/errors/error.json#L80 */ public $type = null; } interface TransactionContextInterface extends ExecutionSegmentContextInterface { /** * Returns an object that can be used to collect information about HTTP request * * @link https://github.com/elastic/apm-server/blob/v7.0.0/docs/spec/context.json#L43 * @link https://github.com/elastic/apm-server/blob/v7.0.0/docs/spec/request.json */ public function request(): TransactionContextRequestInterface; } /** * This interface has functionality shared between Transaction and Span contexts'. */ interface ExecutionSegmentContextInterface { /** * @param string $key * @param string|bool|int|float|null $value * * Labels is a flat mapping of user-defined labels with string keys and null, string, boolean or number values. * * The length of a key and a string value is limited to 1024. * * @return void * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/transactions/transaction.json#L40 * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/context.json#L46 * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/spans/span.json#L88 * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/tags.json */ public function setLabel(string $key, $value): void; } interface TransactionContextRequestInterface { /** * HTTP method * * The length of a value is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/v7.0.0/docs/spec/request.json#L33 * * @param string $method * * @return void */ public function setMethod(string $method): void; /** * Returns an object that can be used to collect information about HTTP request's URL * * @link https://github.com/elastic/apm-server/blob/7.0/docs/spec/request.json#L50 */ public function url(): TransactionContextRequestUrlInterface; } interface TransactionContextRequestUrlInterface { /** * The domain of the request, e.g. 'example.com' * * The length of a value is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/v7.0.0/docs/spec/request.json#L69 * * @param ?string $domain * * @return void */ public function setDomain(?string $domain): void; /** * The full, possibly agent-assembled URL of the request * * The length of a value is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/v7.0.0/docs/spec/request.json#L64 * * @param ?string $full * * @return void */ public function setFull(?string $full): void; /** * The raw, unparsed URL of the HTTP request line, e.g https://example.com:443/search?q=elasticsearch. * This URL may be absolute or relative. * For more details, see https://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.2 * * The length of a value is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/v7.0.0/docs/spec/request.json#L54 * * @param ?string $original * * @return void */ public function setOriginal(?string $original): void; /** * The path of the request, e.g. '/search' * * The length of a value is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/v7.0.0/docs/spec/request.json#L79 * * @param ?string $path * * @return void */ public function setPath(?string $path): void; /** * The port of the request, e.g. 443 * * @link https://github.com/elastic/apm-server/blob/v7.0.0/docs/spec/request.json#L74 * * @param ?int $port * * @return void */ public function setPort(?int $port): void; /** * The protocol of the request, e.g. 'http' * * The length of a value is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/v7.0.0/docs/spec/request.json#L59 * * @param ?string $protocol * * @return void */ public function setProtocol(?string $protocol): void; /** * Sets the query string information of the request. * It is expected to have values delimited by ampersands. * * The length of a value is limited to 1024. * * @link https://github.com/elastic/apm-server/blob/v7.0.0/docs/spec/request.json#L84 * * @param ?string $query * * @return void */ public function setQuery(?string $query): void; } * Commonly a regular path in your filesystem. *

    * @param string $mode

    * It is r for read access, w for * read/write access to an already existing database, c * for read/write access and database creation if it doesn't currently exist, * and n for create, truncate and read/write access. * The database is created in BTree mode, other modes (like Hash or Queue) * are not supported. *

    *

    * Additionally you can set the database lock method with the next char. * Use l to lock the database with a .lck * file or d to lock the databasefile itself. It is * important that all of your applications do this consistently. *

    *

    * If you want to test the access and do not want to wait for the lock * you can add t as third character. When you are * absolutely sure that you do not require database locking you can do * so by using - instead of l or * d. When none of d, * l or - is used, dba will lock * on the database file as it would with d. *

    *

    * There can only be one writer for one database file. When you use dba on * a web server and more than one request requires write operations they can * only be done one after another. Also read during write is not allowed. * The dba extension uses locks to prevent this. See the following table: * * DBA locking * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    already openmode = "rl"mode = "rlt"mode = "wl"mode = "wlt"mode = "rd"mode = "rdt"mode = "wd"mode = "wdt"
    not openokokokokokokokok
    mode = "rl"okokwaitfalseillegalillegalillegalillegal
    mode = "wl"waitfalsewaitfalseillegalillegalillegalillegal
    mode = "rd"illegalillegalillegalillegalokokwaitfalse
    mode = "wd"illegalillegalillegalillegalwaitfalsewaitfalse
    * ok: the second call will be successful. * wait: the second call waits until dba_close is called for the first. * false: the second call returns false. * illegal: you must not mix "l" and "d" modifiers for mode parameter. *

    * @param string $handler [optional]

    * The name of the handler which * shall be used for accessing path. It is passed * all optional parameters given to dba_open and * can act on behalf of them. *

    * @param mixed ...$handler_params [optional] * @return resource|false a positive handle on success or FALSE on failure. */ #[PhpStormStubsElementAvailable(from: '5.3', to: '8.1')] function dba_open($path, $mode, $handler, ...$handler_params) {} #[PhpStormStubsElementAvailable(from: '8.2')] #[LanguageLevelTypeAware(["8.4" => "Dba\Connection|false"], default: "resource|false")] function dba_open(string $path, string $mode, ?string $handler = null, int $permission = 0o644, int $map_size = 0, ?int $flags = null) {} /** * Open database persistently * @link https://php.net/manual/en/function.dba-popen.php * @param string $path

    * Commonly a regular path in your filesystem. *

    * @param string $mode

    * It is r for read access, w for * read/write access to an already existing database, c * for read/write access and database creation if it doesn't currently exist, * and n for create, truncate and read/write access. *

    * @param string $handler [optional]

    * The name of the handler which * shall be used for accessing path. It is passed * all optional parameters given to dba_popen and * can act on behalf of them. *

    * @param mixed ...$handler_params [optional] * @return resource|false a positive handle on success or FALSE on failure. */ #[PhpStormStubsElementAvailable(from: '5.3', to: '8.1')] function dba_popen($path, $mode, $handler, ...$handler_params) {} #[PhpStormStubsElementAvailable(from: '8.2')] #[LanguageLevelTypeAware(["8.4" => "Dba\Connection|false"], default: "resource|false")] function dba_popen(string $path, string $mode, ?string $handler = null, int $permission = 0o644, int $map_size = 0, ?int $flags = null) {} /** * Close a DBA database * @link https://php.net/manual/en/function.dba-close.php * @param resource $dba

    * The database handler, returned by dba_open or * dba_popen. *

    * @return void No value is returned. */ function dba_close(#[LanguageLevelTypeAware(['8.4' => 'Dba\Connection'], default: 'resource')] $dba): void {} /** * Delete DBA entry specified by key * @link https://php.net/manual/en/function.dba-delete.php * @param string $key

    * The key of the entry which is deleted. *

    * @param resource $dba

    * The database handler, returned by dba_open or * dba_popen. *

    * @return bool TRUE on success or FALSE on failure. */ function dba_delete( #[LanguageLevelTypeAware(['8.2' => 'array|string'], default: '')] $key, #[LanguageLevelTypeAware(['8.4' => 'Dba\Connection'], default: 'resource')] $dba ): bool {} /** * Check whether key exists * @link https://php.net/manual/en/function.dba-exists.php * @param string $key

    * The key the check is performed for. *

    * @param resource $dba

    * The database handler, returned by dba_open or * dba_popen. *

    * @return bool TRUE if the key exists, FALSE otherwise. */ function dba_exists( #[LanguageLevelTypeAware(['8.2' => 'array|string'], default: '')] $key, #[LanguageLevelTypeAware(['8.4' => 'Dba\Connection'], default: 'resource')] $dba ): bool {} /** * Fetch data specified by key * @link https://php.net/manual/en/function.dba-fetch.php * @param string $key

    * The key the data is specified by. *

    *

    * When working with inifiles this function accepts arrays as keys * where index 0 is the group and index 1 is the value name. See: * dba_key_split. *

    * @param resource $handle

    * The database handler, returned by dba_open or * dba_popen. *

    * @return string|false the associated string if the key/data pair is found, FALSE * otherwise. */ function dba_fetch($key, $handle): string|false {} /** * Fetch data specified by key * @link https://php.net/manual/en/function.dba-fetch.php * @param string $key

    * The key the data is specified by. *

    *

    * When working with inifiles this function accepts arrays as keys * where index 0 is the group and index 1 is the value name. See: * dba_key_split. *

    * @param int $skip The number of key-value pairs to ignore when using cdb databases. This value is ignored for all other databases which do not support multiple keys with the same name. * @param resource $dba

    * The database handler, returned by dba_open or * dba_popen. *

    * @return string|false the associated string if the key/data pair is found, FALSE * otherwise. */ #[Deprecated(since: 8.3)] function dba_fetch($key, $skip, $dba): string|false {} /** * Insert entry * @link https://php.net/manual/en/function.dba-insert.php * @param string $key

    * The key of the entry to be inserted. If this key already exist in the * database, this function will fail. Use dba_replace * if you need to replace an existent key. *

    * @param string $value

    * The value to be inserted. *

    * @param resource $dba

    * The database handler, returned by dba_open or * dba_popen. *

    * @return bool TRUE on success or FALSE on failure. */ function dba_insert( #[LanguageLevelTypeAware(['8.2' => 'array|string'], default: '')] $key, string $value, #[LanguageLevelTypeAware(['8.4' => 'Dba\Connection'], default: 'resource')] $dba ): bool {} /** * Replace or insert entry * @link https://php.net/manual/en/function.dba-replace.php * @param string $key

    * The key of the entry to be replaced. *

    * @param string $value

    * The value to be replaced. *

    * @param resource $dba

    * The database handler, returned by dba_open or * dba_popen. *

    * @return bool TRUE on success or FALSE on failure. */ function dba_replace( #[LanguageLevelTypeAware(['8.2' => 'array|string'], default: '')] $key, string $value, #[LanguageLevelTypeAware(['8.4' => 'Dba\Connection'], default: 'resource')] $dba ): bool {} /** * Fetch first key * @link https://php.net/manual/en/function.dba-firstkey.php * @param resource $dba

    * The database handler, returned by dba_open or * dba_popen. *

    * @return string|false the key on success or FALSE on failure. */ function dba_firstkey(#[LanguageLevelTypeAware(['8.4' => 'Dba\Connection'], default: 'resource')] $dba): string|false {} /** * Fetch next key * @link https://php.net/manual/en/function.dba-nextkey.php * @param resource $dba

    * The database handler, returned by dba_open or * dba_popen. *

    * @return string|false the key on success or FALSE on failure. */ function dba_nextkey(#[LanguageLevelTypeAware(['8.4' => 'Dba\Connection'], default: 'resource')] $dba): string|false {} /** * Optimize database * @link https://php.net/manual/en/function.dba-optimize.php * @param resource $dba

    * The database handler, returned by dba_open or * dba_popen. *

    * @return bool TRUE on success or FALSE on failure. */ function dba_optimize(#[LanguageLevelTypeAware(['8.4' => 'Dba\Connection'], default: 'resource')] $dba): bool {} /** * Synchronize database * @link https://php.net/manual/en/function.dba-sync.php * @param resource $dba

    * The database handler, returned by dba_open or * dba_popen. *

    * @return bool TRUE on success or FALSE on failure. */ function dba_sync(#[LanguageLevelTypeAware(['8.4' => 'Dba\Connection'], default: 'resource')] $dba): bool {} /** * List all the handlers available * @link https://php.net/manual/en/function.dba-handlers.php * @param bool $full_info [optional]

    * Turns on/off full information display in the result. *

    * @return array an array of database handlers. If full_info * is set to TRUE, the array will be associative with the handlers names as * keys, and their version information as value. Otherwise, the result will be * an indexed array of handlers names. *

    *

    * When the internal cdb library is used you will see * cdb and cdb_make. */ function dba_handlers(bool $full_info = false): array {} /** * List all open database files * @link https://php.net/manual/en/function.dba-list.php * @return array An associative array, in the form resourceid => filename. */ function dba_list(): array {} /** * Splits a key in string representation into array representation * @link https://php.net/manual/en/function.dba-key-split.php * @param string|false|null $key

    * The key in string representation. *

    * @return array|false an array of the form array(0 => group, 1 => * value_name). This function will return FALSE if * key is NULL or FALSE. */ function dba_key_split(string|false|null $key): array|false {} // End of dba v. * One of the MCRYPT_ciphername constants or the name * of the algorithm as string. *

    * @param string $module

    * One of the MCRYPT_MODE_modename constants, or one of the following strings: "ecb", "cbc", "cfb", "ofb", "nofb" or "stream".

    * @return int Gets the block size, as an integer. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_get_block_size($cipher, $module) {} /** * Get the name of the specified cipher * @link https://php.net/manual/en/function.mcrypt-get-cipher-name.php * @param int|string $cipher

    * One of the MCRYPT_ciphername constants or the name * of the algorithm as string. *

    * @return string|false This function returns the name of the cipher or false, if the cipher does * not exist. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_get_cipher_name($cipher) {} /** * Creates an initialization vector (IV) from a random source * @link https://php.net/manual/en/function.mcrypt-create-iv.php * @param int $size

    * Determines the size of the IV, parameter source * (defaults to random value) specifies the source of the IV. *

    * @param int $source [optional]

    * The source can be MCRYPT_RAND (system random * number generator), MCRYPT_DEV_RANDOM (read * data from /dev/random) and * MCRYPT_DEV_URANDOM (read data from * /dev/urandom). MCRYPT_RAND * is the only one supported on Windows because Windows (of course) * doesn't have /dev/random or * /dev/urandom. *

    *

    * When using MCRYPT_RAND, remember to call * srand before * mcrypt_create_iv to initialize the random * number generator; it is not seeded automatically like * rand is. *

    * @return string|false the initialization vector, or false on error. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_create_iv($size, $source = MCRYPT_DEV_URANDOM) {} /** * Gets an array of all supported ciphers * @link https://php.net/manual/en/function.mcrypt-list-algorithms.php * @param string $lib_dir [optional]

    * Specifies the directory where all algorithms are located. If not * specifies, the value of the mcrypt.algorithms_dir (php.ini) directive * is used. *

    * @return array an array with all the supported algorithms. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_list_algorithms($lib_dir = null) {} /** * Gets an array of all supported modes * @link https://php.net/manual/en/function.mcrypt-list-modes.php * @param string $lib_dir [optional]

    * Specifies the directory where all modes are located. If not * specifies, the value of the mcrypt.modes_dir * (php.ini) directive is used. *

    * @return array an array with all the supported modes. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_list_modes($lib_dir = null) {} /** * Returns the size of the IV belonging to a specific cipher/mode combination * @link https://php.net/manual/en/function.mcrypt-get-iv-size.php * @param string $cipher

    * One of the MCRYPT_ciphername constants of the name * of the algorithm as string. *

    * @param string $module

    * mode is one of the MCRYPT_MODE_modename constants * or one of "ecb", "cbc", "cfb", "ofb", "nofb" or "stream". The IV is * ignored in ECB mode as this mode does not require it. You will need to * have the same IV (think: starting point) both at encryption and * decryption stages, otherwise your encryption will fail. *

    * @return int|false the size of the Initialisation Vector (IV) in bytes. On error the * function returns false. If the IV is ignored in the specified cipher/mode * combination zero is returned. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_get_iv_size($cipher, $module) {} /** * Encrypts plaintext with given parameters * @link https://php.net/manual/en/function.mcrypt-encrypt.php * @param string $cipher

    * One of the MCRYPT_ciphername * constants of the name of the algorithm as string. *

    * @param string $key

    * The key with which the data will be encrypted. If it's smaller that * the required keysize, it is padded with '\0'. It is * better not to use ASCII strings for keys. *

    *

    * It is recommended to use the mhash functions to create a key from a * string. *

    * @param string $data

    * The data that will be encrypted with the given cipher and mode. If the * size of the data is not n * blocksize, the data will be padded with * '\0'. *

    *

    * The returned crypttext can be larger that the size of the data that is * given by data. *

    * @param string $mode

    * One of the MCRYPT_MODE_modename * constants of one of "ecb", "cbc", "cfb", "ofb", "nofb" or * "stream". *

    * @param string $iv [optional]

    * Used for the initialisation in CBC, CFB, OFB modes, and in some * algorithms in STREAM mode. If you do not supply an IV, while it is * needed for an algorithm, the function issues a warning and uses an * IV with all bytes set to '\0'. *

    * @return string the encrypted data, as a string. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_encrypt($cipher, $key, $data, $mode, $iv = null) {} /** * Decrypts crypttext with given parameters * @link https://php.net/manual/en/function.mcrypt-decrypt.php * @param string $cipher

    * cipher is one of the MCRYPT_ciphername constants * of the name of the algorithm as string. *

    * @param string $key

    * key is the key with which the data is encrypted. * If it's smaller that the required keysize, it is padded with * '\0'. *

    * @param string $data

    * data is the data that will be decrypted with * the given cipher and mode. If the size of the data is not n * blocksize, * the data will be padded with '\0'. *

    * @param string $mode

    * mode is one of the MCRYPT_MODE_modename * constants of one of "ecb", "cbc", "cfb", "ofb", "nofb" or "stream". *

    * @param string $iv [optional]

    * The iv parameter is used for the initialisation * in CBC, CFB, OFB modes, and in some algorithms in STREAM mode. If you * do not supply an IV, while it is needed for an algorithm, the function * issues a warning and uses an IV with all bytes set to * '\0'. *

    * @return string the decrypted data as a string. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_decrypt($cipher, $key, $data, $mode, $iv = null) {} /** * Opens the module of the algorithm and the mode to be used * @link https://php.net/manual/en/function.mcrypt-module-open.php * @param string $cipher

    * The algorithm to be used. *

    * @param string $cipher_directory

    * The algorithm_directory and * mode_directory are used to locate the encryption * modules. When you supply a directory name, it is used. When you set one * of these to the empty string (""), the value set by * the mcrypt.algorithms_dir or * mcrypt.modes_dir ini-directive is used. When * these are not set, the default directories that are used are the ones * that were compiled in into libmcrypt (usually * /usr/local/lib/libmcrypt). *

    * @param string $mode

    * The mode to be used. *

    * @param string $mode_directory

    *

    * @return resource|false Normally it returns an encryption descriptor, or false on error. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_module_open($cipher, $cipher_directory, $mode, $mode_directory) {} /** * This function initializes all buffers needed for encryption * @link https://php.net/manual/en/function.mcrypt-generic-init.php * @param resource $td

    * The encryption descriptor. *

    * @param string $key

    * The maximum length of the key should be the one obtained by calling * mcrypt_enc_get_key_size and every value smaller * than this is legal. *

    * @param string $iv

    * The IV should normally have the size of the algorithms block size, but * you must obtain the size by calling * mcrypt_enc_get_iv_size. IV is ignored in ECB. IV * MUST exist in CFB, CBC, STREAM, nOFB and OFB modes. It needs to be * random and unique (but not secret). The same IV must be used for * encryption/decryption. If you do not want to use it you should set it * to zeros, but this is not recommended. *

    * @return int|false The function returns a negative value on error, -3 when the key length * was incorrect, -4 when there was a memory allocation problem and any * other return value is an unknown error. If an error occurs a warning will * be displayed accordingly. false is returned if incorrect parameters * were passed. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_generic_init($td, $key, $iv) {} /** * This function encrypts data * @link https://php.net/manual/en/function.mcrypt-generic.php * @param resource $td

    * The encryption descriptor. *

    *

    * The encryption handle should always be initialized with * mcrypt_generic_init with a key and an IV before * calling this function. Where the encryption is done, you should free the * encryption buffers by calling mcrypt_generic_deinit. * See mcrypt_module_open for an example. *

    * @param string $data

    * The data to encrypt. *

    * @return string the encrypted data. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_generic($td, $data) {} /** * Decrypts data * @link https://php.net/manual/en/function.mdecrypt-generic.php * @param resource $td

    * An encryption descriptor returned by * mcrypt_module_open *

    * @param string $data

    * Encrypted data. *

    * @return string * @removed 7.2 */ #[Deprecated(since: '7.1')] function mdecrypt_generic($td, $data) {} /** * This function terminates encryption * @link https://php.net/manual/en/function.mcrypt-generic-end.php * @param resource $td * @return bool * @removed 7.0 */ #[Deprecated(since: '5.3')] function mcrypt_generic_end($td) {} /** * This function deinitializes an encryption module * @link https://php.net/manual/en/function.mcrypt-generic-deinit.php * @param resource $td

    * The encryption descriptor. *

    * @return bool true on success or false on failure. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_generic_deinit($td) {} /** * Runs a self test on the opened module * @link https://php.net/manual/en/function.mcrypt-enc-self-test.php * @param resource $td

    * The encryption descriptor. *

    * @return int Returns 0 on success and a negative integer on failure * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_enc_self_test($td) {} /** * Checks whether the encryption of the opened mode works on blocks * @link https://php.net/manual/en/function.mcrypt-enc-is-block-algorithm-mode.php * @param resource $td

    * The encryption descriptor. *

    * @return bool true if the mode is for use with block algorithms, otherwise it * returns false. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_enc_is_block_algorithm_mode($td) {} /** * Checks whether the algorithm of the opened mode is a block algorithm * @link https://php.net/manual/en/function.mcrypt-enc-is-block-algorithm.php * @param resource $td

    * The encryption descriptor. *

    * @return bool true if the algorithm is a block algorithm or false if it is * a stream one. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_enc_is_block_algorithm($td) {} /** * Checks whether the opened mode outputs blocks * @link https://php.net/manual/en/function.mcrypt-enc-is-block-mode.php * @param resource $td

    * The encryption descriptor. *

    * @return bool true if the mode outputs blocks of bytes or false if it outputs bytes. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_enc_is_block_mode($td) {} /** * Returns the blocksize of the opened algorithm * @link https://php.net/manual/en/function.mcrypt-enc-get-block-size.php * @param resource $td

    * The encryption descriptor. *

    * @return int the block size of the specified algorithm in bytes. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_enc_get_block_size($td) {} /** * Returns the maximum supported keysize of the opened mode * @link https://php.net/manual/en/function.mcrypt-enc-get-key-size.php * @param resource $td

    * The encryption descriptor. *

    * @return int the maximum supported key size of the algorithm in bytes. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_enc_get_key_size($td) {} /** * Returns an array with the supported keysizes of the opened algorithm * @link https://php.net/manual/en/function.mcrypt-enc-get-supported-key-sizes.php * @param resource $td

    * The encryption descriptor. *

    * @return array an array with the key sizes supported by the algorithm * specified by the encryption descriptor. If it returns an empty * array then all key sizes between 1 and * mcrypt_enc_get_key_size are supported by the * algorithm. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_enc_get_supported_key_sizes($td) {} /** * Returns the size of the IV of the opened algorithm * @link https://php.net/manual/en/function.mcrypt-enc-get-iv-size.php * @param resource $td

    * The encryption descriptor. *

    * @return int the size of the IV, or 0 if the IV is ignored in the algorithm. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_enc_get_iv_size($td) {} /** * Returns the name of the opened algorithm * @link https://php.net/manual/en/function.mcrypt-enc-get-algorithms-name.php * @param resource $td

    * The encryption descriptor. *

    * @return string the name of the opened algorithm as a string. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_enc_get_algorithms_name($td) {} /** * Returns the name of the opened mode * @link https://php.net/manual/en/function.mcrypt-enc-get-modes-name.php * @param resource $td

    * The encryption descriptor. *

    * @return string the name as a string. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_enc_get_modes_name($td) {} /** * This function runs a self test on the specified module * @link https://php.net/manual/en/function.mcrypt-module-self-test.php * @param string $algorithm

    * One of the MCRYPT_ciphername constants, or the name of the algorithm as string. *

    * @param string $lib_dir [optional]

    * The optional lib_dir parameter can contain the * location of where the algorithm module is on the system. *

    * @return bool The function returns true if the self test succeeds, or false when if * fails. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_module_self_test($algorithm, $lib_dir = null) {} /** * Returns if the specified module is a block algorithm or not * @link https://php.net/manual/en/function.mcrypt-module-is-block-algorithm-mode.php * @param string $mode

    * The mode to check. *

    * @param string $lib_dir [optional]

    * The optional lib_dir parameter can contain the * location of where the algorithm module is on the system. *

    * @return bool This function returns true if the mode is for use with block * algorithms, otherwise it returns false. (e.g. false for stream, and * true for cbc, cfb, ofb). * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_module_is_block_algorithm_mode($mode, $lib_dir = null) {} /** * This function checks whether the specified algorithm is a block algorithm * @link https://php.net/manual/en/function.mcrypt-module-is-block-algorithm.php * @param string $algorithm

    * The algorithm to check. *

    * @param string $lib_dir [optional]

    * The optional lib_dir parameter can contain the * location of where the algorithm module is on the system. *

    * @return bool This function returns true if the specified algorithm is a block * algorithm, or false is it is a stream algorithm. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_module_is_block_algorithm($algorithm, $lib_dir = null) {} /** * Returns if the specified mode outputs blocks or not * @link https://php.net/manual/en/function.mcrypt-module-is-block-mode.php * @param string $mode

    * The mode to check. *

    * @param string $lib_dir [optional]

    * The optional lib_dir parameter can contain the * location of where the algorithm module is on the system. *

    * @return bool This function returns true if the mode outputs blocks of bytes or * false if it outputs just bytes. (e.g. true for cbc and ecb, and * false for cfb and stream). * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_module_is_block_mode($mode, $lib_dir = null) {} /** * Returns the blocksize of the specified algorithm * @link https://php.net/manual/en/function.mcrypt-module-get-algo-block-size.php * @param string $algorithm

    * The algorithm name. *

    * @param string $lib_dir [optional]

    * This optional parameter can contain the location where the mode module * is on the system. *

    * @return int the block size of the algorithm specified in bytes. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_module_get_algo_block_size($algorithm, $lib_dir = null) {} /** * Returns the maximum supported keysize of the opened mode * @link https://php.net/manual/en/function.mcrypt-module-get-algo-key-size.php * @param string $algorithm

    * The algorithm name. *

    * @param string $lib_dir [optional]

    * This optional parameter can contain the location where the mode module * is on the system. *

    * @return int This function returns the maximum supported key size of the * algorithm specified in bytes. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_module_get_algo_key_size($algorithm, $lib_dir = null) {} /** * Returns an array with the supported keysizes of the opened algorithm * @link https://php.net/manual/en/function.mcrypt-module-get-supported-key-sizes.php * @param string $algorithm

    * The algorithm to used. *

    * @param string $lib_dir [optional]

    * The optional lib_dir parameter can contain the * location of where the algorithm module is on the system. *

    * @return array an array with the key sizes supported by the specified algorithm. * If it returns an empty array then all key sizes between 1 and * mcrypt_module_get_algo_key_size are supported by the * algorithm. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_module_get_supported_key_sizes($algorithm, $lib_dir = null) {} /** * Closes the mcrypt module * @link https://php.net/manual/en/function.mcrypt-module-close.php * @param resource $td

    * The encryption descriptor. *

    * @return bool true on success or false on failure. * @removed 7.2 */ #[Deprecated(since: '7.1')] function mcrypt_module_close($td) {} /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_ENCRYPT', 0); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_DECRYPT', 1); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_DEV_RANDOM', 0); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_DEV_URANDOM', 1); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_RAND', 2); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_3DES', "tripledes"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_ARCFOUR_IV', "arcfour-iv"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_ARCFOUR', "arcfour"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_BLOWFISH', "blowfish"); define('MCRYPT_BLOWFISH_COMPAT', "blowfish-compat"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_CAST_128', "cast-128"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_CAST_256', "cast-256"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_CRYPT', "crypt"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_DES', "des"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_DES_COMPAT', "des-compat"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_ENIGNA', "crypt"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_GOST', "gost"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_LOKI97', "loki97"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_PANAMA', "panama"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_RC2', "rc2"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_RC4', "rc4"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_RIJNDAEL_128', "rijndael-128"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_RIJNDAEL_192', "rijndael-192"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_RIJNDAEL_256', "rijndael-256"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_SAFER64', "safer-sk64"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_SAFER128', "safer-sk128"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_SAFERPLUS', "saferplus"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_SERPENT', "serpent"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_SERPENT_128', "serpent-128"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_SERPENT_192', "serpent-192"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_SERPENT_256', "serpent-256"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_THREEWAY', "threeway"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_TRIPLEDES', "tripledes"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_TWOFISH', "twofish"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_WAKE', "wake"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_XTEA', "xtea"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_IDEA', "idea"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_MARS', "mars"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_RC6', "rc6"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_RC6_128', "rc6-128"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_RC6_192', "rc6-192"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_RC6_256', "rc6-256"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_SKIPJACK', "skipjack"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_MODE_CBC', "cbc"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_MODE_CFB', "cfb"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_MODE_ECB', "ecb"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_MODE_NOFB', "nofb"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_MODE_OFB', "ofb"); /** * @deprecated 7.1 * @removed 7.2 */ define('MCRYPT_MODE_STREAM', "stream"); // End of mcrypt v. next() method. * * @return void */ function ms_ResetErrorList() {} /** * Class Objects can be returned by the `layerObj`_ class, or can be * created using: */ final class classObj { /** * @var string */ public $group; /** * @var string */ public $keyimage; /** * Removed (6.2) - use addLabel, getLabel, ... * * @var labelObj */ public $label; /** * @var float */ public $maxscaledenom; /** * @var hashTableObj */ public $metadata; /** * @var float */ public $minscaledenom; /** * @var string */ public $name; /** * read-only (since 6.2) * * @var int */ public $numlabels; /** * read-only * * @var int */ public $numstyles; /** * MS_ON, MS_OFF or MS_DELETE * * @var int */ public $status; /** * @var string */ public $template; /** * @var string */ public $title; /** * @var int */ public $type; /** * The second argument class is optional. If given, the new class * created will be a copy of this class. * * @param layerObj $layer * @param classObj $class */ final public function __construct(layerObj $layer, classObj $class) {} /** * Old style constructor * * @param layerObj $layer * @param classObj $class * @return classObj */ final public function ms_newClassObj(layerObj $layer, classObj $class) {} /** * Add a labelObj to the classObj and return its index in the labels * array. * .. versionadded:: 6.2 * * @param labelObj $label * @return int */ final public function addLabel(labelObj $label) {} /** * Saves the object to a string. Provides the inverse option for * updateFromString. * * @return string */ final public function convertToString() {} /** * Draw the legend icon and return a new imageObj. * * @param int $width * @param int $height * @return imageObj */ final public function createLegendIcon($width, $height) {} /** * Delete the style specified by the style index. If there are any * style that follow the deleted style, their index will decrease by 1. * * @param int $index * @return int */ final public function deletestyle($index) {} /** * Draw the legend icon on im object at dstX, dstY. * Returns MS_SUCCESS/MS_FAILURE. * * @param int $width * @param int $height * @param imageObj $im * @param int $dstX * @param int $dstY * @return int */ final public function drawLegendIcon($width, $height, imageObj $im, $dstX, $dstY) {} /** * Free the object properties and break the internal references. * Note that you have to unset the php variable to free totally the * resources. * * @return void */ final public function free() {} /** * Returns the :ref:`expression ` string for the class * object. * * @return string */ final public function getExpressionString() {} /** * Return a reference to the labelObj at *index* in the labels array. * See the labelObj_ section for more details on multiple class * labels. * .. versionadded:: 6.2 * * @param int $index * @return labelObj */ final public function getLabel($index) {} /** * Fetch class metadata entry by name. Returns "" if no entry * matches the name. Note that the search is case sensitive. * .. note:: * getMetaData's query is case sensitive. * * @param string $name * @return int */ final public function getMetaData($name) {} /** * Return the style object using an index. index >= 0 && * index < class->numstyles. * * @param int $index * @return styleObj */ final public function getStyle($index) {} /** * Returns the text string for the class object. * * @return string */ final public function getTextString() {} /** * The style specified by the style index will be moved down into * the array of classes. Returns MS_SUCCESS or MS_FAILURE. * ex class->movestyledown(0) will have the effect of moving style 0 * up to position 1, and the style at position 1 will be moved * to position 0. * * @param int $index * @return int */ final public function movestyledown($index) {} /** * The style specified by the style index will be moved up into * the array of classes. Returns MS_SUCCESS or MS_FAILURE. * ex class->movestyleup(1) will have the effect of moving style 1 * up to position 0, and the style at position 0 will be moved * to position 1. * * @param int $index * @return int */ final public function movestyleup($index) {} /** * Remove the labelObj at *index* from the labels array and return a * reference to the labelObj. numlabels is decremented, and the * array is updated. * .. versionadded:: 6.2 * * @param int $index * @return labelObj */ final public function removeLabel($index) {} /** * Remove a metadata entry for the class. Returns MS_SUCCESS/MS_FAILURE. * * @param string $name * @return int */ final public function removeMetaData($name) {} /** * Set object property to a new value. * * @param string $property_name * @param $new_value * @return int */ final public function set($property_name, $new_value) {} /** * Set the :ref:`expression ` string for the class * object. * * @param string $expression * @return int */ final public function setExpression($expression) {} /** * Set a metadata entry for the class. Returns MS_SUCCESS/MS_FAILURE. * * @param string $name * @param string $value * @return int */ final public function setMetaData($name, $value) {} /** * Set the text string for the class object. * * @param string $text * @return int */ final public function settext($text) {} /** * Update a class from a string snippet. Returns MS_SUCCESS/MS_FAILURE. * .. code-block:: php * set the color * $oClass->updateFromString('CLASS STYLE COLOR 255 0 255 END END'); * * @param string $snippet * @return int */ final public function updateFromString($snippet) {} } /** * Instance of clusterObj is always embedded inside the `layerObj`_. */ final class clusterObj { /** * @var float */ public $buffer; /** * @var float */ public $maxdistance; /** * @var string */ public $region; /** * Saves the object to a string. Provides the inverse option for * updateFromString. * * @return string */ final public function convertToString() {} /** * Returns the :ref:`expression ` for this cluster * filter or NULL on error. * * @return string */ final public function getFilterString() {} /** * Returns the :ref:`expression ` for this cluster group * or NULL on error. * * @return string */ final public function getGroupString() {} /** * Set layer filter :ref:`expression `. * * @param string $expression * @return int */ final public function setFilter($expression) {} /** * Set layer group :ref:`expression `. * * @param string $expression * @return int */ final public function setGroup($expression) {} } /** * Instances of colorObj are always embedded inside other classes. */ final class colorObj { /** * @var int */ public $red; /** * @var int */ public $green; /** * @var int */ public $blue; /** * @var int */ public $alpha; /** * Get the color as a hex string "#rrggbb" or (if alpha is not 255) * "#rrggbbaa". * * @return string */ final public function toHex() {} /** * Set red, green, blue and alpha values. The hex string should have the form * "#rrggbb" (alpha will be set to 255) or "#rrggbbaa". Returns MS_SUCCESS. * * @param string $hex * @return int */ final public function setHex($hex) {} } final class errorObj { /** * //See error code constants above * * @var int */ public $code; /** * @var string */ public $message; /** * @var string */ public $routine; } /** * The grid is always embedded inside a layer object defined as * a grid (layer->connectiontype = MS_GRATICULE) * (for more docs : https://github.com/mapserver/mapserver/wiki/MapServerGrid) * A layer can become a grid layer by adding a grid object to it using : * ms_newGridObj(layerObj layer) * $oLayer = ms_newlayerobj($oMap); * $oLayer->set("name", "GRID"); * ms_newgridobj($oLayer); * $oLayer->grid->set("labelformat", "DDMMSS"); */ final class gridObj { /** * @var string */ public $labelformat; /** * @var float */ public $maxacrs; /** * @var float */ public $maxinterval; /** * @var float */ public $maxsubdivide; /** * @var float */ public $minarcs; /** * @var float */ public $mininterval; /** * @var float */ public $minsubdivide; /** * Set object property to a new value. * * @param string $property_name * @param $new_value * @return int */ final public function set($property_name, $new_value) {} } /** * Instance of hashTableObj is always embedded inside the `classObj`_, * `layerObj`_, `mapObj`_ and `webObj`_. It is uses a read only. * $hashTable = $oLayer->metadata; * $key = null; * while ($key = $hashTable->nextkey($key)) * echo "Key: ".$key." value: ".$hashTable->get($key)."
    "; */ final class hashTableObj { /** * Clear all items in the hashTable (To NULL). * * @return void */ final public function clear() {} /** * Fetch class metadata entry by name. Returns "" if no entry * matches the name. Note that the search is case sensitive. * * @param string $key * @return string */ final public function get($key) {} /** * Return the next key or first key if previousKey = NULL. * Return NULL if no item is in the hashTable or end of hashTable is * reached * * @param string $previousKey * @return string */ final public function nextkey($previousKey) {} /** * Remove a metadata entry in the hashTable. Returns MS_SUCCESS/MS_FAILURE. * * @param string $key * @return int */ final public function remove($key) {} /** * Set a metadata entry in the hashTable. Returns MS_SUCCESS/MS_FAILURE. * * @param string $key * @param string $value * @return int */ final public function set($key, $value) {} } /** * Instances of imageObj are always created by the `mapObj`_ class methods. */ final class imageObj { /** * read-only * * @var int */ public $width; /** * read-only * * @var int */ public $height; /** * read-only * * @var int */ public $resolution; /** * read-only * * @var int */ public $resolutionfactor; /** * @var string */ public $imagepath; /** * @var string */ public $imageurl; /** * Copy srcImg on top of the current imageObj. * transparentColorHex is the color (in 0xrrggbb format) from srcImg * that should be considered transparent (i.e. those pixels won't * be copied). Pass -1 if you don't want any transparent color. * If optional dstx,dsty are provided then it defines the position * where the image should be copied (dstx,dsty = top-left corner * position). * The optional angle is a value between 0 and 360 degrees to rotate * the source image counterclockwise. Note that if an angle is specified * (even if its value is zero) then the dstx and dsty coordinates * specify the CENTER of the destination area. * Note: this function works only with 8 bits GD images (PNG or GIF). * * @param imageObj $srcImg * @param int $transparentColorHex * @param int $dstX * @param int $dstY * @param int $angle * @return void */ final public function pasteImage(imageObj $srcImg, $transparentColorHex, $dstX, $dstY, $angle) {} /** * Writes image object to specified filename. * Passing no filename or an empty filename sends output to stdout. In * this case, the PHP header() function should be used to set the * document's content-type prior to calling saveImage(). The output * format is the one that is currently selected in the map file. The * second argument oMap is not manadatory. It is usful when saving to * formats like GTIFF that needs georeference information contained in * the map file. On success, it returns either MS_SUCCESS if writing to an * external file, or the number of bytes written if output is sent to * stdout. * * @param string $filename * @param mapObj $oMap * @return int */ final public function saveImage($filename, mapObj $oMap) {} /** * Writes image to temp directory. Returns image URL. * The output format is the one that is currently selected in the * map file. * * @return string */ final public function saveWebImage() {} } final class labelcacheMemberObj { /** * read-only * * @var int */ public $classindex; /** * read-only * * @var int */ public $featuresize; /** * read-only * * @var int */ public $layerindex; /** * read-only * * @var int */ public $markerid; /** * read-only * * @var int */ public $numstyles; /** * read-only * * @var int */ public $shapeindex; /** * read-only * * @var int */ public $status; /** * read-only * * @var string */ public $text; /** * read-only * * @var int */ public $tileindex; } final class labelcacheObj { /** * Free the label cache. Always returns MS_SUCCESS. * Ex : map->labelcache->freeCache(); * * @return bool */ final public function freeCache() {} } /** * labelObj are always embedded inside other classes. */ final class labelObj { /** * @var int */ public $align; /** * @var float */ public $angle; /** * @var int */ public $anglemode; /** * @var int */ public $antialias; /** * @var int */ public $autominfeaturesize; /** * (deprecated since 6.0) * * @var colorObj */ public $backgroundcolor; /** * (deprecated since 6.0) * * @var colorObj */ public $backgroundshadowcolor; /** * (deprecated since 6.0) * * @var int */ public $backgroundshadowsizex; /** * (deprecated since 6.0) * * @var int */ public $backgroundshadowsizey; /** * @var int */ public $buffer; /** * @var colorObj */ public $color; /** * @var string */ public $encoding; /** * @var string */ public $font; /** * @var int */ public $force; /** * @var int */ public $maxlength; /** * @var int */ public $maxsize; /** * @var int */ public $mindistance; /** * @var int */ public $minfeaturesize; /** * @var int */ public $minlength; /** * @var int */ public $minsize; /** * @var int */ public $numstyles; /** * @var int */ public $offsetx; /** * @var int */ public $offsety; /** * @var colorObj */ public $outlinecolor; /** * @var int */ public $outlinewidth; /** * @var int */ public $partials; /** * @var int */ public $position; /** * @var int */ public $priority; /** * @var int */ public $repeatdistance; /** * @var colorObj */ public $shadowcolor; /** * @var int */ public $shadowsizex; /** * @var int */ public $shadowsizey; /** * @var int */ public $size; /** * @var int */ public $wrap; final public function __construct() {} /** * Saves the object to a string. Provides the inverse option for * updateFromString. * * @return string */ final public function convertToString() {} /** * Delete the style specified by the style index. If there are any * style that follow the deleted style, their index will decrease by 1. * * @param int $index * @return int */ final public function deleteStyle($index) {} /** * Free the object properties and break the internal references. * Note that you have to unset the php variable to free totally the * resources. * * @return void */ final public function free() {} /** * Get the attribute binding for a specified label property. Returns * NULL if there is no binding for this property. * Example: * .. code-block:: php * $oLabel->setbinding(MS_LABEL_BINDING_COLOR, "FIELD_NAME_COLOR"); * echo $oLabel->getbinding(MS_LABEL_BINDING_COLOR); // FIELD_NAME_COLOR * * @param mixed $labelbinding * @return string */ final public function getBinding($labelbinding) {} /** * Returns the label expression string. * * @return string */ final public function getExpressionString() {} /** * Return the style object using an index. index >= 0 && * index < label->numstyles. * * @param int $index * @return styleObj */ final public function getStyle($index) {} /** * Returns the label text string. * * @return string */ final public function getTextString() {} /** * The style specified by the style index will be moved down into * the array of classes. Returns MS_SUCCESS or MS_FAILURE. * ex label->movestyledown(0) will have the effect of moving style 0 * up to position 1, and the style at position 1 will be moved * to position 0. * * @param int $index * @return int */ final public function moveStyleDown($index) {} /** * The style specified by the style index will be moved up into * the array of classes. Returns MS_SUCCESS or MS_FAILURE. * ex label->movestyleup(1) will have the effect of moving style 1 * up to position 0, and the style at position 0 will be moved * to position 1. * * @param int $index * @return int */ final public function moveStyleUp($index) {} /** * Remove the attribute binding for a specfiled style property. * Example: * .. code-block:: php * $oStyle->removebinding(MS_LABEL_BINDING_COLOR); * * @param mixed $labelbinding * @return int */ final public function removeBinding($labelbinding) {} /** * Set object property to a new value. * * @param string $property_name * @param $new_value * @return int */ final public function set($property_name, $new_value) {} /** * Set the attribute binding for a specified label property. * Example: * .. code-block:: php * $oLabel->setbinding(MS_LABEL_BINDING_COLOR, "FIELD_NAME_COLOR"); * This would bind the color parameter with the data (ie will extract * the value of the color from the field called "FIELD_NAME_COLOR" * * @param mixed $labelbinding * @param string $value * @return int */ final public function setBinding($labelbinding, $value) {} /** * Set the label expression. * * @param string $expression * @return int */ final public function setExpression($expression) {} /** * Set the label text. * * @param string $text * @return int */ final public function setText($text) {} /** * Update a label from a string snippet. Returns MS_SUCCESS/MS_FAILURE. * * @param string $snippet * @return int */ final public function updateFromString($snippet) {} } /** * Layer Objects can be returned by the `mapObj`_ class, or can be * created using: * A second optional argument can be given to ms_newLayerObj() to create * the new layer as a copy of an existing layer. If a layer is given as * argument then all members of a this layer will be copied in the new * layer created. */ final class layerObj { /** * @var int */ public $annotate; /** * @var hashTableObj */ public $bindvals; /** * @var string */ public $classgroup; /** * @var string */ public $classitem; /** * @var clusterObj */ public $cluster; /** * @var string */ public $connection; /** * read-only, use setConnectionType() to set it * * @var int */ public $connectiontype; /** * @var string */ public $data; /** * @var int */ public $debug; /** * deprecated since 6.0 * * @var int */ public $dump; /** * @var string */ public $filteritem; /** * @var string */ public $footer; /** * only available on a layer defined as grid (MS_GRATICULE) * * @var gridObj */ public $grid; /** * @var string */ public $group; /** * @var string */ public $header; /** * read-only * * @var int */ public $index; /** * @var int */ public $labelcache; /** * @var string */ public $labelitem; /** * @var float */ public $labelmaxscaledenom; /** * @var float */ public $labelminscaledenom; /** * @var string */ public $labelrequires; /** * @var string */ public $mask; /** * @var int */ public $maxfeatures; /** * @var float */ public $maxscaledenom; /** * @var hashTableObj */ public $metadata; /** * @var float */ public $minscaledenom; /** * @var string */ public $name; /** * @var int */ public $num_processing; /** * read-only * * @var int */ public $numclasses; /** * @var colorObj */ public $offsite; /** * @var int */ public $opacity; /** * @var projectionObj */ public $projection; /** * @var int */ public $postlabelcache; /** * @var string */ public $requires; /** * @var int */ public $sizeunits; /** * @var int */ public $startindex; /** * MS_ON, MS_OFF, MS_DEFAULT or MS_DELETE * * @var int */ public $status; /** * @var string */ public $styleitem; /** * @var float */ public $symbolscaledenom; /** * @var string */ public $template; /** * @var string */ public $tileindex; /** * @var string */ public $tileitem; /** * @var float */ public $tolerance; /** * @var int */ public $toleranceunits; /** * @var int */ public $transform; /** * @var int */ public $type; /** * Old style constructor * * @param mapObj $map * @param layerObj $layer * @return layerObj */ final public function ms_newLayerObj(mapObj $map, layerObj $layer) {} /** * Add a new feature in a layer. Returns MS_SUCCESS or MS_FAILURE on * error. * * @param shapeObj $shape * @return int */ final public function addFeature(shapeObj $shape) {} /** * Apply the :ref:`SLD ` document to the layer object. * The matching between the sld document and the layer will be done * using the layer's name. * If a namedlayer argument is passed (argument is optional), * the NamedLayer in the sld that matchs it will be used to style * the layer. * See :ref:`SLD HowTo ` for more information on the SLD support. * * @param string $sldxml * @param string $namedlayer * @return int */ final public function applySLD($sldxml, $namedlayer) {} /** * Apply the :ref:`SLD ` document pointed by the URL to the * layer object. The matching between the sld document and the layer * will be done using the layer's name. If a namedlayer argument is * passed (argument is optional), the NamedLayer in the sld that * matchs it will be used to style the layer. See :ref:`SLD HowTo ` * for more information on the SLD support. * * @param string $sldurl * @param string $namedlayer * @return int */ final public function applySLDURL($sldurl, $namedlayer) {} /** * Clears all the processing strings. * * @return void */ final public function clearProcessing() {} /** * Close layer previously opened with open(). * * @return void */ final public function close() {} /** * Saves the object to a string. Provides the inverse option for * updateFromString. * * @return string */ final public function convertToString() {} /** * Draw a single layer, add labels to cache if required. * Returns MS_SUCCESS or MS_FAILURE on error. * * @param imageObj $image * @return int */ final public function draw(imageObj $image) {} /** * Draw query map for a single layer. * string executeWFSGetfeature() * Executes a GetFeature request on a WFS layer and returns the * name of the temporary GML file created. Returns an empty * string on error. * * @param imageObj $image * @return int */ final public function drawQuery(imageObj $image) {} /** * Free the object properties and break the internal references. * Note that you have to unset the php variable to free totally the * resources. * * @return void */ final public function free() {} /** * Returns an SLD XML string based on all the classes found in the * layer (the layer must have `STATUS` `on`). * * @return string */ final public function generateSLD() {} /** * Returns a classObj from the layer given an index value (0=first class) * * @param int $classIndex * @return classObj */ final public function getClass($classIndex) {} /** * Get the class index of a shape for a given scale. Returns -1 if no * class matches. classgroup is an array of class ids to check * (Optional). numclasses is the number of classes that the classgroup * array contains. By default, all the layer classes will be checked. * * @param $shape * @param $classgroup * @param $numclasses * @return int */ final public function getClassIndex($shape, $classgroup, $numclasses) {} /** * Returns the layer's data extents or NULL on error. * If the layer's EXTENT member is set then this value is used, * otherwise this call opens/closes the layer to read the * extents. This is quick on shapefiles, but can be * an expensive operation on some file formats or data sources. * This function is safe to use on both opened or closed layers: it * is not necessary to call open()/close() before/after calling it. * * @return rectObj */ final public function getExtent() {} /** * Returns the :ref:`expression ` for this layer or NULL * on error. * * @return string|null */ final public function getFilterString() {} /** * Returns an array containing the grid intersection coordinates. If * there are no coordinates, it returns an empty array. * * @return array */ final public function getGridIntersectionCoordinates() {} /** * Returns an array containing the items. Must call open function first. * If there are no items, it returns an empty array. * * @return array */ final public function getItems() {} /** * Fetch layer metadata entry by name. Returns "" if no entry * matches the name. Note that the search is case sensitive. * .. note:: * getMetaData's query is case sensitive. * * @param string $name * @return int */ final public function getMetaData($name) {} /** * Returns the number of results in the last query. * * @return int */ final public function getNumResults() {} /** * Returns an array containing the processing strings. * If there are no processing strings, it returns an empty array. * * @return array */ final public function getProcessing() {} /** * Returns a string representation of the :ref:`projection `. * Returns NULL on error or if no projection is set. * * @return string */ final public function getProjection() {} /** * Returns a resultObj by index from a layer object with * index in the range 0 to numresults-1. * Returns a valid object or FALSE(0) if index is invalid. * * @param int $index * @return resultObj */ final public function getResult($index) {} /** * Returns the bounding box of the latest result. * * @return rectObj */ final public function getResultsBounds() {} /** * If the resultObj passed has a valid resultindex, retrieve shapeObj from * a layer's resultset. (You get it from the resultObj returned by * getResult() for instance). Otherwise, it will do a single query on * the layer to fetch the shapeindex * .. code-block:: php * $map = new mapObj("gmap75.map"); * $l = $map->getLayerByName("popplace"); * $l->queryByRect($map->extent); * for ($i = 0; $i < $l->getNumResults(); $i++) { * $s = $l->getShape($l->getResult($i)); * echo $s->getValue($l,"Name"); * echo "\n"; * } * * @param resultObj $result * @return shapeObj */ final public function getShape(resultObj $result) {} /** * Returns a WMS GetFeatureInfo URL (works only for WMS layers) * clickX, clickY is the location of to query in pixel coordinates * with (0,0) at the top left of the image. * featureCount is the number of results to return. * infoFormat is the format the format in which the result should be * requested. Depends on remote server's capabilities. MapServer * WMS servers support only "MIME" (and should support "GML.1" soon). * Returns "" and outputs a warning if layer is not a WMS layer * or if it is not queriable. * * @param int $clickX * @param int $clickY * @param int $featureCount * @param string $infoFormat * @return string */ final public function getWMSFeatureInfoURL($clickX, $clickY, $featureCount, $infoFormat) {} /** * Returns MS_TRUE/MS_FALSE depending on whether the layer is * currently visible in the map (i.e. turned on, in scale, etc.). * * @return bool */ final public function isVisible() {} /** * The class specified by the class index will be moved down into * the array of layers. Returns MS_SUCCESS or MS_FAILURE. * ex layer->moveclassdown(0) will have the effect of moving class 0 * up to position 1, and the class at position 1 will be moved * to position 0. * * @param int $index * @return int */ final public function moveclassdown($index) {} /** * The class specified by the class index will be moved up into * the array of layers. Returns MS_SUCCESS or MS_FAILURE. * ex layer->moveclassup(1) will have the effect of moving class 1 * up to position 0, and the class at position 0 will be moved * to position 1. * * @param int $index * @return int */ final public function moveclassup($index) {} /** * Open the layer for use with getShape(). * Returns MS_SUCCESS/MS_FAILURE. * * @return int */ final public function open() {} /** * Called after msWhichShapes has been called to actually retrieve * shapes within a given area. Returns a shape object or NULL on * error. * .. code-block:: php * $map = ms_newmapobj("d:/msapps/gmap-ms40/htdocs/gmap75.map"); * $layer = $map->getLayerByName('road'); * $status = $layer->open(); * $status = $layer->whichShapes($map->extent); * while ($shape = $layer->nextShape()) * { * echo $shape->index ."
    \n"; * } * $layer->close(); * * @return shapeObj */ final public function nextShape() {} /** * Query layer for shapes that intersect current map extents. qitem * is the item (attribute) on which the query is performed, and * qstring is the expression to match. The query is performed on all * the shapes that are part of a :ref:`CLASS` that contains a * :ref:`TEMPLATE